@rian8337/osu-droid-replay-analyzer 2.0.0-alpha.8 → 2.0.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.
package/README.md CHANGED
@@ -44,7 +44,7 @@ import { ReplayAnalyzer } from "@rian8337/osu-droid-replay-analyzer";
44
44
 
45
45
  // Obtaining a beatmap file is optional, however it allows the replay analyzer to output more data
46
46
  // for old replays (replay version 1 or 2)
47
- const beatmapInfo = await MapInfo.getInformation({ beatmapID: 901854 });
47
+ const beatmapInfo = await MapInfo.getInformation(901854);
48
48
 
49
49
  if (!beatmapInfo.title) {
50
50
  return console.log("Beatmap not found");
@@ -78,7 +78,7 @@ readFile("path/to/file.odr", async (err, replayData) => {
78
78
 
79
79
  // Obtaining a beatmap file is optional, however it allows the replay analyzer to output more data
80
80
  // for old replays (replay version 1 or 2)
81
- const beatmapInfo = await MapInfo.getInformation({ beatmapID: 901854 });
81
+ const beatmapInfo = await MapInfo.getInformation(901854);
82
82
 
83
83
  if (!beatmapInfo.title) {
84
84
  return console.log("Beatmap not found");
@@ -119,7 +119,7 @@ import { MapInfo, MapStats } from "@rian8337/osu-base";
119
119
  import { DroidStarRating } from "@rian8337/osu-difficulty-calculator";
120
120
  import { ReplayAnalyzer } from "@rian8337/osu-droid-replay-analyzer";
121
121
 
122
- const beatmapInfo = await MapInfo.getInformation({ beatmapID: 901854 });
122
+ const beatmapInfo = await MapInfo.getInformation(901854);
123
123
 
124
124
  if (!beatmapInfo.title) {
125
125
  return console.log("Beatmap not found");
package/dist/index.js CHANGED
@@ -161,18 +161,18 @@ class BeatmapSectionGenerator {
161
161
  /**
162
162
  * Generates `BeatmapSection`s for the specified beatmap.
163
163
  *
164
- * @param map The beatmap to generate.
164
+ * @param calculator The difficulty calculator to generate for.
165
165
  * @param minSectionObjectCount The maximum delta time allowed between two beatmap sections.
166
166
  * Increasing this number decreases the amount of beatmap sections in general. Note that this value does not account for the speed multiplier of
167
167
  * the play, similar to the way replay object data is stored.
168
168
  * @param maxSectionDeltaTime The minimum object count required to make a beatmap section. Increasing this number decreases the amount of beatmap sections.
169
169
  */
170
- static generateSections(map, minSectionObjectCount, maxSectionDeltaTime) {
170
+ static generateSections(calculator, minSectionObjectCount, maxSectionDeltaTime) {
171
171
  const beatmapSections = [];
172
172
  let firstObjectIndex = 0;
173
- for (let i = 0; i < map.objects.length - 1; ++i) {
174
- const current = map.objects[i];
175
- const next = map.objects[i + 1];
173
+ for (let i = 0; i < calculator.objects.length - 1; ++i) {
174
+ const current = calculator.objects[i];
175
+ const next = calculator.objects[i + 1];
176
176
  const realDeltaTime = next.object.startTime - current.object.endTime;
177
177
  if (realDeltaTime >= maxSectionDeltaTime) {
178
178
  // Ignore sections that don't meet object count requirement.
@@ -188,10 +188,11 @@ class BeatmapSectionGenerator {
188
188
  }
189
189
  }
190
190
  // Don't forget to manually add the last beatmap section, which would otherwise be ignored.
191
- if (map.objects.length - firstObjectIndex > minSectionObjectCount) {
191
+ if (calculator.objects.length - firstObjectIndex >
192
+ minSectionObjectCount) {
192
193
  beatmapSections.push({
193
194
  firstObjectIndex,
194
- lastObjectIndex: map.objects.length - 1,
195
+ lastObjectIndex: calculator.objects.length - 1,
195
196
  });
196
197
  }
197
198
  return beatmapSections;
@@ -244,9 +245,9 @@ class ThreeFingerBeatmapSection extends BeatmapSection {
244
245
  */
245
246
  class ThreeFingerChecker {
246
247
  /**
247
- * The beatmap to analyze.
248
+ * The difficulty calculator that is being analyzed.
248
249
  */
249
- map;
250
+ calculator;
250
251
  /**
251
252
  * The data of the replay.
252
253
  */
@@ -334,20 +335,22 @@ class ThreeFingerChecker {
334
335
  */
335
336
  nerfFactors = [];
336
337
  /**
337
- * @param map The beatmap to analyze.
338
+ * @param calculator The difficulty calculator to analyze.
338
339
  * @param data The data of the replay.
339
340
  */
340
- constructor(map, data) {
341
- this.map = map;
341
+ constructor(calculator, data) {
342
+ this.calculator = calculator;
342
343
  this.data = data;
343
344
  const stats = new osuBase.MapStats({
344
- od: this.map.map.difficulty.od,
345
- mods: this.map.mods.filter((m) => !osuBase.ModUtil.speedChangingMods
345
+ od: this.calculator.beatmap.difficulty.od,
346
+ mods: this.calculator.mods.filter((m) => !osuBase.ModUtil.speedChangingMods
346
347
  .map((v) => v.droidString)
347
348
  .includes(m.droidString)),
348
349
  }).calculate();
349
350
  this.hitWindow = new osuBase.DroidHitWindow(stats.od);
350
- const strainNotes = map.objects.filter((v) => v.originalTapStrain >= ThreeFingerChecker.strainThreshold);
351
+ const strainNotes = calculator.objects.filter(
352
+ //@ts-expect-error: No overloads match, but this is fine.
353
+ (v) => v.originalTapStrain >= ThreeFingerChecker.strainThreshold);
351
354
  this.strainNoteCount = strainNotes.length;
352
355
  }
353
356
  /**
@@ -395,10 +398,10 @@ class ThreeFingerChecker {
395
398
  * start of the hitobject before it and do not end right at the first hitobject after it.
396
399
  */
397
400
  getAccurateBreakPoints() {
398
- const objects = this.map.objects;
401
+ const objects = this.calculator.objects;
399
402
  const objectData = this.data.hitObjectData;
400
- const isPrecise = this.map.mods.some((m) => m instanceof osuBase.ModPrecise);
401
- for (const breakPoint of this.map.map.events.breaks) {
403
+ const isPrecise = this.calculator.mods.some((m) => m instanceof osuBase.ModPrecise);
404
+ for (const breakPoint of this.calculator.beatmap.events.breaks) {
402
405
  const beforeIndex = osuBase.MathUtils.clamp(objects.findIndex((o) => o.object.endTime >= breakPoint.startTime) - 1, 0, objects.length - 2);
403
406
  let timeBefore = objects[beforeIndex].object.endTime;
404
407
  // For sliders and spinners, automatically set hit window length to be as lenient as possible.
@@ -447,11 +450,11 @@ class ThreeFingerChecker {
447
450
  * This also filters cursors that are in break period or happen before start/after end of the beatmap.
448
451
  */
449
452
  filterCursorInstances() {
450
- const objects = this.map.objects;
453
+ const objects = this.calculator.objects;
451
454
  const objectData = this.data.hitObjectData;
452
455
  const firstObjectResult = objectData[0].result;
453
456
  const lastObjectResult = objectData.at(-1).result;
454
- const isPrecise = this.map.mods.some((m) => m instanceof osuBase.ModPrecise);
457
+ const isPrecise = this.calculator.mods.some((m) => m instanceof osuBase.ModPrecise);
455
458
  // For sliders, automatically set hit window length to be as lenient as possible.
456
459
  let firstObjectHitWindow = this.hitWindow.hitWindowFor50(isPrecise);
457
460
  if (objects[0].object instanceof osuBase.Circle) {
@@ -521,7 +524,7 @@ class ThreeFingerChecker {
521
524
  * detect dragged sections and improve detection speed.
522
525
  */
523
526
  getBeatmapSections() {
524
- const beatmapSections = BeatmapSectionGenerator.generateSections(this.map, this.minSectionObjectCount, this.maxSectionDeltaTime);
527
+ const beatmapSections = BeatmapSectionGenerator.generateSections(this.calculator, this.minSectionObjectCount, this.maxSectionDeltaTime);
525
528
  for (const beatmapSection of beatmapSections) {
526
529
  this.beatmapSections.push(new ThreeFingerBeatmapSection({
527
530
  firstObjectIndex: beatmapSection.firstObjectIndex,
@@ -549,9 +552,9 @@ class ThreeFingerChecker {
549
552
  * @param section The section to check.
550
553
  */
551
554
  checkDrag(section) {
552
- const objects = this.map.objects;
555
+ const objects = this.calculator.objects;
553
556
  const objectData = this.data.hitObjectData;
554
- const isPrecise = this.map.mods.some((m) => m instanceof osuBase.ModPrecise);
557
+ const isPrecise = this.calculator.mods.some((m) => m instanceof osuBase.ModPrecise);
555
558
  const firstObject = objects[section.firstObjectIndex];
556
559
  const lastObject = objects[section.lastObjectIndex];
557
560
  let firstObjectMinHitTime = firstObject.object.startTime;
@@ -693,7 +696,7 @@ class ThreeFingerChecker {
693
696
  * sections.
694
697
  */
695
698
  getDetailedBeatmapSections() {
696
- const objects = this.map.objects;
699
+ const objects = this.calculator.objects;
697
700
  const newBeatmapSections = [];
698
701
  for (const beatmapSection of this.beatmapSections) {
699
702
  let inSpeedSection = false;
@@ -743,7 +746,7 @@ class ThreeFingerChecker {
743
746
  if (filledCursorAmount <= 3) {
744
747
  return;
745
748
  }
746
- const objects = this.map.objects;
749
+ const objects = this.calculator.objects;
747
750
  const totalCursorAmount = this.downCursorInstances.reduce((acc, value) => acc + value.occurrences.length, 0);
748
751
  for (let i = 0; i < this.downCursorInstances.length; ++i) {
749
752
  if (filledCursorAmount <= 3) {
@@ -767,7 +770,7 @@ class ThreeFingerChecker {
767
770
  * This check will ignore all objects with speed strain below `strainThreshold`.
768
771
  */
769
772
  calculateNerfFactors() {
770
- const objects = this.map.objects;
773
+ const objects = this.calculator.objects;
771
774
  const objectData = this.data.hitObjectData;
772
775
  const isPrecise = this.data.convertedMods.some((m) => m instanceof osuBase.ModPrecise);
773
776
  // We only filter cursor instances that are above the strain threshold.
@@ -788,7 +791,7 @@ class ThreeFingerChecker {
788
791
  this.downCursorInstances.forEach((c) => {
789
792
  const i = c.occurrences.findIndex((t) => t.time >= startTime);
790
793
  if (i !== -1) {
791
- c.occurrences = c.occurrences.slice(0, i);
794
+ c.occurrences = c.occurrences.slice(i);
792
795
  }
793
796
  });
794
797
  const cursorAmounts = [];
@@ -855,9 +858,7 @@ class ThreeFingerChecker {
855
858
  // Sort by highest count; assume the order is 3rd, 4th, 5th, ... finger
856
859
  const validPresses = similarPresses
857
860
  .filter((v) => v.count >= this.cursorDistancingCountThreshold)
858
- .sort((a, b) => {
859
- return b.count - a.count;
860
- })
861
+ .sort((a, b) => b.count - a.count)
861
862
  .slice(2);
862
863
  // Ignore cursor presses that are only 1 for now since they are very likely to be accidental
863
864
  if ((threeFingerRatio > this.threeFingerRatioThreshold &&
@@ -881,7 +882,7 @@ class ThreeFingerChecker {
881
882
  const fingerFactor = threeFingerRatio > this.threeFingerRatioThreshold
882
883
  ? threeFingerCursorAmounts.reduce((acc, value, index) => acc +
883
884
  Math.pow(((index + 1) * value * objectCount) /
884
- this.strainNoteCount, 0.8), 1)
885
+ this.strainNoteCount, 0.9), 1)
885
886
  : Math.pow(validPresses.reduce((acc, value, index) => acc +
886
887
  Math.pow(((index + 1) *
887
888
  (value.count /
@@ -916,20 +917,36 @@ class ThreeFingerChecker {
916
917
  */
917
918
  class IndexedHitObject {
918
919
  /**
919
- * The index of the cursor that hits the hitobject.
920
+ * The accepted index of the cursor that hits the hitobject.
921
+ */
922
+ acceptedCursorIndex;
923
+ /**
924
+ * The actual index of the cursor that hits the hitobject.
925
+ */
926
+ actualCursorIndex;
927
+ /**
928
+ * The occurrence index of the cursor that hits the hitobject.
920
929
  */
921
- cursorIndex;
930
+ occurrenceIndex;
931
+ /**
932
+ * If this is a slider, whether the slider was cheesed.
933
+ */
934
+ sliderCheesed = false;
922
935
  /**
923
936
  * The underlying difficulty hitobject.
924
937
  */
925
938
  object;
926
939
  /**
927
940
  * @param object The underlying difficulty hitobject.
928
- * @param cursorIndex The index of the cursor that hits the hitobject.
941
+ * @param acceptedCursorIndex The accepted index of the cursor that hits the hitobject.
942
+ * @param actualCursorIndex The actual index of the cursor that hits the hitobject.
943
+ * @param occurrenceIndex The occurrence index of the cursor that hits the hitobject.
929
944
  */
930
- constructor(object, cursorIndex) {
945
+ constructor(object, acceptedCursorIndex, actualCursorIndex, occurrenceIndex) {
931
946
  this.object = object;
932
- this.cursorIndex = cursorIndex;
947
+ this.acceptedCursorIndex = acceptedCursorIndex;
948
+ this.actualCursorIndex = actualCursorIndex;
949
+ this.occurrenceIndex = occurrenceIndex;
933
950
  }
934
951
  }
935
952
 
@@ -938,9 +955,9 @@ class IndexedHitObject {
938
955
  */
939
956
  class TwoHandChecker {
940
957
  /**
941
- * The beatmap that is being analyzed.
958
+ * The difficulty calculator that is being analyzed.
942
959
  */
943
- map;
960
+ calculator;
944
961
  /**
945
962
  * The data of the replay.
946
963
  */
@@ -961,27 +978,15 @@ class TwoHandChecker {
961
978
  */
962
979
  minCursorIndexCount = 5;
963
980
  /**
964
- * The approximated difficulty of the current object such that the object is likely to be 2-handed by a player.
965
- *
966
- * This scales with an object's angle and speed relative to the previous object.
967
- * Acute angles or fast speed will accumulate this number. Conversely, wide angles or slow speed will decay this number.
968
- */
969
- currentAngleDiffApproxDefault = 10;
970
- /**
971
- * The threshold at which objects will be started getting considered to be 2-handable.
972
- */
973
- currentAngleDiffApproxThreshold = 200;
974
- assignCurrentIndexToOne = false;
975
- /**
976
- * @param map The beatmap to analyze.
981
+ * @param calculator The difficulty calculator to analyze.
977
982
  * @param data The data of the replay.
978
983
  */
979
- constructor(map, data) {
980
- this.map = map;
984
+ constructor(calculator, data) {
985
+ this.calculator = calculator;
981
986
  this.data = data;
982
987
  const stats = new osuBase.MapStats({
983
- od: this.map.map.difficulty.od,
984
- mods: this.map.mods.filter((m) => !osuBase.ModUtil.speedChangingMods
988
+ od: this.calculator.beatmap.difficulty.od,
989
+ mods: this.calculator.mods.filter((m) => !osuBase.ModUtil.speedChangingMods
985
990
  .map((v) => v.droidString)
986
991
  .includes(m.droidString)),
987
992
  }).calculate();
@@ -993,11 +998,18 @@ class TwoHandChecker {
993
998
  check() {
994
999
  if (this.data.cursorMovement.filter((v) => v.occurrences.length > 0)
995
1000
  .length <= 1) {
996
- return false;
1001
+ return { is2Hand: false, cursorIndexes: [] };
997
1002
  }
998
1003
  this.indexHitObjects();
999
1004
  this.applyPenalty();
1000
- return true;
1005
+ const indexes = osuBase.Utils.initializeArray(this.data.cursorMovement.length, 0);
1006
+ for (const object of this.indexedHitObjects) {
1007
+ ++indexes[object.acceptedCursorIndex];
1008
+ }
1009
+ return {
1010
+ is2Hand: indexes.filter((v) => v > 0).length !== 1,
1011
+ cursorIndexes: this.indexedHitObjects.map((v) => v.acceptedCursorIndex),
1012
+ };
1001
1013
  }
1002
1014
  /**
1003
1015
  * Converts hitobjects into indexed hit objects.
@@ -1005,20 +1017,11 @@ class TwoHandChecker {
1005
1017
  indexHitObjects() {
1006
1018
  const hitWindowOffset = this.getHitWindowOffset();
1007
1019
  const indexes = [];
1008
- let overallDiffApprox = this.currentAngleDiffApproxDefault;
1009
- for (let i = 0; i < this.map.objects.length; ++i) {
1010
- const diff = i > 0 ? this.getSpacingAngleDiffApprox(i) : 1;
1011
- overallDiffApprox = osuBase.MathUtils.clamp(overallDiffApprox * diff, this.currentAngleDiffApproxDefault, this.currentAngleDiffApproxThreshold + 100);
1012
- const index = overallDiffApprox >= this.currentAngleDiffApproxThreshold
1013
- ? this.getCursorIndex(i, hitWindowOffset)
1014
- : 0;
1015
- indexes.push(index);
1016
- this.indexedHitObjects.push(new IndexedHitObject(this.map.objects[i], index));
1020
+ for (let i = 0; i < this.calculator.objects.length; ++i) {
1021
+ const indexedHitObject = this.getIndexedHitObject(i, hitWindowOffset);
1022
+ indexes.push(indexedHitObject.acceptedCursorIndex);
1023
+ this.indexedHitObjects.push(indexedHitObject);
1017
1024
  }
1018
- // const notFound = this.indexedHitObjects.filter(v => v.cursorIndex === -1);
1019
- console.log("Spinners:", this.map.map.hitObjects.spinners);
1020
- console.log("Misses:", this.data.accuracy.nmiss);
1021
- console.log(indexes.filter((v) => v !== -1).length, "cursors found,", indexes.filter((v) => v === -1).length, "not found");
1022
1025
  const indexCounts = osuBase.Utils.initializeArray(this.data.cursorMovement.length, 0);
1023
1026
  for (const index of indexes) {
1024
1027
  if (index === -1) {
@@ -1026,39 +1029,45 @@ class TwoHandChecker {
1026
1029
  }
1027
1030
  ++indexCounts[index];
1028
1031
  }
1029
- const mainCursorIndex = indexCounts.indexOf(Math.max(...indexCounts));
1032
+ const mainCursorIndex = indexCounts.length > 0
1033
+ ? indexCounts.indexOf(Math.max(...indexCounts))
1034
+ : 0;
1030
1035
  const ignoredCursorIndexes = [];
1031
1036
  for (let i = 0; i < indexCounts.length; ++i) {
1032
- if (indexCounts[i] < this.minCursorIndexCount) {
1037
+ if (indexCounts[i] < this.minCursorIndexCount &&
1038
+ i !== mainCursorIndex) {
1033
1039
  ignoredCursorIndexes.push(i);
1034
1040
  }
1035
1041
  }
1036
- this.indexedHitObjects.forEach((indexedHitObject) => {
1037
- if (indexedHitObject.cursorIndex === -1 ||
1038
- ignoredCursorIndexes.includes(indexedHitObject.cursorIndex)) {
1039
- indexedHitObject.cursorIndex = mainCursorIndex;
1042
+ // Add cursor presses that don't fulfill minimum cursor
1043
+ // count to the farthest cursor index that isn't 0.
1044
+ let defaultMinCursorCountIndex = this.data.cursorMovement.length - 1;
1045
+ for (; defaultMinCursorCountIndex > 0; --defaultMinCursorCountIndex) {
1046
+ if (indexCounts[defaultMinCursorCountIndex] >=
1047
+ this.minCursorIndexCount &&
1048
+ !ignoredCursorIndexes.includes(defaultMinCursorCountIndex)) {
1049
+ break;
1050
+ }
1051
+ }
1052
+ this.indexedHitObjects.forEach((indexedHitObject, i) => {
1053
+ if (indexedHitObject.acceptedCursorIndex === -1 ||
1054
+ indexedHitObject.actualCursorIndex === -1) {
1055
+ indexedHitObject.acceptedCursorIndex = mainCursorIndex;
1056
+ indexedHitObject.actualCursorIndex = mainCursorIndex;
1057
+ }
1058
+ if (ignoredCursorIndexes.includes(indexedHitObject.acceptedCursorIndex)) {
1059
+ indexedHitObject.acceptedCursorIndex =
1060
+ defaultMinCursorCountIndex;
1061
+ }
1062
+ // For sliders, we need to consider two cases. The first case is when the player doesn't drag
1063
+ // the slider. The second case is when the player drags the slider.
1064
+ if (indexedHitObject.object.object instanceof osuBase.Slider) {
1065
+ indexedHitObject.sliderCheesed = this.checkSliderCheesing(indexedHitObject, this.data.hitObjectData[i], hitWindowOffset);
1040
1066
  }
1041
1067
  });
1042
1068
  for (let i = 0; i < this.data.cursorMovement.length; ++i) {
1043
- console.log("Index", i, "count:", indexes.filter((v) => v === i).length);
1044
- }
1045
- }
1046
- /**
1047
- * Gets the approximation of an object's difficulty such that the object is likely to be 2-handed.
1048
- *
1049
- * @param index The index of the object.
1050
- */
1051
- getSpacingAngleDiffApprox(index) {
1052
- const object = this.map.objects[index];
1053
- if (object.object instanceof osuBase.Spinner) {
1054
- return 0.1;
1069
+ console.log("Index", i, "count:", this.indexedHitObjects.filter((v) => v.acceptedCursorIndex === i).length);
1055
1070
  }
1056
- const angleDiff = object.angle !== null
1057
- ? 0.5 + Math.pow(Math.cos(object.angle / 2), 2)
1058
- : 1;
1059
- const speedDiff = object.lazyJumpDistance / Math.max(1, object.deltaTime);
1060
- // Make decay slower.
1061
- return Math.max(0.8, angleDiff * speedDiff);
1062
1071
  }
1063
1072
  /**
1064
1073
  * Gets the hit window offset to be applied to `getCursorIndex`.
@@ -1069,7 +1078,7 @@ class TwoHandChecker {
1069
1078
  const c = this.data.cursorMovement[i];
1070
1079
  for (let j = 0; j < c.occurrences.length; ++j) {
1071
1080
  if (c.occurrences[j].time <
1072
- this.map.map.hitObjects.objects[0].startTime -
1081
+ this.calculator.beatmap.hitObjects.objects[0].startTime -
1073
1082
  this.hitWindow.hitWindowFor50()) {
1074
1083
  continue;
1075
1084
  }
@@ -1091,18 +1100,17 @@ class TwoHandChecker {
1091
1100
  * @param hitWindowOffset The offset for hit window to compensate for replay hit inaccuracies.
1092
1101
  * @returns The cursor index that hits the given object, -1 if the index is not found, the object is a spinner, or the object was missed.
1093
1102
  */
1094
- getCursorIndex(index, hitWindowOffset) {
1095
- const object = this.map.objects[index];
1103
+ getIndexedHitObject(index, hitWindowOffset) {
1104
+ const object = this.calculator.objects[index];
1096
1105
  const data = this.data.hitObjectData[index];
1097
1106
  if (object.object instanceof osuBase.Spinner ||
1098
1107
  data.result === exports.hitResult.RESULT_0) {
1099
- return -1;
1108
+ return new IndexedHitObject(object, -1, -1, -1);
1100
1109
  }
1101
1110
  const isPrecise = this.data.convertedMods.some((m) => m instanceof osuBase.ModPrecise);
1102
- const isSlider = object.object instanceof osuBase.Slider;
1103
1111
  // For sliders, automatically set hit window to be as lenient as possible.
1104
1112
  let hitWindowLength = this.hitWindow.hitWindowFor50(isPrecise);
1105
- if (!isSlider) {
1113
+ if (!(object.object instanceof osuBase.Slider)) {
1106
1114
  switch (data.result) {
1107
1115
  case exports.hitResult.RESULT_300:
1108
1116
  hitWindowLength = this.hitWindow.hitWindowFor300(isPrecise);
@@ -1143,18 +1151,16 @@ class TwoHandChecker {
1143
1151
  // We track the cursor movement along those indexes.
1144
1152
  // Current cursor position is in `hitTimeBeforeIndex`.
1145
1153
  let distance = Number.POSITIVE_INFINITY;
1146
- let acceptableRadius = object.object.radius;
1147
- // Sliders have a bigger radius tolerance due to slider ball.
1148
- if (isSlider) {
1149
- acceptableRadius *= 2.4;
1150
- }
1151
1154
  let j = hitTimeBeforeIndex;
1152
1155
  for (j; j <= hitTimeAfterIndex; ++j) {
1153
1156
  const occurrence = c.occurrences[j];
1154
1157
  const nextOccurrence = c.occurrences[j + 1];
1155
1158
  const cursorPosition = occurrence.position;
1156
- if (occurrence.time > hitTime + hitWindowOffset + 10) {
1157
- // Give an additional 10ms in case registration in-game is late.
1159
+ if (occurrence.time < minimumHitTime &&
1160
+ nextOccurrence?.id !== exports.movementType.MOVE) {
1161
+ continue;
1162
+ }
1163
+ if (occurrence.time > hitTime + hitWindowOffset) {
1158
1164
  // Set distance to minimum just for the last.
1159
1165
  if (occurrence.id !== exports.movementType.UP) {
1160
1166
  distance = Math.min(distance, object.object.stackedPosition.getDistance(cursorPosition));
@@ -1166,94 +1172,214 @@ class TwoHandChecker {
1166
1172
  }
1167
1173
  distance =
1168
1174
  object.object.stackedPosition.getDistance(cursorPosition);
1169
- if (nextOccurrence &&
1170
- nextOccurrence.id === exports.movementType.MOVE &&
1175
+ if (nextOccurrence?.id === exports.movementType.MOVE &&
1171
1176
  occurrence.time !== nextOccurrence.time &&
1172
1177
  !occurrence.position.equals(nextOccurrence.position)) {
1173
1178
  // If next cursor is a `move` instance and it doesn't go out of time
1174
1179
  // range, we interpolate cursor position between two occurrences.
1175
1180
  const nextPosition = nextOccurrence.position;
1176
1181
  const displacement = nextPosition.subtract(cursorPosition);
1177
- for (let mSecPassed = Math.max(minimumHitTime, occurrence.time); mSecPassed <=
1178
- Math.min(hitTime + hitWindowOffset, nextOccurrence.time); ++mSecPassed) {
1182
+ for (let mSecPassed = Math.max(minimumHitTime, occurrence.time); mSecPassed <= Math.min(hitTime, nextOccurrence.time); ++mSecPassed) {
1179
1183
  const progress = (mSecPassed - occurrence.time) /
1180
1184
  (nextOccurrence.time - occurrence.time);
1181
1185
  distance = object.object.stackedPosition.getDistance(cursorPosition.add(displacement.scale(progress)));
1182
1186
  }
1183
1187
  }
1184
1188
  }
1185
- if (distance > acceptableRadius) {
1189
+ if (distance > object.object.radius) {
1186
1190
  continue;
1187
1191
  }
1188
- let acceptedCursorIndex = i;
1189
- if (isSlider) {
1190
- this.assignCurrentIndexToOne = acceptedCursorIndex % 2 === 0;
1192
+ // The case for a one-handed object is that there will be a slight movement in the cursor towards
1193
+ // the next object in fast patterns. We should not be worried about slow patterns as they will only
1194
+ // make a minimal difference and aim strain threshold should filter them out.
1195
+ // In order to verify if the player does that, we check if the movement towards the next
1196
+ // object is sufficient enough to be two-handed. This is done by checking if the movement
1197
+ // from the current object to the next object and the movement from the current object
1198
+ // to the significant move cursor occurrence produces an angle that is acute enough.
1199
+ // let isAngleFulfilled: boolean = false;
1200
+ // Aside of angles, we need to consider if the player dragged from the previous object to the current object.
1201
+ let isDragged = false;
1202
+ // Get the latest down or movement cursor occurrence.
1203
+ while (c.occurrences[j]?.id === exports.movementType.UP &&
1204
+ j > hitTimeBeforeIndex) {
1205
+ --j;
1191
1206
  }
1192
- else {
1193
- // Get the latest down instance.
1207
+ if (object.object instanceof osuBase.Circle) {
1208
+ // For circles, we only need to consider the actual press on the circle.
1209
+ // Therefore, we need to get the latest down cursor occurrence instead.
1194
1210
  while (c.occurrences[j]?.id !== exports.movementType.DOWN &&
1195
1211
  j > hitTimeBeforeIndex) {
1196
1212
  --j;
1197
1213
  }
1198
- if (c.occurrences[j].id === exports.movementType.DOWN) {
1199
- let isAngleFulfilled = false;
1200
- // Special case where a cursor is "dragged" into the next object.
1201
- if (c.occurrences[j + 1]?.id === exports.movementType.MOVE &&
1202
- c.occurrences[j + 2]?.id === exports.movementType.UP &&
1203
- // Some move instances move in the exact same place. Not sure why, most likely
1204
- // because the position is recorded as int in the game and the movement is too small to
1205
- // convert into +1 or -1.
1206
- !c.occurrences[j].position.equals(c.occurrences[j + 1].position)) {
1207
- const movementVec = c.occurrences[j + 1].position.subtract(object.object.endPosition);
1208
- if (this.map.objects[index + 1]) {
1209
- const next = this.map.objects[index + 1];
1210
- const currentToNext = next.object.stackedPosition.subtract(object.object.endPosition);
1211
- const dot = currentToNext.dot(movementVec);
1212
- const det = currentToNext.x * movementVec.y -
1213
- currentToNext.y * movementVec.x;
1214
- const movementToNextAngle = Math.abs(Math.atan2(det, dot));
1215
- isAngleFulfilled =
1216
- movementToNextAngle < Math.PI / 6;
1217
- }
1218
- if (this.map.objects[index - 1] && !isAngleFulfilled) {
1219
- const prev = this.map.objects[index - 1];
1220
- const extendedCurrent = object.object.endPosition
1221
- .subtract(prev.object.stackedPosition)
1222
- .scale(1.5)
1223
- .subtract(object.object.endPosition);
1224
- const dot = extendedCurrent.dot(movementVec);
1225
- const det = extendedCurrent.x * movementVec.y -
1226
- extendedCurrent.y * movementVec.x;
1227
- const extendedCurrentToMovementAngle = Math.abs(Math.atan2(det, dot));
1228
- isAngleFulfilled =
1229
- extendedCurrentToMovementAngle < Math.PI / 6;
1230
- }
1231
- }
1232
- if (isAngleFulfilled) {
1233
- this.assignCurrentIndexToOne = true;
1234
- acceptedCursorIndex = 0;
1235
- }
1236
- else {
1237
- acceptedCursorIndex = this.assignCurrentIndexToOne
1238
- ? 1
1239
- : 0;
1240
- this.assignCurrentIndexToOne =
1241
- !this.assignCurrentIndexToOne;
1214
+ }
1215
+ // Theoretically there can only be 1 up occurrence, but this is a
1216
+ // consideration if the user manually adds cursor occurrences.
1217
+ if (c.occurrences[j]?.id === exports.movementType.UP) {
1218
+ ++j;
1219
+ }
1220
+ // Some move instances move in the exact same place. Not sure why, most likely
1221
+ // because the position is recorded as int in the game and the movement is too small to
1222
+ // convert into +1 or -1.
1223
+ // let nextSignificantOccurrenceIndex: number = j + 1;
1224
+ // while (
1225
+ // c.occurrences[j] &&
1226
+ // c.occurrences[nextSignificantOccurrenceIndex] &&
1227
+ // c.occurrences[j].position.equals(
1228
+ // c.occurrences[nextSignificantOccurrenceIndex].position
1229
+ // )
1230
+ // ) {
1231
+ // ++nextSignificantOccurrenceIndex;
1232
+ // }
1233
+ // const nextSignificantOccurrence: CursorOccurrence =
1234
+ // c.occurrences[nextSignificantOccurrenceIndex];
1235
+ // const next: DifficultyHitObject | RebalanceDifficultyHitObject =
1236
+ // this.map.objects[index + 1];
1237
+ // Angle detection.
1238
+ /* if (nextSignificantOccurrence?.id === movementType.MOVE && next) {
1239
+ // Get the object's actual end position.
1240
+ let actualEndPosition: Vector2 =
1241
+ object.object.stackedEndPosition;
1242
+
1243
+ if (
1244
+ object.object instanceof Slider &&
1245
+ object.object.lazyEndPosition
1246
+ ) {
1247
+ // For sliders, we take the closest distance between the lazy end position
1248
+ // and stacked end position towards the next significant cursor occurrence.
1249
+ // This assumes that the player takes the simpler movement.
1250
+ const lazyEndDistance: number =
1251
+ object.object.lazyEndPosition.getDistance(
1252
+ nextSignificantOccurrence.position
1253
+ );
1254
+ const actualEndDistance: number =
1255
+ object.object.stackedEndPosition.getDistance(
1256
+ nextSignificantOccurrence.position
1257
+ );
1258
+
1259
+ if (lazyEndDistance < actualEndDistance) {
1260
+ actualEndPosition = object.object.lazyEndPosition;
1242
1261
  }
1243
1262
  }
1263
+
1264
+ // Get the movement vector towards the next cursor occurrence by subtracting
1265
+ // the next cursor occurrence with the object's position.
1266
+ const movementVec: Vector2 =
1267
+ nextSignificantOccurrence.position.subtract(
1268
+ actualEndPosition
1269
+ );
1270
+
1271
+ const currentToNext: Vector2 =
1272
+ next.object.stackedPosition.subtract(actualEndPosition);
1273
+
1274
+ const dot: number = currentToNext.dot(movementVec);
1275
+ const det: number =
1276
+ currentToNext.x * movementVec.y -
1277
+ currentToNext.y * movementVec.x;
1278
+
1279
+ const movementToNextAngle: number = Math.abs(
1280
+ Math.atan2(det, dot)
1281
+ );
1282
+
1283
+ isAngleFulfilled = movementToNextAngle < Math.PI / 6;
1284
+ } */
1285
+ // Dragging detection.
1286
+ let dragTimeThreshold = 0;
1287
+ const prev = this.calculator.objects[index - 1];
1288
+ if (prev) {
1289
+ // The previous object might be a slider, so we need to get
1290
+ // the hit data of it to get an accurate time threshold.
1291
+ const prevData = this.data.hitObjectData[index - 1];
1292
+ dragTimeThreshold = prev.object.startTime;
1293
+ if (!(prev.object instanceof osuBase.Spinner)) {
1294
+ dragTimeThreshold += prevData.accuracy;
1295
+ }
1296
+ if (prev.object instanceof osuBase.Slider) {
1297
+ dragTimeThreshold = Math.max(dragTimeThreshold, prev.object.endTime);
1298
+ }
1244
1299
  }
1300
+ let occurrenceStartIndex = hitTimeAfterIndex;
1301
+ while (c.occurrences[occurrenceStartIndex]?.time >=
1302
+ dragTimeThreshold &&
1303
+ occurrenceStartIndex > 0) {
1304
+ --occurrenceStartIndex;
1305
+ }
1306
+ // The above loop will make the start index before or right when
1307
+ // the previous object was hit or ended, but we want the index after it.
1308
+ ++occurrenceStartIndex;
1309
+ const dragOccurrences = c.occurrences.slice(occurrenceStartIndex, hitTimeAfterIndex);
1310
+ isDragged =
1311
+ dragOccurrences.length > 0 &&
1312
+ // We only care when the cursor approaches the current object. It doesn't
1313
+ // matter whether the previous object was pressed or dragged.
1314
+ dragOccurrences
1315
+ .at(-1)
1316
+ .position.getDistance(object.object.stackedPosition) <=
1317
+ object.object.radius &&
1318
+ dragOccurrences.every((v) => v.id === exports.movementType.MOVE);
1245
1319
  cursorInformations.push({
1246
- cursorIndex: acceptedCursorIndex,
1320
+ // If the angle is fulfilled or the player dragged,
1321
+ // we set the cursor index to the main cursor index.
1322
+ acceptedCursorIndex: /* isAngleFulfilled || */ isDragged
1323
+ ? -1
1324
+ : i,
1325
+ actualCursorIndex: i,
1326
+ occurrenceIndex: j,
1247
1327
  distanceDiff: distance,
1248
1328
  });
1249
1329
  }
1250
1330
  // Cursors have been filtered to see which of them is inside the object.
1251
1331
  // Now we look at which cursor is closest to the center of the object.
1252
- const minDistanceDiff = Math.min(...cursorInformations.map((v) => {
1253
- return v.distanceDiff;
1254
- }));
1255
- return (cursorInformations.find((c) => c.distanceDiff === minDistanceDiff)
1256
- ?.cursorIndex ?? -1);
1332
+ const minDistanceDiff = Math.min(...cursorInformations.map((v) => v.distanceDiff));
1333
+ const acceptedCursorInformation = cursorInformations.find((c) => c.distanceDiff === minDistanceDiff);
1334
+ return new IndexedHitObject(object, acceptedCursorInformation?.acceptedCursorIndex ?? -1, acceptedCursorInformation?.actualCursorIndex ?? -1, acceptedCursorInformation?.occurrenceIndex ?? -1);
1335
+ }
1336
+ /**
1337
+ * Checks whether a slider was cheesed.
1338
+ *
1339
+ * This is done by checking if a cursor follows a slider all the way to its end position.
1340
+ *
1341
+ * @param indexedHitObject The indexed slider.
1342
+ * @param hitData The hit data of the slider.
1343
+ * @param actualCursorIndex The actual cursor index that hit the slider.
1344
+ * @param hitWindowOffset The offset that was calculated by `getHitWindowOffset()`
1345
+ * @returns Whether the slider was cheesed.
1346
+ */
1347
+ checkSliderCheesing(indexedHitObject, hitData, hitWindowOffset) {
1348
+ if (!(indexedHitObject.object.object instanceof osuBase.Slider) ||
1349
+ hitData.result === exports.hitResult.RESULT_0) {
1350
+ return false;
1351
+ }
1352
+ let cursorLoopIndex = Math.max(0, indexedHitObject.occurrenceIndex);
1353
+ const c = this.data.cursorMovement[indexedHitObject.actualCursorIndex];
1354
+ const acceptableRadius = indexedHitObject.object.object.radius * 2.4;
1355
+ for (let i = 1; i < indexedHitObject.object.object.nestedHitObjects.length; ++i) {
1356
+ const tickWasHit = hitData.tickset[i - 1];
1357
+ if (!tickWasHit) {
1358
+ continue;
1359
+ }
1360
+ const object = indexedHitObject.object.object.nestedHitObjects[i];
1361
+ let j = cursorLoopIndex;
1362
+ let cursorHitTick = false;
1363
+ for (j; j < c.occurrences.length; ++j) {
1364
+ if (c.occurrences[j].time <
1365
+ object.startTime - hitWindowOffset) {
1366
+ continue;
1367
+ }
1368
+ if (c.occurrences[j].time >
1369
+ object.startTime + hitWindowOffset) {
1370
+ break;
1371
+ }
1372
+ if (c.occurrences[j].position.getDistance(object.stackedPosition) <= acceptableRadius) {
1373
+ cursorHitTick = true;
1374
+ break;
1375
+ }
1376
+ }
1377
+ if (!cursorHitTick) {
1378
+ return true;
1379
+ }
1380
+ cursorLoopIndex = j;
1381
+ }
1382
+ return false;
1257
1383
  }
1258
1384
  /**
1259
1385
  * Applies penalty to the original star rating instance.
@@ -1261,29 +1387,56 @@ class TwoHandChecker {
1261
1387
  applyPenalty() {
1262
1388
  const beatmaps = new Array(this.data.cursorMovement.length);
1263
1389
  this.indexedHitObjects.forEach((o) => {
1264
- if (!beatmaps[o.cursorIndex]) {
1265
- const map = osuBase.Utils.deepCopy(this.map.map);
1390
+ if (!beatmaps[o.acceptedCursorIndex]) {
1391
+ const map = osuBase.Utils.deepCopy(this.calculator.beatmap);
1266
1392
  map.hitObjects.clear();
1267
- beatmaps[o.cursorIndex] = map;
1393
+ beatmaps[o.acceptedCursorIndex] = map;
1268
1394
  }
1269
- beatmaps[o.cursorIndex].hitObjects.add(o.object.object);
1395
+ beatmaps[o.acceptedCursorIndex].hitObjects.add(o.object.object);
1396
+ });
1397
+ // Preserve some values that aren't reasonable for them to be changed.
1398
+ const preservedValues = this.calculator.objects.map((v) => {
1399
+ return {
1400
+ noteDensity: v.noteDensity,
1401
+ overlappingFactor: v.overlappingFactor,
1402
+ rhythmStrain: v.rhythmStrain,
1403
+ rhythmMultiplier: v.rhythmMultiplier,
1404
+ };
1270
1405
  });
1271
- this.map.objects.length = 0;
1406
+ this.calculator.objects.length = 0;
1272
1407
  beatmaps.forEach((beatmap) => {
1273
1408
  if (!beatmap) {
1274
1409
  return;
1275
1410
  }
1276
- const starRating = osuBase.Utils.deepCopy(this.map);
1277
- starRating.map = beatmap;
1278
- starRating.generateDifficultyHitObjects();
1279
- starRating.objects[0].deltaTime =
1280
- starRating.objects[0].startTime -
1411
+ const difficultyCalculator = Object.assign(osuBase.Utils.deepCopy(this.calculator), { beatmap: beatmap });
1412
+ difficultyCalculator.generateDifficultyHitObjects();
1413
+ difficultyCalculator.objects[0].deltaTime =
1414
+ difficultyCalculator.objects[0].startTime -
1281
1415
  this.indexedHitObjects[0].object.startTime;
1282
- starRating.objects[0].strainTime = Math.max(25, starRating.objects[0].deltaTime);
1283
- this.map.objects.push(...starRating.objects);
1416
+ difficultyCalculator.objects[0].strainTime = Math.max(25, difficultyCalculator.objects[0].deltaTime);
1417
+ (this.calculator.objects).push(...difficultyCalculator.objects);
1284
1418
  });
1285
- this.map.objects.sort((a, b) => a.startTime - b.startTime);
1286
- this.map.calculateAll();
1419
+ this.calculator.objects.sort((a, b) => a.startTime - b.startTime);
1420
+ // Reassign preserved values before calculating.
1421
+ for (let i = 0; i < this.calculator.objects.length; ++i) {
1422
+ const diffObject = this.calculator.objects[i];
1423
+ const indexedHitObject = this.indexedHitObjects[i];
1424
+ const preservedValue = preservedValues[i];
1425
+ diffObject.noteDensity = preservedValue.noteDensity;
1426
+ diffObject.overlappingFactor = preservedValue.overlappingFactor;
1427
+ diffObject.rhythmStrain = preservedValue.rhythmStrain;
1428
+ diffObject.rhythmMultiplier = preservedValue.rhythmMultiplier;
1429
+ // Set slider travel distance to 0 if the slider was cheesed.
1430
+ if (indexedHitObject.sliderCheesed) {
1431
+ diffObject.travelDistance = 0;
1432
+ }
1433
+ }
1434
+ // Do not include rhythm skill.
1435
+ this.calculator.calculateAim();
1436
+ this.calculator.calculateTap();
1437
+ this.calculator.calculateFlashlight();
1438
+ this.calculator.calculateVisual();
1439
+ this.calculator.calculateTotal();
1287
1440
  }
1288
1441
  }
1289
1442
 
@@ -1318,7 +1471,7 @@ class ReplayAnalyzer {
1318
1471
  /**
1319
1472
  * The beatmap that is being analyzed. `DroidStarRating` or `RebalanceDroidStarRating` is required for three finger or two hand analyzing.
1320
1473
  */
1321
- map;
1474
+ beatmap;
1322
1475
  /**
1323
1476
  * The results of the analyzer. `null` when initialized.
1324
1477
  */
@@ -1339,6 +1492,12 @@ class ReplayAnalyzer {
1339
1492
  * Whether this replay has been checked against 2 hand usage.
1340
1493
  */
1341
1494
  hasBeenCheckedFor2Hand = false;
1495
+ /**
1496
+ * The cursor indexes at which each object was hit.
1497
+ *
1498
+ * This is filled after 2 hand usage has been checked.
1499
+ */
1500
+ twoHandCursorIndexes = [];
1342
1501
  // Sizes of primitive data types in Java (in bytes)
1343
1502
  BYTE_LENGTH = 1;
1344
1503
  SHORT_LENGTH = 2;
@@ -1347,7 +1506,7 @@ class ReplayAnalyzer {
1347
1506
  LONG_LENGTH = 8;
1348
1507
  constructor(values) {
1349
1508
  this.scoreID = values.scoreID;
1350
- this.map = values.map;
1509
+ this.beatmap = values.map;
1351
1510
  }
1352
1511
  /**
1353
1512
  * Analyzes a replay.
@@ -1596,7 +1755,7 @@ class ReplayAnalyzer {
1596
1755
  resultObject.hitObjectData.push(replayObjectData);
1597
1756
  }
1598
1757
  // Parse max combo, hit results, and accuracy in old replay version
1599
- if (resultObject.replayVersion < 3 && this.map) {
1758
+ if (resultObject.replayVersion < 3 && this.beatmap) {
1600
1759
  let hit300 = 0;
1601
1760
  let hit300k = 0;
1602
1761
  let hit100 = 0;
@@ -1604,10 +1763,10 @@ class ReplayAnalyzer {
1604
1763
  let hit50 = 0;
1605
1764
  let hit0 = 0;
1606
1765
  let grantsGekiOrKatu = true;
1607
- const objects = (this.map instanceof osuDifficultyCalculator.DroidStarRating ||
1608
- this.map instanceof osuRebalanceDifficultyCalculator.DroidStarRating
1609
- ? this.map.map
1610
- : this.map).hitObjects.objects;
1766
+ const objects = (this.beatmap instanceof osuDifficultyCalculator.DroidDifficultyCalculator ||
1767
+ this.beatmap instanceof osuRebalanceDifficultyCalculator.DroidDifficultyCalculator
1768
+ ? this.beatmap.beatmap
1769
+ : this.beatmap).hitObjects.objects;
1611
1770
  for (let i = 0; i < resultObject.hitObjectData.length; ++i) {
1612
1771
  // Hit result
1613
1772
  const hitObjectData = resultObject.hitObjectData[i];
@@ -1696,7 +1855,7 @@ class ReplayAnalyzer {
1696
1855
  * `analyze()` must be called before calling this.
1697
1856
  */
1698
1857
  calculateHitError() {
1699
- if (!this.data || !this.map) {
1858
+ if (!this.data || !this.beatmap) {
1700
1859
  return null;
1701
1860
  }
1702
1861
  const hitObjectData = this.data.hitObjectData;
@@ -1704,10 +1863,10 @@ class ReplayAnalyzer {
1704
1863
  let negativeCount = 0;
1705
1864
  let positiveTotal = 0;
1706
1865
  let negativeTotal = 0;
1707
- const objects = (this.map instanceof osuDifficultyCalculator.DroidStarRating ||
1708
- this.map instanceof osuRebalanceDifficultyCalculator.DroidStarRating
1709
- ? this.map.map
1710
- : this.map).hitObjects.objects;
1866
+ const objects = (this.beatmap instanceof osuDifficultyCalculator.DroidDifficultyCalculator ||
1867
+ this.beatmap instanceof osuRebalanceDifficultyCalculator.DroidDifficultyCalculator
1868
+ ? this.beatmap.beatmap
1869
+ : this.beatmap).hitObjects.objects;
1711
1870
  for (let i = 0; i < hitObjectData.length; ++i) {
1712
1871
  const v = hitObjectData[i];
1713
1872
  const o = objects[i];
@@ -1781,12 +1940,12 @@ class ReplayAnalyzer {
1781
1940
  * Requires `analyze()` to be called first and `map` to be defined as `DroidStarRating` or `RebalanceDroidStarRating`.
1782
1941
  */
1783
1942
  checkFor3Finger() {
1784
- if (!(this.map instanceof osuDifficultyCalculator.DroidStarRating ||
1785
- this.map instanceof osuRebalanceDifficultyCalculator.DroidStarRating) ||
1943
+ if (!(this.beatmap instanceof osuDifficultyCalculator.DroidDifficultyCalculator ||
1944
+ this.beatmap instanceof osuRebalanceDifficultyCalculator.DroidDifficultyCalculator) ||
1786
1945
  !this.data) {
1787
1946
  return;
1788
1947
  }
1789
- const threeFingerChecker = new ThreeFingerChecker(this.map, this.data);
1948
+ const threeFingerChecker = new ThreeFingerChecker(this.beatmap, this.data);
1790
1949
  const result = threeFingerChecker.check();
1791
1950
  this.is3Finger = result.is3Finger;
1792
1951
  this.tapPenalty = result.penalty;
@@ -1798,13 +1957,15 @@ class ReplayAnalyzer {
1798
1957
  * Requires `analyze()` to be called first and `map` to be defined as `DroidStarRating` or `RebalanceDroidStarRating`.
1799
1958
  */
1800
1959
  checkFor2Hand() {
1801
- if (!(this.map instanceof osuDifficultyCalculator.DroidStarRating ||
1802
- this.map instanceof osuRebalanceDifficultyCalculator.DroidStarRating) ||
1960
+ if (!(this.beatmap instanceof osuDifficultyCalculator.DroidDifficultyCalculator ||
1961
+ this.beatmap instanceof osuRebalanceDifficultyCalculator.DroidDifficultyCalculator) ||
1803
1962
  !this.data) {
1804
1963
  return;
1805
1964
  }
1806
- const twoHandChecker = new TwoHandChecker(this.map, this.data);
1807
- this.is2Hand = twoHandChecker.check();
1965
+ const twoHandChecker = new TwoHandChecker(this.beatmap, this.data);
1966
+ const result = twoHandChecker.check();
1967
+ this.is2Hand = result.is2Hand;
1968
+ this.twoHandCursorIndexes = result.cursorIndexes;
1808
1969
  this.hasBeenCheckedFor2Hand = true;
1809
1970
  }
1810
1971
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/data/CursorOccurrence.ts","../src/data/CursorData.ts","../src/constants/hitResult.ts","../src/constants/movementType.ts","../src/data/ReplayData.ts","../src/analysis/BeatmapSectionGenerator.ts","../src/analysis/data/BeatmapSection.ts","../src/analysis/data/ThreeFingerBeatmapSection.ts","../src/analysis/ThreeFingerChecker.ts","../src/analysis/objects/IndexedHitObject.ts","../src/analysis/TwoHandChecker.ts","../src/ReplayAnalyzer.ts","../src/data/ReplayObjectData.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Vector2","hitResult","movementType","Accuracy","MapStats","ModUtil","DroidHitWindow","ModPrecise","MathUtils","Circle","Spinner","Interpolation","Utils","Slider","DroidAPIRequestBuilder","stream","Readable","Parse","javaDeserialization","ModHidden","ModFlashlight","DroidStarRating","RebalanceDroidStarRating"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/data/CursorOccurrence.ts","../src/data/CursorData.ts","../src/constants/hitResult.ts","../src/constants/movementType.ts","../src/data/ReplayData.ts","../src/analysis/BeatmapSectionGenerator.ts","../src/analysis/data/BeatmapSection.ts","../src/analysis/data/ThreeFingerBeatmapSection.ts","../src/analysis/ThreeFingerChecker.ts","../src/analysis/objects/IndexedHitObject.ts","../src/analysis/TwoHandChecker.ts","../src/ReplayAnalyzer.ts","../src/data/ReplayObjectData.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Vector2","hitResult","movementType","Accuracy","MapStats","ModUtil","DroidHitWindow","ModPrecise","MathUtils","Circle","Spinner","Interpolation","Utils","Slider","DroidAPIRequestBuilder","stream","Readable","Parse","javaDeserialization","ModHidden","ModFlashlight","DroidDifficultyCalculator","RebalanceDroidDifficultyCalculator"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAEG;MACU,gBAAgB,CAAA;AACzB;;AAEG;AACM,IAAA,IAAI,CAAS;AAEtB;;AAEG;AACM,IAAA,QAAQ,CAAU;AAE3B;;AAEG;AACM,IAAA,EAAE,CAAe;AAE1B,IAAA,WAAA,CAAY,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,EAAgB,EAAA;AAC5D,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAIA,eAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;KAChB;AACJ;;ACMD;;;;;;AAMG;MACU,UAAU,CAAA;AACnB;;AAEG;IACH,WAAW,GAAuB,EAAE,CAAC;AAErC,IAAA,WAAA,CAAY,MAAyB,EAAA;AACjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACjB,IAAI,gBAAgB,CAChB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACd,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACX,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EACX,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CACf,CACJ,CAAC;AACL,SAAA;KACJ;AACJ;;AC1DD;;AAEG;AACSC,2BAoBX;AApBD,CAAA,UAAY,SAAS,EAAA;AACjB;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AAEZ;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa,CAAA;AAEb;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAEd;;AAEG;AACH,IAAA,SAAA,CAAA,SAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AAClB,CAAC,EApBWA,iBAAS,KAATA,iBAAS,GAoBpB,EAAA,CAAA,CAAA;;ACvBD;;AAEG;AACSC,8BAIX;AAJD,CAAA,UAAY,YAAY,EAAA;AACpB,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,YAAA,CAAA,YAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,YAAA,CAAA,YAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,GAAA,IAAE,CAAA;AACN,CAAC,EAJWA,oBAAY,KAAZA,oBAAY,GAIvB,EAAA,CAAA,CAAA;;ACmID;;;;;;AAMG;MACU,UAAU,CAAA;AACV,IAAA,aAAa,CAAS;AACtB,IAAA,UAAU,CAAS;AACnB,IAAA,QAAQ,CAAS;AACjB,IAAA,IAAI,CAAS;AACb,IAAA,IAAI,CAAO;AACX,IAAA,OAAO,CAAS;AAChB,IAAA,OAAO,CAAS;AAChB,IAAA,KAAK,CAAS;AACd,IAAA,QAAQ,CAAS;AACjB,IAAA,QAAQ,CAAW;AACnB,IAAA,WAAW,CAAU;AACrB,IAAA,UAAU,CAAS;AACnB,IAAA,OAAO,CAAS;AAChB,IAAA,IAAI,CAAS;AACb,IAAA,aAAa,CAAQ;AACrB,IAAA,cAAc,CAAe;AAC7B,IAAA,aAAa,CAAqB;AAClC,IAAA,iBAAiB,CAAS;AAC1B,IAAA,QAAQ,CAAU;AAE3B,IAAA,WAAA,CAAY,MAAyB,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AAC1C,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAIC,gBAAQ,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC5C,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;KACnC;AACJ;;ACjLD;;AAEG;MACmB,uBAAuB,CAAA;AACzC;;;;;;;;AAQG;AACH,IAAA,OAAO,gBAAgB,CACnB,UAAgE,EAChE,qBAA6B,EAC7B,mBAA2B,EAAA;QAE3B,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,IAAI,gBAAgB,GAAW,CAAC,CAAC;AAEjC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;YACpD,MAAM,OAAO,GACT,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GACN,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9B,YAAA,MAAM,aAAa,GACf,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;YAEnD,IAAI,aAAa,IAAI,mBAAmB,EAAE;;AAEtC,gBAAA,IAAI,CAAC,GAAG,gBAAgB,GAAG,qBAAqB,EAAE;AAC9C,oBAAA,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;oBACzB,SAAS;AACZ,iBAAA;gBAED,eAAe,CAAC,IAAI,CAAC;oBACjB,gBAAgB;AAChB,oBAAA,eAAe,EAAE,CAAC;AACrB,iBAAA,CAAC,CAAC;AAEH,gBAAA,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5B,aAAA;AACJ,SAAA;;AAGD,QAAA,IACI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,gBAAgB;AAC5C,YAAA,qBAAqB,EACvB;YACE,eAAe,CAAC,IAAI,CAAC;gBACjB,gBAAgB;AAChB,gBAAA,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACjD,aAAA,CAAC,CAAC;AACN,SAAA;AAED,QAAA,OAAO,eAAe,CAAC;KAC1B;AACJ;;ACrED;;AAEG;MACU,cAAc,CAAA;AACvB;;AAEG;AACM,IAAA,gBAAgB,CAAS;AAElC;;AAEG;AACM,IAAA,eAAe,CAAS;AAEjC;;;AAGG;IACH,WAAY,CAAA,gBAAwB,EAAE,eAAuB,EAAA;AACzD,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACzC,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KAC1C;AACJ;;ACpBD;;AAEG;AACG,MAAO,yBAA0B,SAAQ,cAAc,CAAA;AACzD;;AAEG;AACH,IAAA,SAAS,CAAU;AAEnB;;AAEG;AACH,IAAA,eAAe,CAAS;AAExB,IAAA,WAAA,CAAY,MAKX,EAAA;QACG,KAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;AACvD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;KACjD;AACJ;;AC+DD;;AAEG;MACU,kBAAkB,CAAA;AAC3B;;AAEG;AACM,IAAA,UAAU,CAEsB;AAEzC;;AAEG;AACM,IAAA,IAAI,CAAa;AAE1B;;;;AAIG;AACK,IAAA,OAAgB,eAAe,GAAW,GAAG,CAAC;AAEtD;;;;;;;AAOG;IACc,iCAAiC,GAAW,EAAE,CAAC;AAEhE;;;AAGG;IACc,8BAA8B,GAAW,EAAE,CAAC;AAE7D;;;AAGG;IACc,6BAA6B,GAAW,IAAI,CAAC;AAE9D;;AAEG;AACc,IAAA,eAAe,CAAS;AAEzC;;;;;AAKG;IACc,yBAAyB,GAAW,IAAI,CAAC;AAE1D;;;;;;;AAOG;IACc,mBAAmB,GAAW,IAAI,CAAC;AAEpD;;;;AAIG;IACc,qBAAqB,GAAW,CAAC,CAAC;AAEnD;;AAEG;IACc,eAAe,GAAgC,EAAE,CAAC;AAEnE;;;;;;AAMG;IACc,sBAAsB,GAAW,GAAG,CAAC;AAEtD;;AAEG;AACc,IAAA,SAAS,CAAiB;AAE3C;;;;;AAKG;IACc,uBAAuB,GAAyB,EAAE,CAAC;AAEpE;;AAEG;IACc,mBAAmB,GAAiB,EAAE,CAAC;AAExD;;AAEG;IACc,WAAW,GAAiB,EAAE,CAAC;AAEhD;;;AAGG;IACH,WACI,CAAA,UAEwC,EACxC,IAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAEjB,QAAA,MAAM,KAAK,GAAa,IAAIC,gBAAQ,CAAC;YACjC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAC7B,CAAC,CAAC,KACE,CAACC,eAAO,CAAC,iBAAiB;iBACrB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AACzB,iBAAA,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CACnC;SACJ,CAAC,CAAC,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,SAAS,GAAG,IAAIC,sBAAc,CAAC,KAAK,CAAC,EAAG,CAAC,CAAC;AAE/C,QAAA,MAAM,WAAW,GAGsB,UAAU,CAAC,OAAO,CAAC,MAAM;;AAE5D,QAAA,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,IAAI,kBAAkB,CAAC,eAAe,CACnE,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC;KAC7C;AAED;;AAEG;IACH,OAAO,kBAAkB,CACrB,GAAmE,EAAA;AAEnE,QAAA,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,CACnB,CAAC,CAAC,KAAK,CAAC,CAAC,iBAAiB,IAAI,IAAI,CAAC,eAAe,CACrD,CAAC;KACL;AAED;;;;;;;;;AASG;IACH,KAAK,GAAA;AACD,QAAA,IAAI,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE;YAC5B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3C,SAAA;QAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAE7B,QAAA,IACI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3D,MAAM,IAAI,CAAC,EAClB;YACE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3C,SAAA;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAE7B,QAAA,IACI,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3D,MAAM,IAAI,CAAC,EAClB;YACE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAC3C,SAAA;QAED,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,QAAA,MAAM,YAAY,GAAW,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE1D,OAAO,EAAE,SAAS,EAAE,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;KACjE;AAED;;;;;AAKG;IACK,sBAAsB,GAAA;AAC1B,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5B,QAAA,MAAM,UAAU,GAAuB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAE/D,QAAA,MAAM,SAAS,GAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAChD,CAAC,CAAC,KAAK,CAAC,YAAYC,kBAAU,CACjC,CAAC;AAEF,QAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;AAC5D,YAAA,MAAM,WAAW,GAAWC,iBAAS,CAAC,KAAK,CACvC,OAAO,CAAC,SAAS,CACb,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,UAAU,CAAC,SAAS,CAClD,GAAG,CAAC,EACL,CAAC,EACD,OAAO,CAAC,MAAM,GAAG,CAAC,CACrB,CAAC;YACF,IAAI,UAAU,GAAW,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;;YAG7D,IAAI,0BAA0B,GAC1B,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC7C,YAAA,QAAQ,UAAU,CAAC,WAAW,CAAC,CAAC,MAAM;gBAClC,KAAKP,iBAAS,CAAC,UAAU;oBACrB,0BAA0B;AACtB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,0BAA0B;AACtB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA;oBACI,0BAA0B;AACtB,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;YAED,UAAU,IAAI,0BAA0B,CAAC;AAEzC,YAAA,MAAM,UAAU,GAAW,WAAW,GAAG,CAAC,CAAC;YAC3C,IAAI,SAAS,GAAW,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;;YAG7D,IAAI,yBAAyB,GACzB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAC7C,YAAA,QAAQ,UAAU,CAAC,UAAU,CAAC,CAAC,MAAM;gBACjC,KAAKA,iBAAS,CAAC,UAAU;oBACrB,yBAAyB;AACrB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,yBAAyB;AACrB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA;oBACI,yBAAyB;AACrB,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;YAED,SAAS,IAAI,yBAAyB,CAAC;AAEvC,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;AAC9B,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,OAAO,EAAE,SAAS;AACrB,aAAA,CAAC,CAAC;AACN,SAAA;KACJ;AAED;;;;AAIG;IACK,qBAAqB,GAAA;AACzB,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5B,QAAA,MAAM,UAAU,GAAuB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAE/D,MAAM,iBAAiB,GAAc,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,gBAAgB,GAAc,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC;AAE9D,QAAA,MAAM,SAAS,GAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAChD,CAAC,CAAC,KAAK,CAAC,YAAYM,kBAAU,CACjC,CAAC;;QAGF,IAAI,oBAAoB,GACpB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,YAAYE,cAAM,EAAE;AACrC,YAAA,QAAQ,iBAAiB;gBACrB,KAAKR,iBAAS,CAAC,UAAU;oBACrB,oBAAoB;AAChB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,oBAAoB;AAChB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA;oBACI,oBAAoB;AAChB,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;;QAGD,IAAI,mBAAmB,GACnB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,YAAYQ,cAAM,EAAE;AAC1C,YAAA,QAAQ,gBAAgB;gBACpB,KAAKR,iBAAS,CAAC,UAAU;oBACrB,mBAAmB;AACf,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,mBAAmB;AACf,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA;oBACI,mBAAmB;AACf,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;;;;AAKD,QAAA,MAAM,kBAAkB,GACpB,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACvD,QAAA,MAAM,iBAAiB,GACnB,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;AAE3D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtD,MAAM,cAAc,GAAe,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAC/D,YAAA,MAAM,aAAa,GAAe,IAAI,UAAU,CAAC;AAC7C,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,CAAC,EAAE,EAAE;AACL,gBAAA,CAAC,EAAE,EAAE;AACL,gBAAA,EAAE,EAAE,EAAE;AACT,aAAA,CAAC,CAAC;AAEH,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACxD,gBAAA,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKC,oBAAY,CAAC,IAAI,EAAE;oBACxD,SAAS;AACZ,iBAAA;gBAED,MAAM,IAAI,GAAW,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAExD,gBAAA,IAAI,IAAI,GAAG,kBAAkB,IAAI,IAAI,GAAG,iBAAiB,EAAE;oBACvD,SAAS;AACZ,iBAAA;gBAED,IACI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAC7B,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,CAClD,EACH;oBACE,SAAS;AACZ,iBAAA;AAED,gBAAA,aAAa,CAAC,WAAW,CAAC,IAAI,CAC1B,IAAI,gBAAgB,CAChB,IAAI,EACJ,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EACxC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EACxC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CACnC,CACJ,CAAC;AACL,aAAA;AAED,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAChD,SAAA;KACJ;AAED;;;AAGG;IACK,kBAAkB,GAAA;AACtB,QAAA,MAAM,eAAe,GACjB,uBAAuB,CAAC,gBAAgB,CACpC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,mBAAmB,CAC3B,CAAC;AACN,QAAA,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;AAC1C,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CACrB,IAAI,yBAAyB,CAAC;gBAC1B,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;gBACjD,eAAe,EAAE,cAAc,CAAC,eAAe;AAC/C,gBAAA,SAAS,EAAE,KAAK;gBAChB,eAAe,EAAE,CAAC,CAAC;AACtB,aAAA,CAAC,CACL,CAAC;AACL,SAAA;KACJ;AAED;;AAEG;IACK,cAAc,GAAA;AAClB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAClD,YAAA,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,SAAS,CAAC;AACpD,YAAA,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC;AACxD,SAAA;KACJ;AAED;;;;;;AAMG;AACK,IAAA,SAAS,CAAC,OAAuB,EAAA;AACrC,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5B,QAAA,MAAM,UAAU,GAAuB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/D,QAAA,MAAM,SAAS,GAAY,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAChD,CAAC,CAAC,KAAK,CAAC,YAAYK,kBAAU,CACjC,CAAC;QAEF,MAAM,WAAW,GACb,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,UAAU,GACZ,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AAErC,QAAA,IAAI,qBAAqB,GAAW,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC;AACjE,QAAA,IAAI,WAAW,CAAC,MAAM,YAAYE,cAAM,EAAE;YACtC,QAAQ,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,MAAM;gBAC/C,KAAKR,iBAAS,CAAC,UAAU;oBACrB,qBAAqB;AACjB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,qBAAqB;AACjB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA;oBACI,qBAAqB;AACjB,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,qBAAqB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACrE,SAAA;AAED,QAAA,IAAI,oBAAoB,GAAW,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;AAC/D,QAAA,IAAI,UAAU,CAAC,MAAM,YAAYQ,cAAM,EAAE;YACrC,QAAQ,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,MAAM;gBAC9C,KAAKR,iBAAS,CAAC,UAAU;oBACrB,oBAAoB;AAChB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,oBAAoB;AAChB,wBAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC9C,MAAM;AACV,gBAAA;oBACI,oBAAoB;AAChB,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AACpE,SAAA;;;QAID,MAAM,aAAa,GAAa,EAAE,CAAC;AACnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtD,MAAM,CAAC,GAAe,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAClD,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,SAAS;AACZ,aAAA;;;AAID,YAAA,IACI,CAAC,CAAC,WAAW,CAAC,MAAM,CAChB,CAAC,CAAC,KACE,CAAC,CAAC,IAAI,IAAI,qBAAqB;gBAC/B,CAAC,CAAC,IAAI,IAAI,oBAAoB,CACrC,CAAC,MAAM,KAAK,CAAC,EAChB;gBACE,SAAS;AACZ,aAAA;;AAGD,YAAA,IACI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAKC,oBAAY,CAAC,IAAI,CAAC;iBAClD,MAAM,KAAK,CAAC,EACnB;gBACE,SAAS;AACZ,aAAA;AAED,YAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzB,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,aAAa,CACrB,OAAO,CAAC,KAAK,CACT,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,eAAe,GAAG,CAAC,CAC9B,EACD,UAAU,CAAC,KAAK,CACZ,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,eAAe,GAAG,CAAC,CAC9B,EACD,aAAa,CAChB,CAAC;KACL;AAED;;;;;;AAMG;AACK,IAAA,aAAa,CACjB,cAAsE,EACtE,uBAA2C,EAC3C,aAAuB,EAAA;QAEvB,IAAI,WAAW,GAAW,cAAc,CAAC,SAAS,CAC9C,CAAC,CAAC,EAAE,CAAC,KACD,EAAE,CAAC,CAAC,MAAM,YAAYQ,eAAO,CAAC;YAC9B,uBAAuB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAKT,iBAAS,CAAC,QAAQ,CAC/D,CAAC;AACF,QAAA,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE;YACpB,OAAO,CAAC,CAAC,CAAC;AACb,SAAA;AAED,QAAA,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,WAAW,KAAK,cAAc,CAAC,MAAM,EAAE;gBACvC,MAAM;AACT,aAAA;AAED,YAAA,MAAM,CAAC,GACH,cAAc,CAAC,WAAW,CAAC,CAAC;AAChC,YAAA,MAAM,CAAC,GAAqB,uBAAuB,CAAC,WAAW,CAAC,CAAC;AACjE,YAAA,EAAE,WAAW,CAAC;AAEd,YAAA,IAAI,CAAC,CAAC,MAAM,KAAKA,iBAAS,CAAC,QAAQ,EAAE;gBACjC,SAAS;AACZ,aAAA;;AAGD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,gBAAA,MAAM,CAAC,GACH,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;;;;gBAK/C,MAAM,OAAO,GAAW,CAAC,CAAC,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC;AACxD,gBAAA,MAAM,YAAY,GAAW,CAAC,CAAC,WAAW,CAAC,SAAS,CAChD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,OAAO,CAC3B,CAAC;AACF,gBAAA,MAAM,QAAQ,GAAW,YAAY,GAAG,CAAC,CAAC;AAC1C,gBAAA,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE;AAChB,oBAAA,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtB,SAAS;AACZ,iBAAA;AACD,gBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAKC,oBAAY,CAAC,EAAE,EAAE;AAChD,oBAAA,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtB,SAAS;AACZ,iBAAA;gBAED,MAAM,cAAc,GAAY,IAAIF,eAAO,CACvC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAClC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CACrC,CAAC;gBAEF,IAAI,UAAU,GAAY,KAAK,CAAC;gBAEhC,IACI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,EAAE,KAAKE,oBAAY,CAAC,IAAI;oBACpD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAKA,oBAAY,CAAC,IAAI,EAClD;;;oBAGE,KACI,IAAI,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,EAC7C,UAAU,IAAI,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EAC9C,EAAE,UAAU,EACd;AACE,wBAAA,MAAM,CAAC,GACH,CAAC,UAAU,GAAG,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI;AAC9C,6BAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI;gCACzB,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC;AAC1C,wBAAA,cAAc,CAAC,CAAC,GAAGS,qBAAa,CAAC,IAAI,CACjC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAClC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,EACtC,CAAC,CACJ,CAAC;AACF,wBAAA,cAAc,CAAC,CAAC,GAAGA,qBAAa,CAAC,IAAI,CACjC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAClC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,EACtC,CAAC,CACJ,CAAC;AAEF,wBAAA,IACI,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAChC,cAAc,CACjB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,EACtB;4BACE,UAAU,GAAG,IAAI,CAAC;4BAClB,MAAM;AACT,yBAAA;AACJ,qBAAA;AACJ,iBAAA;AAAM,qBAAA;oBACH,UAAU;wBACN,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;AACpD,4BAAA,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACvB,iBAAA;gBACD,IAAI,CAAC,UAAU,EAAE;AACb,oBAAA,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzB,iBAAA;AACJ,aAAA;AACD,YAAA,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzD,SAAA;AAED,QAAA,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;KACtC;AAED;;;;;AAKG;IACK,0BAA0B,GAAA;AAC9B,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5B,MAAM,kBAAkB,GAAgC,EAAE,CAAC;AAE3D,QAAA,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;YAC/C,IAAI,cAAc,GAAY,KAAK,CAAC;AACpC,YAAA,IAAI,mBAAmB,GAAG,cAAc,CAAC,gBAAgB,CAAC;AAE1D,YAAA,KACI,IAAI,CAAC,GAAG,cAAc,CAAC,gBAAgB,EACvC,CAAC,IAAI,cAAc,CAAC,eAAe,EACnC,EAAE,CAAC,EACL;AACE,gBAAA,IACI,CAAC,cAAc;AACf,oBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;wBACxB,kBAAkB,CAAC,eAAe,EACxC;oBACE,cAAc,GAAG,IAAI,CAAC;oBACtB,mBAAmB,GAAG,CAAC,CAAC;oBACxB,SAAS;AACZ,iBAAA;AAED,gBAAA,IACI,cAAc;AACd,oBAAA,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;wBACxB,kBAAkB,CAAC,eAAe,EACxC;oBACE,cAAc,GAAG,KAAK,CAAC;oBACvB,kBAAkB,CAAC,IAAI,CAAC;AACpB,wBAAA,gBAAgB,EAAE,mBAAmB;AACrC,wBAAA,eAAe,EAAE,CAAC;wBAClB,SAAS,EAAE,cAAc,CAAC,SAAS;wBACnC,eAAe,EAAE,cAAc,CAAC,eAAe;AAClD,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;;AAGD,YAAA,IAAI,cAAc,EAAE;gBAChB,kBAAkB,CAAC,IAAI,CAAC;AACpB,oBAAA,gBAAgB,EAAE,mBAAmB;oBACrC,eAAe,EAAE,cAAc,CAAC,eAAe;oBAC/C,SAAS,EAAE,cAAc,CAAC,SAAS;oBACnC,eAAe,EAAE,cAAc,CAAC,eAAe;AAClD,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;KACpD;AAED;;;;;;AAMG;IACK,qBAAqB,GAAA;QACzB,IAAI,kBAAkB,GAAW,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAC5D,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAClC,CAAC,MAAM,CAAC;QACT,IAAI,kBAAkB,IAAI,CAAC,EAAE;YACzB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5B,MAAM,iBAAiB,GAAW,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAC7D,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAC9C,CAAC,CACJ,CAAC;AAEF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtD,IAAI,kBAAkB,IAAI,CAAC,EAAE;gBACzB,MAAM;AACT,aAAA;YACD,MAAM,cAAc,GAAe,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;;AAE/D,YAAA,IACI,cAAc,CAAC,WAAW,CAAC,MAAM;gBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC;AAC3D,gBAAA,cAAc,CAAC,WAAW,CAAC,MAAM,GAAG,iBAAiB;AACjD,oBAAA,IAAI,CAAC,yBAAyB,GAAG,CAAC,EACxC;AACE,gBAAA,EAAE,kBAAkB,CAAC;AACrB,gBAAA,cAAc,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AACzC,aAAA;AACD,YAAA,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;AAChD,SAAA;KACJ;AAED;;;;AAIG;IACK,oBAAoB,GAAA;AACxB,QAAA,MAAM,OAAO,GACT,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;AAC5B,QAAA,MAAM,UAAU,GAAuB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AAC/D,QAAA,MAAM,SAAS,GAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CACnD,CAAC,CAAC,KAAK,CAAC,YAAYJ,kBAAU,CACjC,CAAC;;;AAIF,QAAA,KAAK,MAAM,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;AAC/C,YAAA,MAAM,SAAS,GAAW,cAAc,CAAC,eAAe,CAAC;YAEzD,MAAM,SAAS,GACX,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,SAAS;AACzD,iBAAC,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,MAAM;AACnD,oBAAAN,iBAAS,CAAC,QAAQ;sBACZ,UAAU,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,QAAQ;sBACpD,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;YAErD,MAAM,OAAO,GACT,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO;AACtD,iBAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,MAAM;AAClD,oBAAAA,iBAAS,CAAC,QAAQ;sBACZ,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,QAAQ;sBACnD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;;YAGpD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACnC,gBAAA,MAAM,CAAC,GAAW,CAAC,CAAC,WAAW,CAAC,SAAS,CACrC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,SAAS,CAC7B,CAAC;AACF,gBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;oBACV,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1C,iBAAA;AACL,aAAC,CAAC,CAAC;YACH,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,MAAM,iBAAiB,GAGjB,EAAE,CAAC;AACT,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;gBAEtD,IAAI,CAAC,KAAK,SAAS,EAAE;oBACjB,SAAS;AACZ,iBAAA;gBACD,MAAM,UAAU,GAAe,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBAC3D,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,gBAAA,KACI,IAAI,CAAC,GAAW,CAAC,EACjB,CAAC,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,EACjC,EAAE,CAAC,EACL;oBACE,IACI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS;wBAC3C,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,EAC3C;AACE,wBAAA,EAAE,MAAM,CAAC;wBACT,iBAAiB,CAAC,IAAI,CAAC;4BACnB,MAAM,EAAE,IAAID,eAAO,CACf,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EACpC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CACvC;4BACD,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;AACvC,yBAAA,CAAC,CAAC;AACN,qBAAA;AACJ,iBAAA;AACD,gBAAA,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC9B,aAAA;;;;AAKD,YAAA,MAAM,gBAAgB,GAAW,SAAS,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;;YAI1D,MAAM,gBAAgB,GAClB,aAAa;iBACR,KAAK,CAAC,gBAAgB,CAAC;AACvB,iBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC3C,aAAa;AACR,qBAAA,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC;AAC1B,qBAAA,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,KAAK,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YAEhD,MAAM,cAAc,GAA6B,EAAE,CAAC;AAEpD,YAAA,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE;gBAC9C,MAAM,UAAU,GAAW,cAAc,CAAC,SAAS,CAC/C,CAAC,CAAC,KACE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC;oBAC7C,IAAI,CAAC,iCAAiC,CAC7C,CAAC;AAEF,gBAAA,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;oBACnB,IACI,gBAAgB,CAAC,IAAI;AACjB,wBAAA,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ;wBACvC,IAAI,CAAC,6BAA6B,EACpC;AACE,wBAAA,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;wBACrC,cAAc,CAAC,IAAI,CAAC;4BAChB,MAAM,EAAE,gBAAgB,CAAC,MAAM;AAC/B,4BAAA,KAAK,EAAE,CAAC;4BACR,QAAQ,EAAE,gBAAgB,CAAC,IAAI;AAClC,yBAAA,CAAC,CAAC;wBACH,SAAS;AACZ,qBAAA;oBACD,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;oBAC5D,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAC5D,oBAAA,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AACtC,iBAAA;AAAM,qBAAA;oBACH,cAAc,CAAC,IAAI,CAAC;wBAChB,MAAM,EAAE,gBAAgB,CAAC,MAAM;AAC/B,wBAAA,KAAK,EAAE,CAAC;wBACR,QAAQ,EAAE,gBAAgB,CAAC,IAAI;AAClC,qBAAA,CAAC,CAAC;AACN,iBAAA;AACJ,aAAA;;YAGD,MAAM,YAAY,GAA6B,cAAc;AACxD,iBAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,8BAA8B,CAAC;AAC7D,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;iBACjC,KAAK,CAAC,CAAC,CAAC,CAAC;;AAGd,YAAA,IACI,CAAC,gBAAgB,GAAG,IAAI,CAAC,yBAAyB;AAC9C,gBAAA,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;AACjD,gBAAA,YAAY,CAAC,MAAM,GAAG,CAAC,EACzB;;AAEE,gBAAA,MAAM,WAAW,GACb,cAAc,CAAC,eAAe;AAC9B,oBAAA,cAAc,CAAC,gBAAgB;AAC/B,oBAAA,CAAC,CAAC;AACN,gBAAA,MAAM,YAAY,GAAW,IAAI,CAAC,GAAG,CACjC,OAAO;qBACF,KAAK,CACF,cAAc,CAAC,gBAAgB,EAC/B,cAAc,CAAC,eAAe,CACjC;qBACA,MAAM,CACH,CAAC,GAAG,EAAE,KAAK,KACP,GAAG;AACH,oBAAA,KAAK,CAAC,iBAAiB;wBACnB,kBAAkB,CAAC,eAAe,EAC1C,CAAC,CACJ,EACL,IAAI,CACP,CAAC;;;gBAIF,MAAM,wBAAwB,GAAa,aAAa;qBACnD,KAAK,CAAC,gBAAgB,CAAC;qBACvB,MAAM,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC;;AAGpC,gBAAA,MAAM,YAAY,GACd,gBAAgB,GAAG,IAAI,CAAC,yBAAyB;AAC7C,sBAAE,wBAAwB,CAAC,MAAM,CAC3B,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KACd,GAAG;AACH,wBAAA,IAAI,CAAC,GAAG,CACJ,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,WAAW;AAC9B,4BAAA,IAAI,CAAC,eAAe,EACxB,GAAG,CACN,EACL,CAAC,CACJ;AACH,sBAAE,IAAI,CAAC,GAAG,CACJ,YAAY,CAAC,MAAM,CACf,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,KACd,GAAG;wBACH,IAAI,CAAC,GAAG,CACJ,CAAC,CAAC,KAAK,GAAG,CAAC;6BACN,KAAK,CAAC,KAAK;AACR,iCAAC,IAAI;qCACA,8BAA8B;AAC/B,oCAAA,CAAC,CAAC,CAAC;AACX,4BAAA,WAAW;4BACX,IAAI,CAAC,eAAe,EACxB,GAAG,CACN,EACL,CAAC,CACJ,EACD,GAAG,CACN,CAAC;;AAGZ,gBAAA,MAAM,YAAY,GACd,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AAE1D,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;oBAClB,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC;oBACvC,YAAY;oBACZ,YAAY;AACf,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;KACJ;AAED;;AAEG;IACK,qBAAqB,GAAA;AACzB,QAAA,QACI,CAAC;AACD,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,CAAC,KACD,CAAC;gBACD,KAAK;oBACD,IAAI,CAAC,GAAG,CACJ,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,EAChD,IAAI,CACP,EACT,CAAC,CACJ,EACH;KACL;;;ACthCL;;AAEG;MACU,gBAAgB,CAAA;AACzB;;AAEG;AACH,IAAA,mBAAmB,CAAS;AAE5B;;AAEG;AACH,IAAA,iBAAiB,CAAS;AAE1B;;AAEG;AACH,IAAA,eAAe,CAAS;AAExB;;AAEG;IACH,aAAa,GAAY,KAAK,CAAC;AAE/B;;AAEG;AACM,IAAA,MAAM,CAAqD;AAEpE;;;;;AAKG;AACH,IAAA,WAAA,CACI,MAA0D,EAC1D,mBAA2B,EAC3B,iBAAyB,EACzB,eAAuB,EAAA;AAEvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AAC/C,QAAA,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;AAC3C,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KAC1C;AACJ;;ACGD;;AAEG;MACU,cAAc,CAAA;AACvB;;AAEG;AACM,IAAA,UAAU,CAEsB;AAEzC;;AAEG;AACM,IAAA,IAAI,CAAa;AAE1B;;AAEG;IACc,iBAAiB,GAAuB,EAAE,CAAC;AAE5D;;AAEG;AACc,IAAA,SAAS,CAAiB;AAE3C;;;;;AAKG;IACc,mBAAmB,GAAW,CAAC,CAAC;AAEjD;;;AAGG;IACH,WACI,CAAA,UAEwC,EACxC,IAAgB,EAAA;AAEhB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7B,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AAEjB,QAAA,MAAM,KAAK,GAAa,IAAII,gBAAQ,CAAC;YACjC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AACzC,YAAA,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAC7B,CAAC,CAAC,KACE,CAACC,eAAO,CAAC,iBAAiB;iBACrB,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;AACzB,iBAAA,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CACnC;SACJ,CAAC,CAAC,SAAS,EAAE,CAAC;QAEf,IAAI,CAAC,SAAS,GAAG,IAAIC,sBAAc,CAAC,KAAK,CAAC,EAAG,CAAC,CAAC;KAClD;AAED;;AAEG;IACH,KAAK,GAAA;QACD,IACI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3D,MAAM,IAAI,CAAC,EAClB;YACE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;AAChD,SAAA;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,MAAM,OAAO,GAAaM,aAAK,CAAC,eAAe,CAC3C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAC/B,CAAC,CACJ,CAAC;AAEF,QAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACzC,YAAA,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACzC,SAAA;QAED,OAAO;AACH,YAAA,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;AAClD,YAAA,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACrC,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAC/B;SACJ,CAAC;KACL;AAED;;AAEG;IACK,eAAe,GAAA;AACnB,QAAA,MAAM,eAAe,GAAW,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAa,EAAE,CAAC;AAE7B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACrD,MAAM,gBAAgB,GAAqB,IAAI,CAAC,mBAAmB,CAC/D,CAAC,EACD,eAAe,CAClB,CAAC;AAEF,YAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;AACnD,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACjD,SAAA;AAED,QAAA,MAAM,WAAW,GAAaA,aAAK,CAAC,eAAe,CAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAC/B,CAAC,CACJ,CAAC;AACF,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBACd,SAAS;AACZ,aAAA;AACD,YAAA,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;AACxB,SAAA;AAED,QAAA,MAAM,eAAe,GACjB,WAAW,CAAC,MAAM,GAAG,CAAC;AAClB,cAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;cAC7C,CAAC,CAAC;QACZ,MAAM,oBAAoB,GAAa,EAAE,CAAC;AAC1C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACzC,YAAA,IACI,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB;gBACzC,CAAC,KAAK,eAAe,EACvB;AACE,gBAAA,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,aAAA;AACJ,SAAA;;;QAID,IAAI,0BAA0B,GAC1B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AAExC,QAAA,OAAO,0BAA0B,GAAG,CAAC,EAAE,EAAE,0BAA0B,EAAE;YACjE,IACI,WAAW,CAAC,0BAA0B,CAAC;AACnC,gBAAA,IAAI,CAAC,mBAAmB;AAC5B,gBAAA,CAAC,oBAAoB,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAC5D;gBACE,MAAM;AACT,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC,KAAI;AACnD,YAAA,IACI,gBAAgB,CAAC,mBAAmB,KAAK,CAAC,CAAC;AAC3C,gBAAA,gBAAgB,CAAC,iBAAiB,KAAK,CAAC,CAAC,EAC3C;AACE,gBAAA,gBAAgB,CAAC,mBAAmB,GAAG,eAAe,CAAC;AACvD,gBAAA,gBAAgB,CAAC,iBAAiB,GAAG,eAAe,CAAC;AACxD,aAAA;YAED,IACI,oBAAoB,CAAC,QAAQ,CACzB,gBAAgB,CAAC,mBAAmB,CACvC,EACH;AACE,gBAAA,gBAAgB,CAAC,mBAAmB;AAChC,oBAAA,0BAA0B,CAAC;AAClC,aAAA;;;AAID,YAAA,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,YAAYC,cAAM,EAAE;gBAClD,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CACrD,gBAAgB,EAChB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAC1B,eAAe,CAClB,CAAC;AACL,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACtD,YAAA,OAAO,CAAC,GAAG,CACP,OAAO,EACP,CAAC,EACD,QAAQ,EACR,IAAI,CAAC,iBAAiB,CAAC,MAAM,CACzB,CAAC,CAAC,KAAK,CAAC,CAAC,mBAAmB,KAAK,CAAC,CACrC,CAAC,MAAM,CACX,CAAC;AACL,SAAA;KACJ;AAED;;AAEG;IACK,kBAAkB,GAAA;QACtB,MAAM,UAAU,GAAa,EAAE,CAAC;AAEhC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtD,MAAM,CAAC,GAAe,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAElD,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,gBAAA,IACI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;AACrB,oBAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;AACnD,wBAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,EACrC;oBACE,SAAS;AACZ,iBAAA;AAED,gBAAA,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,KAAKX,oBAAY,CAAC,IAAI,EAAE;oBAC3C,SAAS;AACZ,iBAAA;gBAED,MAAM,SAAS,GACX,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;gBAE7D,IAAI,SAAS,GAAG,CAAC,EAAE;AACf,oBAAA,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC9B,iBAAA;AACJ,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;KAClC;AAED;;;;;;AAMG;IACK,mBAAmB,CACvB,KAAa,EACb,eAAuB,EAAA;QAEvB,MAAM,MAAM,GACR,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAqB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAE9D,QAAA,IACI,MAAM,CAAC,MAAM,YAAYQ,eAAO;AAChC,YAAA,IAAI,CAAC,MAAM,KAAKT,iBAAS,CAAC,QAAQ,EACpC;AACE,YAAA,OAAO,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,SAAA;AAED,QAAA,MAAM,SAAS,GAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CACnD,CAAC,CAAC,KAAK,CAAC,YAAYM,kBAAU,CACjC,CAAC;;QAGF,IAAI,eAAe,GAAW,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACvE,IAAI,EAAE,MAAM,CAAC,MAAM,YAAYM,cAAM,CAAC,EAAE;YACpC,QAAQ,IAAI,CAAC,MAAM;gBACf,KAAKZ,iBAAS,CAAC,UAAU;oBACrB,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC5D,MAAM;gBACV,KAAKA,iBAAS,CAAC,UAAU;oBACrB,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC5D,MAAM;AACb,aAAA;AACJ,SAAA;AAED,QAAA,MAAM,SAAS,GAAW,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;AAClD,QAAA,MAAM,OAAO,GAAW,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;AAClD,QAAA,MAAM,cAAc,GAChB,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;AAClD,QAAA,MAAM,cAAc,GAChB,SAAS,GAAG,eAAe,GAAG,eAAe,CAAC;QAClD,MAAM,kBAAkB,GAAwB,EAAE,CAAC;AAEnD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACtD,MAAM,CAAC,GAAe,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAElD,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC5B,SAAS;AACZ,aAAA;AAED,YAAA,IAAI,kBAAkB,GAClBO,iBAAS,CAAC,KAAK,CACX,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,cAAc,CAAC,EACxD,CAAC,EACD,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAC3B,GAAG,CAAC,CAAC;AACV,YAAA,IAAI,iBAAiB,GAAW,CAAC,CAAC,WAAW,CAAC,SAAS;;;YAGnD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CACnE,CAAC;AAEF,YAAA,IAAI,iBAAiB,KAAK,CAAC,CAAC,EAAE;;;AAG1B,gBAAA,iBAAiB,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC;AAC5C,aAAA;AAED,YAAA,EAAE,iBAAiB,CAAC;;;AAIpB,YAAA,OACI,CAAC,CAAC,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI;gBACnC,CAAC,CAAC,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC,EAAE,IAAI;gBAC/C,kBAAkB,GAAG,CAAC,EACxB;AACE,gBAAA,EAAE,kBAAkB,CAAC;AACxB,aAAA;;;AAID,YAAA,IAAI,QAAQ,GAAW,MAAM,CAAC,iBAAiB,CAAC;YAEhD,IAAI,CAAC,GAAW,kBAAkB,CAAC;YAEnC,KAAK,CAAC,EAAE,CAAC,IAAI,iBAAiB,EAAE,EAAE,CAAC,EAAE;gBACjC,MAAM,UAAU,GAAqB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACtD,MAAM,cAAc,GAAqB,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9D,gBAAA,MAAM,cAAc,GAAY,UAAU,CAAC,QAAQ,CAAC;AAEpD,gBAAA,IACI,UAAU,CAAC,IAAI,GAAG,cAAc;AAChC,oBAAA,cAAc,EAAE,EAAE,KAAKN,oBAAY,CAAC,IAAI,EAC1C;oBACE,SAAS;AACZ,iBAAA;AAED,gBAAA,IAAI,UAAU,CAAC,IAAI,GAAG,OAAO,GAAG,eAAe,EAAE;;AAE7C,oBAAA,IAAI,UAAU,CAAC,EAAE,KAAKA,oBAAY,CAAC,EAAE,EAAE;AACnC,wBAAA,QAAQ,GAAG,IAAI,CAAC,GAAG,CACf,QAAQ,EACR,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CACrC,cAAc,CACjB,CACJ,CAAC;AACL,qBAAA;oBACD,MAAM;AACT,iBAAA;AAED,gBAAA,IAAI,UAAU,CAAC,EAAE,KAAKA,oBAAY,CAAC,EAAE,EAAE;oBACnC,SAAS;AACZ,iBAAA;gBAED,QAAQ;oBACJ,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAE9D,gBAAA,IACI,cAAc,EAAE,EAAE,KAAKA,oBAAY,CAAC,IAAI;AACxC,oBAAA,UAAU,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI;oBACvC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EACtD;;;AAGE,oBAAA,MAAM,YAAY,GAAY,cAAc,CAAC,QAAQ,CAAC;oBAEtD,MAAM,YAAY,GACd,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE1C,oBAAA,KACI,IAAI,UAAU,GAAG,IAAI,CAAC,GAAG,CACrB,cAAc,EACd,UAAU,CAAC,IAAI,CAClB,EACD,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,EACpD,EAAE,UAAU,EACd;wBACE,MAAM,QAAQ,GACV,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI;6BAC5B,cAAc,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;wBAE5C,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,CAChD,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACnD,CAAC;AACL,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBACjC,SAAS;AACZ,aAAA;;;;;;;;;;YAaD,IAAI,SAAS,GAAY,KAAK,CAAC;;YAG/B,OACI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,KAAKA,oBAAY,CAAC,EAAE;gBACxC,CAAC,GAAG,kBAAkB,EACxB;AACE,gBAAA,EAAE,CAAC,CAAC;AACP,aAAA;AAED,YAAA,IAAI,MAAM,CAAC,MAAM,YAAYO,cAAM,EAAE;;;gBAGjC,OACI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,KAAKP,oBAAY,CAAC,IAAI;oBAC1C,CAAC,GAAG,kBAAkB,EACxB;AACE,oBAAA,EAAE,CAAC,CAAC;AACP,iBAAA;AACJ,aAAA;;;AAID,YAAA,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,KAAKA,oBAAY,CAAC,EAAE,EAAE;AAC1C,gBAAA,EAAE,CAAC,CAAC;AACP,aAAA;;;;;;;;;;;;;;;;;;;AAwBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CI;;YAGJ,IAAI,iBAAiB,GAAW,CAAC,CAAC;AAClC,YAAA,MAAM,IAAI,GACN,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAEvC,YAAA,IAAI,IAAI,EAAE;;;AAGN,gBAAA,MAAM,QAAQ,GACV,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAEvC,gBAAA,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAE1C,IAAI,EAAE,IAAI,CAAC,MAAM,YAAYQ,eAAO,CAAC,EAAE;AACnC,oBAAA,iBAAiB,IAAI,QAAQ,CAAC,QAAQ,CAAC;AAC1C,iBAAA;AAED,gBAAA,IAAI,IAAI,CAAC,MAAM,YAAYG,cAAM,EAAE;AAC/B,oBAAA,iBAAiB,GAAG,IAAI,CAAC,GAAG,CACxB,iBAAiB,EACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;AACL,iBAAA;AACJ,aAAA;YAED,IAAI,oBAAoB,GAAW,iBAAiB,CAAC;AAErD,YAAA,OACI,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,EAAE,IAAI;gBACrC,iBAAiB;gBACrB,oBAAoB,GAAG,CAAC,EAC1B;AACE,gBAAA,EAAE,oBAAoB,CAAC;AAC1B,aAAA;;;AAID,YAAA,EAAE,oBAAoB,CAAC;AAEvB,YAAA,MAAM,eAAe,GAAuB,CAAC,CAAC,WAAW,CAAC,KAAK,CAC3D,oBAAoB,EACpB,iBAAiB,CACpB,CAAC;YAEF,SAAS;gBACL,eAAe,CAAC,MAAM,GAAG,CAAC;;;oBAG1B,eAAe;yBACV,EAAE,CAAC,CAAC,CAAC,CAAE;yBACP,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;wBACpD,MAAM,CAAC,MAAM,CAAC,MAAM;AACxB,oBAAA,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAKX,oBAAY,CAAC,IAAI,CAAC,CAAC;YAE7D,kBAAkB,CAAC,IAAI,CAAC;;;gBAGpB,mBAAmB,6BAA6B,SAAS;sBACnD,CAAC,CAAC;AACJ,sBAAE,CAAC;AACP,gBAAA,iBAAiB,EAAE,CAAC;AACpB,gBAAA,eAAe,EAAE,CAAC;AAClB,gBAAA,YAAY,EAAE,QAAQ;AACzB,aAAA,CAAC,CAAC;AACN,SAAA;;;QAID,MAAM,eAAe,GAAW,IAAI,CAAC,GAAG,CACpC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CACnD,CAAC;AACF,QAAA,MAAM,yBAAyB,GAC3B,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,eAAe,CAAC,CAAC;QAEvE,OAAO,IAAI,gBAAgB,CACvB,MAAM,EACN,yBAAyB,EAAE,mBAAmB,IAAI,CAAC,CAAC,EACpD,yBAAyB,EAAE,iBAAiB,IAAI,CAAC,CAAC,EAClD,yBAAyB,EAAE,eAAe,IAAI,CAAC,CAAC,CACnD,CAAC;KACL;AAED;;;;;;;;;;AAUG;AACK,IAAA,mBAAmB,CACvB,gBAAkC,EAClC,OAAyB,EACzB,eAAuB,EAAA;QAEvB,IACI,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,YAAYW,cAAM,CAAC;AACnD,YAAA,OAAO,CAAC,MAAM,KAAKZ,iBAAS,CAAC,QAAQ,EACvC;AACE,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,eAAe,GAAW,IAAI,CAAC,GAAG,CAClC,CAAC,EACD,gBAAgB,CAAC,eAAe,CACnC,CAAC;AACF,QAAA,MAAM,CAAC,GACH,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAEjE,MAAM,gBAAgB,GAClB,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;AAEhD,QAAA,KACI,IAAI,CAAC,GAAG,CAAC,EACT,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAC1D,EAAE,CAAC,EACL;YACE,MAAM,UAAU,GAAY,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAEnD,IAAI,CAAC,UAAU,EAAE;gBACb,SAAS;AACZ,aAAA;AAED,YAAA,MAAM,MAAM,GACR,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,eAAe,CAAC;YAExB,IAAI,aAAa,GAAY,KAAK,CAAC;AAEnC,YAAA,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AACnC,gBAAA,IACI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;AACrB,oBAAA,MAAM,CAAC,SAAS,GAAG,eAAe,EACpC;oBACE,SAAS;AACZ,iBAAA;AAED,gBAAA,IACI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;AACrB,oBAAA,MAAM,CAAC,SAAS,GAAG,eAAe,EACpC;oBACE,MAAM;AACT,iBAAA;AAED,gBAAA,IACI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CACjC,MAAM,CAAC,eAAe,CACzB,IAAI,gBAAgB,EACvB;oBACE,aAAa,GAAG,IAAI,CAAC;oBAErB,MAAM;AACT,iBAAA;AACJ,aAAA;YAED,IAAI,CAAC,aAAa,EAAE;AAChB,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;YAED,eAAe,GAAG,CAAC,CAAC;AACvB,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KAChB;AAED;;AAEG;IACK,YAAY,GAAA;AAChB,QAAA,MAAM,QAAQ,GAAc,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE;AAClC,gBAAA,MAAM,GAAG,GAAYW,aAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE7D,gBAAA,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AAEvB,gBAAA,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,GAAG,CAAC;AACzC,aAAA;AAED,YAAA,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACpE,SAAC,CAAC,CAAC;;AAGH,QAAA,MAAM,eAAe,GAKf,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI;YACpC,OAAO;gBACH,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;gBACtC,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;aACvC,CAAC;AACN,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAEnC,QAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;YACzB,IAAI,CAAC,OAAO,EAAE;gBACV,OAAO;AACV,aAAA;YAED,MAAM,oBAAoB,GAEiB,MAAM,CAAC,MAAM,CACpDA,aAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAC/B,EAAE,OAAO,EAAE,OAAO,EAAE,CACvB,CAAC;YACF,oBAAoB,CAAC,4BAA4B,EAAE,CAAC;AACpD,YAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;AACrC,gBAAA,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;oBACzC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/C,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CACjD,EAAE,EACF,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAC5C,CAAC;AACuD,YAAA,CACrD,IAAI,CAAC,UAAU,CAAC,OAAO,EACxB,IAAI,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC7C,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;;AAGlE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YACrD,MAAM,UAAU,GAEqB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChE,MAAM,gBAAgB,GAClB,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAE9B,YAAA,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AAE1C,YAAA,UAAU,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC;AACpD,YAAA,UAAU,CAAC,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC;AAChE,YAAA,UAAU,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;AACtD,YAAA,UAAU,CAAC,gBAAgB,GAAG,cAAc,CAAC,gBAAgB,CAAC;;YAG9D,IAAI,gBAAgB,CAAC,aAAa,EAAE;AAChC,gBAAA,UAAU,CAAC,cAAc,GAAG,CAAC,CAAC;AACjC,aAAA;AACJ,SAAA;;AAGD,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;KACpC;AACJ;;AC5vBD;;;;;;AAMG;MACU,cAAc,CAAA;AACvB;;AAEG;AACH,IAAA,OAAO,CAAS;AAEhB;;AAEG;IACH,WAAW,GAAkB,IAAI,CAAC;AAElC;;AAEG;IACH,QAAQ,GAAkB,IAAI,CAAC;AAE/B;;AAEG;AACH,IAAA,SAAS,CAAW;AAEpB;;AAEG;AACH,IAAA,OAAO,CAAW;AAElB;;AAEG;AACH,IAAA,OAAO,CAGkC;AAEzC;;AAEG;IACH,IAAI,GAAsB,IAAI,CAAC;AAE/B;;AAEG;IACH,UAAU,GAAW,CAAC,CAAC;AAEvB;;AAEG;IACH,UAAU,GAAW,CAAC,CAAC;AAEvB;;AAEG;IACH,wBAAwB,GAAY,KAAK,CAAC;AAE1C;;AAEG;IACH,sBAAsB,GAAY,KAAK,CAAC;AAExC;;;;AAIG;IACH,oBAAoB,GAAa,EAAE,CAAC;;IAGnB,WAAW,GAAW,CAAC,CAAC;IACxB,YAAY,GAAW,CAAC,CAAC;IACzB,UAAU,GAAW,CAAC,CAAC;IACvB,YAAY,GAAW,CAAC,CAAC;IACzB,WAAW,GAAW,CAAC,CAAC;AAEzC,IAAA,WAAA,CAAY,MAeX,EAAA;AACG,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;KAC7B;AAED;;AAEG;AACH,IAAA,MAAM,OAAO,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAClD,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,MAAK;AAC/C,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;AACN,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAChB,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,OAAO,IAAI,CAAC;KACf;AAED;;AAEG;AACK,IAAA,MAAM,cAAc,GAAA;AACxB,QAAA,MAAM,iBAAiB,GACnB,IAAIE,8BAAsB,EAAE;aACvB,gBAAgB,CAAC,KAAK,CAAC;aACvB,WAAW,CAAC,QAAQ,CAAC;aACrB,YAAY,CAAC,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,OAAO,CAAM,IAAA,CAAA,CAAC,CAAC;AAEjD,QAAA,MAAM,MAAM,GAAoB,MAAM,iBAAiB,CAAC,WAAW,EAAE,CAAC;AAEtE,QAAA,IAAI,MAAM,CAAC,UAAU,KAAK,GAAG,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;QAED,OAAO,MAAM,CAAC,IAAI,CAAC;KACtB;AAED;;;;AAIG;IACK,UAAU,GAAA;QACd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACnC,YAAA,MAAMC,QAAM,GAAa,IAAIC,eAAQ,EAAE,CAAC;AACxC,YAAAD,QAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9B,YAAAA,QAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClBA,QAAM;iBACD,IAAI,CAACE,cAAK,EAAE,CAAC;AACb,iBAAA,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAI;AACzB,gBAAA,MAAM,QAAQ,GAAW,KAAK,CAAC,IAAI,CAAC;gBACpC,IAAI,QAAQ,KAAK,MAAM,EAAE;oBACrB,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,iBAAA;AAAM,qBAAA;oBACH,KAAK,CAAC,SAAS,EAAE,CAAC;AACrB,iBAAA;AACL,aAAC,CAAC;AACD,iBAAA,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;gBACf,UAAU,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AACtC,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACK,WAAW,GAAA;;;;AAIf,QAAA,IAAI,SAAgB,CAAC;QACrB,IAAI;YACA,SAAS,GAAGC,8BAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxD,SAAA;QAAC,MAAM;YACJ,OAAO;AACV,SAAA;AAED,QAAA,MAAM,YAAY,GAAsB;AACpC,YAAA,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO;AACnC,YAAA,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;AACxB,YAAA,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AACtB,YAAA,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AAClB,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,aAAa,EAAE,EAAE;SACpB,CAAC;AAEF,QAAA,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,EAAE;AACjC,YAAA,YAAY,CAAC,IAAI,GAAG,IAAI,IAAI,CACxB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAC1C,CAAC;AACF,YAAA,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AACnD,YAAA,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACpD,YAAA,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAClD,YAAA,YAAY,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AACrD,YAAA,YAAY,CAAC,QAAQ,GAAG,IAAIf,gBAAQ,CAAC;gBACjC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;gBACjC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;AACtC,aAAA,CAAC,CAAC;AACH,YAAA,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,YAAA,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvC,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC7C,YAAA,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CACzC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CACxB,CAAC;;AAGF,YAAA,MAAM,SAAS,GACX,YAAY,CAAC,QAAQ,CAAC,IAAI;gBAC1B,YAAY,CAAC,QAAQ,CAAC,IAAI;gBAC1B,YAAY,CAAC,QAAQ,CAAC,GAAG;AACzB,gBAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChC,MAAM,QAAQ,GAAY,YAAY,CAAC,aAAa,CAAC,IAAI,CACrD,CAAC,CAAC,KAAK,CAAC,YAAYgB,iBAAS,IAAI,CAAC,YAAYC,qBAAa,CAC9D,CAAC;YAEF,MAAM,WAAW,GAAW,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;AAEnE,YAAA,QAAQ,IAAI;AACR,gBAAA,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;AACpC,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,qBAAA;AAAM,yBAAA;AACH,wBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3B,qBAAA;oBACD,MAAM;gBACV,KAAK,WAAW,GAAG,GAAG;AAClB,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AAC5C,oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AAC5B,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,qBAAA;AAAM,yBAAA;AACH,wBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3B,qBAAA;oBACD,MAAM;gBACV,KAAK,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AACnD,oBAAA,WAAW,GAAG,GAAG;AACjB,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,MAAM;gBACV,KAAK,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AACnD,oBAAA,WAAW,GAAG,GAAG;AACjB,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,MAAM;gBACV,KAAK,WAAW,GAAG,GAAG;AAClB,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,MAAM;AACV,gBAAA;AACI,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AAC/B,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,EAAE;YACjC,MAAM,CAAC,GAAa,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,YAAA,YAAY,CAAC,iBAAiB;AAC1B,gBAAA,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,YAAA,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACd,gBAAA,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AAC9D,aAAA;AACJ,SAAA;AAED,QAAA,IAAI,WAAmB,CAAC;AACxB,QAAA,QAAQ,IAAI;;AAER,YAAA,KAAK,YAAY,CAAC,aAAa,IAAI,CAAC;gBAChC,WAAW,GAAG,CAAC,CAAC;gBAChB,MAAM;;AAEV,YAAA,KAAK,YAAY,CAAC,aAAa,KAAK,CAAC;gBACjC,WAAW,GAAG,CAAC,CAAC;gBAChB,MAAM;;AAEV,YAAA;gBACI,WAAW,GAAG,CAAC,CAAC;AACvB,SAAA;QAED,MAAM,qBAAqB,GAAa,EAAE,CAAC;QAC3C,KAAK,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE;YAC7D,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;AACtD,SAAA;;QAGD,MAAM,gBAAgB,GAAW,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtE,IAAI,aAAa,GAAW,CAAC,CAAC;QAE9B,MAAM,IAAI,GAAW,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACjE,QAAA,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC;;QAGjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YAC3B,MAAM,QAAQ,GACV,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAChD,YAAA,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC;YACjC,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAa,EAAE,CAAC;YACvB,MAAM,CAAC,GAAa,EAAE,CAAC;YACvB,MAAM,EAAE,GAAmB,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACtD,gBAAA,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC;gBACjC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACpB,gBAAA,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACd,IAAI,EAAE,CAAC,CAAC,CAAC,KAAKlB,oBAAY,CAAC,EAAE,EAAE;AAC3B,oBAAA,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,EAAE;wBACjC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,wBAAA,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;wBACnC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,wBAAA,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;AACtC,qBAAA;AAAM,yBAAA;wBACH,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,wBAAA,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;wBACnC,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACnD,wBAAA,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;AACtC,qBAAA;AACJ,iBAAA;AAAM,qBAAA;AACH,oBAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACV,oBAAA,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACb,iBAAA;AACJ,aAAA;AACD,YAAA,YAAY,CAAC,cAAc,CAAC,IAAI,CAC5B,IAAI,UAAU,CAAC;AACX,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,CAAC,EAAE,CAAC;AACJ,gBAAA,EAAE,EAAE,EAAE;AACT,aAAA,CAAC,CACL,CAAC;AACL,SAAA;QAED,MAAM,kBAAkB,GACpB,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAChD,QAAA,aAAa,IAAI,IAAI,CAAC,UAAU,CAAC;;QAGjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC,EAAE,EAAE;AACzC,YAAA,MAAM,gBAAgB,GAAqB;AACvC,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,OAAO,EAAE,EAAE;AACX,gBAAA,MAAM,EAAE,CAAC;aACZ,CAAC;AAEF,YAAA,gBAAgB,CAAC,QAAQ;AACrB,gBAAA,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AAChD,YAAA,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC;YACnC,MAAM,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AACrD,YAAA,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC;YAElC,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,MAAM,KAAK,GAAa,EAAE,CAAC;gBAE3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC1B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AACrD,oBAAA,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC;AACrC,iBAAA;;AAED,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,oBAAA,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;AACvB,wBAAA,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;6BAC9B,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC5B,4BAAA,CAAC,CAAC;AACT,iBAAA;AACJ,aAAA;AAED,YAAA,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,EAAE;AACjC,gBAAA,gBAAgB,CAAC,MAAM;AACnB,oBAAA,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC7C,gBAAA,aAAa,IAAI,IAAI,CAAC,WAAW,CAAC;AACrC,aAAA;AAED,YAAA,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACrD,SAAA;;QAGD,IAAI,YAAY,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChD,IAAI,MAAM,GAAW,CAAC,CAAC;YACvB,IAAI,OAAO,GAAW,CAAC,CAAC;YACxB,IAAI,MAAM,GAAW,CAAC,CAAC;YACvB,IAAI,OAAO,GAAW,CAAC,CAAC;YACxB,IAAI,KAAK,GAAW,CAAC,CAAC;YACtB,IAAI,IAAI,GAAW,CAAC,CAAC;YACrB,IAAI,gBAAgB,GAAY,IAAI,CAAC;AAErC,YAAA,MAAM,OAAO,GAAyB,CAClC,IAAI,CAAC,OAAO,YAAYmB,iDAAyB;gBACjD,IAAI,CAAC,OAAO,YAAYC,0DAAkC;AACtD,kBAAE,IAAI,CAAC,OAAO,CAAC,OAAO;kBACpB,IAAI,CAAC,OAAO,EACpB,UAAU,CAAC,OAAO,CAAC;AAErB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;gBAExD,MAAM,aAAa,GACf,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;gBAClC,MAAM,cAAc,GAChB,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEhE,QAAQ,aAAa,CAAC,MAAM;oBACxB,KAAKrB,iBAAS,CAAC,QAAQ;AACnB,wBAAA,EAAE,IAAI,CAAC;wBACP,gBAAgB,GAAG,KAAK,CAAC;wBACzB,MAAM;oBACV,KAAKA,iBAAS,CAAC,SAAS;AACpB,wBAAA,EAAE,KAAK,CAAC;wBACR,gBAAgB,GAAG,KAAK,CAAC;wBACzB,MAAM;oBACV,KAAKA,iBAAS,CAAC,UAAU;AACrB,wBAAA,EAAE,MAAM,CAAC;wBACT,IAAI,gBAAgB,IAAI,cAAc,EAAE;AACpC,4BAAA,EAAE,OAAO,CAAC;AACb,yBAAA;wBACD,MAAM;oBACV,KAAKA,iBAAS,CAAC,UAAU;AACrB,wBAAA,EAAE,MAAM,CAAC;wBACT,IAAI,gBAAgB,IAAI,cAAc,EAAE;AACpC,4BAAA,EAAE,OAAO,CAAC;AACb,yBAAA;wBACD,MAAM;AACb,iBAAA;AAED,gBAAA,IAAI,cAAc,EAAE;oBAChB,gBAAgB,GAAG,IAAI,CAAC;AAC3B,iBAAA;AACJ,aAAA;AAED,YAAA,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;AAC/B,YAAA,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;AAE/B,YAAA,YAAY,CAAC,QAAQ,GAAG,IAAIE,gBAAQ,CAAC;AACjC,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,GAAG,EAAE,KAAK;AACV,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;AAC3C,aAAA,CAAC,CAAC;;AAGH,YAAA,MAAM,SAAS,GACX,YAAY,CAAC,QAAQ,CAAC,IAAI;gBAC1B,YAAY,CAAC,QAAQ,CAAC,IAAI;gBAC1B,YAAY,CAAC,QAAQ,CAAC,GAAG;AACzB,gBAAA,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChC,MAAM,QAAQ,GACV,YAAY,CAAC,aAAa,EAAE,IAAI,CAC5B,CAAC,CAAC,KAAK,CAAC,YAAYgB,iBAAS,IAAI,CAAC,YAAYC,qBAAa,CAC9D,IAAI,KAAK,CAAC;YAEf,MAAM,WAAW,GAAW,YAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;AAEnE,YAAA,QAAQ,IAAI;AACR,gBAAA,KAAK,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;AACpC,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,qBAAA;AAAM,yBAAA;AACH,wBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3B,qBAAA;oBACD,MAAM;gBACV,KAAK,WAAW,GAAG,GAAG;AAClB,oBAAA,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;AAC5C,oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AAC5B,oBAAA,IAAI,QAAQ,EAAE;AACV,wBAAA,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,qBAAA;AAAM,yBAAA;AACH,wBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AAC3B,qBAAA;oBACD,MAAM;gBACV,KAAK,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AACnD,oBAAA,WAAW,GAAG,GAAG;AACjB,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,MAAM;gBACV,KAAK,CAAC,WAAW,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK;AACnD,oBAAA,WAAW,GAAG,GAAG;AACjB,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,MAAM;gBACV,KAAK,WAAW,GAAG,GAAG;AAClB,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;oBACxB,MAAM;AACV,gBAAA;AACI,oBAAA,YAAY,CAAC,IAAI,GAAG,GAAG,CAAC;AAC/B,aAAA;AACJ,SAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;KAC5C;AAED;;;;AAIG;IACH,iBAAiB,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAC7B,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;AAED,QAAA,MAAM,aAAa,GAAuB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,aAAa,GAAW,CAAC,CAAC;QAC9B,IAAI,aAAa,GAAW,CAAC,CAAC;QAC9B,IAAI,aAAa,GAAW,CAAC,CAAC;QAC9B,IAAI,aAAa,GAAW,CAAC,CAAC;AAE9B,QAAA,MAAM,OAAO,GAAyB,CAClC,IAAI,CAAC,OAAO,YAAYC,iDAAyB;YACjD,IAAI,CAAC,OAAO,YAAYC,0DAAkC;AACtD,cAAE,IAAI,CAAC,OAAO,CAAC,OAAO;cACpB,IAAI,CAAC,OAAO,EACpB,UAAU,CAAC,OAAO,CAAC;AAErB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;AAC3C,YAAA,MAAM,CAAC,GAAqB,aAAa,CAAC,CAAC,CAAC,CAAC;AAC7C,YAAA,MAAM,CAAC,GAAc,OAAO,CAAC,CAAC,CAAC,CAAC;YAEhC,IAAI,CAAC,YAAYZ,eAAO,IAAI,CAAC,CAAC,MAAM,KAAKT,iBAAS,CAAC,QAAQ,EAAE;gBACzD,SAAS;AACZ,aAAA;AAED,YAAA,MAAM,QAAQ,GAAW,CAAC,CAAC,QAAQ,CAAC;YAEpC,IAAI,QAAQ,IAAI,CAAC,EAAE;gBACf,aAAa,IAAI,QAAQ,CAAC;AAC1B,gBAAA,EAAE,aAAa,CAAC;AACnB,aAAA;AAAM,iBAAA;gBACH,aAAa,IAAI,QAAQ,CAAC;AAC1B,gBAAA,EAAE,aAAa,CAAC;AACnB,aAAA;AACJ,SAAA;QAED,OAAO;AACH,YAAA,WAAW,EAAE,aAAa,GAAG,aAAa,IAAI,CAAC;AAC/C,YAAA,WAAW,EAAE,aAAa,GAAG,aAAa,IAAI,CAAC;YAC/C,YAAY,EACRO,iBAAS,CAAC,0BAA0B,CAChC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KACnB,CAAC,CAAC,MAAM,KAAKP,iBAAS,CAAC,QAAQ;AAC/B,gBAAA,EAAE,OAAO,CAAC,CAAC,CAAC,YAAYS,eAAO,CAAC;kBAC1B,CAAC,CAAC,QAAQ;AACZ,kBAAE,CAAC,CACV,CACJ,GAAG,EAAE;SACb,CAAC;KACL;AAED;;AAEG;AACK,IAAA,gBAAgB,CAAC,UAAoB,EAAA;AACzC,QAAA,MAAM,mBAAmB,GAAG;AACxB,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,UAAU,EAAE,GAAG;AACf,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,cAAc,EAAE,GAAG;AACnB,YAAA,YAAY,EAAE,GAAG;AACjB,YAAA,aAAa,EAAE,GAAG;AAClB,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,cAAc,EAAE,GAAG;AACnB,YAAA,WAAW,EAAE,GAAG;AAChB,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,WAAW,EAAE,GAAG;SACnB,CAAC;QAEF,IAAI,SAAS,GAAW,EAAE,CAAC;AAC3B,QAAA,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE;AAC1B,YAAA,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE;AACxC,gBAAA,IAAI,EAAE,QAAQ,IAAI,mBAAmB,CAAC,EAAE;oBACpC,SAAS;AACZ,iBAAA;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;oBACzB,SAAS;AACZ,iBAAA;gBACD,SAAS;oBACL,mBAAmB,CACf,QAA4C,CAC/C,CAAC;gBACN,MAAM;AACT,aAAA;AACJ,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KACpB;AAED;;AAEG;AACK,IAAA,WAAW,CAAC,UAAoB,EAAA;QACpC,OAAOL,eAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;KACvE;AAED;;;;AAIG;IACH,eAAe,GAAA;AACX,QAAA,IACI,EACI,IAAI,CAAC,OAAO,YAAYgB,iDAAyB;AACjD,YAAA,IAAI,CAAC,OAAO,YAAYC,0DAAkC,CAC7D;YACD,CAAC,IAAI,CAAC,IAAI,EACZ;YACE,OAAO;AACV,SAAA;AAED,QAAA,MAAM,kBAAkB,GAAuB,IAAI,kBAAkB,CACjE,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,CACZ,CAAC;AACF,QAAA,MAAM,MAAM,GAA2B,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAElE,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;AACjC,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;KACxC;AAED;;;;AAIG;IACH,aAAa,GAAA;AACT,QAAA,IACI,EACI,IAAI,CAAC,OAAO,YAAYD,iDAAyB;AACjD,YAAA,IAAI,CAAC,OAAO,YAAYC,0DAAkC,CAC7D;YACD,CAAC,IAAI,CAAC,IAAI,EACZ;YACE,OAAO;AACV,SAAA;AAED,QAAA,MAAM,cAAc,GAAmB,IAAI,cAAc,CACrD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,CACZ,CAAC;AACF,QAAA,MAAM,MAAM,GAAuB,cAAc,CAAC,KAAK,EAAE,CAAC;AAE1D,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,aAAa,CAAC;AACjD,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACtC;AACJ;;AC5qBD;;;;;;AAMG;MACU,gBAAgB,CAAA;AACzB;;AAEG;AACH,IAAA,QAAQ,CAAS;AAEjB;;;;AAIG;AACH,IAAA,OAAO,CAAY;AAEnB;;AAEG;AACH,IAAA,MAAM,CAAY;AAElB,IAAA,WAAA,CAAY,MAiBX,EAAA;AACG,QAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAChC,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC9B,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;KAC/B;AACJ;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rian8337/osu-droid-replay-analyzer",
3
- "version": "2.0.0-alpha.8",
3
+ "version": "2.0.1",
4
4
  "description": "A replay analyzer for analyzing osu!droid replay files.",
5
5
  "keywords": [
6
6
  "osu",
@@ -31,9 +31,9 @@
31
31
  "url": "https://github.com/Rian8337/osu-droid-module/issues"
32
32
  },
33
33
  "dependencies": {
34
- "@rian8337/osu-base": "^2.0.0-alpha.8",
35
- "@rian8337/osu-difficulty-calculator": "^2.0.0-alpha.8",
36
- "@rian8337/osu-rebalance-difficulty-calculator": "^2.0.0-alpha.8",
34
+ "@rian8337/osu-base": "^2.0.1",
35
+ "@rian8337/osu-difficulty-calculator": "^2.0.1",
36
+ "@rian8337/osu-rebalance-difficulty-calculator": "^2.0.1",
37
37
  "java-deserialization": "^0.1.0",
38
38
  "unzipper": "^0.10.11"
39
39
  },
@@ -45,5 +45,5 @@
45
45
  "publishConfig": {
46
46
  "access": "public"
47
47
  },
48
- "gitHead": "6530b07d4403ea14fb5ef0892c41218e9efe5607"
48
+ "gitHead": "e48b38c17a7fd73c2cf286c5824b689697e61284"
49
49
  }
@@ -1,6 +1,6 @@
1
1
  import { Vector2, Accuracy, Mod, Beatmap } from '@rian8337/osu-base';
2
- import { DroidStarRating } from '@rian8337/osu-difficulty-calculator';
3
- import { DroidStarRating as DroidStarRating$1 } from '@rian8337/osu-rebalance-difficulty-calculator';
2
+ import { DroidDifficultyCalculator } from '@rian8337/osu-difficulty-calculator';
3
+ import { DroidDifficultyCalculator as DroidDifficultyCalculator$1 } from '@rian8337/osu-rebalance-difficulty-calculator';
4
4
 
5
5
  /**
6
6
  * Movement type of a cursor in an osu!droid replay.
@@ -392,7 +392,7 @@ declare class ReplayAnalyzer {
392
392
  /**
393
393
  * The beatmap that is being analyzed. `DroidStarRating` or `RebalanceDroidStarRating` is required for three finger or two hand analyzing.
394
394
  */
395
- map?: Beatmap | DroidStarRating | DroidStarRating$1;
395
+ beatmap?: Beatmap | DroidDifficultyCalculator | DroidDifficultyCalculator$1;
396
396
  /**
397
397
  * The results of the analyzer. `null` when initialized.
398
398
  */
@@ -413,6 +413,12 @@ declare class ReplayAnalyzer {
413
413
  * Whether this replay has been checked against 2 hand usage.
414
414
  */
415
415
  hasBeenCheckedFor2Hand: boolean;
416
+ /**
417
+ * The cursor indexes at which each object was hit.
418
+ *
419
+ * This is filled after 2 hand usage has been checked.
420
+ */
421
+ twoHandCursorIndexes: number[];
416
422
  private readonly BYTE_LENGTH;
417
423
  private readonly SHORT_LENGTH;
418
424
  private readonly INT_LENGTH;
@@ -428,7 +434,7 @@ declare class ReplayAnalyzer {
428
434
  *
429
435
  * `DroidStarRating` or `RebalanceDroidStarRating` is required for three finger or two hand analyzing.
430
436
  */
431
- map?: Beatmap | DroidStarRating | DroidStarRating$1;
437
+ map?: Beatmap | DroidDifficultyCalculator | DroidDifficultyCalculator$1;
432
438
  });
433
439
  /**
434
440
  * Analyzes a replay.
@@ -494,9 +500,9 @@ interface ThreeFingerInformation {
494
500
  */
495
501
  declare class ThreeFingerChecker {
496
502
  /**
497
- * The beatmap to analyze.
503
+ * The difficulty calculator that is being analyzed.
498
504
  */
499
- readonly map: DroidStarRating | DroidStarRating$1;
505
+ readonly calculator: DroidDifficultyCalculator | DroidDifficultyCalculator$1;
500
506
  /**
501
507
  * The data of the replay.
502
508
  */
@@ -584,14 +590,14 @@ declare class ThreeFingerChecker {
584
590
  */
585
591
  private readonly nerfFactors;
586
592
  /**
587
- * @param map The beatmap to analyze.
593
+ * @param calculator The difficulty calculator to analyze.
588
594
  * @param data The data of the replay.
589
595
  */
590
- constructor(map: DroidStarRating | DroidStarRating$1, data: ReplayData);
596
+ constructor(calculator: DroidDifficultyCalculator | DroidDifficultyCalculator$1, data: ReplayData);
591
597
  /**
592
598
  * Checks whether a beatmap is eligible to be detected for 3-finger.
593
599
  */
594
- static isEligibleToDetect(map: DroidStarRating | DroidStarRating$1): boolean;
600
+ static isEligibleToDetect(map: DroidDifficultyCalculator | DroidDifficultyCalculator$1): boolean;
595
601
  /**
596
602
  * Checks if the given beatmap is 3-fingered and also returns the final penalty.
597
603
  *