@trpc/server 9.23.6 → 9.24.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.
Files changed (28) hide show
  1. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -0
  2. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +90 -0
  3. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +7 -0
  4. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +90 -0
  5. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +86 -0
  6. package/dist/declarations/src/adapters/ws.d.ts +1 -1
  7. package/dist/declarations/src/deprecated/{LegacyRouter.d.ts → legacyRouter.d.ts} +1 -1
  8. package/dist/declarations/src/deprecated/legacyRouter.d.ts.map +1 -0
  9. package/dist/declarations/src/http/index.d.ts +1 -1
  10. package/dist/declarations/src/http/internals/types.d.ts +1 -1
  11. package/dist/declarations/src/http/{ResponseMeta.d.ts → responseMeta.d.ts} +1 -1
  12. package/dist/declarations/src/http/responseMeta.d.ts.map +1 -0
  13. package/dist/declarations/src/index.d.ts +1 -1
  14. package/dist/declarations/src/internals/{BaseHandlerOptions.d.ts → baseHandlerOptions.d.ts} +2 -2
  15. package/dist/declarations/src/internals/{BaseHandlerOptions.d.ts.map → baseHandlerOptions.d.ts.map} +1 -1
  16. package/dist/declarations/src/internals/{OnErrorFunction.d.ts → onErrorFunction.d.ts} +1 -1
  17. package/dist/declarations/src/internals/{OnErrorFunction.d.ts.map → onErrorFunction.d.ts.map} +1 -1
  18. package/package.json +2 -2
  19. package/src/adapters/ws.ts +1 -1
  20. package/src/deprecated/{LegacyRouter.ts → legacyRouter.ts} +0 -0
  21. package/src/http/index.ts +1 -1
  22. package/src/http/internals/types.ts +1 -1
  23. package/src/http/{ResponseMeta.ts → responseMeta.ts} +0 -0
  24. package/src/index.ts +1 -1
  25. package/src/internals/{BaseHandlerOptions.ts → baseHandlerOptions.ts} +1 -1
  26. package/src/internals/{OnErrorFunction.ts → onErrorFunction.ts} +0 -0
  27. package/dist/declarations/src/deprecated/LegacyRouter.d.ts.map +0 -1
  28. package/dist/declarations/src/http/ResponseMeta.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ export * from "../../../dist/declarations/src/adapters/aws-lambda";
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var url = require('url');
6
+ require('../../../dist/router-2f54c292.cjs.dev.js');
7
+ require('events');
8
+ require('http');
9
+ require('../../../dist/nodeHTTPRequestHandler-36ddaba2.cjs.dev.js');
10
+ var resolveHTTPResponse = require('../../../dist/resolveHTTPResponse-55b2c9bd.cjs.dev.js');
11
+ require('../../../dist/transformTRPCResponse-c654ea92.cjs.dev.js');
12
+ require('../../../dist/codes-130e62df.cjs.dev.js');
13
+
14
+ function lambdaEventToHTTPRequest(event) {
15
+ const query = new url.URLSearchParams();
16
+
17
+ for (const [key, value] of Object.entries((_event$multiValueQuer = event.multiValueQueryStringParameters) !== null && _event$multiValueQuer !== void 0 ? _event$multiValueQuer : {})) {
18
+ var _event$multiValueQuer;
19
+
20
+ for (const v of value !== null && value !== void 0 ? value : []) {
21
+ query.append(key, v);
22
+ }
23
+ }
24
+
25
+ return {
26
+ method: event.httpMethod,
27
+ query,
28
+ headers: event.headers,
29
+ body: event.body
30
+ };
31
+ }
32
+
33
+ function transformHeaders(headers) {
34
+ const obj = {};
35
+
36
+ for (const [key, value] of Object.entries(headers)) {
37
+ if (typeof value === 'undefined') {
38
+ continue;
39
+ }
40
+
41
+ obj[key] = Array.isArray(value) ? value.join(', ') : value;
42
+ }
43
+
44
+ return obj;
45
+ }
46
+
47
+ function createApiGatewayHandler(opts) {
48
+ return async (event, context) => {
49
+ var _response$body, _response$headers;
50
+
51
+ const req = lambdaEventToHTTPRequest(event);
52
+ const path = event.path;
53
+
54
+ const createContext = async function _createContext() {
55
+ var _opts$createContext;
56
+
57
+ return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, {
58
+ event,
59
+ context
60
+ }));
61
+ };
62
+
63
+ const response = await resolveHTTPResponse.resolveHTTPResponse({
64
+ router: opts.router,
65
+ batching: opts.batching,
66
+ responseMeta: opts === null || opts === void 0 ? void 0 : opts.responseMeta,
67
+ createContext,
68
+ req,
69
+ path,
70
+ error: null,
71
+
72
+ onError(o) {
73
+ var _opts$onError;
74
+
75
+ opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
76
+ req: event
77
+ });
78
+ }
79
+
80
+ });
81
+ const resp = {
82
+ statusCode: response.status,
83
+ body: (_response$body = response.body) !== null && _response$body !== void 0 ? _response$body : '',
84
+ headers: transformHeaders((_response$headers = response.headers) !== null && _response$headers !== void 0 ? _response$headers : {})
85
+ };
86
+ return resp;
87
+ };
88
+ }
89
+
90
+ exports.createApiGatewayHandler = createApiGatewayHandler;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./trpc-server-adapters-aws-lambda.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./trpc-server-adapters-aws-lambda.cjs.dev.js");
7
+ }
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var url = require('url');
6
+ require('../../../dist/router-459409c8.cjs.prod.js');
7
+ require('events');
8
+ require('http');
9
+ require('../../../dist/nodeHTTPRequestHandler-91e7ca3d.cjs.prod.js');
10
+ var resolveHTTPResponse = require('../../../dist/resolveHTTPResponse-02e61299.cjs.prod.js');
11
+ require('../../../dist/transformTRPCResponse-1e125b28.cjs.prod.js');
12
+ require('../../../dist/codes-aff770a3.cjs.prod.js');
13
+
14
+ function lambdaEventToHTTPRequest(event) {
15
+ const query = new url.URLSearchParams();
16
+
17
+ for (const [key, value] of Object.entries((_event$multiValueQuer = event.multiValueQueryStringParameters) !== null && _event$multiValueQuer !== void 0 ? _event$multiValueQuer : {})) {
18
+ var _event$multiValueQuer;
19
+
20
+ for (const v of value !== null && value !== void 0 ? value : []) {
21
+ query.append(key, v);
22
+ }
23
+ }
24
+
25
+ return {
26
+ method: event.httpMethod,
27
+ query,
28
+ headers: event.headers,
29
+ body: event.body
30
+ };
31
+ }
32
+
33
+ function transformHeaders(headers) {
34
+ const obj = {};
35
+
36
+ for (const [key, value] of Object.entries(headers)) {
37
+ if (typeof value === 'undefined') {
38
+ continue;
39
+ }
40
+
41
+ obj[key] = Array.isArray(value) ? value.join(', ') : value;
42
+ }
43
+
44
+ return obj;
45
+ }
46
+
47
+ function createApiGatewayHandler(opts) {
48
+ return async (event, context) => {
49
+ var _response$body, _response$headers;
50
+
51
+ const req = lambdaEventToHTTPRequest(event);
52
+ const path = event.path;
53
+
54
+ const createContext = async function _createContext() {
55
+ var _opts$createContext;
56
+
57
+ return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, {
58
+ event,
59
+ context
60
+ }));
61
+ };
62
+
63
+ const response = await resolveHTTPResponse.resolveHTTPResponse({
64
+ router: opts.router,
65
+ batching: opts.batching,
66
+ responseMeta: opts === null || opts === void 0 ? void 0 : opts.responseMeta,
67
+ createContext,
68
+ req,
69
+ path,
70
+ error: null,
71
+
72
+ onError(o) {
73
+ var _opts$onError;
74
+
75
+ opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
76
+ req: event
77
+ });
78
+ }
79
+
80
+ });
81
+ const resp = {
82
+ statusCode: response.status,
83
+ body: (_response$body = response.body) !== null && _response$body !== void 0 ? _response$body : '',
84
+ headers: transformHeaders((_response$headers = response.headers) !== null && _response$headers !== void 0 ? _response$headers : {})
85
+ };
86
+ return resp;
87
+ };
88
+ }
89
+
90
+ exports.createApiGatewayHandler = createApiGatewayHandler;
@@ -0,0 +1,86 @@
1
+ import { URLSearchParams } from 'url';
2
+ import '../../../dist/router-93491dae.esm.js';
3
+ import 'events';
4
+ import 'http';
5
+ import '../../../dist/nodeHTTPRequestHandler-372a4a4f.esm.js';
6
+ import { r as resolveHTTPResponse } from '../../../dist/resolveHTTPResponse-ddb56677.esm.js';
7
+ import '../../../dist/transformTRPCResponse-45c225c3.esm.js';
8
+ import '../../../dist/codes-5678cc97.esm.js';
9
+
10
+ function lambdaEventToHTTPRequest(event) {
11
+ const query = new URLSearchParams();
12
+
13
+ for (const [key, value] of Object.entries((_event$multiValueQuer = event.multiValueQueryStringParameters) !== null && _event$multiValueQuer !== void 0 ? _event$multiValueQuer : {})) {
14
+ var _event$multiValueQuer;
15
+
16
+ for (const v of value !== null && value !== void 0 ? value : []) {
17
+ query.append(key, v);
18
+ }
19
+ }
20
+
21
+ return {
22
+ method: event.httpMethod,
23
+ query,
24
+ headers: event.headers,
25
+ body: event.body
26
+ };
27
+ }
28
+
29
+ function transformHeaders(headers) {
30
+ const obj = {};
31
+
32
+ for (const [key, value] of Object.entries(headers)) {
33
+ if (typeof value === 'undefined') {
34
+ continue;
35
+ }
36
+
37
+ obj[key] = Array.isArray(value) ? value.join(', ') : value;
38
+ }
39
+
40
+ return obj;
41
+ }
42
+
43
+ function createApiGatewayHandler(opts) {
44
+ return async (event, context) => {
45
+ var _response$body, _response$headers;
46
+
47
+ const req = lambdaEventToHTTPRequest(event);
48
+ const path = event.path;
49
+
50
+ const createContext = async function _createContext() {
51
+ var _opts$createContext;
52
+
53
+ return await ((_opts$createContext = opts.createContext) === null || _opts$createContext === void 0 ? void 0 : _opts$createContext.call(opts, {
54
+ event,
55
+ context
56
+ }));
57
+ };
58
+
59
+ const response = await resolveHTTPResponse({
60
+ router: opts.router,
61
+ batching: opts.batching,
62
+ responseMeta: opts === null || opts === void 0 ? void 0 : opts.responseMeta,
63
+ createContext,
64
+ req,
65
+ path,
66
+ error: null,
67
+
68
+ onError(o) {
69
+ var _opts$onError;
70
+
71
+ opts === null || opts === void 0 ? void 0 : (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, { ...o,
72
+ req: event
73
+ });
74
+ }
75
+
76
+ });
77
+ const resp = {
78
+ statusCode: response.status,
79
+ body: (_response$body = response.body) !== null && _response$body !== void 0 ? _response$body : '',
80
+ headers: transformHeaders((_response$headers = response.headers) !== null && _response$headers !== void 0 ? _response$headers : {})
81
+ };
82
+ return resp;
83
+ };
84
+ }
85
+
86
+ export { createApiGatewayHandler };
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import http from 'http';
3
3
  import ws from 'ws';
