UNPKG

ngx-spine

Version:

[![Build Status](https://travis-ci.org/PoiScript/ngx-spine.svg?branch=master)](https://travis-ci.org/PoiScript/ngx-spine)

313 lines 25.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /****************************************************************************** * Spine Runtimes License Agreement * Last updated May 1, 2019. Replaces all prior versions. * * Copyright (c) 2013-2019, 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. * * THIS SOFTWARE IS 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 THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ var SkeletonData = /** @class */ (function () { function SkeletonData() { this.bones = new Array(); // Ordered parents first. // Ordered parents first. this.slots = new Array(); // Setup pose draw order. // Setup pose draw order. this.skins = new Array(); this.events = new Array(); this.animations = new Array(); this.ikConstraints = new Array(); this.transformConstraints = new Array(); this.pathConstraints = new Array(); // Nonessential this.fps = 0; } /** * @param {?} boneName * @return {?} */ SkeletonData.prototype.findBone = /** * @param {?} boneName * @return {?} */ function (boneName) { if (boneName == null) throw new Error("boneName cannot be null."); /** @type {?} */ var bones = this.bones; for (var i = 0, n = bones.length; i < n; i++) { /** @type {?} */ var bone = bones[i]; if (bone.name == boneName) return bone; } return null; }; /** * @param {?} boneName * @return {?} */ SkeletonData.prototype.findBoneIndex = /** * @param {?} boneName * @return {?} */ function (boneName) { if (boneName == null) throw new Error("boneName cannot be null."); /** @type {?} */ var bones = this.bones; for (var i = 0, n = bones.length; i < n; i++) if (bones[i].name == boneName) return i; return -1; }; /** * @param {?} slotName * @return {?} */ SkeletonData.prototype.findSlot = /** * @param {?} slotName * @return {?} */ function (slotName) { if (slotName == null) throw new Error("slotName cannot be null."); /** @type {?} */ var slots = this.slots; for (var i = 0, n = slots.length; i < n; i++) { /** @type {?} */ var slot = slots[i]; if (slot.name == slotName) return slot; } return null; }; /** * @param {?} slotName * @return {?} */ SkeletonData.prototype.findSlotIndex = /** * @param {?} slotName * @return {?} */ function (slotName) { if (slotName == null) throw new Error("slotName cannot be null."); /** @type {?} */ var slots = this.slots; for (var i = 0, n = slots.length; i < n; i++) if (slots[i].name == slotName) return i; return -1; }; /** * @param {?} skinName * @return {?} */ SkeletonData.prototype.findSkin = /** * @param {?} skinName * @return {?} */ function (skinName) { if (skinName == null) throw new Error("skinName cannot be null."); /** @type {?} */ var skins = this.skins; for (var i = 0, n = skins.length; i < n; i++) { /** @type {?} */ var skin = skins[i]; if (skin.name == skinName) return skin; } return null; }; /** * @param {?} eventDataName * @return {?} */ SkeletonData.prototype.findEvent = /** * @param {?} eventDataName * @return {?} */ function (eventDataName) { if (eventDataName == null) throw new Error("eventDataName cannot be null."); /** @type {?} */ var events = this.events; for (var i = 0, n = events.length; i < n; i++) { /** @type {?} */ var event_1 = events[i]; if (event_1.name == eventDataName) return event_1; } return null; }; /** * @param {?} animationName * @return {?} */ SkeletonData.prototype.findAnimation = /** * @param {?} animationName * @return {?} */ function (animationName) { if (animationName == null) throw new Error("animationName cannot be null."); /** @type {?} */ var animations = this.animations; for (var i = 0, n = animations.length; i < n; i++) { /** @type {?} */ var animation = animations[i]; if (animation.name == animationName) return animation; } return null; }; /** * @param {?} constraintName * @return {?} */ SkeletonData.prototype.findIkConstraint = /** * @param {?} constraintName * @return {?} */ function (constraintName) { if (constraintName == null) throw new Error("constraintName cannot be null."); /** @type {?} */ var ikConstraints = this.ikConstraints; for (var i = 0, n = ikConstraints.length; i < n; i++) { /** @type {?} */ var constraint = ikConstraints[i]; if (constraint.name == constraintName) return constraint; } return null; }; /** * @param {?} constraintName * @return {?} */ SkeletonData.prototype.findTransformConstraint = /** * @param {?} constraintName * @return {?} */ function (constraintName) { if (constraintName == null) throw new Error("constraintName cannot be null."); /** @type {?} */ var transformConstraints = this.transformConstraints; for (var i = 0, n = transformConstraints.length; i < n; i++) { /** @type {?} */ var constraint = transformConstraints[i]; if (constraint.name == constraintName) return constraint; } return null; }; /** * @param {?} constraintName * @return {?} */ SkeletonData.prototype.findPathConstraint = /** * @param {?} constraintName * @return {?} */ function (constraintName) { if (constraintName == null) throw new Error("constraintName cannot be null."); /** @type {?} */ var pathConstraints = this.pathConstraints; for (var i = 0, n = pathConstraints.length; i < n; i++) { /** @type {?} */ var constraint = pathConstraints[i]; if (constraint.name == constraintName) return constraint; } return null; }; /** * @param {?} pathConstraintName * @return {?} */ SkeletonData.prototype.findPathConstraintIndex = /** * @param {?} pathConstraintName * @return {?} */ function (pathConstraintName) { if (pathConstraintName == null) throw new Error("pathConstraintName cannot be null."); /** @type {?} */ var pathConstraints = this.pathConstraints; for (var i = 0, n = pathConstraints.length; i < n; i++) if (pathConstraints[i].name == pathConstraintName) return i; return -1; }; return SkeletonData; }()); export { SkeletonData }; if (false) { /** @type {?} */ SkeletonData.prototype.name; /** @type {?} */ SkeletonData.prototype.bones; /** @type {?} */ SkeletonData.prototype.slots; /** @type {?} */ SkeletonData.prototype.skins; /** @type {?} */ SkeletonData.prototype.defaultSkin; /** @type {?} */ SkeletonData.prototype.events; /** @type {?} */ SkeletonData.prototype.animations; /** @type {?} */ SkeletonData.prototype.ikConstraints; /** @type {?} */ SkeletonData.prototype.transformConstraints; /** @type {?} */ SkeletonData.prototype.pathConstraints; /** @type {?} */ SkeletonData.prototype.x; /** @type {?} */ SkeletonData.prototype.y; /** @type {?} */ SkeletonData.prototype.width; /** @type {?} */ SkeletonData.prototype.height; /** @type {?} */ SkeletonData.prototype.version; /** @type {?} */ SkeletonData.prototype.hash; /** @type {?} */ SkeletonData.prototype.fps; /** @type {?} */ SkeletonData.prototype.imagesPath; /** @type {?} */ SkeletonData.prototype.audioPath; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EYXRhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNwaW5lLyIsInNvdXJjZXMiOlsibGliL3NwaW5lLXRzL2NvcmUvU2tlbGV0b25EYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0NBO0lBQUE7UUFFRSxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQyxDQUFDLHlCQUF5Qjs7UUFDeEQsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFZLENBQUMsQ0FBQyx5QkFBeUI7O1FBQ3hELFVBQUssR0FBRyxJQUFJLEtBQUssRUFBUSxDQUFDO1FBRTFCLFdBQU0sR0FBRyxJQUFJLEtBQUssRUFBYSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLEtBQUssRUFBYSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxLQUFLLEVBQTJCLENBQUM7UUFDNUQsb0JBQWUsR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQzs7UUFRbEQsUUFBRyxHQUFHLENBQUMsQ0FBQztJQW9HVixDQUFDOzs7OztJQWpHQywrQkFBUTs7OztJQUFSLFVBQVMsUUFBZ0I7UUFDdkIsSUFBSSxRQUFRLElBQUksSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQzs7WUFDOUQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2dCQUN4QyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQztTQUN4QztRQUNELE9BQU8sSUFBSSxDQUFDO0lB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QUM7SUFDWixDQUFDO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBdEhELElBc0hDOzs7O0lBckhDLDRCQUFhOztJQUNiLDZCQUE4Qjs7SUFDOUIsNkJBQThCOztJQUM5Qiw2QkFBMEI7O0lBQzFCLG1DQUFrQjs7SUFDbEIsOEJBQWdDOztJQUNoQyxrQ0FBb0M7O0lBQ3BDLHFDQUE4Qzs7SUFDOUMsNENBQTREOztJQUM1RCx1Q0FBa0Q7O0lBQ2xELHlCQUFVOztJQUNWLHlCQUFVOztJQUNWLDZCQUFjOztJQUNkLDhCQUFlOztJQUNmLCtCQUFnQjs7SUFDaEIsNEJBQWE7O0lBRWIsMkJBQVE7O0lBQ1Isa0NBQW1COztJQUNuQixpQ0FBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XHJcbiAqIExhc3QgdXBkYXRlZCBNYXkgMSwgMjAxOS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXHJcbiAqXHJcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xyXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxyXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxyXG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcclxuICpcclxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXHJcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcclxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxyXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcclxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXHJcbiAqXHJcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1NcclxuICogT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFU1xyXG4gKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTlxyXG4gKiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCxcclxuICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORyxcclxuICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLCBCVVNJTkVTU1xyXG4gKiBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXHJcbiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xyXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsXHJcbiAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbiB9IGZyb20gXCIuL0FuaW1hdGlvblwiO1xyXG5pbXBvcnQgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhXCI7XHJcbmltcG9ydCB7IFNsb3REYXRhIH0gZnJvbSBcIi4vU2xvdERhdGFcIjtcclxuaW1wb3J0IHsgU2tpbiB9IGZyb20gXCIuL1NraW5cIjtcclxuaW1wb3J0IHsgRXZlbnREYXRhIH0gZnJvbSBcIi4vRXZlbnREYXRhXCI7XHJcbmltcG9ydCB7IElrQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnREYXRhXCI7XHJcbmltcG9ydCB7IFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGFcIjtcclxuaW1wb3J0IHsgUGF0aENvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGF0aENvbnN0cmFpbnREYXRhXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU2tlbGV0b25EYXRhIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgYm9uZXMgPSBuZXcgQXJyYXk8Qm9uZURhdGE+KCk7IC8vIE9yZGVyZWQgcGFyZW50cyBmaXJzdC5cclxuICBzbG90cyA9IG5ldyBBcnJheTxTbG90RGF0YT4oKTsgLy8gU2V0dXAgcG9zZSBkcmF3IG9yZGVyLlxyXG4gIHNraW5zID0gbmV3IEFycmF5PFNraW4+KCk7XHJcbiAgZGVmYXVsdFNraW46IFNraW47XHJcbiAgZXZlbnRzID0gbmV3IEFycmF5PEV2ZW50RGF0YT4oKTtcclxuICBhbmltYXRpb25zID0gbmV3IEFycmF5PEFuaW1hdGlvbj4oKTtcclxuICBpa0NvbnN0cmFpbnRzID0gbmV3IEFycmF5PElrQ29uc3RyYWludERhdGE+KCk7XHJcbiAgdHJhbnNmb3JtQ29uc3RyYWludHMgPSBuZXcgQXJyYXk8VHJhbnNmb3JtQ29uc3RyYWludERhdGE+KCk7XHJcbiAgcGF0aENvbnN0cmFpbnRzID0gbmV3IEFycmF5PFBhdGhDb25zdHJhaW50RGF0YT4oKTtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG4gIHdpZHRoOiBudW1iZXI7XHJcbiAgaGVpZ2h0OiBudW1iZXI7XHJcbiAgdmVyc2lvbjogc3RyaW5nO1xyXG4gIGhhc2g6IHN0cmluZztcclxuICAvLyBOb25lc3NlbnRpYWxcclxuICBmcHMgPSAwO1xyXG4gIGltYWdlc1BhdGg6IHN0cmluZztcclxuICBhdWRpb1BhdGg6IHN0cmluZztcclxuICBmaW5kQm9uZShib25lTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoYm9uZU5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiYm9uZU5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IGJvbmVzID0gdGhpcy5ib25lcztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBib25lID0gYm9uZXNbaV07XHJcbiAgICAgIGlmIChib25lLm5hbWUgPT0gYm9uZU5hbWUpIHJldHVybiBib25lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRCb25lSW5kZXgoYm9uZU5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGJvbmVOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcImJvbmVOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBib25lcyA9IHRoaXMuYm9uZXM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcclxuICAgICAgaWYgKGJvbmVzW2ldLm5hbWUgPT0gYm9uZU5hbWUpIHJldHVybiBpO1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICBmaW5kU2xvdChzbG90TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoc2xvdE5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic2xvdE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBzbG90ID0gc2xvdHNbaV07XHJcbiAgICAgIGlmIChzbG90Lm5hbWUgPT0gc2xvdE5hbWUpIHJldHVybiBzbG90O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRTbG90SW5kZXgoc2xvdE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHNsb3ROYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKylcclxuICAgICAgaWYgKHNsb3RzW2ldLm5hbWUgPT0gc2xvdE5hbWUpIHJldHVybiBpO1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICBmaW5kU2tpbihza2luTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoc2tpbk5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic2tpbk5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IHNraW5zID0gdGhpcy5za2lucztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gc2tpbnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBza2luID0gc2tpbnNbaV07XHJcbiAgICAgIGlmIChza2luLm5hbWUgPT0gc2tpbk5hbWUpIHJldHVybiBza2luO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRFdmVudChldmVudERhdGFOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudERhdGFOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcImV2ZW50RGF0YU5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IGV2ZW50cyA9IHRoaXMuZXZlbnRzO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBldmVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBldmVudCA9IGV2ZW50c1tpXTtcclxuICAgICAgaWYgKGV2ZW50Lm5hbWUgPT0gZXZlbnREYXRhTmFtZSkgcmV0dXJuIGV2ZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRBbmltYXRpb24oYW5pbWF0aW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoYW5pbWF0aW9uTmFtZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJhbmltYXRpb25OYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBhbmltYXRpb25zID0gdGhpcy5hbmltYXRpb25zO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBhbmltYXRpb25zLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTtcclxuICAgICAgaWYgKGFuaW1hdGlvbi5uYW1lID09IGFuaW1hdGlvbk5hbWUpIHJldHVybiBhbmltYXRpb247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZElrQ29uc3RyYWludChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoY29uc3RyYWludE5hbWUgPT0gbnVsbClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IGlrQ29uc3RyYWludHMgPSB0aGlzLmlrQ29uc3RyYWludHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGlrQ29uc3RyYWludHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBjb25zdHJhaW50ID0gaWtDb25zdHJhaW50c1tpXTtcclxuICAgICAgaWYgKGNvbnN0cmFpbnQubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgcmV0dXJuIGNvbnN0cmFpbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZFRyYW5zZm9ybUNvbnN0cmFpbnQoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnN0cmFpbnROYW1lID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCB0cmFuc2Zvcm1Db25zdHJhaW50cyA9IHRoaXMudHJhbnNmb3JtQ29uc3RyYWludHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRyYW5zZm9ybUNvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgY29uc3RyYWludCA9IHRyYW5zZm9ybUNvbnN0cmFpbnRzW2ldO1xyXG4gICAgICBpZiAoY29uc3RyYWludC5uYW1lID09IGNvbnN0cmFpbnROYW1lKSByZXR1cm4gY29uc3RyYWludDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kUGF0aENvbnN0cmFpbnQoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnN0cmFpbnROYW1lID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBwYXRoQ29uc3RyYWludHMgPSB0aGlzLnBhdGhDb25zdHJhaW50cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gcGF0aENvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgY29uc3RyYWludCA9IHBhdGhDb25zdHJhaW50c1tpXTtcclxuICAgICAgaWYgKGNvbnN0cmFpbnQubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgcmV0dXJuIGNvbnN0cmFpbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZFBhdGhDb25zdHJhaW50SW5kZXgocGF0aENvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChwYXRoQ29uc3RyYWludE5hbWUgPT0gbnVsbClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGF0aENvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBwYXRoQ29uc3RyYWludHMgPSB0aGlzLnBhdGhDb25zdHJhaW50cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gcGF0aENvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKylcclxuICAgICAgaWYgKHBhdGhDb25zdHJhaW50c1tpXS5uYW1lID09IHBhdGhDb25zdHJhaW50TmFtZSkgcmV0dXJuIGk7XHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG59XHJcbiJdfQ==