@atproto/xrpc-server 0.3.0 → 0.3.2

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.
@@ -0,0 +1,249 @@
1
+ import * as http from 'http'
2
+ import getPort from 'get-port'
3
+ import xrpc, { ServiceClient } from '@atproto/xrpc'
4
+ import { createServer, closeServer } from './_util'
5
+ import * as xrpcServer from '../src'
6
+ import { RateLimiter } from '../src'
7
+ import { MINUTE } from '@atproto/common'
8
+
9
+ const LEXICONS = [
10
+ {
11
+ lexicon: 1,
12
+ id: 'io.example.routeLimit',
13
+ defs: {
14
+ main: {
15
+ type: 'query',
16
+ parameters: {
17
+ type: 'params',
18
+ required: ['str'],
19
+ properties: {
20
+ str: { type: 'string' },
21
+ },
22
+ },
23
+ output: {
24
+ encoding: 'application/json',
25
+ },
26
+ },
27
+ },
28
+ },
29
+ {
30
+ lexicon: 1,
31
+ id: 'io.example.sharedLimitOne',
32
+ defs: {
33
+ main: {
34
+ type: 'query',
35
+ parameters: {
36
+ type: 'params',
37
+ required: ['points'],
38
+ properties: {
39
+ points: { type: 'integer' },
40
+ },
41
+ },
42
+ output: {
43
+ encoding: 'application/json',
44
+ },
45
+ },
46
+ },
47
+ },
48
+ {
49
+ lexicon: 1,
50
+ id: 'io.example.sharedLimitTwo',
51
+ defs: {
52
+ main: {
53
+ type: 'query',
54
+ parameters: {
55
+ type: 'params',
56
+ required: ['points'],
57
+ properties: {
58
+ points: { type: 'integer' },
59
+ },
60
+ },
61
+ output: {
62
+ encoding: 'application/json',
63
+ },
64
+ },
65
+ },
66
+ },
67
+ {
68
+ lexicon: 1,
69
+ id: 'io.example.toggleLimit',
70
+ defs: {
71
+ main: {
72
+ type: 'query',
73
+ parameters: {
74
+ type: 'params',
75
+ properties: {
76
+ shouldCount: { type: 'boolean' },
77
+ },
78
+ },
79
+ output: {
80
+ encoding: 'application/json',
81
+ },
82
+ },
83
+ },
84
+ },
85
+ {
86
+ lexicon: 1,
87
+ id: 'io.example.noLimit',
88
+ defs: {
89
+ main: {
90
+ type: 'query',
91
+ output: {
92
+ encoding: 'application/json',
93
+ },
94
+ },
95
+ },
96
+ },
97
+ ]
98
+
99
+ describe('Parameters', () => {
100
+ let s: http.Server
101
+ const server = xrpcServer.createServer(LEXICONS, {
102
+ rateLimits: {
103
+ creator: (opts: xrpcServer.RateLimiterOpts) =>
104
+ RateLimiter.memory({
105
+ bypassSecret: 'bypass',
106
+ ...opts,
107
+ }),
108
+ shared: [
109
+ {
110
+ name: 'shared-limit',
111
+ durationMs: 5 * MINUTE,
112
+ points: 6,
113
+ },
114
+ ],
115
+ global: [
116
+ {
117
+ name: 'global-ip',
118
+ durationMs: 5 * MINUTE,
119
+ points: 100,
120
+ },
121
+ ],
122
+ },
123
+ })
124
+ server.method('io.example.routeLimit', {
125
+ rateLimit: {
126
+ durationMs: 5 * MINUTE,
127
+ points: 5,
128
+ calcKey: ({ params }) => params.str as string,
129
+ },
130
+ handler: (ctx: { params: xrpcServer.Params }) => ({
131
+ encoding: 'json',
132
+ body: ctx.params,
133
+ }),
134
+ })
135
+
136
+ server.method('io.example.sharedLimitOne', {
137
+ rateLimit: {
138
+ name: 'shared-limit',
139
+ calcPoints: ({ params }) => params.points as number,
140
+ },
141
+ handler: (ctx: { params: xrpcServer.Params }) => ({
142
+ encoding: 'json',
143
+ body: ctx.params,
144
+ }),
145
+ })
146
+ server.method('io.example.sharedLimitTwo', {
147
+ rateLimit: {
148
+ name: 'shared-limit',
149
+ calcPoints: ({ params }) => params.points as number,
150
+ },
151
+ handler: (ctx: { params: xrpcServer.Params }) => ({
152
+ encoding: 'json',
153
+ body: ctx.params,
154
+ }),
155
+ })
156
+ server.method('io.example.toggleLimit', {
157
+ rateLimit: [
158
+ {
159
+ durationMs: 5 * MINUTE,
160
+ points: 5,
161
+ calcPoints: ({ params }) => (params.shouldCount ? 1 : 0),
162
+ },
163
+ {
164
+ durationMs: 5 * MINUTE,
165
+ points: 10,
166
+ },
167
+ ],
168
+ handler: (ctx: { params: xrpcServer.Params }) => ({
169
+ encoding: 'json',
170
+ body: ctx.params,
171
+ }),
172
+ })
173
+ server.method('io.example.noLimit', {
174
+ handler: () => ({
175
+ encoding: 'json',
176
+ body: {},
177
+ }),
178
+ })
179
+
180
+ xrpc.addLexicons(LEXICONS)
181
+
182
+ let client: ServiceClient
183
+ beforeAll(async () => {
184
+ const port = await getPort()
185
+ s = await createServer(port, server)
186
+ client = xrpc.service(`http://localhost:${port}`)
187
+ })
188
+ afterAll(async () => {
189
+ await closeServer(s)
190
+ })
191
+
192
+ it('rate limits a given route', async () => {
193
+ const makeCall = () => client.call('io.example.routeLimit', { str: 'test' })
194
+ for (let i = 0; i < 5; i++) {
195
+ await makeCall()
196
+ }
197
+ await expect(makeCall).rejects.toThrow('Rate Limit Exceeded')
198
+ })
199
+
200
+ it('rate limits on a shared route', async () => {
201
+ await client.call('io.example.sharedLimitOne', { points: 1 })
202
+ await client.call('io.example.sharedLimitTwo', { points: 1 })
203
+ await client.call('io.example.sharedLimitOne', { points: 2 })
204
+ await client.call('io.example.sharedLimitTwo', { points: 2 })
205
+ await expect(
206
+ client.call('io.example.sharedLimitOne', { points: 1 }),
207
+ ).rejects.toThrow('Rate Limit Exceeded')
208
+ await expect(
209
+ client.call('io.example.sharedLimitTwo', { points: 1 }),
210
+ ).rejects.toThrow('Rate Limit Exceeded')
211
+ })
212
+
213
+ it('applies multiple rate-limits', async () => {
214
+ const makeCall = (shouldCount: boolean) =>
215
+ client.call('io.example.toggleLimit', { shouldCount })
216
+ for (let i = 0; i < 5; i++) {
217
+ await makeCall(true)
218
+ }
219
+ await expect(() => makeCall(true)).rejects.toThrow('Rate Limit Exceeded')
220
+ for (let i = 0; i < 4; i++) {
221
+ await makeCall(false)
222
+ }
223
+ await expect(() => makeCall(false)).rejects.toThrow('Rate Limit Exceeded')
224
+ })
225
+
226
+ it('applies global limits', async () => {
227
+ const makeCall = () => client.call('io.example.noLimit')
228
+ const calls: Promise<unknown>[] = []
229
+ for (let i = 0; i < 110; i++) {
230
+ calls.push(makeCall())
231
+ }
232
+ await expect(Promise.all(calls)).rejects.toThrow('Rate Limit Exceeded')
233
+ })
234
+
235
+ it('can bypass rate limits', async () => {
236
+ const makeCall = () =>
237
+ client.call(
238
+ 'io.example.noLimit',
239
+ {},
240
+ {},
241
+ { headers: { 'X-RateLimit-Bypass': 'bypass' } },
242
+ )
243
+ const calls: Promise<unknown>[] = []
244
+ for (let i = 0; i < 110; i++) {
245
+ calls.push(makeCall())
246
+ }
247
+ await Promise.all(calls)
248
+ })
249
+ })
@@ -1,5 +1,5 @@
1
1
  import * as http from 'http'