4
- import { BaseHandlerOptions } from '../internals/BaseHandlerOptions';
4
+ import { BaseHandlerOptions } from '../internals/baseHandlerOptions';
5
5
  import { AnyRouter } from '../router';
6
6
  import { NodeHTTPCreateContextOption } from './node-http';
7
7
  /**
@@ -1,3 +1,3 @@
1
1
  export * from '../router';
2
2
  export { LegacyRouter as Router } from '../router';
3
- //# sourceMappingURL=LegacyRouter.d.ts.map
3
+ //# sourceMappingURL=legacyRouter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legacyRouter.d.ts","sourceRoot":"../../../../src/deprecated","sources":["legacyRouter.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export * from './resolveHTTPResponse';
2
- export * from './ResponseMeta';
2
+ export * from './responseMeta';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { AnyRouter, Dict, ProcedureType, ResponseMeta, TRPCError, inferRouterContext, inferRouterError } from '@trpc/server';
3
3
  import { URLSearchParams } from 'url';
4
- import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
4
+ import { BaseHandlerOptions } from '../../internals/baseHandlerOptions';
5
5
  import { TRPCResponse } from '../../rpc';
6
6
  export declare type HTTPHeaders = Dict<string | string[]>;
7
7
  export interface HTTPResponse {
@@ -2,4 +2,4 @@ export interface ResponseMeta {
2
2
  status?: number;
3
3
  headers?: Record<string, string>;
4
4
  }
5
- //# sourceMappingURL=ResponseMeta.d.ts.map
5
+ //# sourceMappingURL=responseMeta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responseMeta.d.ts","sourceRoot":"../../../../src/http","sources":["responseMeta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
@@ -6,5 +6,5 @@ export * from './TRPCError';
6
6
  export * from './types';
7
7
  export * from './deprecated/createHttpServer';
8
8
  export * from './deprecated/requestHandler';
9
- export * from './deprecated/LegacyRouter';
9
+ export * from './deprecated/legacyRouter';
10
10
  //# sourceMappingURL=index.d.ts.map
@@ -1,5 +1,5 @@
1
1
  import { AnyRouter } from '../router';
2
- import { OnErrorFunction } from './OnErrorFunction';
2
+ import { OnErrorFunction } from './onErrorFunction';
3
3
  /**
4
4
  * Base interface for any response handler
5
5
  */
