medusajs-documents-plugin 1.1.5 → 1.1.7
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/.medusa/server/src/api/admin/documents/[id]/document/route.js +33 -10
- package/.medusa/server/src/api/admin/documents/route.js +28 -19
- package/.medusa/server/src/api/admin/documents/settings/route.js +23 -13
- package/.medusa/server/src/api/api/admin/documents/[id]/document/route.js +20 -2
- package/.medusa/server/src/api/api/documents/[id]/document/route.js +20 -2
- package/.medusa/server/src/api/documents/[id]/document/route.js +15 -7
- package/.medusa/server/src/api/r/[code]/route.js +14 -2
- package/.medusa/server/src/modules/documents/index.js +37 -6
- package/.medusa/server/src/modules/documents/service.js +124 -23
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
|
@@ -2,31 +2,51 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../../../modules/documents/service");
|
|
5
6
|
// GET /admin/documents/:id/document
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
8
9
|
const manager = req.scope.resolve("manager", { allowUnregistered: true });
|
|
9
10
|
const sharedContext = manager ? { manager } : {};
|
|
10
|
-
const
|
|
11
|
+
const cleanId = (req.params.id || "").replace(/\.pdf$/i, "");
|
|
11
12
|
try {
|
|
12
13
|
let record = null;
|
|
13
14
|
// Check by ID or display_id
|
|
14
15
|
try {
|
|
15
|
-
record = await documentService.retrieveDocumentRecord(
|
|
16
|
+
record = await documentService.retrieveDocumentRecord(cleanId, {}, sharedContext);
|
|
16
17
|
}
|
|
17
|
-
catch (e) {
|
|
18
|
+
catch (e) { }
|
|
19
|
+
if (!record) {
|
|
18
20
|
try {
|
|
19
|
-
const records = await documentService.listDocumentRecords({ display_id:
|
|
21
|
+
const records = await documentService.listDocumentRecords({ display_id: cleanId }, {}, sharedContext);
|
|
20
22
|
if (records && records.length > 0) {
|
|
21
23
|
record = records[0];
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
|
-
catch (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
catch (_) { }
|
|
27
|
+
}
|
|
28
|
+
if (!record) {
|
|
29
|
+
try {
|
|
30
|
+
const records = await documentService.listDocumentRecords({ repair_ticket_id: cleanId }, {}, sharedContext);
|
|
31
|
+
if (records && records.length > 0) {
|
|
32
|
+
record = records[0];
|
|
28
33
|
}
|
|
29
34
|
}
|
|
35
|
+
catch (_) { }
|
|
36
|
+
}
|
|
37
|
+
if (!record) {
|
|
38
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
39
|
+
if (pg) {
|
|
40
|
+
record = await pg("document_record")
|
|
41
|
+
.whereNull("deleted_at")
|
|
42
|
+
.where((builder) => {
|
|
43
|
+
builder
|
|
44
|
+
.where({ id: cleanId })
|
|
45
|
+
.orWhere({ display_id: cleanId })
|
|
46
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
47
|
+
})
|
|
48
|
+
.first();
|
|
49
|
+
}
|
|
30
50
|
}
|
|
31
51
|
if (!record) {
|
|
32
52
|
return res.status(404).send("Document not found");
|
|
@@ -39,8 +59,11 @@ async function GET(req, res) {
|
|
|
39
59
|
return res.send(pdfBuffer);
|
|
40
60
|
}
|
|
41
61
|
catch (err) {
|
|
42
|
-
|
|
62
|
+
try {
|
|
63
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error streaming PDF: ${err.message}`);
|
|
64
|
+
}
|
|
65
|
+
catch (_) { }
|
|
43
66
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
44
67
|
}
|
|
45
68
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9baWRdL2RvY3VtZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBK0RDO0FBbkVELGdFQUFvRTtBQUNwRSxzRUFBd0c7QUFFeEcsb0NBQW9DO0FBQzdCLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0MsRUFBRSxHQUFtQjtJQUMvRSxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztJQUNuRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ2pELE1BQU0sT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUU3RCxJQUFJLENBQUM7UUFDSCxJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsNEJBQTRCO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztRQUVkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQztnQkFDSCxNQUFNLE9BQU8sR0FBRyxNQUFNLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFF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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../modules/documents/service");
|
|
5
6
|
// GET /admin/documents
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
@@ -28,25 +29,33 @@ async function GET(req, res) {
|
|
|
28
29
|
}
|
|
29
30
|
catch (err) {
|
|
30
31
|
// Fallback: If MikroORM fork error occurs, query pg_connection directly
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
try {
|
|
33
|
+
const pgConnection = (0, service_1.getDatabaseConnection)(req.scope);
|
|
34
|
+
if (pgConnection) {
|
|
35
|
+
let query = pgConnection("document_record").whereNull("deleted_at");
|
|
36
|
+
if (filters.type)
|
|
37
|
+
query = query.where({ type: filters.type });
|
|
38
|
+
if (filters.source)
|
|
39
|
+
query = query.where({ source: filters.source });
|
|
40
|
+
if (filters.status)
|
|
41
|
+
query = query.where({ status: filters.status });
|
|
42
|
+
const countResult = await query.clone().count("id as count").first();
|
|
43
|
+
count = Number(countResult?.count || 0);
|
|
44
|
+
records = await query
|
|
45
|
+
.orderBy("created_at", "desc")
|
|
46
|
+
.limit(Number(take))
|
|
47
|
+
.offset(Number(skip));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
throw err;
|
|
51
|
+
}
|
|
46
52
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
53
|
+
catch (fallbackErr) {
|
|
54
|
+
try {
|
|
55
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error listing documents: ${fallbackErr.message || err.message}`);
|
|
56
|
+
}
|
|
57
|
+
catch (_) { }
|
|
58
|
+
return res.status(500).json({ message: fallbackErr.message || err.message, error: true });
|
|
50
59
|
}
|
|
51
60
|
}
|
|
52
61
|
let filteredRecords = records;
|
|
@@ -64,4 +73,4 @@ async function GET(req, res) {
|
|
|
64
73
|
skip: Number(skip),
|
|
65
74
|
});
|
|
66
75
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQTBFQztBQTlFRCwwREFBOEQ7QUFDOUQsZ0VBQWtHO0FBRWxHLHVCQUF1QjtBQUNoQixLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFFbkYsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVqRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxLQUFZLENBQUM7SUFFL0UsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQztJQUN4QyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSztRQUFFLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ2hELElBQUksTUFBTSxJQUFJLE1BQU0sS0FBSyxLQUFLO1FBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDeEQsSUFBSSxNQUFNLElBQUksTUFBTSxLQUFLLEtBQUs7UUFBRSxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUV4RCxJQUFJLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDeEIsSUFBSSxLQUFLLEdBQUcsQ0FB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
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
exports.POST = POST;
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
6
|
const documents_1 = require("../../../../modules/documents");
|
|
7
|
+
const service_1 = require("../../../../modules/documents/service");
|
|
6
8
|
// GET /admin/documents/settings
|
|
7
9
|
async function GET(req, res) {
|
|
8
10
|
try {
|
|
@@ -15,12 +17,13 @@ async function GET(req, res) {
|
|
|
15
17
|
}
|
|
16
18
|
catch (err) {
|
|
17
19
|
// Fallback: If MikroORM fork error occurs, query pg_connection directly
|
|
18
|
-
const pgConnection =
|
|
20
|
+
const pgConnection = (0, service_1.getDatabaseConnection)(req.scope);
|
|
19
21
|
if (pgConnection) {
|
|
20
|
-
let settings = await pgConnection("document_settings").first();
|
|
22
|
+
let settings = await pgConnection("document_settings").whereNull("deleted_at").first();
|
|
21
23
|
if (!settings) {
|
|
22
|
-
const
|
|
24
|
+
const createdResult = await pgConnection("document_settings")
|
|
23
25
|
.insert({
|
|
26
|
+
id: (0, utils_1.generateEntityId)(undefined, "docset"),
|
|
24
27
|
company_name: "Store",
|
|
25
28
|
email_notifications_enabled: true,
|
|
26
29
|
sms_notifications_enabled: true,
|
|
@@ -29,7 +32,7 @@ async function GET(req, res) {
|
|
|
29
32
|
updated_at: new Date(),
|
|
30
33
|
})
|
|
31
34
|
.returning("*");
|
|
32
|
-
settings =
|
|
35
|
+
settings = Array.isArray(createdResult) ? createdResult[0] : createdResult;
|
|
33
36
|
}
|
|
34
37
|
return res.json({ settings, success: true });
|
|
35
38
|
}
|
|
@@ -37,7 +40,10 @@ async function GET(req, res) {
|
|
|
37
40
|
}
|
|
38
41
|
}
|
|
39
42
|
catch (err) {
|
|
40
|
-
|
|
43
|
+
try {
|
|
44
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error fetching settings: ${err.message}`);
|
|
45
|
+
}
|
|
46
|
+
catch (_) { }
|
|
41
47
|
return res.status(500).json({ message: err.message, error: true });
|
|
42
48
|
}
|
|
43
49
|
}
|
|
@@ -67,28 +73,29 @@ async function POST(req, res) {
|
|
|
67
73
|
}
|
|
68
74
|
catch (err) {
|
|
69
75
|
// Fallback: If MikroORM fork error occurs, update via pg_connection directly
|
|
70
|
-
const pgConnection =
|
|
76
|
+
const pgConnection = (0, service_1.getDatabaseConnection)(req.scope);
|
|
71
77
|
if (pgConnection) {
|
|
72
|
-
const existing = await pgConnection("document_settings").first();
|
|
78
|
+
const existing = await pgConnection("document_settings").whereNull("deleted_at").first();
|
|
73
79
|
if (existing) {
|
|
74
|
-
const
|
|
80
|
+
const updatedResult = await pgConnection("document_settings")
|
|
75
81
|
.where({ id: existing.id })
|
|
76
82
|
.update({
|
|
77
83
|
...cleanData,
|
|
78
84
|
updated_at: new Date(),
|
|
79
85
|
})
|
|
80
86
|
.returning("*");
|
|
81
|
-
settings =
|
|
87
|
+
settings = Array.isArray(updatedResult) ? updatedResult[0] : updatedResult;
|
|
82
88
|
}
|
|
83
89
|
else {
|
|
84
|
-
const
|
|
90
|
+
const createdResult = await pgConnection("document_settings")
|
|
85
91
|
.insert({
|
|
92
|
+
id: (0, utils_1.generateEntityId)(undefined, "docset"),
|
|
86
93
|
...cleanData,
|
|
87
94
|
created_at: new Date(),
|
|
88
95
|
updated_at: new Date(),
|
|
89
96
|
})
|
|
90
97
|
.returning("*");
|
|
91
|
-
settings =
|
|
98
|
+
settings = Array.isArray(createdResult) ? createdResult[0] : createdResult;
|
|
92
99
|
}
|
|
93
100
|
}
|
|
94
101
|
else {
|
|
@@ -98,8 +105,11 @@ async function POST(req, res) {
|
|
|
98
105
|
return res.json({ settings, success: true });
|
|
99
106
|
}
|
|
100
107
|
catch (err) {
|
|
101
|
-
|
|
108
|
+
try {
|
|
109
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error updating settings: ${err.message}`);
|
|
110
|
+
}
|
|
111
|
+
catch (_) { }
|
|
102
112
|
return res.status(500).json({ message: err.message, error: true });
|
|
103
113
|
}
|
|
104
114
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2RvY3VtZW50cy9zZXR0aW5ncy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLGtCQXNDQztBQUdELG9CQStEQztBQTdHRCxxREFBNkQ7QUFDN0QsNkRBQWlFO0FBQ2pFLG1FQUFxRztBQUVyRyxnQ0FBZ0M7QUFDekIsS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQy9ELElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDO1lBQ0gsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7WUFDbkYsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0UsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLHdFQUF3RTtZQUN4RSxNQUFNLFlBQVksR0FBUSxJQUFBLCtCQUFxQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRCxJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNqQixJQUFJLFFBQVEsR0FBRyxNQUFNLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMs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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../../../../modules/documents/service");
|
|
5
6
|
// GET /api/admin/documents/:id/document (Compatibility endpoint for handed-over URLs)
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
@@ -24,6 +25,20 @@ async function GET(req, res) {
|
|
|
24
25
|
record = records[0];
|
|
25
26
|
}
|
|
26
27
|
}
|
|
28
|
+
if (!record) {
|
|
29
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
30
|
+
if (pg) {
|
|
31
|
+
record = await pg("document_record")
|
|
32
|
+
.whereNull("deleted_at")
|
|
33
|
+
.where((builder) => {
|
|
34
|
+
builder
|
|
35
|
+
.where({ id: cleanId })
|
|
36
|
+
.orWhere({ display_id: cleanId })
|
|
37
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
38
|
+
})
|
|
39
|
+
.first();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
27
42
|
if (!record) {
|
|
28
43
|
try {
|
|
29
44
|
const repairModule = req.scope.resolve("repair", { allowUnregistered: true });
|
|
@@ -54,8 +69,11 @@ async function GET(req, res) {
|
|
|
54
69
|
return res.send(pdfBuffer);
|
|
55
70
|
}
|
|
56
71
|
catch (err) {
|
|
57
|
-
|
|
72
|
+
try {
|
|
73
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error streaming PDF: ${err.message}`);
|
|
74
|
+
}
|
|
75
|
+
catch (_) { }
|
|
58
76
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
59
77
|
}
|
|
60
78
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FwaS9hZG1pbi9kb2N1bWVudHMvW2lkXS9kb2N1bWVudC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQTJFQztBQS9FRCxtRUFBdUU7QUFDdkUseUVBQTJHO0FBRTNHLHNGQUFzRjtBQUMvRSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtDLEVBQUUsR0FBbUI7SUFDL0UsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQztRQUNILElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sRUFBRSxHQUFRLElBQUEsK0JBQXFCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pELElBQUksRUFBRSxFQUFFLENBQUM7Z0JBQ1AsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLGlCQUFpQixDQUFDO3FCQUNqQyxTQUFTLENBQUMsWUFBWSxDQUFDO3FCQUN2QixLQUFLLENBQUMsQ0FBQyxPQUFZLEVBQUUsRUFBRTtvQkFDdEIsT0FBTzt5QkFDSixLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUM7eUJBQ3RCLE9BQU8sQ0FBQyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQzt5QkFDaEMsT0FBTyxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztnQkFDNUMsQ0FBQyxDQUFDO3FCQUNELEtBQUssRUFBRSxDQUFDO1lBQ2IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxZQUFZLEdBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbkYsSUFBSSxZQUFZLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ2hHLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDckMsT0FBTyxHQUFHLE1BQU0sWUFBWSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNsRixDQUFDO29CQUNELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQ2xDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDMUIsTUFBTSxTQUFTLEdBQUksTUFBTSxDQUFDLFFBQWdCLEVBQUUsV0FBVyxDQUFDO3dCQUN4RCxJQUFJLFNBQVMsRUFBRSxDQUFDOzRCQUNkLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3JGLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE1BQU0sU0FBUyxHQUFHLE1BQU0sZUFBZSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5RSxHQUFHLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2pELEdBQUcsQ0FBQyxTQUFTLENBQUMscUJBQXFCLEVBQUUscUJBQXFCLE1BQU0sQ0FBQyxVQUFVLE9BQU8sQ0FBQyxDQUFDO1FBQ3BGLEdBQUcsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFELEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLHNCQUFzQixDQUFDLENBQUM7UUFDdkQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQztZQUNILEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsd0NBQXdDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztRQUNkLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzdFLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../../../modules/documents/service");
|
|
5
6
|
// GET /api/documents/:id/document (Public PDF download & view for recipients)
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
@@ -24,6 +25,20 @@ async function GET(req, res) {
|
|
|
24
25
|
record = records[0];
|
|
25
26
|
}
|
|
26
27
|
}
|
|
28
|
+
if (!record) {
|
|
29
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
30
|
+
if (pg) {
|
|
31
|
+
record = await pg("document_record")
|
|
32
|
+
.whereNull("deleted_at")
|
|
33
|
+
.where((builder) => {
|
|
34
|
+
builder
|
|
35
|
+
.where({ id: cleanId })
|
|
36
|
+
.orWhere({ display_id: cleanId })
|
|
37
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
38
|
+
})
|
|
39
|
+
.first();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
27
42
|
if (!record) {
|
|
28
43
|
try {
|
|
29
44
|
const repairModule = req.scope.resolve("repair", { allowUnregistered: true });
|
|
@@ -54,8 +69,11 @@ async function GET(req, res) {
|
|
|
54
69
|
return res.send(pdfBuffer);
|
|
55
70
|
}
|
|
56
71
|
catch (err) {
|
|
57
|
-
|
|
72
|
+
try {
|
|
73
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-API] Error streaming PDF: ${err.message}`);
|
|
74
|
+
}
|
|
75
|
+
catch (_) { }
|
|
58
76
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
59
77
|
}
|
|
60
78
|
}
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FwaS9kb2N1bWVudHMvW2lkXS9kb2N1bWVudC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQTJFQztBQS9FRCxnRUFBb0U7QUFDcEUsc0VBQXdHO0FBRXhHLDhFQUE4RTtBQUN2RSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtDLEVBQUUsR0FBbUI7SUFDL0UsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixDQUFDLENBQUM7SUFDbkYsTUFBTSxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBRTdELElBQUksQ0FBQztRQUNILElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxlQUFlLENBQUMsbUJBQW1CLENBQUMsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbkcsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0s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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../../modules/documents/service");
|
|
5
6
|
// GET /documents/:id/document (Public PDF download & view for recipients)
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const documentService = req.scope.resolve(documents_1.DOCUMENTS_MODULE);
|
|
@@ -28,12 +29,16 @@ async function GET(req, res) {
|
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
if (!record) {
|
|
31
|
-
const pg =
|
|
32
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
32
33
|
if (pg) {
|
|
33
|
-
record = await pg("
|
|
34
|
-
.
|
|
35
|
-
.
|
|
36
|
-
|
|
34
|
+
record = await pg("document_record")
|
|
35
|
+
.whereNull("deleted_at")
|
|
36
|
+
.where((builder) => {
|
|
37
|
+
builder
|
|
38
|
+
.where({ id: cleanId })
|
|
39
|
+
.orWhere({ display_id: cleanId })
|
|
40
|
+
.orWhere({ repair_ticket_id: cleanId });
|
|
41
|
+
})
|
|
37
42
|
.first();
|
|
38
43
|
}
|
|
39
44
|
}
|
|
@@ -68,8 +73,11 @@ async function GET(req, res) {
|
|
|
68
73
|
return res.send(pdfBuffer);
|
|
69
74
|
}
|
|
70
75
|
catch (err) {
|
|
71
|
-
|
|
76
|
+
try {
|
|
77
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Documents-Public] Error streaming PDF: ${err.message}`);
|
|
78
|
+
}
|
|
79
|
+
catch (_) { }
|
|
72
80
|
return res.status(500).send(`Failed to generate document: ${err.message}`);
|
|
73
81
|
}
|
|
74
82
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2RvY3VtZW50cy9baWRdL2RvY3VtZW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBZ0ZDO0FBcEZELDZEQUFpRTtBQUNqRSxtRUFBcUc7QUFFckcsMEVBQTBFO0FBQ25FLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0MsRUFBRSxHQUFtQjtJQUMvRSxNQUFNLGVBQWUsR0FBMEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsNEJBQWdCLENBQUMsQ0FBQztJQUNuRixNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFN0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRSxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVqRCxJQUFJLENBQUM7UUFDSCxJQUFJLE1BQU0sR0FBUSxJQUFJLENBQUM7UUFDdkIsNkVBQTZFO1FBQzdFLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztRQUVkLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sT0FBTyxHQUFHLE1BQU0sZUFBZSxDQUFDLG1CQUFtQixDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFF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
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GET = GET;
|
|
4
4
|
const documents_1 = require("../../../modules/documents");
|
|
5
|
+
const service_1 = require("../../../modules/documents/service");
|
|
5
6
|
// GET /r/:code (Universal public shortlink redirect)
|
|
6
7
|
async function GET(req, res) {
|
|
7
8
|
const code = req.params.code;
|
|
@@ -23,6 +24,14 @@ async function GET(req, res) {
|
|
|
23
24
|
}
|
|
24
25
|
catch (e) { }
|
|
25
26
|
}
|
|
27
|
+
if (!links || links.length === 0) {
|
|
28
|
+
const pg = (0, service_1.getDatabaseConnection)(req.scope);
|
|
29
|
+
if (pg) {
|
|
30
|
+
const row = await pg("document_link").whereNull("deleted_at").where({ shortcode: code }).first();
|
|
31
|
+
if (row)
|
|
32
|
+
links = [row];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
26
35
|
if (links && links.length > 0) {
|
|
27
36
|
let targetUrl = links[0].url;
|
|
28
37
|
const host = req.get("host") || "localhost:9000";
|
|
@@ -42,8 +51,11 @@ async function GET(req, res) {
|
|
|
42
51
|
return res.status(404).send("Link not found or expired.");
|
|
43
52
|
}
|
|
44
53
|
catch (err) {
|
|
45
|
-
|
|
54
|
+
try {
|
|
55
|
+
req.scope.resolve("logger", { allowUnregistered: true })?.error?.(`[Shortlink-Public] Error resolving /r/${code}: ${err.message}`);
|
|
56
|
+
}
|
|
57
|
+
catch (_) { }
|
|
46
58
|
return res.status(500).send("Error resolving link");
|
|
47
59
|
}
|
|
48
60
|
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3IvW2NvZGVdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esa0JBb0RDO0FBeERELDBEQUE4RDtBQUM5RCxnRUFBa0c7QUFFbEcscURBQXFEO0FBQzlDLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBb0MsRUFBRSxHQUFtQjtJQUNqRixNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUM3QixJQUFJLENBQUM7UUFDSCxJQUFJLEtBQUssR0FBVSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxlQUFlLEdBQTBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDRCQUFnQixFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNoSCxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixLQUFLLEdBQUcsTUFBTSxlQUFlLENBQUMsaUJBQWlCLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN2RSxDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBRWQsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQztnQkFDSCxNQUFNLFlBQVksR0FBUSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRixJQUFJLFlBQVksRUFBRSxDQUFDO29CQUNqQixLQUFLLEdBQUcsTUFBTSxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2xFLENBQUM7WUFDSCxDQUFDO1lB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
|
|
@@ -1,13 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.DOCUMENTS_MODULE = void 0;
|
|
7
|
-
const service_1 =
|
|
36
|
+
exports.getDatabaseConnection = exports.DOCUMENTS_MODULE = void 0;
|
|
37
|
+
const service_1 = __importStar(require("./service"));
|
|
38
|
+
Object.defineProperty(exports, "getDatabaseConnection", { enumerable: true, get: function () { return service_1.getDatabaseConnection; } });
|
|
8
39
|
const utils_1 = require("@medusajs/framework/utils");
|
|
9
40
|
exports.DOCUMENTS_MODULE = "documents";
|
|
10
41
|
exports.default = (0, utils_1.Module)(exports.DOCUMENTS_MODULE, {
|
|
11
42
|
service: service_1.default,
|
|
12
43
|
});
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9kb2N1bWVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscURBQXlFO0FBSWhFLHNHQUp1QiwrQkFBcUIsT0FJdkI7QUFIOUIscURBQW1EO0FBRXRDLFFBQUEsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO0FBRzVDLGtCQUFlLElBQUEsY0FBTSxFQUFDLHdCQUFnQixFQUFFO0lBQ3RDLE9BQU8sRUFBRSxpQkFBcUI7Q0FDL0IsQ0FBQyxDQUFDIn0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DocumentModuleService = void 0;
|
|
4
|
+
exports.getDatabaseConnection = getDatabaseConnection;
|
|
4
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
6
|
const document_settings_1 = require("./models/document-settings");
|
|
6
7
|
const document_record_1 = require("./models/document-record");
|
|
@@ -9,14 +10,108 @@ const zoho_books_1 = require("../../services/zoho-books");
|
|
|
9
10
|
const pdfkit_generator_1 = require("../../services/pdfkit-generator");
|
|
10
11
|
const pdf_post_processor_1 = require("../../services/pdf-post-processor");
|
|
11
12
|
const notification_sender_1 = require("../../services/notification-sender");
|
|
13
|
+
/**
|
|
14
|
+
* Safely resolves the Knex database connection from a Medusa container or scope.
|
|
15
|
+
* Tries ContainerRegistrationKeys.PG_CONNECTION ("__pg_connection__") and fallback keys.
|
|
16
|
+
* Never throws AwilixResolutionError.
|
|
17
|
+
*/
|
|
18
|
+
function getDatabaseConnection(container) {
|
|
19
|
+
if (!container) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
// If passed an object containing __container__ (like a service instance), extract it
|
|
23
|
+
try {
|
|
24
|
+
if (container.__container__) {
|
|
25
|
+
const nested = getDatabaseConnection(container.__container__);
|
|
26
|
+
if (nested)
|
|
27
|
+
return nested;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch (_) { }
|
|
31
|
+
// If passed an object containing scope (like MedusaRequest), extract it
|
|
32
|
+
try {
|
|
33
|
+
if (container.scope) {
|
|
34
|
+
const nested = getDatabaseConnection(container.scope);
|
|
35
|
+
if (nested)
|
|
36
|
+
return nested;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (_) { }
|
|
40
|
+
// 1. Try resolve method on container / req.scope (guarded by try-catch because cradle proxies throw on unknown property access)
|
|
41
|
+
try {
|
|
42
|
+
if (typeof container.resolve === "function") {
|
|
43
|
+
try {
|
|
44
|
+
const conn = container.resolve(utils_1.ContainerRegistrationKeys.PG_CONNECTION, { allowUnregistered: true });
|
|
45
|
+
if (conn)
|
|
46
|
+
return conn;
|
|
47
|
+
}
|
|
48
|
+
catch (_) { }
|
|
49
|
+
try {
|
|
50
|
+
const conn = container.resolve("__pg_connection__", { allowUnregistered: true });
|
|
51
|
+
if (conn)
|
|
52
|
+
return conn;
|
|
53
|
+
}
|
|
54
|
+
catch (_) { }
|
|
55
|
+
try {
|
|
56
|
+
const conn = container.resolve("pg_connection", { allowUnregistered: true });
|
|
57
|
+
if (conn)
|
|
58
|
+
return conn;
|
|
59
|
+
}
|
|
60
|
+
catch (_) { }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (_) { }
|
|
64
|
+
// 2. Try cradle proxy if available (each property access guarded)
|
|
65
|
+
try {
|
|
66
|
+
const cradle = container.cradle;
|
|
67
|
+
if (cradle) {
|
|
68
|
+
try {
|
|
69
|
+
if (cradle[utils_1.ContainerRegistrationKeys.PG_CONNECTION]) {
|
|
70
|
+
return cradle[utils_1.ContainerRegistrationKeys.PG_CONNECTION];
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (_) { }
|
|
74
|
+
try {
|
|
75
|
+
if (cradle["__pg_connection__"]) {
|
|
76
|
+
return cradle["__pg_connection__"];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (_) { }
|
|
80
|
+
try {
|
|
81
|
+
if (cradle["pg_connection"]) {
|
|
82
|
+
return cradle["pg_connection"];
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (_) { }
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (_) { }
|
|
89
|
+
// 3. Try direct property index on container (each property access guarded)
|
|
90
|
+
try {
|
|
91
|
+
if (container[utils_1.ContainerRegistrationKeys.PG_CONNECTION]) {
|
|
92
|
+
return container[utils_1.ContainerRegistrationKeys.PG_CONNECTION];
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (_) { }
|
|
96
|
+
try {
|
|
97
|
+
if (container["__pg_connection__"]) {
|
|
98
|
+
return container["__pg_connection__"];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (_) { }
|
|
102
|
+
try {
|
|
103
|
+
if (container["pg_connection"]) {
|
|
104
|
+
return container["pg_connection"];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (_) { }
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
12
110
|
class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
13
111
|
DocumentSettings: document_settings_1.DocumentSettings,
|
|
14
112
|
DocumentRecord: document_record_1.DocumentRecord,
|
|
15
113
|
DocumentLink: document_link_1.DocumentLink,
|
|
16
114
|
}) {
|
|
17
|
-
/**
|
|
18
|
-
* Retrieves or initializes default plugin settings
|
|
19
|
-
*/
|
|
20
115
|
/**
|
|
21
116
|
* Retrieves or initializes default plugin settings
|
|
22
117
|
*/
|
|
@@ -70,13 +165,13 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
70
165
|
}, sharedContext);
|
|
71
166
|
}
|
|
72
167
|
catch (err) {
|
|
73
|
-
const conn = container
|
|
74
|
-
this.__container__?.["pg_connection"];
|
|
168
|
+
const conn = getDatabaseConnection(container) || getDatabaseConnection(this.__container__);
|
|
75
169
|
if (conn) {
|
|
76
|
-
let row = await conn("document_settings").first();
|
|
170
|
+
let row = await conn("document_settings").whereNull("deleted_at").first();
|
|
77
171
|
if (row)
|
|
78
172
|
return row;
|
|
79
|
-
const
|
|
173
|
+
const createdResult = await conn("document_settings").insert({
|
|
174
|
+
id: (0, utils_1.generateEntityId)(undefined, "docset"),
|
|
80
175
|
company_name: "Store",
|
|
81
176
|
email_notifications_enabled: true,
|
|
82
177
|
sms_notifications_enabled: true,
|
|
@@ -100,7 +195,7 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
100
195
|
created_at: new Date(),
|
|
101
196
|
updated_at: new Date(),
|
|
102
197
|
}).returning("*");
|
|
103
|
-
return
|
|
198
|
+
return Array.isArray(createdResult) ? createdResult[0] : createdResult;
|
|
104
199
|
}
|
|
105
200
|
throw err;
|
|
106
201
|
}
|
|
@@ -133,7 +228,9 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
133
228
|
* Handles Zoho Books routing, PDFKit fallback, QR code embedding, shortlinks, and auto-notification.
|
|
134
229
|
*/
|
|
135
230
|
async generateDocument(input, container) {
|
|
136
|
-
const
|
|
231
|
+
const manager = container?.resolve?.("manager", { allowUnregistered: true });
|
|
232
|
+
const sharedContext = manager ? { manager } : {};
|
|
233
|
+
const settings = await this.getSettings(sharedContext, container);
|
|
137
234
|
const storeUrl = (settings.storefront_url || process.env.STORE_URL || "http://localhost:3000").replace(/\/$/, "");
|
|
138
235
|
// 0. Auto-hydrate repair ticket data if needed
|
|
139
236
|
if (input.repair_ticket_id && (!input.customer || !input.items || input.items.length === 0)) {
|
|
@@ -468,8 +565,6 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
468
565
|
}
|
|
469
566
|
// Save Record to Database
|
|
470
567
|
const initialPdfUrl = `${storeUrl}/api/admin/documents/temp/document`;
|
|
471
|
-
const manager = container?.resolve?.("manager", { allowUnregistered: true });
|
|
472
|
-
const sharedContext = manager ? { manager } : {};
|
|
473
568
|
let record = null;
|
|
474
569
|
try {
|
|
475
570
|
record = await this.createDocumentRecords({
|
|
@@ -502,10 +597,10 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
502
597
|
}, sharedContext);
|
|
503
598
|
}
|
|
504
599
|
catch (err) {
|
|
505
|
-
const conn = container
|
|
506
|
-
this.__container__?.["pg_connection"];
|
|
600
|
+
const conn = getDatabaseConnection(container) || getDatabaseConnection(this.__container__);
|
|
507
601
|
if (conn) {
|
|
508
|
-
const [inserted] = await conn("
|
|
602
|
+
const [inserted] = await conn("document_record").insert({
|
|
603
|
+
id: (0, utils_1.generateEntityId)(undefined, "doc"),
|
|
509
604
|
display_id: displayId,
|
|
510
605
|
title: input.title || (input.type === "invoice" ? "Tax Invoice" :
|
|
511
606
|
input.type === "receipt" ? "Payment Receipt" :
|
|
@@ -553,10 +648,9 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
553
648
|
}, sharedContext);
|
|
554
649
|
}
|
|
555
650
|
catch (err) {
|
|
556
|
-
const conn = container
|
|
557
|
-
this.__container__?.["pg_connection"];
|
|
651
|
+
const conn = getDatabaseConnection(container) || getDatabaseConnection(this.__container__);
|
|
558
652
|
if (conn) {
|
|
559
|
-
await conn("
|
|
653
|
+
await conn("document_record").where({ id: record.id }).update({
|
|
560
654
|
pdf_url: realPdfUrl,
|
|
561
655
|
short_pdf_link: shortPdfLink,
|
|
562
656
|
updated_at: new Date(),
|
|
@@ -604,10 +698,14 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
604
698
|
record = await this.retrieveDocumentRecord(recordId, {}, sharedContext);
|
|
605
699
|
}
|
|
606
700
|
catch (e) {
|
|
607
|
-
const conn = container
|
|
608
|
-
this.__container__?.["pg_connection"];
|
|
701
|
+
const conn = getDatabaseConnection(container) || getDatabaseConnection(this.__container__);
|
|
609
702
|
if (conn) {
|
|
610
|
-
record = await conn("
|
|
703
|
+
record = await conn("document_record")
|
|
704
|
+
.whereNull("deleted_at")
|
|
705
|
+
.where((builder) => {
|
|
706
|
+
builder.where({ id: recordId }).orWhere({ display_id: recordId });
|
|
707
|
+
})
|
|
708
|
+
.first();
|
|
611
709
|
}
|
|
612
710
|
if (!record)
|
|
613
711
|
throw e;
|
|
@@ -619,7 +717,7 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
619
717
|
settings.zoho_books_enabled &&
|
|
620
718
|
settings.zoho_client_id) {
|
|
621
719
|
try {
|
|
622
|
-
const logger = container?.resolve("logger");
|
|
720
|
+
const logger = container?.resolve?.("logger", { allowUnregistered: true });
|
|
623
721
|
const zoho = new zoho_books_1.ZohoBooksService({
|
|
624
722
|
client_id: settings.zoho_client_id,
|
|
625
723
|
client_secret: settings.zoho_client_secret,
|
|
@@ -641,7 +739,10 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
641
739
|
});
|
|
642
740
|
}
|
|
643
741
|
catch (err) {
|
|
644
|
-
|
|
742
|
+
try {
|
|
743
|
+
container?.resolve?.("logger", { allowUnregistered: true })?.warn?.(`[Documents-Module] Failed to fetch PDF from Zoho (${err.message}). Regenerating via PDFKit.`);
|
|
744
|
+
}
|
|
745
|
+
catch (_) { }
|
|
645
746
|
}
|
|
646
747
|
}
|
|
647
748
|
// PDFKit Fallback Generation
|
|
@@ -695,4 +796,4 @@ class DocumentModuleService extends (0, utils_1.MedusaService)({
|
|
|
695
796
|
}
|
|
696
797
|
exports.DocumentModuleService = DocumentModuleService;
|
|
697
798
|
exports.default = DocumentModuleService;
|
|
698
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUFxRjtBQUNyRixrRUFBOEQ7QUFDOUQsOERBQTBEO0FBQzFELDBEQUFzRDtBQUN0RCwwREFBNkQ7QUFDN0Qsc0VBQTBGO0FBQzFGLDBFQUFtRTtBQUNuRSw0RUFBd0U7QUFpQ3hFLE1BQWEscUJBQXNCLFNBQVEsSUFBQSxxQkFBYSxFQUFDO0lBQ3ZELGdCQUFnQixFQUFoQixvQ0FBZ0I7SUFDaEIsY0FBYyxFQUFkLGdDQUFjO0lBQ2QsWUFBWSxFQUFaLDRCQUFZO0NBQ2IsQ0FBQztJQUNBOztPQUVHO0lBQ0g7O09BRUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLGFBQW1CLEVBQUUsU0FBZTtRQUNwRCxJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUMxRSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE9BQU8sUUFBUSxDQUFDO1lBQ2xCLENBQUM7WUFDRCxPQUFPLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDO2dCQUN2QyxZQUFZLEVBQUUsT0FBTztnQkFDckIsMkJBQTJCLEVBQUUsSUFBSTtnQkFDakMseUJBQXlCLEVBQUUsSUFBSTtnQkFDL0IsOEJBQThCLEVBQUUsSUFBSTtnQkFDcEMsMEJBQTBCLEVBQUUsSUFBSTtnQkFDaEMsNkJBQTZCLEVBQUUsSUFBSTtnQkFDbkMsOEJBQThCLEVBQUUsSUFBSTtnQkFDcEMsK0JBQStCLEVBQUUsSUFBSTtnQkFDckMsNEJBQTRCLEVBQUUsSUFBSTtnQkFDbEMsbUNBQW1DLEVBQUUsSUFBSTtnQkFDekMsK0JBQStCLEVBQUUsSUFBSTtnQkFDckMsNEJBQTRCLEVBQUUsSUFBSTtnQkFDbEMsOEJBQThCLEVBQUUsSUFBSTtnQkFDcEMsNkJBQTZCLEVBQUUsSUFBSTtnQkFDbkMsZ0JBQWdCLEVBQUUsUUFBUTtnQkFDMUIscUJBQXFCLEVBQUUsUUFBUTtnQkFDL0IsZ0JBQWdCLEVBQUUsUUFBUTtnQkFDMUIsaUJBQWlCLEVBQUUsUUFBUTtnQkFDM0IsaUJBQWlCLEVBQUUsUUFBUTtnQkFDM0IsbUJBQW1CLEVBQUUsUUFBUTtnQkFDN0Isc0JBQXNCLEVBQUUsSUFBSTtnQkFDNUIsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsaUJBQWlCLEVBQUUsSUFBSTtnQkFDdkIsc0JBQXNCLEVBQUUsSUFBSTtnQkFDNUIsMEJBQTBCLEVBQUUsSUFBSTtnQkFDaEMsMkJBQTJCLEVBQUUsSUFBSTtnQkFDakMseUJBQXlCLEVBQUUsSUFBSTtnQkFDL0IsOEJBQThCLEVBQUUsSUFBSTtnQkFDcEMsMkJBQTJCLEVBQUUsSUFBSTtnQkFDakMsNEJBQTRCLEVBQUUsSUFBSTtnQkFDbEMsMEJBQTBCLEVBQUUsSUFBSTtnQkFDaEMsK0JBQStCLEVBQUUsSUFBSTtnQkFDckMsK0JBQStCLEVBQUUsSUFBSTtnQkFDckMsZ0NBQWdDLEVBQUUsSUFBSTtnQkFDdEMsOEJBQThCLEVBQUUsSUFBSTtnQkFDcEMsbUNBQW1DLEVBQUUsSUFBSTtnQkFDekMsNEJBQTRCLEVBQUUsSUFBSTtnQkFDbEMsNkJBQTZCLEVBQUUsSUFBSTtnQkFDbkMsMkJBQTJCLEVBQUUsSUFBSTtnQkFDakMsZ0NBQWdDLEVBQUUsSUFBSTthQUN2QyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDakUsSUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzVELElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxHQUFHO29CQUFFLE9BQU8sR0FBRyxDQUFDO2dCQUNwQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3ZELFlBQVksRUFBRSxPQUFPO29CQUNyQiwyQkFBMkIsRUFBRSxJQUFJO29CQUNqQyx5QkFBeUIsRUFBRSxJQUFJO29CQUMvQiw4QkFBOEIsRUFBRSxJQUFJO29CQUNwQywwQkFBMEIsRUFBRSxJQUFJO29CQUNoQyw2QkFBNkIsRUFBRSxJQUFJO29CQUNuQyw4QkFBOEIsRUFBRSxJQUFJO29CQUNwQywrQkFBK0IsRUFBRSxJQUFJO29CQUNyQyw0QkFBNEIsRUFBRSxJQUFJO29CQUNsQyxtQ0FBbUMsRUFBRSxJQUFJO29CQUN6QywrQkFBK0IsRUFBRSxJQUFJO29CQUNyQyw0QkFBNEIsRUFBRSxJQUFJO29CQUNsQyw4QkFBOEIsRUFBRSxJQUFJO29CQUNwQyw2QkFBNkIsRUFBRSxJQUFJO29CQUNuQyxnQkFBZ0IsRUFBRSxRQUFRO29CQUMxQixxQkFBcUIsRUFBRSxRQUFRO29CQUMvQixnQkFBZ0IsRUFBRSxRQUFRO29CQUMxQixpQkFBaUIsRUFBRSxRQUFRO29CQUMzQixpQkFBaUIsRUFBRSxRQUFRO29CQUMzQixtQkFBbUIsRUFBRSxRQUFRO29CQUM3QixVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtpQkFDdkIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQztZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7UUFDdkQsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUNyQixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkQsSUFBSSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksdUJBQXVCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRTVGLElBQUksUUFBUSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE9BQU8sR0FBRyxJQUFJLE1BQU0sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzlDLENBQUM7WUFFRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDN0QsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUM7Z0JBQzdCLFNBQVM7Z0JBQ1QsR0FBRzthQUNKLENBQUMsQ0FBQztZQUVILE9BQU8sR0FBRyxJQUFJLE1BQU0sU0FBUyxFQUFFLENBQUM7UUFDbEMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEtBQTRCLEVBQUUsU0FBZTtRQUlsRSxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLElBQUksdUJBQXVCLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxILCtDQUErQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNWLE1BQU0sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO3dCQUMxQyxNQUFNLEVBQUUsZUFBZTt3QkFDdkIsTUFBTSxFQUFFOzRCQUNOLEdBQUc7NEJBQ0gsVUFBVTs0QkFDVixvQkFBb0I7NEJBQ3BCLDJCQUEyQjs0QkFDM0IsNEJBQTRCO3lCQUM3Qjt3QkFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFO3FCQUN4QyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDbEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMxQixLQUFLLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7d0JBQ2xJLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQzt3QkFDakcsSUFBSSxZQUFZLEdBQUcsaUJBQWlCLENBQUM7d0JBQ3JDLElBQUksYUFBYSxHQUF1QixTQUFTLENBQUM7d0JBQ2xELElBQUksYUFBYSxHQUF1QixTQUFTLENBQUM7d0JBQ2xELElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDOzRCQUN2QixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7NEJBQzNFLElBQUksT0FBTyxFQUFFLENBQUM7Z0NBQ1osTUFBTSxDQUFDLEdBQUcsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dDQUM3RCxJQUFJLENBQUMsRUFBRSxDQUFDO29DQUNOLFlBQVksR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUM7b0NBQ3RHLGFBQWEsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQztvQ0FDckMsYUFBYSxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDO2dDQUN2QyxDQUFDOzRCQUNILENBQUM7d0JBQ0gsQ0FBQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDOzRCQUNwQixLQUFLLENBQUMsUUFBUSxHQUFHO2dDQUNmLElBQUksRUFBRSxZQUFZO2dDQUNsQixLQUFLLEVBQUUsYUFBYTtnQ0FDcEIsS0FBSyxFQUFFLGFBQWE7NkJBQ3JCLENBQUM7d0JBQ0osQ0FBQzt3QkFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzs0QkFDN0MsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7NEJBQ2pCLHNGQUFzRjs0QkFDdEYsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztnQ0FDNUIsS0FBSyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQ0FDekMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUssRUFBVSxDQUFDLEtBQUssRUFBRSxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7b0NBQ3BFLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQztvQ0FDbkYsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLO3dDQUNqQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEtBQUssaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0NBQzVGLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxJQUFJLGdCQUFnQixDQUFDO29DQUN0RCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQzt3Q0FDZixLQUFLLEVBQUUsU0FBUzt3Q0FDaEIsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3Q0FDOUYsUUFBUSxFQUFFLEdBQUc7d0NBQ2IsVUFBVSxFQUFFLFNBQVM7d0NBQ3JCLEtBQUssRUFBRSxHQUFHLEdBQUcsU0FBUztxQ0FDdkIsQ0FBQyxDQUFDO2dDQUNMLENBQUM7NEJBQ0gsQ0FBQzs0QkFDRCxtQ0FBbUM7NEJBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztnQ0FDOUIsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO29DQUM1QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztvQ0FDdkMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQ0FDN0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7d0NBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxrQkFBa0I7d0NBQ3BELFdBQVcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTt3Q0FDL0MsUUFBUSxFQUFFLEdBQUc7d0NBQ2IsVUFBVSxFQUFFLFNBQVM7d0NBQ3JCLEtBQUssRUFBRSxHQUFHLEdBQUcsU0FBUztxQ0FDdkIsQ0FBQyxDQUFDO2dDQUNMLENBQUM7NEJBQ0gsQ0FBQzs0QkFDRCxtQkFBbUI7NEJBQ25CLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dDQUN4QixLQUFLLE1BQU0sRUFBRSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQ0FDckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7b0NBQ3JDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUM7b0NBQ3pELEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO3dDQUNmLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxLQUFLLElBQUksdUJBQXVCO3dDQUNyRCxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0NBQy9ELFFBQVEsRUFBRSxHQUFHO3dDQUNiLFVBQVUsRUFBRSxTQUFTO3dDQUNyQixLQUFLLEVBQUUsR0FBRyxHQUFHLFNBQVM7cUNBQ3ZCLENBQUMsQ0FBQztnQ0FDTCxDQUFDOzRCQUNILENBQUM7NEJBQ0QsaUJBQWlCOzRCQUNqQixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dDQUMzQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQ0FDZixLQUFLLEVBQUUsY0FBYztvQ0FDckIsUUFBUSxFQUFFLENBQUM7b0NBQ1gsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDO29DQUN6QyxLQUFLLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7aUNBQ3JDLENBQUMsQ0FBQzs0QkFDTCxDQUFDOzRCQUNELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0NBQzdCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dDQUN0SCxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQ0FDZixLQUFLLEVBQUUsb0NBQW9DLE1BQU0sQ0FBQyxhQUFhLEdBQUc7b0NBQ2xFLFdBQVcsRUFBRSxNQUFNLENBQUMsaUJBQWlCLElBQUksZ0NBQWdDO29DQUN6RSxRQUFRLEVBQUUsQ0FBQztvQ0FDWCxVQUFVLEVBQUUsR0FBRztvQ0FDZixLQUFLLEVBQUUsR0FBRztpQ0FDWCxDQUFDLENBQUM7NEJBQ0wsQ0FBQzt3QkFDSCxDQUFDO3dCQUNELEtBQUssQ0FBQyxhQUFhLEdBQUc7NEJBQ3BCLGNBQWMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLFVBQVUsSUFBSSxLQUFLOzRCQUNsRCxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLElBQUksS0FBSzs0QkFDdEMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsYUFBYSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxJQUFJLEtBQUs7NEJBQzdFLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsSUFBSSxlQUFlOzRCQUN4RCxhQUFhLEVBQUUsTUFBTSxDQUFDLFdBQVcsSUFBSSxNQUFNOzRCQUMzQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGVBQWUsSUFBSSxZQUFZOzRCQUNwRCxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsaUJBQWlCLElBQUksaUJBQWlCOzRCQUMvRCxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7eUJBQy9CLENBQUM7d0JBQ0YsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7NEJBQ3ZELEtBQUssQ0FBQyxZQUFZLEdBQUcsR0FBRyxRQUFRLHdCQUF3QixNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7d0JBQ2xGLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLEtBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDbkIsQ0FBQztRQUVELDBDQUEwQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUM3RixNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsVUFBVSxJQUFJLEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBRWhHLHdEQUF3RDtRQUN4RCxJQUFJLGdCQUFnQixHQUF1QixTQUFTLENBQUM7UUFDckQsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkIsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsSUFBSSxNQUFNLEdBQXNCLFFBQVEsQ0FBQztRQUN6QyxJQUFJLGNBQWMsR0FBa0IsSUFBSSxDQUFDO1FBQ3pDLElBQUksU0FBUyxHQUFrQixJQUFJLENBQUM7UUFFcEMscUNBQXFDO1FBQ3JDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxZQUFZLEtBQUssUUFBUTtZQUMvQixRQUFRLENBQUMsa0JBQWtCO1lBQzNCLFFBQVEsQ0FBQyxjQUFjO1lBQ3ZCLFFBQVEsQ0FBQyxrQkFBa0I7WUFDM0IsUUFBUSxDQUFDLGtCQUFrQjtZQUMzQixRQUFRLENBQUMsb0JBQW9CO1lBQzdCLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQztRQUV0RixJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUksNkJBQWdCLENBQy9CO29CQUNFLFNBQVMsRUFBRSxRQUFRLENBQUMsY0FBYztvQkFDbEMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7b0JBQzFDLGFBQWEsRUFBRSxRQUFRLENBQUMsa0JBQWtCO29CQUMxQyxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtvQkFDOUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSztpQkFDdEMsRUFDRCxNQUFNLENBQ1AsQ0FBQztnQkFFRiwwQkFBMEI7Z0JBQzFCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQztvQkFDdkMsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtvQkFDL0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDM0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztpQkFDNUIsQ0FBQyxDQUFDO2dCQUVILG1FQUFtRTtnQkFDbkUsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsa0JBQWtCLElBQUksOEJBQThCLENBQUM7Z0JBQzdGLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztvQkFDckIsU0FBUyxJQUFJLG1CQUFtQixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyRCxDQUFDO2dCQUNELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxFQUFFLENBQUM7Z0JBRXBELE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ3JELElBQUksRUFBRSxFQUFFLENBQUMsS0FBSztvQkFDZCxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFO29CQUNqQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLElBQUksQ0FBQztpQkFDM0IsQ0FBQyxDQUFDLENBQUM7Z0JBRUosTUFBTSxZQUFZLEdBQTRDLEVBQUUsQ0FBQztnQkFDakUsSUFBSSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQzNDLFlBQVksQ0FBQyxJQUFJLENBQUM7d0JBQ2hCLEtBQUssRUFBRSxRQUFRLENBQUMsOEJBQThCLElBQUksY0FBYzt3QkFDaEUsS0FBSyxFQUFFLENBQUMsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBVztxQkFDMUQsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUM3QixNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFO3dCQUM5QyxnQkFBZ0IsRUFBRSxTQUFTO3dCQUMzQixVQUFVLEVBQUUsYUFBYTt3QkFDekIsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLEtBQUssRUFBRSxTQUFTO3dCQUNoQixhQUFhLEVBQUUsUUFBUSxDQUFDLHVCQUF1QixJQUFJLENBQUM7d0JBQ3BELGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLO3dCQUN0RCxhQUFhLEVBQUUsWUFBWTtxQkFDNUIsQ0FBQyxDQUFDO29CQUNILGNBQWMsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO29CQUNoQyxNQUFNLEdBQUcsTUFBTSxDQUFDO29CQUNoQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztvQkFDdkUsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLHVCQUF1QixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztvQkFDdkgsU0FBUyxHQUFHLE1BQU0sSUFBQSxtQ0FBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ3ZELEtBQUssRUFBRSxZQUFZO3dCQUNuQixpQkFBaUIsRUFBRSxJQUFJO3FCQUN4QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQ3JDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLEVBQUU7d0JBQy9DLGdCQUFnQixFQUFFLFNBQVM7d0JBQzNCLFVBQVUsRUFBRSxhQUFhO3dCQUN6QixLQUFLLEVBQUUsU0FBUzt3QkFDaEIsS0FBSyxFQUFFLFNBQVM7d0JBQ2hCLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLO3FCQUN2RCxDQUFDLENBQUM7b0JBQ0gsY0FBYyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7b0JBQ2pDLE1BQU0sR0FBRyxNQUFNLENBQUM7b0JBQ2hCLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUN6RSxTQUFTLEdBQUcsTUFBTSxJQUFBLG1DQUFjLEVBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRTt3QkFDdkQsS0FBSyxFQUFFLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxZQUFZO3dCQUM3QyxpQkFBaUIsRUFBRSxJQUFJO3FCQUN4QixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3BDLHlIQUF5SDtvQkFDekgsSUFBSSxlQUFlLEdBQWtCLElBQUksQ0FBQztvQkFFMUMsSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7d0JBQ25CLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDOzRCQUNsRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7NEJBQ3hCLElBQUksRUFBRSxTQUFTO3lCQUNoQixDQUFDLENBQUM7d0JBQ0gsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUM7d0JBQzlELElBQUksR0FBRyxFQUFFLENBQUM7NEJBQ1IsZUFBZSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDekMsQ0FBQztvQkFDSCxDQUFDO3lCQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQ2xDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDOzRCQUNsRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCOzRCQUN4QyxJQUFJLEVBQUUsU0FBUzt5QkFDaEIsQ0FBQyxDQUFDO3dCQUNILE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3dCQUM5RCxJQUFJLEdBQUcsRUFBRSxDQUFDOzRCQUNSLGVBQWUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3pDLENBQUM7b0JBQ0gsQ0FBQztvQkFFRCxzRkFBc0Y7b0JBQ3RGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzt3QkFDckIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRTs0QkFDakQsZ0JBQWdCLEVBQUUsU0FBUzs0QkFDM0IsVUFBVSxFQUFFLGFBQWE7NEJBQ3pCLEtBQUssRUFBRSxTQUFTOzRCQUNoQixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsYUFBYSxFQUFFLENBQUM7NEJBQ2hCLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLOzRCQUN0RCxhQUFhLEVBQUUsWUFBWTt5QkFDNUIsQ0FBQyxDQUFDO3dCQUNILGVBQWUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO29CQUN0QyxDQUFDO29CQUVELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO29CQUMvQyxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQzFDLGVBQWUsRUFDZixhQUFhLEVBQ2IsU0FBUyxFQUNULFFBQVEsRUFDUixTQUFTLENBQ1YsQ0FBQztvQkFFRixjQUFjLEdBQUcsU0FBUyxDQUFDO29CQUMzQixNQUFNLEdBQUcsTUFBTSxDQUFDO29CQUVoQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDN0QsU0FBUyxHQUFHLE1BQU0sSUFBQSxtQ0FBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7d0JBQ3ZELEtBQUssRUFBRSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsWUFBWTt3QkFDN0MsaUJBQWlCLEVBQUUsSUFBSTtxQkFDeEIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDO1lBQUMsT0FBTyxPQUFZLEVBQUUsQ0FBQztnQkFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsb0RBQW9ELE9BQU8sQ0FBQyxPQUFPLDRCQUE0QixDQUFDLENBQUM7Z0JBQ3BJLE1BQU0sR0FBRyxRQUFRLENBQUM7Z0JBQ2xCLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQ3RCLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDbkIsQ0FBQztRQUNILENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsdUNBQXVDO1FBQ3ZDLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ2xCLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUM7WUFDekQsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWM7Z0JBQUUsWUFBWSxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxRQUFRLENBQUM7aUJBQ3hGLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTO2dCQUFFLFlBQVksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDO2lCQUNuRixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVTtnQkFBRSxZQUFZLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsQ0FBQztpQkFDckYsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVU7Z0JBQUUsWUFBWSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxRQUFRLENBQUM7aUJBQ3JGLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRO2dCQUFFLFlBQVksR0FBRyxRQUFRLENBQUMsbUJBQW1CLElBQUksUUFBUSxDQUFDO1lBRTFGLE1BQU0sT0FBTyxHQUFpQjtnQkFDNUIsVUFBVSxFQUFFLFNBQVM7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxRQUFRLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtvQkFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDM0IsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDM0IsT0FBTyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTztpQkFDaEM7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxRQUFRLENBQUMsWUFBWSxJQUFJLE9BQU87b0JBQ3RDLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWTtvQkFDL0IsT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXO29CQUM3QixLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVM7b0JBQ3pCLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUztvQkFDekIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxXQUFXO29CQUM3QixlQUFlLEVBQUUsUUFBUSxDQUFDLG1CQUFtQjtvQkFDN0MsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2lCQUMxQjtnQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2dCQUMxQixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7Z0JBQ3BDLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztnQkFDcEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM1QyxhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxLQUFLO2dCQUMzQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxRQUFRO2dCQUNoRCxZQUFZLEVBQUUsZ0JBQWdCLElBQUksS0FBSyxDQUFDLFlBQVk7Z0JBQ3BELE1BQU0sRUFBRSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsWUFBWTtnQkFDOUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2dCQUNsQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQzFCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTthQUNuQyxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsTUFBTSxrQ0FBZSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDeEUsU0FBUyxHQUFHLE1BQU0sSUFBQSxtQ0FBYyxFQUFDLFNBQVMsRUFBRTtnQkFDMUMsS0FBSyxFQUFFLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxZQUFZO2FBQzlDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCwwQkFBMEI7UUFDMUIsTUFBTSxhQUFhLEdBQUcsR0FBRyxRQUFRLG9DQUFvQyxDQUFDO1FBQ3RFLE1BQU0sT0FBTyxHQUFHLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRWpELElBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUM7Z0JBQ3hDLFVBQVUsRUFBRSxTQUFTO2dCQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUNwQixLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO3dCQUM5QyxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7NEJBQ2hELEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FDckQ7Z0JBQ0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLGNBQWMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtnQkFDekQsYUFBYSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtnQkFDbEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztnQkFDcEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztnQkFDcEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUN4QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2dCQUN4QyxnQkFBZ0IsRUFBRSxjQUFjO2dCQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ3pCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtnQkFDbEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksUUFBUTtnQkFDaEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUNoQyxrQkFBa0IsRUFBRSxnQkFBZ0I7Z0JBQ3BDLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGNBQWMsU0FBUyxXQUFXO2dCQUNqTCxRQUFRLEVBQUU7b0JBQ1IsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO29CQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDMUIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO2lCQUNuQzthQUNGLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNqRSxJQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDNUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3ZELFVBQVUsRUFBRSxTQUFTO29CQUNyQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUNwQixLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUM7d0JBQzFDLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDOzRCQUM5QyxLQUFLLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7Z0NBQ2hELEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FDckQ7b0JBQ0QsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNoQixNQUFNLEVBQUUsTUFBTTtvQkFDZCxNQUFNLEVBQUUsS0FBSyxDQUFDLGNBQWMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTTtvQkFDekQsYUFBYSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSTtvQkFDbEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDcEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSztvQkFDcEMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO29CQUN4QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO29CQUN4QyxnQkFBZ0IsRUFBRSxjQUFjO29CQUNoQyxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ3pCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtvQkFDbEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLElBQUksUUFBUTtvQkFDaEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO29CQUNoQyxrQkFBa0IsRUFBRSxnQkFBZ0I7b0JBQ3BDLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGNBQWMsU0FBUyxXQUFXO29CQUNqTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQzt3QkFDdkIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO3dCQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7d0JBQ2xCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUzt3QkFDMUIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO3FCQUNuQyxDQUFDO29CQUNGLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtvQkFDdEIsVUFBVSxFQUFFLElBQUksSUFBSSxFQUFFO2lCQUN2QixDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQixNQUFNLEdBQUcsUUFBUSxDQUFDO1lBQ3BCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEdBQUcsQ0FBQztZQUNaLENBQUM7UUFDSCxDQUFDO1FBRUQseURBQXlEO1FBQ3pELE1BQU0sVUFBVSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsSUFBSSx1QkFBdUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkosTUFBTSxVQUFVLEdBQUcsR0FBRyxVQUFVLGNBQWMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDO1FBQ25FLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUU1RSxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztnQkFDL0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFO2dCQUNiLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixjQUFjLEVBQUUsWUFBWTthQUM3QixFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxHQUFHLFNBQVMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDakUsSUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzVELElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDO29CQUM3RCxPQUFPLEVBQUUsVUFBVTtvQkFDbkIsY0FBYyxFQUFFLFlBQVk7b0JBQzVCLFVBQVUsRUFBRSxJQUFJLElBQUksRUFBRTtpQkFDdkIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQztRQUM1QixNQUFNLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztRQUVyQywyQ0FBMkM7UUFDM0MsSUFBSSxLQUFLLENBQUMsU0FBUyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sd0NBQWtCLENBQUMsSUFBSSxDQUFDO2dCQUM1QixTQUFTO2dCQUNULFFBQVEsRUFBRTtvQkFDUixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7b0JBQ2IsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO29CQUM3QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7b0JBQ25CLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtvQkFDakIsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhO29CQUNuQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWM7b0JBQ3JDLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYztvQkFDckMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO29CQUNqQyxhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWE7b0JBQ25DLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYztvQkFDckMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO29CQUNqQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsa0JBQWtCO29CQUM3QyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87b0JBQ3ZCLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYztvQkFDckMsY0FBYyxFQUFFLEtBQUssQ0FBQyxvQkFBb0I7b0JBQzFDLE9BQU8sRUFBRSxLQUFLLENBQUMsYUFBYTtvQkFDNUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO29CQUN6QixnQkFBZ0IsRUFBRSxNQUFNLENBQUMsZ0JBQWdCO2lCQUMxQztnQkFDRCxRQUFRLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtnQkFDckMsUUFBUTthQUNULENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQUMsUUFBZ0IsRUFBRSxTQUFlLEVBQUUsYUFBbUI7UUFDMUUsSUFBSSxNQUFNLEdBQVEsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxJQUFJLEdBQUcsU0FBUyxFQUFFLE9BQU8sRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDO2dCQUNqRSxJQUFZLENBQUMsYUFBYSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDNUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1RyxDQUFDO1lBQ0QsSUFBSSxDQUFDLE1BQU07Z0JBQUUsTUFBTSxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFbEUscUVBQXFFO1FBQ3JFLElBQ0UsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNO1lBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0I7WUFDdkIsUUFBUSxDQUFDLGtCQUFrQjtZQUMzQixRQUFRLENBQUMsY0FBYyxFQUN2QixDQUFDO1lBQ0QsSUFBSSxDQUFDO2dCQUNILE1BQU0sTUFBTSxHQUFHLFNBQVMsRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUksNkJBQWdCLENBQy9CO29CQUNFLFNBQVMsRUFBRSxRQUFRLENBQUMsY0FBYztvQkFDbEMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7b0JBQzFDLGFBQWEsRUFBRSxRQUFRLENBQUMsa0JBQWtCO29CQUMxQyxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtvQkFDOUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSztpQkFDdEMsRUFDRCxNQUFNLENBQ1AsQ0FBQztnQkFFRixJQUFJLE1BQW1CLENBQUM7Z0JBQ3hCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDOUIsTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNwRSxDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNwRSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDdkUsQ0FBQztnQkFFRCxPQUFPLE1BQU0sSUFBQSxtQ0FBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQy9DLEtBQUssRUFBRSxNQUFNLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLFlBQVk7b0JBQ3ZELGlCQUFpQixFQUFFLElBQUk7aUJBQ3hCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO2dCQUNsQixTQUFTLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxxREFBcUQsR0FBRyxDQUFDLE9BQU8sNkJBQTZCLENBQUMsQ0FBQztZQUNwSSxDQUFDO1FBQ0gsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixJQUFJLFlBQVksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDO1FBQ3pELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxjQUFjO1lBQUUsWUFBWSxHQUFHLFFBQVEsQ0FBQyxxQkFBcUIsSUFBSSxRQUFRLENBQUM7YUFDekYsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFNBQVM7WUFBRSxZQUFZLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixJQUFJLFFBQVEsQ0FBQzthQUNwRixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssVUFBVTtZQUFFLFlBQVksR0FBRyxRQUFRLENBQUMsaUJBQWlCLElBQUksUUFBUSxDQUFDO2FBQ3RGLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxVQUFVO1lBQUUsWUFBWSxHQUFHLFFBQVEsQ0FBQyxpQkFBaUIsSUFBSSxRQUFRLENBQUM7YUFDdEYsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVE7WUFBRSxZQUFZLEdBQUcsUUFBUSxDQUFDLG1CQUFtQixJQUFJLFFBQVEsQ0FBQztRQUUzRixNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFRLENBQUM7UUFDNUMsTUFBTSxPQUFPLEdBQWlCO1lBQzVCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtZQUM3QixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFXO1lBQ3hCLElBQUksRUFBRSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsUUFBUSxFQUFFO2dCQUNSLElBQUksRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLGlCQUFpQjtnQkFDL0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksU0FBUztnQkFDekMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksU0FBUzthQUMxQztZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLEVBQUUsUUFBUSxDQUFDLFlBQVksSUFBSSxPQUFPO2dCQUN0QyxRQUFRLEVBQUUsUUFBUSxDQUFDLFlBQVk7Z0JBQy9CLE9BQU8sRUFBRSxRQUFRLENBQUMsV0FBVztnQkFDN0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTO2dCQUN6QixLQUFLLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQ3pCLE9BQU8sRUFBRSxRQUFRLENBQUMsV0FBVztnQkFDN0IsZUFBZSxFQUFFLFFBQVEsQ0FBQyxtQkFBbUI7Z0JBQzdDLEtBQUssRUFBRSxRQUFRLENBQUMsU0FBUzthQUMxQjtZQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQztZQUMvQixhQUFhLEVBQUUsTUFBTSxDQUFDLGFBQWEsSUFBSSxLQUFLO1lBQzVDLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYztZQUNyQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixJQUFJLE1BQU0sQ0FBQyxZQUFZO1lBQzlELE1BQU0sRUFBRSxNQUFNLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLFlBQVk7WUFDeEQsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDbEMsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sa0NBQWUsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sTUFBTSxJQUFBLG1DQUFjLEVBQUMsU0FBUyxFQUFFO1lBQ3JDLEtBQUssRUFBRSxNQUFNLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLFlBQVk7U0FDeEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN3NCRCxzREE2c0JDO0FBRUQsa0JBQWUscUJBQXFCLENBQUMifQ==
|
|
799
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2RvY3VtZW50cy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZDQSxzREFpRkM7QUE5SEQscURBQXVHO0FBQ3ZHLGtFQUE4RDtBQUM5RCw4REFBMEQ7QUFDMUQsMERBQXNEO0FBQ3RELDBEQUE2RDtBQUM3RCxzRUFBMEY7QUFDMUYsMEVBQW1FO0FBQ25FLDRFQUF3RTtBQWlDeEU7Ozs7R0FJRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLFNBQWM7SUFDbEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2YsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELHFGQUFxRjtJQUNyRixJQUFJLENBQUM7UUFDSCxJQUFJLFNBQVMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QixNQUFNLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDOUQsSUFBSSxNQUFNO2dCQUFFLE9BQU8sTUFBTSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUM7SUFFZCx3RUFBd0U7SUFDeEUsSUFBSSxDQUFDO1FBQ0gsSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RELElBQUksTUFBTTtnQkFBRSxPQUFPLE1BQU0sQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQSxDQUFDO0lBRWQsZ0lBQWdJO0lBQ2hJLElBQUksQ0FBQztRQUNILElBQUksT0FBTyxTQUFTLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksR0FB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
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [1.1.6] - 2026-10-16
|
|
11
|
+
|
|
12
|
+
### Patch Release: Safe Knex Resolution via `ContainerRegistrationKeys.PG_CONNECTION` & DML Table Name Correction
|
|
13
|
+
|
|
14
|
+
- **Container DI Registration Key Fix**: Resolved `AwilixResolutionError: Could not resolve 'pg_connection'` by introducing `getDatabaseConnection(container)` helper which queries `ContainerRegistrationKeys.PG_CONNECTION` (`"__pg_connection__"`), `"__pg_connection__"`, and `"pg_connection"` with `{ allowUnregistered: true }` wrapped safely in try/catch blocks.
|
|
15
|
+
- **Awilix Cradle Proxy Safety**: Eliminated raw property lookups against `__container__` proxies which bypass `allowUnregistered` and trigger unhandled errors in Medusa v2.
|
|
16
|
+
- **DML Database Table Alignment**: Fixed table name mismatch where Knex fallback queries were referencing `document_records` (plural) instead of the singular `document_record` table created by Medusa v2 DML (`model.define("document_record", ...)`), preventing `relation "document_records" does not exist` 500 runtime exceptions in document listings and PDF streams.
|
|
17
|
+
- **Primary Key Entity ID Generation**: Generated standard Medusa entity IDs (`docset_...`, `doc_...`) via `generateEntityId` on Knex fallback inserts, preventing PostgreSQL not-null constraint violations on primary key `"id"`.
|
|
18
|
+
- **Soft-Delete & OR-Precedence Safeguards**: Applied `.whereNull("deleted_at")` with grouped sub-clauses across all Knex fallback queries to exclude soft-deleted records and maintain predicate integrity.
|
|
19
|
+
- **Compatibility Route Resilience**: Added Knex fallback handling and safe logger resolution across `/api/admin/documents/:id/document`, `/api/documents/:id/document`, and universal shortlink `/r/:code`.
|
|
20
|
+
- **Backend Dependency Update**: Pointed `admin.urbandevicecare.co.uk` backend dependency to `"medusajs-documents-plugin": "^1.1.6"`.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
10
24
|
## [1.1.5] - 2026-10-16
|
|
11
25
|
|
|
12
26
|
### Patch Release: Dual Transaction Context Injection & Direct Knex Fallback for Settings & Documents
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "medusajs-documents-plugin",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"description": "Comprehensive document generation and management module for Medusa v2 with Zoho Books integration, PDFKit fallback, QR codes, shortlinks, multi-channel notifications and unified admin hub.",
|
|
5
5
|
"author": "Urban Device Care <info@urbandevicecare.co.uk>",
|
|
6
6
|
"license": "MIT",
|