@esotericsoftware/spine-canvaskit 4.2.86 → 4.2.87
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/dist/esm/spine-canvaskit.min.mjs +1 -1
- package/dist/esm/spine-canvaskit.mjs +17 -7
- package/dist/esm/spine-canvaskit.mjs.map +2 -2
- package/dist/iife/spine-canvaskit.js +17 -7
- package/dist/iife/spine-canvaskit.js.map +2 -2
- package/dist/iife/spine-canvaskit.min.js +2 -2
- package/dist/index.js +23 -11
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -202,7 +202,8 @@ export class SkeletonRenderer {
|
|
|
202
202
|
let numVertices = 0;
|
|
203
203
|
if (attachment instanceof RegionAttachment) {
|
|
204
204
|
let region = attachment;
|
|
205
|
-
|
|
205
|
+
if (positions.length < 8)
|
|
206
|
+
this.scratchPositions = positions = Utils.newFloatArray(8);
|
|
206
207
|
numVertices = 4;
|
|
207
208
|
region.computeWorldVertices(slot, positions, 0, 2);
|
|
208
209
|
triangles = SkeletonRenderer.QUAD_TRIANGLES;
|
|
@@ -212,10 +213,8 @@ export class SkeletonRenderer {
|
|
|
212
213
|
}
|
|
213
214
|
else if (attachment instanceof MeshAttachment) {
|
|
214
215
|
let mesh = attachment;
|
|
215
|
-
positions
|
|
216
|
-
|
|
217
|
-
? Utils.newFloatArray(mesh.worldVerticesLength)
|
|
218
|
-
: positions;
|
|
216
|
+
if (positions.length < mesh.worldVerticesLength)
|
|
217
|
+
this.scratchPositions = positions = Utils.newFloatArray(mesh.worldVerticesLength);
|
|
219
218
|
numVertices = mesh.worldVerticesLength >> 1;
|
|
220
219
|
mesh.computeWorldVertices(slot, 0, mesh.worldVerticesLength, positions, 0, 2);
|
|
221
220
|
triangles = mesh.triangles;
|
|
@@ -235,9 +234,22 @@ export class SkeletonRenderer {
|
|
|
235
234
|
if (texture) {
|
|
236
235
|
if (clipper.isClipping()) {
|
|
237
236
|
clipper.clipTrianglesUnpacked(positions, triangles, triangles.length, uvs);
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
237
|
+
if (clipper.clippedVertices.length > 0) {
|
|
238
|
+
// clipping eventually "erases" clippedVertices array (set length to 0 at next clip)
|
|
239
|
+
// it's necessary to keep the array alive until canvaskit paints,
|
|
240
|
+
// otherwise a memory access occurs
|
|
241
|
+
if (positions.length < clipper.clippedVertices.length)
|
|
242
|
+
this.scratchPositions = positions = Utils.newFloatArray(clipper.clippedVertices.length);
|
|
243
|
+
numVertices = clipper.clippedVertices.length / 2;
|
|
244
|
+
for (let i = 0; i < clipper.clippedVertices.length; i++)
|
|
245
|
+
positions[i] = clipper.clippedVertices[i];
|
|
246
|
+
uvs = clipper.clippedUVs;
|
|
247
|
+
triangles = clipper.clippedTriangles;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
clipper.clipEndWithSlot(slot);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
241
253
|
}
|
|
242
254
|
let slotColor = slot.color;
|
|
243
255
|
let finalColor = this.tempColor;
|
|
@@ -246,7 +258,7 @@ export class SkeletonRenderer {
|
|
|
246
258
|
finalColor.b = skeletonColor.b * slotColor.b * attachmentColor.b;
|
|
247
259
|
finalColor.a = skeletonColor.a * slotColor.a * attachmentColor.a;
|
|
248
260
|
if (colors.length / 4 < numVertices)
|
|
249
|
-
colors = Utils.newFloatArray(numVertices * 4);
|
|
261
|
+
this.scratchColors = colors = Utils.newFloatArray(numVertices * 4);
|
|
250
262
|
for (let i = 0, n = numVertices * 4; i < n; i += 4) {
|
|
251
263
|
colors[i] = finalColor.r;
|
|
252
264
|
colors[i + 1] = finalColor.g;
|
|
@@ -254,7 +266,7 @@ export class SkeletonRenderer {
|
|
|
254
266
|
colors[i + 3] = finalColor.a;
|
|
255
267
|
}
|
|
256
268
|
const scaledUvs = this.scratchUVs.length < uvs.length
|
|
257
|
-
? Utils.newFloatArray(uvs.length)
|
|
269
|
+
? (this.scratchUVs = Utils.newFloatArray(uvs.length))
|
|
258
270
|
: this.scratchUVs;
|
|
259
271
|
const width = texture.getImage().image.width();
|
|
260
272
|
const height = texture.getImage().image.height();
|
|
@@ -272,4 +284,4 @@ export class SkeletonRenderer {
|
|
|
272
284
|
clipper.clipEnd();
|
|
273
285
|
}
|
|
274
286
|
}
|
|
275
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsT0FBTyxFQUNOLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsS0FBSyxFQUNMLGNBQWMsRUFFZCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixjQUFjLEVBQ2QsZ0JBQWdCLEVBRWhCLFlBQVksRUFDWixPQUFPLEVBQ1AsWUFBWSxFQUdaLEtBQUssR0FDTCxNQUFNLDhCQUE4QixDQUFDO0FBV3RDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBUXRCLGdEQUFnRDtBQUNoRCxTQUFTLGFBQWEsQ0FBRSxFQUFhLEVBQUUsU0FBb0I7SUFDMUQsUUFBUSxTQUFTLEVBQUUsQ0FBQztRQUNuQixLQUFLLFNBQVMsQ0FBQyxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDN0IsS0FBSyxTQUFTLENBQUMsUUFBUTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzFCLEtBQUssU0FBUyxDQUFDLFFBQVE7WUFDdEIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM3QixLQUFLLFNBQVMsQ0FBQyxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDNUI7WUFDQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7QUFDRixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBRSxNQUFXO0lBQ3ZDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDbkMsT0FBTyxNQUFN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LENBQUM7SUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgSnVseSAyOCwgMjAyMy4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDIzLCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yXG4gKiBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhFXG4gKiBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0ICogZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcblxuaW1wb3J0IHtcblx0QW5pbWF0aW9uU3RhdGUsXG5cdEFuaW1hdGlvblN0YXRlRGF0YSxcblx0QXRsYXNBdHRhY2htZW50TG9hZGVyLFxuXHRCbGVuZE1vZGUsXG5cdENsaXBwaW5nQXR0YWNobWVudCxcblx0Q29sb3IsXG5cdE1lc2hBdHRhY2htZW50LFxuXHROdW1iZXJBcnJheUxpa2UsXG5cdFBoeXNpY3MsXG5cdFJlZ2lvbkF0dGFjaG1lbnQsXG5cdFNrZWxldG9uLFxuXHRTa2VsZXRvbkJpbmFyeSxcblx0U2tlbGV0b25DbGlwcGluZyxcblx0U2tlbGV0b25EYXRhLFxuXHRTa2VsZXRvbkpzb24sXG5cdFRleHR1cmUsXG5cdFRleHR1cmVBdGxhcyxcblx0VGV4dHVyZUZpbHRlcixcblx0VGV4dHVyZVdyYXAsXG5cdFV0aWxzLFxufSBmcm9tIFwiQGVzb3Rlcmljc29mdHdhcmUvc3BpbmUtY29yZVwiO1xuaW1wb3J0IHtcblx0Q2FudmFzLFxuXHRTdXJmYWNlLFxuXHRDYW52YXNLaXQsXG5cdEltYWdlLFxuXHRQYWludCxcblx0U2hhZGVyLFxuXHRCbGVuZE1vZGUgYXMgQ2FudmFzS2l0QmxlbmRNb2RlLFxufSBmcm9tIFwiY2FudmFza2l0LXdhc21cIjtcblxuU2tlbGV0b24ueURvd24gPSB0cnVlO1xuXG50eXBlIENhbnZhc0tpdEltYWdlID0ge1xuXHRzaGFkZXJzOiBTaGFkZXJbXTtcblx0cGFpbnRQZXJCbGVuZE1vZGU6IE1hcDxCbGVuZE1vZGUsIFBhaW50Pjtcblx0aW1hZ2U6IEltYWdlO1xufTtcblxuLy8gQ2FudmFzS2l0IGJsZW5kIG1vZGVzIGZvciBwcmVtdWx0aXBsaWVkIGFscGhhXG5mdW5jdGlvbiB0b0NrQmxlbmRNb2RlIChjazogQ2FudmFzS2l0LCBibGVuZE1vZGU6IEJsZW5kTW9kZSkge1xuXHRzd2l0Y2ggKGJsZW5kTW9kZSkge1xuXHRcdGNhc2UgQmxlbmRNb2RlLk5vcm1hbDpcblx0XHRcdHJldHVybiBjay5CbGVuZE1vZGUuU3JjT3Zlcjtcblx0XHRjYXNlIEJsZW5kTW9kZS5BZGRpdGl2ZTpcblx0XHRcdHJldHVybiBjay5CbGVuZE1vZGUuUGx1cztcblx0XHRjYXNlIEJsZW5kTW9kZS5NdWx0aXBseTpcblx0XHRcdHJldHVybiBjay5CbGVuZE1vZGUuU3JjT3Zlcjtcblx0XHRjYXNlIEJsZW5kTW9kZS5TY3JlZW46XG5cdFx0XHRyZXR1cm4gY2suQmxlbmRNb2RlLlNjcmVlbjtcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIGNrLkJsZW5kTW9kZS5TcmNPdmVyO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGJ1ZmZlclRvVXRmOFN0cmluZyAoYnVmZmVyOiBhbnkpIHtcblx0aWYgKHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcblx0XHRyZXR1cm4gYnVmZmVyLnRvU3RyaW5nKFwidXRmLThcIik7XG5cdH0gZWxzZSBpZiAodHlwZW9mIFRleHREZWNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0cmV0dXJuIG5ldyBUZXh0RGVjb2RlcihcInV0Zi04XCIpLmRlY29kZShidWZmZXIpO1xuXHR9IGVsc2Uge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGVudmlyb25tZW50XCIpO1xuXHR9XG59XG5cbmNsYXNzIENhbnZhc0tpdFRleHR1cmUgZXh0ZW5kcyBUZXh0dXJlIHtcblx0Z2V0SW1hZ2UgKCk6IENhbnZhc0tpdEltYWdlIHtcblx0XHRyZXR1cm4gdGhpcy5faW1hZ2U7XG5cdH1cblxuXHRzZXRGaWx0ZXJzIChtaW5GaWx0ZXI6IFRleHR1cmVGaWx0ZXIsIG1hZ0ZpbHRlcjogVGV4dHVyZUZpbHRlcik6IHZvaWQgeyB9XG5cblx0c2V0V3JhcHMgKHVXcmFwOiBUZXh0dXJlV3JhcCwgdldyYXA6IFRleHR1cmVXcmFwKTogdm9pZCB7IH1cblxuXHRkaXNwb3NlICgpOiB2b2lkIHtcblx0XHRjb25zdCBkYXRhOiBDYW52YXNLaXRJbWFnZSA9IHRoaXMuX2ltYWdlO1xuXHRcdGZvciAoY29uc3QgcGFpbnQgb2YgZGF0YS5wYWludFBlckJsZW5kTW9kZS52YWx1ZXMoKSkge1xuXHRcdFx0cGFpbnQuZGVsZXRlKCk7XG5cdFx0fVxuXHRcdGZvciAoY29uc3Qgc2hhZGVyIG9mIGRhdGEuc2hhZGVycykge1xuXHRcdFx0c2hhZGVyLmRlbGV0ZSgpO1xuXHRcdH1cblx0XHRkYXRhLmltYWdlLmRlbGV0ZSgpO1xuXHRcdHRoaXMuX2ltYWdlID0gbnVsbDtcblx0fVxuXG5cdHN0YXRpYyBhc3luYyBmcm9tRmlsZSAoXG5cdFx0Y2s6IENhbnZhc0tpdCxcblx0XHRwYXRoOiBzdHJpbmcsXG5cdFx0cmVhZEZpbGU6IChwYXRoOiBzdHJpbmcpID0+IFByb21pc2U8YW55PlxuXHQpOiBQcm9taXNlPENhbnZhc0tpdFRleHR1cmU+IHtcblx0XHRjb25zdCBpbWdEYXRhID0gYXdhaXQgcmVhZEZpbGUocGF0aCk7XG5cdFx0aWYgKCFpbWdEYXRhKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBsb2FkIGltYWdlICR7cGF0aH1gKTtcblx0XHRjb25zdCBpbWFnZSA9IGNrLk1ha2VJbWFnZUZyb21FbmNvZGVkKGltZ0RhdGEpO1xuXHRcdGlmICghaW1hZ2UpIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGxvYWQgaW1hZ2UgJHtwYXRofWApO1xuXHRcdGNvbnN0IHBhaW50UGVyQmxlbmRNb2RlID0gbmV3IE1hcDxCbGVuZE1vZGUsIFBhaW50PigpO1xuXHRcdGNvbnN0IHNoYWRlcnM6IFNoYWRlcltdID0gW107XG5cdFx0Zm9yIChjb25zdCBibGVuZE1vZGUgb2YgW1xuXHRcdFx0QmxlbmRNb2RlLk5vcm1hbCxcblx0XHRcdEJsZW5kTW9kZS5BZGRpdGl2ZSxcblx0XHRcdEJsZW5kTW9kZS5NdWx0aXBseSxcblx0XHRcdEJsZW5kTW9kZS5TY3JlZW4sXG5cdFx0XSkge1xuXHRcdFx0Y29uc3QgcGFpbnQgPSBuZXcgY2suUGFpbnQoKTtcblx0XHRcdGNvbnN0IHNoYWRlciA9IGltYWdlLm1ha2VTaGFkZXJPcHRpb25zKFxuXHRcdFx0XHRjay5UaWxlTW9kZS5DbGFtcCxcblx0XHRcdFx0Y2suVGlsZU1vZGUuQ2xhbXAsXG5cdFx0XHRcdGNrLkZpbHRlck1vZGUuTGluZWFyLFxuXHRcdFx0XHRjay5NaXBtYXBNb2RlLkxpbmVhclxuXHRcdFx0KTtcblx0XHRcdHBhaW50LnNldFNoYWRlcihzaGFkZXIpO1xuXHRcdFx0cGFpbnQuc2V0QmxlbmRNb2RlKHRvQ2tCbGVuZE1vZGUoY2ssIGJsZW5kTW9kZSkpO1xuXHRcdFx0cGFpbnRQZXJCbGVuZE1vZGUuc2V0KGJsZW5kTW9kZSwgcGFpbnQpO1xuXHRcdFx0c2hhZGVycy5wdXNoKHNoYWRlcik7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgQ2FudmFzS2l0VGV4dHVyZSh7IHNoYWRlcnMsIHBhaW50UGVyQmxlbmRNb2RlLCBpbWFnZSB9KTtcblx0fVxufVxuXG4vKipcbiAqIExvYWRzIGEge0BsaW5rIFRleHR1cmVBdGxhc30gYW5kIGl0cyBhdGxhcyBwYWdlIGltYWdlcyBmcm9tIHRoZSBnaXZlbiBmaWxlIHBhdGggdXNpbmcgdGhlIGByZWFkRmlsZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj5gIGZ1bmN0aW9uLlxuICogVGhyb3dzIGFuIGBFcnJvcmAgaWYgdGhlIGZpbGUgb3Igb25lIG9mIHRoZSBhdGxhcyBwYWdlIGltYWdlcyBjb3VsZCBub3QgYmUgbG9hZGVkLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFRleHR1cmVBdGxhcyAoXG5cdGNrOiBDYW52YXNLaXQsXG5cdGF0bGFzRmlsZTogc3RyaW5nLFxuXHRyZWFkRmlsZTogKHBhdGg6IHN0cmluZykgPT4gUHJvbWlzZTxCdWZmZXI+XG4pOiBQcm9taXNlPFRleHR1cmVBdGxhcz4ge1xuXHRjb25zdCBhdGxhcyA9IG5ldyBUZXh0dXJlQXRsYXMoYnVmZmVyVG9VdGY4U3RyaW5nKGF3YWl0IHJlYWRGaWxlKGF0bGFzRmlsZSkpKTtcblx0Y29uc3Qgc2xhc2hJbmRleCA9IGF0bGFzRmlsZS5sYXN0SW5kZXhPZihcIi9cIik7XG5cdGNvbnN0IHBhcmVudERpciA9XG5cdFx0c2xhc2hJbmRleCA+PSAwID8gYXRsYXNGaWxlLnN1YnN0cmluZygwLCBzbGFzaEluZGV4ICsgMSkgOiBcIlwiO1xuXHRmb3IgKGNvbnN0IHBhZ2Ugb2YgYXRsYXMucGFnZXMpIHtcblx0XHRjb25zdCB0ZXh0dXJlID0gYXdhaXQgQ2FudmFzS2l0VGV4dHVyZS5mcm9tRmlsZShcblx0XHRcdGNrLFxuXHRcdFx0cGFyZW50RGlyICsgcGFnZS5uYW1lLFxuXHRcdFx0cmVhZEZpbGVcblx0XHQpO1xuXHRcdHBhZ2Uuc2V0VGV4dHVyZSh0ZXh0dXJlKTtcblx0fVxuXHRyZXR1cm4gYXRsYXM7XG59XG5cbi8qKlxuICogTG9hZHMgYSB7QGxpbmsgU2tlbGV0b25EYXRhfcKgZnJvbSB0aGUgZ2l2ZW4gZmlsZSBwYXRoIChgLmpzb25gIG9yIGAuc2tlbGApIHVzaW5nIHRoZSBgcmVhZEZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+YCBmdW5jdGlvbi5cbiAqIEF0dGFjaG1lbnRzIHdpbGwgYmUgbG9va2VkIHVwIGluIHRoZSBwcm92aWRlZCBhdGxhcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRTa2VsZXRvbkRhdGEgKFxuXHRza2VsZXRvbkZpbGU6IHN0cmluZyxcblx0YXRsYXM6IFRleHR1cmVBdGxhcyxcblx0cmVhZEZpbGU6IChwYXRoOiBzdHJpbmcpID0+IFByb21pc2U8QnVmZmVyPixcblx0c2NhbGUgPSAxXG4pOiBQcm9taXNlPFNrZWxldG9uRGF0YT4ge1xuXHRjb25zdCBhdHRhY2htZW50TG9hZGVyID0gbmV3IEF0bGFzQXR0YWNobWVudExvYWRlcihhdGxhcyk7XG5cdGNvbnN0IGxvYWRlciA9IHNrZWxldG9uRmlsZS5lbmRzV2l0aChcIi5qc29uXCIpXG5cdFx0PyBuZXcgU2tlbGV0b25Kc29uKGF0dGFjaG1lbnRMb2FkZXIpXG5cdFx0OiBuZXcgU2tlbGV0b25CaW5hcnkoYXR0YWNobWVudExvYWRlcik7XG5cdGxvYWRlci5zY2FsZSA9IHNjYWxlO1xuXHRsZXQgZGF0YSA9IGF3YWl0IHJlYWRGaWxlKHNrZWxldG9uRmlsZSk7XG5cdGlmIChza2VsZXRvbkZpbGUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuXHRcdGRhdGEgPSBidWZmZXJUb1V0ZjhTdHJpbmcoZGF0YSk7XG5cdH1cblx0Y29uc3Qgc2tlbGV0b25EYXRhID0gbG9hZGVyLnJlYWRTa2VsZXRvbkRhdGEoZGF0YSk7XG5cdHJldHVybiBza2VsZXRvbkRhdGE7XG59XG5cbi8qKlxuICogTWFuYWdlcyBhIHtAbGluayBTa2VsZXRvbn0gYW5kIGl0cyBhc3NvY2lhdGVkIHtAbGluayBBbmltYXRpb25TdGF0ZX0uIEEgZHJhd2FibGUgaXMgY29uc3RydWN0ZWQgZnJvbSBhIHtAbGluayBTa2VsZXRvbkRhdGF9LCB3aGljaCBjYW5cbiAqIGJlIHNoYXJlZCBieSBhbnkgbnVtYmVyIG9mIGRyYXdhYmxlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNrZWxldG9uRHJhd2FibGUge1xuXHRwdWJsaWMgcmVhZG9ubHkgc2tlbGV0b246IFNrZWxldG9uO1xuXHRwdWJsaWMgcmVhZG9ubHkgYW5pbWF0aW9uU3RhdGU6IEFuaW1hdGlvblN0YXRlO1xuXG5cdC8qKlxuXHQgKiBDb25zdHJ1Y3RzIGEgbmV3IGRyYXdibGUgZnJvbSB0aGUgc2tlbGV0b24gZGF0YS5cblx0ICovXG5cdGNvbnN0cnVjdG9yIChza2VsZXRvbkRhdGE6IFNrZWxldG9uRGF0YSkge1xuXHRcdHRoaXMuc2tlbGV0b24gPSBuZXcgU2tlbGV0b24oc2tlbGV0b25EYXRhKTtcblx0XHR0aGlzLmFuaW1hdGlvblN0YXRlID0gbmV3IEFuaW1hdGlvblN0YXRlKFxuXHRcdFx0bmV3IEFuaW1hdGlvblN0YXRlRGF0YShza2VsZXRvbkRhdGEpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBVcGRhdGVzIHRoZSBhbmltYXRpb24gc3RhdGUgYW5kIHNrZWxldG9uIHRpbWUgYnkgdGhlIGRlbHRhIHRpbWUuIEFwcGxpZXMgdGhlXG5cdCAqIGFuaW1hdGlvbnMgdG8gdGhlIHNrZWxldG9uIGFuZCBjYWxjdWxhdGVzIHRoZSBmaW5hbCBwb3NlIG9mIHRoZSBza2VsZXRvbi5cblx0ICpcblx0ICogQHBhcmFtIGRlbHRhVGltZSB0aGUgdGltZSBzaW5jZSB0aGUgbGFzdCB1cGRhdGUgaW4gc2Vjb25kc1xuXHQgKiBAcGFyYW0gcGh5c2ljc1VwZGF0ZSBvcHRpb25hbCB7QGxpbmsgUGh5c2ljc30gdXBkYXRlIG1vZGUuXG5cdCAqL1xuXHR1cGRhdGUgKGRlbHRhVGltZTogbnVtYmVyLCBwaHlzaWNzVXBkYXRlOiBQaHlzaWNzID0gUGh5c2ljcy51cGRhdGUpIHtcblx0XHR0aGlzLmFuaW1hdGlvblN0YXRlLnVwZGF0ZShkZWx0YVRpbWUpO1xuXHRcdHRoaXMuc2tlbGV0b24udXBkYXRlKGRlbHRhVGltZSk7XG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZS5hcHBseSh0aGlzLnNrZWxldG9uKTtcblx0XHR0aGlzLnNrZWxldG9uLnVwZGF0ZVdvcmxkVHJhbnNmb3JtKHBoeXNpY3NVcGRhdGUpO1xuXHR9XG59XG5cbi8qKlxuICogUmVuZGVycyBhIHtAbGluayBTa2VsZXRvbn0gb3Ige0BsaW5rIFNrZWxldG9uRHJhd2FibGV9IHRvIGEgQ2FudmFzS2l0IHtAbGluayBDYW52YXN9LlxuICovXG5leHBvcnQgY2xhc3MgU2tlbGV0b25SZW5kZXJlciB7XG5cdHByaXZhdGUgY2xpcHBlciA9IG5ldyBTa2VsZXRvbkNsaXBwaW5nKCk7XG5cdHByaXZhdGUgdGVtcENvbG9yID0gbmV3IENvbG9yKCk7XG5cdHByaXZhdGUgdGVtcENvbG9yMiA9IG5ldyBDb2xvcigpO1xuXHRwcml2YXRlIHN0YXRpYyBRVUFEX1RSSUFOR0xFUyA9IFswLCAxLCAyLCAyLCAzLCAwXTtcblx0cHJpdmF0ZSBzY3JhdGNoUG9zaXRpb25zID0gVXRpbHMubmV3RmxvYXRBcnJheSgxMDApO1xuXHRwcml2YXRlIHNjcmF0Y2hDb2xvcnMgPSBVdGlscy5uZXdGbG9hdEFycmF5KDEwMCk7XG5cdHByaXZhdGUgc2NyYXRjaFVWcyA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoMTAwKTtcblxuXHQvKipcblx0ICogQ3JlYXRlcyBhIG5ldyBza2VsZXRvbiByZW5kZXJlci5cblx0ICogQHBhcmFtIGNrIHRoZSB7QGxpbmsgQ2FudmFzS2l0fSBpbnN0YW5jZSByZXR1cm5lZCBieSBgQ2FudmFzS2l0SW5pdCgpYC5cblx0ICovXG5cdGNvbnN0cnVjdG9yIChwcml2YXRlIGNrOiBDYW52YXNLaXQpIHsgfVxuXG5cdC8qKlxuXHQgKiBSZW5kZXJzIGEgc2tlbGV0b24gb3Igc2tlbGV0b24gZHJhd2FibGUgaW4gaXRzIGN1cnJlbnQgcG9zZSB0byB0aGUgY2FudmFzLlxuXHQgKiBAcGFyYW0gY2FudmFzIHRoZSBjYW52YXMgdG8gcmVuZGVyIHRvLlxuXHQgKiBAcGFyYW0gc2tlbGV0b24gdGhlIHNrZWxldG9uIG9yIGRyYXdhYmxlIHRvIHJlbmRlci5cblx0ICovXG5cdHJlbmRlciAoY2FudmFzOiBDYW52YXMsIHNrZWxldG9uOiBTa2VsZXRvbiB8IFNrZWxldG9uRHJhd2FibGUpIHtcblx0XHRpZiAoc2tlbGV0b24gaW5zdGFuY2VvZiBTa2VsZXRvbkRyYXdhYmxlKSBza2VsZXRvbiA9IHNrZWxldG9uLnNrZWxldG9uO1xuXHRcdGxldCBjbGlwcGVyID0gdGhpcy5jbGlwcGVyO1xuXHRcdGxldCBkcmF3T3JkZXIgPSBza2VsZXRvbi5kcmF3T3JkZXI7XG5cdFx0bGV0IHNrZWxldG9uQ29sb3IgPSBza2VsZXRvbi5jb2xvcjtcblxuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBkcmF3T3JkZXJbaV07XG5cdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kV2l0aFNsb3Qoc2xvdCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgYXR0YWNobWVudCA9IHNsb3QuZ2V0QXR0YWNobWVudCgpO1xuXHRcdFx0bGV0IHBvc2l0aW9ucyA9IHRoaXMuc2NyYXRjaFBvc2l0aW9ucztcblx0XHRcdGxldCBjb2xvcnMgPSB0aGlzLnNjcmF0Y2hDb2xvcnM7XG5cdFx0XHRsZXQgdXZzOiBOdW1iZXJBcnJheUxpa2U7XG5cdFx0XHRsZXQgdGV4dHVyZTogQ2FudmFzS2l0VGV4dHVyZTtcblx0XHRcdGxldCB0cmlhbmdsZXM6IEFycmF5PG51bWJlcj47XG5cdFx0XHRsZXQgYXR0YWNobWVudENvbG9yOiBDb2xvcjtcblx0XHRcdGxldCBudW1WZXJ0aWNlcyA9IDA7XG5cdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0bGV0IHJlZ2lvbiA9IGF0dGFjaG1lbnQgYXMgUmVnaW9uQXR0YWNobWVudDtcblx0XHRcdFx0cG9zaXRpb25zID0gcG9zaXRpb25zLmxlbmd0aCA8IDggPyBVdGlscy5uZXdGbG9hdEFycmF5KDgpIDogcG9zaXRpb25zO1xuXHRcdFx0XHRudW1WZXJ0aWNlcyA9IDQ7XG5cdFx0XHRcdHJlZ2lvbi5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCBwb3NpdGlvbnMsIDAsIDIpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBTa2VsZXRvblJlbmRlcmVyLlFVQURfVFJJQU5HTEVTO1xuXHRcdFx0XHR1dnMgPSByZWdpb24udXZzIGFzIEZsb2F0MzJBcnJheTtcblx0XHRcdFx0dGV4dHVyZSA9IHJlZ2lvbi5yZWdpb24/LnRleHR1cmUgYXMgQ2FudmFzS2l0VGV4dHVyZTtcblx0XHRcdFx0YXR0YWNobWVudENvbG9yID0gcmVnaW9uLmNvbG9yO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgTWVzaEF0dGFjaG1lbnQpIHtcblx0XHRcdFx0bGV0IG1lc2ggPSBhdHRhY2htZW50IGFzIE1lc2hBdHRhY2htZW50O1xuXHRcdFx0XHRwb3NpdGlvbnMgPVxuXHRcdFx0XHRcdHBvc2l0aW9ucy5sZW5ndGggPCBtZXNoLndvcmxkVmVydGljZXNMZW5ndGhcblx0XHRcdFx0XHRcdD8gVXRpbHMubmV3RmxvYXRBcnJheShtZXNoLndvcmxkVmVydGljZXNMZW5ndGgpXG5cdFx0XHRcdFx0XHQ6IHBvc2l0aW9ucztcblx0XHRcdFx0bnVtVmVydGljZXMgPSBtZXNoLndvcmxkVmVydGljZXNMZW5ndGggPj4gMTtcblx0XHRcdFx0bWVzaC5jb21wdXRlV29ybGRWZXJ0aWNlcyhcblx0XHRcdFx0XHRzbG90LFxuXHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0bWVzaC53b3JsZFZlcnRpY2VzTGVuZ3RoLFxuXHRcdFx0XHRcdHBvc2l0aW9ucyxcblx0XHRcdFx0XHQwLFxuXHRcdFx0XHRcdDJcblx0XHRcdFx0KTtcblx0XHRcdFx0dHJpYW5nbGVzID0gbWVzaC50cmlhbmdsZXM7XG5cdFx0XHRcdHRleHR1cmUgPSBtZXNoLnJlZ2lvbj8udGV4dHVyZSBhcyBDYW52YXNLaXRUZXh0dXJlO1xuXHRcdFx0XHR1dnMgPSBtZXNoLnV2cyBhcyBGbG9hdDMyQXJyYXk7XG5cdFx0XHRcdGF0dGFjaG1lbnRDb2xvciA9IG1lc2guY29sb3I7XG5cdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBDbGlwcGluZ0F0dGFjaG1lbnQpIHtcblx0XHRcdFx0bGV0IGNsaXAgPSBhdHRhY2htZW50IGFzIENsaXBwaW5nQXR0YWNobWVudDtcblx0XHRcdFx0Y2xpcHBlci5jbGlwU3RhcnQoc2xvdCwgY2xpcCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2xpcHBlci5jbGlwRW5kV2l0aFNsb3Qoc2xvdCk7XG5cdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGV4dHVyZSkge1xuXHRcdFx0XHRpZiAoY2xpcHBlci5pc0NsaXBwaW5nKCkpIHtcblx0XHRcdFx0XHRjbGlwcGVyLmNsaXBUcmlhbmdsZXNVbnBhY2tlZChcblx0XHRcdFx0XHRcdHBvc2l0aW9ucyxcblx0XHRcdFx0XHRcdHRyaWFuZ2xlcyxcblx0XHRcdFx0XHRcdHRyaWFuZ2xlcy5sZW5ndGgsXG5cdFx0XHRcdFx0XHR1dnNcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdHBvc2l0aW9ucyA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzO1xuXHRcdFx0XHRcdHV2cyA9IGNsaXBwZXIuY2xpcHBlZFVWcztcblx0XHRcdFx0XHR0cmlhbmdsZXMgPSBjbGlwcGVyLmNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgc2xvdENvbG9yID0gc2xvdC5jb2xvcjtcblx0XHRcdFx0bGV0IGZpbmFsQ29sb3IgPSB0aGlzLnRlbXBDb2xvcjtcblx0XHRcdFx0ZmluYWxDb2xvci5yID0gc2tlbGV0b25Db2xvci5yICogc2xvdENvbG9yLnIgKiBhdHRhY2htZW50Q29sb3Iucjtcblx0XHRcdFx0ZmluYWxDb2xvci5nID0gc2tlbGV0b25Db2xvci5nICogc2xvdENvbG9yLmcgKiBhdHRhY2htZW50Q29sb3IuZztcblx0XHRcdFx0ZmluYWxDb2xvci5iID0gc2tlbGV0b25Db2xvci5iICogc2xvdENvbG9yLmIgKiBhdHRhY2htZW50Q29sb3IuYjtcblx0XHRcdFx0ZmluYWxDb2xvci5hID0gc2tlbGV0b25Db2xvci5hICogc2xvdENvbG9yLmEgKiBhdHRhY2htZW50Q29sb3IuYTtcblxuXHRcdFx0XHRpZiAoY29sb3JzLmxlbmd0aCAvIDQgPCBudW1WZXJ0aWNlcylcblx0XHRcdFx0XHRjb2xvcnMgPSBVdGlscy5uZXdGbG9hdEFycmF5KG51bVZlcnRpY2VzICogNCk7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gbnVtVmVydGljZXMgKiA0OyBpIDwgbjsgaSArPSA0KSB7XG5cdFx0XHRcdFx0Y29sb3JzW2ldID0gZmluYWxDb2xvci5yO1xuXHRcdFx0XHRcdGNvbG9yc1tpICsgMV0gPSBmaW5hbENvbG9yLmc7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKyAyXSA9IGZpbmFsQ29sb3IuYjtcblx0XHRcdFx0XHRjb2xvcnNbaSArIDNdID0gZmluYWxDb2xvci5hO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3Qgc2NhbGVkVXZzID1cblx0XHRcdFx0XHR0aGlzLnNjcmF0Y2hVVnMubGVuZ3RoIDwgdXZzLmxlbmd0aFxuXHRcdFx0XHRcdFx0PyBVdGlscy5uZXdGbG9hdEFycmF5KHV2cy5sZW5ndGgpXG5cdFx0XHRcdFx0XHQ6IHRoaXMuc2NyYXRjaFVWcztcblx0XHRcdFx0Y29uc3Qgd2lkdGggPSB0ZXh0dXJlLmdldEltYWdlKCkuaW1hZ2Uud2lkdGgoKTtcblx0XHRcdFx0Y29uc3QgaGVpZ2h0ID0gdGV4dHVyZS5nZXRJbWFnZSgpLmltYWdlLmhlaWdodCgpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHV2cy5sZW5ndGg7IGkgKz0gMikge1xuXHRcdFx0XHRcdHNjYWxlZFV2c1tpXSA9IHV2c1tpXSAqIHdpZHRoO1xuXHRcdFx0XHRcdHNjYWxlZFV2c1tpICsgMV0gPSB1dnNbaSArIDFdICogaGVpZ2h0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgYmxlbmRNb2RlID0gc2xvdC5kYXRhLmJsZW5kTW9kZTtcblx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB0aGlzLmNrLk1ha2VWZXJ0aWNlcyhcblx0XHRcdFx0XHR0aGlzLmNrLlZlcnRleE1vZGUuVHJpYW5nbGVzLFxuXHRcdFx0XHRcdHBvc2l0aW9ucyxcblx0XHRcdFx0XHRzY2FsZWRVdnMsXG5cdFx0XHRcdFx0Y29sb3JzLFxuXHRcdFx0XHRcdHRyaWFuZ2xlcyxcblx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjYW52YXMuZHJhd1ZlcnRpY2VzKFxuXHRcdFx0XHRcdHZlcnRpY2VzLFxuXHRcdFx0XHRcdHRoaXMuY2suQmxlbmRNb2RlLk1vZHVsYXRlLFxuXHRcdFx0XHRcdHRleHR1cmUuZ2V0SW1hZ2UoKS5wYWludFBlckJsZW5kTW9kZS5nZXQoYmxlbmRNb2RlKSFcblx0XHRcdFx0KTtcblx0XHRcdFx0dmVydGljZXMuZGVsZXRlKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNsaXBwZXIuY2xpcEVuZFdpdGhTbG90KHNsb3QpO1xuXHRcdH1cblx0XHRjbGlwcGVyLmNsaXBFbmQoKTtcblx0fVxufVxuIl19
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRS9FLGNBQWMsOEJBQThCLENBQUM7QUFFN0MsT0FBTyxFQUNOLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxrQkFBa0IsRUFDbEIsS0FBSyxFQUNMLGNBQWMsRUFFZCxPQUFPLEVBQ1AsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixjQUFjLEVBQ2QsZ0JBQWdCLEVBRWhCLFlBQVksRUFDWixPQUFPLEVBQ1AsWUFBWSxFQUdaLEtBQUssR0FDTCxNQUFNLDhCQUE4QixDQUFDO0FBU3RDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBUXRCLGdEQUFnRDtBQUNoRCxTQUFTLGFBQWEsQ0FBRSxFQUFhLEVBQUUsU0FBb0I7SUFDMUQsUUFBUSxTQUFTLEVBQUUsQ0FBQztRQUNuQixLQUFLLFNBQVMsQ0FBQyxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDN0IsS0FBSyxTQUFTLENBQUMsUUFBUTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzFCLEtBQUssU0FBUyxDQUFDLFFBQVE7WUFDdEIsT0FBTyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM3QixLQUFLLFNBQVMsQ0FBQyxNQUFNO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDNUI7WUFDQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQzlCLENBQUM7QUFDRixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBRSxNQUFXO0lBQ3ZDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDbkMsT0FBTyxNQUFN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QVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7Z0JBQ3hDLENBQUM7Z0JBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUNwQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQzVCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLENBQ0wsQ0FBQztnQkFDRixNQUFNLENBQUMsWUFBWSxDQUNsQixRQUFRLEVBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUMxQixPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUNwRCxDQUFDO2dCQUNGLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixDQUFDO1lBRUQsT0FBTyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEp1bHkgMjgsIDIwMjMuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyMywgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvclxuICogb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRIRVxuICogU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmV4cG9ydCAqIGZyb20gXCJAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS1jb3JlXCI7XG5cbmltcG9ydCB7XG5cdEFuaW1hdGlvblN0YXRlLFxuXHRBbmltYXRpb25TdGF0ZURhdGEsXG5cdEF0bGFzQXR0YWNobWVudExvYWRlcixcblx0QmxlbmRNb2RlLFxuXHRDbGlwcGluZ0F0dGFjaG1lbnQsXG5cdENvbG9yLFxuXHRNZXNoQXR0YWNobWVudCxcblx0TnVtYmVyQXJyYXlMaWtlLFxuXHRQaHlzaWNzLFxuXHRSZWdpb25BdHRhY2htZW50LFxuXHRTa2VsZXRvbixcblx0U2tlbGV0b25CaW5hcnksXG5cdFNrZWxldG9uQ2xpcHBpbmcsXG5cdFNrZWxldG9uRGF0YSxcblx0U2tlbGV0b25Kc29uLFxuXHRUZXh0dXJlLFxuXHRUZXh0dXJlQXRsYXMsXG5cdFRleHR1cmVGaWx0ZXIsXG5cdFRleHR1cmVXcmFwLFxuXHRVdGlscyxcbn0gZnJvbSBcIkBlc290ZXJpY3NvZnR3YXJlL3NwaW5lLWNvcmVcIjtcbmltcG9ydCB7XG5cdENhbnZhcyxcblx0Q2FudmFzS2l0LFxuXHRJbWFnZSxcblx0UGFpbnQsXG5cdFNoYWRlcixcbn0gZnJvbSBcImNhbnZhc2tpdC13YXNtXCI7XG5cblNrZWxldG9uLnlEb3duID0gdHJ1ZTtcblxudHlwZSBDYW52YXNLaXRJbWFnZSA9IHtcblx0c2hhZGVyczogU2hhZGVyW107XG5cdHBhaW50UGVyQmxlbmRNb2RlOiBNYXA8QmxlbmRNb2RlLCBQYWludD47XG5cdGltYWdlOiBJbWFnZTtcbn07XG5cbi8vIENhbnZhc0tpdCBibGVuZCBtb2RlcyBmb3IgcHJlbXVsdGlwbGllZCBhbHBoYVxuZnVuY3Rpb24gdG9Da0JsZW5kTW9kZSAoY2s6IENhbnZhc0tpdCwgYmxlbmRNb2RlOiBCbGVuZE1vZGUpIHtcblx0c3dpdGNoIChibGVuZE1vZGUpIHtcblx0XHRjYXNlIEJsZW5kTW9kZS5Ob3JtYWw6XG5cdFx0XHRyZXR1cm4gY2suQmxlbmRNb2RlLlNyY092ZXI7XG5cdFx0Y2FzZSBCbGVuZE1vZGUuQWRkaXRpdmU6XG5cdFx0XHRyZXR1cm4gY2suQmxlbmRNb2RlLlBsdXM7XG5cdFx0Y2FzZSBCbGVuZE1vZGUuTXVsdGlwbHk6XG5cdFx0XHRyZXR1cm4gY2suQmxlbmRNb2RlLlNyY092ZXI7XG5cdFx0Y2FzZSBCbGVuZE1vZGUuU2NyZWVuOlxuXHRcdFx0cmV0dXJuIGNrLkJsZW5kTW9kZS5TY3JlZW47XG5cdFx0ZGVmYXVsdDpcblx0XHRcdHJldHVybiBjay5CbGVuZE1vZGUuU3JjT3Zlcjtcblx0fVxufVxuXG5mdW5jdGlvbiBidWZmZXJUb1V0ZjhTdHJpbmcgKGJ1ZmZlcjogYW55KSB7XG5cdGlmICh0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0cmV0dXJuIGJ1ZmZlci50b1N0cmluZyhcInV0Zi04XCIpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdHJldHVybiBuZXcgVGV4dERlY29kZXIoXCJ1dGYtOFwiKS5kZWNvZGUoYnVmZmVyKTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBlbnZpcm9ubWVudFwiKTtcblx0fVxufVxuXG5jbGFzcyBDYW52YXNLaXRUZXh0dXJlIGV4dGVuZHMgVGV4dHVyZSB7XG5cdGdldEltYWdlICgpOiBDYW52YXNLaXRJbWFnZSB7XG5cdFx0cmV0dXJuIHRoaXMuX2ltYWdlO1xuXHR9XG5cblx0c2V0RmlsdGVycyAobWluRmlsdGVyOiBUZXh0dXJlRmlsdGVyLCBtYWdGaWx0ZXI6IFRleHR1cmVGaWx0ZXIpOiB2b2lkIHsgfVxuXG5cdHNldFdyYXBzICh1V3JhcDogVGV4dHVyZVdyYXAsIHZXcmFwOiBUZXh0dXJlV3JhcCk6IHZvaWQgeyB9XG5cblx0ZGlzcG9zZSAoKTogdm9pZCB7XG5cdFx0Y29uc3QgZGF0YTogQ2FudmFzS2l0SW1hZ2UgPSB0aGlzLl9pbWFnZTtcblx0XHRmb3IgKGNvbnN0IHBhaW50IG9mIGRhdGEucGFpbnRQZXJCbGVuZE1vZGUudmFsdWVzKCkpIHtcblx0XHRcdHBhaW50LmRlbGV0ZSgpO1xuXHRcdH1cblx0XHRmb3IgKGNvbnN0IHNoYWRlciBvZiBkYXRhLnNoYWRlcnMpIHtcblx0XHRcdHNoYWRlci5kZWxldGUoKTtcblx0XHR9XG5cdFx0ZGF0YS5pbWFnZS5kZWxldGUoKTtcblx0XHR0aGlzLl9pbWFnZSA9IG51bGw7XG5cdH1cblxuXHRzdGF0aWMgYXN5bmMgZnJvbUZpbGUgKFxuXHRcdGNrOiBDYW52YXNLaXQsXG5cdFx0cGF0aDogc3RyaW5nLFxuXHRcdHJlYWRGaWxlOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPGFueT5cblx0KTogUHJvbWlzZTxDYW52YXNLaXRUZXh0dXJlPiB7XG5cdFx0Y29uc3QgaW1nRGF0YSA9IGF3YWl0IHJlYWRGaWxlKHBhdGgpO1xuXHRcdGlmICghaW1nRGF0YSkgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgbG9hZCBpbWFnZSAke3BhdGh9YCk7XG5cdFx0Y29uc3QgaW1hZ2UgPSBjay5NYWtlSW1hZ2VGcm9tRW5jb2RlZChpbWdEYXRhKTtcblx0XHRpZiAoIWltYWdlKSB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBsb2FkIGltYWdlICR7cGF0aH1gKTtcblx0XHRjb25zdCBwYWludFBlckJsZW5kTW9kZSA9IG5ldyBNYXA8QmxlbmRNb2RlLCBQYWludD4oKTtcblx0XHRjb25zdCBzaGFkZXJzOiBTaGFkZXJbXSA9IFtdO1xuXHRcdGZvciAoY29uc3QgYmxlbmRNb2RlIG9mIFtcblx0XHRcdEJsZW5kTW9kZS5Ob3JtYWwsXG5cdFx0XHRCbGVuZE1vZGUuQWRkaXRpdmUsXG5cdFx0XHRCbGVuZE1vZGUuTXVsdGlwbHksXG5cdFx0XHRCbGVuZE1vZGUuU2NyZWVuLFxuXHRcdF0pIHtcblx0XHRcdGNvbnN0IHBhaW50ID0gbmV3IGNrLlBhaW50KCk7XG5cdFx0XHRjb25zdCBzaGFkZXIgPSBpbWFnZS5tYWtlU2hhZGVyT3B0aW9ucyhcblx0XHRcdFx0Y2suVGlsZU1vZGUuQ2xhbXAsXG5cdFx0XHRcdGNrLlRpbGVNb2RlLkNsYW1wLFxuXHRcdFx0XHRjay5GaWx0ZXJNb2RlLkxpbmVhcixcblx0XHRcdFx0Y2suTWlwbWFwTW9kZS5MaW5lYXJcblx0XHRcdCk7XG5cdFx0XHRwYWludC5zZXRTaGFkZXIoc2hhZGVyKTtcblx0XHRcdHBhaW50LnNldEJsZW5kTW9kZSh0b0NrQmxlbmRNb2RlKGNrLCBibGVuZE1vZGUpKTtcblx0XHRcdHBhaW50UGVyQmxlbmRNb2RlLnNldChibGVuZE1vZGUsIHBhaW50KTtcblx0XHRcdHNoYWRlcnMucHVzaChzaGFkZXIpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IENhbnZhc0tpdFRleHR1cmUoeyBzaGFkZXJzLCBwYWludFBlckJsZW5kTW9kZSwgaW1hZ2UgfSk7XG5cdH1cbn1cblxuLyoqXG4gKiBMb2FkcyBhIHtAbGluayBUZXh0dXJlQXRsYXN9IGFuZCBpdHMgYXRsYXMgcGFnZSBpbWFnZXMgZnJvbSB0aGUgZ2l2ZW4gZmlsZSBwYXRoIHVzaW5nIHRoZSBgcmVhZEZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxCdWZmZXI+YCBmdW5jdGlvbi5cbiAqIFRocm93cyBhbiBgRXJyb3JgIGlmIHRoZSBmaWxlIG9yIG9uZSBvZiB0aGUgYXRsYXMgcGFnZSBpbWFnZXMgY291bGQgbm90IGJlIGxvYWRlZC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRUZXh0dXJlQXRsYXMgKFxuXHRjazogQ2FudmFzS2l0LFxuXHRhdGxhc0ZpbGU6IHN0cmluZyxcblx0cmVhZEZpbGU6IChwYXRoOiBzdHJpbmcpID0+IFByb21pc2U8QnVmZmVyPlxuKTogUHJvbWlzZTxUZXh0dXJlQXRsYXM+IHtcblx0Y29uc3QgYXRsYXMgPSBuZXcgVGV4dHVyZUF0bGFzKGJ1ZmZlclRvVXRmOFN0cmluZyhhd2FpdCByZWFkRmlsZShhdGxhc0ZpbGUpKSk7XG5cdGNvbnN0IHNsYXNoSW5kZXggPSBhdGxhc0ZpbGUubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRjb25zdCBwYXJlbnREaXIgPVxuXHRcdHNsYXNoSW5kZXggPj0gMCA/IGF0bGFzRmlsZS5zdWJzdHJpbmcoMCwgc2xhc2hJbmRleCArIDEpIDogXCJcIjtcblx0Zm9yIChjb25zdCBwYWdlIG9mIGF0bGFzLnBhZ2VzKSB7XG5cdFx0Y29uc3QgdGV4dHVyZSA9IGF3YWl0IENhbnZhc0tpdFRleHR1cmUuZnJvbUZpbGUoXG5cdFx0XHRjayxcblx0XHRcdHBhcmVudERpciArIHBhZ2UubmFtZSxcblx0XHRcdHJlYWRGaWxlXG5cdFx0KTtcblx0XHRwYWdlLnNldFRleHR1cmUodGV4dHVyZSk7XG5cdH1cblx0cmV0dXJuIGF0bGFzO1xufVxuXG4vKipcbiAqIExvYWRzIGEge0BsaW5rIFNrZWxldG9uRGF0YX3CoGZyb20gdGhlIGdpdmVuIGZpbGUgcGF0aCAoYC5qc29uYCBvciBgLnNrZWxgKSB1c2luZyB0aGUgYHJlYWRGaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8QnVmZmVyPmAgZnVuY3Rpb24uXG4gKiBBdHRhY2htZW50cyB3aWxsIGJlIGxvb2tlZCB1cCBpbiB0aGUgcHJvdmlkZWQgYXRsYXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkU2tlbGV0b25EYXRhIChcblx0c2tlbGV0b25GaWxlOiBzdHJpbmcsXG5cdGF0bGFzOiBUZXh0dXJlQXRsYXMsXG5cdHJlYWRGaWxlOiAocGF0aDogc3RyaW5nKSA9PiBQcm9taXNlPEJ1ZmZlcj4sXG5cdHNjYWxlID0gMVxuKTogUHJvbWlzZTxTa2VsZXRvbkRhdGE+IHtcblx0Y29uc3QgYXR0YWNobWVudExvYWRlciA9IG5ldyBBdGxhc0F0dGFjaG1lbnRMb2FkZXIoYXRsYXMpO1xuXHRjb25zdCBsb2FkZXIgPSBza2VsZXRvbkZpbGUuZW5kc1dpdGgoXCIuanNvblwiKVxuXHRcdD8gbmV3IFNrZWxldG9uSnNvbihhdHRhY2htZW50TG9hZGVyKVxuXHRcdDogbmV3IFNrZWxldG9uQmluYXJ5KGF0dGFjaG1lbnRMb2FkZXIpO1xuXHRsb2FkZXIuc2NhbGUgPSBzY2FsZTtcblx0bGV0IGRhdGEgPSBhd2FpdCByZWFkRmlsZShza2VsZXRvbkZpbGUpO1xuXHRpZiAoc2tlbGV0b25GaWxlLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcblx0XHRkYXRhID0gYnVmZmVyVG9VdGY4U3RyaW5nKGRhdGEpO1xuXHR9XG5cdGNvbnN0IHNrZWxldG9uRGF0YSA9IGxvYWRlci5yZWFkU2tlbGV0b25EYXRhKGRhdGEpO1xuXHRyZXR1cm4gc2tlbGV0b25EYXRhO1xufVxuXG4vKipcbiAqIE1hbmFnZXMgYSB7QGxpbmsgU2tlbGV0b259IGFuZCBpdHMgYXNzb2NpYXRlZCB7QGxpbmsgQW5pbWF0aW9uU3RhdGV9LiBBIGRyYXdhYmxlIGlzIGNvbnN0cnVjdGVkIGZyb20gYSB7QGxpbmsgU2tlbGV0b25EYXRhfSwgd2hpY2ggY2FuXG4gKiBiZSBzaGFyZWQgYnkgYW55IG51bWJlciBvZiBkcmF3YWJsZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbkRyYXdhYmxlIHtcblx0cHVibGljIHJlYWRvbmx5IHNrZWxldG9uOiBTa2VsZXRvbjtcblx0cHVibGljIHJlYWRvbmx5IGFuaW1hdGlvblN0YXRlOiBBbmltYXRpb25TdGF0ZTtcblxuXHQvKipcblx0ICogQ29uc3RydWN0cyBhIG5ldyBkcmF3YmxlIGZyb20gdGhlIHNrZWxldG9uIGRhdGEuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvciAoc2tlbGV0b25EYXRhOiBTa2VsZXRvbkRhdGEpIHtcblx0XHR0aGlzLnNrZWxldG9uID0gbmV3IFNrZWxldG9uKHNrZWxldG9uRGF0YSk7XG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZSA9IG5ldyBBbmltYXRpb25TdGF0ZShcblx0XHRcdG5ldyBBbmltYXRpb25TdGF0ZURhdGEoc2tlbGV0b25EYXRhKVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlcyB0aGUgYW5pbWF0aW9uIHN0YXRlIGFuZCBza2VsZXRvbiB0aW1lIGJ5IHRoZSBkZWx0YSB0aW1lLiBBcHBsaWVzIHRoZVxuXHQgKiBhbmltYXRpb25zIHRvIHRoZSBza2VsZXRvbiBhbmQgY2FsY3VsYXRlcyB0aGUgZmluYWwgcG9zZSBvZiB0aGUgc2tlbGV0b24uXG5cdCAqXG5cdCAqIEBwYXJhbSBkZWx0YVRpbWUgdGhlIHRpbWUgc2luY2UgdGhlIGxhc3QgdXBkYXRlIGluIHNlY29uZHNcblx0ICogQHBhcmFtIHBoeXNpY3NVcGRhdGUgb3B0aW9uYWwge0BsaW5rIFBoeXNpY3N9IHVwZGF0ZSBtb2RlLlxuXHQgKi9cblx0dXBkYXRlIChkZWx0YVRpbWU6IG51bWJlciwgcGh5c2ljc1VwZGF0ZTogUGh5c2ljcyA9IFBoeXNpY3MudXBkYXRlKSB7XG5cdFx0dGhpcy5hbmltYXRpb25TdGF0ZS51cGRhdGUoZGVsdGFUaW1lKTtcblx0XHR0aGlzLnNrZWxldG9uLnVwZGF0ZShkZWx0YVRpbWUpO1xuXHRcdHRoaXMuYW5pbWF0aW9uU3RhdGUuYXBwbHkodGhpcy5za2VsZXRvbik7XG5cdFx0dGhpcy5za2VsZXRvbi51cGRhdGVXb3JsZFRyYW5zZm9ybShwaHlzaWNzVXBkYXRlKTtcblx0fVxufVxuXG4vKipcbiAqIFJlbmRlcnMgYSB7QGxpbmsgU2tlbGV0b259IG9yIHtAbGluayBTa2VsZXRvbkRyYXdhYmxlfSB0byBhIENhbnZhc0tpdCB7QGxpbmsgQ2FudmFzfS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNrZWxldG9uUmVuZGVyZXIge1xuXHRwcml2YXRlIGNsaXBwZXIgPSBuZXcgU2tlbGV0b25DbGlwcGluZygpO1xuXHRwcml2YXRlIHRlbXBDb2xvciA9IG5ldyBDb2xvcigpO1xuXHRwcml2YXRlIHRlbXBDb2xvcjIgPSBuZXcgQ29sb3IoKTtcblx0cHJpdmF0ZSBzdGF0aWMgUVVBRF9UUklBTkdMRVMgPSBbMCwgMSwgMiwgMiwgMywgMF07XG5cdHByaXZhdGUgc2NyYXRjaFBvc2l0aW9ucyA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoMTAwKTtcblx0cHJpdmF0ZSBzY3JhdGNoQ29sb3JzID0gVXRpbHMubmV3RmxvYXRBcnJheSgxMDApO1xuXHRwcml2YXRlIHNjcmF0Y2hVVnMgPSBVdGlscy5uZXdGbG9hdEFycmF5KDEwMCk7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgc2tlbGV0b24gcmVuZGVyZXIuXG5cdCAqIEBwYXJhbSBjayB0aGUge0BsaW5rIENhbnZhc0tpdH0gaW5zdGFuY2UgcmV0dXJuZWQgYnkgYENhbnZhc0tpdEluaXQoKWAuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvciAocHJpdmF0ZSBjazogQ2FudmFzS2l0KSB7IH1cblxuXHQvKipcblx0ICogUmVuZGVycyBhIHNrZWxldG9uIG9yIHNrZWxldG9uIGRyYXdhYmxlIGluIGl0cyBjdXJyZW50IHBvc2UgdG8gdGhlIGNhbnZhcy5cblx0ICogQHBhcmFtIGNhbnZhcyB0aGUgY2FudmFzIHRvIHJlbmRlciB0by5cblx0ICogQHBhcmFtIHNrZWxldG9uIHRoZSBza2VsZXRvbiBvciBkcmF3YWJsZSB0byByZW5kZXIuXG5cdCAqL1xuXHRyZW5kZXIgKGNhbnZhczogQ2FudmFzLCBza2VsZXRvbjogU2tlbGV0b24gfCBTa2VsZXRvbkRyYXdhYmxlKSB7XG5cdFx0aWYgKHNrZWxldG9uIGluc3RhbmNlb2YgU2tlbGV0b25EcmF3YWJsZSkgc2tlbGV0b24gPSBza2VsZXRvbi5za2VsZXRvbjtcblx0XHRsZXQgY2xpcHBlciA9IHRoaXMuY2xpcHBlcjtcblx0XHRsZXQgZHJhd09yZGVyID0gc2tlbGV0b24uZHJhd09yZGVyO1xuXHRcdGxldCBza2VsZXRvbkNvbG9yID0gc2tlbGV0b24uY29sb3I7XG5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGRyYXdPcmRlci5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBzbG90ID0gZHJhd09yZGVyW2ldO1xuXHRcdFx0aWYgKCFzbG90LmJvbmUuYWN0aXZlKSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcEVuZFdpdGhTbG90KHNsb3QpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdGxldCBwb3NpdGlvbnMgPSB0aGlzLnNjcmF0Y2hQb3NpdGlvbnM7XG5cdFx0XHRsZXQgY29sb3JzID0gdGhpcy5zY3JhdGNoQ29sb3JzO1xuXHRcdFx0bGV0IHV2czogTnVtYmVyQXJyYXlMaWtlO1xuXHRcdFx0bGV0IHRleHR1cmU6IENhbnZhc0tpdFRleHR1cmU7XG5cdFx0XHRsZXQgdHJpYW5nbGVzOiBBcnJheTxudW1iZXI+O1xuXHRcdFx0bGV0IGF0dGFjaG1lbnRDb2xvcjogQ29sb3I7XG5cdFx0XHRsZXQgbnVtVmVydGljZXMgPSAwO1xuXHRcdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBSZWdpb25BdHRhY2htZW50KSB7XG5cdFx0XHRcdGxldCByZWdpb24gPSBhdHRhY2htZW50IGFzIFJlZ2lvbkF0dGFjaG1lbnQ7XG5cdFx0XHRcdGlmIChwb3NpdGlvbnMubGVuZ3RoIDwgOCkgdGhpcy5zY3JhdGNoUG9zaXRpb25zID0gcG9zaXRpb25zID0gVXRpbHMubmV3RmxvYXRBcnJheSg4KTtcblx0XHRcdFx0bnVtVmVydGljZXMgPSA0O1xuXHRcdFx0XHRyZWdpb24uY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgcG9zaXRpb25zLCAwLCAyKTtcblx0XHRcdFx0dHJpYW5nbGVzID0gU2tlbGV0b25SZW5kZXJlci5RVUFEX1RSSUFOR0xFUztcblx0XHRcdFx0dXZzID0gcmVnaW9uLnV2cyBhcyBGbG9hdDMyQXJyYXk7XG5cdFx0XHRcdHRleHR1cmUgPSByZWdpb24ucmVnaW9uPy50ZXh0dXJlIGFzIENhbnZhc0tpdFRleHR1cmU7XG5cdFx0XHRcdGF0dGFjaG1lbnRDb2xvciA9IHJlZ2lvbi5jb2xvcjtcblx0XHRcdH0gZWxzZSBpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIE1lc2hBdHRhY2htZW50KSB7XG5cdFx0XHRcdGxldCBtZXNoID0gYXR0YWNobWVudCBhcyBNZXNoQXR0YWNobWVudDtcblx0XHRcdFx0aWYgKHBvc2l0aW9ucy5sZW5ndGggPCBtZXNoLndvcmxkVmVydGljZXNMZW5ndGgpXG5cdFx0XHRcdFx0dGhpcy5zY3JhdGNoUG9zaXRpb25zID0gcG9zaXRpb25zID0gVXRpbHMubmV3RmxvYXRBcnJheShtZXNoLndvcmxkVmVydGljZXNMZW5ndGgpO1xuXHRcdFx0XHRudW1WZXJ0aWNlcyA9IG1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aCA+PiAxO1xuXHRcdFx0XHRtZXNoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKFxuXHRcdFx0XHRcdHNsb3QsXG5cdFx0XHRcdFx0MCxcblx0XHRcdFx0XHRtZXNoLndvcmxkVmVydGljZXNMZW5ndGgsXG5cdFx0XHRcdFx0cG9zaXRpb25zLFxuXHRcdFx0XHRcdDAsXG5cdFx0XHRcdFx0MlxuXHRcdFx0XHQpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBtZXNoLnRyaWFuZ2xlcztcblx0XHRcdFx0dGV4dHVyZSA9IG1lc2gucmVnaW9uPy50ZXh0dXJlIGFzIENhbnZhc0tpdFRleHR1cmU7XG5cdFx0XHRcdHV2cyA9IG1lc2gudXZzIGFzIEZsb2F0MzJBcnJheTtcblx0XHRcdFx0YXR0YWNobWVudENvbG9yID0gbWVzaC5jb2xvcjtcblx0XHRcdH0gZWxzZSBpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIENsaXBwaW5nQXR0YWNobWVudCkge1xuXHRcdFx0XHRsZXQgY2xpcCA9IGF0dGFjaG1lbnQgYXMgQ2xpcHBpbmdBdHRhY2htZW50O1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBTdGFydChzbG90LCBjbGlwKTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBFbmRXaXRoU2xvdChzbG90KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0ZXh0dXJlKSB7XG5cdFx0XHRcdGlmIChjbGlwcGVyLmlzQ2xpcHBpbmcoKSkge1xuXHRcdFx0XHRcdGNsaXBwZXIuY2xpcFRyaWFuZ2xlc1VucGFja2VkKFxuXHRcdFx0XHRcdFx0cG9zaXRpb25zLFxuXHRcdFx0XHRcdFx0dHJpYW5nbGVzLFxuXHRcdFx0XHRcdFx0dHJpYW5nbGVzLmxlbmd0aCxcblx0XHRcdFx0XHRcdHV2c1xuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAoY2xpcHBlci5jbGlwcGVkVmVydGljZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Ly8gY2xpcHBpbmcgZXZlbnR1YWxseSBcImVyYXNlc1wiIGNsaXBwZWRWZXJ0aWNlcyBhcnJheSAoc2V0IGxlbmd0aCB0byAwIGF0IG5leHQgY2xpcClcblx0XHRcdFx0XHRcdC8vIGl0J3MgbmVjZXNzYXJ5IHRvIGtlZXAgdGhlIGFycmF5IGFsaXZlIHVudGlsIGNhbnZhc2tpdCBwYWludHMsXG5cdFx0XHRcdFx0XHQvLyBvdGhlcndpc2UgYSBtZW1vcnkgYWNjZXNzIG9jY3Vyc1xuXHRcdFx0XHRcdFx0aWYgKHBvc2l0aW9ucy5sZW5ndGggPCBjbGlwcGVyLmNsaXBwZWRWZXJ0aWNlcy5sZW5ndGgpXG5cdFx0XHRcdFx0XHRcdHRoaXMuc2NyYXRjaFBvc2l0aW9ucyA9IHBvc2l0aW9ucyA9IFV0aWxzLm5ld0Zsb2F0QXJyYXkoY2xpcHBlci5jbGlwcGVkVmVydGljZXMubGVuZ3RoKTtcblx0XHRcdFx0XHRcdG51bVZlcnRpY2VzID0gY2xpcHBlci5jbGlwcGVkVmVydGljZXMubGVuZ3RoIC8gMjtcblx0XHRcdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY2xpcHBlci5jbGlwcGVkVmVydGljZXMubGVuZ3RoOyBpKyspXG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uc1tpXSA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzW2ldO1xuXG5cdFx0XHRcdFx0XHR1dnMgPSBjbGlwcGVyLmNsaXBwZWRVVnM7XG5cdFx0XHRcdFx0XHR0cmlhbmdsZXMgPSBjbGlwcGVyLmNsaXBwZWRUcmlhbmdsZXM7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNsaXBwZXIuY2xpcEVuZFdpdGhTbG90KHNsb3QpO1xuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IHNsb3RDb2xvciA9IHNsb3QuY29sb3I7XG5cdFx0XHRcdGxldCBmaW5hbENvbG9yID0gdGhpcy50ZW1wQ29sb3I7XG5cdFx0XHRcdGZpbmFsQ29sb3IuciA9IHNrZWxldG9uQ29sb3IuciAqIHNsb3RDb2xvci5yICogYXR0YWNobWVudENvbG9yLnI7XG5cdFx0XHRcdGZpbmFsQ29sb3IuZyA9IHNrZWxldG9uQ29sb3IuZyAqIHNsb3RDb2xvci5nICogYXR0YWNobWVudENvbG9yLmc7XG5cdFx0XHRcdGZpbmFsQ29sb3IuYiA9IHNrZWxldG9uQ29sb3IuYiAqIHNsb3RDb2xvci5iICogYXR0YWNobWVudENvbG9yLmI7XG5cdFx0XHRcdGZpbmFsQ29sb3IuYSA9IHNrZWxldG9uQ29sb3IuYSAqIHNsb3RDb2xvci5hICogYXR0YWNobWVudENvbG9yLmE7XG5cblx0XHRcdFx0aWYgKGNvbG9ycy5sZW5ndGggLyA0IDwgbnVtVmVydGljZXMpXG5cdFx0XHRcdFx0dGhpcy5zY3JhdGNoQ29sb3JzID0gY29sb3JzID0gVXRpbHMubmV3RmxvYXRBcnJheShudW1WZXJ0aWNlcyAqIDQpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IG51bVZlcnRpY2VzICogNDsgaSA8IG47IGkgKz0gNCkge1xuXHRcdFx0XHRcdGNvbG9yc1tpXSA9IGZpbmFsQ29sb3Iucjtcblx0XHRcdFx0XHRjb2xvcnNbaSArIDFdID0gZmluYWxDb2xvci5nO1xuXHRcdFx0XHRcdGNvbG9yc1tpICsgMl0gPSBmaW5hbENvbG9yLmI7XG5cdFx0XHRcdFx0Y29sb3JzW2kgKyAzXSA9IGZpbmFsQ29sb3IuYTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IHNjYWxlZFV2cyA9IHRoaXMuc2NyYXRjaFVWcy5sZW5ndGggPCB1dnMubGVuZ3RoXG5cdFx0XHRcdFx0PyAodGhpcy5zY3JhdGNoVVZzID0gVXRpbHMubmV3RmxvYXRBcnJheSh1dnMubGVuZ3RoKSlcblx0XHRcdFx0XHQ6IHRoaXMuc2NyYXRjaFVWcztcblx0XHRcdFx0Y29uc3Qgd2lkdGggPSB0ZXh0dXJlLmdldEltYWdlKCkuaW1hZ2Uud2lkdGgoKTtcblx0XHRcdFx0Y29uc3QgaGVpZ2h0ID0gdGV4dHVyZS5nZXRJbWFnZSgpLmltYWdlLmhlaWdodCgpO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHV2cy5sZW5ndGg7IGkgKz0gMikge1xuXHRcdFx0XHRcdHNjYWxlZFV2c1tpXSA9IHV2c1tpXSAqIHdpZHRoO1xuXHRcdFx0XHRcdHNjYWxlZFV2c1tpICsgMV0gPSB1dnNbaSArIDFdICogaGVpZ2h0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgYmxlbmRNb2RlID0gc2xvdC5kYXRhLmJsZW5kTW9kZTtcblx0XHRcdFx0Y29uc3QgdmVydGljZXMgPSB0aGlzLmNrLk1ha2VWZXJ0aWNlcyhcblx0XHRcdFx0XHR0aGlzLmNrLlZlcnRleE1vZGUuVHJpYW5nbGVzLFxuXHRcdFx0XHRcdHBvc2l0aW9ucyxcblx0XHRcdFx0XHRzY2FsZWRVdnMsXG5cdFx0XHRcdFx0Y29sb3JzLFxuXHRcdFx0XHRcdHRyaWFuZ2xlcyxcblx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRjYW52YXMuZHJhd1ZlcnRpY2VzKFxuXHRcdFx0XHRcdHZlcnRpY2VzLFxuXHRcdFx0XHRcdHRoaXMuY2suQmxlbmRNb2RlLk1vZHVsYXRlLFxuXHRcdFx0XHRcdHRleHR1cmUuZ2V0SW1hZ2UoKS5wYWludFBlckJsZW5kTW9kZS5nZXQoYmxlbmRNb2RlKSFcblx0XHRcdFx0KTtcblx0XHRcdFx0dmVydGljZXMuZGVsZXRlKCk7XG5cdFx0XHR9XG5cblx0XHRcdGNsaXBwZXIuY2xpcEVuZFdpdGhTbG90KHNsb3QpO1xuXHRcdH1cblx0XHRjbGlwcGVyLmNsaXBFbmQoKTtcblx0fVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@esotericsoftware/spine-canvaskit",
|
|
3
|
-
"version": "4.2.
|
|
3
|
+
"version": "4.2.87",
|
|
4
4
|
"description": "The official Spine Runtimes for CanvasKit for NodeJS",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/esotericsoftware/spine-runtimes#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@esotericsoftware/spine-core": "4.2.
|
|
34
|
+
"@esotericsoftware/spine-core": "4.2.87",
|
|
35
35
|
"canvaskit-wasm": "0.39.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|