@@ -10,4 +10,4 @@ export interface BaseHandlerOptions<TRouter extends AnyRouter, TRequest> {
10
10
  };
11
11
  router: TRouter;
12
12
  }
13
- //# sourceMappingURL=BaseHandlerOptions.d.ts.map
13
+ //# sourceMappingURL=baseHandlerOptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseHandlerOptions.d.ts","sourceRoot":"../../../../src/internals","sources":["BaseHandlerOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ;IACrE,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;CACjB"}
1
+ {"version":3,"file":"baseHandlerOptions.d.ts","sourceRoot":"../../../../src/internals","sources":["baseHandlerOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ;IACrE,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;CACjB"}
@@ -8,4 +8,4 @@ export declare type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts
8
8
  input: unknown;
9
9
  ctx: undefined | inferRouterContext<TRouter>;
10
10
  }) => void;
11
- //# sourceMappingURL=OnErrorFunction.d.ts.map
11
+ //# sourceMappingURL=onErrorFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnErrorFunction.d.ts","sourceRoot":"../../../../src/internals","sources":["OnErrorFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEzE,oBAAY,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE;IACxE,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC9C,KAAK,IAAI,CAAC"}
1
+ {"version":3,"file":"onErrorFunction.d.ts","sourceRoot":"../../../../src/internals","sources":["onErrorFunction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEzE,oBAAY,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE;IACxE,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC9C,KAAK,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "9.23.6",
3
+ "version": "9.24.0",
4
4
  "description": "tRPC Server",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -67,5 +67,5 @@
67
67
  "yup": "^0.32.8",
68
68
  "zod": "^3.0.0"
69
69
  },
70
- "gitHead": "c4138897578949d910dd0bce9e1471a6ae73137e"
70
+ "gitHead": "6c1e5ad3c4eee7c4be6d7a220b50d64cf58eaeb8"
71
71
  }