2
- import { WebSocket, createWebSocketStream } from 'ws'
2
+ import { WebSocket, WebSocketServer, createWebSocketStream } from 'ws'
3
3
  import getPort from 'get-port'
4
4
  import { wait } from '@atproto/common'
5
5
  import { byFrame, MessageFrame, ErrorFrame, Frame, Subscription } from '../src'
@@ -95,6 +95,7 @@ describe('Subscriptions', () => {
95
95
  server.streamMethod('io.example.streamTwo', async function* ({ params }) {
96
96
  const countdown = Number(params.countdown ?? 0)
97
97
  for (let i = countdown; i >= 0; i--) {
98
+ await wait(200)
98
99
  yield {
99
100
  $type: i % 2 === 0 ? '#even' : 'io.example.streamTwo#odd',
100
101
  count: i,
@@ -344,4 +345,59 @@ describe('Subscriptions', () => {
344
345
  ])
345
346
  })
346
347
  })
348
+
349
+ it('uses a heartbeat to reconnect if a connection is dropped', async () => {
350
+ // we run a server that, on first connection, pauses for longer than the heartbeat interval (doesn't return "pong"s)
351
+ // on second connection, it returns a message frame and then closes
352
+ const port = await getPort()
353
+ const server = new WebSocketServer({ port })
354
+ let firstConnection = true
355
+ let firstWasClosed = false
356
+ server.on('connection', async (socket) => {
357
+ if (firstConnection === true) {
358
+ firstConnection = false
359
+ socket.pause()
360
+ await wait(600)
361
+ // shouldn't send this message because the socket would be closed
362
+ const frame = new ErrorFrame({
363
+ error: 'AuthenticationRequired',
364
+ message: 'Authentication Required',
365
+ })
366
+ socket.send(frame.toBytes(), { binary: true }, (err) => {
367
+ if (err) throw err
368
+ socket.close(xrpcServer.CloseCode.Normal)
369
+ })
370
+ socket.on('close', () => {
371
+ firstWasClosed = true
372
+ })
373
+ } else {
374
+ const frame = new MessageFrame({ count: 1 })
375
+ socket.send(frame.toBytes(), { binary: true }, (err) => {
376
+ if (err) throw err
377
+ socket.close(xrpcServer.CloseCode.Normal)
378
+ })
379
+ }
380
+ })
381
+
382
+ const subscription = new Subscription({
383
+ service: `ws://localhost:${port}`,
384
+ method: '',
385
+ heartbeatIntervalMs: 500,
386
+ validate: (obj) => {
387
+ return lex.assertValidXrpcMessage<{ count: number }>(
388
+ 'io.example.streamOne',
389
+ obj,
390
+ )
391
+ },
392
+ })
393
+
394
+ const messages: { count: number }[] = []
395
+ for await (const msg of subscription) {
396
+ messages.push(msg)
397
+ }
398
+
399
+ expect(messages).toEqual([{ count: 1 }])
400
+ expect(firstWasClosed).toBe(true)
401
+ server.close()
402
+ })
347
403
  })
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "extends": "./tsconfig.json",
3
3
  "exclude": ["**/*.spec.ts", "**/*.test.ts"]
4
- }
4
+ }
package/tsconfig.json CHANGED
@@ -5,11 +5,11 @@
5
5
  "outDir": "./dist", // Your outDir,
6
6
  "emitDeclarationOnly": true
7
7
  },
8
- "include": ["./src","__tests__/**/**.ts"],
8
+ "include": ["./src", "__tests__/**/**.ts"],
9
9
  "references": [
10
10
  { "path": "../common/tsconfig.build.json" },
11
11
  { "path": "../crypto/tsconfig.build.json" },
12
12
  { "path": "../lexicon/tsconfig.build.json" },
13
- { "path": "../xrpc/tsconfig.build.json" },
13
+ { "path": "../xrpc/tsconfig.build.json" }
14
14
  ]
