@esotericsoftware/spine-core 4.3.0 → 4.3.1

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.
@@ -28,7 +28,7 @@
28
28
  *****************************************************************************/
29
29
  import { Inherit } from "./BoneData.js";
30
30
  import { Constraint } from "./Constraint.js";
31
- import { ScaleYMode } from "./IkConstraintData.js";
31
+ import { ScaleYMode } from "./ConstraintData.js";
32
32
  import { IkConstraintPose } from "./IkConstraintPose.js";
33
33
  import { MathUtils } from "./Utils.js";
34
34
  /** Adjusts the local rotation of 1 or 2 constrained bones so the world position of the tip of the last bone is as close to the
@@ -102,7 +102,7 @@ export class IkConstraint extends Constraint {
102
102
  break;
103
103
  // biome-ignore lint/suspicious/noFallthroughSwitchClause: reference runtime
104
104
  case Inherit.NoRotationOrReflection: {
105
- const s = Math.abs(pa * pd - pb * pc) / Math.max(0.0001, pa * pa + pc * pc);
105
+ const s = Math.abs(pa * pd - pb * pc) / Math.max(MathUtils.epsilon, pa * pa + pc * pc);
106
106
  const sa = pa / skeleton.scaleX;
107
107
  const sc = pc / skeleton.scaleY;
108
108
  pb = -sc * s * skeleton.scaleX;
@@ -113,7 +113,7 @@ export class IkConstraint extends Constraint {
113
113
  default: {
114
114
  const x = targetX - p.worldX, y = targetY - p.worldY;
115
115
  const d = pa * pd - pb * pc;
116
- if (Math.abs(d) <= 0.0001) {
116
+ if (Math.abs(d) <= MathUtils.epsilon) {
117
117
  tx = 0;
118
118
  ty = 0;
119
119
  }
@@ -128,7 +128,7 @@ export class IkConstraint extends Constraint {
128
128
  rotationIK += 180;
129
129
  if (rotationIK > 180)
130
130
  rotationIK -= 360;
131
- else if (rotationIK < -180)
131
+ else if (rotationIK <= -180)
132
132
  rotationIK += 360;
133
133
  bone.rotation += rotationIK * mix;
134
134
  if (compress || stretch) {
@@ -139,7 +139,7 @@ export class IkConstraint extends Constraint {
139
139
  ty = targetY - bone.worldY;
140
140
  }
141
141
  const b = bone.bone.data.length * bone.scaleX;
142
- if (b > 0.0001) {
142
+ if (b > MathUtils.epsilon) {
143
143
  const dd = tx * tx + ty * ty;
144
144
  if ((compress && dd < b * b) || (stretch && dd > b * b)) {
145
145
  const s = (Math.sqrt(dd) / b - 1) * mix + 1;
@@ -148,7 +148,7 @@ export class IkConstraint extends Constraint {
148
148
  case ScaleYMode.Uniform:
149
149
  bone.scaleY *= s;
150
150
  break;
151
- case ScaleYMode.Volume: bone.scaleY /= s;
151
+ case ScaleYMode.Volume: bone.scaleY /= s < 0.7 ? 0.25 + 0.642857 * s : s;
152
152
  }
153
153
  }
154
154
  }
@@ -183,7 +183,7 @@ export class IkConstraint extends Constraint {
183
183
  else
184
184
  os2 = 0;
185
185
  let cwx = 0, cwy = 0, a = parent.a, b = parent.b, c = parent.c, d = parent.d;
186
- const u = Math.abs(psx - psy) <= 0.0001;
186
+ const u = Math.abs(psx - psy) <= MathUtils.epsilon;
187
187
  if (!u || stretch) {
188
188
  child.y = 0;
189
189
  cwx = a * child.x + parent.worldX;
@@ -200,10 +200,10 @@ export class IkConstraint extends Constraint {
200
200
  c = pp.c;
201
201
  d = pp.d;
202
202
  let id = a * d - b * c, x = cwx - pp.worldX, y = cwy - pp.worldY;
203
- id = Math.abs(id) <= 0.0001 ? 0 : 1 / id;
203
+ id = Math.abs(id) <= MathUtils.epsilon ? 0 : 1 / id;
204
204
  const dx = (x * d - y * b) * id - px, dy = (y * a - x * c) * id - py;
205
205
  let l1 = Math.sqrt(dx * dx + dy * dy), l2 = child.bone.data.length * csx, a1, a2;
206
- if (l1 < 0.0001) {
206
+ if (l1 < MathUtils.epsilon) {
207
207
  IkConstraint.apply(skeleton, parent, targetX, targetY, false, stretch, ScaleYMode.None, mix);
208
208
  child.rotation = 0;
209
209
  return;
@@ -241,7 +241,7 @@ export class IkConstraint extends Constraint {
241
241
  case ScaleYMode.Uniform:
242
242
  parent.scaleY *= a;
243
243
  break;
244
- case ScaleYMode.Volume: parent.scaleY /= a;
244
+ case ScaleYMode.Volume: parent.scaleY /= a < 0.7 ? 0.25 + 0.642857 * a : a;
245
245
  }
246
246
  }
247
247
  }
@@ -307,15 +307,15 @@ export class IkConstraint extends Constraint {
307
307
  a1 = (a1 - os) * MathUtils.radDeg + os1 - parent.rotation;
308
308
  if (a1 > 180)
309
309
  a1 -= 360;
310
- else if (a1 < -180) //
310
+ else if (a1 <= -180) //
311
311
  a1 += 360;
312
312
  parent.rotation += a1 * mix;
313
313
  a2 = ((a2 + os) * MathUtils.radDeg - child.shearX) * s2 + os2 - child.rotation;
314
314
  if (a2 > 180)
315
315
  a2 -= 360;
316
- else if (a2 < -180) //
316
+ else if (a2 <= -180) //
317
317
  a2 += 360;
318
318
  child.rotation += a2 * mix;
319
319
  }
320
320
  }
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWtDb25zdHJhaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0lrQ29uc3RyYWludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUF5QixVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd6RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXZDOzs7cUdBR3FHO0FBQ3JHLE1BQU0sT0FBTyxZQUFhLFNBQVEsVUFBNEQ7SUFDN0Ysb0VBQW9FO0lBQzNELEtBQUssQ0FBa0I7SUFFaEMsc0NBQXNDO0lBQ3RDLE1BQU0sQ0FBTztJQUViLFlBQWEsSUFBc0IsRUFBRSxRQUFrQjtRQUN0RCxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUUzRCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQWdCLENBQUM7UUFDOUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSztZQUNoQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVqRSxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxD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LEdBQUcsR0FBRztZQUNYLEVBQUUsSUFBSSxHQUFHLENBQUM7YUFDTixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3JCLEVBQUUsSUFBSSxHQUFHLENBQUM7UUFDWCxLQUFLLENBQUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDNUIsQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgdHlwZSB7IEJvbmUgfSBmcm9tIFwiLi9Cb25lLmpzXCI7XG5pbXBvcnQgeyBJbmhlcml0IH0gZnJvbSBcIi4vQm9uZURhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgQm9uZVBvc2UgfSBmcm9tIFwiLi9Cb25lUG9zZS5qc1wiO1xuaW1wb3J0IHsgQ29uc3RyYWludCB9IGZyb20gXCIuL0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IHR5cGUgSWtDb25zdHJhaW50RGF0YSwgU2NhbGVZTW9kZSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludFBvc2UgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnRQb3NlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzaWNzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbi8qKiBBZGp1c3RzIHRoZSBsb2NhbCByb3RhdGlvbiBvZiAxIG9yIDIgY29uc3RyYWluZWQgYm9uZXMgc28gdGhlIHdvcmxkIHBvc2l0aW9uIG9mIHRoZSB0aXAgb2YgdGhlIGxhc3QgYm9uZSBpcyBhcyBjbG9zZSB0byB0aGVcbiAqIHRhcmdldCBib25lIGFzIHBvc3NpYmxlLlxuICpcbiAqIFNlZSBbSUsgY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1pay1jb25zdHJhaW50cykgaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgSWtDb25zdHJhaW50IGV4dGVuZHMgQ29uc3RyYWludDxJa0NvbnN0cmFpbnQsIElrQ29uc3RyYWludERhdGEsIElrQ29uc3RyYWludFBvc2U+IHtcblx0LyoqIFRoZSAxIG9yIDIgYm9uZXMgdGhhdCB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoaXMgSUsgY29uc3RyYWludC4gKi9cblx0cmVhZG9ubHkgYm9uZXM6IEFycmF5PEJvbmVQb3NlPjtcblxuXHQvKiogVGhlIGJvbmUgdGhhdCBpcyB0aGUgSUsgdGFyZ2V0LiAqL1xuXHR0YXJnZXQ6IEJvbmU7XG5cblx0Y29uc3RydWN0b3IgKGRhdGE6IElrQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBJa0NvbnN0cmFpbnRQb3NlKCksIG5ldyBJa0NvbnN0cmFpbnRQb3NlKCkpO1xuXHRcdGlmICghc2tlbGV0b24pIHRocm93IG5ldyBFcnJvcihcInNrZWxldG9uIGNhbm5vdCBiZSBudWxsLlwiKTtcblxuXHRcdHRoaXMuYm9uZXMgPSBbXSBhcyBCb25lUG9zZVtdO1xuXHRcdGZvciAoY29uc3QgYm9uZURhdGEgb2YgZGF0YS5ib25lcylcblx0XHRcdHRoaXMuYm9uZXMucHVzaChza2VsZXRvbi5ib25lc1tib25lRGF0YS5pbmRleF0uY29uc3RyYWluZWRQb3NlKTtcblxuXHRcdHRoaXMudGFyZ2V0ID0gc2tlbGV0b24uYm9uZXNbZGF0YS50YXJnZXQuaW5kZXhdO1xuXHR9XG5cblx0Y29weSAoc2tlbGV0b246IFNrZWxldG9uKTogSWtDb25zdHJhaW50IHtcblx0XHR2YXIgY29weSA9IG5ldyBJa0NvbnN0cmFpbnQodGhpcy5kYXRhLCBza2VsZXRvbik7XG5cdFx0Y29weS5wb3NlLnNldCh0aGlzLnBvc2UpO1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG5cblx0dXBkYXRlIChza2VsZXRvbjogU2tlbGV0b24sIHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRpZiAocC5taXggPT09IDApIHJldHVybjtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldC5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0c3dpdGNoIChib25lcy5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0SWtDb25zdHJhaW50LmFwcGx5KHNrZWxldG9uLCBib25lc1swXSwgdGFyZ2V0LndvcmxkWCwgdGFyZ2V0LndvcmxkWSwgcC5jb21wcmVzcywgcC5zdHJldGNoLCB0aGlzLmRhdGEuc2NhbGVZTW9kZSwgcC5taXgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0SWtDb25zdHJhaW50LmFwcGx5KHNrZWxldG9uLCBib25lc1swXSwgYm9uZXNbMV0sIHRhcmdldC53b3JsZFgsIHRhcmdldC53b3JsZFksIHAuYmVuZERpcmVjdGlvbiwgcC5zdHJldGNoLCB0aGlzLmRhdGEuc2NhbGVZTW9kZSxcblx0XHRcdFx0XHRwLnNvZnRuZXNzLCBwLm1peCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHNvcnQgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHNrZWxldG9uLnNvcnRCb25lKHRoaXMudGFyZ2V0KTtcblx0XHRjb25zdCBwYXJlbnQgPSB0aGlzLmJvbmVzWzBdLmJvbmU7XG5cdFx0c2tlbGV0b24uc29ydEJvbmUocGFyZW50KTtcblx0XHRza2VsZXRvbi5fdXBkYXRlQ2FjaGUucHVzaCh0aGlzKTtcblx0XHRwYXJlbnQuc29ydGVkID0gZmFsc2U7XG5cdFx0c2tlbGV0b24uc29ydFJlc2V0KHBhcmVudC5jaGlsZHJlbik7XG5cdFx0c2tlbGV0b24uY29uc3RyYWluZWQocGFyZW50KTtcblx0XHRpZiAodGhpcy5ib25lcy5sZW5ndGggPiAxKSBza2VsZXRvbi5jb25zdHJhaW5lZCh0aGlzLmJvbmVzWzFdLmJvbmUpO1xuXHR9XG5cblx0aXNTb3VyY2VBY3RpdmUgKCkge1xuXHRcdHJldHVybiB0aGlzLnRhcmdldC5hY3RpdmU7XG5cdH1cblxuXHQvKiogQXBwbGllcyAxIGJvbmUgSUsuIFRoZSB0YXJnZXQgaXMgc3BlY2lmaWVkIGluIHRoZSB3b3JsZCBjb29yZGluYXRlIHN5c3RlbS4gKi9cblx0cHVibGljIHN0YXRpYyBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBib25lOiBCb25lUG9zZSwgdGFyZ2V0WDogbnVtYmVyLCB0YXJnZXRZOiBudW1iZXIsIGNvbXByZXNzOiBib29sZWFuLCBzdHJldGNoOiBib29sZWFuLCBzY2FsZVlNb2RlOiBTY2FsZVlNb2RlLCBtaXg6IG51bWJlcik6IHZvaWQ7XG5cblx0LyoqIEFwcGxpZXMgMiBib25lIElLLiBUaGUgdGFyZ2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgd29ybGQgY29vcmRpbmF0ZSBzeXN0ZW0uXG5cdCAqIEBwYXJhbSBjaGlsZCBBIGRpcmVjdCBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQgYm9uZS4gKi9cblx0cHVibGljIHN0YXRpYyBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBwYXJlbnQ6IEJvbmVQb3NlLCBjaGlsZDogQm9uZVBvc2UsIHRhcmdldFg6IG51bWJlciwgdGFyZ2V0WTogbnVtYmVyLCBiZW5kRGlyOiBudW1iZXIsIHN0cmV0Y2g6IGJvb2xlYW4sIHNjYWxlWU1vZGU6IFNjYWxlWU1vZGUsIHNvZnRuZXNzOiBudW1iZXIsIG1peDogbnVtYmVyKTogdm9pZDtcblxuXHRwdWJsaWMgc3RhdGljIGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGJvbmVPclBhcmVudDogQm9uZVBvc2UsIHRhcmdldFhvckNoaWxkOiBudW1iZXIgfCBCb25lUG9zZSwgdGFyZ2V0WU9yVGFyZ2V0WDogbnVtYmVyLCBjb21wcmVzc09yVGFyZ2V0WTogYm9vbGVhbiB8IG51bWJlcixcblx0XHRzdHJldGNoT3JCZW5kRGlyOiBib29sZWFuIHwgbnVtYmVyLCBzY2FsZVlNb2RlT3JTdHJldGNoOiBTY2FsZVlNb2RlIHwgYm9vbGVhbiwgbWl4T3JTY2FsZVlNb2RlOiBudW1iZXIgfCBib29sZWFuLCBzb2Z0bmVzcz86IG51bWJlciwgbWl4PzogbnVtYmVyKSB7XG5cblx0XHRpZiAodHlwZW9mIHRhcmdldFhvckNoaWxkID09PSBcIm51bWJlclwiKVxuXHRcdFx0SWtDb25zdHJhaW50LmFwcGx5MShza2VsZXRvbiwgYm9uZU9yUGFyZW50LCB0YXJnZXRYb3JDaGlsZCwgdGFyZ2V0WU9yVGFyZ2V0WCwgY29tcHJlc3NPclRhcmdldFkgYXMgYm9vbGVhbiwgc3RyZXRjaE9yQmVuZERpciBhcyBib29sZWFuLCBzY2FsZVlNb2RlT3JTdHJldGNoIGFzIFNjYWxlWU1vZGUsIG1peE9yU2NhbGVZTW9kZSBhcyBudW1iZXIpO1xuXHRcdGVsc2Vcblx0XHRcdElrQ29uc3RyYWludC5hcHBseTIoc2tlbGV0b24sIGJvbmVPclBhcmVudCwgdGFyZ2V0WG9yQ2hpbGQgYXMgQm9uZVBvc2UsIHRhcmdldFlPclRhcmdldFgsIGNvbXByZXNzT3JUYXJnZXRZIGFzIG51bWJlciwgc3RyZXRjaE9yQmVuZERpciBhcyBudW1iZXIsXG5cdFx0XHRcdHNjYWxlWU1vZGVPclN0cmV0Y2ggYXMgYm9vbGVhbiwgbWl4T3JTY2FsZVlNb2RlIGFzIFNjYWxlWU1vZGUsIHNvZnRuZXNzIGFzIG51bWJlciwgbWl4IGFzIG51bWJlcik7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBhcHBseTEgKHNrZWxldG9uOiBTa2VsZXRvbiwgYm9uZTogQm9uZVBvc2UsIHRhcmdldFg6IG51bWJlciwgdGFyZ2V0WTogbnVtYmVyLCBjb21wcmVzczogYm9vbGVhbiwgc3RyZXRjaDogYm9vbGVhbiwgc2NhbGVZTW9kZTogU2NhbGVZTW9kZSwgbWl4OiBudW1iZXIpIHtcblx0XHRib25lLm1vZGlmeUxvY2FsKHNrZWxldG9uKTtcblxuXHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL25vTm9uTnVsbEFzc2VydGlvbjogcmVmZXJlbmNlIHJ1bnRpbWVcblx0XHRjb25zdCBwID0gYm9uZS5ib25lLnBhcmVudCEuYXBwbGllZFBvc2U7XG5cblx0XHRsZXQgcGEgPSBwLmEsIHBiID0gcC5iLCBwYyA9IHAuYywgcGQgPSBwLmQ7XG5cdFx0bGV0IHJvdGF0aW9uSUsgPSAtYm9uZS5zaGVhclggLSBib25lLnJvdGF0aW9uLCB0eCA9IDAsIHR5ID0gMDtcblxuXHRcdHN3aXRjaCAoYm9uZS5pbmhlcml0KSB7XG5cdFx0XHRjYXNlIEluaGVyaXQuT25seVRyYW5zbGF0aW9uOlxuXHRcdFx0XHR0eCA9ICh0YXJnZXRYIC0gYm9uZS53b3JsZFgpICogTWF0aFV0aWxzLnNpZ251bShza2VsZXRvbi5zY2FsZVgpO1xuXHRcdFx0XHR0eSA9ICh0YXJnZXRZIC0gYm9uZS53b3JsZFkpICogTWF0aFV0aWxzLnNpZ251bShza2VsZXRvbi5zY2FsZVkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTogcmVmZXJlbmNlIHJ1bnRpbWVcblx0XHRcdGNhc2UgSW5oZXJpdC5Ob1JvdGF0aW9uT3JSZWZsZWN0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHMgPSBNYXRoLmFicyhwYSAqIHBkIC0gcGIgKiBwYykgLyBNYXRoLm1heCgwLjAwMDEsIHBhICogcGEgKyBwYyAqIHBjKTtcblx0XHRcdFx0Y29uc3Qgc2EgPSBwYSAvIHNrZWxldG9uLnNjYWxlWDtcblx0XHRcdFx0Y29uc3Qgc2MgPSBwYyAvIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0cGIgPSAtc2MgKiBzICogc2tlbGV0b24uc2NhbGVYO1xuXHRcdFx0XHRwZCA9IHNhICogcyAqIHNrZWxldG9uLnNjYWxlWTtcblx0XHRcdFx0cm90YXRpb25JSyArPSBNYXRoVXRpbHMuYXRhbjJEZWcoc2MsIHNhKTtcblx0XHRcdH1cblx0XHRcdC8vIEZhbGwgdGhyb3VnaFxuXHRcdFx0ZGVmYXVsdDoge1xuXHRcdFx0XHRjb25zdCB4ID0gdGFyZ2V0WCAtIHAud29ybGRYLCB5ID0gdGFyZ2V0WSAtIHAud29ybGRZO1xuXHRcdFx0XHRjb25zdCBkID0gcGEgKiBwZCAtIHBiICogcGM7XG5cdFx0XHRcdGlmIChNYXRoLmFicyhkKSA8PSAwLjAwMDEpIHtcblx0XHRcdFx0XHR0eCA9IDA7XG5cdFx0XHRcdFx0dHkgPSAwO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHR4ID0gKHggKiBwZCAtIHkgKiBwYikgLyBkIC0gYm9uZS54O1xuXHRcdFx0XHRcdHR5ID0gKHkgKiBwYSAtIHggKiBwYykgLyBkIC0gYm9uZS55O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJvdGF0aW9uSUsgKz0gTWF0aFV0aWxzLmF0YW4yRGVnKHR5LCB0eCk7XG5cdFx0aWYgKGJvbmUuc2NhbGVYIDwgMCkgcm90YXRpb25JSyArPSAxODA7XG5cdFx0aWYgKHJvdGF0aW9uSUsgPiAxODApXG5cdFx0XHRyb3RhdGlvbklLIC09IDM2MDtcblx0XHRlbHNlIGlmIChyb3RhdGlvbklLIDwgLTE4MClcblx0XHRcdHJvdGF0aW9uSUsgKz0gMzYwO1xuXHRcdGJvbmUucm90YXRpb24gKz0gcm90YXRpb25JSyAqIG1peDtcblx0XHRpZiAoY29tcHJlc3MgfHwgc3RyZXRjaCkge1xuXHRcdFx0c3dpdGNoIChib25lLmluaGVyaXQpIHtcblx0XHRcdFx0Y2FzZSBJbmhlcml0Lk5vU2NhbGU6XG5cdFx0XHRcdGNhc2UgSW5oZXJpdC5Ob1NjYWxlT3JSZWZsZWN0aW9uOlxuXHRcdFx0XHRcdHR4ID0gdGFyZ2V0WCAtIGJvbmUud29ybGRYO1xuXHRcdFx0XHRcdHR5ID0gdGFyZ2V0WSAtIGJvbmUud29ybGRZO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgYiA9IGJvbmUuYm9uZS5kYXRhLmxlbmd0aCAqIGJvbmUuc2NhbGVYO1xuXHRcdFx0aWYgKGIgPiAwLjAwMDEpIHtcblx0XHRcdFx0Y29uc3QgZGQgPSB0eCAqIHR4ICsgdHkgKiB0eTtcblx0XHRcdFx0aWYgKChjb21wcmVzcyAmJiBkZCA8IGIgKiBiKSB8fCAoc3RyZXRjaCAmJiBkZCA+IGIgKiBiKSkge1xuXHRcdFx0XHRcdGNvbnN0IHMgPSAoTWF0aC5zcXJ0KGRkKSAvIGIgLSAxKSAqIG1peCArIDE7XG5cdFx0XHRcdFx0Ym9uZS5zY2FsZVggKj0gcztcblx0XHRcdFx0XHRzd2l0Y2ggKHNjYWxlWU1vZGUpIHtcblx0XHRcdFx0XHRcdGNhc2UgU2NhbGVZTW9kZS5Vbmlmb3JtOiBib25lLnNjYWxlWSAqPSBzOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgU2NhbGVZTW9kZS5Wb2x1bWU6IGJvbmUuc2NhbGVZIC89IHM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqIEFwcGxpZXMgMiBib25lIElLLiBUaGUgdGFyZ2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgd29ybGQgY29vcmRpbmF0ZSBzeXN0ZW0uXG5cdCAqIEBwYXJhbSBjaGlsZCBBIGRpcmVjdCBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQgYm9uZS4gKi9cblx0cHJpdmF0ZSBzdGF0aWMgYXBwbHkyIChza2VsZXRvbjogU2tlbGV0b24sIHBhcmVudDogQm9uZVBvc2UsIGNoaWxkOiBCb25lUG9zZSwgdGFyZ2V0WDogbnVtYmVyLCB0YXJnZXRZOiBudW1iZXIsIGJlbmREaXI6IG51bWJlciwgc3RyZXRjaDogYm9vbGVhbiwgc2NhbGVZTW9kZTogU2NhbGVZTW9kZSwgc29mdG5lc3M6IG51bWJlciwgbWl4OiBudW1iZXIpIHtcblx0XHRpZiAocGFyZW50LmluaGVyaXQgIT09IEluaGVyaXQuTm9ybWFsIHx8IGNoaWxkLmluaGVyaXQgIT09IEluaGVyaXQuTm9ybWFsKSByZXR1cm47XG5cdFx0cGFyZW50Lm1vZGlmeUxvY2FsKHNrZWxldG9uKTtcblx0XHRjaGlsZC5tb2RpZnlMb2NhbChza2VsZXRvbik7XG5cdFx0bGV0IHB4ID0gcGFyZW50LngsIHB5ID0gcGFyZW50LnksIHBzeCA9IHBhcmVudC5zY2FsZVgsIHBzeSA9IHBhcmVudC5zY2FsZVksIGNzeCA9IGNoaWxkLnNjYWxlWDtcblx0XHRsZXQgb3MxID0gMCwgb3MyID0gMCwgczIgPSAwO1xuXHRcdGlmIChwc3ggPCAwKSB7XG5cdFx0XHRwc3ggPSAtcHN4O1xuXHRcdFx0b3MxID0gMTgwO1xuXHRcdFx0czIgPSAtMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3MxID0gMDtcblx0XHRcdHMyID0gMTtcblx0XHR9XG5cdFx0aWYgKHBzeSA8IDApIHtcblx0XHRcdHBzeSA9IC1wc3k7XG5cdFx0XHRzMiA9IC1zMjtcblx0XHR9XG5cdFx0aWYgKGNzeCA8IDApIHtcblx0XHRcdGNzeCA9IC1jc3g7XG5cdFx0XHRvczIgPSAxODA7XG5cdFx0fSBlbHNlXG5cdFx0XHRvczIgPSAwO1xuXHRcdGxldCBjd3ggPSAwLCBjd3kgPSAwLCBhID0gcGFyZW50LmEsIGIgPSBwYXJlbnQuYiwgYyA9IHBhcmVudC5jLCBkID0gcGFyZW50LmQ7XG5cdFx0Y29uc3QgdSA9IE1hdGguYWJzKHBzeCAtIHBzeSkgPD0gMC4wMDAxO1xuXHRcdGlmICghdSB8fCBzdHJldGNoKSB7XG5cdFx0XHRjaGlsZC55ID0gMDtcblx0XHRcdGN3eCA9IGEgKiBjaGlsZC54ICsgcGFyZW50LndvcmxkWDtcblx0XHRcdGN3eSA9IGMgKiBjaGlsZC54ICsgcGFyZW50LndvcmxkWTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y3d4ID0gYSAqIGNoaWxkLnggKyBiICogY2hpbGQueSArIHBhcmVudC53b3JsZFg7XG5cdFx0XHRjd3kgPSBjICogY2hpbGQueCArIGQgKiBjaGlsZC55ICsgcGFyZW50LndvcmxkWTtcblx0XHR9XG5cdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3R5bGUvbm9Ob25OdWxsQXNzZXJ0aW9uOiByZWZlcmVuY2UgcnVudGltZVxuXHRcdGNvbnN0IHBwID0gcGFyZW50LmJvbmUucGFyZW50IS5hcHBsaWVkUG9zZTtcblx0XHRhID0gcHAuYTtcblx0XHRiID0gcHAuYjtcblx0XHRjID0gcHAuYztcblx0XHRkID0gcHAuZDtcblx0XHRsZXQgaWQgPSBhICogZCAtIGIgKiBjLCB4ID0gY3d4IC0gcHAud29ybGRYLCB5ID0gY3d5IC0gcHAud29ybGRZO1xuXHRcdGlkID0gTWF0aC5hYnMoaWQpIDw9IDAuMDAwMSA/IDAgOiAxIC8gaWQ7XG5cdFx0Y29uc3QgZHggPSAoeCAqIGQgLSB5ICogYikgKiBpZCAtIHB4LCBkeSA9ICh5ICogYSAtIHggKiBjKSAqIGlkIC0gcHk7XG5cdFx0bGV0IGwxID0gTWF0aC5zcXJ0KGR4ICogZHggKyBkeSAqIGR5KSwgbDIgPSBjaGlsZC5ib25lLmRhdGEubGVuZ3RoICogY3N4LCBhMTogbnVtYmVyLCBhMjogbnVtYmVyO1xuXHRcdGlmIChsMSA8IDAuMDAwMSkge1xuXHRcdFx0SWtDb25zdHJhaW50LmFwcGx5KHNrZWxldG9uLCBwYXJlbnQsIHRhcmdldFgsIHRhcmdldFksIGZhbHNlLCBzdHJldGNoLCBTY2FsZVlNb2RlLk5vbmUsIG1peCk7XG5cdFx0XHRjaGlsZC5yb3RhdGlvbiA9IDA7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHggPSB0YXJnZXRYIC0gcHAud29ybGRYO1xuXHRcdHkgPSB0YXJnZXRZIC0gcHAud29ybGRZO1xuXHRcdGxldCB0eCA9ICh4ICogZCAtIHkgKiBiKSAqIGlkIC0gcHgsIHR5ID0gKHkgKiBhIC0geCAqIGMpICogaWQgLSBweTtcblx0XHRsZXQgZGQgPSB0eCAqIHR4ICsgdHkgKiB0eTtcblx0XHRpZiAoc29mdG5lc3MgIT09IDApIHtcblx0XHRcdHNvZnRuZXNzICo9IHBzeCAqIChjc3ggKyAxKSAqIDAuNTtcblx0XHRcdGNvbnN0IHRkID0gTWF0aC5zcXJ0KGRkKSwgc2QgPSB0ZCAtIGwxIC0gbDIgKiBwc3ggKyBzb2Z0bmVzcztcblx0XHRcdGlmIChzZCA+IDApIHtcblx0XHRcdFx0bGV0IHAgPSBNYXRoLm1pbigxLCBzZCAvIChzb2Z0bmVzcyAqIDIpKSAtIDE7XG5cdFx0XHRcdHAgPSAoc2QgLSBzb2Z0bmVzcyAqICgxIC0gcCAqIHApKSAvIHRkO1xuXHRcdFx0XHR0eCAtPSBwICogdHg7XG5cdFx0XHRcdHR5IC09IHAgKiB0eTtcblx0XHRcdFx0ZGQgPSB0eCAqIHR4ICsgdHkgKiB0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbmZ1c2luZ0xhYmVsczogcmVmZXJlbmNlIHJ1bnRpbWVcblx0XHRvdXRlcjpcblx0XHRpZiAodSkge1xuXHRcdFx0bDIgKj0gcHN4O1xuXHRcdFx0bGV0IGNvcyA9IChkZCAtIGwxICogbDEgLSBsMiAqIGwyKSAvICgyICogbDEgKiBsMik7XG5cdFx0XHRpZiAoY29zIDwgLTEpIHtcblx0XHRcdFx0Y29zID0gLTE7XG5cdFx0XHRcdGEyID0gTWF0aC5QSSAqIGJlbmREaXI7XG5cdFx0XHR9IGVsc2UgaWYgKGNvcyA+IDEpIHtcblx0XHRcdFx0Y29zID0gMTtcblx0XHRcdFx0YTIgPSAwO1xuXHRcdFx0XHRpZiAoc3RyZXRjaCkge1xuXHRcdFx0XHRcdGEgPSAoTWF0aC5zcXJ0KGRkKSAvIChsMSArIGwyKSAtIDEpICogbWl4ICsgMTtcblx0XHRcdFx0XHRwYXJlbnQuc2NhbGVYICo9IGE7XG5cdFx0XHRcdFx0c3dpdGNoIChzY2FsZVlNb2RlKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFNjYWxlWU1vZGUuVW5pZm9ybTogcGFyZW50LnNjYWxlWSAqPSBhOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgU2NhbGVZTW9kZS5Wb2x1bWU6IHBhcmVudC5zY2FsZVkgLz0gYTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZVxuXHRcdFx0XHRhMiA9IE1hdGguYWNvcyhjb3MpICogYmVuZERpcjtcblx0XHRcdGEgPSBsMSArIGwyICogY29zO1xuXHRcdFx0YiA9IGwyICogTWF0aC5zaW4oYTIpO1xuXHRcdFx0YTEgPSBNYXRoLmF0YW4yKHR5ICogYSAtIHR4ICogYiwgdHggKiBhICsgdHkgKiBiKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0YSA9IHBzeCAqIGwyO1xuXHRcdFx0YiA9IHBzeSAqIGwyO1xuXHRcdFx0Y29uc3QgYWEgPSBhICogYSwgYmIgPSBiICogYiwgdGEgPSBNYXRoLmF0YW4yKHR5LCB0eCk7XG5cdFx0XHRjID0gYmIgKiBsMSAqIGwxICsgYWEgKiBkZCAtIGFhICogYmI7XG5cdFx0XHRjb25zdCBjMSA9IC0yICogYmIgKiBsMSwgYzIgPSBiYiAtIGFhO1xuXHRcdFx0ZCA9IGMxICogYzEgLSA0ICogYzIgKiBjO1xuXHRcdFx0aWYgKGQgPj0gMCkge1xuXHRcdFx0XHRsZXQgcSA9IE1hdGguc3FydChkKTtcblx0XHRcdFx0aWYgKGMxIDwgMCkgcSA9IC1xO1xuXHRcdFx0XHRxID0gLShjMSArIHEpICogMC41O1xuXHRcdFx0XHRsZXQgcjAgPSBxIC8gYzIsIHIxID0gYyAvIHE7XG5cdFx0XHRcdGNvbnN0IHIgPSBNYXRoLmFicyhyMCkgPCBNYXRoLmFicyhyMSkgPyByMCA6IHIxO1xuXHRcdFx0XHRyMCA9IGRkIC0gciAqIHI7XG5cdFx0XHRcdGlmIChyMCA+PSAwKSB7XG5cdFx0XHRcdFx0eSA9IE1hdGguc3FydChyMCkgKiBiZW5kRGlyO1xuXHRcdFx0XHRcdGExID0gdGEgLSBNYXRoLmF0YW4yKHksIHIpO1xuXHRcdFx0XHRcdGEyID0gTWF0aC5hdGFuMih5IC8gcHN5LCAociAtIGwxKSAvIHBzeCk7XG5cdFx0XHRcdFx0YnJlYWsgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGxldCBtaW5BbmdsZSA9IE1hdGhVdGlscy5QSSwgbWluWCA9IGwxIC0gYSwgbWluRGlzdCA9IG1pblggKiBtaW5YLCBtaW5ZID0gMDtcblx0XHRcdGxldCBtYXhBbmdsZSA9IDAsIG1heFggPSBsMSArIGEsIG1heERpc3QgPSBtYXhYICogbWF4WCwgbWF4WSA9IDA7XG5cdFx0XHRjID0gLWEgKiBsMSAvIChhYSAtIGJiKTtcblx0XHRcdGlmIChjID49IC0xICYmIGMgPD0gMSkge1xuXHRcdFx0XHRjID0gTWF0aC5hY29zKGMpO1xuXHRcdFx0XHR4ID0gYSAqIE1hdGguY29zKGMpICsgbDE7XG5cdFx0XHRcdHkgPSBiICogTWF0aC5zaW4oYyk7XG5cdFx0XHRcdGQgPSB4ICogeCArIHkgKiB5O1xuXHRcdFx0XHRpZiAoZCA8IG1pbkRpc3QpIHtcblx0XHRcdFx0XHRtaW5BbmdsZSA9IGM7XG5cdFx0XHRcdFx0bWluRGlzdCA9IGQ7XG5cdFx0XHRcdFx0bWluWCA9IHg7XG5cdFx0XHRcdFx0bWluWSA9IHk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGQgPiBtYXhEaXN0KSB7XG5cdFx0XHRcdFx0bWF4QW5nbGUgPSBjO1xuXHRcdFx0XHRcdG1heERpc3QgPSBkO1xuXHRcdFx0XHRcdG1heFggPSB4O1xuXHRcdFx0XHRcdG1heFkgPSB5O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoZGQgPD0gKG1pbkRpc3QgKyBtYXhEaXN0KSAqIDAuNSkge1xuXHRcdFx0XHRhMSA9IHRhIC0gTWF0aC5hdGFuMihtaW5ZICogYmVuZERpciwgbWluWCk7XG5cdFx0XHRcdGEyID0gbWluQW5nbGUgKiBiZW5kRGlyO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YTEgPSB0YSAtIE1hdGguYXRhbjIobWF4WSAqIGJlbmREaXIsIG1heFgpO1xuXHRcdFx0XHRhMiA9IG1heEFuZ2xlICogYmVuZERpcjtcblx0XHRcdH1cblx0XHR9XG5cdFx0Y29uc3Qgb3MgPSBNYXRoLmF0YW4yKGNoaWxkLnksIGNoaWxkLngpICogczI7XG5cdFx0YTEgPSAoYTEgLSBvcykgKiBNYXRoVXRpbHMucmFkRGVnICsgb3MxIC0gcGFyZW50LnJvdGF0aW9uO1xuXHRcdGlmIChhMSA+IDE4MClcblx0XHRcdGExIC09IDM2MDtcblx0XHRlbHNlIGlmIChhMSA8IC0xODApIC8vXG5cdFx0XHRhMSArPSAzNjA7XG5cdFx0cGFyZW50LnJvdGF0aW9uICs9IGExICogbWl4O1xuXHRcdGEyID0gKChhMiArIG9zKSAqIE1hdGhVdGlscy5yYWREZWcgLSBjaGlsZC5zaGVhclgpICogczIgKyBvczIgLSBjaGlsZC5yb3RhdGlvbjtcblx0XHRpZiAoYTIgPiAxODApXG5cdFx0XHRhMiAtPSAzNjA7XG5cdFx0ZWxzZSBpZiAoYTIgPCAtMTgwKSAvL1xuXHRcdFx0YTIgKz0gMzYwO1xuXHRcdGNoaWxkLnJvdGF0aW9uICs9IGEyICogbWl4O1xuXHR9XG59XG4iXX0=
321
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWtDb25zdHJhaW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL0lrQ29uc3RyYWludC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFHL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV4QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdkM7OztxR0FHcUc7QUFDckcsTUFBTSxPQUFPLFlBQWEsU0FBUSxVQUE0RDtJQUM3RixvRUFBb0U7SUFDM0QsS0FBSyxDQUFrQjtJQUVoQyxzQ0FBc0M7SUFDdEMsTUFBTSxDQUFPO0lBRWIsWUFBYSxJQUFzQixFQUFFLFFBQWtCO1FBQ3RELEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxFQUFFLElBQUksZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxRQUFRO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRTNELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztRQUM5QixLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWpFLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENB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QUM7UUFDWCxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDNUIsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQy9FLElBQUksRUFBRSxHQUFHLEdBQUc7WUFDWCxFQUFFLElBQUksR0FBRyxDQUFDO2FBQ04sSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN0QixFQUFFLElBQUksR0FBRyxDQUFDO1FBQ1gsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lIH0gZnJvbSBcIi4vQm9uZS5qc1wiO1xuaW1wb3J0IHsgSW5oZXJpdCB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJvbmVQb3NlIH0gZnJvbSBcIi4vQm9uZVBvc2UuanNcIjtcbmltcG9ydCB7IENvbnN0cmFpbnQgfSBmcm9tIFwiLi9Db25zdHJhaW50LmpzXCI7XG5pbXBvcnQgeyBTY2FsZVlNb2RlIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB0eXBlIHsgSWtDb25zdHJhaW50RGF0YSB9IGZyb20gXCIuL0lrQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludFBvc2UgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnRQb3NlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFBoeXNpY3MgfSBmcm9tIFwiLi9QaHlzaWNzLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcbmltcG9ydCB7IE1hdGhVdGlscyB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbi8qKiBBZGp1c3RzIHRoZSBsb2NhbCByb3RhdGlvbiBvZiAxIG9yIDIgY29uc3RyYWluZWQgYm9uZXMgc28gdGhlIHdvcmxkIHBvc2l0aW9uIG9mIHRoZSB0aXAgb2YgdGhlIGxhc3QgYm9uZSBpcyBhcyBjbG9zZSB0byB0aGVcbiAqIHRhcmdldCBib25lIGFzIHBvc3NpYmxlLlxuICpcbiAqIFNlZSBbSUsgY29uc3RyYWludHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1pay1jb25zdHJhaW50cykgaW4gdGhlIFNwaW5lIFVzZXIgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgSWtDb25zdHJhaW50IGV4dGVuZHMgQ29uc3RyYWludDxJa0NvbnN0cmFpbnQsIElrQ29uc3RyYWludERhdGEsIElrQ29uc3RyYWludFBvc2U+IHtcblx0LyoqIFRoZSAxIG9yIDIgYm9uZXMgdGhhdCB3aWxsIGJlIG1vZGlmaWVkIGJ5IHRoaXMgSUsgY29uc3RyYWludC4gKi9cblx0cmVhZG9ubHkgYm9uZXM6IEFycmF5PEJvbmVQb3NlPjtcblxuXHQvKiogVGhlIGJvbmUgdGhhdCBpcyB0aGUgSUsgdGFyZ2V0LiAqL1xuXHR0YXJnZXQ6IEJvbmU7XG5cblx0Y29uc3RydWN0b3IgKGRhdGE6IElrQ29uc3RyYWludERhdGEsIHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHN1cGVyKGRhdGEsIG5ldyBJa0NvbnN0cmFpbnRQb3NlKCksIG5ldyBJa0NvbnN0cmFpbnRQb3NlKCkpO1xuXHRcdGlmICghc2tlbGV0b24pIHRocm93IG5ldyBFcnJvcihcInNrZWxldG9uIGNhbm5vdCBiZSBudWxsLlwiKTtcblxuXHRcdHRoaXMuYm9uZXMgPSBbXSBhcyBCb25lUG9zZVtdO1xuXHRcdGZvciAoY29uc3QgYm9uZURhdGEgb2YgZGF0YS5ib25lcylcblx0XHRcdHRoaXMuYm9uZXMucHVzaChza2VsZXRvbi5ib25lc1tib25lRGF0YS5pbmRleF0uY29uc3RyYWluZWRQb3NlKTtcblxuXHRcdHRoaXMudGFyZ2V0ID0gc2tlbGV0b24uYm9uZXNbZGF0YS50YXJnZXQuaW5kZXhdO1xuXHR9XG5cblx0Y29weSAoc2tlbGV0b246IFNrZWxldG9uKTogSWtDb25zdHJhaW50IHtcblx0XHR2YXIgY29weSA9IG5ldyBJa0NvbnN0cmFpbnQodGhpcy5kYXRhLCBza2VsZXRvbik7XG5cdFx0Y29weS5wb3NlLnNldCh0aGlzLnBvc2UpO1xuXHRcdHJldHVybiBjb3B5O1xuXHR9XG5cblx0dXBkYXRlIChza2VsZXRvbjogU2tlbGV0b24sIHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRjb25zdCBwID0gdGhpcy5hcHBsaWVkUG9zZTtcblx0XHRpZiAocC5taXggPT09IDApIHJldHVybjtcblx0XHRjb25zdCB0YXJnZXQgPSB0aGlzLnRhcmdldC5hcHBsaWVkUG9zZTtcblx0XHRjb25zdCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0c3dpdGNoIChib25lcy5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTpcblx0XHRcdFx0SWtDb25zdHJhaW50LmFwcGx5KHNrZWxldG9uLCBib25lc1swXSwgdGFyZ2V0LndvcmxkWCwgdGFyZ2V0LndvcmxkWSwgcC5jb21wcmVzcywgcC5zdHJldGNoLCB0aGlzLmRhdGEuc2NhbGVZTW9kZSwgcC5taXgpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMjpcblx0XHRcdFx0SWtDb25zdHJhaW50LmFwcGx5KHNrZWxldG9uLCBib25lc1swXSwgYm9uZXNbMV0sIHRhcmdldC53b3JsZFgsIHRhcmdldC53b3JsZFksIHAuYmVuZERpcmVjdGlvbiwgcC5zdHJldGNoLCB0aGlzLmRhdGEuc2NhbGVZTW9kZSxcblx0XHRcdFx0XHRwLnNvZnRuZXNzLCBwLm1peCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHNvcnQgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHNrZWxldG9uLnNvcnRCb25lKHRoaXMudGFyZ2V0KTtcblx0XHRjb25zdCBwYXJlbnQgPSB0aGlzLmJvbmVzWzBdLmJvbmU7XG5cdFx0c2tlbGV0b24uc29ydEJvbmUocGFyZW50KTtcblx0XHRza2VsZXRvbi5fdXBkYXRlQ2FjaGUucHVzaCh0aGlzKTtcblx0XHRwYXJlbnQuc29ydGVkID0gZmFsc2U7XG5cdFx0c2tlbGV0b24uc29ydFJlc2V0KHBhcmVudC5jaGlsZHJlbik7XG5cdFx0c2tlbGV0b24uY29uc3RyYWluZWQocGFyZW50KTtcblx0XHRpZiAodGhpcy5ib25lcy5sZW5ndGggPiAxKSBza2VsZXRvbi5jb25zdHJhaW5lZCh0aGlzLmJvbmVzWzFdLmJvbmUpO1xuXHR9XG5cblx0aXNTb3VyY2VBY3RpdmUgKCkge1xuXHRcdHJldHVybiB0aGlzLnRhcmdldC5hY3RpdmU7XG5cdH1cblxuXHQvKiogQXBwbGllcyAxIGJvbmUgSUsuIFRoZSB0YXJnZXQgaXMgc3BlY2lmaWVkIGluIHRoZSB3b3JsZCBjb29yZGluYXRlIHN5c3RlbS4gKi9cblx0cHVibGljIHN0YXRpYyBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBib25lOiBCb25lUG9zZSwgdGFyZ2V0WDogbnVtYmVyLCB0YXJnZXRZOiBudW1iZXIsIGNvbXByZXNzOiBib29sZWFuLCBzdHJldGNoOiBib29sZWFuLCBzY2FsZVlNb2RlOiBTY2FsZVlNb2RlLCBtaXg6IG51bWJlcik6IHZvaWQ7XG5cblx0LyoqIEFwcGxpZXMgMiBib25lIElLLiBUaGUgdGFyZ2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgd29ybGQgY29vcmRpbmF0ZSBzeXN0ZW0uXG5cdCAqIEBwYXJhbSBjaGlsZCBBIGRpcmVjdCBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQgYm9uZS4gKi9cblx0cHVibGljIHN0YXRpYyBhcHBseSAoc2tlbGV0b246IFNrZWxldG9uLCBwYXJlbnQ6IEJvbmVQb3NlLCBjaGlsZDogQm9uZVBvc2UsIHRhcmdldFg6IG51bWJlciwgdGFyZ2V0WTogbnVtYmVyLCBiZW5kRGlyOiBudW1iZXIsIHN0cmV0Y2g6IGJvb2xlYW4sIHNjYWxlWU1vZGU6IFNjYWxlWU1vZGUsIHNvZnRuZXNzOiBudW1iZXIsIG1peDogbnVtYmVyKTogdm9pZDtcblxuXHRwdWJsaWMgc3RhdGljIGFwcGx5IChza2VsZXRvbjogU2tlbGV0b24sIGJvbmVPclBhcmVudDogQm9uZVBvc2UsIHRhcmdldFhvckNoaWxkOiBudW1iZXIgfCBCb25lUG9zZSwgdGFyZ2V0WU9yVGFyZ2V0WDogbnVtYmVyLCBjb21wcmVzc09yVGFyZ2V0WTogYm9vbGVhbiB8IG51bWJlcixcblx0XHRzdHJldGNoT3JCZW5kRGlyOiBib29sZWFuIHwgbnVtYmVyLCBzY2FsZVlNb2RlT3JTdHJldGNoOiBTY2FsZVlNb2RlIHwgYm9vbGVhbiwgbWl4T3JTY2FsZVlNb2RlOiBudW1iZXIgfCBib29sZWFuLCBzb2Z0bmVzcz86IG51bWJlciwgbWl4PzogbnVtYmVyKSB7XG5cblx0XHRpZiAodHlwZW9mIHRhcmdldFhvckNoaWxkID09PSBcIm51bWJlclwiKVxuXHRcdFx0SWtDb25zdHJhaW50LmFwcGx5MShza2VsZXRvbiwgYm9uZU9yUGFyZW50LCB0YXJnZXRYb3JDaGlsZCwgdGFyZ2V0WU9yVGFyZ2V0WCwgY29tcHJlc3NPclRhcmdldFkgYXMgYm9vbGVhbiwgc3RyZXRjaE9yQmVuZERpciBhcyBib29sZWFuLCBzY2FsZVlNb2RlT3JTdHJldGNoIGFzIFNjYWxlWU1vZGUsIG1peE9yU2NhbGVZTW9kZSBhcyBudW1iZXIpO1xuXHRcdGVsc2Vcblx0XHRcdElrQ29uc3RyYWludC5hcHBseTIoc2tlbGV0b24sIGJvbmVPclBhcmVudCwgdGFyZ2V0WG9yQ2hpbGQgYXMgQm9uZVBvc2UsIHRhcmdldFlPclRhcmdldFgsIGNvbXByZXNzT3JUYXJnZXRZIGFzIG51bWJlciwgc3RyZXRjaE9yQmVuZERpciBhcyBudW1iZXIsXG5cdFx0XHRcdHNjYWxlWU1vZGVPclN0cmV0Y2ggYXMgYm9vbGVhbiwgbWl4T3JTY2FsZVlNb2RlIGFzIFNjYWxlWU1vZGUsIHNvZnRuZXNzIGFzIG51bWJlciwgbWl4IGFzIG51bWJlcik7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBhcHBseTEgKHNrZWxldG9uOiBTa2VsZXRvbiwgYm9uZTogQm9uZVBvc2UsIHRhcmdldFg6IG51bWJlciwgdGFyZ2V0WTogbnVtYmVyLCBjb21wcmVzczogYm9vbGVhbiwgc3RyZXRjaDogYm9vbGVhbiwgc2NhbGVZTW9kZTogU2NhbGVZTW9kZSwgbWl4OiBudW1iZXIpIHtcblx0XHRib25lLm1vZGlmeUxvY2FsKHNrZWxldG9uKTtcblxuXHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N0eWxlL25vTm9uTnVsbEFzc2VydGlvbjogcmVmZXJlbmNlIHJ1bnRpbWVcblx0XHRjb25zdCBwID0gYm9uZS5ib25lLnBhcmVudCEuYXBwbGllZFBvc2U7XG5cblx0XHRsZXQgcGEgPSBwLmEsIHBiID0gcC5iLCBwYyA9IHAuYywgcGQgPSBwLmQ7XG5cdFx0bGV0IHJvdGF0aW9uSUsgPSAtYm9uZS5zaGVhclggLSBib25lLnJvdGF0aW9uLCB0eCA9IDAsIHR5ID0gMDtcblxuXHRcdHN3aXRjaCAoYm9uZS5pbmhlcml0KSB7XG5cdFx0XHRjYXNlIEluaGVyaXQuT25seVRyYW5zbGF0aW9uOlxuXHRcdFx0XHR0eCA9ICh0YXJnZXRYIC0gYm9uZS53b3JsZFgpICogTWF0aFV0aWxzLnNpZ251bShza2VsZXRvbi5zY2FsZVgpO1xuXHRcdFx0XHR0eSA9ICh0YXJnZXRZIC0gYm9uZS53b3JsZFkpICogTWF0aFV0aWxzLnNpZ251bShza2VsZXRvbi5zY2FsZVkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9GYWxsdGhyb3VnaFN3aXRjaENsYXVzZTogcmVmZXJlbmNlIHJ1bnRpbWVcblx0XHRcdGNhc2UgSW5oZXJpdC5Ob1JvdGF0aW9uT3JSZWZsZWN0aW9uOiB7XG5cdFx0XHRcdGNvbnN0IHMgPSBNYXRoLmFicyhwYSAqIHBkIC0gcGIgKiBwYykgLyBNYXRoLm1heChNYXRoVXRpbHMuZXBzaWxvbiwgcGEgKiBwYSArIHBjICogcGMpO1xuXHRcdFx0XHRjb25zdCBzYSA9IHBhIC8gc2tlbGV0b24uc2NhbGVYO1xuXHRcdFx0XHRjb25zdCBzYyA9IHBjIC8gc2tlbGV0b24uc2NhbGVZO1xuXHRcdFx0XHRwYiA9IC1zYyAqIHMgKiBza2VsZXRvbi5zY2FsZVg7XG5cdFx0XHRcdHBkID0gc2EgKiBzICogc2tlbGV0b24uc2NhbGVZO1xuXHRcdFx0XHRyb3RhdGlvbklLICs9IE1hdGhVdGlscy5hdGFuMkRlZyhzYywgc2EpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gRmFsbCB0aHJvdWdoXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdGNvbnN0IHggPSB0YXJnZXRYIC0gcC53b3JsZFgsIHkgPSB0YXJnZXRZIC0gcC53b3JsZFk7XG5cdFx0XHRcdGNvbnN0IGQgPSBwYSAqIHBkIC0gcGIgKiBwYztcblx0XHRcdFx0aWYgKE1hdGguYWJzKGQpIDw9IE1hdGhVdGlscy5lcHNpbG9uKSB7XG5cdFx0XHRcdFx0dHggPSAwO1xuXHRcdFx0XHRcdHR5ID0gMDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0eCA9ICh4ICogcGQgLSB5ICogcGIpIC8gZCAtIGJvbmUueDtcblx0XHRcdFx0XHR0eSA9ICh5ICogcGEgLSB4ICogcGMpIC8gZCAtIGJvbmUueTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyb3RhdGlvbklLICs9IE1hdGhVdGlscy5hdGFuMkRlZyh0eSwgdHgpO1xuXHRcdGlmIChib25lLnNjYWxlWCA8IDApIHJvdGF0aW9uSUsgKz0gMTgwO1xuXHRcdGlmIChyb3RhdGlvbklLID4gMTgwKVxuXHRcdFx0cm90YXRpb25JSyAtPSAzNjA7XG5cdFx0ZWxzZSBpZiAocm90YXRpb25JSyA8PSAtMTgwKVxuXHRcdFx0cm90YXRpb25JSyArPSAzNjA7XG5cdFx0Ym9uZS5yb3RhdGlvbiArPSByb3RhdGlvbklLICogbWl4O1xuXHRcdGlmIChjb21wcmVzcyB8fCBzdHJldGNoKSB7XG5cdFx0XHRzd2l0Y2ggKGJvbmUuaW5oZXJpdCkge1xuXHRcdFx0XHRjYXNlIEluaGVyaXQuTm9TY2FsZTpcblx0XHRcdFx0Y2FzZSBJbmhlcml0Lk5vU2NhbGVPclJlZmxlY3Rpb246XG5cdFx0XHRcdFx0dHggPSB0YXJnZXRYIC0gYm9uZS53b3JsZFg7XG5cdFx0XHRcdFx0dHkgPSB0YXJnZXRZIC0gYm9uZS53b3JsZFk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBiID0gYm9uZS5ib25lLmRhdGEubGVuZ3RoICogYm9uZS5zY2FsZVg7XG5cdFx0XHRpZiAoYiA+IE1hdGhVdGlscy5lcHNpbG9uKSB7XG5cdFx0XHRcdGNvbnN0IGRkID0gdHggKiB0eCArIHR5ICogdHk7XG5cdFx0XHRcdGlmICgoY29tcHJlc3MgJiYgZGQgPCBiICogYikgfHwgKHN0cmV0Y2ggJiYgZGQgPiBiICogYikpIHtcblx0XHRcdFx0XHRjb25zdCBzID0gKE1hdGguc3FydChkZCkgLyBiIC0gMSkgKiBtaXggKyAxO1xuXHRcdFx0XHRcdGJvbmUuc2NhbGVYICo9IHM7XG5cdFx0XHRcdFx0c3dpdGNoIChzY2FsZVlNb2RlKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFNjYWxlWU1vZGUuVW5pZm9ybTogYm9uZS5zY2FsZVkgKj0gczsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIFNjYWxlWU1vZGUuVm9sdW1lOiBib25lLnNjYWxlWSAvPSBzIDwgMC43ID8gMC4yNSArIDAuNjQyODU3ICogcyA6IHM7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqIEFwcGxpZXMgMiBib25lIElLLiBUaGUgdGFyZ2V0IGlzIHNwZWNpZmllZCBpbiB0aGUgd29ybGQgY29vcmRpbmF0ZSBzeXN0ZW0uXG5cdCAqIEBwYXJhbSBjaGlsZCBBIGRpcmVjdCBkZXNjZW5kYW50IG9mIHRoZSBwYXJlbnQgYm9uZS4gKi9cblx0cHJpdmF0ZSBzdGF0aWMgYXBwbHkyIChza2VsZXRvbjogU2tlbGV0b24sIHBhcmVudDogQm9uZVBvc2UsIGNoaWxkOiBCb25lUG9zZSwgdGFyZ2V0WDogbnVtYmVyLCB0YXJnZXRZOiBudW1iZXIsIGJlbmREaXI6IG51bWJlciwgc3RyZXRjaDogYm9vbGVhbiwgc2NhbGVZTW9kZTogU2NhbGVZTW9kZSwgc29mdG5lc3M6IG51bWJlciwgbWl4OiBudW1iZXIpIHtcblx0XHRpZiAocGFyZW50LmluaGVyaXQgIT09IEluaGVyaXQuTm9ybWFsIHx8IGNoaWxkLmluaGVyaXQgIT09IEluaGVyaXQuTm9ybWFsKSByZXR1cm47XG5cdFx0cGFyZW50Lm1vZGlmeUxvY2FsKHNrZWxldG9uKTtcblx0XHRjaGlsZC5tb2RpZnlMb2NhbChza2VsZXRvbik7XG5cdFx0bGV0IHB4ID0gcGFyZW50LngsIHB5ID0gcGFyZW50LnksIHBzeCA9IHBhcmVudC5zY2FsZVgsIHBzeSA9IHBhcmVudC5zY2FsZVksIGNzeCA9IGNoaWxkLnNjYWxlWDtcblx0XHRsZXQgb3MxID0gMCwgb3MyID0gMCwgczIgPSAwO1xuXHRcdGlmIChwc3ggPCAwKSB7XG5cdFx0XHRwc3ggPSAtcHN4O1xuXHRcdFx0b3MxID0gMTgwO1xuXHRcdFx0czIgPSAtMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b3MxID0gMDtcblx0XHRcdHMyID0gMTtcblx0XHR9XG5cdFx0aWYgKHBzeSA8IDApIHtcblx0XHRcdHBzeSA9IC1wc3k7XG5cdFx0XHRzMiA9IC1zMjtcblx0XHR9XG5cdFx0aWYgKGNzeCA8IDApIHtcblx0XHRcdGNzeCA9IC1jc3g7XG5cdFx0XHRvczIgPSAxODA7XG5cdFx0fSBlbHNlXG5cdFx0XHRvczIgPSAwO1xuXHRcdGxldCBjd3ggPSAwLCBjd3kgPSAwLCBhID0gcGFyZW50LmEsIGIgPSBwYXJlbnQuYiwgYyA9IHBhcmVudC5jLCBkID0gcGFyZW50LmQ7XG5cdFx0Y29uc3QgdSA9IE1hdGguYWJzKHBzeCAtIHBzeSkgPD0gTWF0aFV0aWxzLmVwc2lsb247XG5cdFx0aWYgKCF1IHx8IHN0cmV0Y2gpIHtcblx0XHRcdGNoaWxkLnkgPSAwO1xuXHRcdFx0Y3d4ID0gYSAqIGNoaWxkLnggKyBwYXJlbnQud29ybGRYO1xuXHRcdFx0Y3d5ID0gYyAqIGNoaWxkLnggKyBwYXJlbnQud29ybGRZO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjd3ggPSBhICogY2hpbGQueCArIGIgKiBjaGlsZC55ICsgcGFyZW50LndvcmxkWDtcblx0XHRcdGN3eSA9IGMgKiBjaGlsZC54ICsgZCAqIGNoaWxkLnkgKyBwYXJlbnQud29ybGRZO1xuXHRcdH1cblx0XHQvLyBiaW9tZS1pZ25vcmUgbGludC9zdHlsZS9ub05vbk51bGxBc3NlcnRpb246IHJlZmVyZW5jZSBydW50aW1lXG5cdFx0Y29uc3QgcHAgPSBwYXJlbnQuYm9uZS5wYXJlbnQhLmFwcGxpZWRQb3NlO1xuXHRcdGEgPSBwcC5hO1xuXHRcdGIgPSBwcC5iO1xuXHRcdGMgPSBwcC5jO1xuXHRcdGQgPSBwcC5kO1xuXHRcdGxldCBpZCA9IGEgKiBkIC0gYiAqIGMsIHggPSBjd3ggLSBwcC53b3JsZFgsIHkgPSBjd3kgLSBwcC53b3JsZFk7XG5cdFx0aWQgPSBNYXRoLmFicyhpZCkgPD0gTWF0aFV0aWxzLmVwc2lsb24gPyAwIDogMSAvIGlkO1xuXHRcdGNvbnN0IGR4ID0gKHggKiBkIC0geSAqIGIpICogaWQgLSBweCwgZHkgPSAoeSAqIGEgLSB4ICogYykgKiBpZCAtIHB5O1xuXHRcdGxldCBsMSA9IE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSksIGwyID0gY2hpbGQuYm9uZS5kYXRhLmxlbmd0aCAqIGNzeCwgYTE6IG51bWJlciwgYTI6IG51bWJlcjtcblx0XHRpZiAobDEgPCBNYXRoVXRpbHMuZXBzaWxvbikge1xuXHRcdFx0SWtDb25zdHJhaW50LmFwcGx5KHNrZWxldG9uLCBwYXJlbnQsIHRhcmdldFgsIHRhcmdldFksIGZhbHNlLCBzdHJldGNoLCBTY2FsZVlNb2RlLk5vbmUsIG1peCk7XG5cdFx0XHRjaGlsZC5yb3RhdGlvbiA9IDA7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHggPSB0YXJnZXRYIC0gcHAud29ybGRYO1xuXHRcdHkgPSB0YXJnZXRZIC0gcHAud29ybGRZO1xuXHRcdGxldCB0eCA9ICh4ICogZCAtIHkgKiBiKSAqIGlkIC0gcHgsIHR5ID0gKHkgKiBhIC0geCAqIGMpICogaWQgLSBweTtcblx0XHRsZXQgZGQgPSB0eCAqIHR4ICsgdHkgKiB0eTtcblx0XHRpZiAoc29mdG5lc3MgIT09IDApIHtcblx0XHRcdHNvZnRuZXNzICo9IHBzeCAqIChjc3ggKyAxKSAqIDAuNTtcblx0XHRcdGNvbnN0IHRkID0gTWF0aC5zcXJ0KGRkKSwgc2QgPSB0ZCAtIGwxIC0gbDIgKiBwc3ggKyBzb2Z0bmVzcztcblx0XHRcdGlmIChzZCA+IDApIHtcblx0XHRcdFx0bGV0IHAgPSBNYXRoLm1pbigxLCBzZCAvIChzb2Z0bmVzcyAqIDIpKSAtIDE7XG5cdFx0XHRcdHAgPSAoc2QgLSBzb2Z0bmVzcyAqICgxIC0gcCAqIHApKSAvIHRkO1xuXHRcdFx0XHR0eCAtPSBwICogdHg7XG5cdFx0XHRcdHR5IC09IHAgKiB0eTtcblx0XHRcdFx0ZGQgPSB0eCAqIHR4ICsgdHkgKiB0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0NvbmZ1c2luZ0xhYmVsczogcmVmZXJlbmNlIHJ1bnRpbWVcblx0XHRvdXRlcjpcblx0XHRpZiAodSkge1xuXHRcdFx0bDIgKj0gcHN4O1xuXHRcdFx0bGV0IGNvcyA9IChkZCAtIGwxICogbDEgLSBsMiAqIGwyKSAvICgyICogbDEgKiBsMik7XG5cdFx0XHRpZiAoY29zIDwgLTEpIHtcblx0XHRcdFx0Y29zID0gLTE7XG5cdFx0XHRcdGEyID0gTWF0aC5QSSAqIGJlbmREaXI7XG5cdFx0XHR9IGVsc2UgaWYgKGNvcyA+IDEpIHtcblx0XHRcdFx0Y29zID0gMTtcblx0XHRcdFx0YTIgPSAwO1xuXHRcdFx0XHRpZiAoc3RyZXRjaCkge1xuXHRcdFx0XHRcdGEgPSAoTWF0aC5zcXJ0KGRkKSAvIChsMSArIGwyKSAtIDEpICogbWl4ICsgMTtcblx0XHRcdFx0XHRwYXJlbnQuc2NhbGVYICo9IGE7XG5cdFx0XHRcdFx0c3dpdGNoIChzY2FsZVlNb2RlKSB7XG5cdFx0XHRcdFx0XHRjYXNlIFNjYWxlWU1vZGUuVW5pZm9ybTogcGFyZW50LnNjYWxlWSAqPSBhOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgU2NhbGVZTW9kZS5Wb2x1bWU6IHBhcmVudC5zY2FsZVkgLz0gYSA8IDAuNyA/IDAuMjUgKyAwLjY0Mjg1NyAqIGEgOiBhO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlXG5cdFx0XHRcdGEyID0gTWF0aC5hY29zKGNvcykgKiBiZW5kRGlyO1xuXHRcdFx0YSA9IGwxICsgbDIgKiBjb3M7XG5cdFx0XHRiID0gbDIgKiBNYXRoLnNpbihhMik7XG5cdFx0XHRhMSA9IE1hdGguYXRhbjIodHkgKiBhIC0gdHggKiBiLCB0eCAqIGEgKyB0eSAqIGIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhID0gcHN4ICogbDI7XG5cdFx0XHRiID0gcHN5ICogbDI7XG5cdFx0XHRjb25zdCBhYSA9IGEgKiBhLCBiYiA9IGIgKiBiLCB0YSA9IE1hdGguYXRhbjIodHksIHR4KTtcblx0XHRcdGMgPSBiYiAqIGwxICogbDEgKyBhYSAqIGRkIC0gYWEgKiBiYjtcblx0XHRcdGNvbnN0IGMxID0gLTIgKiBiYiAqIGwxLCBjMiA9IGJiIC0gYWE7XG5cdFx0XHRkID0gYzEgKiBjMSAtIDQgKiBjMiAqIGM7XG5cdFx0XHRpZiAoZCA+PSAwKSB7XG5cdFx0XHRcdGxldCBxID0gTWF0aC5zcXJ0KGQpO1xuXHRcdFx0XHRpZiAoYzEgPCAwKSBxID0gLXE7XG5cdFx0XHRcdHEgPSAtKGMxICsgcSkgKiAwLjU7XG5cdFx0XHRcdGxldCByMCA9IHEgLyBjMiwgcjEgPSBjIC8gcTtcblx0XHRcdFx0Y29uc3QgciA9IE1hdGguYWJzKHIwKSA8IE1hdGguYWJzKHIxKSA/IHIwIDogcjE7XG5cdFx0XHRcdHIwID0gZGQgLSByICogcjtcblx0XHRcdFx0aWYgKHIwID49IDApIHtcblx0XHRcdFx0XHR5ID0gTWF0aC5zcXJ0KHIwKSAqIGJlbmREaXI7XG5cdFx0XHRcdFx0YTEgPSB0YSAtIE1hdGguYXRhbjIoeSwgcik7XG5cdFx0XHRcdFx0YTIgPSBNYXRoLmF0YW4yKHkgLyBwc3ksIChyIC0gbDEpIC8gcHN4KTtcblx0XHRcdFx0XHRicmVhayBvdXRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bGV0IG1pbkFuZ2xlID0gTWF0aFV0aWxzLlBJLCBtaW5YID0gbDEgLSBhLCBtaW5EaXN0ID0gbWluWCAqIG1pblgsIG1pblkgPSAwO1xuXHRcdFx0bGV0IG1heEFuZ2xlID0gMCwgbWF4WCA9IGwxICsgYSwgbWF4RGlzdCA9IG1heFggKiBtYXhYLCBtYXhZID0gMDtcblx0XHRcdGMgPSAtYSAqIGwxIC8gKGFhIC0gYmIpO1xuXHRcdFx0aWYgKGMgPj0gLTEgJiYgYyA8PSAxKSB7XG5cdFx0XHRcdGMgPSBNYXRoLmFjb3MoYyk7XG5cdFx0XHRcdHggPSBhICogTWF0aC5jb3MoYykgKyBsMTtcblx0XHRcdFx0eSA9IGIgKiBNYXRoLnNpbihjKTtcblx0XHRcdFx0ZCA9IHggKiB4ICsgeSAqIHk7XG5cdFx0XHRcdGlmIChkIDwgbWluRGlzdCkge1xuXHRcdFx0XHRcdG1pbkFuZ2xlID0gYztcblx0XHRcdFx0XHRtaW5EaXN0ID0gZDtcblx0XHRcdFx0XHRtaW5YID0geDtcblx0XHRcdFx0XHRtaW5ZID0geTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZCA+IG1heERpc3QpIHtcblx0XHRcdFx0XHRtYXhBbmdsZSA9IGM7XG5cdFx0XHRcdFx0bWF4RGlzdCA9IGQ7XG5cdFx0XHRcdFx0bWF4WCA9IHg7XG5cdFx0XHRcdFx0bWF4WSA9IHk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChkZCA8PSAobWluRGlzdCArIG1heERpc3QpICogMC41KSB7XG5cdFx0XHRcdGExID0gdGEgLSBNYXRoLmF0YW4yKG1pblkgKiBiZW5kRGlyLCBtaW5YKTtcblx0XHRcdFx0YTIgPSBtaW5BbmdsZSAqIGJlbmREaXI7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhMSA9IHRhIC0gTWF0aC5hdGFuMihtYXhZICogYmVuZERpciwgbWF4WCk7XG5cdFx0XHRcdGEyID0gbWF4QW5nbGUgKiBiZW5kRGlyO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRjb25zdCBvcyA9IE1hdGguYXRhbjIoY2hpbGQueSwgY2hpbGQueCkgKiBzMjtcblx0XHRhMSA9IChhMSAtIG9zKSAqIE1hdGhVdGlscy5yYWREZWcgKyBvczEgLSBwYXJlbnQucm90YXRpb247XG5cdFx0aWYgKGExID4gMTgwKVxuXHRcdFx0YTEgLT0gMzYwO1xuXHRcdGVsc2UgaWYgKGExIDw9IC0xODApIC8vXG5cdFx0XHRhMSArPSAzNjA7XG5cdFx0cGFyZW50LnJvdGF0aW9uICs9IGExICogbWl4O1xuXHRcdGEyID0gKChhMiArIG9zKSAqIE1hdGhVdGlscy5yYWREZWcgLSBjaGlsZC5zaGVhclgpICogczIgKyBvczIgLSBjaGlsZC5yb3RhdGlvbjtcblx0XHRpZiAoYTIgPiAxODApXG5cdFx0XHRhMiAtPSAzNjA7XG5cdFx0ZWxzZSBpZiAoYTIgPD0gLTE4MCkgLy9cblx0XHRcdGEyICs9IDM2MDtcblx0XHRjaGlsZC5yb3RhdGlvbiArPSBhMiAqIG1peDtcblx0fVxufVxuIl19
@@ -27,7 +27,7 @@
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
29
  import type { BoneData } from "./BoneData.js";
30
- import { ConstraintData } from "./ConstraintData.js";
30
+ import { ConstraintData, ScaleYMode } from "./ConstraintData.js";
31
31
  import { IkConstraint } from "./IkConstraint.js";
32
32
  import { IkConstraintPose } from "./IkConstraintPose.js";
33
33
  import type { Skeleton } from "./Skeleton.js";
@@ -49,13 +49,3 @@ export declare class IkConstraintData extends ConstraintData<IkConstraint, IkCon
49
49
  constructor(name: string);
50
50
  create(skeleton: Skeleton): IkConstraint;
51
51
  }
52
- /** Determines how the {@link BonePose.scaleY} changes when {@link IkConstraintPose.compress} or
53
- * {@link IkConstraintPose.stretch} set {@link BonePose.scaleX}. */
54
- export declare enum ScaleYMode {
55
- /** scaleY is not changed. */
56
- None = 0,
57
- /** scaleY is multiplied by the scaleX factor, preserving the bone's aspect ratio. */
58
- Uniform = 1,
59
- /** scaleY is divided by the scaleX factor, preserving the bone's area. */
60
- Volume = 2
61
- }
@@ -26,7 +26,7 @@
26
26
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27
27
  * THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