@@ -1,7 +1,7 @@
1
1
  import http from 'http';
2
2
  import ws from 'ws';
3
3
  import { TRPCError } from '../TRPCError';
4
- import { BaseHandlerOptions } from '../internals/BaseHandlerOptions';
4
+ import { BaseHandlerOptions } from '../internals/baseHandlerOptions';
5
5
  import { callProcedure } from '../internals/callProcedure';
6
6
  import { getErrorFromUnknown } from '../internals/errors';
7
7
  import { transformTRPCResponse } from '../internals/transformTRPCResponse';
package/src/http/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { assertNotBrowser } from '../assertNotBrowser';
2
2
 
3
3
  export * from './resolveHTTPResponse';
4
- export * from './ResponseMeta';
4
+ export * from './responseMeta';
5
5
 
6
6
  assertNotBrowser();
@@ -8,7 +8,7 @@ import {
8
8
  inferRouterError,
9
9
  } from '@trpc/server';
10
10
  import { URLSearchParams } from 'url';
11
- import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
11
+ import { BaseHandlerOptions } from '../../internals/baseHandlerOptions';
12
12
  import { TRPCResponse } from '../../rpc';
13
13
 
14
14
  export type HTTPHeaders = Dict<string | string[]>;
File without changes
package/src/index.ts CHANGED
@@ -8,4 +8,4 @@ export * from './types';
8
8
  // deprecated
9
9
  export * from './deprecated/createHttpServer';
10
10
  export * from './deprecated/requestHandler';
11
- export * from './deprecated/LegacyRouter';
11
+ export * from './deprecated/legacyRouter';
@@ -1,5 +1,5 @@
1
1
  import { AnyRouter } from '../router';
2
- import { OnErrorFunction } from './OnErrorFunction';
2
+ import { OnErrorFunction } from './onErrorFunction';
3
3
 
4
4
  /**
5
5
  * Base interface for any response handler
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegacyRouter.d.ts","sourceRoot":"../../../../src/deprecated","sources":["LegacyRouter.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAE1B,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ResponseMeta.d.ts","sourceRoot":"../../../../src/http","sources":["ResponseMeta.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}