15
- }
15
+ }
@@ -1,2 +0,0 @@
1
- export * from './types';
2
- export * from './server';
@@ -1,2 +0,0 @@
1
- export declare const logger: import("pino").default.Logger<import("pino").default.LoggerOptions>;
2
- export default logger;
@@ -1,19 +0,0 @@
1
- import express, { NextFunction, RequestHandler } from 'express';
2
- import { Lexicons, LexXrpcProcedure, LexXrpcQuery } from '@atproto/lexicon';
3
- import { XRPCHandler, XRPCHandlerConfig, Options } from './types';
4
- export declare function createServer(lexicons?: unknown[], options?: Options): Server;
5
- export declare class Server {
6
- router: import("express-serve-static-core").Router;
7
- routes: import("express-serve-static-core").Router;
8
- lex: Lexicons;
9
- options: Options;
10
- middleware: Record<'json' | 'text', RequestHandler>;
11
- constructor(lexicons?: unknown[], opts?: Options);
12
- method(nsid: string, configOrFn: XRPCHandlerConfig | XRPCHandler): void;
13
- addMethod(nsid: string, configOrFn: XRPCHandlerConfig | XRPCHandler): void;
14
- addLexicon(doc: unknown): void;
15
- addLexicons(docs: unknown[]): void;
16
- protected addRoute(nsid: string, def: LexXrpcQuery | LexXrpcProcedure, config: XRPCHandlerConfig): Promise<void>;
17
- catchall(req: express.Request, _res: express.Response, next: NextFunction): Promise<void>;
18
- createHandler(nsid: string, def: LexXrpcQuery | LexXrpcProcedure, handler: XRPCHandler): RequestHandler;
19
- }
@@ -1,115 +0,0 @@
1
- import express from 'express';
2
- import zod from 'zod';
3
- import { ResponseType } from '@atproto/xrpc';
4
- export declare type Options = {
5
- validateResponse?: boolean;
6
- payload?: {
7
- jsonLimit?: number;
8
- blobLimit?: number;
9
- textLimit?: number;
10
- };
11
- };
12
- export declare type UndecodedParams = typeof express.request['query'];
13
- export declare type Primitive = string | number | boolean;
14
- export declare type Params = Record<string, Primitive | Primitive[] | undefined>;
15
- export declare const handlerInput: zod.ZodObject<{
16
- encoding: zod.ZodString;
17
- body: zod.ZodAny;
18
- }, "strip", zod.ZodTypeAny, {
19
- body?: any;
20
- encoding: string;
21
- }, {
22
- body?: any;
23
- encoding: string;
24
- }>;
25
- export declare type HandlerInput = zod.infer<typeof handlerInput>;
26
- export declare const handlerAuth: zod.ZodObject<{
27
- credentials: zod.ZodAny;
28
- artifacts: zod.ZodAny;
29
- }, "strip", zod.ZodTypeAny, {
30
- credentials?: any;
31
- artifacts?: any;
32
- }, {
33
- credentials?: any;
34
- artifacts?: any;
35
- }>;
36
- export declare type HandlerAuth = zod.infer<typeof handlerAuth>;
37
- export declare const handlerSuccess: zod.ZodObject<{
38
- encoding: zod.ZodString;
39
- body: zod.ZodAny;
40
- }, "strip", zod.ZodTypeAny, {
41
- body?: any;
42
- encoding: string;
43
- }, {
44
- body?: any;
45
- encoding: string;
46
- }>;
47
- export declare type HandlerSuccess = zod.infer<typeof handlerSuccess>;
48
- export declare const handlerError: zod.ZodObject<{
49
- status: zod.ZodNumber;
50
- error: zod.ZodOptional<zod.ZodString>;
51
- message: zod.ZodOptional<zod.ZodString>;
52
- }, "strip", zod.ZodTypeAny, {
53
- error?: string | undefined;
54
- message?: string | undefined;
55
- status: number;
56
- }, {
57
- error?: string | undefined;
58
- message?: string | undefined;
59
- status: number;
60
- }>;
61
- export declare type HandlerError = zod.infer<typeof handlerError>;
62
- export declare type HandlerOutput = HandlerSuccess | HandlerError;
63
- export declare type XRPCHandler = (ctx: {
64
- auth: HandlerAuth | undefined;
65
- params: Params;
66
- input: HandlerInput | undefined;
67
- req: express.Request;
68
- res: express.Response;
69
- }) => Promise<HandlerOutput> | HandlerOutput | undefined;
70
- export declare type AuthOutput = HandlerAuth | HandlerError;
71
- export declare type AuthVerifier = (ctx: {
72
- req: express.Request;
73
- res: express.Response;
74
- }) => Promise<AuthOutput> | AuthOutput;
75
- export declare type XRPCHandlerConfig = {
76
- auth?: AuthVerifier;
77
- handler: XRPCHandler;
78
- };
79
- export declare class XRPCError extends Error {
80
- type: ResponseType;
81
- errorMessage?: string | undefined;
82
- customErrorName?: string | undefined;
83
- constructor(type: ResponseType, errorMessage?: string | undefined, customErrorName?: string | undefined);
84
- get payload(): {
85
- error: string | undefined;
86
- message: string | undefined;
87
- };
88
- get typeStr(): string | undefined;
89
- static fromError(error: unknown): XRPCError;
90
- }
91
- export declare function isHandlerError(v: unknown): v is HandlerError;
92
- export declare class InvalidRequestError extends XRPCError {
93
- constructor(errorMessage?: string, customErrorName?: string);
94
- }
95
- export declare class AuthRequiredError extends XRPCError {
96
- constructor(errorMessage?: string, customErrorName?: string);
97
- }
98
- export declare class ForbiddenError extends XRPCError {
99
- constructor(errorMessage?: string, customErrorName?: string);
100
- }
101
- export declare class InternalServerError extends XRPCError {
102
- constructor(errorMessage?: string, customErrorName?: string);
103
- }
104
- export declare class UpstreamFailureError extends XRPCError {
105
- constructor(errorMessage?: string, customErrorName?: string);
106
- }
107
- export declare class NotEnoughResoucesError extends XRPCError {
108
- constructor(errorMessage?: string, customErrorName?: string);
109
- }
110
- export declare class UpstreamTimeoutError extends XRPCError {
111
- constructor(errorMessage?: string, customErrorName?: string);
112
- }
113
- export declare class MethodNotImplementedError extends XRPCError {
114
- constructor(errorMessage?: string, customErrorName?: string);
115
- }
@@ -1,10 +0,0 @@
1
- import express from 'express';
2
- import { Lexicons, LexXrpcProcedure, LexXrpcQuery } from '@atproto/lexicon';
3
- import { UndecodedParams, Params, HandlerInput, HandlerSuccess, Options } from './types';
4
- export declare function decodeQueryParams(def: LexXrpcProcedure | LexXrpcQuery, params: UndecodedParams): Params;
5
- export declare function decodeQueryParam(type: string, value: unknown): string | number | boolean | undefined;
6
- export declare function validateInput(nsid: string, def: LexXrpcProcedure | LexXrpcQuery, req: express.Request, opts: Options, lexicons: Lexicons): HandlerInput | undefined;
7
- export declare function validateOutput(nsid: string, def: LexXrpcProcedure | LexXrpcQuery, output: HandlerSuccess | undefined, lexicons: Lexicons): HandlerSuccess | undefined;
8
- export declare function normalizeMime(v: string): any;
9
- export declare function hasBody(req: express.Request): string | true | undefined;
10
- export declare function processBodyAsBytes(req: express.Request): Promise<Uint8Array>;
@@ -1 +0,0 @@
1
- {"program":{"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.esnext.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.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.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.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.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../node_modules/@types/node/ts4.8/assert.d.ts","../../../node_modules/@types/node/ts4.8/assert/strict.d.ts","../../../node_modules/@types/node/ts4.8/globals.d.ts","../../../node_modules/@types/node/ts4.8/async_hooks.d.ts","../../../node_modules/@types/node/ts4.8/buffer.d.ts","../../../node_modules/@types/node/ts4.8/child_process.d.ts","../../../node_modules/@types/node/ts4.8/cluster.d.ts","../../../node_modules/@types/node/ts4.8/console.d.ts","../../../node_modules/@types/node/ts4.8/constants.d.ts","../../../node_modules/@types/node/ts4.8/crypto.d.ts","../../../node_modules/@types/node/ts4.8/dgram.d.ts","../../../node_modules/@types/node/ts4.8/diagnostics_channel.d.ts","../../../node_modules/@types/node/ts4.8/dns.d.ts","../../../node_modules/@types/node/ts4.8/dns/promises.d.ts","../../../node_modules/@types/node/ts4.8/domain.d.ts","../../../node_modules/@types/node/ts4.8/dom-events.d.ts","../../../node_modules/@types/node/ts4.8/events.d.ts","../../../node_modules/@types/node/ts4.8/fs.d.ts","../../../node_modules/@types/node/ts4.8/fs/promises.d.ts","../../../node_modules/@types/node/ts4.8/http.d.ts","../../../node_modules/@types/node/ts4.8/http2.d.ts","../../../node_modules/@types/node/ts4.8/https.d.ts","../../../node_modules/@types/node/ts4.8/inspector.d.ts","../../../node_modules/@types/node/ts4.8/module.d.ts","../../../node_modules/@types/node/ts4.8/net.d.ts","../../../node_modules/@types/node/ts4.8/os.d.ts","../../../node_modules/@types/node/ts4.8/path.d.ts","../../../node_modules/@types/node/ts4.8/perf_hooks.d.ts","../../../node_modules/@types/node/ts4.8/process.d.ts","../../../node_modules/@types/node/ts4.8/punycode.d.ts","../../../node_modules/@types/node/ts4.8/querystring.d.ts","../../../node_modules/@types/node/ts4.8/readline.d.ts","../../../node_modules/@types/node/ts4.8/readline/promises.d.ts","../../../node_modules/@types/node/ts4.8/repl.d.ts","../../../node_modules/@types/node/ts4.8/stream.d.ts","../../../node_modules/@types/node/ts4.8/stream/promises.d.ts","../../../node_modules/@types/node/ts4.8/stream/consumers.d.ts","../../../node_modules/@types/node/ts4.8/stream/web.d.ts","../../../node_modules/@types/node/ts4.8/string_decoder.d.ts","../../../node_modules/@types/node/ts4.8/test.d.ts","../../../node_modules/@types/node/ts4.8/timers.d.ts","../../../node_modules/@types/node/ts4.8/timers/promises.d.ts","../../../node_modules/@types/node/ts4.8/tls.d.ts","../../../node_modules/@types/node/ts4.8/trace_events.d.ts","../../../node_modules/@types/node/ts4.8/tty.d.ts","../../../node_modules/@types/node/ts4.8/url.d.ts","../../../node_modules/@types/node/ts4.8/util.d.ts","../../../node_modules/@types/node/ts4.8/v8.d.ts","../../../node_modules/@types/node/ts4.8/vm.d.ts","../../../node_modules/@types/node/ts4.8/wasi.d.ts","../../../node_modules/@types/node/ts4.8/worker_threads.d.ts","../../../node_modules/@types/node/ts4.8/zlib.d.ts","../../../node_modules/@types/node/ts4.8/globals.global.d.ts","../../../node_modules/@types/node/ts4.8/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/mime/mime.d.ts","../../../node_modules/@types/mime/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/zod/lib/helpers/typealiases.d.ts","../../../node_modules/zod/lib/helpers/util.d.ts","../../../node_modules/zod/lib/zoderror.d.ts","../../../node_modules/zod/lib/locales/en.d.ts","../../../node_modules/zod/lib/errors.d.ts","../../../node_modules/zod/lib/helpers/parseutil.d.ts","../../../node_modules/zod/lib/helpers/enumutil.d.ts","../../../node_modules/zod/lib/helpers/errorutil.d.ts","../../../node_modules/zod/lib/helpers/partialutil.d.ts","../../../node_modules/zod/lib/types.d.ts","../../../node_modules/zod/lib/external.d.ts","../../../node_modules/zod/lib/index.d.ts","../../../node_modules/zod/index.d.ts","../../nsid/src/index.ts","../../lexicon/src/types.ts","../../../node_modules/iso-datestring-validator/dist/is-valid-date/is-valid-date.function.d.ts","../../../node_modules/iso-datestring-validator/dist/is-valid-iso-datestring/is-valid-iso-datestring.function.d.ts","../../../node_modules/iso-datestring-validator/dist/is-valid-time/is-valid-time.function.d.ts","../../../node_modules/iso-datestring-validator/dist/is-valid-year-month/is-valid-year-month.function.d.ts","../../../node_modules/iso-datestring-validator/dist/index.d.ts","../../lexicon/src/validators/primitives.ts","../../lexicon/src/validators/blob.ts","../../lexicon/src/validators/complex.ts","../../lexicon/src/util.ts","../../lexicon/src/validators/xrpc.ts","../../lexicon/src/validation.ts","../../lexicon/src/lexicons.ts","../../lexicon/src/index.ts","../../xrpc/src/types.ts","../../xrpc/src/util.ts","../../xrpc/src/client.ts","../../xrpc/src/index.ts","../src/types.ts","../../common/src/check.ts","../../common/src/util.ts","../../common/src/tid.ts","../../../node_modules/multiformats/types/src/bases/interface.d.ts","../../../node_modules/multiformats/types/src/hashes/interface.d.ts","../../../node_modules/multiformats/types/src/cid.d.ts","../../../node_modules/multiformats/types/src/hashes/digest.d.ts","../../../node_modules/multiformats/types/src/hashes/hasher.d.ts","../../../node_modules/multiformats/types/src/varint.d.ts","../../../node_modules/multiformats/types/src/bytes.d.ts","../../../node_modules/multiformats/types/src/index.d.ts","../../../node_modules/multiformats/types/src/codecs/interface.d.ts","../../../node_modules/multiformats/types/src/block.d.ts","../../../node_modules/multiformats/types/src/codecs/raw.d.ts","../../../node_modules/multiformats/types/src/hashes/sha2.d.ts","../../../node_modules/@ipld/dag-cbor/types/index.d.ts","../../common/src/blocks.ts","../../../node_modules/pino-abstract-transport/index.d.ts","../../../node_modules/pino-pretty/index.d.ts","../../../node_modules/pino-std-serializers/index.d.ts","../../../node_modules/sonic-boom/types/index.d.ts","../../../node_modules/pino/pino.d.ts","../../common/src/logger.ts","../../common/src/types.ts","../../common/src/streams.ts","../../common/src/index.ts","../src/util.ts","../src/logger.ts","../src/server.ts","../src/index.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bn.js/index.d.ts","../../../node_modules/@types/cors/index.d.ts","../../../node_modules/@types/elliptic/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/json-schema/index.d.ts","../../../node_modules/@types/jsonwebtoken/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/nodemailer/lib/dkim/index.d.ts","../../../node_modules/@types/nodemailer/lib/mailer/mail-message.d.ts","../../../node_modules/@types/nodemailer/lib/xoauth2/index.d.ts","../../../node_modules/@types/nodemailer/lib/mailer/index.d.ts","../../../node_modules/@types/nodemailer/lib/mime-node/index.d.ts","../../../node_modules/@types/nodemailer/lib/smtp-connection/index.d.ts","../../../node_modules/@types/nodemailer/lib/shared/index.d.ts","../../../node_modules/@types/nodemailer/lib/json-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/sendmail-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/ses-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/smtp-pool/index.d.ts","../../../node_modules/@types/nodemailer/lib/smtp-transport/index.d.ts","../../../node_modules/@types/nodemailer/lib/stream-transport/index.d.ts","../../../node_modules/@types/nodemailer/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/parse-json/index.d.ts","../../../node_modules/pg-types/index.d.ts","../../../node_modules/pg-protocol/dist/messages.d.ts","../../../node_modules/pg-protocol/dist/serializer.d.ts","../../../node_modules/pg-protocol/dist/parser.d.ts","../../../node_modules/pg-protocol/dist/index.d.ts","../../../node_modules/@types/pg/index.d.ts","../../../node_modules/@types/prettier/index.d.ts","../../../node_modules/@types/sharp/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/worker_threads.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","d11a03592451da2d1065e09e61f4e2a9bf68f780f4f6623c18b57816a9679d17","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"9b087de7268e4efc5f215347a62656663933d63c0b1d7b624913240367b999ea","affectsGlobalScope":true},{"version":"3260e3386d9535b804205bdddb5618a9a27735bd22927f48ad54363abcd23d45","affectsGlobalScope":true},{"version":"adb09ec0a64fc17dbbc4a228b3b18aa5f01db3440a6b0cbb02354df58674d584","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"34c839eaaa6d78c8674ae2c37af2236dee6831b13db7b4ef4df3ec889a04d4f2","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"a4da0551fd39b90ca7ce5f68fb55d4dc0c1396d589b612e1902f68ee090aaada","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"7e771891adaa85b690266bc37bd6eb43bc57eecc4b54693ead36467e7369952a","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"02873d070f9cb79f50833fbf4a9a27ac578a2edf8ddb8421eba1b37faba83bfb","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"c0db280fa6b09d7b8d6720a19a47f485956a41ee0e6914f1b704033eb69c6058","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","afcc1c426b76db7ec80e563d4fb0ba9e6bcc6e63c2d7e9342e649dc56d26347f","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","489532ff54b714f0e0939947a1c560e516d3ae93d51d639ab02e907a0e950114","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"6b526a5ec4a401ca7c26cfe6a48e641d8f30af76673bad3b06a1b4504594a960","affectsGlobalScope":true},{"version":"816ad2e607a96de5bcac7d437f843f5afd8957f1fa5eefa6bba8e4ed7ca8fd84","affectsGlobalScope":true},"cec36af22f514322f870e81d30675c78df82ae8bf4863f5fd4e4424c040c678d","d903fafe96674bc0b2ac38a5be4a8fc07b14c2548d1cdb165a80ea24c44c0c54","b01a80007e448d035a16c74b5c95a5405b2e81b12fabcf18b75aa9eb9ef28990","04eb6578a588d6a46f50299b55f30e3a04ef27d0c5a46c57d8fcc211cd530faa","dbe5aa5a5dd8bd1c6a8d11b1310c3f0cdabaacc78a37b394a8c7b14faeb5fb84","2c828a5405191d006115ab34e191b8474bc6c86ffdc401d1a9864b1b6e088a58",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"d4ac44f01d42f541631c5fc88d0ed8efac29a3a3ad9a745d9fd58f8b61ed132e","7c013aa892414a7fdcfd861ae524a668eaa3ede8c7c0acafaf611948122c8d93","b0973c3cbcdc59b37bf477731d468696ecaf442593ec51bab497a613a580fe30",{"version":"4989e92ba5b69b182d2caaea6295af52b7dc73a4f7a2e336a676722884e7139d","affectsGlobalScope":true},{"version":"b3624aed92dab6da8484280d3cb3e2f4130ec3f4ef3f8201c95144ae9e898bb6","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","210d54cd652ec0fec8c8916e4af59bb341065576ecda039842f9ffb2e908507c","36b03690b628eab08703d63f04eaa89c5df202e5f1edf3989f13ad389cd2c091","0effadd232a20498b11308058e334d3339cc5bf8c4c858393e38d9d4c0013dcf","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","3163f47436da41706c6e2b3c1511f3b7cce9f9f3905b2f3e01246c48b4ba7d14","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff","69ee23dd0d215b09907ad30d23f88b7790c93329d1faf31d7835552a10cf7cbf","44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","213fc4f2b172d8beb74b77d7c1b41488d67348066d185e4263470cbb010cd6e8",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","4c8525f256873c7ba3135338c647eaf0ca7115a1a2805ae2d0056629461186ce","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"f0900cd5d00fe1263ff41201fb8073dbeb984397e4af3b8002a5c207a30bdc33","affectsGlobalScope":true},{"version":"f7db71191aa7aac5d6bc927ed6e7075c2763d22c7238227ec0c63c8cf5cb6a8b","affectsGlobalScope":true},"06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","ec4bd1b200670fb567920db572d6701ed42a9641d09c4ff6869768c8f81b404c","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa",{"version":"da26af7362f53d122283bc69fed862b9a9fe27e01bc6a69d1d682e0e5a4df3e6","affectsGlobalScope":true},"8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"652ee9c5103e89102d87bc20d167a02a0e3e5e53665674466c8cfea8a9e418c7","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"ae3fe461989bbd951344efc1f1fe932360ce7392e6126bdb225a82a1bbaf15ee","affectsGlobalScope":true},"5b9ecf7da4d71cf3832dbb8336150fa924631811f488ad4690c2dfec2b4fb1d7","951c85f75aac041dddbedfedf565886a7b494e29ec1532e2a9b4a6180560b50e","f47887b61c6cf2f48746980390d6cb5b8013518951d912cfb37fe748071942be","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","f463d61cf39c3a6a5f96cdf7adfdb72a0b1d663f7b5d5b6dd042adba835430c2","9afae14803f3b7343ed6d193173008715c1fa3421a353a818c805244ed737a84","bb98c05ae5cb9bd7cb7ad76fe517251a661787a6f24337b842f47faf393f79c7","a93bf95f7009c90e7d1edb092560d4052e3ebbe9b9ad2d796bcd95dc4306825c","8485b6da53ec35637d072e516631d25dae53984500de70a6989058f24354666f","ebe80346928736532e4a822154eb77f57ef3389dbe2b3ba4e571366a15448ef2","c2cb3c8ff388781258ea9ddbcd8a947f751bddd6886e1d3b3ea09ddaa895df80","f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","014b34d4c2ef27191fdf3feabb6557ec92127f813910725b6e79ed9a49e466b6","72efc3e8cee3cb13144cb63bb8aacf28f918439a2ff222de89e0e5d7ba9c7170","b61efb129c7011068cb4ccbbd86d5741ac82653476b09f46d3d06dd99b5b687e","2b7961486503fa279a4f1a52928d8c31fc6558c335b750878721467210552dd7","d1f62988c7e8e8650f7ed39520a766648155abbf75dd89f60e24f069433301d4","5568d7c32e5cf5f35e092649f4e5e168c3114c800b1d7545b7ae5e0415704802","14e6f51486f4234e46f1b2c09c852989754de877fda7b2afdd709627e24b9882","014e778b10e0fa9c4dcd96d490b9217af830002aaa9762bb6a0989a4dea2f7f3","d0a24e00653be2a93b83449af73d3dfdecd6d80e67ea2d600d81e2ba40f43558","d0cfa8040af641c79e548c12c1ad91ef0cb5bd09146b6f630959931594f43d3b","3f1647fae43442e77958d732c6680060fe420bfd38f8b8c9273bc7c57e0b29ef","9073a0de3bb3da4da39a57c03369283866c50bb7476c1dc238ef4c3e267fb9b5","d56436ff9eaaf3ad8755d6605b25d0a632bb0c72102f2fac80342a42323384e8","ae8a143ba7b18605db8e58035577084a9b8a818a3a30d1f9ee197ec338a10dcd","4c8aa3b64e4973c8d22231943bc8ebbecdc3c2d8c6aaac829151c3dbc0bfc7c8","26c892e11542960fd793c1b848cad806fb2b1091e835595bd51342cf47aa71ac","906dd0e8fa586117f9ed4dd86573c68b1a1080adc63221429f8b29975d357714","4e91b7d0b690990b0252e3cecb2942d0fb1b4146eff7547520937bb273c362d4","0966a4236c1616d428cf4615cffb6fcd8bc16c0f4852a8146610ec3cb48af913","f468178ad044f3841d3ca58a5e51b531f2e3587ba36d70fe5679b2317e1a6a2b","b4e1ab9692322413a0095065c5a5e8a4f433e2b082d02635b82fae7e17a8fc6a","5381d8bac2131c21bcec18fa5da7aa9d55d1b4b5e8f1455947802fe576153ea6","e29a799e95de4eaa414e0854bf3d7ae7d469e082a56bcf839c889b1d86d3842e","0f360ab1513c3f657cff13a132a5e7b2f2aaf38c8cce97f1903cdae46d0896c4","dc8bd2d3fdede21907b93d1b962354779cdae08f83205f4507b639f0f69a29a2",{"version":"dc578bb97b2d6b6ee07add026455d2e581cfd250ffa6f3bc97c8af55d3f98b50","signature":"726fabe76c3ce0aeeff841ad4f59327bdb96bd751ba68c957ca27cf442d3a2c3"},"cb917ce33e6748b02f26f78b00838a77eb5aeedb63914cc60ff74d4d46fe0d2a","f14b59e2caa9ae4d7443b0960ca463bc03dd23c219d3690b57b05d7e3275d1e7","a4c7f74586dafdf53d17e7b022bec236b43c3a52aef698db104ea45faab2af72","930446bf32192f698b78f8ea4b309d8c2cfe02ab5ad78e4db907417405ebf5e7","5d3e07dbeabff37885262d9b4bd21c3185d95a09a268ab795f81135046a32bf4","7d309fbde13b5e30eff77c07a28b66451b0b50b83564d0cfa6a2a52c8b69aae6","853c5447ea8851049c1d008e130d23030d9fe3b5a8405a0ae7e55b00e173692d","ba0b552579e1bbafd93208f9bc84a61838148bd17f22a8ea55c46eea9c895e7a","87b44430497cae7542bbd5ac2fb6663df6a465dea7a46be58a49cd9416530439","32b67d761db3999f1e482d0add405b695d3ec5607e07ae4c963a96334c331814","1428847d803b8342711c0b22208df4f83590cce15ef2c8f36ba53cea24f4616d","6bea75e2b9873f7c123ffef3edf16e7c49ff7cefd2756543d51786fb354c3211","ebb7adfc90de5d2001075bfc4b8e2530c7649d1cd219d75589b45cba22d06782","7b684ae75736b26fddc21144deda04c3ae391f95f8eb241ceb23b27096f76963","2f686fbec43c87bc9b9c3d0e237f780e0e822d2c3a9a25fc99a16030a294b764","2cb05bc199aa0aedcedced658aa99b423c2f7e56f11bd301adb6415e8c464696","52aa4cb8a16a1632f7e48beb792744ee02c90c6dbbc1d0cafcf2c9bd7936f2ed","0d47fc0aed3e69968b3e168c4f2afba7f02fe81b7d40f34c5fbe4c8ed14222ac","955081e7442259cc2cbf0f7f122bc2fa10387c3c5298a8bd4cd402dbcefce4cf","043e933c8127f2215f940035bfac94354b82a49f419bb77af0045f0c57e6a05e","9d9f4da63084ac107eddda8b4ea92d7ee443e0c86601e8c844943b82fd3ef6f8","bde15a4b72e85c0816548fe37f82ae6fe9a6238e5b60ebe9a9449f9293e2d456","dacf98eb56a73c300285659e07ecc8ca9289c99a506e94ad9685d4728cc1561a","ae7ec9add53f145824f5e169d2c798b3507bebd9326eb3709036a868d2144db6","b97b3071f36975c893f9dd28a0d113482891fd402d3ac787bded362d7d35af67","1953fb9bcb47ec55e148a074c8cf5a5f960560a16733638b3ad9617263b47e17",{"version":"0db7c4c2e91f7a93d8d57567688ce4e92c89ca6af5325c7082dfa04fd32397e1","signature":"2e47aba497ca7b0e0bc39033e798824b0ed997949fd9a2037ebea6f6c3723314"},{"version":"b083701f39a6d5e649724e0381ab8fc39dbd79f32b262d87e2ff117555b45282","signature":"25d0df9893c6c7f0421353081826302fdd9d0fe32880e50cdbf20c868b8ade89"},{"version":"b0249f6aaba2adec44fd5bf203d561e457b525b3ad166990c85635ff2165b5ec","signature":"645ea4b868097d9d4773f0e7fa9f8b6ce4686825277586b66e730503606d351c"},{"version":"e784cf57381f506d5534cbb7585b2eb6dd90177074944c89b36918b91b7a0234","signature":"59c5ba9a7f7306d7ac430198d621886366f758c53361b0575bbab4fb858314cf"},"c561efdf5ba0b62619745d4761fe2d9756f23db972e039367d15922fed67fd2f","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","7ec238b220ea991b6643e24191b1f552a65956d5f6de4c6144e700b9985265d8","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","dae3d1adc67ac3dbd1cd471889301339ec439837b5df565982345be20c8fca9a","5426e62886b7be7806312d31a00e8f7dccd6fe63ba9bbefe99ee2eab29cc48a3","01f7828047b5c6703d3c601473618b448f5506a88fcac852638b0715c3abf4eb","6fbd58e4015b9ae31ea977d4d549eb24a1102cc798b57ec5d70868b542c06612","b8a427b9fe88504a6fb092e21adfe272d144394a2ced7f9e4adc3de7efa6e216","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","763e521cf114b80e0dd0e21ca49b9f8ae62e8999555a5e7bade8ce36b33001c2","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","3e6bbb0883148627ca0854a9f62d820aaf1a0f1842f5568176721fef156b8f23","ffcc5500e77223169833fc6eb59b3a507944a1f89574e0a1276b0ea7fc22c4a4","22f13de9e2fe5f0f4724797abd3d34a1cdd6e47ef81fc4933fea3b8bf4ad524b","e3ba509d3dce019b3190ceb2f3fc88e2610ab717122dabd91a9efaa37804040d","cda0cb09b995489b7f4c57f168cd31b83dcbaa7aad49612734fb3c9c73f6e4f2","f72f8428f3c1caa22e9c247d046603b85b442c0dae7b77a7a0bc092c18867cb7",{"version":"195f63105abc03e72b6a176e3e34dfb5ac932b55db378fdc7874b1617e24b465","affectsGlobalScope":true},"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","bb4ed283cfb3db7ec1d4bb79c37f5e96d39b340f1f4de995c4b0b836c8d5fa05","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","bb654d426b82e0846cd4bd7de91d637039ecdfd63c94447373490178f80846fe","db90f54098b237753ac9c846e39cd49aa538dcad07a2e1c68a138f3c0f8e621d","92ad68795c32309fb43576cacb38bd2677deeed38f5730dcd4a8c5e65463ae15","4b16417aab5a4b276fd4a7db95120a8c7b4d49a6d68ddfe075e9f46dcbf22f00","eecb2ea10a1500dcc6bdeff14be1fb43806f63a9b8562e16e1b4fc8baa8dfa8d","221a6ab66d611349faaf80af49c7a34d95623787610fd153fed4da0811abdcae","f3d84d6f83cf131e4db335dc8100898adbeb01dd4cf4e2fe695ab220eac98be4","6521aaade4e1d23cbc4b665083b004aeaca23f3347ba2422f88d1828968a0056","e79130cf2ba010f2b79747bf43b086252ad041b130768331a1144c0a86185877","e9709ed827c40789c669736fc78e2ab603605e8e81325d1e6d7a5eb451810dd0","dafce7a7b279977940b6b4b50017625e4f922f73094433d2875994bdc0b27e87","6fc76efbb61d3336833ef44ff3f37552667f26c2a73b368f3b4b259f19f2c234","479496e5bb48f2f5e981ef646665bc09fd9ab080e86e9ea882ca4369411604af","6c559dee3c6251c261b67df08e01d4cbc89cbd7a63300150c636705733cebfff","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","f60e3e3060207ac982da13363181fd7ee4beecc19a7c569f0d6bb034331066c2","17230b34bb564a3a2e36f9d3985372ccab4ad1722df2c43f7c5c2b553f68e5db","87ed0f84f0691d5c724b23159db96342e6b04ac69201b02c65936f4281ce1fbe","13868c5792808236b17dfe2803eafce911ea4d09d3b2fda95391891a494f988f","0dfe35191a04e8f9dc7caeb9f52f2ee07402736563d12cbccd15fb5f31ac877f","fa5c2d3fcd8e227e180815df0a0903ed4b116400452af8a75ac5b68e5e1de9da","93c4fc5b5237c09bc9ed65cb8f0dc1d89034406ab40500b89701341994897142","9adb78bae51a473d33f40da9bdb50c0e491d1cc7a5db776665853effa0cd3374","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","28288f5e5f8b7b895ed2abe6359c1da3e0d14a64b5aef985071285671f347c01"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"jsx":1,"module":1,"noImplicitAny":false,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictPropertyInitialization":false,"target":7},"fileIdsList":[[103,184],[103],[103,165],[103,199],[103,184,185,186,187,188],[103,184,186],[103,110],[76,103,110,117],[76,103,110],[76,103],[103,190],[73,76,103,110,111,112],[103,112,113,116,118],[74,103,110],[103,194],[103,195],[103,201,204],[103,114],[103,115],[57,103],[60,103],[61,66,94,103],[62,73,74,81,91,102,103],[62,63,73,81,103],[64,103],[65,66,74,82,103],[66,91,99,103],[67,69,73,81,103],[68,103],[69,70,103],[73,103],[71,73,103],[73,74,75,91,102,103],[73,74,75,88,91,94,103],[103,107],[76,81,91,102,103],[73,74,76,77,81,91,99,102,103],[76,78,91,99,102,103],[57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,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],[73,79,103],[80,102,103],[69,73,81,91,103],[82,103],[83,103],[60,84,103],[85,101,103,107],[86,103],[87,103],[73,88,89,103],[88,90,103,105],[61,73,91,92,93,94,103],[61,91,93,103],[91,92,103],[94,103],[95,103],[73,97,98,103],[97,98,103],[66,81,91,99,103],[100,103],[81,101,103],[61,76,87,102,103],[66,103],[91,103,104],[103,105],[103,106],[61,66,73,75,84,91,102,103,105,107],[91,103,108],[103,110,211,213,217,218,219,220,221,222],[91,103,110],[73,103,110,211,213,214,216,223],[73,81,91,102,103,110,210,211,212,214,215,216,223],[91,103,110,213,214],[91,103,110,213,215],[103,110,211,213,214,216,223],[91,103,110,215],[73,81,91,99,103,110,212,214,216],[73,103,110,211,213,214,215,216,223],[73,91,103,110,211,212,213,214,215,216,223],[73,91,103,110,211,213,214,216,223],[76,91,103,110,216],[73,91,99,103,110,226,227,230,231],[76,103,110,115],[103,235],[103,197,203],[103,136,137,138,139],[103,201],[103,198,202],[103,158,164,165],[103,157,158],[103,158],[103,158,160],[103,161],[103,159,160,161,162,163],[103,110,227,228,229],[91,103,110,227],[91,103,110,171,175],[73,103,107,172,173,174],[103,200],[73,103,110],[103,132],[103,123,124],[103,121,122,123,125,126,130],[103,122,123],[103,131],[103,123],[103,121,122,123,126,127,128,129],[103,121,122,132],[103,159,164,166,167,168,169],[103,154,155,156,170,176,177,178],[103,175],[91,103],[103,155],[103,133,159],[103,135,147],[103,133,135,143,144,146],[103,133,134],[103,135,143,147],[103,135,143,144,145,147],[103,135,141,142,144,147],[103,135,140,147],[103,135,141,143,147],[103,153,182],[103,179],[91,103,119,148,153,180,181],[103,119,120,133,152],[91,103,108,119,148,153,179],[103,148,149,150],[103,149,151],[103,133,148],[103,148,149],[184],[165],[199],[184,185,186,187,188],[184,186],[237],[117,237,238],[237,238],[238],[190],[111,112,237,238,239],[112,113,116,118],[237,240],[194],[195],[201,204],[114],[115],[211,213,217,218,219,220,221,222,237],[237,241],[211,213,214,216,223,237,239],[210,211,212,214,215,216,223,237,239,241,242,243],[213,214,237,241],[213,215,237,241],[211,213,214,216,223,237],[215,237,241],[212,214,216,237,239,241,242,244],[211,213,214,215,216,223,237,239],[211,212,213,214,215,216,223,237,239,241],[211,213,214,216,223,237,239,241],[216,237,238,241],[226,227,230,231,237,239,241,244],[115,237,238],[235],[197,203],[201],[198,202],[158,164,165],[157,158],[158],[158,160],[161],[159,160,161,162,163],[227,228,229,237],[227,237,241],[171,175,237,241],[172,173,174,239,245],[200],[237,239],[132],[123,124],[121,122,123,125,126,130],[122,123],[131],[123],[121,122,123,126,127,128,129],[121,122,132],[175],[155],[135,147],[135,143,147],[135,143,144,145,147],[153,182],[113,119,148,153],[119,133,152],[119,148,153],[149,151]],"referencedMap":[[186,1],[184,2],[169,3],[197,2],[200,4],[199,2],[189,5],[185,1],[187,6],[188,1],[190,7],[118,8],[117,9],[191,10],[192,11],[113,12],[119,13],[193,14],[120,2],[194,2],[195,15],[196,16],[205,17],[206,2],[207,7],[115,18],[114,19],[208,2],[209,2],[57,20],[58,20],[60,21],[61,22],[62,23],[63,24],[64,25],[65,26],[66,27],[67,28],[68,29],[69,30],[70,30],[72,31],[71,32],[73,31],[74,33],[75,34],[59,35],[109,2],[76,36],[77,37],[78,38],[110,39],[79,40],[80,41],[81,42],[82,43],[83,44],[84,45],[85,46],[86,47],[87,48],[88,49],[89,49],[90,50],[91,51],[93,52],[92,53],[94,54],[95,55],[96,2],[97,56],[98,57],[99,58],[100,59],[101,60],[102,61],[103,62],[104,63],[105,64],[106,65],[107,66],[108,67],[223,68],[210,69],[217,70],[213,71],[211,72],[214,73],[218,74],[219,70],[216,75],[215,76],[220,77],[221,78],[222,79],[212,80],[224,2],[225,2],[231,81],[232,2],[112,2],[111,2],[116,82],[233,69],[234,2],[235,2],[236,83],[198,2],[204,84],[140,85],[136,2],[137,2],[138,2],[139,2],[202,86],[203,87],[157,2],[166,88],[163,2],[159,89],[165,2],[167,3],[160,90],[161,91],[158,2],[168,92],[164,93],[162,2],[230,94],[227,7],[229,95],[228,7],[226,2],[171,69],[172,96],[173,9],[175,97],[201,98],[174,99],[11,2],[12,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[4,2],[27,2],[24,2],[25,2],[26,2],[28,2],[29,2],[30,2],[5,2],[31,2],[32,2],[33,2],[34,2],[6,2],[35,2],[36,2],[37,2],[38,2],[7,2],[39,2],[44,2],[45,2],[40,2],[41,2],[42,2],[43,2],[8,2],[49,2],[46,2],[47,2],[48,2],[50,2],[9,2],[51,2],[52,2],[53,2],[54,2],[55,2],[1,2],[10,2],[56,2],[13,2],[133,100],[125,101],[131,102],[127,2],[128,2],[126,103],[129,100],[121,2],[122,2],[132,104],[124,105],[130,106],[123,107],[170,108],[154,2],[179,109],[176,110],[178,111],[156,112],[177,113],[155,2],[148,114],[147,115],[135,116],[144,117],[146,118],[142,114],[143,119],[141,120],[145,121],[134,2],[183,122],[181,123],[182,124],[153,125],[180,126],[151,127],[152,128],[149,129],[150,130]],"exportedModulesMap":[[186,131],[169,132],[200,133],[189,134],[185,131],[187,135],[188,131],[190,136],[118,137],[117,138],[191,139],[192,140],[113,141],[119,142],[193,143],[195,144],[196,145],[205,146],[207,136],[115,147],[114,148],[57,20],[58,20],[60,21],[61,22],[62,23],[63,24],[64,25],[65,26],[66,27],[67,28],[68,29],[69,30],[70,30],[72,31],[71,32],[73,31],[74,33],[75,34],[59,35],[109,2],[76,36],[77,37],[78,38],[110,39],[79,40],[80,41],[81,42],[82,43],[83,44],[84,45],[85,46],[86,47],[87,48],[88,49],[89,49],[90,50],[91,51],[93,52],[92,53],[94,54],[95,55],[96,2],[97,56],[98,57],[99,58],[100,59],[101,60],[102,61],[103,62],[104,63],[105,64],[106,65],[107,66],[108,67],[223,149],[210,150],[217,151],[213,152],[211,153],[214,154],[218,155],[219,151],[216,156],[215,157],[220,158],[221,159],[222,160],[212,161],[231,162],[116,163],[233,69],[236,164],[204,165],[140,85],[136,2],[137,2],[138,2],[139,2],[202,166],[203,167],[166,168],[159,169],[167,132],[160,170],[161,171],[168,172],[164,173],[230,174],[227,136],[229,175],[228,136],[171,150],[172,176],[173,138],[175,177],[201,178],[174,179],[133,180],[125,181],[131,182],[126,183],[129,180],[132,184],[124,185],[130,186],[123,187],[170,108],[154,2],[179,109],[176,188],[178,111],[156,189],[177,113],[155,2],[148,190],[147,115],[135,116],[144,191],[146,192],[142,190],[143,119],[141,120],[145,121],[183,193],[181,188],[182,194],[153,195],[180,196],[151,127],[152,197],[149,129],[150,130]],"semanticDiagnosticsPerFile":[186,184,169,197,200,199,189,185,187,188,190,118,117,191,192,113,119,193,120,194,195,196,205,206,207,115,114,208,209,57,58,60,61,62,63,64,65,66,67,68,69,70,72,71,73,74,75,59,109,76,77,78,110,79,80,81,82,83,84,85,86,87,88,89,90,91,93,92,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,223,210,217,213,211,214,218,219,216,215,220,221,222,212,224,225,231,232,112,111,116,233,234,235,236,198,204,140,136,137,138,139,202,203,157,166,163,159,165,167,160,161,158,168,164,162,230,227,229,228,226,171,172,173,175,201,174,11,12,15,14,2,16,17,18,19,20,21,22,23,3,4,27,24,25,26,28,29,30,5,31,32,33,34,6,35,36,37,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,54,55,1,10,56,13,133,125,131,127,128,126,129,121,122,132,124,130,123,170,154,179,176,178,156,177,155,148,147,135,144,146,142,143,141,145,134,183,181,182,153,180,151,152,149,150],"latestChangedDtsFile":"./src/types.d.ts"},"version":"4.8.4"}