dx-server 0.0.1-pre-7 → 0.0.1-pre-9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/expressApp.d.ts +3 -2
- package/cjs/expressApp.js +30 -13
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +3 -2
- package/esm/expressApp.d.ts +3 -2
- package/esm/expressApp.js +28 -12
- package/esm/index.d.ts +1 -1
- package/esm/index.js +2 -2
- package/package.json +1 -1
package/cjs/expressApp.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { type Express } from 'express';
|
|
2
|
-
export declare const expressApp: (setup: (app: Express) => any) => (next:
|
|
1
|
+
import { type Express, type Router } from 'express';
|
|
2
|
+
export declare const expressApp: (setup: (app: Express) => any) => (next: any) => Promise<void>;
|
|
3
|
+
export declare const expressRouter: (setup: (router: Router) => any) => (next: any) => Promise<void>;
|
package/cjs/expressApp.js
CHANGED
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.expressApp = void 0;
|
|
3
|
+
exports.expressRouter = exports.expressApp = void 0;
|
|
4
4
|
const express_1 = require("express");
|
|
5
5
|
const context_js_1 = require("./context.js");
|
|
6
|
+
const jdefer_1 = require("jdefer");
|
|
6
7
|
const expressApp = (setup) => {
|
|
8
|
+
const symbol = Symbol('expressApp');
|
|
7
9
|
const app = (0, express_1.default)();
|
|
8
10
|
setup(app);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
});
|
|
11
|
+
app.use((req, _res, _next) => req[symbol].resolve());
|
|
12
|
+
app.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
13
|
+
return async (next) => {
|
|
14
|
+
const req = context_js_1.requestContext.value;
|
|
15
|
+
const defer = (0, jdefer_1.default)();
|
|
16
|
+
req[symbol] = defer;
|
|
17
|
+
app(req, context_js_1.responseContext.value);
|
|
18
|
+
await defer.promise;
|
|
19
|
+
await next();
|
|
20
|
+
};
|
|
20
21
|
};
|
|
21
22
|
exports.expressApp = expressApp;
|
|
22
|
-
|
|
23
|
+
const expressRouter = (setup) => {
|
|
24
|
+
const symbol = Symbol('expressRouter');
|
|
25
|
+
const router = express_1.default.Router();
|
|
26
|
+
setup(router);
|
|
27
|
+
router.use((req, _res, _next) => req[symbol].resolve());
|
|
28
|
+
router.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
29
|
+
return async (next) => {
|
|
30
|
+
const req = context_js_1.requestContext.value;
|
|
31
|
+
const defer = (0, jdefer_1.default)();
|
|
32
|
+
req[symbol] = defer;
|
|
33
|
+
router(req, context_js_1.responseContext.value);
|
|
34
|
+
await defer.promise;
|
|
35
|
+
await next();
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
exports.expressRouter = expressRouter;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc0FwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUEwRDtBQUMxRCw2Q0FBNEQ7QUFFNUQsbUNBQThCO0FBRXZCLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBNEIsRUFBRSxFQUFFO0lBQzFELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUVuQyxNQUFNLEdBQUcsR0FBRyxJQUFBLGlCQUFPLEdBQUUsQ0FBQTtJQUNyQixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDVixHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtJQUMzRCxPQUFPLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRTtRQUNuQixNQUFNLEdBQUcsR0FBRywyQkFBYyxDQUFDLEtBQUssQ0FBQTtRQUNoQyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFTLEdBQUUsQ0FBQTtRQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ25CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsNEJBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMvQixNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFDbkIsTUFBTSxJQUFJLEVBQUUsQ0FBQTtJQUNiLENBQUMsQ0FBQTtBQUNGLENBQUMsQ0FBQTtBQWZZLFFBQUEsVUFBVSxjQWV0QjtBQUVNLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBOEIsRUFBRSxFQUFFO0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUV0QyxNQUFNLE1BQU0sR0FBRyxpQkFBTyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQy9CLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNiLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDdkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO0lBQzlELE9BQU8sS0FBSyxFQUFDLElBQUksRUFBQyxFQUFFO1FBQ25CLE1BQU0sR0FBRyxHQUFHLDJCQUFjLENBQUMsS0FBSyxDQUFBO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVMsR0FBRSxDQUFBO1FBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDbkIsTUFBTSxDQUFDLEdBQUcsRUFBRSw0QkFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUNuQixNQUFNLElBQUksRUFBRSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0YsQ0FBQyxDQUFBO0FBZlksUUFBQSxhQUFhLGlCQWV6QiJ9
|
package/cjs/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export { expressContext, setHtml, setJson, setBuffer, setRedirect, setText } fro
|
|
|
3
3
|
export { bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
|
5
5
|
export { catchApiError, catchError, notFound, notFoundApi } from './error.js';
|
|
6
|
-
export { expressApp } from './expressApp.js';
|
|
6
|
+
export { expressApp, expressRouter } from './expressApp.js';
|
package/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.expressApp = exports.notFoundApi = exports.notFound = exports.catchError = exports.catchApiError = exports.router = exports.urlencodedBodyContext = exports.textBodyContext = exports.rawBodyContext = exports.queryContext = exports.jsonBodyContext = exports.bufferBodyContext = exports.setText = exports.setRedirect = exports.setBuffer = exports.setJson = exports.setHtml = exports.expressContext = exports.responseContext = exports.requestContext = exports.makeContext = void 0;
|
|
3
|
+
exports.expressRouter = exports.expressApp = exports.notFoundApi = exports.notFound = exports.catchError = exports.catchApiError = exports.router = exports.urlencodedBodyContext = exports.textBodyContext = exports.rawBodyContext = exports.queryContext = exports.jsonBodyContext = exports.bufferBodyContext = exports.setText = exports.setRedirect = exports.setBuffer = exports.setJson = exports.setHtml = exports.expressContext = exports.responseContext = exports.requestContext = exports.makeContext = void 0;
|
|
4
4
|
var context_js_1 = require("./context.js");
|
|
5
5
|
Object.defineProperty(exports, "makeContext", { enumerable: true, get: function () { return context_js_1.makeContext; } });
|
|
6
6
|
Object.defineProperty(exports, "requestContext", { enumerable: true, get: function () { return context_js_1.requestContext; } });
|
|
@@ -28,4 +28,5 @@ Object.defineProperty(exports, "notFound", { enumerable: true, get: function ()
|
|
|
28
28
|
Object.defineProperty(exports, "notFoundApi", { enumerable: true, get: function () { return error_js_1.notFoundApi; } });
|
|
29
29
|
var expressApp_js_1 = require("./expressApp.js");
|
|
30
30
|
Object.defineProperty(exports, "expressApp", { enumerable: true, get: function () { return expressApp_js_1.expressApp; } });
|
|
31
|
-
|
|
31
|
+
Object.defineProperty(exports, "expressRouter", { enumerable: true, get: function () { return expressApp_js_1.expressRouter; } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXlFO0FBQWpFLHlHQUFBLFdBQVcsT0FBQTtBQUFFLDRHQUFBLGNBQWMsT0FBQTtBQUFFLDZHQUFBLGVBQWUsT0FBQTtBQUNwRCwyQ0FPcUI7QUFOcEIsNEdBQUEsY0FBYyxPQUFBO0FBQ2QscUdBQUEsT0FBTyxPQUFBO0FBQ1AscUdBQUEsT0FBTyxPQUFBO0FBQ1AsdUdBQUEsU0FBUyxPQUFBO0FBQ1QseUdBQUEsV0FBVyxPQUFBO0FBQ1gscUdBQUEsT0FBTyxPQUFBO0FBRVIscUNBT2tCO0FBTmpCLDRHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLDBHQUFBLGVBQWUsT0FBQTtBQUNmLHVHQUFBLFlBQVksT0FBQTtBQUNaLHlHQUFBLGNBQWMsT0FBQTtBQUNkLDBHQUFBLGVBQWUsT0FBQTtBQUNmLGdIQUFBLHFCQUFxQixPQUFBO0FBRXRCLHVDQUFpQztBQUF6QixrR0FBQSxNQUFNLE9BQUE7QUFDZCx1Q0FBMkU7QUFBbkUseUdBQUEsYUFBYSxPQUFBO0FBQUUsc0dBQUEsVUFBVSxPQUFBO0FBQUUsb0dBQUEsUUFBUSxPQUFBO0FBQUUsdUdBQUEsV0FBVyxPQUFBO0FBQ3hELGlEQUF5RDtBQUFqRCwyR0FBQSxVQUFVLE9BQUE7QUFBRSw4R0FBQSxhQUFhLE9BQUEifQ==
|
package/esm/expressApp.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import { type Express } from 'express';
|
|
2
|
-
export declare const expressApp: (setup: (app: Express) => any) => (next:
|
|
1
|
+
import { type Express, type Router } from 'express';
|
|
2
|
+
export declare const expressApp: (setup: (app: Express) => any) => (next: any) => Promise<void>;
|
|
3
|
+
export declare const expressRouter: (setup: (router: Router) => any) => (next: any) => Promise<void>;
|
package/esm/expressApp.js
CHANGED
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import express from 'express';
|
|
2
2
|
import { requestContext, responseContext } from './context.js';
|
|
3
|
+
import makeDefer from 'jdefer';
|
|
3
4
|
export const expressApp = (setup) => {
|
|
5
|
+
const symbol = Symbol('expressApp');
|
|
4
6
|
const app = express();
|
|
5
7
|
setup(app);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
});
|
|
8
|
+
app.use((req, _res, _next) => req[symbol].resolve());
|
|
9
|
+
app.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
10
|
+
return async (next) => {
|
|
11
|
+
const req = requestContext.value;
|
|
12
|
+
const defer = makeDefer();
|
|
13
|
+
req[symbol] = defer;
|
|
14
|
+
app(req, responseContext.value);
|
|
15
|
+
await defer.promise;
|
|
16
|
+
await next();
|
|
17
|
+
};
|
|
17
18
|
};
|
|
18
|
-
|
|
19
|
+
export const expressRouter = (setup) => {
|
|
20
|
+
const symbol = Symbol('expressRouter');
|
|
21
|
+
const router = express.Router();
|
|
22
|
+
setup(router);
|
|
23
|
+
router.use((req, _res, _next) => req[symbol].resolve());
|
|
24
|
+
router.use((err, req, _res, _next) => req[symbol].reject(err));
|
|
25
|
+
return async (next) => {
|
|
26
|
+
const req = requestContext.value;
|
|
27
|
+
const defer = makeDefer();
|
|
28
|
+
req[symbol] = defer;
|
|
29
|
+
router(req, responseContext.value);
|
|
30
|
+
await defer.promise;
|
|
31
|
+
await next();
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc0FwcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHByZXNzQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBb0MsTUFBTSxTQUFTLENBQUE7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFFNUQsT0FBTyxTQUFTLE1BQU0sUUFBUSxDQUFBO0FBRTlCLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtJQUMxRCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFFbkMsTUFBTSxHQUFHLEdBQUcsT0FBTyxFQUFFLENBQUE7SUFDckIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUNwRCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDM0QsT0FBTyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDbkIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQTtRQUNoQyxNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQTtRQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ25CLEdBQUcsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQy9CLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUNuQixNQUFNLElBQUksRUFBRSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0YsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBOEIsRUFBRSxFQUFFO0lBQy9ELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUV0QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUE7SUFDL0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ2IsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUN2RCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7SUFDOUQsT0FBTyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDbkIsTUFBTSxHQUFHLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQTtRQUNoQyxNQUFNLEtBQUssR0FBRyxTQUFTLEVBQUUsQ0FBQTtRQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFBO1FBQ25CLE1BQU0sQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUNuQixNQUFNLElBQUksRUFBRSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0YsQ0FBQyxDQUFBIn0=
|
package/esm/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export { expressContext, setHtml, setJson, setBuffer, setRedirect, setText } fro
|
|
|
3
3
|
export { bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
|
5
5
|
export { catchApiError, catchError, notFound, notFoundApi } from './error.js';
|
|
6
|
-
export { expressApp } from './expressApp.js';
|
|
6
|
+
export { expressApp, expressRouter } from './expressApp.js';
|
package/esm/index.js
CHANGED
|
@@ -3,5 +3,5 @@ export { expressContext, setHtml, setJson, setBuffer, setRedirect, setText } fro
|
|
|
3
3
|
export { bufferBodyContext, jsonBodyContext, queryContext, rawBodyContext, textBodyContext, urlencodedBodyContext } from './body.js';
|
|
4
4
|
export { router } from './route.js';
|
|
5
5
|
export { catchApiError, catchError, notFound, notFoundApi } from './error.js';
|
|
6
|
-
export { expressApp } from './expressApp.js';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
export { expressApp, expressRouter } from './expressApp.js';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ3pFLE9BQU8sRUFDTixjQUFjLEVBQ2QsT0FBTyxFQUNQLE9BQU8sRUFDUCxTQUFTLEVBQ1QsV0FBVyxFQUNYLE9BQU8sRUFDUCxNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixZQUFZLEVBQ1osY0FBYyxFQUNkLGVBQWUsRUFDZixxQkFBcUIsRUFDckIsTUFBTSxXQUFXLENBQUE7QUFDbEIsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLFlBQVksQ0FBQTtBQUNqQyxPQUFPLEVBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFBO0FBQzNFLE9BQU8sRUFBQyxVQUFVLEVBQUUsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUEifQ==
|