97 lines
16 KiB
JavaScript
97 lines
16 KiB
JavaScript
/******************************************************************************
|
|
* Spine Runtimes License Agreement
|
|
* Last updated April 5, 2025. Replaces all prior versions.
|
|
*
|
|
* Copyright (c) 2013-2025, Esoteric Software LLC
|
|
*
|
|
* Integration of the Spine Runtimes into software or otherwise creating
|
|
* derivative works of the Spine Runtimes is permitted under the terms and
|
|
* conditions of Section 2 of the Spine Editor License Agreement:
|
|
* http://esotericsoftware.com/spine-editor-license
|
|
*
|
|
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
|
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
|
* "Products"), provided that each user of the Products must obtain their own
|
|
* Spine Editor license and redistribution of the Products in any form must
|
|
* include this license and copyright notice.
|
|
*
|
|
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
|
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*****************************************************************************/
|
|
import { DarkTintMesh } from "./darkTintMesh/DarkTintMesh.js";
|
|
import { SpineTexture } from "./SpineTexture.js";
|
|
export class DarkSlotMesh extends DarkTintMesh {
|
|
name = "";
|
|
static auxColor = [0, 0, 0, 0];
|
|
constructor() {
|
|
super();
|
|
}
|
|
updateFromSpineData(slotTexture, slotBlendMode, slotName, finalVertices, finalVerticesLength, finalIndices, finalIndicesLength, darkTint) {
|
|
this.texture = slotTexture.texture;
|
|
const vertLenght = (finalVerticesLength / (darkTint ? 12 : 8)) * 2;
|
|
const textureCoord = this.geometry.getBuffer("aTextureCoord");
|
|
if (textureCoord.data?.length !== vertLenght) {
|
|
textureCoord.data = new Float32Array(vertLenght);
|
|
}
|
|
const vertexCoord = this.geometry.getBuffer("aVertexPosition");
|
|
if (vertexCoord.data?.length !== vertLenght) {
|
|
vertexCoord.data = new Float32Array(vertLenght);
|
|
}
|
|
let vertIndex = 0;
|
|
const textureCoordData = textureCoord.data;
|
|
const vertexCoordData = vertexCoord.data;
|
|
for (let i = 0; i < finalVerticesLength; i += darkTint ? 12 : 8) {
|
|
let auxi = i;
|
|
vertexCoordData[vertIndex] = finalVertices[auxi++];
|
|
vertexCoordData[vertIndex + 1] = finalVertices[auxi++];
|
|
auxi += 4; // color
|
|
textureCoordData[vertIndex] = finalVertices[auxi++];
|
|
textureCoordData[vertIndex + 1] = finalVertices[auxi++];
|
|
vertIndex += 2;
|
|
}
|
|
if (darkTint) {
|
|
DarkSlotMesh.auxColor[0] = finalVertices[8];
|
|
DarkSlotMesh.auxColor[1] = finalVertices[9];
|
|
DarkSlotMesh.auxColor[2] = finalVertices[10];
|
|
DarkSlotMesh.auxColor[3] = finalVertices[11];
|
|
this.darkTint = DarkSlotMesh.auxColor;
|
|
DarkSlotMesh.auxColor[0] = finalVertices[2];
|
|
DarkSlotMesh.auxColor[1] = finalVertices[3];
|
|
DarkSlotMesh.auxColor[2] = finalVertices[4];
|
|
DarkSlotMesh.auxColor[3] = finalVertices[5];
|
|
this.tint = DarkSlotMesh.auxColor;
|
|
}
|
|
else {
|
|
DarkSlotMesh.auxColor[0] = finalVertices[2];
|
|
DarkSlotMesh.auxColor[1] = finalVertices[3];
|
|
DarkSlotMesh.auxColor[2] = finalVertices[4];
|
|
DarkSlotMesh.auxColor[3] = finalVertices[5];
|
|
this.tint = DarkSlotMesh.auxColor;
|
|
}
|
|
this.blendMode = SpineTexture.toPixiBlending(slotBlendMode);
|
|
this.alpha = DarkSlotMesh.auxColor[3];
|
|
const indexBuffer = this.geometry.indexBuffer;
|
|
if (indexBuffer.data.length !== finalIndices.length) {
|
|
indexBuffer.data = new Uint32Array(finalIndices);
|
|
}
|
|
else {
|
|
const indexBufferData = indexBuffer.data;
|
|
for (let i = 0; i < finalIndicesLength; i++) {
|
|
indexBufferData[i] = finalIndices[i];
|
|
}
|
|
}
|
|
this.name = slotName;
|
|
textureCoord.update();
|
|
vertexCoord.update();
|
|
indexBuffer.update();
|
|
}
|
|
}
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGFya1Nsb3RNZXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0RhcmtTbG90TWVzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFJL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRTlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sWUFBYSxTQUFRLFlBQVk7SUFDdEMsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUVqQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkM7UUFDQyxLQUFLLEVBQUUsQ0FBQztJQUNULENBQUM7SUFDTSxtQkFBbUIsQ0FDekIsV0FBeUIsRUFDekIsYUFBd0IsRUFDeEIsUUFBZ0IsRUFDaEIsYUFBOEIsRUFDOUIsbUJBQTJCLEVBQzNCLFlBQTZCLEVBQzdCLGtCQUEwQixFQUMxQixRQUFpQjtRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFFbkMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM5RCxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzlDLFlBQVksQ0FBQyxJQUFJLEdBQUcsSUFBSSxZQUFZLENBQUMsVUFBVSxDQUEyQixDQUFDO1FBQzVFLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDN0MsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQTJCLENBQUM7UUFDM0UsQ0FBQztRQUVELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUVsQixNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDM0MsTUFBTSxlQUFlLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUN6QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNqRSxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFFYixlQUFlLENBQUMsU0FBUyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkQsZUFBZSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUV2RCxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUTtZQUVuQixnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNwRCxnQkFBZ0IsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFFeEQsU0FBUyxJQUFJLENBQUMsQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNkLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztZQUV0QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDUCxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU1QyxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUM7UUFDbkMsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDOUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckQsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxZQUFZLENBQTJCLENBQUM7UUFDNUUsQ0FBQzthQUFNLENBQUM7WUFDUCxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUM3QyxlQUFlLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDRixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7UUFFckIsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyQixXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCbGVuZE1vZGUsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCJAZXNvdGVyaWNzb2Z0d2FyZS9zcGluZS1jb3JlXCI7XG5pbXBvcnQgdHlwZSB7IElUeXBlZEFycmF5IH0gZnJvbSBcIkBwaXhpL2NvcmVcIjtcbmltcG9ydCB7IERhcmtUaW50TWVzaCB9IGZyb20gXCIuL2RhcmtUaW50TWVzaC9EYXJrVGludE1lc2guanNcIjtcbmltcG9ydCB0eXBlIHsgSVNsb3RNZXNoIH0gZnJvbSBcIi4vU3BpbmUuanNcIjtcbmltcG9ydCB7IFNwaW5lVGV4dHVyZSB9IGZyb20gXCIuL1NwaW5lVGV4dHVyZS5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRGFya1Nsb3RNZXNoIGV4dGVuZHMgRGFya1RpbnRNZXNoIGltcGxlbWVudHMgSVNsb3RNZXNoIHtcblx0cHVibGljIG5hbWU6IHN0cmluZyA9IFwiXCI7XG5cblx0cHJpdmF0ZSBzdGF0aWMgYXV4Q29sb3IgPSBbMCwgMCwgMCwgMF07XG5cblx0Y29uc3RydWN0b3IgKCkge1xuXHRcdHN1cGVyKCk7XG5cdH1cblx0cHVibGljIHVwZGF0ZUZyb21TcGluZURhdGEgKFxuXHRcdHNsb3RUZXh0dXJlOiBTcGluZVRleHR1cmUsXG5cdFx0c2xvdEJsZW5kTW9kZTogQmxlbmRNb2RlLFxuXHRcdHNsb3ROYW1lOiBzdHJpbmcsXG5cdFx0ZmluYWxWZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlLFxuXHRcdGZpbmFsVmVydGljZXNMZW5ndGg6IG51bWJlcixcblx0XHRmaW5hbEluZGljZXM6IE51bWJlckFycmF5TGlrZSxcblx0XHRmaW5hbEluZGljZXNMZW5ndGg6IG51bWJlcixcblx0XHRkYXJrVGludDogYm9vbGVhblxuXHQpOiB2b2lkIHtcblx0XHR0aGlzLnRleHR1cmUgPSBzbG90VGV4dHVyZS50ZXh0dXJlO1xuXG5cdFx0Y29uc3QgdmVydExlbmdodCA9IChmaW5hbFZlcnRpY2VzTGVuZ3RoIC8gKGRhcmtUaW50ID8gMTIgOiA4KSkgKiAyO1xuXG5cdFx0Y29uc3QgdGV4dHVyZUNvb3JkID0gdGhpcy5nZW9tZXRyeS5nZXRCdWZmZXIoXCJhVGV4dHVyZUNvb3JkXCIpO1xuXHRcdGlmICh0ZXh0dXJlQ29vcmQuZGF0YT8ubGVuZ3RoICE9PSB2ZXJ0TGVuZ2h0KSB7XG5cdFx0XHR0ZXh0dXJlQ29vcmQuZGF0YSA9IG5ldyBGbG9hdDMyQXJyYXkodmVydExlbmdodCkgYXMgdW5rbm93biBhcyBJVHlwZWRBcnJheTtcblx0XHR9XG5cblx0XHRjb25zdCB2ZXJ0ZXhDb29yZCA9IHRoaXMuZ2VvbWV0cnkuZ2V0QnVmZmVyKFwiYVZlcnRleFBvc2l0aW9uXCIpO1xuXHRcdGlmICh2ZXJ0ZXhDb29yZC5kYXRhPy5sZW5ndGggIT09IHZlcnRMZW5naHQpIHtcblx0XHRcdHZlcnRleENvb3JkLmRhdGEgPSBuZXcgRmxvYXQzMkFycmF5KHZlcnRMZW5naHQpIGFzIHVua25vd24gYXMgSVR5cGVkQXJyYXk7XG5cdFx0fVxuXG5cdFx0bGV0IHZlcnRJbmRleCA9IDA7XG5cblx0XHRjb25zdCB0ZXh0dXJlQ29vcmREYXRhID0gdGV4dHVyZUNvb3JkLmRhdGE7XG5cdFx0Y29uc3QgdmVydGV4Q29vcmREYXRhID0gdmVydGV4Q29vcmQuZGF0YTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpbmFsVmVydGljZXNMZW5ndGg7IGkgKz0gZGFya1RpbnQgPyAxMiA6IDgpIHtcblx0XHRcdGxldCBhdXhpID0gaTtcblxuXHRcdFx0dmVydGV4Q29vcmREYXRhW3ZlcnRJbmRleF0gPSBmaW5hbFZlcnRpY2VzW2F1eGkrK107XG5cdFx0XHR2ZXJ0ZXhDb29yZERhdGFbdmVydEluZGV4ICsgMV0gPSBmaW5hbFZlcnRpY2VzW2F1eGkrK107XG5cblx0XHRcdGF1eGkgKz0gNDsgLy8gY29sb3JcblxuXHRcdFx0dGV4dHVyZUNvb3JkRGF0YVt2ZXJ0SW5kZXhdID0gZmluYWxWZXJ0aWNlc1thdXhpKytdO1xuXHRcdFx0dGV4dHVyZUNvb3JkRGF0YVt2ZXJ0SW5kZXggKyAxXSA9IGZpbmFsVmVydGljZXNbYXV4aSsrXTtcblxuXHRcdFx0dmVydEluZGV4ICs9IDI7XG5cdFx0fVxuXG5cdFx0aWYgKGRhcmtUaW50KSB7XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMF0gPSBmaW5hbFZlcnRpY2VzWzhdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzFdID0gZmluYWxWZXJ0aWNlc1s5XTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclsyXSA9IGZpbmFsVmVydGljZXNbMTBdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzNdID0gZmluYWxWZXJ0aWNlc1sxMV07XG5cdFx0XHR0aGlzLmRhcmtUaW50ID0gRGFya1Nsb3RNZXNoLmF1eENvbG9yO1xuXG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMF0gPSBmaW5hbFZlcnRpY2VzWzJdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzFdID0gZmluYWxWZXJ0aWNlc1szXTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclsyXSA9IGZpbmFsVmVydGljZXNbNF07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbM10gPSBmaW5hbFZlcnRpY2VzWzVdO1xuXHRcdFx0dGhpcy50aW50ID0gRGFya1Nsb3RNZXNoLmF1eENvbG9yO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbMF0gPSBmaW5hbFZlcnRpY2VzWzJdO1xuXHRcdFx0RGFya1Nsb3RNZXNoLmF1eENvbG9yWzFdID0gZmluYWxWZXJ0aWNlc1szXTtcblx0XHRcdERhcmtTbG90TWVzaC5hdXhDb2xvclsyXSA9IGZpbmFsVmVydGljZXNbNF07XG5cdFx0XHREYXJrU2xvdE1lc2guYXV4Q29sb3JbM10gPSBmaW5hbFZlcnRpY2VzWzVdO1xuXG5cdFx0XHR0aGlzLnRpbnQgPSBEYXJrU2xvdE1lc2guYXV4Q29sb3I7XG5cdFx0fVxuXHRcdHRoaXMuYmxlbmRNb2RlID0gU3BpbmVUZXh0dXJlLnRvUGl4aUJsZW5kaW5nKHNsb3RCbGVuZE1vZGUpO1xuXHRcdHRoaXMuYWxwaGEgPSBEYXJrU2xvdE1lc2guYXV4Q29sb3JbM107XG5cblx0XHRjb25zdCBpbmRleEJ1ZmZlciA9IHRoaXMuZ2VvbWV0cnkuaW5kZXhCdWZmZXI7XG5cdFx0aWYgKGluZGV4QnVmZmVyLmRhdGEubGVuZ3RoICE9PSBmaW5hbEluZGljZXMubGVuZ3RoKSB7XG5cdFx0XHRpbmRleEJ1ZmZlci5kYXRhID0gbmV3IFVpbnQzMkFycmF5KGZpbmFsSW5kaWNlcykgYXMgdW5rbm93biBhcyBJVHlwZWRBcnJheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgaW5kZXhCdWZmZXJEYXRhID0gaW5kZXhCdWZmZXIuZGF0YTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZmluYWxJbmRpY2VzTGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aW5kZXhCdWZmZXJEYXRhW2ldID0gZmluYWxJbmRpY2VzW2ldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMubmFtZSA9IHNsb3ROYW1lO1xuXG5cdFx0dGV4dHVyZUNvb3JkLnVwZGF0ZSgpO1xuXHRcdHZlcnRleENvb3JkLnVwZGF0ZSgpO1xuXHRcdGluZGV4QnVmZmVyLnVwZGF0ZSgpO1xuXHR9XG59XG4iXX0=
|