28
  *****************************************************************************/
29
- import { ConstraintData } from "./ConstraintData.js";
29
+ import { ConstraintData, ScaleYMode } from "./ConstraintData.js";
30
30
  import { IkConstraint } from "./IkConstraint.js";
31
31
  import { IkConstraintPose } from "./IkConstraintPose.js";
32
32
  /** Stores the setup pose for an {@link IkConstraint}.
@@ -59,15 +59,4 @@ export class IkConstraintData extends ConstraintData {
59
59
  return new IkConstraint(this, skeleton);
60
60
  }
61
61
  }
62
- /** Determines how the {@link BonePose.scaleY} changes when {@link IkConstraintPose.compress} or
63
- * {@link IkConstraintPose.stretch} set {@link BonePose.scaleX}. */
64
- export var ScaleYMode;
65
- (function (ScaleYMode) {
66
- /** scaleY is not changed. */
67
- ScaleYMode[ScaleYMode["None"] = 0] = "None";
68
- /** scaleY is multiplied by the scaleX factor, preserving the bone's aspect ratio. */
69
- ScaleYMode[ScaleYMode["Uniform"] = 1] = "Uniform";
70
- /** scaleY is divided by the scaleX factor, preserving the bone's area. */
71
- ScaleYMode[ScaleYMode["Volume"] = 2] = "Volume";
72
- })(ScaleYMode || (ScaleYMode = {}));
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWtDb25zdHJhaW50RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ja0NvbnN0cmFpbnREYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUkvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3pEOztxR0FFcUc7QUFDckcsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGNBQThDO0lBQ25GLDREQUE0RDtJQUM1RCxLQUFLLEdBQUcsRUFBZ0IsQ0FBQztJQUVqQixPQUFPLEdBQW9CLElBQUksQ0FBQztJQUN4QyxzQ0FBc0M7SUFDdEMsSUFBVyxNQUFNLENBQUUsUUFBa0IsSUFBSSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBVyxNQUFNO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtRQUM1RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDckIsQ0FBQztJQUVEO3dFQUNvRTtJQUNwRSxXQUFXLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztJQUM5QixJQUFXLFVBQVUsQ0FBRSxVQUFzQixJQUFJLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNqRixJQUFXLFVBQVU7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUE7UUFDM0UsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxZQUFhLElBQVk7UUFDeEIsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sTUFBTSxDQUFFLFFBQWtCO1FBQ2hDLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDRDtBQUVEO21FQUNtRTtBQUNuRSxNQUFNLENBQU4sSUFBWSxVQU9YO0FBUEQsV0FBWSxVQUFVO0lBQ3JCLDZCQUE2QjtJQUM3QiwyQ0FBSSxDQUFBO0lBQ0oscUZBQXFGO0lBQ3JGLGlEQUFPLENBQUE7SUFDUCwwRUFBMEU7SUFDMUUsK0NBQU0sQ0FBQTtBQUNQLENBQUMsRUFQVyxVQUFVLEtBQVYsVUFBVSxRQU9yQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHR5cGUgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhLmpzXCI7XG5pbXBvcnQgdHlwZSB7IEJvbmVQb3NlIH0gZnJvbSBcIi4vQm9uZVBvc2UuanNcIjtcbmltcG9ydCB7IENvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vQ29uc3RyYWludERhdGEuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludCB9IGZyb20gXCIuL0lrQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgSWtDb25zdHJhaW50UG9zZSB9IGZyb20gXCIuL0lrQ29uc3RyYWludFBvc2UuanNcIjtcbmltcG9ydCB0eXBlIHsgU2tlbGV0b24gfSBmcm9tIFwiLi9Ta2VsZXRvbi5qc1wiO1xuXG4vKiogU3RvcmVzIHRoZSBzZXR1cCBwb3NlIGZvciBhbiB7QGxpbmsgSWtDb25zdHJhaW50fS5cbiAqXG4gKiBTZWUgW0lLIGNvbnN0cmFpbnRzXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtaWstY29uc3RyYWludHMpIGluIHRoZSBTcGluZSBVc2VyIEd1aWRlLiAqL1xuZXhwb3J0IGNsYXNzIElrQ29uc3RyYWludERhdGEgZXh0ZW5kcyBDb25zdHJhaW50RGF0YTxJa0NvbnN0cmFpbnQsIElrQ29uc3RyYWludFBvc2U+IHtcblx0LyoqIFRoZSBib25lcyB0aGF0IGFyZSBjb25zdHJhaW5lZCBieSB0aGlzIElLIGNvbnN0cmFpbnQuICovXG5cdGJvbmVzID0gW10gYXMgQm9uZURhdGFbXTtcblxuXHRwcml2YXRlIF90YXJnZXQ6IEJvbmVEYXRhIHwgbnVsbCA9IG51bGw7XG5cdC8qKiBUaGUgYm9uZSB0aGF0IGlzIHRoZSBJSyB0YXJnZXQuICovXG5cdHB1YmxpYyBzZXQgdGFyZ2V0IChib25lRGF0YTogQm9uZURhdGEpIHsgdGhpcy5fdGFyZ2V0ID0gYm9uZURhdGE7IH1cblx0cHVibGljIGdldCB0YXJnZXQgKCkge1xuXHRcdGlmICghdGhpcy5fdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJ0YXJnZXQgY2Fubm90IGJlIG51bGwuXCIpXG5cdFx0cmV0dXJuIHRoaXMuX3RhcmdldDtcblx0fVxuXG5cdC8qKiBEZXRlcm1pbmVzIGhvdyB0aGUge0BsaW5rIEJvbmVQb3NlLnNjYWxlWX0gY2hhbmdlcyB3aGVuIHtAbGluayBJa0NvbnN0cmFpbnRQb3NlLmNvbXByZXNzfSBvclxuXHQgICoge0BsaW5rIElrQ29uc3RyYWludFBvc2Uuc3RyZXRjaH0gc2V0IHtAbGluayBCb25lUG9zZS5zY2FsZVh9LiAqL1xuXHRfc2NhbGVZTW9kZSA9IFNjYWxlWU1vZGUuTm9uZTtcblx0cHVibGljIHNldCBzY2FsZVlNb2RlIChzY2FsZVlNb2RlOiBTY2FsZVlNb2RlKSB7IHRoaXMuX3NjYWxlWU1vZGUgPSBzY2FsZVlNb2RlOyB9XG5cdHB1YmxpYyBnZXQgc2NhbGVZTW9kZSAoKSB7XG5cdFx0aWYgKHRoaXMuX3NjYWxlWU1vZGUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic2NhbGVZTW9kZSBjYW5ub3QgYmUgbnVsbC5cIilcblx0XHRyZXR1cm4gdGhpcy5fc2NhbGVZTW9kZTtcblx0fVxuXG5cdGNvbnN0cnVjdG9yIChuYW1lOiBzdHJpbmcpIHtcblx0XHRzdXBlcihuYW1lLCBuZXcgSWtDb25zdHJhaW50UG9zZSgpKTtcblx0fVxuXG5cdHB1YmxpYyBjcmVhdGUgKHNrZWxldG9uOiBTa2VsZXRvbikge1xuXHRcdHJldHVybiBuZXcgSWtDb25zdHJhaW50KHRoaXMsIHNrZWxldG9uKTtcblx0fVxufVxuXG4vKiogRGV0ZXJtaW5lcyBob3cgdGhlIHtAbGluayBCb25lUG9zZS5zY2FsZVl9IGNoYW5nZXMgd2hlbiB7QGxpbmsgSWtDb25zdHJhaW50UG9zZS5jb21wcmVzc30gb3JcbiAqIHtAbGluayBJa0NvbnN0cmFpbnRQb3NlLnN0cmV0Y2h9IHNldCB7QGxpbmsgQm9uZVBvc2Uuc2NhbGVYfS4gKi9cbmV4cG9ydCBlbnVtIFNjYWxlWU1vZGUge1xuXHQvKiogc2NhbGVZIGlzIG5vdCBjaGFuZ2VkLiAqL1xuXHROb25lLFxuXHQvKiogc2NhbGVZIGlzIG11bHRpcGxpZWQgYnkgdGhlIHNjYWxlWCBmYWN0b3IsIHByZXNlcnZpbmcgdGhlIGJvbmUncyBhc3BlY3QgcmF0aW8uICovXG5cdFVuaWZvcm0sXG5cdC8qKiBzY2FsZVkgaXMgZGl2aWRlZCBieSB0aGUgc2NhbGVYIGZhY3RvciwgcHJlc2VydmluZyB0aGUgYm9uZSdzIGFyZWEuICovXG5cdFZvbHVtZVxufVxuIl19
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSWtDb25zdHJhaW50RGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Ja0NvbnN0cmFpbnREYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7K0VBMkIrRTtBQUkvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUd6RDs7cUdBRXFHO0FBQ3JHLE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxjQUE4QztJQUNuRiw0REFBNEQ7SUFDNUQsS0FBSyxHQUFHLEVBQWdCLENBQUM7SUFFakIsT0FBTyxHQUFvQixJQUFJLENBQUM7SUFDeEMsc0NBQXNDO0lBQ3RDLElBQVcsTUFBTSxDQUFFLFFBQWtCLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ25FLElBQVcsTUFBTTtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7UUFDNUQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3JCLENBQUM7SUFFRDt3RUFDb0U7SUFDcEUsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDOUIsSUFBVyxVQUFVLENBQUUsVUFBc0IsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakYsSUFBVyxVQUFVO1FBQ3BCLElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBYSxJQUFZO1FBQ3hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBRSxRQUFrQjtRQUNoQyxPQUFPLElBQUksWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBTcGluZSBSdW50aW1lcyBMaWNlbnNlIEFncmVlbWVudFxuICogTGFzdCB1cGRhdGVkIEFwcmlsIDUsIDIwMjUuIFJlcGxhY2VzIGFsbCBwcmlvciB2ZXJzaW9ucy5cbiAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAyNSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXG4gKlxuICogSW50ZWdyYXRpb24gb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmUgb3Igb3RoZXJ3aXNlIGNyZWF0aW5nXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxuICogY29uZGl0aW9ucyBvZiBTZWN0aW9uIDIgb2YgdGhlIFNwaW5lIEVkaXRvciBMaWNlbnNlIEFncmVlbWVudDpcbiAqIGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1lZGl0b3ItbGljZW5zZVxuICpcbiAqIE90aGVyd2lzZSwgaXQgaXMgcGVybWl0dGVkIHRvIGludGVncmF0ZSB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZVxuICogb3Igb3RoZXJ3aXNlIGNyZWF0ZSBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyAoY29sbGVjdGl2ZWx5LFxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxuICogU3BpbmUgRWRpdG9yIGxpY2Vuc2UgYW5kIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9kdWN0cyBpbiBhbnkgZm9ybSBtdXN0XG4gKiBpbmNsdWRlIHRoaXMgbGljZW5zZSBhbmQgY29weXJpZ2h0IG5vdGljZS5cbiAqXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMgQVJFIFBST1ZJREVEIEJZIEVTT1RFUklDIFNPRlRXQVJFIExMQyBcIkFTIElTXCIgQU5EIEFOWVxuICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRFxuICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRVxuICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgRVNPVEVSSUMgU09GVFdBUkUgTExDIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFU1xuICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLFxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OLCBPUiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUykgSE9XRVZFUiBDQVVTRUQgQU5EXG4gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVFxuICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GXG4gKiBUSEUgU1BJTkUgUlVOVElNRVMsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmltcG9ydCB0eXBlIHsgQm9uZURhdGEgfSBmcm9tIFwiLi9Cb25lRGF0YS5qc1wiO1xuaW1wb3J0IHR5cGUgeyBCb25lUG9zZSB9IGZyb20gXCIuL0JvbmVQb3NlLmpzXCI7XG5pbXBvcnQgeyBDb25zdHJhaW50RGF0YSwgU2NhbGVZTW9kZSB9IGZyb20gXCIuL0NvbnN0cmFpbnREYXRhLmpzXCI7XG5pbXBvcnQgeyBJa0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludFBvc2UgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnRQb3NlLmpzXCI7XG5pbXBvcnQgdHlwZSB7IFNrZWxldG9uIH0gZnJvbSBcIi4vU2tlbGV0b24uanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgc2V0dXAgcG9zZSBmb3IgYW4ge0BsaW5rIElrQ29uc3RyYWludH0uXG4gKlxuICogU2VlIFtJSyBjb25zdHJhaW50c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWlrLWNvbnN0cmFpbnRzKSBpbiB0aGUgU3BpbmUgVXNlciBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBJa0NvbnN0cmFpbnREYXRhIGV4dGVuZHMgQ29uc3RyYWludERhdGE8SWtDb25zdHJhaW50LCBJa0NvbnN0cmFpbnRQb3NlPiB7XG5cdC8qKiBUaGUgYm9uZXMgdGhhdCBhcmUgY29uc3RyYWluZWQgYnkgdGhpcyBJSyBjb25zdHJhaW50LiAqL1xuXHRib25lcyA9IFtdIGFzIEJvbmVEYXRhW107XG5cblx0cHJpdmF0ZSBfdGFyZ2V0OiBCb25lRGF0YSB8IG51bGwgPSBudWxsO1xuXHQvKiogVGhlIGJvbmUgdGhhdCBpcyB0aGUgSUsgdGFyZ2V0LiAqL1xuXHRwdWJsaWMgc2V0IHRhcmdldCAoYm9uZURhdGE6IEJvbmVEYXRhKSB7IHRoaXMuX3RhcmdldCA9IGJvbmVEYXRhOyB9XG5cdHB1YmxpYyBnZXQgdGFyZ2V0ICgpIHtcblx0XHRpZiAoIXRoaXMuX3RhcmdldCkgdGhyb3cgbmV3IEVycm9yKFwidGFyZ2V0IGNhbm5vdCBiZSBudWxsLlwiKVxuXHRcdHJldHVybiB0aGlzLl90YXJnZXQ7XG5cdH1cblxuXHQvKiogRGV0ZXJtaW5lcyBob3cgdGhlIHtAbGluayBCb25lUG9zZS5zY2FsZVl9IGNoYW5nZXMgd2hlbiB7QGxpbmsgSWtDb25zdHJhaW50UG9zZS5jb21wcmVzc30gb3Jcblx0ICAqIHtAbGluayBJa0NvbnN0cmFpbnRQb3NlLnN0cmV0Y2h9IHNldCB7QGxpbmsgQm9uZVBvc2Uuc2NhbGVYfS4gKi9cblx0X3NjYWxlWU1vZGUgPSBTY2FsZVlNb2RlLk5vbmU7XG5cdHB1YmxpYyBzZXQgc2NhbGVZTW9kZSAoc2NhbGVZTW9kZTogU2NhbGVZTW9kZSkgeyB0aGlzLl9zY2FsZVlNb2RlID0gc2NhbGVZTW9kZTsgfVxuXHRwdWJsaWMgZ2V0IHNjYWxlWU1vZGUgKCkge1xuXHRcdGlmICh0aGlzLl9zY2FsZVlNb2RlID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNjYWxlWU1vZGUgY2Fubm90IGJlIG51bGwuXCIpXG5cdFx0cmV0dXJuIHRoaXMuX3NjYWxlWU1vZGU7XG5cdH1cblxuXHRjb25zdHJ1Y3RvciAobmFtZTogc3RyaW5nKSB7XG5cdFx0c3VwZXIobmFtZSwgbmV3IElrQ29uc3RyYWludFBvc2UoKSk7XG5cdH1cblxuXHRwdWJsaWMgY3JlYXRlIChza2VsZXRvbjogU2tlbGV0b24pIHtcblx0XHRyZXR1cm4gbmV3IElrQ29uc3RyYWludCh0aGlzLCBza2VsZXRvbik7XG5cdH1cbn1cbiJdfQ==
@@ -41,7 +41,6 @@ export declare class PathConstraint extends Constraint<PathConstraint, PathConst
41
41
  static NONE: number;
42
42
  static BEFORE: number;
43
43
  static AFTER: number;
44
- static epsilon: number;
45
44
  /** The path constraint's setup pose data. */
46
45
  data: PathConstraintData;
47
46
  /** The bones that will be modified by this path constraint. */