@fdm-monster/server 2.0.7 → 2.0.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/.yarn/install-state.gz +0 -0
- package/README.md +1 -1
- package/RELEASE_NOTES.MD +35 -0
- package/dist/container.js +0 -6
- package/dist/container.js.map +1 -1
- package/dist/container.tokens.js +0 -2
- package/dist/container.tokens.js.map +1 -1
- package/dist/controllers/print-job.controller.js +12 -151
- package/dist/controllers/print-job.controller.js.map +1 -1
- package/dist/controllers/print-queue.controller.js +82 -17
- package/dist/controllers/print-queue.controller.js.map +1 -1
- package/dist/controllers/printer-files.controller.js +16 -77
- package/dist/controllers/printer-files.controller.js.map +1 -1
- package/dist/controllers/printer.controller.js +3 -3
- package/dist/controllers/printer.controller.js.map +1 -1
- package/dist/controllers/validation/printer-files-controller.validation.js +7 -0
- package/dist/controllers/validation/printer-files-controller.validation.js.map +1 -1
- package/dist/entities/print-job.entity.js.map +1 -1
- package/dist/server.constants.js +1 -2
- package/dist/server.constants.js.map +1 -1
- package/dist/services/bambu/bambu-ftp.adapter.js +3 -13
- package/dist/services/bambu/bambu-ftp.adapter.js.map +1 -1
- package/dist/services/bambu.api.js +31 -30
- package/dist/services/bambu.api.js.map +1 -1
- package/dist/services/file-storage.service.js +11 -2
- package/dist/services/file-storage.service.js.map +1 -1
- package/dist/services/moonraker/moonraker.client.js +5 -17
- package/dist/services/moonraker/moonraker.client.js.map +1 -1
- package/dist/services/moonraker.api.js +45 -11
- package/dist/services/moonraker.api.js.map +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js +1 -1
- package/dist/services/octoprint/octoprint-api.routes.js.map +1 -1
- package/dist/services/octoprint/octoprint.client.js +35 -24
- package/dist/services/octoprint/octoprint.client.js.map +1 -1
- package/dist/services/octoprint/utils/file.utils.js +42 -5
- package/dist/services/octoprint/utils/file.utils.js.map +1 -1
- package/dist/services/octoprint.api.js +15 -10
- package/dist/services/octoprint.api.js.map +1 -1
- package/dist/services/orm/print-job.service.js +55 -47
- package/dist/services/orm/print-job.service.js.map +1 -1
- package/dist/services/print-queue.service.js +90 -30
- package/dist/services/print-queue.service.js.map +1 -1
- package/dist/services/printer-api.interface.js +13 -0
- package/dist/services/printer-api.interface.js.map +1 -1
- package/dist/services/prusa-link/prusa-link.api.js +33 -27
- package/dist/services/prusa-link/prusa-link.api.js.map +1 -1
- package/dist/tasks/print-job-analysis.task.js.map +1 -1
- package/dist/utils/bgcode/bgcode-thumbnail.parser.js +50 -0
- package/dist/utils/bgcode/bgcode-thumbnail.parser.js.map +1 -0
- package/dist/utils/bgcode/bgcode.constants.js +57 -0
- package/dist/utils/bgcode/bgcode.constants.js.map +1 -0
- package/dist/utils/bgcode/bgcode.types.js +132 -0
- package/dist/utils/bgcode/bgcode.types.js.map +1 -0
- package/dist/utils/bgcode/bgcode.utils.js +288 -0
- package/dist/utils/bgcode/bgcode.utils.js.map +1 -0
- package/dist/utils/bgcode/heatshrink-decoder.js +172 -0
- package/dist/utils/bgcode/heatshrink-decoder.js.map +1 -0
- package/dist/utils/bgcode/png-encoder.js +76 -0
- package/dist/utils/bgcode/png-encoder.js.map +1 -0
- package/dist/utils/bgcode/qoi-decoder.js +141 -0
- package/dist/utils/bgcode/qoi-decoder.js.map +1 -0
- package/dist/utils/image-dimensions.js +62 -0
- package/dist/utils/image-dimensions.js.map +1 -0
- package/dist/utils/job-stats.util.js +79 -0
- package/dist/utils/job-stats.util.js.map +1 -0
- package/dist/utils/parsers/3mf.parser.js +39 -9
- package/dist/utils/parsers/3mf.parser.js.map +1 -1
- package/dist/utils/parsers/bgcode.parser.js +125 -144
- package/dist/utils/parsers/bgcode.parser.js.map +1 -1
- package/dist/utils/parsers/gcode.parser.js +13 -2
- package/dist/utils/parsers/gcode.parser.js.map +1 -1
- package/dist/utils/parsers/parser.types.js +6 -0
- package/dist/utils/parsers/parser.types.js.map +1 -0
- package/dist/utils/thumbnail.util.js +24 -0
- package/dist/utils/thumbnail.util.js.map +1 -0
- package/package.json +5 -5
- package/dist/state/file.cache.js +0 -68
- package/dist/state/file.cache.js.map +0 -1
- package/dist/state/printer-files.store.js +0 -92
- package/dist/state/printer-files.store.js.map +0 -1
- package/dist/tasks/printer-files-load.task.js +0 -29
- package/dist/tasks/printer-files-load.task.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "encodePNG", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return encodePNG;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _nodezlib = require("node:zlib");
|
|
12
|
+
const PNG_SIGNATURE = Buffer.from([
|
|
13
|
+
0x89,
|
|
14
|
+
0x50,
|
|
15
|
+
0x4E,
|
|
16
|
+
0x47,
|
|
17
|
+
0x0D,
|
|
18
|
+
0x0A,
|
|
19
|
+
0x1A,
|
|
20
|
+
0x0A
|
|
21
|
+
]);
|
|
22
|
+
function crc32(buffer) {
|
|
23
|
+
let crc = 0xffffffff;
|
|
24
|
+
for(let i = 0; i < buffer.length; i++){
|
|
25
|
+
crc ^= buffer[i];
|
|
26
|
+
for(let j = 0; j < 8; j++){
|
|
27
|
+
crc = crc >>> 1 ^ 0xedb88320 & -(crc & 1);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return (crc ^ 0xffffffff) >>> 0;
|
|
31
|
+
}
|
|
32
|
+
function writeChunk(type, data) {
|
|
33
|
+
const typeBuffer = Buffer.from(type, 'ascii');
|
|
34
|
+
const length = Buffer.alloc(4);
|
|
35
|
+
length.writeUInt32BE(data.length, 0);
|
|
36
|
+
const crcBuffer = Buffer.concat([
|
|
37
|
+
typeBuffer,
|
|
38
|
+
data
|
|
39
|
+
]);
|
|
40
|
+
const crc = Buffer.alloc(4);
|
|
41
|
+
crc.writeUInt32BE(crc32(crcBuffer), 0);
|
|
42
|
+
return Buffer.concat([
|
|
43
|
+
length,
|
|
44
|
+
typeBuffer,
|
|
45
|
+
data,
|
|
46
|
+
crc
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
function encodePNG(width, height, rgba) {
|
|
50
|
+
const ihdr = Buffer.alloc(13);
|
|
51
|
+
ihdr.writeUInt32BE(width, 0);
|
|
52
|
+
ihdr.writeUInt32BE(height, 4);
|
|
53
|
+
ihdr.writeUInt8(8, 8);
|
|
54
|
+
ihdr.writeUInt8(6, 9);
|
|
55
|
+
ihdr.writeUInt8(0, 10);
|
|
56
|
+
ihdr.writeUInt8(0, 11);
|
|
57
|
+
ihdr.writeUInt8(0, 12);
|
|
58
|
+
const bytesPerPixel = 4;
|
|
59
|
+
const scanlineLength = width * bytesPerPixel;
|
|
60
|
+
const filteredData = Buffer.alloc(height * (scanlineLength + 1));
|
|
61
|
+
for(let y = 0; y < height; y++){
|
|
62
|
+
const scanlineOffset = y * (scanlineLength + 1);
|
|
63
|
+
filteredData[scanlineOffset] = 0;
|
|
64
|
+
rgba.copy(filteredData, scanlineOffset + 1, y * scanlineLength, (y + 1) * scanlineLength);
|
|
65
|
+
}
|
|
66
|
+
const compressed = (0, _nodezlib.deflateSync)(filteredData);
|
|
67
|
+
const chunks = [
|
|
68
|
+
PNG_SIGNATURE,
|
|
69
|
+
writeChunk('IHDR', ihdr),
|
|
70
|
+
writeChunk('IDAT', compressed),
|
|
71
|
+
writeChunk('IEND', Buffer.alloc(0))
|
|
72
|
+
];
|
|
73
|
+
return Buffer.concat(chunks);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=png-encoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/bgcode/png-encoder.ts"],"names":["encodePNG","PNG_SIGNATURE","Buffer","from","crc32","buffer","crc","i","length","j","writeChunk","type","data","typeBuffer","alloc","writeUInt32BE","crcBuffer","concat","width","height","rgba","ihdr","writeUInt8","bytesPerPixel","scanlineLength","filteredData","y","scanlineOffset","copy","compressed","deflateSync","chunks"],"mappings":";;;;+BAiCgBA;;;eAAAA;;;0BA5BY;AAE5B,MAAMC,gBAAgBC,OAAOC,IAAI,CAAC;IAAC;IAAM;IAAM;IAAM;IAAM;IAAM;IAAM;IAAM;CAAK;AAElF,SAASC,MAAMC,MAAc;IAE3B,IAAIC,MAAM;IACV,IAAK,IAAIC,IAAI,GAAGA,IAAIF,OAAOG,MAAM,EAAED,IAAK;QACtCD,OAAOD,MAAM,CAACE,EAAE;QAChB,IAAK,IAAIE,IAAI,GAAGA,IAAI,GAAGA,IAAK;YAC1BH,MAAM,AAACA,QAAQ,IAAM,aAAa,CAAEA,CAAAA,MAAM,CAAA;QAC5C;IACF;IACA,OAAO,AAACA,CAAAA,MAAM,UAAS,MAAO;AAChC;AAEA,SAASI,WAAWC,IAAY,EAAEC,IAAY;IAC5C,MAAMC,aAAaX,OAAOC,IAAI,CAACQ,MAAM;IACrC,MAAMH,SAASN,OAAOY,KAAK,CAAC;IAC5BN,OAAOO,aAAa,CAACH,KAAKJ,MAAM,EAAE;IAElC,MAAMQ,YAAYd,OAAOe,MAAM,CAAC;QAACJ;QAAYD;KAAK;IAClD,MAAMN,MAAMJ,OAAOY,KAAK,CAAC;IACzBR,IAAIS,aAAa,CAACX,MAAMY,YAAY;IAEpC,OAAOd,OAAOe,MAAM,CAAC;QAACT;QAAQK;QAAYD;QAAMN;KAAI;AACtD;AAEO,SAASN,UAAUkB,KAAa,EAAEC,MAAc,EAAEC,IAAY;IACnE,MAAMC,OAAOnB,OAAOY,KAAK,CAAC;IAC1BO,KAAKN,aAAa,CAACG,OAAO;IAC1BG,KAAKN,aAAa,CAACI,QAAQ;IAC3BE,KAAKC,UAAU,CAAC,GAAG;IACnBD,KAAKC,UAAU,CAAC,GAAG;IACnBD,KAAKC,UAAU,CAAC,GAAG;IACnBD,KAAKC,UAAU,CAAC,GAAG;IACnBD,KAAKC,UAAU,CAAC,GAAG;IAGnB,MAAMC,gBAAgB;IACtB,MAAMC,iBAAiBN,QAAQK;IAC/B,MAAME,eAAevB,OAAOY,KAAK,CAACK,SAAUK,CAAAA,iBAAiB,CAAA;IAE7D,IAAK,IAAIE,IAAI,GAAGA,IAAIP,QAAQO,IAAK;QAC/B,MAAMC,iBAAiBD,IAAKF,CAAAA,iBAAiB,CAAA;QAC7CC,YAAY,CAACE,eAAe,GAAG;QAC/BP,KAAKQ,IAAI,CAACH,cAAcE,iBAAiB,GAAGD,IAAIF,gBAAgB,AAACE,CAAAA,IAAI,CAAA,IAAKF;IAC5E;IAGA,MAAMK,aAAaC,IAAAA,qBAAW,EAACL;IAG/B,MAAMM,SAAS;QACb9B;QACAS,WAAW,QAAQW;QACnBX,WAAW,QAAQmB;QACnBnB,WAAW,QAAQR,OAAOY,KAAK,CAAC;KACjC;IAED,OAAOZ,OAAOe,MAAM,CAACc;AACvB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "decodeQOI", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return decodeQOI;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const QOI_OP_INDEX = 0x00;
|
|
12
|
+
const QOI_OP_DIFF = 0x40;
|
|
13
|
+
const QOI_OP_LUMA = 0x80;
|
|
14
|
+
const QOI_OP_RUN = 0xc0;
|
|
15
|
+
const QOI_OP_RGB = 0xfe;
|
|
16
|
+
const QOI_OP_RGBA = 0xff;
|
|
17
|
+
const QOI_MAGIC = 0x716f6966;
|
|
18
|
+
function hashColor(r, g, b, a) {
|
|
19
|
+
return (r * 3 + g * 5 + b * 7 + a * 11) % 64;
|
|
20
|
+
}
|
|
21
|
+
function decodeQOI(buffer) {
|
|
22
|
+
let pos = 0;
|
|
23
|
+
if (buffer.length < 14) {
|
|
24
|
+
throw new Error('Invalid QOI file: too short');
|
|
25
|
+
}
|
|
26
|
+
const magic = buffer.readUInt32BE(pos);
|
|
27
|
+
pos += 4;
|
|
28
|
+
if (magic !== QOI_MAGIC) {
|
|
29
|
+
throw new Error(`Invalid QOI magic: expected ${QOI_MAGIC.toString(16)}, got ${magic.toString(16)}`);
|
|
30
|
+
}
|
|
31
|
+
const width = buffer.readUInt32BE(pos);
|
|
32
|
+
pos += 4;
|
|
33
|
+
const height = buffer.readUInt32BE(pos);
|
|
34
|
+
pos += 4;
|
|
35
|
+
const channels = buffer.readUInt8(pos);
|
|
36
|
+
pos += 1;
|
|
37
|
+
const colorspace = buffer.readUInt8(pos);
|
|
38
|
+
pos += 1;
|
|
39
|
+
if (channels !== 3 && channels !== 4) {
|
|
40
|
+
throw new Error(`Invalid QOI channels: ${channels}`);
|
|
41
|
+
}
|
|
42
|
+
const pixelCount = width * height;
|
|
43
|
+
const outputSize = pixelCount * 4;
|
|
44
|
+
const output = Buffer.alloc(outputSize);
|
|
45
|
+
const colorArray = new Array(64);
|
|
46
|
+
for(let i = 0; i < 64; i++){
|
|
47
|
+
colorArray[i] = [
|
|
48
|
+
0,
|
|
49
|
+
0,
|
|
50
|
+
0,
|
|
51
|
+
0
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
let r = 0, g = 0, b = 0, a = 255;
|
|
55
|
+
let outPos = 0;
|
|
56
|
+
while(outPos < outputSize){
|
|
57
|
+
if (pos + 8 <= buffer.length) {
|
|
58
|
+
let isEnd = true;
|
|
59
|
+
for(let i = 0; i < 7; i++){
|
|
60
|
+
if (buffer[pos + i] !== 0x00) {
|
|
61
|
+
isEnd = false;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (isEnd && buffer[pos + 7] === 0x01) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (pos >= buffer.length) {
|
|
70
|
+
throw new Error('Unexpected end of QOI data');
|
|
71
|
+
}
|
|
72
|
+
const byte1 = buffer[pos++];
|
|
73
|
+
if (byte1 === QOI_OP_RGB) {
|
|
74
|
+
r = buffer[pos++];
|
|
75
|
+
g = buffer[pos++];
|
|
76
|
+
b = buffer[pos++];
|
|
77
|
+
} else if (byte1 === QOI_OP_RGBA) {
|
|
78
|
+
r = buffer[pos++];
|
|
79
|
+
g = buffer[pos++];
|
|
80
|
+
b = buffer[pos++];
|
|
81
|
+
a = buffer[pos++];
|
|
82
|
+
} else {
|
|
83
|
+
const tag = byte1 & 0xc0;
|
|
84
|
+
if (tag === QOI_OP_INDEX) {
|
|
85
|
+
const index = byte1 & 0x3f;
|
|
86
|
+
[r, g, b, a] = colorArray[index];
|
|
87
|
+
} else if (tag === QOI_OP_DIFF) {
|
|
88
|
+
const dr = (byte1 >> 4 & 0x03) - 2;
|
|
89
|
+
const dg = (byte1 >> 2 & 0x03) - 2;
|
|
90
|
+
const db = (byte1 & 0x03) - 2;
|
|
91
|
+
r = r + dr & 0xff;
|
|
92
|
+
g = g + dg & 0xff;
|
|
93
|
+
b = b + db & 0xff;
|
|
94
|
+
} else if (tag === QOI_OP_LUMA) {
|
|
95
|
+
const byte2 = buffer[pos++];
|
|
96
|
+
const dg = (byte1 & 0x3f) - 32;
|
|
97
|
+
const dr_dg = (byte2 >> 4 & 0x0f) - 8;
|
|
98
|
+
const db_dg = (byte2 & 0x0f) - 8;
|
|
99
|
+
g = g + dg & 0xff;
|
|
100
|
+
r = r + dg + dr_dg & 0xff;
|
|
101
|
+
b = b + dg + db_dg & 0xff;
|
|
102
|
+
} else if (tag === QOI_OP_RUN) {
|
|
103
|
+
const run = (byte1 & 0x3f) + 1;
|
|
104
|
+
for(let i = 0; i < run; i++){
|
|
105
|
+
output[outPos++] = r;
|
|
106
|
+
output[outPos++] = g;
|
|
107
|
+
output[outPos++] = b;
|
|
108
|
+
output[outPos++] = a;
|
|
109
|
+
}
|
|
110
|
+
const hash = hashColor(r, g, b, a);
|
|
111
|
+
colorArray[hash] = [
|
|
112
|
+
r,
|
|
113
|
+
g,
|
|
114
|
+
b,
|
|
115
|
+
a
|
|
116
|
+
];
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
output[outPos++] = r;
|
|
121
|
+
output[outPos++] = g;
|
|
122
|
+
output[outPos++] = b;
|
|
123
|
+
output[outPos++] = a;
|
|
124
|
+
const hash = hashColor(r, g, b, a);
|
|
125
|
+
colorArray[hash] = [
|
|
126
|
+
r,
|
|
127
|
+
g,
|
|
128
|
+
b,
|
|
129
|
+
a
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
width,
|
|
134
|
+
height,
|
|
135
|
+
channels,
|
|
136
|
+
colorspace,
|
|
137
|
+
data: output
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
//# sourceMappingURL=qoi-decoder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/bgcode/qoi-decoder.ts"],"names":["decodeQOI","QOI_OP_INDEX","QOI_OP_DIFF","QOI_OP_LUMA","QOI_OP_RUN","QOI_OP_RGB","QOI_OP_RGBA","QOI_MAGIC","hashColor","r","g","b","a","buffer","pos","length","Error","magic","readUInt32BE","toString","width","height","channels","readUInt8","colorspace","pixelCount","outputSize","output","Buffer","alloc","colorArray","Array","i","outPos","isEnd","byte1","tag","index","dr","dg","db","byte2","dr_dg","db_dg","run","hash","data"],"mappings":";;;;+BAqBgBA;;;eAAAA;;;AAbhB,MAAMC,eAAe;AACrB,MAAMC,cAAc;AACpB,MAAMC,cAAc;AACpB,MAAMC,aAAa;AACnB,MAAMC,aAAa;AACnB,MAAMC,cAAc;AAEpB,MAAMC,YAAY;AAElB,SAASC,UAAUC,CAAS,EAAEC,CAAS,EAAEC,CAAS,EAAEC,CAAS;IAC3D,OAAO,AAACH,CAAAA,IAAI,IAAIC,IAAI,IAAIC,IAAI,IAAIC,IAAI,EAAC,IAAK;AAC5C;AAEO,SAASZ,UAAUa,MAAc;IACtC,IAAIC,MAAM;IAGV,IAAID,OAAOE,MAAM,GAAG,IAAI;QACtB,MAAM,IAAIC,MAAM;IAClB;IAEA,MAAMC,QAAQJ,OAAOK,YAAY,CAACJ;IAClCA,OAAO;IACP,IAAIG,UAAUV,WAAW;QACvB,MAAM,IAAIS,MAAM,CAAC,4BAA4B,EAAET,UAAUY,QAAQ,CAAC,IAAI,MAAM,EAAEF,MAAME,QAAQ,CAAC,KAAK;IACpG;IAEA,MAAMC,QAAQP,OAAOK,YAAY,CAACJ;IAClCA,OAAO;IACP,MAAMO,SAASR,OAAOK,YAAY,CAACJ;IACnCA,OAAO;IACP,MAAMQ,WAAWT,OAAOU,SAAS,CAACT;IAClCA,OAAO;IACP,MAAMU,aAAaX,OAAOU,SAAS,CAACT;IACpCA,OAAO;IAEP,IAAIQ,aAAa,KAAKA,aAAa,GAAG;QACpC,MAAM,IAAIN,MAAM,CAAC,sBAAsB,EAAEM,UAAU;IACrD;IAGA,MAAMG,aAAaL,QAAQC;IAC3B,MAAMK,aAAaD,aAAa;IAChC,MAAME,SAASC,OAAOC,KAAK,CAACH;IAG5B,MAAMI,aAAsD,IAAIC,MAAM;IACtE,IAAK,IAAIC,IAAI,GAAGA,IAAI,IAAIA,IAAK;QAC3BF,UAAU,CAACE,EAAE,GAAG;YAAC;YAAG;YAAG;YAAG;SAAE;IAC9B;IAEA,IAAIvB,IAAI,GAAGC,IAAI,GAAGC,IAAI,GAAGC,IAAI;IAC7B,IAAIqB,SAAS;IAGb,MAAOA,SAASP,WAAY;QAE1B,IAAIZ,MAAM,KAAKD,OAAOE,MAAM,EAAE;YAC5B,IAAImB,QAAQ;YACZ,IAAK,IAAIF,IAAI,GAAGA,IAAI,GAAGA,IAAK;gBAC1B,IAAInB,MAAM,CAACC,MAAMkB,EAAE,KAAK,MAAM;oBAC5BE,QAAQ;oBACR;gBACF;YACF;YACA,IAAIA,SAASrB,MAAM,CAACC,MAAM,EAAE,KAAK,MAAM;gBACrC;YACF;QACF;QAEA,IAAIA,OAAOD,OAAOE,MAAM,EAAE;YACxB,MAAM,IAAIC,MAAM;QAClB;QAEA,MAAMmB,QAAQtB,MAAM,CAACC,MAAM;QAE3B,IAAIqB,UAAU9B,YAAY;YAExBI,IAAII,MAAM,CAACC,MAAM;YACjBJ,IAAIG,MAAM,CAACC,MAAM;YACjBH,IAAIE,MAAM,CAACC,MAAM;QACnB,OAAO,IAAIqB,UAAU7B,aAAa;YAEhCG,IAAII,MAAM,CAACC,MAAM;YACjBJ,IAAIG,MAAM,CAACC,MAAM;YACjBH,IAAIE,MAAM,CAACC,MAAM;YACjBF,IAAIC,MAAM,CAACC,MAAM;QACnB,OAAO;YACL,MAAMsB,MAAMD,QAAQ;YAEpB,IAAIC,QAAQnC,cAAc;gBAExB,MAAMoC,QAAQF,QAAQ;gBACtB,CAAC1B,GAAGC,GAAGC,GAAGC,EAAE,GAAGkB,UAAU,CAACO,MAAM;YAClC,OAAO,IAAID,QAAQlC,aAAa;gBAE9B,MAAMoC,KAAK,AAAC,CAAA,AAACH,SAAS,IAAK,IAAG,IAAK;gBACnC,MAAMI,KAAK,AAAC,CAAA,AAACJ,SAAS,IAAK,IAAG,IAAK;gBACnC,MAAMK,KAAK,AAACL,CAAAA,QAAQ,IAAG,IAAK;gBAC5B1B,IAAI,AAACA,IAAI6B,KAAM;gBACf5B,IAAI,AAACA,IAAI6B,KAAM;gBACf5B,IAAI,AAACA,IAAI6B,KAAM;YACjB,OAAO,IAAIJ,QAAQjC,aAAa;gBAE9B,MAAMsC,QAAQ5B,MAAM,CAACC,MAAM;gBAC3B,MAAMyB,KAAK,AAACJ,CAAAA,QAAQ,IAAG,IAAK;gBAC5B,MAAMO,QAAQ,AAAC,CAAA,AAACD,SAAS,IAAK,IAAG,IAAK;gBACtC,MAAME,QAAQ,AAACF,CAAAA,QAAQ,IAAG,IAAK;gBAC/B/B,IAAI,AAACA,IAAI6B,KAAM;gBACf9B,IAAI,AAACA,IAAI8B,KAAKG,QAAS;gBACvB/B,IAAI,AAACA,IAAI4B,KAAKI,QAAS;YACzB,OAAO,IAAIP,QAAQhC,YAAY;gBAE7B,MAAMwC,MAAM,AAACT,CAAAA,QAAQ,IAAG,IAAK;gBAC7B,IAAK,IAAIH,IAAI,GAAGA,IAAIY,KAAKZ,IAAK;oBAC5BL,MAAM,CAACM,SAAS,GAAGxB;oBACnBkB,MAAM,CAACM,SAAS,GAAGvB;oBACnBiB,MAAM,CAACM,SAAS,GAAGtB;oBACnBgB,MAAM,CAACM,SAAS,GAAGrB;gBACrB;gBAEA,MAAMiC,OAAOrC,UAAUC,GAAGC,GAAGC,GAAGC;gBAChCkB,UAAU,CAACe,KAAK,GAAG;oBAACpC;oBAAGC;oBAAGC;oBAAGC;iBAAE;gBAC/B;YACF;QACF;QAGAe,MAAM,CAACM,SAAS,GAAGxB;QACnBkB,MAAM,CAACM,SAAS,GAAGvB;QACnBiB,MAAM,CAACM,SAAS,GAAGtB;QACnBgB,MAAM,CAACM,SAAS,GAAGrB;QAGnB,MAAMiC,OAAOrC,UAAUC,GAAGC,GAAGC,GAAGC;QAChCkB,UAAU,CAACe,KAAK,GAAG;YAACpC;YAAGC;YAAGC;YAAGC;SAAE;IACjC;IAEA,OAAO;QACLQ;QACAC;QACAC;QACAE;QACAsB,MAAMnB;IACR;AACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "getImageDimensions", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return getImageDimensions;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
function getImageDimensions(imageData, format) {
|
|
12
|
+
if (format === "PNG") {
|
|
13
|
+
return getPngDimensions(imageData);
|
|
14
|
+
} else if (format === "JPG" || format === "JPEG") {
|
|
15
|
+
return getJpgDimensions(imageData);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
width: 0,
|
|
19
|
+
height: 0
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function getPngDimensions(data) {
|
|
23
|
+
if (data.length < 24) {
|
|
24
|
+
return {
|
|
25
|
+
width: 0,
|
|
26
|
+
height: 0
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const width = data.readUInt32BE(16);
|
|
30
|
+
const height = data.readUInt32BE(20);
|
|
31
|
+
return {
|
|
32
|
+
width,
|
|
33
|
+
height
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function getJpgDimensions(data) {
|
|
37
|
+
let offset = 2;
|
|
38
|
+
while(offset < data.length){
|
|
39
|
+
if (data[offset] !== 0xFF) break;
|
|
40
|
+
const marker = data[offset + 1];
|
|
41
|
+
offset += 2;
|
|
42
|
+
if (marker === 0xC0 || marker === 0xC2) {
|
|
43
|
+
if (offset + 5 < data.length) {
|
|
44
|
+
const height = data.readUInt16BE(offset + 1);
|
|
45
|
+
const width = data.readUInt16BE(offset + 3);
|
|
46
|
+
return {
|
|
47
|
+
width,
|
|
48
|
+
height
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
const segmentLength = data.readUInt16BE(offset);
|
|
54
|
+
offset += segmentLength;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
width: 0,
|
|
58
|
+
height: 0
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=image-dimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/image-dimensions.ts"],"names":["getImageDimensions","imageData","format","getPngDimensions","getJpgDimensions","width","height","data","length","readUInt32BE","offset","marker","readUInt16BE","segmentLength"],"mappings":";;;;+BAAgBA;;;eAAAA;;;AAAT,SAASA,mBAAmBC,SAAiB,EAAEC,MAAc;IAClE,IAAIA,WAAW,OAAO;QACpB,OAAOC,iBAAiBF;IAC1B,OAAO,IAAIC,WAAW,SAASA,WAAW,QAAQ;QAChD,OAAOE,iBAAiBH;IAC1B;IACA,OAAO;QAAEI,OAAO;QAAGC,QAAQ;IAAE;AAC/B;AAEA,SAASH,iBAAiBI,IAAY;IACpC,IAAIA,KAAKC,MAAM,GAAG,IAAI;QACpB,OAAO;YAAEH,OAAO;YAAGC,QAAQ;QAAE;IAC/B;IAEA,MAAMD,QAAQE,KAAKE,YAAY,CAAC;IAChC,MAAMH,SAASC,KAAKE,YAAY,CAAC;IAEjC,OAAO;QAAEJ;QAAOC;IAAO;AACzB;AAEA,SAASF,iBAAiBG,IAAY;IACpC,IAAIG,SAAS;IAEb,MAAOA,SAASH,KAAKC,MAAM,CAAE;QAC3B,IAAID,IAAI,CAACG,OAAO,KAAK,MAAM;QAE3B,MAAMC,SAASJ,IAAI,CAACG,SAAS,EAAE;QAC/BA,UAAU;QAEV,IAAIC,WAAW,QAAQA,WAAW,MAAM;YACtC,IAAID,SAAS,IAAIH,KAAKC,MAAM,EAAE;gBAC5B,MAAMF,SAASC,KAAKK,YAAY,CAACF,SAAS;gBAC1C,MAAML,QAAQE,KAAKK,YAAY,CAACF,SAAS;gBACzC,OAAO;oBAAEL;oBAAOC;gBAAO;YACzB;YACA;QACF;QAEA,MAAMO,gBAAgBN,KAAKK,YAAY,CAACF;QACxCA,UAAUG;IACZ;IAEA,OAAO;QAAER,OAAO;QAAGC,QAAQ;IAAE;AAC/B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get calculateJobDuration () {
|
|
13
|
+
return calculateJobDuration;
|
|
14
|
+
},
|
|
15
|
+
get initializeOrUpdateStatistics () {
|
|
16
|
+
return initializeOrUpdateStatistics;
|
|
17
|
+
},
|
|
18
|
+
get updateStatisticsForCancellation () {
|
|
19
|
+
return updateStatisticsForCancellation;
|
|
20
|
+
},
|
|
21
|
+
get updateStatisticsForCompletion () {
|
|
22
|
+
return updateStatisticsForCompletion;
|
|
23
|
+
},
|
|
24
|
+
get updateStatisticsForFailure () {
|
|
25
|
+
return updateStatisticsForFailure;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
function calculateJobDuration(startedAt, endedAt = new Date()) {
|
|
29
|
+
if (!startedAt) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return (endedAt.getTime() - startedAt.getTime()) / 1000;
|
|
33
|
+
}
|
|
34
|
+
function initializeOrUpdateStatistics(job, endedAt = new Date(), options = {}) {
|
|
35
|
+
const actualPrintTimeSeconds = calculateJobDuration(job.startedAt, endedAt);
|
|
36
|
+
if (!job.statistics) {
|
|
37
|
+
return {
|
|
38
|
+
startedAt: job.startedAt,
|
|
39
|
+
endedAt,
|
|
40
|
+
actualPrintTimeSeconds,
|
|
41
|
+
progress: options.progress ?? job.progress ?? null,
|
|
42
|
+
failureReason: options.failureReason,
|
|
43
|
+
failureTime: options.failureTime
|
|
44
|
+
};
|
|
45
|
+
} else {
|
|
46
|
+
job.statistics.endedAt = endedAt;
|
|
47
|
+
job.statistics.actualPrintTimeSeconds = actualPrintTimeSeconds;
|
|
48
|
+
if (options.progress !== undefined) {
|
|
49
|
+
job.statistics.progress = options.progress;
|
|
50
|
+
}
|
|
51
|
+
if (options.failureReason !== undefined) {
|
|
52
|
+
job.statistics.failureReason = options.failureReason;
|
|
53
|
+
job.statistics.failureTime = options.failureTime ?? endedAt;
|
|
54
|
+
}
|
|
55
|
+
return job.statistics;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function updateStatisticsForCompletion(job, endedAt = new Date()) {
|
|
59
|
+
job.statistics = initializeOrUpdateStatistics(job, endedAt, {
|
|
60
|
+
progress: 100
|
|
61
|
+
});
|
|
62
|
+
job.endedAt = endedAt;
|
|
63
|
+
job.progress = 100;
|
|
64
|
+
}
|
|
65
|
+
function updateStatisticsForFailure(job, reason, endedAt = new Date()) {
|
|
66
|
+
job.statistics = initializeOrUpdateStatistics(job, endedAt, {
|
|
67
|
+
failureReason: reason,
|
|
68
|
+
failureTime: endedAt
|
|
69
|
+
});
|
|
70
|
+
job.endedAt = endedAt;
|
|
71
|
+
job.statusReason = reason;
|
|
72
|
+
}
|
|
73
|
+
function updateStatisticsForCancellation(job, reason = "Print cancelled by user", endedAt = new Date()) {
|
|
74
|
+
job.statistics = initializeOrUpdateStatistics(job, endedAt);
|
|
75
|
+
job.endedAt = endedAt;
|
|
76
|
+
job.statusReason = reason;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
//# sourceMappingURL=job-stats.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/job-stats.util.ts"],"names":["calculateJobDuration","initializeOrUpdateStatistics","updateStatisticsForCancellation","updateStatisticsForCompletion","updateStatisticsForFailure","startedAt","endedAt","Date","getTime","job","options","actualPrintTimeSeconds","statistics","progress","failureReason","failureTime","undefined","reason","statusReason"],"mappings":";;;;;;;;;;;QAEgBA;eAAAA;;QAaAC;eAAAA;;QAoDAC;eAAAA;;QAnBAC;eAAAA;;QAMAC;eAAAA;;;AApDT,SAASJ,qBAAqBK,SAAsB,EAAEC,UAAgB,IAAIC,MAAM;IACrF,IAAI,CAACF,WAAW;QACd,OAAO;IACT;IACA,OAAO,AAACC,CAAAA,QAAQE,OAAO,KAAKH,UAAUG,OAAO,EAAC,IAAK;AACrD;AAQO,SAASP,6BACdQ,GAAa,EACbH,UAAgB,IAAIC,MAAM,EAC1BG,UAAmC,CAAC,CAAC;IAErC,MAAMC,yBAAyBX,qBAAqBS,IAAIJ,SAAS,EAAEC;IAEnE,IAAI,CAACG,IAAIG,UAAU,EAAE;QACnB,OAAO;YACLP,WAAWI,IAAIJ,SAAS;YACxBC;YACAK;YACAE,UAAUH,QAAQG,QAAQ,IAAIJ,IAAII,QAAQ,IAAI;YAC9CC,eAAeJ,QAAQI,aAAa;YACpCC,aAAaL,QAAQK,WAAW;QAClC;IACF,OAAO;QACLN,IAAIG,UAAU,CAACN,OAAO,GAAGA;QACzBG,IAAIG,UAAU,CAACD,sBAAsB,GAAGA;QAExC,IAAID,QAAQG,QAAQ,KAAKG,WAAW;YAClCP,IAAIG,UAAU,CAACC,QAAQ,GAAGH,QAAQG,QAAQ;QAC5C;QAEA,IAAIH,QAAQI,aAAa,KAAKE,WAAW;YACvCP,IAAIG,UAAU,CAACE,aAAa,GAAGJ,QAAQI,aAAa;YACpDL,IAAIG,UAAU,CAACG,WAAW,GAAGL,QAAQK,WAAW,IAAIT;QACtD;QAEA,OAAOG,IAAIG,UAAU;IACvB;AACF;AAEO,SAAST,8BAA8BM,GAAa,EAAEH,UAAgB,IAAIC,MAAM;IACrFE,IAAIG,UAAU,GAAGX,6BAA6BQ,KAAKH,SAAS;QAAEO,UAAU;IAAI;IAC5EJ,IAAIH,OAAO,GAAGA;IACdG,IAAII,QAAQ,GAAG;AACjB;AAEO,SAAST,2BACdK,GAAa,EACbQ,MAAc,EACdX,UAAgB,IAAIC,MAAM;IAE1BE,IAAIG,UAAU,GAAGX,6BAA6BQ,KAAKH,SAAS;QAC1DQ,eAAeG;QACfF,aAAaT;IACf;IACAG,IAAIH,OAAO,GAAGA;IACdG,IAAIS,YAAY,GAAGD;AACrB;AAEO,SAASf,gCACdO,GAAa,EACbQ,SAAiB,yBAAyB,EAC1CX,UAAgB,IAAIC,MAAM;IAE1BE,IAAIG,UAAU,GAAGX,6BAA6BQ,KAAKH;IACnDG,IAAIH,OAAO,GAAGA;IACdG,IAAIS,YAAY,GAAGD;AACrB"}
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "ThreeMFParser", {
|
|
|
11
11
|
const _promises = /*#__PURE__*/ _interop_require_wildcard(require("node:fs/promises"));
|
|
12
12
|
const _nodepath = /*#__PURE__*/ _interop_require_wildcard(require("node:path"));
|
|
13
13
|
const _admzip = /*#__PURE__*/ _interop_require_default(require("adm-zip"));
|
|
14
|
+
const _imagedimensions = require("../image-dimensions");
|
|
14
15
|
function _interop_require_default(obj) {
|
|
15
16
|
return obj && obj.__esModule ? obj : {
|
|
16
17
|
default: obj
|
|
@@ -158,6 +159,12 @@ class ThreeMFParser {
|
|
|
158
159
|
slicerVersion: topLevelSlicerVersion,
|
|
159
160
|
maxLayerZ: topLevelMaxZ,
|
|
160
161
|
totalLayers: topLevelLayers,
|
|
162
|
+
thumbnails: thumbnails.length > 0 ? thumbnails.map((t)=>({
|
|
163
|
+
width: t.width,
|
|
164
|
+
height: t.height,
|
|
165
|
+
format: t.format,
|
|
166
|
+
dataLength: t.data?.length || 0
|
|
167
|
+
})) : undefined,
|
|
161
168
|
plates: plates.length > 0 ? plates : undefined
|
|
162
169
|
};
|
|
163
170
|
return {
|
|
@@ -223,6 +230,24 @@ class ThreeMFParser {
|
|
|
223
230
|
const gcodeContent = entry.getData().toString("utf8", 0, Math.min(50000, entry.getData().length));
|
|
224
231
|
const metadata = this.parseGCodeHeader(gcodeContent);
|
|
225
232
|
const plateThumbs = zipEntries.filter((e)=>e.entryName.includes(`plate_${plateMatch[1]}`) && (e.entryName.endsWith(".png") || e.entryName.endsWith(".jpg")));
|
|
233
|
+
const plateThumbnails = plateThumbs.map((t)=>{
|
|
234
|
+
const format = t.entryName.endsWith(".png") ? "PNG" : "JPG";
|
|
235
|
+
const imageData = t.getData();
|
|
236
|
+
const sizeMatch = t.entryName.match(/(\d+)x(\d+)/);
|
|
237
|
+
let width = sizeMatch ? Number.parseInt(sizeMatch[1]) : 0;
|
|
238
|
+
let height = sizeMatch ? Number.parseInt(sizeMatch[2]) : 0;
|
|
239
|
+
if (width === 0 || height === 0) {
|
|
240
|
+
const dimensions = (0, _imagedimensions.getImageDimensions)(imageData, format);
|
|
241
|
+
width = dimensions.width;
|
|
242
|
+
height = dimensions.height;
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
width,
|
|
246
|
+
height,
|
|
247
|
+
format,
|
|
248
|
+
data: imageData.toString("base64")
|
|
249
|
+
};
|
|
250
|
+
});
|
|
226
251
|
const printTime = this.parseTime(metadata.model_printing_time || metadata.total_estimated_time || metadata.print_time);
|
|
227
252
|
const filamentWeight = this.parseFloat(metadata.total_filament_weight_g || metadata.filament_weight || metadata.total_filament_weight);
|
|
228
253
|
const layerCount = this.parseInt(metadata.total_layer_number || metadata.layer_count || metadata.total_layers);
|
|
@@ -246,11 +271,12 @@ class ThreeMFParser {
|
|
|
246
271
|
filamentType: metadata.filament_type || null,
|
|
247
272
|
printerModel: metadata.printer_model || null,
|
|
248
273
|
objects: [],
|
|
249
|
-
thumbnails:
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
274
|
+
thumbnails: plateThumbnails.length > 0 ? plateThumbnails.map((t)=>({
|
|
275
|
+
width: t.width,
|
|
276
|
+
height: t.height,
|
|
277
|
+
format: t.format,
|
|
278
|
+
dataLength: t.data?.length || 0
|
|
279
|
+
})) : undefined
|
|
254
280
|
};
|
|
255
281
|
plates.push(plateMetadata);
|
|
256
282
|
}
|
|
@@ -293,17 +319,21 @@ class ThreeMFParser {
|
|
|
293
319
|
const thumbnails = [];
|
|
294
320
|
const thumbEntries = zipEntries.filter((e)=>e.entryName.match(/Metadata\/.*\.(png|jpg|jpeg)/i) || e.entryName.match(/Thumbnails\/.*/i));
|
|
295
321
|
for (const entry of thumbEntries){
|
|
296
|
-
const sizeMatch = entry.entryName.match(/(\d+)x(\d+)/);
|
|
297
|
-
const width = sizeMatch ? Number.parseInt(sizeMatch[1]) : 0;
|
|
298
|
-
const height = sizeMatch ? Number.parseInt(sizeMatch[2]) : 0;
|
|
299
322
|
const format = entry.entryName.match(/\.(png|jpg|jpeg)$/i)?.[1].toUpperCase() || "PNG";
|
|
300
323
|
const imageData = entry.getData();
|
|
324
|
+
const sizeMatch = entry.entryName.match(/(\d+)x(\d+)/);
|
|
325
|
+
let width = sizeMatch ? Number.parseInt(sizeMatch[1]) : 0;
|
|
326
|
+
let height = sizeMatch ? Number.parseInt(sizeMatch[2]) : 0;
|
|
327
|
+
if (width === 0 || height === 0) {
|
|
328
|
+
const dimensions = (0, _imagedimensions.getImageDimensions)(imageData, format);
|
|
329
|
+
width = dimensions.width;
|
|
330
|
+
height = dimensions.height;
|
|
331
|
+
}
|
|
301
332
|
const base64Data = imageData.toString("base64");
|
|
302
333
|
thumbnails.push({
|
|
303
334
|
width,
|
|
304
335
|
height,
|
|
305
336
|
format,
|
|
306
|
-
path: entry.entryName,
|
|
307
337
|
data: base64Data
|
|
308
338
|
});
|
|
309
339
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/parsers/3mf.parser.ts"],"names":["ThreeMFParser","parse","filePath","stats","fs","stat","fileName","path","basename","zip","AdmZip","zipEntries","getEntries","metadataJsonEntry","find","e","entryName","metadata","jsonContent","getData","toString","jsonData","JSON","normalizeJsonMetadata","modelEntry","extractMetadataFromXML","plates","extractPlates","isMultiPlate","length","thumbnails","extractThumbnails","topLevelPrintTime","parseTime","printTime","topLevelFilamentWeight","parseFloat","totalFilamentWeight","filamentWeight","topLevelLayers","parseInt","layerCount","topLevelFilamentUsedMm","filamentUsed","topLevelFilamentUsedCm3","filamentVolume","topLevelFilamentDensity","filamentDensity","topLevelMaxZ","maxZ","topLevelSlicerVersion","slicerVersion","generator","topLevelNozzleDiameter","nozzleDiameter","topLevelLayerHeight","layerHeight","layer_height","topLevelFirstLayerHeight","firstLayerHeight","first_layer_height","topLevelBedTemp","bedTemp","bed_temperature","topLevelNozzleTemp","nozzleTemp","nozzle_temperature","topLevelFillDensity","infillDensity","infill_density","fill_density","topLevelFilamentType","filamentType","filament_type","topLevelPrinterModel","printerModel","printer_model","topLevelFilamentDiameter","filamentDiameter","filament_diameter","plate","gcodePrintTimeSeconds","filamentUsedGrams","totalLayers","filamentUsedMm","filamentUsedCm3","filamentDensityGramsCm3","maxLayerZ","nozzleDiameterMm","bedTemperature","nozzleTemperature","fillDensity","filamentDiameterMm","reduce","sum","p","Math","max","map","firstPlate","normalized","fileFormat","fileSize","size","totalPlates","totalFilamentUsedGrams","undefined","raw","_thumbnails","String","estimatedPrintTimeSec","xml","patterns","pattern","match","key","source","generatorMatch","plateEntries","filter","endsWith","entry","plateMatch","plateNumber","Number","gcodeContent","min","parseGCodeHeader","plateThumbs","includes","model_printing_time","total_estimated_time","print_time","total_filament_weight_g","filament_weight","total_filament_weight","total_layer_number","layer_count","total_layers","plateMetadata","total_filament_length_mm","filament_length_mm","filament_used_mm","total_filament_volume_cm3","filament_volume_cm3","filament_density","max_z_height","max_layer_z","bambustudio","slicer_version","slicer","nozzle_diameter","initial_layer_height","initial_layer_print_height","bed_temperature_actual","bed_temp","bed_temperature_initial_layer","nozzle_temp","nozzle_temperature_initial_layer","sparse_infill_density","objects","t","type","push","sort","a","b","gcode","lines","split","slice","line","startsWith","bambuMatch","trim","toLowerCase","replace","value","_","unit","bedTempMatch","thumbEntries","sizeMatch","width","height","format","toUpperCase","imageData","base64Data","data","num","isNaN","hours","minutes","secs","seconds"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/parsers/3mf.parser.ts"],"names":["ThreeMFParser","parse","filePath","stats","fs","stat","fileName","path","basename","zip","AdmZip","zipEntries","getEntries","metadataJsonEntry","find","e","entryName","metadata","jsonContent","getData","toString","jsonData","JSON","normalizeJsonMetadata","modelEntry","extractMetadataFromXML","plates","extractPlates","isMultiPlate","length","thumbnails","extractThumbnails","topLevelPrintTime","parseTime","printTime","topLevelFilamentWeight","parseFloat","totalFilamentWeight","filamentWeight","topLevelLayers","parseInt","layerCount","topLevelFilamentUsedMm","filamentUsed","topLevelFilamentUsedCm3","filamentVolume","topLevelFilamentDensity","filamentDensity","topLevelMaxZ","maxZ","topLevelSlicerVersion","slicerVersion","generator","topLevelNozzleDiameter","nozzleDiameter","topLevelLayerHeight","layerHeight","layer_height","topLevelFirstLayerHeight","firstLayerHeight","first_layer_height","topLevelBedTemp","bedTemp","bed_temperature","topLevelNozzleTemp","nozzleTemp","nozzle_temperature","topLevelFillDensity","infillDensity","infill_density","fill_density","topLevelFilamentType","filamentType","filament_type","topLevelPrinterModel","printerModel","printer_model","topLevelFilamentDiameter","filamentDiameter","filament_diameter","plate","gcodePrintTimeSeconds","filamentUsedGrams","totalLayers","filamentUsedMm","filamentUsedCm3","filamentDensityGramsCm3","maxLayerZ","nozzleDiameterMm","bedTemperature","nozzleTemperature","fillDensity","filamentDiameterMm","reduce","sum","p","Math","max","map","firstPlate","normalized","fileFormat","fileSize","size","totalPlates","totalFilamentUsedGrams","t","width","height","format","dataLength","data","undefined","raw","_thumbnails","String","estimatedPrintTimeSec","xml","patterns","pattern","match","key","source","generatorMatch","plateEntries","filter","endsWith","entry","plateMatch","plateNumber","Number","gcodeContent","min","parseGCodeHeader","plateThumbs","includes","plateThumbnails","imageData","sizeMatch","dimensions","getImageDimensions","model_printing_time","total_estimated_time","print_time","total_filament_weight_g","filament_weight","total_filament_weight","total_layer_number","layer_count","total_layers","plateMetadata","total_filament_length_mm","filament_length_mm","filament_used_mm","total_filament_volume_cm3","filament_volume_cm3","filament_density","max_z_height","max_layer_z","bambustudio","slicer_version","slicer","nozzle_diameter","initial_layer_height","initial_layer_print_height","bed_temperature_actual","bed_temp","bed_temperature_initial_layer","nozzle_temp","nozzle_temperature_initial_layer","sparse_infill_density","objects","push","sort","a","b","gcode","lines","split","slice","line","startsWith","bambuMatch","trim","toLowerCase","replace","value","_","unit","bedTempMatch","thumbEntries","toUpperCase","base64Data","num","isNaN","hours","minutes","secs","seconds"],"mappings":";;;;+BAoBaA;;;eAAAA;;;kEApBO;kEACE;+DACH;iCAGgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAe5B,MAAMA;IACX,MAAMC,MAAMC,QAAgB,EAA+B;QACzD,MAAMC,QAAQ,MAAMC,UAAGC,IAAI,CAACH;QAC5B,MAAMI,WAAWC,UAAKC,QAAQ,CAACN;QAE/B,MAAMO,MAAM,IAAIC,eAAM,CAACR;QACvB,MAAMS,aAAaF,IAAIG,UAAU;QAGjC,MAAMC,oBAAoBF,WAAWG,IAAI,CAACC,CAAAA,IAAKA,EAAEC,SAAS,KAAK;QAC/D,IAAIC,WAAgC,CAAC;QAErC,IAAIJ,mBAAmB;YAErB,MAAMK,cAAcL,kBAAkBM,OAAO,GAAGC,QAAQ,CAAC;YACzD,MAAMC,WAAWC,KAAKrB,KAAK,CAACiB;YAC5BD,WAAW,IAAI,CAACM,qBAAqB,CAACF;QACxC,OAAO;YAEL,MAAMG,aAAab,WAAWG,IAAI,CAACC,CAAAA,IAAKA,EAAEC,SAAS,KAAK,sBAAsBD,EAAEC,SAAS,KAAK;YAC9FC,WAAWO,aAAa,IAAI,CAACC,sBAAsB,CAACD,WAAWL,OAAO,GAAGC,QAAQ,CAAC,WAAW,CAAC;QAChG;QAGA,MAAMM,SAAS,IAAI,CAACC,aAAa,CAAChB;QAClC,MAAMiB,eAAeF,OAAOG,MAAM,GAAG;QAGrC,MAAMC,aAAa,IAAI,CAACC,iBAAiB,CAACpB;QAG1C,IAAIqB,oBAAoB,IAAI,CAACC,SAAS,CAAChB,SAASiB,SAAS;QACzD,IAAIC,yBAAyB,IAAI,CAACC,UAAU,CAACnB,SAASoB,mBAAmB,IAAIpB,SAASqB,cAAc;QACpG,IAAIC,iBAAiB,IAAI,CAACC,QAAQ,CAACvB,SAASwB,UAAU;QACtD,IAAIC,yBAAyB,IAAI,CAACN,UAAU,CAACnB,SAAS0B,YAAY;QAClE,IAAIC,0BAA0B,IAAI,CAACR,UAAU,CAACnB,SAAS4B,cAAc;QACrE,IAAIC,0BAA0B,IAAI,CAACV,UAAU,CAACnB,SAAS8B,eAAe;QACtE,IAAIC,eAAe,IAAI,CAACZ,UAAU,CAACnB,SAASgC,IAAI;QAChD,IAAIC,wBAAwBjC,SAASkC,aAAa,IAAIlC,SAASmC,SAAS;QAGxE,IAAIC,yBAAyB,IAAI,CAACjB,UAAU,CAACnB,SAASqC,cAAc;QACpE,IAAIC,sBAAsB,IAAI,CAACnB,UAAU,CAACnB,SAASuC,WAAW,IAAIvC,SAASwC,YAAY;QACvF,IAAIC,2BAA2B,IAAI,CAACtB,UAAU,CAACnB,SAAS0C,gBAAgB,IAAI1C,SAAS2C,kBAAkB;QACvG,IAAIC,kBAAkB,IAAI,CAACzB,UAAU,CAACnB,SAAS6C,OAAO,IAAI7C,SAAS8C,eAAe;QAClF,IAAIC,qBAAqB,IAAI,CAAC5B,UAAU,CAACnB,SAASgD,UAAU,IAAIhD,SAASiD,kBAAkB;QAC3F,IAAIC,sBAAsBlD,SAASmD,aAAa,IAAInD,SAASoD,cAAc,IAAIpD,SAASqD,YAAY,IAAI;QACxG,IAAIC,uBAAuBtD,SAASuD,YAAY,IAAIvD,SAASwD,aAAa,IAAI;QAC9E,IAAIC,uBAAuBzD,SAAS0D,YAAY,IAAI1D,SAAS2D,aAAa,IAAI;QAC9E,IAAIC,2BAA2B,IAAI,CAACzC,UAAU,CAACnB,SAAS6D,gBAAgB,IAAI7D,SAAS8D,iBAAiB,KAAK;QAE3G,IAAIrD,OAAOG,MAAM,IAAI,KAAKH,MAAM,CAAC,EAAE,EAAE;YACnC,IAAIA,OAAOG,MAAM,KAAK,GAAG;gBAEvB,MAAMmD,QAAQtD,MAAM,CAAC,EAAE;gBACvBM,oBAAoBgD,MAAMC,qBAAqB,IAAIjD;gBACnDG,yBAAyB6C,MAAME,iBAAiB,IAAI/C;gBACpDI,iBAAiByC,MAAMG,WAAW,IAAI5C;gBACtCG,yBAAyBsC,MAAMI,cAAc,IAAI1C;gBACjDE,0BAA0BoC,MAAMK,eAAe,IAAIzC;gBACnDE,0BAA0BkC,MAAMM,uBAAuB,IAAIxC;gBAC3DE,eAAegC,MAAMO,SAAS,IAAIvC;gBAClCE,wBAAwB8B,MAAM7B,aAAa,IAAID;gBAC/CG,yBAAyB2B,MAAMQ,gBAAgB,IAAInC;gBACnDE,sBAAsByB,MAAMxB,WAAW,IAAID;gBAC3CG,2BAA2BsB,MAAMrB,gBAAgB,IAAID;gBACrDG,kBAAkBmB,MAAMS,cAAc,IAAI5B;gBAC1CG,qBAAqBgB,MAAMU,iBAAiB,IAAI1B;gBAChDG,sBAAsBa,MAAMW,WAAW,IAAIxB;gBAC3CI,uBAAuBS,MAAMR,YAAY,IAAID;gBAC7CG,uBAAuBM,MAAML,YAAY,IAAID;gBAC7CG,2BAA2BG,MAAMY,kBAAkB,IAAIf;YACzD,OAAO;gBAEL7C,oBAAoBN,OAAOmE,MAAM,CAAC,CAACC,KAAKC,IAAWD,MAAOC,CAAAA,EAAEd,qBAAqB,IAAI,CAAA,GAAI;gBACzF9C,yBAAyBT,OAAOmE,MAAM,CAAC,CAACC,KAAKC,IAAWD,MAAOC,CAAAA,EAAEb,iBAAiB,IAAI,CAAA,GAAI;gBAC1FxC,yBAAyBhB,OAAOmE,MAAM,CAAC,CAACC,KAAKC,IAAWD,MAAOC,CAAAA,EAAEX,cAAc,IAAI,CAAA,GAAI;gBACvFxC,0BAA0BlB,OAAOmE,MAAM,CAAC,CAACC,KAAKC,IAAWD,MAAOC,CAAAA,EAAEV,eAAe,IAAI,CAAA,GAAI;gBACzF9C,iBAAiByD,KAAKC,GAAG,IAAIvE,OAAOwE,GAAG,CAAC,CAACH,IAAWA,EAAEZ,WAAW,IAAI;gBACrEnC,eAAegD,KAAKC,GAAG,IAAIvE,OAAOwE,GAAG,CAAC,CAACH,IAAWA,EAAER,SAAS,IAAI;gBAGjE,MAAMY,aAAazE,MAAM,CAAC,EAAE;gBAC5BoB,0BAA0BqD,WAAWb,uBAAuB,IAAIxC;gBAChEI,wBAAwBiD,WAAWhD,aAAa,IAAID;gBACpDG,yBAAyB8C,WAAWX,gBAAgB,IAAInC;gBACxDE,sBAAsB4C,WAAW3C,WAAW,IAAID;gBAChDG,2BAA2ByC,WAAWxC,gBAAgB,IAAID;gBAC1DG,kBAAkBsC,WAAWV,cAAc,IAAI5B;gBAC/CG,qBAAqBmC,WAAWT,iBAAiB,IAAI1B;gBACrDG,sBAAsBgC,WAAWR,WAAW,IAAIxB;gBAChDI,uBAAuB4B,WAAW3B,YAAY,IAAID;gBAClDG,uBAAuByB,WAAWxB,YAAY,IAAID;gBAClDG,2BAA2BsB,WAAWP,kBAAkB,IAAIf;YAC9D;QACF;QAEA,MAAMuB,aAA8B;YAClC9F;YACA+F,YAAY;YACZC,UAAUnG,MAAMoG,IAAI;YACpB3E;YACA4E,aAAa9E,OAAOG,MAAM,IAAI;YAC9BoD,uBAAuBjD;YACvBwD,kBAAkBnC;YAClBuC,oBAAoBf;YACpBS,yBAAyBxC;YACzBsC,gBAAgB1C;YAChB2C,iBAAiBzC;YACjBsC,mBAAmB/C;YACnBsE,wBAAwBtE;YACxBqB,aAAaD;YACbI,kBAAkBD;YAClB+B,gBAAgB5B;YAChB6B,mBAAmB1B;YACnB2B,aAAaxB;YACbK,cAAcD;YACdI,cAAcD;YACdvB,eAAeD;YACfqC,WAAWvC;YACXmC,aAAa5C;YACbT,YAAYA,WAAWD,MAAM,GAAG,IAAIC,WAAWoE,GAAG,CAACQ,CAAAA,IAAM,CAAA;oBACvDC,OAAOD,EAAEC,KAAK;oBACdC,QAAQF,EAAEE,MAAM;oBAChBC,QAAQH,EAAEG,MAAM;oBAChBC,YAAYJ,EAAEK,IAAI,EAAElF,UAAU;gBAChC,CAAA,KAAMmF;YACNtF,QAAQA,OAAOG,MAAM,GAAG,IAAIH,SAASsF;QACvC;QAEA,OAAO;YACLC,KAAK;gBACHC,aAAapF;gBACbJ,QAAQA,OAAOG,MAAM,GAAG,IAAIH,SAASsF;YACvC;YACAZ;YACA1E,QAAQA,OAAOG,MAAM,GAAG,IAAIH,SAASsF;QACvC;IACF;IAEQzF,sBAAsBF,QAAa,EAAuB;QAEhE,MAAMJ,WAAgC,CAAC;QAGvC,IAAII,SAASiC,cAAc,KAAK0D,WAAW/F,SAASqC,cAAc,GAAG6D,OAAO9F,SAASiC,cAAc;QACnG,IAAIjC,SAAS+F,qBAAqB,KAAKJ,WAAW/F,SAASiB,SAAS,GAAGiF,OAAO9F,SAAS+F,qBAAqB;QAC5G,IAAI/F,SAASyD,gBAAgB,KAAKkC,WAAW/F,SAAS6D,gBAAgB,GAAGqC,OAAO9F,SAASyD,gBAAgB;QACzG,IAAIzD,SAAS0B,eAAe,KAAKiE,WAAW/F,SAAS8B,eAAe,GAAGoE,OAAO9F,SAAS0B,eAAe;QACtG,IAAI1B,SAAS6D,iBAAiB,KAAK8B,WAAW/F,SAASqB,cAAc,GAAG6E,OAAO9F,SAAS6D,iBAAiB;QACzG,IAAI7D,SAASmC,WAAW,KAAKwD,WAAW/F,SAASuC,WAAW,GAAG2D,OAAO9F,SAASmC,WAAW;QAC1F,IAAInC,SAASsC,gBAAgB,KAAKqD,WAAW/F,SAAS0C,gBAAgB,GAAGwD,OAAO9F,SAASsC,gBAAgB;QACzG,IAAItC,SAASyC,OAAO,KAAKkD,WAAW/F,SAAS6C,OAAO,GAAGqD,OAAO9F,SAASyC,OAAO;QAC9E,IAAIzC,SAAS4C,UAAU,KAAK+C,WAAW/F,SAASgD,UAAU,GAAGkD,OAAO9F,SAAS4C,UAAU;QACvF,IAAI5C,SAASsE,WAAW,KAAKqB,WAAW/F,SAASmD,aAAa,GAAG+C,OAAO9F,SAASsE,WAAW;QAC5F,IAAItE,SAASmD,YAAY,KAAKwC,WAAW/F,SAASuD,YAAY,GAAGnD,SAASmD,YAAY;QACtF,IAAInD,SAASsD,YAAY,KAAKqC,WAAW/F,SAAS0D,YAAY,GAAGtD,SAASsD,YAAY;QAEtF,OAAO1D;IACT;IAEQQ,uBAAuB4F,GAAW,EAA0B;QAClE,MAAMpG,WAAmC,CAAC;QAG1C,MAAMqG,WAAW;YACf;YACA;YACA;YACA;YACA;YACA;YACA;SACD;QAED,KAAK,MAAMC,WAAWD,SAAU;YAC9B,MAAME,QAAQH,IAAIG,KAAK,CAACD;YACxB,IAAIC,OAAO;gBACT,MAAMC,MAAMF,QAAQG,MAAM,CAACF,KAAK,CAAC,cAAc,CAAC,EAAE,IAAI;gBACtDvG,QAAQ,CAACwG,IAAI,GAAGD,KAAK,CAAC,EAAE;YAC1B;QACF;QAGA,MAAMG,iBAAiBN,IAAIG,KAAK,CAAC;QACjC,IAAIG,gBAAgB;YAClB1G,SAASmC,SAAS,GAAGuE,cAAc,CAAC,EAAE;YACtC1G,SAASkC,aAAa,GAAGwE,cAAc,CAAC,EAAE;QAC5C;QAEA,OAAO1G;IACT;IAEQU,cAAchB,UAA8B,EAA0C;QAC5F,MAAMe,SAAiD,EAAE;QAGzD,MAAMkG,eAAejH,WAAWkH,MAAM,CAAC9G,CAAAA,IAAKA,EAAEC,SAAS,CAACwG,KAAK,CAAC,kCAAmC,CAACzG,EAAEC,SAAS,CAAC8G,QAAQ,CAAC;QAEvH,IAAIF,aAAa/F,MAAM,KAAK,GAAG;YAE7B,OAAO,EAAE;QACX;QAEA,KAAK,MAAMkG,SAASH,aAAc;YAChC,MAAMI,aAAaD,MAAM/G,SAAS,CAACwG,KAAK,CAAC;YACzC,IAAI,CAACQ,YAAY;YAGjB,MAAMC,cAAcC,OAAO1F,QAAQ,CAACwF,UAAU,CAAC,EAAE;YAEjD,MAAMG,eAAeJ,MAAM5G,OAAO,GAAGC,QAAQ,CAAC,QAAQ,GAAG4E,KAAKoC,GAAG,CAAC,OAAOL,MAAM5G,OAAO,GAAGU,MAAM;YAG/F,MAAMZ,WAAW,IAAI,CAACoH,gBAAgB,CAACF;YAGvC,MAAMG,cAAc3H,WAAWkH,MAAM,CAAC9G,CAAAA,IACpCA,EAAEC,SAAS,CAACuH,QAAQ,CAAC,CAAC,MAAM,EAAEP,UAAU,CAAC,EAAE,EAAE,KAC5CjH,CAAAA,EAAEC,SAAS,CAAC8G,QAAQ,CAAC,WAAW/G,EAAEC,SAAS,CAAC8G,QAAQ,CAAC,OAAM;YAG9D,MAAMU,kBAAqCF,YAAYpC,GAAG,CAACQ,CAAAA;gBACzD,MAAMG,SAASH,EAAE1F,SAAS,CAAC8G,QAAQ,CAAC,UAAU,QAAQ;gBACtD,MAAMW,YAAY/B,EAAEvF,OAAO;gBAE3B,MAAMuH,YAAYhC,EAAE1F,SAAS,CAACwG,KAAK,CAAC;gBACpC,IAAIb,QAAQ+B,YAAYR,OAAO1F,QAAQ,CAACkG,SAAS,CAAC,EAAE,IAAI;gBACxD,IAAI9B,SAAS8B,YAAYR,OAAO1F,QAAQ,CAACkG,SAAS,CAAC,EAAE,IAAI;gBAEzD,IAAI/B,UAAU,KAAKC,WAAW,GAAG;oBAC/B,MAAM+B,aAAaC,IAAAA,mCAAkB,EAACH,WAAW5B;oBACjDF,QAAQgC,WAAWhC,KAAK;oBACxBC,SAAS+B,WAAW/B,MAAM;gBAC5B;gBAEA,OAAO;oBACLD;oBACAC;oBACAC;oBACAE,MAAM0B,UAAUrH,QAAQ,CAAC;gBAC3B;YACF;YACA,MAAMc,YAAY,IAAI,CAACD,SAAS,CAC9BhB,SAAS4H,mBAAmB,IAC5B5H,SAAS6H,oBAAoB,IAC7B7H,SAAS8H,UAAU;YAErB,MAAMzG,iBAAiB,IAAI,CAACF,UAAU,CACpCnB,SAAS+H,uBAAuB,IAChC/H,SAASgI,eAAe,IACxBhI,SAASiI,qBAAqB;YAEhC,MAAMzG,aAAa,IAAI,CAACD,QAAQ,CAC9BvB,SAASkI,kBAAkB,IAC3BlI,SAASmI,WAAW,IACpBnI,SAASoI,YAAY;YAIvB,MAAMC,gBAAgB;gBACpBrB;gBACAhD,uBAAuB/C;gBACvBgD,mBAAmB5C;gBACnB6C,aAAa1C;gBACb2C,gBAAgB,IAAI,CAAChD,UAAU,CAC7BnB,SAASsI,wBAAwB,IACjCtI,SAASuI,kBAAkB,IAC3BvI,SAASwI,gBAAgB;gBAE3BpE,iBAAiB,IAAI,CAACjD,UAAU,CAC9BnB,SAASyI,yBAAyB,IAClCzI,SAAS0I,mBAAmB;gBAE9BrE,yBAAyB,IAAI,CAAClD,UAAU,CAACnB,SAAS2I,gBAAgB;gBAClEhE,oBAAoB,IAAI,CAACxD,UAAU,CAACnB,SAAS8D,iBAAiB,KAAK;gBACnEQ,WAAW,IAAI,CAACnD,UAAU,CAACnB,SAAS4I,YAAY,IAAI5I,SAAS6I,WAAW;gBACxE3G,eAAelC,SAAS8I,WAAW,IAAI9I,SAAS+I,cAAc,IAAI/I,SAASgJ,MAAM,IAAI;gBACrFzE,kBAAkB,IAAI,CAACpD,UAAU,CAACnB,SAASiJ,eAAe;gBAC1D1G,aAAa,IAAI,CAACpB,UAAU,CAACnB,SAASwC,YAAY;gBAClDE,kBAAkB,IAAI,CAACvB,UAAU,CAC/BnB,SAAS2C,kBAAkB,IAC3B3C,SAASkJ,oBAAoB,IAC7BlJ,SAASmJ,0BAA0B;gBAErC3E,gBAAgB,IAAI,CAACrD,UAAU,CAC7BnB,SAASoJ,sBAAsB,IAC/BpJ,SAAS8C,eAAe,IACxB9C,SAASqJ,QAAQ,IACjBrJ,SAASsJ,6BAA6B;gBAExC7E,mBAAmB,IAAI,CAACtD,UAAU,CAChCnB,SAASiD,kBAAkB,IAC3BjD,SAASuJ,WAAW,IACpBvJ,SAASwJ,gCAAgC;gBAE3C9E,aAAa1E,SAASyJ,qBAAqB,IAAIzJ,SAASoD,cAAc,IAAIpD,SAASqD,YAAY,IAAI;gBACnGE,cAAcvD,SAASwD,aAAa,IAAI;gBACxCE,cAAc1D,SAAS2D,aAAa,IAAI;gBACxC+F,SAAS,EAAE;gBACX7I,YAAY0G,gBAAgB3G,MAAM,GAAG,IAAI2G,gBAAgBtC,GAAG,CAACQ,CAAAA,IAAM,CAAA;wBACjEC,OAAOD,EAAEC,KAAK;wBACdC,QAAQF,EAAEE,MAAM;wBAChBC,QAAQH,EAAEG,MAAM;wBAChBC,YAAYJ,EAAEK,IAAI,EAAElF,UAAU;oBAChC,CAAA,KAAMmF;YACR;YAEAtF,OAAOkJ,IAAI,CAACtB;QACd;QAEA,OAAO5H,OAAOmJ,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAE7C,WAAW,GAAG8C,EAAE9C,WAAW;IAC5D;IAEQI,iBAAiB2C,KAAa,EAA0B;QAC9D,MAAM/J,WAAmC,CAAC;QAC1C,MAAMgK,QAAQD,MAAME,KAAK,CAAC,MAAMC,KAAK,CAAC,GAAG;QAEzC,KAAK,MAAMC,QAAQH,MAAO;YAExB,IAAIG,KAAKC,UAAU,CAAC,MAAM;gBAExB,IAAID,KAAK7C,QAAQ,CAAC,mBAAmB6C,KAAK7C,QAAQ,CAAC,eAAe;gBAIlE,MAAM+C,aAAaF,KAAK5D,KAAK,CAAC;gBAC9B,IAAI8D,YAAY;oBACdrK,SAAS8I,WAAW,GAAG,CAAC,YAAY,EAAEuB,UAAU,CAAC,EAAE,EAAE;oBACrD;gBACF;gBAMA,MAAM9D,QAAQ4D,KAAK5D,KAAK,CAAC;gBACzB,IAAIA,OAAO;oBACT,IAAIC,MAAMD,KAAK,CAAC,EAAE,CAAC+D,IAAI,GAAGC,WAAW,GAAGC,OAAO,CAAC,QAAQ;oBACxD,IAAIC,QAAQlE,KAAK,CAAC,EAAE,CAAC+D,IAAI;oBAIzB9D,MAAMA,IAAIgE,OAAO,CAAC,iBAAiB,CAACE,GAAGC,OAASA,KAAKH,OAAO,CAAC,OAAO;oBAGpEC,QAAQA,MAAMR,KAAK,CAAC,IAAI,CAAC,EAAE,CAACK,IAAI;oBAGhCG,QAAQA,MAAMD,OAAO,CAAC,kBAAkB;oBAGxC,IAAI,CAACxK,QAAQ,CAACwG,IAAI,EAAE;wBAClBxG,QAAQ,CAACwG,IAAI,GAAGiE;oBAClB;gBACF;YACF,OAAO;gBAIL,IAAI,CAACzK,SAASoJ,sBAAsB,EAAE;oBACpC,MAAMwB,eAAeT,KAAK5D,KAAK,CAAC;oBAChC,IAAIqE,gBAAgB3D,OAAO1F,QAAQ,CAACqJ,YAAY,CAAC,EAAE,IAAI,GAAG;wBACxD5K,SAASoJ,sBAAsB,GAAGwB,YAAY,CAAC,EAAE;oBACnD;gBACF;YACF;QACF;QAEA,OAAO5K;IACT;IAEQc,kBAAkBpB,UAA8B,EAAqB;QAC3E,MAAMmB,aAAgC,EAAE;QAExC,MAAMgK,eAAenL,WAAWkH,MAAM,CAAC9G,CAAAA,IACrCA,EAAEC,SAAS,CAACwG,KAAK,CAAC,oCAClBzG,EAAEC,SAAS,CAACwG,KAAK,CAAC;QAGpB,KAAK,MAAMO,SAAS+D,aAAc;YAChC,MAAMjF,SAASkB,MAAM/G,SAAS,CAACwG,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAACuE,iBAAiB;YACjF,MAAMtD,YAAYV,MAAM5G,OAAO;YAE/B,MAAMuH,YAAYX,MAAM/G,SAAS,CAACwG,KAAK,CAAC;YACxC,IAAIb,QAAQ+B,YAAYR,OAAO1F,QAAQ,CAACkG,SAAS,CAAC,EAAE,IAAI;YACxD,IAAI9B,SAAS8B,YAAYR,OAAO1F,QAAQ,CAACkG,SAAS,CAAC,EAAE,IAAI;YAEzD,IAAI/B,UAAU,KAAKC,WAAW,GAAG;gBAC/B,MAAM+B,aAAaC,IAAAA,mCAAkB,EAACH,WAAW5B;gBACjDF,QAAQgC,WAAWhC,KAAK;gBACxBC,SAAS+B,WAAW/B,MAAM;YAC5B;YAEA,MAAMoF,aAAavD,UAAUrH,QAAQ,CAAC;YAEtCU,WAAW8I,IAAI,CAAC;gBACdjE;gBACAC;gBACAC;gBACAE,MAAMiF;YACR;QACF;QAEA,OAAOlK;IACT;IAEQM,WAAWsJ,KAAyB,EAAiB;QAC3D,IAAI,CAACA,OAAO,OAAO;QACnB,MAAMO,MAAM/D,OAAO9F,UAAU,CAACsJ;QAC9B,OAAOxD,OAAOgE,KAAK,CAACD,OAAO,OAAOA;IACpC;IAEQzJ,SAASkJ,KAAyB,EAAiB;QACzD,IAAI,CAACA,OAAO,OAAO;QACnB,MAAMO,MAAM/D,OAAO1F,QAAQ,CAACkJ,OAAO;QACnC,OAAOxD,OAAOgE,KAAK,CAACD,OAAO,OAAOA;IACpC;IAEQhK,UAAUyJ,KAAyB,EAAiB;QAC1D,IAAI,CAACA,OAAO,OAAO;QAGnB,MAAMlE,QAAQkE,MAAMlE,KAAK,CAAC;QAC1B,IAAIA,SAAUA,CAAAA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,IAAIA,KAAK,CAAC,EAAE,AAAD,GAAI;YAC/C,MAAM2E,QAAQjE,OAAO1F,QAAQ,CAACgF,KAAK,CAAC,EAAE,IAAI;YAC1C,MAAM4E,UAAUlE,OAAO1F,QAAQ,CAACgF,KAAK,CAAC,EAAE,IAAI;YAC5C,MAAM6E,OAAOnE,OAAO1F,QAAQ,CAACgF,KAAK,CAAC,EAAE,IAAI;YACzC,OAAO2E,QAAQ,OAAOC,UAAU,KAAKC;QACvC;QAGA,MAAMC,UAAUpE,OAAO9F,UAAU,CAACsJ;QAClC,IAAI,CAACxD,OAAOgE,KAAK,CAACI,UAAU,OAAOA;QAEnC,OAAO;IACT;AACF"}
|