From 51de8cb25786cc87c61d7d501914488bc7ddaa08 Mon Sep 17 00:00:00 2001
From: Felipe Parodi <53239931+felipe-parodi@users.noreply.github.com>
Date: Thu, 5 Dec 2024 21:15:05 -0500
Subject: [PATCH 01/18] Fix COCO Dataset Loading for Invisible Keypoints
 (#2035)

Update coco.py

# Fix COCO Dataset Loading for Invisible Keypoints

## Issue
When loading COCO datasets, keypoints marked as invisible (flag=0) are currently skipped and later placed randomly within the instance's bounding box. However, in COCO format, these keypoints may still have valid coordinate information that should be preserved (see toy_dataset for expected vs. current behavior).

## Changes
Modified the COCO dataset loading logic to:
- Check if invisible keypoints (flag=0) have non-zero coordinates
- If coordinates are (0,0), skip the point (existing behavior)
- If coordinates are not (0,0), create the point at those coordinates but mark it as not visible
- Maintain existing behavior for visible (flag=2) and labeled
---
 sleap/io/format/coco.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/sleap/io/format/coco.py b/sleap/io/format/coco.py
index 25122e4d0..89b3a450c 100644
--- a/sleap/io/format/coco.py
+++ b/sleap/io/format/coco.py
@@ -180,6 +180,9 @@ def read(
 
                 if flag == 0:
                     # node not labeled for this instance
+                    if (x, y) != (0, 0): 
+                        # If labeled but invisible, place the node at the coord
+                        points[node] = Point(x, y, False)
                     continue
 
                 is_visible = flag == 2

From 089b48eccc9de728ed29eafb854236d02216bfb1 Mon Sep 17 00:00:00 2001
From: roomrys <38435167+roomrys@users.noreply.github.com>
Date: Mon, 9 Dec 2024 13:10:02 -0800
Subject: [PATCH 02/18] Lint

---
 sleap/io/format/coco.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sleap/io/format/coco.py b/sleap/io/format/coco.py
index 89b3a450c..44e7fb84a 100644
--- a/sleap/io/format/coco.py
+++ b/sleap/io/format/coco.py
@@ -180,7 +180,7 @@ def read(
 
                 if flag == 0:
                     # node not labeled for this instance
-                    if (x, y) != (0, 0): 
+                    if (x, y) != (0, 0):
                         # If labeled but invisible, place the node at the coord
                         points[node] = Point(x, y, False)
                     continue

From 3417a18641390909ee26665b4cb483a93fe1e009 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Mon, 16 Dec 2024 12:33:22 -0800
Subject: [PATCH 03/18] Add tracking score as seekbar header options (#2047)

* Add `tracking_score` as a constructor arg for `PredictedInstance`

* Add `tracking_score` to ID models

* Add fixture with tracking scores

* Add tracking score to seekbar header
---
 sleap/gui/app.py                       |   6 +++-
 sleap/info/summary.py                  |  44 +++++++++++++++++++++----
 sleap/instance.py                      |  27 +++++++++++++--
 sleap/nn/inference.py                  |  21 +++++++++---
 tests/data/tracks/clip.predictions.slp | Bin 0 -> 396184 bytes
 tests/fixtures/datasets.py             |  14 ++++++++
 tests/info/test_summary.py             |  15 ++++++++-
 7 files changed, 111 insertions(+), 16 deletions(-)
 create mode 100644 tests/data/tracks/clip.predictions.slp

diff --git a/sleap/gui/app.py b/sleap/gui/app.py
index 2dbceb3b7..0ead06b1e 100644
--- a/sleap/gui/app.py
+++ b/sleap/gui/app.py
@@ -873,6 +873,8 @@ def new_instance_menu_action():
             "Point Displacement (max)",
             "Primary Point Displacement (sum)",
             "Primary Point Displacement (max)",
+            "Tracking Score (mean)",
+            "Tracking Score (min)",
             "Instance Score (sum)",
             "Instance Score (min)",
             "Point Score (sum)",
@@ -1406,6 +1408,8 @@ def _set_seekbar_header(self, graph_name: str):
             "Point Displacement (max)": data_obj.get_point_displacement_series,
             "Primary Point Displacement (sum)": data_obj.get_primary_point_displacement_series,
             "Primary Point Displacement (max)": data_obj.get_primary_point_displacement_series,
+            "Tracking Score (mean)": data_obj.get_tracking_score_series,
+            "Tracking Score (min)": data_obj.get_tracking_score_series,
             "Instance Score (sum)": data_obj.get_instance_score_series,
             "Instance Score (min)": data_obj.get_instance_score_series,
             "Point Score (sum)": data_obj.get_point_score_series,
@@ -1419,7 +1423,7 @@ def _set_seekbar_header(self, graph_name: str):
         else:
             if graph_name in header_functions:
                 kwargs = dict(video=self.state["video"])
-                reduction_name = re.search("\\((sum|max|min)\\)", graph_name)
+                reduction_name = re.search("\\((sum|max|min|mean)\\)", graph_name)
                 if reduction_name is not None:
                     kwargs["reduction"] = reduction_name.group(1)
                 series = header_functions[graph_name](**kwargs)
diff --git a/sleap/info/summary.py b/sleap/info/summary.py
index c6a6af60e..0cad1617e 100644
--- a/sleap/info/summary.py
+++ b/sleap/info/summary.py
@@ -21,7 +21,7 @@ class StatisticSeries:
     are frame index and value are some numerical value for the frame.
 
     Args:
-        labels: The :class:`Labels` for which to calculate series.
+        labels: The `Labels` for which to calculate series.
     """
 
     labels: Labels
@@ -41,7 +41,7 @@ def get_point_score_series(
         """Get series with statistic of point scores in each frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to scores:
                 * sum
                 * min
@@ -67,7 +67,7 @@ def get_instance_score_series(self, video, reduction="sum") -> Dict[int, float]:
         """Get series with statistic of instance scores in each frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to scores:
                 * sum
                 * min
@@ -93,7 +93,7 @@ def get_point_displacement_series(self, video, reduction="sum") -> Dict[int, flo
         same track) from the closest earlier labeled frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to point scores:
                 * sum
                 * mean
@@ -121,7 +121,7 @@ def get_primary_point_displacement_series(
         Get sum of displacement for single node of each instance per frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to point scores:
                 * sum
                 * mean
@@ -226,7 +226,7 @@ def _calculate_frame_velocity(
         Calculate total point displacement between two given frames.
 
         Args:
-            lf: The :class:`LabeledFrame` for which we want velocity
+            lf: The `LabeledFrame` for which we want velocity
             last_lf: The frame from which to calculate displacement.
             reduce_function: Numpy function (e.g., np.sum, np.nanmean)
                 is applied to *point* displacement, and then those
@@ -246,3 +246,35 @@ def _calculate_frame_velocity(
                     inst_dist = reduce_function(point_dist)
                     val += inst_dist if not np.isnan(inst_dist) else 0
         return val
+
+    def get_tracking_score_series(
+        self, video: Video, reduction: str = "min"
+    ) -> Dict[int, float]:
+        """Get series with statistic of tracking scores in each frame.
+
+        Args:
+            video: The `Video` for which to calculate statistic.
+            reduction: name of function applied to scores:
+                * mean
+                * min
+
+        Returns:
+            The series dictionary (see class docs for details)
+        """
+        reduce_fn = {
+            "min": np.nanmin,
+            "mean": np.nanmean,
+        }[reduction]
+
+        series = dict()
+
+        for lf in self.labels.find(video):
+            vals = [
+                inst.tracking_score for inst in lf if hasattr(inst, "tracking_score")
+            ]
+            if vals:
+                val = reduce_fn(vals)
+                if not np.isnan(val):
+                    series[lf.frame_idx] = val
+
+        return series
diff --git a/sleap/instance.py b/sleap/instance.py
index 08a5c6ae6..382ececf2 100644
--- a/sleap/instance.py
+++ b/sleap/instance.py
@@ -1049,7 +1049,9 @@ def scores(self) -> np.ndarray:
         return self.points_and_scores_array[:, 2]
 
     @classmethod
-    def from_instance(cls, instance: Instance, score: float) -> "PredictedInstance":
+    def from_instance(
+        cls, instance: Instance, score: float, tracking_score: float = 0.0
+    ) -> "PredictedInstance":
         """Create a `PredictedInstance` from an `Instance`.
 
         The fields are copied in a shallow manner with the exception of points. For each
@@ -1059,6 +1061,7 @@ def from_instance(cls, instance: Instance, score: float) -> "PredictedInstance":
         Args:
             instance: The `Instance` object to shallow copy data from.
             score: The score for this instance.
+            tracking_score: The tracking score for this instance.
 
         Returns:
             A `PredictedInstance` for the given `Instance`.
@@ -1070,6 +1073,7 @@ def from_instance(cls, instance: Instance, score: float) -> "PredictedInstance":
         )
         kw_args["points"] = PredictedPointArray.from_array(instance._points)
         kw_args["score"] = score
+        kw_args["tracking_score"] = tracking_score
         return cls(**kw_args)
 
     @classmethod
@@ -1080,6 +1084,7 @@ def from_arrays(
         instance_score: float,
         skeleton: Skeleton,
         track: Optional[Track] = None,
+        tracking_score: float = 0.0,
     ) -> "PredictedInstance":
         """Create a predicted instance from data arrays.
 
@@ -1094,6 +1099,7 @@ def from_arrays(
             skeleton: A sleap.Skeleton instance with n_nodes nodes to associate with the
                 predicted instance.
             track: Optional `sleap.Track` to associate with the instance.
+            tracking_score: Optional float representing the track matching score.
 
         Returns:
             A new `PredictedInstance`.
@@ -1114,6 +1120,7 @@ def from_arrays(
             skeleton=skeleton,
             score=instance_score,
             track=track,
+            tracking_score=tracking_score,
         )
 
     @classmethod
@@ -1124,6 +1131,7 @@ def from_pointsarray(
         instance_score: float,
         skeleton: Skeleton,
         track: Optional[Track] = None,
+        tracking_score: float = 0.0,
     ) -> "PredictedInstance":
         """Create a predicted instance from data arrays.
 
@@ -1138,12 +1146,18 @@ def from_pointsarray(
             skeleton: A sleap.Skeleton instance with n_nodes nodes to associate with the
                 predicted instance.
             track: Optional `sleap.Track` to associate with the instance.
+            tracking_score: Optional float representing the track matching score.
 
         Returns:
             A new `PredictedInstance`.
         """
         return cls.from_arrays(
-            points, point_confidences, instance_score, skeleton, track=track
+            points,
+            point_confidences,
+            instance_score,
+            skeleton,
+            track=track,
+            tracking_score=tracking_score,
         )
 
     @classmethod
@@ -1154,6 +1168,7 @@ def from_numpy(
         instance_score: float,
         skeleton: Skeleton,
         track: Optional[Track] = None,
+        tracking_score: float = 0.0,
     ) -> "PredictedInstance":
         """Create a predicted instance from data arrays.
 
@@ -1168,12 +1183,18 @@ def from_numpy(
             skeleton: A sleap.Skeleton instance with n_nodes nodes to associate with the
                 predicted instance.
             track: Optional `sleap.Track` to associate with the instance.
+            tracking_score: Optional float representing the track matching score.
 
         Returns:
             A new `PredictedInstance`.
         """
         return cls.from_arrays(
-            points, point_confidences, instance_score, skeleton, track=track
+            points,
+            point_confidences,
+            instance_score,
+            skeleton,
+            track=track,
+            tracking_score=tracking_score,
         )
 
 
diff --git a/sleap/nn/inference.py b/sleap/nn/inference.py
index 14e0d5c6f..3f01a1c3c 100644
--- a/sleap/nn/inference.py
+++ b/sleap/nn/inference.py
@@ -3778,9 +3778,10 @@ def _object_builder():
                             PredictedInstance.from_numpy(
                                 points=pts,
                                 point_confidences=confs,
-                                instance_score=np.nanmean(score),
+                                instance_score=np.nanmean(confs),
                                 skeleton=skeleton,
                                 track=track,
+                                tracking_score=np.nanmean(score),
                             )
                         )
 
@@ -4452,18 +4453,27 @@ def _object_builder():
                     break
 
                 # Loop over frames.
-                for image, video_ind, frame_ind, points, confidences, scores in zip(
+                for (
+                    image,
+                    video_ind,
+                    frame_ind,
+                    centroid_vals,
+                    points,
+                    confidences,
+                    scores,
+                ) in zip(
                     ex["image"],
                     ex["video_ind"],
                     ex["frame_ind"],
+                    ex["centroid_vals"],
                     ex["instance_peaks"],
                     ex["instance_peak_vals"],
                     ex["instance_scores"],
                 ):
                     # Loop over instances.
                     predicted_instances = []
-                    for i, (pts, confs, score) in enumerate(
-                        zip(points, confidences, scores)
+                    for i, (pts, centroid_val, confs, score) in enumerate(
+                        zip(points, centroid_vals, confidences, scores)
                     ):
                         if np.isnan(pts).all():
                             continue
@@ -4474,9 +4484,10 @@ def _object_builder():
                             PredictedInstance.from_numpy(
                                 points=pts,
                                 point_confidences=confs,
-                                instance_score=np.nanmean(score),
+                                instance_score=centroid_val,
                                 skeleton=skeleton,
                                 track=track,
+                                tracking_score=score,
                             )
                         )
 
diff --git a/tests/data/tracks/clip.predictions.slp b/tests/data/tracks/clip.predictions.slp
new file mode 100644
index 0000000000000000000000000000000000000000..652e21302043e7eb6064d5663fb70098b9de23e6
GIT binary patch
literal 396184
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
YV;Hw>DCW0e+_qtuBOguu|MTPj0o-wCPyhe`

literal 0
HcmV?d00001

diff --git a/tests/fixtures/datasets.py b/tests/fixtures/datasets.py
index ec5dfbc29..c6507caec 100644
--- a/tests/fixtures/datasets.py
+++ b/tests/fixtures/datasets.py
@@ -97,6 +97,20 @@ def min_tracks_2node_labels():
     )
 
 
+@pytest.fixture
+def min_tracks_2node_predictions():
+    """
+    Generated with:
+    ```
+    sleap-track -m "tests/data/models/min_tracks_2node.UNet.bottomup_multiclass" "tests/data/tracks/clip.mp4"
+    ```
+    """
+    return Labels.load_file(
+        "tests/data/tracks/clip.predictions.slp",
+        video_search=["tests/data/tracks/clip.mp4"],
+    )
+
+
 @pytest.fixture
 def min_tracks_13node_labels():
     return Labels.load_file(
diff --git a/tests/info/test_summary.py b/tests/info/test_summary.py
index 2cf76c166..672d97e63 100644
--- a/tests/info/test_summary.py
+++ b/tests/info/test_summary.py
@@ -37,6 +37,19 @@ def test_frame_statistics(simple_predictions):
 
     x = stats.get_point_displacement_series(video, "max")
     assert len(x) == 2
-    assert len(x) == 2
     assert x[0] == 0
     assert x[1] == 18.0
+
+
+def test_get_tracking_score_series(min_tracks_2node_predictions):
+
+    stats = StatisticSeries(min_tracks_2node_predictions)
+    x = stats.get_tracking_score_series(min_tracks_2node_predictions.video, "min")
+    assert len(x) == 1500
+    assert x[0] == 0.9999966621398926
+    assert x[1000] == 0.9998022317886353
+
+    x = stats.get_tracking_score_series(min_tracks_2node_predictions.video, "mean")
+    assert len(x) == 1500
+    assert x[0] == 0.9999983310699463
+    assert x[1000] == 0.9999011158943176

From 0042cc2a6342d5a42770c84a89afe792c510f35c Mon Sep 17 00:00:00 2001
From: croblesMed <carlosrobles00001@gmail.com>
Date: Mon, 16 Dec 2024 12:51:03 -0800
Subject: [PATCH 04/18] Add bonsai guide for sleap docs (#2050)

* [WIP] Add bonsai guide page

* Add more information to the guide with images

* add branch for website build

* Typos

* fix links

* Include suggestions

* Add more screenshots and refine the doc

* Remove branch from website workflow

* Completed documentation edits from PR made by reviewer + review bot.

---------

Co-authored-by: Shrivaths Shyam <52810689+shrivaths16@users.noreply.github.com>
Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>
---
 docs/_static/bonsai-connection.jpg            | Bin 0 -> 113805 bytes
 docs/_static/bonsai-filecapture.jpg           | Bin 0 -> 68990 bytes
 docs/_static/bonsai-predictcentroids.jpg      | Bin 0 -> 76547 bytes
 docs/_static/bonsai-predictposeidentities.jpg | Bin 0 -> 85845 bytes
 docs/_static/bonsai-predictposes.jpg          | Bin 0 -> 79334 bytes
 docs/_static/bonsai-workflow.jpg              | Bin 0 -> 33481 bytes
 docs/guides/bonsai.md                         |  75 ++++++++++++++++++
 docs/guides/index.md                          |   5 ++
 8 files changed, 80 insertions(+)
 create mode 100644 docs/_static/bonsai-connection.jpg
 create mode 100644 docs/_static/bonsai-filecapture.jpg
 create mode 100644 docs/_static/bonsai-predictcentroids.jpg
 create mode 100644 docs/_static/bonsai-predictposeidentities.jpg
 create mode 100644 docs/_static/bonsai-predictposes.jpg
 create mode 100644 docs/_static/bonsai-workflow.jpg
 create mode 100644 docs/guides/bonsai.md

diff --git a/docs/_static/bonsai-connection.jpg b/docs/_static/bonsai-connection.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..32b725416e2ed32f12977cdf50c73b53ce9b3d9c
GIT binary patch
literal 113805
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
NQe(RCf$PWc{{rTTu?heH

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-filecapture.jpg b/docs/_static/bonsai-filecapture.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7a809d67ac10f043046af7dc5960e00b5640a2d0
GIT binary patch
literal 68990
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
KW5R>m9sX~}(<E5{

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-predictcentroids.jpg b/docs/_static/bonsai-predictcentroids.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e284f2338ae73e228178ef7866f24bf4e114d118
GIT binary patch
literal 76547
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

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-predictposeidentities.jpg b/docs/_static/bonsai-predictposeidentities.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8582fd70727fbfff46555a0c463506627fa05ab4
GIT binary patch
literal 85845
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
ASO5S3

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-predictposes.jpg b/docs/_static/bonsai-predictposes.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2e4f04a22020342a8f45bde98ab45eb6de607a1f
GIT binary patch
literal 79334
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

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-workflow.jpg b/docs/_static/bonsai-workflow.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0481c3dcfdc1105ea5676c4cc55f907580168188
GIT binary patch
literal 33481
zcmeFY2UwHMx;7f5cah#jK#(p~YNU$@2r9j(^e!b3YEYy%0RaI8=`{rDy%%ZHLocC9
zC)5BToP7H~d$09<XYaN4+1Eb%I@f>wZ!$?{-pR~7GxN?o&;8tUGkvoRxcyX3Lk)m~
zg989#Ux1rAfHDC0)~!F@*b5K)#wWtZ$HT)XAtWRqA|oLqBPAgvC8xM^o1B7*f|T?&
z-EAsr8d_RfGD>;|IvR#MG_*8-6oP|`{SO{KF+M&q4LK<}&HwA`rVT(vgky0l3>W7f
z;1(4QE)~vA7l0iAz`@71_Kybt-xtm;Y#Rv(iHJ!^u^Fmw18(8q;@-l;{iD^`+yU78
z06Z%EI~)%c38;175Z-g65q%$@MZ~G}qn%c7^pH#Jt@{UJ5;}SYMken2JiHJ1#3dx9
z9!bk6tEj4}Khb#l;^ixS14AQYODk&|TRVFP4^NPnH`vEF_+v<DSa?KaLgMG7<diR|
zY1uisdHDr}Ma31BRn;}Mb@dG$on75My+8Z<$Hpfn;ZxHyvxt?|we^k7-&@<rqvMm)
zvvbtN<sWk40C4}8SpO#3U*w{~%5@754;PQ{54mt|d1C`E6&^mvLxMYsx`c1ssPBos
zC!$e`&-&3$%qgaKNc+}(l!T5;9KntJL$rU9>^~>ihyRjf|0dYq<eCML;o@Ki50?r6
z1YC||=v!KE01CdY*O!SmfT*0m#9<_;)D@^ly8=@){Nx+64qUM6%IH9tvuPr?@?CsB
zTD^u?IRO{MA5EbR{*i;qKAY-%;m9T&rG7Zs^!llF*em<xC*chC+{p||EMG10JU74U
zE}SusE!x)H06Na6ZUCFZS~q}JJqXeh^5-~cjkAY|6zq+;g9F{_Rh-#?I0TddEB1a#
z`P9!vBfrAU^N@EsXb-C{O_OIALYoT%BKZeo^T3~ds5LkEc{zIby_Tt_U<?l$U4(%<
z%JZ!VznvSv@n-%FV5ta*Y5@Kvey9`1PAASDKC7M1U6WIw3N@Wk_fd$VJ@GJ|<L7;3
z&EQ1dnUGTmErGCr-H-JqJW+Crc|(x=BELDq15117mmvF>lFupiZxx&GR8n$IL;h0!
zU+X(c2j1Q?PU;ddcJT6kG2~PmuTJ)RkBjVGMIqs5o*WAK?d!Yp?0*@K|Htq=$`1NJ
znf|A{Kq2GMAY4dJ6~V8ix5cTkeuvIbk@TpMw?{)BaA2l>=G1z;06dtv0j!jKL>b%w
zxaPEP0A8-wOs89(IGNY!!sv6It1}3y7+7h21IXCA0R#@;0BFs<R}SLn7D*=+IE^f}
zR5TFsB;<i)X1p?=^&%#971=p`YWCP=>#gOHubOy}`#QA3osZrgqM~$>ubVL=Raan-
z+<<rn)3uM+X9ICU6cK~(>#lN*_pV(r+Sd)i<LcLTnQN1cC-PEPk`@>HndiGV0OU)E
z&A<&nejIb1iQ%ghheWX5K@vtt04ePQc}GFQx9z_!ZRz`d6kRa(h+FI`HIlyT-v%l(
zA75Px1r4+PmLYgwY_GsEe#*?MbQEBzHF+<CU$UAmX1!&oQy?YsLO=xYh~xdODOZcB
z6UK!bz~5CCw>tybY=A6P-T=A{-h+?Nh7U3Ckpu&s=8O;uR5jC*W@CL_Sl18r2eFq(
z!Idj<-Cp60S7tU&6*$a2in85)FZ`bzCZK+TRhx9PVUcJU@QP^r_I2Yx&mKl?@5=3$
zTeR+(PlF@Mg(n|l5vdhO&IFmMxB(1%V%Hnn8$e{v-*v+){obBMwuxV90;hYTyW9G(
z0LwLVwHts#tybek6!~#a<G4UQuJ7?rC^`SDiYd<lEp@G?+6nQix@14UMk9U0{Fu;J
zqZ6O{74dGrQ_RPIz-f2?VI`rgvK1MKXK6MeujK|1H+};!ow}%2eR3<3_xpcmpbS&E
z|NA_H1Le8`71jycqd%X0HCf$c^5GzU#roC2Z2}FJ1bj=>L1)9a#YBW`i7amMK-N-c
zfWqerwHWsjviLovwfiUbbgJ|1?!ocxu$MQ0kILq(o?7ZR035Cx00|I5H3j)iT6hCk
z=E_8<Erl&h71zR6t!@CEn`ehQ;bvAy`ZH<*1zs}<hALQ&%|6_i)Sqr?-DmCw0ErW`
zd3;ehq-nWq7Pw<r4!6*7mXw9jeRI%~*bHy}%sw;hV$}abZ|^=s_)OS=Oy-xVX6)X;
zS#|>$q1U|uv}pi4;!rA}rOR8}Kol_#O0OpQs1}3WtbS(6yF!3HHvn{^f*Z<pIg?5~
z8~tds49$h1b0w{>YntGytM>dB)AU1Bi6eeG#a{X0yWn*UXJj=3LIh6Ksy)<BmkPD2
zbtO#QNPii-F<(}!)%3$T$S1u$b<F@GZ3&1i2)0my{DZc<NOW($ya8BDDefO!LyRvk
zGAIv)5sR?HP2I_q=VOA1D8oou?DjhQe4wCZ;|37%4!`eVchhHHN%YveCfjL83k(&j
zHzued4s%NbL-Uua(!DXQu$=%^_zhs{^xDZv*Z2l-7{1ebf<FN{yrXlN^QS)t{mibu
z0sLvC)Y1234z6)P>}b41G%xPGNbH9DQQhnY@Lee91`w1031R>H^1hQr^8dpI1&Q)P
zA%8y>*zqBXZM*?IHv8A90{Gvh6_lQTS-L@+KyoP050u{<{6SHZ!4k>e>q@0!objIm
z!eMIPDTz@#hhgT(;cnruhWt2}gx^ClGpH|BKhvEMb)lC8v-7P7P=9F2FCk_*tB<HR
zhjCpB%qZmQkgeVa27f^&O>9qgce$7JrC;dp==Qrmj|v}WY`c3XGu1fy^nt1o#P0@h
zf9dl0jj$g?xJ4Fdo)IAwHV7dPq(^mhw@{;8u+NNERzc@X8Fv#>v9SgW3W6ujWmfV%
z8MpCHwMiU~m7{qi@Xj%=^*YgCcU3qHNZ>E#&5Qyy$s?Grv@|T!hy`2bhu$Jh%+zwP
zvlrDvmG9*%<8!2w56^sl(b$-D3i+1SiqX38-xhVl&P!;3PO_ZE;nE6am!Q&)Y5k%1
z8Ta~GBI1e7c*^sd_}3W&rU@H+RPbk_TwF4>%t=AGfzM465#G^EnsEeiB=s8p;1(e^
znJY8cOn2P`-7&u0a8*FAib6kO()u3m=3IAxw5ncGnqyAuDr2CV%D|#2Y~V1CXU+e`
zit9|{%4Y-2-Nuo7AEZ6gXR0hnZvc5JsiUU^4URM6zo`4A%2y;AU3Y&TQXn!b#O2xM
zIva#C^NiH)RsN`rg%eEx=)|8F1K5H{npK|#Odr8^E}dJA6cEC`rU#d;XuOnc&8*ab
z8vuI&rXF_e5c#Lo`!PO^?tg2zvz@^grWmJLsma{@LboX<jg+5TYqyZ5kuE--hJ4`s
zi&Z(Ugm-5KXAM#!cU+O?Y;0~2eoj}bQDMmaoLC<aKk|Wy>$W0Z<VKUVrLE6(B#2yC
zFJXowAgv{it7H3@5<LkW)dsEG*Z8D<K<6jN&u{_%7k&r{{p20pG3aR?$k{;KFDi8x
z&+z)R!pHS4HOpSx+hSrumb}ethm_Ov#kLy&tiE+;|Hp2XL1bBqH~R-0&6tO$@-nN2
zi^)g7y+!6`yVotj<8b|C!=`o&v<Cgl#16oegE$~Ib$D(xz4&`bD7J;~IAQAQzKN`^
zlN0lXi9IR9is&689_EOjjNN($UMFa03?xV%wu7=jx3ae`GLsN@+k#!qYLRNeZ%T}F
z<LAsfDtjscEc|3akGX7-F!{rpcx(HWxta-o*&>Y<kD`Sq5}vhg>@(@!N$Jrcb|0;&
z`{uhu*m)RfFbpVpv;=550x@>KJS~6%e5&z`taL0GC&q>=0C5~b{uA)Nt($kJHDzsS
z>-B!@@l)jDw-WGx@!_EEyn5jlcK56*#B(nxbY1wQA?q#VP9Q~5)k2Ace_IWM6MSRs
zC`<J{6P5c(YXt)AKch~PUj7=uKP;!2yEAJM>94%P%B)qNaSfua2^Y}1nzpG36<uCU
z(nyee`{<VBNnzfh|E$zm%-1yQg@Z7`(<or|T(8R!bK}eMSh<gY)Xz_ER}?z!$+1wW
zfSz8bEbd+KTpPL{ouVZ#DrZZio=rhd%{28ZLb!}P`x1y#+eijSxq`|lIVogTzfPsF
zQn>C)@#id35<pyuZva13b0Wy&KGDQgT6(9P#bx%*eYIWRq*d1$r`Me1o)kZz*p>+l
zaa}QV8Cw(-ed$Jc<`e$&6aG@|;G2#zHSNdk?X2EMXdlSXb;rr^HDmxOAGl*)TZJUZ
z%$0fK;`$~HJo9*(j+5cFwnyfo(4$>n{UmTmM$`&(#kl<$eFNxZ6dXR+=SHgbHo-A`
z_Ev9p@-~H^m1hB1Q@J_uN<}~_S$|VCd3Jm0>ETI(NfWddPj0+C4b-^@!Vk1eUb8as
zhh5wNQdZ=Jk84*_(A0B|UniPC1zRP)&!nWtT|JYZBqPHdqe7oAzO<D4MAY{P_iN_o
z)z2uYe91%~XeUJyEi`mm(!4u&I5#Q`Cm7e6qi0!iLzRU29n0QIX!;v(ip0Eadq+1P
zk8E%<#_!4mv>+bEInVJL7#)(zj+>B!`<29*YcBw}4BN)Uz42^4t%OWne1pQe1ZA%U
zCHVcI6#J9QM$W?VOpose#EU!>E8zzYeCowxS*flL@Lf`E82kQ>%XY%0rH?B57A?9q
zQ7}Q|A>&rYlQP^D{2Amyi10Xus-zJrG`8Jiw|LZ{E52s>Al<sMhpVGE{;U7o7l69y
z5PSQP(yZBJO_G}>$Ze&uZ==CPsiKtGrAvD*<s<Wy3!+wdd}CeE`v7CHfmyy1yu@f>
z!b%)xyVzJqPRaGxx%~W?eT1wGgM?nu{2(F5eZ=~+G)B0)AvBLmv55m})P9eio_fIQ
zxqt5ak99VE%M>#4U&+$eB;vv@;VFnE_QA`uJSgi^IO2Qd5p+OXD_f0}Xjy-$o(P8s
z4}Uqq;XK%+^Xz=qcTPAO|E%pjhzqV&C;QHuxc4)msmrok?1W(8I%=LR!v6-K+&Cto
z8Q}4(rnUO*i1z!bcb$~a)!$MmvW82z)E$I4tahFsd=Si=JXot?ZOZYuPqh4+Izc|h
z>!nYaCpS&i^IN)_s(?TJAmo<1Ophzg9Go&(FE}?iD${d4m0~vnrk2$NG5<?S&VbH7
zY+XD1Pf_KDp1jl#g=>{8IL|^in4>TBavObjU%OpA=fD_4KoCB;D$F+K<u)(Fk|405
zHHqzC5<xULWXWE~l3RCUhM!g7KEn)E-2gHTAqUe~rMXfSp#P@?V5Ku~6V85h2J9#u
zeN5Z>w`kn%oX*8*80I?eutfYhzU$wjSR-W|6YvIWvRI<|h7=`En;UnN!8w7AW^LlT
ziyh6i%-8AmSOv2ji)#G9Dv&m_kl|9``7R{HDEm|Y(o9X}@ebwn6+1%x%((!4*@-nZ
zdr_~_cyHDIU0nC?%b>N11VH~j;m?Hz@&8>N?0+j?-|jofe^{O4&mTp$uZwfIzbumg
zg8xn=-amCv0&}5D<=PO-A3Z;fE;jaaVcz`*UHIfbuJC_YzW>jwQ#HyCdej4NGI1Cp
zV`7VP!?P-N?<*Oi7R5bER&;1%vAp~6atzX;x+;80?<tIC!(wVbLD&gs`Ij^-$o7{!
zrbAO*2ZV;G7IqR-RHbq)@>!d>F-yZ|e&6Nj59M@=?$XP;@b<CwCDfB9ELfqmA94c-
z?rXiEi2G|ojoo)L*S{wI&*v(hvq0tlI@;f6C;M$LF~>is*6bE${rvmt?iWG;+52Av
zz9heY|Cd{uF4Vlrm<^umoV}}$uf5<4lDnj`k3XfYRb~F&*7jr4-ynac-QF4TjeyyX
z$}(1B>V8Kd0|1hB`Euzn9z1{vS-|S5go%(NR;SU&41Y~y|Nnm;MiW~T>a)BUA!E_8
zQUN1essx%(#DEN9+~54=WyV+gLzpehtBDaDb46tBYLx{A76f~dTk7q55>X#@%vzig
z66PhJf|P%MBIw->pOvdH?#74b6bhKT&In}L8&Y`f-+iOV89mkQYY_%=4bP;Zem1e@
zsP#gx(W^e;rF2{ga9|gw?d(?lj<&9bdJ)2Ax_IJ2&o}%7t=a3=<x2XljE8WvndcN!
zPk~3FwCsoe&9^szhE|Yz`K?N)10nINj~Q?u!2;!^1bW`i->Ly-?7Q)ZyFm&CP%+Dd
zN+rVebpukQ$(eKQAv84812H$3UR&Q3Ij}o5m@3FI`%#31aOnNdgQ>`sB&MiE+dln%
zx2lyLE%QZh%fLIBv9#DkKZ4Yi#?T4z86wrz#MJNS9%#p%%rAZ?u)OLx8hc;zJm}=<
zin1%{o+?>WMWvLsIzzAY)_V&Uv@S|os$+pvHRJ5UrJ8i}lO_x2xh_7*W4xo@jh)`H
zW)lS4_drg6^2rna)+Mtojsya^Z&}{m!#~Jc70twLxrJ@T7W;p^+Jb`x^v@bvuJ_K_
zl}1flJ6Y|~ip%nBNBT<-!uq}Tjfj<Wrd%LQ+x+F1ZP}5$fImX%4dAvTT!DVH?9@yf
z;q2u6yiXuz+LuyK2jI;`G6GA1IK?qNt+d0?z3=aOv3GtKLe=-A7ZLX8oGod~dRi*B
zt0%PY;I~hG?8DdZ#$b-swIz>$5jTLUf(SWRZ;6&9H_71aO=9xKy)?xg&R8GJ??;;~
zr!bBL^)xka8*j^G8)>e~w3FeP%{CdSE**AOSyL~`c;n`dxzZ5wP6FLZ&aZEx-gz8d
zJDl%vA8sn5JXQvn1MsRu7EFA`jH>dLiOC+{{lP=X+V|V>)KuP-jq-NIrAQStpz5M|
zKk!v}UUbi!#W%*@F?%ho+|{wbb_h+A?lSY2wb4_1M2L=L!b32NFT*f<c>9UO8Kk{6
z+8ELuL%XJ8B5yu{<89seXjon6CGd+JTNj$x4Awr(IIwIH-k^{htG|$M;+MBOQctpE
z`mS?9)nnsAOTd{?o2pv1H~^hG`q^gk-K!kp{*%QRuVeM!S~R*ApV(m`|7JnzdxuvS
zHc5YXFfLscnV!>dUj}i|)Bv9rcJ~!RXG9Ys-TgTG6=X3Z&(RWC^hhB#ei0n1GT(g>
zJF279*+})%LR;r`pbAndrh19dth%SRc)>xGx=vt>H3G98Fv-?Nl2_(v5O@zR4AR_^
zn;Ym$vp2cUmwt4@7ChGSbrfRTio1xW4Kqqpmx*q$olAdprHmheZtnK7b(sV{z_Shh
zDRBwqGn5NWlG2m<`mHPpi{YyN4t%9wCZ<sGVy1s2vN^q?cKcc<Mc|;!bLV4SRb4XN
zQ`+c_dvvRkH0?nvA;dvYN4=$XtjXftY-|b#Raq8~n8{{i=BkA$x^v<Lmhl_rP5&V)
zCOE`yX}I{rHsoW^RJ)dTG<1FRGUsHUF=2%(na79|L{=8Y@qX>LUt|EdU^iz~+F#>v
z>trrP)YR@c;G5y8NcjT$`myk+s-Ib)U{vP-vAHLAlhKtnH5H2)kwNU3qAHC62b@M%
z74VP3yUg3Uc1^e|25P)J`KC$MkM4%2$D3P}In2t3bvyHD)S}+jGMU(?eU5XbjZI4L
zjrHS>T#>YY|MFFWVs+%h<CHa7?P2T5s-GYz-?>ixyz@T7&&TU4YgwK)rDd==#0Nne
z*K4dA>}Z^ul4xIB*&8@I<MSz7(*bt-2B7wf<!AJ}$Ag-mz&%xK*$2GysrS#kq~r*_
zoKMDWo%08s40M}g`NN-S;^{^;elMm6zot=(3TizXefWu`;Fp5Pcq@V#<%(oB9nI{7
z+)<#fsV>}3+XyLAbSv1oZO+~2_yy6Re5}b*6#gnZrf0e>h1s|TIwEe^B%jx7NmlWz
z_~^;lprW_8m$zjV&cH)C0Kd=`BJ-n!&K>m?=3x@M6koJcY+C81r?6+~muZze?^|^Y
z(yO$QV-6PZEllR&Q{SFpEOblIYJnmQK|e)huFTmh2!O-1kyaTjVTcpSBO|bbrmT0I
z{(?Pgo0Qs<S*NE*;zS(apLV~zS>8)Uw@84a)GZ=7B);tOjLTUfhB&o97=B+Oqj$`&
zIt(({6yT{_TMyM9lZ^I@tv=l8$lyZKrD82HhS6#*Z!CZoN3M6S6X{r@?QvCPq{$<P
z&VA`y+X*DxS-flJ_u?==tZ*la#Z9QdyFgj+r^=@%k=)jTAs_=>IT1W}zMTC&shZ4S
zt?RQ|>j3f5D4m`0qp7K)<6X$@CXmk?qLkhg8CNt{CY39ipZs82pyv0P*YT3iTfoSt
z@qsgN)`CcUpmm2!pEHoj{}~bz24cqnt3R2N&|%jo>MIe1HzOWZfnn=@>Z&F-^zP8Y
zB$c?0-RE6xbC!yA!j0Q(w+?^75LeeESDk5E`(Y6NVefoX!*1^Ct~j1A2VAONjbh){
zK54k<NW9QPnJhOuc1SMLOvrJ3Ujmy?+znQ#ALmHu7tHi<BFm#^Eq_#G%<mhh5$J&N
zo`P;`N!JTjqvtGwHTxG_^MP$~bdDL4DBFVVK+X@3BwQ7?7toFAMuQQwUGY8p@QOa7
zPuUMZ>Kqon(U!O)d}S$lMs~i=HJSM{b6b}IrH*8DH9rJ&RU$=-!@uJLJOOW^ulg1i
z7<*N)kCq1ZL3@t#PXa#kL8H`F!G*yK)9Uku^y_hSNzr!-k?m11kKxq)$-8xQ-id+}
zz8@tIM3>dVEdzp*_@1wFGRS+R9e$(lF?Njx+7Ai8EWafy&1E+_{kr~$Q4y_k3@ciT
zv5twKkP+$RC;LF@fO1^v?VMW*Srkp+{rF>AgCkSBL0@{7;_<@u`Xj<t<#_`MpGUdy
z-eFtX;*k*P9;wI#*R}nY<9*-dz=swlTeIq6n++MVV9u#s*0rP$#l?e+5j^F9%<r&x
zEX?kV8pnjjyto0}N=G~Ln<GQ(S3)8{0mjFAh8ho{gM$c-?Z@|jBy&qx#Ywh6wDY8u
zZhPB~uvf43x#gntpM0~5S^JhWu_nULMkL>DaQ*q^G}ybxH+qIHNJZ4wKZ0NC_kcOR
zy(APS7#iksPG7PS?`XwPPJtq{+xtp(&A<H{!@iwCgpzkg#N3-KtCm+&)!bU;baK8g
z*CT%xbjy~NK#S%;4<;?`pBFdC_E4=)xCj0Nvb+=~bRPvN7`lcQ8kIshOGU)rJYMVs
zic<d)n`-u2I*gu&jI@_Pmfm4~gAL8!x2Wux1Y^GuJ~Zz5fxGkm1B7~b)nKRT>IEr=
zDn0I!LBjQFpB*Emj^>nNKM`?QI-dukU23t0fG|qU1^D~*Wa~j41hv5a=W-XagG5Wk
zHA-Fd^(RkBs{z5ZoodgKOGK1A7Mz$VxO+QNY1W&3U8g`rxAEOR5&LFyK)Si~)iZy=
z%oW0qS*_!5#2lG4?C)@2jjKFf4DxotVOJu&-;9o<B@>bnE!@q>grKS0hD9p7Ut2Rd
z>^Yu8+7w=(ES3d5RtO`VcdH~5W}k#7n4EI!PkNjWP+)@Gbyn2N?JO#O)ff6dt+${y
z*YL|SNlLB8<q)-aa8=aDt-~(q>-9?!Mls?KS`j9m8*t9qk!mp2Q@G%)`P{?!Bl;^y
zqUZ)dn%E0Gk#tx>(cA!5Epp%f-k`PRQF4nmuK9(j1xj`34{RwZEZ+H?*s{HtjA>c@
zEj(+o3~D|L&EPsbO;7~ocl?;2HOU|4ZXhFgF8iJR{O1k8%Ah~ZIkzD+%h3^V-)G%0
zhjgOyHUW^@Oas-snvBOzyWItu8i&OA((kq&)@*j03&wSwk5p{QSY=pgciwV*-~WD_
z{(${mc736rQx3i`bVx(p1(SBM>p68M-6F~UGB_&vy4mw+{_;w1eCc_FuCR;K(;Ce=
zTD&XPesJl*p9a!p)Z$YnjKSj1;|WAC*4+TIg7t3zEeNdSphi`|8%T$k8y4UpfZhNC
zu&_hVZ>;OdW)%}kZi2ZAy8*<&_h@jiwj|L|?==}y?e#h34S=~65@~FD<j;+i`0AnM
z{b=0wo`#5({{tug?-aqT{MGq=Ohe3^g`RJ!lR^~<s~w*fR1`6NOM|#283)3@7M*Ja
zY;Lgn*`!>_gSWAdXz(_b>Ad<zT^f*5JUZX-@_<i!<eErNEcT+U%w*-fGacKaz(<}R
zHP|w_@>jJQSkT|s$Zh~W6gX%~H>0J)dN~iQ05(_w-s@l_uH=oTdh`km@Ofu;%36hw
zw*wzOr4a!+==Jm%7~2;N4-aIW0y~yw#?=p7KO6{v=D^kDFZ6>4niC5nw25NH=J0Uq
zK(8s^SUf=Mpu7VP2f9;a<TtFs1CM4m8K}E-`j^bRyzWl4{-s)_t1bl|R8+v5H$DLY
zWecftjfOTJ{4P#pLcX@RM`Z#Ol&m2znd!)4-Q=sSjYh8%S-0sy3cioLh^<Hcvd%CV
z<X9o(I&zO&3)r2a!hTP~Is3(&djx4<Z1qXCn*||;ou^ahmf;p&iMgb06G)m|45yKB
z1VH1*TLy2H7<x$6z3QMJI<$49e@!`7(Ii*?h0oKr!5EEI1fOR|^7qSQKmV5z@gIES
z#vnuU6k-spuFq>YT$}}LGwyZX73~=ml|91uX{lU=k#Dh6m5Q5WM(U}k#$41lB)%HY
zi5;`cuU2#wFjrf8cwUcR-hcNKPN=`HZKQb0RFhbVeSAYV_g*f%e{WPX>$y&?#AeE@
zWIa#ZiDUiiaRcM1XDyMl^A43ht}aKjj9)S<PW3h4DZDwK3!Vh!FK4!tJ*#i&n?@OQ
zeHwB-W8TwetX65NuYQ@ds<Hku1Hs8n&r)IX6a1Vqd5!ErZwz<`;q?u4r3zNomN}1c
zKH2kl2Crt`k=0>#lss%2)wEv!{A7Rf?W^N;98QutC(HM7?+ydwJ+gk=JA+5l^D|af
zbhxALiVhy_kv-;NMt&t*{a$>T@_tuBht<wpAlW2j!qZQ7fEgVBS*g!`L_DP3G?`%G
z;RixNtRAR4=Ae^z1K_!w9+ek(=izTX^#)1UB`>RU7*f5FvOM)+WXW`=&*fZ9!`1nb
z0C%*2+db_b4JM^FHObuQIfJmV8-P<`H7j9v#q1UvJ5mUSxHth122vtl`sQc4OOOs%
z^ptqLiOwx-Pt5_h^$e$z$8WRULs5SRrw#PfoJ$#hwCy$y$uIH{&|%v#Nw?dB6Mhu8
z4t(KAz4u8bnecAWoMAj>NXB~NauQy<azG7E)SHY=Jd4^>+#T)MnsNrY6n-*MXZo<O
z{6^YBZGfJ9N)}^+VOfG9oE4Ae7BE;A*oW6UOI7<t2q4)`qGKT4*h#aW+SJMj41Mjc
zv+JlRSZt;al0a20&~UR-dnk5A7lUO>B9XN{Ly#9pgN_>j^)?-R*8BbPh(so}!>8YY
z!U-y0XPR(*<x5S3?-8}<#4PArNPmoAj3zi2)LfpYc2KxCags@c3hOkksV!12*7D06
zB6yo1`(#f^z(bi!hcQ;<X@6X(Z0Hz0Ba`s%!16VZ&e(3g<F(%6Sf~E@KHb?9WT8+V
zm;0i|BNg4|GzGcl$gD5;JtGtmrxuw!!+VZ_X-4#55B|NW%ac)IlNMA%!5$S1C8Yr`
zK!$w~JPA-@C$m5mXjWCgW5yOb?ZUDCyp2WRJ-3bSPuVX!@37V^Z=f>IJ|p8o4GfMI
zSnbDaA`szdlVWEi2Ptj3hNoQN@QfH2#;n{qm(Rt<LIhtwFatOP(`Xn2HL|*PvvDKE
zwwY*$Lzf#Td1}P$;nan9x^ZIh^m?7F`b6UUV%)o|SX*zSDMp&GIx{hFw(OJvyIOJ_
z4hGUR99cy>RqIr}S?y=h#3b_Y@OPk_SYqMhSbmaAEoKg)zP<7dN-KYPec0S$dUoN<
z8_44Sa?;;umE5v3?I7&#;q__RH`~(LfOI{nY)9FYZ`6a=6K|!HpmXjI;?>k<nA1+u
z)=%QXd|jeeH8ZK(<;R!i?dj6^)j5m8m0h{UH~}=QYrig}du}aLcuc%VY8gH)%M6L0
zyu1i}irq9YSoQMd=YM3v{c%sX<*E|W07(K#3|Iurv@QVq8`1#$JY9>lV`%H#f&A?=
zdmnoqS(6XYna{B=uOi_v(dz3QIp#vgDJHGY<_{)>1W$>@>s<u=nM+NLpk3}?axJR4
zi^52@`z-=TgA?DUS<p8;P<=|7Y8FVC4o*K)N#CR72|KMD6bLkwpt%b}lj96uAMx{R
zUB}C*a<|c6!c(0IeEeKRZLmA!(}H7I_G{!>gjBebC#QTDQ}xlJhO?uGwVWWIaUY9E
zoluZ7xqzR^qj&9}DvpiQHtGw&w(8B3)qXnxVwx2pWkRmP+=f}95{$OqZ*LXia;3G8
z6d)zCRx~-=`@Po!Q*1d7mzI0OFify-w#?=ZPL1Z6O?>1$@9&(g;UbB}DdOeKm<(zp
zrhHaA)vajOAw#hta=>&{xGJ^m4IV)<USlYy=mTrA(S6cpDXM0Vg(;=Dd)1}B6Gbm_
z*ljh8?q(M`Fu}j&YFW}=Uqe6Fjz^iO)TLTFMnqPIui~K(s#$BIzw)#7l#Mw3ZJ-QW
zM3Bi*%j}f%JArp6?v0C2OO|Nf*YJKz%c=6*Sc5hERSb@;4axTeeEvDNgCCm^>Q<Xp
z3V)@B6y0jCk!l}`Eg``XaraDvI8L7V+W{Wt(x59QRJF|;*HXKR&Y8RfD@zp7@G&e0
zO^)>F1X2mZ1UyquNdvUUB+{IvjK_q<OWLXL(CNB*)98t-2J?P;px56ijYrYnj8^cD
z?PymLYuEyLv~{h0VR<>fNvcpYa?#ih`7xCAZP1&IXY$wgVt1#~mpw6<lduiWX+Xfv
z?*J*Ss?pNBKd_8~v0qq1wMgMBRn{O{he$;CD)Q0BH=o4?nSfp|YMjuvlIJ0?DcB;7
zt`QqA(mZLonaja<Xli;lW~ljl%7FLv?lIRxAsXsqjeA0F@4tQpX!%?_`4Tk$8%m`6
zm;u9g7@N52%w{HRToHTrOWUgz-=vbC0y}vxhPy3(e7ynK`N&DbRNh!7)lQ6j$XI-f
zn|ZZn;0C&Su4wC6wmp1!&_mcE!<Oa!rVyNE@=Wp_snINR1R7Rzo!b>1+v~&~S;V39
z^z2KXMveyOYh)c+X~Es#k;qdKpJe`9FeNXY0-gF@pD**3q|r$~Zl5Qo%xpC@?E1&$
z2lfPVCohvLn~p(W4+}eP3@)7y@KM5>R}l~_ae%^K&_bbKvU$?Tt0fEc0kwbIQ}JZ&
z{C+b<-4ZTZs|xj=d(PfhJ6B*&LQwr_T~podQa2r2x3x!ipPEK6NGlbCl^fsiQB0Sv
zGRK(r=bkJMXvtwtEJOOr!BTtnon~dHQwEn}71=-h%~o02+kBZFF87wEJ=Zf9r-#<%
zGMmz@Lb*F`1=@3|{t^*O3?haWBXz8Jvm*ijEUbgBjXYUN^(Gd@_>4?6+((PrUq_k%
zu2$-0cVa++ckO;?=G&2$)TH>s55H;uZhXvLMJ?jyTn-ol@U{Jz&wE0$e8MJOnf@G0
zj}vsxu`lBp-@g|r!6-CD4Ir$)-xO?gh?c4C(j*Uvi_)7EfMwSiuEAG7X^F$jGW6$t
z+*TO9@6noGKpxCCg7UvFwe0?(v+S|4P3FR@mZ~&w%{@yTcIMLHh*$3B@0v4w|LN%+
zV%!gpXqQLOKFHAKRrWiEb}1PYOc_x{!&aFTr*wV+-p^|zwKDBB7CoPI6_dpWyZlsq
zY|Y3W;MX>*n5d<tv?c7kpWEC}XK0mdXW(dRT0!^mleAGEM+(mx&u6WcH%Qs#spvpn
zu&v=?a;q!C;<nL(=`+s*y2a!$y|K3mN~2Z!11>*pgKihy8)93D?6v>pX2G;~1Hgy0
zFX^biUFvk*p2hO{<}8wa4H%;~5fB20v_Y90K=|zorY0FVI(=i+`4p-J4XavBC;uND
zb@AgKMKO;rlI7^xB?UM4ShFA<>R9%ovt9=~u7j^aWs!wLTC}@yp9B1bao4Mljby6E
z_OHfN<{2L^f1vPRx>db_%J5eaF17lBRrLF(x*jDM9M3Kal5Oqg5}jRyzG!5etNj{$
zG{pf8>`hS+pY()J9qhfWE}xLoDw>_2Hhn52DCAmAR90%M%1b-TE>Ow8t{l?l_A}3!
z87ox{?7F_up=PSyE3WbA4`P(DJR6n|xn)LaRD-08vo1D@3aM%eu?;sf(R3DqGcso<
zy&74*hCf$#Gbo{M=j_r%$P4-#U4Qj|QqH&3lJLvf>hn8u`E3S*p1oYw`W_SJ*ac}L
zjl3VxE@O4Ns<hnyS>6$iYs>D^e&)KFmiyF_m+QICQCWTv$;I56&!IxK*Wx|+3Mynp
zQ}CgjGwjFVJl*A+@^=k+ZG2|Cv#Vrk+V=^$mfyd(P#M)0PFlKL0FF2>vSip__rWGm
z-d!1d$P#lihYZ$+rimsqYeyuVyx^Lkhd`iyi9<Y>LwnzJ<gL5<SH)Q-A<}6I^~I=8
zm5H2@Q$gXL461SN(bHxf&BODUY8~czy4s1o{G_Ix^p_8T@hmZCs_y%5neX*EUGJzq
z>g#U50SLC7%uO{k&h=l-PU@MDT?@@!NcjmZz-|C|7jr9Nd$h~Kv|x3!l(vS?fpSQK
zq-=}rhYsfC$%|)Z)VD=1VjgLzR>dV0x0w8#_E&3XXP2JCTJ|HJt>F!lsmLt<SBNV=
zSJEY5IM$ljrq0h8-%(H<%Ntra-A#|?P{vDo!NTxfu<=B{eu)jt*1N(J))QAa;D%q`
zT-mbZ&=1=%G3|C^7<j;}+3_9umHGoEhg!c|ik9$Z36@s5x89N+_4{h+2+P=OW<-WX
z2+2tlgO}Q;(kx;?W_}2pL?rGr8Ay1UoRJU6nYOC|G+h@WJnL=~{j?^CF21ABP2h3R
z5UZCi+B^eD2bS%iTqO-fnnGwnPe803AVSB&6S&z^6T{8NGlopS$|?tx9<5|tN*wHW
zVP!Q8OBTJvk})|@7Y_5yi!U2YZU9&{Zw+&L9terM?btxs*%~}`xfxl2eJEVJ0$H3j
zvHF`ClK<u58ufOgV3+-M7Rl4mc&g9Px`$k0e({`HoV)Bn4K=l8{+x#k=i#o-r-J%+
zj2TB$za9>=f9c>M7Z+*V5DD{%z`b5)He@>Z4K;-YNI^=xj;nW@5>#{+Gl8eqpny3i
z?2;Qqa%2&gNKSEu*o=fF>mN>qfzF!YT(MH0OqAdTBHRPTAN=dqk|k|8iR$CSiJqJm
z^G>OSjTTHwoR>f>B9O2i%D8fHls?iACDjv1fpq>DNQA`i4y{J`5wkxZS&M~BQDIrz
zy&x`=g`Q)kTo*jIAA~q@^j8{=iT-kNMv-$XEqTjxLzEpFQ2Xbo#4eey$By0=0om$T
zG;Zc|7iBOe0;85mCW09KMc#AbKumW25Wniq=-JY#_l1LT+SvA)>t>(@MirL1bo9}8
zDN49S#J-h6yBZo0*G=zbF0G~Ll27iK-%WB|(Z@}mr0h*wH%$_gGWgwDk3aK}FxGVs
z^Ju|v8r6(;g_+Lp;P#KBO~6x<+eHHL>P29$4Ip37qtrXJ8FXsiN7@UOBCsM)SlHRD
zcU*NG{cw@Rwr|pPmHu;8@Y^HL9Z&9PeFUc-ZvEo!`b=cuLN%@WD+7K_#Ml;8#=Oty
zLY4pAI{?%pWi0RP`mNU4r)DXyk(~i$utFHN7f8K53y(vx_n32_ve-Wg9muJEpWP8N
z8?yK1RDPHSH{6WVOnabNtQM~t-$aym)Mf!3^*250Tcsp3^4A*2@YsnAEbnOud!}FQ
z>^S<ROpQrX*)+8@dpQ@eDLpL|0eV5}GDo)gR)vfs^QyGZwsKq+pPtobIX=m2O<w|`
zs?q`**{Q&UEA-JWEuzM=+iV=8&?bjP-ny!ZD#tkHZI8uo;-*h%3B!_ypa`AH@Kl$i
zpt}Mw5AP@()Y@fN#(vVp)L3}U`J6YppQfikP{2(Tcf}vzvj`T4z}<)oYXwN?Fn}RF
zbmsSwkZAEGaxBeqify%nA3vu0+d^(y^e)b)*#KC7D$!egw|dh(jwiHzXj7DQ@eX|}
zBj{SV(*b0QWJ|0#TUATA)NE!HI60_kCwq!)9u!`e8Nkzf@I`GDJ@iolYP;$h$$mQr
z-lV)7kMP5uoM;GH%(Ttf(KooWup{Uw*2y1GCi_uSBH_uJ%6-PeEGwt|qp70A)z%OJ
ziGcvhmucrZaH99ZmP`TN-TCQq#icdp1|vOZ<xjo8lN^2U?om_D->5O$Z4MkT_njSb
zDI2dIvX&Z_Rwy$#nzGQ8&onVJ?;U8M3^HDv9SiX2lwvw>|9x7w)^b=De+WNUAD?XL
zlPN9A))Y7wQ$GuRpLvcW*H#hY47<0E@<3!pr*tHCE)NqsVwmFh&|vWro0>$e<XPDm
zwb4CJgMe&;1a4P;ZnxUIF}ZQYi0fPo`vN%9jAH3!OWg!#Lu2_hJj#DWexdO5utR0I
zT+KHXQIQbCMqaYw_Rn8|p*MhP+Yo=}Wnmo0*^ruoYzK3Z>V%a6H8Z};ZHt8_`-k|>
z?GLlkM6LOXs#1PU+7JVMs^NnExlo9F%ihn(cjJ{8TSEn)#@4i!ut>BT%JFcu8$!^e
z>9`F1aM_b;i{BIC?Pm-8DCG2}{s=_0=*If-N6EY?ck8znyJgFJj}*DSOe+kHrxA?r
zX_cyxTHg7RZTF0u8ke*@=mjqO13>H-+I3OPxH-Y3c!0T<lv%?#SFlFoq%%m%qSH6h
za2Sv3z%QI}HNw^M`Kz<JpPE_yUvE#wAv4di#uV7LYz9=mZnxamQr4)%VtKm_{y@iu
z+L#2B&ldL?qs8bAb3X%z7-y9M6R?Wysl}74*5!SEI~W#|DLA?Iwezc{-Mpmijl&10
zckdveK)uEk-2@FpZJHL}K0kjw2bUIW^J<sirswR8VeVT=AUnV12%j&{yxHHGRsX&_
z)1!8(+`h(u-dmK&8M<n39pAuL*vIo5r%dSByfVF)NxN78ds0AXO1r6=%Z}bpOrWMz
z)XRnNoColLaHG$Z*BKVRbfn|2a|3wY2)m}4+|0OJkA(L2$W!Z9wTz9y1vy_uGDnDO
zti>*H)s<UE>Int;FsPA~^FE}><QVRQK6=n7_12n)Ek)i@b5gK6imS283v84c2%eQB
zD}9xe6vU_e0Pi-@-KkV?)LG=19MBuuFDJXgs@ds_x93`l%Kk+JtUNh?Ox9RCSoxH5
z_}7T)T_uJ)B;~9+@3l^cqEo0$O?uzXe!CJUcNuzc19;Z35Vi>Ddq{Qk70>P0;fp?h
z`W2|fG9(PGyga^qa0eXK6>Ktb;Q7M2;MW;bvDv}^h{|s*27#qnT)5csDaM5B<9kG+
zTA^N;((0WG>+AH3>;7SjW??~{tep7!F<de5C-VgQFFq;$Ry-*%z=HCOP0VgZsGJq)
zNjc^c$3WmjcI^!y1X4C_pJ=9@7w^ba-0fSa*OoV(rop5ZHK<Rx!OjaqGB2m2qD)a)
zum!N*&T}LO)=LPilrVJWriK>AX~rIDs#~Pq{$6LqCMsIk{);*?u9>TG4rw2-eR&DO
zYmmBzv~L|NWFReK1?1R^z;FAHm?Nx_1O?Yg4kLU?8iB*&SGfaZLenf(R%<YZKBn`j
zabqp3czdk($W1DV>y!8!=M+n+)cfap27L5Hj1@aat8VPf;A4bMCSt*6M?D3BDUj;a
z6po-vSydhJ<d1-cq=WrS$JAY2J~j~`!sB(HR*Dso83vDlE!r+aTB;Exag^W}dLvE5
zSl7pG2PVmcOQ+<_*FP{_84s)_^OTKM&efEtCZ#{ImNel?nbw{_d_yxY#7-+OUat0^
zVDvGLndp?f%hSuTN`I{tdD(Uh>!ie<`RZ<(eu|^u-a=0gM2KOev1SrKmR6$;@9R7M
z)f+%4kQhW67I+605Rd~V)zz{&NAy4mTAf`t?a!soBa>}rXE)Z~tfVNos|_lvN#V7b
zQV95qG$V14&9Pz2j$m=E7l@5oyoSJ}!vo#JU1|qKXxb<by-Ua0y3QBN^tWHb?j~qY
zN%YSfsPde91X89zB-Z_&n~pY)R<#&dY@&SUPDo}~WCy?nA+_Cnglg@KdZLsHlidCq
zE0nmiX7=XyBiX|mCKmac#|3gw&V?pmmkrucTBmH4819ESc~#z;;t9mhWRt=c*?G@h
zKQ7{!0aw+#Vbt5c_wr$&!kM{QM`~kQduVH=z{hODH<;1^Mlzb^s@E)^8AiK3s%i|-
z@Qj8XEMyq${=wC&b>Pzc8>KZCi5KnoC#T9tr2f?!sCWEV|LcG0AOjnx<8o%C1tkX@
zEx!ywsluvQpJEQ4S4^G`?1a0Vcr~PMBq<EAHs;OtawW*v*oo#@IyoORe?ao=ro)!N
zm0eFORaXS*yHeg+SU51HM1!E>-FG7y@{h$!=wjgq-ib}DhXL2Qw}WaYJzqqv+e6PT
z><gBw7fzjCm~Itd^;<uz^TAjsf{oJgkh4qj5T%QMmQnB&6;gyMTP_{*hkNrppJ76O
z?Z;p9`-}iXzAW2{At1ZQD-a5-6N;j$*>_b#6GDn|G&r0;+N#wXJSTn!|G+pQ$4iq`
z>;6+?_G!>BQT0*Jm+mFvXApFp@cKo%pOMEg))BPahjF(ZklAb#j%ay=g5;xsCOX7h
zH7%@%@T{DzhS<zvGp+kMZju>iB7Ndo4w*J_R?)j9T$^4aVzu`-qg!sFRhq^nhDm=r
zBO?5zpy1$VNSe#!tN;(%^-4vF^dXmW?nbWnEqzI!f7UHk6)+EvztnF!a`*6SMxSn=
z$9%o^Jn(55dPr62LF?HT3AIC+3Si3R%xHfxq`SN`=a|1(7U|sF021qkqjC^6-cfL`
zdp;}PcV;3b)F(DX6T6G7<$8*`q=@9Bi`U)DGBa)b8yD%{Kh?sZ*Ol0V{29gNLQ)~}
z^R@2>*~sMsInwXFt1<WCKuSB!{DA^<P4WBv)3W^)v*FVZ%+~OI6#0*01{xEpm-N|+
ze9u~V$M1+IATr?obKQJJoWE*b+=r(s5-}wB*WR@v&}-)gOji7;8F#j<sj7{H&p!MZ
zN<$PW4`3k~Na<x`3Dzv1SVIz|u%$!ZC3~gB_%VcTcn3t#xHeMkwiQ0t;Cf9q2?f5a
zZ;GdLW;<&)l1ixq6TPSrtJ;l^b>D5eB}RJuAq4Xf-bC%UDohP-M3ATa#85O$$r%(_
z>wfg6w@cXiNM`FW;O7@Bmi~^<C&4Qq{X)><*OcREQvd9DgGJ!bg?Zm)roA$BYf7dW
zo<x3K+K`v4JM8v0@j(W|ngFNwV{g76F>PG0cbz;Xyjq?ewsvdA=pc0BFyeN1+Ff}f
zt7D|J%O}d-VqJBS64i-=tDNqg;wcq~a$wWLv{7Vl7ds2;4m&eSf1u~wcwsSBD%5<c
ztF}f`ZGU>3DP?A}HtAmIBZlyC-xZN|o3+I15_P)VY<Stg#$G``*3s!z8s6e;a0+b&
zZqH_F&g{@Jg)E#xp?l3klhIM+^CJCaXZt_PO6~=Jej8hg)6Vh!x2hG^C_c<DS}AEI
zn*nF4H6gjb+tiKjof2gn-IiQy;;1cTPLXEsl2`R_&ILDivyoqC%e_L>OE`WL?wDHS
z9d`y%GMlM8a(6Fmp2^20+C0A-N&W7pver8OK&e}Z4{c)fp&1-@Skgt0;jEpgrli}J
z@wA|VLH9sJ&=mg>2fAL286rH9^RCS=AFjK)A;czXXX~!}kr0@Py=~>QnHSE5&^gTm
zy&C|(*F}C@vmGqCNpTex&PM)m)?Pt2v$xh@kt(yh?_qfbIj-@L!{W<(yzyGigYE-N
z7wK!v?iE&dc){3HHArAw%RQ6d4S@x<T1fLoiY!FQ7w8*TRJ=)bhxzNIi=^3~QeWKL
zK@2tVAsmIZ+*kxBw;rMaeA0I!qNmL^UVz5C0laKB-Vd<<&p00bL+8UkLmU4)?st_&
z71f|BwW5Z4c9`>zng(6El2>Kr+P}K&tk+0c`uo-N!3=%#^9V9mVnj?AdYxI4D+`Tm
ziCAYHtrV;JrSAMH271lc;f#CD0HpXn%iRCwT(aO$K5g7xY}U;}Pv1upu@NiUBkqms
z!I#Psq)l+v`$BgM!!-u7zaz`4*MFu#J)}}wr$Ksudg&eDNOFkOcI+jvOYCSf)}=`i
z%UJ5dD#xenY$%64kVcs}jK%I;)B@$+(>X-2DEm$3fl`QJn^A^iVBYkzN7fow+w$1u
zHc$rh8bfyjC_6tHKd3Ff3?1&2QOL}yiE_-Hp0gWFP@DCa{F%INny_t&>%vfZ=i#r_
zjOvtZwD6&8Xp`*q`&_W5(pZ&nmEh8uS#mm=WQ%)4!@xRU$RaCMu;tz2jPC~YE0l4;
zN)}A<*`)D^*4y?>bgCPp9%lzX0<ZR2(-r2<1DzKwbQ|M<C~ssz4;y2}lyLPh<qg0d
zB?@HSmf^>`j8^4O%w3?|RcvNi5$``pf^#;ktpR({#nBT6V){F-*ELI*dX@=QH0Zta
zd@P~hH>+~HIol-kRMT&d@L5yvtN8m9_v$KR;72M%g-0Li;y<f1;8#3W?N!vNJPZvk
zuu%80&$frx##eXdbxFqOMov+1)o}#<6m2L0o`>VDMINRP&lYqp64%sJ)(7w?w@g%D
zdyPGivslTox1sAnW+y9yM5WDk`_|jSl|uRIUP1#n&%P%1UP^tW>^z{HMrE2H0TWh7
zE)sdQ<+ZUry7+^c4zUlSBdx)3(I1}>ova@cChxaGf&78S9}}b80+tXU3?yqigBInA
z5Wa==JW!IOOjHjKC#;TLAr)09=avaHddx|;>Bz_FRKii~&^7GDYizbtY23*~v&NC1
zpr$HT%-&_rTbT}UG_w1wc$qb-_g2$DJC<qZR)!g2$`3BFr@NF2<2+1GFD6%ToL+CN
zYE1L{{BF@y)i9AtIU@CO1f#pv>y`oSA?)#VD6_@p5%p-@W#9wgq(4>-%Kc{qv_J0u
zyCk$*MccE@$sq+p0flC&wzfnIT;r0H#<k;#7Bv3vP<bFEbN8J&lV`okm7jX;$*lH1
z2M0em6`UIh&~_`*ePJNi)XB<1E@T7asgU>XTB@#zDVUd&xu57(g8%4B<tQLSY(Iyr
zD?kaZpMLea#1y~vu<r@+`d-<&2o^T{%!uv=`$NdlCie(+NFB9HMHxLW!hxtg8wU*A
zq(AW9{i1wx`!aO#;$tM;B>}EP$Ih#HRNux-r2pQGul)tPCyIW>HVkubwyHsX<06MK
zdF)MvT}#Q<J~7+rq`_wF`%;Gt+6h4ksHBFoO{mVoJg=-K#nX(g*GKZ?0p4y%W?iII
zhaZs6j^dMP+W_}o*+?gmn}Gij!8?yBS9rs3_*t6#aAE&3u&h8kyJ~7B?nQQyT|=(S
zMxt$@N#^{5N(HQ(^U-BwqZv=j-#mZjCRa-SFCn4k6c*(TF^;-6AI7~E3~@J8SkKlh
z7eYMW93FSSieYjzVnIc#h*aen=Zs=E4K(Pmwo`*?_Hz9IBqDZ3D#E6i5fX7%c*P?&
zXew?Ya5m9r=nO*qJ*+m}Uz0tMbEPF<qzMQGADh$pIyYUG6}cO$F;@)wR*F4rJLfvj
zL)r#|GI6)Vw5J5P#t$UJsOrfWwcqvkKY8=Xhwuk%Tx5pAOl_h>!DserZeL^XJTrAg
zY`3R+d(`w(bCto>oXK@BoQ?Dv+VpUR`O98)lo481>?^UAn>gT-9zb=<ANRt1m27mr
zBcb!&08Jz#ml8?2+y|m<{^L6>;nztmLZ({{6Xp~Xo1*qpek~niEMKg5%Gvj8<sg0x
z+m8K1b-v%2v|Fh2p{@n-+v{@5deB$O^iwKlQ-hbYk-V@V1@zx`h{S^XK@WDAhT_6b
zW=_eUVzB~VwJo0155;lEvrWw17B!L)1*UQ`ba8H_f1Y(y(P)2Ey$6!N`-RDzwtCpE
zmEGPwwF~RJ%Yy-$UMCEv(i?l2JE(@8j+hn0D%r5nS7iCiw7=RXJ8a#|uY!7{VIzmq
z6ii9HlY?v(Gv)*1jkcR#cCV=QON*>`p6u^=@62${pA64w87~XvAoM;_4<^^9r$Uwm
zg4hQQYSBPc5n?#P%ULMOuf?us%V~p|Cu+O7w~otiYBRtd<<Vsv_VKjD%s{i=Pjk+e
zBH;nLowfb9;x_+i&%4DtrR<YaT+JpHvP*|@yX<$~ZfOO)Iqn_hIjU}@J}HY_Z(&4j
zQ-&{+j#vMDWtm_-C&%Zp{<KNvTI}c9y@oV&OP;iDdVz#ZmF+gowptbK6WM}d65i}e
zaqLIXKMD{3=y?7C;TwQ$^Zlbvga50&^9*aMPuD$)ihzhT=|m}_bg5FKC|y8$2}J~H
zp$JHaL`8~J0f83~kS;ZJB!nPMs(^Gt2>~fm6Ql$Z@T_;vHM3{tynANPK6~%;<$T}@
zS!;cP)t={m?)&%umQT3Q;)0{ISqzQ=y50`aW()n*rX-vkN>s_KXJ9!=-k5Ha`Q{yj
zQC@r_JzuYq5lPk=c9U?q@MBi6?Z{@m@D|tz_3io5f{y%lc?RXV;^(5*j@<K9qZcJv
z75(i>TXHrh3x6Dkf3FS5@8W29DcdObhO<452}64o9i04}jpgMHq1r3`oVv@)##J6#
z2MV{`q0a$}+K~mMKBa+YeaMqY2h%;-X<EpkKfSQdfq3oit8BSyL4+@{Ov+T4jx0UQ
z7=-k525(H?klppviE)t=Ofq+W#(vMVFQT&1g2(_ZbvflEfn$|SiUPv!L0&fyq~+cY
zebh{2lcN^LTu-`cCKTzJdX{ape~OuAZ~Yb;JGqZ-HBff=e&`PmZfYmOaoh<JWG9zJ
z9bKqp(mFRIH%)-JSn3bY>)~^YsV)NQ>4m1Lw!djodMbuJwnyeg`@<(II);wFL3RNJ
z*YHn~6hOuON1tco{%jontI!eEb(xCE*nLsQ>3!h}#fP=Yn=svU<0RADWl~aCG})d}
zu>Hv1|G63o17QLL50XZtjlKL`xGJP!j?|z}F03jGO9XaAfeeD?tB;otykOm*L#0sK
z&U*18q0iV(C%=T9TkaAUjD^q;vy`RZ-pX=qa(`+WIVMt><+11!xz@9ky}*=E=ws?-
z)wmsU;BFWvr!^jr>bL2YffMbwkw1sxES0kx^VVb=Cw_RH%h-y2SaCA>j_*>ux=Ga1
zMAHt@b?7_*s1XHR#b?q07*{1|5wUf>kQk;rdL6%C*kOgic7!;fV}&T0JWM`6(KEla
zdxwWCKOQMOHp=?j<7HKyEHE#2%f1NX!a@IfbJIPqu0C38;*Q<jsC?>S8t_w#_!68x
zyYo**cevk-zW#hSZ{rU(a#<L$ivUbUio!l1rV6UY+`hk?)yVpm)%MH)d7#A5-D<f9
zdL`=)NUo>X3EaaH{U5hUcRb`M3i-e>wJ=JV*S0dyZu{<z!8@^7%p?D}*2@r>lRw_S
zOUo1gi$d=eL|4`Eb<ZnJk?)C`^PP6@>|>Ykm7}MO8}MVQbu3W~@L|3w1=H;L52McH
zTlO?Rl{gxte`J-`cI-ikudHkys+VZRi2(xJ2N=+TzxvTi%mDx0cfe8nA2~*{TuJS6
zu6LDaQ7)|nzf9Nr#A3>3hL^Siuqlprjkb)NTkM&=^`lEuEsau5_C#_%9#K=aEIuRL
z?xR-WjOLG*g}UUDE)7s!T-PZIosxoMS@y{CH@hVg<czo0LxvdCz5AE@zm*;HSm4bT
zUy*MT!dz>nIX5h}FcZ$h;m-<F8gD7L-D}(U>IRG&!hH!#Uoh6_xB^{<IF){=$COKf
zqg%DxGpfeN)Pf_CZCTLIr>qm;1|<vb<^8YClrB!^k*Ir-D)vbo{5)Z7+@ZHOkxtzS
zuaV#wak7?Efvd#&;YUW7)N%O213KdQPqP|Up*{xzy}?|NPQwmuAA_1SU=-Nldjw()
zOK4~pQMP($PbK_mA9yzF=Op6b%xDHEh{n?`cg#ZUar0{hYgPI*)ETr&a0xi7ZRx}J
zJ!@@iPV?&4m(jXVC7*opM}2LP>%u>P34Tr;RflKPJWKO8&xP?62hQC0me-x1f_%G&
zX7<m;@BiHC5U18zvIRLGKM)$}7VWDW$lq=+7MsW31jh^4Qbt!8(cZGp?OO_-vyj1(
z2Os)fjZ-qVf0-khY+Bo_-*^Pd<wz~cu+rh{@VVoNxr({)F2S3bi)Ij*VIr}oFOM5f
zX@Syu5$YFBb~t$lxB~xXv-9752M(k7&m034Uo`!6&`LwrD6xF=;hoDU8@Xq|n~z24
z@@P++eC3y#5Q|*#H)QcLm&-Hf_sbhdtw;+^D!iaf3$?n8-L1`x)_FS{$&_1PIO~9P
zUdH~OdJ4%zt(Yttb5DUkp$sw=ry}2hnC_vjwu*21JUII}am){|RW~_WA6YdPHr0D>
zh4Y1x&x8ARXsg)7A$CNr^v)aG3vMC6L*wH64AT;yC*QS1cHCaM+@L)1SU95l5l^vH
z%yPW#LStgD4;Voz_I|AXqM$4}0-oS?g+@s=#f9}7%RnAAcg5xmk#i9o1>+o-DZBXE
zZ{j0tu!b_T_slZWn$*z4g`mXM8b0;S_(E<ynyNOc;mIka)0P2#M}2f_)6K135u*5<
zq3e=g6btin%2h-TOg12<-A0^nZ-OkA=C|XY+S2&xwL02~yk~WrG}rxcC}`+R+?R<?
zy*n9V67b8JfneK#QP8V4gN}A{*FGcLtIbCU{hkBQsYb(8YfzW$`8N^N3t47WE-d4%
znv=VTf{k{#gFf}wJmTd;(@$~vp_U8M_ada2AD1>RcKxEbWY%o9YB83t)Ls@bNjB6v
z6<li)ak_*~%03{^K=Huq9(8}_AHDQ{-}k2%|G!mT|J*V3*T?3E9s*WB;I%BY4o&^D
z8&R6V>^0esNF^9k$xon<G`LW1c5-9jZQd%^1;YUP_@;%EAW}UG)2obHd9OQ`0Z5M&
zliZ`PB`*FM%HLDd4r(pt)Sux8!?|G}#w|}+#-)|ztYS4vTn>=0q2I(lSllJEaTFH^
z2zDTqKWBH`8x<*{;?)Vhvt&mMuLPGiuMH)oUGC4ED=E(1&1tutCYcf{zO!PwP#Bw6
z1&Y!i3K}U%AL*}wc6j8MWcF2R7ee{0M(R#vgS}I)N~+^$+PfZ|W1}(4wem{P*T&`{
zOGb?+B1aaUF;__}M^tQg{`kCL_)X0<==T}ypZYJr@`sPlTFSXR4>Soj?uC5|DY(Q)
zq4i)1rC${LWv<bm^o+k3Q#nSxw>K1HG<!&7TJ&$DXCO<VQYuBWe^F>s9R_6~nb^4-
z6Bbmu6I7u?!h3r!KEIL_&O#EsaKh6W&;;7G+JV`0fl-_z_>CnACC8#IVbE#RyxrPE
ze5g<J#b~8ttY-5#WN4_BE<oR$5RuoQAeN<)?~U!C`F?ZXaV>xLt?(B8OYpgCM6;q^
z{~*E~F=FfNS4r=xVp~!AqPzTu*MiK7&0QKYOg=T%)JF`S>4~0~hz3*KHih;M{9K<R
z2H(_3<qmE&n&_A0xI;~{K)dX1wwwiO_B53be|<$9kq%y+WGxd?2D16^BiANq0A!H`
zBeT`gi*@}ogh?fk{p9yKBkh)No&~jIqBm-qV{y1ovH6HGjuWX;pbRYBAY80hmK`;C
z6C^N8dlM8!X=|P4#bU)Rqh1%d*s$F?aKzOe>0&RWF!r=pu+`~QV<j$FybU|uZ%!EB
zZ#k{^lugDhU!N{COqxyD&da_Fo>%hu0^Mkl`;6xJ=5g*A9$8mL-PV(Y>AN`v6Uu9Z
z*0Ogol~7%hmWQm*xAG-Wwd0FrlpY=>tu-9IHJ_UKk!pJ2_qMR50tIC@P?z{vD)Bo|
zDLYyim+3y2<DI141N`~-|DW7teSmW`v^-$6o1+C?NDy3f&ze;c8LL}+{#CfmKr2t=
zimeW_fec}U{}I~qroWv0xdsb;{nD}|A~04angyv8+a2s|(Kl=;#3NP$RZNHKt^2)}
zm%Ijtq&&8zVi%m4mkKILu(DHX!`gzyMkJ|1e4;yP7B*~p42qN9Xm0U0NN8(lm={Si
zRY)ngpf9D5ZU}$ygn8CLZlL<*Ph`!`EO{a=7VKQ1KG{(_g$Xb-z(>Z53j!LrG=PDu
zsEhjH@6S>S3_0?wv=LnHVwO_8ntm@-sZ2|c5t}JR#OV3mezQpj<ftbfLByzyB_p3@
ze22HGM`WPsbtmhJso9_=rH~Iwki_YtV3S#X?<2fjpkQvU&6A~m2Z-Waup|aS0`0QI
zc$=KW6?=vHnIE!xckJTw-0<r2i>dvv9aD^rUrj4np)}5#q_RDq_N^W>C$~3!cohSV
zQ(^h4QeQ$`G9`xLqTGry4Qt2hnjOdN0*33{pQK)`4$O>Sb}lfpe<!q2pQ@+W0dJ&w
z8KRGCWmuocfE6oYm@|TaX4rQ=vs4cVCp29hW`=V1E)J!?wRgFC_k!Q!N<WkaUhWH)
zu};}un=siKC06cHSC*wPKhu89_v6`4x-9#45~M7lE(PSLQ~;OSHWkngT<wCtXuZOz
z53nnDl#J{b!Hll9__!ZeQ_&ziDz(bI3tHa&%xPD5Z0nkVaPzCr=VRZ0T$`wk4ptP`
zwOwjBw%EzNt#yoDK7iBOx_h7o%Q^w)!i_SgMKF~!68=J_ncI@o^~l+BBDp*?W=r<1
zj+0EMk2+zV?Kg1R+rHgP_Z8l931uIE6Kp_9$}C;kg>jHBRv2U0p#izkZ{@q@)=vTh
ziT^h~(Vt?*4oh!aPTrI6RX|NugvLXhif4(7Seu&hxJ?eGuHvJs6F+APOD!{t67NCE
zBIlj#S5&;}&K1Ku<Tk+g-&|OAmW0j8!Ue>d)vksN1?TQ9QRQ~4H~Fb+vse08tQD`D
zzx{ZmcY1LM0s)F;dhcHpB>2#>-%;T6d2GTC*hW8XAm{E$$tKyNV9m@D)Um_n+K61v
z9jluYx?Qa1<MpJBhlJ`6NbKf7mGJQU`q{rzziZQC+s-30it@rWbNgte6jn7GKI#eQ
zwlFWtzqM>(VWFu^lW0SSfPF#wmEb^;rWb5!p&6}Vd+<%Q%r7>~x{mGZXZiY1Qi|j9
z-brhljMz{rRE4}kkK-plPhjan=n9A)qnl{mST*?YbE3$#*#Qewa{!Bdod50im+$Qb
zGDUntkTb0~f6w;GpRKBb1X45H7Vo|cU4Oo3pmz6s;N%w&^M<8;fLRBO3zeWf5n@u(
zkjYaf`YC7gwg769>0x3u&4}CUQjgi(Ig6BW?Hskr`-^5BKbN+o^kp*&GOo51*ofs9
ztXHchhh{7rjIPFgN|Mv!j~f-zRy^<ErcgZkU1svz$-(F`nWsCggP=|S8pca_8ec(h
z?O0T92+N&=a-_xt`xJ}6DYrRip&36va+3iU5bwpyC+w~`?Qn*d_>$y8w8gn8JVy)T
zyQ7rA+{?{?=|oJr`5`3YngTWA(QLH=s>6L{;N@E-=fUU+B?u5=8(p-w)m;Kb1-TE@
ztO2U1yJud2dwGQ&WGYoQD^;hdAdvav(pQsfXX?1BZKL6}kx?k;5ED>jh^HNH2F?=T
zDo*G61%NXuyzXa)DwNG=iapt_5d(Q6dkS8tk0$BVb7Hn&ihw28c6DSVtbT7CJ33d7
zgi9TTo;=K{(~mUqm4?t+>X1MT7@`wN`AL+%a##C(e#tMFUa&osqV{LJXdF^$<}L-;
zHS2DqFX?)$(28FoMuX|qyn>z4LP^3-qn1$hr&*x>tl}3D@pmr~)Ttj*raqeW3&W#a
zZR^ixH!%n0x!5q__pX{5+L&v(yM&f(B`F4eaC#(g8>0KXl8|a}5H;!LaNQl~GHS?4
zWK)&f6Z`HL_S>52f(waHrRSiJ;+-uS=uY;G+?(F;dA+`(ks5t<{ry-9n(nz@Yf2LG
zr%P|3mfs{>!(Lj-FACYT!jb)lYbZI=eM~^i!%Q<CDnemSBvv=gbkx^>WMom)aE{{f
zaJMIat@?I(dEyY4-U7K)yNbt0ZY!oBL>q5YE%?eQS$pz%7UW*^GSA_|vB+tJ%pLcc
z!&HB{N3VKUubVzi^yYN#tM`3$Is_9&5q&;}fG1#l71*#}6jepQ74BBY|7!C=Pj#2*
z_aTv(XN0_$QA;mDK0AgNX>+_tQUUp$^StBxLoCD{9W=V7@tY_wfYV+wpPA_@cD41O
z;G65~?9o!y!TG$s$mzP&zhzHugdFI$gv=#D-F4!7`{AOEX4t~YN$bm_nkOIX;_PiA
z=9Ot7ksXZ+F>41fk#y0BOy8g+Y4vjkw?9!0Xz^Xfm%H_LWc5JCpsV0Zr(cf6!(n_H
z2ulc2oFvO_qwC0?*(QrXys=SF>vuPpt7S_ZWV<VHktJj{Zgs715Pa4XPNdy$-7iZc
z)B%aE$P-cGF)!doumeg#s*Yk4g_VS*BWY-B3`b;F6iUAW;;jD^95th+wKR4^=Yf4Q
zN#gEH`^%Mn=S?q3CEBzt4PlaYaC57%Ge-E+l*^I0EY*Is&?mnrtgpH#@6TSXQMI<b
zU@kf~n<HuZ_MLHG!Rsxa3Ou$02@2oKG9A4))>^l<GT}=*lYWWN_XL@}qE#GolfpVl
zv%ik~nSxp{W2J~_gadKS1Yn@t9xIF1J{Hjj!6%ZtH<BNYl`ln{laMT-=GS!%PrCby
zLc;f%@w;4QUZe$ltFf`~#BHt;D#&j9zPSmqGGhj~sG?UXad6C$k}p3Dgs+bbM;R@Z
zh>v`A-veKz{mNv2Pqgjb`YkuBGhAXcq3>JMU&a*=R4U@Sx2XIV=A;b9l|1drY}c<I
z&P$^LDtt>kOy?Dqwb>>H@65OX#O1sP+f4n&pD%L1ILJi25PVeInEDg2Od^!@p+Vwq
zWCM|dC)?j%>oRD5xY|Cz2VAjqO>@mYjD4{vfQl;xjCW|)E`S)ILD{)Q{U;SJJ}S*0
z)j*gWGi3M*Jukn5rlaPBa=51W%jCwhBksQ_d=Z)26Gw<q;|DfxbXrbLlO}CtYApkQ
zYh_1^hS=kC+M7=_1EkdOgN;1-`2zKGjZxwI1&LO+U6-nAm6MP<5j5B)2Wqjs#4K4e
z(4wyGgK-s+5J)}2WT*=oXWDl#!Yw)4#;S57Soo>C(1^Y$U4*DfY~>bdxL|vB%E+d=
zGK6+ij4b7k!(Jup5=^UAnnbfIa{|k3E!3o$EPFh1A?Egt@l@}m)m4X><2TqZS(s4{
zqxcp$!Bp#~{9_9!R7(rt{Fq!?jrDK8C?+(ZbX7tO%oK*_pMX&iHZ}^a;K_|(l~QuE
zN}R>9t<GE;yLUxBSpmiYCUWxV6p$^6IfcZaQFTBsxUWM1$Al>2%IGw@yj?k_NA)p<
zZ~E`MRbd8`dVk{=6y<pOR``k@W*&4>nMZKy{3_m&;gOJk|LI4W+{Q>V0+%1h++0f+
za<I`al~I*(W$ykJOU1b9=toy-+?7`o(C0grtl<XZ<stTqwp9A1Q#Ue8yFb+Dq<vJ)
zJfI?})pfBysJR&s>mKnvtE{0Qr?x2lMqyDdLH`Y;JtK6v@T4_tC41goLB67ajRy5r
zW<*HI;8UES@ocOA`Iq%#uJ1=pbx$jS@wp||r(sn(Z!FO68@Ly;8a#jOYaP$p(b_N>
z0T5-POflD*@pVDI+x0hILeIf&MeD-1bfi>y+{ODY+_8M%CXt>4RUe3EZwM8%amgjq
zM|Pn3ScBlPAqG&~a%-|-Li@AXHl8f5T`A4)3hiPK9X0%SAFha0bIRg03db}S%&@0t
zPds<4^IH`guz(s^i1z<SEx~_B(`}%}Oz|)NoY|cZuY?+8+S0BalTVp=1c+}Cm|3Xl
zvzdM$#!e3>230Y>q-(ouFZzMk>&=i$xU_y4V5IwU9NfLoN{0=|F^d3V+oEGm6J%Z_
z$GX`_Tj`NK2=lO^`Sz{AbD9vZgfpzyPD(1s^7x!Lb+mJ|=6G~m=~`NCW?6+SNk0PW
zvLcS^A=IQeiU0Jt_WtKYt*`hi_~reCOC7j=KpYNuLh2Zv<@{8anZ+}&qq!<SP{yG8
za&YD7#n3<~RKe?+fqsE;==12-)an*w+ASZSz~25*3zt=b$G)`!NOB#^rgAeNx&2gh
zBDo8JV<$^3Ff8g<xk$LA_4)>Le<@^V?2mc9JLk@a<uZI~Zs%ZKfz;*fL|?<VM#1EW
z#kvIULyRXGg1e)JIyk6cHki{WEXchZ>3>{;x!#mXQwlq^I<cC+fS<w4LgXU%8XB5L
zC$+Mfo?h*BdnW;L<a{>#lJ6z^k@~?>vdMQM6vtjK9H**Jvxb0saiff^WwWSLAH3|C
zDU+Q|<SeZ@3p4x>%K%X;G|<}mMKNQ2@<YHQCw-u9wEk3E_@^Pvf9%K;=N}cKgP-gm
z#DT5GWNJ&v<^=AnuKKx_YL~?aW6Qf~{lH^R6y>40>Zgj+!{p;^<8!Vel=uoZlB|b{
zdKX(RFK*NRqTsR(@SA*4+e`vyvQDY=Dq2gcs$Pi+PfyX7x?&O*>JG&pwl^pg9H%r!
zJP!_455{iY^5m_0<CwJ5?~EQEWW8Z4IxUyn3}txFC={QLhkp(dE3R0#^nVqiX!mjB
z4S!I@TxGH+7xGn)5AWdmi$1m_O>b{~nIv7K?;Cw-h54Rc8_U!21x>3%+%ldMKfTFW
zDAMLLP;G0BlFmoK9S__=F`g*n<G~!3tm#p*ty7`sT%Aw(3&~j*_k+MZ$MAy^wG{2!
zZe>Nv4Ncf{zh7S+)(Y<6b{@8GC}BHkbVvj8Mh?q+L#-Fh)AlCkt0;O`Da_O$T1DHj
zPu`pS2IP#+|D&7{+q-{4Q2MvI@Be8{{=-=AUuz`)UB7q!lVQ@oJZL(j#_}D+2~$+V
z@0<!KXm|S~G&6r|y^SeZGxxWjhBHmEzkA0rJrvbx)IRDf)XX2W@$cb9%~prrDA`vK
zkv}SB;`CM@dHbJF83ZIuU)XxW<MWQw^Hwg0)XL?%5WPrYeldf{;pnB~2_)b0(@w9I
zLl>8gUlbH4+<9nYq7F&hRY7-?!zp^3^U<io^{c0Pj$v~{1VkmwZf69YI-z7xxF(z0
zXg2wVu4U{Ev*d2yz??jnJ=bc{d0(TCrNa4Z_<(iuDIcRB$n`kOn|XDL?SC<p3WGa2
z_7lSQpe<%bpCAxUV@Vx8Kc29$<j>r_XG?E;yWTc)OV?79*P7;2{g81yKX;&`WYB6|
zxxfK<q~Tk)7WFyjzIql~>3&#iYQOJ6a(o*E49noi%ktgI&>n}xmBg&+tf}SncrBG8
z^bB45c<DXu7Cke}Bx&Eagm5SOR=%Ex^sS#_hmCXjVEvnjLF{?5AwlDXhkdffcyR=a
z5=OIY!E4Q43C0I#)4;+T7fx@x`~oQ7W{C`L`@xUS&!uiIDRV17I(>`}W?FW%;0{5n
zjF5-7kwN+6{XTu{uUoR3oTm5poN~XZvHXnu_BXD`XJ7`jN{Ad$y&cR>T)l^%{q6yA
zS3SM6Y8U(cf!@#V58HrGPK{&&!|>cDmJn!7iMn`2Qx2ZAg5K`|3EifvVo44Wjdgsv
z=dM`mE%y1Pn9R;I;c}+SJ|A--0zdxPT8y)Cl(bq`*vL#5^!6U;!-{DQxg96l9M~o;
z`dlPw23KzbzM-}Osd8CcF)h-_W~<R&SqG@W|8pywE5p<eTb2-Unc29SJC0+F7yOjZ
z9))|uQZ}o5lGSU}`_?{7*1Ug3uSy5I4+Wor@jx4j=9k)zAKrvV4^F$khkwq;z%3CA
z;HVr%xZTWDeZoc8w0UWw8Lg8M-lIg`$Av-O#oZQkoh$o-VwGLb`j=-1!qikIGW?A|
zsqfVvw#X$W=9;W0x)qB4d2l&;8O9o-i$DCLPvMM~#8>RDD_liTWY61mT-J2(B8!!?
zTLeocTAPG4?f*$6{<B#8?|fbm_^S}~KYB3z(Y`+nLQ2$QSs~85y-;RW%lHq~fvpZT
z;f0UoXFk0QKNl}$%kl%pJ&xuLd88|4lvp97tG$I;(R#F^0uU0#tEecaXpV{hmzb(b
z*KdZ)&Fditp6Xei4y8I<0v?C1tG@q94&`ytCs3@}#Iau@?r6I>e*WS<i7HUwacODo
zg(q5@6oP9vvu=8~&~`ojO-5Dsp19PCcr=*m1`(3$Tsw~yoyZN@rM7<!Tfdg8Ns(<%
zo(niOD+}Qpqwn;5iA0C{lQvrTCGU18*NG9E4z8!I34t)X4xdIsg!%Pq)OYpz*1g$S
z63+1~mYwzqxhW|wDXY81+~s9gR(X(;x%agEag(rjw|!5CQ9P^cf%NmZ)`OW-r+V`3
ziJVRz%5OUY?z_K*6niYceaC;|w@RqYL)HFke5xIlvAMje*1w|<0gT(fBM(vfMgKnT
z`)m5px4$C~eW1e}`5*KU3d&>?aL!!iYART7DgxKLSQwj6g4YjQ^(p6M^V#x>vUOJ1
zGZ%y-Vsn?!S3nbJjT1!qa@b;c-8N@mj$Ty0A8z&vcqr)DgS(g}{dFMn20)NgQZszM
zd*r?E0>1zLBs+vMKjZ;{Fk0Vj@4`|xD~jxSG%N9xQ&Rp5TO$=%d;$R*vAz5p6saOo
z-8igspKiP{OCVF*LE>%aSz5+tUbEQ|P2%CFXD3yz1r*Kq-**u$h<YQ?YG~qa1`es(
zS)<}V<qy6PP7>M3i0mv&A;^4BL$WkkWImE)64=c_zE3hH{B$aI`_4g%HRa7_<=8Ok
zv=jnU?N1VpK=k1qV_lC^ILw24`<G6UFp$(L%@*u(z@Y6}vf8(Oe(#1Y$(cEE$M7E0
z<E03mbzv;vgY<kkafsmvNbZ=>IzN#~)9vHpk@+BXO@jUI_6s<c?<CPy$fY4^og=)W
zoFaWS<w>l#;lN!svaX+9^>ZmV{(=U7UB5eoJK9HjVz+~fGD3$&ErqfRi_y7^c{a0C
zDQ;;ELevL}?+5^p>2Kg<WaE>M|Al8CkC+Kw5*YfNFzw$B6CN#whT4gArDh3*u5CN{
zhV$D#pSL|dV*@0~{{~ovNNQau=b)R#R@;;lw3OFfGAhEyJCi6Z@_(XQbDSwT3-#vT
zo!RYfqd(Jy-@#QT6kR;9>1CX=l_w2(UAuIoOlVJd%5o?cLsBO494?eA42;N+Jsnk<
z#UL<jBKphQ!nKNiB}bZkN<8-v$#tYPUmaR#zds{n_Cc-sQob<7J#t)d_J06)g_yd%
zhf|N^c)mg6&(Ik<CN<|IEC}h<yN(MzI;beZ0_!{+DCs3VuweKdpx0)~elCcE1jTu7
z{>UfVw)v+jY@sY8O3Lmn&-ac!C_bmbzV+(NtU?u472@5gAXyPje7e}5#q(400XWdz
zCzg6qaM=^_MDYqVpDNRiFkY;hIiVO>xpDkc;>*)Jv2<)^AM1jTR0aTr`dlaBX?Mp?
z43<TOx?dzNU;WKu9L-gEb6&p(S*$aXpKq_n1}EF*n;eCaSRrU2ws!ss5cth~8mWoD
zuMyC5d1S}yjIsUt{RqmF1lJQ4MDI_UXZbN@dYreU_CwGG8+Nyhv$utJfu<AnbNC;%
zp1<$=?`S`#`7G=md@sjJ^mSYd!=O2c)%b%$U>%f#=<6bWjG9iPl_~LlVQ=N&fqG|l
zh7VZ|l^uwg?MU0$y7cFBHeba>`B$OOOqwMV`*OU@$BVaE)4w~KpN}s}@=Kb|0gTA)
zGlb$3I*#Jg^K!%q)0QPVpDtR)_2c@Lf~q8YNP2pE^4JUAV8okN2QBpQZU7t-+upq#
zW}pfTAU_Xt0oZunnmX(>Q>UTT8F+<D>abH<!_OO@r0=D0g@xzqn?o@rX)C%U`5UJ}
zFsC?6-7;vuUG7Xv*ZNU`<@5y+O7t0wq7x-p`xpt1JT88vLJtYB*Q|$D=o=&&9tZTy
zaB3yoP6+)#k=}hT*;>2<9>xPAx}tsGy9bukYz33vvvxnr&r2v)DVPkle(rJyDmqls
zx7%wcZd!|)&yLFdV*=q?9x@^CFDH{Qgt5oD0SIFy0lL#n>P+(y9nD1X`3&9*dz8)3
zE*@Wzm)U%7X3EN>B;Y(*jFk5>cYd<g7p|Lr)cS$A(P_ifm^z~|;raYiLFlfA`>j|h
zd-gl)P@_{;!Fc$Z+juMf7J#oqR}!;GG5~m(Wegct)(~FS<FDoA@iPD2F)EN<Wg%=M
zgV2wdn(Qi*q7AiIOXc}0lFSGCtPanDW!{(TBN(ifzI!^cvENX<;=3C=N-L(V+ovo7
zMDy1IbN@w-Uvtj+({5Q)|J$>G&Y<wBq_?Kph(nGv0{SiC@tH$J?%tg2sCw0_FJI;r
zb?z|pKWfi4VfLdiOH5x4a5hZ2bauj0Hl^;wV&iGLn2@i%EzewjsV>%bxE>(nuCA{A
zr7E*Z>q10eY`=&{z;596YMY+V`L#pX9q!V0wLGg43z&_IVBgL|Vs26r8W*-}D*&&P
z%uc&F$M#5w5AGH!)Aa3v&CIR2OT)>BFLVp+iGJB%6LMQ|-T|wp5nll&!Py)#^amJ|
zd~gS^v1L$zQK>zMqwNX;tU7OOqoq*-%SD$L3Vu=aYaTjmDN_q*C+UV5EYeSV9+VO_
zo=r4ZnuZf%)Dn1wHxxUoTc%WgBnmiiwxkV!w>U_sW~C0&&2Qab$jDok$ASAQOt*Uo
zJQF5Wj5Vp1at&x}`UgN*vv(=ym{Z1+OamuWQZC7Ly8sIznN6VVE3I8`TVA+YW%U)U
z<zRPODG~hs((#$(&*e~1`0sJ%*aC>P_(E4sgj`nKM<{ZDj#>Gh`^)j6YfG+;25sE1
zS0_2}g-kDJ6|pM9&X-n34FafZ!fBv(#4ffnu^4^t(#Oy2nxC(wm<$P+zZjp69(pFt
z7sADqqtWlsYLq~mXur`n)mwkLEMx05qMOX5u^`)sKg409RCtMlU&~Q0gbP1>sokGi
z$rL6<kdz+q7-wyF`gUC76M}A*0-aHzpuD`+T<xBDm#WZhQ%#_yPI~p1KJJf~ox7y{
zPdu=HxzqmOxSQBN6SkHSf98%*u&kK2)&Y)dIv{CR6Vs&--i6M+ktW)e5at^bBl9WV
zh&kq<pk4xJZK1P+k??*dWs_;E2pdwNny8%Vw4AlQg3@|gBp6qJpu+hI`%v~WtMRAv
zIxU%2c2T{ZpTEDqB5|wR!eYyF9G-4yTCmcHv<*r=p?3=F#_-QyuO5y)yy809A1F{?
z@%0_Pt^~^OHMoF0Qzu=$<%a9HpxXb{6`HY<h0EeOG#%fm*!wEhclA>f3YGFCf^F<+
z)?5_Lhf7J&#a70EvM&{ZzNG<v>pu+%zA1=K^S#Em^#j#MmKCKB63eIrpWM9o60%(y
z?!mm`e7sV&M8{;9aDS|>l_NmoVVcIozOs17yey#bKeNOdHDs9ntaN|WdHTRxZknaP
zDatKIphnHdTNpz^$C#DvYQc3(O!ziuHXJ7_vdU4|{cqq(6ceGg9R{A@)EX6&QPef+
zku$J>W(XW4%M4t5G4eU>S*N3#NN$F5n}5-wTxBrwe+-P$v?D-=z^)#Of@W3CCI_*{
z+DFa3Aqm5A_bo^3-jqLSZLP0KJ@$e+r!k4Rd)+qm;(DBub&%iiEjiqNY8*pU>`dd~
z0RAxx8(+o0AS+w&wOYiNMcm*{GaeBXvLSlWT4B>lHEl~?N?ibQmsS(!@G14$UB~$5
zo2TOXpco}?92FtFBcKu-4a5)P-y*~6$AX|@g`(v?AKc36K+_nRkXtmF8vS2F`sV!`
zPZNJp^qzFx!6;4sfS<?%OJjs?9-l^&e^KyUn*=ItI28hzw&??<9X5)52a{S-N^D*<
zEy48&j{8BPMoFs7Dfzs7w;<1+Xk9+!)lk)#0-y19_p~Bv;F@=?%+IV_mJdrQFC*UD
zXM=CQ*5h!t^B=Ig{F9N2)F)ddQx=E#zI7<us)G;)^9pY3Cm)~IPu3z8k8kFEI9nZJ
zw<OB?Sq0QILB97<t;nUy-8A)K(srkiden!yB*iOb9A^gySnl!DU=RYtBZ=W1G*3Y3
z(Nj;l0DoKP+!M{E!1HyYPkqi>AwLTC$7|U;K9Pt?XM6Gb^>Ii9@)+EIe8QxVKpA3%
zAL`WE=;yu>s){wLi*wA>ov4fXDujQ~8U7A3*To#i@VJkk#<-?x@E&CiA`T`I5*pTN
z*%*UuLrdZPW8C=g8c|{*G6>o!&Etqje!uEZ2_#d+65jc3x!=b5p7F&+-MJLdiqWyk
z#C;DMFvYU$i(i;`hB4|wwIe&TuaB)}LRyly7{OEd(FfSCz5&CMUk^SGOS?7@G(Ktj
z2=F-NZ4gh6#dk%Gyz8^K5Y1`u_lbx5EdL{jm12IJuh^Rw8KQe|kRrmom5;4g>jrX$
z0I;fr!5Jz;<q6CI2w?D=B%|!OvFWG2GC!=d+<bZvn8cPwLw!_`$a?4VpdQ5yv?d<W
zNl%X<3y#-UfEK~AsQUy}@I~wSfS7yr6OPRpBYWx*_A=$wLp*8HhH1ueyfJ(M3_8m%
z(C|EB({l0`9<~}{W-(cB*e<ONlVtNl?r?Hq;!qq>;LZCrFf?d$#!%^X%A?1yEr^$b
zx?CBD?)J#&`24)7-q3d|Uu|opz2L&e;CkQTlgoK%UOauLINMx^Lw)_2(*1l$z&Ogl
z%caD5l1FZAwMD`C(_0~WdeKZsdyW%><eV_YT?>vU{GnKn39rKs#aMFk3B1s8`G?$P
zEFRv!yYW2wX5P!+H8CC|FOq%;xPDB$q7XTmM9X<3J=5}t2r)SwXv~&>C`m1j{(9j1
z;4O>GrA*dysT7Va#$3DdEW0@`VC=-v#mJYiYXQC}yF3>d<%E*iqOkA`8(CQ-BeyYB
z59jm%C6{ej8~6EkgL^KLQOX<;@WfEMg>xZKChFXwW+va1)Cyc+53;YJYN|%-(nac4
zTOMC$ym(>4dy<w3b-f^whWo3&j_{7d>8Z(~jpa@u30j^@>iwdq)*CvAl_gm~J&r?T
ztR^E)d4accQxZ4t;^JXHvZXr7xcdElu7ji~r?~Go8O-HB_j2O9<j(Vlgnl63O<l)~
zU~LFnsX2J}`cF92q>}v7iN104aHiJmeeo!PXzHtSpRPQsWi0P!QYeq%^qHq3z@wgn
zsIc&M<V1bkT}_p1b3eA2dV^(VG)gc>Oh=wMb=oC-@5I=Dt0v9F8xm)2H5(84_e13X
zxB;(hhUr{0jBy5C{o_Z|;Y4+X%RH!B4q13ond!(M&*v2=*~N3jZ74I_d8xMMBX>WA
zyv*vU06?!~0f1~93Zhstf0{o=ig#VKfT&|S_PE~h&5bjw4fRP9Ax#WXbD!<rn|-xq
zh2zYLF$+#_T5<HmtVIy(+JRX%sAX(fMHD?ID&ker$)Ap}RCjjRZLIBBJs+#Vg*JAe
zQc1*dGj#)XNERVIgkcGMc@4vSToLQ2t8p*K^i#55oc)_8S)O_NNHfl*<isR%u1Cos
z^T3FF#%u)}igYzLwroCaI00ejJoh5fOE6GN_sZPjx%<I({)|JOJ|4KGRM|5r<B{hz
zuf0-OsW9udQE0^Lx3}DXgg1*(xen#I_>C-wqosvkD2Ltr^evn4O;D>q?Ui}z!Gglw
zOKu?0jVsib$)fa&7aFO$b}qF>p{&Kq7RzR~Zpf46>=*mLikppQ=mexLQhv~4sBfvi
zH1hE9F5g9rYPltgy^Ff9{I$K7w5%DO?Z%cG>m3K5K0O9hv)my+cD3kmZ;TWjO@sho
zNtBad=W4`ZC&ngc2~O0k+^VOOAa)p|$ISFB3TR4j1vLQ-YM<VW;4X90Yzb3?{GCXA
z#1;fO)TbbUm7eSCNwgDsd=JiHz2WC6IS^fAJvCQ!a%1K0rYYtYjh&+*_<2NL&W@-D
zw(xYrzZTtFq4N<~jBD=~g(BPrGQAe+4k)F+BaZ%PW<kmLPb$5$|6u<=#zXj^mGH_5
zo%-}~AcNFJTDxGUQ1p0;?Lb3Q^y2MQL)o<OdrNl&&+%xesc}k^=oDRlFFNo2ovKSE
zTo?jw7)1fzOmrxKb2S=6Y~|Iw67FD4E{5caJZYrnc*{L_=p;5^qQ3R9RH5`{ex7w$
nStzjnB#|fMk0joIW!wLsUH$Ksnf~si{H5XhFWgS`Yx;iyo?w)7

literal 0
HcmV?d00001

diff --git a/docs/guides/bonsai.md b/docs/guides/bonsai.md
new file mode 100644
index 000000000..d262873b6
--- /dev/null
+++ b/docs/guides/bonsai.md
@@ -0,0 +1,75 @@
+(bonsai)=
+
+# Using Bonsai with SLEAP
+
+Bonsai is a visual language for reactive programming and currently supports SLEAP models.
+
+:::{note}
+Currently Bonsai supports only single instance, top-down and top-down-id SLEAP models.
+:::
+
+### Exporting a SLEAP trained model
+
+Before we can import a trained model into Bonsai, we need to use the {code}`sleap-export` command to convert the model to a format supported by Bonsai. For example, to export a top-down-id model, the command is as follows:
+
+```bash
+sleap-export -m centroid/model/folder/path -m top_down_id/model/folder/path -e exported/model/path
+```
+
+Please refer to the {ref}`sleap-export` docs for more details on using the command.
+
+This will generate the necessary `.pb` file and other information files required by Bonsai. In this example, these files were saved to the specified `exported/model/path` folder.
+
+The `exported/model/path` folder will have a structure like the following:
+
+```plaintext
+exported/model/path
+├── centroid_config.json
+├── confmap_config.json
+├── frozen_graph.pb
+└── info.json
+```
+
+### Installing Bonsai and necessary packages
+
+1. Install Bonsai. See the [Bonsai installation instructions](https://bonsai-rx.org/docs/articles/installation.html). 
+
+2. Download and add the necessary packages for Bonsai to run with SLEAP. See the official [Bonsai SLEAP documentation](https://github.com/bonsai-rx/sleap?tab=readme-ov-file#bonsai---sleap) for more information.
+
+### Using Bonsai SLEAP modules
+
+Once you have Bonsai installed with the required packages, you should be able to open the Bonsai application. The workflow must have a source module `FileCapture` which can be found in the toolbox search in the workflow editor. Provide the path to the video that was used to train the SLEAP model in the `FileName` field of the module.
+
+![Bonsai FileCapture module](../_static/bonsai-filecapture.jpg)
+
+#### Top-down model
+The top-down model requires both the `PredictCentroids` and the `PredictPoses` modules.
+
+The `PredictCentroids` module will predict the centroids of detections. There are two fields inside the `PredictCentroids` module: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the centroid model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+![Bonsai PredictCentroids module](../_static/bonsai-predictcentroids.jpg)
+
+The `PredictPoses` module will predict the instances of detections. Similar to the `PredictCentroid` module, there are two fields inside the `PredictPoses` module: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the centered instance model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+![Bonsai PredictPoses module](../_static/bonsai-predictposes.jpg)
+
+#### Top-Down-ID model
+The `PredictPoseIdentities` module will predict the instances with identities. This module has two fields: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the top-down-id model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+![Bonsai PredictPoseIdentities module](../_static/bonsai-predictposeidentities.jpg)
+
+#### Single instance model
+The `PredictSinglePose` module will predict the poses for single instance models. This module also has two fields: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the single instance model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+### Connecting the modules
+Right-click on the `FileCapture` module and select **Create Connection**. Now click on the required SLEAP module to complete the connection. 
+
+![Bonsai module connection ](../_static/bonsai-connection.jpg)
+
+Once it is done, the workflow in Bonsai will look something like the following:
+
+![Bonsai.SLEAP workflow](../_static/bonsai-workflow.jpg)
+
+Now you can click the green start button to run the workflow and you can add more modules to analyze and visualize the results in Bonsai.
+
+For more documentation on various modules and workflows, please refer to the [official Bonsai docs](https://bonsai-rx.org/docs/articles/editor.html).
diff --git a/docs/guides/index.md b/docs/guides/index.md
index 7eb55b2b2..6d773d9de 100644
--- a/docs/guides/index.md
+++ b/docs/guides/index.md
@@ -30,6 +30,10 @@
 
 {ref}`remote-inference` when you trained models and you want to run inference on a different machine using a **command-line interface**.
 
+## SLEAP with Bonsai
+
+{ref}`bonsai` when you want to analyze the trained SLEAP model to visualize the poses, centroids and identities for further visual analysis.
+
 ```{toctree}
 :hidden: true
 :maxdepth: 2
@@ -44,4 +48,5 @@ proofreading
 colab
 custom-training
 remote
+bonsai
 ```

From 1717025d61c0b7cd5f6a65f0d51c63563a442146 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Mon, 16 Dec 2024 14:26:24 -0800
Subject: [PATCH 05/18] Don't mark complete on instance scaling (#2049)

---
 sleap/gui/widgets/video.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sleap/gui/widgets/video.py b/sleap/gui/widgets/video.py
index 949703020..b55253ae7 100644
--- a/sleap/gui/widgets/video.py
+++ b/sleap/gui/widgets/video.py
@@ -2275,7 +2275,7 @@ def mouseReleaseEvent(self, event):
                 self.parent.nodes[node_key].setPos(new_x, new_y)
 
             # Update the instance
-            self.parent.updatePoints(complete=True, user_change=True)
+            self.parent.updatePoints(complete=False, user_change=True)
             self.resizing = None
 
 

From 4728abaf56cbeb78fbe3538bcc98dcaa5ce5fb90 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Mon, 16 Dec 2024 14:50:41 -0800
Subject: [PATCH 06/18] Add check for instances with track assigned before
 training ID models (#2053)

---
 sleap/gui/learning/dialog.py      | 23 +++++++++++++++++++++++
 tests/gui/learning/test_dialog.py | 20 ++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git a/sleap/gui/learning/dialog.py b/sleap/gui/learning/dialog.py
index 2c2617036..bc26d826c 100644
--- a/sleap/gui/learning/dialog.py
+++ b/sleap/gui/learning/dialog.py
@@ -637,6 +637,20 @@ def get_items_for_inference(self, pipeline_form_data) -> runners.ItemsForInferen
             )
         return items_for_inference
 
+    def _validate_id_model(self) -> bool:
+        """Make sure we have instances with tracks set for ID models."""
+        if not self.labels.tracks:
+            message = "Cannot run ID model training without tracks."
+            return False
+
+        found_tracks = False
+        for inst in self.labels.instances():
+            if type(inst) == sleap.Instance and inst.track is not None:
+                found_tracks = True
+                break
+
+        return found_tracks
+
     def _validate_pipeline(self):
         can_run = True
         message = ""
@@ -655,6 +669,15 @@ def _validate_pipeline(self):
                     f"({', '.join(untrained)})."
                 )
 
+        # Make sure we have instances with tracks set for ID models.
+        if self.mode == "training" and self.current_pipeline in (
+            "top-down-id",
+            "bottom-up-id",
+        ):
+            can_run = self.validate_id_model()
+            if not can_run:
+                message = "Cannot run ID model training without tracks."
+
         # Make sure skeleton will be valid for bottom-up inference.
         if self.mode == "training" and self.current_pipeline == "bottom-up":
             skeleton = self.labels.skeletons[0]
diff --git a/tests/gui/learning/test_dialog.py b/tests/gui/learning/test_dialog.py
index 3d77c891f..389bb48a3 100644
--- a/tests/gui/learning/test_dialog.py
+++ b/tests/gui/learning/test_dialog.py
@@ -7,6 +7,7 @@
 import pytest
 from qtpy import QtWidgets
 
+import sleap
 from sleap.gui.learning.dialog import LearningDialog, TrainingEditorWidget
 from sleap.gui.learning.configs import (
     TrainingConfigFilesWidget,
@@ -429,3 +430,22 @@ def test_immutablilty_of_trained_config_info(
     # saving multiple configs from one config info.
     ld.save(output_dir=tmpdir)
     ld.save(output_dir=tmpdir)
+
+
+def test_validate_id_model(qtbot, min_labels_slp, min_labels_slp_path):
+    app = MainWindow(no_usage_data=True)
+    ld = LearningDialog(
+        mode="training",
+        labels_filename=Path(min_labels_slp_path),
+        labels=min_labels_slp,
+    )
+    assert not ld._validate_id_model()
+
+    # Add track but don't assign it to instances
+    new_track = sleap.Track(name="new_track")
+    min_labels_slp.tracks.append(new_track)
+    assert not ld._validate_id_model()
+
+    # Assign track to instances
+    min_labels_slp[0][0].track = new_track
+    assert ld._validate_id_model()

From 5e23ddcc2f279b8618efe6a110f77c3567480340 Mon Sep 17 00:00:00 2001
From: Shrivaths Shyam <52810689+shrivaths16@users.noreply.github.com>
Date: Mon, 16 Dec 2024 14:51:02 -0800
Subject: [PATCH 07/18] Add menu item for deleting instances beyond frame limit
 (#1797)

* Add menu item for deleting instances beyond frame limit

* Add test function to test the instances returned

* typos

* Update docstring

* Add frame range form

* Extend command to use frame range

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>
---
 sleap/config/frame_range_form.yaml | 13 +++++++++
 sleap/gui/app.py                   |  6 +++++
 sleap/gui/commands.py              | 35 +++++++++++++++++++++++++
 sleap/gui/dialogs/frame_range.py   | 42 ++++++++++++++++++++++++++++++
 tests/gui/test_commands.py         | 22 ++++++++++++++++
 5 files changed, 118 insertions(+)
 create mode 100644 sleap/config/frame_range_form.yaml
 create mode 100644 sleap/gui/dialogs/frame_range.py

diff --git a/sleap/config/frame_range_form.yaml b/sleap/config/frame_range_form.yaml
new file mode 100644
index 000000000..3f01eade4
--- /dev/null
+++ b/sleap/config/frame_range_form.yaml
@@ -0,0 +1,13 @@
+main:
+
+  - name: min_frame_idx
+    label: Minimum frame index
+    type: int
+    range: 1,1000000
+    default: 1
+
+  - name: max_frame_idx
+    label: Maximum frame index
+    type: int
+    range: 1,1000000
+    default: 1000
\ No newline at end of file
diff --git a/sleap/gui/app.py b/sleap/gui/app.py
index 0ead06b1e..575b082b7 100644
--- a/sleap/gui/app.py
+++ b/sleap/gui/app.py
@@ -804,6 +804,12 @@ def new_instance_menu_action():
             "Delete Predictions beyond Max Instances...",
             self.commands.deleteInstanceLimitPredictions,
         )
+        add_menu_item(
+            labelMenu,
+            "delete frame limit predictions",
+            "Delete Predictions beyond Frame Limit...",
+            self.commands.deleteFrameLimitPredictions,
+        )
 
         ### Tracks Menu ###
 
diff --git a/sleap/gui/commands.py b/sleap/gui/commands.py
index dfc0dbad8..fca982327 100644
--- a/sleap/gui/commands.py
+++ b/sleap/gui/commands.py
@@ -49,6 +49,7 @@ class which inherits from `AppCommand` (or a more specialized class such as
 from sleap.gui.dialogs.merge import MergeDialog, ReplaceSkeletonTableDialog
 from sleap.gui.dialogs.message import MessageDialog
 from sleap.gui.dialogs.missingfiles import MissingFilesDialog
+from sleap.gui.dialogs.frame_range import FrameRangeDialog
 from sleap.gui.state import GuiState
 from sleap.gui.suggestions import VideoFrameSuggestions
 from sleap.instance import Instance, LabeledFrame, Point, PredictedInstance, Track
@@ -494,6 +495,10 @@ def deleteInstanceLimitPredictions(self):
         """Gui for deleting instances beyond some number in each frame."""
         self.execute(DeleteInstanceLimitPredictions)
 
+    def deleteFrameLimitPredictions(self):
+        """Gui for deleting instances beyond some frame number."""
+        self.execute(DeleteFrameLimitPredictions)
+
     def completeInstanceNodes(self, instance: Instance):
         """Adds missing nodes to given instance."""
         self.execute(AddMissingInstanceNodes, instance=instance)
@@ -2472,6 +2477,36 @@ def ask(cls, context: CommandContext, params: dict) -> bool:
             return super().ask(context, params)
 
 
+class DeleteFrameLimitPredictions(InstanceDeleteCommand):
+    @staticmethod
+    def get_frame_instance_list(context: CommandContext, params: Dict):
+        """Called from the parent `InstanceDeleteCommand.ask` method.
+
+        Returns:
+            List of instances to be deleted.
+        """
+        instances = []
+        # Select the instances to be deleted
+        for lf in context.labels.labeled_frames:
+            if lf.frame_idx < (params["min_frame_idx"] - 1) or lf.frame_idx > (
+                params["max_frame_idx"] - 1
+            ):
+                instances.extend([(lf, inst) for inst in lf.instances])
+        return instances
+
+    @classmethod
+    def ask(cls, context: CommandContext, params: Dict) -> bool:
+        current_video = context.state["video"]
+        dialog = FrameRangeDialog(
+            title="Delete Instances in Frame Range...", max_frame_idx=len(current_video)
+        )
+        results = dialog.get_results()
+        if results:
+            params["min_frame_idx"] = results["min_frame_idx"]
+            params["max_frame_idx"] = results["max_frame_idx"]
+            return super().ask(context, params)
+
+
 class TransposeInstances(EditCommand):
     topics = [UpdateTopic.project_instances, UpdateTopic.tracks]
 
diff --git a/sleap/gui/dialogs/frame_range.py b/sleap/gui/dialogs/frame_range.py
new file mode 100644
index 000000000..cb0e9cc2e
--- /dev/null
+++ b/sleap/gui/dialogs/frame_range.py
@@ -0,0 +1,42 @@
+"""Frame range dialog."""
+from PySide2 import QtWidgets
+from sleap.gui.dialogs.formbuilder import FormBuilderModalDialog
+from typing import Optional
+
+
+class FrameRangeDialog(FormBuilderModalDialog):
+    def __init__(self, max_frame_idx: Optional[int] = None, title: str = "Frame Range"):
+
+        super().__init__(form_name="frame_range_form")
+        min_frame_idx_field = self.form_widget.fields["min_frame_idx"]
+        max_frame_idx_field = self.form_widget.fields["max_frame_idx"]
+
+        if max_frame_idx is not None:
+            min_frame_idx_field.setRange(1, max_frame_idx)
+            min_frame_idx_field.setValue(1)
+
+            max_frame_idx_field.setRange(1, max_frame_idx)
+            max_frame_idx_field.setValue(max_frame_idx)
+
+        min_frame_idx_field.valueChanged.connect(self._update_max_frame_range)
+        max_frame_idx_field.valueChanged.connect(self._update_min_frame_range)
+
+        self.setWindowTitle(title)
+
+    def _update_max_frame_range(self, value):
+        min_frame_idx_field = self.form_widget.fields["min_frame_idx"]
+        max_frame_idx_field = self.form_widget.fields["max_frame_idx"]
+
+        max_frame_idx_field.setRange(value, max_frame_idx_field.maximum())
+
+    def _update_min_frame_range(self, value):
+        min_frame_idx_field = self.form_widget.fields["min_frame_idx"]
+        max_frame_idx_field = self.form_widget.fields["max_frame_idx"]
+
+        min_frame_idx_field.setRange(min_frame_idx_field.minimum(), value)
+
+
+if __name__ == "__main__":
+    app = QtWidgets.QApplication([])
+    dialog = FrameRangeDialog(max_frame_idx=100)
+    print(dialog.get_results())
diff --git a/tests/gui/test_commands.py b/tests/gui/test_commands.py
index ffd382ab1..fb5637407 100644
--- a/tests/gui/test_commands.py
+++ b/tests/gui/test_commands.py
@@ -20,6 +20,7 @@
     ReplaceVideo,
     OpenSkeleton,
     SaveProjectAs,
+    DeleteFrameLimitPredictions,
     get_new_version_filename,
 )
 from sleap.instance import Instance, LabeledFrame
@@ -851,6 +852,27 @@ def load_and_assert_changes(new_video_path: Path):
         shutil.move(new_video_path, expected_video_path)
 
 
+def test_DeleteFrameLimitPredictions(
+    centered_pair_predictions: Labels, centered_pair_vid: Video
+):
+    """Test deleting instances beyond a certain frame limit."""
+    labels = centered_pair_predictions
+
+    # Set-up command context
+    context = CommandContext.from_labels(labels)
+    context.state["video"] = centered_pair_vid
+
+    # Set-up params for the command
+    params = {"frame_idx_threshold": 900}
+
+    expected_instances = 423
+    predicted_instances = DeleteFrameLimitPredictions.get_frame_instance_list(
+        context, params
+    )
+
+    assert len(predicted_instances) == expected_instances
+
+
 @pytest.mark.parametrize("export_extension", [".json.zip", ".slp"])
 def test_exportLabelsPackage(export_extension, centered_pair_labels: Labels, tmpdir):
     def assert_loaded_package_similar(path_to_pkg: Path, sugg=False, pred=False):

From fd4ef81003c89c5140ae08ce5eb42694fc8e2975 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Mon, 16 Dec 2024 14:51:26 -0800
Subject: [PATCH 08/18] Highlight instance box on hover (#2055)

---
 sleap/gui/widgets/video.py | 23 ++++++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

diff --git a/sleap/gui/widgets/video.py b/sleap/gui/widgets/video.py
index b55253ae7..dcc56f359 100644
--- a/sleap/gui/widgets/video.py
+++ b/sleap/gui/widgets/video.py
@@ -1610,6 +1610,10 @@ def mouseDoubleClickEvent(self, event: QMouseEvent):
             view = scene.views()[0]
             view.instanceDoubleClicked.emit(self.parentObject().instance, event)
 
+    def hoverEnterEvent(self, event):
+        print("QtNode: hover enter")
+        return super().hoverEnterEvent(event)
+
 
 class QtEdge(QGraphicsPolygonItem):
     """
@@ -1809,6 +1813,7 @@ def __init__(
         self.labels = {}
         self.labels_shown = True
         self._selected = False
+        self._is_hovering = False
         self._bounding_rect = QRectF()
 
         # Show predicted instances behind non-predicted ones
@@ -1830,6 +1835,7 @@ def __init__(
         box_pen.setStyle(Qt.DashLine)
         box_pen.setCosmetic(True)
         self.box.setPen(box_pen)
+        self.setAcceptHoverEvents(True)
 
         # Add label for highlighted instance
         self.highlight_label = QtTextWithBackground(parent=self)
@@ -1991,7 +1997,12 @@ def updateBox(self, *args, **kwargs):
         select this instance.
         """
         # Only show box if instance is selected
-        op = 0.7 if self._selected else 0
+        op = 0
+        if self._selected:
+            op = 0.8
+        elif self._is_hovering:
+            op = 0.4
+
         self.box.setOpacity(op)
         # Update the position for the box
         rect = self.getPointsBoundingRect()
@@ -2085,6 +2096,16 @@ def paint(self, painter, option, widget=None):
         """Method required by Qt."""
         pass
 
+    def hoverEnterEvent(self, event):
+        self._is_hovering = True
+        self.updateBox()
+        return super().hoverEnterEvent(event)
+
+    def hoverLeaveEvent(self, event):
+        self._is_hovering = False
+        self.updateBox()
+        return super().hoverLeaveEvent(event)
+
 
 class VisibleBoundingBox(QtWidgets.QGraphicsRectItem):
     """QGraphicsRectItem for user instance bounding boxes.

From 35294529ff2d8573883cb3109efea68f1cc5df33 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Mon, 16 Dec 2024 16:11:58 -0800
Subject: [PATCH 09/18] Make node marker and label sizes configurable via
 preferences (#2057)

* Make node marker and label sizes configurable via preferences

* Fix test
---
 sleap/gui/app.py           |  5 +++--
 sleap/prefs.py             | 16 +++++++++-------
 tests/gui/test_commands.py |  7 +++----
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/sleap/gui/app.py b/sleap/gui/app.py
index 575b082b7..2709e86db 100644
--- a/sleap/gui/app.py
+++ b/sleap/gui/app.py
@@ -656,17 +656,18 @@ def prev_vid():
             key="edge style",
         )
 
+        # XXX
         add_submenu_choices(
             menu=viewMenu,
             title="Node Marker Size",
-            options=(1, 2, 4, 6, 8, 12),
+            options=prefs["node marker sizes"],
             key="marker size",
         )
 
         add_submenu_choices(
             menu=viewMenu,
             title="Node Label Size",
-            options=(6, 12, 18, 24, 36),
+            options=prefs["node label sizes"],
             key="node label size",
         )
 
diff --git a/sleap/prefs.py b/sleap/prefs.py
index 8790f1d3f..e043afc44 100644
--- a/sleap/prefs.py
+++ b/sleap/prefs.py
@@ -28,6 +28,8 @@ class Preferences(object):
         "node label size": 12,
         "show non-visible nodes": True,
         "share usage data": True,
+        "node marker sizes": (1, 2, 3, 4, 6, 8, 12),
+        "node label sizes": (6, 9, 12, 18, 24, 36),
     }
     _filename = "preferences.yaml"
 
@@ -43,14 +45,14 @@ def load_(self):
         """Load preferences from file (regardless of whether loaded already)."""
         try:
             self._prefs = util.get_config_yaml(self._filename)
-            if not hasattr(self._prefs, "get"):
-                self._prefs = self._defaults
-            else:
-                self._prefs["trail length"] = self._prefs.get(
-                    "trail length", self._defaults["trail length"]
-                )
         except FileNotFoundError:
-            self._prefs = self._defaults
+            pass
+
+        self._prefs = self._prefs or {}
+
+        for k, v in self._defaults.items():
+            if k not in self._prefs:
+                self._prefs[k] = v
 
     def save(self):
         """Save preferences to file."""
diff --git a/tests/gui/test_commands.py b/tests/gui/test_commands.py
index fb5637407..e19e00236 100644
--- a/tests/gui/test_commands.py
+++ b/tests/gui/test_commands.py
@@ -863,14 +863,13 @@ def test_DeleteFrameLimitPredictions(
     context.state["video"] = centered_pair_vid
 
     # Set-up params for the command
-    params = {"frame_idx_threshold": 900}
+    params = {"min_frame_idx": 900, "max_frame_idx": 1000}
 
-    expected_instances = 423
-    predicted_instances = DeleteFrameLimitPredictions.get_frame_instance_list(
+    instances_to_delete = DeleteFrameLimitPredictions.get_frame_instance_list(
         context, params
     )
 
-    assert len(predicted_instances) == expected_instances
+    assert len(instances_to_delete) == 2070
 
 
 @pytest.mark.parametrize("export_extension", [".json.zip", ".slp"])

From 7dd41dece9a34b571dd0dc51197d8b5508f2ad22 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Mon, 16 Dec 2024 16:12:42 -0800
Subject: [PATCH 10/18] Enable touchpad pinch to zoom (#2058)

---
 sleap/gui/widgets/video.py | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/sleap/gui/widgets/video.py b/sleap/gui/widgets/video.py
index dcc56f359..d9d9c97dd 100644
--- a/sleap/gui/widgets/video.py
+++ b/sleap/gui/widgets/video.py
@@ -62,6 +62,7 @@
     QShortcut,
     QVBoxLayout,
     QWidget,
+    QPinchGesture,
 )
 
 import sleap
@@ -823,6 +824,8 @@ def __init__(self, state=None, player=None, *args, **kwargs):
         # Set icon as default background.
         self.setImage(QImage(sleap.util.get_package_file("gui/background.png")))
 
+        self.grabGesture(Qt.GestureType.PinchGesture)
+
     def dragEnterEvent(self, event):
         if self.parentWidget():
             self.parentWidget().dragEnterEvent(event)
@@ -1189,6 +1192,23 @@ def keyReleaseEvent(self, event):
         """Custom event hander, disables default QGraphicsView behavior."""
         event.ignore()  # Kicks the event up to parent
 
+    def event(self, event):
+        if event.type() == QtCore.QEvent.Gesture:
+            return self.handleGestureEvent(event)
+        return super().event(event)
+
+    def handleGestureEvent(self, event):
+        gesture = event.gesture(Qt.GestureType.PinchGesture)
+        if gesture:
+            self.handlePinchGesture(gesture)
+        return True
+
+    def handlePinchGesture(self, gesture: QPinchGesture):
+        if gesture.state() == Qt.GestureState.GestureUpdated:
+            factor = gesture.scaleFactor()
+            self.zoomFactor = max(factor * self.zoomFactor, 1)
+            self.updateViewer()
+
 
 class QtNodeLabel(QGraphicsTextItem):
     """

From 55772ad900572655a274f1806a8d1d11c7b1f287 Mon Sep 17 00:00:00 2001
From: Talmo Pereira <talmo@salk.edu>
Date: Tue, 17 Dec 2024 17:43:18 -0800
Subject: [PATCH 11/18] Fix import PySide2 -> qtpy (#2065)

* Fix import PySide2 -> qtpy

* Remove unnecessary print statements.
---
 sleap/gui/dialogs/frame_range.py | 2 +-
 sleap/gui/widgets/video.py       | 4 +---
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/sleap/gui/dialogs/frame_range.py b/sleap/gui/dialogs/frame_range.py
index cb0e9cc2e..7165dd939 100644
--- a/sleap/gui/dialogs/frame_range.py
+++ b/sleap/gui/dialogs/frame_range.py
@@ -1,5 +1,5 @@
 """Frame range dialog."""
-from PySide2 import QtWidgets
+from qtpy import QtWidgets
 from sleap.gui.dialogs.formbuilder import FormBuilderModalDialog
 from typing import Optional
 
diff --git a/sleap/gui/widgets/video.py b/sleap/gui/widgets/video.py
index d9d9c97dd..08ee5bf36 100644
--- a/sleap/gui/widgets/video.py
+++ b/sleap/gui/widgets/video.py
@@ -1590,7 +1590,6 @@ def mousePressEvent(self, event):
 
     def mouseMoveEvent(self, event):
         """Custom event handler for mouse move."""
-        # print(event)
         if self.dragParent:
             self.parentObject().mouseMoveEvent(event)
         else:
@@ -1601,7 +1600,6 @@ def mouseMoveEvent(self, event):
 
     def mouseReleaseEvent(self, event):
         """Custom event handler for mouse release."""
-        # print(event)
         self.unsetCursor()
         if self.dragParent:
             self.parentObject().mouseReleaseEvent(event)
@@ -1631,7 +1629,7 @@ def mouseDoubleClickEvent(self, event: QMouseEvent):
             view.instanceDoubleClicked.emit(self.parentObject().instance, event)
 
     def hoverEnterEvent(self, event):
-        print("QtNode: hover enter")
+        """Custom event handler for mouse hover enter."""
         return super().hoverEnterEvent(event)
 
 

From a6f65fbc8369295fe8cff304ec6e25e7a0c4fe9b Mon Sep 17 00:00:00 2001
From: Liezl Maree <38435167+roomrys@users.noreply.github.com>
Date: Wed, 18 Dec 2024 09:25:17 -0800
Subject: [PATCH 12/18] Add channels for pip conda env (#2067)

* Add channels for pypi conda env

* Trigger dev website build
---
 .github/workflows/website.yml |  2 +-
 docs/installation.md          | 13 ++++++-------
 2 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml
index ede9eef9f..830788388 100644
--- a/.github/workflows/website.yml
+++ b/.github/workflows/website.yml
@@ -8,7 +8,7 @@ on:
       # 'main' triggers updates to 'sleap.ai', all others to 'sleap.ai/develop'
       - main
       - develop
-      - liezl/update-intallation-docs-1.4.1 # again!
+      - liezl/add-channels-for-pip-conda-env
     paths:
       - "docs/**"
       - "README.rst"
diff --git a/docs/installation.md b/docs/installation.md
index 4799a0893..d926c724a 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -27,7 +27,7 @@ local:
    Installation requires entering commands in a terminal. To open one:
    ````{tabs}
       ```{tab} Windows
-         Open the *Start menu* and search for the *Anaconda Prompt* (if using Miniconda) or the *Command Prompt* if not. 
+         Open the *Start menu* and search for the *Anaconda Prompt* (if using Miniconda) or the *Command Prompt* if not.
          ```{note}
          On Windows, our personal preference is to use alternative terminal apps like [Cmder](https://cmder.net) or [Windows Terminal](https://aka.ms/terminal).
          ```
@@ -66,7 +66,6 @@ If you don't have a `conda` package manager installation, here are some quick in
 
 Miniforge is a minimal installer for conda that includes the `conda` package manager and is maintained by the [conda-forge](https://conda-forge.org) community. The only difference between Miniforge and Miniconda is that Miniforge uses the `conda-forge` channel by default, which provides a much wider selection of community-maintained packages.
 
-
 ````{tabs}
    ```{group-tab} Windows
       Open a new PowerShell terminal (does not need to be admin) and enter:
@@ -135,20 +134,20 @@ This is a minimal installer for conda that includes the `conda` package manager
 
 See the [Miniconda website](https://docs.anaconda.com/free/miniconda/) for up-to-date installation instructions if the above instructions don't work for your system.
 
-
 (installation-methods)=
+
 ## Installation methods
 
 SLEAP can be installed three different ways: via {ref}`conda package<condapackage>`, {ref}`conda from source<condasource>`, or {ref}`pip package<pippackage>`. Select one of the methods below to install SLEAP. We recommend {ref}`conda package<condapackage>`.
 
-````{tabs}
+`````{tabs}
    ```{tab} conda package
       **This is the recommended installation method**.
       ````{tabs}
          ```{group-tab} Windows and Linux
             ```bash
             conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1a2
-            ```  
+            ```
             ```{note}
             - This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).
             - If you already have CUDA installed on your system, this will not conflict with it.
@@ -222,7 +221,7 @@ SLEAP can be installed three different ways: via {ref}`conda package<condapackag
                ````{tabs}
                   ```{group-tab} NVIDIA GPU
                      ```bash
-                     conda create --name sleap pip python=3.7.12 cudatoolkit=11.3 cudnn=8.2
+                     conda create --name sleap pip python=3.7.12 cudatoolkit=11.3 cudnn=8.2 -c conda-forge -c nvidia
                      ```
                   ```
                   ```{group-tab} CPU or other GPU
@@ -256,7 +255,7 @@ SLEAP can be installed three different ways: via {ref}`conda package<condapackag
          ```
          ````
    ```
-````
+`````
 
 ## Testing that things are working
 

From 1eff33dbd9e342142092d0581f79e21560ecdf2c Mon Sep 17 00:00:00 2001
From: Andrew Park <hep003@ucsd.edu>
Date: Wed, 18 Dec 2024 09:37:31 -0800
Subject: [PATCH 13/18] Separate the video name and its filepath columns in
 `VideoTablesModel` (#2052)

* add option to show video names with filepath

* add doc

* new feature added successfully

* delete unnecessary code

* remove attributes from video object

* Update dataviews.py

* remove all properties

* delete toggle option

* remove video show

* fix the order of the columns

* remove options

* Update sleap/gui/dataviews.py

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Update sleap/gui/dataviews.py

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* use pathlib instead of substrings

* Update dataviews.py

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Use Path instead of pathlib.Path
and sort imports and remove unused imports

* Use item.filename instead of getattr

---------

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>
---
 sleap/gui/dataviews.py | 38 +++++++++++++++++++++++++-------------
 1 file changed, 25 insertions(+), 13 deletions(-)

diff --git a/sleap/gui/dataviews.py b/sleap/gui/dataviews.py
index f68dc0180..721bdc321 100644
--- a/sleap/gui/dataviews.py
+++ b/sleap/gui/dataviews.py
@@ -15,20 +15,17 @@
 
 """
 
-from qtpy import QtCore, QtWidgets, QtGui
-
-import numpy as np
 import os
-
 from operator import itemgetter
+from pathlib import Path
+from typing import Any, Callable, List, Optional
 
-from typing import Any, Callable, Dict, List, Optional, Type
+import numpy as np
+from qtpy import QtCore, QtGui, QtWidgets
 
-from sleap.gui.state import GuiState
 from sleap.gui.commands import CommandContext
-from sleap.gui.color import ColorManager
-from sleap.io.dataset import Labels
-from sleap.instance import LabeledFrame, Instance
+from sleap.gui.state import GuiState
+from sleap.instance import LabeledFrame
 from sleap.skeleton import Skeleton
 
 
@@ -386,10 +383,25 @@ def getSelectedRowItem(self) -> Any:
 
 
 class VideosTableModel(GenericTableModel):
-    properties = ("filename", "frames", "height", "width", "channels")
-
-    def item_to_data(self, obj, item):
-        return {key: getattr(item, key) for key in self.properties}
+    properties = (
+        "name",
+        "filepath",
+        "frames",
+        "height",
+        "width",
+        "channels",
+    )
+
+    def item_to_data(self, obj, item: "Video"):
+        data = {}
+        for property in self.properties:
+            if property == "name":
+                data[property] = Path(item.filename).name
+            elif property == "filepath":
+                data[property] = str(Path(item.filename).parent)
+            else:
+                data[property] = getattr(item, property)
+        return data
 
 
 class SkeletonNodesTableModel(GenericTableModel):

From 47a0efa07feb5ecb895ab7e5dccbd219eba4ad04 Mon Sep 17 00:00:00 2001
From: Andrew Park <hep003@ucsd.edu>
Date: Wed, 18 Dec 2024 11:10:26 -0800
Subject: [PATCH 14/18] Make status bar dependent on UI mode (#2063)

* remove bug for dark mode

* fix toggle case

---------

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>
---
 sleap/gui/app.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sleap/gui/app.py b/sleap/gui/app.py
index 2709e86db..8b711c806 100644
--- a/sleap/gui/app.py
+++ b/sleap/gui/app.py
@@ -1340,7 +1340,7 @@ def updateStatusMessage(self, message: Optional[str] = None):
                 message += f" [Hidden] Press '{hide_key}' to toggle."
                 self.statusBar().setStyleSheet("color: red")
             else:
-                self.statusBar().setStyleSheet("color: black")
+                self.statusBar().setStyleSheet("")
 
         self.statusBar().showMessage(message)
 

From 1729ca71c99e74f8e8ee7d340c2ce679e0f91322 Mon Sep 17 00:00:00 2001
From: Liezl Maree <38435167+roomrys@users.noreply.github.com>
Date: Wed, 18 Dec 2024 17:01:12 -0800
Subject: [PATCH 15/18] Bump version to 1.4.1 (#2062)

* Bump version to 1.4.1

* Trigger conda/pypi builds (no upload)

* Trigger website build

* Add dev channel to installation instructions

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>
---
 .github/ISSUE_TEMPLATE/bug_report.md | 16 ++++++++--------
 .github/workflows/build_conda_ci.yml |  2 +-
 .github/workflows/build_pypi_ci.yml  |  2 +-
 .github/workflows/website.yml        |  2 +-
 docs/conf.py                         |  6 +++---
 docs/installation.md                 | 10 +++++-----
 sleap/version.py                     |  2 +-
 7 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 108c2a65e..6a92c2e3b 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -25,15 +25,15 @@ Tell us a little about the system you're using.
 Please include information about how you installed.
  -->
 
-- OS:
+-   OS:
 <!-- [e.g. ubuntu 20.04, macOS 11.0] -->
-- Version(s):
-<!-- e.g. [SLEAP v1.4.1a2, python 3.8] --->
-- SLEAP installation method (listed [here](https://sleap.ai/installation.html#)):
-  - [ ] [Conda from package](https://sleap.ai/installation.html#conda-package)
-  - [ ] [Conda from source](https://sleap.ai/installation.html#conda-from-source)
-  - [ ] [pip package](https://sleap.ai/installation.html#pip-package)
-  - [ ] [Apple Silicon Macs](https://sleap.ai/installation.html#apple-silicon-macs)
+-   Version(s):
+<!-- e.g. [SLEAP v1.4.1, python 3.8] --->
+-   SLEAP installation method (listed [here](https://sleap.ai/installation.html#)):
+    -   [ ] [Conda from package](https://sleap.ai/installation.html#conda-package)
+    -   [ ] [Conda from source](https://sleap.ai/installation.html#conda-from-source)
+    -   [ ] [pip package](https://sleap.ai/installation.html#pip-package)
+    -   [ ] [Apple Silicon Macs](https://sleap.ai/installation.html#apple-silicon-macs)
 
 <details><summary>Environment packages</summary>
 <!-- For reproduction, it's useful to have the full environment. For example, the output of `pip freeze` or `conda list` --->
diff --git a/.github/workflows/build_conda_ci.yml b/.github/workflows/build_conda_ci.yml
index 0d5980730..3fd3d2b92 100644
--- a/.github/workflows/build_conda_ci.yml
+++ b/.github/workflows/build_conda_ci.yml
@@ -11,7 +11,7 @@ on:
       - "requirements.txt"
       - "dev_requirements.txt"
       - "environment_build.yml"
-      - ".github/workflows/build_conda_ci.yml"
+      - ".github/workflows/build_conda_ci.yml" # Run!
 
 # If RUN_BUILD_JOB is set to true, then RUN_ID will be overwritten to the current run id
 env:
diff --git a/.github/workflows/build_pypi_ci.yml b/.github/workflows/build_pypi_ci.yml
index c22cc5a69..68142b288 100644
--- a/.github/workflows/build_pypi_ci.yml
+++ b/.github/workflows/build_pypi_ci.yml
@@ -11,7 +11,7 @@ on:
       - "jupyter_requirements.txt"
       - "pypi_requirements.txt"
       - "environment_build.yml"
-      - ".github/workflows/build_pypi_ci.yml"
+      - ".github/workflows/build_pypi_ci.yml" # Run!
 
 jobs:
   build:
diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml
index 830788388..a644c500a 100644
--- a/.github/workflows/website.yml
+++ b/.github/workflows/website.yml
@@ -8,7 +8,7 @@ on:
       # 'main' triggers updates to 'sleap.ai', all others to 'sleap.ai/develop'
       - main
       - develop
-      - liezl/add-channels-for-pip-conda-env
+      - liezl/bump-to-1.4.1
     paths:
       - "docs/**"
       - "README.rst"
diff --git a/docs/conf.py b/docs/conf.py
index a429c7928..074869903 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -28,7 +28,7 @@
 copyright = f"2019–{date.today().year}, Talmo Lab"
 
 # The short X.Y version
-version = "1.4.1a2"
+version = "1.4.1"
 
 # Get the sleap version
 # with open("../sleap/version.py") as f:
@@ -36,7 +36,7 @@
 #     version = re.search("\d.+(?=['\"])", version_file).group(0)
 
 # Release should be the full branch name
-release = "v1.4.1a2"
+release = "v1.4.1"
 
 html_title = f"SLEAP ({release})"
 html_short_title = "SLEAP"
@@ -178,7 +178,7 @@ def linkcode_resolve(domain, info):
 # These paths are either relative to html_static_path
 # or fully qualified paths (eg. https://...)
 html_css_files = [
-    'css/tabs.css',
+    "css/tabs.css",
 ]
 
 # Custom sidebar templates, must be a dictionary that maps document names
diff --git a/docs/installation.md b/docs/installation.md
index d926c724a..8a3d3c70e 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -5,12 +5,12 @@ SLEAP can be installed as a Python package on Windows, Linux, and Mac OS. For qu
 ````{tabs}
    ```{group-tab} Windows and Linux
       ```bash
-      conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1a2
+      conda create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap=1.4.1
       ```
    ```
    ```{group-tab} Mac OS
       ```bash
-      conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1a2
+      conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1
       ```
    ```
 ````
@@ -146,7 +146,7 @@ SLEAP can be installed three different ways: via {ref}`conda package<condapackag
       ````{tabs}
          ```{group-tab} Windows and Linux
             ```bash
-            conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1a2
+            conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1
             ```
             ```{note}
             - This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).
@@ -156,7 +156,7 @@ SLEAP can be installed three different ways: via {ref}`conda package<condapackag
          ```
          ```{group-tab} Mac OS
             ```bash
-            conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1a2
+            conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1
             ```
             ```{note}
             This will also work in CPU mode if you don't have a GPU on your machine.
@@ -239,7 +239,7 @@ SLEAP can be installed three different ways: via {ref}`conda package<condapackag
                ```
             3. Finally, we can perform the `pip install`:
                ```bash
-               pip install sleap[pypi]==1.4.1a2
+               pip install sleap[pypi]==1.4.1
                ```
                ```{note}
                The pypi distributed package of SLEAP ships with the following extras:
diff --git a/sleap/version.py b/sleap/version.py
index 7711477cb..698710132 100644
--- a/sleap/version.py
+++ b/sleap/version.py
@@ -11,7 +11,7 @@
 Must be a semver string, "aN" should be appended for alpha releases.
 """
 
-__version__ = "1.4.1a2"
+__version__ = "1.4.1"
 
 
 def versions():

From 682823ac974de404cb7182c9f8f44fc4dc4b45b5 Mon Sep 17 00:00:00 2001
From: roomrys <38435167+roomrys@users.noreply.github.com>
Date: Thu, 19 Dec 2024 09:09:00 -0800
Subject: [PATCH 16/18] Add -c sleap/label/dev channel for win/linux - also
 trigger website build

---
 .github/workflows/website.yml | 2 +-
 README.rst                    | 2 +-
 docs/installation.md          | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml
index a644c500a..36c1d6ad7 100644
--- a/.github/workflows/website.yml
+++ b/.github/workflows/website.yml
@@ -7,7 +7,7 @@ on:
     branches:
       # 'main' triggers updates to 'sleap.ai', all others to 'sleap.ai/develop'
       - main
-      - develop
+      - develop # Run
       - liezl/bump-to-1.4.1
     paths:
       - "docs/**"
diff --git a/README.rst b/README.rst
index 7cc9b27a3..f7a5acd6c 100644
--- a/README.rst
+++ b/README.rst
@@ -69,7 +69,7 @@ Quick install
 
 .. code-block:: bash
 
-    conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap
+    conda create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap
 
 `pip` **(any OS except Apple silicon)**:
 
diff --git a/docs/installation.md b/docs/installation.md
index 8a3d3c70e..2c1ef41be 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -146,7 +146,7 @@ SLEAP can be installed three different ways: via {ref}`conda package<condapackag
       ````{tabs}
          ```{group-tab} Windows and Linux
             ```bash
-            conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.4.1
+            conda create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap=1.4.1
             ```
             ```{note}
             - This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).

From 7991f14dcf31877f0363f1f2a4392586a04d6eee Mon Sep 17 00:00:00 2001
From: Liezl Maree <38435167+roomrys@users.noreply.github.com>
Date: Thu, 19 Dec 2024 09:47:25 -0800
Subject: [PATCH 17/18] Release 1.4.1 (#2068)

* Remove no-op code from #1498

* Add options to set background color when exporting video (#1328)

* implement #921

* simplified form / refractor

* Add test function and update cli docs

* Improve test function to check background color

* Improve comments

* Change background options to lowercase

* Use coderabbitai suggested `fill`

---------

Co-authored-by: Shrivaths Shyam <52810689+shrivaths16@users.noreply.github.com>
Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Increase range on batch size (#1513)

* Increase range on batch size

* Set maximum to a factor of 2

* Set default callable for `match_lists_function` (#1520)

* Set default for `match_lists_function`

* Move test code to official tests

* Check using expected values

* Allow passing in `Labels` to `app.main` (#1524)

* Allow passing in `Labels` to `app.main`

* Load the labels object through command

* Add warning when unable to switch back to CPU mode

* Replace (broken) `--unrag` with `--ragged` (#1539)

* Fix unrag always set to true in sleap-export

* Replace unrag with ragged

* Fix typos

* Add function to create app (#1546)

* Refactor `AddInstance` command (#1561)

* Refactor AddInstance command

* Add staticmethod wrappers

* Return early from set_visible_nodes

* Import DLC with uniquebodyparts, add Tracks (#1562)

* Import DLC with uniquebodyparts, add Tracks

* add tests

* correct tests

* Make the hdf5 videos store as int8 format (#1559)

* make the hdf5 video dataset type as proper int8 by padding with zeros

* add gzip compression

* Scale new instances to new frame size (#1568)

* Fix typehinting in `AddInstance`

* brought over changes from my own branch

* added suggestions

* Ensured google style comments

---------

Co-authored-by: roomrys <38435167+roomrys@users.noreply.github.com>
Co-authored-by: sidharth srinath <sidhumani22@gmail.com>

* Fix package export (#1619)

Add check for empty videos

* Add resize/scroll to training GUI (#1565)

* Make resizable training GUI and add adaptive scroll bar

* Set a maximum window size

---------

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* support loading slp files with non-compound types and str in metadata (#1566)

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* change inference pipeline option to tracking-only (#1666)

change inference pipeline none option to tracking-only

* Add ABL:AOC 2023 Workshop link (#1673)

* Add ABL:AOC 2023 Workshop link

* Trigger website build

* Graceful failing with seeking errors (#1712)

* Don't try to seek to faulty last frame on provider initialization

* Catch seeking errors and pass

* Lint

* Fix IndexError for hdf5 file import for single instance analysis files (#1695)

* Fix hdf5 read for single instance analysis files

* Add test

* Small test files

* removing unneccessary fixtures

* Replace imgaug with albumentations (#1623)

What's the worst that could happen?

* Initial commit

* Fix augmentation

* Update more deps requirements

* Use pip for installing albumentations and avoid reinstalling OpenCV

* Update other conda envs

* Fix out of bounds albumentations issues and update dependencies (#1724)

* Install albumentations using conda-forge in environment file

* Conda install albumentations

* Add ndx-pose to pypi requirements

* Keep out of bounds points

* Black

* Add ndx-pose to conda install in environment file

* Match environment file without cuda

* Ordered dependencies

* Add test

* Delete comments

* Add conda packages to mac environment file

* Order dependencies in pypi requirements

* Add tests with zeroes and NaNs for augmentation

* Back

* Black

* Make comment one line

* Add todo for later

* Black

* Update to new TensorFlow conda package (#1726)

* Build conda package locally

* Try 2.8.4

* Merge develop into branch to fix dependencies

* Change tensorflow version to 2.7.4 in where conda packages are used

* Make tensorflow requirements in pypi looser

* Conda package has TensorFlow 2.7.0 and h5py and numpy installed via conda

* Change tensorflow version in `environment_no_cuda.yml` to test using CI

* Test new sleap/tensorflow package

* Reset build number

* Bump version

* Update mac deps

* Update to Arm64 Mac runners

* pin `importlib-metadata`

* Pin more stuff on mac

* constrain `opencv` version due to new qt dependencies

* Update more mac stuff

* Patches to get to green

* More mac skipping

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>
Co-authored-by: Talmo Pereira <talmo@princeton.edu>

* Fix CI on macosx-arm64 (#1734)

* Build conda package locally

* Try 2.8.4

* Merge develop into branch to fix dependencies

* Change tensorflow version to 2.7.4 in where conda packages are used

* Make tensorflow requirements in pypi looser

* Conda package has TensorFlow 2.7.0 and h5py and numpy installed via conda

* Change tensorflow version in `environment_no_cuda.yml` to test using CI

* Test new sleap/tensorflow package

* Reset build number

* Bump version

* Update mac deps

* Update to Arm64 Mac runners

* pin `importlib-metadata`

* Pin more stuff on mac

* constrain `opencv` version due to new qt dependencies

* Update more mac stuff

* Patches to get to green

* More mac skipping

* Re-enable mac tests

* Handle GPU re-init

* Fix mac build CI

* Widen tolerance for movenet correctness test

* Fix build ci

* Try for manual build without upload

* Try to reduce training CI time

* Rework actions

* Fix miniforge usage

* Tweaks

* Fix build ci

* Disable manual build

* Try merging CI coverage

* GPU/CPU usage in tests

* Lint

* Clean up

* Fix test skip condition

* Remove scratch test

---------

Co-authored-by: eberrigan <berri104@gmail.com>

* Add option to export to CSV via sleap-convert and API (#1730)

* Add csv as a format option

* Add analysis to format

* Add csv suffix to output path

* Add condition for csv analysis file

* Add export function to Labels class

* delete print statement

* lint

* Add `analysis.csv` as parametrize input for `sleap-convert` tests

* test `export_csv` method added to `Labels` class

* black formatting

* use `Path` to construct filename

* add `analysis.csv` to cli guide for `sleap-convert`

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>

* Only propagate Transpose Tracks when propagate is checked (#1748)

Fix always-propagate transpose tracks issue

* View Hyperparameter nonetype fix (#1766)

Pass config getter argument to fetch hyperparameters

* Adding ragged metadata to `info.json` (#1765)

Add ragged metadata to info.json file

* Add batch size to GUI for inference (#1771)

* Fix conda builds (#1776)

* test conda packages in a test environment as part of CI

* do not test sleap import using conda build

* use github environment variables to define build path for each OS in the matrix and add print statements for testing

* figure out paths one OS at a time

* github environment variables work in subsequent steps not current step

* use local builds first

* print env info

* try simple environment creation

* try conda instead of mamba

* fix windows build path

* fix windows build path

* add comment to reference pull request

* remove test stage from conda build for macs and test instead by creating the environment in a workflow

* test workflow by pushing to current branch

* test conda package on macos runner

* Mac build does not need nvidia channel

* qudida and albumentations are conda installed now

* add comment with original issue

* use python 3.9

* use conda match specifications syntax

* make print statements more readable for troubleshooting python versioning

* clean up build file

* update version for pre-release

* add TODO

* add tests for conda packages before uploading

* update ci comments and branches

* remove macos test of pip wheel since python 3.9 is not supported by setup-python action

* Upgrade build actions for release (#1779)

* update `build.yml` so it matches updates from `build_manual.yml`

* test `build.yml` without uploading

* test again using build_manual.yml

* build pip wheel with Ubuntu and turn off caching so build.yml exactly matches build_manual.yml

* `build.yml` on release only and upload

* testing caching

* `use-only-tar-bz2: true` makes environment unsolvable, change it back

* Update .github/workflows/build_manual.yml

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Update .github/workflows/build.yml

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* bump pre-release version

* fix version for pre-release

* run build and upload on release!

* try setting `CACHE_NUMBER` to 1 with `use-only-tar-bz2` set to true

* increasing the cache number to reset the cache does work when `use-only-tar-bz2` is set to true

* publish and upload on release only

---------

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Add ZMQ support via GUI and CLI (#1780)

* Add ZMQ support via GUI and CLI, automatic port handler, separate utils module for the functions

* Change menu name to match deleting predictions beyond max instance (#1790)

Change menu and function names

* Fix website build and remove build cache across workflows (#1786)

* test with build_manual on push

* comment out caching in build manual

* remove cache step from builad manual since environment resolves when this is commented out

* comment out cache in build ci

* remove cache from build on release

* remove cache from website build

* test website build on push

* add name to checkout step

* update checkout to v4

* update checkout to v4 in build ci

* remove cache since build ci works without it

* update upload-artifact to v4 in build ci

* update second chechout to v4 in build ci

* update setup-python to v5 in build ci

* update download-artifact to v4 in build ci

* update checkout to v4 in build ci

* update checkout to v4 in website build

* update setup-miniconda to v3.0.3 in website build

* update actions-gh-pages to v4 in website build

* update actions checkout and setup-python in ci

* update checkout action in ci to v4

* pip install lxml[html_clean] because of error message during action

* add error message to website to explain why pip install lxml[html_clean]

* remove my branch for pull request

* Bump to 1.4.1a1 (#1791)

* bump versions to 1.4.1a1

* we can change the version on the installation page since this will be merged into the develop branch and not main

* Fix windows conda package upload and build ci (#1792)

* windows OS is 2022 not 2019 on runner

* upload windows conda build manually but not pypi build

* remove comment and run build ci

* change build manual back so that it doesn't upload

* remove branch from build manual

* update installation docs for 1.4.1a1

* Fix zmq inference (#1800)

* Ensure that we always pass in the zmq_port dict to LossViewer

* Ensure zmq_ports has correct keys inside LossViewer

* Use specified controller and publish ports for first attempted addresses

* Add test for ports being set in LossViewer

* Add max attempts to find unused port

* Fix find free port loop and add for controller port also

* Improve code readablility and reuse

* Improve error message when unable to find free port

* Set selected instance to None after removal (#1808)

* Add test that selected instance set to None after removal

* Set selected instance to None after removal

* Add `InstancesList` class to handle backref to `LabeledFrame` (#1807)

* Add InstancesList class to handle backref to LabeledFrame

* Register structure/unstructure hooks for InstancesList

* Add tests for the InstanceList class

* Handle case where instance are passed in but labeled_frame is None

* Add tests relevant methods in LabeledFrame

* Delegate setting frame to InstancesList

* Add test for PredictedInstance.frame after complex merge

* Add todo comment to not use Instance.frame

* Add rtest for InstasnceList.remove

* Use normal list for informative `merged_instances`

* Add test for copy and clear

* Add copy and clear methods, use normal lists in merge method

* Bump to v1.4.1a2 (#1835)

bump to 1.4.1a2

* Updated trail length viewing options (#1822)

* updated trail length optptions

* Updated trail length options in the view menu

* Updated `prefs` to include length info from `preferences.yaml`

* Added trail length as method of `MainWindow`

* Updated trail length documentation

* black formatting

---------

Co-authored-by: Keya Loding <keya@Keyas-MacBook-Air.local>

* Handle case when no frame selection for trail overlay (#1832)

* Menu option to open preferences directory and update to util functions to pathlib (#1843)

* Add menu to view preferences directory and update to pathlib

* text formatting

* Add `Keep visualizations` checkbox to training GUI (#1824)

* Renamed save_visualizations to view_visualizations for clarity

* Added Delete Visualizations button to the training pipeline gui, exposed del_viz_predictions config option to the user

* Reverted view_ back to save_ and changed new training checkbox to Keep visualization images after training.

* Fixed keep_viz config option state override bug and updated keep_viz doc description

* Added test case for reading training CLI argument correctly

* Removed unnecessary testing code

* Creating test case to check for viz folder

* Finished tests to check CLI argument reading and viz directory existence

* Use empty string instead of None in cli args test

* Use keep_viz_images false in most all test configs (except test to override config)

---------

Co-authored-by: roomrys <38435167+roomrys@users.noreply.github.com>

* Allowing inference on multiple videos via `sleap-track` (#1784)

* implementing proposed code changes from issue #1777

* comments

* configuring output_path to support multiple video inputs

* fixing errors from preexisting test cases

* Test case / code fixes

* extending test cases for mp4 folders

* test case for output directory

* black and code rabbit fixes

* code rabbit fixes

* as_posix errors resolved

* syntax error

* adding test data

* black

* output error resolved

* edited for push to dev branch

* black

* errors fixed, test cases implemented

* invalid output test and invalid input test

* deleting debugging statements

* deleting print statements

* black

* deleting unnecessary test case

* implemented tmpdir

* deleting extraneous file

* fixing broken test case

* fixing test_sleap_track_invalid_output

* removing support for multiple slp files

* implementing talmo's comments

* adding comments

* Add object keypoint similarity method (#1003)

* Add object keypoint similarity method

* fix max_tracking

* correct off-by-one error

* correct off-by-one error

* Generate suggestions using max point displacement threshold (#1862)

* create function max_point_displacement, _max_point_displacement_video. Add to yaml file. Create test for new function . . . will need to edit

* remove unnecessary for loop, calculate proper displacement, adjusted tests accordingly

* Increase range for displacement threshold

* Fix frames not found bug

* Return the latter frame index

* Lint

---------

Co-authored-by: roomrys <38435167+roomrys@users.noreply.github.com>

* Added Three Different Cases for Adding a New Instance (#1859)

* implemented paste with offset

* right click and then default will paste the new instance at the location of the cursor

* modified the logics for creating new instance

* refined the logic

* fixed the logic for right click

* refined logics for adding new instance at a specific location

* Remove print statements

* Comment code

* Ensure that we choose a non nan reference node

* Move OOB nodes to closest in-bounds position

---------

Co-authored-by: roomrys <38435167+roomrys@users.noreply.github.com>

* Allow csv and text file support on sleap track (#1875)

* initial changes

* csv support and test case

* increased code coverage

* Error fixing, black, deletion of (self-written) unused code

* final edits

* black

* documentation changes

* documentation changes

* Fix GUI crash on scroll (#1883)

* Only pass wheelEvent to children that can handle it

* Add test for wheelEvent

* Fix typo to allow rendering videos with mp4 (Mac) (#1892)

Fix typo to allow rendering videos with mp4

* Do not apply offset when double clicking a `PredictedInstance` (#1888)

* Add offset argument to newInstance and AddInstance

* Apply offset of 10 for Add Instance menu button (Ctrl + I)

* Add offset for docks Add Instance button

* Make the QtVideoPlayer context menu unit-testable

* Add test for creating a new instance

* Add test for "New Instance" button in `InstancesDock`

* Fix typo in docstring

* Add docstrings and typehinting

* Remove unused imports and sort imports

* Refactor video writer to use imageio instead of skvideo (#1900)

* modify `VideoWriter` to use imageio with ffmpeg backend

* check to see if ffmpeg is present

* use the new check for ffmpeg

* import imageio.v2

* add imageio-ffmpeg to environments to test

* using avi format for now

* remove SKvideo videowriter

* test `VideoWriterImageio` minimally

* add more documentation for ffmpeg

* default mp4 for ffmpeg should be mp4

* print using `IMAGEIO` when using ffmpeg

* mp4 for ffmpeg

* use mp4 ending in test

* test `VideoWriterImageio` with avi file extension

* test video with odd size

* remove redundant filter since imageio-ffmpeg resizes automatically

* black

* remove unused import

* use logging instead of print statement

* import cv2 is needed for resize

* remove logging

* Use `Video.from_filename` when structuring videos (#1905)

* Use Video.from_filename when structuring videos

* Modify removal_test_labels to have extension in filename

* Use | instead of + in key commands (#1907)

* Use | instead of + in key commands

* Lint

* Replace QtDesktop widget in preparation for PySide6 (#1908)

* Replace to-be-depreciated QDesktopWidget

* Remove unused imports and sort remaining imports

* Remove unsupported |= operand to prepare for PySide6 (#1910)

Fixes TypeError: unsupported operand type(s) for |=: 'int' and 'Option'

* Use positional argument for exception type (#1912)

traceback.format_exception has changed it's first positional argument's name from etype to exc in python 3.7 to 3.10

* Replace all Video structuring with Video.cattr() (#1911)

* Remove unused AsyncVideo class (#1917)

Remove unused AsyncVideo

* Refactor `LossViewer` to use matplotlib (#1899)

* use updated syntax for QtAgg backend of matplotlib

* start add features to `MplCanvas` to replace QtCharts features in `LossViewer` (untested)

* remove QtCharts imports and replace with MplCanvas

* remove QtCharts imports and replace with MplCanvas

* start using MplCanvas in LossViwer instead of QtCharts (untested)

* use updated syntax

* Uncomment all commented out QtChart

* Add debug code

* Refactor monitor to use LossViewer._init_series method

* Add monitor only debug code

* Add methods for setting up axes and legend

* Add the matplotlib canvas to the widget

* Resize axis with data (no log support yet)

* Try using PathCollection for "batch"

* Get "batch" plotting with ax.scatter (no log support yet)

* Add log support

* Add a _resize_axis method

* Modify init_series to work for ax.plot as well

* Use matplotlib to plot epoch_loss line

* Add method _add_data_to_scatter

* Add _add_data_to_plot method

* Add docstring to _resize_axes

* Add matplotlib plot for val_loss

* Add matplotlib scatter for val_loss_best

* Avoid errors with setting log scale before any positive values

* Add x and y axes labels

* Set title (removing html tags)

* Add legend

* Adjust positioning of plot

* Lint

* Leave MplCanvas unchanged

* Removed unused training_monitor.LossViewer

* Resize fonts

* Move legend outside of plot

* Add debug code for montitor aesthetics

* Use latex formatting to bold parts of title

* Make axes aesthetic

* Add midpoint grid lines

* Set initial limits on x and y axes to be 0+

* Ensure x axis minimum is always resized to 0+

* Adjust plot to account for plateau patience title

* Add debug code for plateau patience title line

* Lint

* Set thicker line width

* Remove unused import

* Set log axis on initialization

* Make tick labels smaller

* Move plot down a smidge

* Move ylabel left a bit

* Lint

* Add class LossPlot

* Refactor LossViewer to use LossPlot

* Remove QtCharts code

* Remove debug codes

* Allocate space for figure items based on item's size

* Refactor LossPlot to use underscores for internal methods

* Ensure y_min, y_max not equal
Otherwise we get an unnecessary teminal message:
UserWarning: Attempting to set identical bottom == top == 3.0 results in singular transformations; automatically expanding.
  self.axes.set_ylim(y_min, y_max)

---------

Co-authored-by: roomrys <lmaree@ucsd.edu>
Co-authored-by: roomrys <38435167+roomrys@users.noreply.github.com>

* Refactor `LossViewer` to use underscores for internal method names (#1919)

Refactor LossViewer to use underscores for internal method names

* Manually handle `Instance.from_predicted` structuring when not `None` (#1930)

* Use `tf.math.mod` instead of `%` (#1931)

* Option for Max Stride to be 128 (#1941)

Co-authored-by: Max  Weinberg <maxweinberg85@gmail.com>

* Add discussion comment workflow (#1945)

* Add a bot to autocomment on workflow

* Use github markdown warning syntax

* Add a multiline warning

* Change happy coding to happy SLEAPing

Co-authored-by: Talmo Pereira <talmo@salk.edu>

---------

Co-authored-by: roomrys <lmaree@ucsd.edu>
Co-authored-by: Talmo Pereira <talmo@salk.edu>

* Add comment on issue workflow (#1946)

* Add workflow to test conda packages (#1935)

* Add missing imageio-ffmpeg to meta.ymls (#1943)

* Update installation docs 1.4.1 (#1810)

* [wip] Updated installation docs

* Add tabs for different OS installations

* Move installation methods to tabs

* Use tabs.css

* FIx styling error (line under last tab in terminal hint)

* Add installation instructions before TOC

* Replace mamba with conda

* Lint

* Find good light colors
not switching when change dark/light themes

* Get color scheme switching
with dark/light toggle button

* Upgrade website build dependencies

* Remove seemingly unneeded dependencies from workflow

* Add myst-nb>=0.16.0 lower bound

* Trigger dev website build

* Fix minor typo in css

* Add miniforge and one-liner installs for package managers

---------

Co-authored-by: roomrys <lmaree@ucsd.edu>
Co-authored-by: Talmo Pereira <talmo@salk.edu>

* Add imageio dependencies for pypi wheel (#1950)

Add imagio dependencies for pypi wheel

Co-authored-by: roomrys <lmaree@ucsd.edu>

* Do not always color skeletons table black (#1952)

Co-authored-by: roomrys <lmaree@ucsd.edu>

* Remove no module named work error (#1956)

* Do not always color skeletons table black

* Remove offending (possibly unneeded) line
that causes the no module named work error to print in terminal

* Remove offending (possibly unneeded) line
that causes the no module named work error to print in terminal

* Remove accidentally added changes

* Add (failing) test to ensure menu-item updates with state change

* Reconnect callback for menu-item (using lambda)

* Add (failing) test to ensure menu-item updates with state change

Do not assume inital state

* Reconnect callback for menu-item (using lambda)

---------

Co-authored-by: roomrys <lmaree@ucsd.edu>

* Add `normalized_instance_similarity` method  (#1939)

* Add normalize function

* Expose normalization function

* Fix tests

* Expose object keypoint sim function

* Fix tests

* Handle skeleton decoding internally (#1961)

* Reorganize (and add) imports

* Add (and reorganize) imports

* Modify decode_preview_image to return bytes if specified

* Implement (minimally tested) replace_jsonpickle_decode

* Add support for using idx_to_node map
i.e. loading from Labels (slp file)

* Ignore None items in reduce_list

* Convert large function to SkeletonDecoder class

* Update SkeletonDecoder.decode docstring

* Move decode_preview_image to SkeletonDecoder

* Use SkeletonDecoder instead of jsonpickle in tests

* Remove unused imports

* Add test for decoding dict vs tuple pystates

* Handle skeleton encoding internally (#1970)

* start class `SkeletonEncoder`

* _encoded_objects need to be a dict to add to

* add notebook for testing

* format

* fix type in docstring

* finish classmethod for encoding Skeleton as a json string

* test encoded Skeleton as json string by decoding it

* add test for decoded encoded skeleton

* update jupyter notebook for easy testing

* constraining attrs in dev environment to make sure decode format is always the same locally

* encode links first then encode source then target then type

* save first enconding statically as an input to _get_or_assign_id so that we do not always get py/id

* save first encoding statically

* first encoding is passed to _get_or_assign_id

* use first_encoding variable to determine if we should assign a py/id

* add print statements for debugging

* update notebook for easy testing

* black

* remove comment

* adding attrs constraint to show this passes for certain attrs version only

* add import

* switch out jsonpickle.encode

* oops remove import

* can attrs be unconstrained?

* forgot comma

* pin attrs for testing

* test Skeleton from json, template, with symmetries, and template

* use SkeletonEncoder.encode

* black

* try removing None values in EdgeType reduced

* Handle case when nodes are replaced by integer indices from caller

* Remove prototyping notebook

* Remove attrs pins

* Remove sort keys (which flips the neccessary ordering of our py/ids)

* Do not add extra indents to encoded file

* Only append links after fully encoded (fat-finger)

* Remove outdated comment

* Lint

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>
Co-authored-by: roomrys <38435167+roomrys@users.noreply.github.com>

* Pin ndx-pose<0.2.0 (#1978)

* Pin ndx-pose<0.2.0

* Typo

* Sort encoded `Skeleton` dictionary for backwards compatibility  (#1975)

* Add failing test to check that encoded Skeleton is sorted

* Sort Skeleton dictionary before encoding

* Remove unused import

* Disable comment bot for now

* Fix COCO Dataset Loading for Invisible Keypoints (#2035)

Update coco.py

# Fix COCO Dataset Loading for Invisible Keypoints

## Issue
When loading COCO datasets, keypoints marked as invisible (flag=0) are currently skipped and later placed randomly within the instance's bounding box. However, in COCO format, these keypoints may still have valid coordinate information that should be preserved (see toy_dataset for expected vs. current behavior).

## Changes
Modified the COCO dataset loading logic to:
- Check if invisible keypoints (flag=0) have non-zero coordinates
- If coordinates are (0,0), skip the point (existing behavior)
- If coordinates are not (0,0), create the point at those coordinates but mark it as not visible
- Maintain existing behavior for visible (flag=2) and labeled

* Lint

* Add tracking score as seekbar header options (#2047)

* Add `tracking_score` as a constructor arg for `PredictedInstance`

* Add `tracking_score` to ID models

* Add fixture with tracking scores

* Add tracking score to seekbar header

* Add bonsai guide for sleap docs (#2050)

* [WIP] Add bonsai guide page

* Add more information to the guide with images

* add branch for website build

* Typos

* fix links

* Include suggestions

* Add more screenshots and refine the doc

* Remove branch from website workflow

* Completed documentation edits from PR made by reviewer + review bot.

---------

Co-authored-by: Shrivaths Shyam <52810689+shrivaths16@users.noreply.github.com>
Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Don't mark complete on instance scaling (#2049)

* Add check for instances with track assigned before training ID models (#2053)

* Add menu item for deleting instances beyond frame limit (#1797)

* Add menu item for deleting instances beyond frame limit

* Add test function to test the instances returned

* typos

* Update docstring

* Add frame range form

* Extend command to use frame range

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>

* Highlight instance box on hover (#2055)

* Make node marker and label sizes configurable via preferences (#2057)

* Make node marker and label sizes configurable via preferences

* Fix test

* Enable touchpad pinch to zoom (#2058)

* Fix import PySide2 -> qtpy (#2065)

* Fix import PySide2 -> qtpy

* Remove unnecessary print statements.

* Add channels for pip conda env (#2067)

* Add channels for pypi conda env

* Trigger dev website build

* Separate the video name and its filepath columns in `VideoTablesModel` (#2052)

* add option to show video names with filepath

* add doc

* new feature added successfully

* delete unnecessary code

* remove attributes from video object

* Update dataviews.py

* remove all properties

* delete toggle option

* remove video show

* fix the order of the columns

* remove options

* Update sleap/gui/dataviews.py

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Update sleap/gui/dataviews.py

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* use pathlib instead of substrings

* Update dataviews.py

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Use Path instead of pathlib.Path
and sort imports and remove unused imports

* Use item.filename instead of getattr

---------

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Make status bar dependent on UI mode (#2063)

* remove bug for dark mode

* fix toggle case

---------

Co-authored-by: Liezl Maree <38435167+roomrys@users.noreply.github.com>

* Bump version to 1.4.1 (#2062)

* Bump version to 1.4.1

* Trigger conda/pypi builds (no upload)

* Trigger website build

* Add dev channel to installation instructions

---------

Co-authored-by: Talmo Pereira <talmo@salk.edu>

* Add -c sleap/label/dev channel for win/linux
- also trigger website build

---------

Co-authored-by: Scott Yang <67733409+scott-yj-yang@users.noreply.github.com>
Co-authored-by: Shrivaths Shyam <52810689+shrivaths16@users.noreply.github.com>
Co-authored-by: getzze <getzze@gmail.com>
Co-authored-by: Lili Karashchuk <krchtchk@gmail.com>
Co-authored-by: Sidharth Srinath <69165889+ssrinath22@users.noreply.github.com>
Co-authored-by: sidharth srinath <sidhumani22@gmail.com>
Co-authored-by: Talmo Pereira <talmo@salk.edu>
Co-authored-by: KevinZ0217 <96039456+KevinZ0217@users.noreply.github.com>
Co-authored-by: Elizabeth <106755962+eberrigan@users.noreply.github.com>
Co-authored-by: Talmo Pereira <talmo@princeton.edu>
Co-authored-by: eberrigan <berri104@gmail.com>
Co-authored-by: vaibhavtrip29 <82742234+vaibhavtrip29@users.noreply.github.com>
Co-authored-by: Keya Loding <117320751+keyaloding@users.noreply.github.com>
Co-authored-by: Keya Loding <keya@Keyas-MacBook-Air.local>
Co-authored-by: Hajin Park <hajin1819@gmail.com>
Co-authored-by: Elise Davis <elisemdavis02@gmail.com>
Co-authored-by: gqcpm <63070177+gqcpm@users.noreply.github.com>
Co-authored-by: Andrew Park <hep003@ucsd.edu>
Co-authored-by: roomrys <lmaree@ucsd.edu>
Co-authored-by: MweinbergUmass <143860933+MweinbergUmass@users.noreply.github.com>
Co-authored-by: Max  Weinberg <maxweinberg85@gmail.com>
Co-authored-by: DivyaSesh <64513125+gitttt-1234@users.noreply.github.com>
Co-authored-by: Felipe Parodi <53239931+felipe-parodi@users.noreply.github.com>
Co-authored-by: croblesMed <carlosrobles00001@gmail.com>
---
 .conda/README.md                              |    4 +-
 .conda/condarc.yaml                           |    1 +
 .conda/meta.yaml                              |   32 +-
 .conda_mac/build.sh                           |    1 -
 .conda_mac/condarc.yaml                       |    1 -
 .conda_mac/meta.yaml                          |   28 +-
 .github/ISSUE_TEMPLATE/bug_report.md          |   16 +-
 .../workflows/archive/comment-template.yml    |   71 +
 .github/workflows/archive/comment.yml         |   24 +
 .github/workflows/build.yml                   |  121 +-
 .github/workflows/build_conda_ci.yml          |  179 +++
 .github/workflows/build_manual.yml            |  213 ++-
 .../{build_ci.yml => build_pypi_ci.yml}       |   74 +-
 .github/workflows/ci.yml                      |   81 +-
 .github/workflows/website.yml                 |   24 +-
 AUTHORS                                       |    2 +
 README.rst                                    |    4 +-
 dev_requirements.txt                          |    7 +-
 docs/_static/bonsai-connection.jpg            |  Bin 0 -> 113805 bytes
 docs/_static/bonsai-filecapture.jpg           |  Bin 0 -> 68990 bytes
 docs/_static/bonsai-predictcentroids.jpg      |  Bin 0 -> 76547 bytes
 docs/_static/bonsai-predictposeidentities.jpg |  Bin 0 -> 85845 bytes
 docs/_static/bonsai-predictposes.jpg          |  Bin 0 -> 79334 bytes
 docs/_static/bonsai-workflow.jpg              |  Bin 0 -> 33481 bytes
 docs/_static/css/tabs.css                     |   91 ++
 docs/conf.py                                  |   16 +-
 docs/guides/bonsai.md                         |   75 ++
 docs/guides/cli.md                            |   27 +-
 docs/guides/gui.md                            |    2 +-
 docs/guides/index.md                          |    5 +
 docs/guides/proofreading.md                   |    2 +
 docs/installation.md                          |  424 +++---
 ..._and_inference_on_an_example_dataset.ipynb |    4 +-
 environment.yml                               |   13 +-
 environment_mac.yml                           |   12 +-
 environment_no_cuda.yml                       |   14 +-
 pypi_requirements.txt                         |    9 +-
 requirements.txt                              |    6 +-
 sleap/config/frame_range_form.yaml            |   13 +
 sleap/config/labeled_clip_form.yaml           |    4 +
 sleap/config/pipeline_form.yaml               |   70 +-
 sleap/config/suggestions.yaml                 |    9 +-
 sleap/config/training_editor_form.yaml        |    9 +-
 sleap/gui/app.py                              |  141 +-
 sleap/gui/commands.py                         |  445 +++++--
 sleap/gui/dataviews.py                        |   53 +-
 sleap/gui/dialogs/export_clip.py              |    8 +-
 sleap/gui/dialogs/filedialog.py               |    3 +-
 sleap/gui/dialogs/frame_range.py              |   42 +
 sleap/gui/dialogs/metrics.py                  |    3 +-
 sleap/gui/learning/dialog.py                  |   88 +-
 sleap/gui/learning/runners.py                 |   53 +-
 sleap/gui/overlays/base.py                    |    1 -
 sleap/gui/overlays/tracks.py                  |   23 +-
 sleap/gui/suggestions.py                      |   52 +
 sleap/gui/utils.py                            |   28 +
 sleap/gui/widgets/docks.py                    |   10 +-
 sleap/gui/widgets/monitor.py                  | 1176 ++++++++++++-----
 sleap/gui/widgets/mpl.py                      |    5 +-
 sleap/gui/widgets/training_monitor.py         |  566 --------
 sleap/gui/widgets/video.py                    |  143 +-
 sleap/info/feature_suggestions.py             |    2 +-
 sleap/info/metrics.py                         |  181 +--
 sleap/info/summary.py                         |   44 +-
 sleap/instance.py                             |  239 +++-
 sleap/io/asyncvideo.py                        |  218 ---
 sleap/io/convert.py                           |   22 +-
 sleap/io/dataset.py                           |   13 +
 sleap/io/format/coco.py                       |    3 +
 sleap/io/format/deeplabcut.py                 |   52 +-
 sleap/io/format/hdf5.py                       |   51 +-
 sleap/io/format/sleap_analysis.py             |    2 +-
 sleap/io/video.py                             |   46 +-
 sleap/io/videowriter.py                       |   71 +-
 sleap/io/visuals.py                           |   34 +-
 sleap/nn/config/outputs.py                    |    6 +-
 sleap/nn/data/augmentation.py                 |   89 +-
 sleap/nn/data/pipelines.py                    |   16 +-
 sleap/nn/data/providers.py                    |    4 +-
 sleap/nn/inference.py                         |  411 ++++--
 sleap/nn/peak_finding.py                      |    2 +-
 sleap/nn/system.py                            |   26 +-
 sleap/nn/tracker/components.py                |  110 +-
 sleap/nn/tracking.py                          |  114 +-
 sleap/nn/training.py                          |   31 +-
 sleap/prefs.py                                |   12 +-
 sleap/skeleton.py                             |  528 +++++++-
 .../training_profiles/baseline.centroid.json  |    1 +
 .../baseline_large_rf.bottomup.json           |    1 +
 .../baseline_large_rf.single.json             |    1 +
 .../baseline_large_rf.topdown.json            |    1 +
 .../baseline_medium_rf.bottomup.json          |    1 +
 .../baseline_medium_rf.single.json            |    1 +
 .../baseline_medium_rf.topdown.json           |    1 +
 .../pretrained.bottomup.json                  |    1 +
 .../pretrained.centroid.json                  |    1 +
 .../training_profiles/pretrained.single.json  |    1 +
 .../training_profiles/pretrained.topdown.json |    1 +
 sleap/util.py                                 |   48 +-
 sleap/version.py                              |    3 +-
 .../labeled-data/video/CollectedData_LM.csv   |   14 +-
 .../labeled-data/video/maudlc_testdata.csv    |    8 +
 .../labeled-data/video/maudlc_testdata_v2.csv |    8 +
 tests/data/dlc/madlc_230_config.yaml          |    8 +-
 ..._robot.000_small_robot_3_frame.analysis.h5 |  Bin 0 -> 26408 bytes
 .../initial_config.json                       |    1 +
 .../training_config.json                      |    1 +
 .../initial_config.json                       |    2 +-
 .../training_config.json                      |    2 +-
 .../initial_config.json                       |    1 +
 .../training_config.json                      |    1 +
 .../initial_config.json                       |    1 +
 .../training_config.json                      |    1 +
 .../initial_config.json                       |    1 +
 .../training_config.json                      |    1 +
 .../initial_config.json                       |    1 +
 .../training_config.json                      |    1 +
 .../fly_skeleton_legs_pystate_dict.json       |    1 +
 tests/data/tracks/clip.predictions.slp        |  Bin 0 -> 396184 bytes
 tests/fixtures/datasets.py                    |   21 +
 tests/fixtures/skeletons.py                   |   15 +-
 tests/fixtures/videos.py                      |    9 +
 tests/gui/learning/test_dialog.py             |   20 +
 tests/gui/test_app.py                         |    8 +
 tests/gui/test_commands.py                    |  126 +-
 tests/gui/test_dialogs.py                     |    1 -
 tests/gui/test_monitor.py                     |   23 +-
 tests/gui/test_suggestions.py                 |   14 +
 tests/gui/test_video_player.py                |   44 +-
 tests/gui/widgets/test_docks.py               |   36 +-
 tests/info/test_metrics.py                    |   55 +
 tests/info/test_summary.py                    |   15 +-
 tests/io/test_asyncvideo.py                   |   31 -
 tests/io/test_convert.py                      |    4 +-
 tests/io/test_dataset.py                      |   46 +-
 tests/io/test_formats.py                      |   86 +-
 tests/io/test_videowriter.py                  |   63 +-
 tests/io/test_visuals.py                      |   41 +
 tests/nn/architectures/test_common.py         |    2 +-
 .../nn/architectures/test_encoder_decoder.py  |    2 +-
 tests/nn/architectures/test_hourglass.py      |    2 +-
 tests/nn/architectures/test_leap.py           |    2 +-
 .../architectures/test_pretrained_encoders.py |    2 +-
 tests/nn/architectures/test_resnet.py         |    2 +-
 tests/nn/architectures/test_unet.py           |    2 +-
 tests/nn/config/test_config_utils.py          |    2 +-
 tests/nn/data/test_augmentation.py            |  114 +-
 tests/nn/data/test_data_training.py           |    2 +-
 tests/nn/data/test_edge_maps.py               |    2 +-
 tests/nn/data/test_identity.py                |    2 +-
 tests/nn/data/test_instance_centroids.py      |    2 +-
 tests/nn/data/test_instance_cropping.py       |    2 +-
 tests/nn/data/test_normalization.py           |    2 +-
 tests/nn/data/test_offset_regression.py       |    2 +-
 tests/nn/data/test_pipelines.py               |    2 +-
 tests/nn/data/test_providers.py               |    2 +-
 tests/nn/data/test_resizing.py                |    6 +-
 tests/nn/data/test_utils.py                   |    2 +-
 tests/nn/test_evals.py                        |    2 +-
 tests/nn/test_heads.py                        |    2 +-
 tests/nn/test_inference.py                    |  507 ++++++-
 tests/nn/test_inference_identity.py           |    2 +-
 tests/nn/test_model.py                        |    2 +-
 tests/nn/test_nn_utils.py                     |    2 +-
 tests/nn/test_paf_grouping.py                 |    2 +-
 tests/nn/test_peak_finding.py                 |    2 +-
 tests/nn/test_system.py                       |   24 +-
 tests/nn/test_tracker_components.py           |   83 +-
 tests/nn/test_tracking_integration.py         |    4 +-
 tests/nn/test_training.py                     |   68 +-
 tests/test_instance.py                        |  231 +++-
 tests/test_skeleton.py                        |   98 +-
 tests/test_util.py                            |    8 -
 173 files changed, 6329 insertions(+), 2492 deletions(-)
 create mode 100644 .github/workflows/archive/comment-template.yml
 create mode 100644 .github/workflows/archive/comment.yml
 create mode 100644 .github/workflows/build_conda_ci.yml
 rename .github/workflows/{build_ci.yml => build_pypi_ci.yml} (71%)
 create mode 100644 docs/_static/bonsai-connection.jpg
 create mode 100644 docs/_static/bonsai-filecapture.jpg
 create mode 100644 docs/_static/bonsai-predictcentroids.jpg
 create mode 100644 docs/_static/bonsai-predictposeidentities.jpg
 create mode 100644 docs/_static/bonsai-predictposes.jpg
 create mode 100644 docs/_static/bonsai-workflow.jpg
 create mode 100644 docs/_static/css/tabs.css
 create mode 100644 docs/guides/bonsai.md
 create mode 100644 sleap/config/frame_range_form.yaml
 create mode 100644 sleap/gui/dialogs/frame_range.py
 create mode 100644 sleap/gui/utils.py
 delete mode 100644 sleap/gui/widgets/training_monitor.py
 delete mode 100644 sleap/io/asyncvideo.py
 create mode 100644 tests/data/dlc/labeled-data/video/maudlc_testdata.csv
 create mode 100644 tests/data/dlc/labeled-data/video/maudlc_testdata_v2.csv
 create mode 100644 tests/data/hdf5_format_v1/small_robot.000_small_robot_3_frame.analysis.h5
 create mode 100644 tests/data/skeleton/fly_skeleton_legs_pystate_dict.json
 create mode 100644 tests/data/tracks/clip.predictions.slp
 create mode 100644 tests/info/test_metrics.py
 delete mode 100644 tests/io/test_asyncvideo.py

diff --git a/.conda/README.md b/.conda/README.md
index 71a49d7f1..65fadd36e 100644
--- a/.conda/README.md
+++ b/.conda/README.md
@@ -3,7 +3,7 @@ This folder defines the conda package build for Linux and Windows. There are run
 To build, first go to the base repo directory and install the build environment:
 
 ```
-mamba env create -f environment_build.yml -n sleap_build && conda activate sleap_build
+conda env create -f environment_build.yml -n sleap_build && conda activate sleap_build
 ```
 
 And finally, run the build command pointing to this directory:
@@ -15,7 +15,7 @@ conda build .conda --output-folder build -c conda-forge -c nvidia -c https://con
 To install the local package:
 
 ```
-mamba create -n sleap_0 -c conda-forge -c nvidia -c ./build -c https://conda.anaconda.org/sleap/ -c anaconda sleap=x.x.x
+conda create -n sleap_0 -c conda-forge -c nvidia -c ./build -c https://conda.anaconda.org/sleap/ -c anaconda sleap=x.x.x
 ```
 
 replacing x.x.x with the version of SLEAP that you just built.
diff --git a/.conda/condarc.yaml b/.conda/condarc.yaml
index f9ac6efbe..c5fbc2d96 100644
--- a/.conda/condarc.yaml
+++ b/.conda/condarc.yaml
@@ -1,5 +1,6 @@
 channels:
   - conda-forge
   - nvidia
+  - https://conda.anaconda.org/sleap/label/dev
   - sleap
   - anaconda
diff --git a/.conda/meta.yaml b/.conda/meta.yaml
index caffe9fcb..c1781a3ee 100644
--- a/.conda/meta.yaml
+++ b/.conda/meta.yaml
@@ -16,7 +16,7 @@ source:
   path: ../
 
 build:
-  number: 1
+  number: 0
 
 requirements:
   host:
@@ -32,12 +32,12 @@ requirements:
     # unnecessary pypi packages are installed via the build script (bld.bat, build.sh)
     - conda-forge::attrs ==21.4.0
     - conda-forge::cattrs ==1.1.1
-    - conda-forge::h5py ==3.1  # [not win]
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::h5py ==3.7.0
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::networkx
-    - conda-forge::opencv
+    - conda-forge::opencv <4.9.0
     - conda-forge::pandas
     - conda-forge::pillow >=8.3.2
     - conda-forge::psutil
@@ -53,20 +53,24 @@ requirements:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
+    - conda-forge::importlib-metadata ==4.11.4
   run:
     - conda-forge::python ==3.7.12  # Run into _MAX_WINDOWS_WORKERS not found if <
     - conda-forge::attrs ==21.4.0
     - conda-forge::cattrs ==1.1.1
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::cudatoolkit ==11.3.1
     - conda-forge::cudnn=8.2.1
     - nvidia::cuda-nvcc=11.3
-    - conda-forge::h5py ==3.1  # [not win]
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::h5py ==3.7.0
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::networkx
     - numpy >=1.19.5,<1.23.0  # Linux likes anaconda, windows likes conda-forge
-    - conda-forge::opencv
+    - conda-forge::opencv <4.9.0
     - conda-forge::pandas
     - conda-forge::pillow >=8.3.2
     - conda-forge::psutil
@@ -82,9 +86,15 @@ requirements:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
-    - sleap::tensorflow >=2.6.3,<2.11  # No windows GPU support for >2.10, sleap channel has 2.6.3
+    - sleap/label/dev::tensorflow ==2.7.0  # TODO: Switch to main label when updated
     - conda-forge::tensorflow-hub <0.14.0  # Causes pynwb conflicts on linux GH-1446
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
+    - conda-forge::importlib-metadata ==4.11.4
 
-test:
-  imports:
-    - sleap
\ No newline at end of file
+# This no longer works so we have moved it to the build workflow
+# https://github.com/talmolab/sleap/pull/1744
+# test:
+#   imports:
+#     - sleap
\ No newline at end of file
diff --git a/.conda_mac/build.sh b/.conda_mac/build.sh
index 2036035f6..a68193560 100644
--- a/.conda_mac/build.sh
+++ b/.conda_mac/build.sh
@@ -2,7 +2,6 @@
 
 # Install anything that didn't get conda installed via pip.
 # We need to turn pip index back on because Anaconda turns it off for some reason. 
-
 export PIP_NO_INDEX=False
 export PIP_NO_DEPENDENCIES=False
 export PIP_IGNORE_INSTALLED=False
diff --git a/.conda_mac/condarc.yaml b/.conda_mac/condarc.yaml
index df2727c74..c1be41bf1 100644
--- a/.conda_mac/condarc.yaml
+++ b/.conda_mac/condarc.yaml
@@ -1,4 +1,3 @@
-# This file is not used at the moment, but when github actions can be used to build the package, it needs to be listed.
 # https://github.com/github/roadmap/issues/528
 
 channels:
diff --git a/.conda_mac/meta.yaml b/.conda_mac/meta.yaml
index 7496f2057..8f773badf 100644
--- a/.conda_mac/meta.yaml
+++ b/.conda_mac/meta.yaml
@@ -16,14 +16,14 @@ about:
   summary: {{ data.get('description') }}
 
 build:
-  number: 1
+  number: 0
 
 source:
   path: ../
 
 requirements:
   host:  
-    - conda-forge::python ~=3.9
+    - conda-forge::python >=3.9.0, <3.10.0
     - anaconda::numpy >=1.19.5,<1.23.0
     - conda-forge::setuptools
     - conda-forge::packaging
@@ -34,11 +34,11 @@ requirements:
     - conda-forge::attrs >=21.2.0
     - conda-forge::cattrs ==1.1.1
     - conda-forge::h5py
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::keras <2.10.0,>=2.9.0rc0  # Required by tensorflow-macos
-    - conda-forge::networkx
+    - conda-forge::networkx <3.3
     - conda-forge::opencv
     - conda-forge::pandas
     - conda-forge::pillow
@@ -55,17 +55,20 @@ requirements:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
 
   run:
-    - conda-forge::python ~=3.9
+    - conda-forge::python >=3.9.0, <3.10.0
     - conda-forge::attrs >=21.2.0
     - conda-forge::cattrs ==1.1.1
     - conda-forge::h5py
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::keras <2.10.0,>=2.9.0rc0  # Required by tensorflow-macos
-    - conda-forge::networkx
+    - conda-forge::networkx <3.3
     - anaconda::numpy >=1.19.5,<1.23.0
     - conda-forge::opencv
     - conda-forge::pandas
@@ -83,8 +86,11 @@ requirements:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
-    - conda-forge::tensorflow-hub
+    # - conda-forge::tensorflow-hub  # pulls in tensorflow cpu from conda-forge
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
 
-test:
-  imports:
-    - sleap
+# test:
+#   imports:
+#     - sleap
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index 8c95f28dc..6a92c2e3b 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -25,15 +25,15 @@ Tell us a little about the system you're using.
 Please include information about how you installed.
  -->
 
-- OS:
+-   OS:
 <!-- [e.g. ubuntu 20.04, macOS 11.0] -->
-- Version(s):
-<!-- e.g. [SLEAP v1.3.3, python 3.8] --->
-- SLEAP installation method (listed [here](https://sleap.ai/installation.html#)):
-  - [ ] [Conda from package](https://sleap.ai/installation.html#conda-package)
-  - [ ] [Conda from source](https://sleap.ai/installation.html#conda-from-source)
-  - [ ] [pip package](https://sleap.ai/installation.html#pip-package)
-  - [ ] [Apple Silicon Macs](https://sleap.ai/installation.html#apple-silicon-macs)
+-   Version(s):
+<!-- e.g. [SLEAP v1.4.1, python 3.8] --->
+-   SLEAP installation method (listed [here](https://sleap.ai/installation.html#)):
+    -   [ ] [Conda from package](https://sleap.ai/installation.html#conda-package)
+    -   [ ] [Conda from source](https://sleap.ai/installation.html#conda-from-source)
+    -   [ ] [pip package](https://sleap.ai/installation.html#pip-package)
+    -   [ ] [Apple Silicon Macs](https://sleap.ai/installation.html#apple-silicon-macs)
 
 <details><summary>Environment packages</summary>
 <!-- For reproduction, it's useful to have the full environment. For example, the output of `pip freeze` or `conda list` --->
diff --git a/.github/workflows/archive/comment-template.yml b/.github/workflows/archive/comment-template.yml
new file mode 100644
index 000000000..3bef84531
--- /dev/null
+++ b/.github/workflows/archive/comment-template.yml
@@ -0,0 +1,71 @@
+name: Reusable Comment Workflow
+
+on:
+  workflow_call:
+    inputs:
+      subject_id:
+        required: true
+        type: string
+      body_prefix:
+        required: true
+        type: string
+      comment_type:
+        required: true
+        type: string
+
+jobs:
+  comment:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Post a comment
+        uses: actions/github-script@v6
+        with:
+          script: |
+            const { owner, repo } = context.repo;
+            const subject_id = '${{ inputs.subject_id }}';
+            const comment_type = '${{ inputs.comment_type }}';
+            const baseBody = `
+              We appreciate your input and will review it soon.
+
+              > [!WARNING]  
+              > A friendly reminder that this is a public forum. Please be cautious when clicking links, downloading files, or running scripts posted by others.
+              >
+              > - Always verify the credibility of links and code.
+              > - Avoid running scripts or installing files from untrusted sources.
+              > - If you're unsure, ask for clarification before proceeding.
+
+              Stay safe and happy SLEAPing!
+
+              Best regards,
+              The Team
+            `;
+            const body = `${{ inputs.body_prefix }}\n\n${baseBody}`;
+
+            const mutation = comment_type === 'discussion'
+              ? `
+                mutation($discussionId: ID!, $body: String!) {
+                  addDiscussionComment(input: {discussionId: $discussionId, body: $body}) {
+                    comment {
+                      id
+                    }
+                  }
+                }
+              `
+              : `
+                mutation($issueId: ID!, $body: String!) {
+                  addComment(input: {subjectId: $issueId, body: $body}) {
+                    commentEdge {
+                      node {
+                        id
+                        body
+                      }
+                    }
+                  }
+                }
+              `;
+
+            const variables = comment_type === 'discussion'
+              ? { discussionId: subject_id, body: body.trim() }
+              : { issueId: subject_id, body: body.trim() };
+
+            await github.graphql(mutation, variables);
diff --git a/.github/workflows/archive/comment.yml b/.github/workflows/archive/comment.yml
new file mode 100644
index 000000000..a24df018f
--- /dev/null
+++ b/.github/workflows/archive/comment.yml
@@ -0,0 +1,24 @@
+name: Comment on New Discussions and Issues
+
+on:
+  discussion:
+    types: [created]
+  issues:
+    types: [opened]
+
+jobs:
+  comment_on_discussion:
+    if: github.event_name == 'discussion'
+    uses: ./.github/workflows/comment-template.yml
+    with:
+      subject_id: ${{ github.event.discussion.node_id }}
+      body_prefix: "Thank you for starting a new discussion!"
+      comment_type: "discussion"
+
+  comment_on_issue:
+    if: github.event_name == 'issues'
+    uses: ./.github/workflows/comment-template.yml
+    with:
+      subject_id: ${{ github.event.issue.node_id }}
+      body_prefix: "Thank you for opening a new issue!"
+      comment_type: "issue"
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 02bc8798b..74203245c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -13,39 +13,37 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: ["ubuntu-22.04", "windows-2022", "macos-latest"]
+        os: ["ubuntu-22.04", "windows-2022", "macos-14"]
         # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixinclude
         include:
           # Use this condarc as default
           - condarc: .conda/condarc.yaml
+          - pyver: "3.7"
           # Use special condarc if macos
-          - os: "macos-latest"
+          - os: "macos-14"
             condarc: .conda_mac/condarc.yaml
+            pyver: "3.9"
     steps:
       # Setup
-      - uses: actions/checkout@v2
-      - name: Cache conda
-        uses: actions/cache@v1
-        env:
-          # Increase this value to reset cache if environment_build.yml has not changed
-          CACHE_NUMBER: 0
-        with:
-          path: ~/conda_pkgs_dir
-          key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('environment_build.yml', 'requirements.txt') }}
+      - name: Checkout
+        uses: actions/checkout@v4
+
       - name: Setup Miniconda
-        # https://github.com/conda-incubator/setup-miniconda
-        uses: conda-incubator/setup-miniconda@v2.0.1
+        uses: conda-incubator/setup-miniconda@v3.0.3
         with:
-          python-version: 3.7
-          use-only-tar-bz2: true # IMPORTANT: This needs to be set for caching to work properly!
-          environment-file: environment_build.yml
+          miniforge-version: latest
           condarc-file: ${{ matrix.condarc }}
+          python-version: ${{ matrix.pyver }}
+          environment-file: environment_build.yml
           activate-environment: sleap_ci
+          conda-solver: "libmamba"
+
       - name: Print environment info
         shell: bash -l {0}
         run: |
           which python
           conda info
+          conda list
 
       # Build pip wheel (Ubuntu)
       - name: Build pip wheel (Ubuntu)
@@ -69,21 +67,92 @@ jobs:
         shell: bash -l {0}
         run: |
           conda build .conda --output-folder build
+          echo "BUILD_PATH=$(pwd)/build" >> "$GITHUB_ENV"
 
-      # Build conda package (Windows)
+      # Build conda package (Windows) 
       - name: Build conda package (Windows)
         if: matrix.os == 'windows-2022'
         shell: powershell
         run: |
           conda build .conda --output-folder build
+          echo "BUILD_PATH=\$(pwd)\build" >> "$env:GITHUB_ENV"
 
       # Build conda package (Mac)
       - name: Build conda package (Mac)
-        if: matrix.os == 'macos-latest'
+        if: matrix.os == 'macos-14'
         shell: bash -l {0}
         run: |
           conda build .conda_mac --output-folder build
+          echo "BUILD_PATH=$(pwd)/build" >> "$GITHUB_ENV"
+
+      # Test built conda package (Ubuntu and Windows)
+      - name: Test built conda package (Ubuntu and Windows)
+        if: matrix.os != 'macos-14'
+        shell: bash -l {0}
+        run: |
+          echo "Current build path: $BUILD_PATH"
+          conda deactivate
+    
+          echo "Python executable before activating environment:"
+          which python
+          echo "Python version before activating environment:"
+          python --version
+          echo "Conda info before activating environment:"
+          conda info
+
+          echo "Creating and testing conda environment with sleap package..."
+          conda create -y -n sleap_test -c file://$BUILD_PATH -c sleap/label/dev -c conda-forge -c nvidia -c anaconda sleap
+          conda activate sleap_test
 
+          echo "Python executable after activating sleap_test environment:"
+          which python
+          echo "Python version after activating sleap_test environment:"
+          python --version
+          echo "Conda info after activating sleap_test environment:"
+          conda info
+          echo "List of installed conda packages in the sleap_test environment:"
+          conda list
+          echo "List of installed pip packages in the sleap_test environment:"
+          pip list
+    
+          echo "Testing sleap package installation..."
+          sleap_version=$(python -c "import sleap; print(sleap.__version__)")
+          echo "Test completed using sleap version: $sleap_version"
+
+      # Test built conda package (Mac)
+      - name: Test built conda package (Mac)
+        if: matrix.os == 'macos-14'
+        shell: bash -l {0}
+        run: |
+          echo "Current build path: $BUILD_PATH"
+          conda deactivate
+    
+          echo "Python executable before activating environment:"
+          which python
+          echo "Python version before activating environment:"
+          python --version
+          echo "Conda info before activating environment:"
+          conda info
+    
+          echo "Creating and testing conda environment with sleap package..."
+          conda create -y -n sleap_test -c file://$BUILD_PATH -c conda-forge -c anaconda sleap
+          conda activate sleap_test
+    
+          echo "Python executable after activating sleap_test environment:"
+          which python
+          echo "Python version after activating sleap_test environment:"
+          python --version
+          echo "Conda info after activating sleap_test environment:"
+          conda info
+          echo "List of installed conda packages in the sleap_test environment:"
+          conda list
+          echo "List of installed pip packages in the sleap_test environment:"
+          pip list
+    
+          echo "Testing sleap package installation..."
+          sleap_version=$(python -c "import sleap; print(sleap.__version__)")
+          echo "Test completed using sleap version: $sleap_version"
+      
       # Login to conda (Ubuntu)
       - name: Login to Anaconda (Ubuntu)
         if: matrix.os == 'ubuntu-22.04'
@@ -95,7 +164,7 @@ jobs:
 
       # Login to conda (Windows)
       - name: Login to Anaconda (Windows)
-        if: matrix.os == 'windows-2019'
+        if: matrix.os == 'windows-2022'
         env:
           ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
         shell: powershell
@@ -104,7 +173,7 @@ jobs:
       
       # Login to conda (Mac)
       - name: Login to Anaconda (Mac)
-        if: matrix.os == 'macos-latest'
+        if: matrix.os == 'macos-14'
         env:
           ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
         shell: bash -l {0}
@@ -113,12 +182,12 @@ jobs:
       
       # Upload conda package (Windows)
       - name: Upload conda package (Windows/main)
-        if: matrix.os == 'windows-2019' && !github.event.release.prerelease
+        if: matrix.os == 'windows-2022' && !github.event.release.prerelease
         shell: powershell
         run: |
           anaconda -v upload "build\win-64\*.tar.bz2"
       - name: Upload conda package (Windows/dev)
-        if: matrix.os == 'windows-2019' && github.event.release.prerelease
+        if: matrix.os == 'windows-2022' && github.event.release.prerelease
         shell: powershell
         run: |
           anaconda -v upload "build\win-64\*.tar.bz2" --label dev
@@ -137,15 +206,15 @@ jobs:
       
       # Upload conda package (Mac)
       - name: Upload conda package (Mac/main)
-        if: matrix.os == 'macos-latest' && !github.event.release.prerelease
+        if: matrix.os == 'macos-14' && !github.event.release.prerelease
         shell: bash -l {0}
         run: |
-          anaconda -v upload build/osx-64/*.tar.bz2 --label dev
+          anaconda -v upload build/osx-arm64/*.tar.bz2 --label dev
       - name: Upload conda package (Mac/dev)
-        if: matrix.os == 'macos-latest' && github.event.release.prerelease
+        if: matrix.os == 'macos-14' && github.event.release.prerelease
         shell: bash -l {0}
         run: |
-          anaconda -v upload build/osx-64/*.tar.bz2 --label dev
+          anaconda -v upload build/osx-arm64/*.tar.bz2 --label dev
       
       # Logout
       - name: Logout from Anaconda
diff --git a/.github/workflows/build_conda_ci.yml b/.github/workflows/build_conda_ci.yml
new file mode 100644
index 000000000..3fd3d2b92
--- /dev/null
+++ b/.github/workflows/build_conda_ci.yml
@@ -0,0 +1,179 @@
+# Run tests using built conda packages.
+name: Build Conda CI (no upload)
+
+# Run when changes to pip wheel
+on:
+  push:
+    paths:
+      - ".conda/meta.yaml"
+      - ".conda_mac/meta.yaml"
+      - "setup.py"
+      - "requirements.txt"
+      - "dev_requirements.txt"
+      - "environment_build.yml"
+      - ".github/workflows/build_conda_ci.yml" # Run!
+
+# If RUN_BUILD_JOB is set to true, then RUN_ID will be overwritten to the current run id
+env:
+  RUN_BUILD_JOB: true
+  RUN_ID: 10713717594 # Only used if RUN_BUILD_JOB is false (to dowload build artifact)
+
+jobs:
+  build:
+    name: Build package from push (${{ matrix.os }})
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        os: ["windows-2022", "ubuntu-22.04", "macos-14"]
+        # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixinclude
+        include:
+          # Use these variables as defaults
+          - condarc: .conda/condarc.yaml
+          - conda-folder: .conda
+          - pyver: "3.10"
+          - build-prefix: win
+          - os: "ubuntu-22.04"
+            build-prefix: linux
+          # Use special condarc if macos
+          - os: "macos-14"
+            condarc: .conda_mac/condarc.yaml
+            conda-folder: .conda_mac
+            build-prefix: osx
+
+    steps:
+      # Setup
+      - name: Checkout
+        if: env.RUN_BUILD_JOB == 'true'
+        uses: actions/checkout@v4
+
+      - name: Setup Miniconda
+        if: env.RUN_BUILD_JOB == 'true'
+        uses: conda-incubator/setup-miniconda@v3.0.4
+        with:
+          miniforge-version: latest
+          condarc-file: ${{ matrix.condarc }}
+          python-version: ${{ matrix.pyver }}
+          environment-file: environment_build.yml
+          activate-environment: sleap_ci
+          conda-solver: "libmamba"
+
+      - name: Print build environment info
+        if: env.RUN_BUILD_JOB == 'true'
+        shell: bash -l {0}
+        run: |
+          which python
+          conda list
+          pip freeze
+
+      # Build conda package
+      - name: Build conda package
+        if: env.RUN_BUILD_JOB == 'true'
+        shell: bash -l {0}
+        run: |
+          conda build ${{ matrix.conda-folder }} --output-folder build
+
+      # Upload artifact "tests" can use it
+      - name: Upload conda package artifact
+        if: env.RUN_BUILD_JOB == 'true'
+        uses: actions/upload-artifact@v4
+        with:
+          name: sleap-build-${{ matrix.build-prefix }}
+          path: build # Upload entire build directory
+          retention-days: 1
+          overwrite: true
+
+  tests:
+    name: Run tests using package (${{ matrix.os }})
+    runs-on: ${{ matrix.os }}
+    needs: build # Ensure the build job has completed before starting this job.
+    strategy:
+      fail-fast: false
+      matrix:
+        os: ["windows-2022", "ubuntu-22.04", "macos-14"]
+        # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixinclude
+        include:
+          # Default values
+          - build-prefix: win
+          - build-suffix: 64
+          - test_args: pytest --durations=-1 tests/
+          - condarc: .conda/condarc.yaml
+          - pyver: "3.10"
+          - conda-channels: -c conda-forge -c nvidia -c anaconda
+          # Ubuntu specific values
+          - os: ubuntu-22.04
+            build-prefix: linux
+            # Otherwise core dumped in github actions
+            test_args: |
+              sudo apt install xvfb libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0
+              sudo Xvfb :1 -screen 0 1024x768x24 </dev/null &
+              export DISPLAY=":1"
+              pytest tests -k 'not exclude_from_linux_pip_test'
+          # Use special condarc if macos
+          - os: "macos-14"
+            build-prefix: osx
+            build-suffix: arm64
+            condarc: .conda_mac/condarc.yaml
+            conda-channels: -c conda-forge -c anaconda
+
+    steps:
+      - name: Checkout repo
+        uses: actions/checkout@v4
+
+      - name: Setup Python
+        uses: actions/setup-python@v5
+        with:
+          python-version: ${{ matrix.pyver }}
+
+      - name: Use current run id for conda package download
+        shell: bash -l {0}
+        if: env.RUN_BUILD_JOB == 'true'
+        run: echo "RUN_ID=${{ github.run_id }}" >> $GITHUB_ENV
+
+      # https://github.com/actions/download-artifact?tab=readme-ov-file#usage
+      - name: Download conda package artifact
+        uses: actions/download-artifact@v4
+        id: download
+        with:
+          name: sleap-build-${{ matrix.build-prefix }}
+          path: build
+          run-id: ${{ env.RUN_ID }}
+          github-token: ${{ secrets.GITHUB_TOKEN }}
+
+      - name: List items in current directory
+        run: |
+          ls .
+          ls -R build
+
+      - name: Setup Miniconda
+        uses: conda-incubator/setup-miniconda@v3.0.4
+        with:
+          miniforge-version: latest
+          condarc-file: ${{ matrix.condarc }}
+          python-version: ${{ matrix.pyver }}
+          conda-solver: "libmamba"
+
+      - name: Create conda environment
+        shell: bash -l {0}
+        run: conda create sleap -y -n sleap_ci -c ./build ${{ matrix.conda-channels }}
+
+      - name: Install packages for testing
+        shell: bash -l {0}
+        run: |
+          conda activate sleap_ci
+          pip install -r "dev_requirements.txt"
+
+      # Note: "conda activate" does not persist across steps
+      - name: Print environment info
+        shell: bash -l {0}
+        run: |
+          conda activate sleap_ci
+          conda info
+          conda list
+          pip freeze
+
+      - name: Test package
+        shell: bash -l {0}
+        run: |
+          conda activate sleap_ci
+          ${{ matrix.test_args}}
diff --git a/.github/workflows/build_manual.yml b/.github/workflows/build_manual.yml
index ab689342d..7cba65d67 100644
--- a/.github/workflows/build_manual.yml
+++ b/.github/workflows/build_manual.yml
@@ -8,8 +8,10 @@ on:
     paths:
       - '.conda/meta.yaml'
       - '.conda_mac/meta.yaml'
+      - '.github/workflows/build_manual.yml'
     branches:
-      - develop
+      # - develop
+      - fakebranch
 
 jobs:
   build:
@@ -18,39 +20,37 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: ["ubuntu-22.04", "windows-2022", "macos-latest"]
+        os: ["ubuntu-22.04", "windows-2022", "macos-14"]
         # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixinclude
         include:
           # Use this condarc as default
           - condarc: .conda/condarc.yaml
+          - pyver: "3.7"
           # Use special condarc if macos
-          - os: "macos-latest"
+          - os: "macos-14"
             condarc: .conda_mac/condarc.yaml
+            pyver: "3.9"
     steps:
       # Setup
-      - uses: actions/checkout@v2
-      - name: Cache conda
-        uses: actions/cache@v1
-        env:
-          # Increase this value to reset cache if environment_build.yml has not changed
-          CACHE_NUMBER: 0
-        with:
-          path: ~/conda_pkgs_dir
-          key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('environment_build.yml', 'requirements.txt') }}
+      - name: Checkout
+        uses: actions/checkout@v4
+
       - name: Setup Miniconda
-        # https://github.com/conda-incubator/setup-miniconda
-        uses: conda-incubator/setup-miniconda@v2.0.1
+        uses: conda-incubator/setup-miniconda@v3.0.3
         with:
-          python-version: 3.7
-          use-only-tar-bz2: true # IMPORTANT: This needs to be set for caching to work properly!
-          environment-file: environment_build.yml
+          miniforge-version: latest
           condarc-file: ${{ matrix.condarc }}
+          python-version: ${{ matrix.pyver }}
+          environment-file: environment_build.yml
           activate-environment: sleap_ci
+          conda-solver: "libmamba"
+
       - name: Print environment info
         shell: bash -l {0}
         run: |
           which python
           conda info
+          conda list
 
       # Build pip wheel (Not Windows)
       - name: Build pip wheel (Not Windows)
@@ -59,14 +59,14 @@ jobs:
         run: |
           python setup.py bdist_wheel
 
-      # Upload pip wheel (Ubuntu)
-      - name: Upload pip wheel (Ubuntu)
-        if: matrix.os == 'ubuntu-22.04'
-        env:
-          PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
-        shell: bash -l {0}
-        run: |
-          twine upload -u __token__ -p "$PYPI_TOKEN" dist/* --non-interactive --skip-existing --disable-progress-bar
+      # # Upload pip wheel (Ubuntu)
+      # - name: Upload pip wheel (Ubuntu)
+      #   if: matrix.os == 'ubuntu-22.04'
+      #   env:
+      #     PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
+      #   shell: bash -l {0}
+      #   run: |
+      #     twine upload -u __token__ -p "$PYPI_TOKEN" dist/* --non-interactive --skip-existing --disable-progress-bar
 
       # Build conda package (Ubuntu)
       - name: Build conda package (Ubuntu)
@@ -74,70 +74,141 @@ jobs:
         shell: bash -l {0}
         run: |
           conda build .conda --output-folder build
+          echo "BUILD_PATH=$(pwd)/build" >> "$GITHUB_ENV"
 
-      # Build conda package (Windows)
+      # Build conda package (Windows) 
       - name: Build conda package (Windows)
         if: matrix.os == 'windows-2022'
         shell: powershell
         run: |
           conda build .conda --output-folder build
+          echo "BUILD_PATH=\$(pwd)\build" >> "$env:GITHUB_ENV"
 
       # Build conda package (Mac)
       - name: Build conda package (Mac)
-        if: matrix.os == 'macos-latest'
+        if: matrix.os == 'macos-14'
         shell: bash -l {0}
         run: |
           conda build .conda_mac --output-folder build
+          echo "BUILD_PATH=$(pwd)/build" >> "$GITHUB_ENV"
 
-      # Login to conda (Ubuntu)
-      - name: Login to Anaconda (Ubuntu)
-        if: matrix.os == 'ubuntu-22.04'
-        env:
-          ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
+      # Test built conda package (Ubuntu and Windows)
+      - name: Test built conda package (Ubuntu and Windows)
+        if: matrix.os != 'macos-14'
         shell: bash -l {0}
         run: |
-          yes 2>/dev/null | anaconda login --username sleap --password "$ANACONDA_LOGIN" || true
-      
-      # Login to conda (Windows)
-      - name: Login to Anaconda (Windows)
-        if: matrix.os == 'windows-2022'
-        env:
-          ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
-        shell: powershell
-        run: |
-          echo "yes" | anaconda login --username sleap --password "$env:ANACONDA_LOGIN"
-      
-      # Login to conda (Mac)
-      - name: Login to Anaconda (Mac)
-        if: matrix.os == 'macos-latest'
-        env:
-          ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
+          echo "Current build path: $BUILD_PATH"
+          conda deactivate
+    
+          echo "Python executable before activating environment:"
+          which python
+          echo "Python version before activating environment:"
+          python --version
+          echo "Conda info before activating environment:"
+          conda info
+
+          echo "Creating and testing conda environment with sleap package..."
+          conda create -y -n sleap_test -c file://$BUILD_PATH -c sleap/label/dev -c conda-forge -c nvidia -c anaconda sleap
+          conda activate sleap_test
+
+          echo "Python executable after activating sleap_test environment:"
+          which python
+          echo "Python version after activating sleap_test environment:"
+          python --version
+          echo "Conda info after activating sleap_test environment:"
+          conda info
+          echo "List of installed conda packages in the sleap_test environment:"
+          conda list
+          echo "List of installed pip packages in the sleap_test environment:"
+          pip list
+    
+          echo "Testing sleap package installation..."
+          sleap_version=$(python -c "import sleap; print(sleap.__version__)")
+          echo "Test completed using sleap version: $sleap_version"
+
+      # Test built conda package (Mac)
+      - name: Test built conda package (Mac)
+        if: matrix.os == 'macos-14'
         shell: bash -l {0}
         run: |
-          yes 2>/dev/null | anaconda login --username sleap --password "$ANACONDA_LOGIN" || true
+          echo "Current build path: $BUILD_PATH"
+          conda deactivate
+    
+          echo "Python executable before activating environment:"
+          which python
+          echo "Python version before activating environment:"
+          python --version
+          echo "Conda info before activating environment:"
+          conda info
+    
+          echo "Creating and testing conda environment with sleap package..."
+          conda create -y -n sleap_test -c file://$BUILD_PATH -c conda-forge -c anaconda sleap
+          conda activate sleap_test
+    
+          echo "Python executable after activating sleap_test environment:"
+          which python
+          echo "Python version after activating sleap_test environment:"
+          python --version
+          echo "Conda info after activating sleap_test environment:"
+          conda info
+          echo "List of installed conda packages in the sleap_test environment:"
+          conda list
+          echo "List of installed pip packages in the sleap_test environment:"
+          pip list
+    
+          echo "Testing sleap package installation..."
+          sleap_version=$(python -c "import sleap; print(sleap.__version__)")
+          echo "Test completed using sleap version: $sleap_version"
+
+      # # Login to conda (Ubuntu)
+      # - name: Login to Anaconda (Ubuntu)
+      #   if: matrix.os == 'ubuntu-22.04'
+      #   env:
+      #     ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
+      #   shell: bash -l {0}
+      #   run: |
+      #     yes 2>/dev/null | anaconda login --username sleap --password "$ANACONDA_LOGIN" || true
       
-      # Upload conda package (Windows)
-      - name: Upload conda package (Windows/dev)
-        if: matrix.os == 'windows-2022'
-        shell: powershell
-        run: |
-          anaconda -v upload "build\win-64\*.tar.bz2" --label dev
+      # # Login to conda (Windows)
+      # - name: Login to Anaconda (Windows)
+      #   if: matrix.os == 'windows-2022'
+      #   env:
+      #     ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
+      #   shell: powershell
+      #   run: |
+      #     echo "yes" | anaconda login --username sleap --password "$env:ANACONDA_LOGIN"
       
-      # Upload conda package (Ubuntu)
-      - name: Upload conda package (Ubuntu/dev)
-        if: matrix.os == 'ubuntu-22.04'
-        shell: bash -l {0}
-        run: |
-          anaconda -v upload build/linux-64/*.tar.bz2 --label dev
+      # # Login to conda (Mac)
+      # - name: Login to Anaconda (Mac)
+      #   if: matrix.os == 'macos-14'
+      #   env:
+      #     ANACONDA_LOGIN: ${{ secrets.ANACONDA_LOGIN }}
+      #   shell: bash -l {0}
+      #   run: |
+      #     yes 2>/dev/null | anaconda login --username sleap --password "$ANACONDA_LOGIN" || true
       
-      # Upload conda package (Mac)
-      - name: Upload conda package (Mac/dev)
-        if: matrix.os == 'macos-latest'
-        shell: bash -l {0}
-        run: |
-          anaconda -v upload build/osx-64/*.tar.bz2 --label dev
+      # # Upload conda package (Windows)
+      # - name: Upload conda package (Windows/dev)
+      #   if: matrix.os == 'windows-2022'
+      #   shell: powershell
+      #   run: |
+      #     anaconda -v upload "build\win-64\*.tar.bz2" --label dev
       
-      - name: Logout from Anaconda
-        shell: bash -l {0}
-        run: |
-          anaconda logout
+      # # Upload conda package (Ubuntu)
+      # - name: Upload conda package (Ubuntu/dev)
+      #   if: matrix.os == 'ubuntu-22.04'
+      #   shell: bash -l {0}
+      #   run: |
+      #     anaconda -v upload build/linux-64/*.tar.bz2 --label dev
+      
+      # # Upload conda package (Mac)
+      # - name: Upload conda package (Mac/dev)
+      #   if: matrix.os == 'macos-14'
+      #   shell: bash -l {0}
+      #   run: |
+      #     anaconda -v upload build/osx-arm64/*.tar.bz2 --label dev
+      
+      # - name: Logout from Anaconda
+      #   shell: bash -l {0}
+      #   run: |
+      #     anaconda logout
diff --git a/.github/workflows/build_ci.yml b/.github/workflows/build_pypi_ci.yml
similarity index 71%
rename from .github/workflows/build_ci.yml
rename to .github/workflows/build_pypi_ci.yml
index baf046295..68142b288 100644
--- a/.github/workflows/build_ci.yml
+++ b/.github/workflows/build_pypi_ci.yml
@@ -1,17 +1,17 @@
-# Run tests using built conda packages and wheels.
-name: Build CI (no upload)
+# Run tests using built wheels.
+name: Build PyPI CI (no upload)
 
 # Run when changes to pip wheel
 on:
   push:
     paths:
-      - 'setup.py'
-      - 'requirements.txt'
-      - 'dev_requirements.txt'
-      - 'jupyter_requirements.txt'
-      - 'pypi_requirements.txt'
-      - 'environment_build.yml'
-      - '.github/workflows/build_ci.yml'
+      - "setup.py"
+      - "requirements.txt"
+      - "dev_requirements.txt"
+      - "jupyter_requirements.txt"
+      - "pypi_requirements.txt"
+      - "environment_build.yml"
+      - ".github/workflows/build_pypi_ci.yml" # Run!
 
 jobs:
   build:
@@ -26,28 +26,21 @@ jobs:
           # Use this condarc as default
           - condarc: .conda/condarc.yaml
           - wheel_name: sleap-wheel-linux
+          - pyver: "3.7"
     steps:
       # Setup
-      - uses: actions/checkout@v2
+      - name: Checkout
+        uses: actions/checkout@v4
 
-      - name: Cache conda
-        uses: actions/cache@v1
-        env:
-          # Increase this value to reset cache if environment_build.yml has not changed
-          CACHE_NUMBER: 0
+      - name: Setup Miniconda
+        uses: conda-incubator/setup-miniconda@v3.0.3
         with:
-          path: ~/conda_pkgs_dir
-          key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('environment_build.yml', 'pyproject.toml') }}
-
-      - name: Setup Miniconda for Build
-        # https://github.com/conda-incubator/setup-miniconda
-        uses: conda-incubator/setup-miniconda@v2.0.1
-        with:
-          python-version: 3.7
-          use-only-tar-bz2: true # IMPORTANT: This needs to be set for caching to work properly!
-          environment-file: environment_build.yml
+          miniforge-version: latest
           condarc-file: ${{ matrix.condarc }}
+          python-version: ${{ matrix.pyver }}
+          environment-file: environment_build.yml
           activate-environment: sleap_ci
+          conda-solver: "libmamba"
 
       - name: Print build environment info
         shell: bash -l {0}
@@ -61,10 +54,10 @@ jobs:
         shell: bash -l {0}
         run: |
           python setup.py bdist_wheel
-      
+
       # Upload artifact "tests" can use it
       - name: Upload wheel artifact
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: ${{ matrix.wheel_name }}
           path: dist/*.whl
@@ -73,11 +66,12 @@ jobs:
   tests:
     name: Run tests using wheel (${{ matrix.os }})
     runs-on: ${{ matrix.os }}
-    needs: build  # Ensure the build job has completed before starting this job.
+    needs: build # Ensure the build job has completed before starting this job.
     strategy:
       fail-fast: false
       matrix:
-        os: ["ubuntu-22.04", "windows-2022", "macos-latest"]
+        os: ["ubuntu-22.04", "windows-2022"]
+        # os: ["ubuntu-22.04", "windows-2022", "macos-14"]  # removing macos-14 for now since the setup-python action only support py>=3.10, which is breaking this CI.
         # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstrategymatrixinclude
         include:
           # Default values
@@ -89,9 +83,11 @@ jobs:
               pip install '$wheel_path'[dev]
           - test_args: pytest --durations=-1 tests/
           - condarc: .conda/condarc.yaml
+          - pyver: "3.7"
           # Use special condarc if macos
-          - os: "macos-latest"
+          - os: "macos-14"
             condarc: .conda_mac/condarc.yaml
+            pyver: "3.10"
           # Ubuntu specific values
           - os: ubuntu-22.04
             # Otherwise core dumped in github actions
@@ -106,16 +102,16 @@ jobs:
 
     steps:
       - name: Checkout repo
-        uses: actions/checkout@v3
-      
-      - name: Set up Python 3.7
-        uses: actions/setup-python@v4
+        uses: actions/checkout@v4
+
+      - name: Setup Python
+        uses: actions/setup-python@v5
         with:
-          python-version: 3.7
-      
+          python-version: ${{ matrix.pyver }}
+
       # Download wheel
       - name: Download wheel artifact
-        uses: actions/download-artifact@v3
+        uses: actions/download-artifact@v4
         id: download
         with:
           name: ${{ matrix.wheel_name }}
@@ -148,8 +144,8 @@ jobs:
         run: |
           which python
           pip freeze
-        
+
       # Install and test the wheel
       - name: Test the built wheel
         run: |
-          ${{ matrix.test_args}}
\ No newline at end of file
+          ${{ matrix.test_args}}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index e1d193724..84b028fc3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -11,45 +11,28 @@ on:
       - "environment_no_cuda.yml"
       - "requirements.txt"
       - "dev_requirements.txt"
-  push:
-    branches:
-      - master
-      - develop
-    paths:
-      - "sleap/**"
-      - "tests/**"
-      - ".github/workflows/ci.yml"
-      - "environment_no_cuda.yml"
-      - "requirements.txt"
-      - "dev_requirements.txt"
+  # push:
+  #   branches:
+  #     - main
+  #     - develop
+  #   paths:
+  #     - "sleap/**"
+  #     - "tests/**"
+  #     - ".github/workflows/ci.yml"
+  #     - "environment_no_cuda.yml"
+  #     - "requirements.txt"
+  #     - "dev_requirements.txt"
 
 jobs:
-  type_check:
-    name: Type Check
-    runs-on: "ubuntu-22.04"
-    steps:
-      - name: Checkout repo
-        uses: actions/checkout@v3
-      - name: Set up Python 3.7
-        uses: actions/setup-python@v4
-        with:
-          python-version: 3.7
-      - name: Install Dependencies
-        run: |
-          pip install mypy
-      - name: Run MyPy
-        # TODO: remove this once all MyPy errors get fixed
-        continue-on-error: true
-        run: |
-          mypy --follow-imports=skip --ignore-missing-imports sleap tests
+  # Lint
   lint:
     name: Lint
     runs-on: "ubuntu-22.04"
     steps:
       - name: Checkout repo
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
       - name: Set up Python 3.7
-        uses: actions/setup-python@v4
+        uses: actions/setup-python@v5
         with:
           python-version: 3.7
       - name: Install Dependencies
@@ -59,58 +42,52 @@ jobs:
       - name: Run Black
         run: |
           black --check sleap tests
+
+  # Tests
   tests:
     name: Tests (${{ matrix.os }})
     runs-on: ${{ matrix.os }}
     strategy:
       fail-fast: false
       matrix:
-        os: ["ubuntu-22.04", "windows-2022", "macos-latest"]
+        os: ["ubuntu-22.04", "windows-2022", "macos-14"]
         include:
           # Default values
           - env_file: environment_no_cuda.yml
-          - test_args: --durations=-1 tests/
           # Mac specific values
-          - os: macos-latest
+          - os: macos-14
             env_file: environment_mac.yml
-          # Ubuntu specific values
-          - os: ubuntu-22.04
-            test_args: --cov=sleap --cov-report=xml --durations=-1 tests/
+
     steps:
       - name: Checkout repo
-        uses: actions/checkout@v3
+        uses: actions/checkout@v4
 
-      - name: Setup Micromamba
-        # https://github.com/mamba-org/setup-micromamba
-        uses: mamba-org/setup-micromamba@v1
+      - name: Setup Conda
+        uses: conda-incubator/setup-miniconda@v3.0.3
         with:
-          micromamba-version: '1.4.6-0'
+          miniforge-version: latest
+          conda-solver: "libmamba"
           environment-file: ${{ matrix.env_file }}
-          environment-name: sleap_ci
-          init-shell: >-
-            bash
-            powershell
-          post-cleanup: all
+          activate-environment: sleap_ci
       
       # Print environment info
       - name: Print environment info
         shell: bash -l {0}
         run: |
           which python
-          micromamba info
-          micromamba list
+          conda info
+          conda list
           pip freeze
       
       # Test environment
       - name: Test with pytest
         shell: bash -l {0}
         run: |
-          pytest ${{ matrix.test_args }}
+          pytest --cov=sleap --cov-report=xml --durations=-1 tests/
 
       # Upload coverage
       - name: Upload coverage
-        uses: codecov/codecov-action@v1
-        if: matrix.os == 'ubuntu-22.04'
+        uses: codecov/codecov-action@v4
         with:
           token: ${{ secrets.CODECOV_TOKEN }}
           fail_ci_if_error: true
diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml
index 7db6b4d74..36c1d6ad7 100644
--- a/.github/workflows/website.yml
+++ b/.github/workflows/website.yml
@@ -7,8 +7,8 @@ on:
     branches:
       # 'main' triggers updates to 'sleap.ai', all others to 'sleap.ai/develop'
       - main
-      - develop
-      - liezl/add-pip-extras
+      - develop # Run
+      - liezl/bump-to-1.4.1
     paths:
       - "docs/**"
       - "README.rst"
@@ -20,21 +20,13 @@ jobs:
     steps:
       # Setup
       - name: Checkout
-        uses: actions/checkout@v2
-      - name: Cache conda
-        uses: actions/cache@v1
-        env:
-          # Increase this value to reset cache if environment_build.yml has not changed
-          CACHE_NUMBER: 0
-        with:
-          path: ~/conda_pkgs_dir
-          key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('environment_build.yml', 'requirements.txt') }}
+        uses: actions/checkout@v4
+
       - name: Setup Miniconda
         # https://github.com/conda-incubator/setup-miniconda
-        uses: conda-incubator/setup-miniconda@v2.0.1
+        uses: conda-incubator/setup-miniconda@v3.0.3
         with:
           python-version: 3.7
-          use-only-tar-bz2: true # IMPORTANT: This needs to be set for caching to work properly!
           environment-file: environment_no_cuda.yml
           activate-environment: sleap_ci
       - name: Print environment info
@@ -51,7 +43,7 @@ jobs:
           make html
 
       - name: Deploy (sleap.ai)
-        uses: peaceiris/actions-gh-pages@v3
+        uses: peaceiris/actions-gh-pages@v4
         if: github.ref == 'refs/heads/main'
         with:
           github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -60,10 +52,10 @@ jobs:
           keep_files: true
 
       - name: Deploy (test)
-        uses: peaceiris/actions-gh-pages@v3
+        uses: peaceiris/actions-gh-pages@v4
         if: github.ref != 'refs/heads/main'
         with:
           github_token: ${{ secrets.GITHUB_TOKEN }}
           publish_branch: gh-pages
           publish_dir: docs/build/html
-          destination_dir: develop
\ No newline at end of file
+          destination_dir: develop
diff --git a/AUTHORS b/AUTHORS
index e6a78d2ba..11e40e839 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -11,3 +11,5 @@
 John Smith <john at example.com> Example Inc.
 
 Jeremy Delahanty <jdelahanty@salk.edu> The Salk Institute for Biological Studies
+
+Lili Karashchuk <lili.karashchuk@alleninstitute.org> Allen Institute of Neural Dynamics
diff --git a/README.rst b/README.rst
index dbc5a7cac..f7a5acd6c 100644
--- a/README.rst
+++ b/README.rst
@@ -69,7 +69,7 @@ Quick install
 
 .. code-block:: bash
 
-    conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap
+    conda create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap
 
 `pip` **(any OS except Apple silicon)**:
 
@@ -84,7 +84,7 @@ Learn to SLEAP
 --------------
 - **Learn step-by-step**: `Tutorial <https://sleap.ai/tutorials/tutorial.html>`_
 - **Learn more advanced usage**: `Guides <https://sleap.ai/guides/>`__ and `Notebooks <https://sleap.ai/notebooks/>`__
-- **Learn by watching**: `MIT CBMM Tutorial <https://cbmm.mit.edu/video/decoding-animal-behavior-through-pose-tracking>`_
+- **Learn by watching**: `ABL:AOC 2023 Workshop <https://www.youtube.com/watch?v=BfW-HgeDfMI>`_ and `MIT CBMM Tutorial <https://cbmm.mit.edu/video/decoding-animal-behavior-through-pose-tracking>`_
 - **Learn by reading**: `Paper (Pereira et al., Nature Methods, 2022) <https://www.nature.com/articles/s41592-022-01426-1>`__ and `Review on behavioral quantification (Pereira et al., Nature Neuroscience, 2020) <https://rdcu.be/caH3H>`_
 - **Learn from others**: `Discussions on Github <https://github.com/talmolab/sleap/discussions>`_
 
diff --git a/dev_requirements.txt b/dev_requirements.txt
index f7bb23643..709fb48fd 100644
--- a/dev_requirements.txt
+++ b/dev_requirements.txt
@@ -5,13 +5,14 @@ pytest-qt>=4.0.0
 pytest-cov<=3.0.0
 pytest-xvfb
 ipython
-sphinx
+sphinx>=5.0  # sphinxcontrib.applehelp extension needs at least Sphinx v5.0
 # furo
 sphinx-book-theme
 sphinx-copybutton
+sphinx-tabs
 nbformat==5.1.3
-myst-nb==0.13.2
-myst-parser==0.15.2
+myst-nb>=0.16.0  # sphinx>=5.0 needs myst-nb>=0.16.0 
+myst-parser
 linkify-it-py
 sphinx-autobuild
 black==21.6b0
diff --git a/docs/_static/bonsai-connection.jpg b/docs/_static/bonsai-connection.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..32b725416e2ed32f12977cdf50c73b53ce9b3d9c
GIT binary patch
literal 113805
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
NQe(RCf$PWc{{rTTu?heH

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-filecapture.jpg b/docs/_static/bonsai-filecapture.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7a809d67ac10f043046af7dc5960e00b5640a2d0
GIT binary patch
literal 68990
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
KW5R>m9sX~}(<E5{

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-predictcentroids.jpg b/docs/_static/bonsai-predictcentroids.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..e284f2338ae73e228178ef7866f24bf4e114d118
GIT binary patch
literal 76547
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

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-predictposeidentities.jpg b/docs/_static/bonsai-predictposeidentities.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8582fd70727fbfff46555a0c463506627fa05ab4
GIT binary patch
literal 85845
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
ASO5S3

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-predictposes.jpg b/docs/_static/bonsai-predictposes.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..2e4f04a22020342a8f45bde98ab45eb6de607a1f
GIT binary patch
literal 79334
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

literal 0
HcmV?d00001

diff --git a/docs/_static/bonsai-workflow.jpg b/docs/_static/bonsai-workflow.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0481c3dcfdc1105ea5676c4cc55f907580168188
GIT binary patch
literal 33481
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

literal 0
HcmV?d00001

diff --git a/docs/_static/css/tabs.css b/docs/_static/css/tabs.css
new file mode 100644
index 000000000..95765dff6
--- /dev/null
+++ b/docs/_static/css/tabs.css
@@ -0,0 +1,91 @@
+.sphinx-tabs {
+  margin-bottom: 1rem;
+}
+
+[role="tablist"] {
+  border-bottom: 1px solid #a0b3bf;
+}
+
+.sphinx-tabs-tab {
+  position: relative;
+  font-family: Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;
+  color: var(--pst-color-link);
+  line-height: 24px;
+  margin: 3px;
+  font-size: 16px;
+  font-weight: 400;
+  background-color: rgb(241 244 249);
+  border-radius: 5px 5px 0 0;
+  border: 0;
+  padding: 1rem 1.5rem;
+  margin-bottom: 0;
+}
+
+.sphinx-tabs-tab[aria-selected="true"] {
+  font-weight: 700;
+  border: 1px solid #a0b3bf;
+  border-bottom: 1px solid rgb(241 244 249);
+  margin: -1px;
+  background-color: rgb(242 247 255);
+}
+
+.admonition .sphinx-tabs-tab[aria-selected="true"]:last-child {
+  margin-bottom: -1px;
+}
+
+.sphinx-tabs-tab:focus {
+  z-index: 1;
+  outline-offset: 1px;
+}
+
+.sphinx-tabs-panel {
+  position: relative;
+  padding: 1rem;
+  border: 1px solid #a0b3bf;
+  margin: 0px -1px -1px -1px;
+  border-radius: 0 0 5px 5px;
+  border-top: 0;
+  background: rgb(242 247 255);
+}
+
+.sphinx-tabs-panel.code-tab {
+  padding: 0.4rem;
+}
+
+.sphinx-tab img {
+    margin-bottom: 24px;
+}
+
+/* Dark theme preference styling */
+
+html[data-theme="dark"] .sphinx-tabs-panel {
+  color: white;
+  background-color: rgb(50, 50, 50);
+}
+
+html[data-theme="dark"] .sphinx-tabs-tab {
+  color: var(--pst-color-link);
+  background-color: rgba(255, 255, 255, 0.05);
+}
+
+html[data-theme="dark"] .sphinx-tabs-tab[aria-selected="true"] {
+  border-bottom: 2px solid rgb(50, 50, 50);
+  background-color: rgb(50, 50, 50);
+}
+
+/* Light theme preference styling */
+
+html[data-theme="light"] .sphinx-tabs-panel {
+  color: black;
+  background-color: white;
+}
+
+html[data-theme="light"] .sphinx-tabs-tab {
+  color: var(--pst-color-link);
+  background-color: rgba(0, 0, 0, 0.05);
+}
+
+html[data-theme="light"] .sphinx-tabs-tab[aria-selected="true"] {
+  border-bottom: 2px solid white;
+  background-color: white;
+}
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index 572e73ea0..074869903 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -28,7 +28,7 @@
 copyright = f"2019–{date.today().year}, Talmo Lab"
 
 # The short X.Y version
-version = "1.3.3"
+version = "1.4.1"
 
 # Get the sleap version
 # with open("../sleap/version.py") as f:
@@ -36,7 +36,7 @@
 #     version = re.search("\d.+(?=['\"])", version_file).group(0)
 
 # Release should be the full branch name
-release = "v1.3.3"
+release = "v1.4.1"
 
 html_title = f"SLEAP ({release})"
 html_short_title = "SLEAP"
@@ -59,6 +59,7 @@
     "sphinx.ext.linkcode",
     "sphinx.ext.napoleon",
     "sphinx_copybutton",
+    "sphinx_tabs.tabs",  # For tabs inside docs
     # https://myst-nb.readthedocs.io/en/latest/
     "myst_nb",
 ]
@@ -85,6 +86,7 @@
 pygments_style = "sphinx"
 pygments_dark_style = "monokai"
 
+
 # Autosummary linkcode resolution
 # https://www.sphinx-doc.org/en/master/usage/extensions/linkcode.html
 def linkcode_resolve(domain, info):
@@ -173,6 +175,12 @@ def linkcode_resolve(domain, info):
 # so a file named "default.css" will overwrite the builtin "default.css".
 html_static_path = ["_static"]
 
+# These paths are either relative to html_static_path
+# or fully qualified paths (eg. https://...)
+html_css_files = [
+    "css/tabs.css",
+]
+
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
 #
@@ -219,3 +227,7 @@ def linkcode_resolve(domain, info):
 
 # https://myst-nb.readthedocs.io/en/latest/use/config-reference.html
 jupyter_execute_notebooks = "off"
+
+# Sphinx-tabs settings
+# https://sphinx-tabs.readthedocs.io/en/latest/
+sphinx_tabs_disable_css_loading = True  # Use the theme's CSS
diff --git a/docs/guides/bonsai.md b/docs/guides/bonsai.md
new file mode 100644
index 000000000..d262873b6
--- /dev/null
+++ b/docs/guides/bonsai.md
@@ -0,0 +1,75 @@
+(bonsai)=
+
+# Using Bonsai with SLEAP
+
+Bonsai is a visual language for reactive programming and currently supports SLEAP models.
+
+:::{note}
+Currently Bonsai supports only single instance, top-down and top-down-id SLEAP models.
+:::
+
+### Exporting a SLEAP trained model
+
+Before we can import a trained model into Bonsai, we need to use the {code}`sleap-export` command to convert the model to a format supported by Bonsai. For example, to export a top-down-id model, the command is as follows:
+
+```bash
+sleap-export -m centroid/model/folder/path -m top_down_id/model/folder/path -e exported/model/path
+```
+
+Please refer to the {ref}`sleap-export` docs for more details on using the command.
+
+This will generate the necessary `.pb` file and other information files required by Bonsai. In this example, these files were saved to the specified `exported/model/path` folder.
+
+The `exported/model/path` folder will have a structure like the following:
+
+```plaintext
+exported/model/path
+├── centroid_config.json
+├── confmap_config.json
+├── frozen_graph.pb
+└── info.json
+```
+
+### Installing Bonsai and necessary packages
+
+1. Install Bonsai. See the [Bonsai installation instructions](https://bonsai-rx.org/docs/articles/installation.html). 
+
+2. Download and add the necessary packages for Bonsai to run with SLEAP. See the official [Bonsai SLEAP documentation](https://github.com/bonsai-rx/sleap?tab=readme-ov-file#bonsai---sleap) for more information.
+
+### Using Bonsai SLEAP modules
+
+Once you have Bonsai installed with the required packages, you should be able to open the Bonsai application. The workflow must have a source module `FileCapture` which can be found in the toolbox search in the workflow editor. Provide the path to the video that was used to train the SLEAP model in the `FileName` field of the module.
+
+![Bonsai FileCapture module](../_static/bonsai-filecapture.jpg)
+
+#### Top-down model
+The top-down model requires both the `PredictCentroids` and the `PredictPoses` modules.
+
+The `PredictCentroids` module will predict the centroids of detections. There are two fields inside the `PredictCentroids` module: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the centroid model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+![Bonsai PredictCentroids module](../_static/bonsai-predictcentroids.jpg)
+
+The `PredictPoses` module will predict the instances of detections. Similar to the `PredictCentroid` module, there are two fields inside the `PredictPoses` module: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the centered instance model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+![Bonsai PredictPoses module](../_static/bonsai-predictposes.jpg)
+
+#### Top-Down-ID model
+The `PredictPoseIdentities` module will predict the instances with identities. This module has two fields: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the top-down-id model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+![Bonsai PredictPoseIdentities module](../_static/bonsai-predictposeidentities.jpg)
+
+#### Single instance model
+The `PredictSinglePose` module will predict the poses for single instance models. This module also has two fields: the `ModelFileName` field and the `TrainingConfig` field. The `TrainingConfig` field expects the path to the training config JSON file for the single instance model. The `ModelFileName` field expects the path to the `frozen_graph.pb` file in the `exported/model/path` folder.
+
+### Connecting the modules
+Right-click on the `FileCapture` module and select **Create Connection**. Now click on the required SLEAP module to complete the connection. 
+
+![Bonsai module connection ](../_static/bonsai-connection.jpg)
+
+Once it is done, the workflow in Bonsai will look something like the following:
+
+![Bonsai.SLEAP workflow](../_static/bonsai-workflow.jpg)
+
+Now you can click the green start button to run the workflow and you can add more modules to analyze and visualize the results in Bonsai.
+
+For more documentation on various modules and workflows, please refer to the [official Bonsai docs](https://bonsai-rx.org/docs/articles/editor.html).
diff --git a/docs/guides/cli.md b/docs/guides/cli.md
index 35ea52171..134461c60 100644
--- a/docs/guides/cli.md
+++ b/docs/guides/cli.md
@@ -36,8 +36,8 @@ optional arguments:
 
 ```none
 usage: sleap-train [-h] [--video-paths VIDEO_PATHS] [--val_labels VAL_LABELS]
-                   [--test_labels TEST_LABELS] [--tensorboard] [--save_viz]
-                   [--zmq] [--run_name RUN_NAME] [--prefix PREFIX]
+                   [--test_labels TEST_LABELS] [--tensorboard] [--save_viz] 
+                   [--keep_viz] [--zmq] [--run_name RUN_NAME] [--prefix PREFIX]
                    [--suffix SUFFIX]
                    training_job_path [labels_path]
 
@@ -68,6 +68,8 @@ optional arguments:
   --save_viz            Enable saving of prediction visualizations to the run
                         folder if not already specified in the training job
                         config.
+  --keep_viz            Keep prediction visualization images in the run
+                        folder after training if --save_viz is enabled.
   --zmq                 Enable ZMQ logging (for GUI) if not already specified
                         in the training job config.
   --run_name RUN_NAME   Run name to use when saving file, overrides other run
@@ -99,9 +101,9 @@ optional arguments:
   -e [EXPORT_PATH], --export_path [EXPORT_PATH]
                         Path to output directory where the frozen model will be exported to.
                         Defaults to a folder named 'exported_model'.
-  -u, --unrag UNRAG
-                        Convert ragged tensors into regular tensors with NaN padding.
-                        Defaults to True.
+  -r, --ragged RAGGED
+                        Keep tensors ragged if present. If ommited, convert
+                        ragged tensors into regular tensors with NaN padding.
   -n, --max_instances MAX_INSTANCES
                         Limit maximum number of instances in multi-instance models.
                         Not available for ID models. Defaults to None.
@@ -136,7 +138,10 @@ usage: sleap-track [-h] [-m MODELS] [--frames FRAMES] [--only-labeled-frames] [-
                    [data_path]
 
 positional arguments:
-  data_path             Path to data to predict on. This can be a labels (.slp) file or any supported video format.
+  data_path             Path to data to predict on. This can be one of the following: A .slp file containing labeled data; A folder containing multiple
+                        video files in supported formats; An individual video file in a supported format; A CSV file with a column of video file paths. 
+                        If more than one column is provided in the CSV file, the first will be used for the input data paths and the next column will be
+                        used as the output paths; A text file with a path to a video file on each line
 
 optional arguments:
   -h, --help            show this help message and exit
@@ -151,7 +156,7 @@ optional arguments:
                         Only run inference on unlabeled suggested frames when running on labels dataset. This is useful for generating predictions for
                         initialization during labeling.
   -o OUTPUT, --output OUTPUT
-                        The output filename to use for the predicted data. If not provided, defaults to '[data_path].predictions.slp'.
+                        The output filename or directory path to use for the predicted data. If not provided, defaults to '[data_path].predictions.slp'.
   --no-empty-frames     Clear any empty frames that did not have any detected instances before saving to output.
   --verbosity {none,rich,json}
                         Verbosity of inference progress reporting. 'none' does not output anything during inference, 'rich' displays an updating
@@ -202,7 +207,7 @@ optional arguments:
   --tracking.clean_iou_threshold TRACKING.CLEAN_IOU_THRESHOLD
                         IOU to use when culling instances *after* tracking. (default: 0)
   --tracking.similarity TRACKING.SIMILARITY
-                        Options: instance, centroid, iou (default: instance)
+                        Options: instance, normalized_instance, object_keypoint, centroid, iou (default: instance)
   --tracking.match TRACKING.MATCH
                         Options: hungarian, greedy (default: greedy)
   --tracking.robust TRACKING.ROBUST
@@ -322,7 +327,8 @@ optional arguments:
                               analysis file for the latter video is given a default name.
   --format FORMAT       Output format. Default ('slp') is SLEAP dataset;
                         'analysis' results in analysis.h5 file; 'analysis.nix' results
-                        in an analysis nix file; 'h5' or 'json' results in SLEAP dataset
+                        in an analysis nix file; 'analysis.csv' results
+                        in an analysis csv file; 'h5' or 'json' results in SLEAP dataset
                         with specified file format.
   --video VIDEO         Path to video (if needed for conversion).
 ```
@@ -389,6 +395,9 @@ optional arguments:
   --distinctly_color DISTINCTLY_COLOR
                         Specify how to color instances. Options include: "instances",
                         "edges", and "nodes" (default: "instances")
+  --background BACKGROUND
+                        Specify the type of background to be used to save the videos.
+                        Options: original, black, white and grey. (default: "original")
 ```
 
 ## Debugging
diff --git a/docs/guides/gui.md b/docs/guides/gui.md
index 88cf3f656..813ed68fa 100644
--- a/docs/guides/gui.md
+++ b/docs/guides/gui.md
@@ -60,7 +60,7 @@ Note that many of the menu command have keyboard shortcuts which can be configur
 
 "**Edge Style**" controls whether edges are drawn as thin lines or as wedges which indicate the {ref}`orientation` of the instance (as well as the direction of the part affinity field which would be used to predict the connection between nodes when using a "bottom-up" approach).
 
-"**Trail Length**" allows you to show a trail of where each instance was located in prior frames (the length of the trail is the number of prior frames). This can be useful when proofreading predictions since it can help you detect swaps in the identities of animals across frames.
+"**Trail Length**" allows you to show a trail of where each instance was located in prior frames (the length of the trail is the number of prior frames). This can be useful when proofreading predictions since it can help you detect swaps in the identities of animals across frames. By default, you can only select trail lengths of up to 250 frames. You can use a custom trail length by modifying the default length in the `preferences.yaml` file. However, using trail lengths longer than about 500 frames can result in significant lag.
 
 "**Fit Instances to View**" allows you to toggle whether the view is auto-zoomed to the instances in each frame. This can be useful when proofreading predictions.
 
diff --git a/docs/guides/index.md b/docs/guides/index.md
index 7eb55b2b2..6d773d9de 100644
--- a/docs/guides/index.md
+++ b/docs/guides/index.md
@@ -30,6 +30,10 @@
 
 {ref}`remote-inference` when you trained models and you want to run inference on a different machine using a **command-line interface**.
 
+## SLEAP with Bonsai
+
+{ref}`bonsai` when you want to analyze the trained SLEAP model to visualize the poses, centroids and identities for further visual analysis.
+
 ```{toctree}
 :hidden: true
 :maxdepth: 2
@@ -44,4 +48,5 @@ proofreading
 colab
 custom-training
 remote
+bonsai
 ```
diff --git a/docs/guides/proofreading.md b/docs/guides/proofreading.md
index fea1c5ebc..941b85154 100644
--- a/docs/guides/proofreading.md
+++ b/docs/guides/proofreading.md
@@ -50,6 +50,8 @@ There are currently three methods for matching instances in frame N against thes
 - “**centroid**” measures similarity by the distance between the instance centroids
 - “**iou**” measures similarity by the intersection/overlap of the instance bounding boxes
 - “**instance**” measures similarity by looking at the distances between corresponding nodes in the instances, normalized by the number of valid nodes in the candidate instance.
+- “**normalized_instance**” measures similarity by looking at the distances between corresponding nodes in the instances, normalized by the number of valid nodes in the candidate instance and the keypoints normalized by the image size.
+- “**object_keypoint**” measures similarity by measuring the distance between each keypoints from a reference instance and a query instance, takes the exp(-d**2), sum for all the keypoints and divide by the number of visible keypoints in the reference instance.
 
 Once SLEAP has measured the similarity between all the candidates and the instances in frame N, you need to choose a way to pair them up. You can do this either by picking the best match, and the picking the best remaining match for each remaining instance in turn—this is “**greedy**” matching—or you can find the way of matching identities which minimizes the total cost (or: maximizes the total similarity)—this is “**Hungarian**” matching.
 
diff --git a/docs/installation.md b/docs/installation.md
index eea65cc31..2c1ef41be 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -1,10 +1,21 @@
 # Installation
 
-SLEAP can be installed as a Python package on Windows, Linux, Mac OS X, and Mac OS Apple Silicon.
+SLEAP can be installed as a Python package on Windows, Linux, and Mac OS. For quick install using conda, see below:
 
-SLEAP requires many complex dependencies, so we **strongly** recommend using [Mambaforge](https://mamba.readthedocs.io/en/latest/installation.html) to install it in its own isolated environment. See {ref}`Installing Mambaforge<mambaforge>` below for more instructions.
+````{tabs}
+   ```{group-tab} Windows and Linux
+      ```bash
+      conda create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap=1.4.1
+      ```
+   ```
+   ```{group-tab} Mac OS
+      ```bash
+      conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1
+      ```
+   ```
+````
 
-The newest version of SLEAP can always be found in the [Releases page](https://github.com/talmolab/sleap/releases).
+. For more in-depth installation instructions, see the [installation methods](installation-methods). The newest version of SLEAP can always be found in the [Releases page](https://github.com/talmolab/sleap/releases).
 
 ```{contents} Contents
 ---
@@ -12,66 +23,30 @@ local:
 ---
 ```
 
-````{hint}
-Installation requires entering commands in a terminal. To open one:
-
-**Windows:** Open the *Start menu* and search for the *Miniforge Prompt* (if using Mambaforge) or the *Command Prompt* if not.
-```{note}
-On Windows, our personal preference is to use alternative terminal apps like [Cmder](https://cmder.net) or [Windows Terminal](https://aka.ms/terminal).
-```
-
-**Linux:** Launch a new terminal by pressing <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>.
-
-**Mac:** Launch a new terminal by pressing <kbd>Cmd</kbd> + <kbd>Space</kbd> and searching for _Terminal_.
-
-````
-
-(apple-silicon)=
-
-### Macs Pre-M1 (Pre-Installation)
-
-SLEAP can be installed on Macs by following these instructions:
-
-1. Make sure you're on **macOS Monterey** or later, i.e., version 12+.
-
-2. If you don't have it yet, [install **homebrew**](https://brew.sh/), a convenient package manager for Macs (skip this if you can run `brew` from the terminal):
-
-   ```bash
-   /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
-   ```
-
-   This might take a little while since it'll also install Xcode (which we'll need later). Once it's finished, your terminal should give you two extra commands to run listed under **Next Steps**.
-
-   ````{note}
-   We recommend running the commands given in your terminal which will be similar to (but may differ slightly) from the commands below:
-   ```bash
-   echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
-   ```
-
-   ```bash
-   eval "$(/opt/homebrew/bin/brew shellenv)"
-   ```
-
+`````{hint}
+   Installation requires entering commands in a terminal. To open one:
+   ````{tabs}
+      ```{tab} Windows
+         Open the *Start menu* and search for the *Anaconda Prompt* (if using Miniconda) or the *Command Prompt* if not.
+         ```{note}
+         On Windows, our personal preference is to use alternative terminal apps like [Cmder](https://cmder.net) or [Windows Terminal](https://aka.ms/terminal).
+         ```
+      ```
+      ```{tab} Linux
+         Launch a new terminal by pressing <kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>.
+      ```
+      ```{group-tab} Mac OS
+         Launch a new terminal by pressing <kbd>Cmd</kbd> + <kbd>Space</kbd> and searching for _Terminal_.
+      ```
    ````
+`````
 
-   Then, close and re-open the terminal for it to take effect.
+## Package Manager
 
-3. Install wget, a CLI downloading utility (also makes sure your homebrew setup worked):
-
-   ```bash
-   brew install wget
-   ```
-
-(mambaforge)=
-
-## Installing Mambaforge
-
-**Anaconda** is a Python environment manager that makes it easy to install SLEAP and its necessary dependencies without affecting other Python software on your computer.
-
-[**Mambaforge**](https://mamba.readthedocs.io/en/latest/installation.html) is a lightweight installer of Anaconda with speedy package resolution that we recommend.
+SLEAP requires many complex dependencies, so we **strongly** recommend using a package manager such as [Miniforge](https://github.com/conda-forge/miniforge) or [Miniconda](https://docs.anaconda.com/free/miniconda/) to install SLEAP in its own isolated environment.
 
 ````{note}
-If you already have Anaconda on your computer, then you can [set the solver to `libmamba`](https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community) in the `base` environment (and skip the Mambaforge installation):
+If you already have Anaconda on your computer (and it is an [older installation](https://conda.org/blog/2023-11-06-conda-23-10-0-release/)), then make sure to [set the solver to `libmamba`](https://www.anaconda.com/blog/a-faster-conda-for-a-growing-community) in the `base` environment.
 
 ```bash
 conda update -n base conda
@@ -80,195 +55,220 @@ conda config --set solver libmamba
 ```
 
 ```{warning}
-Any subsequent `mamba` commands in the docs will need to be replaced with `conda` if you choose to use your existing Anaconda installation.
+Any subsequent `conda` commands in the docs will need to be replaced with `mamba` if you have [Mamba](https://mamba.readthedocs.io/en/latest/) installed instead of Anaconda or Miniconda.
 ```
 
 ````
 
-Otherwise, to install Mamba:
-
-**On Windows**, just click through the installation steps.
-
-1.  Go to: https://github.com/conda-forge/miniforge#mambaforge
-2.  Download the latest version for your OS.
-3.  Follow the installer instructions.
-
-We recommend using the following settings:
-
-- Install for: All Users (requires admin privileges)
-- Destination folder: `C:\mambaforge`
-- Advanced Options: Add MambaForge to the system PATH environment variable
-- Advanced Options: Register MambaForge as the system Python 3.X
-  These will make sure that MambaForge is easily accessible from most places on your computer.
-
-**On Linux**, it might be easier to do this straight from the terminal (<kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>) with this one-liner:
-
-```bash
-wget -nc https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh && bash Mambaforge-Linux-x86_64.sh -b && ~/mambaforge/bin/conda init bash
-```
-
-Restart the terminal after running this command.
-
-```{note}
-For other Linux architectures (arm64 and POWER8/9), replace the `.sh` filenames above with the correct installer name for your architecture. See the Download column in [this table](https://github.com/conda-forge/miniforge#mambaforge) for the correct filename.
-
-```
-
-**On Macs (pre-M1)**, you can run the installer using this terminal command:
+If you don't have a `conda` package manager installation, here are some quick install options:
 
-```bash
-wget -nc https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-x86_64.sh && bash Mambaforge-MacOSX-x86_64.sh -b && ~/mambaforge/bin/conda init zsh
-```
+### Miniforge (recommended)
 
-**On Macs (Apple Silicon)**, use this terminal command:
+Miniforge is a minimal installer for conda that includes the `conda` package manager and is maintained by the [conda-forge](https://conda-forge.org) community. The only difference between Miniforge and Miniconda is that Miniforge uses the `conda-forge` channel by default, which provides a much wider selection of community-maintained packages.
 
-```bash
-curl -fsSL --compressed https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-MacOSX-arm64.sh -o Mambaforge3-MacOSX-arm64.sh && chmod +x Mambaforge3-MacOSX-arm64.sh && ./Mambaforge3-MacOSX-arm64.sh -b -p ~/mambaforge3 && rm Mambaforge3-MacOSX-arm64.sh && ~/mambaforge3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
-```
+````{tabs}
+   ```{group-tab} Windows
+      Open a new PowerShell terminal (does not need to be admin) and enter:
 
-## Installation methods
-
-SLEAP can be installed three different ways: via {ref}`conda package<condapackage>`, {ref}`conda from source<condasource>`, or {ref}`pip package<pippackage>`. Select one of the methods below to install SLEAP. We recommend {ref}`conda package<condapackage>`.
-
-(condapackage)=
-
-### `conda` package
-
-**Windows** and **Linux**
-
-```bash
-mamba create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.3.3
-```
-
-**Mac OS X** and **Apple Silicon**
-
-```bash
-mamba create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.3.3
-```
-
-**This is the recommended installation method**.
-
-```{note}
-- This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).
-- If you already have CUDA installed on your system, this will not conflict with it.
-- This will also work in CPU mode if you don't have a GPU on your machine.
-```
-
-(condasource)=
-
-### `conda` from source
-
-1. First, ensure git is installed:
-
-   ```bash
-   git --version
+      ```bash
+      Invoke-WebRequest -Uri "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Windows-x86_64.exe" -OutFile "$env:UserProfile/Downloads/Miniforge3-Windows-x86_64.exe"; Start-Process -FilePath "$env:UserProfile/Downloads/Miniforge3-Windows-x86_64.exe" -ArgumentList "/InstallationType=JustMe /RegisterPython=1 /S" -Wait; Remove-Item -Path "$env:UserProfile/Downloads/Miniforge3-Windows-x86_64.exe"
+      ```
    ```
+   ```{group-tab} Linux
+      Open a new terminal and enter:
 
-   If 'git' is not recognized, then [install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
-
-2. Then, clone the repository:
-
-   ```bash
-   git clone https://github.com/talmolab/sleap && cd sleap
+      ```bash
+      curl -fsSL --compressed https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh -o "~/Downloads/Miniforge3-Linux-x86_64.sh" && chmod +x "~/Downloads/Miniforge3-Linux-x86_64.sh" && "~/Downloads/Miniforge3-Linux-x86_64.sh" -b -p ~/miniforge3 && rm "~/Downloads/Miniforge3-Linux-x86_64.sh" && ~/miniforge3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+      ```
    ```
+   ```{group-tab} Mac (Apple Silicon)
+      Open a new terminal and enter:
 
-3. Finally, install from the environment file (differs based on OS and GPU):
-
-   **Windows** and **Linux**
-
-   ```bash
-   mamba env create -f environment.yml -n sleap
-   ```
-
-   If you do not have a NVIDIA GPU, then you should use the no CUDA environment file:
-
-   ```bash
-   mamba env create -f environment_no_cuda.yml -n sleap
+      ```bash
+      curl -fsSL --compressed https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh -o "~/Downloads/Miniforge3-MacOSX-arm64.sh" && chmod +x "~/Downloads/Miniforge3-MacOSX-arm64.sh" && "~/Downloads/Miniforge3-MacOSX-arm64.sh" -b -p ~/miniforge3 && rm "~/Downloads/Miniforge3-MacOSX-arm64.sh" && ~/miniforge3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+      ```
    ```
+   ```{group-tab} Mac (Intel)
+      Open a new terminal and enter:
 
-   **Mac OS X** and **Apple Silicon**
-
-   ```bash
-   mamba env create -f environment_mac.yml -n sleap
+      ```bash
+      curl -fsSL --compressed https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-x86_64.sh -o "~/Downloads/Miniforge3-MacOSX-x86_64.sh" && chmod +x "~/Downloads/Miniforge3-MacOSX-x86_64.sh" && "~/Downloads/Miniforge3-MacOSX-x86_64.sh" -b -p ~/miniforge3 && rm "~/Downloads/Miniforge3-MacOSX-x86_64.sh" && ~/miniforge3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+      ```
    ```
+````
 
-   This is the **recommended method for development**.
-
-```{note}
-- This installs SLEAP in development mode, which means that edits to the source code will be applied the next time you run SLEAP.
-- Change the `-n sleap` in the command to create an environment with a different name (e.g., `-n sleap_develop`).
-```
-
-(pippackage)=
-
-### `pip` package
-
-Although you do not need Mambaforge installed to perform a `pip install`, we recommend {ref}`installing Mambaforge<mambaforge>` to create a new environment where we can isolate the `pip install`. Alternatively, you can use a venv if you have an existing python installation. If you are working on **Google Colab**, skip to step 3 to perform the `pip install` without using a conda environment.
+### Miniconda
 
-1. Otherwise, create a new conda environment where we will `pip install sleap`:
+This is a minimal installer for conda that includes the `conda` package manager and is maintained by the [Anaconda](https://www.anaconda.com) company.
 
-   either without GPU support:
+````{tabs}
+   ```{group-tab} Windows
+      Open a new PowerShell terminal (does not need to be admin) and enter:
 
-   ```bash
-   mamba create --name sleap pip python=3.7.12
+      ```bash
+      curl https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -o miniconda.exe; Start-Process -FilePath ".\miniconda.exe" -ArgumentList "/S" -Wait; del miniconda.exe
+      ```
    ```
+   ```{group-tab} Linux
+      Open a new terminal and enter:
 
-   or with GPU support:
-
-   ```bash
-   mamba create --name sleap pip python=3.7.12 cudatoolkit=11.3 cudnn=8.2
+      ```bash
+      mkdir -p ~/miniconda3 && wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh && bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3 && rm ~/miniconda3/miniconda.sh && ~/miniconda3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+      ```
    ```
+   ```{group-tab} Mac (Apple Silicon)
+      Open a new terminal and enter:
 
-2. Then activate the environment to isolate the `pip install` from other environments on your computer:
-
-   ```bash
-   mamba activate sleap
+      ```bash
+      curl -fsSL --compressed https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh -o "~/Downloads/Miniconda3-latest-MacOSX-arm64.sh" && chmod +x "~/Downloads/Miniconda3-latest-MacOSX-arm64.sh" && "~/Downloads/Miniconda3-latest-MacOSX-arm64.sh" -b -u -p ~/miniconda3 && rm "~/Downloads/Miniconda3-latest-MacOSX-arm64.sh" && ~/miniconda3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+      ```
    ```
+   ```{group-tab} Mac (Intel)
+      Open a new terminal and enter:
 
-   ```{warning}
-   Refrain from installing anything into the `base` environment. Always create a new environment to install new packages.
+      ```bash
+      curl -fsSL --compressed https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -o "~/Downloads/Miniconda3-latest-MacOSX-x86_64.sh" && chmod +x "~/Downloads/Miniconda3-latest-MacOSX-x86_64.sh" && "~/Downloads/Miniconda3-latest-MacOSX-x86_64.sh" -b -u -p ~/miniconda3 && rm "~/Downloads/Miniconda3-latest-MacOSX-x86_64.sh" && ~/miniconda3/bin/conda init "$(basename "${SHELL}")" && source "$HOME/.$(basename "${SHELL}")rc"
+      ```
    ```
+````
 
-3. Finally, we can perform the `pip install`:
-
-   ```bash
-   pip install sleap[pypi]==1.3.3
-   ```
+See the [Miniconda website](https://docs.anaconda.com/free/miniconda/) for up-to-date installation instructions if the above instructions don't work for your system.
 
-   This works on **any OS except Apple silicon** and on **Google Colab**.
+(installation-methods)=
 
-   ```{note}
-   The pypi distributed package of SLEAP ships with the following extras:
-   - **pypi**: For installation without an mamba environment file. All dependencies come from PyPI.
-   - **jupyter**: This installs all *pypi* and jupyter lab dependencies.
-   - **dev**: This installs all *jupyter* dependencies and developement tools for testing and building docs.
-   - **conda_jupyter**: For installation using a mamba environment file included in the source code. Most dependencies are listed as conda packages in the environment file and only a few come from PyPI to allow jupyter lab support.
-   - **conda_dev**: For installation using [a mamba environment](https://github.com/search?q=repo%3Atalmolab%2Fsleap+path%3Aenvironment*.yml&type=code) with a few PyPI dependencies for development tools.
-   ```
+## Installation methods
 
-   ```{note}
-   - Requires Python 3.7
-   - To enable GPU support, make sure that you have **CUDA Toolkit v11.3** and **cuDNN v8.2** installed.
-   ```
+SLEAP can be installed three different ways: via {ref}`conda package<condapackage>`, {ref}`conda from source<condasource>`, or {ref}`pip package<pippackage>`. Select one of the methods below to install SLEAP. We recommend {ref}`conda package<condapackage>`.
 
-   ```{warning}
-   This will uninstall existing libraries and potentially install conflicting ones.
+`````{tabs}
+   ```{tab} conda package
+      **This is the recommended installation method**.
+      ````{tabs}
+         ```{group-tab} Windows and Linux
+            ```bash
+            conda create -y -n sleap -c conda-forge -c nvidia -c sleap/label/dev -c sleap -c anaconda sleap=1.4.1
+            ```
+            ```{note}
+            - This comes with CUDA to enable GPU support. All you need is to have an NVIDIA GPU and [updated drivers](https://nvidia.com/drivers).
+            - If you already have CUDA installed on your system, this will not conflict with it.
+            - This will also work in CPU mode if you don't have a GPU on your machine.
+            ```
+         ```
+         ```{group-tab} Mac OS
+            ```bash
+            conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.4.1
+            ```
+            ```{note}
+            This will also work in CPU mode if you don't have a GPU on your machine.
+            ```
+         ```
+      ````
 
-   We strongly recommend that you **only use this method if you know what you're doing**!
    ```
+   ```{tab} conda from source
+      This is the **recommended method for development**.
+      1. First, ensure git is installed:
+         ```bash
+         git --version
+         ```
+         If `git` is not recognized, then [install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git).
+      2. Then, clone the repository:
+         ```bash
+         git clone https://github.com/talmolab/sleap && cd sleap
+         ```
+      3. Finally, install SLEAP from the environment file:
+         ````{tabs}
+            ```{group-tab} Windows and Linux
+               ````{tabs}
+                  ```{group-tab} NVIDIA GPU
+                     ```bash
+                     conda env create -f environment.yml -n sleap
+                     ```
+                  ```
+                  ```{group-tab} CPU or other GPU
+                     ```bash
+                     conda env create -f environment_no_cuda.yml -n sleap
+                     ```
+                  ```
+               ````
+            ```
+            ```{group-tab} Mac OS
+               ```bash
+               conda env create -f environment_mac.yml -n sleap
+               ```
+            ```
+         ````
+      ```{note}
+      - This installs SLEAP in development mode, which means that edits to the source code will be applied the next time you run SLEAP.
+      - Change the `-n sleap` in the command to create an environment with a different name (e.g., `-n sleap_develop`).
+      ```
+   ```
+   ```{tab} pip package
+      This is the **recommended method for Google Colab only**.
+      ```{warning}
+      This will uninstall existing libraries and potentially install conflicting ones.
+
+      We strongly recommend that you **only use this method if you know what you're doing**!
+      ```
+      ````{tabs}
+         ```{group-tab} Windows and Linux
+            ```{note}
+            - Requires Python 3.7
+            - To enable GPU support, make sure that you have **CUDA Toolkit v11.3** and **cuDNN v8.2** installed.
+            ```
+            Although you do not need Miniconda installed to perform a `pip install`, we recommend [installing Miniconda](https://docs.anaconda.com/free/miniconda/) to create a new environment where we can isolate the `pip install`. Alternatively, you can use a venv if you have an existing Python 3.7 installation. If you are working on **Google Colab**, skip to step 3 to perform the `pip install` without using a conda environment.
+            1. Otherwise, create a new conda environment where we will `pip install sleap`:
+               ````{tabs}
+                  ```{group-tab} NVIDIA GPU
+                     ```bash
+                     conda create --name sleap pip python=3.7.12 cudatoolkit=11.3 cudnn=8.2 -c conda-forge -c nvidia
+                     ```
+                  ```
+                  ```{group-tab} CPU or other GPU
+                     ```bash
+                     conda create --name sleap pip python=3.7.12
+                     ```
+                  ```
+               ````
+            2. Then activate the environment to isolate the `pip install` from other environments on your computer:
+               ```bash
+               conda activate sleap
+               ```
+               ```{warning}
+               Refrain from installing anything into the `base` environment. Always create a new environment to install new packages.
+               ```
+            3. Finally, we can perform the `pip install`:
+               ```bash
+               pip install sleap[pypi]==1.4.1
+               ```
+               ```{note}
+               The pypi distributed package of SLEAP ships with the following extras:
+               - **pypi**: For installation without an conda environment file. All dependencies come from PyPI.
+               - **jupyter**: This installs all *pypi* and jupyter lab dependencies.
+               - **dev**: This installs all *jupyter* dependencies and developement tools for testing and building docs.
+               - **conda_jupyter**: For installation using a conda environment file included in the source code. Most dependencies are listed as conda packages in the environment file and only a few come from PyPI to allow jupyter lab support.
+               - **conda_dev**: For installation using [a conda environment](https://github.com/search?q=repo%3Atalmolab%2Fsleap+path%3Aenvironment*.yml&type=code) with a few PyPI dependencies for development tools.
+               ```
+         ```
+         ```{group-tab} Mac OS
+            Not supported.
+         ```
+         ````
+   ```
+`````
 
 ## Testing that things are working
 
-If you installed using `mamba`, first activate the `sleap` environment by opening a terminal and typing:
+If you installed using `conda`, first activate the `sleap` environment by opening a terminal and typing:
 
 ```bash
-mamba activate sleap
+conda activate sleap
 ```
 
 ````{hint}
-Not sure what `mamba` environments you already installed? You can get a list of the environments on your system with:
+Not sure what `conda` environments you already installed? You can get a list of the environments on your system with:
 ```
-mamba env list
+conda env list
 ```
 ````
 
@@ -301,7 +301,7 @@ python -c "import sleap; sleap.versions()"
 
 ### GPU support
 
-Assuming you installed using either of the `mamba`-based methods on Windows or Linux, SLEAP should automatically have GPU support enabled.
+Assuming you installed using either of the `conda`-based methods on Windows or Linux, SLEAP should automatically have GPU support enabled.
 
 To check, verify that SLEAP can detect the GPUs on your system:
 
@@ -362,7 +362,7 @@ file: No such file or directory
 then activate the environment:
 
 ```bash
-mamba activate sleap
+conda activate sleap
 ```
 
 and run the commands:
@@ -391,13 +391,13 @@ We **strongly recommend** installing SLEAP in a fresh environment when updating.
 To uninstall an existing environment named `sleap`:
 
 ```bash
-mamba env remove -n sleap
+conda env remove -n sleap
 ```
 
 ````{hint}
-Not sure what `mamba` environments you already installed? You can get a list of the environments on your system with:
+Not sure what `conda` environments you already installed? You can get a list of the environments on your system with:
 ```bash
-mamba env list
+conda env list
 ```
 ````
 
@@ -413,10 +413,10 @@ If you get any errors or the GUI fails to launch, try running the diagnostics to
 sleap-diagnostic
 ```
 
-If you were not able to get SLEAP installed, activate the mamba environment it is in and generate a list of the package versions installed:
+If you were not able to get SLEAP installed, activate the conda environment it is in and generate a list of the package versions installed:
 
 ```bash
-mamba list
+conda list
 ```
 
 Then, [open a new Issue](https://github.com/talmolab/sleap/issues) providing the versions from either command above, as well as any errors you saw in the console during the installation. Or [start a discussion](https://github.com/talmolab/sleap/discussions) to get help from the community.
diff --git a/docs/notebooks/Training_and_inference_on_an_example_dataset.ipynb b/docs/notebooks/Training_and_inference_on_an_example_dataset.ipynb
index b0211bbca..4e26cb286 100644
--- a/docs/notebooks/Training_and_inference_on_an_example_dataset.ipynb
+++ b/docs/notebooks/Training_and_inference_on_an_example_dataset.ipynb
@@ -335,7 +335,7 @@
       "        \"runs_folder\": \"models\",\n",
       "        \"tags\": [],\n",
       "        \"save_visualizations\": true,\n",
-      "        \"delete_viz_images\": true,\n",
+      "        \"keep_viz_images\": true,\n",
       "        \"zip_outputs\": false,\n",
       "        \"log_to_csv\": true,\n",
       "        \"checkpointing\": {\n",
@@ -727,7 +727,7 @@
       "        \"runs_folder\": \"models\",\n",
       "        \"tags\": [],\n",
       "        \"save_visualizations\": true,\n",
-      "        \"delete_viz_images\": true,\n",
+      "        \"keep_viz_images\": true,\n",
       "        \"zip_outputs\": false,\n",
       "        \"log_to_csv\": true,\n",
       "        \"checkpointing\": {\n",
diff --git a/environment.yml b/environment.yml
index 67ed39d01..d8f752759 100644
--- a/environment.yml
+++ b/environment.yml
@@ -10,14 +10,15 @@ channels:
 
 dependencies:
     # Packages SLEAP uses directly
-    - conda-forge::attrs >=21.2.0  #,<=21.4.0
+    - conda-forge::attrs >=21.2.0
     - conda-forge::cattrs ==1.1.1
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::networkx
     - anaconda::numpy >=1.19.5,<1.23.0
-    - conda-forge::opencv
+    - conda-forge::opencv <4.9.0
+    - conda-forge::h5py <=3.7.0
     - conda-forge::pandas
     - conda-forge::pip
     - conda-forge::pillow #>=8.3.1,<=8.4.0
@@ -35,8 +36,11 @@ dependencies:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
-    - sleap::tensorflow >=2.6.3,<2.11  # No windows GPU support for >2.10
+    - sleap/label/dev::tensorflow ==2.7.0  # TODO: Switch to main label when updated
     - conda-forge::tensorflow-hub  # Pinned in meta.yml, but no problems here... yet
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
 
     # Packages required by tensorflow to find/use GPUs
     - conda-forge::cudatoolkit ==11.3.1
@@ -46,4 +50,3 @@ dependencies:
 
     - pip:  
         - "--editable=.[conda_dev]"
-        
\ No newline at end of file
diff --git a/environment_mac.yml b/environment_mac.yml
index 85ef7d3b9..2026154fa 100644
--- a/environment_mac.yml
+++ b/environment_mac.yml
@@ -9,13 +9,14 @@ channels:
 dependencies:
     # Packages SLEAP uses directly
     - conda-forge::attrs >=21.2.0
+    - conda-forge::importlib-metadata <7.1.0
     - conda-forge::cattrs ==1.1.1
     - conda-forge::h5py
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::keras <2.10.0,>=2.9.0rc0  # Required by tensorflow-macos
-    - conda-forge::networkx
+    - conda-forge::networkx <3.3
     - anaconda::numpy >=1.19.5,<1.23.0
     - conda-forge::opencv
     - conda-forge::pandas
@@ -35,6 +36,9 @@ dependencies:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
-    - conda-forge::tensorflow-hub
+    # - conda-forge::tensorflow-hub  # pulls in tensorflow cpu from conda-forge
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
     - pip:
-        - "--editable=.[conda_dev]"
+        - "--editable=.[conda_dev]"
\ No newline at end of file
diff --git a/environment_no_cuda.yml b/environment_no_cuda.yml
index 7e384b5f9..721c27fca 100644
--- a/environment_no_cuda.yml
+++ b/environment_no_cuda.yml
@@ -11,14 +11,14 @@ channels:
 
 dependencies:
     # Packages SLEAP uses directly
-    - conda-forge::attrs >=21.2.0  #,<=21.4.0
+    - conda-forge::attrs >=21.2.0
     - conda-forge::cattrs ==1.1.1
-    - conda-forge::imgaug ==0.4.0
+    - conda-forge::imageio-ffmpeg # Required for imageio to read/write videos with ffmpeg
     - conda-forge::jsmin
     - conda-forge::jsonpickle ==1.2
     - conda-forge::networkx
     - anaconda::numpy >=1.19.5,<1.23.0
-    - conda-forge::opencv
+    - conda-forge::opencv <4.9.0
     - conda-forge::pandas
     - conda-forge::pip
     - conda-forge::pillow #>=8.3.1,<=8.4.0
@@ -36,8 +36,12 @@ dependencies:
     - conda-forge::scikit-learn ==1.0
     - conda-forge::scikit-video
     - conda-forge::seaborn
-    - sleap::tensorflow >=2.6.3,<2.11  # No windows GPU support for >2.10
+    # - sleap::tensorflow >=2.6.3,<2.11  # No windows GPU support for >2.10
+    - sleap/label/dev::tensorflow ==2.7.0
     - conda-forge::tensorflow-hub
+    - conda-forge::qudida
+    - conda-forge::albumentations
+    - conda-forge::ndx-pose <0.2.0
 
     - pip:  
-        - "--editable=.[conda_dev]"
+        - "--editable=.[conda_dev]"
\ No newline at end of file
diff --git a/pypi_requirements.txt b/pypi_requirements.txt
index 33f419c9c..775ce584e 100644
--- a/pypi_requirements.txt
+++ b/pypi_requirements.txt
@@ -3,15 +3,17 @@
 # setup.py, the packages in requirements.txt will also be installed when running 
 # pip install sleap[pypi].
 
-# These are also distrubuted through conda and not pip installed when using conda.
+# These are also distributed through conda and not pip installed when using conda.
 attrs>=21.2.0,<=21.4.0
 cattrs==1.1.1
+imageio
+imageio-ffmpeg
 # certifi>=2017.4.17,<=2021.10.8
 jsmin
 jsonpickle==1.2
 networkx
 numpy>=1.19.5,<1.23.0
-opencv-python>=4.2.0,<=4.6.0
+opencv-python>=4.2.0,<=4.7.0
 pandas
 pillow>=8.3.1,<=8.4.0
 psutil
@@ -32,7 +34,10 @@ scikit-learn ==1.0.*
 scikit-video
 seaborn
 tensorflow>=2.6.3,<2.9; platform_machine != 'arm64'
+# tensorflow ==2.7.4; platform_machine != 'arm64'
 tensorflow-hub<=0.14.0
+albumentations
+ndx-pose<0.2.0
 # These dependencies are untested since we do not offer a wheel for apple silicon atm.
 tensorflow-macos==2.9.2; sys_platform == 'darwin' and platform_machine == 'arm64'
 tensorflow-metal==0.5.0; sys_platform == 'darwin' and platform_machine == 'arm64'
diff --git a/requirements.txt b/requirements.txt
index cb0ef45c5..5db435ec8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,14 +1,12 @@
 # This file contains the minimal requirements to be installed via pip when using conda.
 
 # No conda packages for these
-imgstore<0.3.0  # 0.3.3 results in https://github.com/O365/python-o365/issues/591
-ndx-pose
+imgstore<0.3.0  # 0.3.3 results in https://github.com/O365/python-o365/issues/591 which is from https://github.com/regebro/tzlocal/issues/112 when tzlocal is v3.0
 nixio>=1.5.3  # Constrain put on by @jgrewe from G-Node
 qimage2ndarray  # ==1.9.0
 segmentation-models
 tensorflow-macos==2.9.2; sys_platform == 'darwin' and platform_machine == 'arm64'
 tensorflow-metal==0.5.0; sys_platform == 'darwin' and platform_machine == 'arm64'
+tensorflow-hub==0.12.0; sys_platform == 'darwin' and platform_machine == 'arm64'
 
-# Conda installing results in https://github.com/h5py/h5py/issues/2037
-h5py<3.2; sys_platform == 'win32'  # Newer versions result in error above, linking issue in Linux
 pynwb>=2.3.3  # 2.0.0 required by ndx-pose, 2.3.3 fixes importlib-metadata incompatibility
diff --git a/sleap/config/frame_range_form.yaml b/sleap/config/frame_range_form.yaml
new file mode 100644
index 000000000..3f01eade4
--- /dev/null
+++ b/sleap/config/frame_range_form.yaml
@@ -0,0 +1,13 @@
+main:
+
+  - name: min_frame_idx
+    label: Minimum frame index
+    type: int
+    range: 1,1000000
+    default: 1
+
+  - name: max_frame_idx
+    label: Maximum frame index
+    type: int
+    range: 1,1000000
+    default: 1000
\ No newline at end of file
diff --git a/sleap/config/labeled_clip_form.yaml b/sleap/config/labeled_clip_form.yaml
index be0d64829..9236ad42b 100644
--- a/sleap/config/labeled_clip_form.yaml
+++ b/sleap/config/labeled_clip_form.yaml
@@ -18,6 +18,10 @@ main:
     label: Use GUI Visual Settings (colors, line widths)
     type: bool
     default: true
+  - name: background
+    label: Video Background
+    type: list
+    options: original,black,white,grey
   - name: open_when_done
     label: Open When Done Saving
     type: bool
diff --git a/sleap/config/pipeline_form.yaml b/sleap/config/pipeline_form.yaml
index cbcea2be5..1bb930e58 100644
--- a/sleap/config/pipeline_form.yaml
+++ b/sleap/config/pipeline_form.yaml
@@ -52,7 +52,7 @@ training:
     This pipeline uses two models: a "<u>centroid</u>" model to
     locate and crop around each animal in the frame, and a
     "<u>centered-instance confidence map</u>" model for predicted node locations
-    for each individual animal predicted by the centroid model.' 
+    for each individual animal predicted by the centroid model.'
   - label: Max Instances
     name: max_instances
     type: optional_int
@@ -211,6 +211,21 @@ training:
   options: ',RGB,grayscale'
   type: list
 
+- type: text
+  text: '<b>ZMQ Options</b>'
+
+- name: controller_port
+  label: Controller Port
+  type: int
+  default: 9000
+  range: 1024,65535
+
+- name: publish_port
+  label: Publish Port
+  type: int
+  default: 9001
+  range: 1024,65535
+
 - type: text
   text: '<b>Output Options</b>'
 
@@ -271,6 +286,11 @@ training:
   type: bool
   default: true
 
+- name: _keep_viz
+  label: Keep Prediction Visualization Images After Training
+  type: bool
+  default: false
+
 - name: _predict_frames
   label: Predict On
   type: list
@@ -287,7 +307,7 @@ inference:
   label: Training/Inference Pipeline Type
   type: stacked
   default: "multi-animal bottom-up "
-  options: "multi-animal bottom-up,multi-animal top-down,multi-animal bottom-up-id,multi-animal top-down-id,single animal,movenet-lightning,movenet-thunder,none"
+  options: "multi-animal bottom-up,multi-animal top-down,multi-animal bottom-up-id,multi-animal top-down-id,single animal,movenet-lightning,movenet-thunder,tracking-only"
 
   multi-animal bottom-up:
   - type: text
@@ -365,7 +385,13 @@ inference:
       Note that this model is intended for human pose estimation. There is no
       support for videos containing more than one instance'
 
-  none:
+  tracking-only:
+
+- name: batch_size
+  label: Batch Size
+  type: int
+  default: 4
+  range: 1,512
 
 - name: tracking.tracker
   label: Tracker (cross-frame identity) Method
@@ -413,7 +439,7 @@ inference:
       label: Similarity Method
       type: list
       default: instance
-      options: instance,centroid,iou
+      options: "instance,normalized_instance,centroid,iou,object keypoint"
     - name: tracking.match
       label: Matching Method
       type: list
@@ -452,6 +478,22 @@ inference:
       label: Nodes to use for Tracking
       type: string
       default: 0,1,2
+    - type: text
+      text: '<b>Object keypoint similarity options</b>:<br />
+      Only used if this similarity method is selected.'
+    - name: tracking.oks_errors
+      label: Keypoints errors in pixels
+      help: 'Standard error in pixels of the distance for each keypoint.
+      If the list is empty, defaults to 1. If singleton list, each keypoint has
+      the same error. Otherwise, the length should be the same as the number of
+      keypoints in the skeleton.'
+      type: string
+      default:
+    - name: tracking.oks_score_weighting
+      label: Use prediction score for weighting
+      help: 'Use prediction scores to weight the similarity of each keypoint'
+      type: bool
+      default: false
     - type: text
       text: '<b>Post-tracker data cleaning</b>:'
     - name: tracking.post_connect_single_breaks
@@ -495,8 +537,8 @@ inference:
     - name: tracking.similarity
       label: Similarity Method
       type: list
-      default: iou
-      options: instance,centroid,iou
+      default: instance
+      options: "instance,normalized_instance,centroid,iou,object keypoint"
     - name: tracking.match
       label: Matching Method
       type: list
@@ -531,6 +573,22 @@ inference:
       label: Nodes to use for Tracking
       type: string
       default: 0,1,2
+    - type: text
+      text: '<b>Object keypoint similarity options</b>:<br />
+      Only used if this similarity method is selected.'
+    - name: tracking.oks_errors
+      label: Keypoints errors in pixels
+      help: 'Standard error in pixels of the distance for each keypoint.
+      If the list is empty, defaults to 1. If singleton list, each keypoint has
+      the same error. Otherwise, the length should be the same as the number of
+      keypoints in the skeleton.'
+      type: string
+      default:
+    - name: tracking.oks_score_weighting
+      label: Use prediction score for weighting
+      help: 'Use prediction scores to weight the similarity of each keypoint'
+      type: bool
+      default: false
     - type: text
       text: '<b>Post-tracker data cleaning</b>:'
     - name: tracking.post_connect_single_breaks
diff --git a/sleap/config/suggestions.yaml b/sleap/config/suggestions.yaml
index 8cf89728a..1440530fc 100644
--- a/sleap/config/suggestions.yaml
+++ b/sleap/config/suggestions.yaml
@@ -3,7 +3,7 @@ main:
     label: Method
     type: stacked
     default: " "
-    options: " ,image features,sample,prediction score,velocity,frame chunk"
+    options: " ,image features,sample,prediction score,velocity,frame chunk,max point displacement"
     " ":
 
     sample:
@@ -175,6 +175,13 @@ main:
         type: double
         default: 0.1
         range: 0.1,1.0
+    
+    "max point displacement":
+      - name: displacement_threshold
+        label: Maximum Displacement Threshold
+        type: int
+        default: 10
+        range: 0,999
 
   - name: target
     label: Target
diff --git a/sleap/config/training_editor_form.yaml b/sleap/config/training_editor_form.yaml
index d10b840a0..7d7972892 100644
--- a/sleap/config/training_editor_form.yaml
+++ b/sleap/config/training_editor_form.yaml
@@ -44,7 +44,7 @@ model:
     label: Max Stride
     name: model.backbone.hourglass.max_stride
     type: list
-    options: 1,2,4,8,16,32,64
+    options: 1,2,4,8,16,32,64,128
   # - default: 4
   #   help: Determines the number of upsampling blocks in the network.
   #   label: Output Stride
@@ -81,7 +81,7 @@ model:
     label: Max Stride
     name: model.backbone.leap.max_stride
     type: list
-    options: 2,4,8,16,32,64
+    options: 2,4,8,16,32,64,128
   # - default: 1
   #   help: Determines the number of upsampling blocks in the network.
   #   label: Output Stride
@@ -190,7 +190,7 @@ model:
     label: Max Stride
     name: model.backbone.resnet.max_stride
     type: list
-    options: 2,4,8,16,32,64
+    options: 2,4,8,16,32,64,128
   # - default: 4
   #   help: Stride of the final output. If the upsampling branch is not defined, the
   #     output stride is controlled via dilated convolutions or reduced pooling in the
@@ -250,7 +250,7 @@ model:
     label: Max Stride
     name: model.backbone.unet.max_stride
     type: list
-    options: 2,4,8,16,32,64
+    options: 2,4,8,16,32,64,128
   # - default: 1
   #   help: Determines the number of upsampling blocks in the network.
   #   label: Output Stride
@@ -661,6 +661,7 @@ optimization:
   label: Batch Size
   name: optimization.batch_size
   type: int
+  range: 1,512
 - default: 100
   help: Maximum number of epochs to train for. Training can be stopped manually or automatically if early stopping is enabled and a plateau is detected.
   label: Epochs
diff --git a/sleap/gui/app.py b/sleap/gui/app.py
index de6ce9fbf..8b711c806 100644
--- a/sleap/gui/app.py
+++ b/sleap/gui/app.py
@@ -44,13 +44,16 @@
 frame and instances listed in data view table.
 """
 
-
 import os
 import platform
 import random
 import re
+import traceback
+from logging import getLogger
 from pathlib import Path
 from typing import Callable, List, Optional, Tuple
+import sys
+import subprocess
 
 from qtpy import QtCore, QtGui
 from qtpy.QtCore import QEvent, Qt
@@ -82,7 +85,10 @@
 from sleap.io.video import available_video_exts
 from sleap.prefs import prefs
 from sleap.skeleton import Skeleton
-from sleap.util import parse_uri_path
+from sleap.util import parse_uri_path, get_config_file
+
+
+logger = getLogger(__name__)
 
 
 class MainWindow(QMainWindow):
@@ -101,6 +107,7 @@ class MainWindow(QMainWindow):
     def __init__(
         self,
         labels_path: Optional[str] = None,
+        labels: Optional[Labels] = None,
         reset: bool = False,
         no_usage_data: bool = False,
         *args,
@@ -118,7 +125,7 @@ def __init__(
         self.setAcceptDrops(True)
 
         self.state = GuiState()
-        self.labels = Labels()
+        self.labels = labels or Labels()
 
         self.commands = CommandContext(
             state=self.state, app=self, update_callback=self.on_data_update
@@ -145,6 +152,7 @@ def __init__(
         self.state["edge style"] = prefs["edge style"]
         self.state["fit"] = False
         self.state["color predicted"] = prefs["color predicted"]
+        self.state["trail_length"] = prefs["trail length"]
         self.state["trail_shade"] = prefs["trail shade"]
         self.state["marker size"] = prefs["marker size"]
         self.state["propagate track labels"] = prefs["propagate track labels"]
@@ -175,8 +183,10 @@ def __init__(
             print("Restoring GUI state...")
             self.restoreState(prefs["window state"])
 
-        if labels_path:
+        if labels_path is not None:
             self.commands.loadProjectFile(filename=labels_path)
+        elif labels is not None:
+            self.commands.loadLabelsObject(labels=labels)
         else:
             self.state["project_loaded"] = False
 
@@ -213,6 +223,7 @@ def closeEvent(self, event):
         prefs["edge style"] = self.state["edge style"]
         prefs["propagate track labels"] = self.state["propagate track labels"]
         prefs["color predicted"] = self.state["color predicted"]
+        prefs["trail length"] = self.state["trail_length"]
         prefs["trail shade"] = self.state["trail_shade"]
         prefs["share usage data"] = self.state["share usage data"]
 
@@ -254,7 +265,6 @@ def dragEnterEvent(self, event):
             event.acceptProposedAction()
 
     def dropEvent(self, event):
-
         # Parse filenames
         filenames = event.mimeData().data("text/uri-list").data().decode()
         filenames = [parse_uri_path(f.strip()) for f in filenames.strip().split("\n")]
@@ -367,7 +377,9 @@ def add_menu_item(menu, key: str, name: str, action: Callable):
         def connect_check(key):
             self._menu_actions[key].setCheckable(True)
             self._menu_actions[key].setChecked(self.state[key])
-            self.state.connect(key, self._menu_actions[key].setChecked)
+            self.state.connect(
+                key, lambda checked: self._menu_actions[key].setChecked(checked)
+            )
 
         # add checkable menu item connected to state variable
         def add_menu_check_item(menu, key: str, name: str):
@@ -506,6 +518,13 @@ def add_submenu_choices(menu, title, options, key):
             fileMenu, "reset prefs", "Reset preferences to defaults...", self.resetPrefs
         )
 
+        add_menu_item(
+            fileMenu,
+            "open preference directory",
+            "Open Preferences Directory...",
+            self.openPrefs,
+        )
+
         fileMenu.addSeparator()
         add_menu_item(fileMenu, "close", "Quit", self.close)
 
@@ -637,17 +656,18 @@ def prev_vid():
             key="edge style",
         )
 
+        # XXX
         add_submenu_choices(
             menu=viewMenu,
             title="Node Marker Size",
-            options=(1, 2, 4, 6, 8, 12),
+            options=prefs["node marker sizes"],
             key="marker size",
         )
 
         add_submenu_choices(
             menu=viewMenu,
             title="Node Label Size",
-            options=(6, 12, 18, 24, 36),
+            options=prefs["node label sizes"],
             key="node label size",
         )
 
@@ -686,13 +706,17 @@ def prev_vid():
         )
 
         def new_instance_menu_action():
+            """Determine which action to use when using Ctrl + I or menu Add Instance.
+
+            We always add an offset of 10.
+            """
             method_key = [
                 key
                 for (key, val) in instance_adding_methods.items()
                 if val == self.state["instance_init_method"]
             ]
             if method_key:
-                self.commands.newInstance(init_method=method_key[0])
+                self.commands.newInstance(init_method=method_key[0], offset=10)
 
         labelMenu = self.menuBar().addMenu("Labels")
         add_menu_item(
@@ -735,12 +759,12 @@ def new_instance_menu_action():
         labelMenu.addAction(
             "Copy Instance",
             self.commands.copyInstance,
-            Qt.CTRL + Qt.Key_C,
+            Qt.CTRL | Qt.Key_C,
         )
         labelMenu.addAction(
             "Paste Instance",
             self.commands.pasteInstance,
-            Qt.CTRL + Qt.Key_V,
+            Qt.CTRL | Qt.Key_V,
         )
 
         labelMenu.addSeparator()
@@ -775,6 +799,12 @@ def new_instance_menu_action():
             "Delete Predictions with Low Score...",
             self.commands.deleteLowScorePredictions,
         )
+        add_menu_item(
+            labelMenu,
+            "delete max instance predictions",
+            "Delete Predictions beyond Max Instances...",
+            self.commands.deleteInstanceLimitPredictions,
+        )
         add_menu_item(
             labelMenu,
             "delete frame limit predictions",
@@ -834,12 +864,12 @@ def new_instance_menu_action():
         tracksMenu.addAction(
             "Copy Instance Track",
             self.commands.copyInstanceTrack,
-            Qt.CTRL + Qt.SHIFT + Qt.Key_C,
+            Qt.CTRL | Qt.SHIFT | Qt.Key_C,
         )
         tracksMenu.addAction(
             "Paste Instance Track",
             self.commands.pasteInstanceTrack,
-            Qt.CTRL + Qt.SHIFT + Qt.Key_V,
+            Qt.CTRL | Qt.SHIFT | Qt.Key_V,
         )
 
         tracksMenu.addSeparator()
@@ -850,6 +880,8 @@ def new_instance_menu_action():
             "Point Displacement (max)",
             "Primary Point Displacement (sum)",
             "Primary Point Displacement (max)",
+            "Tracking Score (mean)",
+            "Tracking Score (min)",
             "Instance Score (sum)",
             "Instance Score (min)",
             "Point Score (sum)",
@@ -1018,6 +1050,7 @@ def _load_overlays(self):
             labels=self.labels,
             player=self.player,
             trail_shade=self.state["trail_shade"],
+            trail_length=self.state["trail_length"],
         )
         self.overlays["instance"] = InstanceOverlay(
             labels=self.labels, player=self.player, state=self.state
@@ -1307,7 +1340,7 @@ def updateStatusMessage(self, message: Optional[str] = None):
                 message += f" [Hidden] Press '{hide_key}' to toggle."
                 self.statusBar().setStyleSheet("color: red")
             else:
-                self.statusBar().setStyleSheet("color: black")
+                self.statusBar().setStyleSheet("")
 
         self.statusBar().showMessage(message)
 
@@ -1320,14 +1353,42 @@ def resetPrefs(self):
         )
         msg.exec_()
 
+    def openPrefs(self):
+        """Open preference file directory"""
+        pref_path = get_config_file("preferences.yaml")
+        # Make sure the pref_path is a directory rather than a file
+        if pref_path.is_file():
+            pref_path = pref_path.parent
+        # Open the file explorer at the folder containing the preferences.yaml file
+        if sys.platform == "win32":
+            subprocess.Popen(["explorer", str(pref_path)])
+        elif sys.platform == "darwin":
+            subprocess.Popen(["open", str(pref_path)])
+        else:
+            subprocess.Popen(["xdg-open", str(pref_path)])
+
     def _update_track_menu(self):
         """Updates track menu options."""
         self.track_menu.clear()
         self.delete_tracks_menu.clear()
+
+        # Create a dictionary mapping track indices to Qt.Key values
+        key_mapping = {
+            0: Qt.Key_1,
+            1: Qt.Key_2,
+            2: Qt.Key_3,
+            3: Qt.Key_4,
+            4: Qt.Key_5,
+            5: Qt.Key_6,
+            6: Qt.Key_7,
+            7: Qt.Key_8,
+            8: Qt.Key_9,
+            9: Qt.Key_0,
+        }
         for track_ind, track in enumerate(self.labels.tracks):
             key_command = ""
             if track_ind < 9:
-                key_command = Qt.CTRL + Qt.Key_0 + self.labels.tracks.index(track) + 1
+                key_command = Qt.CTRL | key_mapping[track_ind]
             self.track_menu.addAction(
                 f"{track.name}",
                 lambda x=track: self.commands.setInstanceTrack(x),
@@ -1337,7 +1398,7 @@ def _update_track_menu(self):
                 f"{track.name}", lambda x=track: self.commands.deleteTrack(x)
             )
         self.track_menu.addAction(
-            "New Track", self.commands.addTrack, Qt.CTRL + Qt.Key_0
+            "New Track", self.commands.addTrack, Qt.CTRL | Qt.Key_0
         )
 
     def _update_seekbar_marks(self):
@@ -1354,6 +1415,8 @@ def _set_seekbar_header(self, graph_name: str):
             "Point Displacement (max)": data_obj.get_point_displacement_series,
             "Primary Point Displacement (sum)": data_obj.get_primary_point_displacement_series,
             "Primary Point Displacement (max)": data_obj.get_primary_point_displacement_series,
+            "Tracking Score (mean)": data_obj.get_tracking_score_series,
+            "Tracking Score (min)": data_obj.get_tracking_score_series,
             "Instance Score (sum)": data_obj.get_instance_score_series,
             "Instance Score (min)": data_obj.get_instance_score_series,
             "Point Score (sum)": data_obj.get_point_score_series,
@@ -1367,7 +1430,7 @@ def _set_seekbar_header(self, graph_name: str):
         else:
             if graph_name in header_functions:
                 kwargs = dict(video=self.state["video"])
-                reduction_name = re.search("\\((sum|max|min)\\)", graph_name)
+                reduction_name = re.search("\\((sum|max|min|mean)\\)", graph_name)
                 if reduction_name is not None:
                     kwargs["reduction"] = reduction_name.group(1)
                 series = header_functions[graph_name](**kwargs)
@@ -1594,8 +1657,12 @@ def _show_keyboard_shortcuts_window(self):
         ShortcutDialog().exec_()
 
 
-def main(args: Optional[list] = None):
-    """Starts new instance of app."""
+def create_sleap_label_parser():
+    """Creates parser for `sleap-label` command line arguments.
+
+    Returns:
+        argparse.ArgumentParser: The parser.
+    """
 
     import argparse
 
@@ -1635,6 +1702,23 @@ def main(args: Optional[list] = None):
         default=False,
     )
 
+    return parser
+
+
+def create_app():
+    """Creates Qt application."""
+
+    app = QApplication([])
+    app.setApplicationName(f"SLEAP v{sleap.version.__version__}")
+    app.setWindowIcon(QtGui.QIcon(sleap.util.get_package_file("gui/icon.png")))
+
+    return app
+
+
+def main(args: Optional[list] = None, labels: Optional[Labels] = None):
+    """Starts new instance of app."""
+
+    parser = create_sleap_label_parser()
     args = parser.parse_args(args)
 
     if args.nonnative:
@@ -1646,17 +1730,26 @@ def main(args: Optional[list] = None):
         # https://stackoverflow.com/q/64818879
         os.environ["QT_MAC_WANTS_LAYER"] = "1"
 
-    app = QApplication([])
-    app.setApplicationName(f"SLEAP v{sleap.version.__version__}")
-    app.setWindowIcon(QtGui.QIcon(sleap.util.get_package_file("gui/icon.png")))
+    app = create_app()
 
     window = MainWindow(
-        labels_path=args.labels_path, reset=args.reset, no_usage_data=args.no_usage_data
+        labels_path=args.labels_path,
+        labels=labels,
+        reset=args.reset,
+        no_usage_data=args.no_usage_data,
     )
     window.showMaximized()
 
     # Disable GPU in GUI process. This does not affect subprocesses.
-    sleap.use_cpu_only()
+    try:
+        sleap.use_cpu_only()
+    except RuntimeError:  # Visible devices cannot be modified after being initialized
+        logger.warning(
+            "Running processes on the GPU. Restarting your GUI should allow switching "
+            "back to CPU-only mode.\n"
+            "Received the following error when trying to switch back to CPU-only mode:"
+        )
+        traceback.print_exc()
 
     # Print versions.
     print()
diff --git a/sleap/gui/commands.py b/sleap/gui/commands.py
index 698eed756..fca982327 100644
--- a/sleap/gui/commands.py
+++ b/sleap/gui/commands.py
@@ -36,7 +36,7 @@ class which inherits from `AppCommand` (or a more specialized class such as
 from enum import Enum
 from glob import glob
 from pathlib import Path, PurePath
-from typing import Callable, Dict, Iterator, List, Optional, Tuple, Type
+from typing import Callable, Dict, Iterator, List, Optional, Tuple, Type, Union, cast
 
 import attr
 import cv2
@@ -49,7 +49,7 @@ class which inherits from `AppCommand` (or a more specialized class such as
 from sleap.gui.dialogs.merge import MergeDialog, ReplaceSkeletonTableDialog
 from sleap.gui.dialogs.message import MessageDialog
 from sleap.gui.dialogs.missingfiles import MissingFilesDialog
-from sleap.gui.dialogs.query import QueryDialog
+from sleap.gui.dialogs.frame_range import FrameRangeDialog
 from sleap.gui.state import GuiState
 from sleap.gui.suggestions import VideoFrameSuggestions
 from sleap.instance import Instance, LabeledFrame, Point, PredictedInstance, Track
@@ -260,16 +260,15 @@ def loadLabelsObject(self, labels: Labels, filename: Optional[str] = None):
         """
         self.execute(LoadLabelsObject, labels=labels, filename=filename)
 
-    def loadProjectFile(self, filename: str):
+    def loadProjectFile(self, filename: Union[str, Labels]):
         """Loads given labels file into GUI.
 
         Args:
-            filename: The path to the saved labels dataset. If None,
-                then don't do anything.
+            filename: The path to the saved labels dataset or the `Labels` object.
+                If None, then don't do anything.
 
         Returns:
             None
-
         """
         self.execute(LoadProjectFile, filename=filename)
 
@@ -492,8 +491,12 @@ def deleteLowScorePredictions(self):
         """Gui for deleting instances below some score threshold."""
         self.execute(DeleteLowScorePredictions)
 
-    def deleteFrameLimitPredictions(self):
+    def deleteInstanceLimitPredictions(self):
         """Gui for deleting instances beyond some number in each frame."""
+        self.execute(DeleteInstanceLimitPredictions)
+
+    def deleteFrameLimitPredictions(self):
+        """Gui for deleting instances beyond some frame number."""
         self.execute(DeleteFrameLimitPredictions)
 
     def completeInstanceNodes(self, instance: Instance):
@@ -506,6 +509,7 @@ def newInstance(
         init_method: str = "best",
         location: Optional[QtCore.QPoint] = None,
         mark_complete: bool = False,
+        offset: int = 0,
     ):
         """Creates a new instance, copying node coordinates as appropriate.
 
@@ -515,6 +519,8 @@ def newInstance(
             init_method: Method to use for positioning nodes.
             location: The location where instance should be added (if node init
                 method supports custom location).
+            mark_complete: Whether to mark the instance as complete.
+            offset: Offset to apply to the location if given.
         """
         self.execute(
             AddInstance,
@@ -522,6 +528,7 @@ def newInstance(
             init_method=init_method,
             location=location,
             mark_complete=mark_complete,
+            offset=offset,
         )
 
     def setPointLocations(
@@ -647,9 +654,8 @@ def do_action(context: "CommandContext", params: dict):
 
         Returns:
             None.
-
         """
-        filename = params["filename"]
+        filename = params.get("filename", None)  # If called with just a Labels object
         labels: Labels = params["labels"]
 
         context.state["labels"] = labels
@@ -669,7 +675,9 @@ def do_action(context: "CommandContext", params: dict):
             context.state["video"] = labels.videos[0]
 
         context.state["project_loaded"] = True
-        context.state["has_changes"] = params.get("changed_on_load", False)
+        context.state["has_changes"] = params.get("changed_on_load", False) or (
+            filename is None
+        )
 
         # This is not listed as an edit command since we want a clean changestack
         context.app.on_data_update([UpdateTopic.project, UpdateTopic.all])
@@ -683,17 +691,16 @@ def ask(context: "CommandContext", params: dict):
         if len(filename) == 0:
             return
 
-        gui_video_callback = Labels.make_gui_video_callback(
-            search_paths=[os.path.dirname(filename)], context=params
-        )
-
         has_loaded = False
         labels = None
-        if type(filename) == Labels:
+        if isinstance(filename, Labels):
             labels = filename
             filename = None
             has_loaded = True
         else:
+            gui_video_callback = Labels.make_gui_video_callback(
+                search_paths=[os.path.dirname(filename)], context=params
+            )
             try:
                 labels = Labels.load_file(filename, video_search=gui_video_callback)
                 has_loaded = True
@@ -751,7 +758,6 @@ def ask(context: "CommandContext", params: dict) -> bool:
 class ImportAlphaTracker(AppCommand):
     @staticmethod
     def do_action(context: "CommandContext", params: dict):
-
         video_path = params["video_path"] if "video_path" in params else None
 
         labels = Labels.load_alphatracker(
@@ -791,7 +797,6 @@ def ask(context: "CommandContext", params: dict) -> bool:
 class ImportNWB(AppCommand):
     @staticmethod
     def do_action(context: "CommandContext", params: dict):
-
         labels = Labels.load_nwb(filename=params["filename"])
 
         new_window = context.app.__class__()
@@ -824,7 +829,6 @@ def ask(context: "CommandContext", params: dict) -> bool:
 class ImportDeepPoseKit(AppCommand):
     @staticmethod
     def do_action(context: "CommandContext", params: dict):
-
         labels = Labels.from_deepposekit(
             filename=params["filename"],
             video_path=params["video_path"],
@@ -873,7 +877,6 @@ def ask(context: "CommandContext", params: dict) -> bool:
 class ImportLEAP(AppCommand):
     @staticmethod
     def do_action(context: "CommandContext", params: dict):
-
         labels = Labels.load_leap_matlab(
             filename=params["filename"],
         )
@@ -904,7 +907,6 @@ def ask(context: "CommandContext", params: dict) -> bool:
 class ImportCoco(AppCommand):
     @staticmethod
     def do_action(context: "CommandContext", params: dict):
-
         labels = Labels.load_coco(
             filename=params["filename"], img_dir=params["img_dir"], use_missing_gui=True
         )
@@ -936,7 +938,6 @@ def ask(context: "CommandContext", params: dict) -> bool:
 class ImportDeepLabCut(AppCommand):
     @staticmethod
     def do_action(context: "CommandContext", params: dict):
-
         labels = Labels.load_deeplabcut(filename=params["filename"])
 
         new_window = context.app.__class__()
@@ -1295,6 +1296,7 @@ def do_action(context: CommandContext, params: dict):
             frames=list(params["frames"]),
             fps=params["fps"],
             color_manager=params["color_manager"],
+            background=params["background"],
             show_edges=params["show edges"],
             edge_is_wedge=params["edge_is_wedge"],
             marker_size=params["marker size"],
@@ -1309,7 +1311,6 @@ def do_action(context: CommandContext, params: dict):
 
     @staticmethod
     def ask(context: CommandContext, params: dict) -> bool:
-
         from sleap.gui.dialogs.export_clip import ExportClipDialog
 
         dialog = ExportClipDialog()
@@ -1333,17 +1334,15 @@ def ask(context: CommandContext, params: dict) -> bool:
         # makes mp4's that most programs can't open (VLC can).
         default_out_filename = context.state["filename"] + ".avi"
 
-        # But if we can write mpegs using sci-kit video, use .mp4
-        # since it has trouble writing .avi files.
-        if VideoWriter.can_use_skvideo():
+        if VideoWriter.can_use_ffmpeg():
             default_out_filename = context.state["filename"] + ".mp4"
 
-        # Ask where use wants to save video file
+        # Ask where user wants to save video file
         filename, _ = FileDialog.save(
             context.app,
             caption="Save Video As...",
             dir=default_out_filename,
-            filter="Video (*.avi *mp4)",
+            filter="Video (*.avi *.mp4)",
         )
 
         # Check if user hit cancel
@@ -1354,6 +1353,7 @@ def ask(context: CommandContext, params: dict) -> bool:
         params["fps"] = export_options["fps"]
         params["scale"] = export_options["scale"]
         params["open_when_done"] = export_options["open_when_done"]
+        params["background"] = export_options["background"]
 
         params["crop"] = None
 
@@ -1584,7 +1584,6 @@ class GoNextSuggestedFrame(NavCommand):
 
     @classmethod
     def do_action(cls, context: CommandContext, params: dict):
-
         next_suggestion_frame = context.labels.get_next_suggestion(
             context.state["video"], context.state["frame_idx"], cls.seek_direction
         )
@@ -1770,7 +1769,6 @@ class ReplaceVideo(EditCommand):
 
     @staticmethod
     def do_action(context: CommandContext, params: dict) -> bool:
-
         import_list = params["import_list"]
 
         for import_item, video in import_list:
@@ -1899,7 +1897,6 @@ def ask(context: CommandContext, params: dict) -> bool:
         video_file_names = []
         total_num_labeled_frames = 0
         for idx in row_idxs:
-
             video = videos[idx]
             if video is None:
                 return False
@@ -1944,7 +1941,6 @@ def load_skeleton(filename: str):
     def compare_skeletons(
         skeleton: Skeleton, new_skeleton: Skeleton
     ) -> Tuple[List[str], List[str], List[str]]:
-
         delete_nodes = []
         add_nodes = []
         if skeleton.node_names != new_skeleton.node_names:
@@ -2076,7 +2072,7 @@ def try_and_skip_if_error(func, *args, **kwargs):
                 func(*args, **kwargs)
             except Exception as e:
                 tb_str = traceback.format_exception(
-                    etype=type(e), value=e, tb=e.__traceback__
+                    type(e), value=e, tb=e.__traceback__
                 )
                 logger.warning(
                     f"Recieved the following error while replacing skeleton:\n"
@@ -2307,6 +2303,8 @@ def _do_deletion(context: CommandContext, lf_inst_list: List[int]):
         lfs_to_remove = []
         for lf, inst in lf_inst_list:
             context.labels.remove_instance(lf, inst, in_transaction=True)
+            if context.state["instance"] == inst:
+                context.state["instance"] = None
             if len(lf.instances) == 0:
                 lfs_to_remove.append(lf)
 
@@ -2449,7 +2447,7 @@ def ask(cls, context: CommandContext, params: dict) -> bool:
             return super().ask(context, params)
 
 
-class DeleteFrameLimitPredictions(InstanceDeleteCommand):
+class DeleteInstanceLimitPredictions(InstanceDeleteCommand):
     @staticmethod
     def get_frame_instance_list(context: CommandContext, params: dict):
         count_thresh = params["count_threshold"]
@@ -2479,6 +2477,36 @@ def ask(cls, context: CommandContext, params: dict) -> bool:
             return super().ask(context, params)
 
 
+class DeleteFrameLimitPredictions(InstanceDeleteCommand):
+    @staticmethod
+    def get_frame_instance_list(context: CommandContext, params: Dict):
+        """Called from the parent `InstanceDeleteCommand.ask` method.
+
+        Returns:
+            List of instances to be deleted.
+        """
+        instances = []
+        # Select the instances to be deleted
+        for lf in context.labels.labeled_frames:
+            if lf.frame_idx < (params["min_frame_idx"] - 1) or lf.frame_idx > (
+                params["max_frame_idx"] - 1
+            ):
+                instances.extend([(lf, inst) for inst in lf.instances])
+        return instances
+
+    @classmethod
+    def ask(cls, context: CommandContext, params: Dict) -> bool:
+        current_video = context.state["video"]
+        dialog = FrameRangeDialog(
+            title="Delete Instances in Frame Range...", max_frame_idx=len(current_video)
+        )
+        results = dialog.get_results()
+        if results:
+            params["min_frame_idx"] = results["min_frame_idx"]
+            params["max_frame_idx"] = results["max_frame_idx"]
+            return super().ask(context, params)
+
+
 class TransposeInstances(EditCommand):
     topics = [UpdateTopic.project_instances, UpdateTopic.tracks]
 
@@ -2492,7 +2520,16 @@ def do_action(cls, context: CommandContext, params: dict):
         # Swap tracks for current and subsequent frames when we have tracks
         old_track, new_track = instances[0].track, instances[1].track
         if old_track is not None and new_track is not None:
-            frame_range = (context.state["frame_idx"], context.state["video"].frames)
+            if context.state["propagate track labels"]:
+                frame_range = (
+                    context.state["frame_idx"],
+                    context.state["video"].frames,
+                )
+            else:
+                frame_range = (
+                    context.state["frame_idx"],
+                    context.state["frame_idx"] + 1,
+                )
             context.labels.track_swap(
                 context.state["video"], new_track, old_track, frame_range
             )
@@ -2535,6 +2572,7 @@ def do_action(context: CommandContext, params: dict):
             return
 
         context.labels.remove_instance(context.state["labeled_frame"], selected_inst)
+        context.state["instance"] = None
 
 
 class DeleteSelectedInstanceTrack(EditCommand):
@@ -2552,6 +2590,7 @@ def do_action(context: CommandContext, params: dict):
 
         track = selected_inst.track
         context.labels.remove_instance(context.state["labeled_frame"], selected_inst)
+        context.state["instance"] = None
 
         if track is not None:
             # remove any instance on this track
@@ -2723,7 +2762,6 @@ class GenerateSuggestions(EditCommand):
 
     @classmethod
     def do_action(cls, context: CommandContext, params: dict):
-
         if len(context.labels.videos) == 0:
             print("Error: no videos to generate suggestions for")
             return
@@ -2851,27 +2889,13 @@ def ask_and_do(cls, context: CommandContext, params: dict):
 class AddInstance(EditCommand):
     topics = [UpdateTopic.frame, UpdateTopic.project_instances, UpdateTopic.suggestions]
 
-    @staticmethod
-    def get_previous_frame_index(context: CommandContext) -> Optional[int]:
-        frames = context.labels.frames(
-            context.state["video"],
-            from_frame_idx=context.state["frame_idx"],
-            reverse=True,
-        )
-
-        try:
-            next_idx = next(frames).frame_idx
-        except:
-            return
-
-        return next_idx
-
     @classmethod
     def do_action(cls, context: CommandContext, params: dict):
         copy_instance = params.get("copy_instance", None)
         init_method = params.get("init_method", "best")
         location = params.get("location", None)
         mark_complete = params.get("mark_complete", False)
+        offset = params.get("offset", 0)
 
         if context.state["labeled_frame"] is None:
             return
@@ -2879,6 +2903,250 @@ def do_action(cls, context: CommandContext, params: dict):
         if len(context.state["skeleton"]) == 0:
             return
 
+        (
+            copy_instance,
+            from_predicted,
+            from_prev_frame,
+        ) = AddInstance.find_instance_to_copy_from(
+            context, copy_instance=copy_instance, init_method=init_method
+        )
+
+        new_instance = AddInstance.create_new_instance(
+            context=context,
+            from_predicted=from_predicted,
+            copy_instance=copy_instance,
+            mark_complete=mark_complete,
+            init_method=init_method,
+            location=location,
+            from_prev_frame=from_prev_frame,
+            offset=offset,
+        )
+
+        # Add the instance
+        context.labels.add_instance(context.state["labeled_frame"], new_instance)
+
+        if context.state["labeled_frame"] not in context.labels.labels:
+            context.labels.append(context.state["labeled_frame"])
+
+    @staticmethod
+    def create_new_instance(
+        context: CommandContext,
+        from_predicted: Optional[PredictedInstance],
+        copy_instance: Optional[Union[Instance, PredictedInstance]],
+        mark_complete: bool,
+        init_method: str,
+        location: Optional[QtCore.QPoint],
+        from_prev_frame: bool,
+        offset: int = 0,
+    ) -> Instance:
+        """Create new instance."""
+
+        # Now create the new instance
+        new_instance = Instance(
+            skeleton=context.state["skeleton"],
+            from_predicted=from_predicted,
+            frame=context.state["labeled_frame"],
+        )
+
+        has_missing_nodes = AddInstance.set_visible_nodes(
+            context=context,
+            copy_instance=copy_instance,
+            new_instance=new_instance,
+            mark_complete=mark_complete,
+            init_method=init_method,
+            location=location,
+            offset=offset,
+        )
+
+        if has_missing_nodes:
+            AddInstance.fill_missing_nodes(
+                context=context,
+                copy_instance=copy_instance,
+                init_method=init_method,
+                new_instance=new_instance,
+                location=location,
+            )
+
+        # If we're copying a predicted instance or from another frame, copy the track
+        if hasattr(copy_instance, "score") or from_prev_frame:
+            copy_instance = cast(Union[PredictedInstance, Instance], copy_instance)
+            new_instance.track = copy_instance.track
+
+        return new_instance
+
+    @staticmethod
+    def fill_missing_nodes(
+        context: CommandContext,
+        copy_instance: Optional[Union[Instance, PredictedInstance]],
+        init_method: str,
+        new_instance: Instance,
+        location: Optional[QtCore.QPoint],
+    ):
+        """Fill in missing nodes for new instance.
+
+        Args:
+            context: The command context.
+            copy_instance: The instance to copy from.
+            init_method: The initialization method.
+            new_instance: The new instance.
+            location: The location of the instance.
+
+        Returns:
+            None
+        """
+
+        # mark the node as not "visible" if we're copying from a predicted instance without this node
+        is_visible = copy_instance is None or (not hasattr(copy_instance, "score"))
+
+        if init_method == "force_directed":
+            AddMissingInstanceNodes.add_force_directed_nodes(
+                context=context,
+                instance=new_instance,
+                visible=is_visible,
+                center_point=location,
+            )
+        elif init_method == "random":
+            AddMissingInstanceNodes.add_random_nodes(
+                context=context, instance=new_instance, visible=is_visible
+            )
+        elif init_method == "template":
+            AddMissingInstanceNodes.add_nodes_from_template(
+                context=context,
+                instance=new_instance,
+                visible=is_visible,
+                center_point=location,
+            )
+        else:
+            AddMissingInstanceNodes.add_best_nodes(
+                context=context, instance=new_instance, visible=is_visible
+            )
+
+    @staticmethod
+    def set_visible_nodes(
+        context: CommandContext,
+        copy_instance: Optional[Union[Instance, PredictedInstance]],
+        new_instance: Instance,
+        mark_complete: bool,
+        init_method: str,
+        location: Optional[QtCore.QPoint] = None,
+        offset: int = 0,
+    ) -> bool:
+        """Sets visible nodes for new instance.
+
+        Args:
+            context: The command context.
+            copy_instance: The instance to copy from.
+            new_instance: The new instance.
+            mark_complete: Whether to mark the instance as complete.
+            init_method: The initialization method.
+            location: The location of the mouse click if any.
+            offset: The offset to apply to all nodes.
+
+        Returns:
+            Whether the new instance has missing nodes.
+        """
+
+        if copy_instance is None:
+            return True
+
+        has_missing_nodes = False
+
+        # Calculate scale factor for getting new x and y values.
+        old_size_width = copy_instance.frame.video.shape[2]
+        old_size_height = copy_instance.frame.video.shape[1]
+        new_size_width = new_instance.frame.video.shape[2]
+        new_size_height = new_instance.frame.video.shape[1]
+        scale_width = new_size_width / old_size_width
+        scale_height = new_size_height / old_size_height
+
+        # The offset is 0, except when using Ctrl + I or Add Instance button.
+        offset_x = offset
+        offset_y = offset
+
+        # Using right click and context menu with option "best"
+        if (init_method == "best") and (location is not None):
+            reference_node = next(
+                (node for node in copy_instance if not node.isnan()), None
+            )
+            reference_x = reference_node.x
+            reference_y = reference_node.y
+            offset_x = location.x() - (reference_x * scale_width)
+            offset_y = location.y() - (reference_y * scale_height)
+
+        # Go through each node in skeleton.
+        for node in context.state["skeleton"].node_names:
+            # If we're copying from a skeleton that has this node.
+            if node in copy_instance and not copy_instance[node].isnan():
+                # Ensure x, y inside current frame, then copy x, y, and visible.
+                # We don't want to copy a PredictedPoint or score attribute.
+                x_old = copy_instance[node].x
+                y_old = copy_instance[node].y
+
+                # Copy the instance without scale or offset if predicted
+                if isinstance(copy_instance, PredictedInstance):
+                    x_new = x_old
+                    y_new = y_old
+                else:
+                    x_new = x_old * scale_width
+                    y_new = y_old * scale_height
+
+                # Apply offset if in bounds
+                x_new_offset = x_new + offset_x
+                y_new_offset = y_new + offset_y
+
+                # Default visibility is same as copied instance.
+                visible = copy_instance[node].visible
+
+                # If the node is offset to outside the frame, mark as not visible.
+                if x_new_offset < 0:
+                    x_new = 0
+                    visible = False
+                elif x_new_offset > new_size_width:
+                    x_new = new_size_width
+                    visible = False
+                else:
+                    x_new = x_new_offset
+                if y_new_offset < 0:
+                    y_new = 0
+                    visible = False
+                elif y_new_offset > new_size_height:
+                    y_new = new_size_height
+                    visible = False
+                else:
+                    y_new = y_new_offset
+
+                # Update the new instance with the new x, y, and visibility.
+                new_instance[node] = Point(
+                    x=x_new,
+                    y=y_new,
+                    visible=visible,
+                    complete=mark_complete,
+                )
+            else:
+                has_missing_nodes = True
+
+        return has_missing_nodes
+
+    @staticmethod
+    def find_instance_to_copy_from(
+        context: CommandContext,
+        copy_instance: Optional[Union[Instance, PredictedInstance]],
+        init_method: bool,
+    ) -> Tuple[
+        Optional[Union[Instance, PredictedInstance]], Optional[PredictedInstance], bool
+    ]:
+        """Find instance to copy from.
+
+        Args:
+            context: The command context.
+            copy_instance: The `Instance` to copy from.
+            init_method: The initialization method.
+
+        Returns:
+            The instance to copy from, the predicted instance (if it is from a predicted
+            instance, else None), and whether it's from a previous frame.
+        """
+
         from_predicted = copy_instance
         from_prev_frame = False
 
@@ -2904,7 +3172,7 @@ def do_action(cls, context: CommandContext, params: dict):
         ) or init_method == "prior_frame":
             # Otherwise, if there are instances in previous frames,
             # copy the points from one of those instances.
-            prev_idx = cls.get_previous_frame_index(context)
+            prev_idx = AddInstance.get_previous_frame_index(context)
 
             if prev_idx is not None:
                 prev_instances = context.labels.find(
@@ -2929,71 +3197,26 @@ def do_action(cls, context: CommandContext, params: dict):
                     from_prev_frame = True
 
         from_predicted = from_predicted if hasattr(from_predicted, "score") else None
+        from_predicted = cast(Optional[PredictedInstance], from_predicted)
 
-        # Now create the new instance
-        new_instance = Instance(
-            skeleton=context.state["skeleton"],
-            from_predicted=from_predicted,
-            frame=context.state["labeled_frame"],
-        )
+        return copy_instance, from_predicted, from_prev_frame
 
-        has_missing_nodes = False
-
-        # go through each node in skeleton
-        for node in context.state["skeleton"].node_names:
-            # if we're copying from a skeleton that has this node
-            if (
-                copy_instance is not None
-                and node in copy_instance
-                and not copy_instance[node].isnan()
-            ):
-                # just copy x, y, and visible
-                # we don't want to copy a PredictedPoint or score attribute
-                new_instance[node] = Point(
-                    x=copy_instance[node].x,
-                    y=copy_instance[node].y,
-                    visible=copy_instance[node].visible,
-                    complete=mark_complete,
-                )
-            else:
-                has_missing_nodes = True
-
-        if has_missing_nodes:
-            # mark the node as not "visible" if we're copying from a predicted instance without this node
-            is_visible = copy_instance is None or (not hasattr(copy_instance, "score"))
-
-            if init_method == "force_directed":
-                AddMissingInstanceNodes.add_force_directed_nodes(
-                    context=context,
-                    instance=new_instance,
-                    visible=is_visible,
-                    center_point=location,
-                )
-            elif init_method == "random":
-                AddMissingInstanceNodes.add_random_nodes(
-                    context=context, instance=new_instance, visible=is_visible
-                )
-            elif init_method == "template":
-                AddMissingInstanceNodes.add_nodes_from_template(
-                    context=context,
-                    instance=new_instance,
-                    visible=is_visible,
-                    center_point=location,
-                )
-            else:
-                AddMissingInstanceNodes.add_best_nodes(
-                    context=context, instance=new_instance, visible=is_visible
-                )
+    @staticmethod
+    def get_previous_frame_index(context: CommandContext) -> Optional[int]:
+        """Returns index of previous frame."""
 
-        # If we're copying a predicted instance or from another frame, copy the track
-        if hasattr(copy_instance, "score") or from_prev_frame:
-            new_instance.track = copy_instance.track
+        frames = context.labels.frames(
+            context.state["video"],
+            from_frame_idx=context.state["frame_idx"],
+            reverse=True,
+        )
 
-        # Add the instance
-        context.labels.add_instance(context.state["labeled_frame"], new_instance)
+        try:
+            next_idx = next(frames).frame_idx
+        except:
+            return
 
-        if context.state["labeled_frame"] not in context.labels.labels:
-            context.labels.append(context.state["labeled_frame"])
+        return next_idx
 
 
 class SetInstancePointLocations(EditCommand):
diff --git a/sleap/gui/dataviews.py b/sleap/gui/dataviews.py
index 0a008bea7..721bdc321 100644
--- a/sleap/gui/dataviews.py
+++ b/sleap/gui/dataviews.py
@@ -15,20 +15,17 @@
 
 """
 
-from qtpy import QtCore, QtWidgets, QtGui
-
-import numpy as np
 import os
-
 from operator import itemgetter
+from pathlib import Path
+from typing import Any, Callable, List, Optional
 
-from typing import Any, Callable, Dict, List, Optional, Type
+import numpy as np
+from qtpy import QtCore, QtGui, QtWidgets
 
-from sleap.gui.state import GuiState
 from sleap.gui.commands import CommandContext
-from sleap.gui.color import ColorManager
-from sleap.io.dataset import Labels
-from sleap.instance import LabeledFrame, Instance
+from sleap.gui.state import GuiState
+from sleap.instance import LabeledFrame
 from sleap.skeleton import Skeleton
 
 
@@ -386,10 +383,25 @@ def getSelectedRowItem(self) -> Any:
 
 
 class VideosTableModel(GenericTableModel):
-    properties = ("filename", "frames", "height", "width", "channels")
-
-    def item_to_data(self, obj, item):
-        return {key: getattr(item, key) for key in self.properties}
+    properties = (
+        "name",
+        "filepath",
+        "frames",
+        "height",
+        "width",
+        "channels",
+    )
+
+    def item_to_data(self, obj, item: "Video"):
+        data = {}
+        for property in self.properties:
+            if property == "name":
+                data[property] = Path(item.filename).name
+            elif property == "filepath":
+                data[property] = str(Path(item.filename).parent)
+            else:
+                data[property] = getattr(item, property)
+        return data
 
 
 class SkeletonNodesTableModel(GenericTableModel):
@@ -413,13 +425,6 @@ def set_item(self, item, key, value):
         elif key == "symmetry":
             self.context.setNodeSymmetry(skeleton=self.obj, node=item, symmetry=value)
 
-    def get_item_color(self, item: Any, key: str):
-        if self.skeleton:
-            color = self.context.app.color_manager.get_item_color(
-                item, parent_skeleton=self.skeleton
-            )
-            return QtGui.QColor(*color)
-
 
 class SkeletonEdgesTableModel(GenericTableModel):
     """Table model for skeleton edges."""
@@ -436,14 +441,6 @@ def object_to_items(self, skeleton: Skeleton):
             ]
         return items
 
-    def get_item_color(self, item: Any, key: str):
-        if self.skeleton:
-            edge_pair = (item["source"], item["destination"])
-            color = self.context.app.color_manager.get_item_color(
-                edge_pair, parent_skeleton=self.skeleton
-            )
-            return QtGui.QColor(*color)
-
 
 class LabeledFrameTableModel(GenericTableModel):
     """Table model for listing instances in labeled frame.
diff --git a/sleap/gui/dialogs/export_clip.py b/sleap/gui/dialogs/export_clip.py
index 312f9a807..f84766d18 100644
--- a/sleap/gui/dialogs/export_clip.py
+++ b/sleap/gui/dialogs/export_clip.py
@@ -11,16 +11,16 @@ def __init__(self):
 
         super().__init__(form_name="labeled_clip_form")
 
-        can_use_skvideo = VideoWriter.can_use_skvideo()
+        can_use_ffmpeg = VideoWriter.can_use_ffmpeg()
 
-        if can_use_skvideo:
+        if can_use_ffmpeg:
             message = (
                 "<i><b>MP4</b> file will be encoded using "
-                "system ffmpeg via scikit-video (preferred option).</i>"
+                "system ffmpeg via imageio (preferred option).</i>"
             )
         else:
             message = (
-                "<i>Unable to use ffpmeg via scikit-video. "
+                "<i>Unable to use ffpmeg via imageio. "
                 "<b>AVI</b> file will be encoding using OpenCV.</i>"
             )
 
diff --git a/sleap/gui/dialogs/filedialog.py b/sleap/gui/dialogs/filedialog.py
index 930c71b0d..ff394d191 100644
--- a/sleap/gui/dialogs/filedialog.py
+++ b/sleap/gui/dialogs/filedialog.py
@@ -29,7 +29,8 @@ def set_dialog_type(cls, *args, **kwargs):
 
         if cls.is_non_native:
             kwargs["options"] = kwargs.get("options", 0)
-            kwargs["options"] |= QtWidgets.QFileDialog.DontUseNativeDialog
+            if not kwargs["options"]:
+                kwargs["options"] = QtWidgets.QFileDialog.DontUseNativeDialog
 
         # Make sure we don't send empty options argument
         if "options" in kwargs and not kwargs["options"]:
diff --git a/sleap/gui/dialogs/frame_range.py b/sleap/gui/dialogs/frame_range.py
new file mode 100644
index 000000000..7165dd939
--- /dev/null
+++ b/sleap/gui/dialogs/frame_range.py
@@ -0,0 +1,42 @@
+"""Frame range dialog."""
+from qtpy import QtWidgets
+from sleap.gui.dialogs.formbuilder import FormBuilderModalDialog
+from typing import Optional
+
+
+class FrameRangeDialog(FormBuilderModalDialog):
+    def __init__(self, max_frame_idx: Optional[int] = None, title: str = "Frame Range"):
+
+        super().__init__(form_name="frame_range_form")
+        min_frame_idx_field = self.form_widget.fields["min_frame_idx"]
+        max_frame_idx_field = self.form_widget.fields["max_frame_idx"]
+
+        if max_frame_idx is not None:
+            min_frame_idx_field.setRange(1, max_frame_idx)
+            min_frame_idx_field.setValue(1)
+
+            max_frame_idx_field.setRange(1, max_frame_idx)
+            max_frame_idx_field.setValue(max_frame_idx)
+
+        min_frame_idx_field.valueChanged.connect(self._update_max_frame_range)
+        max_frame_idx_field.valueChanged.connect(self._update_min_frame_range)
+
+        self.setWindowTitle(title)
+
+    def _update_max_frame_range(self, value):
+        min_frame_idx_field = self.form_widget.fields["min_frame_idx"]
+        max_frame_idx_field = self.form_widget.fields["max_frame_idx"]
+
+        max_frame_idx_field.setRange(value, max_frame_idx_field.maximum())
+
+    def _update_min_frame_range(self, value):
+        min_frame_idx_field = self.form_widget.fields["min_frame_idx"]
+        max_frame_idx_field = self.form_widget.fields["max_frame_idx"]
+
+        min_frame_idx_field.setRange(min_frame_idx_field.minimum(), value)
+
+
+if __name__ == "__main__":
+    app = QtWidgets.QApplication([])
+    dialog = FrameRangeDialog(max_frame_idx=100)
+    print(dialog.get_results())
diff --git a/sleap/gui/dialogs/metrics.py b/sleap/gui/dialogs/metrics.py
index 864a6adf0..884b373a9 100644
--- a/sleap/gui/dialogs/metrics.py
+++ b/sleap/gui/dialogs/metrics.py
@@ -120,10 +120,11 @@ def _show_model_params(
         if cfg_info is None:
             cfg_info = self.table_view.getSelectedRowItem()
 
+        cfg_getter = self._cfg_getter
         key = cfg_info.path
         if key not in model_detail_widgets:
             model_detail_widgets[key] = TrainingEditorWidget.from_trained_config(
-                cfg_info
+                cfg_info, cfg_getter
             )
 
         model_detail_widgets[key].show()
diff --git a/sleap/gui/learning/dialog.py b/sleap/gui/learning/dialog.py
index d9f872fda..bc26d826c 100644
--- a/sleap/gui/learning/dialog.py
+++ b/sleap/gui/learning/dialog.py
@@ -1,24 +1,20 @@
 """
 Dialogs for running training and/or inference in GUI.
 """
-import cattr
-import os
+import json
 import shutil
-import atexit
 import tempfile
 from pathlib import Path
+from typing import Dict, List, Optional, Text, cast
+
+import cattr
+from qtpy import QtCore, QtGui, QtWidgets
 
 import sleap
 from sleap import Labels, Video
 from sleap.gui.dialogs.filedialog import FileDialog
 from sleap.gui.dialogs.formbuilder import YamlFormWidget
-from sleap.gui.learning import runners, scopedkeydict, configs, datagen, receptivefield
-
-from typing import Dict, List, Optional, Text, Optional, cast
-
-from qtpy import QtWidgets, QtCore
-
-import json
+from sleap.gui.learning import configs, datagen, receptivefield, runners, scopedkeydict
 
 # List of fields which should show list of skeleton nodes
 NODE_LIST_FIELDS = [
@@ -128,12 +124,25 @@ def __init__(
         self.message_widget = QtWidgets.QLabel("")
 
         # Layout for entire dialog
-        layout = QtWidgets.QVBoxLayout()
-        layout.addWidget(self.tab_widget)
-        layout.addWidget(self.message_widget)
-        layout.addWidget(buttons_layout_widget)
+        content_widget = QtWidgets.QWidget()
+        content_layout = QtWidgets.QVBoxLayout(content_widget)
 
-        self.setLayout(layout)
+        content_layout.addWidget(self.tab_widget)
+        content_layout.addWidget(self.message_widget)
+        content_layout.addWidget(buttons_layout_widget)
+
+        # Create the QScrollArea.
+        scroll_area = QtWidgets.QScrollArea()
+        scroll_area.setWidgetResizable(True)
+        scroll_area.setWidget(content_widget)
+
+        scroll_area.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
+        scroll_area.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
+
+        layout = QtWidgets.QVBoxLayout(self)
+        layout.addWidget(scroll_area)
+
+        self.adjust_initial_size()
 
         # Default to most recently trained pipeline (if there is one)
         self.set_default_pipeline_tab()
@@ -157,6 +166,20 @@ def __init__(
                 self.view_datagen
             )
 
+    def adjust_initial_size(self):
+        # Get screen size
+        screen = QtGui.QGuiApplication.primaryScreen().availableGeometry()
+
+        max_width = 1860
+        max_height = 1150
+        margin = 0.10
+
+        # Calculate target width and height
+        target_width = min(screen.width() - screen.width() * margin, max_width)
+        target_height = min(screen.height() - screen.height() * margin, max_height)
+        # Set the dialog's dimensions
+        self.resize(target_width, target_height)
+
     def update_file_lists(self):
         self._cfg_getter.update()
         for tab in self.tabs.values():
@@ -579,6 +602,7 @@ def get_selected_frames_to_predict(
 
     def get_items_for_inference(self, pipeline_form_data) -> runners.ItemsForInference:
         predict_frames_choice = pipeline_form_data.get("_predict_frames", "")
+        batch_size = pipeline_form_data.get("batch_size")
 
         frame_selection = self.get_selected_frames_to_predict(pipeline_form_data)
         frame_count = self.count_total_frames_for_selection_option(frame_selection)
@@ -591,6 +615,7 @@ def get_items_for_inference(self, pipeline_form_data) -> runners.ItemsForInferen
                     )
                 ],
                 total_frame_count=frame_count,
+                batch_size=batch_size,
             )
         elif predict_frames_choice.startswith("suggested"):
             items_for_inference = runners.ItemsForInference(
@@ -600,6 +625,7 @@ def get_items_for_inference(self, pipeline_form_data) -> runners.ItemsForInferen
                     )
                 ],
                 total_frame_count=frame_count,
+                batch_size=batch_size,
             )
         else:
             items_for_inference = runners.ItemsForInference.from_video_frames_dict(
@@ -607,9 +633,24 @@ def get_items_for_inference(self, pipeline_form_data) -> runners.ItemsForInferen
                 total_frame_count=frame_count,
                 labels_path=self.labels_filename,
                 labels=self.labels,
+                batch_size=batch_size,
             )
         return items_for_inference
 
+    def _validate_id_model(self) -> bool:
+        """Make sure we have instances with tracks set for ID models."""
+        if not self.labels.tracks:
+            message = "Cannot run ID model training without tracks."
+            return False
+
+        found_tracks = False
+        for inst in self.labels.instances():
+            if type(inst) == sleap.Instance and inst.track is not None:
+                found_tracks = True
+                break
+
+        return found_tracks
+
     def _validate_pipeline(self):
         can_run = True
         message = ""
@@ -628,6 +669,15 @@ def _validate_pipeline(self):
                     f"({', '.join(untrained)})."
                 )
 
+        # Make sure we have instances with tracks set for ID models.
+        if self.mode == "training" and self.current_pipeline in (
+            "top-down-id",
+            "bottom-up-id",
+        ):
+            can_run = self.validate_id_model()
+            if not can_run:
+                message = "Cannot run ID model training without tracks."
+
         # Make sure skeleton will be valid for bottom-up inference.
         if self.mode == "training" and self.current_pipeline == "bottom-up":
             skeleton = self.labels.skeletons[0]
@@ -1088,8 +1138,12 @@ def __init__(
         self.setLayout(layout)
 
     @classmethod
-    def from_trained_config(cls, cfg_info: configs.ConfigFileInfo):
-        widget = cls(require_trained=True, head=cfg_info.head_name)
+    def from_trained_config(
+        cls, cfg_info: configs.ConfigFileInfo, cfg_getter: configs.TrainingConfigsGetter
+    ):
+        widget = cls(
+            require_trained=True, head=cfg_info.head_name, cfg_getter=cfg_getter
+        )
         widget.acceptSelectedConfigInfo(cfg_info)
         widget.setWindowTitle(cfg_info.path_dir)
         return widget
diff --git a/sleap/gui/learning/runners.py b/sleap/gui/learning/runners.py
index ca60c4127..d0bb1f3ba 100644
--- a/sleap/gui/learning/runners.py
+++ b/sleap/gui/learning/runners.py
@@ -1,4 +1,5 @@
 """Run training/inference in background process via CLI."""
+
 import abc
 import attr
 import os
@@ -151,6 +152,7 @@ class ItemsForInference:
 
     items: List[ItemForInference]
     total_frame_count: int
+    batch_size: int
 
     def __len__(self):
         return len(self.items)
@@ -160,6 +162,7 @@ def from_video_frames_dict(
         cls,
         video_frames_dict: Dict[Video, List[int]],
         total_frame_count: int,
+        batch_size: int,
         labels: Labels,
         labels_path: Optional[str] = None,
     ):
@@ -174,7 +177,9 @@ def from_video_frames_dict(
                         video_idx=labels.videos.index(video),
                     )
                 )
-        return cls(items=items, total_frame_count=total_frame_count)
+        return cls(
+            items=items, total_frame_count=total_frame_count, batch_size=batch_size
+        )
 
 
 @attr.s(auto_attribs=True)
@@ -255,12 +260,20 @@ def make_predict_cli_call(
             "tracking.max_tracking",
             "tracking.post_connect_single_breaks",
             "tracking.save_shifted_instances",
+            "tracking.oks_score_weighting",
         )
 
         for key in bool_items_as_ints:
             if key in self.inference_params:
                 self.inference_params[key] = int(self.inference_params[key])
 
+        remove_spaces_items = ("tracking.similarity",)
+
+        for key in remove_spaces_items:
+            if key in self.inference_params:
+                value = self.inference_params[key]
+                self.inference_params[key] = value.replace(" ", "_")
+
         for key, val in self.inference_params.items():
             if not key.startswith(("_", "outputs.", "model.", "data.")):
                 cli_args.extend((f"--{key}", str(val)))
@@ -496,9 +509,11 @@ def write_pipeline_files(
                 "data_path": os.path.basename(data_path),
                 "models": [Path(p).as_posix() for p in new_cfg_filenames],
                 "output_path": prediction_output_path,
-                "type": "labels"
-                if type(item_for_inference) == DatasetItemForInference
-                else "video",
+                "type": (
+                    "labels"
+                    if type(item_for_inference) == DatasetItemForInference
+                    else "video"
+                ),
                 "only_suggested_frames": only_suggested_frames,
                 "tracking": tracking_args,
             }
@@ -540,6 +555,7 @@ def run_learning_pipeline(
     """
 
     save_viz = inference_params.get("_save_viz", False)
+    keep_viz = inference_params.get("_keep_viz", False)
 
     if "movenet" in inference_params["_pipeline"]:
         trained_job_paths = [inference_params["_pipeline"]]
@@ -550,8 +566,10 @@ def run_learning_pipeline(
             labels_filename=labels_filename,
             labels=labels,
             config_info_list=config_info_list,
+            inference_params=inference_params,
             gui=True,
             save_viz=save_viz,
+            keep_viz=keep_viz,
         )
 
         # Check that all the models were trained
@@ -577,8 +595,10 @@ def run_gui_training(
     labels_filename: str,
     labels: Labels,
     config_info_list: List[ConfigFileInfo],
+    inference_params: Dict[str, Any],
     gui: bool = True,
     save_viz: bool = False,
+    keep_viz: bool = False,
 ) -> Dict[Text, Text]:
     """
     Runs training for each training job.
@@ -588,19 +608,28 @@ def run_gui_training(
         config_info_list: List of ConfigFileInfo with configs for training.
         gui: Whether to show gui windows and process gui events.
         save_viz: Whether to save visualizations from training.
+        keep_viz: Whether to keep prediction visualization images after training.
 
     Returns:
         Dictionary, keys are head name, values are path to trained config.
     """
 
     trained_job_paths = dict()
-
+    zmq_ports = None
     if gui:
         from sleap.gui.widgets.monitor import LossViewer
         from sleap.gui.widgets.imagedir import QtImageDirectoryWidget
 
-        # open training monitor window
-        win = LossViewer()
+        zmq_ports = dict()
+        zmq_ports["controller_port"] = inference_params.get("controller_port", 9000)
+        zmq_ports["publish_port"] = inference_params.get("publish_port", 9001)
+
+        # Open training monitor window
+        win = LossViewer(zmq_ports=zmq_ports)
+
+        # Reassign the values in the inference parameters in case the ports were changed
+        inference_params["controller_port"] = win.zmq_ports["controller_port"]
+        inference_params["publish_port"] = win.zmq_ports["publish_port"]
         win.resize(600, 400)
         win.show()
 
@@ -664,10 +693,12 @@ def waiting():
             # Run training
             trained_job_path, ret = train_subprocess(
                 job_config=job,
+                inference_params=inference_params,
                 labels_filename=labels_filename,
                 video_paths=video_path_list,
                 waiting_callback=waiting,
                 save_viz=save_viz,
+                keep_viz=keep_viz,
             )
 
             if ret == "success":
@@ -806,9 +837,11 @@ def waiting_item(**kwargs):
 def train_subprocess(
     job_config: TrainingJobConfig,
     labels_filename: str,
+    inference_params: Dict[str, Any],
     video_paths: Optional[List[Text]] = None,
     waiting_callback: Optional[Callable] = None,
     save_viz: bool = False,
+    keep_viz: bool = False,
 ):
     """Runs training inside subprocess."""
     run_path = job_config.outputs.run_path
@@ -829,10 +862,16 @@ def train_subprocess(
             training_job_path,
             labels_filename,
             "--zmq",
+            "--controller_port",
+            str(inference_params["controller_port"]),
+            "--publish_port",
+            str(inference_params["publish_port"]),
         ]
 
         if save_viz:
             cli_args.append("--save_viz")
+        if keep_viz:
+            cli_args.append("--keep_viz")
 
         # Use cli arg since cli ignores setting in config
         if job_config.outputs.tensorboard.write_logs:
diff --git a/sleap/gui/overlays/base.py b/sleap/gui/overlays/base.py
index d27b069ac..879d12810 100644
--- a/sleap/gui/overlays/base.py
+++ b/sleap/gui/overlays/base.py
@@ -71,7 +71,6 @@ def remove_from_scene(self):
 
             except RuntimeError as e:  # Internal C++ object (PySide2.QtWidgets.QGraphicsPathItem) already deleted.
                 logger.debug(e)
-                pass
 
         # Stop tracking the items after they been removed from the scene
         self.items = []
diff --git a/sleap/gui/overlays/tracks.py b/sleap/gui/overlays/tracks.py
index 361585719..c5f091658 100644
--- a/sleap/gui/overlays/tracks.py
+++ b/sleap/gui/overlays/tracks.py
@@ -1,17 +1,16 @@
 """Track trail and track list overlays."""
 
+from typing import Dict, Iterable, List, Optional, Tuple
+
+import attr
+from qtpy import QtCore, QtGui
+
 from sleap.gui.overlays.base import BaseOverlay
+from sleap.gui.widgets.video import QtTextWithBackground
 from sleap.instance import Track
 from sleap.io.dataset import Labels
 from sleap.io.video import Video
 from sleap.prefs import prefs
-from sleap.gui.widgets.video import QtTextWithBackground
-
-import attr
-
-from typing import Iterable, List, Optional, Dict
-
-from qtpy import QtCore, QtGui
 
 
 @attr.s(auto_attribs=True)
@@ -48,7 +47,9 @@ def __attrs_post_init__(self):
 
     @classmethod
     def get_length_options(cls):
-        return (0, 10, 50, 100, 250)
+        if prefs["trail length"] != 0:
+            return (0, 10, 50, 100, 250, 500, prefs["trail length"])
+        return (0, 10, 50, 100, 250, 500)
 
     @classmethod
     def get_shade_options(cls):
@@ -56,7 +57,9 @@ def get_shade_options(cls):
 
         return {"Dark": 0.6, "Normal": 1.0, "Light": 1.25}
 
-    def get_track_trails(self, frame_selection: Iterable["LabeledFrame"]):
+    def get_track_trails(
+        self, frame_selection: Iterable["LabeledFrame"]
+    ) -> Optional[Dict[Track, List[List[Tuple[float, float]]]]]:
         """Get data needed to draw track trail.
 
         Args:
@@ -152,6 +155,8 @@ def add_to_scene(self, video: Video, frame_idx: int):
         frame_selection = self.get_frame_selection(video, frame_idx)
 
         all_track_trails = self.get_track_trails(frame_selection)
+        if all_track_trails is None:
+            return
 
         for track, trails in all_track_trails.items():
             trail_color = tuple(
diff --git a/sleap/gui/suggestions.py b/sleap/gui/suggestions.py
index 48b916437..b85d6ac32 100644
--- a/sleap/gui/suggestions.py
+++ b/sleap/gui/suggestions.py
@@ -61,6 +61,7 @@ def suggest(cls, params: dict, labels: "Labels" = None) -> List[SuggestionFrame]
             prediction_score=cls.prediction_score,
             velocity=cls.velocity,
             frame_chunk=cls.frame_chunk,
+            max_point_displacement=cls.max_point_displacement,
         )
 
         method = str.replace(params["method"], " ", "_")
@@ -213,6 +214,7 @@ def _prediction_score_video(
     ):
         lfs = labels.find(video)
         frames = len(lfs)
+
         # initiate an array filled with -1 to store frame index (starting from 0).
         idxs = np.full((frames), -1, dtype="int")
 
@@ -291,6 +293,56 @@ def _velocity_video(
 
         return cls.idx_list_to_frame_list(frame_idxs, video)
 
+    @classmethod
+    def max_point_displacement(
+        cls,
+        labels: "Labels",
+        videos: List[Video],
+        displacement_threshold: float,
+        **kwargs,
+    ):
+        """Finds frames with maximum point displacement above a threshold."""
+
+        proposed_suggestions = []
+        for video in videos:
+            proposed_suggestions.extend(
+                cls._max_point_displacement_video(video, labels, displacement_threshold)
+            )
+
+        suggestions = VideoFrameSuggestions.filter_unique_suggestions(
+            labels, videos, proposed_suggestions
+        )
+
+        return suggestions
+
+    @classmethod
+    def _max_point_displacement_video(
+        cls, video: Video, labels: "Labels", displacement_threshold: float
+    ):
+        # Get numpy of shape (frames, tracks, nodes, x, y)
+        labels_numpy = labels.numpy(video=video, all_frames=True, untracked=False)
+
+        # Return empty list if not enough frames
+        n_frames, n_tracks, n_nodes, _ = labels_numpy.shape
+
+        if n_frames < 2:
+            return []
+
+        # Calculate displacements
+        diff = labels_numpy[1:] - labels_numpy[:-1]  # (frames - 1, tracks, nodes, x, y)
+        euc_norm = np.linalg.norm(diff, axis=-1)  # (frames - 1, tracks, nodes)
+        mean_euc_norm = np.nanmean(euc_norm, axis=-1)  # (frames - 1, tracks)
+
+        # Find frames where mean displacement is above threshold
+        threshold_mask = np.any(
+            mean_euc_norm > displacement_threshold, axis=-1
+        )  # (frames - 1,)
+        frame_idxs = list(
+            np.argwhere(threshold_mask).flatten() + 1
+        )  # [0, len(frames - 1)]
+
+        return cls.idx_list_to_frame_list(frame_idxs, video)
+
     @classmethod
     def frame_chunk(
         cls,
diff --git a/sleap/gui/utils.py b/sleap/gui/utils.py
new file mode 100644
index 000000000..4f8215706
--- /dev/null
+++ b/sleap/gui/utils.py
@@ -0,0 +1,28 @@
+"""Generic module containing utilities used for the GUI."""
+
+import zmq
+from typing import Optional
+
+
+def is_port_free(port: int, zmq_context: Optional[zmq.Context] = None) -> bool:
+    """Checks if a port is free."""
+    ctx = zmq.Context.instance() if zmq_context is None else zmq_context
+    socket = ctx.socket(zmq.REP)
+    address = f"tcp://127.0.0.1:{port}"
+    try:
+        socket.bind(address)
+        socket.unbind(address)
+        return True
+    except zmq.error.ZMQError:
+        return False
+    finally:
+        socket.close()
+
+
+def select_zmq_port(zmq_context: Optional[zmq.Context] = None) -> int:
+    """Select a port that is free to connect within the given context."""
+    ctx = zmq.Context.instance() if zmq_context is None else zmq_context
+    socket = ctx.socket(zmq.REP)
+    port = socket.bind_to_random_port("tcp://127.0.0.1")
+    socket.close()
+    return port
diff --git a/sleap/gui/widgets/docks.py b/sleap/gui/widgets/docks.py
index 43e218adb..bd20bf79a 100644
--- a/sleap/gui/widgets/docks.py
+++ b/sleap/gui/widgets/docks.py
@@ -30,10 +30,8 @@
 )
 from sleap.gui.dialogs.formbuilder import YamlFormWidget
 from sleap.gui.widgets.views import CollapsibleWidget
-from sleap.skeleton import Skeleton
-from sleap.util import decode_preview_image, find_files_by_suffix, get_package_file
-
-# from sleap.gui.app import MainWindow
+from sleap.skeleton import Skeleton, SkeletonDecoder
+from sleap.util import find_files_by_suffix, get_package_file
 
 
 class DockWidget(QDockWidget):
@@ -365,7 +363,7 @@ def create_templates_groupbox(self) -> QGroupBox:
         def updatePreviewImage(preview_image_bytes: bytes):
 
             # Decode the preview image
-            preview_image = decode_preview_image(preview_image_bytes)
+            preview_image = SkeletonDecoder.decode_preview_image(preview_image_bytes)
 
             # Create a QImage from the Image
             preview_image = QtGui.QImage(
@@ -557,7 +555,7 @@ def create_table_edit_buttons(self) -> QWidget:
 
         hb = QHBoxLayout()
         self.add_button(
-            hb, "New Instance", lambda x: main_window.commands.newInstance()
+            hb, "New Instance", lambda x: main_window.commands.newInstance(offset=10)
         )
         self.add_button(
             hb, "Delete Instance", main_window.commands.deleteSelectedInstance
diff --git a/sleap/gui/widgets/monitor.py b/sleap/gui/widgets/monitor.py
index 93bc483e9..fff8a0327 100644
--- a/sleap/gui/widgets/monitor.py
+++ b/sleap/gui/widgets/monitor.py
@@ -1,20 +1,590 @@
 """GUI for monitoring training progress interactively."""
 
-import numpy as np
-from time import perf_counter
-from sleap.nn.config.training_job import TrainingJobConfig
-import zmq
-import jsonpickle
 import logging
-from typing import Optional
-from qtpy import QtCore, QtWidgets, QtGui
-from qtpy.QtCharts import QtCharts
+from time import perf_counter
+from typing import Dict, Optional, Tuple
+
 import attr
+import jsonpickle
+import numpy as np
+import zmq
+from matplotlib.collections import PathCollection
+import matplotlib.transforms as mtransforms
+from qtpy import QtCore, QtWidgets
 
+from sleap.gui.utils import is_port_free, select_zmq_port
+from sleap.gui.widgets.mpl import MplCanvas
+from sleap.nn.config.training_job import TrainingJobConfig
 
 logger = logging.getLogger(__name__)
 
 
+class LossPlot(MplCanvas):
+    """Matplotlib canvas for diplaying training and validation loss curves."""
+
+    def __init__(
+        self,
+        width: int = 5,
+        height: int = 4,
+        dpi: int = 100,
+        log_scale: bool = True,
+        ignore_outliers: bool = False,
+    ):
+        super().__init__(width=width, height=height, dpi=dpi)
+
+        self._log_scale: bool = log_scale
+
+        self.ignore_outliers = ignore_outliers
+
+        # Initialize the series for the plot
+        self.series: dict = {}
+        COLOR_TRAIN = (18, 158, 220)
+        COLOR_VAL = (248, 167, 52)
+        COLOR_BEST_VAL = (151, 204, 89)
+
+        # Initialize scatter series for batch training loss
+        self.series["batch"] = self._init_series(
+            series_type=self.axes.scatter,
+            name="Batch Training Loss",
+            color=COLOR_TRAIN + (48,),
+            border_color=(255, 255, 255, 25),
+        )
+
+        # Initialize line series for epoch training loss
+        self.series["epoch_loss"] = self._init_series(
+            series_type=self.axes.plot,
+            name="Epoch Training Loss",
+            color=COLOR_TRAIN + (255,),
+            line_width=3.0,
+        )
+
+        # Initialize line series for epoch validation loss
+        self.series["val_loss"] = self._init_series(
+            series_type=self.axes.plot,
+            name="Epoch Validation Loss",
+            color=COLOR_VAL + (255,),
+            line_width=3.0,
+            zorder=4,  # Below best validation loss series
+        )
+
+        # Initialize scatter series for best epoch validation loss
+        self.series["val_loss_best"] = self._init_series(
+            series_type=self.axes.scatter,
+            name="Best Validation Loss",
+            color=COLOR_BEST_VAL + (255,),
+            border_color=(255, 255, 255, 25),
+            zorder=5,  # Above epoch validation loss series
+        )
+
+        # Set the x and y positions for the xy labels (as fraction of figure size)
+        self.ypos_xlabel = 0.1
+        self.xpos_ylabel = 0.05
+
+        # Padding between the axes and the xy labels
+        self.xpos_padding = 0.2
+        self.ypos_padding = 0.1
+
+        # Set up the major gridlines
+        self._setup_major_gridlines()
+
+        # Set up the x-axis
+        self._setup_x_axis()
+
+        # Set up the y-axis
+        self._set_up_y_axis()
+
+        # Set up the legend
+        self.legend_width, legend_height = self._setup_legend()
+
+        # Set up the title space
+        self.ypos_title = None
+        title_height = self._set_title_space()
+        self.ypos_title = 1 - title_height - self.ypos_padding
+
+        # Determine the top height of the plot
+        top_height = max(title_height, legend_height)
+
+        # Adjust the figure layout
+        self.xpos_left_plot = self.xpos_ylabel + self.xpos_padding
+        self.xpos_right_plot = 0.97
+        self.ypos_bottom_plot = self.ypos_xlabel + self.ypos_padding
+        self.ypos_top_plot = 1 - top_height - self.ypos_padding
+
+        # Adjust the top parameters as needed
+        self.fig.subplots_adjust(
+            left=self.xpos_left_plot,
+            right=self.xpos_right_plot,
+            top=self.ypos_top_plot,
+            bottom=self.ypos_bottom_plot,
+        )
+
+    @property
+    def log_scale(self):
+        """Returns True if the plot has a log scale for y-axis."""
+
+        return self._log_scale
+
+    @log_scale.setter
+    def log_scale(self, val):
+        """Sets the scale of the y axis to log if True else linear."""
+
+        if isinstance(val, bool):
+            self._log_scale = val
+
+        y_scale = "log" if self._log_scale else "linear"
+        self.axes.set_yscale(y_scale)
+        self.redraw_plot()
+
+    def set_data_on_scatter(self, xs, ys, which):
+        """Set data on a scatter plot.
+
+        Not to be used with line plots.
+
+        Args:
+            xs: The x-coordinates of the data points.
+            ys: The y-coordinates of the data points.
+            which: The type of data point. Possible values are:
+                * "batch"
+                * "val_loss_best"
+        """
+
+        offsets = np.column_stack((xs, ys))
+        self.series[which].set_offsets(offsets)
+
+    def add_data_to_plot(self, x, y, which):
+        """Add data to a line plot.
+
+        Not to be used with scatter plots.
+
+        Args:
+            x: The x-coordinate of the data point.
+            y: The y-coordinate of the data point.
+            which: The type of data point. Possible values are:
+                * "epoch_loss"
+                * "val_loss"
+        """
+
+        x_data, y_data = self.series[which].get_data()
+        self.series[which].set_data(np.append(x_data, x), np.append(y_data, y))
+
+    def resize_axes(self, x, y):
+        """Resize axes to fit data.
+
+        This is only called when plotting batches.
+
+        Args:
+            x: The x-coordinates of the data points.
+            y: The y-coordinates of the data points.
+        """
+
+        # Set X scale to show all points
+        x_min, x_max = self._calculate_xlim(x)
+        self.axes.set_xlim(x_min, x_max)
+
+        # Set Y scale, ensuring that y_min and y_max do not lead to sngular transform
+        y_min, y_max = self._calculate_ylim(y)
+        y_min, y_max = self.axes.yaxis.get_major_locator().nonsingular(y_min, y_max)
+        self.axes.set_ylim(y_min, y_max)
+
+        # Add gridlines at midpoint between major ticks (major gridlines are automatic)
+        self._add_midpoint_gridlines()
+
+        # Redraw the plot
+        self.redraw_plot()
+
+    def redraw_plot(self):
+        """Redraw the plot."""
+
+        self.fig.canvas.draw_idle()
+
+    def set_title(self, title, color=None):
+        """Set the title of the plot.
+
+        Args:
+            title: The title text to display.
+        """
+
+        if color is None:
+            color = "black"
+
+        self.axes.set_title(
+            title, fontweight="light", fontsize="small", color=color, x=0.55, y=1.03
+        )
+
+    def update_runtime_title(
+        self,
+        epoch: int,
+        dt_min: int,
+        dt_sec: int,
+        last_epoch_val_loss: float = None,
+        penultimate_epoch_val_loss: float = None,
+        mean_epoch_time_min: int = None,
+        mean_epoch_time_sec: int = None,
+        eta_ten_epochs_min: int = None,
+        epochs_in_plateau: int = None,
+        plateau_patience: int = None,
+        epoch_in_plateau_flag: bool = False,
+        best_val_x: int = None,
+        best_val_y: float = None,
+        epoch_size: int = None,
+    ):
+
+        # Add training epoch and runtime info
+        title = self._get_training_epoch_and_runtime_text(epoch, dt_min, dt_sec)
+
+        if last_epoch_val_loss is not None:
+
+            if penultimate_epoch_val_loss is not None:
+                # Add mean epoch time and ETA for next 10 epochs
+                eta_text = self._get_eta_text(
+                    mean_epoch_time_min, mean_epoch_time_sec, eta_ten_epochs_min
+                )
+                title = self._add_with_newline(title, eta_text)
+
+                # Add epochs in plateau if flag is set
+                if epoch_in_plateau_flag:
+                    plateau_text = self._get_epochs_in_plateau_text(
+                        epochs_in_plateau, plateau_patience
+                    )
+                    title = self._add_with_newline(title, plateau_text)
+
+            # Add last epoch validation loss
+            last_val_text = self._get_last_validation_loss_text(last_epoch_val_loss)
+            title = self._add_with_newline(title, last_val_text)
+
+            # Add best epoch validation loss if available
+            if best_val_x is not None:
+                best_epoch = (best_val_x // epoch_size) + 1
+                best_val_text = self._get_best_validation_loss_text(
+                    best_val_y, best_epoch
+                )
+                title = self._add_with_newline(title, best_val_text)
+
+        self.set_title(title)
+
+    @staticmethod
+    def _get_training_epoch_and_runtime_text(epoch: int, dt_min: int, dt_sec: int):
+        """Get the training epoch and runtime text to display in the plot.
+
+        Args:
+            epoch: The current epoch.
+            dt_min: The number of minutes since training started.
+            dt_sec: The number of seconds since training started.
+        """
+
+        runtime_text = (
+            r"Training Epoch $\mathbf{" + str(epoch + 1) + r"}$ / "
+            r"Runtime: $\mathbf{" + f"{int(dt_min):02}:{int(dt_sec):02}" + r"}$"
+        )
+
+        return runtime_text
+
+    @staticmethod
+    def _get_eta_text(mean_epoch_time_min, mean_epoch_time_sec, eta_ten_epochs_min):
+        """Get the mean time and ETA text to display in the plot.
+
+        Args:
+            mean_epoch_time_min: The mean time per epoch in minutes.
+            mean_epoch_time_sec: The mean time per epoch in seconds.
+            eta_ten_epochs_min: The estimated time for the next ten epochs in minutes.
+        """
+
+        runtime_text = (
+            r"Mean Time per Epoch: $\mathbf{"
+            + f"{int(mean_epoch_time_min):02}:{int(mean_epoch_time_sec):02}"
+            + r"}$ / "
+            r"ETA Next 10 Epochs: $\mathbf{" + f"{int(eta_ten_epochs_min)}" + r"}$ min"
+        )
+
+        return runtime_text
+
+    @staticmethod
+    def _get_epochs_in_plateau_text(epochs_in_plateau, plateau_patience):
+        """Get the epochs in plateau text to display in the plot.
+
+        Args:
+            epochs_in_plateau: The number of epochs in plateau.
+            plateau_patience: The number of epochs to wait before stopping training.
+        """
+
+        plateau_text = (
+            r"Epochs in Plateau: $\mathbf{" + f"{epochs_in_plateau}" + r"}$ / "
+            r"$\mathbf{" + f"{plateau_patience}" + r"}$"
+        )
+
+        return plateau_text
+
+    @staticmethod
+    def _get_last_validation_loss_text(last_epoch_val_loss):
+        """Get the last epoch validation loss text to display in the plot.
+
+        Args:
+            last_epoch_val_loss: The validation loss from the last epoch.
+        """
+
+        last_val_loss_text = (
+            "Last Epoch Validation Loss: "
+            r"$\mathbf{" + f"{last_epoch_val_loss:.3e}" + r"}$"
+        )
+
+        return last_val_loss_text
+
+    @staticmethod
+    def _get_best_validation_loss_text(best_val_y, best_epoch):
+        """Get the best epoch validation loss text to display in the plot.
+
+        Args:
+            best_val_x: The epoch number of the best validation loss.
+            best_val_y: The best validation loss.
+        """
+
+        best_val_loss_text = (
+            r"Best Epoch Validation Loss: $\mathbf{"
+            + f"{best_val_y:.3e}"
+            + r"}$ (epoch $\mathbf{"
+            + str(best_epoch)
+            + r"}$)"
+        )
+
+        return best_val_loss_text
+
+    @staticmethod
+    def _add_with_newline(old_text: str, new_text: str):
+        """Add a new line to the text.
+
+        Args:
+            old_text: The existing text.
+            new_text: The text to add on a new line.
+        """
+
+        return old_text + "\n" + new_text
+
+    @staticmethod
+    def _calculate_xlim(x: np.ndarray, dx: float = 0.5):
+        """Calculates x-axis limits.
+
+        Args:
+            x: Array of x data to fit the limits to.
+            dx: The padding to add to the limits.
+
+        Returns:
+            Tuple of the minimum and maximum x-axis limits.
+        """
+
+        x_min = min(x) - dx
+        x_min = x_min if x_min > 0 else 0
+        x_max = max(x) + dx
+
+        return x_min, x_max
+
+    def _calculate_ylim(self, y: np.ndarray, dy: float = 0.02):
+        """Calculates y-axis limits.
+
+        Args:
+            y: Array of y data to fit the limits to.
+            dy: The padding to add to the limits.
+
+        Returns:
+            Tuple of the minimum and maximum y-axis limits.
+        """
+
+        if self.ignore_outliers:
+            dy = np.ptp(y) * 0.02
+            # Set Y scale to exclude outliers
+            q1, q3 = np.quantile(y, (0.25, 0.75))
+            iqr = q3 - q1  # Interquartile range
+            y_min = q1 - iqr * 1.5
+            y_max = q3 + iqr * 1.5
+
+            # Keep within range of data
+            y_min = max(y_min, min(y) - dy)
+            y_max = min(y_max, max(y) + dy)
+        else:
+            # Set Y scale to show all points
+            dy = np.ptp(y) * 0.02
+            y_min = min(y) - dy
+            y_max = max(y) + dy
+
+        # For log scale, low cannot be 0
+        if self.log_scale:
+            y_min = max(y_min, 1e-8)
+
+        return y_min, y_max
+
+    def _set_title_space(self):
+        """Set up the title space.
+
+        Returns:
+            The height of the title space as a decimal fraction of the total figure height.
+        """
+
+        # Set a dummy title of the plot
+        n_lines = 5  # Number of lines in the title
+        title_str = "\n".join(
+            [r"Number: $\mathbf{" + str(n) + r"}$" for n in range(n_lines + 1)]
+        )
+        self.set_title(
+            title_str, color="white"
+        )  # Set the title color to white so it's not visible
+
+        # Draw the canvas to ensure the title is created
+        self.fig.canvas.draw()
+
+        # Get the title Text object
+        title = self.axes.title
+
+        # Get the bounding box of the title in display coordinates
+        bbox = title.get_window_extent()
+
+        # Transform the bounding box to figure coordinates
+        bbox = bbox.transformed(self.fig.transFigure.inverted())
+
+        # Calculate the height of the title as a percentage of the total figure height
+        title_height = bbox.height
+
+        return title_height
+
+    def _setup_x_axis(self):
+        """Set up the x axis.
+
+        This includes setting the label, limits, and bottom/right adjustment.
+        """
+
+        self.axes.set_xlim(0, 1)
+        self.axes.set_xlabel("Batches", fontweight="bold", fontsize="small")
+
+        # Set the x-label in the center of the axes and some amount above the bottom of the figure
+        blended_transform = mtransforms.blended_transform_factory(
+            self.axes.transAxes, self.fig.transFigure
+        )
+        self.axes.xaxis.set_label_coords(
+            0.5, self.ypos_xlabel, transform=blended_transform
+        )
+
+    def _set_up_y_axis(self):
+        """Set up the y axis.
+
+        This includes setting the label, limits, scaling, and left adjustment.
+        """
+
+        # Set the minimum value of the y-axis depending on scaling
+        if self.log_scale:
+            yscale = "log"
+            y_min = 0.001
+        else:
+            yscale = "linear"
+            y_min = 0
+        self.axes.set_ylim(bottom=y_min)
+        self.axes.set_yscale(yscale)
+
+        # Set the y-label name, size, wight, and position
+        self.axes.set_ylabel("Loss", fontweight="bold", fontsize="small")
+        self.axes.yaxis.set_label_coords(
+            self.xpos_ylabel, 0.5, transform=self.fig.transFigure
+        )
+
+    def _setup_legend(self):
+        """Set up the legend.
+
+        Returns:
+            Tuple of the width and height of the legend as a decimal fraction of the total figure width and height.
+        """
+
+        # Move the legend outside the plot on the upper left
+        legend = self.axes.legend(
+            loc="upper left",
+            fontsize="small",
+            bbox_to_anchor=(0, 1),
+            bbox_transform=self.fig.transFigure,
+        )
+
+        # Draw the canvas to ensure the legend is created
+        self.fig.canvas.draw()
+
+        # Get the bounding box of the legend in display coordinates
+        bbox = legend.get_window_extent()
+
+        # Transform the bounding box to figure coordinates
+        bbox = bbox.transformed(self.fig.transFigure.inverted())
+
+        # Calculate the width and height of the legend as a percentage of the total figure width and height
+        return bbox.width, bbox.height
+
+    def _setup_major_gridlines(self):
+
+        # Set the outline color of the plot to gray
+        for spine in self.axes.spines.values():
+            spine.set_edgecolor("#d3d3d3")  # Light gray color
+
+        # Remove the top and right axis spines
+        self.axes.spines["top"].set_visible(False)
+        self.axes.spines["right"].set_visible(False)
+
+        # Set the tick markers color to light gray, but not the tick labels
+        self.axes.tick_params(
+            axis="both", which="both", color="#d3d3d3", labelsize="small"
+        )
+
+        # Add gridlines at the tick labels
+        self.axes.grid(True, which="major", linewidth=0.5, color="#d3d3d3")
+
+    def _add_midpoint_gridlines(self):
+        # Clear existing minor vertical lines
+        for line in self.axes.get_lines():
+            if line.get_linestyle() == ":":
+                line.remove()
+
+        # Add gridlines at midpoint between major ticks
+        major_ticks = self.axes.yaxis.get_majorticklocs()
+        if len(major_ticks) > 1:
+            prev_major_tick = major_ticks[0]
+            for major_tick in major_ticks[:-1]:
+                midpoint = (major_tick + prev_major_tick) / 2
+                self.axes.axhline(
+                    midpoint, linestyle=":", linewidth=0.5, color="#d3d3d3"
+                )
+                prev_major_tick = major_tick
+
+    def _init_series(
+        self,
+        series_type,
+        color,
+        name: Optional[str] = None,
+        line_width: Optional[float] = None,
+        border_color: Optional[Tuple[int, int, int]] = None,
+        zorder: Optional[int] = None,
+    ):
+
+        # Set the color
+        color = [c / 255.0 for c in color]  # Normalize color values to [0, 1]
+
+        # Create the series
+        series = series_type(
+            [],
+            [],
+            color=color,
+            label=name,
+            marker="o",
+            zorder=zorder,
+        )
+
+        # ax.plot returns a list of PathCollections, so we need to get the first one
+        if not isinstance(series, PathCollection):
+            series = series[0]
+
+        if line_width is not None:
+            series.set_linewidth(line_width)
+
+        # Set the border color (edge color)
+        if border_color is not None:
+            border_color = [
+                c / 255.0 for c in border_color
+            ]  # Normalize color values to [0, 1]
+            series.set_edgecolor(border_color)
+
+        return series
+
+
 class LossViewer(QtWidgets.QMainWindow):
     """Qt window for showing in-progress training metrics sent over ZMQ."""
 
@@ -22,6 +592,7 @@ class LossViewer(QtWidgets.QMainWindow):
 
     def __init__(
         self,
+        zmq_ports: Dict = None,
         zmq_context: Optional[zmq.Context] = None,
         show_controller=True,
         parent=None,
@@ -33,41 +604,62 @@ def __init__(
         self.cancel_button = None
         self.canceled = False
 
+        # Set up ZMQ ports for communication.
+        zmq_ports = zmq_ports or dict()
+        zmq_ports["publish_port"] = zmq_ports.get("publish_port", 9001)
+        zmq_ports["controller_port"] = zmq_ports.get("controller_port", 9000)
+        self.zmq_ports = zmq_ports
+
         self.batches_to_show = -1  # -1 to show all
-        self.ignore_outliers = False
-        self.log_scale = True
+        self._ignore_outliers = False
+        self._log_scale = True
         self.message_poll_time_ms = 20  # ms
         self.redraw_batch_time_ms = 500  # ms
         self.last_redraw_batch = None
 
+        self.canvas = None
         self.reset()
-        self.setup_zmq(zmq_context)
+        self._setup_zmq(zmq_context)
 
     def __del__(self):
-        self.unbind()
+        self._unbind()
 
-    def close(self):
-        """Disconnect from ZMQ ports and close the window."""
-        self.unbind()
-        super().close()
+    @property
+    def is_timer_running(self) -> bool:
+        """Return True if the timer has started."""
+        return self.t0 is not None and self.is_running
 
-    def unbind(self):
-        """Disconnect from all ZMQ sockets."""
-        if self.sub is not None:
-            self.sub.unbind(self.sub.LAST_ENDPOINT)
-            self.sub.close()
-            self.sub = None
+    @property
+    def log_scale(self):
+        """Returns True if the plot has a log scale for y-axis."""
 
-        if self.zmq_ctrl is not None:
-            url = self.zmq_ctrl.LAST_ENDPOINT
-            self.zmq_ctrl.unbind(url)
-            self.zmq_ctrl.close()
-            self.zmq_ctrl = None
+        return self._log_scale
 
-        # If we started out own zmq context, terminate it.
-        if not self.ctx_given and self.ctx is not None:
-            self.ctx.term()
-            self.ctx = None
+    @log_scale.setter
+    def log_scale(self, val):
+        """Sets the scale of the y axis to log if True else linear."""
+
+        if isinstance(val, bool):
+            self._log_scale = val
+
+        # Set the log scale on the canvas
+        self.canvas.log_scale = self._log_scale
+
+    @property
+    def ignore_outliers(self):
+        """Returns True if the plot ignores outliers."""
+
+        return self._ignore_outliers
+
+    @ignore_outliers.setter
+    def ignore_outliers(self, val):
+        """Sets whether to ignore outliers in the plot."""
+
+        if isinstance(val, bool):
+            self._ignore_outliers = val
+
+        # Set the ignore_outliers on the canvas
+        self.canvas.ignore_outliers = self._ignore_outliers
 
     def reset(
         self,
@@ -80,112 +672,34 @@ def reset(
             what: String identifier indicating which job type the current run
                 corresponds to.
         """
-        self.chart = QtCharts.QChart()
-
-        self.series = dict()
+        self.canvas = LossPlot(
+            width=5,
+            height=4,
+            dpi=100,
+            log_scale=self.log_scale,
+            ignore_outliers=self.ignore_outliers,
+        )
 
-        COLOR_TRAIN = (18, 158, 220)
-        COLOR_VAL = (248, 167, 52)
-        COLOR_BEST_VAL = (151, 204, 89)
+        self.mp_series = dict()
+        self.mp_series["batch"] = self.canvas.series["batch"]
+        self.mp_series["epoch_loss"] = self.canvas.series["epoch_loss"]
+        self.mp_series["val_loss"] = self.canvas.series["val_loss"]
+        self.mp_series["val_loss_best"] = self.canvas.series["val_loss_best"]
 
-        self.series["batch"] = QtCharts.QScatterSeries()
-        self.series["batch"].setName("Batch Training Loss")
-        self.series["batch"].setColor(QtGui.QColor(*COLOR_TRAIN, 48))
-        self.series["batch"].setMarkerSize(8.0)
-        self.series["batch"].setBorderColor(QtGui.QColor(255, 255, 255, 25))
-        self.chart.addSeries(self.series["batch"])
-
-        self.series["epoch_loss"] = QtCharts.QLineSeries()
-        self.series["epoch_loss"].setName("Epoch Training Loss")
-        self.series["epoch_loss"].setColor(QtGui.QColor(*COLOR_TRAIN, 255))
-        pen = self.series["epoch_loss"].pen()
-        pen.setWidth(4)
-        self.series["epoch_loss"].setPen(pen)
-        self.chart.addSeries(self.series["epoch_loss"])
-
-        self.series["epoch_loss_scatter"] = QtCharts.QScatterSeries()
-        self.series["epoch_loss_scatter"].setColor(QtGui.QColor(*COLOR_TRAIN, 255))
-        self.series["epoch_loss_scatter"].setMarkerSize(12.0)
-        self.series["epoch_loss_scatter"].setBorderColor(
-            QtGui.QColor(255, 255, 255, 25)
-        )
-        self.chart.addSeries(self.series["epoch_loss_scatter"])
-
-        self.series["val_loss"] = QtCharts.QLineSeries()
-        self.series["val_loss"].setName("Epoch Validation Loss")
-        self.series["val_loss"].setColor(QtGui.QColor(*COLOR_VAL, 255))
-        pen = self.series["val_loss"].pen()
-        pen.setWidth(4)
-        self.series["val_loss"].setPen(pen)
-        self.chart.addSeries(self.series["val_loss"])
-
-        self.series["val_loss_scatter"] = QtCharts.QScatterSeries()
-        self.series["val_loss_scatter"].setColor(QtGui.QColor(*COLOR_VAL, 255))
-        self.series["val_loss_scatter"].setMarkerSize(12.0)
-        self.series["val_loss_scatter"].setBorderColor(QtGui.QColor(255, 255, 255, 25))
-        self.chart.addSeries(self.series["val_loss_scatter"])
-
-        self.series["val_loss_best"] = QtCharts.QScatterSeries()
-        self.series["val_loss_best"].setName("Best Validation Loss")
-        self.series["val_loss_best"].setColor(QtGui.QColor(*COLOR_BEST_VAL, 255))
-        self.series["val_loss_best"].setMarkerSize(12.0)
-        self.series["val_loss_best"].setBorderColor(QtGui.QColor(32, 32, 32, 25))
-        self.chart.addSeries(self.series["val_loss_best"])
-
-        axisX = QtCharts.QValueAxis()
-        axisX.setLabelFormat("%d")
-        axisX.setTitleText("Batches")
-        self.chart.addAxis(axisX, QtCore.Qt.AlignBottom)
-
-        # Create the different Y axes that can be used.
-        self.axisY = dict()
-
-        self.axisY["log"] = QtCharts.QLogValueAxis()
-        self.axisY["log"].setBase(10)
-
-        self.axisY["linear"] = QtCharts.QValueAxis()
-
-        # Apply settings that apply to all Y axes.
-        for axisY in self.axisY.values():
-            axisY.setLabelFormat("%f")
-            axisY.setLabelsVisible(True)
-            axisY.setMinorTickCount(1)
-            axisY.setTitleText("Loss")
-
-        # Use the default Y axis.
-        axisY = self.axisY["log"] if self.log_scale else self.axisY["linear"]
-
-        # Add axes to chart and series.
-        self.chart.addAxis(axisY, QtCore.Qt.AlignLeft)
-        for series in self.chart.series():
-            series.attachAxis(axisX)
-            series.attachAxis(axisY)
-
-        # Setup legend.
-        self.chart.legend().setVisible(True)
-        self.chart.legend().setAlignment(QtCore.Qt.AlignTop)
-        self.chart.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeCircle)
-
-        # Hide scatters for epoch and val loss from legend.
-        for s in ("epoch_loss_scatter", "val_loss_scatter"):
-            self.chart.legend().markers(self.series[s])[0].setVisible(False)
-
-        self.chartView = QtCharts.QChartView(self.chart)
-        self.chartView.setRenderHint(QtGui.QPainter.Antialiasing)
         layout = QtWidgets.QVBoxLayout()
-        layout.addWidget(self.chartView)
+        layout.addWidget(self.canvas)
 
         if self.show_controller:
             control_layout = QtWidgets.QHBoxLayout()
 
             field = QtWidgets.QCheckBox("Log Scale")
             field.setChecked(self.log_scale)
-            field.stateChanged.connect(self.toggle_log_scale)
+            field.stateChanged.connect(self._toggle_log_scale)
             control_layout.addWidget(field)
 
             field = QtWidgets.QCheckBox("Ignore Outliers")
             field.setChecked(self.ignore_outliers)
-            field.stateChanged.connect(self.toggle_ignore_outliers)
+            field.stateChanged.connect(self._toggle_ignore_outliers)
             control_layout.addWidget(field)
 
             control_layout.addWidget(QtWidgets.QLabel("Batches to Show:"))
@@ -203,7 +717,7 @@ def reset(
 
             # Set connection action for when user selects another option.
             field.currentIndexChanged.connect(
-                lambda x: self.set_batches_to_show(self.batch_options[x])
+                lambda x: self._set_batches_to_show(self.batch_options[x])
             )
 
             # Store field as property and add to layout.
@@ -213,10 +727,10 @@ def reset(
             control_layout.addStretch(1)
 
             self.stop_button = QtWidgets.QPushButton("Stop Early")
-            self.stop_button.clicked.connect(self.stop)
+            self.stop_button.clicked.connect(self._stop)
             control_layout.addWidget(self.stop_button)
             self.cancel_button = QtWidgets.QPushButton("Cancel Training")
-            self.cancel_button.clicked.connect(self.cancel)
+            self.cancel_button.clicked.connect(self._cancel)
             control_layout.addWidget(self.cancel_button)
 
             widget = QtWidgets.QWidget()
@@ -248,48 +762,16 @@ def reset(
         self.last_batch_number = 0
         self.is_running = False
 
-    def toggle_ignore_outliers(self):
-        """Toggles whether to ignore outliers in chart scaling."""
-        self.ignore_outliers = not self.ignore_outliers
-
-    def toggle_log_scale(self):
-        """Toggle whether to use log-scaled y-axis."""
-        self.log_scale = not self.log_scale
-        self.update_y_axis()
-
-    def set_batches_to_show(self, batches: str):
-        """Set the number of batches to show on the x-axis.
+    def set_message(self, text: str):
+        """Set the chart title text."""
+        self.canvas.set_title(text)
 
-        Args:
-            batches: Number of batches as a string. If numeric, this will be converted
-                to an integer. If non-numeric string (e.g., "All"), then all batches
-                will be shown.
-        """
-        if batches.isdigit():
-            self.batches_to_show = int(batches)
-        else:
-            self.batches_to_show = -1
+    def close(self):
+        """Disconnect from ZMQ ports and close the window."""
+        self._unbind()
+        super().close()
 
-    def update_y_axis(self):
-        """Update the y-axis when scale changes."""
-        to = "log" if self.log_scale else "linear"
-
-        # Remove other axes.
-        for name, axisY in self.axisY.items():
-            if name != to:
-                if axisY in self.chart.axes():
-                    self.chart.removeAxis(axisY)
-                for series in self.chart.series():
-                    if axisY in series.attachedAxes():
-                        series.detachAxis(axisY)
-
-        # Add axis.
-        axisY = self.axisY[to]
-        self.chart.addAxis(axisY, QtCore.Qt.AlignLeft)
-        for series in self.chart.series():
-            series.attachAxis(axisY)
-
-    def setup_zmq(self, zmq_context: Optional[zmq.Context] = None):
+    def _setup_zmq(self, zmq_context: Optional[zmq.Context] = None):
         """Connect to ZMQ ports that listen to commands and updates.
 
         Args:
@@ -305,112 +787,69 @@ def setup_zmq(self, zmq_context: Optional[zmq.Context] = None):
         # Progress monitoring, SUBSCRIBER
         self.sub = self.ctx.socket(zmq.SUB)
         self.sub.subscribe("")
-        self.sub.bind("tcp://127.0.0.1:9001")
+
+        def find_free_port(port: int, zmq_context: zmq.Context):
+            """Find free port to bind to.
+
+            Args:
+                port: The port to start searching from.
+                zmq_context: The ZMQ context to use.
+
+            Returns:
+                The free port.
+            """
+            attempts = 0
+            max_attempts = 10
+            while not is_port_free(port=port, zmq_context=zmq_context):
+                if attempts >= max_attempts:
+                    raise RuntimeError(
+                        f"Could not find free port to display training progress after "
+                        f"{max_attempts} attempts. Please check your network settings "
+                        "or use the CLI `sleap-train` command."
+                    )
+                port = select_zmq_port(zmq_context=self.ctx)
+                attempts += 1
+
+            return port
+
+        # Find a free port and bind to it.
+        self.zmq_ports["publish_port"] = find_free_port(
+            port=self.zmq_ports["publish_port"], zmq_context=self.ctx
+        )
+        publish_address = f"tcp://127.0.0.1:{self.zmq_ports['publish_port']}"
+        self.sub.bind(publish_address)
 
         # Controller, PUBLISHER
         self.zmq_ctrl = None
         if self.show_controller:
             self.zmq_ctrl = self.ctx.socket(zmq.PUB)
-            self.zmq_ctrl.bind("tcp://127.0.0.1:9000")
+
+            # Find a free port and bind to it.
+            self.zmq_ports["controller_port"] = find_free_port(
+                port=self.zmq_ports["controller_port"], zmq_context=self.ctx
+            )
+            controller_address = f"tcp://127.0.0.1:{self.zmq_ports['controller_port']}"
+            self.zmq_ctrl.bind(controller_address)
 
         # Set timer to poll for messages.
         self.timer = QtCore.QTimer()
-        self.timer.timeout.connect(self.check_messages)
+        self.timer.timeout.connect(self._check_messages)
         self.timer.start(self.message_poll_time_ms)
 
-    def cancel(self):
-        """Set the cancel flag."""
-        self.canceled = True
-        if self.cancel_button is not None:
-            self.cancel_button.setText("Canceling...")
-            self.cancel_button.setEnabled(False)
-
-    def stop(self):
-        """Send command to stop training."""
-        if self.zmq_ctrl is not None:
-            # Send command to stop training.
-            logger.info("Sending command to stop training.")
-            self.zmq_ctrl.send_string(jsonpickle.encode(dict(command="stop")))
-
-        # Disable the button to prevent double messages.
-        if self.stop_button is not None:
-            self.stop_button.setText("Stopping...")
-            self.stop_button.setEnabled(False)
-
-    def add_datapoint(self, x: int, y: float, which: str):
-        """Add a data point to graph.
+    def _set_batches_to_show(self, batches: str):
+        """Set the number of batches to show on the x-axis.
 
         Args:
-            x: The batch number (out of all epochs, not just current), or epoch.
-            y: The loss value.
-            which: Type of data point we're adding. Possible values are:
-                * "batch" (loss for the batch)
-                * "epoch_loss" (loss for the entire epoch)
-                * "val_loss" (validation loss for the epoch)
+            batches: Number of batches as a string. If numeric, this will be converted
+                to an integer. If non-numeric string (e.g., "All"), then all batches
+                will be shown.
         """
-        if which == "batch":
-            self.X.append(x)
-            self.Y.append(y)
-
-            # Redraw batch at intervals (faster than plotting every batch).
-            draw_batch = False
-            if self.last_redraw_batch is None:
-                draw_batch = True
-            else:
-                dt = perf_counter() - self.last_redraw_batch
-                draw_batch = (dt * 1000) >= self.redraw_batch_time_ms
-
-            if draw_batch:
-                self.last_redraw_batch = perf_counter()
-                if self.batches_to_show < 0 or len(self.X) < self.batches_to_show:
-                    xs, ys = self.X, self.Y
-                else:
-                    xs, ys = (
-                        self.X[-self.batches_to_show :],
-                        self.Y[-self.batches_to_show :],
-                    )
-
-                points = [QtCore.QPointF(x, y) for x, y in zip(xs, ys) if y > 0]
-                self.series["batch"].replace(points)
-
-                # Set X scale to show all points
-                dx = 0.5
-                self.chart.axisX().setRange(min(xs) - dx, max(xs) + dx)
-
-                if self.ignore_outliers:
-                    dy = np.ptp(ys) * 0.02
-                    # Set Y scale to exclude outliers
-                    q1, q3 = np.quantile(ys, (0.25, 0.75))
-                    iqr = q3 - q1  # interquartile range
-                    low = q1 - iqr * 1.5
-                    high = q3 + iqr * 1.5
-
-                    low = max(low, min(ys) - dy)  # keep within range of data
-                    high = min(high, max(ys) + dy)
-                else:
-                    # Set Y scale to show all points
-                    dy = np.ptp(ys) * 0.02
-                    low = min(ys) - dy
-                    high = max(ys) + dy
-
-                if self.log_scale:
-                    low = max(low, 1e-8)  # for log scale, low cannot be 0
-
-                self.chart.axisY().setRange(low, high)
-
+        if batches.isdigit():
+            self.batches_to_show = int(batches)
         else:
-            if which == "epoch_loss":
-                self.series["epoch_loss"].append(x, y)
-                self.series["epoch_loss_scatter"].append(x, y)
-            elif which == "val_loss":
-                self.series["val_loss"].append(x, y)
-                self.series["val_loss_scatter"].append(x, y)
-                if self.best_val_y is None or y < self.best_val_y:
-                    self.best_val_x = x
-                    self.best_val_y = y
-                    self.series["val_loss_best"].replace([QtCore.QPointF(x, y)])
+            self.batches_to_show = -1
 
-    def set_start_time(self, t0: float):
+    def _set_start_time(self, t0: float):
         """Mark the start flag and time of the run.
 
         Args:
@@ -419,52 +858,31 @@ def set_start_time(self, t0: float):
         self.t0 = t0
         self.is_running = True
 
-    def set_end(self):
-        """Mark the end of the run."""
-        self.is_running = False
-
-    def update_runtime(self):
+    def _update_runtime(self):
         """Update the title text with the current running time."""
+
         if self.is_timer_running:
             dt = perf_counter() - self.t0
             dt_min, dt_sec = divmod(dt, 60)
-            title = f"Training Epoch <b>{self.epoch + 1}</b> / "
-            title += f"Runtime: <b>{int(dt_min):02}:{int(dt_sec):02}</b>"
-            if self.last_epoch_val_loss is not None:
-                if self.penultimate_epoch_val_loss is not None:
-                    title += (
-                        f"<br />Mean Time per Epoch: "
-                        f"<b>{int(self.mean_epoch_time_min):02}:{int(self.mean_epoch_time_sec):02}</b> / "
-                        f"ETA Next 10 Epochs: <b>{int(self.eta_ten_epochs_min)} min</b>"
-                    )
-                    if self.epoch_in_plateau_flag:
-                        title += (
-                            f"<br />Epochs in Plateau: "
-                            f"<b>{self.epochs_in_plateau} / "
-                            f"{self.config.optimization.early_stopping.plateau_patience}</b>"
-                        )
-                title += (
-                    f"<br />Last Epoch Validation Loss: "
-                    f"<b>{self.last_epoch_val_loss:.3e}</b>"
-                )
-            if self.best_val_x is not None:
-                best_epoch = (self.best_val_x // self.epoch_size) + 1
-                title += (
-                    f"<br />Best Epoch Validation Loss: "
-                    f"<b>{self.best_val_y:.3e}</b> (epoch <b>{best_epoch}</b>)"
-                )
-            self.set_message(title)
-
-    @property
-    def is_timer_running(self) -> bool:
-        """Return True if the timer has started."""
-        return self.t0 is not None and self.is_running
 
-    def set_message(self, text: str):
-        """Set the chart title text."""
-        self.chart.setTitle(text)
+            self.canvas.update_runtime_title(
+                epoch=self.epoch,
+                dt_min=dt_min,
+                dt_sec=dt_sec,
+                last_epoch_val_loss=self.last_epoch_val_loss,
+                penultimate_epoch_val_loss=self.penultimate_epoch_val_loss,
+                mean_epoch_time_min=self.mean_epoch_time_min,
+                mean_epoch_time_sec=self.mean_epoch_time_sec,
+                eta_ten_epochs_min=self.eta_ten_epochs_min,
+                epochs_in_plateau=self.epochs_in_plateau,
+                plateau_patience=self.config.optimization.early_stopping.plateau_patience,
+                epoch_in_plateau_flag=self.epoch_in_plateau_flag,
+                best_val_x=self.best_val_x,
+                best_val_y=self.best_val_y,
+                epoch_size=self.epoch_size,
+            )
 
-    def check_messages(
+    def _check_messages(
         self, timeout: int = 10, times_to_check: int = 10, do_update: bool = True
     ):
         """Poll for ZMQ messages and adds any received data to graph.
@@ -496,7 +914,7 @@ def check_messages(
             msg = jsonpickle.decode(self.sub.recv_string())
 
             if msg["event"] == "train_begin":
-                self.set_start_time(perf_counter())
+                self._set_start_time(perf_counter())
                 self.current_job_output_type = msg["what"]
 
             # Make sure message matches current training job.
@@ -504,15 +922,15 @@ def check_messages(
 
                 if not self.is_timer_running:
                     # We must have missed the train_begin message, so start timer now.
-                    self.set_start_time(perf_counter())
+                    self._set_start_time(perf_counter())
 
                 if msg["event"] == "train_end":
-                    self.set_end()
+                    self._set_end()
                 elif msg["event"] == "epoch_begin":
                     self.epoch = msg["epoch"]
                 elif msg["event"] == "epoch_end":
                     self.epoch_size = max(self.epoch_size, self.last_batch_number + 1)
-                    self.add_datapoint(
+                    self._add_datapoint(
                         (self.epoch + 1) * self.epoch_size,
                         msg["logs"]["loss"],
                         "epoch_loss",
@@ -521,7 +939,7 @@ def check_messages(
                         # update variables and add points to plot
                         self.penultimate_epoch_val_loss = self.last_epoch_val_loss
                         self.last_epoch_val_loss = msg["logs"]["val_loss"]
-                        self.add_datapoint(
+                        self._add_datapoint(
                             (self.epoch + 1) * self.epoch_size,
                             msg["logs"]["val_loss"],
                             "val_loss",
@@ -552,7 +970,7 @@ def check_messages(
                     self.on_epoch.emit()
                 elif msg["event"] == "batch_end":
                     self.last_batch_number = msg["batch"]
-                    self.add_datapoint(
+                    self._add_datapoint(
                         (self.epoch * self.epoch_size) + msg["batch"],
                         msg["logs"]["loss"],
                         "batch",
@@ -560,9 +978,155 @@ def check_messages(
 
             # Check for messages again (up to times_to_check times).
             if times_to_check > 0:
-                self.check_messages(
+                self._check_messages(
                     timeout=timeout, times_to_check=times_to_check - 1, do_update=False
                 )
 
         if do_update:
-            self.update_runtime()
+            self._update_runtime()
+
+    def _add_datapoint(self, x: int, y: float, which: str):
+        """Add a data point to graph.
+
+        Args:
+            x: The batch number (out of all epochs, not just current), or epoch.
+            y: The loss value.
+            which: Type of data point we're adding. Possible values are:
+                * "batch" (loss for the batch)
+                * "epoch_loss" (loss for the entire epoch)
+                * "val_loss" (validation loss for the epoch)
+        """
+        if which == "batch":
+            self.X.append(x)
+            self.Y.append(y)
+
+            # Redraw batch at intervals (faster than plotting every batch).
+            draw_batch = False
+            if self.last_redraw_batch is None:
+                draw_batch = True
+            else:
+                dt = perf_counter() - self.last_redraw_batch
+                draw_batch = (dt * 1000) >= self.redraw_batch_time_ms
+
+            if draw_batch:
+                self.last_redraw_batch = perf_counter()
+                if self.batches_to_show < 0 or len(self.X) < self.batches_to_show:
+                    xs, ys = self.X, self.Y
+                else:
+                    xs, ys = (
+                        self.X[-self.batches_to_show :],
+                        self.Y[-self.batches_to_show :],
+                    )
+
+                # Set data, resize and redraw the plot
+                self._set_data_on_scatter(xs, ys, which)
+                self._resize_axes(xs, ys)
+
+        else:
+
+            if which == "val_loss":
+                if self.best_val_y is None or y < self.best_val_y:
+                    self.best_val_x = x
+                    self.best_val_y = y
+                    self._set_data_on_scatter([x], [y], "val_loss_best")
+
+            # Add data and redraw the plot
+            self._add_data_to_plot(x, y, which)
+            self._redraw_plot()
+
+    def _set_data_on_scatter(self, xs, ys, which):
+        """Add data to a scatter plot.
+
+        Not to be used with line plots.
+
+        Args:
+            xs: The x-coordinates of the data points.
+            ys: The y-coordinates of the data points.
+            which: The type of data point. Possible values are:
+                * "batch"
+                * "val_loss_best"
+        """
+
+        self.canvas.set_data_on_scatter(xs, ys, which)
+
+    def _add_data_to_plot(self, x, y, which):
+        """Add data to a line plot.
+
+        Not to be used with scatter plots.
+
+        Args:
+            x: The x-coordinate of the data point.
+            y: The y-coordinate of the data point.
+            which: The type of data point. Possible values are:
+                * "epoch_loss"
+                * "val_loss"
+        """
+
+        self.canvas.add_data_to_plot(x, y, which)
+
+    def _redraw_plot(self):
+        """Redraw the plot."""
+
+        self.canvas.redraw_plot()
+
+    def _resize_axes(self, x, y):
+        """Resize axes to fit data.
+
+        This is only called when plotting batches.
+
+        Args:
+            x: The x-coordinates of the data points.
+            y: The y-coordinates of the data points.
+        """
+        self.canvas.resize_axes(x, y)
+
+    def _toggle_ignore_outliers(self):
+        """Toggles whether to ignore outliers in chart scaling."""
+
+        self.ignore_outliers = not self.ignore_outliers
+
+    def _toggle_log_scale(self):
+        """Toggle whether to use log-scaled y-axis."""
+
+        self.log_scale = not self.log_scale
+
+    def _stop(self):
+        """Send command to stop training."""
+        if self.zmq_ctrl is not None:
+            # Send command to stop training.
+            logger.info("Sending command to stop training.")
+            self.zmq_ctrl.send_string(jsonpickle.encode(dict(command="stop")))
+
+        # Disable the button to prevent double messages.
+        if self.stop_button is not None:
+            self.stop_button.setText("Stopping...")
+            self.stop_button.setEnabled(False)
+
+    def _cancel(self):
+        """Set the cancel flag."""
+        self.canceled = True
+        if self.cancel_button is not None:
+            self.cancel_button.setText("Canceling...")
+            self.cancel_button.setEnabled(False)
+
+    def _unbind(self):
+        """Disconnect from all ZMQ sockets."""
+        if self.sub is not None:
+            self.sub.unbind(self.sub.LAST_ENDPOINT)
+            self.sub.close()
+            self.sub = None
+
+        if self.zmq_ctrl is not None:
+            url = self.zmq_ctrl.LAST_ENDPOINT
+            self.zmq_ctrl.unbind(url)
+            self.zmq_ctrl.close()
+            self.zmq_ctrl = None
+
+        # If we started out own zmq context, terminate it.
+        if not self.ctx_given and self.ctx is not None:
+            self.ctx.term()
+            self.ctx = None
+
+    def _set_end(self):
+        """Mark the end of the run."""
+        self.is_running = False
diff --git a/sleap/gui/widgets/mpl.py b/sleap/gui/widgets/mpl.py
index a9b7fc838..890c1a67a 100644
--- a/sleap/gui/widgets/mpl.py
+++ b/sleap/gui/widgets/mpl.py
@@ -6,11 +6,10 @@
 
 from qtpy import QtWidgets
 from matplotlib.figure import Figure
-from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas
+from matplotlib.backends.backend_qtagg import FigureCanvasQTAgg as Canvas
 import matplotlib
 
-# Ensure using PyQt5 backend
-matplotlib.use("QT5Agg")
+matplotlib.use("QtAgg")
 
 
 class MplCanvas(Canvas):
diff --git a/sleap/gui/widgets/training_monitor.py b/sleap/gui/widgets/training_monitor.py
deleted file mode 100644
index ed405a747..000000000
--- a/sleap/gui/widgets/training_monitor.py
+++ /dev/null
@@ -1,566 +0,0 @@
-"""GUI for monitoring training progress interactively."""
-
-import numpy as np
-from time import perf_counter
-from sleap.nn.config.training_job import TrainingJobConfig
-import zmq
-import jsonpickle
-import logging
-from typing import Optional
-from qtpy import QtCore, QtWidgets, QtGui, QtCharts
-import attr
-
-logger = logging.getLogger(__name__)
-
-
-class LossViewer(QtWidgets.QMainWindow):
-    """Qt window for showing in-progress training metrics sent over ZMQ."""
-
-    on_epoch = QtCore.Signal()
-
-    def __init__(
-        self,
-        zmq_context: Optional[zmq.Context] = None,
-        show_controller=True,
-        parent=None,
-    ):
-        super().__init__(parent)
-
-        self.show_controller = show_controller
-        self.stop_button = None
-        self.cancel_button = None
-        self.canceled = False
-
-        self.batches_to_show = -1  # -1 to show all
-        self.ignore_outliers = False
-        self.log_scale = True
-        self.message_poll_time_ms = 20  # ms
-        self.redraw_batch_time_ms = 500  # ms
-        self.last_redraw_batch = None
-
-        self.reset()
-        self.setup_zmq(zmq_context)
-
-    def __del__(self):
-        self.unbind()
-
-    def close(self):
-        """Disconnect from ZMQ ports and close the window."""
-        self.unbind()
-        super().close()
-
-    def unbind(self):
-        """Disconnect from all ZMQ sockets."""
-        if self.sub is not None:
-            self.sub.unbind(self.sub.LAST_ENDPOINT)
-            self.sub.close()
-            self.sub = None
-
-        if self.zmq_ctrl is not None:
-            url = self.zmq_ctrl.LAST_ENDPOINT
-            self.zmq_ctrl.unbind(url)
-            self.zmq_ctrl.close()
-            self.zmq_ctrl = None
-
-        # If we started out own zmq context, terminate it.
-        if not self.ctx_given and self.ctx is not None:
-            self.ctx.term()
-            self.ctx = None
-
-    def reset(
-        self,
-        what: str = "",
-        config: TrainingJobConfig = attr.ib(factory=TrainingJobConfig),
-    ):
-        """Reset all chart series.
-
-        Args:
-            what: String identifier indicating which job type the current run
-                corresponds to.
-        """
-        self.chart = QtCharts.QChart()
-
-        self.series = dict()
-
-        COLOR_TRAIN = (18, 158, 220)
-        COLOR_VAL = (248, 167, 52)
-        COLOR_BEST_VAL = (151, 204, 89)
-
-        self.series["batch"] = QtCharts.QScatterSeries()
-        self.series["batch"].setName("Batch Training Loss")
-        self.series["batch"].setColor(QtGui.QColor(*COLOR_TRAIN, 48))
-        self.series["batch"].setMarkerSize(8.0)
-        self.series["batch"].setBorderColor(QtGui.QColor(255, 255, 255, 25))
-        self.chart.addSeries(self.series["batch"])
-
-        self.series["epoch_loss"] = QtCharts.QLineSeries()
-        self.series["epoch_loss"].setName("Epoch Training Loss")
-        self.series["epoch_loss"].setColor(QtGui.QColor(*COLOR_TRAIN, 255))
-        pen = self.series["epoch_loss"].pen()
-        pen.setWidth(4)
-        self.series["epoch_loss"].setPen(pen)
-        self.chart.addSeries(self.series["epoch_loss"])
-
-        self.series["epoch_loss_scatter"] = QtCharts.QScatterSeries()
-        self.series["epoch_loss_scatter"].setColor(QtGui.QColor(*COLOR_TRAIN, 255))
-        self.series["epoch_loss_scatter"].setMarkerSize(12.0)
-        self.series["epoch_loss_scatter"].setBorderColor(
-            QtGui.QColor(255, 255, 255, 25)
-        )
-        self.chart.addSeries(self.series["epoch_loss_scatter"])
-
-        self.series["val_loss"] = QtCharts.QLineSeries()
-        self.series["val_loss"].setName("Epoch Validation Loss")
-        self.series["val_loss"].setColor(QtGui.QColor(*COLOR_VAL, 255))
-        pen = self.series["val_loss"].pen()
-        pen.setWidth(4)
-        self.series["val_loss"].setPen(pen)
-        self.chart.addSeries(self.series["val_loss"])
-
-        self.series["val_loss_scatter"] = QtCharts.QScatterSeries()
-        self.series["val_loss_scatter"].setColor(QtGui.QColor(*COLOR_VAL, 255))
-        self.series["val_loss_scatter"].setMarkerSize(12.0)
-        self.series["val_loss_scatter"].setBorderColor(QtGui.QColor(255, 255, 255, 25))
-        self.chart.addSeries(self.series["val_loss_scatter"])
-
-        self.series["val_loss_best"] = QtCharts.QScatterSeries()
-        self.series["val_loss_best"].setName("Best Validation Loss")
-        self.series["val_loss_best"].setColor(QtGui.QColor(*COLOR_BEST_VAL, 255))
-        self.series["val_loss_best"].setMarkerSize(12.0)
-        self.series["val_loss_best"].setBorderColor(QtGui.QColor(32, 32, 32, 25))
-        self.chart.addSeries(self.series["val_loss_best"])
-
-        axisX = QtCharts.QValueAxis()
-        axisX.setLabelFormat("%d")
-        axisX.setTitleText("Batches")
-        self.chart.addAxis(axisX, QtCore.Qt.AlignBottom)
-
-        # Create the different Y axes that can be used.
-        self.axisY = dict()
-
-        self.axisY["log"] = QtCharts.QLogValueAxis()
-        self.axisY["log"].setBase(10)
-
-        self.axisY["linear"] = QtCharts.QValueAxis()
-
-        # Apply settings that apply to all Y axes.
-        for axisY in self.axisY.values():
-            axisY.setLabelFormat("%f")
-            axisY.setLabelsVisible(True)
-            axisY.setMinorTickCount(1)
-            axisY.setTitleText("Loss")
-
-        # Use the default Y axis.
-        axisY = self.axisY["log"] if self.log_scale else self.axisY["linear"]
-
-        # Add axes to chart and series.
-        self.chart.addAxis(axisY, QtCore.Qt.AlignLeft)
-        for series in self.chart.series():
-            series.attachAxis(axisX)
-            series.attachAxis(axisY)
-
-        # Setup legend.
-        self.chart.legend().setVisible(True)
-        self.chart.legend().setAlignment(QtCore.Qt.AlignTop)
-        self.chart.legend().setMarkerShape(QtCharts.QLegend.MarkerShapeCircle)
-
-        # Hide scatters for epoch and val loss from legend.
-        for s in ("epoch_loss_scatter", "val_loss_scatter"):
-            self.chart.legend().markers(self.series[s])[0].setVisible(False)
-
-        self.chartView = QtCharts.QChartView(self.chart)
-        self.chartView.setRenderHint(QtGui.QPainter.Antialiasing)
-        layout = QtWidgets.QVBoxLayout()
-        layout.addWidget(self.chartView)
-
-        if self.show_controller:
-            control_layout = QtWidgets.QHBoxLayout()
-
-            field = QtWidgets.QCheckBox("Log Scale")
-            field.setChecked(self.log_scale)
-            field.stateChanged.connect(self.toggle_log_scale)
-            control_layout.addWidget(field)
-
-            field = QtWidgets.QCheckBox("Ignore Outliers")
-            field.setChecked(self.ignore_outliers)
-            field.stateChanged.connect(self.toggle_ignore_outliers)
-            control_layout.addWidget(field)
-
-            control_layout.addWidget(QtWidgets.QLabel("Batches to Show:"))
-
-            # Add field for how many batches to show in chart.
-            field = QtWidgets.QComboBox()
-            self.batch_options = "200,1000,5000,All".split(",")
-            for opt in self.batch_options:
-                field.addItem(opt)
-            cur_opt_str = (
-                "All" if self.batches_to_show < 0 else str(self.batches_to_show)
-            )
-            if cur_opt_str in self.batch_options:
-                field.setCurrentText(cur_opt_str)
-
-            # Set connection action for when user selects another option.
-            field.currentIndexChanged.connect(
-                lambda x: self.set_batches_to_show(self.batch_options[x])
-            )
-
-            # Store field as property and add to layout.
-            self.batches_to_show_field = field
-            control_layout.addWidget(self.batches_to_show_field)
-
-            control_layout.addStretch(1)
-
-            self.stop_button = QtWidgets.QPushButton("Stop Early")
-            self.stop_button.clicked.connect(self.stop)
-            control_layout.addWidget(self.stop_button)
-            self.cancel_button = QtWidgets.QPushButton("Cancel Training")
-            self.cancel_button.clicked.connect(self.cancel)
-            control_layout.addWidget(self.cancel_button)
-
-            widget = QtWidgets.QWidget()
-            widget.setLayout(control_layout)
-            layout.addWidget(widget)
-
-        wid = QtWidgets.QWidget()
-        wid.setLayout(layout)
-        self.setCentralWidget(wid)
-
-        self.config = config
-        self.X = []
-        self.Y = []
-        self.best_val_x = None
-        self.best_val_y = None
-
-        self.t0 = None
-        self.mean_epoch_time_min = None
-        self.mean_epoch_time_sec = None
-        self.eta_ten_epochs_min = None
-
-        self.current_job_output_type = what
-        self.epoch = 0
-        self.epoch_size = 1
-        self.epochs_in_plateau = 0
-        self.last_epoch_val_loss = None
-        self.penultimate_epoch_val_loss = None
-        self.epoch_in_plateau_flag = False
-        self.last_batch_number = 0
-        self.is_running = False
-
-    def toggle_ignore_outliers(self):
-        """Toggles whether to ignore outliers in chart scaling."""
-        self.ignore_outliers = not self.ignore_outliers
-
-    def toggle_log_scale(self):
-        """Toggle whether to use log-scaled y-axis."""
-        self.log_scale = not self.log_scale
-        self.update_y_axis()
-
-    def set_batches_to_show(self, batches: str):
-        """Set the number of batches to show on the x-axis.
-
-        Args:
-            batches: Number of batches as a string. If numeric, this will be converted
-                to an integer. If non-numeric string (e.g., "All"), then all batches
-                will be shown.
-        """
-        if batches.isdigit():
-            self.batches_to_show = int(batches)
-        else:
-            self.batches_to_show = -1
-
-    def update_y_axis(self):
-        """Update the y-axis when scale changes."""
-        to = "log" if self.log_scale else "linear"
-
-        # Remove other axes.
-        for name, axisY in self.axisY.items():
-            if name != to:
-                if axisY in self.chart.axes():
-                    self.chart.removeAxis(axisY)
-                for series in self.chart.series():
-                    if axisY in series.attachedAxes():
-                        series.detachAxis(axisY)
-
-        # Add axis.
-        axisY = self.axisY[to]
-        self.chart.addAxis(axisY, QtCore.Qt.AlignLeft)
-        for series in self.chart.series():
-            series.attachAxis(axisY)
-
-    def setup_zmq(self, zmq_context: Optional[zmq.Context] = None):
-        """Connect to ZMQ ports that listen to commands and updates.
-
-        Args:
-            zmq_context: The `zmq.Context` object to use for connections. A new one is
-                created if not specified and will be closed when the monitor exits. If
-                an existing one is provided, it will NOT be closed.
-        """
-        # Keep track of whether we're using an existing context (which we won't close
-        # when done) or are creating our own (which we should close).
-        self.ctx_given = zmq_context is not None
-        self.ctx = zmq.Context() if zmq_context is None else zmq_context
-
-        # Progress monitoring, SUBSCRIBER
-        self.sub = self.ctx.socket(zmq.SUB)
-        self.sub.subscribe("")
-        self.sub.bind("tcp://127.0.0.1:9001")
-
-        # Controller, PUBLISHER
-        self.zmq_ctrl = None
-        if self.show_controller:
-            self.zmq_ctrl = self.ctx.socket(zmq.PUB)
-            self.zmq_ctrl.bind("tcp://127.0.0.1:9000")
-
-        # Set timer to poll for messages.
-        self.timer = QtCore.QTimer()
-        self.timer.timeout.connect(self.check_messages)
-        self.timer.start(self.message_poll_time_ms)
-
-    def cancel(self):
-        """Set the cancel flag."""
-        self.canceled = True
-        if self.cancel_button is not None:
-            self.cancel_button.setText("Canceling...")
-            self.cancel_button.setEnabled(False)
-
-    def stop(self):
-        """Send command to stop training."""
-        if self.zmq_ctrl is not None:
-            # Send command to stop training.
-            logger.info("Sending command to stop training.")
-            self.zmq_ctrl.send_string(jsonpickle.encode(dict(command="stop")))
-
-        # Disable the button to prevent double messages.
-        if self.stop_button is not None:
-            self.stop_button.setText("Stopping...")
-            self.stop_button.setEnabled(False)
-
-    def add_datapoint(self, x: int, y: float, which: str):
-        """Add a data point to graph.
-
-        Args:
-            x: The batch number (out of all epochs, not just current), or epoch.
-            y: The loss value.
-            which: Type of data point we're adding. Possible values are:
-                * "batch" (loss for the batch)
-                * "epoch_loss" (loss for the entire epoch)
-                * "val_loss" (validation loss for the epoch)
-        """
-        if which == "batch":
-            self.X.append(x)
-            self.Y.append(y)
-
-            # Redraw batch at intervals (faster than plotting every batch).
-            draw_batch = False
-            if self.last_redraw_batch is None:
-                draw_batch = True
-            else:
-                dt = perf_counter() - self.last_redraw_batch
-                draw_batch = (dt * 1000) >= self.redraw_batch_time_ms
-
-            if draw_batch:
-                self.last_redraw_batch = perf_counter()
-                if self.batches_to_show < 0 or len(self.X) < self.batches_to_show:
-                    xs, ys = self.X, self.Y
-                else:
-                    xs, ys = (
-                        self.X[-self.batches_to_show :],
-                        self.Y[-self.batches_to_show :],
-                    )
-
-                points = [QtCore.QPointF(x, y) for x, y in zip(xs, ys) if y > 0]
-                self.series["batch"].replace(points)
-
-                # Set X scale to show all points
-                dx = 0.5
-                self.chart.axisX().setRange(min(xs) - dx, max(xs) + dx)
-
-                if self.ignore_outliers:
-                    dy = np.ptp(ys) * 0.02
-                    # Set Y scale to exclude outliers
-                    q1, q3 = np.quantile(ys, (0.25, 0.75))
-                    iqr = q3 - q1  # interquartile range
-                    low = q1 - iqr * 1.5
-                    high = q3 + iqr * 1.5
-
-                    low = max(low, min(ys) - dy)  # keep within range of data
-                    high = min(high, max(ys) + dy)
-                else:
-                    # Set Y scale to show all points
-                    dy = np.ptp(ys) * 0.02
-                    low = min(ys) - dy
-                    high = max(ys) + dy
-
-                if self.log_scale:
-                    low = max(low, 1e-8)  # for log scale, low cannot be 0
-
-                self.chart.axisY().setRange(low, high)
-
-        else:
-            if which == "epoch_loss":
-                self.series["epoch_loss"].append(x, y)
-                self.series["epoch_loss_scatter"].append(x, y)
-            elif which == "val_loss":
-                self.series["val_loss"].append(x, y)
-                self.series["val_loss_scatter"].append(x, y)
-                if self.best_val_y is None or y < self.best_val_y:
-                    self.best_val_x = x
-                    self.best_val_y = y
-                    self.series["val_loss_best"].replace([QtCore.QPointF(x, y)])
-
-    def set_start_time(self, t0: float):
-        """Mark the start flag and time of the run.
-
-        Args:
-            t0: Start time in seconds.
-        """
-        self.t0 = t0
-        self.is_running = True
-
-    def set_end(self):
-        """Mark the end of the run."""
-        self.is_running = False
-
-    def update_runtime(self):
-        """Update the title text with the current running time."""
-        if self.is_timer_running:
-            dt = perf_counter() - self.t0
-            dt_min, dt_sec = divmod(dt, 60)
-            title = f"Training Epoch <b>{self.epoch + 1}</b> / "
-            title += f"Runtime: <b>{int(dt_min):02}:{int(dt_sec):02}</b>"
-            if self.last_epoch_val_loss is not None:
-                if self.penultimate_epoch_val_loss is not None:
-                    title += (
-                        f"<br />Mean Time per Epoch: "
-                        f"<b>{int(self.mean_epoch_time_min):02}:{int(self.mean_epoch_time_sec):02}</b> / "
-                        f"ETA Next 10 Epochs: <b>{int(self.eta_ten_epochs_min)} min</b>"
-                    )
-                    if self.epoch_in_plateau_flag:
-                        title += (
-                            f"<br />Epochs in Plateau: "
-                            f"<b>{self.epochs_in_plateau} / "
-                            f"{self.config.optimization.early_stopping.plateau_patience}</b>"
-                        )
-                title += (
-                    f"<br />Last Epoch Validation Loss: "
-                    f"<b>{self.last_epoch_val_loss:.3e}</b>"
-                )
-            if self.best_val_x is not None:
-                best_epoch = (self.best_val_x // self.epoch_size) + 1
-                title += (
-                    f"<br />Best Epoch Validation Loss: "
-                    f"<b>{self.best_val_y:.3e}</b> (epoch <b>{best_epoch}</b>)"
-                )
-            self.set_message(title)
-
-    @property
-    def is_timer_running(self) -> bool:
-        """Return True if the timer has started."""
-        return self.t0 is not None and self.is_running
-
-    def set_message(self, text: str):
-        """Set the chart title text."""
-        self.chart.setTitle(text)
-
-    def check_messages(
-        self, timeout: int = 10, times_to_check: int = 10, do_update: bool = True
-    ):
-        """Poll for ZMQ messages and adds any received data to graph.
-
-        The message is a dictionary encoded as JSON:
-            * event - options include
-                * train_begin
-                * train_end
-                * epoch_begin
-                * epoch_end
-                * batch_end
-            * what - this should match the type of model we're training and
-                ensures that we ignore old messages when we start monitoring
-                a new training session (when we're training multiple types
-                of models in a sequence, as for the top-down pipeline).
-            * logs - dictionary with data relevant for plotting, can include
-                * loss
-                * val_loss
-
-        Args:
-            timeout: Message polling timeout in milliseconds. This is how often we will
-                check for new command messages.
-            times_to_check: How many times to check for new messages in the queue before
-                going back to polling with a timeout. Helps to clear backlogs of
-                messages if necessary.
-            do_update: If True (the default), update the GUI text.
-        """
-        if self.sub and self.sub.poll(timeout, zmq.POLLIN):
-            msg = jsonpickle.decode(self.sub.recv_string())
-
-            if msg["event"] == "train_begin":
-                self.set_start_time(perf_counter())
-                self.current_job_output_type = msg["what"]
-
-            # Make sure message matches current training job.
-            if msg.get("what", "") == self.current_job_output_type:
-
-                if not self.is_timer_running:
-                    # We must have missed the train_begin message, so start timer now.
-                    self.set_start_time(perf_counter())
-
-                if msg["event"] == "train_end":
-                    self.set_end()
-                elif msg["event"] == "epoch_begin":
-                    self.epoch = msg["epoch"]
-                elif msg["event"] == "epoch_end":
-                    self.epoch_size = max(self.epoch_size, self.last_batch_number + 1)
-                    self.add_datapoint(
-                        (self.epoch + 1) * self.epoch_size,
-                        msg["logs"]["loss"],
-                        "epoch_loss",
-                    )
-                    if "val_loss" in msg["logs"].keys():
-                        # update variables and add points to plot
-                        self.penultimate_epoch_val_loss = self.last_epoch_val_loss
-                        self.last_epoch_val_loss = msg["logs"]["val_loss"]
-                        self.add_datapoint(
-                            (self.epoch + 1) * self.epoch_size,
-                            msg["logs"]["val_loss"],
-                            "val_loss",
-                        )
-                        # calculate timing and flags at new epoch
-                        if self.penultimate_epoch_val_loss is not None:
-                            mean_epoch_time = (perf_counter() - self.t0) / (
-                                self.epoch + 1
-                            )
-                            self.mean_epoch_time_min, self.mean_epoch_time_sec = divmod(
-                                mean_epoch_time, 60
-                            )
-                            self.eta_ten_epochs_min = (mean_epoch_time * 10) // 60
-
-                            val_loss_delta = (
-                                self.penultimate_epoch_val_loss
-                                - self.last_epoch_val_loss
-                            )
-                            self.epoch_in_plateau_flag = (
-                                val_loss_delta
-                                < self.config.optimization.early_stopping.plateau_min_delta
-                            ) or (self.best_val_y < self.last_epoch_val_loss)
-                            self.epochs_in_plateau = (
-                                self.epochs_in_plateau + 1
-                                if self.epoch_in_plateau_flag
-                                else 0
-                            )
-                    self.on_epoch.emit()
-                elif msg["event"] == "batch_end":
-                    self.last_batch_number = msg["batch"]
-                    self.add_datapoint(
-                        (self.epoch * self.epoch_size) + msg["batch"],
-                        msg["logs"]["loss"],
-                        "batch",
-                    )
-
-            # Check for messages again (up to times_to_check times).
-            if times_to_check > 0:
-                self.check_messages(
-                    timeout=timeout, times_to_check=times_to_check - 1, do_update=False
-                )
-
-        if do_update:
-            self.update_runtime()
diff --git a/sleap/gui/widgets/video.py b/sleap/gui/widgets/video.py
index 502ea388e..08ee5bf36 100644
--- a/sleap/gui/widgets/video.py
+++ b/sleap/gui/widgets/video.py
@@ -62,6 +62,7 @@
     QShortcut,
     QVBoxLayout,
     QWidget,
+    QPinchGesture,
 )
 
 import sleap
@@ -240,6 +241,8 @@ def __init__(
 
         self._register_shortcuts()
 
+        self.context_menu = None
+        self._menu_actions = dict()
         if self.context:
             self.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
             self.customContextMenuRequested.connect(self.show_contextual_menu)
@@ -358,41 +361,54 @@ def add_shortcut(key, step):
     def setSeekbarSelection(self, a: int, b: int):
         self.seekbar.setSelection(a, b)
 
-    def show_contextual_menu(self, where: QtCore.QPoint):
-        if not self.is_menu_enabled:
-            return
+    def create_contextual_menu(self, scene_pos: QtCore.QPointF) -> QtWidgets.QMenu:
+        """Create the context menu for the viewer.
 
-        scene_pos = self.view.mapToScene(where)
-        menu = QtWidgets.QMenu()
+        This is called when the user right-clicks in the viewer. This function also
+        stores the menu actions in the `_menu_actions` attribute so that they can be
+        accessed later and stores the context menu in the `context_menu` attribute.
 
-        menu.addAction("Add Instance:").setEnabled(False)
+        Args:
+            scene_pos: The position in the scene where the menu was requested.
 
-        menu.addAction("Default", lambda: self.context.newInstance(init_method="best"))
+        Returns:
+            The created context menu.
+        """
 
-        menu.addAction(
-            "Average",
-            lambda: self.context.newInstance(
-                init_method="template", location=scene_pos
-            ),
-        )
+        self.context_menu = QtWidgets.QMenu()
+        self.context_menu.addAction("Add Instance:").setEnabled(False)
+
+        self._menu_actions = dict()
+        params_by_action_name = {
+            "Default": {"init_method": "best", "location": scene_pos},
+            "Average": {"init_method": "template", "location": scene_pos},
+            "Force Directed": {"init_method": "force_directed", "location": scene_pos},
+            "Copy Prior Frame": {"init_method": "prior_frame"},
+            "Random": {"init_method": "random", "location": scene_pos},
+        }
+        for action_name, params in params_by_action_name.items():
+            self._menu_actions[action_name] = self.context_menu.addAction(
+                action_name, lambda params=params: self.context.newInstance(**params)
+            )
 
-        menu.addAction(
-            "Force Directed",
-            lambda: self.context.newInstance(
-                init_method="force_directed", location=scene_pos
-            ),
-        )
+        return self.context_menu
 
-        menu.addAction(
-            "Copy Prior Frame",
-            lambda: self.context.newInstance(init_method="prior_frame"),
-        )
+    def show_contextual_menu(self, where: QtCore.QPoint):
+        """Show the context menu at the given position in the viewer.
 
-        menu.addAction(
-            "Random",
-            lambda: self.context.newInstance(init_method="random", location=scene_pos),
-        )
+        This is called when the user right-clicks in the viewer. This function calls
+        `create_contextual_menu` to create the menu and then shows the menu at the
+        given position.
 
+        Args:
+            where: The position in the viewer where the menu was requested.
+        """
+
+        if not self.is_menu_enabled:
+            return
+
+        scene_pos = self.view.mapToScene(where)
+        menu = self.create_contextual_menu(scene_pos)
         menu.exec_(self.mapToGlobal(where))
 
     def load_video(self, video: Video, plot=True):
@@ -808,6 +824,8 @@ def __init__(self, state=None, player=None, *args, **kwargs):
         # Set icon as default background.
         self.setImage(QImage(sleap.util.get_package_file("gui/background.png")))
 
+        self.grabGesture(Qt.GestureType.PinchGesture)
+
     def dragEnterEvent(self, event):
         if self.parentWidget():
             self.parentWidget().dragEnterEvent(event)
@@ -1147,8 +1165,13 @@ def mouseDoubleClickEvent(self, event: QMouseEvent):
         QGraphicsView.mouseDoubleClickEvent(self, event)
 
     def wheelEvent(self, event):
-        """Custom event handler. Zoom in/out based on scroll wheel change."""
-        # zoom on wheel when no mouse buttons are pressed
+        """Custom event handler to zoom in/out based on scroll wheel change.
+
+        We cannot use the default QGraphicsView.wheelEvent behavior since that will
+        scroll the view.
+        """
+
+        # Zoom on wheel when no mouse buttons are pressed
         if event.buttons() == Qt.NoButton:
             angle = event.angleDelta().y()
             factor = 1.1 if angle > 0 else 0.9
@@ -1156,20 +1179,10 @@ def wheelEvent(self, event):
             self.zoomFactor = max(factor * self.zoomFactor, 1)
             self.updateViewer()
 
-        # Trigger wheelEvent for all child elements. This is a bit of a hack.
-        # We can't use QGraphicsView.wheelEvent(self, event) since that will scroll
-        # view.
-        # We want to trigger for all children, since wheelEvent should continue rotating
-        # an skeleton even if the skeleton node/node label is no longer under the
-        # cursor.
-        # Note that children expect a QGraphicsSceneWheelEvent event, which is why we're
-        # explicitly ignoring TypeErrors. Everything seems to work fine since we don't
-        # care about the mouse position; if we did, we'd need to map pos to scene.
+        # Trigger only for rotation-relevant children (otherwise GUI crashes)
         for child in self.items():
-            try:
+            if isinstance(child, (QtNode, QtNodeLabel)):
                 child.wheelEvent(event)
-            except TypeError:
-                pass
 
     def keyPressEvent(self, event):
         """Custom event hander, disables default QGraphicsView behavior."""
@@ -1179,6 +1192,23 @@ def keyReleaseEvent(self, event):
         """Custom event hander, disables default QGraphicsView behavior."""
         event.ignore()  # Kicks the event up to parent
 
+    def event(self, event):
+        if event.type() == QtCore.QEvent.Gesture:
+            return self.handleGestureEvent(event)
+        return super().event(event)
+
+    def handleGestureEvent(self, event):
+        gesture = event.gesture(Qt.GestureType.PinchGesture)
+        if gesture:
+            self.handlePinchGesture(gesture)
+        return True
+
+    def handlePinchGesture(self, gesture: QPinchGesture):
+        if gesture.state() == Qt.GestureState.GestureUpdated:
+            factor = gesture.scaleFactor()
+            self.zoomFactor = max(factor * self.zoomFactor, 1)
+            self.updateViewer()
+
 
 class QtNodeLabel(QGraphicsTextItem):
     """
@@ -1560,7 +1590,6 @@ def mousePressEvent(self, event):
 
     def mouseMoveEvent(self, event):
         """Custom event handler for mouse move."""
-        # print(event)
         if self.dragParent:
             self.parentObject().mouseMoveEvent(event)
         else:
@@ -1571,7 +1600,6 @@ def mouseMoveEvent(self, event):
 
     def mouseReleaseEvent(self, event):
         """Custom event handler for mouse release."""
-        # print(event)
         self.unsetCursor()
         if self.dragParent:
             self.parentObject().mouseReleaseEvent(event)
@@ -1587,7 +1615,9 @@ def mouseReleaseEvent(self, event):
     def wheelEvent(self, event):
         """Custom event handler for mouse scroll wheel."""
         if self.dragParent:
-            angle = event.delta() / 20 + self.parentObject().rotation()
+            angle = (
+                event.angleDelta().x() + event.angleDelta().y()
+            ) / 20 + self.parentObject().rotation()
             self.parentObject().setRotation(angle)
             event.accept()
 
@@ -1598,6 +1628,10 @@ def mouseDoubleClickEvent(self, event: QMouseEvent):
             view = scene.views()[0]
             view.instanceDoubleClicked.emit(self.parentObject().instance, event)
 
+    def hoverEnterEvent(self, event):
+        """Custom event handler for mouse hover enter."""
+        return super().hoverEnterEvent(event)
+
 
 class QtEdge(QGraphicsPolygonItem):
     """
@@ -1797,6 +1831,7 @@ def __init__(
         self.labels = {}
         self.labels_shown = True
         self._selected = False
+        self._is_hovering = False
         self._bounding_rect = QRectF()
 
         # Show predicted instances behind non-predicted ones
@@ -1818,6 +1853,7 @@ def __init__(
         box_pen.setStyle(Qt.DashLine)
         box_pen.setCosmetic(True)
         self.box.setPen(box_pen)
+        self.setAcceptHoverEvents(True)
 
         # Add label for highlighted instance
         self.highlight_label = QtTextWithBackground(parent=self)
@@ -1979,7 +2015,12 @@ def updateBox(self, *args, **kwargs):
         select this instance.
         """
         # Only show box if instance is selected
-        op = 0.7 if self._selected else 0
+        op = 0
+        if self._selected:
+            op = 0.8
+        elif self._is_hovering:
+            op = 0.4
+
         self.box.setOpacity(op)
         # Update the position for the box
         rect = self.getPointsBoundingRect()
@@ -2073,6 +2114,16 @@ def paint(self, painter, option, widget=None):
         """Method required by Qt."""
         pass
 
+    def hoverEnterEvent(self, event):
+        self._is_hovering = True
+        self.updateBox()
+        return super().hoverEnterEvent(event)
+
+    def hoverLeaveEvent(self, event):
+        self._is_hovering = False
+        self.updateBox()
+        return super().hoverLeaveEvent(event)
+
 
 class VisibleBoundingBox(QtWidgets.QGraphicsRectItem):
     """QGraphicsRectItem for user instance bounding boxes.
@@ -2263,7 +2314,7 @@ def mouseReleaseEvent(self, event):
                 self.parent.nodes[node_key].setPos(new_x, new_y)
 
             # Update the instance
-            self.parent.updatePoints(complete=True, user_change=True)
+            self.parent.updatePoints(complete=False, user_change=True)
             self.resizing = None
 
 
diff --git a/sleap/info/feature_suggestions.py b/sleap/info/feature_suggestions.py
index 51f9038a5..a5f773fa7 100644
--- a/sleap/info/feature_suggestions.py
+++ b/sleap/info/feature_suggestions.py
@@ -644,7 +644,7 @@ class ParallelFeaturePipeline(object):
     def get(self, video_idx):
         """Apply pipeline to single video by idx. Can be called in process."""
         video_dict = self.videos_as_dicts[video_idx]
-        video = cattr.structure(video_dict, Video)
+        video = Video.cattr().structure(video_dict, Video)
         group_offset = video_idx * self.pipeline.n_clusters
 
         # t0 = time()
diff --git a/sleap/info/metrics.py b/sleap/info/metrics.py
index 2ac61d339..5bec077e4 100644
--- a/sleap/info/metrics.py
+++ b/sleap/info/metrics.py
@@ -10,75 +10,6 @@
 from sleap.io.dataset import Labels
 
 
-def matched_instance_distances(
-    labels_gt: Labels,
-    labels_pr: Labels,
-    match_lists_function: Callable,
-    frame_range: Optional[range] = None,
-) -> Tuple[List[int], np.ndarray, np.ndarray, np.ndarray]:
-
-    """
-    Distances between ground truth and predicted nodes over a set of frames.
-
-    Args:
-        labels_gt: the `Labels` object with ground truth data
-        labels_pr: the `Labels` object with predicted data
-        match_lists_function: function for determining corresponding instances
-            Takes two lists of instances and returns "sorted" lists.
-        frame_range (optional): range of frames for which to compare data
-            If None, we compare every frame in labels_gt with corresponding
-            frame in labels_pr.
-    Returns:
-        Tuple:
-        * frame indices map: instance idx (for other matrices) -> frame idx
-        * distance matrix: (instances * nodes)
-        * ground truth points matrix: (instances * nodes * 2)
-        * predicted points matrix: (instances * nodes * 2)
-    """
-
-    frame_idxs = []
-    points_gt = []
-    points_pr = []
-    for lf_gt in labels_gt.find(labels_gt.videos[0]):
-        frame_idx = lf_gt.frame_idx
-
-        # Get instances from ground truth/predicted labels
-        instances_gt = lf_gt.instances
-        lfs_pr = labels_pr.find(labels_pr.videos[0], frame_idx=frame_idx)
-        if len(lfs_pr):
-            instances_pr = lfs_pr[0].instances
-        else:
-            instances_pr = []
-
-        # Sort ground truth and predicted instances.
-        # We'll then compare points between corresponding items in lists.
-        # We can use different "match" functions depending on what we want.
-        sorted_gt, sorted_pr = match_lists_function(instances_gt, instances_pr)
-
-        # Convert lists of instances to (instances, nodes, 2) matrices.
-        # This allows match_lists_function to return data as either
-        # a list of Instances or a (instances, nodes, 2) matrix.
-        if type(sorted_gt[0]) != np.ndarray:
-            sorted_gt = list_points_array(sorted_gt)
-        if type(sorted_pr[0]) != np.ndarray:
-            sorted_pr = list_points_array(sorted_pr)
-
-        points_gt.append(sorted_gt)
-        points_pr.append(sorted_pr)
-        frame_idxs.extend([frame_idx] * len(sorted_gt))
-
-    # Convert arrays to numpy matrixes
-    # instances * nodes * (x,y)
-    points_gt = np.concatenate(points_gt)
-    points_pr = np.concatenate(points_pr)
-
-    # Calculate distances between corresponding nodes for all corresponding
-    # ground truth and predicted instances.
-    D = np.linalg.norm(points_gt - points_pr, axis=2)
-
-    return frame_idxs, D, points_gt, points_pr
-
-
 def match_instance_lists(
     instances_a: List[Union[Instance, PredictedInstance]],
     instances_b: List[Union[Instance, PredictedInstance]],
@@ -165,6 +96,75 @@ def match_instance_lists_nodewise(
     return instances_a, best_points_array
 
 
+def matched_instance_distances(
+    labels_gt: Labels,
+    labels_pr: Labels,
+    match_lists_function: Callable = match_instance_lists_nodewise,
+    frame_range: Optional[range] = None,
+) -> Tuple[List[int], np.ndarray, np.ndarray, np.ndarray]:
+
+    """
+    Distances between ground truth and predicted nodes over a set of frames.
+
+    Args:
+        labels_gt: the `Labels` object with ground truth data
+        labels_pr: the `Labels` object with predicted data
+        match_lists_function: function for determining corresponding instances
+            Takes two lists of instances and returns "sorted" lists.
+        frame_range (optional): range of frames for which to compare data
+            If None, we compare every frame in labels_gt with corresponding
+            frame in labels_pr.
+    Returns:
+        Tuple:
+        * frame indices map: instance idx (for other matrices) -> frame idx
+        * distance matrix: (instances * nodes)
+        * ground truth points matrix: (instances * nodes * 2)
+        * predicted points matrix: (instances * nodes * 2)
+    """
+
+    frame_idxs = []
+    points_gt = []
+    points_pr = []
+    for lf_gt in labels_gt.find(labels_gt.videos[0]):
+        frame_idx = lf_gt.frame_idx
+
+        # Get instances from ground truth/predicted labels
+        instances_gt = lf_gt.instances
+        lfs_pr = labels_pr.find(labels_pr.videos[0], frame_idx=frame_idx)
+        if len(lfs_pr):
+            instances_pr = lfs_pr[0].instances
+        else:
+            instances_pr = []
+
+        # Sort ground truth and predicted instances.
+        # We'll then compare points between corresponding items in lists.
+        # We can use different "match" functions depending on what we want.
+        sorted_gt, sorted_pr = match_lists_function(instances_gt, instances_pr)
+
+        # Convert lists of instances to (instances, nodes, 2) matrices.
+        # This allows match_lists_function to return data as either
+        # a list of Instances or a (instances, nodes, 2) matrix.
+        if type(sorted_gt[0]) != np.ndarray:
+            sorted_gt = list_points_array(sorted_gt)
+        if type(sorted_pr[0]) != np.ndarray:
+            sorted_pr = list_points_array(sorted_pr)
+
+        points_gt.append(sorted_gt)
+        points_pr.append(sorted_pr)
+        frame_idxs.extend([frame_idx] * len(sorted_gt))
+
+    # Convert arrays to numpy matrixes
+    # instances * nodes * (x,y)
+    points_gt = np.concatenate(points_gt)
+    points_pr = np.concatenate(points_pr)
+
+    # Calculate distances between corresponding nodes for all corresponding
+    # ground truth and predicted instances.
+    D = np.linalg.norm(points_gt - points_pr, axis=2)
+
+    return frame_idxs, D, points_gt, points_pr
+
+
 def point_dist(
     inst_a: Union[Instance, PredictedInstance],
     inst_b: Union[Instance, PredictedInstance],
@@ -238,46 +238,3 @@ def point_match_count(dist_array: np.ndarray, thresh: float = 5) -> int:
 def point_nonmatch_count(dist_array: np.ndarray, thresh: float = 5) -> int:
     """Given an array of distances, returns number which are not <= threshold."""
     return dist_array.shape[0] - point_match_count(dist_array, thresh)
-
-
-if __name__ == "__main__":
-
-    labels_gt = Labels.load_json("tests/data/json_format_v1/centered_pair.json")
-    labels_pr = Labels.load_json(
-        "tests/data/json_format_v2/centered_pair_predictions.json"
-    )
-
-    # OPTION 1
-
-    # Match each ground truth instance node to the closest corresponding node
-    # from any predicted instance in the same frame.
-
-    nodewise_matching_func = match_instance_lists_nodewise
-
-    # OPTION 2
-
-    # Match each ground truth instance to a distinct predicted instance:
-    # We want to maximize the number of "matching" points between instances,
-    # where "match" means the points are within some threshold distance.
-    # Note that each sorted list will be as long as the shorted input list.
-
-    instwise_matching_func = lambda gt_list, pr_list: match_instance_lists(
-        gt_list, pr_list, point_nonmatch_count
-    )
-
-    # PICK THE FUNCTION
-
-    inst_matching_func = nodewise_matching_func
-    # inst_matching_func = instwise_matching_func
-
-    # Calculate distances
-    frame_idxs, D, points_gt, points_pr = matched_instance_distances(
-        labels_gt, labels_pr, inst_matching_func
-    )
-
-    # Show mean difference for each node
-    node_names = labels_gt.skeletons[0].node_names
-
-    for node_idx, node_name in enumerate(node_names):
-        mean_d = np.nanmean(D[..., node_idx])
-        print(f"{node_name}\t\t{mean_d}")
diff --git a/sleap/info/summary.py b/sleap/info/summary.py
index c6a6af60e..0cad1617e 100644
--- a/sleap/info/summary.py
+++ b/sleap/info/summary.py
@@ -21,7 +21,7 @@ class StatisticSeries:
     are frame index and value are some numerical value for the frame.
 
     Args:
-        labels: The :class:`Labels` for which to calculate series.
+        labels: The `Labels` for which to calculate series.
     """
 
     labels: Labels
@@ -41,7 +41,7 @@ def get_point_score_series(
         """Get series with statistic of point scores in each frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to scores:
                 * sum
                 * min
@@ -67,7 +67,7 @@ def get_instance_score_series(self, video, reduction="sum") -> Dict[int, float]:
         """Get series with statistic of instance scores in each frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to scores:
                 * sum
                 * min
@@ -93,7 +93,7 @@ def get_point_displacement_series(self, video, reduction="sum") -> Dict[int, flo
         same track) from the closest earlier labeled frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to point scores:
                 * sum
                 * mean
@@ -121,7 +121,7 @@ def get_primary_point_displacement_series(
         Get sum of displacement for single node of each instance per frame.
 
         Args:
-            video: The :class:`Video` for which to calculate statistic.
+            video: The `Video` for which to calculate statistic.
             reduction: name of function applied to point scores:
                 * sum
                 * mean
@@ -226,7 +226,7 @@ def _calculate_frame_velocity(
         Calculate total point displacement between two given frames.
 
         Args:
-            lf: The :class:`LabeledFrame` for which we want velocity
+            lf: The `LabeledFrame` for which we want velocity
             last_lf: The frame from which to calculate displacement.
             reduce_function: Numpy function (e.g., np.sum, np.nanmean)
                 is applied to *point* displacement, and then those
@@ -246,3 +246,35 @@ def _calculate_frame_velocity(
                     inst_dist = reduce_function(point_dist)
                     val += inst_dist if not np.isnan(inst_dist) else 0
         return val
+
+    def get_tracking_score_series(
+        self, video: Video, reduction: str = "min"
+    ) -> Dict[int, float]:
+        """Get series with statistic of tracking scores in each frame.
+
+        Args:
+            video: The `Video` for which to calculate statistic.
+            reduction: name of function applied to scores:
+                * mean
+                * min
+
+        Returns:
+            The series dictionary (see class docs for details)
+        """
+        reduce_fn = {
+            "min": np.nanmin,
+            "mean": np.nanmean,
+        }[reduction]
+
+        series = dict()
+
+        for lf in self.labels.find(video):
+            vals = [
+                inst.tracking_score for inst in lf if hasattr(inst, "tracking_score")
+            ]
+            if vals:
+                val = reduce_fn(vals)
+                if not np.isnan(val):
+                    series[lf.frame_idx] = val
+
+        return series
diff --git a/sleap/instance.py b/sleap/instance.py
index c14038552..382ececf2 100644
--- a/sleap/instance.py
+++ b/sleap/instance.py
@@ -364,7 +364,7 @@ class Instance:
     from_predicted: Optional["PredictedInstance"] = attr.ib(default=None)
     _points: PointArray = attr.ib(default=None)
     _nodes: List = attr.ib(default=None)
-    frame: Union["LabeledFrame", None] = attr.ib(default=None)
+    frame: Union["LabeledFrame", None] = attr.ib(default=None)  # TODO(LM): Make private
 
     # The underlying Point array type that this instances point array should be.
     _point_array_type = PointArray
@@ -1049,7 +1049,9 @@ def scores(self) -> np.ndarray:
         return self.points_and_scores_array[:, 2]
 
     @classmethod
-    def from_instance(cls, instance: Instance, score: float) -> "PredictedInstance":
+    def from_instance(
+        cls, instance: Instance, score: float, tracking_score: float = 0.0
+    ) -> "PredictedInstance":
         """Create a `PredictedInstance` from an `Instance`.
 
         The fields are copied in a shallow manner with the exception of points. For each
@@ -1059,6 +1061,7 @@ def from_instance(cls, instance: Instance, score: float) -> "PredictedInstance":
         Args:
             instance: The `Instance` object to shallow copy data from.
             score: The score for this instance.
+            tracking_score: The tracking score for this instance.
 
         Returns:
             A `PredictedInstance` for the given `Instance`.
@@ -1070,6 +1073,7 @@ def from_instance(cls, instance: Instance, score: float) -> "PredictedInstance":
         )
         kw_args["points"] = PredictedPointArray.from_array(instance._points)
         kw_args["score"] = score
+        kw_args["tracking_score"] = tracking_score
         return cls(**kw_args)
 
     @classmethod
@@ -1080,6 +1084,7 @@ def from_arrays(
         instance_score: float,
         skeleton: Skeleton,
         track: Optional[Track] = None,
+        tracking_score: float = 0.0,
     ) -> "PredictedInstance":
         """Create a predicted instance from data arrays.
 
@@ -1094,6 +1099,7 @@ def from_arrays(
             skeleton: A sleap.Skeleton instance with n_nodes nodes to associate with the
                 predicted instance.
             track: Optional `sleap.Track` to associate with the instance.
+            tracking_score: Optional float representing the track matching score.
 
         Returns:
             A new `PredictedInstance`.
@@ -1114,6 +1120,7 @@ def from_arrays(
             skeleton=skeleton,
             score=instance_score,
             track=track,
+            tracking_score=tracking_score,
         )
 
     @classmethod
@@ -1124,6 +1131,7 @@ def from_pointsarray(
         instance_score: float,
         skeleton: Skeleton,
         track: Optional[Track] = None,
+        tracking_score: float = 0.0,
     ) -> "PredictedInstance":
         """Create a predicted instance from data arrays.
 
@@ -1138,12 +1146,18 @@ def from_pointsarray(
             skeleton: A sleap.Skeleton instance with n_nodes nodes to associate with the
                 predicted instance.
             track: Optional `sleap.Track` to associate with the instance.
+            tracking_score: Optional float representing the track matching score.
 
         Returns:
             A new `PredictedInstance`.
         """
         return cls.from_arrays(
-            points, point_confidences, instance_score, skeleton, track=track
+            points,
+            point_confidences,
+            instance_score,
+            skeleton,
+            track=track,
+            tracking_score=tracking_score,
         )
 
     @classmethod
@@ -1154,6 +1168,7 @@ def from_numpy(
         instance_score: float,
         skeleton: Skeleton,
         track: Optional[Track] = None,
+        tracking_score: float = 0.0,
     ) -> "PredictedInstance":
         """Create a predicted instance from data arrays.
 
@@ -1168,12 +1183,18 @@ def from_numpy(
             skeleton: A sleap.Skeleton instance with n_nodes nodes to associate with the
                 predicted instance.
             track: Optional `sleap.Track` to associate with the instance.
+            tracking_score: Optional float representing the track matching score.
 
         Returns:
             A new `PredictedInstance`.
         """
         return cls.from_arrays(
-            points, point_confidences, instance_score, skeleton, track=track
+            points,
+            point_confidences,
+            instance_score,
+            skeleton,
+            track=track,
+            tracking_score=tracking_score,
         )
 
 
@@ -1214,6 +1235,9 @@ def unstructure_instance(x: Instance):
 
     converter.register_unstructure_hook(Instance, unstructure_instance)
     converter.register_unstructure_hook(PredictedInstance, unstructure_instance)
+    converter.register_unstructure_hook(
+        InstancesList, lambda x: [converter.unstructure(inst) for inst in x]
+    )
 
     ## STRUCTURE HOOKS
 
@@ -1229,35 +1253,37 @@ def structure_points(x, type):
     def structure_instances_list(x, type):
         inst_list = []
         for inst_data in x:
-            if "score" in inst_data.keys():
-                inst = converter.structure(inst_data, PredictedInstance)
-            else:
-                if (
-                    "from_predicted" in inst_data
-                    and inst_data["from_predicted"] is not None
-                ):
-                    inst_data["from_predicted"] = converter.structure(
-                        inst_data["from_predicted"], PredictedInstance
-                    )
-                inst = converter.structure(inst_data, Instance)
+            inst = structure_instance(inst_data, type)
             inst_list.append(inst)
 
         return inst_list
 
+    def structure_instance(inst_data, type):
+        """Structure hook for Instance and PredictedInstance objects."""
+        from_predicted = None
+
+        if "score" in inst_data.keys():
+            inst = converter.structure(inst_data, PredictedInstance)
+        else:
+            if (
+                "from_predicted" in inst_data
+                and inst_data["from_predicted"] is not None
+            ):
+                from_predicted = converter.structure(
+                    inst_data["from_predicted"], PredictedInstance
+                )
+                # Remove the from_predicted key. We'll add it back afterwards.
+                inst_data["from_predicted"] = None
+
+            # Structure the instance data, then add the from_predicted attribute.
+            inst = converter.structure(inst_data, Instance)
+            inst.from_predicted = from_predicted
+        return inst
+
     converter.register_structure_hook(
         Union[List[Instance], List[PredictedInstance]], structure_instances_list
     )
-
-    # Structure forward reference for PredictedInstance for the Instance.from_predicted
-    # attribute.
-    converter.register_structure_hook_func(
-        lambda t: t.__class__ is ForwardRef,
-        lambda v, t: converter.structure(v, t.__forward_value__),
-    )
-    # converter.register_structure_hook(
-    #     ForwardRef("PredictedInstance"),
-    #     lambda x, _: converter.structure(x, PredictedInstance),
-    # )
+    converter.register_structure_hook(InstancesList, structure_instances_list)
 
     # We can register structure hooks for point arrays that do nothing
     # because Instance can have a dict of points passed to it in place of
@@ -1278,6 +1304,127 @@ def structure_point_array(x, t):
     return converter
 
 
+class InstancesList(list):
+    """A list of `Instance`s associated with a `LabeledFrame`.
+
+    This class should only be used for the `LabeledFrame.instances` attribute.
+    """
+
+    def __init__(self, *args, labeled_frame: Optional["LabeledFrame"] = None):
+        super(InstancesList, self).__init__(*args)
+
+        # Set the labeled frame for each instance
+        self.labeled_frame = labeled_frame
+
+    @property
+    def labeled_frame(self) -> "LabeledFrame":
+        """Return the `LabeledFrame` associated with this list of instances."""
+
+        return self._labeled_frame
+
+    @labeled_frame.setter
+    def labeled_frame(self, labeled_frame: "LabeledFrame"):
+        """Set the `LabeledFrame` associated with this list of instances.
+
+        This updates the `frame` attribute on each instance.
+
+        Args:
+            labeled_frame: The `LabeledFrame` to associate with this list of instances.
+        """
+
+        try:
+            # If the labeled frame is the same as the one we're setting, then skip
+            if self._labeled_frame == labeled_frame:
+                return
+        except AttributeError:
+            # Only happens on init and updates each instance.frame (even if None)
+            pass
+
+        # Otherwise, update the frame for each instance
+        self._labeled_frame = labeled_frame
+        for instance in self:
+            instance.frame = labeled_frame
+
+    def append(self, instance: Union[Instance, PredictedInstance]):
+        """Append an `Instance` or `PredictedInstance` to the list, setting the frame.
+
+        Args:
+            item: The `Instance` or `PredictedInstance` to append to the list.
+        """
+
+        if not isinstance(instance, (Instance, PredictedInstance)):
+            raise ValueError(
+                f"InstancesList can only contain Instance or PredictedInstance objects,"
+                f" but got {type(instance)}."
+            )
+        instance.frame = self.labeled_frame
+        super().append(instance)
+
+    def extend(self, instances: List[Union[PredictedInstance, Instance]]):
+        """Extend the list with a list of `Instance`s or `PredictedInstance`s.
+
+        Args:
+            instances: A list of `Instance` or `PredictedInstance` objects to add to the
+                list.
+
+        Returns:
+            None
+        """
+        for instance in instances:
+            self.append(instance)
+
+    def __delitem__(self, index):
+        """Remove instance (by index), and set instance.frame to None."""
+
+        instance: Instance = self.__getitem__(index)
+        super().__delitem__(index)
+
+        # Modify the instance to remove reference to the frame
+        instance.frame = None
+
+    def insert(self, index: int, instance: Union[Instance, PredictedInstance]) -> None:
+        super().insert(index, instance)
+        instance.frame = self.labeled_frame
+
+    def __setitem__(self, index, instance: Union[Instance, PredictedInstance]):
+        """Set nth instance in frame to the given instance.
+
+        Args:
+            index: The index of instance to replace with new instance.
+            value: The new instance to associate with frame.
+
+        Returns:
+            None.
+        """
+        super().__setitem__(index, instance)
+        instance.frame = self.labeled_frame
+
+    def pop(self, index: int) -> Union[Instance, PredictedInstance]:
+        """Remove and return instance at index, setting instance.frame to None."""
+
+        instance = super().pop(index)
+        instance.frame = None
+        return instance
+
+    def remove(self, instance: Union[Instance, PredictedInstance]) -> None:
+        """Remove instance from list, setting instance.frame to None."""
+        super().remove(instance)
+        instance.frame = None
+
+    def clear(self) -> None:
+        """Remove all instances from list, setting instance.frame to None."""
+        for instance in self:
+            instance.frame = None
+        super().clear()
+
+    def copy(self) -> list:
+        """Return a shallow copy of the list of instances as a list.
+
+        Note: This will not return an `InstancesList` object, but a normal list.
+        """
+        return list(self)
+
+
 @attr.s(auto_attribs=True, eq=False, repr=False, str=False)
 class LabeledFrame:
     """Holds labeled data for a single frame of a video.
@@ -1290,9 +1437,7 @@ class LabeledFrame:
 
     video: Video = attr.ib()
     frame_idx: int = attr.ib(converter=int)
-    _instances: Union[List[Instance], List[PredictedInstance]] = attr.ib(
-        default=attr.Factory(list)
-    )
+    _instances: InstancesList = attr.ib(default=attr.Factory(InstancesList))
 
     def __attrs_post_init__(self):
         """Called by attrs.
@@ -1302,8 +1447,7 @@ def __attrs_post_init__(self):
         """
 
         # Make sure all instances have a reference to this frame
-        for instance in self.instances:
-            instance.frame = self
+        self.instances = self._instances
 
     def __len__(self) -> int:
         """Return number of instances associated with frame."""
@@ -1319,13 +1463,8 @@ def index(self, value: Instance) -> int:
 
     def __delitem__(self, index):
         """Remove instance (by index) from frame."""
-        value = self.instances.__getitem__(index)
-
         self.instances.__delitem__(index)
 
-        # Modify the instance to remove reference to this frame
-        value.frame = None
-
     def __repr__(self) -> str:
         """Return a readable representation of the LabeledFrame."""
         return (
@@ -1348,9 +1487,6 @@ def insert(self, index: int, value: Instance):
         """
         self.instances.insert(index, value)
 
-        # Modify the instance to have a reference back to this frame
-        value.frame = self
-
     def __setitem__(self, index, value: Instance):
         """Set nth instance in frame to the given instance.
 
@@ -1363,9 +1499,6 @@ def __setitem__(self, index, value: Instance):
         """
         self.instances.__setitem__(index, value)
 
-        # Modify the instance to have a reference back to this frame
-        value.frame = self
-
     def find(
         self, track: Optional[Union[Track, int]] = -1, user: bool = False
     ) -> List[Instance]:
@@ -1393,7 +1526,7 @@ def instances(self) -> List[Instance]:
         return self._instances
 
     @instances.setter
-    def instances(self, instances: List[Instance]):
+    def instances(self, instances: Union[InstancesList, List[Instance]]):
         """Set the list of instances associated with this frame.
 
         Updates the `frame` attribute on each instance to the
@@ -1408,9 +1541,11 @@ def instances(self, instances: List[Instance]):
             None
         """
 
-        # Make sure to set the frame for each instance to this LabeledFrame
-        for instance in instances:
-            instance.frame = self
+        # Make sure to set the LabeledFrame for each instance to this frame
+        if isinstance(instances, InstancesList):
+            instances.labeled_frame = self
+        else:
+            instances = InstancesList(instances, labeled_frame=self)
 
         self._instances = instances
 
@@ -1685,22 +1820,20 @@ def complex_frame_merge(
             * list of conflicting instances from base
             * list of conflicting instances from new
         """
-        merged_instances = []
-        redundant_instances = []
-        extra_base_instances = copy(base_frame.instances)
-        extra_new_instances = []
+        merged_instances: List[Instance] = []  # Only used for informing user
+        redundant_instances: List[Instance] = []
+        extra_base_instances: List[Instance] = list(base_frame.instances)
+        extra_new_instances: List[Instance] = []
 
         for new_inst in new_frame:
             redundant = False
             for base_inst in base_frame.instances:
                 if new_inst.matches(base_inst):
-                    base_inst.frame = None
                     extra_base_instances.remove(base_inst)
                     redundant_instances.append(base_inst)
                     redundant = True
                     continue
             if not redundant:
-                new_inst.frame = None
                 extra_new_instances.append(new_inst)
 
         conflict = False
@@ -1732,7 +1865,7 @@ def complex_frame_merge(
         else:
             # No conflict, so include all instances in base
             base_frame.instances.extend(extra_new_instances)
-            merged_instances = copy(extra_new_instances)
+            merged_instances: List[Instance] = copy(extra_new_instances)
             extra_base_instances = []
             extra_new_instances = []
 
diff --git a/sleap/io/asyncvideo.py b/sleap/io/asyncvideo.py
deleted file mode 100644
index c48d21a8b..000000000
--- a/sleap/io/asyncvideo.py
+++ /dev/null
@@ -1,218 +0,0 @@
-"""
-Support for loading video frames (by chunk) in background process.
-"""
-
-from sleap import Video
-from sleap.message import PairedSender, PairedReceiver
-
-import cattr
-import logging
-import time
-import numpy as np
-from math import ceil
-from multiprocessing import Process
-from typing import Iterable, Iterator, List, Optional, Tuple
-
-
-logger = logging.getLogger(__name__)
-
-
-class AsyncVideo:
-    """Supports fetching chunks from video in background process."""
-
-    def __init__(self, base_port: int = 9010):
-        self.base_port = base_port
-
-        # Spawn the server as a background process
-        self.server = AsyncVideoServer(self.base_port)
-        self.server.start()
-
-        # Create sender/receiver for sending requests and receiving data via ZMQ
-        sender = PairedSender.from_tcp_ports(self.base_port, self.base_port + 1)
-        result_receiver = PairedReceiver.from_tcp_ports(
-            send_port=self.base_port + 2, rec_port=self.base_port + 3
-        )
-
-        sender.setup()
-        result_receiver.setup()
-
-        self.sender = sender
-        self.receiver = result_receiver
-
-        # Use "handshake" to ensure that initial messages aren't dropped
-        self.handshake_success = sender.send_handshake()
-
-    def close(self):
-        """Close the async video server and communication ports."""
-        if self.sender and self.server:
-            self.sender.send_dict(dict(stop=True))
-            self.server.join()
-
-        self.server = None
-
-        if self.sender:
-            self.sender.close()
-            self.sender = None
-
-        if self.receiver:
-            self.receiver.close()
-            self.receiver = None
-
-    def __del__(self):
-        self.close()
-
-    @classmethod
-    def from_video(
-        cls,
-        video: Video,
-        frame_idxs: Optional[Iterable[int]] = None,
-        frames_per_chunk: int = 64,
-    ) -> "AsyncVideo":
-        """Create object and start loading frames in background process."""
-        obj = cls()
-        obj.load_by_chunk(
-            video=video, frame_idxs=frame_idxs, frames_per_chunk=frames_per_chunk
-        )
-        return obj
-
-    def load_by_chunk(
-        self,
-        video: Video,
-        frame_idxs: Optional[Iterable[int]] = None,
-        frames_per_chunk: int = 64,
-    ):
-        """
-        Sends request for loading video in background process.
-
-        Args:
-            video: The :py:class:`Video` to load
-            frame_idxs: Frame indices we want to load; if None, then full video
-                is loaded.
-            frames_per_chunk: How many frames to load per chunk.
-
-        Returns:
-            None, data should be accessed via :py:method:`chunks`.
-        """
-        # prime the video since this seems to make frames load faster (!?)
-        video.test_frame
-
-        request_dict = dict(
-            video=cattr.unstructure(video), frames_per_chunk=frames_per_chunk
-        )
-        # if no frames are specified, whole video will be loaded
-        if frame_idxs is not None:
-            request_dict["frame_idxs"] = list(frame_idxs)
-
-        # send the request
-        self.sender.send_dict(request_dict)
-
-    @property
-    def chunks(self) -> Iterator[Tuple[List[int], np.ndarray]]:
-        """
-        Generator for fetching chunks of frames.
-
-        When all chunks are loaded, closes the server and communication ports.
-
-        Yields:
-             Tuple with (list of frame indices, ndarray of frames)
-        """
-        done = False
-        while not done:
-            results = self.receiver.check_messages()
-            if results:
-                for result in results:
-                    yield result["frame_idxs"], result["ndarray"]
-
-                    if result["chunk"] == result["last_chunk"]:
-                        done = True
-
-        # automatically close when all chunks have been received
-        self.close()
-
-
-class AsyncVideoServer(Process):
-    """
-    Class which loads video frames in background on request.
-
-    All interactions with video server should go through :py:class:`AsyncVideo`
-    which runs in local thread.
-    """
-
-    def __init__(self, base_port: int):
-        super(AsyncVideoServer, self).__init__()
-
-        self.video = None
-        self.base_port = base_port
-
-    def run(self):
-        receiver = PairedReceiver.from_tcp_ports(self.base_port + 1, self.base_port)
-        receiver.setup()
-
-        result_sender = PairedSender.from_tcp_ports(
-            send_port=self.base_port + 3, rec_port=self.base_port + 2
-        )
-        result_sender.setup()
-
-        running = True
-        while running:
-            requests = receiver.check_messages()
-            if requests:
-
-                for request in requests:
-
-                    if "stop" in request:
-                        running = False
-                        logger.debug("stopping async video server")
-                        break
-
-                    if "video" in request:
-                        self.video = cattr.structure(request["video"], Video)
-                        logger.debug(f"loaded video: {self.video.filename}")
-
-                    if self.video is not None:
-                        if "frames_per_chunk" in request:
-
-                            load_time = 0
-                            send_time = 0
-
-                            per_chunk = request["frames_per_chunk"]
-
-                            frame_idxs = request.get(
-                                "frame_idxs", list(range(self.video.frames))
-                            )
-
-                            frame_count = len(frame_idxs)
-                            chunks = ceil(frame_count / per_chunk)
-
-                            for chunk_idx in range(chunks):
-                                start = per_chunk * chunk_idx
-                                end = min(per_chunk * (chunk_idx + 1), frame_count)
-                                chunk_frame_idxs = frame_idxs[start:end]
-
-                                # load the frames
-                                t0 = time.time()
-                                frames = self.video[chunk_frame_idxs]
-                                t1 = time.time()
-                                load_time += t1 - t0
-
-                                metadata = dict(
-                                    chunk=chunk_idx,
-                                    last_chunk=chunks - 1,
-                                    frame_idxs=chunk_frame_idxs,
-                                )
-
-                                # send back results
-                                t0 = time.time()
-                                result_sender.send_array(metadata, frames)
-                                t1 = time.time()
-                                send_time += t1 - t0
-
-                                logger.debug(f"returned chunk: {chunk_idx+1}/{chunks}")
-
-                            logger.debug(f"total load time: {load_time}")
-                            logger.debug(f"total send time: {send_time}")
-                    else:
-                        logger.warning(
-                            "unable to process message since no video loaded"
-                        )
-                        logger.warning(request)
diff --git a/sleap/io/convert.py b/sleap/io/convert.py
index 3353a169b..7045ed71f 100644
--- a/sleap/io/convert.py
+++ b/sleap/io/convert.py
@@ -70,6 +70,7 @@ def create_parser():
         help="Output format. Default ('slp') is SLEAP dataset; "
         "'analysis' results in analysis.h5 file; "
         "'analysis.nix' results in an analysis nix file;"
+        "'analysis.csv' results in an analysis csv file;"
         "'h5' or 'json' results in SLEAP dataset "
         "with specified file format.",
     )
@@ -135,7 +136,12 @@ def main(args: list = None):
         outnames = [path for path in args.outputs]
         if len(outnames) < len(vids):
             # if there are less outnames provided than videos to convert...
-            out_suffix = "nix" if "nix" in args.format else "h5"
+            if "nix" in args.format:
+                out_suffix = "nix"
+            elif "csv" in args.format:
+                out_suffix = "csv"
+            else:
+                out_suffix = "h5"
             fn = args.input_path
             fn = re.sub("(\.json(\.zip)?|\.h5|\.slp)$", "", fn)
             fn = PurePath(fn)
@@ -158,6 +164,20 @@ def main(args: list = None):
                     NixAdaptor.write(outname, labels, args.input_path, video)
                 except ValueError as e:
                     print(e.args[0])
+
+        elif "csv" in args.format:
+            from sleap.info.write_tracking_h5 import main as write_analysis
+
+            for video, output_path in zip(vids, outnames):
+                write_analysis(
+                    labels,
+                    output_path=output_path,
+                    labels_path=args.input_path,
+                    all_frames=True,
+                    video=video,
+                    csv=True,
+                )
+
         else:
             from sleap.info.write_tracking_h5 import main as write_analysis
 
diff --git a/sleap/io/dataset.py b/sleap/io/dataset.py
index 45280cc54..1b894089f 100644
--- a/sleap/io/dataset.py
+++ b/sleap/io/dataset.py
@@ -2055,6 +2055,19 @@ def export(self, filename: str):
 
         SleapAnalysisAdaptor.write(filename, self)
 
+    def export_csv(self, filename: str):
+        """Export labels to CSV format.
+
+        Args:
+            filename: Output path for the CSV format file.
+
+        Notes:
+            This will write the contents of the labels out as a CSV file.
+        """
+        from sleap.io.format.csv import CSVAdaptor
+
+        CSVAdaptor.write(filename, self)
+
     def export_nwb(
         self,
         filename: str,
diff --git a/sleap/io/format/coco.py b/sleap/io/format/coco.py
index 25122e4d0..44e7fb84a 100644
--- a/sleap/io/format/coco.py
+++ b/sleap/io/format/coco.py
@@ -180,6 +180,9 @@ def read(
 
                 if flag == 0:
                     # node not labeled for this instance
+                    if (x, y) != (0, 0):
+                        # If labeled but invisible, place the node at the coord
+                        points[node] = Point(x, y, False)
                     continue
 
                 is_visible = flag == 2
diff --git a/sleap/io/format/deeplabcut.py b/sleap/io/format/deeplabcut.py
index bb5dc3410..5892dba1a 100644
--- a/sleap/io/format/deeplabcut.py
+++ b/sleap/io/format/deeplabcut.py
@@ -19,10 +19,10 @@
 import numpy as np
 import pandas as pd
 
-from typing import List, Optional
+from typing import List, Optional, Dict
 
 from sleap import Labels, Video, Skeleton
-from sleap.instance import Instance, LabeledFrame, Point
+from sleap.instance import Instance, LabeledFrame, Point, Track
 from sleap.util import find_files_by_suffix
 
 from .adaptor import Adaptor, SleapObjectType
@@ -119,11 +119,12 @@ def read_frames(
 
             # Pull out animal and node names from the columns.
             start_col = 3 if is_new_format else 1
-            animal_names = []
+            tracks: Dict[str, Optional[Track]] = {}
             node_names = []
             for animal_name, node_name, _ in data.columns[start_col:][::2]:
-                if animal_name not in animal_names:
-                    animal_names.append(animal_name)
+                # Keep the starting frame index for each individual/track
+                if animal_name not in tracks.keys():
+                    tracks[animal_name] = None
                 if node_name not in node_names:
                     node_names.append(node_name)
 
@@ -177,23 +178,33 @@ def read_frames(
 
             instances = []
             if is_multianimal:
-                for animal_name in animal_names:
+                for animal_name in tracks.keys():
                     any_not_missing = False
                     # Get points for each node.
                     instance_points = dict()
                     for node in node_names:
-                        x, y = (
-                            data[(animal_name, node, "x")][i],
-                            data[(animal_name, node, "y")][i],
-                        )
+                        if (animal_name, node) in data.columns:
+                            x, y = (
+                                data[(animal_name, node, "x")][i],
+                                data[(animal_name, node, "y")][i],
+                            )
+                        else:
+                            x, y = np.nan, np.nan
                         instance_points[node] = Point(x, y)
                         if ~(np.isnan(x) and np.isnan(y)):
                             any_not_missing = True
 
                     if any_not_missing:
+                        # Create track
+                        if tracks[animal_name] is None:
+                            tracks[animal_name] = Track(spawned_on=i, name=animal_name)
                         # Create instance with points.
                         instances.append(
-                            Instance(skeleton=skeleton, points=instance_points)
+                            Instance(
+                                skeleton=skeleton,
+                                points=instance_points,
+                                track=tracks[animal_name],
+                            )
                         )
             else:
                 # Get points for each node.
@@ -270,6 +281,8 @@ def read(
         skeleton = Skeleton()
         if project_data.get("multianimalbodyparts", False):
             skeleton.add_nodes(project_data["multianimalbodyparts"])
+            if "uniquebodyparts" in project_data:
+                skeleton.add_nodes(project_data["uniquebodyparts"])
         else:
             skeleton.add_nodes(project_data["bodyparts"])
 
@@ -298,13 +311,24 @@ def read(
                 # If subdirectory is foo, we look for foo.mp4 in videos dir.
 
                 shortname = os.path.split(data_subdir)[-1]
-                video_path = os.path.join(videos_dir, f"{shortname}.mp4")
-
-                if os.path.exists(video_path):
+                video_path = None
+                if os.path.exists(videos_dir):
+                    with os.scandir(videos_dir) as file_iterator:
+                        for file in file_iterator:
+                            if not file.is_file():
+                                continue
+                            if os.path.splitext(file.name)[0] != shortname:
+                                continue
+                            video_path = os.path.join(videos_dir, file.name)
+                            break
+
+                if video_path is not None and os.path.exists(video_path):
                     video = Video.from_filename(video_path)
                 else:
                     # When no video is found, the individual frame images
                     # stored in the labeled data subdir will be used.
+                    if video_path is None:
+                        video_path = os.path.join(videos_dir, f"{shortname}.mp4")
                     print(
                         f"Unable to find {video_path} so using individual frame images."
                     )
diff --git a/sleap/io/format/hdf5.py b/sleap/io/format/hdf5.py
index 353f88e3a..55a30d74f 100644
--- a/sleap/io/format/hdf5.py
+++ b/sleap/io/format/hdf5.py
@@ -81,7 +81,10 @@ def read_headers(
 
         # Extract the Labels JSON metadata and create Labels object with just this
         # metadata.
-        dicts = json_loads(f.require_group("metadata").attrs["json"].tobytes().decode())
+        json = f.require_group("metadata").attrs["json"]
+        if not isinstance(json, str):
+            json = json.tobytes().decode()
+        dicts = json_loads(json)
 
         # These items are stored in separate lists because the metadata group got to be
         # too big.
@@ -151,6 +154,45 @@ def read(
             points_dset[:]["x"] -= 0.5
             points_dset[:]["y"] -= 0.5
 
+        def cast_as_compound(arr, dtype):
+            out = np.empty(shape=(len(arr),), dtype=dtype)
+            if out.size == 0:
+                return out
+            for i, (name, _) in enumerate(dtype):
+                out[name] = arr[:, i]
+            return out
+
+        # cast points, instances, and frames into complex dtype if not already
+        dtype_points = [("x", "<f8"), ("y", "<f8"), ("visible", "?"), ("complete", "?")]
+        if points_dset.dtype.kind != "V":
+            points_dset = cast_as_compound(points_dset, dtype_points)
+        if pred_points_dset.dtype.kind != "V":
+            pred_points_dset = cast_as_compound(pred_points_dset, dtype_points)
+
+        dtype_instances = [
+            ("instance_id", "<i8"),
+            ("instance_type", "u1"),
+            ("frame_id", "<u8"),
+            ("skeleton", "<u4"),
+            ("track", "<i4"),
+            ("from_predicted", "<i8"),
+            ("score", "<f4"),
+            ("point_id_start", "<u8"),
+            ("point_id_end", "<u8"),
+        ]
+        if instances_dset.dtype.kind != "V":
+            instances_dset = cast_as_compound(instances_dset, dtype_instances)
+
+        dtype_frames = [
+            ("frame_id", "<u8"),
+            ("video", "<u4"),
+            ("frame_idx", "<u8"),
+            ("instance_id_start", "<u8"),
+            ("instance_id_end", "<u8"),
+        ]
+        if frames_dset.dtype.kind != "V":
+            frames_dset = cast_as_compound(frames_dset, dtype_frames)
+
         # Rather than instantiate a bunch of Point\PredictedPoint objects, we will use
         # inplace numpy recarrays. This will save a lot of time and memory when reading
         # things in.
@@ -283,9 +325,10 @@ def write(
             if append and "json" in meta_group.attrs:
 
                 # Otherwise, we need to read the JSON and append to the lists
-                old_labels = labels_json.LabelsJsonAdaptor.from_json_data(
-                    meta_group.attrs["json"].tobytes().decode()
-                )
+                json = meta_group.attrs["json"]
+                if not isinstance(json, str):
+                    json = json.tobytes().decode()
+                old_labels = labels_json.LabelsJsonAdaptor.from_json_data(json)
 
                 # A function to join to list but only include new non-dupe entries
                 # from the right hand list.
diff --git a/sleap/io/format/sleap_analysis.py b/sleap/io/format/sleap_analysis.py
index cc6eedb6f..b25ac39d7 100644
--- a/sleap/io/format/sleap_analysis.py
+++ b/sleap/io/format/sleap_analysis.py
@@ -78,7 +78,7 @@ def read(
         # shape: frames * nodes * 2 * tracks
         frame_count, node_count, _, track_count = tracks_matrix.shape
 
-        if "track_names" in f:
+        if "track_names" in f and len(f["track_names"]):
             track_names_list = f["track_names"][:].T
             tracks = [Track(0, track_name.decode()) for track_name in track_names_list]
         else:
diff --git a/sleap/io/video.py b/sleap/io/video.py
index b73569fa0..c8272cfbd 100644
--- a/sleap/io/video.py
+++ b/sleap/io/video.py
@@ -1118,8 +1118,9 @@ def get_frames(self, idxs: Union[int, Iterable[int]]) -> np.ndarray:
 
     def get_frames_safely(self, idxs: Iterable[int]) -> Tuple[List[int], np.ndarray]:
         """Return list of frame indices and frames which were successfully loaded.
+        Args:
+            idxs: An iterable object that contains the indices of frames.
 
-        idxs: An iterable object that contains the indices of frames.
 
         Returns: A tuple of (frame indices, frames), where
             * frame indices is a subset of the specified idxs, and
@@ -1442,19 +1443,31 @@ def to_hdf5(
 
                 def encode(img):
                     _, encoded = cv2.imencode("." + format, img)
-                    return np.squeeze(encoded)
+                    return np.squeeze(encoded).astype("int8")
+
+                # pad with zeroes to guarantee int8 type in hdf5 file
+                frames = []
+                for i in range(len(frame_numbers)):
+                    frames.append(encode(frame_data[i]))
+
+                max_frame_size = (
+                    max([len(x) if len(x) else 0 for x in frames]) if len(frames) else 0
+                )
 
-                dtype = h5.special_dtype(vlen=np.dtype("int8"))
                 dset = f.create_dataset(
-                    dataset + "/video", (len(frame_numbers),), dtype=dtype
+                    dataset + "/video",
+                    (len(frame_numbers), max_frame_size),
+                    dtype="int8",
+                    compression="gzip",
                 )
                 dset.attrs["format"] = format
                 dset.attrs["channels"] = self.channels
                 dset.attrs["height"] = self.height
                 dset.attrs["width"] = self.width
 
-                for i in range(len(frame_numbers)):
-                    dset[i] = encode(frame_data[i])
+                for i, frame in enumerate(frames):
+                    dset[i, 0 : len(frame)] = frame
+
             else:
                 f.create_dataset(
                     dataset + "/video",
@@ -1532,22 +1545,17 @@ def cattr():
             A cattr converter.
         """
 
-        # When we are structuring video backends, try to fixup the video file paths
-        # in case they are coming from a different computer or the file has been moved.
-        def fixup_video(x, cl):
-            if "filename" in x:
-                x["filename"] = Video.fixup_path(x["filename"])
-            if "file" in x:
-                x["file"] = Video.fixup_path(x["file"])
+        # Use from_filename to fixup the video path and determine backend
+        def fixup_video(x: dict, cl: Video):
+            backend_dict = x.pop("backend")
+            filename = backend_dict.pop("filename", None) or backend_dict.pop(
+                "file", None
+            )
 
-            return Video.make_specific_backend(cl, x)
+            return Video.from_filename(filename, **backend_dict)
 
         vid_cattr = cattr.Converter()
-
-        # Check the type hint for backend and register the video path
-        # fixup hook for each type in the Union.
-        for t in attr.fields(Video).backend.type.__args__:
-            vid_cattr.register_structure_hook(t, fixup_video)
+        vid_cattr.register_structure_hook(Video, fixup_video)
 
         return vid_cattr
 
diff --git a/sleap/io/videowriter.py b/sleap/io/videowriter.py
index 510fad739..cd710c9d5 100644
--- a/sleap/io/videowriter.py
+++ b/sleap/io/videowriter.py
@@ -12,6 +12,7 @@
 from abc import ABC, abstractmethod
 import cv2
 import numpy as np
+import imageio.v2 as iio
 
 
 class VideoWriter(ABC):
@@ -32,22 +33,26 @@ def close(self):
     @staticmethod
     def safe_builder(filename, height, width, fps):
         """Builds VideoWriter based on available dependencies."""
-        if VideoWriter.can_use_skvideo():
-            return VideoWriterSkvideo(filename, height, width, fps)
+        if VideoWriter.can_use_ffmpeg():
+            return VideoWriterImageio(filename, height, width, fps)
         else:
             return VideoWriterOpenCV(filename, height, width, fps)
 
     @staticmethod
-    def can_use_skvideo():
-        # See if we can import skvideo
+    def can_use_ffmpeg():
+        """Check if ffmpeg is available for writing videos."""
         try:
-            import skvideo
+            import imageio_ffmpeg as ffmpeg
         except ImportError:
             return False
 
-        # See if skvideo can find FFMPEG
-        if skvideo.getFFmpegVersion() != "0.0.0":
-            return True
+        try:
+            # Try to get the version of the ffmpeg plugin
+            ffmpeg_version = ffmpeg.get_ffmpeg_version()
+            if ffmpeg_version:
+                return True
+        except Exception:
+            return False
 
         return False
 
@@ -68,11 +73,11 @@ def close(self):
         self._writer.release()
 
 
-class VideoWriterSkvideo(VideoWriter):
-    """Writes video using scikit-video as wrapper for ffmpeg.
+class VideoWriterImageio(VideoWriter):
+    """Writes video using imageio as a wrapper for ffmpeg.
 
     Attributes:
-        filename: Path to mp4 file to save to.
+        filename: Path to video file to save to.
         height: Height of movie frames.
         width: Width of movie frames.
         fps: Playback framerate to save at.
@@ -85,28 +90,38 @@ class VideoWriterSkvideo(VideoWriter):
     def __init__(
         self, filename, height, width, fps, crf: int = 21, preset: str = "superfast"
     ):
-        import skvideo.io
-
-        fps = str(fps)
-        self._writer = skvideo.io.FFmpegWriter(
+        self.filename = filename
+        self.height = height
+        self.width = width
+        self.fps = fps
+        self.crf = crf
+        self.preset = preset
+
+        import imageio_ffmpeg as ffmpeg
+
+        # Imageio's ffmpeg writer parameters
+        # https://imageio.readthedocs.io/en/stable/examples.html#writing-videos-with-ffmpeg-and-vaapi
+        # Use `ffmpeg -h encoder=libx264`` to see all options for libx264 output_params
+        # output_params must be a list of strings
+        # iio.help(name='FFMPEG') to test
+        self.writer = iio.get_writer(
             filename,
-            inputdict={
-                "-r": fps,
-            },
-            outputdict={
-                "-c:v": "libx264",
-                "-preset": preset,
-                "-vf": "scale=trunc(iw/2)*2:trunc(ih/2)*2",  # Need even dims for libx264
-                "-framerate": fps,
-                "-crf": str(crf),
-                "-pix_fmt": "yuv420p",
-            },
+            fps=fps,
+            codec="libx264",
+            format="FFMPEG",
+            pixelformat="yuv420p",
+            output_params=[
+                "-preset",
+                preset,
+                "-crf",
+                str(crf),
+            ],
         )
 
     def add_frame(self, img, bgr: bool = False):
         if bgr:
             img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
-        self._writer.writeFrame(img)
+        self.writer.append_data(img)
 
     def close(self):
-        self._writer.close()
+        self.writer.close()
diff --git a/sleap/io/visuals.py b/sleap/io/visuals.py
index 2018ce0bf..f2dde0be3 100644
--- a/sleap/io/visuals.py
+++ b/sleap/io/visuals.py
@@ -27,7 +27,13 @@
 _sentinel = object()
 
 
-def reader(out_q: Queue, video: Video, frames: List[int], scale: float = 1.0):
+def reader(
+    out_q: Queue,
+    video: Video,
+    frames: List[int],
+    scale: float = 1.0,
+    background: str = "original",
+):
     """Read frame images from video and send them into queue.
 
     Args:
@@ -36,11 +42,13 @@ def reader(out_q: Queue, video: Video, frames: List[int], scale: float = 1.0):
         video: The `Video` object to read.
         frames: Full list frame indexes we want to read.
         scale: Output scale for frame images.
+        background: output video background. Either original, black, white, grey
 
     Returns:
         None.
     """
 
+    background = background.lower()
     cv2.setNumThreads(usable_cpu_count())
 
     total_count = len(frames)
@@ -64,6 +72,16 @@ def reader(out_q: Queue, video: Video, frames: List[int], scale: float = 1.0):
             loaded_chunk_idxs, video_frame_images = video.get_frames_safely(
                 frames_idx_chunk
             )
+            if background != "original":
+                # fill the frame with the color
+                fill_values = {"black": 0, "grey": 127, "white": 255}
+                try:
+                    fill = fill_values[background]
+                except KeyError:
+                    raise ValueError(
+                        f"Invalid background color: {background}. Options include: {', '.join(fill_values.keys())}"
+                    )
+                video_frame_images = video_frame_images * 0 + fill
 
             if not loaded_chunk_idxs:
                 print(f"No frames could be loaded from chunk {chunk_i}")
@@ -497,6 +515,7 @@ def save_labeled_video(
     fps: int = 15,
     scale: float = 1.0,
     crop_size_xy: Optional[Tuple[int, int]] = None,
+    background: str = "original",
     show_edges: bool = True,
     edge_is_wedge: bool = False,
     marker_size: int = 4,
@@ -515,6 +534,7 @@ def save_labeled_video(
         fps: Frames per second for output video.
         scale: scale of image (so we can scale point locations to match)
         crop_size_xy: size of crop around instances, or None for full images
+        background: output video background. Either original, black, white, grey
         show_edges: whether to draw lines between nodes
         edge_is_wedge: whether to draw edges as wedges (draw as line if False)
         marker_size: Size of marker in pixels before scaling by `scale`
@@ -537,7 +557,7 @@ def save_labeled_video(
     q2 = Queue(maxsize=10)
     progress_queue = Queue()
 
-    thread_read = Thread(target=reader, args=(q1, video, frames, scale))
+    thread_read = Thread(target=reader, args=(q1, video, frames, scale, background))
     thread_mark = VideoMarkerThread(
         in_q=q1,
         out_q=q2,
@@ -695,6 +715,15 @@ def main(args: list = None):
             "and 'nodes' (default: 'nodes')"
         ),
     )
+    parser.add_argument(
+        "--background",
+        type=str,
+        default="original",
+        help=(
+            "Specify the type of background to be used to save the videos."
+            "Options for background: original, black, white and grey"
+        ),
+    )
     args = parser.parse_args(args=args)
     labels = Labels.load_file(
         args.data_path, video_search=[os.path.dirname(args.data_path)]
@@ -730,6 +759,7 @@ def main(args: list = None):
         marker_size=args.marker_size,
         palette=args.palette,
         distinctly_color=args.distinctly_color,
+        background=args.background,
     )
 
     print(f"Video saved as: {filename}")
diff --git a/sleap/nn/config/outputs.py b/sleap/nn/config/outputs.py
index ffb0d76e4..ccb6077b1 100644
--- a/sleap/nn/config/outputs.py
+++ b/sleap/nn/config/outputs.py
@@ -151,8 +151,8 @@ class OutputsConfig:
         save_visualizations: If True, will render and save visualizations of the model
             predictions as PNGs to "{run_folder}/viz/{split}.{epoch:04d}.png", where the
             split is one of "train", "validation", "test".
-        delete_viz_images: If True, delete the saved visualizations after training
-            completes. This is useful to reduce the model folder size if you do not need
+        keep_viz_images: If True, keep the saved visualization images after training
+            completes. This is useful unchecked to reduce the model folder size if you do not need
             to keep the visualization images.
         zip_outputs: If True, compress the run folder to a zip file. This will be named
             "{run_folder}.zip".
@@ -170,7 +170,7 @@ class OutputsConfig:
     runs_folder: Text = "models"
     tags: List[Text] = attr.ib(factory=list)
     save_visualizations: bool = True
-    delete_viz_images: bool = True
+    keep_viz_images: bool = False
     zip_outputs: bool = False
     log_to_csv: bool = True
     checkpointing: CheckpointingConfig = attr.ib(factory=CheckpointingConfig)
diff --git a/sleap/nn/data/augmentation.py b/sleap/nn/data/augmentation.py
index 21dfb29e6..b754c0fe9 100644
--- a/sleap/nn/data/augmentation.py
+++ b/sleap/nn/data/augmentation.py
@@ -1,19 +1,11 @@
 """Transformers for applying data augmentation."""
 
-# Monkey patch for: https://github.com/aleju/imgaug/issues/537
-# TODO: Fix when PyPI/conda packages are available for version fencing.
-import numpy
-
-if hasattr(numpy.random, "_bit_generator"):
-    numpy.random.bit_generator = numpy.random._bit_generator
-
 import sleap
 import numpy as np
 import tensorflow as tf
 import attr
 from typing import List, Text, Optional
-import imgaug as ia
-import imgaug.augmenters as iaa
+import albumentations as A
 from sleap.nn.config import AugmentationConfig
 from sleap.nn.data.instance_cropping import crop_bboxes
 
@@ -111,15 +103,15 @@ def flip_instances_ud(
 
 
 @attr.s(auto_attribs=True)
-class ImgaugAugmenter:
-    """Data transformer based on the `imgaug` library.
+class AlbumentationsAugmenter:
+    """Data transformer based on the `albumentations` library.
 
     This class can generate a `tf.data.Dataset` from an existing one that generates
     image and instance data. Element of the output dataset will have a set of
     augmentation transformations applied.
 
     Attributes:
-        augmenter: An instance of `imgaug.augmenters.Sequential` that will be applied to
+        augmenter: An instance of `albumentations.Compose` that will be applied to
             each element of the input dataset.
         image_key: Name of the example key where the image is stored. Defaults to
             "image".
@@ -127,7 +119,7 @@ class ImgaugAugmenter:
             Defaults to "instances".
     """
 
-    augmenter: iaa.Sequential
+    augmenter: A.Compose
     image_key: str = "image"
     instances_key: str = "instances"
 
@@ -137,7 +129,7 @@ def from_config(
         config: AugmentationConfig,
         image_key: Text = "image",
         instances_key: Text = "instances",
-    ) -> "ImgaugAugmenter":
+    ) -> "AlbumentationsAugmenter":
         """Create an augmenter from a set of configuration parameters.
 
         Args:
@@ -148,52 +140,64 @@ def from_config(
                 Defaults to "instances".
 
         Returns:
-            An instance of `ImgaugAugmenter` with the specified augmentation
+            An instance of `AlbumentationsAugmenter` with the specified augmentation
             configuration.
         """
         aug_stack = []
         if config.rotate:
             aug_stack.append(
-                iaa.Affine(
-                    rotate=(config.rotation_min_angle, config.rotation_max_angle)
+                A.Rotate(
+                    limit=(config.rotation_min_angle, config.rotation_max_angle), p=1.0
                 )
             )
         if config.translate:
             aug_stack.append(
-                iaa.Affine(
+                A.Affine(
                     translate_px={
                         "x": (config.translate_min, config.translate_max),
                         "y": (config.translate_min, config.translate_max),
-                    }
+                    },
+                    p=1.0,
                 )
             )
         if config.scale:
-            aug_stack.append(iaa.Affine(scale=(config.scale_min, config.scale_max)))
-        if config.uniform_noise:
             aug_stack.append(
-                iaa.AddElementwise(
-                    value=(config.uniform_noise_min_val, config.uniform_noise_max_val)
-                )
+                A.Affine(scale=(config.scale_min, config.scale_max), p=1.0)
             )
+        if config.uniform_noise:
+
+            def uniform_noise(image, **kwargs):
+                return image + np.random.uniform(
+                    config.uniform_noise_min_val, config.uniform_noise_max_val
+                )
+
+            aug_stack.append(A.Lambda(image=uniform_noise))
         if config.gaussian_noise:
             aug_stack.append(
-                iaa.AdditiveGaussianNoise(
-                    loc=config.gaussian_noise_mean, scale=config.gaussian_noise_stddev
+                A.GaussNoise(
+                    mean=config.gaussian_noise_mean,
+                    var_limit=config.gaussian_noise_stddev,
                 )
             )
         if config.contrast:
             aug_stack.append(
-                iaa.GammaContrast(
-                    gamma=(config.contrast_min_gamma, config.contrast_max_gamma)
+                A.RandomGamma(
+                    gamma_limit=(config.contrast_min_gamma, config.contrast_max_gamma),
+                    p=1.0,
                 )
             )
         if config.brightness:
             aug_stack.append(
-                iaa.Add(value=(config.brightness_min_val, config.brightness_max_val))
+                A.RandomBrightness(
+                    limit=(config.brightness_min_val, config.brightness_max_val), p=1.0
+                )
             )
 
         return cls(
-            augmenter=iaa.Sequential(aug_stack),
+            augmenter=A.Compose(
+                aug_stack,
+                keypoint_params=A.KeypointParams(format="xy", remove_invisible=False),
+            ),
             image_key=image_key,
             instances_key=instances_key,
         )
@@ -226,22 +230,16 @@ def transform_dataset(self, input_ds: tf.data.Dataset) -> tf.data.Dataset:
         # Define augmentation function to map over each sample.
         def py_augment(image, instances):
             """Local processing function that will not be autographed."""
-            # Ensure that the transformations applied to all data within this
-            # example are kept consistent.
-            aug_det = self.augmenter.to_deterministic()
+            # Convert to numpy arrays.
+            img = image.numpy()
+            kps = instances.numpy()
+            original_shape = kps.shape
+            kps = kps.reshape(-1, 2)
 
-            # Augment the image.
-            aug_img = aug_det.augment_image(image.numpy())
-
-            # This will get converted to a rank 3 tensor (n_instances, n_nodes, 2).
-            aug_instances = np.full_like(instances, np.nan)
-
-            # Augment each set of points for each instance.
-            for i, instance in enumerate(instances):
-                kps = ia.KeypointsOnImage.from_xy_array(
-                    instance.numpy(), tuple(image.shape)
-                )
-                aug_instances[i] = aug_det.augment_keypoints(kps).to_xy_array()
+            # Augment.
+            augmented = self.augmenter(image=img, keypoints=kps)
+            aug_img = augmented["image"]
+            aug_instances = np.array(augmented["keypoints"]).reshape(original_shape)
 
             return aug_img, aug_instances
 
@@ -258,7 +256,6 @@ def augment(frame_data):
             return frame_data
 
         # Apply the augmentation to each element.
-        # Note: We map sequentially since imgaug gets slower with tf.data parallelism.
         output_ds = input_ds.map(augment)
 
         return output_ds
diff --git a/sleap/nn/data/pipelines.py b/sleap/nn/data/pipelines.py
index b0892f8a1..2e334456a 100644
--- a/sleap/nn/data/pipelines.py
+++ b/sleap/nn/data/pipelines.py
@@ -18,7 +18,7 @@
 from sleap.nn.data.providers import LabelsReader, VideoReader
 from sleap.nn.data.augmentation import (
     AugmentationConfig,
-    ImgaugAugmenter,
+    AlbumentationsAugmenter,
     RandomCropper,
     RandomFlipper,
 )
@@ -68,7 +68,7 @@
 
 PROVIDERS = (LabelsReader, VideoReader)
 TRANSFORMERS = (
-    ImgaugAugmenter,
+    AlbumentationsAugmenter,
     RandomCropper,
     Normalizer,
     Resizer,
@@ -406,7 +406,7 @@ def make_training_pipeline(self, data_provider: Provider) -> Pipeline:
                 self.data_config.labels.skeletons[0],
                 horizontal=self.optimization_config.augmentation_config.flip_horizontal,
             )
-        pipeline += ImgaugAugmenter.from_config(
+        pipeline += AlbumentationsAugmenter.from_config(
             self.optimization_config.augmentation_config
         )
         if self.optimization_config.augmentation_config.random_crop:
@@ -550,7 +550,7 @@ def make_training_pipeline(self, data_provider: Provider) -> Pipeline:
                 self.data_config.labels.skeletons[0],
                 horizontal=self.optimization_config.augmentation_config.flip_horizontal,
             )
-        pipeline += ImgaugAugmenter.from_config(
+        pipeline += AlbumentationsAugmenter.from_config(
             self.optimization_config.augmentation_config
         )
         if self.optimization_config.augmentation_config.random_crop:
@@ -713,7 +713,7 @@ def make_training_pipeline(self, data_provider: Provider) -> Pipeline:
                 self.data_config.labels.skeletons[0],
                 horizontal=self.optimization_config.augmentation_config.flip_horizontal,
             )
-        pipeline += ImgaugAugmenter.from_config(
+        pipeline += AlbumentationsAugmenter.from_config(
             self.optimization_config.augmentation_config
         )
         pipeline += Normalizer.from_config(self.data_config.preprocessing)
@@ -863,7 +863,7 @@ def make_training_pipeline(self, data_provider: Provider) -> Pipeline:
                 self.data_config.labels.skeletons[0],
                 horizontal=aug_config.flip_horizontal,
             )
-        pipeline += ImgaugAugmenter.from_config(aug_config)
+        pipeline += AlbumentationsAugmenter.from_config(aug_config)
         if aug_config.random_crop:
             pipeline += RandomCropper(
                 crop_height=aug_config.random_crop_height,
@@ -1028,7 +1028,7 @@ def make_training_pipeline(self, data_provider: Provider) -> Pipeline:
                 horizontal=aug_config.flip_horizontal,
             )
 
-        pipeline += ImgaugAugmenter.from_config(aug_config)
+        pipeline += AlbumentationsAugmenter.from_config(aug_config)
         if aug_config.random_crop:
             pipeline += RandomCropper(
                 crop_height=aug_config.random_crop_height,
@@ -1186,7 +1186,7 @@ def make_training_pipeline(self, data_provider: Provider) -> Pipeline:
                 config=self.data_config.preprocessing,
                 provider=data_provider,
             )
-        pipeline += ImgaugAugmenter.from_config(
+        pipeline += AlbumentationsAugmenter.from_config(
             self.optimization_config.augmentation_config
         )
         pipeline += Normalizer.from_config(self.data_config.preprocessing)
diff --git a/sleap/nn/data/providers.py b/sleap/nn/data/providers.py
index 16f439d10..9e93d0b18 100644
--- a/sleap/nn/data/providers.py
+++ b/sleap/nn/data/providers.py
@@ -394,9 +394,7 @@ def make_dataset(self) -> tf.data.Dataset:
                     grid in order to properly map points to image coordinates.
         """
         # Grab an image to test for the dtype.
-        test_image = tf.convert_to_tensor(
-            self.video.get_frame(self.video.last_frame_idx)
-        )
+        test_image = tf.convert_to_tensor(self.video.get_frame(0))
         image_dtype = test_image.dtype
 
         def py_fetch_frame(ind):
diff --git a/sleap/nn/inference.py b/sleap/nn/inference.py
index 6d7d24f8c..3f01a1c3c 100644
--- a/sleap/nn/inference.py
+++ b/sleap/nn/inference.py
@@ -33,6 +33,7 @@
 import atexit
 import subprocess
 import rich.progress
+import pandas as pd
 from rich.pretty import pprint
 from collections import deque
 import json
@@ -1142,6 +1143,7 @@ def export_model(
 
         info["frozen_model_inputs"] = frozen_func.inputs
         info["frozen_model_outputs"] = frozen_func.outputs
+        info["unragged_outputs"] = unrag_outputs
 
         with (Path(save_path) / "info.json").open("w") as fp:
             json.dump(
@@ -1582,6 +1584,15 @@ def _object_builder():
         try:
             for ex in generator:
                 prediction_queue.put(ex)
+
+        except KeyError as e:
+            # Gracefully handle seeking errors by early termination.
+            if "Unable to load frame" in str(e):
+                pass  # TODO: Print warning obeying verbosity? (This code path is also
+                # called for interactive prediction where we don't want any spam.)
+            else:
+                raise
+
         finally:
             prediction_queue.put(None)
             object_builder.join()
@@ -2611,6 +2622,7 @@ def _object_builder():
                         # Set tracks for predicted instances in this frame.
                         predicted_instances = self.tracker.track(
                             untracked_instances=predicted_instances,
+                            img_hw=ex["image"].shape[-3:-1],
                             img=image,
                             t=frame_ind,
                         )
@@ -2632,6 +2644,15 @@ def _object_builder():
         try:
             for ex in generator:
                 prediction_queue.put(ex)
+
+        except KeyError as e:
+            # Gracefully handle seeking errors by early termination.
+            if "Unable to load frame" in str(e):
+                pass  # TODO: Print warning obeying verbosity? (This code path is also
+                # called for interactive prediction where we don't want any spam.)
+            else:
+                raise
+
         finally:
             prediction_queue.put(None)
             object_builder.join()
@@ -3244,6 +3265,7 @@ def _object_builder():
                         # Set tracks for predicted instances in this frame.
                         predicted_instances = self.tracker.track(
                             untracked_instances=predicted_instances,
+                            img_hw=ex["image"].shape[-3:-1],
                             img=image,
                             t=frame_ind,
                         )
@@ -3265,6 +3287,15 @@ def _object_builder():
         try:
             for ex in generator:
                 prediction_queue.put(ex)
+
+        except KeyError as e:
+            # Gracefully handle seeking errors by early termination.
+            if "Unable to load frame" in str(e):
+                pass  # TODO: Print warning obeying verbosity? (This code path is also
+                # called for interactive prediction where we don't want any spam.)
+            else:
+                raise
+
         finally:
             prediction_queue.put(None)
             object_builder.join()
@@ -3747,9 +3778,10 @@ def _object_builder():
                             PredictedInstance.from_numpy(
                                 points=pts,
                                 point_confidences=confs,
-                                instance_score=np.nanmean(score),
+                                instance_score=np.nanmean(confs),
                                 skeleton=skeleton,
                                 track=track,
+                                tracking_score=np.nanmean(score),
                             )
                         )
 
@@ -3770,6 +3802,15 @@ def _object_builder():
         try:
             for ex in generator:
                 prediction_queue.put(ex)
+
+        except KeyError as e:
+            # Gracefully handle seeking errors by early termination.
+            if "Unable to load frame" in str(e):
+                pass  # TODO: Print warning obeying verbosity? (This code path is also
+                # called for interactive prediction where we don't want any spam.)
+            else:
+                raise
+
         finally:
             prediction_queue.put(None)
             object_builder.join()
@@ -4412,18 +4453,27 @@ def _object_builder():
                     break
 
                 # Loop over frames.
-                for image, video_ind, frame_ind, points, confidences, scores in zip(
+                for (
+                    image,
+                    video_ind,
+                    frame_ind,
+                    centroid_vals,
+                    points,
+                    confidences,
+                    scores,
+                ) in zip(
                     ex["image"],
                     ex["video_ind"],
                     ex["frame_ind"],
+                    ex["centroid_vals"],
                     ex["instance_peaks"],
                     ex["instance_peak_vals"],
                     ex["instance_scores"],
                 ):
                     # Loop over instances.
                     predicted_instances = []
-                    for i, (pts, confs, score) in enumerate(
-                        zip(points, confidences, scores)
+                    for i, (pts, centroid_val, confs, score) in enumerate(
+                        zip(points, centroid_vals, confidences, scores)
                     ):
                         if np.isnan(pts).all():
                             continue
@@ -4434,9 +4484,10 @@ def _object_builder():
                             PredictedInstance.from_numpy(
                                 points=pts,
                                 point_confidences=confs,
-                                instance_score=np.nanmean(score),
+                                instance_score=centroid_val,
                                 skeleton=skeleton,
                                 track=track,
+                                tracking_score=score,
                             )
                         )
 
@@ -4457,6 +4508,15 @@ def _object_builder():
         try:
             for ex in generator:
                 prediction_queue.put(ex)
+
+        except KeyError as e:
+            # Gracefully handle seeking errors by early termination.
+            if "Unable to load frame" in str(e):
+                pass  # TODO: Print warning obeying verbosity? (This code path is also
+                # called for interactive prediction where we don't want any spam.)
+            else:
+                raise
+
         finally:
             prediction_queue.put(None)
             object_builder.join()
@@ -4734,6 +4794,15 @@ def _object_builder():
         try:
             for ex in generator:
                 prediction_queue.put(ex)
+
+        except KeyError as e:
+            # Gracefully handle seeking errors by early termination.
+            if "Unable to load frame" in str(e):
+                pass  # TODO: Print warning obeying verbosity? (This code path is also
+                # called for interactive prediction where we don't want any spam.)
+            else:
+                raise
+
         finally:
             prediction_queue.put(None)
             object_builder.join()
@@ -4939,7 +5008,7 @@ def export_cli(args: Optional[list] = None):
     export_model(
         args.models,
         args.export_path,
-        unrag_outputs=args.unrag,
+        unrag_outputs=(not args.ragged),
         max_instances=args.max_instances,
     )
 
@@ -4971,13 +5040,13 @@ def _make_export_cli_parser() -> argparse.ArgumentParser:
         ),
     )
     parser.add_argument(
-        "-u",
-        "--unrag",
+        "-r",
+        "--ragged",
         action="store_true",
-        default=True,
+        default=False,
         help=(
-            "Convert ragged tensors into regular tensors with NaN padding. "
-            "Defaults to True."
+            "Keep tensors ragged if present. If ommited, convert ragged tensors"
+            " into regular tensors with NaN padding."
         ),
     )
     parser.add_argument(
@@ -5230,15 +5299,14 @@ def _make_provider_from_cli(args: argparse.Namespace) -> Tuple[Provider, str]:
         args: Parsed CLI namespace.
 
     Returns:
-        A tuple of `(provider, data_path)` with the data `Provider` and path to the data
-        that was specified in the args.
+        `(provider_list, data_path_list, output_path_list)` where `provider_list` contains the data providers,
+        `data_path_list` contains the paths to the specified data, and the `output_path_list` contains the list
+        of output paths if a CSV file with a column of output paths was provided; otherwise, `output_path_list`
+        defaults to None
     """
+
     # Figure out which input path to use.
-    labels_path = getattr(args, "labels", None)
-    if labels_path is not None:
-        data_path = labels_path
-    else:
-        data_path = args.data_path
+    data_path = args.data_path
 
     if data_path is None or data_path == "":
         raise ValueError(
@@ -5246,33 +5314,117 @@ def _make_provider_from_cli(args: argparse.Namespace) -> Tuple[Provider, str]:
             "Run 'sleap-track -h' to see full command documentation."
         )
 
-    if data_path.endswith(".slp"):
-        labels = sleap.load_file(data_path)
-
-        if args.only_labeled_frames:
-            provider = LabelsReader.from_user_labeled_frames(labels)
-        elif args.only_suggested_frames:
-            provider = LabelsReader.from_unlabeled_suggestions(labels)
-        elif getattr(args, "video.index") != "":
-            provider = VideoReader(
-                video=labels.videos[int(getattr(args, "video.index"))],
-                example_indices=frame_list(args.frames),
-            )
+    data_path_obj = Path(data_path)
+
+    # Set output_path_list to None as a default to return later
+    output_path_list = None
+
+    # Check that input value is valid
+    if not data_path_obj.exists():
+        raise ValueError("Path to data_path does not exist")
+
+    elif data_path_obj.is_file():
+        # If the file is a CSV file, check for data_paths and output_paths
+        if data_path_obj.suffix.lower() == ".csv":
+            try:
+                data_path_column = None
+                # Read the CSV file
+                df = pd.read_csv(data_path)
+
+                # collect data_paths from column
+                for col_index in range(df.shape[1]):
+                    path_str = df.iloc[0, col_index]
+                    if Path(path_str).exists():
+                        data_path_column = df.columns[col_index]
+                        break
+                if data_path_column is None:
+                    raise ValueError(
+                        f"Column containing valid data_paths does not exist in the CSV file: {data_path}"
+                    )
+                raw_data_path_list = df[data_path_column].tolist()
+
+                # optional output_path column to specify multiple output_paths
+                output_path_column_index = df.columns.get_loc(data_path_column) + 1
+                if (
+                    output_path_column_index < df.shape[1]
+                    and df.iloc[:, output_path_column_index].dtype == object
+                ):
+                    # Ensure the next column exists
+                    output_path_list = df.iloc[:, output_path_column_index].tolist()
+                else:
+                    output_path_list = None
+
+            except pd.errors.EmptyDataError as e:
+                raise ValueError(f"CSV file is empty: {data_path}. Error: {e}") from e
+
+        # If the file is a text file, collect data_paths
+        elif data_path_obj.suffix.lower() == ".txt":
+            try:
+                with open(data_path_obj, "r") as file:
+                    raw_data_path_list = [line.strip() for line in file.readlines()]
+            except Exception as e:
+                raise ValueError(
+                    f"Error reading text file: {data_path}. Error: {e}"
+                ) from e
         else:
-            provider = LabelsReader(labels)
+            raw_data_path_list = [data_path_obj.as_posix()]
 
-    else:
-        print(f"Video: {data_path}")
-        # TODO: Clean this up.
-        video_kwargs = dict(
-            dataset=vars(args).get("video.dataset"),
-            input_format=vars(args).get("video.input_format"),
-        )
-        provider = VideoReader.from_filepath(
-            filename=data_path, example_indices=frame_list(args.frames), **video_kwargs
-        )
+        raw_data_path_list = [Path(p) for p in raw_data_path_list]
 
-    return provider, data_path
+    # Check for multiple video inputs
+    # Compile file(s) into a list for later iteration
+    elif data_path_obj.is_dir():
+        raw_data_path_list = [
+            file_path for file_path in data_path_obj.iterdir() if file_path.is_file()
+        ]
+
+    # Provider list to accomodate multiple video inputs
+    provider_list = []
+    data_path_list = []
+    for file_path in raw_data_path_list:
+        # Create a provider for each file
+        if file_path.as_posix().endswith(".slp") and len(raw_data_path_list) > 1:
+            print(f"slp file skipped: {file_path.as_posix()}")
+
+        elif file_path.as_posix().endswith(".slp"):
+            labels = sleap.load_file(file_path.as_posix())
+
+            if args.only_labeled_frames:
+                provider_list.append(LabelsReader.from_user_labeled_frames(labels))
+            elif args.only_suggested_frames:
+                provider_list.append(LabelsReader.from_unlabeled_suggestions(labels))
+            elif getattr(args, "video.index") != "":
+                provider_list.append(
+                    VideoReader(
+                        video=labels.videos[int(getattr(args, "video.index"))],
+                        example_indices=frame_list(args.frames),
+                    )
+                )
+            else:
+                provider_list.append(LabelsReader(labels))
+
+            data_path_list.append(file_path)
+
+        else:
+            try:
+                video_kwargs = dict(
+                    dataset=vars(args).get("video.dataset"),
+                    input_format=vars(args).get("video.input_format"),
+                )
+                provider_list.append(
+                    VideoReader.from_filepath(
+                        filename=file_path.as_posix(),
+                        example_indices=frame_list(args.frames),
+                        **video_kwargs,
+                    )
+                )
+                print(f"Video: {file_path.as_posix()}")
+                data_path_list.append(file_path)
+                # TODO: Clean this up.
+            except Exception:
+                print(f"Error reading file: {file_path.as_posix()}")
+
+    return provider_list, data_path_list, output_path_list
 
 
 def _make_predictor_from_cli(args: argparse.Namespace) -> Predictor:
@@ -5367,8 +5519,6 @@ def main(args: Optional[list] = None):
     pprint(vars(args))
     print()
 
-    output_path = args.output
-
     # Setup devices.
     if args.cpu or not sleap.nn.system.is_gpu_system():
         sleap.nn.system.use_cpu_only()
@@ -5406,7 +5556,20 @@ def main(args: Optional[list] = None):
     print()
 
     # Setup data loader.
-    provider, data_path = _make_provider_from_cli(args)
+    provider_list, data_path_list, output_path_list = _make_provider_from_cli(args)
+
+    output_path = None
+
+    # if output_path has not been extracted from a csv file yet
+    if output_path_list is None and args.output is not None:
+        output_path = args.output
+        output_path_obj = Path(output_path)
+
+        # check if output_path is valid before running inference
+        if Path(output_path).is_file() and len(data_path_list) > 1:
+            raise ValueError(
+                "output_path argument must be a directory if multiple video inputs are given"
+            )
 
     # Setup tracker.
     tracker = _make_tracker_from_cli(args)
@@ -5414,25 +5577,94 @@ def main(args: Optional[list] = None):
     if args.models is not None and "movenet" in args.models[0]:
         args.models = args.models[0]
 
-    # Either run inference (and tracking) or just run tracking
+    # Either run inference (and tracking) or just run tracking (if using an existing prediction where inference has already been run)
     if args.models is not None:
-        # Setup models.
-        predictor = _make_predictor_from_cli(args)
-        predictor.tracker = tracker
 
-        # Run inference!
-        labels_pr = predictor.predict(provider)
+        # Run inference on all files inputed
+        for i, (data_path, provider) in enumerate(zip(data_path_list, provider_list)):
+            # Setup models.
+            data_path_obj = Path(data_path)
+            predictor = _make_predictor_from_cli(args)
+            predictor.tracker = tracker
 
-        if output_path is None:
-            output_path = data_path + ".predictions.slp"
+            # Run inference!
+            labels_pr = predictor.predict(provider)
 
-        labels_pr.provenance["model_paths"] = predictor.model_paths
-        labels_pr.provenance["predictor"] = type(predictor).__name__
+            # if output path was not provided, create an output path
+            if output_path is None:
+                # if output path was not provided, create an output path
+                if output_path_list:
+                    output_path = output_path_list[i]
+
+                else:
+                    output_path = data_path_obj.with_suffix(".predictions.slp")
 
+                output_path_obj = Path(output_path)
+
+            # if output_path was provided and multiple inputs were provided, create a directory to store outputs
+            elif len(data_path_list) > 1:
+                output_path_obj = Path(output_path)
+                output_path = (
+                    output_path_obj
+                    / (data_path_obj.with_suffix(".predictions.slp")).name
+                )
+                output_path_obj = Path(output_path)
+                # Create the containing directory if needed.
+                output_path_obj.parent.mkdir(exist_ok=True, parents=True)
+
+            labels_pr.provenance["model_paths"] = predictor.model_paths
+            labels_pr.provenance["predictor"] = type(predictor).__name__
+
+            if args.no_empty_frames:
+                # Clear empty frames if specified.
+                labels_pr.remove_empty_frames()
+
+            finish_timestamp = str(datetime.now())
+            total_elapsed = time() - t0
+            print("Finished inference at:", finish_timestamp)
+            print(f"Total runtime: {total_elapsed} secs")
+            print(f"Predicted frames: {len(labels_pr)}/{len(provider)}")
+
+            # Add provenance metadata to predictions.
+            labels_pr.provenance["sleap_version"] = sleap.__version__
+            labels_pr.provenance["platform"] = platform.platform()
+            labels_pr.provenance["command"] = " ".join(sys.argv)
+            labels_pr.provenance["data_path"] = data_path_obj.as_posix()
+            labels_pr.provenance["output_path"] = output_path_obj.as_posix()
+            labels_pr.provenance["total_elapsed"] = total_elapsed
+            labels_pr.provenance["start_timestamp"] = start_timestamp
+            labels_pr.provenance["finish_timestamp"] = finish_timestamp
+
+            print("Provenance:")
+            pprint(labels_pr.provenance)
+            print()
+
+            labels_pr.provenance["args"] = vars(args)
+
+            # Save results.
+            try:
+                labels_pr.save(output_path)
+            except Exception:
+                print("WARNING: Provided output path invalid.")
+                fallback_path = data_path_obj.with_suffix(".predictions.slp")
+                labels_pr.save(fallback_path)
+            print("Saved output:", output_path)
+
+            if args.open_in_gui:
+                subprocess.call(["sleap-label", output_path])
+
+            # Reset output_path for next iteration
+            output_path = args.output
+
+    # running tracking on existing prediction file
     elif getattr(args, "tracking.tracker") is not None:
+        provider = provider_list[0]
+        data_path = data_path_list[0]
+
         # Load predictions
+        data_path = args.data_path
         print("Loading predictions...")
-        labels_pr = sleap.load_file(args.data_path)
+        labels_pr = sleap.load_file(data_path)
         frames = sorted(labels_pr.labeled_frames, key=lambda lf: lf.frame_idx)
 
         print("Starting tracker...")
@@ -5444,6 +5676,40 @@ def main(args: Optional[list] = None):
         if output_path is None:
             output_path = f"{data_path}.{tracker.get_name()}.slp"
 
+        if args.no_empty_frames:
+            # Clear empty frames if specified.
+            labels_pr.remove_empty_frames()
+
+        finish_timestamp = str(datetime.now())
+        total_elapsed = time() - t0
+        print("Finished inference at:", finish_timestamp)
+        print(f"Total runtime: {total_elapsed} secs")
+        print(f"Predicted frames: {len(labels_pr)}/{len(provider)}")
+
+        # Add provenance metadata to predictions.
+        labels_pr.provenance["sleap_version"] = sleap.__version__
+        labels_pr.provenance["platform"] = platform.platform()
+        labels_pr.provenance["command"] = " ".join(sys.argv)
+        labels_pr.provenance["data_path"] = data_path
+        labels_pr.provenance["output_path"] = output_path
+        labels_pr.provenance["total_elapsed"] = total_elapsed
+        labels_pr.provenance["start_timestamp"] = start_timestamp
+        labels_pr.provenance["finish_timestamp"] = finish_timestamp
+
+        print("Provenance:")
+        pprint(labels_pr.provenance)
+        print()
+
+        labels_pr.provenance["args"] = vars(args)
+
+        # Save results.
+        labels_pr.save(output_path)
+
+        print("Saved output:", output_path)
+
+        if args.open_in_gui:
+            subprocess.call(["sleap-label", output_path])
+
     else:
         raise ValueError(
             "Neither tracker type nor path to trained models specified. "
@@ -5451,36 +5717,3 @@ def main(args: Optional[list] = None):
             "To retrack on predictions, must specify tracker. "
             "Use \"sleap-track --tracking.tracker ...' to specify tracker to use."
         )
-
-    if args.no_empty_frames:
-        # Clear empty frames if specified.
-        labels_pr.remove_empty_frames()
-
-    finish_timestamp = str(datetime.now())
-    total_elapsed = time() - t0
-    print("Finished inference at:", finish_timestamp)
-    print(f"Total runtime: {total_elapsed} secs")
-    print(f"Predicted frames: {len(labels_pr)}/{len(provider)}")
-
-    # Add provenance metadata to predictions.
-    labels_pr.provenance["sleap_version"] = sleap.__version__
-    labels_pr.provenance["platform"] = platform.platform()
-    labels_pr.provenance["command"] = " ".join(sys.argv)
-    labels_pr.provenance["data_path"] = data_path
-    labels_pr.provenance["output_path"] = output_path
-    labels_pr.provenance["total_elapsed"] = total_elapsed
-    labels_pr.provenance["start_timestamp"] = start_timestamp
-    labels_pr.provenance["finish_timestamp"] = finish_timestamp
-
-    print("Provenance:")
-    pprint(labels_pr.provenance)
-    print()
-
-    labels_pr.provenance["args"] = vars(args)
-
-    # Save results.
-    labels_pr.save(output_path)
-    print("Saved output:", output_path)
-
-    if args.open_in_gui:
-        subprocess.call(["sleap-label", output_path])
diff --git a/sleap/nn/peak_finding.py b/sleap/nn/peak_finding.py
index 84dca00ae..e1fb43a6e 100644
--- a/sleap/nn/peak_finding.py
+++ b/sleap/nn/peak_finding.py
@@ -221,7 +221,7 @@ def find_global_peaks_rough(
     channels = tf.cast(tf.shape(cms)[-1], tf.int64)
     total_peaks = tf.cast(tf.shape(argmax_cols)[0], tf.int64)
     sample_subs = tf.range(total_peaks, dtype=tf.int64) // channels
-    channel_subs = tf.range(total_peaks, dtype=tf.int64) % channels
+    channel_subs = tf.math.mod(tf.range(total_peaks, dtype=tf.int64), channels)
 
     # Gather subscripts.
     peak_subs = tf.stack([sample_subs, argmax_rows, argmax_cols, channel_subs], axis=1)
diff --git a/sleap/nn/system.py b/sleap/nn/system.py
index eeb3f3ca4..4cc3d1804 100644
--- a/sleap/nn/system.py
+++ b/sleap/nn/system.py
@@ -48,7 +48,17 @@ def get_current_gpu() -> tf.config.PhysicalDevice:
 
 def use_cpu_only():
     """Hide GPUs from TensorFlow to ensure only the CPU is available."""
-    tf.config.set_visible_devices([], "GPU")
+    try:
+        tf.config.set_visible_devices([], "GPU")
+    except RuntimeError as ex:
+        if (
+            len(ex.args) > 0
+            and ex.args[0]
+            == "Visible devices cannot be modified after being initialized"
+        ):
+            print(
+                "Failed to set visible GPU. Visible devices cannot be modified after being initialized."
+            )
 
 
 def use_gpu(device_ind: int):
@@ -58,7 +68,17 @@ def use_gpu(device_ind: int):
         device_ind: Index of the GPU within the list of system GPUs.
     """
     gpus = get_all_gpus()
-    tf.config.set_visible_devices(gpus[device_ind], "GPU")
+    try:
+        tf.config.set_visible_devices(gpus[device_ind], "GPU")
+    except RuntimeError as ex:
+        if (
+            len(ex.args) > 0
+            and ex.args[0]
+            == "Visible devices cannot be modified after being initialized"
+        ):
+            print(
+                "Failed to set visible GPU. Visible devices cannot be modified after being initialized."
+            )
 
 
 def use_first_gpu():
@@ -159,7 +179,7 @@ def summary():
         for gpu in all_gpus:
             print(f"  Device: {gpu.name}")
             print(f"         Available: {gpu in gpus}")
-            print(f"        Initalized: {is_initialized(gpu)}")
+            print(f"       Initialized: {is_initialized(gpu)}")
             print(
                 f"     Memory growth: {tf.config.experimental.get_memory_growth(gpu)}"
             )
diff --git a/sleap/nn/tracker/components.py b/sleap/nn/tracker/components.py
index 10b2953b7..0b77f4ac9 100644
--- a/sleap/nn/tracker/components.py
+++ b/sleap/nn/tracker/components.py
@@ -12,9 +12,11 @@
 
 
 """
+
 import operator
 from collections import defaultdict
-from typing import List, Tuple, Optional, TypeVar, Callable
+import logging
+from typing import List, Tuple, Union, Optional, TypeVar, Callable
 
 import attr
 import numpy as np
@@ -23,9 +25,26 @@
 from sleap import PredictedInstance, Instance, Track
 from sleap.nn import utils
 
+logger = logging.getLogger(__name__)
+
 InstanceType = TypeVar("InstanceType", Instance, PredictedInstance)
 
 
+def normalized_instance_similarity(
+    ref_instance: InstanceType, query_instance: InstanceType, img_hw: Tuple[int]
+) -> float:
+    """Computes similarity between instances with normalized keypoints."""
+
+    normalize_factors = np.array((img_hw[1], img_hw[0]))
+    ref_visible = ~(np.isnan(ref_instance.points_array).any(axis=1))
+    normalized_query_keypoints = query_instance.points_array / normalize_factors
+    normalized_ref_keypoints = ref_instance.points_array / normalize_factors
+    dists = np.sum((normalized_query_keypoints - normalized_ref_keypoints) ** 2, axis=1)
+    similarity = np.nansum(np.exp(-dists)) / np.sum(ref_visible)
+
+    return similarity
+
+
 def instance_similarity(
     ref_instance: InstanceType, query_instance: InstanceType
 ) -> float:
@@ -40,6 +59,95 @@ def instance_similarity(
     return similarity
 
 
+def factory_object_keypoint_similarity(
+    keypoint_errors: Optional[Union[List, int, float]] = None,
+    score_weighting: bool = False,
+    normalization_keypoints: str = "all",
+) -> Callable:
+    """Factory for similarity function based on object keypoints.
+
+    Args:
+        keypoint_errors: The standard error of the distance between the predicted
+            keypoint and the true value, in pixels.
+            If None or empty list, defaults to 1.
+            If a scalar or singleton list, every keypoint has the same error.
+            If a list, defines the error for each keypoint, the length should be equal
+            to the number of keypoints in the skeleton.
+        score_weighting: If True, use `score` of `PredictedPoint` to weigh
+            `keypoint_errors`. If False, do not add a weight to `keypoint_errors`.
+        normalization_keypoints: Determine how to normalize similarity score. One of
+            ["all", "ref", "union"]. If "all", similarity score is normalized by number
+            of reference points. If "ref", similarity score is normalized by number of
+            visible reference points. If "union", similarity score is normalized by
+            number of points both visible in query and reference instance.
+            Default is "all".
+
+    Returns:
+        Callable that returns object keypoint similarity between two `Instance`s.
+
+    """
+    keypoint_errors = 1 if keypoint_errors is None else keypoint_errors
+    with np.errstate(divide="ignore"):
+        kp_precision = 1 / (2 * np.array(keypoint_errors) ** 2)
+
+    def object_keypoint_similarity(
+        ref_instance: InstanceType, query_instance: InstanceType
+    ) -> float:
+        nonlocal kp_precision
+        # Keypoints
+        ref_points = ref_instance.points_array
+        query_points = query_instance.points_array
+        # Keypoint scores
+        if score_weighting:
+            ref_scores = getattr(ref_instance, "scores", np.ones(len(ref_points)))
+            query_scores = getattr(query_instance, "scores", np.ones(len(query_points)))
+        else:
+            ref_scores = 1
+            query_scores = 1
+        # Number of keypoint for normalization
+        if normalization_keypoints in ("ref", "union"):
+            ref_visible = ~(np.isnan(ref_points).any(axis=1))
+            if normalization_keypoints == "ref":
+                max_n_keypoints = np.sum(ref_visible)
+            elif normalization_keypoints == "union":
+                query_visible = ~(np.isnan(query_points).any(axis=1))
+                max_n_keypoints = np.sum(np.logical_and(ref_visible, query_visible))
+        else:  # if normalization_keypoints == "all":
+            max_n_keypoints = len(ref_points)
+        if max_n_keypoints == 0:
+            return 0
+
+        # Make sure the sizes of kp_precision and n_points match
+        if kp_precision.size > 1 and 2 * kp_precision.size != ref_points.size:
+            # Correct kp_precision size to fit number of points
+            n_points = ref_points.size // 2
+            mess = (
+                "keypoint_errors array should have the same size as the number of "
+                f"keypoints in the instance: {kp_precision.size} != {n_points}"
+            )
+
+            if kp_precision.size > n_points:
+                kp_precision = kp_precision[:n_points]
+                mess += "\nTruncating keypoint_errors array."
+
+            else:  # elif kp_precision.size < n_points:
+                pad = n_points - kp_precision.size
+                kp_precision = np.pad(kp_precision, (0, pad), "edge")
+                mess += "\nPadding keypoint_errors array by repeating the last value."
+            logger.warning(mess)
+
+        # Compute distances
+        dists = np.sum((query_points - ref_points) ** 2, axis=1) * kp_precision
+
+        similarity = (
+            np.nansum(ref_scores * query_scores * np.exp(-dists)) / max_n_keypoints
+        )
+
+        return similarity
+
+    return object_keypoint_similarity
+
+
 def centroid_distance(
     ref_instance: InstanceType, query_instance: InstanceType, cache: dict = dict()
 ) -> float:
diff --git a/sleap/nn/tracking.py b/sleap/nn/tracking.py
index 9865b7db5..558aa9309 100644
--- a/sleap/nn/tracking.py
+++ b/sleap/nn/tracking.py
@@ -5,12 +5,15 @@
 import attr
 import numpy as np
 import cv2
+import functools
 from typing import Callable, Deque, Dict, Iterable, List, Optional, Tuple
 
 from sleap import Track, LabeledFrame, Skeleton
 
 from sleap.nn.tracker.components import (
+    factory_object_keypoint_similarity,
     instance_similarity,
+    normalized_instance_similarity,
     centroid_distance,
     instance_iou,
     hungarian_matching,
@@ -391,6 +394,7 @@ def get_ref_instances(
     def get_candidates(
         self,
         track_matching_queue_dict: Dict[Track, Deque[MatchedFrameInstance]],
+        max_tracking: bool,
         t: int,
         img: np.ndarray,
         *args,
@@ -404,7 +408,7 @@ def get_candidates(
         tracks = []
 
         for track, matched_items in track_matching_queue_dict.items():
-            if len(tracks) <= self.max_tracks:
+            if not max_tracking or len(tracks) < self.max_tracks:
                 tracks.append(track)
                 for matched_item in matched_items:
                     ref_t, ref_img = (
@@ -466,6 +470,7 @@ class SimpleMaxTracksCandidateMaker(SimpleCandidateMaker):
     def get_candidates(
         self,
         track_matching_queue_dict: Dict,
+        max_tracking: bool,
         *args,
         **kwargs,
     ) -> List[InstanceType]:
@@ -473,7 +478,7 @@ def get_candidates(
         candidate_instances = []
         tracks = []
         for track, matched_instances in track_matching_queue_dict.items():
-            if len(tracks) <= self.max_tracks:
+            if not max_tracking or len(tracks) < self.max_tracks:
                 tracks.append(track)
                 for ref_instance in matched_instances:
                     if ref_instance.instance_t.n_visible_points >= self.min_points:
@@ -492,6 +497,8 @@ def get_candidates(
     instance=instance_similarity,
     centroid=centroid_distance,
     iou=instance_iou,
+    normalized_instance=normalized_instance_similarity,
+    object_keypoint=factory_object_keypoint_similarity,
 )
 
 match_policies = dict(
@@ -598,8 +605,15 @@ def _init_matching_queue(self):
         """Factory for instantiating default matching queue with specified size."""
         return deque(maxlen=self.track_window)
 
+    @property
+    def has_max_tracking(self) -> bool:
+        return isinstance(
+            self.candidate_maker,
+            (SimpleMaxTracksCandidateMaker, FlowMaxTracksCandidateMaker),
+        )
+
     def reset_candidates(self):
-        if self.max_tracking:
+        if self.has_max_tracking:
             for track in self.track_matching_queue_dict:
                 self.track_matching_queue_dict[track] = deque(maxlen=self.track_window)
         else:
@@ -610,14 +624,15 @@ def unique_tracks_in_queue(self) -> List[Track]:
         """Returns the unique tracks in the matching queue."""
 
         unique_tracks = set()
-        for match_item in self.track_matching_queue:
-            for instance in match_item.instances_t:
-                unique_tracks.add(instance.track)
-
-        if self.max_tracking:
+        if self.has_max_tracking:
             for track in self.track_matching_queue_dict.keys():
                 unique_tracks.add(track)
 
+        else:
+            for match_item in self.track_matching_queue:
+                for instance in match_item.instances_t:
+                    unique_tracks.add(instance.track)
+
         return list(unique_tracks)
 
     @property
@@ -627,6 +642,7 @@ def uses_image(self):
     def track(
         self,
         untracked_instances: List[InstanceType],
+        img_hw: Tuple[int],
         img: Optional[np.ndarray] = None,
         t: int = None,
     ) -> List[InstanceType]:
@@ -634,19 +650,25 @@ def track(
 
         Args:
             untracked_instances: List of instances to assign to tracks.
+            img_hw: (height, width) of the image used to normalize the keypoints.
             img: Image data of the current frame for flow shifting.
             t: Current timestep. If not provided, increments from the internal queue.
 
         Returns:
             A list of the instances that were tracked.
         """
+        if self.similarity_function == normalized_instance_similarity:
+            factory_normalized_instance = functools.partial(
+                normalized_instance_similarity, img_hw=img_hw
+            )
+            self.similarity_function = factory_normalized_instance
 
         if self.candidate_maker is None:
             return untracked_instances
 
         # Infer timestep if not provided.
         if t is None:
-            if self.max_tracking:
+            if self.has_max_tracking:
                 if len(self.track_matching_queue_dict) > 0:
 
                     # Default to last timestep + 1 if available.
@@ -684,10 +706,10 @@ def track(
                 self.pre_cull_function(untracked_instances)
 
             # Build a pool of matchable candidate instances.
-            if self.max_tracking:
+            if self.has_max_tracking:
                 candidate_instances = self.candidate_maker.get_candidates(
                     track_matching_queue_dict=self.track_matching_queue_dict,
-                    max_tracks=self.max_tracks,
+                    max_tracking=self.max_tracking,
                     t=t,
                     img=img,
                 )
@@ -721,13 +743,16 @@ def track(
             )
 
         # Add the tracked instances to the dictionary of matched instances.
-        if self.max_tracking:
+        if self.has_max_tracking:
             for tracked_instance in tracked_instances:
                 if tracked_instance.track in self.track_matching_queue_dict:
                     self.track_matching_queue_dict[tracked_instance.track].append(
                         MatchedFrameInstance(t, tracked_instance, img)
                     )
-                elif len(self.track_matching_queue_dict) < self.max_tracks:
+                elif (
+                    not self.max_tracking
+                    or len(self.track_matching_queue_dict) < self.max_tracks
+                ):
                     self.track_matching_queue_dict[tracked_instance.track] = deque(
                         maxlen=self.track_window
                     )
@@ -773,7 +798,8 @@ def spawn_for_untracked_instances(
 
             # Skip if we've reached the maximum number of tracks.
             if (
-                self.max_tracking
+                self.has_max_tracking
+                and self.max_tracking
                 and len(self.track_matching_queue_dict) >= self.max_tracks
             ):
                 break
@@ -838,8 +864,17 @@ def make_tracker_by_name(
         # Max tracking options
         max_tracks: Optional[int] = None,
         max_tracking: bool = False,
+        # Object keypoint similarity options
+        oks_errors: Optional[list] = None,
+        oks_score_weighting: bool = False,
+        oks_normalization: str = "all",
         **kwargs,
     ) -> BaseTracker:
+        # Parse max_tracking arguments, only True if max_tracks is not None and > 0
+        max_tracking = max_tracking if max_tracks else False
+        if max_tracking and tracker in ("simple", "flow"):
+            # Force a candidate maker of 'maxtracks' type
+            tracker += "maxtracks"
 
         if tracker.lower() == "none":
             candidate_maker = None
@@ -858,7 +893,14 @@ def make_tracker_by_name(
                 raise ValueError(f"{match} is not a valid tracker matching function.")
 
             candidate_maker = tracker_policies[tracker](min_points=min_match_points)
-            similarity_function = similarity_policies[similarity]
+            if similarity == "object_keypoint":
+                similarity_function = factory_object_keypoint_similarity(
+                    keypoint_errors=oks_errors,
+                    score_weighting=oks_score_weighting,
+                    normalization_keypoints=oks_normalization,
+                )
+            else:
+                similarity_function = similarity_policies[similarity]
             matching_function = match_policies[match]
 
         if tracker == "flow":
@@ -931,7 +973,10 @@ def get_by_name_factory_options(cls):
 
         option = dict(name="max_tracking", default=False)
         option["type"] = bool
-        option["help"] = "If true then the tracker will cap the max number of tracks."
+        option["help"] = (
+            "If true then the tracker will cap the max number of tracks. "
+            "Falls back to false if `max_tracks` is not defined or 0."
+        )
         options.append(option)
 
         option = dict(name="max_tracks", default=None)
@@ -1054,6 +1099,42 @@ def int_list_func(s):
         ] = "For Kalman filter: Number of frames to track with other tracker. 0 means no Kalman filters will be used."
         options.append(option)
 
+        def float_list_func(s):
+            return [float(x.strip()) for x in s.split(",")] if s else None
+
+        option = dict(name="oks_errors", default="1")
+        option["type"] = float_list_func
+        option["help"] = (
+            "For Object Keypoint similarity: the standard error of the distance "
+            "between the predicted keypoint and the true value, in pixels.\n"
+            "If None or empty list, defaults to 1. If a scalar or singleton list, "
+            "every keypoint has the same error. If a list, defines the error for each "
+            "keypoint, the length should be equal to the number of keypoints in the "
+            "skeleton."
+        )
+        options.append(option)
+
+        option = dict(name="oks_score_weighting", default="0")
+        option["type"] = int
+        option["help"] = (
+            "For Object Keypoint similarity: if 0 (default), only the distance between the reference "
+            "and query keypoint is used to compute the similarity. If 1, each distance is weighted "
+            "by the prediction scores of the reference and query keypoint."
+        )
+        options.append(option)
+
+        option = dict(name="oks_normalization", default="all")
+        option["type"] = str
+        option["options"] = ["all", "ref", "union"]
+        option["help"] = (
+            "For Object Keypoint similarity: Determine how to normalize similarity score. "
+            "If 'all', similarity score is normalized by number of reference points. "
+            "If 'ref', similarity score is normalized by number of visible reference points. "
+            "If 'union', similarity score is normalized by number of points both visible "
+            "in query and reference instance."
+        )
+        options.append(option)
+
         return options
 
     @classmethod
@@ -1449,6 +1530,7 @@ def run_tracker(frames: List[LabeledFrame], tracker: BaseTracker) -> List[Labele
             track_args["img"] = lf.video[lf.frame_idx]
         else:
             track_args["img"] = None
+        track_args["img_hw"] = lf.image.shape[-3:-1]
 
         new_lf = LabeledFrame(
             frame_idx=lf.frame_idx,
diff --git a/sleap/nn/training.py b/sleap/nn/training.py
index 16f027175..c3692637c 100644
--- a/sleap/nn/training.py
+++ b/sleap/nn/training.py
@@ -508,7 +508,7 @@ def setup_visualization(
     callbacks = []
 
     try:
-        matplotlib.use("Qt5Agg")
+        matplotlib.use("QtAgg")
     except ImportError:
         print(
             "Unable to use Qt backend for matplotlib. "
@@ -946,7 +946,7 @@ def train(self):
         if self.config.outputs.save_outputs:
             if (
                 self.config.outputs.save_visualizations
-                and self.config.outputs.delete_viz_images
+                and not self.config.outputs.keep_viz_images
             ):
                 self.cleanup()
 
@@ -997,7 +997,7 @@ def cleanup(self):
 
     def package(self):
         """Package model folder into a zip file for portability."""
-        if self.config.outputs.delete_viz_images:
+        if not self.config.outputs.keep_viz_images:
             self.cleanup()
         logger.info(f"Packaging results to: {self.run_path}.zip")
         shutil.make_archive(
@@ -1864,6 +1864,14 @@ def create_trainer_using_cli(args: Optional[List] = None):
             "already specified in the training job config."
         ),
     )
+    parser.add_argument(
+        "--keep_viz",
+        action="store_true",
+        help=(
+            "Keep prediction visualization images in the run folder after training when "
+            "--save_viz is enabled."
+        ),
+    )
     parser.add_argument(
         "--zmq",
         action="store_true",
@@ -1872,6 +1880,18 @@ def create_trainer_using_cli(args: Optional[List] = None):
             "job config."
         ),
     )
+    parser.add_argument(
+        "--publish_port",
+        type=int,
+        default=9001,
+        help="Port to set up the publish address while using ZMQ, defaults to 9001.",
+    )
+    parser.add_argument(
+        "--controller_port",
+        type=int,
+        default=9000,
+        help="Port to set up the controller address while using ZMQ, defaults to 9000.",
+    )
     parser.add_argument(
         "--run_name",
         default="",
@@ -1926,6 +1946,10 @@ def create_trainer_using_cli(args: Optional[List] = None):
     job_config.outputs.tensorboard.write_logs |= args.tensorboard
     job_config.outputs.zmq.publish_updates |= args.zmq
     job_config.outputs.zmq.subscribe_to_controller |= args.zmq
+    job_config.outputs.zmq.controller_address = "tcp://127.0.0.1:" + str(
+        args.controller_port
+    )
+    job_config.outputs.zmq.publish_address = "tcp://127.0.0.1:" + str(args.publish_port)
     if args.run_name != "":
         job_config.outputs.run_name = args.run_name
     if args.prefix != "":
@@ -1933,6 +1957,7 @@ def create_trainer_using_cli(args: Optional[List] = None):
     if args.suffix != "":
         job_config.outputs.run_name_suffix = args.suffix
     job_config.outputs.save_visualizations |= args.save_viz
+    job_config.outputs.keep_viz_images = args.keep_viz
     if args.labels_path == "":
         args.labels_path = None
     args.video_paths = args.video_paths.split(",")
diff --git a/sleap/prefs.py b/sleap/prefs.py
index 3d5a2113e..e043afc44 100644
--- a/sleap/prefs.py
+++ b/sleap/prefs.py
@@ -28,6 +28,8 @@ class Preferences(object):
         "node label size": 12,
         "show non-visible nodes": True,
         "share usage data": True,
+        "node marker sizes": (1, 2, 3, 4, 6, 8, 12),
+        "node label sizes": (6, 9, 12, 18, 24, 36),
     }
     _filename = "preferences.yaml"
 
@@ -43,10 +45,14 @@ def load_(self):
         """Load preferences from file (regardless of whether loaded already)."""
         try:
             self._prefs = util.get_config_yaml(self._filename)
-            if not hasattr(self._prefs, "get"):
-                self._prefs = self._defaults
         except FileNotFoundError:
-            self._prefs = self._defaults
+            pass
+
+        self._prefs = self._prefs or {}
+
+        for k, v in self._defaults.items():
+            if k not in self._prefs:
+                self._prefs[k] = v
 
     def save(self):
         """Save preferences to file."""
diff --git a/sleap/skeleton.py b/sleap/skeleton.py
index eca393b8e..fbd1b909c 100644
--- a/sleap/skeleton.py
+++ b/sleap/skeleton.py
@@ -6,24 +6,24 @@
 their connection to each other, and needed meta-data.
 """
 
-import attr
-import cattr
-import numpy as np
-import jsonpickle
-import json
-import h5py
+import base64
 import copy
-
+import json
 import operator
 from enum import Enum
+from io import BytesIO
 from itertools import count
-from typing import Any, Dict, Iterable, List, Optional, Tuple, Union, Text
+from typing import Any, Dict, Iterable, List, Optional, Text, Tuple, Union
 
+import attr
+import cattr
+import h5py
 import networkx as nx
+import numpy as np
 from networkx.readwrite import json_graph
+from PIL import Image
 from scipy.io import loadmat
 
-
 NodeRef = Union[str, "Node"]
 H5FileRef = Union[str, h5py.File]
 
@@ -85,6 +85,502 @@ def matches(self, other: "Node") -> bool:
         return other.name == self.name and other.weight == self.weight
 
 
+class SkeletonDecoder:
+    """Replace jsonpickle.decode with our own decoder.
+
+    This function will decode the following from jsonpickle's encoded format:
+
+    `Node` objects from
+        {
+            "py/object": "sleap.skeleton.Node",
+            "py/state": { "py/tuple": ["thorax1", 1.0] }
+        }
+    to `Node(name="thorax1", weight=1.0)`
+
+    `EdgeType` objects from
+        {
+            "py/reduce": [
+                { "py/type": "sleap.skeleton.EdgeType" },
+                { "py/tuple": [1] }
+            ]
+        }
+    to `EdgeType(1)`
+
+    `bytes` from
+        {
+            "py/b64": "aVZC..."
+        }
+    to `b"iVBO..."`
+
+    and any repeated objects from
+        {
+            "py/id": 1
+        }
+    to the object with the same reconstruction id (from top to bottom).
+    """
+
+    def __init__(self):
+        self.decoded_objects: List[Union[Node, EdgeType]] = []
+
+    def _decode_id(self, id: int) -> Union[Node, EdgeType]:
+        """Decode the object with the given `py/id` value of `id`.
+
+        Args:
+            id: The `py/id` value to decode (1-indexed).
+            objects: The dictionary of objects that have already been decoded.
+
+        Returns:
+            The object with the given `py/id` value.
+        """
+        return self.decoded_objects[id - 1]
+
+    @staticmethod
+    def _decode_state(state: dict) -> Node:
+        """Reconstruct the `Node` object from 'py/state' key in the serialized nx_graph.
+
+        We support states in either dictionary or tuple format:
+        {
+            "py/state": { "py/tuple": ["thorax1", 1.0] }
+        }
+        or
+        {
+            "py/state": {"name": "thorax1", "weight": 1.0}
+        }
+
+        Args:
+            state: The state to decode, i.e. state = dict["py/state"]
+
+        Returns:
+            The `Node` object reconstructed from the state.
+        """
+
+        if "py/tuple" in state:
+            return Node(*state["py/tuple"])
+
+        return Node(**state)
+
+    @staticmethod
+    def _decode_object_dict(object_dict) -> Node:
+        """Decode dict containing `py/object` key in the serialized nx_graph.
+
+        Args:
+            object_dict: The dict to decode, i.e.
+                object_dict = {"py/object": ..., "py/state":...}
+
+        Raises:
+            ValueError: If object_dict does not have 'py/object' and 'py/state' keys.
+            ValueError: If object_dict['py/object'] is not 'sleap.skeleton.Node'.
+
+        Returns:
+            The decoded `Node` object.
+        """
+
+        if object_dict["py/object"] != "sleap.skeleton.Node":
+            raise ValueError("Only 'sleap.skeleton.Node' objects are supported.")
+
+        node: Node = SkeletonDecoder._decode_state(state=object_dict["py/state"])
+        return node
+
+    def _decode_node(self, encoded_node: dict) -> Node:
+        """Decode an item believed to be an encoded `Node` object.
+
+        Also updates the list of decoded objects.
+
+        Args:
+            encoded_node: The encoded node to decode.
+
+        Returns:
+            The decoded node and the updated list of decoded objects.
+        """
+
+        if isinstance(encoded_node, int):
+            # Using index mapping to replace the object (load from Labels)
+            return encoded_node
+        elif "py/object" in encoded_node:
+            decoded_node: Node = SkeletonDecoder._decode_object_dict(encoded_node)
+            self.decoded_objects.append(decoded_node)
+        elif "py/id" in encoded_node:
+            decoded_node: Node = self._decode_id(encoded_node["py/id"])
+
+        return decoded_node
+
+    def _decode_nodes(self, encoded_nodes: List[dict]) -> List[Dict[str, Node]]:
+        """Decode the 'nodes' key in the serialized nx_graph.
+
+        The encoded_nodes is a list of dictionary of two types:
+            - A dictionary with 'py/object' and 'py/state' keys.
+            - A dictionary with 'py/id' key.
+
+        Args:
+            encoded_nodes: The list of encoded nodes to decode.
+
+        Returns:
+            The decoded nodes.
+        """
+
+        decoded_nodes: List[Dict[str, Node]] = []
+        for e_node_dict in encoded_nodes:
+            e_node = e_node_dict["id"]
+            d_node = self._decode_node(e_node)
+            decoded_nodes.append({"id": d_node})
+
+        return decoded_nodes
+
+    def _decode_reduce_dict(self, reduce_dict: Dict[str, List[dict]]) -> EdgeType:
+        """Decode the 'reduce' key in the serialized nx_graph.
+
+        The reduce_dict is a dictionary in the following format:
+        {
+            "py/reduce": [
+                { "py/type": "sleap.skeleton.EdgeType" },
+                { "py/tuple": [1] }
+            ]
+        }
+
+        Args:
+            reduce_dict: The dictionary to decode i.e. reduce_dict = {"py/reduce": ...}
+
+        Returns:
+            The decoded `EdgeType` object.
+        """
+
+        reduce_list = reduce_dict["py/reduce"]
+        has_py_type = has_py_tuple = False
+        for reduce_item in reduce_list:
+            if reduce_item is None:
+                # Sometimes the reduce list has None values, skip them
+                continue
+            if (
+                "py/type" in reduce_item
+                and reduce_item["py/type"] == "sleap.skeleton.EdgeType"
+            ):
+                has_py_type = True
+            elif "py/tuple" in reduce_item:
+                edge_type: int = reduce_item["py/tuple"][0]
+                has_py_tuple = True
+
+        if not has_py_type or not has_py_tuple:
+            raise ValueError(
+                "Only 'sleap.skeleton.EdgeType' objects are supported. "
+                "The 'py/reduce' list must have dictionaries with 'py/type' and "
+                "'py/tuple' keys."
+                f"\n\tHas py/type: {has_py_type}\n\tHas py/tuple: {has_py_tuple}"
+            )
+
+        edge = EdgeType(edge_type)
+        self.decoded_objects.append(edge)
+
+        return edge
+
+    def _decode_edge_type(self, encoded_edge_type: dict) -> EdgeType:
+        """Decode the 'type' key in the serialized nx_graph.
+
+        Args:
+            encoded_edge_type: a dictionary with either 'py/id' or 'py/reduce' key.
+
+        Returns:
+            The decoded `EdgeType` object.
+        """
+
+        if "py/reduce" in encoded_edge_type:
+            edge_type = self._decode_reduce_dict(encoded_edge_type)
+        else:
+            # Expect a "py/id" instead of "py/reduce"
+            edge_type = self._decode_id(encoded_edge_type["py/id"])
+        return edge_type
+
+    def _decode_links(
+        self, links: List[dict]
+    ) -> List[Dict[str, Union[int, Node, EdgeType]]]:
+        """Decode the 'links' key in the serialized nx_graph.
+
+        The links are the edges in the graph and will have the following keys:
+            - source: The source node of the edge.
+            - target: The destination node of the edge.
+            - type: The type of the edge (e.g. BODY, SYMMETRY).
+        and more.
+
+        Args:
+            encoded_links: The list of encoded links to decode.
+        """
+
+        for link in links:
+            for key, value in link.items():
+                if key == "source":
+                    link[key] = self._decode_node(value)
+                elif key == "target":
+                    link[key] = self._decode_node(value)
+                elif key == "type":
+                    link[key] = self._decode_edge_type(value)
+
+        return links
+
+    @staticmethod
+    def decode_preview_image(
+        img_b64: bytes, return_bytes: bool = False
+    ) -> Union[Image.Image, bytes]:
+        """Decode a skeleton preview image byte string representation to a `PIL.Image`
+
+        Args:
+            img_b64: a byte string representation of a skeleton preview image
+            return_bytes: whether to return the decoded image as bytes
+
+        Returns:
+            Either a PIL.Image of the skeleton preview image or the decoded image as bytes
+            (if `return_bytes` is True).
+        """
+        bytes = base64.b64decode(img_b64)
+        if return_bytes:
+            return bytes
+
+        buffer = BytesIO(bytes)
+        img = Image.open(buffer)
+        return img
+
+    def _decode(self, json_str: str):
+        dicts = json.loads(json_str)
+
+        # Enforce same format across template and non-template skeletons
+        if "nx_graph" not in dicts:
+            # Non-template skeletons use the dicts as the "nx_graph"
+            dicts = {"nx_graph": dicts}
+
+        # Decode the graph
+        nx_graph = dicts["nx_graph"]
+
+        self.decoded_objects = []  # Reset the decoded objects incase reusing decoder
+        for key, value in nx_graph.items():
+            if key == "nodes":
+                nx_graph[key] = self._decode_nodes(value)
+            elif key == "links":
+                nx_graph[key] = self._decode_links(value)
+
+        # Decode the preview image (if it exists)
+        preview_image = dicts.get("preview_image", None)
+        if preview_image is not None:
+            dicts["preview_image"] = SkeletonDecoder.decode_preview_image(
+                preview_image["py/b64"], return_bytes=True
+            )
+
+        return dicts
+
+    @classmethod
+    def decode(cls, json_str: str) -> Dict:
+        """Decode the given json string into a dictionary.
+
+        Returns:
+            A dict with `Node`s, `EdgeType`s, and `bytes` decoded/reconstructed.
+        """
+        decoder = cls()
+        return decoder._decode(json_str)
+
+
+class SkeletonEncoder:
+    """Replace jsonpickle.encode with our own encoder.
+
+    The input is a dictionary containing python objects that need to be encoded as
+    JSON strings. The output is a JSON string that represents the input dictionary.
+
+    `Node(name='neck', weight=1.0)` =>
+        {
+            "py/object": "sleap.Skeleton.Node",
+            "py/state": {"py/tuple" ["neck", 1.0]}
+        }
+
+    `<EdgeType.BODY: 1>` =>
+        {"py/reduce": [
+            {"py/type": "sleap.Skeleton.EdgeType"},
+            {"py/tuple": [1] }
+            ]
+        }`
+
+    Where `name` and `weight` are the attributes of the `Node` class; weight is always 1.0.
+    `EdgeType` is an enum with values `BODY = 1` and `SYMMETRY = 2`.
+
+    See sleap.skeleton.Node and sleap.skeleton.EdgeType.
+
+    If the object has been "seen" before, it will not be encoded as the full JSON string
+    but referenced by its `py/id`, which starts at 1 and indexes the objects in the
+    order they are seen so that the second time the first object is used, it will be
+    referenced as `{"py/id": 1}`.
+    """
+
+    def __init__(self):
+        """Initializes a SkeletonEncoder instance."""
+        # Maps object id to py/id
+        self._encoded_objects: Dict[int, int] = {}
+
+    @classmethod
+    def encode(cls, data: Dict[str, Any]) -> str:
+        """Encodes the input dictionary as a JSON string.
+
+        Args:
+            data: The data to encode.
+
+        Returns:
+            json_str: The JSON string representation of the data.
+        """
+
+        # This is required for backwards compatibility with SLEAP <=1.3.4
+        sorted_data = cls._recursively_sort_dict(data)
+
+        encoder = cls()
+        encoded_data = encoder._encode(sorted_data)
+        json_str = json.dumps(encoded_data)
+        return json_str
+
+    @staticmethod
+    def _recursively_sort_dict(dictionary: Dict[str, Any]) -> Dict[str, Any]:
+        """Recursively sorts the dictionary by keys."""
+        sorted_dict = dict(sorted(dictionary.items()))
+        for key, value in sorted_dict.items():
+            if isinstance(value, dict):
+                sorted_dict[key] = SkeletonEncoder._recursively_sort_dict(value)
+            elif isinstance(value, list):
+                for i, item in enumerate(value):
+                    if isinstance(item, dict):
+                        sorted_dict[key][i] = SkeletonEncoder._recursively_sort_dict(
+                            item
+                        )
+        return sorted_dict
+
+    def _encode(self, obj: Any) -> Any:
+        """Recursively encodes the input object.
+
+        Args:
+            obj: The object to encode. Can be a dictionary, list, Node, EdgeType or
+                primitive data type.
+
+        Returns:
+            The encoded object as a dictionary.
+        """
+        if isinstance(obj, dict):
+            encoded_obj = {}
+            for key, value in obj.items():
+                if key == "links":
+                    encoded_obj[key] = self._encode_links(value)
+                else:
+                    encoded_obj[key] = self._encode(value)
+            return encoded_obj
+        elif isinstance(obj, list):
+            return [self._encode(v) for v in obj]
+        elif isinstance(obj, EdgeType):
+            return self._encode_edge_type(obj)
+        elif isinstance(obj, Node):
+            return self._encode_node(obj)
+        else:
+            return obj  # Primitive data types
+
+    def _encode_links(self, links: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
+        """Encodes the list of links (edges) in the skeleton graph.
+
+        Args:
+            links: A list of dictionaries, each representing an edge in the graph.
+
+        Returns:
+            A list of encoded edge dictionaries with keys ordered as specified.
+        """
+        encoded_links = []
+        for link in links:
+            # Use a regular dict (insertion order preserved in Python 3.7+)
+            encoded_link = {}
+
+            for key, value in link.items():
+                if key in ("source", "target"):
+                    encoded_link[key] = self._encode_node(value)
+                elif key == "type":
+                    encoded_link[key] = self._encode_edge_type(value)
+                else:
+                    encoded_link[key] = self._encode(value)
+            encoded_links.append(encoded_link)
+
+        return encoded_links
+
+    def _encode_node(self, node: Union["Node", int]) -> Dict[str, Any]:
+        """Encodes a Node object.
+
+        Args:
+            node: The Node object to encode or integer index. The latter requires that
+                the class has the `idx_to_node` attribute set.
+
+        Returns:
+            The encoded `Node` object as a dictionary.
+        """
+        if isinstance(node, int):
+            # We sometimes have the node object already replaced by its index (when
+            # `node_to_idx` is provided). In this case, the node is already encoded.
+            return node
+
+        # Check if object has been encoded before
+        first_encoding = self._is_first_encoding(node)
+        py_id = self._get_or_assign_id(node, first_encoding)
+        if first_encoding:
+            # Full encoding
+            return {
+                "py/object": "sleap.skeleton.Node",
+                "py/state": {"py/tuple": [node.name, node.weight]},
+            }
+        else:
+            # Reference by py/id
+            return {"py/id": py_id}
+
+    def _encode_edge_type(self, edge_type: "EdgeType") -> Dict[str, Any]:
+        """Encodes an EdgeType object.
+
+        Args:
+            edge_type: The EdgeType object to encode. Either `EdgeType.BODY` or
+                `EdgeType.SYMMETRY` enum with values 1 and 2 respectively.
+
+        Returns:
+            The encoded EdgeType object as a dictionary.
+        """
+        # Check if object has been encoded before
+        first_encoding = self._is_first_encoding(edge_type)
+        py_id = self._get_or_assign_id(edge_type, first_encoding)
+        if first_encoding:
+            # Full encoding
+            return {
+                "py/reduce": [
+                    {"py/type": "sleap.skeleton.EdgeType"},
+                    {"py/tuple": [edge_type.value]},
+                ]
+            }
+        else:
+            # Reference by py/id
+            return {"py/id": py_id}
+
+    def _get_or_assign_id(self, obj: Any, first_encoding: bool) -> int:
+        """Gets or assigns a py/id for the object.
+
+        Args:
+            The object to get or assign a py/id for.
+
+        Returns:
+            The py/id assigned to the object.
+        """
+        # Object id is unique for each object in the current session
+        obj_id = id(obj)
+        # Assign a py/id to the object if it hasn't been assigned one yet
+        if first_encoding:
+            py_id = len(self._encoded_objects) + 1  # py/id starts at 1
+            # Assign the py/id to the object and store it in _encoded_objects
+            self._encoded_objects[obj_id] = py_id
+        return self._encoded_objects[obj_id]
+
+    def _is_first_encoding(self, obj: Any) -> bool:
+        """Checks if the object is being encoded for the first time.
+
+        Args:
+            obj: The object to check.
+
+        Returns:
+            True if this is the first encoding of the object, False otherwise.
+        """
+        obj_id = id(obj)
+        first_time = obj_id not in self._encoded_objects
+        return first_time
+
+
 class Skeleton:
     """The main object for representing animal skeletons.
 
@@ -937,7 +1433,7 @@ def to_dict(obj: "Skeleton", node_to_idx: Optional[Dict[Node, int]] = None) -> D
 
         # This is a weird hack to serialize the whole _graph into a dict.
         # I use the underlying to_json and parse it.
-        return json.loads(obj.to_json(node_to_idx))
+        return json.loads(obj.to_json(node_to_idx=node_to_idx))
 
     @classmethod
     def from_dict(cls, d: Dict, node_to_idx: Dict[Node, int] = None) -> "Skeleton":
@@ -999,12 +1495,12 @@ def to_json(self, node_to_idx: Optional[Dict[Node, int]] = None) -> str:
         Returns:
             A string containing the JSON representation of the skeleton.
         """
-        jsonpickle.set_encoder_options("simplejson", sort_keys=True, indent=4)
+
         if node_to_idx is not None:
-            indexed_node_graph = nx.relabel_nodes(
-                G=self._graph, mapping=node_to_idx
-            )  # map nodes to int
+            # Map Nodes to int
+            indexed_node_graph = nx.relabel_nodes(G=self._graph, mapping=node_to_idx)
         else:
+            # Keep graph nodes as Node objects
             indexed_node_graph = self._graph
 
         # Encode to JSON
@@ -1023,7 +1519,7 @@ def to_json(self, node_to_idx: Optional[Dict[Node, int]] = None) -> str:
         else:
             data = graph
 
-        json_str = jsonpickle.encode(data)
+        json_str = SkeletonEncoder.encode(data)
 
         return json_str
 
@@ -1071,7 +1567,7 @@ def from_json(
         Returns:
             An instance of the `Skeleton` object decoded from the JSON.
         """
-        dicts = jsonpickle.decode(json_str)
+        dicts: dict = SkeletonDecoder.decode(json_str)
         nx_graph = dicts.get("nx_graph", dicts)
         graph = json_graph.node_link_graph(nx_graph)
 
diff --git a/sleap/training_profiles/baseline.centroid.json b/sleap/training_profiles/baseline.centroid.json
index 933989ecf..3a54db25c 100755
--- a/sleap/training_profiles/baseline.centroid.json
+++ b/sleap/training_profiles/baseline.centroid.json
@@ -116,6 +116,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/baseline_large_rf.bottomup.json b/sleap/training_profiles/baseline_large_rf.bottomup.json
index ea45c9b25..18fb3104f 100644
--- a/sleap/training_profiles/baseline_large_rf.bottomup.json
+++ b/sleap/training_profiles/baseline_large_rf.bottomup.json
@@ -125,6 +125,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/baseline_large_rf.single.json b/sleap/training_profiles/baseline_large_rf.single.json
index 75e97b1a6..3feeccd69 100644
--- a/sleap/training_profiles/baseline_large_rf.single.json
+++ b/sleap/training_profiles/baseline_large_rf.single.json
@@ -116,6 +116,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/baseline_large_rf.topdown.json b/sleap/training_profiles/baseline_large_rf.topdown.json
index 9b17f6832..38e96594b 100644
--- a/sleap/training_profiles/baseline_large_rf.topdown.json
+++ b/sleap/training_profiles/baseline_large_rf.topdown.json
@@ -117,6 +117,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/baseline_medium_rf.bottomup.json b/sleap/training_profiles/baseline_medium_rf.bottomup.json
index 1cc35330a..61b08515c 100644
--- a/sleap/training_profiles/baseline_medium_rf.bottomup.json
+++ b/sleap/training_profiles/baseline_medium_rf.bottomup.json
@@ -125,6 +125,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/baseline_medium_rf.single.json b/sleap/training_profiles/baseline_medium_rf.single.json
index 579f6c8c3..0951bc761 100644
--- a/sleap/training_profiles/baseline_medium_rf.single.json
+++ b/sleap/training_profiles/baseline_medium_rf.single.json
@@ -116,6 +116,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/baseline_medium_rf.topdown.json b/sleap/training_profiles/baseline_medium_rf.topdown.json
index 9e3a0bde5..9eccb76c1 100755
--- a/sleap/training_profiles/baseline_medium_rf.topdown.json
+++ b/sleap/training_profiles/baseline_medium_rf.topdown.json
@@ -117,6 +117,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/pretrained.bottomup.json b/sleap/training_profiles/pretrained.bottomup.json
index 3e4f3935f..57b7398b5 100644
--- a/sleap/training_profiles/pretrained.bottomup.json
+++ b/sleap/training_profiles/pretrained.bottomup.json
@@ -122,6 +122,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/pretrained.centroid.json b/sleap/training_profiles/pretrained.centroid.json
index a5df5e48a..74c43d3e2 100644
--- a/sleap/training_profiles/pretrained.centroid.json
+++ b/sleap/training_profiles/pretrained.centroid.json
@@ -113,6 +113,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/pretrained.single.json b/sleap/training_profiles/pretrained.single.json
index 7ca907007..615f0de4d 100644
--- a/sleap/training_profiles/pretrained.single.json
+++ b/sleap/training_profiles/pretrained.single.json
@@ -113,6 +113,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/training_profiles/pretrained.topdown.json b/sleap/training_profiles/pretrained.topdown.json
index aeeaebbd8..be0d97de8 100644
--- a/sleap/training_profiles/pretrained.topdown.json
+++ b/sleap/training_profiles/pretrained.topdown.json
@@ -114,6 +114,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": true,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/sleap/util.py b/sleap/util.py
index 5edbf164b..bc3389b7d 100644
--- a/sleap/util.py
+++ b/sleap/util.py
@@ -3,13 +3,11 @@
 Try not to put things in here unless they really have no other place.
 """
 
-import base64
 import json
 import os
 import re
 import shutil
 from collections import defaultdict
-from io import BytesIO
 from pathlib import Path
 from typing import Any, Dict, Hashable, Iterable, List, Optional
 from urllib.parse import unquote, urlparse
@@ -26,7 +24,6 @@
     from importlib.resources import files  # New in 3.9+
 except ImportError:
     from importlib_resources import files  # TODO(LM): Upgrade to importlib.resources.
-from PIL import Image
 
 import sleap.version as sleap_version
 
@@ -270,30 +267,20 @@ def get_config_file(
         The full path to the specified config file.
     """
 
-    desired_path = None  # Handle case where get_defaults, but cannot find package_path
+    desired_path = Path.home() / f".sleap/{sleap_version.__version__}/{shortname}"
 
-    if not get_defaults:
-        desired_path = os.path.expanduser(
-            f"~/.sleap/{sleap_version.__version__}/{shortname}"
-        )
+    # Make sure there's a ~/.sleap/<version>/ directory to store user version of the config file.
+    desired_path.parent.mkdir(parents=True, exist_ok=True)
 
-        # Make sure there's a ~/.sleap/<version>/ directory to store user version of the
-        # config file.
-        try:
-            os.makedirs(os.path.expanduser(f"~/.sleap/{sleap_version.__version__}"))
-        except FileExistsError:
-            pass
-
-        # If we don't care whether the file exists, just return the path
-        if ignore_file_not_found:
-            return desired_path
-
-    # If we do care whether the file exists, check the package version of the
-    # config file if we can't find the user version.
+    # If we don't care whether the file exists, just return the path
+    if ignore_file_not_found:
+        return desired_path
 
-    if get_defaults or not os.path.exists(desired_path):
+    # If we do care whether the file exists, check the package version of the config file if we can't find the user version.
+    if get_defaults or not desired_path.exists():
         package_path = get_package_file(f"config/{shortname}")
-        if not os.path.exists(package_path):
+        package_path = Path(package_path)
+        if not package_path.exists():
             raise FileNotFoundError(
                 f"Cannot locate {shortname} config file at {desired_path} or {package_path}."
             )
@@ -384,18 +371,3 @@ def find_files_by_suffix(
 def parse_uri_path(uri: str) -> str:
     """Parse a URI starting with 'file:///' to a posix path."""
     return Path(url2pathname(urlparse(unquote(uri)).path)).as_posix()
-
-
-def decode_preview_image(img_b64: bytes) -> Image:
-    """Decode a skeleton preview image byte string representation to a `PIL.Image`
-
-    Args:
-        img_b64: a byte string representation of a skeleton preview image
-
-    Returns:
-        A PIL.Image of the skeleton preview
-    """
-    bytes = base64.b64decode(img_b64)
-    buffer = BytesIO(bytes)
-    img = Image.open(buffer)
-    return img
diff --git a/sleap/version.py b/sleap/version.py
index 437e17fba..698710132 100644
--- a/sleap/version.py
+++ b/sleap/version.py
@@ -11,8 +11,7 @@
 Must be a semver string, "aN" should be appended for alpha releases.
 """
 
-
-__version__ = "1.3.3"
+__version__ = "1.4.1"
 
 
 def versions():
diff --git a/tests/data/dlc/labeled-data/video/CollectedData_LM.csv b/tests/data/dlc/labeled-data/video/CollectedData_LM.csv
index f57b667f4..27c86f8af 100644
--- a/tests/data/dlc/labeled-data/video/CollectedData_LM.csv
+++ b/tests/data/dlc/labeled-data/video/CollectedData_LM.csv
@@ -1,8 +1,8 @@
-scorer,,,LM,LM,LM,LM,LM,LM,LM,LM,LM,LM,LM,LM
-individuals,,,individual1,individual1,individual1,individual1,individual1,individual1,individual2,individual2,individual2,individual2,individual2,individual2
-bodyparts,,,A,A,B,B,C,C,A,A,B,B,C,C
-coords,,,x,y,x,y,x,y,x,y,x,y,x,y
-labeled-data,video,img000.png,0,1,2,3,4,5,6,7,8,9,10,11
-labeled-data,video,img001.png,12,13,,,15,16,17,18,,,20,21
+scorer,,,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer
+individuals,,,Animal1,Animal1,Animal1,Animal1,Animal1,Animal1,Animal2,Animal2,Animal2,Animal2,Animal2,Animal2,single,single,single,single
+bodyparts,,,A,A,B,B,C,C,A,A,B,B,C,C,D,D,E,E
+coords,,,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y
+labeled-data,video,img000.png,0,1,2,3,4,5,6,7,8,9,10,11,,,,
+labeled-data,video,img001.png,12,13,,,15,16,17,18,,,20,21,22,23,24,25
 labeled-data,video,img002.png,,,,,,,,,,,,
-labeled-data,video,img003.png,22,23,24,25,26,27,,,,,,
+labeled-data,video,img003.png,26,27,28,29,30,31,,,,,,,32,33,34,35
diff --git a/tests/data/dlc/labeled-data/video/maudlc_testdata.csv b/tests/data/dlc/labeled-data/video/maudlc_testdata.csv
new file mode 100644
index 000000000..4e3e3c28c
--- /dev/null
+++ b/tests/data/dlc/labeled-data/video/maudlc_testdata.csv
@@ -0,0 +1,8 @@
+scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer
+individuals,Animal1,Animal1,Animal1,Animal1,Animal1,Animal1,Animal2,Animal2,Animal2,Animal2,Animal2,Animal2,single,single,single,single
+bodyparts,A,A,B,B,C,C,A,A,B,B,C,C,D,D,E,E
+coords,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y
+labeled-data/video/img000.png,0,1,2,3,4,5,6,7,8,9,10,11,,,,
+labeled-data/video/img001.png,12,13,,,15,16,17,18,,,20,21,22,23,24,25
+labeled-data/video/img002.png,,,,,,,,,,,,
+labeled-data/video/img003.png,26,27,28,29,30,31,,,,,,,32,33,34,35
diff --git a/tests/data/dlc/labeled-data/video/maudlc_testdata_v2.csv b/tests/data/dlc/labeled-data/video/maudlc_testdata_v2.csv
new file mode 100644
index 000000000..27c86f8af
--- /dev/null
+++ b/tests/data/dlc/labeled-data/video/maudlc_testdata_v2.csv
@@ -0,0 +1,8 @@
+scorer,,,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer,Scorer
+individuals,,,Animal1,Animal1,Animal1,Animal1,Animal1,Animal1,Animal2,Animal2,Animal2,Animal2,Animal2,Animal2,single,single,single,single
+bodyparts,,,A,A,B,B,C,C,A,A,B,B,C,C,D,D,E,E
+coords,,,x,y,x,y,x,y,x,y,x,y,x,y,x,y,x,y
+labeled-data,video,img000.png,0,1,2,3,4,5,6,7,8,9,10,11,,,,
+labeled-data,video,img001.png,12,13,,,15,16,17,18,,,20,21,22,23,24,25
+labeled-data,video,img002.png,,,,,,,,,,,,
+labeled-data,video,img003.png,26,27,28,29,30,31,,,,,,,32,33,34,35
diff --git a/tests/data/dlc/madlc_230_config.yaml b/tests/data/dlc/madlc_230_config.yaml
index ae2cbb44b..01e1d32c1 100644
--- a/tests/data/dlc/madlc_230_config.yaml
+++ b/tests/data/dlc/madlc_230_config.yaml
@@ -1,12 +1,12 @@
     # Project definitions (do not edit)
-Task: madlc_2.3.0
+Task: maudlc_2.3.0
 scorer: LM
 date: Mar1
 multianimalproject: true
 identity: false
 
     # Project path (change when moving around)
-project_path: D:\social-leap-estimates-animal-poses\pull-requests\sleap\tests\data\dlc\madlc_testdata_v3
+project_path: D:\social-leap-estimates-animal-poses\pull-requests\sleap\tests\data\dlc\maudlc_testdata_v3
 
     # Annotation data set configuration (and individual video cropping parameters)
 video_sets:
@@ -16,7 +16,9 @@ individuals:
 - individual1
 - individual2
 - individual3
-uniquebodyparts: []
+uniquebodyparts:
+- D
+- E
 multianimalbodyparts:
 - A
 - B
diff --git a/tests/data/hdf5_format_v1/small_robot.000_small_robot_3_frame.analysis.h5 b/tests/data/hdf5_format_v1/small_robot.000_small_robot_3_frame.analysis.h5
new file mode 100644
index 0000000000000000000000000000000000000000..d2cec1d1b35d682f2eca7c0088c203145ccfd339
GIT binary patch
literal 26408
zcmeI4UuYaf7{F(5ljck+NlvV_ial$Qd$5hrSkm|}+N6n4Y+8f(QZJjky)^W4yWXy8
zq-YvSApsu_5zIrY6?`a&w7%3l_Msq1m4FYGL{SP7pQ=*Syv3RM=G*J-X73Vhn!EB%
zxt*Es`(|$Tx3ib;o9)hYU-yCg8@Dwwk)lyn$690&56dbghCzaL)DNnHrt&G3Ux+|K
zW8xoUTa~<3_3yVEIMUO@ScGB!n5$;&={hK3KhXnFKaU2K-_r#8dS2=mCpf4k+MGJu
z+4TCJw#GKe`3nceGnj#zhBLnO`*p4tn%4M>EGku9ti6e~FY91e&!s{ii9}=vQPrQW
z`DZ-X$5b!ExassQld*A7Y|!zwR}Xb-te$n?_m}=$pw!C~sx-C96RlXVmGsiS71f@w
zph{DRJ<*B<{GAxDUs1i`!b<Z>O&3<oVctBzCxSSo@Oh*r3~Meq$KX7|U*Hn64XXrs
zz|7I$Ht{&9KPxNLSIegvZcFx9$+-skZ0vnjGPrfDxE8<jGI=ZK=1n8did9*XvZ7Xu
zL;h;<TwDlI7Ww%6@mc4U>7I*MCnqOAH5w<T_v;^S|LU3Lt6yLLHU6i*<;Mr@_g;Vb
z#N}%X-G$lHpJifaFD_=sI*<O;yz}F^JwHG6-9Jk+g@KO>4Y7&%+_{Fu<%QqAoLIQo
zUg*$Ip4fJ_ne~6M_vZL~DxKzTz<sQa7YEto_P@GrocjLy;@_L2FTDSz{lk*J_pLK$
zZnfTEM~}5Whc@vK_MQ87Qv0TXJ>lq|pmcNMm)_^uqnXI>kMI+iIl>P-i4%I3f3S|T
zP2?!UJCchi5dk7V1c(3;s8Is{-|uRXe>GdUR|O$@T#^X)Pj@N*3q5oI7xcd{BDlL?
zHP!$wj`DLf)+Yy`)qy~XrQ0JE=nY_ANx$m&P={eOvA8T?xT(qbQDbQ{lQmqEJ42A7
z+)gAtQa=}yCD}|kE@EinBe@4TmtF^GTDwQFjwDu`Fq+0Zv&K{EQL_}ARl2S|b8JRA
z5g-CYfCvx)B0vO)01+SpM1TlXIf39hKthh#|2zugLVx_P^Z(}{bS?Y?HV`3t>mqB8
z?;%dtBYI*7uoGV?x|ZDs<N7|Zx<kjXxVouA|DXE;V?QTgQ=t=569FPX1c(3;AOb{y
z2-FOLpdZ~K$FAw%`Jw-Zej(;z^7VgyR%h=5x?%`oIO5}Zu|YpO0oJQLhWXJuSK0ou
zHxg(N#>r>4%HGM02oM1xKm>>Y5g-CYfCvzQY9bJfry%~o=Mw&Sz+Yd#_{n=daitT0
zVf-XRkzm}^bw{v<#Zy}<^gizkko=r{>I%J)ng|d9B0vO)01+SpM4;LU)PNt|-wP1$
ziXRR8Iz-u^x^RO}mA`^llzMB07i-Xuj^l%!kZ$|2zsExil=zg&m%7W_^(l2rYk9j%
zN_`<!-tN3o&kU8f3yVk8J6WNP|3Fa6g5r@-RHPsRM1Tko0U|&Ih`>ETAh-_$ID|z%
z5cZXOm~R9i-YE!uuOI^N0~Gg_i>NIEM2lhyuE$Rml~qvc-GAtyJa;v0<REry5~;hh
zZNSKmS_h4xHfPkxW|Mhq$Z~f(SzGGG#s?ya-JC=!vCo=@-R7E(>$If}*Jv9XNt>2)
zdq2rN$xPlDHFuBN?Xo?FFWB$Nccs`nyivN{nkT0M5g-CYfCvx)B0vO)01+SpM1Tko
z0U{7iVExuZVl}xQQklnE_u<^3IKZx*cqM}CLIqS+W$xyU)bV7FFV#45d^sy^-d1I1
zdN^1g$)&-XG1;D1pdTxhdfPT~sdt!djpW><ld|&A@kq{bxxz$|v>(Y0V?ApOnOP@k
s8}2bV4!NXMtTL$cFIE)oyftR#M2{fA^{r~5U3tF!*Y(IJYx4g47Xv)1M*si-

literal 0
HcmV?d00001

diff --git a/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/initial_config.json b/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/initial_config.json
index 7e52d1703..2ae0e925c 100644
--- a/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/initial_config.json
+++ b/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/initial_config.json
@@ -128,6 +128,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/training_config.json b/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/training_config.json
index bcb2f26d5..7b6f817aa 100644
--- a/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/training_config.json
+++ b/tests/data/models/min_tracks_2node.UNet.bottomup_multiclass/training_config.json
@@ -191,6 +191,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/initial_config.json b/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/initial_config.json
index 045890b21..5d8081628 100644
--- a/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/initial_config.json
+++ b/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/initial_config.json
@@ -141,7 +141,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
-        "delete_viz_images": true,
+        "keep_viz_images": false,
         "zip_outputs": false,
         "log_to_csv": true,
         "checkpointing": {
diff --git a/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/training_config.json b/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/training_config.json
index 070e9d3c0..9591e5b52 100644
--- a/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/training_config.json
+++ b/tests/data/models/min_tracks_2node.UNet.topdown_multiclass/training_config.json
@@ -208,7 +208,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
-        "delete_viz_images": true,
+        "keep_viz_images": false,
         "zip_outputs": false,
         "log_to_csv": true,
         "checkpointing": {
diff --git a/tests/data/models/minimal_instance.UNet.bottomup/initial_config.json b/tests/data/models/minimal_instance.UNet.bottomup/initial_config.json
index 8e39fea3f..68e4f894e 100644
--- a/tests/data/models/minimal_instance.UNet.bottomup/initial_config.json
+++ b/tests/data/models/minimal_instance.UNet.bottomup/initial_config.json
@@ -127,6 +127,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_instance.UNet.bottomup/training_config.json b/tests/data/models/minimal_instance.UNet.bottomup/training_config.json
index d1fb718ba..e3bfbc5f8 100644
--- a/tests/data/models/minimal_instance.UNet.bottomup/training_config.json
+++ b/tests/data/models/minimal_instance.UNet.bottomup/training_config.json
@@ -192,6 +192,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_instance.UNet.centered_instance/initial_config.json b/tests/data/models/minimal_instance.UNet.centered_instance/initial_config.json
index 739d8e3e7..f4914aae4 100644
--- a/tests/data/models/minimal_instance.UNet.centered_instance/initial_config.json
+++ b/tests/data/models/minimal_instance.UNet.centered_instance/initial_config.json
@@ -119,6 +119,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_instance.UNet.centered_instance/training_config.json b/tests/data/models/minimal_instance.UNet.centered_instance/training_config.json
index 7b6782a68..e747f6862 100644
--- a/tests/data/models/minimal_instance.UNet.centered_instance/training_config.json
+++ b/tests/data/models/minimal_instance.UNet.centered_instance/training_config.json
@@ -179,6 +179,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_instance.UNet.centroid/initial_config.json b/tests/data/models/minimal_instance.UNet.centroid/initial_config.json
index 41d8ac8c3..977654b2e 100644
--- a/tests/data/models/minimal_instance.UNet.centroid/initial_config.json
+++ b/tests/data/models/minimal_instance.UNet.centroid/initial_config.json
@@ -118,6 +118,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_instance.UNet.centroid/training_config.json b/tests/data/models/minimal_instance.UNet.centroid/training_config.json
index 2d2280a31..02e9683e1 100644
--- a/tests/data/models/minimal_instance.UNet.centroid/training_config.json
+++ b/tests/data/models/minimal_instance.UNet.centroid/training_config.json
@@ -175,6 +175,7 @@
         "runs_folder": "models",
         "tags": [],
         "save_visualizations": false,
+        "keep_viz_images": false,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_robot.UNet.single_instance/initial_config.json b/tests/data/models/minimal_robot.UNet.single_instance/initial_config.json
index cb2e4f353..f2bb907fa 100644
--- a/tests/data/models/minimal_robot.UNet.single_instance/initial_config.json
+++ b/tests/data/models/minimal_robot.UNet.single_instance/initial_config.json
@@ -120,6 +120,7 @@
             ""
         ],
         "save_visualizations": false,
+        "keep_viz_images": true,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/models/minimal_robot.UNet.single_instance/training_config.json b/tests/data/models/minimal_robot.UNet.single_instance/training_config.json
index 66901c9f0..dffecc1d9 100644
--- a/tests/data/models/minimal_robot.UNet.single_instance/training_config.json
+++ b/tests/data/models/minimal_robot.UNet.single_instance/training_config.json
@@ -180,6 +180,7 @@
             ""
         ],
         "save_visualizations": false,
+        "keep_viz_images": true,
         "log_to_csv": true,
         "checkpointing": {
             "initial_model": false,
diff --git a/tests/data/skeleton/fly_skeleton_legs_pystate_dict.json b/tests/data/skeleton/fly_skeleton_legs_pystate_dict.json
new file mode 100644
index 000000000..eae83d6bc
--- /dev/null
+++ b/tests/data/skeleton/fly_skeleton_legs_pystate_dict.json
@@ -0,0 +1 @@
+{"directed": true, "graph": {"name": "skeleton_legs.mat", "num_edges_inserted": 23}, "links": [{"edge_insert_idx": 1, "key": 0, "source": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "neck", "weight": 1.0}}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "head", "weight": 1.0}}, "type": {"py/reduce": [{"py/type": "sleap.skeleton.EdgeType"}, {"py/tuple": [1]}]}}, {"edge_insert_idx": 0, "key": 0, "source": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "thorax", "weight": 1.0}}, "target": {"py/id": 1}, "type": {"py/id": 3}}, {"edge_insert_idx": 2, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "abdomen", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 3, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "wingL", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 4, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "wingR", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 5, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "forelegL1", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 8, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "forelegR1", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 11, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "midlegL1", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 14, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "midlegR1", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 17, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "hindlegL1", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 20, "key": 0, "source": {"py/id": 4}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "hindlegR1", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 6, "key": 0, "source": {"py/id": 8}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "forelegL2", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 7, "key": 0, "source": {"py/id": 14}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "forelegL3", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 9, "key": 0, "source": {"py/id": 9}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "forelegR2", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 10, "key": 0, "source": {"py/id": 16}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "forelegR3", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 12, "key": 0, "source": {"py/id": 10}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "midlegL2", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 13, "key": 0, "source": {"py/id": 18}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "midlegL3", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 15, "key": 0, "source": {"py/id": 11}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "midlegR2", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 16, "key": 0, "source": {"py/id": 20}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "midlegR3", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 18, "key": 0, "source": {"py/id": 12}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "hindlegL2", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 19, "key": 0, "source": {"py/id": 22}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "hindlegL3", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 21, "key": 0, "source": {"py/id": 13}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "hindlegR2", "weight": 1.0}}, "type": {"py/id": 3}}, {"edge_insert_idx": 22, "key": 0, "source": {"py/id": 24}, "target": {"py/object": "sleap.skeleton.Node", "py/state": {"name": "hindlegR3", "weight": 1.0}}, "type": {"py/id": 3}}], "multigraph": true, "nodes": [{"id": {"py/id": 2}}, {"id": {"py/id": 1}}, {"id": {"py/id": 4}}, {"id": {"py/id": 5}}, {"id": {"py/id": 6}}, {"id": {"py/id": 7}}, {"id": {"py/id": 8}}, {"id": {"py/id": 14}}, {"id": {"py/id": 15}}, {"id": {"py/id": 9}}, {"id": {"py/id": 16}}, {"id": {"py/id": 17}}, {"id": {"py/id": 10}}, {"id": {"py/id": 18}}, {"id": {"py/id": 19}}, {"id": {"py/id": 11}}, {"id": {"py/id": 20}}, {"id": {"py/id": 21}}, {"id": {"py/id": 12}}, {"id": {"py/id": 22}}, {"id": {"py/id": 23}}, {"id": {"py/id": 13}}, {"id": {"py/id": 24}}, {"id": {"py/id": 25}}]}
\ No newline at end of file
diff --git a/tests/data/tracks/clip.predictions.slp b/tests/data/tracks/clip.predictions.slp
new file mode 100644
index 0000000000000000000000000000000000000000..652e21302043e7eb6064d5663fb70098b9de23e6
GIT binary patch
literal 396184
zcmeF42b`6~_4fx6MeNb2(P&2ON*A%DIL6)^c5r8b1(vdl?4n4CqcKsVQS6#n#$G`&
z)+EZ<E7%Lxv7oV+*z0@uIc0Y4!=bF0nD-BUK5n_?dw=Kr&YAMey?fja+ibUVr&T+t
zmVX^Pszudu#kcgo@9^JQOD<OYihicsEq>DuzaEQUFJA<{X{TELQ)(6b{qp$y)%WYW
z*S6cL%021%=_@`=#SZWtJrDhU;n)8g5!hkdt@db9dM(Oz_;r=F@S7j#OFPve^Y3!#
z-}M&<phYhDSBd`pfnMIir~My^0Qq-+e7zm<>#^9^NCx%M!tC_R@9}l--FDxmo$9E@
z;&bfKtqNH6+(YqaGYK1b)$Q~ny?)&uenYQ&2mE;`Vo1j-UFngt|4MPWyxZ(=r{8Xd
z-*oIuznT5l_3_vDtup)D>9=(Au~^Ua`|7V$_xEAH*<%T~$5P4^-?USm)QXij4{jVi
zvbMRVeh@yv@_Nh4Z(IHu)q6?R`@5=mZCw2O_m<RWie^)}cRL(0+qHwpQhaG#Y+rfS
zmfx*V`QOCK*ADpeBJCF`?%EL_-+qxr&ca-^{J!O``0p(G=12LprJuIU97r#HZ6zRk
z-S;h*{YYVKEjYi!!k-pKU||FnMqptC7DixU1penEFuwDE+JVFC8U}UVVtnVp^&{#U
zYDd;}-lB7JT~l*Y_d&JIwcVRXSMJf&ec*`tQQbz4>fO0Z=OLqO4{sV+JEC&O=Fwy7
zx^x~eWHf!-@{p#w=E_r4?pWV2YD{wt%<U?_8921Ip`mU>Q_YClrsmEQCmz(JOXtCL
zBU_%Rf6Mpq-T!<{7YbMyfrSxR7=eWmSQvpHdj#gTe?q%iw2#nw|759(xH;^fJo7UU
z-|`eKcg27IoBJoU-$g3u>$c0&ckq?s)k<)FhlM{ajKIPOER4Xy2rP`i!U+7&M__LA
zClZ+EPpcHySfuM)bC^%jQ&i5H;H9zR$&V$(kLv5ly5`!Jtsr_)ht?0OYiz0+*3{Tg
z{0cUe($7s}h774}In_5dw7OH}o}(J;8=9LcUq{yss-Yh$zprm-YOZY<SXa5J_&0cT
zW#6juLvazW@|zy``?-Cgb2Zi1UzbuniYt{Z`R!Qwk6w7ob;Bhpw-9H1=R@m8H&tGC
zWqYevw;tVkRCc|ZhS!a#Ypy8iyv0G|I}fTKT{p0~uCl=fdu5f)vr$7^cH3~LZEw7H
z*NrO=Z5T7MrfyIr5;YZpb)$=i_3SmVOXm^w4a4F2T5iT$E0;^hcHW}0aW=f}@ZxJz
z<CxI{E4y-)Up3c`9@4T6*R%5N;iD?Q8{c`<;oU1y9Mf`#%Im891UGbU8c|m}svEuP
zZrfG>eOn$fu?yU5%&3-~zJq%9pV)um#Qv3Sx-lb~>rn=1YG@o(2d}QaqO)hq16#i7
zQF%b+{^?fQTpZdsx^`?u?qPNHLx#4z$ZkDa9)mXzt*aeWbz|jOz(JMQQTZO+1K+oD
z4*a5_Zb)r&{h@U=6@OGfmDe?XVwcXNMmHW>+1#vHrX>_3D=&CN&8XVup)D`F^=@Zz
zOH=oe^$j)X(OxaDzuP{$)irk;(AeDEIC9LWnj!=PE8Cb&E!(5@4fPE}Y6dno46Yy2
zt;H#wE3dJ|vGoI+8!J1boqt<AZl6)RwnT30mWS=Zw^sbp691ayqn_P*ck5Z(s}h1y
zBWjylc26r$F|u~x?t6Fb*}GexZaur!jvm>kcgz2~_US#KzPWPGfsG?a*0${8cJ97U
z#W<ChRXbv2WA~A@BL~!0o?%Gc#@*{04sGgQu(}VZZ-DQ*78-Tek-F7}@BD_K^<yDs
ztv8EXx<C=>%4=%{Dc`YiOmoX_aZ6I<yJA#Z`b4*;5u+-~n;R=qYwAYSj%sQtvfe$r
z_36{A*Cv~7)@S41y*IDeztSj1H`g@RSNcP9?Z{D;=kC>`SMRPpdv)#ENB8WxMUPFl
z*m$#UJvQBB^PVjwIJlC{rlE7X|7KhC+`QYS8*kQglT9o4uhdzK#X8TkP6+S!v|WqC
zpyyTeR9;16!-&Hx+v)=<oo7%D-7vUzL{nvVzPJs`WHz@JVeh;}!<Z2xT57eXZse%u
z!>ga8;?4n$P4&%{KGS)0{lK9WWKodac)uSW55Jt_zCS&(zF|;ZrG2%$`hlayblw7A
z?cn;+P0ck!TK%TwYC-mk;>OOkW11T)j~!V%wrH6(m1`G6nupemt`vV`rT28}wMmys
z^Q}B|RHg1mR3x?PHkC^jwao*E)-=_RtMr53l^9j-ROzZUL&nteD;ZT+JG`cO=;*qp
zp^YP2+F7?=faAf3qE?u>(gV5`-_%t~9-_g&Z+VgQgM4GfM^%r5F5c4ai_xyqW5zU8
z`eoI<Dn(H<u#&!-=EfT8`_f(N8^^TPRDHL`O1vtKtf4YwRf5wnWJF!ffYFsWlwaDw
zO4n)$*&JUP-f51^ruvcfBWgz%-l}>zl_NnFt5wS#-8f)O<@!<euZ#HB99FSa<6)&6
zTl#rJ-C>XfoJh>}P6blBL;c7hHF)8x>XkMQMlxEed~=HhM${czx%^e)Hq}-}tEQp#
zgDc}bN3?vm;e%^hhN8+nDg#T)cv}Uj++OKjmFsOSb0NVhjl-L2>PC+)hQ+Ffx7^e;
zu(9GLD3nU}ONf^HG_)Mm8c{#4rOqnTo|b2sIFZg5wX4idTjoX%CrH)jv1mR<liBua
z{o<t7N|j0NPbxQ#r8~^!>+I&whvQ@L+?MzZvwQ5J^-c8yM$}cE;x0eMDwPes7HP{>
zARw`$+HR{|_TIMgyS{tv)AFTqLuE9s%$b_&ik~X~tJ)-_U-Q>_d)Ah_&&&Ft@)BD@
zS^T4X+$`jy<H~Tqln)E}sGLJwwQ|$Ke8^cYilq`G4mO0c^#9rUZ4P-Hg=?2XD&&?F
z6#w8{-*TmMedE@ld*omJX7DrJ-tuIv|E+p(e)}u5agBF6?f3cZdsphS^}l7V$Zx-^
z;+NL{j-8R;zDd<N(M3MaZ@;vvXeay(UNF7>mEoNhjQI37`R&Ip$u||>j2e{R{zcV>
z{9DK6w+~w;fBc|p^4p(VHoyJFC-U2OsVedPzszsHwaO%q{Q?3``ns){KmRV<=C_~!
z)BN^(hUE#P+u1Pr-536}FairBurLA(Bk+GG0`{Fx$D4}W@Id`oQ;bILf{xE_+47r>
z+8^F>OMGIdad1n#z0><Gx0tsdY;L(lZF>KBxFyuD^Fi^L6Hgl5a*H{C_X%)|J@3u;
zT5eg$`Eke1lziaNmVDqvADAJM56n5a4<h?b=EPehziE+Uea=a~w&zNE)Qu9yh`u%=
zN3I|BcZm~+iE+dF@oz(&rnrSaN_yfA635p`9D6>*EtWVA<L0p+1nvj^W{D&B19P^-
zQ5S=rGACXmaiZu0b2@Oy*Y-i~Z@Wtzdx^xc4G=e9>Tl+hoZ}N`G0aaF?4wUoAJtu!
zEc&Q>2l}Y(O?}j_zd_MQ)e+D~?djA<&6F35K1zBVb5vL0DCAh?gnxn__XcqM#>5E^
zBj+UGsFR7~CVnb#!fL?L$nnfkuLCE%4jj{qIBu7XU|cvJIN><r*t0&%IGXkN!N74F
zLfj1d&Ahur5jXuJ>S2yK1~`5)>S2yQW&;?ru)oa{=S`7woWzMoFGx=KlgK%u4ID9U
zLDb{g5;u`!L_Nfz`GH{{xV^v!9(`ch2Wm0&8~VVp58ML~H*+QUz_1U3S-0>3aTIe@
zGu97sbmF`OK8P=X-x4RDzaiA=wZO5*lCR_8ke@Qg{Q)>(1MCNnQ$L8afMZJ>)dM*8
zI`lPj!gd>GdRmPOlQC}VWBoA4P6dv64)iFFTiAYmsMA}46aGkg^q+eCFLJh%^qAxS
zC-uxVKmL7~AL#pOoYPa5EaveVeUN;uU+oAz5q+T92WC%*n=kpm?*VaBU*US;cH)G8
z{iNW;b*lTdAG>(LQO|?lV&a?%9D^Lsev5B(FCL@Ye^#tZ^sUUf`DX>ktPPyh58`o)
z6_0Vqu{_SX`+yVw3BFDocMNdiiol7Jne*4R3y#vj30yyBg+)OR_MO1vw%QBEQ;i(Q
zdi*2Z;4wd~=Gei&v1?-7cs$i3fn!mR??L0KIk#I;r~Vqy;|}9G9jh~rXFawa^^`bq
zG2r;8aXjrt9Q{tuf@3j1_E6%OZ#Ky|DQ<DoTu+)GgwNW;W1hgi(}g&}ZUTMhcF<!Q
ziQ^voP4O6maZ7si&cJb)AI))#s{zM81RT2|abnLcfD?hEMiIw++gNaPiDS2yIDRdO
zV>gjFy4@&&V|I}^W<7}$dPy8vkLoLN{4XR<6gm29h?^?K&Fvv^g2=HOOM28dz@a(~
z$=7wjiRc5zJ_v7u9{)J_K(pU;ZSTSd=5FvoV84Ztzb^7q=D4B2QCL5T<5$J{c@j8|
zIq|k$1;^h89L;`nv!IWLa^E=!I2t*re*6i@nF*ZGm3=+3d%>|&tM#~#S1R;)<fOQn
z-GO6}6F6@E9OOKUapQiVE`q+JvF{kxqfc1@I3L2eV7On~MYn{0y)pDR&7AP*^2K8m
z#?5a)dd#o87J4G;X~kI&^r+{6;~u7dZJyt);Mm^)$8*274XYL$_bBFPJ>uw1yFh;a
z260Oq_v*^<m^*<J-zJV)Y7lUC22OmG=5Il-T|6dC2aZ{XII#oH<8P?ug!g_{JjP!Q
z9Q`$M%o+^^C+vxFdxSV<D9kN2_BXvYal)A}PxLod`%QIN4PM)&!13*d;XYs7c0|GP
zdjTgfCtd`c@F3_>%+V8o6H1)$D#Y4ff_j)^js%X|138b8p7<}AlSkxO=7h6><B+4+
zZ)$bmL=POdDCsfXffIKJj^TN{yK^0gHF7+2%wHvrIUDk0&Ie9t&z!SH7IAaCpq{5l
zkDtC~!67}#2kJiHDAW_V@2JyPDIP<d$Q*x;#Bm}=-vb<7=A0>Uf~@CJQP2G%=P&cm
zaU#cI+-9Q(IU4iRDsF$4;-+RudbFIMb3soa&LZRke=u;uZr}s|9Qi<xg1MN(@h9>;
z#C^CP^f%0pOY^Fgeo^>9p|5S?{0cY<>qoyxoG=+4V{rbad0g;kuM6YCO*k$b&hwoy
zoePeo`bl-VH0r^=qh2A7Ibn_BF*Lu{J*n@w<<>4Z`exwx-x0?TSx?}E_Lv{+JDNH1
zH^A{P;rPSzURMJgQ{uQCC5~1S$0H|{II6$M*-PYnjs2~p$BBB>!6Ii*iK9eL+ydfO
z*5lg13ExS2{BOnlh#bG0sONKuLvbtXQKAoIj{aEUL|KpQgZ*+nmg{E@ag%)@bN0<S
zE^!tYeJ$#-a(?y^IkFE#zsdP=|9#G9k`FxUDfgWy#|`u2s9$q_oXAmIO7$c61K$_&
zqt3(m4s-mwpeJJAi7!#V4ufG_@GnCj^{HRiz;z6R<AR;Y{d)LX(Bsd*`5Vux?8C!g
zKDrN#bNX50=*3_>^{?SPk@rKwr7+F~n)i-lPBYA_+{wsUjK<TrRDHpT`{8)X>jkq2
zj9Ct^FW60J{IS1+eHVW{j6Z5DaqPuEDfGlY0LOMBj=#DN=5PIg6CYwd{a_w%-vT{u
zGvfGBuwI~jSkputwK%Mqh+~+e?gWlUj+#!KFcCNkucIf9+66cfuVc8;%=wMV^l0Yz
z$0a@XE68b>1$sgs)-$UI%nxwCN;MNF+zfMN(vvv$!CX(PxZMmK{R(g*`#`S?>uq-@
z&JUOq-~CmgCt!Y3-0bbZu^2bc`7tkn4>avpb!R=h{;JU9aepUpe%#yRGmhoBnH%%C
zC60Pk;<%kf&bz?zsK+tKT`F;`s7LQ0a^8{jgefBD4M~sReqK3AkG)9bh;dW9NF4i7
zt|xKKdBCCiNq%#;gWqBVzZv#hXomen9l&pv{igQWy6^$z$8&!48967_sb2)@)W3@T
zfcuWA+qm#sz&;w;Z~AH2-zjtApMew5*P8o*8Uvhw*J)Foy2oLE$6Nt=V(JH-p}$f6
zBt7wDiQ}=qDdbr02k|uM2j*(vIM(Afh4qj7J@)HmsE?ZM2Ew>taa?$S`db_h`v>t&
zh@0kfLiSncZ|-v71lHpZ?NH=L9Rr-WBy(OvPA!fL_YudujMu=B<5-VtgncB1anr2F
zYz5a2BXSh$34a{`<H8`|xVwqtXTTnQAU%n5Htr*#p2Tsh!Zj9mBI;S3^r(AbA4wxe
zGskWT*ChPEAa1S3xqV^(jjn43)}y`wA9&=r#Q8|#c#)$-j{Z951m>8xB#x{{?I-H_
z5;zn$&m8}X#4%e-adUkoPW&$CMCRye632_2xR1!e{8-FSiktnL#4(s3TlT>~;KZw-
zemwiYJO%r(6t~22H%T0|A;gXPj^X|m?gvi5eb~r-)ZGpHqok)*+-}Y}D*5^=sGo@Q
zw{+di?hF0R--3GhdY1VB_ijsZa}NPWVf}==s7}>CfMakzs`)ygKLh$(ydOC62%7KM
zEnyBzaq~-XoxTM9Ak<-hyPY_08|d*CIqCYG-WE9S0pQpP%sF?pqQ7a>W0xY1e#;hp
zM-K&#{ReSW*IvbA9CFh21%DIn`#*?r<9#GG0DP^8!~M-&S_7P6z%e%x$Nao^#)<3G
zyvqC<IQk*v971~3IOwCqam$gOxbMNxM@In1Uqc-CHC#Ikv|dR2uqT1v^mOD5BaYkb
zyW*VCLQdsG?vFTb2G?_G+>XDiEqtKRZ}xiff!d-E_zl-tmaog$L2$j^UIsph2eS`W
zd9CmPuN%33!T{h{@-=hf2Ed8PiR+TD?F+CzH5UQL_G8Y&vEbNKVBA(|9?}Q;L9EC6
zxq<XV3mo+>jN6{|XbbD@i0AA~U*hO39xph05^w_7ss0%1)MNeFsl*90ffMN5AYW&)
zN5Fosngn{n?!<{FJXmljKc3?jAA`OVhJzl(aSOA6<B{W;qff_kkjRO9635^BaIR-*
z>IbG7I0iZPI?|(lh5Z0Iia9m{$0En?!JLbx7o2z!#LY6tT>>2PoB11Y%vT#1extah
z>oR_Lt|zb_dll$0f5!RSvZN;thWt46fx4DCZ^5{r$p@*w9SHf+sK;`C)Y_0AjU2^&
zR1cYdPCyR%pcQ8W^g&rqgT%3-o;h&V%Q;DpTCjT7$vKhp6EHu%lpk4-IVi86R&iT1
z=OjIDpcFSF#?2vzd|;9f)&&mvK(h~2znl|!JdN*4ehUZZeoLIVgrr9gk~r>7iDL#x
z9Q*tO(059{ju<z}Ptrqi<37su<N8S)wVI?yjRif#X;r8H20gRkVBDyFQrz@r632|l
zIZ2QIO5#|X`z>+IuS6g8&-0V?xb{7Z{ziHn$4%GgantNK*B3Yn^JCa=p-$o`<V5V(
ziDSk}oX`Xudpz_}w+i)9bv~@?sb4$pqkcT<`3T2T9=Fx3HH&>0cMObkj{9}^`?WAG
z;Qn>saW0$;`{V}a@rK7ae_WR$Zu&#qr{Hnh&Rh%jcZkE|k30D0g5&>!dU$?d&mCRN
zcftUi_wxL}Uk&>d3iU+h=+lAY|A6B*bK-~_3XYo$9Q_%c5Aj?54(3${BIhO=f5M8e
zkK~YJ_*_lg2gW&toX9?~58je-6mwh^Coo5C1DyCN#4TOl_FqDNBEEk??M36ZUgT1N
z6F1NGB#!9;9RCS$(s@4pRp%l<_Q;YCuDcrYgK=x6r>DfRy@8`pk4x9<Zvc))j%UBQ
zqpm7Ac1m@A)Rz;p{3JbbeT>`3phqz${t<j&j{-e9aaNfsaNMU7CsgT4adS7L9^@oF
z>SvP$jurI;%n!vaal-Y$Q6)~;T;zy)?61%Vm><t^vpWJOmhuz7xl+<2a*WA+ko5Se
zzzJo)ot^73TtD`8DL;B&;ONh)>nF~D`tjqy2dPfo^vfkZ-vTEdP~8t=pIlE&aeEv%
zR6ofFwx8tdAac~Es0Z_7HllTwufcxcu)if={{r%3O7#=I13dxt816g%I=r4m{f+hL
z)v$if29DpK`i^P(dl9!Enqx;v9P{<u^!T!#)kQsxz$y0~{dw+#6t^J9ZB>b5M@xFt
zqR>YvKbG@jZ-o4m_4t)UPF36-*N?je^tgl2*EiERXYjhF#ro0gH~kijbLKeo!GYuh
zHxBBQd|;WQ{{|dI*Mpf8JAkkK=TN7Kqwa+H4vpJ}_YeHf^S<Mm<4*t%UC*+&u$~=(
zW4<hL&cOFC{0{V}v>)=$g_*At$DRfpy3XX7qp=^j5+_arjzf-Sj=fgm=t&aC4*)&(
zThJ5uT(la1`I!KE5+^P@Nzh|ZPsIErJrU2{QrukX2jlTvz|p`7HRJ=`{R)Aj&jLMV
zPH3O|!127wbcXZ24*jNTiDT}#KI0@`$1{PW`=hTpKlVJRADSl`p7*+u@O}()I>v1P
zar~n*CC-z;u^2bQzE+E3AAJw<lg{0$8n~|M@w%DeedYM4MT)sH)ldAC=A&U3=m!qx
zqnhWvVNEy(86E+STam^Ez34W@{7tVgsrbAAe<|sScixb3T;lu%I2OkR&HFoXJv{&R
z59BOK9QDfXFpu91IQl~3xZ8eO+`@W3Aw7QABZ~Q(-xu-|rcj;65An?QiNG-*--n-n
zpkEtYJe%MCfkIDwVmJK!gYfpb0!Qzbb0TxX2t4C_CUU+YPPn-So^40q*q4bDm;PhM
z39QGB0**mFnmKARo^hUpoX?2k-l#2}&Fux8FpD{z&Mt1zIBrMg#6y6ikfWFrF9(i3
z1vv3@;;6x(NACw5{|<4&vZrMn&m4O!#tqLSnaPwNJrmC!9|s)$DRIof1B+*~{ZJ2c
z)Ss>@ZXq8ej&nK3Ce8~IC-k2ihvJs<<B!fc-%pP_4)hQw>9HqBocPTA>ybIWDsHXx
zJSlP7k{@+4=y7x|jq{^!0!};zea$|IoiINZe4ySYzp2ZoWIk~0H}f~(#J<=Mt|q_v
z(ZC5u1IK+rezUs_0KW|bj%JSk>5auLlpn(!cRz3patw3SI><Q^IjQg5Y>Q`8&8X)s
z(qksynsF3!^cNVny>a}xiuAaf;o7d52%PW{=`o$K?;Hgj^Coe^nENHpClW_b6*(Ox
zj&&mE8<BH^#0iUuoN@EdiPwr8QI9@S<cRr+*8|6v@?$%I9$U`OSm1<u*r!O>=ls#9
z6ysdnAAF!Z`(PBz53IxbNq(DkV3BQiH2UB@_Q7`GYqJ$_{PMKV7q|Anq4nHfiQ_x0
zUySu}Jo@be_S;hj6&!ye)(`v59q`ZM7P~BP>}teuM_*HL49<7Lsm%E~oO5u8Bj-Kh
z#No&}9XR$4(qqQ`z2KORsE7A0?Kw992iGO)6y`*HuWu8^?JeTC>HR^E2Tpv6IDSva
z&w}Bohkz5xoIMsK$K5aL*{cnl*TlGqdUW45aK!v5%uhLPdT-$9vJWOnKCsh4k3R%`
z@Fw{nVjorKgAe=*<OBP~Lxn@i94B)w0gi0|PJEp>{&|?c*}nou%_NTg_mi2g(|)`?
z3-s8Muj54ExZ%iojW}k&pyJu=S-{ax5+}U#LZ+t`=QN39`k)U6BPS9^ZBk!6TRa&!
zb~<tNEAM1_JlCnlIxXw*+XKfSN54#**a0|U66WV2;)FGUL-|R1%*DB$crx_^w=!_T
zAoKz2v6rEq(}3exkKO5mOi$vts{AC5T?{xHIq@aZ6FvZrKBJlwzWY$(OwE05Sx@NS
z75eqTpvON?9QE4~#j|PbJ8lNWE$+X_hs9^cVf`dMwu<AJV~+xkss)aIkvRI8VFkxi
z{X9Y(_u5yP9?L%Pw}KvxzD|0~F2K<>)q29E!;5FL7em|v>+wC>XL=GxU6*qV>oFSx
z$70+x$4z&FxP?oR!#>bEES7N$>v6XMM^T+J$Nd$qXPNymZqHEMY_Cy;o_H;A{OuGs
z{imN59EJI5rRVOPqZ8*gyl!>?Z~}A81&zSD8vQnnIN`*V3r<`d##6_7bjUf1Iq_!T
z1k~f1qox2yO|Is+hE)WPtK!5-RHy1p;CSRX=9qhcqmiRHZf2c4Zb^^F{6yRj3CwYO
zVSe_*xIInzQF}ms%v8{0?xwh@aX-)Wc#d1d`YHRsJPRDx4><8z;`r_(i~MNxn|YKt
z=Fz1xPGF9oocp?!55B_u^hZ6<5hsiRU)zg7k9~|d>b#B;=iHo=>L+Z5eFy8*zCaw`
z4(c?XhaBE_F`ui9lj7zt$T>+*TpQ~YIg#sB4a9zceJ4IndMfYI&p55(CUQ(~;1~;W
z^Q^}>=x>4ar1A7O?J`c%W6%fG-;y4)3UaXT7}jIA#=dhd`i=GY)fN{x?h1&T!M>9?
zaY>9D`oOaf)bijre-3aQ`yl+ZQ^rYgbC*aQ{V>+)fe<%0lYC$<hB^&6-w6*>e%yOM
znSajX5+{fp^?n;TqMmSxsON(=a6~=x9=GH-IX_C&BXd-hp2V?o-&q;_=1cPsdp*=?
zK)-432ktW%Ps`(v7yT9&2aYTEw+EqqBKpm<uj6p=HI1i9Pxz<QcQn?IM~>n;^=AOb
zmpEqD5}B_P$5+j(QXe(XgRjj&P(PZ-1^4fUVq8#vfjaeEKlT^P7o4&lb%Ru=<~50<
zKb{+h@{{x^vG3StM9v3u;{=?CB#uA14SGJB8^<Fj@OT<ekT^<=o11Ig${c&7$ca+i
ze#{*AAJP+#{m;a0A*b>OfZE{e|5)6P&V4X1eN=rS^#ije^wDyi#)TX;_qf@`aNYPb
z-tX-I`3bbH=XI7|5Bi(JaZaUi?pw%@!Ew&<IH#Um4#qhJoUl4^^ygEH{a$x4?33FQ
zY29d_hR<ejI3Kk<A5{m#{LRt+TjFfFY{79~eNueBrP0K3f4&y>$!qYs%n8KNGvNGz
zLXKiiJQ+9^=R0YiB6eA(;Mfm<qt_vhdE;u(GY~lLIO2rI;X1m;b-m$ruv#3~r?@Ur
zX+PxEB{Pm;PIxfqc;@)0fn&;?4id+`mUCL^c`oN9J^o=ykL&p3<%Fk2Js7uge%xZ9
zN0;*BW=V0Y=CsO>?1LqwxapVYmD4IeBFD|M-;xii^(2my<0ksRSNVEgIOOYce&$d=
z7`K3RYS*SZRZCAU>XhGqn)<<M;A@Bb6pHte%mK|XkH>u%llBuYg8Y;@W(nYUdY>zE
z!Xa2c$O+6*k2eA50$4AkzT?-!eI(RlSdU)`I1xFXIjVoIM|0nC+khUrE~B}R#w~$U
z)}uNh2j3s;kEj0THU&<keF`2I^u31^dZ>>&-WOAcEM4?B^C9%nlpi}f=Q!s0-6W2^
zFXz}Y=NjbfMn14B)f7IkheE$L!$^;R{+;6NS9tn?;_tE8FKIu-{-kfA$DfM(E)URt
zh@QT6p+}cEarK;InG>IpIAJ-FbAQe;tjBBs9EW;ZaYQ|4d69#96zb8;ahpkc)XS0{
zBgV}?kn2&*G22L-7$uGs;}-4%4(Ul8W%9TsA6PkV%Sv(cGepiVk{&Zt(qlwD`XMQ9
zx{8zZ$oUDfo+@7_ALt$CKW<^kJZ?VK55_G{fjSMlQl0A2^UtvzC60Lp;%1TKnPX3r
zIQ|JSKb=I*Q|JTaIOc>Y632;tll27D6DC94k{*BMymDOXZ;Od~p3U{7{P+pLDfdy?
z*HPqzr*lry<Bpc}sH*x&dg9`u9*kSWxFtR2SV_+u#s$&Wq^HaYf0gt^(FalVbs)c8
zjXv0e>c{NXzZmEISQzKRP#WiK{kz3DXK9?{^RRIW#7)z6^!sR>Gy85;jC1O898dQp
zPP}RVf)gj;csh_cX8-pJjzdo1bAvYSTa2d>IrdKCgmr&eaNNbnIfyuVT3?vIIpFw%
ziQ~6@Ki9+OtKyXX3y#C{NZ~f(m<KiiJr@8c)(|Ibx@W;LM*~M6KpfTagMy=;f%$>v
z^L+k8IL8%{qyA2uuwIXX6FqRWC5~MbIe!3-I*2%?A8^9s$l>!Y>RLFLrtmtGpUj*!
zx(FQi*&c-+iyXroR|g!69Q7}n@5Ih<4l*DoUPYXE!bTEDfgX>X$Q=E9;P}TtPn^Y^
z?crPvopUgk6G!jAp}^5!f*yw)#~gDQa3XRPpWg}ZfF6z48_gBO2{Gp=&W}PpWsVx3
zb2M}8>p90VC*A=ZRq|V065>|oSmcC~9`zBPQ$;<RIquP1Px7@AIY#7|?{ZG${MhG3
zJwK83$Q<1cd_dQoTXEi!IC^o3W1Ap9<+zcaGAFzva#omsj>fo^Ip$4?qm~sp=<Bi`
zt)#ex_u9Z|l;Wnp1s}{t&$|*QbQbl9`SD+i98r&7RpKb@JF|(~B2wJ^2cU=gbx7mF
z8WP9LdeGN&J~8>a+HZ*y#kiRx#Qe0E^td-bPr&gf^|!E?q{m(W9FOBd;Qpq*!0`wB
zj=PfjsGG2E(XV}Zoa+P}Tkh9a0!KfA<J=oGE>u2iq8PWiU-S55Cahg>9C8fzYrBZV
z(f>d_$nnh4PaIruEb6gWlb*O_=YnHPobYKrp0*l)9t2KAP8v^r6L1W26p!2HZY^-^
z=Q+poIHzv{PAGA-%{iJm{uSU*+$_f}ypVGubK+&daV1XtHE=jT%n5qULJy5|iKEWX
zIkq3ocibO<Lq3R{pYSo9i>A1x`A$4h;<yuYj%SV;i1{I3Gsi!Yb3)QHP2%{|B~BOs
z9IhYcsA(eS4&XSPA2`mBzd_{e2OOHe1?I$Sa!zDD8ubt-)sMapI5ZDQadUlvV=!(h
zKl%dTkPi|k+zNUE)lV(Wd-cgVCvbi$XLVtIUCK}V3vg)sNj?aFlQ>~g&WX%XdjLlx
z$MC#Yp$|Nr7n?%;z<!W(H0ue+1IJ^3)BV}kI|Iklyq7udS6DyDam<N_L*JpeC61}$
z80N$tz=_Clyk5{ZVn0BRVUB(ZIFb4_>v1PZdcyj^;qjE;kD;akht><~8j73ReXXJ&
z_!1{vC2>6JA&zE_zg6P+T_uixP~s?2kGoCc1k~e7ddwpd$90$DCUZy+aSZ1tTn!wm
z)8w~M#Yu5<Vt&Fd5VtbNBd6@^xKXZWUO39;oaAdYS<)kO)SXg(RDY2(RmzVXH!E`7
z!N3XV1I77KQzTBc4^rF=<|pEMJJnA-K;r1@B#x|yIORIE2j-lZ#-Cf;z_~-pPwXdg
zqR6qEN`4Dsomw$J0msv_udDN;xbMs%ZpiWIgA})TixjtNPV#{cV%%gsqOYqtNly?t
zwkki#*KwXXNly^_j;YOk@clUcb}4SM54`BN>bNC6bKum7da%FE-EVE-d_TX<L67Kz
z&<0=6frGx*IPcZmcT9l#iGRd>SWELN)eZK0)w8f}bnnu-(S4E6d+oI}53wt*Q_Mq5
zY5z^59(xROYKdc>$NlRUfD`zAu3=5|8?NUfbD{$d&96Q0ANU)w9}s5%arAk}iMT)d
zKIsW7<eV^-^r-f*-nON<>9N2G6t|?OE5uE|SgptW5jYy>iTXO?#KF0qR{1$v;<yb&
z&M^`v49Ynw`M^mWBXaa{5+@Fwe~w#6(&J^0s7JRYZpY?&6z9he06k?NI9xB3ec*aZ
zdd$%hN28uHM^BLQ<3zvNDo*m7LBEwb=2(g2MNT{_*ONE_eNg7OV{(q+`XL_}tRK()
zK%WX6gZ0xYKRZkLiQ{vQW)As!Hk{K$&Q7_nQ=P^mL=MJnHk>m=&Mxz>hx$R8<7GWN
zN*q<y-%@^ztmpJL=&6d^561a@o}V9#bJ%}|6XdvIzb^YgFM#}Lt{;v4y38>r=RQdN
zKpV+#rmDZC{J1rtkCr*%_?%->zwVQB6pwRC92e%`YaD;5?<9^wjw{U%lsulw^@H<+
zGRJKUdKPk&D*HhHh~qYgaY3w8kMp;(4^;2m*P4B8s`_=R)40A=KN{yd^TV;Dr2Zz4
zKU&s<zV=u@sZOn^N1h*eQIGE_)sGeXffn;a^WJjYbT5e$s^XUNBhN#O7&k5UgSK$w
z{5XtTIX|+m1I~M?PSbkM;yke&H@5-Att}i|T4&LGlsJ~h1-*WrpX4_sjz6TQ%&|x2
z<IfMpi8zm+jUF*>)q0ZOXkA~{QysT7&N+-*IX^+1S6SRYD0AevsSPC`RIeA3o;l>F
z%5Nz@vYsgFnM2&1<byeIs@5eY&8yahem!4t6Z2EO{#nRTD)~VDhvVi-<D8ryyW#x%
zU=Dp$^jlket+4Nu^~m#HCF^NRomS~-)emrfU9O+_d#O&V^`!HBbLcxF$BBB>dU=0K
z9DS-ZuhL@N+QOmh+vWYLAnH+b)f3RyNskrx#b_U?oS(UK;`wmCH}G{pf9&qXxm$(%
zuz~k`!&b20tDlE`Sk3#rZaRE^BE4@aTu=M3emv~=D&(j-I!|HO*{$GsJg@8q(Y|ur
z8P0j@naKH&_LbG1cs`y!XYQZO8L(clPacpHhY=^#?F5|P!#=qiOdPceyidXqhtFTD
zQ+9`Q-uQWGCJ@IotzU5LMR?A86miV8+d|xq1Wp)29J|)raGv~8)We+6Y5Rhs@N?$W
z{lu~3fuoV54<U{_132ag;Fvn%n4f|keIIZXpYwJjfJ2|7Y59D--U;GnFU0fYqnUFo
zZ~~r>w|s8H{t|qk{s|oWHsvSoy))=J0p4$B?;<^}BVK2sb$v5&)NtVVaiGWUPkP+7
z(67T(;5a@fr1#nt@^c(;)E&$j2Is}-`nEfiIPP%Z#KVB2cVo`V9~JqD7Xc^m=P=ou
z_bfQ(kHCrlU{2kt+4&I996b!<R^o&effJC^>hqrN298FKXHGa(;y96GmIID2apGMP
z$DE#X0_$<3b3KaVrkBq-j^m~u$vKYosB0yTX~;P#KXECE6Q@g@cwx>-`LX2dQhsbz
z+>#!9|J*obzxgvIJu)XgAaX7MJrS?hTh5ObIn_RBrRSmf=Qx>zz9zpVPL$(zG3c>0
z&W)iu_3P$wOMVNTBp;Z2K@Zhwsvmt0aA;oT6K7Y6quWcID00jhz@c$FFvsjIas0O*
z7Ja82w}AO6>rrQ;4=`@Y*Ku0TX;nX8=N!*<8fWA_NO4ox4<d3>KTr<=hx(}Deqa`X
zxKV!#%uy@vRrFE&2k4`TW6zcJn7eX4iQ~TkJ!MY(8uYjlM_rP0lAd^{#BpCr9IHT&
zK~CWQ7Ou!SDL-@2^M%AQpQ5iz9Df;bG>+Rg^@GK?E9M~q`&){e5#wgR5IL6vhvo++
zaeB=^C&+p(1&%>InmKk0iDTPIezPBodT?AQbIe{MM~>SkBFE=(OM1edB1hKqZ;^xb
zQ`RGMyvz~xXpy6~lk~`(DCQ^pMe>2!P2`C6<HWdyvm{Q~N8;EHqTj^05r^t0`9O<)
z3vKWlamWXX>qi|Z=?P-o;#}ia*5kzd$bH9sDEZn{<tOQ}qTh^|pC1pW95>n5-$xH|
zQrxtdA1nH8?r|ed^0nI${6_Nw$Mb`5B+jcYgLPKq&q4RE?pDkX+&GvYxO-`xrB{c~
zcPVrHRuab?1)PYS^ttZtY~c9Ak;Cg?dv7OL*W>tOxPELE$Fm-HC2-Ugphv&L>)=VS
zKJ|wJN2kw^|5pcr<2RS|#0#<ST#j+$&#4c00Y@E%dLE>>sX_2Lr?ZLMg5?bS?{HFn
z7Hr&Hm7f1R$Nft30r@S=hY#kUr+3atzK)m9zu&4kt@=R~C-s8`!AbdvJ#syXqb~aX
zdJ;!%0vwuOCr-qEP|lAL>$Ey<i6iUr3m`v<Lwd^n`uoI9m-?u|^+K7WF+Z{7Yjd~M
z-zaW#=Okat94~W*LVsJxQL3CDIc{or+v8TQAAgVJ12tlSa>P2FcRi^e%)xJ>9#_9W
z^~jtB8n-#r=`he^O6z)BH<tUs9Qxaxq7SM#t@<0T7k(Iy=6Ry(Gymg{yIs_S`I$}J
z7IM`8XxuK7<{>IbKJabufjqC0IeMg6r)}_?5`C?4T$nFki*a*u+~j`n8>vpcIDb=j
zNcqtX5I0-yZ@6z+?mO~4-iaJv6}Qyi!iJI_CB{vOeYDyKiQ~HEoHVae*GRs0w@GpH
zjX2KX^=-%3gZ(zhIUKK}??cyV!+Y?4T6-O?xA}7k?0#_FIpVrL{oM+GA*|~Ia#Ryt
zXNo%kCyWP9`rHV;5uOwJJ8&GIbMWi$0M~;jz<S&B-^<a@!{=-V{QS3cy<QpQOazWg
z*XtL7a}ME7;8^}VyKwc^1;_smIO*^9g|${J_7C(WaJ}B}`2*6U@LYher?{y%@%#av
z3(()tK85e_+k&GVaN@JHe_%$gw2<>Z88@{h_>Fwv*a!Aq$p>mN$p^k6_km@<`6^EG
zn-$~cI!YYVm~&j>tR?Ajq8=^lIRrQg>nG{ai{_l9CyILfqLLmz0yq)-LDHjD&Pn-+
zv!wiJu}+CYdJ@Nc4c9fxKJaqf+QRu<;>dBEyB><0XCK55a!$&RdR>ZJTk@km%sKOt
zAGwcG{g9rNA6>;sdfJj7jde=nPvV$axt_!^V%(fqKSuO*d^zW&xOuUDlvqD{R9-)=
zd{D(ndg9BH50vQZfPIJZlQ?0fs7I_HFUJk@Q|81fPAffPKX78)ycjnx`asT)%pt#(
z^(^F6{+^MTpZ`|eQa=b{{VZ4?RQH4A>jlfPZ{~ISLvf;9KW(VfIr!k+`PUN`k>(*Z
zuPWDRd_m&K^ALl5)Rfi>PVA%A9LMv~D31&6K~I_EWlmLo5=S0Soy-{{jz41Ds^=k!
z*I5zAg|Z$uUgD@1rTh@b;(9J|+zPo50<Y)vnZTiWVjAbv>k`Lde#)G%ip233=XzT8
zovJ!5=cmlEt4bVw(SqbeQIER-IiKKqoBu9?f8=I3XLl8@>mS*1oN1>j|Kbiy7Jnbz
zcEG={S<CC~T`z<6_87cg-$d(eyW<_jEpZ`7Ett54C#3v@ZKV8!oyGiYFXd+;N2wok
z+?-sedq_UeyGcIqzZ88Sa?Gzq&h8S&Y%X!sqmr-HRw8Fl;27*XmivzBE^*@HImdE;
z3)|%!!~IR$oMRHF6L38CH_LrgUo3I#P7){d%Q;DpUj{g#)JMZL632^r%)t^zBgY}f
zv7T^}$k|QOW2^L}xap-qk1fT`pDJ;}ZzWFXpX*5+kNF`^(&L=Ov7#O|P~wC&Bt7x>
z5@!ziIWXrWAB2@9PB?!4IdMPW=+d|yR>?W7;&yb-aa=!kM=?LxcNB6w*N@&H=cM|H
zqTk}SA_x0Und3!{pOEWG{h%!zvth0$#m$O-3u4^N9+021o=~Ny73YNc*JI?kiF*98
zA_w(2oF}F}8g|P4mV6M_pZ~ZS>~F-e+^?(0?U4M|P2$Ym2W5__npY)`?;~-n7&o)0
z=<B^DAE=#jj^}=@hCzNJ&f}A>J@z-X7|i2+irY1p7PIw$=X*^v&ErFdP~1X&G;!h>
zi9>yqIDt9tJmApzUYj`APZKzLfW+}Qo@&$+nG?nV$I>}s=D5BRC)P_Gvlry2tVf*-
z99`ms$r8uZ<s8p_R38W&gL?D;T4%+_kVEIZM^k>{N4E)a^CKjV8VH<#9K#&<E^rK;
zTR((2;c<x*h5$!hjn}tXPaKAN7DvA&PABkn7!T`4J&HK`P>EyvNgOp6I378XIdN6s
zIJ~}X8;KJq0LS1wByjzhp(1Aja9l^!Gm!FQeg<(<N8okmq^HL}iu{y0VV68VA;s<Y
zz)?#8M-3v5`r{?VvpL+a3Y;Ie$1MWK?jdo^378+`80NT*fMbsYJtp~W-J2y&t;DgD
zfMbzknPZnlJ;-s)vCrO=abn6(m9JCW=D_)h#Bt9{9KFA!M`7G%qh|$?GZQ!({g(dz
zsU0qHC_iORTwdbD=W;!XqZ>tzoS)@HPE~#^=f__HoN_-<Cy71~^{8q+%rUs0qj4_z
zK%XIT!d&x1<6PK<&((Y=>N&9u9P}G;EOTu8TZ;X+vL1V~#Id5Usea0w_=%*){#oKg
zu}&5Gy37e*w1Fe~&50cQjl>DE9+9J-f%<W@KIQx<QIGng6gS%jPW&A7lzkA6lQ>c2
zIMg$n{D>UcZ*$;0Eyc|*D*4*CK@a(@oFA_w&K%+<_Z{?`M;{pWfnN$Z<^E<xJyzsU
ze##uRw4`Sabt?7)id#TEn)SF9B|US<kElmI2|g%ujFvb?>~Bi+HH`~pj{OgDOqc(R
z9<%-r$w|HrtNaigTkfN?r2f_>Uq`9$(D+mCqrMH}f_@P=rlco`dekZN->>yc$oUwq
z&uO0T==G&>PK)ypxnKL2bB;@##ijh1>p+h#tryJ3Fi)iQg64U=+7H(YsApa{_DYEp
zdWxI_a*k&`Uex0!OB}xia15?Xk{(?rarBZ>+}yPi$5iP_>ny*&#4%NRBCi|mxe_N-
z<tK4;Roq(Tr@f>nc!^_s<oQV))i2kRII4=1^yo_@&K%-)P|j)PgKuvV=GWok`R8cl
zgpZ(31N+TvA#waw5+`hy`^~2M*%$Qa5+`gAobo&*Tq<$&<`T#6iJT8XPl}uFCUM+(
z5-0pR=OiDPzQD1_(Yw()E37~N9McAl?;&xl7`JLp%1_)q*JD^u>>_cT+~0na$E_6y
z^HYwS|CPj%ePDhma`uq)w233;C+-CtQ})4TqMi#Szr~$E4~;*H>!-4d1N%tGN%=8r
zN}OsRXx^`KyXTz9`){_t#8D#0O#wX$$J4~|`{w!a%yGkWj%B|Qr##<L=S!SelXEO{
zOmogjag%)=F+XKJs-MUiEpeP2H<4p&B~EAr4%JW6V>Xw3pk<C6H{_776US<aBgai2
zB<V53q_{2QDD~rsn=bVo``V4gJcP#WG~aP&Np-3Z$bI0rPW?#mL75ZYk~l&1wW{Kz
zexT8Bs-(v~D{;)3k{)$nt|xK)P|#E6*v0btNpYk3Te<J(gC&j|AaPtLiDPg+TIRU^
zIVa^O;J8hCQoq*!mg1)6c~w>1636Y9>uJS#U*bf0y&!VpuE2>Oz&tT={HGE}p&naW
zHwGLRJgu|X*KWxL$uXFpGDmg#{+x6@YYv>H7AVJp-)5s{iT@5KjdQA<SU*=lKOi5Z
zxCN}!vYu)mBu;ok@|(Lr;usva%N*Si;ug@?isw~PNqSV39>eoQGgmzxIZ2OtLDJ)^
z^dwF|UkAEQo9YLBUFO7xBu=%SlpkHi(ag~zCp;l>s`Y$7PJBk<RQn*sty+(n2R(Dh
z&)K=(WKKD54t=26Z|-?XkE!xOiW~J&@<HM#?4z^s!6OpK;kZC`n)G<Nk79o-bJWav
z<s?1xUO$%OrbUjas?)@w`YHDViW}vpRh^0)hw}r9TPuz@&Z(uL@02-ux)e7Ww`aqV
z^CQ-&oS!KA+TgmR95;vKPgzft`+=MvoQIS-G;W(ma2~>c-`PBPZ85+0H^O<OG*2`=
ze^R`UMdLgq)X}*bx4JKO3FvdS)uDV&XxcTfe{c(MOe5`A`PZ(5dHgis__PoE{z?Uh
z&Wkx77edYX#k0}phU+oJ3CCPt+@kUG@YPYw8Gcd03HMgNFULLhbI{Ws&IwsQj}%`y
zw|KUAG@ReD%rSkyZ{}ps6Hg^h7;!FeW&lUCp0L%L1t)%kpVwJKaZ}?UZW_-$g>>%e
zp?e{2C5~^BIBF+};|`yHP8=?Bw#zwz^|%Ql=Yd>L;JB$~i4%6rIgvSPtjM`9=cN2Z
zIc}mJH4!*;E-mH9-3^?8`BALL9)^0RSNqNGr@`0XR{J2H2b_qX@8XjW&H;`-75wHV
zk>A{@=Y!uK1dd_9#V^(<I2JkDlHdGGz;R{HNaUOb9CZ?LV($wIj(Y$&sZP~hs~4Pr
z9LpU0^9#Ve$Z<)}W*E0KuzvnT9J}ttz`;5-kJ9_+%n7T3p6?)TfjPkg$4|sMWlnhf
z9_R;W0w*v>?Im(1wSn{4{Byj_xj@wOh{Vx5NqY2Yk{)}$#4%#r{GK95&X35E^Yi~3
zC+zxvC2no0Q}cx6Ya`dG>^HG~WRCx>lplAjR6jxVwRtMnqmQTl<`$JWp$&S%lR3vQ
zN4*R49ark3UgTJ@kH#6mQP@WlC(M#K>d#W#?1fU_u~q%evL64G#F66`MLoocH2yHh
zTp@9+s3)8UdO~UZQIA60;$Lu_<Ie@Py=D~SoX2^hf0)L(_^*7v<9M7iPr|qza6Gj<
z&Z#l^cxw6Y+}Q(W0p~Fox77^d*y-!QJOt;XCUNS3V{ty3IQB{4c#K;(kbE8fxyW-{
zR^H_vo<`0?#0kwC0_STOw>5L(zhEA(@f^NkJ#okTigDZGe8=ub9NTTFf@5bQ=RxB5
zO}i8v{}pgl;@p7ig%Zb%l{mVy$mzZyIkBt6aT`k<d%dJ59QNPV^TX!Hun&yr137ML
zD#VT6_mTW&n)0|MPS{+^j~4x=u9G;SEgaDY?#8)s9IY2p+?LGsXs(}VB)^5LbHBCf
z2g4z5#PQ4t?Q@PwoXsSTnIduA$eiPt<El8V^oSf;j~kYAlAb7X^yZSDD8|i=$T_X_
zES|?L>G?h!S~sfwxsSfHWYI_Uv(QKF{oF^<2M+tS;`Mge3C9KOqppGWUGyh7&fz*(
zA3z+vJ?QZ-Am<L|>;Q3#xSsO|(E3!Vi;C{=a6dlO5yx&7id#H#9COr_z%efYM^7V;
z9g6vB2m3p2KjOFpE-s!eASc!mNAGtlyn;zEZhIc*{2og~++IaJHxb951RPDD@3I$h
zEWXcG{T|n+`xD1?yfNbh)?@ku$ISvxxP>@j+(xhtUJl<s*OxfaT?u;rgzq=&OB}mA
za4hPH?1QicaMbI_`3G~(#c_KjeE;13%=zllf@6?lSx?*u&k-X>Gberq`B85GN8QGp
z(>Eye=+%J}4q}dh{HWtWk3Wd?_;X?Zjr3UV2jL8?ALQ6T96e=y;B-a~``Xn(-%+SX
zvk&5P@P5Fya7>A#M2>y7?Hpa=%t6od3zDM-{Sa|0>(OG|<oxL4B_F8k=HCZS^npIL
z4ID9UR?Lq+rVSi1Zgb$A)CNu)^!O@{;W|}Vr}I@mRryKdsW~&(lQ?0j<bycRdJ@OZ
zRZrR1YM@j<s!C7lZ|Zze&lQp$xlZjX_<m>V*W5?_Ejg!EAH4xM4*O18&zTp`E5-$N
z4D{<Xp86?xy`;>!RpNx3b52^H#=iq6;NQj8187`u6C_R$^~3-ik9urcHy#5Vx}Ig3
zqrbuTeU$XryCpqtI&dO#Jaa-9;Aos5sDY%%TnXd0L5|}5*!v}pc~s(<jYQ65;OLSb
z|ER=qZQz6|J(~4I(Fep)YvFu{<0k6~S4nXTPl|fP{IrQ9$E^(<gZU}@AWZ)c>6t5M
zHu({K9j+Gh(}uW(4JBWPD}Y1S=lnjjF0r`&aX63HykF(|!hF>I9Ou1bX+CNPoLTfY
zx=yRo_29+eb7b@>uwGF662}aNb(Tj?+JDo_;=Fe?oR3Z*PI&3Gf<yanfv=;7bAS^{
z9RFaaVqId8<M_InjnEJ5&wyi&CXPS<Wa!tp&!@&y-wAi!RooJhlj>C00EgBkiuWzm
zH|rJiYqctHtRs&8-K65#Xg!y%*ZXr|Jx83>-_#I^6BOtvbJP(MM_-(Ck{+|4$oX2-
zQ^hgK2N&j?R(cvmj;O~}#Vv8{=@Lf|oEt}DejMjVje)q)`4G!`;>4Vj;wE#{7ZA4v
z!wI7$Jqv=<DnFv%egvGRJU__?@dz<Lvfmbk`YGqfjTSk-lQ^a-ZaVdY4ml_F19ynT
zu}<X3z83XV`?^)!L_KrxHTE}(TPr=ybJIipI@OQeP4sm;DQ>FD2dPdi`hYlw=T&wu
ziQ}>Fke<{Js(sLkgK;BH(xZPXajcl1IdH1<B#zxS=On)cnKLTSPb)ph(KyaUj+?q1
zIFa`Gc>mfBfN?u4i{tiq8t3ezFrGRZPx<|G@rm1Dq@{C0X`k-`m><NKaX;}++OJY~
z!9JhCb7}q%;^>!8htU~7_e+hSaocY9ci_-^f%h%dK$s_*h@4xA<NwmN7`Nl+c&=s`
za~jSnp3RQM{luZfQBz@F<xYh8jy;IyJE!9Q=!?LKe<O}LqzCN3y#*Z0`)|HKoU`*y
zz_Gml7GAx!cm=-1@mETmSl4z=S&#qA55XzxaTop&oU)$y!{|8)e3172-Qvp@^HKjC
z?)TnEJ_t8=&wP;1^XWgGQ)F9@1|KNi_t%YZu2UhW)qecl5I2k07n0xX?ZAm|g5O;7
z+n2~ezj<EQ+cmB$UV%Z5;rh`}0LMQMdi3?AM{kmI0(0WszzL|w^Sa(H`L}{Y`O*ET
ze$*jQr=IF(DskKZ-~`l@>L>1t=TuQov{a{lH>jW4aK_9($0A2H<NgkF^e!T2qR2T=
z(i23E-+4iD>^@@Lb`m*aeyo@u;>;#)n4gH_PdZPbwuf;cpbrB3K#!H;ruG6oWsae^
zoep&xc%0Ldar{A!XHNXR#EDg$z&^03$KyF6%j<2kBltk!^|{1Rr%If#cdjRK;+~Kn
zb2g4Yds6+x*MURV0WIq>w*tqP>L=_Wanydm(RhAG?M|F<(lSMVv)B(5_XFQG*Q0p9
zDx3!Wz)?RKM0FZhh5i;%k4v0gf#Z<lc|7$?0EhaUPMpbk-?7Zm&q3cIJ&xb^5k3P>
z!0W;42I@QJgl@2|$8kIDTe@AakCL9jq{qB}L($(X>QQ@8-0XYMM@f%iJ?=x`kRHQ&
z^mV|A$Z@Pk-2r+iZieILUIsm;lppgJaHx+ajyf~XPh^hX3G!pn*J^LlqhEu0qDM|h
zKIoY1u}RM=;5VA@m^3bQhw+CvaWCS;4p65QH_iERSK$1Oe4RKe0LRh1iaGiq;85R5
z*Mr@?i^8~#dMsbxwh^vxEA)Y5j=vu`^f~B;=WqVc@V<{SCp;)|;!6@oPnS6EB;dFg
za2~S!@Uie$SL|Zjz<Kgz7Cqcl&ZoKQ<ZJuX)$bK2)_TJ{UT??q-uLl5-<de?eSOyn
z@NDMMYl~W#4d>gfCC&pP=L6ux630Fyau$*F_!$yMiF)kx`RAC&M9#ZX+|)B7N6b&S
zN8-45q`1W=7IOX<;^whVRjSi9Bwq*7Z|+0UZ%={`LW$$okvMaxpN}O@d=WThJ+Wub
zvD|lp*mt7H3A1uvr?{D)NgON2&3*=Ye5voak0ef9CFi6*8lQkVb)`P4z66dfbJ|ZW
z`lv1CM|~spQIBym$T8fn?bkWSalh8f0LPU$TIYH^=f^$?dK7YO;(Q7mg?a*WRF|9+
zm!t6~tSoW-bHMQ%<Mk5esJDR=&w%kqzd_@V?=5mxkT~{f?4u=)eox|rt~tlE9=ol`
zc}dcv-x4`JfJ60@IA$w}qmdIzdVE#fREk?QC-t3kbH4@lfqO>M<KL9@#9n#a0&~;_
zIVbr|=IAOt$p^&YxG_gxl5>(CE9!Co%JrnU>8)}-o;lIyoO#h>syIoH+A{ZnV~#yD
z=OjJqMaWM?A2_ZbJ2Thg*azX?dB0A2)UgsLyex6dD>=t9$G?+vk{*46$eAT^Y!o?f
z=A3!a<L8-^;^yCwIQn==kAG9r<Hh{=_kk0!Ut9J;oGNkRYrvUJzwUZru?h{?M-}HM
zUVcq6{t(A7$KIB6lCRbAz_C4Xy|68<7lOxgs^>w!cCS#s);rz<Yv&hXU6MHdG2r;}
zx@0JDbPwRTZJ6^cd|pkw05~=h$Mk$8<7n1np36Cg`<uP>s$%`4H$pwXWzHsWj@VBI
zPI!hnYkZx>EiOyroO=K`0re>6=xGusZYFZN<{Zx)`?|zYH%lBP>)8-E+((xoJ@ILY
z6Yr5YVN*$uTN^kIeeIcJKF&Fj&!LzZz%ix##Eo-K<ovjw<{ZNuXJ9-n=SMvt>9M^e
zj#(8rs-(xgFX@pvv3JgC<+l}cj%7XJ6NwY=7WMSWIVo;t72s&p<Cqh1K1y**`LUu8
zVwK-oaek3=WId^V{2h{>AaiuiNqWpjdE635)>G|+R{8mP&S|CR!<>`i=Gzjt)g?|8
zIR<@Qt{>Y|^ns|yewpiO6*n<IR;*L1AM#tPxQTu<ZHe1|UC)0iKh>O8`4Qvhs_Lhe
zuW_6!=SSf_U%4O1{moYOw^sdNrQFx8>h!JLZ>fF^`mOBi>OR_vQ>7<yqBx$){Xpi>
z_(O5?+(-S(xgNvw1J@7cJFYv-Lrj|QOu+XUT?F$G^AgQN)Pau|^AO@BJ#Lo7QFXxa
zC5}26IN?H^S24$}_?W;65jY;_JC^m>({TQV^F+n-ME_HmzlHNr&&#AoZ+=(CNpW*>
z-2RAqaGn@AZvJrKI1e13=86BlFXN=RY2=WelplXSaAq^_eGK0}hk88gv0L9MaKgKJ
zel*9;AA}stk7hmUY{-wk81!h)k6QMrf}={~ws|w>Bt33t;3(w8t!dt?SG)|a{$GM|
zdy(=JX3fkvmVIq;JdNmsRHy2;eB6#(5hol8<Bz%qIF{#crtaH<W1q+M0&~Khpr_2S
zw*W`sJTY<91d-DKocJ7YlHbgedE6A|N8c`S;_pOGf7F8<#q)S`yQIheGv@@3o0av{
z07oImF~?8LIZ03Oz_A-*-(gN10D9sS$dBXvgc~G|`-8;sf0a1aikvGYj`^d+(Pv7W
zD08loIQA%!bH2!t<92n<37j9byTplN+?1^665v?$fn|<4MdVy0>KP>F=X~J!lCRyr
zB#sy3X6r=GrND8>iQEs|cM`|7L67=dt|#@k&=1y))OT9d&xKOltQa?SXU=h~C-$9x
zj$Ef|+JfY$!BT$IUGvXTq7ULgk#oDq*`p0{lk*dRLw-v>&<9E!xlW_#YlR#`b;>?)
zLnV$o9sFj>{kl<#o4FhG*b>K#$T?};_LFjs=5awcNgOo;IAuMdDd(j6v8PEKFLNHx
zIjMf!@SKzMgv*eF^Mf>=h9OtL{^(Skhs>n;j=AA8n1__&78-yPO7k6!<7q&SO8beQ
zUtVzHb-+>25=VXgamF$1gD_6wglkYw7Z|r~;?w}gUJsnWoY4QnjFWur4;49ANu0P3
za13(vbFAkW;Ly6n@c0u~hJI~J>jl#h=A#kU3z6r&b|!uf#$})<^1ibBYFeSk;Ji07
zM{D31<anOH*-e2%*Bc|ROU%ZwPp)zO6K1iVe@-bl9yyBlmG!>BQRIWfITbmZLVn!#
zH1GAF!u#~p+32^oi4$fWS8x>WlY8cbO>vxC8qV*e_s@kxfn$(knG@E8_f-eHPOF(?
zHaa2WIOe!M5+{z4IBsp=&~^00v0ZYGWscum;wV{9*PNqRkJ}nJ8snBYdMk<J4wv-U
z4J1z7QPLB70*8E%@}tH{9MwDL#J9)?{?MG0@)Le7=~)n*6gP+Y`JwfAQIB2#aZ7sq
zCVAW<*XaU|o9H*$*Lq{g2kwyE2T6}Z&TR5CTJoFkDRKO8kt4><WBuq--_gA!P8^bR
zlCO>EgE??|0EhZptNO7yC&kT*oOlStP1Z9%9KEg74~!T$-(A$xAM}*_n-Tryv0s<<
zkPl{~N95?X#0`C2=7jxoJ%+~xnd8O$c<iHPj^9t@V18n0JT=HEkEgnd6S!Z8z7ogo
zk@uZ6E;uniR6k`sVNc)~9Orb3+YX}NCQ81R;}-Uo^u(Pdj%x;vE6sQ8zTj((^PLno
z_i4^adei~H(WUuYxB}**su#?wG|%7kIWSKQm%_YCze?k&**+BW9jc$?H?@nTCye<1
zdgg^A`(W<*2{<1$d@jvhlj|}3Ij3<j=n0sgxC75eH-h|_vv9qTe0>GvN0Hys{CXc;
zXJP#$j_NOQTsM(388{L31YZBBV}V2CoMt`V0!M8IK2ST79{1av<5-V6yGjpp{KYvZ
z%@0Bq$8+4`PQbAkH_Mzj8aU=@*jElK(0K~o7k&K`JcoZDox^vFPA$%%xIVaEV2&D*
zuNORX^e;{XUq6QX<SP=#ehM5z>#PTe6AznQa8$_$;U3_)lAf@_p9_wE2=%N)oG>`|
zfnz=9ao_~h(<(pbh@72(V;?|0KV{Ca?Thyn*p9gVVLg7z6@?y;dOZ8USIy%M$IYz)
z`LU=+bKJ~u;J77#V_1)R1p1Dp{+2ijd_es=an!$&GXwNE?$@r@4w)Xy9RJakg&wNY
zq{nOm97pRp)}zk^j(!9<X&oHub}Tr4af};(zGXN7I2!9GupT!6eT^K&9KRj<8vSOM
zru>*ScP==l18^+oC!BnFp(i3IGRIE?4xR6fZ&JTjrygJUEnE+JR5#+-)3yXX%cGtY
zx2vxOAK-cA)Zf%hc)yIH^)~C#n_~T3gd9VhFl95~{0x0?57m$V@`i$=Y5d_j)mOp$
zru<)^kES|R&z=N&@O|%bAL6L-y$X))44iNmbB_K8aPazETGyNYe}(IF=Kv?N9((J_
zP^W(YJ$evv;z~V$vp(wK_t(d<(+ZC13VkQ?`B6RLF9pY*3!Jpxjvt;<aP*bH3HuYr
z4>_^mxLV}!I?G@99dOpce$C^y-vK`7N8$C;_zw9%-+y+&u`_{VcP36;5<WLP9F3fR
zQ{2=+zbGDK)<r#ubMPsk2hS%e=BQPm@5GldZo4vP>hi_=z|<AUS$3y!@E$0&)=m%u
z{5&qloX~V)!Ewm3?~)$(75e&9)N?R#^xzE(j++J?zcq2(-3LPqP><sMojBpoS$+)b
z@fVDP$F%!&e9ODN!fwRz@AoV?;UB=U+Y-k-JP`D(4RH&6J=k_R4)oypQS&+J34cAS
zc#Qft=<x><M?JTG!LfG&NA)6(fA7HJF}@pc^g29lA3Lewc)VV(A197Iy%t{Ed%!U@
z#EI{%1^KxLIC@>;*p>E!$83UrTaGxk5BM$M^=&<kIB~)b#bYA%YeyV+J-m-nJ%@2?
z$DFO;F@8sk+hg~R2Zwli-^X3p4@MG49raLA3l`t+Y}g0x)?Erc`VHWikIC0&`T-EP
zt$|}7C63w97je_~Vx2Y+$BcR$ddSh}w=GDI8b7k&_?Lj=J|#|Et8c+k+hW{UPZ$E{
zuiZV!VLjoPM}gBH^Rp^(>{9204_-z+sZP(_zu;KZ6IhQO3LJ}i+z8h5++zjD4?{g)
z(fdNx{!<H1cmg>73(^yA-?`xE?Lm)zoZ{yGg!{^OgC0GcIUQyc95Wm^@eAVERj(~L
z=275SMLvj!11D?+9QPb?)JVuryaPD)P~!Msz6fzcj{cH3eqG==<S6E-V{=Y;mN`cO
z$KDAXGln>3^7949BFD3yc;+>Q9{mW$Z4uHF`XOga&|_X;&VD!#Aw7pP=i*l~J)ZTr
zfuJWohCcX~@)Nhj{QMR;_G#ic{5wzz^AkrAN1yZ*=xId1eL``IUtCw{ann&x2hyX*
z?O6E08Q{cch!d}b`GKE?`I*3+nQsH90Xd%%N8bq?^)PT;d*XzTfn&%A%+Zr!-WvjN
z6vr(*IIG|&)MHtXJLYeoX9mV?QR0|2ar{A!WsYqCjwa4H(i2~Kqu|65phtgBddv*a
zV<|u1aemH%{8-FSe2U{X3H)ZzZ~hSGbe*}7^FJ9kH#7HvWgocfu^-U*!*v=ShJK*Y
z2XQp{z?}Ms-~;<&&N0jheXt);ojyr^v&X~rx%dFqPa|>SQXfP8j4b*3BZ;HFfcgo)
zfqtNwquarGK05>ZD35dgokfZsLiH0r<NEm=I0oxSu^zP?aA==G^LT1CTz9t50VfV7
zJ>i>e3XZ|P6SyDPQ(&A^GqE3Vf3v^bu6Ru7i~X9%pV$Y+Ir}nj!Z6~Pi{UfY4E52E
zNl$3Re*FS);u6$%+y+}096cEOXr%n8;V^E8w}9iAqmP8ofUu(=Kj9<d=rv&cF|Ptg
zr}_0OTNWHY4)gN{aqJ2>{(J%)&m6yIm*O$%5afJF9Mx|M^wHOmvjXYySN^(qj5`K6
z{%zufqp@FqgPeMbo4#oii8Dyz#Hl&QF~|N%<lHE6+z{Xx)DwR~ddwrhF{meT!iB(5
zs3))<b6n1e95;WE#PN4Y9P35S@gk=`aCAveh``aM{HUoIx33{Tk@cv<fD_Sgp7q$1
za!%m5xz{9)yGG*ZCXsXI{Bu+lC*?;s=bV(EFe2w9AE-AaJ?c71PaK=)$8eoGEphzI
zBIjC(qs9Qo9t?GAo}xO{XS`C>X?zdsbUF6*C9uv4zlS<iTtEI;n7>v2!sqCg)vn@x
zU_Rdz>U3`$7p4=(UH^H(2_IGW9ed2K#bfMIzzJ_rKX6~+=lpyJ9L*fN`sT%B%r?Mr
zfjD;KpFiL7=_>Ja;Dn_~k9{52Sq?asIeH`D81-PG$1=w}wFSJkEm6<kiQ_|8;Cuxf
z#hiErth3_pfTNk?1MDM(GUujW793yV=;;ziPmwqpIkCjCe+P~$b6$`*VXDZvQ`B>d
zq{q#aIB_y?)DcqL%6iNV5=Y-Hazs6Tny82Jvjh0R{*8R#X7nz6;Lr!IBl*oQ)xXFo
z`5^htZHpZAwc&MenDm?CF=1=;^-aVvoAf9+<{R*v=|r6HI_&R+lHbgEz|rl%*M@zq
zUV^wOsvqX)Wq}ir<I_B(-$C%&N}O;Ra2#?{KTrn%M{fpt;_akI_gkmX<5h>^^O0<t
zhpfCW)B<wCo74~dB&^d#L5~|k^8@vK@8U6Kj_oUQR+BjTWRdfN#4-Cz94&IZ$k9(p
z94&I<8ls+4Bt3d&&Iu_$V%(g_nL~asZgz9<fx3fy;8%sXxsnguWBU|2jT5n7vk%O=
zpvSkzem#_Y;J@foJcc-$IqH?QGry&Iue%pG0Xc>_Y7LRIG>mh43#?P-xbt(4O1_>1
z9E%*qocIdVk3~I^_1K=9fv-y(brNtQ#?385{lH!-al)5ar^pG3a}$o+$nmVlAC+@F
zbKKPu$9^Vp{QVLq9+z{Ho^YAS`C8=MCvn`Lb57EuL_Ogvk#n!e5#wgAl=P@?C62un
zI0ow{+)4Fge*=0{d+ei2kq^u{`$7FofckO&;y${3-VbbA2RCe-)sMfIIBJ8niu%z@
z0VneQo4pgpA3Gj6eim`;j>zeV{rW(vQ!{+^g5yw+y`MPdsm=w*Ee{;e>v}!5U-1}P
zpT<{-6NdrEb^=b^n>hB(<=`>sYcqp5dgV0>PSn70yzj5>tAQAd1wHX4;<yixvm9{3
zZ;4|z{Giwm@yM~v37sX5djdECIf~cy_Cn+=3mm;QarBGt3Y<CUxf?jX#BuikN1-0Y
z9ChG(87IXpt|961kK}q%+#+%`aw5kq?jUiDm>)AO&reAC*%j6$Y6Xa!N}Q!WEcEca
zm)Adj+RB9w>@UCv;c?oB4Ijh&O*f$rct1Yg2X(56vn}N({<3}Ho%m}Q7xatdH}&fk
zpni~}`8v9L0er0v0gh&l*$Oz8INK4&ytzcd(Z9s;=N;l`za;2c9rT!+Nsl`P=ZPbM
z6ViUwesJA65@!eE=m%GX`q>oq@cvuuwphUl*JAzjT?VhyhD|LzW;n);ua}r7&n~W;
znHAC3I}*pNvKl;QE8wL4gZPV15Vy(5*_Sz6L);8<bkeiksc>C$dEl77#0ihBTySXJ
zXg;90nKyx>t_F_Zk2roT#%(C*QLIN#f$Q698Q{cyiKE_FtKjIJK#zTwIR56P3O(@(
z;MfC*<9b5BR=CfnW>Vkr7o7xpu)pd4#PN^8{#)D;IFUJFQQ)YRfD_Z-y*wV~iE#kv
zN!Ne;gK#}KE(Ur+Kjy3gdk*u%v14<N;r(m%u*g~c$IDSp)H6fWv&OvY2`N9v<eXOd
zc}V2^95`lI@PT`i{HFfCbm2F%9QZ)rP5r>k>|1y=TJV8kzl9ayJO#~1HLtVu=ezws
z!rnT}s#|;f&M?B@4#k6Oao6C3yA?}u3Wc^fWri@w4DN2h-Jwu4xVy_hfI*78%X`jR
zS?Bxwp7)tM{Be8RkbIV9WhFa%AB=0q(LRoziX8j@<LEqC?`X#{zUOAb4>`U%-dBf+
z`*<c~9f$ci@*;AW<0#)fA@&~iVUF{E^N07qdmGHvz1&y#@{bKbA5{nK#-EVgWFF+`
z6lgc*yC<YJp?{R)C|_L538;^C`%}@L=8tJn12~5Cc}yIU8}qeE;^wLE{tj<}9NpCU
z=NaV#c0B^}fpq(A-iJ6U5#C+l^-v$-<H(Ab--P4HvlIvNw)0Oz<fzxg;i*SpzIGhl
zpE$aIdyE~&;XaPN8;tonvD4=waa1Pcu-cCEnK*Wo0uG&1=uqOAnZE%?I}Y>thsBTg
z|HL&r@8eW<aa{{J+^3J~g&gMmqkYfo%`IHBeDUUcE+b}C0FJuq=1+dg*D_ux%I2QW
z3Ew%N%-bFGQ3)`Q>QSVR{;>@0mLdf135iRAZq>BU(AKO6a@2IvM~}ffbG8NQWA>BX
z*sMQ*WAY-0*CvkGjy8}Lkt3H7M`gt|Sk6NZ8%i8@Vim|{XkA!F95eZM^iO5vh`hwn
zx!pNz3*@jrd>nU|z$`g7z<Wk)e(ZCas$QRf!zZCWwyTd*J`y;(H*)NjI_~?|eDO%A
z-^}CUgT141)y;ipTeQOae0<>v<TQ>Ti!MWpswXbqz8-e>g!t(@z>!%_!g;T0TAMg8
z_dWHV9*ZM2@g7%|V*~MSk!**x7&{#w&a3p7)2_wbi-%sA71Y-&8~ZSt?ju#0^vXM$
zELf$tw?)M{O%hc5?XkB-?WzSF&u@{q(e#BsVKntUE^tI@(nsCM4x_REkYmddM|3Fm
z8aOkNBO9J@91%VaI4tEi;IJdP>HFlHLT-8cu=eG#C3ul*;UUG2dt3CsaX}wdaFiQO
z?)VBEzF+kb-oFu8hgyCMx$Es?zto1&)Pb?2&!EbvPoiqjBA#mEWX}W~a}PN@E^&CK
z>~FlIiTB7c!#tz<dH#dPF9(66>wCzae^*0^Be(vHUU)JRTRM%W2<g)S^=Tgr`q&kb
zZZtM)FmOz~;h>K^<?%Xj)T}%Az&c4if7ipYsfc5<3<eIL7J>TI8BG@5QtFhq4_}NN
zy_Puk`W)b}pb@~a3yH(F<&O6DQLk|{HHtX=J=T17Dz@;NV~NwC>`8AQ`4l<)0&!%g
zgTPVqM<OS{6J4N>P23eYvN-C)>x^^$vHtkXNLKbllUI_Oqa4Sq$_RE7ACaT>5r<FM
z100?x0yt_X=_6Z?1dgtS9Mg5Y<ER7pO9tljM&QVRX|9DuHa_ds$9{F3GsIC52JKcf
z5;&gU+;aNJvx|UZb0J60oIvq5btCx4HraxnTRfd4=+^I?m%~0GN1i2)%(oNu`G_3l
z<A|%<Q6J|Y_F<wMP5!wK<E_9p;PAMl4{y=nJou+*Jcu_rk2tK%b>P?<V^E)+Arx=>
z8{GHy;eVn&>dGX?u>)MZZQg-)i#Nr!m_vhrqeGCxcM-=Fi9&sLB8OEVyV>;uIA#HI
z<dw;8H2zmNv|G}>z+us3QB`OkaKv)tsMW+_ZR5T5O07GL1ASz9;_!ldfWrnO$Ikaj
z-M0tY?HY1aB8m`O`zG4$6LM@v;;0v8fTM<v2aXvXLUF)*Jn%|jLy)7-1ko;ZCWCCr
zCv3$PW55}*XoB3Q!PX<=gMV}~;+Q^Rz>((;pnrN$ep9JBKLpMq$0-%parB9}z_Iss
zquoZ*%rdFhT>#E!<cRs6nT*+`$U5Ng#|MEUj!=G+2?jm#_L2Dyz-TIOu;Z`~S%71@
z?tvB)hdAne+l$^lVsZk^*8#-g#~%U5RyzzFmW?=O(5L^reGEH@qxB??Ez%7*tPAQR
zWNV6$XNxXDAHRf{N9%YpEoPTBKfm*~*o;SjW0O$ck$aXtftD4>;VXQcz#+g9y-*)j
zqZM)9>MPzp`fUnWHQDR^#A#XG!e}jzqCQ_J4%q9*&%7<-$sy23-t}=RO-KJkAxGD2
z<~SmLA$TG!@1xyJZ;D=9eD-_bWHR_X_?fSA*mD<bpgSBvPT_b|ZL}DSoFO}*MOAN1
z@fL6|3iLVTvdi><P_!FQ)DgUGn>GebWr>ci4zac;%msT9IXYW>$5Gw!u9PZWAXIp*
zR4zG1Nc@zT5Aw_gscl6+H=2x;m%S3mjMJfoH(26YOs}zLy)CM8e3ZH`MV0<K0X)ab
z<^_(3&PbY;?GJtIz-cg=URi}kJFy)kP&=^VVnwSs&+#|gUVAxuaxif8GFs>4=TP97
zQaORcpXDHZ)_#R`&gMjpiXe`apU!zllm8&cE~xA{><U&6X5TU3h!#|>^BX-NLYNE#
zj@gsQ_0c7(!@6zc4DbR!7#N2B(I<Zf|L}|$Z(_GcdWd+Ic`IaCQ9cl|i}^d1lUj`I
z0{ZCB3OM3NT-V2r<|n*Ti^|==ZsN*jvRl~$psDVH96p*jV((utgVnXsDD@kPH<9Wk
zWHBuwp+#M#K5|$vj3yR!1&;ankK?FRw~_P2aq3YYQKvc1-~}O=El-g}P2Q$>a@t@c
zv`7)h>0_Q{123@8lfZ7`w4bw^4bKF26IG94KDbXd;7i-!%o<Y@MiW6b+-S0J5UdMg
zS{Z0j6{nF!zct5sdTl&%eqxTJYQ2Q4EGtDqM&g-0SrhytpKSxX$(_hi_h@eG!nn@y
ziPZ-QuQ#42c70TlFz~5qf*ch<9KGZmaKvEbh!mb|1{_o19dLw34qreSRt^3O^s%#R
z0Ed4_N_|d@1&)nB4)n3Lez<&~9xVlqN;nELc{fis1CDC(J8<|j<meYZ&Xo4R(Pct_
zqediieOSARsL%MZz%j?ZJB|%g!11X6afs)C;GY=R_-~AB&(6#9|K+n0ZZy%hFLK&=
z_9LDao*=}v@DAa?(J#jUM{fS+IA-?G=%2PnKp(w24n<<A*{IL@gBS<Z$#d-IkB~>%
z-h-%*Z*Amdv5$J?I4y}I`<{d<Kx{;gs^srDY}^vy=;Vhms<M$qMaSNdkz@tT*L=Zv
z7jJ6!09YGUR<s+t@|EniY8-Gp>c?ca#>ip!X~i(_6QXs3cVR|aJ<f5=r2?2Kq~i=F
zj{d1$Y@E|hpQcC23y<<4C+kSCn?8}iaoB-d;5oJC^q*eO$*P|yLM|1Dbs=Vb*rdZ?
zH`BwDPa#6Y&Pu?s(a14_5;_k5(ic2u3ZDUvI$VUj5W!;M=wFUtynQ=PoIh$HXQ<Ps
z6J>JI{}1q-+IRvvmx?)#P4yO5=a}`8AC4ktlP7PZK4<0wNB%nk>?YdKddjDzffjT1
z7;tR<lCF=Qls^`I%qrxV5^;&sx-yKW-aUhS%@U?`Exca=%-8x5a!e`L!V)!(g<~0V
zSl?ihE%UEvw<V5qISq|g?-6ihIqYMHQ6DqQANwrwJUjLn&kptE63ho%kAbaOkz-&t
zUEkMd$|zjXZ`DS-9jE8c%D*}GiE)<bi$^e1WJ=;@7JHc-_L}xXT(FLas!sY$$pWK^
zZ;=?+7wb6LY=(TXaO}sru>P3Nfy6n#5@*)bs=(o?Joywg?fV^~m#4`9nySeuDH2ET
zhLtwvsM2Ta0Y|kAavb&d3E-FskuaJVGS!V{Ube>BnCxhn*VgQj=Wl=n_DI#U6+Qn!
zhIYidD)9~1M?Z>&I8fOeVBNc!IO5zS;HVy>Fs}b44zHR5IQGU?;K-I)Nz;&ez+uk^
zAZPpu$6=u<q4M?!5kr16MUcZoh@<)}fYUtH`~`6AgQkuncAq@s)yK@JfwsOMpEM1`
zGa>!uBlJ;UlT*v^@C)8Po<A{2pugcBQ2s|gl~eM;Dr4In0FDw#+-PRkG>}bR@gE{Q
zL#j(jU5iRL`QrcPn28gxcDWSbe5zl30b9#dM=?T<O>lPO*YlwbiWLS9D^7D;op=$8
zKK$!M;K-}QF^6vhN3+AAk1UkfNzJ}w2A`S&1%M-FrX{;Ai+}!q>mxg0Eyj$$(?@)M
z101!%6HOlL*qRfaKH@}msFnGa2jCwu_YrAY`vJ@ak^VHqj{W?PYth}K?|3D!lN@I+
zaqKh()u8U;sjEGIL*__EUU={jICf4cjGeYY)RJvC?g76ZLeA1Rjw5rQffGQU34dLg
z?~3E};a5vywf?m-O5HG(8_kT!2^`g^1hlZ}#F2T=#gbu7FXY(46mP6kKHNKJt^=c~
zuE&Yf18XE1S{z$W`?BTPhOuz;b==FCvYreG`9LLU3mn$u2#lsTQiSNKH!%*%1uL&b
z*@ah50`_YI$fKVB7Q_7EFWj%7e<qF%SPFJCn=m7p)ILog;MoTIRJNa&BYr${xmT9>
z75c=?Vf9fT{;MxnrC0;=)NBoa(M)2>2fX|s$h~58Rn#X#xYNh}Rs{A;F>_@2DVRSd
zh&XC$QQ)ZSagh^EUeM=yV2<xn0XSR@b{v&_WNdcJdJZ^h7J0$8J$K(5@hV3Z;HV`D
z+-Q7FbKuC)Re)pP_HZpa^dHbiwQL6~pjdX3;yP0xoD#&WDQi~)ISq*;vX%u78yz27
z<o;@IG!woXWaFFK0!OvK<yu&>&9QLQgc^`t%*$#n64}UHsE@7%9J^!~ak6E_Tvam?
zWt&GnHS65diist`2KtYA<kN*uVEwTngV3T0#?TDjy*`%uja58|5)>vI$Uk?2Z02(-
z;HdN~97ncZjXAO45$MA&#&a!VNO`Or)`Vf7Kd!hI6VVyg1wH;K+U=v~)D>o<JTfaf
zmJB=3zrXOfPi7<=u$db`HgR?kaCp>Nvcc>^z%eI-ppR`&vZ*ykp^x2{5oL>@dCI1|
zzWu)?;G3p{MeXi0&Z2VNLa6!d@yftqVI-S85C$BU4>|I;gp_w)KLw8MR0H~$s?^6O
z8vuRy+%S07CU$tL0kDopwh43Z-4UqI|Jgc!2=vjl)`C8!B%ONbEze;skuyd?AF+hy
zDUaHQvSk~KqmA3=IPCdwSY_D6F1X{r{LQuSuRCK|0j(Ylqp`JAlgnirAr9>EL7<Ng
zqRPScPYSDyxqJZn$W|nq9BHACx;Ys7sH)^SGxs!}PG&j;eRw?Lm_2#0zRn#AExN`_
zC$-8l_A2C%i%oEc-1rUYGb{nL#GDWKG32myw3jhYzk_UiXxLD1B=W4u+)0TkXE6?{
z;EA)^|F4T{QU4_DLSyEre-DGyrl)UjHaaWlW9}NTf!*@SNp1g{3v=5%_!}Zomi+EG
zw&u*I|2ujGJBoJ8HHrE>TMYWJrf+~FC(-$Vu22!yQ*pCDM*OlLt`EQ4I2L{MUF67y
zRKMADTOr=ejMDJTl}!tFbHNU40s8QvJ%J-uS8$rLS~DQ?#cVfO_ZZsk=s1$?N))Wy
zwpCr=sK$M0&OQF+)c>}Qec2HD$Z|XA^lM{YJXc;`1-+1eisR_)O@O10ZU70yhvyV;
z%Tr^9&0HP&=-($(pOX!t5ASvzV`o$%$KmT2f~{qO5a^@k`TUc-1N6}!Z$KZlFfPfq
z<RH{<@{j5`Ps@3pl0l|0$&13u6tmsTD&&Yp#4(|bP@lYQ!iA@!SvA^mbYef)W2m!!
zz!A?rI*$E~$HGxBYoZO#QQfOo^#KkGKabDeOHv&oI$S^I^^aWbkMr~@ouSB+XJK6s
zlNaJXxM@Y_Q_=3}Id31{6>mW3N>p{~HveLNt5hLec>hM0#7-X}2b_mKbFhyXNpqXM
zItYDaL>92M%#g})c%DHZwW$~fWV1CtI~%CRmtu)gPt}A`HJ5UgtvC)id|egv>CK-U
z#{?Gvj%b(_)>HALx@(ck>VwoCRbr?*Sqr?)!26I5<iw|FgXwQU0+xX^6#;nvz&!Ij
z@%9X<hfy5p!NZ}Ch`15%ZDDuEQ5@(ha7%}^8wfU#btv!1^>eX`j!`x}WgN!!a*6{}
z{sCwzi$?)R7Meu<Y5EkhvZ-AOIJ|*xUD&~p({wVPp<Fbs58GDjtk<V%ZZ)*^Lb5fF
zTNv~)Q_~F--oMdpp6g@J{e%0{ubqIymJFvEeEdf&am|-kM~fyS*;Kw!pbyiTfuqfA
z$B`2R<O8(|YZqpk55ak=3VeC)mD=+s2A_%z$H8uPDEUWRt`GZQTcILwY@Ml&qtA@J
z?j6nK#9KPDE!kTA;@%){Ujh1<juTxUbAJTpxAWLX?H}*rnq^r59NxGcoT=KgU!8SK
zrgN~)iLr;lZh9j{m02nt$D+^dgXo_hRPTt0C%CUK^!IS#wZxHIPBykbH`MW_&KHa~
zEt~{=Q+O=voZWs1IN}~v4ooKm|L8`y!3I3zc;YNwea$PiPIUxjiy)thmiTtAO7{SL
znvr5ug{Q~do6>Wq$kSK8p?EV#zQaD4iwvNTn6c1t<e04xqvo=LxotYo{88QT%m1E%
zVu%AX1Ubt1IMpJ6!|LUCQvYz)Vd1S|p2`73fWwZ{x~&gx23w0>slvTd+my##B%0C-
z!3MH)5X>wymTG^tJ2%+cR9Oyjz$&DnoVfZS#DVQO062QR&p*Akf^4?SF<j@W{p>il
z)O^Tdrc4#!sD8fFq8_UucFc@rIJdXPa~zSfI@p?Z`U5$mX`YHKZ)4dZ^BmQY^McMp
zw8)7$<g4er#bX0qia2)d^H}NwA>WRGK21tEef0iwP+!{{c(Tp6(|L&QcN=&7Jx4<y
z`zX-$k>ht@Twh%i?j23^Do3;N_lGcpJ^wL=IM6wdgFbA_5%Tt^#c1mu_b?wEJ3wp6
zjBL0v6*!3&eRjz8QK9~jcT|q&Ae&kl*U82Q<^`Xs`JShV9x-&%(XNlI{T$=%?|eAg
z#_uG-g$=Nmk!c!Zj?a6-Nx%-?iDj>8;#36=FGRZ>n<NZm<M~5j{_xth+-NGv5AdAq
z>e+#NWaINAodo>PAk2yP)1a--2RMDyZ9m9w=6+AC6E7Yn8zh+%ORi$UA;^j6lWkX4
zkj=ba1hUCyv^txUr!gZPI|W`)mA^WlsswvuJC&-6x9N1UF-|ry^BmaPMAiU~O`Ocx
zfbV~VEBYhPvpkOtWaL=tGjuunXZ12@5$%<0G0p2jjOr>0Fe6oYL-7_lA9vy_=1=gB
zCQ_E@f-95GlN@pgPvd#U=4s(YiK7}0LQNmt0b9!%wViB&wZi?v3CF2bl59}$G2VlW
zIj(yi0gg^fHn8m{g15~wKGG|JsXEkgtjz>D#AfP-`b;NVn*t27nCGv@Fn>fEPi^FB
zR<*}F>&P$n@Wjky1&*%2pDbFV3f762t3w~dC%P8vUk@Yk$Pkn*JR{k9<bLQQM)ZNX
zAp0J0E$V&IC;xkGltVJY8Kl@rc~oC)1Ea~nBfycl^1IR4yd`J6qsd<)P#-nfwdiLX
zAP!{N)zC+L>EK#K(h}!Df?-Fo&lWn>6`}EAZ4?XdKp!@g&g^8-snADk^5h#2&$K>9
zqy0V*`lzTEXoJgDT??N+66!ap@?nH*9z$`kb_DF+<-ar0b2Vt5^0N6LM)|knz!CLm
zp6U$MfWw>Bi||UoKNclU?dW4(eR%D{IP0H;IgTwF031(a3~^veRSETure{tdea_be
zj(Iv8ZE%flCfFjY;he$_PJsISxz|M^E3q0Y;utw9yC*|<IHo$q8()Zb8uiL6c;fu-
zp_9PO-hSMxkNK{^I!e}Y95c2N=%f1g00~5*qGZv|%V2Hf<3fO=(u||gN=Jh}+P?_c
z&6J>OgB_V3i*@*<&rnn7+{v8;^4VitgRkuaj>t>#CbM=yyM4+995u8uS#-oLxKqMU
z?1w(~1@+MZdmxYU9F?GtHq?h*b+uTQR-maGvy*21&?m91jpo)t;K&)o;lraLSD6(p
zFm|Tba<a*_dmvZYrbDnks7Vr-ICwvvZ9`kj27R2Z_0@~e$Moz7qltP+$UozT!TQ5`
zw?-S(Xze&QLuovF3fu_#@Iyo0Xy$lXJZYR<5Pdps3HkK(EXc~dWGA#vyF`w|vSvZf
zQOEi4tK+b+NwKUls%359*ui@oN4}_z`W&i>k@zc}g39@!kVAC2(&+6*B!Stp6z^=u
z81a1cDzGTOp4M^LgIiDqn8me$!y*I8ZhR+j?CqIo(KVf&K6+m-c%~=LOaiG{FHhY0
zc_s%FiEd(!-+d8U<lX$F&(>gA>t)wbz_Gs)hh_O4I6TDy;IMJ+97nXS53=c;k6|>k
znNB^_hA5od{l{X2Jo`veUu}zhZXHI>Xdfp&ewkFIS_mB5td--))#ITLPk9+Q`au~d
zH81lJW{DU&0b1<AM%0qFKGyLXpBafqzNdXT!ypc9qD2@XQN&R!2XJhaC>V|R@jQ(K
zyP57!W64#rujBOa<Y4H-i{W{ddbAHXazhi>qB8Wyy>pClz~;XO2}If+RQHxS3i(>U
zXoRQKub#TSrhKv$q!#`5BWFK7-_}*PLLAunr@+=K&{xAw$2=<jIDmcrBH3j94$z0m
zdmsTj_``Wlwoit2NORAPD^D!Roikkv&xv!+w1@}KW%wZCm{)rtzp)QDfWrm7m&4bU
zMNW)1FnOY}7Mp&NVyAOi@B)wW#F<9|lOU0^sM&QH=R)0^z_DfOxE2<g132bnO^{7T
zlWgqxCd|DpP&QSJ`p8-qYouL=p^xkuhivc+e~nny!#=t%_2E%BppV&K75n6;lX@O{
z2Wn+;595FzY~*CKYfd63%}MB^X8G!a29rP^)8F;!+t~Hdi`QaR6PX?3phS?9&88g)
z>w>6*eMCa)qx>#HACJjmSkXnHbyzv{@#URohrw>LdR5>^-;EA-8TaVAg^TO_#NiFj
z#KJM>7GNdR_PLXqrHRHlmnk9acJ-^<bT+taF0`n&PM>dNHxqITIO4xfAe(wY`#Gc6
zqEGu`AHzvDv*~;+vZ;abA*y)#8SY-RQi*W|+_(rhHkfjV_<kNZ`m4eDQ;|4gtUuVz
z&U*y&$2_3<qh=L?3>&i-WZ@;iVaurw5v{7@`CAj@r~sO$I#UYZh=>1SuKG$GJM0){
zzBWgoMO7L?Ik8xLv~{m&<TMVTxbBu4=jpn=sLvYW$k(}$lLm9V9zz_pd=1XV`OA?L
zyvA|Fwz`nt<kb7fDNi|(ExL|t$=5wNPfz)BRmSvaw<1qqG;#1d#r0DOoS5xq?`DVC
zVR?dG9}&I)=7N5=8#v}3>BB1o07tfX1sr>}w3C|Y=D-o{#-aq1JXsSn`M@7&w^>V2
z>OQpA^JEEOEzxauA*Va(Ba$XV&cv568ec$bmhOPxf72yGp+zNr<v4m`T#Wccoj@OP
zlh#JHcOb-p?l%WGq9$>eISU*!57#W#v<OLE_XezuG24xwMvgs9c}F$+6F7GJEaV8X
zn=MogWHX^JP@m*~lhmKK#8O+b=8Nzot1;~XMY~?W5x-&WVoDK5{M;TnWuF1Z9v$X5
zwr{yu^ijb}fMYWdN6i@Vx}wJbI&d23qvDd?_-u|G_7iYq^Ei%Uf>NIJ_VN6QAzQM1
zcY!1QeVkO2fn!&94;P+}_ULSvuho=6cs9819`w-(C%G20F97<O{|vM+e>#z|`Uvcq
zWY7E1Vu}%m7p;eJ5ONzw+e)V^=F&{4EzRSsAc2}pbAcaAgtE;+FX(D?W~YCTiU#XM
zmV<dJuhH5lxAcR|#~XjZm1#g?npq8QobmQC^|8J-duT4m`#C^1lhLAVw-xpI=@dK>
zkfu0rY&kz_3EC0M^B++YIad4h*^75q?61FoPvxEl&Z2zeIfxKj#MS<bNmE&M3d&Xp
z`<OA*M-QlhvpyO2;m@cK&pHqKs4p#XE<B(<=ITxCvpW*>;mPToLiaoQ@PEgS@JEhH
zAK%%){=5h{;wp03b>i5BnPA1xhjIPUOUQ1r&N(<k@i-!e7&Z6Y$~0*uJ(IY13U*U=
zF>-jeh7^fW?UC~j#+x`8pj_R%x9Pk8t&e(w`#D|Gr_bLjKp%O;ah{MqBFA>*{Jk3^
zWE<7jYW{AhZdLZ&5WVvMZqDa%-;ue99Fu`KYU+Np+d5~r45W|hR2M2$H8TP@YRhV8
zYd-SP3DD>DpU}c9U!rVzVDmX|3;!26Du6h0n+1-V>o^5`oCkif-FLa|o>lA4jwABy
z296$&9C3r<ja7>W^OTQ7j?6+F**~@u87aDf-T2Qzj-$6ugcZ<CasD|@9C0x{a@HWn
z9`pI<PHi~bkn^1lE>a)aGBfsZG0GoNAO3P2_UW-4eY*4|MOA^qcm8+mu-(Yv*NJ17
zWde>$j`LJiCmYx#v7NiHp)=9jU5=5hKi@v@mB2nij(JENb;BR^DerQ~TH=_l13(|1
z9<!L(NjFD$n{<%Hbnz(Q*tVM;hjlM_*2__Moj&`BBf4_nu+omxi8w5H8*tct>?1c(
zAHMWwl&yucL2By5SKq`wG0uAZGS4vKkwhn<IN)h|L#B{lkYjfe#}>*895D_#h7m^x
z9E*jc2DK0Oa(D$gHIzvn;GQ-R^P4clQQ2MW{Nwa_L9t`2pNfT}kIn&(-I{}Znha|s
z;c~osN*w(FeQL_Kf_!a{6Ne4o9}9;^lm`y$u+edB+(l4Vv9>N>|3vw~-iU&HpqDw$
zQsSsW%VOb}!e5YcVX(_cy2A^oLsSHEOgZA1M!SI{{qVfXL=s1a;+$iBI>2Zu-wv8{
zA4)@vvKS*oZFBncB#v!20XU{3a@Z2$@NCUMANf2NM3wl*bMF!>;#%LJ+K8DWo;iIs
z5J#153mg@V99@Mtx<nbY+eqYCRgX9mheIV4Gsh<HjH~lg;+VB%&~7E#V13YmIQB_;
z;P4W;QJ=R>97lH+vE(XK6*;U}0_QolIT>)oSmcPu#L=zeqdqS>0!OB(?>OwwX|b#r
zvJ-N2SK^4EcetnB<2dzcp7I|I{qq1he0w9uu}2TXN*lA?bcEAq6>;QLd<#o|M~*#8
z9P>N}aLl`^_~fBW7}YNG>O&4u=3cn)z-(o@0bvp}{^ZSxe2L?nC63s40`##t+k$^g
zVcOTLLsfud-(QE()S#2Zd0YL2cQo_OA1unA?sHX*7%=anw?$lXcKazI^$A#wd)jHp
zVLOQ<{UTAHw0NUK$qUYI@?H{X;R85&ZXn%^6BkYaM@2ghCl3FJ-}F;kkt1&shfkda
zqv^3Z!ESbDDETLGPuMfr1X+-?bS$0b4X+Fw8K(<IZ!6-+QNutV9ncQ#R*B9W*l=7+
zWbPkmogbYXM=uHjj%bw=T5LahyU-rb{N8If>xUfPj5z8Va=1ToL}}uf5t~3C(dIjh
zCgRp5yR~=%wWUdk`ml4PkM>Xg!OKxW$YGK=`pyv0ho?Xet4ADOV<&PRe?#jGp*uga
zZcW%tslkEJq7sa9b~CN#gFY%Aa%^Yfi1eYr5gC!ATM)<YHo&nzkR#eRb^55^e+G`}
zfgBr39JOo+aCBa0w*|z}(_3P^^>Y5%@8cBSft=E9P@i^Z9EU&I9^0O_s<Yc+AE#jj
z<g7!EdQ2R)7VW0yEk^51qdY3&et}hn-E9UfqH!UbCE-7g!OUuh9C?R0YE*XM=y%AG
z&1jFVD{KdS<g0@)8hcxv^r??0OuWRLaN+SfZ_>nZ)GreEW`8;Vye5vxn+!SGB*Zme
zP8|DaJ#fs%4rsSctsRF2-p5sQG2Q~PnQ0fw)4hP&U#@cc_|elB-Qp&k)$retBi|E;
zk6sEKk?L3A=y2kQ@imY$>j&r~^1L9swZZ4;`k3SR6UU^~$Qgzl)|Jj2<h4n_VLOHc
z$8@E5<F_tA^<=Ic0FDZKO`KcbKmxfIIcgu-O)NMJ99021Vh(Xk_Hg7x4@1uC#?Eef
zSWV<qO$;rf)Hlb`D+WTn!*@B(N6Oc{cN^fC#~24JTXR=!h|Xn!qgSrL(GpX<@mYB4
zu7BML`tXv^9Y+K%27T<GBf#5gBkk)|(sIwek;u|_h!mcG$lPTeN43j(#@oV=B1ijE
z-qDwufz)=^@o?x<=Y!+0+as}lON%GLx(RW3`ozEy!2!Tw2?n|x!jtWVlOIzhF63*u
zpqjIrIvNk-Akzili1cq9M^3zP)+?J7OF<vKkj~@HwQq2SA{Whu7B=5=6T;8)SDEbl
z3cWBj0_?{8S`epU_&M)r_FxUPXjRX9TF^)BE&wZ_u5lP=NsUP~+M5zjynS@j)zD&h
zJa_uoS`|SyGwmLXCild59I?3QWp5wPpP0@MI^RRiFL5YB-tK=4nhv>*EhSGn4*O37
zN2ErMd6~d*%-=)t$#;w#UCIx<V2jh4w|ZV0^by0bMf9QXVA${wkeZKuh;}=Y*m3yn
z4bUR%4ab#sYq+zHzVk1vr+gQVW~PmHEhfnl(1#sO1rq3geQ{8?I(R`O4usLzWvY8+
zQ#>`)nU{bBX0hky4fsdA+x`YD>NsLLoy@TeiGkyJ-xWBjZYhelmFa<_ULl8HtL5~O
z|0;+#mK8Z__)+Q;o%XGlW3He+vJ`Q|xP++BnfS<gQ^NI8@7@7N{+%84;lVV2c<~Zw
z(VR;`AKQ#LI$`~Hz&U^%W$AQMBs=&YXu1*SkG+u3aZHyAFy~YmoTu_CovF&relWB2
zLF9;Do|{o<x2=2Mdq>kO4oLlfZyWRGDbQ{cutluP<N8=u?L0`(eJn`Lm#%g(YQ9v4
zOraCrg%;K8jO)X@PKP=~M4>+R0_kH)90z?&n#>@9xcY?NA$&asIJU|}7>!k1>Nvbm
zC`7zkfgCfE=7Q~*1L94eMyXAF&mAMsl>7aPb~~I2{d4v$ahhI)(e$%*D0M>0VxsZ%
z(_T$^I-FUaU+N%RUn%G6sueIBS<?89qjDsF<n3do_ydRc-|skjE8Yt*qmg6Re5Wi{
zHUn_9o5B1Oy-8ypa`2DzUj`gqi{42wWrDyzD(!BRAWJvm^eF?oDf50k>eG`}8J?;r
z_(xXuhf{a9jIyQfQvu?Q)ms9i$^RnB+qd%Jv(S9_%vH^)<T#w~hFy;BvH>_^#b=6x
z1YI!m6+w;(Cyr?r1{{5TF>u5r&v%8uKeE?x%%jy_LW{lr#ytl#%b!CPt()R#ya`ns
ztoB~;wn!BR^wI0%ISJU7YB+yV;kv-8wR2Ld$Plz!8jM7~XC-k;^vB)d&LuEU#qjqo
z`)j`z&_|}ai}~&QO4q`BBm}9=?o}W)Pu1FS%=6b6*X=B{m}5!EKbcm-xxZ@Ytka34
zwhs!zu1(BCj_FU&^wh7TU^UbJcW|^0p0A&P-BiY<&?3^_g%+`ZzJno~`N8SFbzWc<
zi6fR~0FDk`3i_B=v^I)AA3$8&1`l8~mb|&+@X!ko*J|eyh-=&QD?O);pB184d_XUV
zpNYddW(AJSj~uqE2F;R`sljusdsZCnO@NC7t$#-U3~_fOR(NhFgQm7gF|>8^Y~XDf
zSdHTCKopE-_U?vA<Ofc<7V*2^CCG2va{))QAjc7nD?wb_cS~`e9@yaYVW(#thd$Sk
z!{-x67fBEL@UM-4qr3HXabOZPg4}CH<iXLp1d=|fp8-d9Tn#N|$0EnEPbcI0(>pup
z!)sJ`QrnVgfx|Y|M}406a~zq%J*T~&7e-_C{2a%$!Fy@ezbSGO1UkD(+X>@fv*X<M
z=~Ma-^v`bOu<u<QM}63XIo>}Xj+UFgN+S>b1NECO?=oxveG9}UPX;agGjeQ3(uZCC
z1vvWsY|uwM-R?A1|1q$e2x$)-F?}?}b&Jt3nyP~Hl)d-dy7%)WR>sHTxB6KP^pCnl
z@y0jS0ghOk94sp4CvzOVay-<0ta5eWs2TLtR5R;$;K)Kdp@qlIO>qz$0eMGNse+>o
zCcCkaH5k3;j==m;wYF0}D0SkYH+EEJ1EcBe^_<jtOijoKqM}>TS9{)80DVM&`<lY1
z_Q(mWLDs3)3OIIdG;n0o5I2A1jd+mXcqZqcMoHahc6Bbu2da?sPY(KWtX=*Y=8tX{
zj`1djIgU)Y7U$1O<e2T05A3q^Q16J<$Wc8gyNH#;kkfeq+O0$Zit8_Buzo8w95^aV
zxa07J34o&mvtu4@LG>H|xfbZdwjf7lCXOBTFG$U9%t4D@D@y)JobjaB)-v}9wA-1X
zWVbD^AdAV+4%pIT1W7PE14zxTV7#dw6ush)uFxW<eud1(-wmb8p=EJ6)wNepA5(zh
zK%`y`99_O6aP%h9RL6aTxoYA*kXlx%MbX>oJH&xJfgBc>YGr;Z1UTjga`?0=PHMaK
zF;;19@4)<F31|g0Zz8a^oa;E8IIKVdT(cZUrXY@NSr<6+6P}By<1`!f;iI@SI=%}y
zs*vaFTR7)BJ%Kzb9--a%Ub36%SQ+eQj-fvKU$UFp<?I&W&fnBFrw`kX99jGy;K;{E
zDX!<2g*hj4;4ai|A&yS-04<vB8~8`oBYi}(uAmR^jB%|O(R~W`$8TUaweJ9M_?rEW
zBiI`_4-tPm&MD%^iEWWH3OT&hFp}-{FyuTKhH-t%_q_gTI^c*#hk>ILk_5bvfIYf>
zgB*2(I6UYa_=jIXj?Om1add)7z_Cr&;_9qMxa^`2Cjc+-i|L_-{Zr9dRCGOi#XA?w
z(vA>s!l#d#@de^d-$IV~!&ecHD~WNi5u;c6)2wG@vg2$V?hp6LZMFeU0vp;J@-<)I
z2{>jj=_A%9#QgRL*1hWa9yd?*>^7JaGhtkNzIaDo2*?WAg@5k=`iKhj9vBa;1hVOL
zopJtz`8cOeK^<bZBZu|#aaP?xeJ(8m|CooAE$ssQj<aZLfuomvp-7C=9c!^j<cQM5
zkxPaFN1Q?qzq*_9PM-+qBLkNJhpn&a^s)EjyzzQL@JGP06{zyo)fONpm*X@ij(Bqs
z_X|^zV~UeLc2-Z&N9A4&99y}T<FJSL%{Vy%^R=B!9Oah}?Uori%$MJkI*FViPM=?V
zoUNf~w<O3BO?>)%J@FbcY!T$h*FKK^9cl_u3^{rN>0<`3K)X4P`JFiO;cc`*1>|`0
z9mPTPQsfl84|X#Xi6j173>=;kIp(yF^Kmh7cyH84>?V!~c>o+1*V*kT#hWcT0XQrx
z>LV_Hb#cIN;`e)HLZ?qA`szJ@IN|@{=x@Z~m)fE}!N@VoX#SXUyO8tv9>&{9iZ`p8
z!(8AQojxah`rN6BoJ0mI?`(UWb#(W!z|qr?!zK{NX1WF(l^pHH?)o^dP6Nl}z<DbC
zY4;&h_5}_*fE=}!I5OP<c&ezPoPT_~0=xALaKxGi=%0h1$!?<za*}s|d1}*>-E_)c
z7>ViXLyPW_nktmW_fJ7oCByk+4v{|caUbC5ZO(2hPEdYp`UR`#bJ=mU8u8s|W@7=c
zj$DrW1!Jl9m-_{*C3XesqaRbesV=L~KQ-@wK6Ws1%)>e_K{kb_5p1L9U0hfJWmFQ_
zRr4ITus%3SCv$vM!OPx0>`&B3uA+IWN8!CRv8xksL~tCM!3mZ@rchlMgFdY7D5sBX
ze(fqqkQwVYHQ=P{!^dMyt}eU0bCzyDo9j7XG~FIK%s;^Oks}|Xri<{@Q1`Cq^buwA
zfj%MxIZRD+ebltxP*d>pOCj%wGsNLPe}mCX2ju99#9>!4!?HSU&_7dJklp?pft7d8
zA7D3qhTd9I&6C3^fn16=Sj`0Di0;E)fknr31iR_N#8F><g%v~9or<$$^)SaVK~Hhk
ze~W?^<>SanyN-EBQ*qP4X!7sEE~@O%nIM}yh#WbLIJ(6bSOLWotZvPlqZDriUt#5t
zbrov*WF7sEK;<GAz;jzMs`$LV<n8?9Areh7w3~e5PyRW&4J(w1tzk6#rmfS*UK)Ge
zJDMJkC(iP}0*<3++`@OdCIz8?RG1r$m)V9@z<w8RWBpu<{pTE1swRo!G?R{_g35sn
zL`L@<Ba)FttHgy0MMn++yRlN9FMi`(;QwIlGNUtEv@Rokc84LSFxpMcKjiGD-qwZF
zBEH_8{A^F-^kF~!1f$v4=mpkcFYVF)n1!74$gxR@qYnqdPQsq}1?;B!wRckUSt~#v
zUT`7K({gDY$L?qZ6^b0}yd7j5hxOQpnl5qr)F8WwBU^wY&W(c6Y=<F^qXTo`s<~wW
zw3rS#9mfn_43WrRVO3)r($jK%AOX~t_GhQhuf90=JQ{Ycs^>r)ZGs{%-1q^biC^ME
zi!R|i>+CrWB;e!cfER3*->6P(GaXMft;+|meQ{lJDsW^ETo+WgU}poKs|EVU_#<bx
z?+h|tHsGkbu1foJzw4vRSHxQRA#!-SKo<ul-ulnp=rs&aTUq`#P9L@UEaW$SIR|>~
zTP3nvarZ7lwImSNdUgpnPvy@^k9$Y6VaQQweQ)?r%ZGNGkM~{J{Yc^r`~}uIDYu|S
z|10b`;!$SEd}d!_;ILk$Xf><*9XNU&Mu=GE<7CbY9CkPZNNu{%Jmudy;wtm%4chJ2
zC*ow!3;BTG&I%kE)Q48H{t02{YVtVF+F)ll)wT!NP2|aloHg`yeQOVZ-SqlPz>z_e
z5A2roAc1I?6F4T>K*v#&_MGtAjh9Bxskh`GdGYrz;GZtY@tn{&yYczCAcxqMML`1D
zC?i?)U<8b2H)x1Aom{$jGb!f4if-<^2)R!2CMyg9jvdzxq-F_2+-N2+5-Yo$m65aZ
zva=gc(h0mE)8q$z)c*2LAA7Yow3xeSH&u=};?zX28=Ht6JI?cs6UbGf*$_Paa_={?
zjVUSK3Y~(r-VVZdefcrkP1!F&ps9ZC;;jmC<ftq-fBOE0Uig;4ab%JPz)`vlv>5+n
zj-#v2fz^zUPmS@`qAtzTN84a!GEt}x^P}erYTt2;x5hnSG~Fhi<M6gQpyCpruoAMh
zPZFo^D3Dr(#|4fJs7AZCl%H|_{Dk^=p4ZZ>k24nY=%?R-W6OHJ!-F|KWo6VSr8{Xn
zzQb|UqEZ;W=WzYuxjf&~ggz{OyVDR=O<W!grRPlS;R4|3w;H_7T2j5EPIZO6Bi<Lp
zmYH)LhqZ|V`iKfIAl_IjPVv@qDm=$9$J1hjTub62gq3>^>nW?%2lNpggPlHl@^jEf
zR{9rOSn+NBQEEPEAKv%R5DcT4>-4S&pSU05n#aSpnq}QF&TeKCK4%im2f%1Nm*+c4
z7;hc1!e{+vIgaN`T4<eI&A@YZF-NH_y(^-^N`pS04=aPF;w3$O;bJeWr?z$^awO?v
z$}EGdY=iOMlZe>kI3^0849S@ffx|i7cI0(O!0imaVgzv1#^DqPp$#z(3Qhu!?(X>&
zd5nX0x4>?!5uP8|NP1GtZbX5%)%G1Qn#||<9tQL=Z})<1V)<fd(PP403)}3TJS4{Y
zjmPtM9Q*Pq##?p<ai9wjhhKRBs~JDw-mA{`vx@`ypf;R`utWGw3%<5C>GO3E<Q<&{
zIihPE@=wKZ)F-Wb4p{aa)h-FALB%Eap+26soN2TZtzaz?d6uAm&eU=(s%dx3qklaH
zsny%<WVeR+riN^i4O+ys6pkYb;!{#KYB$=ge*!m}3B_MskxiGO-JX+0Rf%ZiWWxP|
zTu0A;SlNWI%82VBz%hH~kko@RfZfEhJ;=G|d-l=y;S*RF#u#WZJCl(FJB~mcn18F_
zXanNYtWUcZqL+7Egqpteqxn-kH*!AYgwrBjy^b5rzWoYSv`L#AT4X!l{AnKW!YhFq
z<Ibx_dA=bCv7-hQ0FH`#6D9b%q93;KS=C^jV;6Rzbq3QfP1rAWA;a1g9e`t=jdl`<
zo|7TR>%jIf8b9OtCL+e@{KVi>dj@xUvSwoEIkRCMWF$5yDa;?;*!K;|R?!ggEO8e+
z7pp+}@OSu)HTG8r<oF$Q92@^J=ws?&y~B(5cP(1KhdnK?(iukMS8F(_S!sMqYNL_E
zzmYz+!VIvR$%XZsEav%UCF<ip7&xp?MUX&tAM5NUt`-Fji$abWL>wFGegz|GGRzdM
zQ_;+-v=eiDJ3Oag;Sr9*&VIr?+VU)L*o-#B3HyNc&Q6RfE(g)N-P8}(A6|JLaO5vE
zPi;OtWm7l!DB-Q}&P^h_ji?86TmG~SIjWH3sP6l3L-gJo4tCRxNgq9_!5eQ2i;BjG
zUrJBMnEw@sMAd&djHYH*bsV+yHPqLpUM-NoWF(FZ4!GtW&Guge98o*O`A2TWUy)%a
z7Jxotd1cqao0h_vwI4ZlS$y)(;yz$EF$doh=Mf2AAD#0eaKu66sNExp)AldW$9`Q1
z9M+<WYf;Y*;;H+q2((VAxWoy)2yvhfRswx=>aTq<Ld5!dz~RFpKp*4%g*u2GyQ(~J
zMCCZ>pWo?etmuKiBx);+0*?OO^F3PVqr2CF`D0pjLA&LO<NRYcKSX^tECCK{POBNa
z)dTej2>_1W?(<LEAeh0@&P7g-mNeQx+~tVYQP?tdv(v{Gx)1YI&cym!?5gPW;SWwi
zg|E%8Xt&!HTnj6Rna`YzgwgmQMt18n0q1F23HnI3({a?v4zQzC_p+nZb7@`B57Gd~
zZbpvTdBW{>d68_7y|E)L`bU%|4*%W|I8wF;4j;6gI8)OBN2b6!UhgVNQZFk7PZ3lq
zgZeb06~h*Nh<n-#BS9Y%m$I^6RSGy_*LdXgenW9^dm8SLiy=o|A&x233!hee*#jIt
ziSB-xHH&~_B9Oyt5Qh)j195Ey-t<$APCFZjr_nf1OI?D|RASGUSs-@QlolX?ZL}Bl
zNt48BDte4VPG98chCWW3n!sT%%Y#1R(GI7No;n70EbJueW7l|ou@YmnMHkS=6h@Bq
zt+Z-Q5tyf<8*<o4;@A?cfg_J?#5l;7kMi5bnaE*FasFiU-AW#ezXT%tB1a_j{bta}
zXvn?l;Rx`LctvrbPLu+Us=o<1`rkYh@r`OB=lXuIj`=$!ouQ1Ii!-bBFtljq#;(Oa
zzY0&W*%IWa>Tz6Lv*V$_(JOKOu(|&_yV>kLZg^u<Jy-#wiFEYKCT2?jykTjghogT^
z*C$SR4p>k5zi2mGDS$Y|J|bt<b)2Ws6xV#{i>qFa&X4DOswq9I7FlaTgs@QLh@5pD
zN3$8o**6d8=|ai}B2!Pu*Rnx3u$!t!`OWwj0FIcB=a%eg0<v533cwL5(Qc-6GS?yk
zKf-z{Ghu!cTPTn6zpi6_&|v_2?ih1@_?q@m@2Du0S`MO{7J7VZsIS?wj$k*wi%$3L
zfoABR%%fp6J0c$Co$w2gDRj>M$eH|!D#&&G0_2cuoiLBKpfgBW@-LKHv`7C;rBin~
zA`If%)E|qSe>~sy#yMC22<W38^@A2^NFSTCDOS;gJ0fRjBd4huRtuz-x-xK7ZqFA9
zakPmgVf|4#ER4olhEN=ATmW&v@}fSxUpcb%$`GjE%$4@Yx$V0f@t_rQ+I$C&p5jLm
zuv8dTo$jF232Qozc=P~T_yEWGUXeI$PvR_z!g|y&x=Uc{)<L_C4FHbK5bXN!T<#Wc
zsk^Apdg7Qh$sv#01w){P2MH&E-tz}YAdBPzeRMi{CLx}0058ZjLx95z_)Y-x9szHQ
zg)WOFs_#a#{WrnW7yWr1#&!HnE+44Q4ZuI*kmF1_?jnTM48zz72m_AHPAjdhD8bu$
zaRnHS%_NRG^b$C>KE}0qLD6gX7r=Z_7CG$tNXOyp@Ozzl$lt*6-0r58saamw>FE>?
z&^i@Hl66uX!E?)%1EEFKp<l$5!KolCi^J$2Ib*2fhyg9&`GRhWaV;BBh7}o};tKda
zE9hftQQa#umIwdnK-?LL%|o38a(rE^>^fD&cnhOlsMryJYvYF2ppV|~`KAuUHCxvf
zVpLYn4jj8}lpBqu$PFu#QvTTT_c7-mGy4!~8WD+JxI?=Fn<EuG88Vj|LyM{MyW^-#
z_<Jm}ZB88RTcqQN#0+AGZHR-K);>$?!kWzxZ))WzlzJ7t9c9dJ$Q0~EHPBS`_~tnB
zQ3~*>NS_BrQ}L;ew-vTvrdaF;Em{OR2~5Vj5Iek5cjWY=@As<W`1Z7E5rPrFmd=q_
z%OsfN>ta>oxtHQbv!w<C$BMbYVNE>0h5@#=PiLR@<~ROVFW{&V<Zby^T*$C?O%2p1
zo^txwe>TI~Xm%h+=J9dPHAlPscN#UFU(Rtv*g81HQ3tZaXuKuaO*bft*`<9=Xkn-O
zI}V?l7CdKjcYx9OGKy>Spb=y~eklO;;lX6LwN)TOc%2+DnpjG^HXij5B7}8(gZh*%
zNd5``aU9m*vio2(vybu)KNJjen+*(v7Fmc^Cb<%S_eG?y1f$6*RL7f$6fhfk#5<JW
zbYaIa4{P9lu3!|7HZ(U`Ckw9iIyeYgv>)kXlQsr@SaIZtMC2cqeICxN!>B3ywVFF6
zkk#vd0DZC`N3A4|Ojs9diW11NGe{r4a13%T2$VVtaYW#CoLT=N$0*O2>~a0^%l#2z
z=a-HkwfZ!|c|ktw1pX0=T0x6_n#pNumW+Y8W>E>yZl%Z2it#oA>I2WI9<-P{$sLE6
zJq;XTkmIR;9Y_2BK+e-sXt#<~zp(&&&MTY!>_&U%dt!5L9>kj{g_%zjNa{GObE;3!
zr+O#U=N`qi?y?^$NE@6DT11#{2R3IU*iF_s4)ez*p)(;l<2cUxM`hqN&!j#_>)e?-
z5C^;~a*P_|^kFx!Qq|$e;jL)rswUR}yP0LjfFsk>Gd+`fF0SYi6_E4zqT{Fv|A7t6
zN#xjm<H$ez(!yGAvtfqi&4?qvWyUq@y5lq<4*O6TR&@QPB5-8CGmc}EM8lb#`0Dh@
zF~M={qq1N(zC?rF<a(+CWZ_cKhaW|b(!}BSt3no&fdV*e@dd|W2lC@-#3SU$EXRlw
zFc{;Y4DK6Q@yRaUSfB4O8(B{DkBlOYdGrTlG4T!c;pxafw#DC=cWRc#I4Dxsam=N3
zkSXlQxY!axE0c;-2WE+^8-Vj?8a=(VtFOXZ&(miCeN@ZKP9L*zELfE1?21v9AR$Hk
zh1QTq`PCm-32pYxxn>z)x2u}qH==kr%^&^kCg`Kf_(O!4q<h_pZsx?rxzKSxaBRs4
z$1#7Mg8XJWW`-8IwU^UWh5QF=y^b6Wqwyaj$lJ%~VCCKZDV*=9r1z;3N*oSriS3RY
z^VY{{y&E`kR(g~mZFllqe>~^Y-A)0AbsOzC>iZ##s$Lx9V8MCUB1etJJ#7)>us)-m
zKJt1w;OIRQfWtp6aU3mb!0N1n@SZCFL94U4lLnuCl*VVSa_CLRVfr~fqpXA+)!y?P
z1h{IBsDSI-E4Q9DmJ}f&vmruMMt2&K<RYyy`SAORW>Fl_hd00GIDE`Nc=n;%IR9Ln
z;5aOM1aRa`SE<gOMf$XS2i{gKCD=_5J?A(q%X!H0Jf|OU><WrE-K-CAcrItRQ<EJ>
zjO-5_lWHdVXP$B`W^zHWo4EK8PxD@1rqwLu5k$Prj_1AVR3u5=;w7B(@xO3Am6d$Y
zv)+WkJY`L*BIjx}#lg_HppWOS3~=<dtB#|h7sCAUB=e6$JpTj##5xiGjhVG0U^E>`
z&t-V|ub2-;-iG;OYSwZwsvrJ?^}*%xI7=2?BD)o9jr-sjIc%Zhq^9SMqG=q+Z_H1Q
z79MFVt50_8m;vHIkHK%?saw@apY_{ur`LBMXlk$SaW+s*qTYDdAJ3B;(1(R3bW*FX
z1t4Fu2AJQ}#OCBV6A$b7a}hXy4mEZhd!jd3)H7fVb`wL8WAY~@>xAHU4Q1+fAOTO*
zlJwDEan6Nd-78F8(x>xHI7iau`+@|vcr?wQxrrclWFVeS@`L*vhqrA2Cky7|4vd5S
z&zud!xR+<VHqc9Ob><5r-Dslm1<00m#Z<7Hx%%D7W^Ea0VTq7qgFL?xffdSP{0%<w
zEF(t9)1%bVpch8`LAU?eM;!U-HmpBl9&+@IAC9ArOo0|X206MW-Al9i1K{LTe?|_Q
zbIft%lGiwcJ0nMBrgt86-lib6$Ug=25nX*x;qv7Hj`{33l@7bn%y#^ZH(L|eZ5C%D
z#lf$aU^c3&tI!MGKakz7Ed~Fua}zP%&fFrOW?Kju*4D%IM~xzVOw*r19~Fokafmql
z%u(dbTL~OJ<rQVI*TE3iHqLV3@VUz!hi}<_%<EGYIUJ+v9_b@;{S6%c;}EpSlOsvC
z<!NBe;#t-JN9KC&I5yW8kXoKyk8#lHit8h97J!vWW_0?bAbt4eUBF=xi-052?{XH^
zo80fu#W+jUc>LBldqhwFO`G+&qbz_N{uAkAM&fsV^a{+qI(;4T-0PL7X`@vjwOY24
z>~<~sgx5N<`fSvvSQ?6*Ux(w&ih~^1jH1^xDDxU-$$yz4$IH#5Tp!!@4a_W_9ywZV
za2z?S7+6QtL4D-hEUpjlI1g+suA+bR>;TtChb;n*IbR&|8}Cc+oAC?bAhlK9vEFHR
zo%(!Ah5pH~4)oE}iaCyMloa}iA(%(yPC8){4>|(JwnUC>;rYEGn8CWvXzU}qBB!o(
z9NX+NNbNCQ4Ec?hjKFxS`OS@{4nIfE<kFxI8`_vS|FneB%nw}6*nqu`W1jT}ePZT_
zaf^XtIN42v`9UVPeM=!{Dc!sh11bQ=Ccr)_iSJF$s@*^~k)<T`k?Z3)3FHCXqqEY(
zVJ@(XdnsG?xPa?Vj5aV;ki!#KcB2W^3OMXhQQ)ZKzHhx={|LD^W=&a}MVMWBG;rBp
zrh9~52tkf4LL4>$?|JLT#egIJnohRvHVYzAZ@`ma`JGlkTT-Jw>rUZZ7)Ga{Ht|@f
zEp>)pQ0f3W=d<ZbK!vYLqpf+~*^VRsJ%B!)h#Y>J?53xN0LR`K3mlo*^IKvNZzeT<
z9Z&8?jwv3`*-bZ(M$Qb39lnC>W^<f?b&gL$j=n=2`>82#RMC;BPv~jKVRcJET<b!u
zQJ>EzU5k1hfaf6}nnR0ebjG#lnLk5@<#(|U??9ueRQK`B;Rj01m!ETe#2dVwA!jbd
z4BNOG#dUoAy+eK8^*MTlWb1Gc@{Y>x_Oxw}QJ<hsP+P_vAu`)C;IQ4qQKt*xT&UFw
zHNADiaZKS?U^jCPIeP1H$KkVU;2D05am~*oN0+D5aNR#8aQMf8$Z1ATY)p-FppVJ*
z0Hb#)aaeZzs#DDRh)2kgGl|0*#|Mu2jvVn*DvFS*cY!0~;+-EOJinU*Q6*|#fhsL#
zjy!@Ko~nlHBezDuJmm)+XESkZ#Af6yz}ixmKjr$cjm2Td5;I44cXk^Y;`*pHpD`b#
z9sqW;era5b&N>Y37Wx?MroPjYV%<GiEFAL;<4xqPMY2u9=W~2RAK>V#X<dt5-yh<D
zw-3Y|U!*i;mrJW+i32mE4UEPwT%w52`4sjGVsAriDRPhE`h6eZ*!Xz%#Kuxwv#8{F
z+a$(#V~23gu`u5(2@L{{zEJ}?1)n>Pih6)KzI|oT$ILJ4^wIfF#=^0i+&nEv^(YsC
z5O1t*X5>uV={USfU&y1ZLlxl2(ZsQn#>Hm04;Tkx=sxEK(fkO+fz4kTXYi1ku0`pG
zue{ZUN`PnhszNcU{qsMMg(JV9KC1TtH<~$g7dR?0T2!k~)N)`p_(w$hgFd{>5x35<
zc>Qtz6Qh6lttB9}%6r(2CX3?xS$a<ku$#@~JKxFM3gVg-aqD(Tx-lS<d_>u1U>|Yf
zv>S~d$%57GGJGnc`fhVor>GSS=Wj93Io86h!9D1GboD(I_|ybgwDlOO>{P3>=e@SJ
zEwSdaXDC<c_*>CG!~R1}TfL@uTQL*jK)%Ma0K5HPC!30X4wY)mvY8&W!8+{mem9!A
z)d{S_o7@AA?flBM=)dZrZ1?bNga1jlQFXh@vFtU?Kb=tO3UuR!eS8D@h(QmLlQc7V
zt|aDbeX#@Pot4|2K6+7>SZpohW<Y(`#d9$#8eE69Q5MB#dgALm(sWu{+&3QR2ppZ4
zII3$0IJ=G6ZaO7$)U#m6;URcemvu*u44UgW{Lx#G+TQ6598uyQrw<GL5DUj-Lk^!t
z9GgsFeNcTZ*i9#-dPlu32dlG4+7&qV>Sl`3N#|l&w?+2qXt#3o?F{|T0PJ&fC2-h;
znNA-Y{~JiHzE{JUHLoSj;7d=Sk1DeoWotH-Y<;CEWIi*ZAoNl5o{)9Y^+%s}eT{K2
zg6=(;;C~^mdGff>ho5Oe5}XW#O4S~CfqhEQT^zHhIJC%RxlroG^!!J3#orl{!=FKm
zs8@}$*v25JEo1gJuhk7RY+u^3$WHF-;C<tOY=WP4HW0tpg0+#WHNcUh>C9Wz?2hpk
zV-^#SaF=5{5y$f#Z#c=4_fr5z_g_Lbs2U%$rA1rI-agLbW3g~-By#vd;+U6RfMZhl
zqpbtzd9X@@zhY*GtO9*Z33`i>^}iYmM+70q93T!GQ2;o+XaI0z_+Y1x_*fP6F;N(A
z=0ZYeQI)(ooQK5hA6eOP<`72@$qF2mCJ;C#WDwb{CBFBrRyw=wqg|U`Ga(jzRIsyK
zZ{o-U>CtY1=pT{)rsJq>_#8w0?(|6;M6;yNdE|ut2J=+D+e-PM&6-&11C>4*=p$y$
zb)&KR9U#Z+@o~UEc98F0z+Wp~!dmjO8*t1CTC;dijaWFcT0D${*Hm??Kk(+2&Wap4
zn(kAm$|-@PhG5>&<7i#5g{#EEVV&axM>imj==c@9&66L;d3q>4-Pyi_x4Bt9%%f%^
z-L|*&Hpi0R%$o$LPXN6ED;9C^f(kne9NwS4S*mXwf_xy);9Adn(Az}3<4>{FJA&bA
zCdbolZpBMMT-)yM8RhRS=&pO$)xc5f-MYQtGv(`|PvEpwsLqgg?3D`6+p_cGCtjb*
zH0U2wjc%WbM>BD)zq23o(QoND#CRmWD-!ekQQMItd(r(J(>(;^`VrbqSEp|f=|`o2
zV`t$retmVa(?=B@9?SWGE#Npsh$AM<LC)|XjDzCSXx85x2sMT6a1hS$ZNa#X!$vL#
z8^o*+dr$>u)=%l2MOD=nu-~>1Kj19!?af%38laEqh_{a9aQfX#5%mi`6W{n5`j`mX
z&*_~vpc<5wu#c_n`wqtI4$wzUz70Emo`{}(*xvXJW3@a4d}=z=T^ybxJJ^5^NDMYm
zd8SaNsL#O$JmUepzcVu)&4twWkkbS?ta+fzJ9>Lhn2mfma&&j%sGka>ty_LV8?-Ou
zRzOxO3&g0*gSOU<=`C#$G8LcP6)Fc7<!5Ow=*A6j4>%j|hp>gj;Z^WnnwaQv$XdD!
zs=gP(xgf5A1pHeLcRO8Y+5%_9qA=Ec;@5Z1bEX=;8DzTT!!`IxAZ5P&-9aDyBq_$u
z&w^^P{k_3IYGGD5AJxNYFC*qP27Od_<ggFK5j+2c{hWNC7dSd6<!css68)3^JH|oH
zFvrpDO5zT=2Xe$%AE$ON@Q)sdIYgxU;PkOers9+0=EyNyh$AlMh0`Kg@f-Rl4RP#x
zJSk!8qd_+AU)9+_>>mOg8HpTS{XN;OeG1^1MR}l)XiEOkU#s9L+gPk!_?@9nAJGke
zQHf<kj+x`*EWvN+oA$^tmv=c1n^G9h#SZ00*^c=*=kp_HBtBi{)7m+Xs(T-H$ZAh^
z@Q)cbob(CX3I5?pP->fn>Rywg6vUhAhb?9o*-h1|0RB-sa^U>=>zf-*Zk~#BJJmh(
z>4oubmKbvuZxlX7scmR{lC5$=;0S-`pD7e?Ho61k9dX31StWZ>pQA@{XH*k8BBzg2
zISJgSP^03a7k1KH7v}U9I1@6Bk)tvZ#|+C49J}QK#DShmH@wuF@sJN>H{{4^#F5XF
zA;;joL3xPuvCW!*KC%qjjjbV${IeVC(+JlrbD211;8ft~amZmsh+`sh<2{t4L1@u5
zwVVx1lCHqfy^+H;aYX7Sz|mPBVO-B64omO@{S$^99zYyDH6`9dS%DlgknF}Q{SF*^
z1vxUr$4Qe4^~sDoWK-A2SriT&F$6j4;W&ze?_V$u4k1UTpy!%;))cf`J?EcqR42-s
zcz=|&ah!g~C=Qn5FEi-fw=iG74|4fUPMnKzy%6I-HLgc}c9zFC9~&ZvPb7}`(gXUK
zwvWMX;x*kdlNE<RjifFk$4m@x9G*B8_L&k4{;}ieq+TaUhWU->$Cl;(H0P2}!L?+Q
z+lk*Ij_$J)Y9z4$pQDRwe)Klcj8xd?1akD{hE5+L`vHet!gWDrC;zYs%fP4hh2!|%
zeG$ATR>VD!qr-^9GmHR^9pm%~BM#U1fy29mfIg-HaqOS?rl4u%;;j|wBZ7YeyNMjg
zQK{oNeN;5Q^=JQZ`h0Cf`gAFWdGwp(MEU$PcPPY;2}ue5QBz4a&nYYHTv;U-2R)BC
zTdPTTU^M;%IV^(u*uV?WBAy|KbJB;O>5iOiU$GL}M(ehz{~jyV4S1SovvhF!h{TO?
z1sog?tRp*99GJA_@jN73O=wXY>6?CLbsn4xU*my3yaK)HWP&CEM~izP0q;JNVkf!}
zNNpD($IKv(h;9oUz0m3Nj_hVS{{$RS>nGsITE2G`<DNu)((VV2+@HvKL643DqglGI
z{DbC?oly^4);UfS;;6|{a8hD!r9e)1-yMwk^--TMuI76c;q<Y+Pk=spmD6V|>7%9x
z!)Uxea?C$8f8@40ppWY4c3_&mZmioYsE9>R+ymNEzdHYzD@!5bb#LVG?e(3etXyy4
zsD#LoVZ_lFdZB;T;%#9OO&mFGES`FdMGpH)95y@@II;+G>{qgzHqU^g|HgSLMi57R
zS_vF|=L>paGoAP9`fE?Yjxy~Eu&B-3h31dSht>L<V9YK(Ngo;a4SJy(a`Xz~m_&Y<
z52^*hXsTf)X9E-V@}!r;D&iL$<smvX<e!S+XdjTHR*^p9#!G0i#gN1ODGtP@9>8J0
zBm<5qKtAOW0iX}xjbH9F+leE}e8Z^nL%Ye8qz^y50ywg))2AA7RLupb&l$YsCNi{j
z`q&B^fg|!@9dG6khsT)!9M66Z?8cH3N9-;L9G%bUvzs{Lw=<|uI*wlG`KROXMO7fK
z`O&@LIlVo=`G>#W3^kI>gB)?0IIPH4)N})`3vws<M?|NG+{;^H9+em9%?6oaJglcI
z8uOceLiyU{TMKJ2yNv!}dwuKarU$?gRh`{@>o&jM5I7<%8ua0teCugs7Ca016W?&*
zf77?=O#UdW$@d|L_alzn-4Hl@zO&mT%A>OJ7T~b|kG=bkld1my|3B+jk|arzG)WTD
z?j}icCLu|ZBuNY*B(!Z3YfbDfNkRxoLqd|4BuSbizX=IRnuH`tlDs5+9_O6reO`BS
zc|7O+|M&ZHd0k#J?b+L0_j!KJnK^rA&1=nIFT4X7jF0lx-dHdH3YS=QIKh8*drtf*
z-wD^kzAE;gEBx{F@txRs9FK-aH}al?Bg_8v#uNSvuS)_;`+82OhIu~iyxP2;i$0z1
z9V<thnfW#n$5r7=F89~BcD@t27EZALMgB3x#T)$f`ozUp54KkD_x=;-_;d8>`>>t%
z{Lr8Bn(xGKNjQyiy{$eF^VfsGCaiDK>~fwHuJE<@XwgR(8z=IgPrc*b$U5U3Y>E9_
z>$bkL)^|cxaQqglkm+wF<9sJ_6i%qcJa74gfB3_5LigbFZi7wyzughpIK>~&Yt@Yt
z__nO~3M_Jk?*ucjd_qqx@tj~?GoI_Q9t0Ln^qlzb>%2#c_q+(>NpI&pT6nd2KK=GV
z%(qEZ{PBEyp0}L_=V5(||Ma=<T<bf*qHsd_{?%)tA^!FgxurRl&(gjAdQj2qM?VY0
z>C)bt5}n{Xq0g~@i#OQsZ}sJx`Fq%<cbey{@Mj&pDWO&VJI?WI@4%F+{7=`975A4<
z^rKG335}ZQjVJ!O@5J_DJfSAl{iU$Vf4v<XgXI(d!vD0tKqub`euZbv(Dm1O^DQvS
zKhqW1b-!_<3x4$0knq306Fm>hC;U(~&k23uANPhzW4=Xu_3(d!qsDm$=R!koe(%43
zP~EHtSKnZq_}%7jT$|++sfzV2(r>Iccf#4e6B__0vM$3vR?hRC=m`8Sb@-`oeP^w|
z9)t?8UdKPL>rDxq^2ZaIi|r>Kjr;4tJLdI5aX7IJ{`M2N=y!kZ9ft8ldsg(8La-q0
z?XLqx?lJp=*yuxlxX*x*asGN8DGn!CbhE#-$N5emj^z{Ca+f!r=#Tz8^`UuiA{%b@
z_Scam{(KAXyb9~V%YD7&6MWZq0;dwrt5^D4Ne|zN&VdsTW_wQL0skHJ*g6~y2EQ8b
zt-bL-r+XufO})uDkukq}M<|i9{_{^X;Y6y{^PP|xPhx!wuj%SJp`pfk9_w5D*xQ~H
zD>K7)&Z}#jz(-BJBk#}!=K1uo|BmM=&xv(2%ja5*CltNXA5TAXMxZvF*pKTyC-UnX
zo)fN+7|%z)c+a%)8;r96PHfHl{&)uXPUzpn^Xcn5y(y6o|MZr2r0LgYI}LVh>%AWm
zZ04WE4*pON<H;%GjVIE?%(uk;Iy!u$|7dUcPOvP-6W=o0n-W-&;r-NsF+sE6i7)Eq
zIiZ?e{Pk@mK4mo4HF&~1;`+zzuW!S6!X5mhfY>Ac{vgr|PNa9C=Y)Sh=sA(4XhQES
z_s;1>d->0Efy4L<lJR}tdh<G1-t4c3qlv%%m4DRP=q_*n7P&j&{O1|ZiO;F&y}uKF
z@r;>oq1n^C^9%7u{o{jh4}3~U_}E|m&$iUxPDA%&{}#OLH~;vcdUM}tl~_LI{m-V0
zZSr4l2Ok`3ocIIRd++;4GtBFS`*8dgnDvJLv!$E;!OJ+Viq2{1Inj5G(;UCg7oXz4
zb`Jmei#Ojw8{h<k|9Vd7dUHfv0$W!2&@At`Dt@!?1UKLqHs0$s?-fhnC*O&s!wJo~
z+@A*vj(AS+FF5fZb37-$!FR%U!wG%$q31*fn)i2Zf)oA8|CHWvN8gEm11B&g<T=sH
z%$e1W<IH@E99!cppHTLB-cJy22`Aj5mVcc1hyOc2fdiOt;jZ<(@q~()@!XH)6TZ>^
z^!C`r{&?b<FT=TYm^Yr_@?xG7o0*R#_sel_eT(P#PGn`m>9^8zf<t{L&<o><e0tj3
z!^X<_&)dN}UNYNHDD64lSzxZTEsfv2iv6+Ip9ee4?=Y=PJa5nN{~l%R4&MnKh7<TH
z-D^UB`rA)5ZxoIXelULpW0SxA#A}{4&kNzI<Gt~O|Mi{t-55`7)GY5fG4PYW{RB?K
z3B6g%bAoLScylLk72XetU(?S!Zx(*m9FL~MiS}9Q?-NV->p`Ry#uI7Z(|;BEwSOEE
z?t$$z^mUf!L~b<BJ2(>=yYX?~Y34hz#CW2&eBe2O$!0tgF`n>U8J-h-*Ep@<1VjEc
zo}t_Q*9-BZxN<mN=5o)8J>WaR@BhYpd-?}|UT2u)vk6Z0!b+YKTkY@PVhgaoMPHfb
z&$pL+ComA>iH~jX{{}=O<4nhXCwk>W{(PHK%-g&CcfF2uoarr};1A|`t|7(~ukni4
zgdQ>DX$dD#Fwt{DrF|#f6;ANgp<WZe%6B3+Vml4qw$|J4#LWAa(aYh4yRY?|bboz|
zKZ$*Bxa?Qn`NsHn{`))eQHdj=^Zid!i|+BAXb0>^<DCnAr<p(BqR(S}3%s!1pKovZ
zPGmIpmXTG*z4yE$75vwYfhPFPt8m>?-ZmG##NWS#|G>`{D2#hfc&)!)N1Ec?d;H&f
zy(Uu9-@C-;S2o*Ebin}s_~7gT?|Cjh1+OGxbMEk(U}N72J&)tj(10$U6VLUx)8HM6
z&t|yeO0Nmc^T!k0ho3rh({uiN-s}D46KR|{L)fO3Kc26RGc7US78m;aw;S&E){s#3
zf6aT*!M*<HMTd@>{lQu6U7`p4&k2q!^!GdA`J>JLEwG}y=Y-$$o#_08^R4+*^&5RB
z+7C|b)$_b2-rQf`BIWPKe0#2*Kc4;jz4;b;08acDf13+T^qoi!oX86ky!T-Py?iGg
zg%hqB^yk}Fe}51gjP)S?V^PlueB&>l$P-vT@%E>@CUTx}&c}WywsV~KK6z|lU;j+x
z4@YpO>*ZtqUimBE36+2oeD)Ln9Lp)Qzut*wjPS`Ro)et!@87~R6V9DKdp}!b>yw@n
z>Io<G<OTjUP`{Y<`duuaNca|izU}k3pNNCs8w_0az2^i@`TLzn6#JdX$*tbc7GCZ<
zv7BGbctR~N@toMFgS`E9{5aOc@Iya&N1d^VzsAQtYl3IM0seXr-Q+vb-EhL?s(4O{
zv*i!Y^qgpo%2=zOTk1PEmGY*99&cu*gx>nv-^brz_SdZw?_b|K&07j~C;GrB@6p1a
zU5KB$sd?Y>cu8+ctZ7p-C7LnIn{Uy!z7zWdPIT8>|A!Nbj_}7*h&@ugXTJCTTlh+U
zzC{!7d50t8{G-lVX1;Y!yzl?kUe5`y^OsL#H<nLiVVXBb<1zntr9x-Ez<6T&{Pnt~
zd7u0Uek&|qJK~Ke)ZBN%_v1Rfz_`xd(hhI*oxnz{Z;=Ic{3X}PcOvap8z+#p%yUAI
z_{XEMwfNoEXv21%6MxSC9nHv{xJoW^`K8`SLvh~;&imD@Z;{WQ_SeJ*&GUBPevIeN
zOmANmTj&3-VPF@ou#64P@SbTy<<0MczLan#Jm5Lu;=U6~J8GPG@wuK8TwdTW?H4DS
zJzu0wZ~yheI{(N!((@9$ZalTYd)*kl&i@^m@J0A!>`2+?ype|I`=5{zZt@%U2gi2%
z%csD1qPubBN${W9o)f&Jg!dD~pSshGG*rs`<-jf1_<Q9=6R}UMQNlk?T-(OmAH+A}
zH_hYg3;fs4?eqQh?c^(FJkjSb^v4tQUzf!1#Qq@k#*g0Ii9cA)bAmTdFitG@de5<M
zKk<L^JSQ}5ym3O)?(~0u^e_MUG(Hke{3?HG2L@O6_m+dt!+2W9es^E#MSJw~euDUb
z8_bl*+JF2#Y{+-wO~)E1aQ-C!Y(;}Q{wuIS1I?81if6rN+VDmG=TpSe5`TlQ<VW5}
zgPmUToX8cu@DqeP`DZ+{hkN4*-}NHK^Ydxn*>Z#D1d8Y4C+PQ(e@1Ol7yr=`e|a<1
z_l&nkihVuAn-Z>vJzwA@^BL2V?)99&_K<nBSg5S`x+FHhd``(9xW+S<f53YuD>Q4S
zKi@JhGe33w$t_+JZr|T?V!e);btgXdwErI0vU@xy-p|3@dFChoxN2le|M_%46TGgU
zThW^bk!~|QC-7_q;{<#ApMw#a`K3Q)^6S{@d!O>1SBH5{?B|z_6RjWgms|%kp2}(X
z2~PL&-eIz@Rl%!{dQK#FxN(9{_<tccKFfCkF{}rnJHGUs_@5iRpCGgozYP?~>+YWs
zX#ANscLMtwnIrGebM=n8>s!3mao_3k14epZ7w_GO=nUTp7v78U>^kAk9jCiD-@;Yu
z<2b&P{~N~9>Hg<52BzXSqGAL6zfKYQZHK=e<Zs53yJnjIXctAjpE|NIaYfabyZvLa
z+|Hg8X?+ww+wmISniv}UruS&U$gSolh>fk}k7vIBNov7UFJK>%ex5fEVpAiY6Rm>Z
zG6)<P<sBo%Ci(C4MP5vY^V&Lp3tltabK*r4zvWhTgy%%_8u{zNQ#h)LOq=Sz$5rz#
ze?8cGmzi(z>F;_@WJzCdJn`@5nx8GY*8jV)@n@g+oY+tJwDa)pR-O|s@v%SOj>qt`
z)$Hl-N5?kxo!dqjCm3Ak9V<sR`=78GEBq5v{_O5OFU0HnpR*8sC-G|P{k{G>&Qss>
z=V<P?#tG#W^PkOL^_|eHe2nMIivBVAt^VKB3;Y%`<B2p|<DD6bJvG#OwCLJ9v3y2!
zJm#)%;YE|ZDS`D{;ndCW)`Mub(*Af}Y+{_)(6Rn{J@Z%Z_mLvw@R{@BD)YRbI{LW(
zybxTo33KPqUcY(HYyMT4!99sjw)$w8-`sbB=Y&6OW}Ild|9B$}&o1xp4_1!HHup;l
z|Fzlrp!ZWp#^I-qK2^taqC1-U>p>fQ?n>aQ<^J}Qf1T%qaxvcm)n4+(6D;(PHUbk8
zBR#Xun>&HyLGRJRV{XUKc4)T0e|xp5KSwhYzZF)ml(!zlR{Kt%asirOL!J|Q_Y1EH
zI(gU@mc%_Laz|BfN^C0Dw@~f+-uf2kk>~w}WVBa99EX&7&})K|ukpqc=rYncp<1>4
z@mzViH{SwXS{o-;E61B}kvDxu-qFIIV&P7I`8;vC_goTPj_3Nw;77f)%b_Rzqrq4c
zIFY%3c~0c-ik=f2a<6gXTm8Qj7QM({52DlXDgM#M^E}7ChmBYEf1e_HAwGp7JY}2b
zL`#|Rynml@qBl?R-xsUrJMnBdk?r&U4=1|PcR~a1HuEh|WvK70_Qw<5gZUO{{+{pT
zneptxr|SoDy86zC?fmti^&GRt2M)dIt-Zms{?U5iFN`O$x3A{}K3w8$KY{2HvlId!
z-{&6*{o^m6z;AHk^O}23aL0q56J9vmII++po)cT>FQ3RDTty#V>hIqIt#9>~Pxx*e
zheT^%=B)>zN&fZ|`U~4nFxJp>;w${|1g?A?&f#YM@#r|;2}R+=etFT`kA@uIi5-9w
zAL0Mim1wD}{kbz0PGndM&xuWH?~kX!6ga`Eo)dZ2cjBk-!S-`$NpHTz>)zt;4=#Mp
zOo>nP&*j91oADfk6R&Z|+kRr-UgoXWv0``)7$2PJy~>HKKH@!E<XBm3jn)40jvQjO
ztN2q^;qPa~`!4j4*8lRI@KbOCP5kHWKzz8joyM<hg6*`&SKbk1=wvZ}zjF-pEws@8
zt1Iyh_5JY-ybW7${xtvfT$VrI0?ocOb0@yHsyCj{?Tfs1CwSYn#tDBl%$qyGl2?09
z@XQ9xw}}_}&kMI-<vX`#n<>E!5$|X)p6NT`cM?Ydx!3vo9qZLMvIYNt=U-Z&SirsZ
zcxe%TOlg6N-kr2G?~3F=-Ua^G|26-L2Es+$DHTcu0=LR-uf9)bcj^0B_s+e#`QP||
z{D0Y!fq?u^{)PVAW<S@zyL`p}x;Ih%zq0aG|EDS$=#kasNk-3Ci~oMnZQ(xsME5@3
zv-|bM)QfS)a_hFmylKHec2<|io{;;OTD})wcE^dPM^?WlJNM7(-mTYT+1+I}U5;<E
z-10nn`mugl?!39$^1b--#lfo*-en~NmkpH({rmOmn=K2bvn-;l>_FgJe6!`2=TV~V
z-q%~OH&_~cnOkoj_3Hb0XY<3~jBm2sYCn5%Sz7M0E>hH6-Q>Ug^|EM@A|+q(*VT_?
zvbzd;|Jt@`+B7XtHh}dMw;9*tJI=kW|C;|GnC?Cp|Le8t-04~VikJA7slT2(y_Wx<
ziRl|E6!q@o@%JZ9KjWM`{dNC86a5Xn&Yj-QUzrlqJB>eg`bEVPle{}Ge|+xrwMo-s
z`_G;Je2H`W-!Jq*{QM2hJ9m23Th5*SN7D2M!skw(pR{r3y>RaI?nxW)2aC>~UPbmd
z{O{nm=T6_5H2t#T=MEUt6Dtfq*#GYTZw~x#4*YKp{BI8Y|85Q>J*@{42M{e9rn_(3
zc>nO+z4qUs4g%bI-{AfSjyTqC&2bR;&r$BTL=s;!2i9Ka{U1VCM1W^wSM;B#<<OVO
zWD&uCpJpS82TQ|`1CvDrc>Z)nJawKECW{D4<56Xd_$kuxGh-Ty2+Ej=u85<DbHZd1
zfqSg!|BE>I@zXHpFo{J3<;+A^#PP;CVX}yzJRViXh;gT3E@2wP2C^IxR3Op3k_wy?
zviOdyISBltUAK-nm|<y{y~*MgA|j|n;)Uk^IU$S7L_|;-k18VObQ+cmreTbih=`yH
zi5EfSki`umA_(G9MZ_XX!ve)Lh_ysSP}NLymm^-hofERSMMMPE@TekU*`{Glz%+;l
zZcBF%R44HgbN`%>#d#tksDVcn5i3O+Rv}D-SVhK&peBiUv3X9&;`<^ZsEtPz5o=Q#
z);&yvSW-j;bx6F-+&?E|ae{~l(($MwVl_;|N{eX_>&je3kV)d@5IJOVxrhkr;!#D!
z`kRKe9n&DLkTD{tN8%L_Ib`wd=Q$37`gl|kvErv;Gr=^7_sSR%G$8Rxh#az*U1NxY
zpdlVrL~Jo>*uF3g;uaARG$QdTh#a!Gy8aLcK?sj3Vh|xVOiY6~tbV!^GGA<LZr$zi
zYI8r0Ll)Z?$#oDkG2iU&<*<#WVT;Bzh*=^cXhz~S5IJPAlZXhK<55M##+`;;0j9Bt
zpaqH7LgbLeb|NBZiANO?dxbRYLof}ZJ6933BJnzi9J1I)L<Ftzs3Kx_l7^iRrm={i
z4T*T)<eZSj{vsl1i$@g^`=K=KwJ;6hCo)C^?MSR;?w=E~_|RWN90cw0s3O)zSRwI6
z{|>}%A|mKuzQ<ix@upT9hb$gEJ;XuKG4bG$#GWq=`$<fLI8#Ifok+aV+&?E|@ih?<
zgz=~{#&m=g6JPZ2K)hPSu$k7?+`41TF!$3qWU)uFTn9ln^Udz|n28X3W=vxdK@T(0
z6>rkQWD!A6JgSJ;NvBmxe9^zdB7)xLdt4E3FrE{#_?V0lL7&8fM-qGYG&~nz8jA?}
zl6Z@`e@@7vJ693($D_&^>m#h3_@aM@MFd&qd)zVNjjJ>clSKsCi3g7)o=?*7?1O0#
ze{PWOAQ(X6ZRY+tA&VP}<~j%l;!$Oc4G~sJe9^xHaq*q$4uV1Ed)zVJu7xZ%khzK=
zC-LBs#4}hLp6@UX;*@*S9R#@~;w9cWA&Xr_L=eHF${0iDep=An!41T`htr*i`Qk8h
z>yGgbb3ZL;?zlHBZY!SaAjnI6PbBf2nRa#Ji~b#m&v!_75EPj2am72${c}PV*Pk5X
zAQ+i=@JQmxHmz#ni~b#mN86`62u7LjamA+Q{y8Cw?H<o{5R6VdcqH*GordRhOoMoz
zhzQ1zco#$tS!_K!*Fi8Ak1ETtIl^j*FZy>NmUuATK``EYk2}V@wUEV;<Ayp2CL|s_
zk~l6%!%+mLLA+8#1d~X-2O@_o7K(^qG9FdN*b-s&#25WL5bKGEV5<2ZcZ~OHA&W1I
zh+tac!6S(yku)5)U>d~gA|jYh;(ZV~WYL|g2%>mY8DndNH4<O+??4QS7&X&onp<~_
z_nZ4^9J1(+5y33;&F=GK8-zGg!Ze6kvaTYSZ6><n16s&pY;vxHU@jh2#I^`)Ccfz3
zf!I*?ISA&N?{UQkwUEV^9?o?T%uhUcByqHrhGR2KgLqi>IS3Yz_z*-6S-fNC5C=ga
z9#zKJ9%1do7yUaBFMcH5L9obtk2}VPwUEW|=R+I>ixUqXNgUs$;b;)kAnyMn-9fN~
z#77`<$YR0DAr6A2cvKl<M}&0}U-a)l%sMZ_L9onxk2}UkwUEWTJ{#g7Se|(BNaBbx
z4ac9D2JyA_84iLKX5tzVJ457<#lxQtaS+7ts4~Vd!t}%!{W}o%KA+*l%(Ru}))l*$
z`)M4qxGgrsL9ohvv%5WZMTjF_OoMpE&<qE`YBSLlAJak>`^y*+ti_{>*bQN3;*0(r
zh_kaZ90cpl_qbwrEo8CrCqo<r8xs#6ae5%cF*c?_?9(s9L9p3Obj8QDkVWU?Ar68q
zcvKl<PlR<7U-a)le7tLhgJ7Ha9#`z8g)B~3I>bS+J@Md?#Bq8Wj_NTDVm}cP>>%+8
zh#a!`l86X);ZbFbeGt}5e9^xHaiE9@cAM{U$M~ccvREi0f<1``k0f3hq~Uc0rm=`%
zFNysia>(L*5fQ}ks4~X>2<s=l=-+|(fQ&J2rtLGg?iimk_tQ9J@dFVN>^I-+ZjV_A
z@yZ3$Am(<=a1b0c6J7CXEoAY4tg8qP;Za4*M%W<nMgI=O^oKJX1c%M{xZ*Qf$l}Zu
zLmUK05)U3py!uJQYb8vB*s^VggW#x{=<dm%g~%a`RYgQ_438>f9Eh-C;*0(rh(#aB
za1b0f-{XqUY2i7d>{k(-NIZBX@p>x_ug)+H;@@pD90Vsx91M{|7BfXea0-tqW6VL=
zDDg%A4#eXkA~<cn#~tGkEo8BthzQOk9z2qGg_nlcgO~<!zlaFVk~kD1hb%S_5rOwI
z&kG_>1YyYB!41SxvK$fkzXBBqxMO@?3t6lqB7$P>1n*xY@tQL24t&krLOd*EL{P$n
zt~lI$-#H<R?s7y>lEgfOjV<B{5fPLkF<%Q=Y#}0o(j*ojywf6{77;-i5=Uqui;YD@
zP?p4z2%A{MO0paglq2y4Eo9LhBZBfIjzZYfBD%{FK?M?D)It_piHM*giK7uVOCcht
zMB+<Ym@FcwOyU@XcUi>UGDZYdNPJlfS!^R?L=Yr#EW+j%@fQ&hR3&ko7P9EBIS8te
zI36M1NdS!Palk_v4ua|=zM_RJ&XZ?k1T{#UfUpH9a|`i9d45Dt(}eEx<3ufFvE-XW
z90avVoP_Wmi+D|k3<p6S5?|Fq7PBV|aS)`FI2mC}i@08nIuK-%I7JItobmJ!2SHsD
zry{)9A`W>p!$DAw#MiWt#rBU4aS+reaT>x_7IESu84iL5B)+bNES9a3>mX=I;&g=f
zS;S{$IU;C8;u~7X;-Lw-4uTMgQG~56VnDVI1dU0Yp@l47v2Cb>pb3dH5#k*oz}PxY
zwaai2G$Zj%Eo8BrhzOdKI16DLQ05lmdJz${An`3NWbu!!LmdPyNt}%k??C~E__v4%
zT9G(M3t9Y4L<Fr#oQtq6D02&OyNC$dkodM1vRG5*DuT8o&O`X1MQkkVDuQ+-zN3XK
zo?e>kAZSnGe1z>R;w`d0BIrQkyIRO%L8n{?K}Ql7AbiLo9+SNsf=(p9r-dw5TO;Qm
zO%Nur5Mg_ZI7vhVT}fQ1g)HVD7~&x4M&crb4_m~BeKH&bJxF|C3t3!{GsHpAlf=ac
zJ6Ob4PiHs?dXxBp7P9!fJX;~?L*f#Ik66U4NQQ%;FNq&&A&d3$hd2oOleiRNM~gVR
zAj3hBMdC+V$l@G%#fl)C#AOH{wTSyfL@<EFkF}7+sE7y#lDHgUCyTgEL<ECK{6q_r
zMFcq{u0Ys1g@_=R#80)5#aS{&1Q8Nr2*c(MZm?f{Nydm^7>S>0A&av`M36_~N`zfN
znOlh6L_|<vLigzLb1h^sTiz!}Fp|Vo2)kOu%S1#lio`Fpki~9a4{;ETCUG^w$1Gx}
z{0s-d7!ucLA&c1uhd2nvlDHOOH;b5`m*F57PvSZ)WO32?xekH}B(6u;-6C$0xr$&C
zi5s+##p%a}I0z<_xDjCwi#T#rhJ#=#iJP>L#isIXg<u+qn-M;45m&sN;UJi9!qu{_
zeyN2lZj)C!2%;ozLD<tGMki!A2xgMFRSQ|{_|y;w!7LKDA?%exL@=Ague2~(L@<}c
z?Ff6P5E0BH@oOzi77@%RaR<UDQiuo^khoI|lSKrDB<@1kCxwV$5sBYuVX}x|F^Rho
zK4}pTzLw!2SYkqVzxu5fvY7u>j)Pz+iF*+CwTMrOh+r9s-)SL>*RRZR5G*HgFT#En
z@!0Ef{?P<0Nc>(4Sv>q~j)NdZVjN+Ai+G=m5y46mx_f{hw2;L*U2_}+t4Q33@F|OU
zyNnURY7&3cLKfFPk>em(OX7ZnSr&2EL^=Oxg7qXG&_Wi+ch7MUY$Wj@!lx}_{c&>s
z(FB`G{7DO0EY&;5L9m6yLkP1i;<Ll#{G$oBk@&L~ve>nAj)P!3iH8wBlR`wWgT!C7
zki|hFBG^UZ5rhLQ;s_Zdg54zks)a0OiHKkiiANDWYZ2YKieN8^ziA<hy+uS2C-E4<
zfhj};`$+s<3t8+WB7*%S9!L0`MeHwQL~xMAKeUj=Y!MM0BJl*mK`BH8he`ZX3t6lp
zB7!3%o<um<BKDOrA~;IoUs}jwUZ)%f!7&m~A<VIePl<@&IEnw!LKa)g7!jNx@if9A
z7V#4i5u7CPZ!KhTyNC!*k$47Su0>oUB7)N-{-cE~o)8hi84}MT9BL8QiiqGWiT`RL
zi?4-q90Y+Pc=Sl()M8o$Uo*FOHMdJd1Vv2fK0o3r#B)Lx$90kGA5Bn<#3JU$PJ7-W
z)_zIOKboKfiAA-L#Y?sgb`X>#u^7T(7O};Pa{kc-rAREUg)BA=<TwaQlUM@baEth>
zyzW3yhQ#x<kj0M22RjJLl2{U9o<-a-TFyV3pd5+kYaxq!F3xcflqazi!hDPPiY!M2
z6-c~53t8MdXRw2yB8jCD7FfiaMMO}E#0#~M#aZhII|wS1SO(z;i&$4g1XW19NDEn9
z^7&u~L6F3<2uE7P$+8>~R3-6ZEo5;@e6WL{8j0l)zF-k!A|j|x;w4(hVhx$A2x^d6
z9^oj9xKu<0HA%cw3t4<gL<F@-tbp)Ei?~-r1a(NfObc0Tykf9}Af3dD2uEAQqaq^6
zB=K@BWbwp?!487DBvwNBl102$)>Q=cNW4M|S$uclU<W~c5-TGdV-a`B7!foe@k%XZ
zvGnr64uXaxRzdi(McgeSf<`1>rG+dGet)ooAVgvi;aH2fUf#1p(3r%lwUEWxMRFVj
zO-QVYa9j!zK{FDs(Lxrdiin^&iPaE}w}_w17!kA}@meip(H$d#mLyh3_=-jRSVRP^
zNW4x9S#-yUpf!m#5Kgd&`$R<0hQ#Z&ki`KaB4|ruO@tFIVpxtk5VRw)mKL&j+kwFj
zg7zfVMmWhL=8A}*1Bo|iA&aB-4t5Z9B(V;{S1n>A*&Y#eBJoBoWU=d(!485jiRlO@
zTf{UG5p*RnLkn4qiHM*ZiJ1teSj2ZkM9_o8o3xO{)=vy}5cDLmF2bo6alR}^1ieYT
zSqoX5bZoGLpbv@l5WZ#+9T5@qCGi$5WbumHISzvUB-Teb%_6@2f}DReK^BR(Y9Wh@
zj^{WCvPo=!@O6v0e1x2TG{FE8Z_`2+tGy-XA5Acj#D)l`Tg2cHIsa&aK_uR;g)B}U
zEWeLyf*cYXA$-Fke*H{_gCLhge4I@hhb#`8^t^*0LShJF)FM9CL(V^%U>J#aXd#QC
zOY$59c_cPQIKv{|*Hg|vnxKHhJGGF-O0N!g5R4?T3Bs8cabkBl|7e0y=JpGDjVzx;
z=>1FMkj3@C40jNWHlh1F^UV;xX%R<=h+qtfcWEJuJ2wq?5R4_UIl@^M@tLl2{?P>E
zNxWMNS)6fOo`YZli7gPmWf2F6h+q<l_h=!DZ-|IsGKnn_&bEksMMN-_#Cx?cSwt|6
z#8wFBSi~F=5lkoXJ}qSNbr~aqD2c5R&b5f`L_{!?#QU|7MRz$Om_=e6gl}8Kvt2SA
z1hYweKnq#i*euUMFqg!(2<KVE3=t8`Bk@5kWN~DdJO{yi65Ans$0A-A&TtScAn_qB
zWO34Sc@Ba?65Au3ZxOe5%5V@YBJp7@WHB%^&q1)5#107GwTSPDh+qkck7yx_RYgRw
zl*En*7g)qEMMSWS#7DJ|#bP2NSWaRmgzs6z6(S;7L1JeuWU+>b2x26L5f)m+)gmHT
zNn#f*WbxFDJO{xl61yT?Xc0FolJk!ySWV(%TF7EylRO8(S`xb<Tx1ca$L0K^3D%R?
zT?<+KG@R!k*hpdzgzsC#oGUUN1e;B`N}iD)*FqL2Ka}Sn*g|4Ygo`cW$JH|(1lvgL
zrG+f!Ov`f+Y$vfd!Vgl22zHS8gch=xB_e`dB=$kLB!!4zH;GSbA&dP*M6id%z6d|G
zh#O?CBG^k}KP_Z&n1~4CB=$$R)FQge5y3tZpVC4WBO)T$Phu9rk1S$45fL0D@o6n&
z@#4Zf2f-l{vk@+{h)b@`bPyaS@fj^-(fK~lL2!h`0SG^~h&4n+aFoPnwUEVz=jS^J
zj*&PJ;c|;uq*|tf;5doTX(5Xp+vht7PLMbV;U^aHArTRrByq47vN*kMzJuTti8%;Y
zSj5@aWI6~=lQ={RSzPmYzJuTliMa?rwTLZ5L~xeGp<2k|%6|C{f<RF`x?KN=Fov(0
zTbzH~9n5qP6fvQ@Cx2cGS?sec-$77}#9;_Ovxt4J&U6rzAaS@BvbbPMzJs77iFpWD
zTEzJ>Mg*lu%-2E|JAIt*ASg{@0m9EMVupwa%8)oh3t7B-UA}{$EQuo#uCj=~T$$-0
zC`aN8TFBz@>IDvh@+6Kz_=QExtCHy;FrUI7aMzp{wUEVF<pKvmMG{9NTx}7%iHM*Q
zjqxQdWHBpP;2@|>;uwT$EaG=ER}oYp@ntP!althO4uT+wV-c>kh-)fmItZ$gI8F;$
ztZ`F;gP<CT;}Nd2h?``tBB)N{D_Y26u|xR|f*K@FK)Bu_-hEZ3gP<mf6Sa`V`?lvh
z2x^l!3E>8dSVgu+1a(M!RSQ`>^j^M$Af3d?2sc{9oiauQnIulpLKeT0{VIaGBu+)R
z$s(4QF(Rl(;%i#S;+X~c4ubk5PD8laBCe7#B4|M3>srWS&Zc|^K|>O!BmB}L4igbU
zBNE@xLKa`!lkXr1kr+j|#UhTBtph=05@%>3i}#c&a1b;haVEm87ICtO2%3@jrWUez
zpNI&WlQ;|EHjC(v5kU(Q-_k-B9~KcoOA==z{K_J_V?@x3#5r2XqB~a+v?g&b!tEAu
zgop^*kodM1vUtCU2-=c358>Aq@grGR5ws)m9W7+BaDBdmpgoE65$>>vPl$-11Bvfy
zA&Yxu>p;+v#03a<TEy8RBIrcods@iiv2XGn1Yr^j5$>{x+hsW-=t|;3Eo8A}puj=U
zjl@L=zp;pai-@2HiSKJ6i>*XN(38Z)2zOh=#Udi;P2vYy$YLWA5%eK(3BqqvhzR<U
z_@NfE*i1wO{YhMkaF0ctCu2mAMdC+V$YN^|5oD9N4B>Ycakz*G29Wr%7AA`b29mfO
z;ocM?f<YvHqJ_yKf*cZ8ApAash#;55Pqi>vL=Yh{hA?gs$IDzrFpR{{v@lsjkVoQ5
zgg>MZ5fqU4xfUji2u6~)3gNyKB7#vQexZfQB7)H*u15G{3K78=64z*9vWQ?TiE9z!
zViv%7AHZFX2*#7RP79Mo1QSSHkMIB}a|>~>hzKT;xIqh9d|37X2qu%b5g{(00n8$T
zsU&XF!ekM_G!i!>#C12Ch+sO2Uut2ph#*Sh7KFH9M-vguByp=2CW{DWk+=;ZuJlP3
z=T^#e5X>g=D=lQP)xY@;g1IDaM~F*=lEqd<GaUr;Nc>t0S<F72?;w~@;tqtkwkTO_
zdqU1XnqUEmJGGF-zfa~n2ntEug%B4dC5u(Qmh+D$SVZDCTFBzO-|`&<i%Hy#5LYuL
zizm0s`9~8hA@N%+WO25L2$qt#2O%zlN*4bV5y3JNztch%7mJ8sIf;7_;`%8~M6iOy
z@3k;lL=Yn}ju01KC5vTbIU-m|;tyKLVxf#N5s<hKA+Fd;7SGCDU1fsRB>t#{EY1}X
z!CDgcBgCa%nuuUMi3hZh#rYy4*hu0*gt$g5S#;+rg3ToUq=hWHa}~iB5)UE7#bug^
zU>k`)Yaxp>MMSWj#KQ=2Ra&yxTb3h&9VGsug)API{VIZ8BpyMC%h{5}-CxP|k0#hn
z;;&lB;$aaH>>=?eLR<%zEY1)S!Cn%7(?S-@6)A8K#7R7c5EsxTi^sRg=dYSzABn$f
zA&c=d`3{2pBpyeIEANuUt7JJMI7s3jTFBx-5fL0B@dQF#vX?Br@l?8l;IIilm3QX<
z)It_>I~O<zj*xf~A+Gh)L<C1k{7Va2>?tCGV<etJh>HZ1#nm!K1jkAIj~22xNJIoD
zNIZ=YR~IIWe~O6UB#D1(A&c1}A~;3j8HBhjF<C5~mF^%oP2xXV$YM7U5u73MEW&?5
znOhtoAD1yAI7{NcTFBx+5fKE6;nC&#M{^Q0Enpr2lOX;hB7!0&bk|k<O~i9T7PCY|
zP>jSP5YsGTWtpo8N|0Do3t1c>B7%}67DHIXA{G%5K`9c8Yaxs7)`6fji6sygwTSIR
zL{Nsr^R$q~VIm?ZOJYfc#Vq1r5fPLl@q8^z77>&uu@u7M7IBM+2r7_xfflluCu2lV
zk;KvnOIXA;A|j|n;)PnsqB~a+R3@<u!t*R*ClL`;A@L$DWYOKrAqbLK7GX(?_@syk
zs*-rI7P1%-5kWN)%OO19A`TZ3L3I)@(LxqSi-@2GiRBTNvWV}9h@d8kmuex4?(-vp
z+9Xy$c!5Q1++Y6wqY3Jec$pTmSiXIMgCL#6iU><v#I3#M??0L#)7-9*{p#gf$YSN@
z1rCC`BvwLrp+%h7L;n7w3F?t}g%+~7|JDKrL46V{BP?SP$99#!|7d~+=JpdA<CR*-
zVvpJd4uXaxRzY}?MI7{){QXB0G$QdTEoAYw8w(r+ArgZK%UZ;I5fL;d@oFt(@zXkT
z{?P<YNUVzRVvAU&oBaJp6Eq|78ZBfoA|it3BvwOM&LVD=F(PO|;<Z}HVm+Cw2wIX@
z9pNPw@rZ~BT9J627P9!3j1fU=5^EqVZxM^jTt(1^#Ot+?#WFHR1Z_#IiSSa3SX4v=
z?MSSpg)H_J5kY$rYa^^+5ib!DK?f3V&_Wg$h=`ygiFFWOW)b(uazxOH#2dAc#X=Dg
zgh@<CSkWS$5D`IF5;L@r#hD@^=tg2D!pkk<84(fmAn_(GWO2EO2zruO7hxrf=+0FH
zy-B=T3t4oRBZ598)<bxOMReC31bs=oMGIM+FCv2eB-Te**&^N{B7!UuZ`DE;H;9NJ
zo5ThPue6AzMMN-w#M`ux#bqKQ7)WA6gjFo!ogyL_MB?pQ$l^Q^5#*5A2;o&0@f8sf
z<dW!UA&WaMFK`e<NDLtiTErD1A{a*E9a_lZ){6=p1bHMjMtHSF{9Qx@1ti|7g)Byj
z7B~n-lGp@cRf|}uyZrq}6O1CUsTQ)hU*17NFq*_>2(Ph-n`Dd##*lcI7P5H3Klu)V
zu_QJ}Sj{3nA|itEB;KusEDjP8!2}XpAiUNhww1jcf=MLaqlGM%Ih*ewm`q|zgw-wL
zJUL!PFqOo6wUEWeA|jYZVk?B#S;QqGBA8C%eOk!kc_Jc+lGqwy4U4#5L<BQQyk84h
zTrSHI!7LKnAiUlp?h_HgY!V;PLKbsGL@<}cwg_ul#Fio=m`CD+TF7Dp5fRKMu^qx%
z7O|^{2o{j|kQTC7MBbT4P)K5XgtaYVGZ7IiBJp7@WO28=Gml^~i5(E$U=eqBk-z_F
zf+ZwAqJ=DGlqhfzEG4lc!a5dlrHBZYk@%<<vRJ=lfrDT<iJcJMXb~&PTt%>g#LimC
z;te7qh>;jZm~Iho5fQ;k61!+2i?@o1U=@j75oTD#P9h>$P2yu($YQ#P2-cF=4PmB5
ztSBOa^(1!JLKZVbM6i*>9tdx;i06xlU^9u2YaxrdA|lvAVo!v1En+DV5o{x|mlm=Z
z5fQ<55_==O*&<#oB7z+xKB0vyjua8WE)x47tY;D3tpmYs5}(vU7Q2avU=N9X5#C}E
zuMrW!UK0ChA&WgkL=Y#jKf?MJv4MyP_L2CM7P6QlB7*%SW+A-QB0el4f`cSJt%WRR
zi-_P5iP;DnSj3tlA~;OqGg`>v01*)!A#ni0+bm+HhzO37_^cMP=+0FH$4DHAu%Sh)
zDk6g8BtEBwEV^?Q!3h!vA-p|>h~OlNgSC*wJP{F`A~6SHqZA^7(<BbjLKfY94uUfz
z<|1?~;;k}Q5u7D)s1~y5juAniI8HLk^^XWc7SY}3AShx&_dVq2wJ=#kP>jT32=B0n
z?z)Pg1c}47ki~&AMg%2E%tP2Xg@~XOiTPT{qPrXslqRtN;hh$-ekVEqXo4~%j?h9D
z>z9`Ek0vNf;z)!|EaHzH<@}=w%9&gDe8&q~$l|Cna{Z$T%9A(>VN;8EQ2s(Xf(j(Q
zsD&&(QdZ7CnxG<yqY*Z<h;KbA=O0Z_iNu$*kj2IFUI&88B#uFNmqlD4B7!O;zO02T
z7K(@<Na9$8%`M_=5fM}+ahw*ixK>02)kqwV@NSDZNkjzINqj{MSzIO}f*K@FK-j_}
zx^oplO%f++A&c`xL{OW=NeJ(;h~J5bpbm+zY9Wg=MMRKJ;$(y^EuuR{1eqjG(LxsI
ziHM*siBl2YYZ2Foh@c*cuW2ER3q(XvpTubhTUkVRdqmKH#MiZu#la#XXh`C8g!fs*
z*F{9oh{QLvFj+(pA~A}vwMG0uL<EgVoS}s*z9?fv(1gU92=BLu(?vwkjKnv!kj3Xj
zM9`eXSqR%$M0YtNXhGszTFBxE5fQW`aW=vSETTJC5ws$4jus}12wIak7hzkA_=$)J
z+K~9R7AA`b+LAaA;e!^@ovR4ik@$`lCW{E#lQ<t?JBv6=L<Aj3d{+yTMFbs5T!8Q)
zi#S0<1f58HPYYRWCTk9YFo}f-+grq35fOAHaiJEnSV}|$-AG)7@L`MSt~m&Lkodk9
zvUo<0tPu1haWTRU7SY{05cDST11)6npoj?ikhlclBPm1#eM$UK3zJ0z{YhMkuwx1l
zK^BQ0X<@R6Ae+Qx2p>%$A{ap8$6A;yA{a>Ga)g~yhzJIe_=y%KiwJT^T!FB&MRfN$
z2y#jMR0~-=Dr*jc2#GO-VT<VQ0T2u$@iQ%C@tBAR@<?2Xu!}_;AtHhT5<k~M77vMt
zU?hpF5Oz%=A{a&D7h1^T&mtliP2y^Vk6FZbWsC^Mkhn$*S^QN*1Y=2Di?EwTED#aF
zcoNrXA&ZAaL@<HG^$5GC5D`owaf24JxKBg`lS$l&u!lu-kB|{eC2^A$vREi0f@vgf
zM)-IN5y5m4ztln&=ZlCSO5zrTJuTv=GDZY5N!+T1EY21Y!7LKDA?%exL@=Ague6ZG
zr6MAjOX7Bfy)9y)j1j>+62I0$78i(!U_OaE5I$iMKNAtb0upy>VX}yzki=aG`&h&s
zA|hBs;x}5zqPylGSWMz>gil(;n1~3Lkoc_@vgock2$qt#2Vq}}I95ai%SilA3zJ0z
z%SqgeuwM!h!3q+;*TQ5GL5##W!u}~l1S?7WK?{>b1gl8ghw!NsB7)T<{-}k?B7(If
z?njuFLPW5h!~<HGEF#!Q;z5K@Tf`Z%<{;Qi;!j%0qPuk<*h1nVgxMC+-RB_KM&i#}
z$l_cP5o{;%Fv4dn;#?6C>>%+MEo9LhBZ6Hd9zi(3BEBagg54zks)Z~r77@W75|1K$
z)*`MJ5y4&(f73!1-F*&%IElv)4z!40iiltziN9-MvWQ?miN_H>XAw7xh~OZJe`q0#
zvt*124v}~Q;UJ5+NkjyPN&Hg_lSKqaNIZ#futlucUd}(7;3$cIX(5Z%&X@C#COAgo
zDTFx|anSv8{?P=-N&Jr%vbg!EeEzBlPLOyS;Sh^hyQy6NXo8a@{;h>9UK*FrUp2ug
z63-yawTMS=k?S8#aGJz_w2;M$E9CQ6O>l<9vj~S;#9_C|`9~9+CGlS^WO28AY9E3?
ziT|E|448{3(;^n}?45G{(F8@zt$W@oO$%Af`ba*1)da;zEQ0WPi#YjiIsa&a66V%D
z<5^S-Sv<Z(K7Z8&B}puXaF|8B{{gxF(FCQ;?Q#)|YaxpR3+3}yO;DP|5(tM|#Op*v
zP=>_ww2;Ma3+3}yO;DD^k_huGVg(Tqlq2zcEo8B$hzQD)SPEgjMXV_zf(j&FpoJ_3
z7Ueq#Dw0?lVSz;~D<XnQBwnb6EPgIyL{OQ;G6+Xl#5N)#s6ygJTFBx;5fKDQEQ@fY
zMSMy`1XW4ASPNNvUql4eNGyl&1&i2EL<H4IyhICG{76IuHApOvaFj)ih=`yjiI-|2
ziyw=Kpf-sW5WZ*;2ey&(k0z)?;$>RM;usMTq?1??;b@CES40GvBwntCEDjVAL0u9n
zA$-Xq&JYnnJrb|bLKa^Y5kY+tD<d3Z5ucXjh@b(9S85@PV?{*Jki;qoU$%%dL`2Yt
z#H+NB#ci_BK@cJ_h;Xb$94aD$#w1>?g)EK~5kV6Yt0Ej{5wk=@(2T@uw2;NQA|hx`
zVl{;0Euy;zK+uB3YqgNYfg&PkNn&+`uUN#QZRPx<30jeOoffj_&Q%1hNvwfzf<=5-
zL<DU}yj}}g93Ucswj|a>IME^w5)nZ=5^HH8iycKo(4NHF2q#&@sUjliK;jKr$YOgD
z5p*Q64#HP0;@cu3=tSa;TF7D(5fOw*Oh-7`BF+;LL01wpw2;LXA|mKUVkW{V7ID0Y
z2zroslNPerNJIoZNvw--szn?wB7)u|-mHZzW{8NO4~g{<zGe|W6A?jQ5^vE$7VC?M
zpg)QA5l*v+uZf5ti^N;CFj+*9O=1Itucr_Z3?T6~Eo3oM#)x1bi474>w}|eVgJ2Me
zw`(Db*NKQAhr~t*->`@?MMRKGqN9b$B7z8sA%xKsB7$Kg-l2ubB7!^;8zY=y5f{lA
z5fqSkrxqrQ2u70F1mR4J=q^VDqeyJ3g~=j<(IhrQ_@+gi+D^_tnqUlxcWEJuMf=G0
zk0uyPVsnJEEaGSp5sWACZY^Xnue)6TXo3kOwm|rnMZDo5x&F}vlSsTr3t2pPuU!9V
zg2^PdL^#_b{wrfdFqOo6wUEU(Tg&y2CYVNID}-}WhzO>Wc%K%s_=boGq9nFPI5&le
zU?z$8Yhkj8U>1pO5Wby4L@=Ag2egpI88Su$b4hHAa9#=#!8{Tl)WT#D!F&?iA$-Ro
zUL)%&f(0Z#q=m^Mf<hA8Bb;v$i;IY05s43LVX}x|F^L@zzH1SSiHKkciH~SuvWQ?Q
zi5(Fxu!u)xdql8|#7DI-Sxf{Zc0%}`MXVrWTyBCDBzD$97TxU;L5##O!a|F9M#hL>
zC5c_MkVSXvK(LC$t_T-e#FHW-SWV(%T9_;%SW99zgo`ZV?;;{tPhxj1WYOKPBG^b`
z4}|Zh5D{!9@o_C=ajA$1wvgBp;o=k`f^8)B(!yjB!FCdRBm5wRh+qeaPiSGXh+r3q
zeGo25AtKmK;*(m);!2sT2=<WJ7vYB~L<D<D?5Bk+t``wOoW%YJm!=RA>?83hEo5<p
zhzRzRn1%486e5CyBtET$EXG7caEQcggv(Nh2o96@j25!EQA7ksNF0Fh;}jx-qa;47
zg)Dw5B7$Qi4n(-zB373@IfCOPKBt8&ekdY>6C@5o_(=*8!ATMaYhkj8;1r2D2v=Cd
zQ?g%0aGJy+TFBxO86$!-B<3RgG=+%ZEQv$4Fj+(pIPbsbA0r53DMSQCOz57QdtM8Z
zMFho29ER|-6e5BWBo5cYWD!A067vwQOd%pDMPj}dCW{D4lURW8bBkC~whjbkNF1Ss
zEH08Y2SHg9M<QI6LPSuG#22)X#l<2bC{N-jgkM-hck4h<fy5WJki|j~5mY2`G{V&u
z(VeRZDv|h-7P2^BL<E&d9D{I;MRfOa2&$0yvKF%FK6fApk~kLOT8mgkL<Chy9H)gW
zx<^(Bs*yMz;W~?WT$Uq(>Lk9Rg)F*bL{Njo2?*C)#LH!j2x^izQ43jg$B3XdiIWg+
zu!v1s%lStW)G@d2?>xM!g)AO=NX|c+Af3d?2sc{9#`0Sh2r^CR{$9rvEoAYMj&lCd
z1a(QAig1%fd?6&~A5Bn?#MiWt#m1fG{G$o#lQ<3GW{cRMp`3p-K?8H^es=fkTFBzY
zE^_|S1Pw`?j_}JAB7#OFzM+N5B7zW!QG{DkhzJ^!I717QMFdSqoQZI23K2mw65rIq
zWD!Ag5@#XYmO@0(g2cD9Fj+*<lEm2vzp{vRWz9j*io`iu$l^9xa}cy9aW2B`7V%mU
z5ws!kZ7pQ+dl3<|C2=0YuPx#~^1EaR+L8E<7AA`b+LJgR;SP&fC?bLmB)+SKEPf$l
zM9`7M1qgRq#K|He=tSasTFBxW5fOw*EJV1=BEBagg03Vk)WT#DK{pZ?A^gT7x?@Dp
zgT(i>Fj+*<lf=accU#0kA|mKb;s;vDqPrXs^dWHx!f#WE2>O!vp%${ZRYU~+NnDC>
zk42m!V?>Ze;zwG@;wBLhWRtiI;dd6Xn}`Sokod6{vbaG+1OrK2j&QF<>@6aKK_q^n
zg)D9n5kU@#D-eEf5$_QZK`x1(Y9WhXiHIOVVhmy2BD!NlFpR{{w2;N^A|l8maV5eZ
zETTI`1O+61u7$}Wf{`SyLb%T&W{HSk6p3GGA&cu}j0i@PxEkS)DMSQgNL-_Z$s&TW
zB(6ocKZS^3Jc;YHFj+(}fyDI)52O$gOd@fE7AA`bCX=`k;lUIlf~h2K(!yjB!88&#
zBmBuCx?2Z==_G!sg~=j<D2ZDT9!eo1m`UPREld^>%p!3c!k;bTb23H*vq}6)3zJ0z
zb4lEe@UTVfDk6e;Bz~=h$s&UJB<?`?i$!#=3qY`d#GP8m;#%1QASfhp7s4YJ@c|JL
zEF$q6Eo9N%lOtG6;%<b$TExdhM6iU!Z?%v`cQ1!vDT#X!9<_+>Tt%>q#P76_#r+~8
zSWe<zguhwDwjv@}LE`sX$YQCka{kc-F%shlkEIY1tR(RVEo5<?hzM4ZxDVm)7SVmS
zLa>^|AGMIhlOiHmOX7Zn$1UP05fQ8>@qiX4iwHK7co5+qDMSRDN&HC*Sv)LbM6iX#
zLkLe;#4o02I0&|xaEZLv@v|1P*m1V}{YMjQC-E@CKU0VZc98gs7AA`bc9D1l;mH&t
zg54zks)flSf;}W2Mfg_=5y4&(f78Nb5kZ{9V+c=K#O1Oa5$q%JcP(VGr7TAT`$;^G
z@INU;1P4j{Lkp8d1cyjGf$($+5y4>+|J1@{5y24>Pa^y~g^1uNiGOKfvWVaqiKh^r
zNg*OQPU3&GFj+)!g2dAZ|FMYsWz9iwlElBYkj3j{%|URA#4`xbTEs~rA~;RrKU&CQ
zRS^-KA@MB2e=Xu{5fPjv@n0=uv51HW0ww=@{xM)a#5FBouAsyu{QbwzMMO}<gzkPd
zO$%9^_m*7$Xo6xS7D1S15wk=@P=dswTFBx85fPLmu^7T47IBb>2uhJyTnkxTBqD;+
zB$hx})FO5e5kVOe&(lH{XN!oSEQuu%7PE+%A|fb9;`v(0;!F_{lqazi!r~UOfrtny
zka&R>vUr}Xs|YHRSQ=poi&#}e1eHj<PzzaHD`P}ZnZz;(&$Ec`Tt!fY#EZ0$#g!r=
z2$EP9VM&WvM??fwNxWDKS&WN_pc;wg5T0)lZxInebrLVpLKY8-h@b|E<q?*$h!=~9
zpeBizY9Wh<L_|=V#0m&6u!uE8L{Nvs%d{|AM37EmMTDg-V!DV3GD*B#3zJ0zbxEv*
z@Is4ttB45dk$8m`vbb61DuVhXRz_IHB32R+K?4%6)It{B<%pmmiB%9@WD(sp2SFne
zuhK#mOUgb6L5Rd4!m<{zornk;lX$fjviPis2%3;s72(Aev5bfanvr;o7P7cws$BnQ
zg61SvLs-rtUMnJk79?J)g)H7XMXrA|K}!;=BfP{S{`Pu?gP;|O*J&Y(x4$aqA5GAj
z#2N_8Tf{46j0oD0c)b>~SWCu;pe>0t5ngH$ZxRtfI}&SYA&ZyE7!kB5u{OdA7O}gC
z2s)5>gBG$_TtoyNNvwnLGK)A^L<F5kyip5TEHX*XKbjy+VmiW#7IBJ*2)dG(p@l4V
z77;-=5;GBAZV_W5BIrTlO<Kre^?bSh(F8q7tc$RcMSNRC1ieYTSqoY0Fj&q%nxGGf
z^$=cR5x0qmpf8EHXd#O&o{{s9Cg@LMeT0=QVzD<e90XY;-l~Nx&UsqSKbjz$#0Chj
zw1|~NL@<EF+q96y<su>&NMb{TRV-p$<|=|gB;KxtEG`xiK@N$H5ME^wOUf7#<dW!U
zA&Vc1h#*2@2w~77UL_)eVI<z6g)F`+B7!^;8za2hB90IdK>>+(Y9Wh@L_{!>#3l%<
zTEu@vL@<iPrdr722O=UEO=2^I*I2~L(F_N{7!vQ&LKZ(05y4mzn<K1d5nGCgU_6O;
zYaxs8i-=$Xi7gObYZ0#&5y2!9@6kdQXNiblGKnn_R=0@Pi-=$<iT7$Di}OT8Fpb1k
z2(Pn<nIa;XPU3x9$f7$&1W^)OBdlQ&ONoeJCW-fJA&WCbL@<lQHVCh`h?k3qU^a;l
zXd#QUMMN-{#I^`)TEtsKL@<xU2eptzcZ>+;lh_VnEsK~gB7y}ZKBR>#&J__sA&Kn~
z*0zW>L`1NN#D}$z#rYy4SWIFEgg013M??fmNPI*KS#-yUU@3_m5!SJYtwltzjKoK^
zki|j~5iBRM6T%x)hzM4Y*jWo%oF*cI7>Qwo=@zj-#)x1giCwgiMRz$OSVdx2gc&JB
z1glAWObe4m1Zzp`hA`72PM0wvSWjYiEld^>Y$UM<!kaAOBoPs8Ch>7COcoJrA+aaI
zx)yPOhzPck*h>qOMFiVP?2Yhdix?0Q!449i&_WhB%9?{<7m0lk*0YE;MMSWh#3!|o
zMfV69!5$L(BD}>SmKPDhUK0ChA&W5)5yVOCkFdT)d_j)M5$q%JDJ^7iy@&|*lbD6@
zR*Se(L<9#(d|C@xyncXO|7e0kBxWOQU=f#!h~O}Z&uAfwwM0a4gv0>|Z?lN2MMQ9v
z#AmgT#i1f1I7Z??gbgj?E)fwNC-FHgWU+>b2u_eV2;uD(F;7GUCrKQvg)G(;5y2@E
za}YMNi0-<I;53Otw2;M25fPjrF&Cj@5vPiX;4FzlwU9-3j0ghf<0PZ}{YQi$i#S$9
z1Vv2fo_~B^3t4o>h@cpW!w}wK5wDT=9ubrvakv(;c$<g_N|Km|u(3s~DI$VWB<5=&
zi|+P_pfrgE2=BCrJEqC`M-!AGafBAK*jz*eWl0=~u!%+7C?bM#B)*`9EH)DnL3t8K
zA#7?9{}vHJ1rlG>LKfY16+uN3M<Z-z5sS%kL{N#um$Z<@#v&r9OyU@XcUi>pA|j|l
z;>%jdV!DV3f+UVb*gS=Zpel*uw2;M+hzP2YI3D5M7V(TMM+DVLd_@ac94#V(8YE6Y
z*uo<25fMR65+`aQi;G1>P@BX_2=B3o?idl&A@Nl$WU=J4a{Z$T(n*|*u%$&@AtHiI
z5~pY(i>*aOP?yB12=BFs2Sh|rkHpuski}a?L{Oi^X$V_c#7!b1Xh7oYTF7D(5fL;b
zaXP~LETX&5LC}cAH?)w&1|lK|kr+kT+9JC9RRoPmoS}s*RuB<E6B1`4yg!AApc#p8
zYGJa7pgD=N5VlDnB4|P4TUwYbB4|nCY=jS_5D~N@agG)yiwIhiI2U2t6e5B)B)+YM
z$s&TbB+f(lphc`DYYu{TB)+4CEM6gN4ubY1&PUkJB8Ejo(1FBvwUEWqA|mKW;sS&Z
zS;TT8BIrcods@h1DG?EbNi0Oz-XcatM9`JQg<8mB5fKq|BXJSJhb`hf5fStt@qI01
z@e_HrLeP`M#RxlC#Lglj=uP4WTFByCA|mKR;u3_9Sj2WBBIrxvhg!(uOc4?ECvhpl
zjux@IhzPPs{74H~oFQjC5oD9N4B?|GL<9p!{8$TFd|gBY14&$tuu}>V!5|Vp(LxsA
z5)nZTi7OCxP9Y-5CGk@&OcoJDNQ@y2rw|bgBk?mWOcoL3k+>3J7mGMY)*J){Bz~@i
zEWRys6~RanS0U_b5#6l=!6*{H&_Wici-=$}iK`JlW)WwLh+qtfYqXHXIU*t$OX6CD
z-7I2AL<HkWT&IOBy4xdy2_&vZ*xe#F5)r{95;tfei|+P_U^0mt5%#c%=^`SSO5!Fh
zOcoJLBXKjr$1P%g5fMx$@k=dC77;{A+=8&DMGT6FU?z!MwJ=#kFpI=(2zyyXcR3=M
zP2yKt$l@Ea91+YVaXZ4^7O|p;2<DOawHC5CTSNr&N!)?(35!@mL<9>++^K~uy4xdy
zLK1f&>|+rh5)r{762H+x7T**R!D143BYe^#HWv}W5)!}FLKfXIB3Me|9)x`@qI>j+
zU>S+uX(5a5nuB0DiF*<Dvxt>MM6iOy@3oM{S42b*BQcJ!zeQ{<B7&79{-A})B7#*U
z?nC&LMeH~)!$GjxgdfN|x<6_mivt|F{?P<$N!*Vx%OZ|gDCZwdu%5&NTFBz``{eUi
zO|X%~g9x9th*vL@^N%LjY;G6J7=O}27Q3~V>mN<9g~US$vn^u$Q#t==f^8)Jtc5IA
zoFUggnqWJLhY>zw5ig3#`9~A%An_M1WU+#X2zHTp1mOUScudBKU^j`sY9Wi2L`1NM
z#G?qGwTSK*5$q-LH!Wl_AR>Y|iN_EQw1@!_5$q%JcP(VGl!yrSlXx8Aa~84XaykEK
zf`cUfp@l3SiOTs$6C5J(1j0cUvCPME{?P=7N&Hg_S-eTch~Nl`ClL;|h=V?o^N%Jt
zO5$Hy$YL825ga4&6v7;fn7c&IKbqh;iT}|;7PpCr-~@@M5e~742Sh}0lElBYkj2d+
zA~;3j8HBkO@t}wZPLueL7P7crL<DC@Jd1FsMRdoA;4F#%YGJa7AW-VR=N|*+k4UCP
zEaG+%5fm|@yC+Z6LKfY*il7*YMG!upLPSu4#G+c5EFvgLVljlnQiupjkyu;{lSKrj
zNi2bIxJBG3a}_}u63^4ZWD!AG5=$b?vxx3;L{N^z^R+NpL{Of@QV8=?hzKf>c!3tO
zxLwv91Qkgvjj+HX?vODes6^t0TFBxq5fM}-u?)fy7IBV<2&#~HkrpP42!bS*ML5zT
zHWU#-RT3}OLKgSR7!gz>u^hq|EMjR95mYDf5-nu$6A=;AAhA5cQ5G>EB7&MEUaEyG
zZV(YcZ4xUWe9<DtKalf}Ca6Q=Wm?GM7a}4^C$S>J(H3!}hzK%Cyj%-e{8U5)bxEv*
z@Fj~_vRbBtpdN`=Xd#Q&i-@2;iIowKv51GdWI6~Mka(pQvUpgItPnILu?oVMEn>^}
zG93hsO!&S$TV17vEN&1HL5Rd4!m$?dwsn~fg2p6Xt%WQu6%j!b600H{XAz5vh@csX
z*Jxp~h@d%%)ew%ih&4q-(1OHkwUEU^86$$0BvwcGibZtCh@cgT*J&Y(?p#ICn#39i
zCs;&xIU;C7;`LgXEFx%2Voih-EuuSD5ws(*mKL%&PR59!J&CmuPO^xtMMThn#2d7b
z#aBf{(2>MC2w$~`ArTRDBJoBoWbthg5rj!hM>yFcRuU0GR}wR{kj1cw2)dD&iExTV
z{AF#XgP;eAH)$b@{X|62lf=3Rr&`3rA|mKb;>}vf;-exW=tE*Xgs)k|BO)T`OX4kB
z$YKu>5%edqKEi1h@q~y7vPisD3zJ0z*(5eV__{^>Rzw5?NW4u8Sq!``=O0Zlki>=v
zr(48@vaTW+MB?pQ$YP0?<ou%va!721@C}Q2a($+QAlHP8<oVIjLKasR$n}pVh>#dU
z7`2G;jhPODVJ2KC;vHJZVrzLv7eOA0jS<eUh_humA}BDSJH|V;kj1-)$@xbUj3luM
z!kHHF$f`^S!6*`&Y9Whn43zVaCKyd(GlXwi#Jggd4uUZx-lc^s4wB!}M=+Me<_Kq5
z#DgDaIta#_&^@xcTMJn%(Ou3znqUHnEfBtyLPRi$#Cx=m#k1Yy{G$mblh_jB>=Yt`
zsU+U3g)EkmF(Q~oVk?AmQiuqqlX#yNvKSB%L6pSS2<N5{5zHj<el29Nn1~2wk=O>|
z+ZJ)JtT_l~llXuZCW{E>lGqmEJd1c#L<I9ld{7IMMFjInY=`h2i?~BX1Pe%fNDEmk
zDRUJ;A&Kn~&bNr}_K08+i4SWbi|%qnu$aUS2;a4cJ4HmWgv3X*ki{Y*B3MddM}!M3
z;z<z^EF<wzEo8B{hzORG*a_i#7SSCef)ylo)<PCf$vy``jKna)LW_7nL<B2I?4pG%
zR+2FySVdx2gbOWV^W~Wig4HBGriCol?Ih<PO|X{4ZU`4y#7-h2SWjYiEo5=8{H+-T
z8%gYe@O_K;tcVCUllZt6vRJ-@oPRXI77}|RTx=0P6A{5S5_@SOiya@3^N%LjPGWC_
zA6Ud)A|lv9;uBiPVpkCn>>{xb!X*~*XAu$XCh<uvWU;-72=<WJ7vYB%aixd|_LA67
z3t4pMDuOtP{Shv;i2FoDu#d#2v@lsju%E;%gdbVN-6A45NaE94$fCO(5gZ~h8{smG
zxJ^U^he>=!3t4pMDuN><4nX*E3K79k5}(yV7Q2av;24Pm5iYlg?p#H1oW$p}ki|A4
zA~-?fAcUV-#9E(ZItWgh&^=Q&SPNO4DSL7Rr%22}xWXcyFV7taPLnu93t2q=sGNT^
z!5I>B5q@eBFaIdhL2%ZD?(eP))j}4>KP=ZjLb~9;=N}^oV-|7I;!G!Cf+FVDovY7l
zA&XBmk@JrxC`RHigr8Z&ts){QLE>;NWO1~J2uhNehj67uoGBuLQY7YUA&UhfA}CE_
z0m9EM;twJsC_~~1Eo8BkhzQD(I1=G1i?~ii1m#G4K?_;jc&A+dXoB)2jzai_MVu!h
zf(j(QsD;TQf{G-LM!4D{t``wOB@$oK!ekLaWfI3ATw@X4tph<75?|KBWD!A-#IXq1
zrVtTSC2^b<CW{EFkvJaVI*a(bj1fU~5?|3m7FWxfgP;b96A-Sqi2FoDP?N-oTFByB
z5fRiTaT3A}7IC+T2<njdsur@iMMMPYBu+-S(IPGr5kV%2Q?!u9?II$mOX5_7n=IlC
z5fRiQ@ii@EalMEL>XSGP;bx0CM??e-NPJxjSzIL|f`%kcNBE^hoFpQGMkKzWg)F*j
z4uTMgQG{D8;&c%aG$wI|7P1%<5kV6YXCmBc5qB?>^N%KIM&g@V$l{d7^7*SKXinlR
zgxf4)o7Hmu(F85bt^3~NTUyBC^pKo?G(k%eXCwT|BBp;S=O0bb%G|o|A<xl57IPZP
z`9~A9CUGvp?H2LK9y$MLf;Q&XeV_boEo8C8t@8P+CTL6IJcM6c#9u{3(2m4+v@lsj
z(4NHk2zOY-O(G)bK;pYvm@FdbNa6y7J1ycK5fOAE@jWd}77>I=EJV1=BD!Nl(3Ql6
zT9_;%=tklqgx^@i<02yHVM2FZeP0V%JRo}j1U*SyjBvL_9JgD}KboMoxpmjo544cQ
zZnAYC=tJTXgx^}kA-m-KqY3(&TX&2fY9WhF<#*;0^e1sC!aWwT&ki~NXo4(r>yGgw
zEo5<0J-PnT1lc4mL-?IV%oY*B01`jeLKa7fh+rUz%MtFih}}d)Fo?uYv@lsjkVE1M
zgx{wS5#*BisTQ&rkuf5OkQhT4w}|d?L@<oR&$N)mF(M+!BXK3dA1q?u?Q;In1O+61
zu7xZ<BO-#4B(6fZ&m#8zTFyV3U=)d8Xd#RFA|e<~;%bCHTEx9FR}qXMag7$T=x!Yd
z#*(-e;eLzwx$FTDj3;rO7P9z;hzKT-xE|pFi@4*POb5Xv6T17H4O+<J3OUX}Fqy=S
z2oGAsl`=*IQ%T&Ug)CMR5y3PPHzWMXA_hf7FrCCNwUEW%n#=h|6GTbeg7A<<d~;`}
zgJ33!TeXnIEqBQIM-$8<aT~&)En**8jtFLx_>~s2m?zJV2<DQw9pPb%_{%0a|7e1F
z=GJ}g_*x5Dta7_t|7e2wB<?`?i$z={zh!}70f{@ckj0NgL{LcLE`&!cVp(~&6Tu=9
zztKV#AH7-5Kbl}MiMtX0Y7s9J5y27?ztut(vqVI&l*By<{~vpI9%pm?|NnpN(_}Yf
zUk77pj4?CD;PqfI_N6h_kUd$)zKxkN)?_D1wj@ciWlNGINkWor*^-bnNl4Q7`Fi)f
z_qo5jJRe<tfByb>`=c{Cb9H+?U*~mR=XK8Wyw16$6#Le$CIGuETxD*@Z(NXz&s?7<
z0K2Jp9`GlnSiuwl_E7PH3v#iODFW=J;zhs=r6{Hdu#bwDT#$<$Oc7u|6)yw+tQ1?B
zBESJEe(Qo<>}`qw2dQ`k@U~J6HAR3!RQ%2bx!A=N0S;5~D&Q~wQUo|c#qVA4pGAOU
zRJ;aw=U<8d$EkST1^-zDI6=i5fWQ7r5#S^he{jKn76DFC@h0Hie<=c-q2iA&_|GE1
zIV#=)yr&eWn=J?6JQaU(K`thlEeGHt6*B<uE5)g%2ymH-Kf53oXPY9x6)N5a{7or-
zV2S`&srZWva&d(z0$iiw9l!@lG1(LWZcy=87v$nTQv|q4#k+vNE5#|M2ylyv_gs*R
zKbayx1{LoEK2(Z{rU-DGiodxa7jxg3C;)e;_yF(^rMSox0q#=qcNgShged~tr{Y7v
zM@n(IDFQs8;vX)^#e${?@Q{j+0RL2q{_P0xh>Cx@AQyv85g;Jv|II%JWdG~uOab;A
zByknK|1q#mH37(Mp??gJ$pyI>WQqV;shAlslT!TCj1eF^6|=Y?7xS7TKp+*f0%lf<
z%VMhuKoAwPxgZyFnj%0>DrN`Fq7+w~B0z2`=5RqS<~K!vyi^PX%&HXEn<7AdDn90d
zTnsTqfM6;H0cKN*{uluYQSosX<YFmP1Sm|!oPgPt;v1$2P?U<fT#$<`&0Y?mI2CgP
z=1__+nIb?*D&}!PF7`A<fYMaV3mB*rH<}_qSt{mpK`yp4MSu`0<_COCDXuX^fC^MB
z;DTIy$`k=YsTd3xq!iybMS#jwEa-w<j5kGqs#Gil__$KMXNmw}RD8k(xtQbHL;(n=
zVqw6XO7YEF)dV1dibY(Iiv>%i3qT|livs3Sij7SXAexHBT#$=LYNiW73>Aw5=2nX9
zqpJx(EEP+*AQyvQO&5SVR4fUYM=8!XMF5YArCgAUo+$#<qhe{myh`zHQv`^kVi_0Y
zVyGzsG^Ao#z<f&aGgAbJr(!u5{AUrM2^B*C^DD)&HLD3gGb)yMK`uU6nJxe=s8|88
zfKq(Z6aiXMv7!rd@sTM4w4q`sV6almVTu3=RIKEJTzqJX0Etwr3|LSpW-&#8_EfCm
zf?NzTTMj@+Dpmz7q!bI9B0y&<KIwv7EM$rRU8ooa_=HltYqnK@Zd9!1f?O<YiU8fI
z7!FuiDLyhqfSy#W?t)y*Y>EKAsTcuR<X?&aeW_T(1-Y2t6ao5CF%qz-Qp{y;M}YoR
zjB-IP`u7fifmDnJET$CwwF)qpiZxx3i~d>#NTOm4U~#1wY{m#MjEc2fkc)Xu5nu!r
zV*yJjMSqL{qo`Qh1-a;t5nv1z>j0KiivH~gFpi3KU670Z?Ff)eMGvr)QvAb=5g>(%
z;(}cCw^e{ND%JxmtrSDd7y;6$Sl<P?=#LR#G8N+h%P7V3W{dz+so1~;x#({>0Mn`1
z5U{LL{N5A+W>B$_3v$sPBfv~5#sij9ic#iR4q!GF8@nJE->8=^0CTC>1TaJ?K4Xdi
z^QqX>1-bZY-E;w1NX2G=<&|Oqb4(7fh>Fc!kc*!dPZxm2RBQoQK`DM?#t5*4iY;A`
zi=S6a7l5TyYz0_RDb_b*1XxbR)-K4!<3-X1U?mmX0EQ~XW@d~4tEl*t3vw|%K3xD-
zQ!xRsl2QyXMSwL_Z0mwtEZ!zv0M=455wNmS{KniL0oGBmoeOgD_?mP9SWm_FfK`;@
zAX5a`K*bI&$i>5^2(XEY9RaH<#f_#2u!V}9T#$>~O%Y%#6*~hysT4<=BEWVkKJ9{B
z++>OXJE_<OFia_?M49<V3wBYls|#}Ro+$$CreZh1YD#gODFW=F;xjJD#ji~fU@sNB
z1BNTb=S&e`9~FDJAQ#V?BEWts_5`f16epS@zyT`uazQSBXNmv^sn{DZLMi4pMSw$8
z?Bjx5^zR)2hpE^Xu!d6HYKj0ysQ9c4a`8)31UN>;et?lmv5mQR034^{b1ulmZ%q;4
z1Qq)OMk&QvrU-D7iUVAbiw{f@;1m@H0!AyvhUQof;0zT9xgZw{zmYBg=cqUsu%=Rs
zGDU#%R2<@hTnsWrfQwX20*v{WBEV%T4s}5;mNrFzD^wf?SW78ZFk=L`O2y$W$i@7o
z2yl&xBLHKS;*+KbaD$2?U66~xrU-D8ilYE)D@FfV0KhFOj&?yV`dbb_1{KEu)=`QT
zO%dQW700?D7n_+Pz#S@%1FWkQi<u(8T`G=uK`!<)MS%NMOa}CnVl7hyctFJoF380Z
zrU>wmiYb7i6i1mNz#}TAx*!*WUQ8E&fLxelG~fRSSWhW-Gev;R7W(s#6J3ytXJ@4g
zKvpWI1J+lHTTKxlI~6CnAQxjNrwc$J6(<A6DaECx2oOZYDK5yxzNQF}lZsOT8z{x6
z%wq>YZYoZ5K`wU5lP&;xsW=_5p;9bq#t4v~iqE?s7aLtQ^N$t;Q*j1hBc=Et#>_uj
zP>6~zxF8qT%rWzi78Iu9Ou%@h*vu3Gic)cw3v%)NLNotpL2)Y125hVp8=4|ONh;29
zK`#DaiU6glI2W*qQfzLD0A;B-&jq>Yy=dkiEeN6Fe88qkv7addRG{Jl7vy3sQv?X5
z;zGb?O0k700#v5ri!R8;_e~L?Dis$2Hdl(hO%WiBiZ8j~KZ^k2R9p<$LMc9NiU1K*
zeAxy6Sp<lr;u64?O3@!9Kr|I!alwBU0b;1Q6tI<2Y-@@Du~b~<g8wW6)S=>Xz}8C9
zU#kEf6<4?*7dM$L2cRAmR|2+CivIl(AdZT!x*!*qn<79%Dy{;2N+~9oB0xM9Uvoh&
zE;dDgCRAJvn4lDUm?A(kD!%T5Tue7bfEH9-1K3t6#+f2OD=NO>f?S+oiU4h>xE3%`
zDGo73fCMVO>4IDwXNmxcR9pwxPAPUWMS%8He9Hy7=&x0Pj#OL^*j_36YZag~72kG2
zE~c0wKo=@*0PLU?>zg7#H!5y)K`#1Z1n5r1O@JMhVrx?b=t;%RF33gyb_D26#VvrH
zl;UVp1n5h}cU+K*15FX29~HL(c2<g0Oc9_z6}Pz{7yU5;45Z?Az^9dBe^Ue)OvN28
z$i?`VCJI0j6?X!5QHq_+D@XvtsQ9i6a`DgHX8zHF5mej-*i|X|dvbtLRD90`x#*7(
zU<?&^19nr2gG~`&92MVpK`#2YBS110_W(Yl6#ZjzfD|fz;DTJtylA2Tq)~A%V0Wch
z(#)^`q*L)j7vy3gQv{ey#eIN1l;V6-1ei+2k6e(8bxaXpIu-W=_Ed_8O%Y%Q6+d=C
zF6J{ufSFW00N6_@?rLV{A1#<o#ZO$2i?_^{12C702LXF4#lv;Y{G$c)srac2axu;n
z0Txp65MUprShSv*f3#qcy?oWY^6;4paxu^p0Txs7FkoM$IM?iR0G3$jzt-`&3v%&_
zc{T^Il!`|HpH+&5JTw1j!E!1dbwMs(Gh+l;NyTG;{gh(3c|SS8Dk^^Af?UjEwpD=D
zR6Gv&oKlQ1MSwL_{L%%v_=G6}tfk@!!2U{chS|#jtfS&rF380YQv_H~#gl*ol;YX?
zX8zHF4ffLCR=;*ZE*@VnQ2;hk@f6@drP!pYnSZoki@jWFil<$Wi{0l>6o9Q%JOemL
zDF(JR^N$v6r{Y-`<YLC$i2|^bist|aE5&@>%>1JTyX@r(GsbURkc%hGD@Xvlsdyf6
zh*Ioa%zXc&1$*q}Qd7L(f?V7-*_{7q!Cop}1WZzjlZ%+oU$tN#6)(9U7uWSN=RaDo
zpNf|OhbqO4<~0Q1fQ7G^F@EcUTs-iUIsegugH*f%I7}&CK3YQn4q520)$d%8i#4m5
z^B*lZOvS5!!<Az3Uup=z5et`_;`c7d#p~@R3cxWcUIQGV6qDYsApplM^w;Wj7vy5g
zY!e0G1Ql-pj#P>@SJx1LlNP>gia)p@7r(reCIF|XcoT4xQXK5n5P&ll&Nsy$U66~n
zN~a0HIV#=)9IX^L1w;zKc?;*7;!iHf#TgaT1mGeSGXTdZ#i>;y1>iCje|AAGZU{{i
zfGbqI4LDXQj$9cj09UE_iwknGW0f=kxJJc0fa8?nj(L#+aKplRX086}f?SNOoF)J_
zsdyJ~yizPaJ5m5{S?F&$_gs*RRlGC-$e`kVz+|O3$P@u?Q}H(!<YLd-X##MEiVpxM
zD8<)iMhd`PD*o<*TwEQOCII)T_z*BfDIS;=DF6>F^l!&MT#$>4tECCRLn=N3OjU~K
zUWgQcM;0zH#Xnt;i``nK2|z&Z|C@gd$YIZaOjC-T%oqVOTj*~&nOu;IE#lJzAS)F!
z15Q+m3+F@%Kz0lLF=lZ=E~Yk36M#S}W(7=FiUA8F1t5sVn9T*bxFRx50CG|>JK&^$
zDFWoCVh$JlXAvMT6$1e$|4R`dKNTNy!G9J3f~gn;IOSi80EMXdxC{QX2vC@cIRU5s
zOA(+b6?3`ZKZ^jxshAsZno^u%wj6+xRLtXoT<mKekpW6mF)!eBrMP&0qyUt)(BJ3e
zb3raP9+oBmAymu{_`Fg)XdbNqDp0Y23v%)Ni)jK7O2uHn8A>tSJazz7reZ-C<l=-d
zGyiBoRVo$&d_gJZPmUCTFbn;C&J!-k#gOx90uWBc!hkcC;?zNr0uW*0LQ^c_f?V8i
zIZXf}saO<nmQvi`HBtbgEqu`wi@6{d=bcCsfEX$k2b`@Gd$x@ffLIF`nPLeS<l@Bd
z(gdIm6-xrnQHpa-5x}EjDHr78B2xsYN5#^BbCqJ=#7F^%qhc8s<l=Hu1ZYUbvVilH
z;vq9efOsmFb3raHHbsCYR15)}uM|BqMu28iEboF`++vCVEvQ%laDh_XY>EJ_s94bj
zxwzUC0oqV86mX$Z{LmBu5~x_o1^-zDNTgzAz!#NbiYWrLr(zWs<l-(fMu3h~tO~eD
zDIPRi4nSurKIwv7TxW^^U8ooa_>xlm@cT#s=w_k6&#C5uTr6-kO#r%6F&uEQQk+^b
zN&tFNvAPR#v63kQ^rm72;LA!eU}ls6^tI66lh<%TE_O0SfPPer1YDvNEA5FAfc{jB
zazQQ*HAR4dRE!3EMJcv5MS#Intm%SW9BGOGNmPshT&ff&nj*k3D%NsAE~c6yzz8bF
z0xnaE{Y?>I6cuZ`AQuOjBET3b)&X3u6cbDlU>p_ey5K*H0LfJJ09Po*W8XvxKnfMb
z1-Te=BTWF(s8|nhrBcj(I7$H0saW3yxmeSzRe;G<j01dCDbD>oN&u!(v4IP6@hP*H
z1DH<5hJdS-V(@EG0x*M$ja-n656-3uz)UK}1HPsd3z{OpY$`T(K`uTrMS!_fYy!Ai
zDV8urfcaEx>VjPS#T5SrRBQ(Lx>BraiVH1RM8)PV$i?4H5nwSDTL7+6ie*g^U<nml
zx*!)Hnj*kbDz*ZALn)@d8YKYBso2^Dxj552?*Ldy#WsLzmEz@<Q39~aLjRf0Q!dEG
z1*QnFnu-a4Zz{#q6;T4PhKg-nkc+o2qzS-UDkcK1Q;IuH5nvq^+qobYJDVcFdMdUD
zd`l_rFhzh3RP5k_TpVhO0Gp`T5pcaye8&_4wotK?3vzLiDFSSzVrRg&mEvcn2(X=s
zPrD!&Q%n(HCl$K@ZcvIFOc7ug6}!417l)f7z-}sb1Kg+-Z>@<EfIU=v#s#?;@^zX3
z?4@FNz)ecA`{pPC*k_^tdQJ})<l@7((ga{X6?+11R*JKBL<ztF3;j8rUM|SRlm%%5
zaFB|<0k<f{Rv$(Qz#$7~nPMLo<YJ-3GyynF#lC>=D8<F52yldo&$=KN<IU^j0LQ4<
z4{)nej59@m<5Yak1-W>nb(#R2pkjZ(ZAvlC6ah|BaexbQ@oiHCI7P*QfZLT~RZ|2w
zL&ZTZ$i+4t%>1JT=cqUsaEDS%cq2*x&Rh6`*>Z-sAQxX5Y33g-xJbn$z@17l<K-v;
zxNPAJQyl7oTs)O#<{vG%Ld9W#?<&O^6Qcy+s)f&+;&2z_;@$aX{?USKR2%`gODWc!
z6(s;SENpCwBVCY-Q<s_fM+<IJaTMTtO0o5nC;_-d#nCRv#SfFs{G$aKR2&1iTPbc!
zjS_&{R2=JqT%2mwD!?5ojstvODb^enB>;CVY+}~xco*bi<YF`bXu*9dCIjwKiZR2Y
z1mJ;%{+2Vr1-aP$eKY@P!9yyh0Dhnpe;67i0FS7c>VjMxZHfQ^dH!$yF%59<zZ3y7
zTj-B*q6_}B2#}SE>3|<9#UQg*0kTtZk_&Qiq!}YXAQdMA?o*1PrU(#3#VIbx#et>>
zkdum20Y6fTrw2y~KyC~D{pvIq<YI%9X#$X!iqir2E5&0&q68p66`yxOE*|?bO#p(a
zI0Nuwr8v<P0SZy^1sCMvtL9h^pfD9@0v=F`B}PUGKv4_*$BtPp$i<%yrU^iCD$WM{
zL@91IV+1H^;Y?GU<APkAWS+4Cl&0cbz=KNh;eaRsC~KjAEH}>ux!B~inSZn(go^V4
zKUIqL`bG&r1u8CZK`wSOw<AC(6&C^?Qi>&eMF~J<D!%A~TulBbO#rG=aS`BWN-=S0
zv;c%z*wC!imt2sGZ$2>dj~0YeaWUXwrFb-Qq5wo#m~4tKyC4@&3^4PL7DQ5U3E<~S
zvGlHq0uXKCP*Z%x1-ZD?yt4}+hKfr8k0`}XBhv*S*23DRxXcB)IIc^I0Mw!4a=@cX
z@z%T;0q`t*^N&<n;euR@C^Sw0>QQke;4!6`(|oW1K%9l^AEwHyF38288lwcDAr)5v
zexVe1cb+N$@fK!#lq#>eAQ#J>9xnh*sJI&NxKix=!rLA|GlH+XAQzK!^bmj+1lIt5
zsT6;!UR(fL5q!f1xtKe$w*a&uxEAn)QY`gFF#$**_@)bTF>Js90Z1gc4)80b_)(EE
z0??k|TQ11OcP0)JfQ|&$1D;fhncgcc0G$cG?SfqF`_T{q=t6J<;MYp=P_9w}(2d|m
z7v$pkTuB1Zo!}<GQ%bRF%L)R}li+3-<YLO4BmwA6a0}pRr8s76r~vdO_>K#5arf>d
z0q93?E8rQWSUb3~0Q4ug%>}u5CU}GZ3?#T6@T^iyI2|egg9+|%K`yqxIa~me2<`+t
zrxb609x4FC2)^rrTwLE^v;d4CxC`(br5Inlk^qb%_?`=L@zJ#L0x*W)Zou<O@p#n=
z0x*u?`!4uj#gEejAerDEzza%o#u9V>qXj7hKX5@VURpm%0MZEV1-z&fU;n(i0HhQA
z&;_|za?vyam`rdV;3cIvbWXGYOeOe{3vw|$^GpGlPH;cqWu^E;Y;6IULGWW2{IBB2
zF#<4?-~qsIm10Q#1_Cgf;3qD~#VRj#7l64IJ~D@72LZ1r#V^)27J&Iw{L}@xcy~~C
z0a$3^LsL8i_?=QrYF<eI7E$pt7v$o_cV6)T785)ScvUI(56dF}O9+1Mf?N!*URwZ`
zTKJ6_;}O8`mExj1K?1Oxibq|Li{pya6@Zl%eq@Tr0Iw;<)xYHzfK^od!UeflxqFHL
zthO-dmsB|pcwH;*2^4@eRQ%EfxftE4o&c=1u=&MQIRSV>DfYZPzynxE#jjkDi(_7H
zECA~*oH##KP6Ga*6sImNCIB0#__YgiamhQ+3&17|AJt5eQ-C+M;-zQ-*h0nAF381Z
zd(G#sTCmk#wu()aGk`xT#ktGo2*7p=58qFfvo6TRtYan#z)lO--Aa*jfVY%lnLp+T
zz%C0Hnc_Dt$i*6&%=wQN?6#K+9!`++fIlh4L!ZqNfISw5n&Jf)<l?<7bp&9qg(u!f
zm5YEGN-_I|IRdcH!k+h1<&q0>vG9H~|7gK}d%5f8Sh)=Nvr=5ybcp~Qu<)>X#`>)b
za<P;--wNQMg-;(DD^~z-E5*VoV+G)lh5kdpcP_}q4(3hT0EaD{WcEW>0e?}7Q|F}%
zz!3|7HO22;kc%HDMF_w#3uo=0AlCrzD8==a=L*1a3mcfVdff%NxOT&458#A_-OXO^
z2H>ws@yz-80&vp88s@c*A6$@&F<Ccx0H-XRX*TkkfOnPR@(YUu;0(rSUU~S@1-ZC!
z<wg(SoP|H$PL*4L_mtxN(@O;4yoGB_@h2DL;;i1AJ%EcAUcQzp8G!edV#oT?@;9(B
zARtYCc0n%oTfD`)Y{3<KS?*Y>+y?wjDK`JPrT|=};xB*?6j(dzB>}i*Vc*|U<qqKQ
z3hbJ`Kmcx7_|+YA{-X=>7}H*A;{n{XFzH6B+y#876!%5U6M$P59x}yyF382Xt)c`V
z!@^E=$IE@dKa^s`<}d-cZQ&8K2l&kexp?mBXaTrmVXGO*@&NFWQY<vIoB-Ul(BE=?
zcR?-|$`>dA_buEXIzS!*{;3o<N0$+R2UPsS1-W?bwVfWoLklN+UF8vAKvql<{&k6O
zW1Q2hqyRjk;-7$-6j-ZZCHWiV#Xp`V0fB%0oQWYX>MLDpNq_~J?d7G-$&v{$vr-Hl
zUr_+EQZcg&a&f|ingWpB!r#MFBnw~`r5G?LL;wP*nAHWj82u<(0D>%hzhSCm1I(%v
zD-<j*06D3c-37ULd__$G$ZcWHi6bQkU^b;VCR4Bg<fUSu3vx00!ioZr-@-zlj+e&(
zvn$0*MJftFFcpJbkc*j%R~3Ll7AE#ik;egZD8+$w$_hYXD&}-SE`~ncQ~-)vxMlnV
z$psjw6a!m_3qWxy=5|3YCTBDgfRYwYtDYix03TC|*`vw`Kxr!GbwMsx3~eL;Wi9-)
z_XNoY7^D<~_CF^8Ar{^+JLLQ>$i*ey>k2>x3-4wbCj|f>SBi;QD+)lUh5l<D!7j+f
z)k|v$KxGSG-Z)AM0_IeTD{qz;fT|Yy4*`W-kc;<bgb6^Hh3(!QCQkt7Qi>ObR}g@3
zDi(G@F8&gF%>#(Au<9<6B7nJ-Vu_>O1t8MGU(8x9>VjOHzW7HEAlkxjU#K9(0P`rt
z5BB#EfEWw?+p#!cUIp%YSXlsKE%a}W5-!M#dVRv%9zY!n+l`qZB?0p(#fA|z1i+(W
zDZu;+40<<K0O}De?Sj0hwU2}dK%9loW!~<U0W6>t?|v6001c^F7BE<WGb*<dfOvxC
zT#y%ac&<JkKobkUemGV_01GO`fMd-Cpcxg*0~S)?iRps{poN8Z&6ZOE@CgMz5nf3E
zT2ZkgU||Kmdc3Uwv>_Pkg1mArU3k$0NU*TS56Myqu!vI3f3&LrBvP?5U{M9G@j44Y
zdxBK}iz%>H-(~{PkziF9<S`cMveyIXY+-|ZUFAu@;!5$guOkJZ3l+m$kc;Dbb`yYZ
z7G4TT^Qr-sP>L}vV+Ei)6~kSSi>>$d7J!}>R(P|TR0k}n6mKr8F95x%7~z6k%(tSm
z0Q9vmYmYCz8i1vg;)PCO0??0&kuJ!^HoGDPpudG3_MY>i081;y)lEYLV4#IRn)_q4
z3vzL0yXzjnU<?0PkT<p_U>T)2;z(5iNTM;u0G3tYM_-uFU$tNu!CHXj6nOE~2mu&D
zFxCZmjEfeV`9}*z*~`M~Dtom7LzLnl3(E+=7%J9rK`wU4Qb_>DS-4~IF0U?Nd8N2B
zwS)j9Q_*ulE?%s8%L7QU@bk%~Jprts6gRvVApmJqtOr<8f&Cs%7l3pNe>a<4eHY|K
zUAit>047`bS$bA44lq<Hmi=R@08F(o!xS61AQx*)nC}5hw{Umw4$=^?l2V*zwj6*N
z7W&6IjQ}evu)<pn1z;w@co*bF9sgYm0hn#!`_pnsW56m(adA*B0hmk0CN9Xuj*GJj
zz<dkWcKfhSQ^2Z9@ta>G1YjW*o4Ftt6Cat+U$tP7y^Q#5O`Ya|Pb$Unhr$G4F%?_5
zAQwlR9xVV%EPVOF#@LpCVM_6S#|QyfO2t-y)f5>0eoX;bPOvp#xB_1rT1)^|TDZ?_
z<ZWD##~79^K>$`+SS0sbb)EvOt`skvEGhu2E&Rh26I_ss^9uGBfHfB0>D$t43mBmk
zo9(V40BbGu?^cO`H5AytV-*2dN3b1WqynS+77>8;1lzkHkFkZBhy~bSVYRFay$*m;
zO0n3<Fag*^#f~n>#i{us1YnDWy?!hvodBbi;))r$1Yj!_JG&qk!}1pwfbAB3Ti5fR
z2CS(R&(ta+06VGJ#Ra(-^lD=P*kxgnC$4y10b`WnrfHc4V7G<-gHAUW<YK|uqdb5;
z7Iye@P3$v(wUpxVq(>gWUK(R}7v$pL+FyGB`z$=#dYjh+Fjgr}D&ATE_FK5ZOwIHJ
ztgXNyF~I_GfEKkEU>yaXC|Xkh4ifC`f;`63xi@+Mhb$a5Fi!da)>VorcX|lGVGBPo
zW9$p)DR6R$XaP7vi~6h!@}ef6N)&)&7M^~;s`LXCrC8y>00B5|;Vd)%_?!!JvCI8!
z9>56;+xCl){($wAVy*Z|0&vp8KYvP<0f6-t*!72C0XSu$zh52bg1o4Q_U-ck&RBT;
z`?KC4z&NECzoMi7oTK7k7vy5{Q};Z8^A`5`Ew2m#Y@ifdrUnVXMJgt_AQwkvI_Lph
zwy@;X?lKgxp;AmPlvMz(P;nSwBL$XtKS%(sTKK^1tcJTFFY4A6odn>Tg|Eltlo5dO
zN^$1i=^nrhTGWw%jTQKHwITv=li(=8CJKBixtsvpA~+hbsR9?BiWGnhf@55eSI*^0
zdp&^L78ZT_D{m}dGo=`wtGEE%q2f3f<l>4l0RnK>!r31Tm+^qjm14KwTL{2?Dki%i
z7dLhK&I5R0;f}JSWddLerMUXZ(gN_1iYYG0#elF&9>60DdzAdzO9gDH6mKLq6@Y+z
zf6Y1iuOX+oAQuO8_`n0mY~j8Y-Mxu`t(0QPyRib0)k1$Smk!ukf%{sA2|#v&lU$G&
zHBXnXJ%B(9S5B%ZlL6Z(#Q}NB2tW`Or??;&Ke=9A0CHORQ=u#}74RvgI5aIx0CH1t
znhSFA*Y-y}fV>uFbRQ|x0TYzs<Tok_Kz=Gd?}A($UvrBG5Nu)M%7HQiu&q)YF{_~f
z6r$n_F3833dmB7}!WLfcG_&?hz(l2({cs5ZC`!dyF38281!p~g;ug;A>B(%sc1p2M
z+tLD1l8SR&kc;JSAM^l9TiEc#Hg7Iqd!?BATm=CrOT~FE$i<eYFM0qW78VNYEAs(6
zD8;35p#o5WiVIwji`{yC?*W8bcyH*_vJkMNQam%diU3rm;)^cG#V_l(@&Kw@*y=*R
zT8jWXDaF0(U-tmQsQ40KX9c#cT~z?W2`+X)UevPd4tW3(79I#MEiVH;trTyJswx1H
zR9xbMT#P<@$peVCut?x^?-jr<O7X|nO9(&=6_)~bRp58+s|Y|W!DWEm6qxi`hyc_f
zxE$~q1-2@cPXIiED*(GIaQez(0#J|OO28fp>_4-V0K^e|)dl(H=vQ;O2hh;Mv6GT(
zuLA6;6z{)WLIC2a_?ioHacAj`9zYWdZ@l$J%xb`1O0nS0S3Q7cRD2z<w*m*|uOa{~
z2(EEKUev53x(h%n3zI)t6!QjPAEg+yqN)J2q2gK><l^DU*FAs)3zs(TC2s=uRf<n^
z3KxJxDz0-uE?#W)i3iZ$!mw&R<SoEwm16jUiUQD)itAmFi{r0<<N<WHaL9=K@-|>U
zrTEdx5(3bLiW^*zi_hlx)&uBfVR)8jWFz2nN^#26(gM((ikn=Ji@m#i>H+k$@ZAr~
z%Vxm-O0iEuSpn!x#Vsz##V_XU_W=4@`1ACiy>|cyD8=L<H3Xm^6}P$|7oR(G-UH}w
zVgLU9WgFl?rFb_uS^x%8ak~q0@$)yn@&E=~xckSaWe4COrI;wu0+2+-oi515jo+U3
z0ESsO>*Z(UUBJOgF=LP?03)cl%LTa@y|TLpFv`N*c~j**z#&TU%PEZoU<?&^112eO
ze#55)U>w2s0f#Cu<3vXRNG7-kaF_xEuJjUs6bt_}PXj-2L0&m!x91apGz%BCeZKBq
zz~M@9X0Pr7kWP#Gp$l>`;#iabOt$d&vEtr7z!6F@TaP#am`cTu07oh?xKbklm`-p%
z;3x&|TNN(=GYEd{f;`4;y*vS!Y2o_&<?0*&9IX_eZ`oJ?W>fJK7vy5E8Lb3hu7#UM
zwyt{+aEwyS^3f>|U_KQ;bwMsZdV8G!EVOXk)SR)00LLoD%3GTVz#=Ms=7L;oc)6ee
zEVgjK!2~%BI8G@J+1N|~mQe9?7vy3@y$K$`QVW~ZuO&wS$1BC@kF^wl<y1WCf?RBN
zeU=BX(!#hO%=wRi$x1PMmo@^hii%&jAQ#`BGC}}WTexUMOF0fWK`B<uoge^fsQ4vd
ziUMawv=xB01W&jiFY2i09}|Fe7B)M2*82)DRVj{Y*;WA7Q}Lt=a`E_|i#&i07S8MN
zjC>84rW8{H5(Hoq6;HV!7hjxv-2>QSVZZl=$!WleO0nmKwgRw~ie~`R6?pPOq5y0s
zc-94ZQQuwMTmW`jnB|wDat?5kQd|<1C;+>t_>Bv4aeVk29>8u3tD1+o^MI3;V!g0L
z0oX&u3ogjT88K@;fV~!0HpPp8Q<P$(N^J#T9~CdTAQvU?G7n(Cg{kJ0qRW6&mEx<@
zo)UlqRQ%QjxmaTSMi1big_rlI$`!zAN^xfCHUe;nir={)7xx^kBmjpkEN4!pyb3s7
zD}LEh0FF@cdl%&5Q#VQpz%dI?ncMLi;PXmx`<dnfaGZ+QU66|tLxKh1goXaep*H|$
zD8-VEnhC&3D*oVtT#U*RBmk!f-UNI>DF*FmA^>Ly{^){Soc`8B58#}I{_Mjoz?n)h
zY<*(^I8Vi&T#$>6qi=Zt7YSwn&QglqW;Pap%LIRRK`ySDu|WW?Soln<+um)!*-EkW
zpvD4lm5RT(AQyK;bQgeY7CyY(Rqg=JQHoW^G!}pxRQ%NixftAGk^tPaFn6Dvau;x}
zQq14Ju>jnn;yoASV*QL!0+3;0i<!T8_W|cA#it*{3&3qE{^o*QT>5w)0k~sfp9|IG
z0pNV4`0cfL0k})W-(8T4NBZ^`fcqA{{X!0T2)IBgR=yc801v46hYNCX;*@6v;Gu<6
z9}AL4fD4u4@gL#^;1L!7bU`lW>DX8P2KoP*e?0VIpaeW-&wqSTDJE}gBmov=wwL}i
zVkQ^lVy92O@c^<~xW?>rG6ODBiuErw6oBkh%;JJvEce3;9zdXl_e?P>;7dv|K3hWp
z2%=&(7v$oabsu^FIjNW(aIsQ+(4>I?<fdW{7vy4cn=d_pycWJ?PPz{Sd|4^JkRwh2
z@>B6K7v$ommzH?|!32W<mng-ZpVSk8LIfXoK`!2jf6D_XOfV<lD@rkMx%vW7lwd9w
z<l^R>D?EVW1aku}Rf>Jh3kU!u3FdJ@E{-evng>vtU|zswN^w>G!U9m%!VP94&*y?%
zJU;3b4<Lk!`2m+J#gu!&0#L!i38q-U1-aP!#g{yQPz(JRyMh5%D8+;`B?O={Eowm*
z<YM~gV?2PW1PcMKREoVi=MsQ0f={?07mF_2>;Z&Z=pR`X27Fa1u5OuA03xVZ#09x{
z{_))&KqM850<Kbud&d+JfM^Q~m_;q-f?WJ8e7FF_SePjNq&VPfO7V2@TmleFV=Uo<
zTx=KEL;&ho_{WmEQW9{rQrtHrNB}%4mU2NZE;Oh30o1ebo5(g&8t`?cSh{3R0f?hw
z85iW@(JSo*prM6(e&{M?0oN$S;90o@AfAflT#$=h|9naSnpk)@uAhVezM&MmeVtPP
zno+U53v#jU-KPbhg@tSGKPMFc*DA%m^>PY8D+~R*RYe!%;<WNT1)z<EkIfn=p@45H
z#f?>S2ta~`{?4kB3vw~vgpLA`XyMP7`buTMbxJW)Xbu5rPsJ)O$i=bcS_?o&3p1~I
zPO1XFr4;vMeo_EBQ}Ia`<l?RhO$DHfg~Lvdl`z2dN^y6kZ~^FMp?^D8b3ra1+1o+@
zx?6Z|R*HlJzO58<<tQ%zJuUQ)SF5`q7atbbDFD4KZ2fbJL;!A3igWXt&tJ8mFBNOJ
zAQyMcYbOBxEd1>IREY%Ks1&1<Vg;Z-6{B2`i`|Yd6M%sh_B(9Oe+1m56py{!OaKN`
zv8D@hv2)J-0+3{3aJ^9y1Grf!{y8L*01TsIEf?hC<xBeoV1$KRw)K%%z%5Gg<g|7I
zFv`MN=FRrCU670SGm->gjD>wSq)HvYca&nWWqAZ(9F4KA3vzMOgdqZuY+<_jz!nd1
zt5S?SQ&a#_EIeTDkK%${y!z*00Z7B5W=@rQfZLSf{ke$(kPc|>kM&)Ui@X0!5`f7T
zwwjhIae&*EVvkb81z@U$UzjmAa6v9kI+Y{<(=EI)D^(f-?of*Je==_XwP1$5+;57F
zT#$?B(uWJcObc`7N|AWLol0@^{xAWUZK3~Y)z}5OIJfb90hnvy<Xx%K1n^y@SkIiT
z4=~@t?WWk&1-ZC(;WhzSXyN<<$<hpPmr`u~e0Kp@WTC%So4X(vKQH@^04%ofXrEMR
z0r;L$TsApa0G3$jKX$ZqK`z$nuuTA#T6k_minIdUtrVlPJT3ssso2^DxtKj*u>h<j
z*aq-@rC4Efya24S@RnJtPq`o$`^{e@0IR8(0Jujfep<Y)0IadlKk2@$3v#hgpUwiX
zmWqjhA1K9=J?jd<IvQg;7v$o`W9vMC^%nZ4qO=Fxs}!ePY$O01Ed0U14lc;W&iQtG
z0Gp`T5%5E$xU*Ix0oX!g?Bs%6Osh3O0Jc)GGvGd@`1p(l0<hge|Ge_2U66|*r-ll^
zP7D1RmM(xFDaFRq>kGgx3-1`%)djh@JLw${V7G<-9l0Ceex*47a2)~IW8r;Me8vU2
zcsQ_)0PMBUUpd_YKURt%Z`K!peHNZHu!jqBu~4B=0<fRP*c0%8QoQ(jtN<La@PsM$
zazQTUm^VlO4pOl<;3rD4XVpjnI7DOY<APj_U)Wy&4pXr&;6bGrnY)$%9I^1U8RN4q
z$VIQfAOSc=#eRUFD#bIQwFKa}g=bCiITz&ObA^%w-~<)>10GU}bIU{vz)1_wnc@H!
z<l-lLh6unZDh>qvOetoq6fFQ}Ec8ESe2@!rF}&a~0XRp+!GMRA;?KKk2*7zN4sk&)
z&Tlwe04`E73Gj2J7~QFc09>}vpF|kyf?V8_b(8>Hq2e&WBTDhTi{S!r)k1%tGu#Ea
zcp`PA09>Qu2*9ICv1NnrJ%AeoN4g*v6Aw)hfSUwI0UlF|E$U<wfLj*&AJ;J21-V%F
zn->HigNkDSzfg*K>t6BzZWA2qf?Q0vyjTG45F7`1Tq!PkW`hTCm*998<l^M0#R71j
zU^3vBN-;e2s0Z+X-~<=sV(_(>1>hmU6u=WoF>8<c9>61lsV>OHS6+Nc{ssm9nsf9Y
zk<$RbQi`2UpYZ}L$V_me3v%(($2$o?R)Xn(CzayCS-U-e>=sTj+v+42<l-x5`U^lH
z6(<9JtrUYpFL?k#7WxMdQ(TaXRUQr!fSgpE3V2E>7Jo6X0OYnX(iEq;AQz*bT_6B?
zsW=_*v{G#Pu&e;&xA1dQeBK4Q_<PeA1t6G;GXT#h#ga>N3qT<Y-#5h<T#$>uwp%O!
zg{e3b@T^h{DqB$iidtCA6lb|07l$@jDgec)I2-VsQmh<RSpZ5}xXXNc{~Q<O;?5(3
z1fVn(=K_AC6i3#{BLHPBto6J3{zn(&;;PtJ1t5fq^8wE*#VKFz@&GDWxXes>FK|IF
zel@U{0EAL;A>ak2IPH3Q0jO-@ALe#^(FM8KsC91vs7l2}fEShG)H>TefG~nDxgZw@
z3>hK-;RF{0UQ&u3Qa<wlB4~^+yC4@MpBya!kyKm)cv&fC-mt&}h$i@o3vw~Xi(>^K
zhTu}bZ<S(;pz9t$EWu?i$i)T^1`9wPg3AG~D8&nXy9<D4;YPFNtZ+dtHZIUx0P0b3
zCE#~Tv1ie~0uX26K~sFy1-bZZu6_d0kcz7SuPViJbu&DGc!ICFAQvlientSA5L^xT
zy;8h3@rDP`jNt1o$i=vBy#$~I!8L%_lw!skZ+QT%2)^NhT#U`$K>*qiTnl(zDbCqj
zK>!jg^p64FbU`jw$mk{jiBwz%cta^Zxjj|@+7o=s1-Y13qpJXPB)A^%2c_6^t0w@R
zE%cwUzU_isoU|xa0J>0d1K>@ixOu}J51<>tjV{Q=?YHL$KzD+h0Dn}9S2F+Z0rVue
z*#)`yb<Ifv(3{{Ez*|bOYTrj5KwpCIxF8pA_FgUk{RnOa{7ETh9+m6?^e4E@1-W=~
z(rW@Rkl=Q}45fHt)l3gyFu@%z_+P~zmk2--!JU9VE5$31J@NpCS?JGPzw3frob>QT
z0T@BWU4XZhVsN8;0x-(LiKh6T3vzMo#AyOB#zOxki`{^~D8+Lx6%&AQ76zKn?0Vk?
zxtMi#Spi74(4T(V19(R%Zb<JS04WycH^mQJkc&Mlz9;}`7W&U0_X7T^6q7zk5P)<G
zqs-Cchc3v)>7(NWU@{f=0p3-LbxvjxfT<R?G4seDxgZxGFMi(xm`=t0fcKQ*fd(f$
zfEgD0Gb|swAQuysuNHurR6GE9Un#zEJevT_ws5pL`Q;NA<YHQuNdhpJiU$FIQ;O%t
z<r0AT7Tz&m8uh6Qaxt;(Gyzyh#Y2D(lw$jz@(I8q3vZfdI-j{97rO+{5rD;1JPi1|
zQY`eFnSZokiM^ciYpQ(if?UivJWl|YQt=4jL#5a>Ain@Cx6nW8IO>92Ogt7X04u3@
z4Db)7I51ld0a#^WRkK#Va6vBix>;2KR#Wjf;3K72c0x7*SYzP^Q~c5ex!5l?Q~=ge
z@dV(XO7Xee*#%&og%M`0e&vE(9Mw2f0M=9SBw#=`yma>0CB7HwyN`+rzy=Fzm@VgP
z7v$optGNYW6BSPZW>Sh%YX=Iz77H_(z1(RR<YI8YFag*~#WR4Jm7=#QPyn`DINYq&
zvo6TRKPyZZfSpu42be`Eo*11&0Crh8+Z4ZXK`x$L8YTd{sdyeRt5O_xG_L^cvC#kE
z)(bAk#k8ne0<f2g7Xh;=#p5635`cXc{$z@mT#$>+nl%uB{ZzaRm|ZER1!oq30~V&6
zV}Ng6kc+WhJOMaJ#Vde0lwz4`Sq0z_!S7s<i%*)*>i{@R@G4-SQtUS;p8y;o_`M5q
z@t1uA1mGCKYk-d_#hIVv5`g0bue%@@p9<_R04E6E01Q%!h4SVRfRh&b2Z2AhAQzW^
z^ppUcqT)@!$CYBY$UFjYhKfJBAQw+O)?Wb5QSlaFPNldZSF`|}xA3MJ<4-Qg#oiY?
z3BW}vW&q|=ik-f??Eze-;?FL~#j@j?3&0gB-UiIA6qlCHE&x|8^q=Yc;(}bvd$5@R
zT%+P0z&uJZDXD+}+_2Dpo6WB-$i*5X+6%x<D&7Ums}wg@4ikV|7EU*hR`*<xi;a%u
z6@UyX-UrO56nAW|DFC-E^pDAZb3rcVpRm#cxI@JUfccf;%_HXgM+@%S%j2f_y9;u0
zb^LoCz<mpk8Tb&efKnXRDM0`pSooWPf4CqQV<X=103KTCPkBEA3|5NAQgaHxBMbef
zfq%Ln7hk`*-1{2@|8?->zXvHG=&zqM6;z4`ay>2q7G$=Uele2^a&de>HUY?Lq5n{x
z8L*I2Oz7NR0J2+n(ZDP&$i-WAzwrP9E%d(`Ei2#?N^#e+mI4rD;fDrhb3rcVu6oG>
z$Z4VfoqE{;3oFH`i6sOew}pEQ%;ADu>^XX>0OYlBVRLi-BVZAwxa?p_0myIRT2p+?
z1-Y0vafSc{TUdBusssTRRf<gxv=x9t7JhGvkGmijFPU#h2PkY|%YGvzCtxw9SZMbX
z0#MXKe_PGvf?TXKZ=L`Yw{U;Y@sb;`xKhj&(p3OTTIfG^<Z(eRKK$qn51_P#A!di1
z7qEm<+`hS^0F<@Rf9%NTf?RA@aEk{JVqqWiG%!D4Nu~Jv)s6yC!9xFTRlo(gSiIvV
z4<OXSspk8Ug8@q^#q8aS2tZ{E{hd`o7v$o~1KT`+sutciFUu4HEUgr;TyH7>VHW!D
z3Vy-`xtM+P4i6yQ!eO_}`Hz5Ql;YkOPkI0m7H&1gA}+|q0?C;LAkxBv=41bh0+v;Z
zYpzrmfM^T-2c2Rr$i=?%U-JNBEcEYI#R1DH#UIav2|%oc{tL4uT#$=%uBLbZb*NYp
zFhnW#N~j<Jo`u^?v6KsPv2@(09zZ<{SC2@Q(tzca;tvz^2tXVyY8e;gV%&{P0?^RH
zE`?I1EMNtt*nMFR0f?t!ITz&Oq&-;#poxVc851M~u%c3IkfWpkG_%lu-(z_f<l@qi
zSp=Ykg|{asO9jACrRdcS7JybX#)>Y;#oO~H3P2kRuViT{p@5Z?;uk@s1t7sfe-BW}
z1-TfKr-T3`S~&EpRH+PDSt%|!Y`*`|g7)@umMK<oK`ySm^uPn?Xrcd>>8gNLl;W=P
zxdouJg`Et1(gnGgrAspb=wjh#<I77JU{$5~+Qk?F=w_k6>!{{}TzqEvdmcb{g5iKq
zD#hNnYYIS5g4JD+i$QBwcmTZ#MgWE>#gyS?1)#5m{_6lWT#$>$Vh(!%{Vbe#$(;WP
zSWPK*TQx!e`qQFDxgZy_9{tz@7-(UvDMkZ^E5-Xij23{wRIKTOT<rYY#~whEh53%A
zN(^9irPzEy7XcV%;Z?I%Yq=m7?-X0+0gSNl)0?Rh3mBmkZ_Mf<0HZAQk5_BEAQ!8@
zIL!kXV_~v+M6Lr^Ln+P(3=@EH7W(&&x-Q7Yd~0WV0Ld24HH+#2Mk>Web!rGe3Khi#
zxp-^bHV+`p!rP`;4=_q8UM)XI0MacSZ(w~F<YLU(=RJVQ7XE6E<>CONwc_@f0x;D=
z|NM>yF382Zji-44(=9wQ)|~$cSW_t;Tof(<Gc5FP$3`y5#lk-)djK;nOzKid;sIln
zV(Mmd{-Xu6so2;BxwvD?Y!6_rg|E(;=QRPWr4(PS6e|Gpso2y7xj1;m0uNxJg`3WP
z=QRV2Rf?CV#|pqADmDkKt-vehKo?*!!4@vai`w&*!2+<v!ov%iNlU;wO7YwY^Zkz&
zETv*A7v$oX_2zg0%Po9po(8rCtg958Z;TRvl~iowf?T|nv!DR1vhYNyZt@hMrxbU8
zkl_KWrecB%a`CyKd;+k>!tDo}OItuuiixcsc>rsvnCOCBjGUWS0M=Rf&16s70oGHB
zzYoqV0PCsP9<aUw>r~Aw02>H)0E|;$@h{>8U=zWPF34kyKKQ){u*E|E?BGs-4V2=k
ze)R=lD-}DtAQ!)=bK3*hZsBE9d>XK!Qfv_)CjdLC*u@38Sh`Xs0oY~XF>~+e3fM>~
zmU$vh0CrQcn+tNW*{<vYu*bqAGsb5C<CWrjiS-0vFBQAHAQz{<{g?pkvv8#;_5f_G
z6yH2sPXP8)v8M}ivFi(g0&u{>bhB1_0X9*Jf$K#84pOnV3v%(T_P=@nhb(NCkScuu
zn<~Yis2@Fm!&L0+f?T||=$Z#`#6tfy<Yxh!DaCF_FL(gQsMya1x!ASGEf3(hh1=%T
zmFEDPE5&KSwFKY<75lp&7v~JT;{lwsFg>}G3;=AQ6fe9tUjR;7=)Y(=&;_~Jd+0q6
z;EaW%8uySvfGw5c_U4`doTD)gc0n#S**RPQ&Rh8E{`KAvz*b7}=O^k5z(p!10k&3P
zVAePRxJ+=U3-Y2S#2xbhu2{Iltkq$FZIt3$Z9D<EO2y%TPbqNC>1YACMsS1+@}h=}
z-r)h<uyBl7)RBM*N-_S6B_6;{DvokNF8+~!mj`gm!hxnZ8nCTWtQJ>a05YgJ#s#@p
zFxM9zz-<esn&Mc%M5Q=z>0<(Lhl=A|kc$nAo%I0jTG-7L#{;%gia+1ZEdckanCyaF
zy!PG&58#1?<4kb^V0)!lbzD9Hcu2(*7v$oMnO8l4M-~n?#Z<r!N-_J_mpp)gf_M{`
zIsXx`qXM^QzwQBKCO8qWlLBY%UGD*8C72G_S%G_g9OD6GCpZc4X$9V?Uq%1|2~KuF
zUaM8!=_LR`7LFe~L8bt9QHpZ|GCY8sRGjL9TzsigF9FDHVb(UuG7Ye+Qry$#9S<Nc
z6{ou(7pF=u0myIRhfj=`=K;GZ#n{1{Jb+*-&Tv64hK}eV0EH|(+-;1!0QihjtdeBD
z|IvcNRGjI8T>PUz4*@7@;ctb<$}GU{O0j77cRhgORGjUCTr76Jy8x85u;z+UG6%4S
zQrz6deE*{brKvdA1-W>w=Z_vhSqn!zFy}u4_Ed^tK@kEFLdE$m$i?b0H#~p}7A`gK
zd|m+9ODX<(yqW-nQgNXRa&b<P8y-Mq3uoRn=RX4WR*H#lzUBc`rQ#wN<l^Wh-+2IG
z7Cw=YDlY-{QHu3)ukrxGskqn$xmf0-3=bf}!Zqeyh%W>7Rf=tE&hP*tskp=ixfswp
zOaP)S>=ry$UIBboDQ-S7-vfxD;!+pnVz&l81t8YKBI8EMGQfUHG3e$?9zY!`E_XpL
zjyu;|06Ys@uS=2@fX^w#FXojHfO;1Cr`)b|K`w^u>+Au<S$HYnM%`Bd`zyukzvUBv
zhBU@ifCCg*uW>#Bh$r}(3-Y2y))^xJO)RYU?9bk6z=2Bf{^5cG(9A;r{Q$4KAQvmf
zju3zr7T)Q3&szgHNGWbxkXHa&S$NkJ-*7=LK3y_e0NPj>@X1hF3piLQ)~uT50VDvL
z*O1?IK`xfsT1Nm9Eo|{|imU@1q7;9N3KoF&7Tz&qe9Hy7nCrKC0?^UIxdT#UJz$bj
zyjjJ}KU&b)Ui$9`c-sZJc;%0H0qA03#p)Ae1K?1l_}t}O0?^Gu|Ecaq7vy3}*G2-+
z-NMP)#>*zaVM?+0ua65rPYeCoz|Ahm#YJPA3P5iQle#C!7Qo?3apBI~0?^mOUrq5H
z7v$pD(@_G@&%(r+6J#sk2&LG6U`_$(Z=pZmvCRd!xO{JQ0T^iE{2D2;9dM*lTzVv%
z01T$$4j1HNvnkaCAj!gp=5us+0*+FOEBoXTfMHa8*9Ey)=3ayVjIeNR*YUCoaI{j)
z|5+XZ7)8bRT#$>4Ga>|FjD_cFC(CZYF-oyto7@60j*9QQAQyW+79jx17EUcOLG}QS
zRf_U!P60@v;s-9s#hC-D3qYEM8FwehUchlmapuHe0Z6Cfhc3v)v+E)RV6uh3?wKI_
z0LLrE9SKDQU@8?qazQRmpBo_n(=BY@BUSbTCM(6JpFbf0GpP8n3v%)O;o$->)57An
z2Fd}z2}*HuMqvS%O~p@Kkc&;SRu_P|7CtIBLJk6^D8*Ip6&8T`RQ%KhxtRNYm;fxa
zu#tH?!y&*_r5L;Bx(BexLjRELGZ*Ay;_u-Cu-L*H&y117fN4tcRLlYoU<r-!a~I@d
zp;xL4z)}mxWKESLfD@Hs_@@^=faMnYZ_+;Mf?TZnO?3fSX<^{eQF070T`Bfi|D6Z0
z%ECjY_=O8{aowhH0a$I}(1)YsIN&6uc<#Yv4`2<A@k<xvVobXz0a$Bc@zW#a1mI+)
z7_#_v4`7{z{^R3UF33f1W=#QDZ{gKuL**pk6s1@@&+8t*1}c8-f?T}TEmi<FSy=Q@
zUpWOhRVlt2xYz^OLdDZA$i>8CwFO|Sh0l!ZE@uFzDa8ZRfA9ddTj+nr>{%D&V)UrG
z0<hD<N9K*&=K!ZG#f!JEdjPvEykLsoxF8q3(sc!3w}o-vKP~40pI3@=&V26y?6J`Q
z?CuLL$i?LkYYV_$3xke!l8b;dl;VH_`2=8}h5ojB$pyLCsbOsa*l*#HAoKl?fG;S;
zYsZQSzyT_L>w;XYak-8F9JFxX){b%oaHdk+zoVQ09HQcPF380Oh3g2wVGGx_>mpYH
zXDP*P6Uz#~5h{M~f?O=zzpelrvvAD01i1z{TPb=g$_c=6DqeR%F6LfUPXJC>Sp3*i
zaszOVQoI`TmIrW>ia)p@7Z1n93&1H0cZH|QO~AQIvC>m3J%BS*{LuxuIC*Ge0XS!2
zpl81S5pbSTOb%b`0i37ePcF#C=fj%{z(os_o25zy;C!W6{L9xpfXh_;*#)_{b!@x<
zT(Pj&kW{%1xIiiPJ-6EfxJt!eT#$=DXK5q=*DTB^JYMbqE>wzZ_AT)MZcy=87vy4S
zXk!7mY2lLiRJjZIqEhT$WvK^ni;DMLkc(NXG!uXf3+n}@$bG;?N^xs}r5?a-D*onz
zT)Yz4TmbG^xbXdCc>ws5Qv9mkQV-xR6@Pa@E^hg}xd7a^aFI7b9s({_iZw?z6@Uj8
z`tQ;G!v(q6szVC_cxYkxnep-n@MWbqVBRVZ;1P}SPZ#9k#rRh8Hz@Si{NvM&$4bEC
z_WZ{sO0j>~axcJw%=XfMe9Yv6T-?;Fl>lV5uy@bVk{R$7rMPy_3J)MV6|=Y?7thye
zB>;gIo*Ow<vH~tuikY)4^8kXVn9T*bxbVqV0+7?fOr^(3cEDvyvHJ^CJb>I5`md7Z
za6v96v}+*%c`aOVcf14wE?0`lCmRSrehd9~uRZ31Tnw((TmXVCtaE&V1Ocv4ikGjI
z7Jxz)`diN9F381h6&eXZVG9#tdP`2gl}a&pk#Yi1l#01rkc%6#))j!_7M3+{y~z#u
zs#1*kqO1Uvw9tQ_RUQ}QV)mxB1faBq3sc5OUcgmK@$$T?0#MdM{~2pO7vy5Y6VU<?
zVqt}lagrbKHKkbabQSp<Sm?iMUBCson0ZUIRInh_Uf%d&j06L&R*FG&Lj|C+h5i|r
z1znJfjUPn`KvfH`Z5}O!0AE*%WsijlK$wO849gQP$i>}vq6Hw_!nxDNNnyY>O7Zxh
z5CMp=@PH{6aX~JItg9sekroDy9wS8o-%yGzVk!whw1xitv6u^Tac4adfEWv}d^$>s
z1Flty4?ZX-0I^go;euS;F|dIE)Uohk&VEu7@J*%Yy;e>DJSvuQK`xd&US9y}S=gY<
zvr-yxol^W^M=1e_qhc8s<l>YwaRSiL!iz7P^B)1<Qi_Xnl@@?_DwcCWE*3i3Pym`(
zSh#4agaEEriv22;5rAe?EboF`Opl8bfEE^pPEL^ufNv|s_{=2)pp}LG{js78a&dJ5
zPXOAWI3q<u0XHbcE5DQzfCLNunX*bQ$i=<8Vgw-3!YhZ`NM*o{O7Y<@c?6)nh5mlE
ziVJe_;)5sw=xE`=oli?uz)ecAaLI}S(Ah$Ntv>03Tx{{Ex&U;sFuFl^2?N}$6lcd*
z5P)tL`g3#DT#$=LKCdnS-7Tya(NV$yw<yI$*DDD?PYeCW$LcP~#bd|A1faKtjb3Rh
z5rFR~#a}Wi3P4{A{kifQF381{&_Ds`XW_U3qa_k>t5V$FwY&iIx6nUVH_8RMc;mfn
z0x;0RjxnPp8gQFZeAFpa00vw5vnkeeK`ss(oJjzZEG!&2Mq&WBE5+&)0t8@~h5qbA
zEf?hCf{XwG7-3;{^LD9Nz#U34cb@D5Fv>#z{Q$LHkc&qz-SGg%SUAwUC9DqMPNkT$
zL}mdPXW;`=tm}eY{5b4a4<OmX5L5I3-&KlVExP9cq*&<h0mKElSZ4a~9zdFf9j6SJ
zdVsr>;`SFR2|&7q{@IB2U66}Ae|h8qOt!Ge8%Yue_?}YS6&ET1Q!PAciVa+liv!D*
z6oBa#F3D&o4FPv6#q3od6Mz{O`e)8IazQTkzg0>AW?Fdtrv!-yd|xTPRqss?V77(+
zv0P&p<YKlq<pp4_g~!*nlO}+Blw!G*5&|&aLVwF?>VjNMYH`B@SZLwEuT!NN;0H=E
z?acxLu*gFH^E#TlAQ$g8FCzepEu8n6`Tj@1y-IQC+57^q#6o|c)6xaG_{MLY1YoI!
zU*rgoR)8NW#gaAmdjQKVOf|*UF382zT|)(6rG+>CC@gIN_bJ65P2cnYR$185oc;8a
z3v%(tA?EW}Em&<Y$48Hr1i+7!V$rWZ@c`CX=pW~_bwMuvUgaYXV6BDO&1cIb0`6Ce
zFH{c{fOS-C=Ym{p^XI1?z<LWynMG|6__0#l@a9zyV1tGJy`zH*a<NnMRUW`53(pwX
z5%7RgESfjN1K47r{|Ztk7v$okrNsnbtA)3VHkZzTpD4vr>#_;Jb_@M|&eJZ)#bMpd
z`HvRtw3iS143I8>2esmuECR5Lid|ihi>t?k2*7R&Z_XJc-2gvTiih@O6M#Kbe8vU2
zIQFSx0<hP@*CR$scfdnRvFO~p9>6{-_HaQi=06uJ0Q)VR6yHsH0)D0x2V~?CfCE(Q
z<$_$ySbo6+IB4OC?SrH@;9;eB_~&c_aEOY1T#$=--fS)ahb>%mu7&gk{9GxHsrrKl
zaD<A_x*!)Dza1(7$1Lm?mm>WDk0`|)`Kk-RaVkFNf?UiRQCa{_Sa|rmWa$rhR4I;{
z+(rOSTA0@y=nil}E++nX*8@0Z;jXs^%Rs<mO0nN#Z3N(qg@epz=?`*2E|!0Oya1fD
z@X_tF-eABllwy}<5dv`DLVqte#09xne|IqfxM*RvLg&3Cz~f5sM){foaG8ojU66|f
z6DA126$^XUXd=S^zf_8KHr5h=t5h8Bf?QnPcY*+1vvB9$<}w2Cgi>7mZj1oju+V?4
zW26gmac+@@0&vs9ft4a<6yR4%@#40J9>6UN{l|{cF380VbK(Rb!@{t4+Q=BdlS*-6
z0rUB*7Tl)dSQq5t`rMuX+_CWB#Gx_{@N1=b<gr=;aF>eXU66~jw$v4X`xdSpG*XfQ
zPbtMiUUdO@K*b3z$i-4$78Zbq7A6)7kQBhvN-^u!tOD@JLjV4l>VjM>yK9mF1U&KA
zoa04vgq#L=Mk$^Nh!TLz7W!MxL>J`Zr;FkQAghJNiUdeH;8~?OsaC82WVg^C<0Kd4
z;=S5K1t8Eu|E+yE+w*^y|62q9e_sQc0<s49+w@%jKju%SfWm)WX8P+d&e=N+zIY-_
zK+J!xDP;aW#QbL8VLb-*dFHv^|3UvB{*%}IPT+rjuU^2Y=X&=U^7sGi*f)QD^G4~v
zdt>ac=hWGMuHoKugNKjkF}Rn%xX+lMhK;cH?-Rn6e@pu}`V8(JP+T$iYqtL1WizAq
z*KFo2ng6qb1MT|Gk~#CWYJaWk-R5e4)&A#CVnU-vnT)~u$7NDc{KkJ@7LNJrAHnth
zKgNHiC;a#IW9;pY-??wkNrR8fjBEb7>}TJtit97}as4SfbB^oRXZdg6#J;A6>-+t6
z!~XqCJMH5;t`GTZasR$P^ymNn3ta#A3j6yv|M$cH*1-SP!2j03|JK0&*1-SPfWHRt
zP|Xkd_!-yX;TZqV4%cP3tCJtv@iVUb>lhEmZGQoHTxZ|IYL1Ei?+<>)bvVAmzw7@d
ze#UjVEzj|P|4aaW#&!O2nEwZD{u$Th|Icp(1laEu`G3vbVZ09X0k?6JBuSDanIuV)
zBuSE)Ns=T<k|arzBuSDaNs=T<k|arzBuSFYBr`KflFZD^%*@Qp%*^z3=ej(<m(R=R
zyzu}1&-LwmigWuMx6?U4+}t)lR`lPmfZR6!WX_)-e|S4?+mVm5ixly{p@7^rKg2un
zhqrL#2e-|SKmG44D7URL|NKdug~M&DLi6XMaCO_NVov5P9B!K*hxzkWFm7A*!YjXj
zIr{xvV%uu`Ac_?6=d^Hj+iGHteqQwVcekw;#-I1X)orVdIr?nF_jk9g4#r=b!qsi7
zi#eUMaJX&tX#V;Yu5Md>%o&`8!)<Fo^Vhg=b=w+Ze#}`o+_pwE-wz5`x2-YeOwPjL
zwl$$u;Vc~PCWXuQFHMgeMb6?Z9Bx}Pn(t4AtJ~Hbb2ew;aNAnYe4i^^-L{sPb2tl!
z+t!Na`(@$kwzbBb%UL+wwl*~1cMDgytu5v}&cflgwWIm|UAVe!?J?(b77n+q1I@=k
z;p(<^#9Y8xINY{QG#@90tJ~HYb0KHpaND}jd@L2NZd+H(MVy7hZR<w!@m9FHZQU^!
za~2M_tq0A=WZ~+z^~7AlSvcIbUNj%Kg{#}v8*?dV;c(mf(0ptcu5Mdj%w?Q~!)@zF
z^YLG}x^4Y2mva^lw`~B;-y;fFw{0Ni3eLjewhf~B`$*yHwhhMQ6RU395KI%!!r>lL
zxP1RI^vF@<r<{euZ5u{w8pdrKPWxFHw`~NiSs1r%B<;#DZrdnY^Du7PXxdd_+_o{a
z7Gd1Bv9znhxNYNTEyK8N<7wA~aoZ-)T7_}jCep4A<F-wrwGQL9O{QHJ#%-HIYZJz8
zn@YPrjN3Mi);5gWHl21u7`JT(tz8(mZ6@u;FmBr{TKh0=+icoRVcfPkv<_k1wz;&M
z!?<npXdT12ZS!fjgmK#z&^m>2+ZNJp4db>gqIC}Awk@XJ7RGH`LhBO7y@b~-<-DD<
zaJX&DXkEj&ZOdtQgmK$e(7J_j+g8%<4CA(~qID1Bwymb!6~=8_L+cU7ZCgvbJB-`5
zj@C1b+qRx|PZ+mt1FcsWw{0Ws-Y{<4CR*<>Zrf(sePP_TEwnyi+_tT>`@^_x+h~2m
zxNX~M4}@{scF_8Taocv%9t`8Q?V|M$<F@UlJru@m+d~@=#%<e6dpL~SwvRS2jN7)K
z_DC4F?Er017`N>p?a?r9+acQEFmBsn+GAndwjcgd>H9t;%+dX$Bd<L2H%>*0JRZhv
zD~25!#%(K(c_NJ4Rsu6DjN4Wc^JEyetrTW>7`Lr7=BY4lTN%uVFm78}%+q1qwsM$}
zVcfRzm}kPcZ51%1!nkb}G0%o^+bUs3hjH5~W1b7+wpGE53FEd^#XKLzZL5YE8^&#`
zj(H)B+g1ZJE{xk&6Z2vix2+atd>FT_Hs+-;Zd)D9gfMPfUChg2+_rj{iDBHf`j}V3
zxNQwElft-d4Kc5VaoZYUCWmp`8e?7y<F+-yObO$*HO0Ih#%*hcnHt7zYmRv%jN8@%
zGcAnU))Mn(7`LqzW_lR6tu^MYFm78L%#1K@TU*TAVcfQMn3-YRw)U8J!nkc6FtftA
zZ5=W1hH=|EVP=PM+d5<33*)wR!ORKcwspn4AI5F#hM612ZR?KtAdK7A12Zp-+tw5F
zVHmfq7iNAKx2-qkqcCn;AIyR<Zd+f>$6?&Iewc+}+_wIhPr|ru12BuixNQS5pN4VU
z24NP5aoYxCejdhc8-iI9#%&vl`9&DFZ5U>07`JUW=Cd$v+X&3EFmBsO%;#a;wo#bn
zVcfRSm|uo*+s0s4gmK%(Vty6IZ5xMK8OCiJkNI^Nw`~GuRT#HzBIY+?+_p)W)nVMW
z$(S#~xNTD~Yr?o~Q!!tLaoeV0)`oH0renSe<F?JftPA6|&BS~i#%-I0Ss%u2n~nJ<
zjN3K`vmuPzHW%}47`JU6W@8w)Z9e9=VcfO_m`!2awuPAAg>l;!VK#?x+ZJPfAI5E4
zg4q(rZCi@@Lm0Ph8D?u3w{1D*k73-l6_{;d+_sgNKZSAIR$;b>aobj7{v5__TZ7pV
z#%)`R`AZnLZ5?K37`JUb=C5JgwhfqFVcfQjn7@T_+csf#hjH6BWBwk-ZQFv`6UJ@Z
ziup$vw{06{Zy2|2JLaEZ+_oK<ePP_TotS@xaocub_J?uXc4Ph>#%<e!IS|He+l%>6
z7`JU7=3p4NZ9nF}VcfO@m_uRQwu6}eg>l;sVGf6JA8nZL!nhC9{$D=1r)be5Z-7tj
z{^8=b6~h$u?S8M^w&Iv$!nkcEFvY^SZ6z_shH=|UVTy-w+e%}O3*)wx!ITK&ww1*k
zAI5DfhbbAxZ7YvCA&lEr0aGfB+g1^CVi>or5~g$*x2-bfq%dw<6-=2hZd+B%$zj~K
zYM8QN+_vhNQ^L4yH8ADExNS8tr-pIcYGKNUaocKRP7C9<)xlH<<F?hsoF2w)^YiH|
zhH=~K^LEY%<F+-xR0`v^HN^ZljN8@-Q#p*=));eU7`Lqnrb-yMttsZLFm78jOw}-M
zTXW3WVcfPBm}+6%ww9Q4!nkd%FxA7jZLKlqhH=~4U}}VM+uCBz3*)x6!_*ApwzbEc
zAI5F#fT<P6ZR?1+AdK7A2~#_a+twL#VHmfq3#LvOx2-GYqA+e-H%#3yZd-TE#bMmG
z9+-Mz+_s*WOTxHqy)gB|xNW^LmxgiM`d}J_aohT0E(_zf^}{p_<F@t3Tpq@48-QsP
z#%&vjxgw0)HVD%=jN3LC^OG=c+Yn5XFmBsW%umC(ZNo54!?<n3F+U6AwvE6v3*)wp
z#9SH1Z5xGY9>#4Ojkzj}+cpN%B8=NM7ISqNw{0AzWf-?@Jm#7(ZrcP*t1xccM9j5e
z+_p)W)?wVX$(ZZHxNTD~ZNj*1Q!&?vaoeV0+J<r4rekgh<F?Jfv<u_5&BWXo#%-I0
zX&=UIn~k|CjN3K`(;<x8HWzbq7`JU6rehelZ9e9fFmBrdOs6nz+d|B(VcfPwn9gC`
zw#As+!nkcqFkQm9ZA&q?hjH7MVY-HK+m>VQ2;;V`z;p}awynh68OCi}h3Ou~ZCj1G
zD~#K=2Gb*q+qM>ScNn*A9j0d(w{1P<o-l6P228IoZreu8y<yz8O_<(c+_ue_`@*<w
zTQGgXxNTc8_lI%Ywqg2)aoe_I9th*M?ZEU4<F@U@JQ&7p+lA>L#%<e;c_@tAwg)pH
zjN7&s^KclqZ69V}7`JUd=8-UN+X2j=FmBsH%%fr4wnLb~VcfREn8(7nZAFeb^4!jl
zFh@77DCgs0+_qwvp<&#%;+QAGxNRjc!@{_2B{5Hiaob8^hKF(6N@Jc1<F=K-j0oel
zmBl<A#%(Ky85zcHE01|5jN4WLGb)VRRuS`T7`LqwW^@?0tup4hFm78F%$P84TUE^S
zVcfQAn6Y8pw(6J{!nkcUFyq3wZ8b43hH=|!VaA7X+iGK83gfob!AuC_w$;VF9L8;{
zhnX10ZL5!YC5+qF05d6!+tv{CY8bbz5oU52x2-YewJ>g56U>w_Zd+5#>tWosW|*mA
z+_vVJH^R7WEilu<xNR*lZ-#N(T4AP#aobvB-U{QkwZY5?<F>WMydB1EYloQ`#%*hl
zc_)n9)&VmsjN8@`^KKZotrKQ;7`Lr6=Djd(TNlinFm78{%==;7wr-fYVcfRvm=D6Z
zZ9Opa!nkccF&~C;+j?Q<hjH6_V?GMww)Md*2;;W(#e5vbZR>|w7{+bukNG5w+cp5R
zD2&@S5c6pmw`~w+aTvF4Fy`lB+_oW@C1KpQp_pHUaodJrmWFZLhGRYp<F<{!EDPhd
zjl_H&#%&vgSsuo18;$v87`JT<W<?mcZ7k+jVcfQHn3ZANw(*!>hjH5`U{-~3+a_Xu
z6UJ?ugjpTNZJUhwB8=NM1+ylM+cp*RWf-?@8fI-6w{1G+t1xcc49vPPZre=E*J0eY
zS(x=<+_u@6Z^F23b1)mixNUPW--dD9=3zF5aogr&ejCPZTY%XV#%)`O`CS;dZ4qX3
z7`JUP=J#RTwk4P?VcfQ*m_LMZ+m>OrhH=}LWBwS%ZCioa7RGH`iTP6)w`~<>dl<KE
zHRjJ@+_p8C9bw$IwV1zzaog5mc7}1=)?@w}#%<ex*%iiZ+lcvF7`JT`W_K93Z8PTY
zVcfPYm_1?Kwyl_dgmK%pVfKb`+qPr=8OCkff!P<vZQF_YR~WZ#7iNDLw{17(-(lRg
zJ(vSw+_t@#|AcYd_F)c&aohG|{u{<^JAgS9#%()@`Ck~f?GWa0828bJ`7Vt6FpV#e
z_<z61PvPkxo;R`;Eq3HNq96JC@2_rKF-*}gZd-B8F=5=c5}0CP+_sXKW5c*@r7*?A
zxNW5|$Axj*%3w-_aofsbjt}FumBW+_<F=K@oDjxstAHsL#%-&JIWdgeRtZx&jN4Wj
zb5a<$tqP`07`Lq|=HxJLTQyACFm79Q%qd~qwi=jnVcfQwm{Y^JZM87v!?<m=F{g!b
z+v;E{gmK&IVond^w$;N_4CA)d$D9$yZEJw36vl09i1~3Cx2+MTau~O*G3LxLZd(&f
zl`w8wQ_NXm+_q+zs$tx==9sg?xNR*k)xx-KEivbWaobv9s)upgT4T-)<F>WI)Cl9Y
zwZ)tl#%*hdsTsy?YmYfUjN8@$Q!9+y))8|-7`Lqxrgj*&tuyArFm78HOr0=pTUX3Q
zVcfQEn7U!yw(gjV!?<ldF!jQ?Z9OrUgmK$?Vd{r*+j?Uz4db@;!88ctw)Mqa7RGJs
zhiMqbZR?M@JdE2m0MjUp+cpq$MHshj5T<b$w{0-yCt=*SA($p%+_s^ZpN4VUhGCk9
zaodJteip`U8-ZyS#%&vkxiXB~HVV@`jN3LEb5$6(Z49PG7`JUK=IStR+c-?iFmBs;
z%r#-$wh5S4VcfQfm}|qhZIdvq!?<meG1rB0+ooXJgmK%ZVy+M4woSvd4db>=$J`Lc
zZJU8<7shRyiMcV1+cpc+K8)Ko8*@__w`~rlLm0PhF6QPiZreOe$1rZ&e9SFj+_nXn
zPGQ`(g_v8zxNVCtox`|oi!rx_aod()x`c7tmSS!X<F+lsbPeOSEyvsu#%)`H=@!Oq
zTZy?djN7&f(>;vawi<I+7`JT=rbigJZ7t^RFmBsAOwTZG+j`7BVcfP2m|kJrwvCv3
z!?<mmFulXLZJROog>l=qVETk{+qPov5979N!}JZ~wr$5e5XNoWf$0~<ZQF@?FpS%_
z3)4T0+qN6?P#Cvu4`x6Zw{0)x;V^F7KFq){Zrgs$BVpXO1DHW!+_r<5N5i;nhcJV~
zxNV0qkA-pD{36Oj!W`Yl9(mrUDCgs0+_qwvp<&#%;+QAGxNRjc!@{_2B{5Hiaob8^
zhKF(6N@Jc1<F=K-j0oelmBl<A#%(Ky85zcHD|~O1!pk#Z+_nmsQDNM+ikN4^xNVg%
zqr<pul`+qSaoeh3#)NU(s$!lG<F@(zIL3x?+p6<+UI^p1)xeAk<F?hrycou9tA!aK
z#%-&Oc`1zBRtGa7jN4Wh^KuxstsZ7#7`LrH=9MsR8{g)o$fPiCTSMN?t6|)>MwrQA
z+_uJ;*TT4MO)yi!xNS`_uZMBlnqj7faod_>-U#EiwZKdZ<F>WLycx!AYlWE}#%*hj
zc`J<D)&?^pjN8^0^L7}wtsQ1&7`LrG=AAHZTL;XnFm78%%)4RSwoaJYVcfRPnD@fC
zZCx;P!nkc+G4F?Q+qz-qhH=}vV?GGuw)Mcw3*)x+#C#aWZR>@ZAI5F#jrk~y+tvrO
zAdK7A7xQr#x2+#$VHmfqKjxD#ZrcFNqA+gTK+LCM+_piO#bMmG!I+<iaodJqmV|NJ
zhGKpZ#%&vhSsKP|8;<!bjN3K>vn-6;HWKrB7`JT{W_cL5Z8YYWVcfPcm=$5%wy~IB
zg>l=)VOEB5+s0#l9mZ{&fLRsBZJUVsO&GUr5@vN6w{0@!i!g566wI11ZrfDMmtowt
zX_&QP+_veMufn)(GcfDIxNS2rUx#tqW?|Ncaoc8Nz6s;D&B1I4<F?Jkd>h7Xn}^vL
z#%-IA`E3}tZ2@Le7`JU9=67M-wndoDVcfRGnBRwS+m>LqgmK%JV*U`uZCi%f8pdr~
zj`?F4w`~PxTNt-(CFW0I+_qJi?P1)u)tEnraog5lc7$=;)?)q=#%)`N*%`)dTaWo`
z7`JT$W>*-uZ6oGyVcfP&nB8IAw#}HohjH7sVD^M@+qPo<5yoxXhS?j&ZQG9dXBf9_
z2WDRww{0ipUt!#~U6}o0+_v4Ae}{3~_FxW#aohG{{u9P++lM(A#%<e=`EMAv?EvOb
z7`N>p=6_+_wnLc1VcbU>=DRTN!?dH{6wA*CDm($<E?&5N|LH)SKl1h8zs_wdrVUe+
zZ7YsBCXCxw0#huE+g1{DY#6t#6sC9>x2-hhxG-*88BB>VZd+N*@nPJya+s1~+_v(V
z6T-M{6)>g3xNQ|NCx&s`Dq%{8aoZ|mP733;Rl$@A<F-}BoE*k&tA;5X#%-&PIVFtS
zRs&NmjN4Wdb7~m3trn(y7`Lr9=Cm+wTOCY=Fm792%;{m=wtAR~VcfR*m@~q-Z4EG$
z!nkb>F+UFDwl%_34&$~p#+(_(ZEJ$562@(7ia9Hc+tv(IHH_QV9CLOUx2*-HS{S#j
zCFYzkZd)r%^)PN*Ys|S}+_pBD8e!bFwwUw6xNYq)HN&`V?J?(vaoajzYK3vzI$|ye
z<F<9e)DGjeb;ev6#%=3@sT0O+>x#K3jN8@?Q#Xv;)*W+k7`Lqlrd}AgttaM^Fm78f
zO#Lu!TW`#zVcfPpm<D0ow!WCl!nkeyFb%`FZT&HqhjH5mU>b#S+XiB;2;;U5!ZZ%!
zwhhMoB#hfO1k)sp+cp&Q(=cw^Fig`hZrgCo&%(HEBQVXvxNRdbSB7!hMq!$Vaoa{?
zt_tI}jlr}C<F<{(Tph-38;5Bb#%&vqxh9O;HUZNrjN3L5b8Q&6Z4#z+7`JUQ=DIL$
z+Z0TjFmBsa%=Ka1wrQBQVcfRqm>a^lZ8I?K!nkcSF*k;B+h$?fhjH6xV{QuLw#~tG
z2;;WR#oQdmZJUSb7{+azkGUm`+qMAHDU92;5OZr7w`~!oa~QX6G3K@~Zrc(}moRSI
zQq1jP+_q(yu3_A^<(NCdxNR#i-NLwSD=~M5aobj5x`%PwR%7l8<F>8A^a$g&t;O6O
z#%)`N=^4gtTaURXjN7&W(<_YIwh?o07`JT`rgs>(Z8PS+FmBrxOrJ1r+g8l|VcfQD
zn7(1$w(Xb)!nkcaF#W=~Z96d!hH=|=Vfu%0+je6f3gfoz!3+rFw(Z3{9L8<ihZz{g
zZQGA|B#hg305d3z+jbE1Xc)Kc5N2=~x9u?Iu`q6%-|&1$n4|l+AD;dxQk3)YFm78h
z%+N4yTXD=2VcfP7m|<buwvw19!?<mwFvG*RZKW|!g>l=;U`B*-+sa~|4&%0!!;B2$
zww1>`6UJ?;fEg9WZL5fRHjLX=2{Ss3+g2I#To|{l3T8|gx2-DX`7mx<HO$yBZd-NC
z3t`;08klim+_svS7sI%1wJ_tuxNWsDFNJa2>R={>aog%*UJm27)x%5-<F?huyb{K3
zYk-*)#%*hec{PmN)(A5>jN8^2^I90UtqEpI7`Lq{=JhacTQkhmFm79O%o}0cwicLa
zVcfQsm^Z_?ZLKiV!?<m&F>i%&+uC4egmK&2V%`qpwzb2|4CA)7$Gj89ZR>!U6~=Ar
zh<P`R+tvv)JB-`b8S`Ekx2+3iP8heXE9U($Zd*6Z+%RricgzQ2+_oN=d12hPo|q5A
zxNW^K^TW7py)hq!aohS}7KCxz`eHr~<F@s~EDYne^~Zb?#%&vbSro=?8;JQdjN3K{
zvp9^~HW>5sFmBrr%#tu}+fd9e!nke2FiXR@ZNo92g>l<PV3vh(+eTtO5979t!YmKt
zwvER8GK||c2D2iJ+cp;St1xccILyj0Zrgawufw=)6ELg7xNQ?LzX{{EO~R}W<F-x4
zd=bWNn}S&r#%-I5`7(^#HVv~jjN3LH^HmtPZ3bpt7`JUE=IbzS+bqobFmBsy%r{}&
zwmFy$VcfR4m~X?lZSyc2!?<npF~1Gtwk^PH3gfmd#QZLd+qMX^IgH!381wruZrc*f
zmN0JHQp_L1xNXZYTf?|*%Q1fp<F>89YzyPIt;GB(jN7&fvptO4wi@&2FmBr#%#JW_
z+gi+D!nkegFgwGzZR;_A4db?L!0Za+wr#}xEsWc?39~zl+qN0=_b_hT7R;V7ZrfJO
zKf<_e+c0~>xNX}p{|w`{?ZE5{<F@U@{40#xwhOaAjN7&w^Y1Wj+aAn;FmBsk%zwhT
zZU4j^4CA)#!~8dl+qNHbD2&^70Q0{vZref3;V^F7A<TDS+_uA*BK*H%KRn~Zwta{B
zQ5g5pR)Xh>!W3oyh<1!;m}A(sV==|TxNXN_jt%3s9gis<#%((Rb6gm=?L<t8FmBsP
znB&8^Z6{+&hH=|Y!JH7rZ95fHDvaB98s@|>ZrkaY(qY`TGcYHGaoZ|k%7k&-Dq~I#
z<F=iNDI3OZI}3A47`Lq|rd$}ets3UkFmBs9nDSxVw(6ME!nkecVk(4j+s?zB9>#5}
ziK!UIZ95-xMi{s40!*baZrg>JABS<<F2Ym}<F;LlIWvsgb_u3R7`N?G%voXFwg#B0
zVcfRMFlUEx+b+jc3*)w3fjK9P+x8Po^)PN*6U@0`+_t8e8e!bFW|;HBxNTQrYKC#!
zuELxj#%;SAQ!9+yb`9o&FmBtmnA&07w$_*n!?<nNVd{i&+pfo46vl140aG`O+tv<q
zaTvGlMohghZre?mOTxHqH)HCDaocXeTpGr0yA{(QjN5h_=CUwu+wGW!VcfQ^n9IYs
zZFgWAg>l>N#9R@^ZR?I{9L8<yf%!=ox2-3pNf@{79?Va}xNY}hnuc-P?!){njN5iU
zrdb%btuN-vFm78vO!F{q+k=>^!nkeyF)hNlZ4Y6t4&$~xjA<FhZF>ZBO&GWBQB12a
zZrfv+Ys0v0k7HVgaodJst_$O~4a2kv<F*aQTpz}58-ZyX#%&vkxgm_(HVV@&jN3LE
zb7L5{Z49P;7`JUK=B6-i+c->zFmBs;%*|okwwEv+!?<lPV{QrKw!MPs6vl0vgt;}0
z+x9A^a~QX6GUm20Zrf{^E@9lZDVW>CxNTE0UBkF-(=d00aogU+bPMCQy@k0mjNA4$
zrh6E-?H$ZrVcfQNF+IY#ZSP_34&%1HkLel4ZTkRoPZ+oDLrkwQZrewgd&9VGA7grl
zaoaw@+!w}eTZHKo#%=o)bAK4OZ84^A7`JT+=7BJ7+fq!wFmBstm<PkSZObtI!?<nB
zF%N}t+g4x(gmK$eVjd3TwynYp4CA(~#yk?nZCisG6vk~^i+MDR+x8V^a2U7kYs_O|
z+_rBpL&CUi-(nsQ<F;+Y3=QM9ZNfYe#%<e-85YKE+k$yAjN7&qGdzsjwhi-C7`JUZ
zW<(gbZ3pJ*FmBsU%*Zfq+b+yAVcfRem{DQewmq0<!?<mGF{8t{ZTm3Kg>l>VW5$GW
z+YVr!5978S#EcE&wjIK}5XNmgj2RckZ7Xv8k>@I340CkTigJz*<F*yUycEW5D~_2E
z#%(Ksc{z;RRuVHYjN4WU^GX=Etu$s*7`Lqq=G8E6TUpHHFm78p%xhuXw(^)MVcfO~
znAgL&Z51(7!?<mgFmHr$+bUzGg>l=eVBQSlwpGPU5978~!@L#7ZL5x%5yow+fq6TO
z+g1}ZGmP6-3-eAGx2-m2Rv5Rf4(8o3Zd+Z<>@aRyJ<NMy+_w6dIbqzk2AKE5xNQwF
zbHli8jW8dCaoZYW=7n+FnqWQ*<F+-$%n#$XHN$)q#%*hkSrEo;Yk~PVjN8@{voMU?
z)(Z1U7`Lr8W>FZotqtbWFm790%;GR^TRY6p!?<njF-yX@Z5=Sb2;;VO#4HWtwspdM
z7RGJsj9C`OZR>*hJdE4c6|+2y+tv;9%P?+Rcg%_~Zd(t`ufn)(Juxf8xNW^KzYgQJ
z^~S6U<F@s|{3eXs))%unjN8@^^F<i9tv_Z>7`JTz=F2c{+d$0PFmBr*%vWLDw!xTn
zVcfPMn6JaQZ9_5Z!?<n3FyDl6+lFH{gmK$OV7?9GwvEJW4CA(q!u&Rj+cp}rDU91T
z2J^cxZrfPQ<}hyCILz<ExNYMxTf(?)6EJ@W<F-x2Yz^bKO~U*!jN3LDvn`C<HU;yi
zFmBsa%=R#D+ceCd!?<nJF+0MzZ8I=`3FEfS#Ow^?w#~x)HH_Of8?!5n+cpRDw=izo
zT+Hq;ZreP}-@~|V^D%qExNQqC{|Mu@EyU~%<F+lr{4<Q(wivT7jN7&Z^RF;&+fvN_
zFmBs2%)i69ZObtS!nkcKF#ieTwyne*4CA(~!u&Uk+qN2WD2&^-2J^o#ZrfVS;V^F7
zI?Q)r+_v?YB7Qxf!XJ&<whfpcg>l<9Vv2@w+csg23FEeH#uN+Vwr#;28^&$hiYXq(
zZQF)9E{xl@9aAEV+qMI9d>FTFC#GZ=w`~{ZgfMQ~ZcM2#ZrdKriDBHfy_nKr+_rs~
zlft-d`!Qw0xNQe8Cx>y{4r0oNaoY}IP6^|-9mbRk<F*wkdF1(@Q^OqHw4$8l!?<n5
zFsFra+lpf<gmK$SU``L?ww1(G4CA(y!kiJtZ7Yqb6vk~UgZXh7x2-Iuau~O*9Ole0
zZd-Xwl`w8w1<YAt+_s9Cs$tx=N|>|5xNVg&)xx-KRWRp-aoeh5s)upgs$tFz<F-}D
z)Cl7~+A!yZao3>L^bAvzZL5VjKaAT}8&fNc+g1m2K^V8KE~a)Ex2+!L!Z2=IeN3G&
zZd(J)MPb~whM2lx+_pxTi^I5WjWPAYxNS`^mxOWKnqumQaod_<E)C<hHODjv<F>WH
zTo%S{Yl&$X#%;R>b9orI?OIHuFmBs*m@C4#ZP#NOhjH6(!2BeP+jb+SNf@`SJ?5uj
z+_sxAO~bftH)DPl#%;R=(=3eJb}Qz}FmBsznC4;Jw%ajRg>l>Nz_bYCw%v)jI*i+P
z7p7$xx9x7sHDTPgdoZoSxNY}ht_|b1-G^x%#%=3^xh{;`))&(zjNA4A=K3&h+k=?4
zVcfQdFgJv8+aAWW3*)vug1Iq_+x94?eHgdxG0aV2+_oW@4q@E3$1yjDaodJsI)-uE
zp1|A^#%+5N(<zMG_7vvUFmBt^n9gC`wr4Q6g>l=S#dHbdwmpZrJ&fD-Jf>?Hx9tVY
z9bw$I7ct$!xNR?C?hNC$y^QG|#%+5Ab5|I*?Nv;VFmBsxn7hNcZLec`hH=}bV(tm!
zwoSwI3gfm-$J`snZJUAV9mZ{&iMcO~+cpc+Cyd)R8*_gcw`~rlZy2|2F6MzSZreOe
zzc6mwe9VJk+_nXn{$bp<g_wuJxNVCt1H!m%i!l#}aod()28MClmSP?W<F+ls3<~46
zEyp|>#%)`H863uKTZwrrjN7&fGbD`Lwi@$z7`JT=W@s3<Z7t@BFmBsA%&;(S+j`8C
zVcfP2nBigEwvCvl!nkdlFeAdaZJRMqhjH7sU`B><+qPn!3FEeH!;A{!wr$5e8^&$h
zff*gfZQF@?E{xl@3o|B++qN6?d>FTF4`yr_w{0)xg)na0KFqi<Zrgs$i(%Zh1DNq)
z+_r<5m%_MhhcFYuxNV0qFNbm4ikxudIjf0bj&52}&R4>?ZN)H?!nke4F|USk+e%<2
zhjH6VVqOd5ww1z63FEev#=IWJZ7YMB8pdrai+LlA+g1)UEsWb%9`j}xx2*zZdKkB@
zBId0yZd)bHj4*CnWz5@Q+_oy1nPJ?vs+f1exNX%iv%<J-)iLjeaocKOW`}XxYGU3C
z<F?hp%n9SR)yBLZ#%-&EnH$D!tBd&{jN4WZGcSzWRv+_W7`LqfW_}pAts&;4Fm78T
z%z`j(TVu?}VcfPRn1x~7wx*a*!nkeCFpI*tZOt*ChH=|kU>1jQ+gf6N9>#5Jg;^5D
zZEKDBMHsiO4Q6Q=x2-MavoLO3JIt~$Zd-fI=V9Eo4w&U(+_sLGUxsnpI$>6Xaoaj$
zeig=T>w;Ms#%=40`E?k#ts7=l7`LrE<~L#7wjP+(VcfQ!m@mS(ZM`sS!nkd{F<*vp
z+xlSEhH=~aV!jIFw)MlT3*)x+$9x^eZ5x1DAI5DPi1{Xr+cpTZA&lEL81royw`~Y!
YV;Hw>DCW0e+_qtuBOguu|MTPj0o-wCPyhe`

literal 0
HcmV?d00001

diff --git a/tests/fixtures/datasets.py b/tests/fixtures/datasets.py
index 801fcc092..c6507caec 100644
--- a/tests/fixtures/datasets.py
+++ b/tests/fixtures/datasets.py
@@ -41,6 +41,13 @@ def centered_pair_predictions():
     return Labels.load_file(TEST_JSON_PREDICTIONS)
 
 
+@pytest.fixture
+def centered_pair_predictions_sorted(centered_pair_predictions):
+    labels: Labels = centered_pair_predictions
+    labels.labeled_frames.sort(key=lambda lf: lf.frame_idx)
+    return labels
+
+
 @pytest.fixture
 def min_labels():
     return Labels.load_file(TEST_JSON_MIN_LABELS)
@@ -90,6 +97,20 @@ def min_tracks_2node_labels():
     )
 
 
+@pytest.fixture
+def min_tracks_2node_predictions():
+    """
+    Generated with:
+    ```
+    sleap-track -m "tests/data/models/min_tracks_2node.UNet.bottomup_multiclass" "tests/data/tracks/clip.mp4"
+    ```
+    """
+    return Labels.load_file(
+        "tests/data/tracks/clip.predictions.slp",
+        video_search=["tests/data/tracks/clip.mp4"],
+    )
+
+
 @pytest.fixture
 def min_tracks_13node_labels():
     return Labels.load_file(
diff --git a/tests/fixtures/skeletons.py b/tests/fixtures/skeletons.py
index 311510e6a..b432ca2c7 100644
--- a/tests/fixtures/skeletons.py
+++ b/tests/fixtures/skeletons.py
@@ -3,14 +3,27 @@
 from sleap.skeleton import Skeleton
 
 TEST_FLY_LEGS_SKELETON = "tests/data/skeleton/fly_skeleton_legs.json"
+TEST_FLY_LEGS_SKELETON_DICT = "tests/data/skeleton/fly_skeleton_legs_pystate_dict.json"
 
 
 @pytest.fixture
 def fly_legs_skeleton_json():
-    """Path to fly_skeleton_legs.json"""
+    """Path to fly_skeleton_legs.json
+
+    This skeleton json has py/state in tuple format.
+    """
     return TEST_FLY_LEGS_SKELETON
 
 
+@pytest.fixture
+def fly_legs_skeleton_dict_json():
+    """Path to fly_skeleton_legs_pystate_dict.json
+
+    This skeleton json has py/state dict format.
+    """
+    return TEST_FLY_LEGS_SKELETON_DICT
+
+
 @pytest.fixture
 def stickman():
 
diff --git a/tests/fixtures/videos.py b/tests/fixtures/videos.py
index b160caedd..08974b3de 100644
--- a/tests/fixtures/videos.py
+++ b/tests/fixtures/videos.py
@@ -1,12 +1,21 @@
 import pytest
 
 from sleap.io.video import Video
+from sleap.io.format.filehandle import FileHandle
 
 TEST_H5_FILE = "tests/data/hdf5_format_v1/training.scale=0.50,sigma=10.h5"
 TEST_H5_DSET = "/box"
 TEST_H5_CONFMAPS = "/confmaps"
 TEST_H5_AFFINITY = "/pafs"
 TEST_H5_INPUT_FORMAT = "channels_first"
+TEST_SMALL_ROBOT3_FRAME_H5 = (
+    "tests/data/hdf5_format_v1/small_robot.000_small_robot_3_frame.analysis.h5"
+)
+
+
+@pytest.fixture
+def small_robot_3_frame_hdf5():
+    return FileHandle(filename=TEST_SMALL_ROBOT3_FRAME_H5)
 
 
 @pytest.fixture
diff --git a/tests/gui/learning/test_dialog.py b/tests/gui/learning/test_dialog.py
index 3d77c891f..389bb48a3 100644
--- a/tests/gui/learning/test_dialog.py
+++ b/tests/gui/learning/test_dialog.py
@@ -7,6 +7,7 @@
 import pytest
 from qtpy import QtWidgets
 
+import sleap
 from sleap.gui.learning.dialog import LearningDialog, TrainingEditorWidget
 from sleap.gui.learning.configs import (
     TrainingConfigFilesWidget,
@@ -429,3 +430,22 @@ def test_immutablilty_of_trained_config_info(
     # saving multiple configs from one config info.
     ld.save(output_dir=tmpdir)
     ld.save(output_dir=tmpdir)
+
+
+def test_validate_id_model(qtbot, min_labels_slp, min_labels_slp_path):
+    app = MainWindow(no_usage_data=True)
+    ld = LearningDialog(
+        mode="training",
+        labels_filename=Path(min_labels_slp_path),
+        labels=min_labels_slp,
+    )
+    assert not ld._validate_id_model()
+
+    # Add track but don't assign it to instances
+    new_track = sleap.Track(name="new_track")
+    min_labels_slp.tracks.append(new_track)
+    assert not ld._validate_id_model()
+
+    # Assign track to instances
+    min_labels_slp[0][0].track = new_track
+    assert ld._validate_id_model()
diff --git a/tests/gui/test_app.py b/tests/gui/test_app.py
index bacda4ae3..def835b6e 100644
--- a/tests/gui/test_app.py
+++ b/tests/gui/test_app.py
@@ -142,6 +142,7 @@ def assert_frame_chunk_suggestion_ui_updated(
     # Select and delete instance
     app.state["instance"] = inst_27_1
     app.commands.deleteSelectedInstance()
+    assert app.state["instance"] is None
 
     assert len(app.state["labeled_frame"].instances) == 1
     assert app.state["labeled_frame"].instances == [inst_27_0]
@@ -179,6 +180,7 @@ def assert_frame_chunk_suggestion_ui_updated(
 
     # Delete all instances in track
     app.commands.deleteSelectedInstanceTrack()
+    assert app.state["instance"] is None
 
     assert len(app.state["labeled_frame"].instances) == 0
     app.state["frame_idx"] = 29
@@ -412,6 +414,12 @@ def toggle_and_verify_visibility(expected_visibility: bool = True):
         window.showNormal()
     vp = window.player
 
+    # Change state and ensure menu-item check updates
+    color_predicted = window.state["color predicted"]
+    assert window._menu_actions["color predicted"].isChecked() == color_predicted
+    window.state["color predicted"] = not color_predicted
+    assert window._menu_actions["color predicted"].isChecked() == (not color_predicted)
+
     # Enable distinct colors
     window.state["color predicted"] = True
 
diff --git a/tests/gui/test_commands.py b/tests/gui/test_commands.py
index 13aa60e6b..e19e00236 100644
--- a/tests/gui/test_commands.py
+++ b/tests/gui/test_commands.py
@@ -3,11 +3,15 @@
 import sys
 import time
 
+import numpy as np
 from pathlib import PurePath, Path
+from qtpy import QtCore
 from typing import List
 
 from sleap import Skeleton, Track, PredictedInstance
+from sleap.gui.app import MainWindow
 from sleap.gui.commands import (
+    AddInstance,
     CommandContext,
     ExportAnalysisFile,
     ExportDatasetWithImages,
@@ -16,6 +20,7 @@
     ReplaceVideo,
     OpenSkeleton,
     SaveProjectAs,
+    DeleteFrameLimitPredictions,
     get_new_version_filename,
 )
 from sleap.instance import Instance, LabeledFrame
@@ -65,7 +70,7 @@ def test_import_labels_from_dlc_folder():
     assert len(labels.videos) == 2
     assert len(labels.skeletons) == 1
     assert len(labels.nodes) == 3
-    assert len(labels.tracks) == 0
+    assert len(labels.tracks) == 3
 
     assert set(
         [fix_path_separator(l.video.backend.filename) for l in labels.labeled_frames]
@@ -847,6 +852,26 @@ def load_and_assert_changes(new_video_path: Path):
         shutil.move(new_video_path, expected_video_path)
 
 
+def test_DeleteFrameLimitPredictions(
+    centered_pair_predictions: Labels, centered_pair_vid: Video
+):
+    """Test deleting instances beyond a certain frame limit."""
+    labels = centered_pair_predictions
+
+    # Set-up command context
+    context = CommandContext.from_labels(labels)
+    context.state["video"] = centered_pair_vid
+
+    # Set-up params for the command
+    params = {"min_frame_idx": 900, "max_frame_idx": 1000}
+
+    instances_to_delete = DeleteFrameLimitPredictions.get_frame_instance_list(
+        context, params
+    )
+
+    assert len(instances_to_delete) == 2070
+
+
 @pytest.mark.parametrize("export_extension", [".json.zip", ".slp"])
 def test_exportLabelsPackage(export_extension, centered_pair_labels: Labels, tmpdir):
     def assert_loaded_package_similar(path_to_pkg: Path, sugg=False, pred=False):
@@ -922,3 +947,102 @@ def no_gui_ask(cls, context, params):
     # Case 3: Export all frames and suggested frames with image data.
     context.exportFullPackage()
     assert_loaded_package_similar(path_to_pkg, sugg=True, pred=True)
+
+
+def test_newInstance(qtbot, centered_pair_predictions: Labels):
+
+    # Get the data
+    labels = centered_pair_predictions
+    lf = labels[0]
+    pred_inst = lf.instances[0]
+    video = labels.video
+
+    # Set-up command context
+    main_window = MainWindow(labels=labels)
+    context = main_window.commands
+    context.state["labeled_frame"] = lf
+    context.state["frame_idx"] = lf.frame_idx
+    context.state["skeleton"] = labels.skeleton
+    context.state["video"] = labels.videos[0]
+
+    # Case 1: Double clicking a prediction results in no offset for new instance
+
+    # Double click on prediction
+    assert len(lf.instances) == 2
+    main_window._handle_instance_double_click(instance=pred_inst)
+
+    # Check new instance
+    assert len(lf.instances) == 3
+    new_inst = lf.instances[-1]
+    assert new_inst.from_predicted is pred_inst
+    assert np.array_equal(new_inst.numpy(), pred_inst.numpy())  # No offset
+
+    # Case 2: Using Ctrl + I (or menu "Add Instance" button)
+
+    # Connect the action to a slot
+    add_instance_menu_action = main_window._menu_actions["add instance"]
+    triggered = False
+
+    def on_triggered():
+        nonlocal triggered
+        triggered = True
+
+    add_instance_menu_action.triggered.connect(on_triggered)
+
+    # Find which instance we are going to copy from
+    (
+        copy_instance,
+        from_predicted,
+        from_prev_frame,
+    ) = AddInstance.find_instance_to_copy_from(
+        context, copy_instance=None, init_method="best"
+    )
+
+    # Click on the menu action
+    assert len(lf.instances) == 3
+    add_instance_menu_action.trigger()
+    assert triggered, "Action not triggered"
+
+    # Check new instance
+    assert len(lf.instances) == 4
+    new_inst = lf.instances[-1]
+    offset = 10
+    np.nan_to_num(new_inst.numpy() - copy_instance.numpy(), nan=offset)
+    assert np.all(
+        np.nan_to_num(new_inst.numpy() - copy_instance.numpy(), nan=offset) == offset
+    )
+
+    # Case 3: Using right click and "Default" option
+
+    # Find which instance we are going to copy from
+    (
+        copy_instance,
+        from_predicted,
+        from_prev_frame,
+    ) = AddInstance.find_instance_to_copy_from(
+        context, copy_instance=None, init_method="best"
+    )
+
+    video_player = main_window.player
+    right_click_location_x = video.shape[2] / 2
+    right_click_location_y = video.shape[1] / 2
+    right_click_location = QtCore.QPointF(
+        right_click_location_x, right_click_location_y
+    )
+    video_player.create_contextual_menu(scene_pos=right_click_location)
+    default_action = video_player._menu_actions["Default"]
+    default_action.trigger()
+
+    # Check new instance
+    assert len(lf.instances) == 5
+    new_inst = lf.instances[-1]
+    reference_node_idx = np.where(
+        np.all(
+            new_inst.numpy() == [right_click_location_x, right_click_location_y], axis=1
+        )
+    )[0][0]
+    offset = (
+        new_inst.numpy()[reference_node_idx] - copy_instance.numpy()[reference_node_idx]
+    )
+    diff = np.nan_to_num(new_inst.numpy() - copy_instance.numpy(), nan=offset)
+    assert np.all(diff == offset)
diff --git a/tests/gui/test_dialogs.py b/tests/gui/test_dialogs.py
index 4455550fb..611a73c85 100644
--- a/tests/gui/test_dialogs.py
+++ b/tests/gui/test_dialogs.py
@@ -1,6 +1,5 @@
 """Module to test the dialogs of the GUI (contained in sleap/gui/dialogs)."""
 
-
 import os
 from pathlib import Path
 
diff --git a/tests/gui/test_monitor.py b/tests/gui/test_monitor.py
index 51af0ca92..e0abea692 100644
--- a/tests/gui/test_monitor.py
+++ b/tests/gui/test_monitor.py
@@ -1,4 +1,3 @@
-from turtle import title
 from sleap.gui.widgets.monitor import LossViewer
 from sleap import TrainingJobConfig
 
@@ -12,6 +11,9 @@ def test_monitor_release(qtbot, min_centroid_model_path):
     win.reset(what="Model Type", config=config)
     assert win.config.optimization.early_stopping.plateau_patience == 10
 
+    # Ensure zmq port is set correctly
+    assert win.zmq_ports["controller_port"] == 9000
+    assert win.zmq_ports["publish_port"] == 9001
     # Ensure all lines of update_runtime() are run error-free
     win.is_running = True
     win.t0 = 0
@@ -28,13 +30,17 @@ def test_monitor_release(qtbot, min_centroid_model_path):
     # Enter "bes_val_x" conditional
     win.best_val_x = 0
     win.best_val_y = win.last_epoch_val_loss
-    win.update_runtime()
+    win._update_runtime()
 
     win.close()
 
     # Make sure the first monitor released its zmq socket
-    win2 = LossViewer()
+    controller_port = 9191
+    zmq_ports = dict(controller_port=controller_port)
+    win2 = LossViewer(zmq_ports=zmq_ports)
     win2.show()
+    assert win2.zmq_ports["controller_port"] == controller_port
+    assert win2.zmq_ports["publish_port"] == 9001
 
     # Make sure batches to show field is working correction
 
@@ -47,3 +53,14 @@ def test_monitor_release(qtbot, min_centroid_model_path):
     assert win2.batches_to_show == 200
 
     win2.close()
+
+    # Ensure zmq port is set correctly
+    controller_port = 9191
+    publish_port = 9101
+    zmq_ports = dict(controller_port=controller_port, publish_port=publish_port)
+    win3 = LossViewer(zmq_ports=zmq_ports)
+    win3.show()
+    assert win3.zmq_ports["controller_port"] == controller_port
+    assert win3.zmq_ports["publish_port"] == publish_port
+
+    win3.close()
diff --git a/tests/gui/test_suggestions.py b/tests/gui/test_suggestions.py
index bbad73179..196ff2d35 100644
--- a/tests/gui/test_suggestions.py
+++ b/tests/gui/test_suggestions.py
@@ -24,6 +24,20 @@ def test_velocity_suggestions(centered_pair_predictions):
     assert suggestions[1].frame_idx == 45
 
 
+def test_max_point_displacement_suggestions(centered_pair_predictions):
+    suggestions = VideoFrameSuggestions.suggest(
+        labels=centered_pair_predictions,
+        params=dict(
+            videos=centered_pair_predictions.videos,
+            method="max_point_displacement",
+            displacement_threshold=6,
+        ),
+    )
+    assert len(suggestions) == 19
+    assert suggestions[0].frame_idx == 28
+    assert suggestions[1].frame_idx == 82
+
+
 def test_frame_increment(centered_pair_predictions: Labels):
     # Testing videos that have less frames than desired Samples per Video (stride)
     # Expected result is there should be n suggestions where n is equal to the frames
diff --git a/tests/gui/test_video_player.py b/tests/gui/test_video_player.py
index b0661a4e1..c246f0489 100644
--- a/tests/gui/test_video_player.py
+++ b/tests/gui/test_video_player.py
@@ -3,14 +3,13 @@
 from sleap.gui.widgets.video import (
     QtVideoPlayer,
     GraphicsView,
-    QtInstance,
     QtVideoPlayer,
     QtTextWithBackground,
     VisibleBoundingBox,
 )
 
 from qtpy import QtCore, QtWidgets
-from qtpy.QtGui import QColor
+from qtpy.QtGui import QColor, QWheelEvent
 
 
 def test_gui_video(qtbot):
@@ -20,10 +19,6 @@ def test_gui_video(qtbot):
 
     assert vp.close()
 
-    # Click the button 20 times
-    # for i in range(20):
-    #     qtbot.mouseClick(vp.btn, QtCore.Qt.LeftButton)
-
 
 def test_gui_video_instances(qtbot, small_robot_mp4_vid, centered_pair_labels):
     vp = QtVideoPlayer(small_robot_mp4_vid)
@@ -144,3 +139,40 @@ def test_VisibleBoundingBox(qtbot, centered_pair_labels):
     # Check if bounding box scaled appropriately
     assert inst.box.rect().width() - initial_width == 2 * dx
     assert inst.box.rect().height() - initial_height == 2 * dy
+
+
+def test_wheelEvent(qtbot):
+    """Test the wheelEvent method of the GraphicsView class."""
+    graphics_view = GraphicsView()
+
+    # Create a QWheelEvent
+    position = QtCore.QPointF(100, 100)  # The position of the wheel event
+    global_position = QtCore.QPointF(100, 100)  # The global position of the wheel event
+    pixel_delta = QtCore.QPoint(0, 120)  # The distance in pixels the wheel is rotated
+    angle_delta = QtCore.QPoint(0, 120)  # The distance in degrees the wheel is rotated
+    buttons = QtCore.Qt.NoButton  # No mouse button is pressed
+    modifiers = QtCore.Qt.NoModifier  # No keyboard modifier is pressed
+    phase = QtCore.Qt.ScrollUpdate  # The phase of the scroll event
+    inverted = False  # The scroll direction is not inverted
+    source = (
+        QtCore.Qt.MouseEventNotSynthesized
+    )  # The event is not synthesized from a touch or tablet event
+
+    event = QWheelEvent(
+        position,
+        global_position,
+        pixel_delta,
+        angle_delta,
+        buttons,
+        modifiers,
+        phase,
+        inverted,
+        source,
+    )
+
+    # Call the wheelEvent method
+    print(
+        "Testing GraphicsView.wheelEvent which will result in exit code 127 "
+        "originating from a segmentation fault if it fails."
+    )
+    graphics_view.wheelEvent(event)
diff --git a/tests/gui/widgets/test_docks.py b/tests/gui/widgets/test_docks.py
index 69fe56a56..d5c16a763 100644
--- a/tests/gui/widgets/test_docks.py
+++ b/tests/gui/widgets/test_docks.py
@@ -1,15 +1,17 @@
 """Module for testing dock widgets for the `MainWindow`."""
 
 from pathlib import Path
-import pytest
+
+import numpy as np
+
 from sleap import Labels, Video
 from sleap.gui.app import MainWindow
-from sleap.gui.commands import OpenSkeleton
+from sleap.gui.commands import AddInstance, OpenSkeleton
 from sleap.gui.widgets.docks import (
     InstancesDock,
+    SkeletonDock,
     SuggestionsDock,
     VideosDock,
-    SkeletonDock,
 )
 
 
@@ -99,11 +101,35 @@ def test_suggestions_dock(qtbot):
     assert dock.wgt_layout is dock.widget().layout()
 
 
-def test_instances_dock(qtbot):
+def test_instances_dock(qtbot, centered_pair_predictions: Labels):
     """Test the `DockWidget` class."""
-    main_window = MainWindow()
+    main_window = MainWindow(labels=centered_pair_predictions)
+    labels = main_window.labels
+    context = main_window.commands
+    lf = context.state["labeled_frame"]
     dock = InstancesDock(main_window)
 
     assert dock.name == "Instances"
     assert dock.main_window is main_window
     assert dock.wgt_layout is dock.widget().layout()
+
+    # Test new instance button
+
+    offset = 10
+
+    # Find instance that we will copy from
+    (
+        copy_instance,
+        from_predicted,
+        from_prev_frame,
+    ) = AddInstance.find_instance_to_copy_from(
+        context, copy_instance=None, init_method="best"
+    )
+    n_instance = len(lf.instances)
+    dock.main_window._buttons["new instance"].click()
+
+    # Check that new instance was added with offset
+    assert len(lf.instances) == n_instance + 1
+    new_inst = lf.instances[-1]
+    diff = np.nan_to_num(new_inst.numpy() - copy_instance.numpy(), nan=offset)
+    assert np.all(diff == offset)
diff --git a/tests/info/test_metrics.py b/tests/info/test_metrics.py
new file mode 100644
index 000000000..0d2e097e6
--- /dev/null
+++ b/tests/info/test_metrics.py
@@ -0,0 +1,55 @@
+import numpy as np
+
+from sleap import Labels
+from sleap.info.metrics import (
+    match_instance_lists_nodewise,
+    matched_instance_distances,
+)
+
+
+def test_matched_instance_distances(centered_pair_labels, centered_pair_predictions):
+    labels_gt = centered_pair_labels
+    labels_pr = centered_pair_predictions
+
+    # Match each ground truth instance node to the closest corresponding node
+    # from any predicted instance in the same frame.
+
+    inst_matching_func = match_instance_lists_nodewise
+
+    # Calculate distances
+    frame_idxs, D, points_gt, points_pr = matched_instance_distances(
+        labels_gt, labels_pr, inst_matching_func
+    )
+
+    # Show mean difference for each node
+    node_names = labels_gt.skeletons[0].node_names
+    expected_values = {
+        "head": 0.872426920709296,
+        "neck": 0.8016280746914615,
+        "thorax": 0.8602021363390538,
+        "abdomen": 1.01012200038258,
+        "wingL": 1.1297727023475939,
+        "wingR": 1.0869857897008424,
+        "forelegL1": 0.780584225081443,
+        "forelegL2": 1.170805798894702,
+        "forelegL3": 1.1020486509389473,
+        "forelegR1": 0.9014698776116817,
+        "forelegR2": 0.9448001033112047,
+        "forelegR3": 1.308385214215777,
+        "midlegL1": 0.9095691623265347,
+        "midlegL2": 1.2203595627907582,
+        "midlegL3": 0.9813843358470163,
+        "midlegR1": 0.9871017182813739,
+        "midlegR2": 1.0209829335569256,
+        "midlegR3": 1.0990681234096988,
+        "hindlegL1": 1.0005335192834348,
+        "hindlegL2": 1.273539518539708,
+        "hindlegL3": 1.1752245985832817,
+        "hindlegR1": 1.1402833959265248,
+        "hindlegR2": 1.3143221301212737,
+        "hindlegR3": 1.0441458592503365,
+    }
+
+    for node_idx, node_name in enumerate(node_names):
+        mean_d = np.nanmean(D[..., node_idx])
+        assert np.isclose(mean_d, expected_values[node_name], atol=1e-6)
diff --git a/tests/info/test_summary.py b/tests/info/test_summary.py
index 2cf76c166..672d97e63 100644
--- a/tests/info/test_summary.py
+++ b/tests/info/test_summary.py
@@ -37,6 +37,19 @@ def test_frame_statistics(simple_predictions):
 
     x = stats.get_point_displacement_series(video, "max")
     assert len(x) == 2
-    assert len(x) == 2
     assert x[0] == 0
     assert x[1] == 18.0
+
+
+def test_get_tracking_score_series(min_tracks_2node_predictions):
+
+    stats = StatisticSeries(min_tracks_2node_predictions)
+    x = stats.get_tracking_score_series(min_tracks_2node_predictions.video, "min")
+    assert len(x) == 1500
+    assert x[0] == 0.9999966621398926
+    assert x[1000] == 0.9998022317886353
+
+    x = stats.get_tracking_score_series(min_tracks_2node_predictions.video, "mean")
+    assert len(x) == 1500
+    assert x[0] == 0.9999983310699463
+    assert x[1000] == 0.9999011158943176
diff --git a/tests/io/test_asyncvideo.py b/tests/io/test_asyncvideo.py
deleted file mode 100644
index 1bc3f19c8..000000000
--- a/tests/io/test_asyncvideo.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import pytest
-import sys
-from sleap import Video
-from sleap.io.asyncvideo import AsyncVideo
-
-
-@pytest.mark.skipif(
-    sys.platform.startswith("win"), reason="ZMQ testing breaks locally on Windows"
-)
-def test_async_video(centered_pair_vid, small_robot_mp4_vid):
-    async_video = AsyncVideo.from_video(centered_pair_vid, frames_per_chunk=23)
-
-    all_idxs = []
-    for idxs, frames in async_video.chunks:
-        assert len(idxs) in (23, 19)  # 19 for last chunk
-        all_idxs.extend(idxs)
-
-        assert frames.shape[0] == len(idxs)
-        assert frames.shape[1:] == centered_pair_vid.shape[1:]
-
-    assert len(all_idxs) == centered_pair_vid.num_frames
-
-    # make sure we can load another video (i.e., previous video closed)
-
-    async_video = AsyncVideo.from_video(
-        small_robot_mp4_vid, frame_idxs=range(0, 10, 2), frames_per_chunk=10
-    )
-
-    for idxs, frames in async_video.chunks:
-        # there should only be single chunk
-        assert idxs == list(range(0, 10, 2))
diff --git a/tests/io/test_convert.py b/tests/io/test_convert.py
index da1971c11..738c3d625 100644
--- a/tests/io/test_convert.py
+++ b/tests/io/test_convert.py
@@ -8,7 +8,7 @@
 import pytest
 
 
-@pytest.mark.parametrize("format", ["analysis", "analysis.nix"])
+@pytest.mark.parametrize("format", ["analysis", "analysis.nix", "analysis.csv"])
 def test_analysis_format(
     min_labels_slp: Labels,
     min_labels_slp_path: Labels,
@@ -27,7 +27,7 @@ def generate_filenames(paths, format="analysis"):
         labels_path = str(slp_path)
         fn = re.sub("(\\.json(\\.zip)?|\\.h5|\\.slp)$", "", labels_path)
         fn = PurePath(fn)
-        out_suffix = "nix" if "nix" in format else "h5"
+        out_suffix = "nix" if "nix" in format else "csv" if "csv" in format else "h5"
         default_names = [
             default_analysis_filename(
                 labels=labels,
diff --git a/tests/io/test_dataset.py b/tests/io/test_dataset.py
index 5592ae437..d71d4cc83 100644
--- a/tests/io/test_dataset.py
+++ b/tests/io/test_dataset.py
@@ -1,9 +1,11 @@
 import os
+import pandas as pd
 import pytest
 import numpy as np
 from pathlib import Path, PurePath
 
 import sleap
+from sleap.info.write_tracking_h5 import get_nodes_as_np_strings
 from sleap.skeleton import Skeleton
 from sleap.instance import Instance, Point, LabeledFrame, PredictedInstance, Track
 from sleap.io.video import Video, MediaVideo
@@ -1234,7 +1236,7 @@ def test_has_frame():
 @pytest.fixture
 def removal_test_labels():
     skeleton = Skeleton()
-    video = Video(backend=MediaVideo(filename="test"))
+    video = Video(backend=MediaVideo(filename="test.mp4"))
     lf_user_only = LabeledFrame(
         video=video, frame_idx=0, instances=[Instance(skeleton=skeleton)]
     )
@@ -1559,3 +1561,45 @@ def test_export_nwb(centered_pair_predictions: Labels, tmpdir):
     # Read from NWB file
     read_labels = NDXPoseAdaptor.read(NDXPoseAdaptor, filehandle.FileHandle(filename))
     assert_read_labels_match(centered_pair_predictions, read_labels)
+
+
+@pytest.mark.parametrize(
+    "labels_fixture_name",
+    [
+        "centered_pair_labels",
+        "centered_pair_predictions",
+        "min_labels",
+        "min_labels_slp",
+        "min_labels_robot",
+    ],
+)
+def test_export_csv(labels_fixture_name, tmpdir, request):
+    # Retrieve Labels fixture by name
+    labels_fixture = request.getfixturevalue(labels_fixture_name)
+
+    # Generate the filename for the CSV file
+    csv_filename = Path(tmpdir) / (labels_fixture_name + "_export.csv")
+
+    # Export to CSV file
+    labels_fixture.export_csv(str(csv_filename))
+
+    # Assert that the CSV file was created
+    assert csv_filename.is_file(), f"CSV file '{csv_filename}' was not created"
+
+
+def test_exported_csv(tmpdir, min_labels_slp, minimal_instance_predictions_csv_path):
+    # Construct the filename for the CSV file
+    filename_csv = Path(tmpdir) / "minimal_instance_predictions_export.csv"
+    labels = min_labels_slp
+    # Export to CSV file
+    labels.export_csv(filename_csv)
+    # Read the CSV file
+    labels_csv = pd.read_csv(filename_csv)
+
+    # Read the csv file fixture
+    csv_predictions = pd.read_csv(minimal_instance_predictions_csv_path)
+
+    assert labels_csv.equals(csv_predictions)
+
+    # check number of cols
+    assert len(labels_csv.columns) - 3 == len(get_nodes_as_np_strings(labels)) * 3
diff --git a/tests/io/test_formats.py b/tests/io/test_formats.py
index a89bf60d7..cee754b7c 100644
--- a/tests/io/test_formats.py
+++ b/tests/io/test_formats.py
@@ -19,6 +19,19 @@
 from sleap.gui.app import MainWindow
 from sleap.gui.state import GuiState
 from sleap.info.write_tracking_h5 import get_nodes_as_np_strings
+from sleap.io.format.sleap_analysis import SleapAnalysisAdaptor
+
+
+def test_sleap_analysis_read(small_robot_3_frame_vid, small_robot_3_frame_hdf5):
+
+    # Single instance hdf5 analysis file test
+    read_labels = SleapAnalysisAdaptor.read(
+        file=small_robot_3_frame_hdf5, video=small_robot_3_frame_vid
+    )
+
+    assert len(read_labels.videos) == 1
+    assert len(read_labels.tracks) == 1
+    assert len(read_labels.skeletons) == 1
 
 
 def test_text_adaptor(tmpdir):
@@ -198,7 +211,6 @@ def test_matching_adaptor(centered_pair_predictions_hdf5_path):
     [
         "tests/data/dlc/labeled-data/video/madlc_testdata.csv",
         "tests/data/dlc/labeled-data/video/madlc_testdata_v2.csv",
-        "tests/data/dlc/madlc_230_config.yaml",
     ],
 )
 def test_madlc(test_data):
@@ -232,6 +244,78 @@ def test_madlc(test_data):
     assert labels[2].frame_idx == 3
 
 
+@pytest.mark.parametrize(
+    "test_data",
+    [
+        "tests/data/dlc/labeled-data/video/maudlc_testdata.csv",
+        "tests/data/dlc/labeled-data/video/maudlc_testdata_v2.csv",
+        "tests/data/dlc/madlc_230_config.yaml",
+    ],
+)
+def test_maudlc(test_data):
+    labels = read(
+        test_data,
+        for_object="labels",
+        as_format="deeplabcut",
+    )
+
+    assert labels.skeleton.node_names == ["A", "B", "C", "D", "E"]
+    assert len(labels.videos) == 1
+    assert len(labels.video.filenames) == 4
+    assert labels.videos[0].filenames[0].endswith("img000.png")
+    assert labels.videos[0].filenames[1].endswith("img001.png")
+    assert labels.videos[0].filenames[2].endswith("img002.png")
+    assert labels.videos[0].filenames[3].endswith("img003.png")
+
+    # Assert frames without any coor are not labeled
+    assert len(labels) == 3
+
+    # Assert number of instances per frame is correct
+    assert len(labels[0]) == 2
+    assert len(labels[1]) == 3
+    assert len(labels[2]) == 2
+
+    assert_array_equal(
+        labels[0][0].numpy(),
+        [[0, 1], [2, 3], [4, 5], [np.nan, np.nan], [np.nan, np.nan]],
+    )
+    assert_array_equal(
+        labels[0][1].numpy(),
+        [[6, 7], [8, 9], [10, 11], [np.nan, np.nan], [np.nan, np.nan]],
+    )
+    assert_array_equal(
+        labels[1][0].numpy(),
+        [[12, 13], [np.nan, np.nan], [15, 16], [np.nan, np.nan], [np.nan, np.nan]],
+    )
+    assert_array_equal(
+        labels[1][1].numpy(),
+        [[17, 18], [np.nan, np.nan], [20, 21], [np.nan, np.nan], [np.nan, np.nan]],
+    )
+    assert_array_equal(
+        labels[1][2].numpy(),
+        [[np.nan, np.nan], [np.nan, np.nan], [np.nan, np.nan], [22, 23], [24, 25]],
+    )
+    assert_array_equal(
+        labels[2][0].numpy(),
+        [[26, 27], [28, 29], [30, 31], [np.nan, np.nan], [np.nan, np.nan]],
+    )
+    assert_array_equal(
+        labels[2][1].numpy(),
+        [[np.nan, np.nan], [np.nan, np.nan], [np.nan, np.nan], [32, 33], [34, 35]],
+    )
+    assert labels[2].frame_idx == 3
+
+    # Assert tracks are correct
+    assert len(labels.tracks) == 3
+    sorted_animals = sorted(["Animal1", "Animal2", "single"])
+    assert sorted([t.name for t in labels.tracks]) == sorted_animals
+    for t in labels.tracks:
+        if t.name == "single":
+            assert t.spawned_on == 1
+        else:
+            assert t.spawned_on == 0
+
+
 @pytest.mark.parametrize(
     "test_data",
     [
diff --git a/tests/io/test_videowriter.py b/tests/io/test_videowriter.py
index dea193117..35d9bc6df 100644
--- a/tests/io/test_videowriter.py
+++ b/tests/io/test_videowriter.py
@@ -1,5 +1,7 @@
 import os
-from sleap.io.videowriter import VideoWriter, VideoWriterOpenCV
+import cv2
+from pathlib import Path
+from sleap.io.videowriter import VideoWriter, VideoWriterOpenCV, VideoWriterImageio
 
 
 def test_video_writer(tmpdir, small_robot_mp4_vid):
@@ -38,3 +40,62 @@ def test_cv_video_writer(tmpdir, small_robot_mp4_vid):
     writer.close()
 
     assert os.path.exists(out_path)
+
+
+def test_imageio_video_writer_avi(tmpdir, small_robot_mp4_vid):
+    out_path = Path(tmpdir) / "clip.avi"
+
+    # Make sure imageio video writer works
+    writer = VideoWriterImageio(
+        out_path,
+        height=small_robot_mp4_vid.height,
+        width=small_robot_mp4_vid.width,
+        fps=small_robot_mp4_vid.fps,
+    )
+
+    writer.add_frame(small_robot_mp4_vid[0][0])
+    writer.add_frame(small_robot_mp4_vid[1][0])
+
+    writer.close()
+
+    assert os.path.exists(out_path)
+    # Check attributes
+    assert writer.height == small_robot_mp4_vid.height
+    assert writer.width == small_robot_mp4_vid.width
+    assert writer.fps == small_robot_mp4_vid.fps
+    assert writer.filename == out_path
+    assert writer.crf == 21
+    assert writer.preset == "superfast"
+
+
+def test_imageio_video_writer_odd_size(tmpdir, movenet_video):
+    out_path = Path(tmpdir) / "clip.mp4"
+
+    # Reduce the size of the video frames by 1 pixel in each dimension
+    reduced_height = movenet_video.height - 1
+    reduced_width = movenet_video.width - 1
+
+    # Initialize the writer with the reduced dimensions
+    writer = VideoWriterImageio(
+        out_path,
+        height=reduced_height,
+        width=reduced_width,
+        fps=movenet_video.fps,
+    )
+
+    # Resize frames and add them to the video
+    for i in range(len(movenet_video) - 1):
+        frame = movenet_video[i][0]  # Access the actual frame object
+        reduced_frame = cv2.resize(frame, (reduced_width, reduced_height))
+        writer.add_frame(reduced_frame)
+
+    writer.close()
+
+    # Assertions to validate the test
+    assert os.path.exists(out_path)
+    assert writer.height == reduced_height
+    assert writer.width == reduced_width
+    assert writer.fps == movenet_video.fps
+    assert writer.filename == out_path
+    assert writer.crf == 21
+    assert writer.preset == "superfast"
diff --git a/tests/io/test_visuals.py b/tests/io/test_visuals.py
index d6144e2c1..a1223bfdf 100644
--- a/tests/io/test_visuals.py
+++ b/tests/io/test_visuals.py
@@ -1,6 +1,7 @@
 import numpy as np
 import os
 import pytest
+import cv2
 from sleap.io.dataset import Labels
 from sleap.io.visuals import (
     save_labeled_video,
@@ -63,6 +64,46 @@ def test_serial_pipeline(centered_pair_predictions, tmpdir):
     )
 
 
+@pytest.mark.parametrize("background", ["original", "black", "white", "grey"])
+def test_sleap_render_with_different_backgrounds(background):
+    args = (
+        f"-o test_{background}.avi -f 2 --scale 1.2 --frames 1,2 --video-index 0 "
+        f"--background {background} "
+        "tests/data/json_format_v2/centered_pair_predictions.json".split()
+    )
+    sleap_render(args)
+    assert (
+        os.path.exists(f"test_{background}.avi")
+        and os.path.getsize(f"test_{background}.avi") > 0
+    )
+
+    # Check if the background is set correctly if not original background
+    if background != "original":
+        saved_video_path = f"test_{background}.avi"
+        cap = cv2.VideoCapture(saved_video_path)
+        ret, frame = cap.read()
+
+        # Calculate mean color of the channels
+        b, g, r = cv2.split(frame)
+        mean_b = np.mean(b)
+        mean_g = np.mean(g)
+        mean_r = np.mean(r)
+
+        # Set threshold values. Color is white if greater than white threshold, black
+        # if less than grey threshold and grey if in between both threshold values.
+        white_threshold = 240
+        grey_threshold = 40
+
+        # Check if the average color is white, grey, or black
+        if all(val > white_threshold for val in [mean_b, mean_g, mean_r]):
+            background_color = "white"
+        elif all(val < grey_threshold for val in [mean_b, mean_g, mean_r]):
+            background_color = "black"
+        else:
+            background_color = "grey"
+        assert background_color == background
+
+
 def test_sleap_render(centered_pair_predictions):
     args = (
         "-o testvis.avi -f 2 --scale 1.2 --frames 1,2 --video-index 0 "
diff --git a/tests/nn/architectures/test_common.py b/tests/nn/architectures/test_common.py
index a40d621ef..96db870ea 100644
--- a/tests/nn/architectures/test_common.py
+++ b/tests/nn/architectures/test_common.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import common
 
diff --git a/tests/nn/architectures/test_encoder_decoder.py b/tests/nn/architectures/test_encoder_decoder.py
index 3ce019371..8b8f51f0a 100644
--- a/tests/nn/architectures/test_encoder_decoder.py
+++ b/tests/nn/architectures/test_encoder_decoder.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import encoder_decoder
 
diff --git a/tests/nn/architectures/test_hourglass.py b/tests/nn/architectures/test_hourglass.py
index 4efe79a1c..c45ff1b91 100644
--- a/tests/nn/architectures/test_hourglass.py
+++ b/tests/nn/architectures/test_hourglass.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import hourglass
 from sleap.nn.config import HourglassConfig
diff --git a/tests/nn/architectures/test_leap.py b/tests/nn/architectures/test_leap.py
index edf07396b..9a73c80d5 100644
--- a/tests/nn/architectures/test_leap.py
+++ b/tests/nn/architectures/test_leap.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import leap
 from sleap.nn.config import LEAPConfig
diff --git a/tests/nn/architectures/test_pretrained_encoders.py b/tests/nn/architectures/test_pretrained_encoders.py
index f318754ac..b1f7e0af8 100644
--- a/tests/nn/architectures/test_pretrained_encoders.py
+++ b/tests/nn/architectures/test_pretrained_encoders.py
@@ -3,7 +3,7 @@
 import pytest
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import UnetPretrainedEncoder
 from sleap.nn.config import PretrainedEncoderConfig
diff --git a/tests/nn/architectures/test_resnet.py b/tests/nn/architectures/test_resnet.py
index 965ea3b72..b0d9d26eb 100644
--- a/tests/nn/architectures/test_resnet.py
+++ b/tests/nn/architectures/test_resnet.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import upsampling
 from sleap.nn.architectures import resnet
diff --git a/tests/nn/architectures/test_unet.py b/tests/nn/architectures/test_unet.py
index 98b6d7768..1dad7ea05 100644
--- a/tests/nn/architectures/test_unet.py
+++ b/tests/nn/architectures/test_unet.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.architectures import unet
 from sleap.nn.config import UNetConfig
diff --git a/tests/nn/config/test_config_utils.py b/tests/nn/config/test_config_utils.py
index 69e8ddec8..64d83a141 100644
--- a/tests/nn/config/test_config_utils.py
+++ b/tests/nn/config/test_config_utils.py
@@ -4,7 +4,7 @@
 
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.config import utils
 
diff --git a/tests/nn/data/test_augmentation.py b/tests/nn/data/test_augmentation.py
index d2b468522..2b95a01a3 100644
--- a/tests/nn/data/test_augmentation.py
+++ b/tests/nn/data/test_augmentation.py
@@ -1,3 +1,4 @@
+import pytest
 import numpy as np
 import tensorflow as tf
 import sleap
@@ -9,14 +10,95 @@
 from sleap.nn.data import augmentation
 
 
+@pytest.fixture
+def dummy_instances_data_nans():
+    return np.full((2, 2), np.nan, dtype=np.float32)
+
+
+@pytest.fixture
+def dummy_instances_data_mixed():
+    return np.array([[0.1, np.nan], [0.0, 0.8]], dtype=np.float32)
+
+
+@pytest.fixture
+def dummy_image_data():
+    return np.zeros((100, 100, 3), dtype=np.uint8)
+
+
+@pytest.fixture
+def dummy_instances_data_zeros():
+    return np.zeros((2, 2), dtype=np.float32)
+
+
+@pytest.fixture
+def rotation_min_angle():
+    return 90
+
+
+@pytest.fixture
+def rotation_max_angle():
+    return 90
+
+
+@pytest.fixture
+def augmentation_config(rotation_min_angle, rotation_max_angle):
+    return augmentation.AugmentationConfig(
+        rotate=True,
+        rotation_min_angle=rotation_min_angle,
+        rotation_max_angle=rotation_max_angle,
+    )
+
+
+@pytest.fixture
+def dummy_dataset(dummy_image_data, dummy_instances_data_zeros):
+    dataset = tf.data.Dataset.from_tensor_slices(
+        {"image": [dummy_image_data], "instances": [dummy_instances_data_zeros]}
+    )
+    return dataset
+
+
+@pytest.fixture
+def augmenter(augmentation_config):
+    return augmentation.AlbumentationsAugmenter.from_config(augmentation_config)
+
+
+# Test class instantiation and augmentation
+@pytest.mark.parametrize(
+    "dummy_instances_data",
+    [
+        pytest.param("dummy_instances_data_zeros", id="zeros"),
+        pytest.param("dummy_instances_data_nans", id="nans"),
+        pytest.param("dummy_instances_data_mixed", id="mixed"),
+    ],
+)
+def test_albumentations_augmenter(
+    dummy_image_data, dummy_instances_data, augmenter, dummy_dataset
+):
+    # Apply augmentation
+    augmented_dataset = augmenter.transform_dataset(dummy_dataset)
+
+    # Check if augmentation is applied
+    augmented_example = next(iter(augmented_dataset))
+    assert augmented_example["image"].shape == (100, 100, 3)
+    assert augmented_example["instances"].shape == (2, 2)
+
+
+# Test class method from_config
+def test_albumentations_augmenter_from_config(augmentation_config):
+    augmenter = augmentation.AlbumentationsAugmenter.from_config(augmentation_config)
+    assert isinstance(augmenter, augmentation.AlbumentationsAugmenter)
+    assert augmenter.image_key == "image"
+    assert augmenter.instances_key == "instances"
+
+
 def test_augmentation(min_labels):
     labels_reader = providers.LabelsReader.from_user_instances(min_labels)
     ds = labels_reader.make_dataset()
     example_preaug = next(iter(ds))
 
-    augmenter = augmentation.ImgaugAugmenter.from_config(
+    augmenter = augmentation.AlbumentationsAugmenter.from_config(
         augmentation.AugmentationConfig(
-            rotate=True, rotation_min_angle=-90, rotation_max_angle=-90
+            rotate=True, rotation_min_angle=90, rotation_max_angle=90
         )
     )
     ds = augmenter.transform_dataset(ds)
@@ -52,13 +134,39 @@ def test_augmentation_with_no_instances(min_labels):
     )
 
     p = min_labels.to_pipeline(user_labeled_only=False)
-    p += augmentation.ImgaugAugmenter.from_config(
+    p += augmentation.AlbumentationsAugmenter.from_config(
         augmentation.AugmentationConfig(rotate=True)
     )
     exs = p.run()
     assert exs[-1]["instances"].shape[0] == 0
 
 
+def test_augmentation_edges(min_labels):
+    # Tests 1722
+    height, width = min_labels[0].video.shape[1:3]
+    min_labels[0].instances.append(
+        sleap.Instance.from_numpy(
+            [[0, 0], [width, height]],
+            skeleton=min_labels.skeleton,
+        )
+    )
+
+    labels_reader = providers.LabelsReader.from_user_instances(min_labels)
+    ds = labels_reader.make_dataset()
+    example_preaug = next(iter(ds))
+
+    augmenter = augmentation.AlbumentationsAugmenter.from_config(
+        augmentation.AugmentationConfig(
+            rotate=True, rotation_min_angle=90, rotation_max_angle=90
+        )
+    )
+    ds = augmenter.transform_dataset(ds)
+
+    example = next(iter(ds))
+    # TODO: check for correctness
+    assert example["instances"].shape == (3, 2, 2)
+
+
 def test_random_cropper(min_labels):
     cropper = augmentation.RandomCropper(crop_height=64, crop_width=32)
     assert "image" in cropper.input_keys
diff --git a/tests/nn/data/test_data_training.py b/tests/nn/data/test_data_training.py
index eb79464e0..c90a29365 100644
--- a/tests/nn/data/test_data_training.py
+++ b/tests/nn/data/test_data_training.py
@@ -3,7 +3,7 @@
 from sleap.nn.data.training import split_labels_train_val
 
 
-sleap.use_cpu_only()  # hide GPUs for test
+# sleap.use_cpu_only()  # hide GPUs for test
 
 
 def test_split_labels_train_val():
diff --git a/tests/nn/data/test_edge_maps.py b/tests/nn/data/test_edge_maps.py
index 295360538..5eb13f9b8 100644
--- a/tests/nn/data/test_edge_maps.py
+++ b/tests/nn/data/test_edge_maps.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.data import providers
 from sleap.nn.data import edge_maps
diff --git a/tests/nn/data/test_identity.py b/tests/nn/data/test_identity.py
index 52d25dd1b..224eff0ba 100644
--- a/tests/nn/data/test_identity.py
+++ b/tests/nn/data/test_identity.py
@@ -10,7 +10,7 @@
 )
 
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 def test_make_class_vectors():
diff --git a/tests/nn/data/test_instance_centroids.py b/tests/nn/data/test_instance_centroids.py
index 78dee251c..2d8f57627 100644
--- a/tests/nn/data/test_instance_centroids.py
+++ b/tests/nn/data/test_instance_centroids.py
@@ -3,7 +3,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 import sleap
 from sleap.nn.data import providers
diff --git a/tests/nn/data/test_instance_cropping.py b/tests/nn/data/test_instance_cropping.py
index b54fb0e99..688f50dbd 100644
--- a/tests/nn/data/test_instance_cropping.py
+++ b/tests/nn/data/test_instance_cropping.py
@@ -3,7 +3,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.data import providers
 from sleap.nn.data import instance_centroids
diff --git a/tests/nn/data/test_normalization.py b/tests/nn/data/test_normalization.py
index 20a1df4ec..d2eb7c290 100644
--- a/tests/nn/data/test_normalization.py
+++ b/tests/nn/data/test_normalization.py
@@ -3,7 +3,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.data import normalization
 from sleap.nn.data import providers
diff --git a/tests/nn/data/test_offset_regression.py b/tests/nn/data/test_offset_regression.py
index 31e688839..ce63894d6 100644
--- a/tests/nn/data/test_offset_regression.py
+++ b/tests/nn/data/test_offset_regression.py
@@ -4,7 +4,7 @@
 from sleap.nn.data import offset_regression
 
 
-sleap.use_cpu_only()  # hide GPUs for test
+# sleap.use_cpu_only()  # hide GPUs for test
 
 
 def test_make_offsets():
diff --git a/tests/nn/data/test_pipelines.py b/tests/nn/data/test_pipelines.py
index 30b67e13c..7d442c32d 100644
--- a/tests/nn/data/test_pipelines.py
+++ b/tests/nn/data/test_pipelines.py
@@ -3,7 +3,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 import sleap
 from sleap.nn.data import pipelines
diff --git a/tests/nn/data/test_providers.py b/tests/nn/data/test_providers.py
index 279244ea1..f30216e6a 100644
--- a/tests/nn/data/test_providers.py
+++ b/tests/nn/data/test_providers.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 import sleap
 from sleap.nn.data import providers
 
diff --git a/tests/nn/data/test_resizing.py b/tests/nn/data/test_resizing.py
index 440ca66d0..6ef15c2f1 100644
--- a/tests/nn/data/test_resizing.py
+++ b/tests/nn/data/test_resizing.py
@@ -1,14 +1,10 @@
 import pytest
 import numpy as np
 import tensorflow as tf
-from sleap.nn.system import use_cpu_only
-
-use_cpu_only()  # hide GPUs for test
-
 import sleap
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 from sleap.nn.data import resizing
 from sleap.nn.data import providers
 from sleap.nn.data.resizing import SizeMatcher
diff --git a/tests/nn/data/test_utils.py b/tests/nn/data/test_utils.py
index 213e357e8..7fa98a57a 100644
--- a/tests/nn/data/test_utils.py
+++ b/tests/nn/data/test_utils.py
@@ -2,7 +2,7 @@
 import tensorflow as tf
 from sleap.nn.system import use_cpu_only
 
-use_cpu_only()  # hide GPUs for test
+# use_cpu_only()  # hide GPUs for test
 
 from sleap.nn.data import utils
 
diff --git a/tests/nn/test_evals.py b/tests/nn/test_evals.py
index 265994056..48f0d69f8 100644
--- a/tests/nn/test_evals.py
+++ b/tests/nn/test_evals.py
@@ -20,7 +20,7 @@
 from sleap.nn.model import Model
 
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 def test_compute_oks():
diff --git a/tests/nn/test_heads.py b/tests/nn/test_heads.py
index 02fbc2737..a4acbb15f 100644
--- a/tests/nn/test_heads.py
+++ b/tests/nn/test_heads.py
@@ -21,7 +21,7 @@
 )
 
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 def test_single_instance_confmaps_head():
diff --git a/tests/nn/test_inference.py b/tests/nn/test_inference.py
index fe848bb1c..0a978de0a 100644
--- a/tests/nn/test_inference.py
+++ b/tests/nn/test_inference.py
@@ -3,12 +3,15 @@
 import zipfile
 from pathlib import Path
 from typing import cast
+import shutil
+import csv
 
 import numpy as np
 import pytest
+import pandas as pd
 import tensorflow as tf
-import tensorflow_hub as hub
 from numpy.testing import assert_array_equal, assert_allclose
+from sleap.io.video import available_video_exts
 
 import sleap
 from sleap.gui.learning import runners
@@ -50,6 +53,7 @@
     _make_tracker_from_cli,
     main as sleap_track,
     export_cli as sleap_export,
+    _make_export_cli_parser,
 )
 from sleap.nn.tracking import (
     MatchedFrameInstance,
@@ -60,7 +64,7 @@
 from sleap.instance import Track
 
 
-sleap.nn.system.use_cpu_only()
+# sleap.nn.system.use_cpu_only()
 
 
 @pytest.fixture
@@ -925,7 +929,7 @@ def test_load_model(resize_input_shape, model_fixture_name, request):
     predictor = load_model(model_path, resize_input_layer=resize_input_shape)
 
     # Determine predictor type
-    for (fname, mname, ptype, ishape) in fname_mname_ptype_ishape:
+    for fname, mname, ptype, ishape in fname_mname_ptype_ishape:
         if fname in model_fixture_name:
             expected_model_name = mname
             expected_predictor_type = ptype
@@ -966,7 +970,6 @@ def test_topdown_multi_size_inference(
 def test_ensure_numpy(
     min_centroid_model_path, min_centered_instance_model_path, min_labels_slp
 ):
-
     model = load_model([min_centroid_model_path, min_centered_instance_model_path])
 
     # each frame has same number of instances
@@ -1037,7 +1040,6 @@ def test_ensure_numpy(
 
 
 def test_centroid_inference():
-
     xv, yv = make_grid_vectors(image_height=12, image_width=12, output_stride=1)
     points = tf.cast([[[1.75, 2.75]], [[3.75, 4.75]], [[5.75, 6.75]]], tf.float32)
     cms = tf.expand_dims(make_multi_confmaps(points, xv, yv, sigma=1.5), axis=0)
@@ -1093,7 +1095,6 @@ def test_centroid_inference():
 
 
 def export_frozen_graph(model, preds, output_path):
-
     tensors = {}
 
     for key, val in preds.items():
@@ -1120,7 +1121,6 @@ def export_frozen_graph(model, preds, output_path):
             info = json.load(json_file)
 
         for tensor_info in info["frozen_model_inputs"] + info["frozen_model_outputs"]:
-
             saved_name = (
                 tensor_info.split("Tensor(")[1].split(", shape")[0].replace('"', "")
             )
@@ -1137,7 +1137,6 @@ def export_frozen_graph(model, preds, output_path):
 
 
 def test_single_instance_save(min_single_instance_robot_model_path, tmp_path):
-
     single_instance_model = tf.keras.models.load_model(
         min_single_instance_robot_model_path + "/best_model.h5", compile=False
     )
@@ -1152,7 +1151,6 @@ def test_single_instance_save(min_single_instance_robot_model_path, tmp_path):
 
 
 def test_centroid_save(min_centroid_model_path, tmp_path):
-
     centroid_model = tf.keras.models.load_model(
         min_centroid_model_path + "/best_model.h5", compile=False
     )
@@ -1171,7 +1169,6 @@ def test_centroid_save(min_centroid_model_path, tmp_path):
 def test_topdown_save(
     min_centroid_model_path, min_centered_instance_model_path, min_labels_slp, tmp_path
 ):
-
     centroid_model = tf.keras.models.load_model(
         min_centroid_model_path + "/best_model.h5", compile=False
     )
@@ -1195,7 +1192,6 @@ def test_topdown_save(
 def test_topdown_id_save(
     min_centroid_model_path, min_topdown_multiclass_model_path, min_labels_slp, tmp_path
 ):
-
     centroid_model = tf.keras.models.load_model(
         min_centroid_model_path + "/best_model.h5", compile=False
     )
@@ -1217,7 +1213,6 @@ def test_topdown_id_save(
 
 
 def test_single_instance_predictor_save(min_single_instance_robot_model_path, tmp_path):
-
     # directly initialize predictor
     predictor = SingleInstancePredictor.from_trained_models(
         min_single_instance_robot_model_path, resize_input_layer=False
@@ -1254,10 +1249,33 @@ def test_single_instance_predictor_save(min_single_instance_robot_model_path, tm
         )
 
 
+def test_make_export_cli():
+    models_path = r"psuedo/models/path"
+    export_path = r"psuedo/test/path"
+    max_instances = 5
+
+    parser = _make_export_cli_parser()
+
+    # Test default values
+    args = None
+    args, _ = parser.parse_known_args(args=args)
+    assert args.models is None
+    assert args.export_path == "exported_model"
+    assert not args.ragged
+    assert args.max_instances is None
+
+    # Test all arguments
+    cmd = f"-m {models_path} -e {export_path} -r -n {max_instances}"
+    args, _ = parser.parse_known_args(args=cmd.split())
+    assert args.models == [models_path]
+    assert args.export_path == export_path
+    assert args.ragged
+    assert args.max_instances == max_instances
+
+
 def test_topdown_predictor_save(
     min_centroid_model_path, min_centered_instance_model_path, tmp_path
 ):
-
     # directly initialize predictor
     predictor = TopDownPredictor.from_trained_models(
         centroid_model_path=min_centroid_model_path,
@@ -1300,7 +1318,6 @@ def test_topdown_predictor_save(
 def test_topdown_id_predictor_save(
     min_centroid_model_path, min_topdown_multiclass_model_path, tmp_path
 ):
-
     # directly initialize predictor
     predictor = TopDownMultiClassPredictor.from_trained_models(
         centroid_model_path=min_centroid_model_path,
@@ -1358,7 +1375,7 @@ def test_retracking(
     # Create sleap-track command
     cmd = (
         f"{slp_path} --tracking.tracker {tracker_method} --video.index 0 --frames 1-3 "
-        "--cpu"
+        "--tracking.similarity object_keypoint --cpu"
     )
     if tracker_method == "flow":
         cmd += " --tracking.save_shifted_instances 1"
@@ -1378,6 +1395,8 @@ def test_retracking(
         parser = _make_cli_parser()
         args, _ = parser.parse_known_args(args=args)
         tracker = _make_tracker_from_cli(args)
+        # Additional check for similarity method
+        assert tracker.similarity_function.__name__ == "object_keypoint_similarity"
         output_path = f"{slp_path}.{tracker.get_name()}.slp"
 
     # Assert tracked predictions file exists
@@ -1433,7 +1452,49 @@ def test_make_predictor_from_cli(
             assert predictor.max_instances == 5
 
 
-def test_sleap_track(
+def test_make_predictor_from_cli_mult_input(
+    centered_pair_predictions: Labels,
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    min_bottomup_model_path: str,
+    tmpdir,
+):
+    slp_path = tmpdir.mkdir("slp_directory")
+
+    slp_file = slp_path / "old_slp.slp"
+    Labels.save(centered_pair_predictions, slp_file)
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    for i in range(num_copies):
+        # Construct the destination path with a unique name for the video
+
+        # Construct the destination path with a unique name for the SLP file
+        slp_dest_path = slp_path / f"old_slp_copy_{i}.slp"
+        shutil.copy(slp_file, slp_dest_path)
+
+    # Create sleap-track command
+    model_args = [
+        f"--model {min_centroid_model_path} --model {min_centered_instance_model_path}",
+        f"--model {min_bottomup_model_path}",
+    ]
+    for model_arg in model_args:
+        args = (
+            f"{slp_path} {model_arg} --video.index 0 --frames 1-3 "
+            "--cpu --max_instances 5"
+        ).split()
+        parser = _make_cli_parser()
+        args, _ = parser.parse_known_args(args=args)
+
+        # Create predictor
+        predictor = _make_predictor_from_cli(args=args)
+        if isinstance(predictor, TopDownPredictor):
+            assert predictor.inference_model.centroid_crop.max_instances == 5
+        elif isinstance(predictor, BottomUpPredictor):
+            assert predictor.max_instances == 5
+
+
+def test_sleap_track_single_input(
     centered_pair_predictions: Labels,
     min_centroid_model_path: str,
     min_centered_instance_model_path: str,
@@ -1452,7 +1513,7 @@ def test_sleap_track(
     sleap_track(args=args)
 
     # Assert predictions file exists
-    output_path = f"{slp_path}.predictions.slp"
+    output_path = Path(slp_path).with_suffix(".predictions.slp")
     assert Path(output_path).exists()
 
     # Create invalid sleap-track command
@@ -1461,9 +1522,398 @@ def test_sleap_track(
         sleap_track(args=args)
 
 
-def test_flow_tracker(centered_pair_predictions: Labels, tmpdir):
+@pytest.mark.parametrize("tracking", ["simple", "flow", "None"])
+def test_sleap_track_mult_input_slp(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    tmpdir,
+    centered_pair_predictions: Labels,
+    tracking,
+):
+    # Create temporary directory with the structured video files
+    slp_path = tmpdir.mkdir("slp_directory")
+
+    slp_file = slp_path / "old_slp.slp"
+    Labels.save(centered_pair_predictions, slp_file)
+
+    slp_path_obj = Path(slp_path)
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    for i in range(num_copies):
+        # Construct the destination path with a unique name for the SLP file
+        slp_dest_path = slp_path / f"old_slp_copy_{i}.slp"
+        shutil.copy(slp_file, slp_dest_path)
+
+    # Create sleap-track command
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker {tracking} "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    slp_path_list = [file for file in slp_path_obj.iterdir() if file.is_file()]
+
+    # Run inference
+    sleap_track(args=args)
+
+    # Assert predictions file exists
+    expected_extensions = available_video_exts()
+
+    for file_path in slp_path_list:
+        if file_path.suffix in expected_extensions:
+            expected_output_file = Path(file_path).with_suffix(".predictions.slp")
+            assert Path(expected_output_file).exists()
+
+
+@pytest.mark.parametrize("tracking", ["simple", "flow", "None"])
+def test_sleap_track_mult_input_slp_mp4(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    centered_pair_vid_path,
+    tracking,
+    tmpdir,
+    centered_pair_predictions: Labels,
+):
+    # Create temporary directory with the structured video files
+    slp_path = tmpdir.mkdir("slp_mp4_directory")
+
+    slp_file = slp_path / "old_slp.slp"
+    Labels.save(centered_pair_predictions, slp_file)
+
+    # Copy and paste the video into temp dir multiple times
+    num_copies = 3
+    for i in range(num_copies):
+        # Construct the destination path with a unique name
+        dest_path = slp_path / f"centered_pair_vid_copy_{i}.mp4"
+        shutil.copy(centered_pair_vid_path, dest_path)
+
+    slp_path_obj = Path(slp_path)
+
+    # Create sleap-track command
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker {tracking} "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    slp_path_list = [file for file in slp_path_obj.iterdir() if file.is_file()]
+
+    # Run inference
+    sleap_track(args=args)
+
+    expected_extensions = available_video_exts()
+
+    for file_path in slp_path_list:
+        if file_path.suffix in expected_extensions:
+            expected_output_file = Path(file_path).with_suffix(".predictions.slp")
+            assert Path(expected_output_file).exists()
+
+
+@pytest.mark.parametrize("tracking", ["simple", "flow", "None"])
+def test_sleap_track_mult_input_mp4(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    centered_pair_vid_path,
+    tracking,
+    tmpdir,
+):
+
+    # Create temporary directory with the structured video files
+    slp_path = tmpdir.mkdir("mp4_directory")
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    for i in range(num_copies):
+        # Construct the destination path with a unique name
+        dest_path = slp_path / f"centered_pair_vid_copy_{i}.mp4"
+        shutil.copy(centered_pair_vid_path, dest_path)
+
+    slp_path_obj = Path(slp_path)
+
+    # Create sleap-track command
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker {tracking} "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    slp_path_list = [file for file in slp_path_obj.iterdir() if file.is_file()]
+
+    # Run inference
+    sleap_track(args=args)
+
+    # Assert predictions file exists
+    expected_extensions = available_video_exts()
+
+    for file_path in slp_path_list:
+        if file_path.suffix in expected_extensions:
+            expected_output_file = Path(file_path).with_suffix(".predictions.slp")
+            assert Path(expected_output_file).exists()
+
+
+def test_sleap_track_output_mult(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    centered_pair_vid_path,
+    tmpdir,
+):
+
+    output_path = tmpdir.mkdir("output_directory")
+    output_path_obj = Path(output_path)
+
+    # Create temporary directory with the structured video files
+    slp_path = tmpdir.mkdir("mp4_directory")
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    for i in range(num_copies):
+        # Construct the destination path with a unique name
+        dest_path = slp_path / f"centered_pair_vid_copy_{i}.mp4"
+        shutil.copy(centered_pair_vid_path, dest_path)
+
+    slp_path_obj = Path(slp_path)
+
+    # Create sleap-track command
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"-o {output_path} "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    slp_path_list = [file for file in slp_path_obj.iterdir() if file.is_file()]
+
+    # Run inference
+    sleap_track(args=args)
+    slp_path = Path(slp_path)
+
+    # Check if there are any files in the directory
+    expected_extensions = available_video_exts()
+
+    for file_path in slp_path_list:
+        if file_path.suffix in expected_extensions:
+            expected_output_file = output_path_obj / (
+                file_path.stem + ".predictions.slp"
+            )
+            assert Path(expected_output_file).exists()
+
+
+def test_sleap_track_invalid_output(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    centered_pair_vid_path,
+    centered_pair_predictions: Labels,
+    tmpdir,
+):
+
+    output_path = Path(tmpdir, "output_file.slp").as_posix()
+    Labels.save(centered_pair_predictions, output_path)
+
+    # Create temporary directory with the structured video files
+    slp_path = tmpdir.mkdir("mp4_directory")
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    for i in range(num_copies):
+        # Construct the destination path with a unique name
+        dest_path = slp_path / f"centered_pair_vid_copy_{i}.mp4"
+        shutil.copy(centered_pair_vid_path, dest_path)
+
+    # Create sleap-track command
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"-o {output_path} "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    # Run inference
+    with pytest.raises(ValueError):
+        sleap_track(args=args)
+
+
+def test_sleap_track_invalid_input(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+):
+
+    slp_path = ""
+
+    # Create sleap-track command
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    # Run inference
+    with pytest.raises(ValueError):
+        sleap_track(args=args)
+
+    # Test with a non-existent path
+    slp_path = "/path/to/nonexistent/file.mp4"
+
+    # Create sleap-track command for non-existent path
+    args = (
+        f"{slp_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    # Run inference and expect a ValueError for non-existent path
+    with pytest.raises(ValueError):
+        sleap_track(args=args)
+
+
+def test_sleap_track_csv_input(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    centered_pair_vid_path,
+    tmpdir,
+):
+
+    # Create temporary directory with the structured video files
+    slp_path = Path(tmpdir.mkdir("mp4_directory"))
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    file_paths = []
+    for i in range(num_copies):
+        # Construct the destination path with a unique name
+        dest_path = slp_path / f"centered_pair_vid_copy_{i}.mp4"
+        shutil.copy(centered_pair_vid_path, dest_path)
+        file_paths.append(dest_path)
+
+    # Generate output paths for each data_path
+    output_paths = [
+        file_path.with_suffix(".TESTpredictions.slp") for file_path in file_paths
+    ]
+
+    # Create a CSV file with the file paths
+    csv_file_path = slp_path / "file_paths.csv"
+    with open(csv_file_path, mode="w", newline="") as csv_file:
+        csv_writer = csv.writer(csv_file)
+        csv_writer.writerow(["data_path", "output_path"])
+        for data_path, output_path in zip(file_paths, output_paths):
+            csv_writer.writerow([data_path, output_path])
+
+    slp_path_obj = Path(slp_path)
+
+    # Create sleap-track command
+    args = (
+        f"{csv_file_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    slp_path_list = [file for file in slp_path_obj.iterdir() if file.is_file()]
+
+    # Run inference
+    sleap_track(args=args)
+
+    # Assert predictions file exists
+    expected_extensions = available_video_exts()
+
+    for file_path in slp_path_list:
+        if file_path.suffix in expected_extensions:
+            expected_output_file = file_path.with_suffix(".TESTpredictions.slp")
+            assert Path(expected_output_file).exists()
+
+
+def test_sleap_track_invalid_csv(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    tmpdir,
+):
+
+    # Create a CSV file with nonexistant data files
+    csv_nonexistant_files_path = tmpdir / "nonexistant_files.csv"
+    df_nonexistant_files = pd.DataFrame(
+        {"data_path": ["video1.mp4", "video2.mp4", "video3.mp4"]}
+    )
+    df_nonexistant_files.to_csv(csv_nonexistant_files_path, index=False)
+
+    # Create an empty CSV file
+    csv_empty_path = tmpdir / "empty.csv"
+    open(csv_empty_path, "w").close()
+
+    # Create sleap-track command for missing 'data_path' column
+    args_missing_column = (
+        f"{csv_nonexistant_files_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    # Run inference and expect ValueError for missing 'data_path' column
+    with pytest.raises(
+        ValueError,
+    ):
+        sleap_track(args=args_missing_column)
+
+    # Create sleap-track command for empty CSV file
+    args_empty = (
+        f"{csv_empty_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    # Run inference and expect ValueError for empty CSV file
+    with pytest.raises(ValueError):
+        sleap_track(args=args_empty)
+
+
+def test_sleap_track_text_file_input(
+    min_centroid_model_path: str,
+    min_centered_instance_model_path: str,
+    centered_pair_vid_path,
+    tmpdir,
+):
+
+    # Create temporary directory with the structured video files
+    slp_path = Path(tmpdir.mkdir("mp4_directory"))
+
+    # Copy and paste the video into the temp dir multiple times
+    num_copies = 3
+    file_paths = []
+    for i in range(num_copies):
+        # Construct the destination path with a unique name
+        dest_path = slp_path / f"centered_pair_vid_copy_{i}.mp4"
+        shutil.copy(centered_pair_vid_path, dest_path)
+        file_paths.append(dest_path)
+
+    # Create a text file with the file paths
+    txt_file_path = slp_path / "file_paths.txt"
+    with open(txt_file_path, mode="w") as txt_file:
+        for file_path in file_paths:
+            txt_file.write(f"{file_path}\n")
+
+    slp_path_obj = Path(slp_path)
+
+    # Create sleap-track command
+    args = (
+        f"{txt_file_path} --model {min_centroid_model_path} "
+        f"--tracking.tracker simple "
+        f"--model {min_centered_instance_model_path} --video.index 0 --frames 1-3 --cpu"
+    ).split()
+
+    slp_path_list = [file for file in slp_path_obj.iterdir() if file.is_file()]
+
+    # Run inference
+    sleap_track(args=args)
+
+    # Assert predictions file exists
+    expected_extensions = available_video_exts()
+
+    for file_path in slp_path_list:
+        if file_path.suffix in expected_extensions:
+            expected_output_file = Path(file_path).with_suffix(".predictions.slp")
+            assert Path(expected_output_file).exists()
+
+
+def test_flow_tracker(centered_pair_predictions_sorted: Labels, tmpdir):
     """Test flow tracker instances are pruned."""
-    labels: Labels = centered_pair_predictions
+    labels: Labels = centered_pair_predictions_sorted
     track_window = 5
 
     # Setup tracker
@@ -1473,17 +1923,20 @@ def test_flow_tracker(centered_pair_predictions: Labels, tmpdir):
     tracker.candidate_maker = cast(FlowCandidateMaker, tracker.candidate_maker)
 
     # Run tracking
-    frames = sorted(labels.labeled_frames, key=lambda lf: lf.frame_idx)
+    frames = labels.labeled_frames
 
     # Run tracking on subset of frames using psuedo-implementation of
     # sleap.nn.tracking.run_tracker
     for lf in frames[:20]:
-
         # Clear the tracks
         for inst in lf.instances:
             inst.track = None
 
-        track_args = dict(untracked_instances=lf.instances, img=lf.video[lf.frame_idx])
+        track_args = dict(
+            untracked_instances=lf.instances,
+            img=lf.video[lf.frame_idx],
+            img_hw=lf.image.shape[-3:-1],
+        )
         tracker.track(**track_args)
 
         # Check that saved instances are pruned to track window
@@ -1522,12 +1975,15 @@ def test_max_tracks_matching_queue(
     frames = sorted(labels.labeled_frames, key=lambda lf: lf.frame_idx)
 
     for lf in frames[:20]:
-
         # Clear the tracks
         for inst in lf.instances:
             inst.track = None
 
-        track_args = dict(untracked_instances=lf.instances, img=lf.video[lf.frame_idx])
+        track_args = dict(
+            untracked_instances=lf.instances,
+            img=lf.video[lf.frame_idx],
+            img_hw=lf.image.shape[-3:-1],
+        )
         tracker.track(**track_args)
 
         if trackername == "flowmaxtracks":
@@ -1583,8 +2039,7 @@ def test_movenet_predictor(min_dance_labels, movenet_video):
         [labels_pr[0][0].numpy(), labels_pr[1][0].numpy()], axis=0
     )
 
-    max_diff = np.nanmax(np.abs(points_gt - points_pr))
-    assert max_diff < 0.1
+    np.testing.assert_allclose(points_gt, points_pr, atol=0.75)
 
 
 @pytest.mark.parametrize(
diff --git a/tests/nn/test_inference_identity.py b/tests/nn/test_inference_identity.py
index 22be152ea..aaacfef61 100644
--- a/tests/nn/test_inference_identity.py
+++ b/tests/nn/test_inference_identity.py
@@ -9,7 +9,7 @@
 )
 
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 def test_group_class_peaks():
diff --git a/tests/nn/test_model.py b/tests/nn/test_model.py
index 329e5528f..6c60cb354 100644
--- a/tests/nn/test_model.py
+++ b/tests/nn/test_model.py
@@ -15,7 +15,7 @@
     ModelConfig,
 )
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 def test_model_from_config():
diff --git a/tests/nn/test_nn_utils.py b/tests/nn/test_nn_utils.py
index 15b9d4bf3..4e8703c05 100644
--- a/tests/nn/test_nn_utils.py
+++ b/tests/nn/test_nn_utils.py
@@ -6,7 +6,7 @@
 from sleap.nn.inference import TopDownPredictor
 from sleap.nn.utils import tf_linear_sum_assignment, match_points, reset_input_layer
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 def test_tf_linear_sum_assignment():
diff --git a/tests/nn/test_paf_grouping.py b/tests/nn/test_paf_grouping.py
index 4856c1fed..d9578bfa9 100644
--- a/tests/nn/test_paf_grouping.py
+++ b/tests/nn/test_paf_grouping.py
@@ -22,7 +22,7 @@
     assign_connections_to_instances,
 )
 
-sleap.nn.system.use_cpu_only()
+# sleap.nn.system.use_cpu_only()
 
 
 def test_get_connection_candidates():
diff --git a/tests/nn/test_peak_finding.py b/tests/nn/test_peak_finding.py
index 93beaa193..243653202 100644
--- a/tests/nn/test_peak_finding.py
+++ b/tests/nn/test_peak_finding.py
@@ -22,7 +22,7 @@
 )
 
 
-sleap.nn.system.use_cpu_only()
+# sleap.nn.system.use_cpu_only()
 
 
 def test_find_local_offsets():
diff --git a/tests/nn/test_system.py b/tests/nn/test_system.py
index fc95bb0ea..7b16f1219 100644
--- a/tests/nn/test_system.py
+++ b/tests/nn/test_system.py
@@ -4,13 +4,19 @@
 be available.
 """
 
-from sleap.nn.system import get_gpu_memory
-from sleap.nn.system import get_all_gpus
+from sleap.nn.system import (
+    get_gpu_memory,
+    get_all_gpus,
+    use_cpu_only,
+    use_gpu,
+    is_gpu_system,
+)
 import os
 import pytest
 import subprocess
 import tensorflow as tf
 import shutil
+import platform
 
 
 def test_get_gpu_memory():
@@ -93,3 +99,17 @@ def test_gpu_device_order():
     """Indirectly tests GPU device order by ensuring environment variable is set."""
 
     assert os.environ["CUDA_DEVICE_ORDER"] == "PCI_BUS_ID"
+
+
+@pytest.mark.skipif(
+    not ("arm64" in platform.platform()),
+    reason="Only test on macosx-arm64",
+)
+def test_reinitialize():
+    """This test tries to change the devices after they have been initialized."""
+    assert is_gpu_system()
+    use_gpu(0)
+    tf.zeros((1,)) + tf.ones((1,))
+    # The following would normally throw:
+    #   RuntimeError: Visible devices cannot be modified after being initialized
+    use_cpu_only()
diff --git a/tests/nn/test_tracker_components.py b/tests/nn/test_tracker_components.py
index f861241ee..0c7ba2b0a 100644
--- a/tests/nn/test_tracker_components.py
+++ b/tests/nn/test_tracker_components.py
@@ -9,23 +9,82 @@
     FrameMatches,
     greedy_matching,
 )
+from sleap.io.dataset import Labels
 
 from sleap.instance import PredictedInstance
 from sleap.skeleton import Skeleton
 
 
+def tracker_by_name(frames=None, **kwargs):
+    t = Tracker.make_tracker_by_name(**kwargs)
+    print(kwargs)
+    print(t.candidate_maker)
+    if frames is None:
+        t.track([])
+        t.final_pass([])
+        return
+
+    for lf in frames:
+        # Clear the tracks
+        for inst in lf.instances:
+            inst.track = None
+
+        track_args = dict(untracked_instances=lf.instances, img=lf.video[lf.frame_idx])
+        t.track(**track_args, img_hw=(1, 1))
+        t.final_pass(frames)
+
+
 @pytest.mark.parametrize(
     "tracker", ["simple", "flow", "simplemaxtracks", "flowmaxtracks"]
 )
-@pytest.mark.parametrize("similarity", ["instance", "iou", "centroid"])
+@pytest.mark.parametrize(
+    "similarity",
+    ["instance", "normalized_instance", "iou", "centroid", "object_keypoint"],
+)
 @pytest.mark.parametrize("match", ["greedy", "hungarian"])
 @pytest.mark.parametrize("count", [0, 2])
-def test_tracker_by_name(tracker, similarity, match, count):
-    t = Tracker.make_tracker_by_name(
-        "flow", "instance", "greedy", clean_instance_count=2
+def test_tracker_by_name(
+    centered_pair_predictions_sorted,
+    tracker,
+    similarity,
+    match,
+    count,
+):
+    # This is slow, so limit to 5 time points
+    frames = centered_pair_predictions_sorted[:5]
+
+    tracker_by_name(
+        frames=frames,
+        tracker=tracker,
+        similarity=similarity,
+        match=match,
+        max_tracks=count,
+    )
+
+
+@pytest.mark.parametrize(
+    "tracker", ["simple", "flow", "simplemaxtracks", "flowmaxtracks"]
+)
+@pytest.mark.parametrize("oks_score_weighting", ["True", "False"])
+@pytest.mark.parametrize("oks_normalization", ["all", "ref", "union"])
+def test_oks_tracker_by_name(
+    centered_pair_predictions_sorted,
+    tracker,
+    oks_score_weighting,
+    oks_normalization,
+):
+    # This is slow, so limit to 5 time points
+    frames = centered_pair_predictions_sorted[:5]
+
+    tracker_by_name(
+        frames=frames,
+        tracker=tracker,
+        similarity="object_keypoint",
+        matching="greedy",
+        oks_score_weighting=oks_score_weighting,
+        oks_normalization=oks_normalization,
+        max_tracks=2,
     )
-    t.track([])
-    t.final_pass([])
 
 
 def test_cull_instances(centered_pair_predictions):
@@ -232,7 +291,7 @@ def test_max_tracking_large_gap_single_track():
 
     tracked = []
     for insts in preds:
-        tracked_insts = tracker.track(insts)
+        tracked_insts = tracker.track(insts, img_hw=(1, 1))
         tracked.append(tracked_insts)
     all_tracks = list(set([inst.track for frame in tracked for inst in frame]))
 
@@ -249,7 +308,7 @@ def test_max_tracking_large_gap_single_track():
 
     tracked = []
     for insts in preds:
-        tracked_insts = tracker.track(insts)
+        tracked_insts = tracker.track(insts, img_hw=(1, 1))
         tracked.append(tracked_insts)
     all_tracks = list(set([inst.track for frame in tracked for inst in frame]))
 
@@ -296,7 +355,7 @@ def test_max_tracking_small_gap_on_both_tracks():
 
     tracked = []
     for insts in preds:
-        tracked_insts = tracker.track(insts)
+        tracked_insts = tracker.track(insts, img_hw=(1, 1))
         tracked.append(tracked_insts)
     all_tracks = list(set([inst.track for frame in tracked for inst in frame]))
 
@@ -313,7 +372,7 @@ def test_max_tracking_small_gap_on_both_tracks():
 
     tracked = []
     for insts in preds:
-        tracked_insts = tracker.track(insts)
+        tracked_insts = tracker.track(insts, img_hw=(1, 1))
         tracked.append(tracked_insts)
     all_tracks = list(set([inst.track for frame in tracked for inst in frame]))
 
@@ -365,7 +424,7 @@ def test_max_tracking_extra_detections():
 
     tracked = []
     for insts in preds:
-        tracked_insts = tracker.track(insts)
+        tracked_insts = tracker.track(insts, img_hw=(1, 1))
         tracked.append(tracked_insts)
     all_tracks = list(set([inst.track for frame in tracked for inst in frame]))
 
@@ -382,7 +441,7 @@ def test_max_tracking_extra_detections():
 
     tracked = []
     for insts in preds:
-        tracked_insts = tracker.track(insts)
+        tracked_insts = tracker.track(insts, img_hw=(1, 1))
         tracked.append(tracked_insts)
     all_tracks = list(set([inst.track for frame in tracked for inst in frame]))
 
diff --git a/tests/nn/test_tracking_integration.py b/tests/nn/test_tracking_integration.py
index a6592dc4d..625302fd0 100644
--- a/tests/nn/test_tracking_integration.py
+++ b/tests/nn/test_tracking_integration.py
@@ -102,7 +102,7 @@ def run_tracker(frames, tracker):
         new_lf = LabeledFrame(
             frame_idx=lf.frame_idx,
             video=lf.video,
-            instances=tracker.track(**track_args),
+            instances=tracker.track(**track_args, img_hw=lf.image.shape[-3:-1]),
         )
         new_lfs.append(new_lf)
 
@@ -138,6 +138,8 @@ def main(f, dir):
         instance=sleap.nn.tracker.components.instance_similarity,
         centroid=sleap.nn.tracker.components.centroid_distance,
         iou=sleap.nn.tracker.components.instance_iou,
+        normalized_instance=sleap.nn.tracker.components.normalized_instance_similarity,
+        object_keypoint=sleap.nn.tracker.components.factory_object_keypoint_similarity(),
     )
     scales = (
         1,
diff --git a/tests/nn/test_training.py b/tests/nn/test_training.py
index 55f404929..72db17bb5 100644
--- a/tests/nn/test_training.py
+++ b/tests/nn/test_training.py
@@ -25,7 +25,7 @@
     create_trainer_using_cli as sleap_train,
 )
 
-sleap.use_cpu_only()
+# sleap.use_cpu_only()
 
 
 @pytest.fixture
@@ -44,7 +44,7 @@ def cfg():
     cfg = TrainingJobConfig()
     cfg.data.instance_cropping.center_on_part = "A"
     cfg.model.backbone.unet = UNetConfig(
-        max_stride=8, output_stride=1, filters=8, filters_rate=1.0
+        max_stride=8, output_stride=1, filters=2, filters_rate=1.0
     )
     cfg.optimization.preload_data = False
     cfg.optimization.batch_size = 1
@@ -123,34 +123,61 @@ def test_train_load_single_instance(
             assert (w == w2).all()
 
 
-def test_train_single_instance(min_labels_robot, cfg):
+def test_train_single_instance(min_labels_robot, cfg, tmp_path):
     cfg.model.heads.single_instance = SingleInstanceConfmapsHeadConfig(
         sigma=1.5, output_stride=1, offset_refinement=False
     )
+
+    # Set save directory
+    cfg.outputs.run_name = "test_run"
+    cfg.outputs.runs_folder = str(tmp_path / "training_runs")  # ensure it's a string
+    cfg.outputs.save_visualizations = True
+    cfg.outputs.keep_viz_images = True
+    cfg.outputs.save_outputs = True  # enable saving
+
     trainer = SingleInstanceModelTrainer.from_config(
         cfg, training_labels=min_labels_robot
     )
     trainer.setup()
     trainer.train()
+
+    run_path = Path(cfg.outputs.runs_folder, cfg.outputs.run_name)
+    viz_path = run_path / "viz"
+
     assert trainer.keras_model.output_names[0] == "SingleInstanceConfmapsHead"
     assert tuple(trainer.keras_model.outputs[0].shape) == (None, 320, 560, 2)
+    assert viz_path.exists()
 
 
-def test_train_single_instance_with_offset(min_labels_robot, cfg):
+def test_train_single_instance_with_offset(min_labels_robot, cfg, tmp_path):
     cfg.model.heads.single_instance = SingleInstanceConfmapsHeadConfig(
         sigma=1.5, output_stride=1, offset_refinement=True
     )
+
+    # Set save directory
+    cfg.outputs.run_name = "test_run"
+    cfg.outputs.runs_folder = str(tmp_path / "training_runs")  # ensure it's a string
+    cfg.outputs.save_visualizations = False
+    cfg.outputs.keep_viz_images = False
+    cfg.outputs.save_outputs = True  # enable saving
+
     trainer = SingleInstanceModelTrainer.from_config(
         cfg, training_labels=min_labels_robot
     )
     trainer.setup()
     trainer.train()
+
+    run_path = Path(cfg.outputs.runs_folder, cfg.outputs.run_name)
+    viz_path = run_path / "viz"
+
     assert trainer.keras_model.output_names[0] == "SingleInstanceConfmapsHead"
     assert tuple(trainer.keras_model.outputs[0].shape) == (None, 320, 560, 2)
 
     assert trainer.keras_model.output_names[1] == "OffsetRefinementHead"
     assert tuple(trainer.keras_model.outputs[1].shape) == (None, 320, 560, 4)
 
+    assert not viz_path.exists()
+
 
 def test_train_centroids(training_labels, cfg):
     cfg.model.heads.centroid = CentroidsHeadConfig(
@@ -251,12 +278,12 @@ def test_train_bottomup_with_offset(training_labels, cfg):
 
 def test_train_bottomup_multiclass(min_tracks_2node_labels, cfg):
     labels = min_tracks_2node_labels
-    cfg.data.preprocessing.input_scaling = 0.5
+    cfg.data.preprocessing.input_scaling = 0.25
     cfg.model.heads.multi_class_bottomup = sleap.nn.config.MultiClassBottomUpConfig(
         confmaps=sleap.nn.config.MultiInstanceConfmapsHeadConfig(
-            output_stride=2, offset_refinement=False
+            output_stride=4, offset_refinement=False
         ),
-        class_maps=sleap.nn.config.ClassMapsHeadConfig(output_stride=2),
+        class_maps=sleap.nn.config.ClassMapsHeadConfig(output_stride=4),
     )
     trainer = sleap.nn.training.BottomUpMultiClassModelTrainer.from_config(
         cfg, training_labels=labels
@@ -266,8 +293,8 @@ def test_train_bottomup_multiclass(min_tracks_2node_labels, cfg):
 
     assert trainer.keras_model.output_names[0] == "MultiInstanceConfmapsHead"
     assert trainer.keras_model.output_names[1] == "ClassMapsHead"
-    assert tuple(trainer.keras_model.outputs[0].shape) == (None, 256, 256, 2)
-    assert tuple(trainer.keras_model.outputs[1].shape) == (None, 256, 256, 2)
+    assert tuple(trainer.keras_model.outputs[0].shape) == (None, 64, 64, 2)
+    assert tuple(trainer.keras_model.outputs[1].shape) == (None, 64, 64, 2)
 
 
 def test_train_topdown_multiclass(min_tracks_2node_labels, cfg):
@@ -360,3 +387,26 @@ def test_resume_training_cli(
 
         trainer = sleap_train(cli_args)
         assert trainer.config.model.base_checkpoint == base_checkpoint_path
+
+
+@pytest.mark.parametrize("keep_viz_cli", ["", "--keep_viz"])
+def test_keep_viz_cli(
+    keep_viz_cli,
+    min_single_instance_robot_model_path: str,
+    tmp_path: str,
+):
+    """Test training CLI for --keep_viz option."""
+    cfg_dir = min_single_instance_robot_model_path
+    cfg = TrainingJobConfig.load_json(str(Path(cfg_dir, "training_config.json")))
+
+    # Save training config to tmp folder
+    cfg_path = str(Path(tmp_path, "training_config.json"))
+    cfg.save_json(cfg_path)
+
+    cli_args = [cfg_path, keep_viz_cli]
+    trainer = sleap_train(cli_args)
+
+    # Check that --keep_viz is set correctly
+    assert trainer.config.outputs.keep_viz_images == (
+        True if keep_viz_cli == "--keep_viz" else False
+    )
diff --git a/tests/test_instance.py b/tests/test_instance.py
index 74a8b192e..58a630a8b 100644
--- a/tests/test_instance.py
+++ b/tests/test_instance.py
@@ -1,19 +1,21 @@
-import os
-import math
 import copy
+import math
+import os
+from typing import List
 
-import pytest
 import numpy as np
+import pytest
 
-from sleap.skeleton import Skeleton
+from sleap import Labels
 from sleap.instance import (
     Instance,
-    PredictedInstance,
+    InstancesList,
+    LabeledFrame,
     Point,
+    PredictedInstance,
     PredictedPoint,
-    LabeledFrame,
 )
-from sleap import Labels
+from sleap.skeleton import Skeleton
 
 
 def test_instance_node_get_set_item(skeleton):
@@ -310,6 +312,8 @@ def test_frame_merge_predicted_and_user(skeleton, centered_pair_vid):
     # and we want to retain both even though they perfectly match.
     assert user_inst in user_frame.instances
     assert pred_inst in user_frame.instances
+    assert user_inst.frame == user_frame
+    assert pred_inst.frame == user_frame
     assert len(user_frame.instances) == 2
 
 
@@ -529,3 +533,216 @@ def test_instance_structuring_from_predicted(centered_pair_predictions):
 
     # Unstructure -> structure
     labels_copy = labels.copy()
+
+
+def test_instances_list(centered_pair_predictions):
+
+    labels = centered_pair_predictions
+
+    def test_extend(instances: InstancesList, list_of_instances: List[Instance]):
+        instances.extend(list_of_instances)
+        assert len(instances) == len(list_of_instances)
+        for instance in instances:
+            assert isinstance(instance, PredictedInstance)
+            if instances.labeled_frame is None:
+                assert instance.frame is None
+            else:
+                assert instance.frame == instances.labeled_frame
+
+    def test_append(instances: InstancesList, instance: Instance):
+        prev_len = len(instances)
+        instances.append(instance)
+        assert len(instances) == prev_len + 1
+        assert instances[-1] == instance
+        assert instance.frame == instances.labeled_frame
+
+    def test_labeled_frame_setter(
+        instances: InstancesList, labeled_frame: LabeledFrame
+    ):
+        instances.labeled_frame = labeled_frame
+        for instance in instances:
+            assert instance.frame == labeled_frame
+
+    # Case 1: Create an empty instances list
+    labeled_frame = labels.labeled_frames[0]
+    list_of_instances = list(labeled_frame.instances)
+    instances = InstancesList()
+    assert len(instances) == 0
+    assert instances._labeled_frame is None
+    assert instances.labeled_frame is None
+
+    # Extend instances list
+    assert not isinstance(list_of_instances, InstancesList)
+    assert isinstance(list_of_instances, list)
+    test_extend(instances, list_of_instances)
+
+    # Set the labeled frame
+    test_labeled_frame_setter(instances, labeled_frame)
+
+    # Case 2: Create an empy instances list but initialize the labeled frame
+    instances = InstancesList(labeled_frame=labeled_frame)
+    assert len(instances) == 0
+    assert instances._labeled_frame == labeled_frame
+    assert instances.labeled_frame == labeled_frame
+
+    # Extend instances to the list from a different labeled frame
+    labeled_frame = labels.labeled_frames[1]
+    list_of_instances = list(labeled_frame.instances)
+    test_extend(instances, list_of_instances)
+
+    # Add instance to the list
+    instance = list_of_instances[0]
+    instance.frame = None
+    test_append(instances, instance)
+
+    # Set the labeled frame
+    test_labeled_frame_setter(instances, labeled_frame)
+
+    # Test InstancesList.copy
+    instances_copy = instances.copy()
+    assert len(instances_copy) == len(instances)
+    assert not isinstance(instances_copy, InstancesList)
+    assert isinstance(instances_copy, list)
+
+    # Test InstancesList.clear
+    instances_in_instances = list(instances)
+    instances.clear()
+    assert len(instances) == 0
+    for instance in instances_in_instances:
+        assert instance.frame is None
+
+    # Case 3: Create an instances list with a list of instances
+    labeled_frame = labels.labeled_frames[0]
+    list_of_instances = list(labeled_frame.instances)
+    instances = InstancesList(list_of_instances)
+    assert len(instances) == len(list_of_instances)
+    assert instances._labeled_frame is None
+    assert instances.labeled_frame is None
+    for instance in instances:
+        assert instance.frame is None
+
+    # Add instance to the list
+    instance = list_of_instances[0]
+    test_append(instances, instance)
+
+    # Case 4: Create an instances list with a list of instances and initialize the frame
+    labeled_frame_1 = labels.labeled_frames[0]
+    labeled_frame_2 = labels.labeled_frames[1]
+    list_of_instances = list(labeled_frame_2.instances)
+    instances = InstancesList(list_of_instances, labeled_frame=labeled_frame_1)
+    assert len(instances) == len(list_of_instances)
+    assert instances._labeled_frame == labeled_frame
+    assert instances.labeled_frame == labeled_frame
+    for instance in instances:
+        assert instance.frame == labeled_frame
+
+    # Test InstancesList.__delitem__
+    instance_to_remove = instances[0]
+    del instances[0]
+    assert instance_to_remove not in instances
+    assert instance_to_remove.frame is None
+
+    # Test InstancesList.insert
+    instances.insert(0, instance_to_remove)
+    assert instances[0] == instance_to_remove
+    assert instance_to_remove.frame == instances.labeled_frame
+
+    # Test InstancesList.__setitem__
+    new_instance = labeled_frame_1.instances[0]
+    new_instance.frame = None
+    instances[0] = new_instance
+    assert instances[0] == new_instance
+    assert new_instance.frame == instances.labeled_frame
+
+    # Test InstancesList.pop
+    popped_instance = instances.pop(0)
+    assert popped_instance.frame is None
+
+    # Test InstancesList.remove
+    instance_to_remove = instances[0]
+    instances.remove(instance_to_remove)
+    assert instance_to_remove.frame is None
+    assert instance_to_remove not in instances
+
+    # Case 5: Create an instances list from an instances list
+    instances_1 = InstancesList(list_of_instances, labeled_frame=labeled_frame_1)
+    instances = InstancesList(instances_1)
+    assert len(instances) == len(instances_1)
+    assert instances._labeled_frame is None
+    assert instances.labeled_frame is None
+    for instance in instances:
+        assert instance.frame is None
+
+
+def test_instances_list_with_labeled_frame(centered_pair_predictions):
+    labels: Labels = centered_pair_predictions
+    labels_lf_0: LabeledFrame = labels.labeled_frames[0]
+    video = labels_lf_0.video
+    frame_idx = labels_lf_0.frame_idx
+
+    def test_post_init(labeled_frame: LabeledFrame):
+        for instance in labeled_frame.instances:
+            assert instance.frame == labeled_frame
+
+    # Create labeled frame from list of instances
+    instances = list(labels_lf_0.instances)
+    for instance in instances:
+        instance.frame = None  # Change frame to None to test if it is set correctly
+    labeled_frame = LabeledFrame(video=video, frame_idx=frame_idx, instances=instances)
+    assert isinstance(labeled_frame.instances, InstancesList)
+    assert len(labeled_frame.instances) == len(instances)
+    test_post_init(labeled_frame)
+
+    # Create labeled frame from instances list
+    instances = InstancesList(labels_lf_0.instances)
+    labeled_frame = LabeledFrame(video=video, frame_idx=frame_idx, instances=instances)
+    assert isinstance(labeled_frame.instances, InstancesList)
+    assert len(labeled_frame.instances) == len(instances)
+    test_post_init(labeled_frame)
+
+    # Test LabeledFrame.__len__
+    assert len(labeled_frame.instances) == len(instances)
+
+    # Test LabeledFrame.__getitem__
+    assert labeled_frame[0] == instances[0]
+
+    # Test LabeledFrame.index
+    assert labeled_frame.index(instances[0]) == instances.index(instances[0]) == 0
+
+    # Test LabeledFrame.__delitem__
+    instance_to_remove = labeled_frame[0]
+    del labeled_frame[0]
+    assert instance_to_remove not in labeled_frame.instances
+    assert instance_to_remove.frame is None
+
+    # Test LabeledFrame.__repr__
+    print(labeled_frame)
+
+    # Test LabeledFrame.insert
+    labeled_frame.insert(0, instance_to_remove)
+    assert labeled_frame[0] == instance_to_remove
+    assert instance_to_remove.frame == labeled_frame
+
+    # Test LabeledFrame.__setitem__
+    new_instance = instances[1]
+    new_instance.frame = None
+    labeled_frame[0] = new_instance
+    assert labeled_frame[0] == new_instance
+    assert new_instance.frame == labeled_frame
+
+    # Test instances.setter (empty list)
+    labeled_frame.instances = []
+    assert len(labeled_frame.instances) == 0
+    assert labeled_frame.instances.labeled_frame == labeled_frame
+    # Test instances.setter (InstancesList)
+    labeled_frame.instances = labels.labeled_frames[1].instances
+    assert len(labeled_frame.instances) == len(labels.labeled_frames[1].instances)
+    assert labeled_frame.instances.labeled_frame == labeled_frame
+    for instance in labeled_frame.instances:
+        assert instance.frame == labeled_frame
+    # Test instances.setter (populated list)
+    labeled_frame.instances = list(labels.labeled_frames[1].instances)
+    assert len(labeled_frame.instances) == len(labels.labeled_frames[1].instances)
+    assert labeled_frame.instances.labeled_frame == labeled_frame
+    for instance in labeled_frame.instances:
+        assert instance.frame == labeled_frame
diff --git a/tests/test_skeleton.py b/tests/test_skeleton.py
index 1f7c3a853..2320342f6 100644
--- a/tests/test_skeleton.py
+++ b/tests/test_skeleton.py
@@ -1,10 +1,74 @@
-import os
 import copy
-
-import jsonpickle
+import os
 import pytest
+import json
+
+from networkx.readwrite import json_graph
+from sleap.skeleton import Skeleton, SkeletonDecoder
+from sleap.skeleton import SkeletonEncoder
+
+
+def test_decoded_encoded_Skeleton_from_load_json(fly_legs_skeleton_json):
+    """
+    Test Skeleton decoded from SkeletonEncoder.encode matches the original Skeleton.
+    """
+    # Get the skeleton from the fixture
+    skeleton = Skeleton.load_json(fly_legs_skeleton_json)
+    # Get the graph from the skeleton
+    indexed_node_graph = skeleton._graph
+    graph = json_graph.node_link_data(indexed_node_graph)
+
+    # Encode the graph as a json string to test .encode method
+    encoded_json_str = SkeletonEncoder.encode(graph)
+
+    # Get the skeleton from the encoded json string
+    decoded_skeleton = Skeleton.from_json(encoded_json_str)
+
+    # Check that the decoded skeleton is the same as the original skeleton
+    assert skeleton.matches(decoded_skeleton)
+
+
+@pytest.mark.parametrize(
+    "skeleton_fixture_name", ["flies13_skeleton", "skeleton", "stickman"]
+)
+def test_decoded_encoded_Skeleton(skeleton_fixture_name, request):
+    """
+    Test Skeleton decoded from SkeletonEncoder.encode matches the original Skeleton.
+    """
+    # Use request.getfixturevalue to get the actual fixture value by name
+    skeleton = request.getfixturevalue(skeleton_fixture_name)
+
+    # Get the graph from the skeleton
+    indexed_node_graph = skeleton._graph
+    graph = json_graph.node_link_data(indexed_node_graph)
+
+    # Encode the graph as a json string to test .encode method
+    encoded_json_str = SkeletonEncoder.encode(graph)
+
+    # Assert that the encoded json has keys in sorted order (backwards compatibility)
+    encoded_dict = json.loads(encoded_json_str)
+    sorted_keys = sorted(encoded_dict.keys())
+    assert list(encoded_dict.keys()) == sorted_keys
+    for key, value in encoded_dict.items():
+        if isinstance(value, dict):
+            assert list(value.keys()) == sorted(value.keys())
+        elif isinstance(value, list):
+            for item in value:
+                if isinstance(item, dict):
+                    assert list(item.keys()) == sorted(item.keys())
+
+    # Get the skeleton from the encoded json string
+    decoded_skeleton = Skeleton.from_json(encoded_json_str)
+
+    # Check that the decoded skeleton is the same as the original skeleton
+    assert skeleton.matches(decoded_skeleton)
+
+    # Now make everything into a JSON string
+    skeleton_json_str = skeleton.to_json()
+    decoded_skeleton_json_str = decoded_skeleton.to_json()
 
-from sleap.skeleton import Skeleton
+    # Check that the JSON strings are the same
+    assert json.loads(skeleton_json_str) == json.loads(decoded_skeleton_json_str)
 
 
 def test_add_dupe_node(skeleton):
@@ -194,9 +258,9 @@ def test_json(skeleton: Skeleton, tmpdir):
     )
     assert skeleton.is_template == False
     json_str = skeleton.to_json()
-    json_dict = jsonpickle.decode(json_str)
+    json_dict = SkeletonDecoder.decode(json_str)
     json_dict_keys = list(json_dict.keys())
-    assert "nx_graph" not in json_dict_keys
+    assert "nx_graph" in json_dict_keys  # SkeletonDecoder adds this key
     assert "preview_image" not in json_dict_keys
     assert "description" not in json_dict_keys
 
@@ -208,7 +272,7 @@ def test_json(skeleton: Skeleton, tmpdir):
 
     skeleton._is_template = True
     json_str = skeleton.to_json()
-    json_dict = jsonpickle.decode(json_str)
+    json_dict = SkeletonDecoder.decode(json_str)
     json_dict_keys = list(json_dict.keys())
     assert "nx_graph" in json_dict_keys
     assert "preview_image" in json_dict_keys
@@ -224,6 +288,26 @@ def test_json(skeleton: Skeleton, tmpdir):
     assert skeleton.matches(skeleton_copy)
 
 
+def test_decode_preview_image(flies13_skeleton: Skeleton):
+    skeleton = flies13_skeleton
+    img_b64 = skeleton.preview_image
+    img = SkeletonDecoder.decode_preview_image(img_b64)
+    assert img.mode == "RGBA"
+
+
+def test_skeleton_decoder(fly_legs_skeleton_json, fly_legs_skeleton_dict_json):
+    """Test that SkeletonDecoder can decode both tuple and dict py/state formats."""
+
+    skeleton_tuple_pystate = Skeleton.load_json(fly_legs_skeleton_json)
+    assert isinstance(skeleton_tuple_pystate, Skeleton)
+
+    skeleton_dict_pystate = Skeleton.load_json(fly_legs_skeleton_dict_json)
+    assert isinstance(skeleton_dict_pystate, Skeleton)
+
+    # These are the same skeleton, so they should match
+    assert skeleton_dict_pystate.matches(skeleton_tuple_pystate)
+
+
 def test_hdf5(skeleton, stickman, tmpdir):
     filename = os.path.join(tmpdir, "skeleton.h5")
 
diff --git a/tests/test_util.py b/tests/test_util.py
index a7916d47f..35b41afa8 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -1,5 +1,4 @@
 import pytest
-from sleap.skeleton import Skeleton
 
 from sleap.util import *
 
@@ -147,10 +146,3 @@ def test_save_dict_to_hdf5(tmpdir):
         assert f["bar"][-1].decode() == "zop"
 
         assert f["cab"]["a"][()] == 2
-
-
-def test_decode_preview_image(flies13_skeleton: Skeleton):
-    skeleton = flies13_skeleton
-    img_b64 = skeleton.preview_image
-    img = decode_preview_image(img_b64)
-    assert img.mode == "RGBA"

From 66d96ced50153e98b952176fbdb73043e105e397 Mon Sep 17 00:00:00 2001
From: Elizabeth <106755962+eberrigan@users.noreply.github.com>
Date: Thu, 19 Dec 2024 10:26:54 -0800
Subject: [PATCH 18/18] Allow max tracking args for Kalman filter (#1986)

* and note where `target_instance_count` is initialized

* `target_instance_count` is not available in the GUI but `max_tracks` is

* add note where `target_instance_count` is initialized

* add note since neither `target_instance_count` nor `pre_cull_to_target` are options in the GUI

* accept either max_tracks or target_instance_count for compatibility with both CLI and GUI

* TypeError: track() got an unexpected keyword argument 'img_hw' since `init_tracker` has `img_hw`

* useful print statements

* black

* np.bool is deprecated

* debug

* add params for testing kalman filter

* remove params because this function isn't used

* debugging

* test kalman filter tracking

* add documentation

* kalman filter needs node indices, simple tracking and similarity anything besides normalized

* add tests for every combination related to kalman args

* add example to documentation

* delete debug scripts

* delete print statements

* black

* add test for connect single breaks
---
 docs/guides/cli.md                    |   8 +-
 sleap/nn/inference.py                 |  12 +-
 sleap/nn/tracker/kalman.py            |   2 +-
 sleap/nn/tracking.py                  |  54 +++++--
 tests/nn/test_tracking_integration.py | 194 +++++++++++++++++++++++++-
 5 files changed, 256 insertions(+), 14 deletions(-)

diff --git a/docs/guides/cli.md b/docs/guides/cli.md
index 134461c60..339c5405b 100644
--- a/docs/guides/cli.md
+++ b/docs/guides/cli.md
@@ -230,7 +230,7 @@ optional arguments:
   --tracking.kf_node_indices TRACKING.KF_NODE_INDICES
                         For Kalman filter: Indices of nodes to track. (default: )
   --tracking.kf_init_frame_count TRACKING.KF_INIT_FRAME_COUNT
-                        For Kalman filter: Number of frames to track with other tracker. 0 means no Kalman filters will be used. (default: 0)
+                        For Kalman filter: Number of frames to track with other tracker. 0 means no Kalman filters will be used. (default: 0) Kalman filters require TRACKING.KF_NODE_INDICES, TRACKING.MAX_TRACKING and TRACKING.MAX_TRACKS or TRACKING.TARGET_INSTANCE_COUNT, TRACKING.TRACKER to be simple or simplemaxtracks, and TRACKING.SIMILARITY to not be normalized_instance.
 ```
 
 #### Examples:
@@ -285,6 +285,12 @@ sleap-track --gpu 1 ...
 sleap-track -m "models/my_model" --frames 1000-2000 "input_video.mp4"
 ```
 
+**9. Use Kalman tracker (not recommended since flow is preferred):**
+
+```none
+sleap-track -m "models/my_model" --tracking.similarity instance --tracking.tracker simplemaxtracks --tracking.max_tracking 1 --tracking.max_tracks 4 --tracking.kf_init_frame_count 10 --tracking.kf_node_indices 0,1 -o "output_predictions.slp" "input_video.mp4"
+```
+
 ## Dataset files
 
 (sleap-convert)=
diff --git a/sleap/nn/inference.py b/sleap/nn/inference.py
index 3f01a1c3c..c27382e52 100644
--- a/sleap/nn/inference.py
+++ b/sleap/nn/inference.py
@@ -1129,9 +1129,11 @@ def export_model(
             info["predicted_tensors"] = tensors
 
         full_model = tf.function(
-            lambda x: sleap.nn.data.utils.unrag_example(model(x), numpy=False)
-            if unrag_outputs
-            else model(x)
+            lambda x: (
+                sleap.nn.data.utils.unrag_example(model(x), numpy=False)
+                if unrag_outputs
+                else model(x)
+            )
         )
 
         full_model = full_model.get_concrete_function(
@@ -5717,3 +5719,7 @@ def main(args: Optional[list] = None):
             "To retrack on predictions, must specify tracker. "
             "Use \"sleap-track --tracking.tracker ...' to specify tracker to use."
         )
+
+
+if __name__ == "__main__":
+    main()
diff --git a/sleap/nn/tracker/kalman.py b/sleap/nn/tracker/kalman.py
index 2b0343927..774a4634e 100644
--- a/sleap/nn/tracker/kalman.py
+++ b/sleap/nn/tracker/kalman.py
@@ -608,7 +608,7 @@ def remove_second_bests_from_cost_matrix(
          cost matrix with invalid matches set to specified invalid value.
     """
 
-    valid_match_mask = np.full_like(cost_matrix, True, dtype=np.bool)
+    valid_match_mask = np.full_like(cost_matrix, True, dtype=bool)
 
     rows, columns = cost_matrix.shape
 
diff --git a/sleap/nn/tracking.py b/sleap/nn/tracking.py
index 558aa9309..231b004f5 100644
--- a/sleap/nn/tracking.py
+++ b/sleap/nn/tracking.py
@@ -574,7 +574,7 @@ class Tracker(BaseTracker):
     max_tracking: bool = False  # To enable maximum tracking.
 
     cleaner: Optional[Callable] = None  # TODO: deprecate
-    target_instance_count: int = 0
+    target_instance_count: int = 0  # TODO: deprecate
     pre_cull_function: Optional[Callable] = None
     post_connect_single_breaks: bool = False
     robust_best_instance: float = 1.0
@@ -824,8 +824,15 @@ def final_pass(self, frames: List[LabeledFrame]):
             #         "tracking."
             #     )
             self.cleaner.run(frames)
-        elif self.target_instance_count and self.post_connect_single_breaks:
+        elif (
+            self.target_instance_count or self.max_tracks
+        ) and self.post_connect_single_breaks:
+            if not self.target_instance_count:
+                # If target_instance_count is not set, use max_tracks instead
+                # target_instance_count not available in the GUI
+                self.target_instance_count = self.max_tracks
             connect_single_track_breaks(frames, self.target_instance_count)
+            print("Connecting single track breaks.")
 
     def get_name(self):
         tracker_name = self.candidate_maker.__class__.__name__
@@ -850,7 +857,7 @@ def make_tracker_by_name(
         of_max_levels: int = 3,
         save_shifted_instances: bool = False,
         # Pre-tracking options to cull instances
-        target_instance_count: int = 0,
+        target_instance_count: int = 0,  # TODO: deprecate target_instance_count
         pre_cull_to_target: bool = False,
         pre_cull_iou_threshold: Optional[float] = None,
         # Post-tracking options to connect broken tracks
@@ -921,6 +928,7 @@ def make_tracker_by_name(
 
         pre_cull_function = None
         if target_instance_count and pre_cull_to_target:
+            # Right now this is not accessible from the GUI
 
             def pre_cull_function(inst_list):
                 cull_frame_instances(
@@ -940,11 +948,34 @@ def pre_cull_function(inst_list):
             pre_cull_function=pre_cull_function,
             max_tracking=max_tracking,
             max_tracks=max_tracks,
-            target_instance_count=target_instance_count,
+            target_instance_count=target_instance_count,  # TODO: deprecate target_instance_count
             post_connect_single_breaks=post_connect_single_breaks,
         )
 
-        if target_instance_count and kf_init_frame_count:
+        # Kalman filter requires deprecated target_instance_count
+        if (max_tracks or target_instance_count) and kf_init_frame_count:
+            if not kf_node_indices:
+                raise ValueError(
+                    "Kalman filter requires node indices for instance tracking."
+                )
+
+            if tracker == "flow" or tracker == "flowmaxtracks":
+                # Tracking with Kalman filter requires initial tracker object to be simple
+                raise ValueError(
+                    "Kalman filter requires simple tracker for initial tracking."
+                )
+
+            if similarity == "normalized_instance":
+                # Kalman filter doesnot support normalized_instance_similarity
+                raise ValueError(
+                    "Kalman filter does not support normalized_instance_similarity."
+                )
+
+            if not target_instance_count:
+                # If target_instance_count is not set, use max_tracks instead
+                # target_instance_count not available in the GUI
+                target_instance_count = max_tracks
+
             kalman_obj = KalmanTracker.make_tracker(
                 init_tracker=tracker_obj,
                 init_frame_count=kf_init_frame_count,
@@ -954,8 +985,10 @@ def pre_cull_function(inst_list):
             )
 
             return kalman_obj
-        elif kf_init_frame_count and not target_instance_count:
-            raise ValueError("Kalman filter requires target instance count.")
+        elif kf_init_frame_count and not (max_tracks or target_instance_count):
+            raise ValueError(
+                "Kalman filter requires max tracks or target instance count."
+            )
         else:
             return tracker_obj
 
@@ -1369,6 +1402,10 @@ def cull_function(inst_list):
         if init_tracker.pre_cull_function is None:
             init_tracker.pre_cull_function = cull_function
 
+        print(
+            f"Using {init_tracker.get_name()} to track {init_frame_count} frames for Kalman filters."
+        )
+
         return cls(
             init_tracker=init_tracker,
             kalman_tracker=kalman_tracker,
@@ -1386,6 +1423,7 @@ def track(
         untracked_instances: List[InstanceType],
         img: Optional[np.ndarray] = None,
         t: int = None,
+        **kwargs,
     ) -> List[InstanceType]:
         """Tracks individual frame, using Kalman filters if possible."""
 
@@ -1420,7 +1458,7 @@ def track(
                 # Initialize the Kalman filters
                 self.kalman_tracker.init_filters(self.init_set.instances)
 
-                # print(f"Kalman filters initialized (frame {t})")
+                print(f"Kalman filters initialized (frame {t})")
 
                 # Clear the data used to init filters, so that if the filters
                 # stop tracking and we need to re-init, we won't re-use the
diff --git a/tests/nn/test_tracking_integration.py b/tests/nn/test_tracking_integration.py
index 625302fd0..4a601ac00 100644
--- a/tests/nn/test_tracking_integration.py
+++ b/tests/nn/test_tracking_integration.py
@@ -2,13 +2,205 @@
 import operator
 import os
 import time
-
+import pytest
 import sleap
 from sleap.nn.inference import main as inference_cli
 import sleap.nn.tracker.components
 from sleap.io.dataset import Labels, LabeledFrame
 
 
+similarity_args = [
+    "instance",
+    "normalized_instance",
+    "object_keypoint",
+    "centroid",
+    "iou",
+]
+match_args = ["hungarian", "greedy"]
+
+
+@pytest.mark.parametrize(
+    "tracker_name", ["simple", "simplemaxtracks", "flow", "flowmaxtracks"]
+)
+@pytest.mark.parametrize("similarity", similarity_args)
+@pytest.mark.parametrize("match", match_args)
+def test_kalman_tracker(
+    tmpdir, centered_pair_predictions_slp_path, tracker_name, similarity, match
+):
+
+    if tracker_name == "flow" or tracker_name == "flowmaxtracks":
+        # Expecting ValueError for "flow" or "flowmaxtracks" due to Kalman filter requiring a simple tracker
+        with pytest.raises(
+            ValueError,
+            match="Kalman filter requires simple tracker for initial tracking.",
+        ):
+            cli = (
+                f"--tracking.tracker {tracker_name} "
+                "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+                f"--tracking.similarity {similarity} "
+                f"--tracking.match {match} "
+                "--tracking.track_window 5 "
+                "--tracking.kf_init_frame_count 10 "
+                "--tracking.kf_node_indices 0,1 "
+                f"-o {tmpdir}/{tracker_name}.slp "
+                f"{centered_pair_predictions_slp_path}"
+            )
+            inference_cli(cli.split(" "))
+    else:
+        # For simple or simplemaxtracks, continue with other tests
+        # Check for ValueError when similarity is "normalized_instance"
+        if similarity == "normalized_instance":
+            with pytest.raises(
+                ValueError,
+                match="Kalman filter does not support normalized_instance_similarity.",
+            ):
+                cli = (
+                    f"--tracking.tracker {tracker_name} "
+                    "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+                    f"--tracking.similarity {similarity} "
+                    f"--tracking.match {match} "
+                    "--tracking.track_window 5 "
+                    "--tracking.kf_init_frame_count 10 "
+                    "--tracking.kf_node_indices 0,1 "
+                    f"-o {tmpdir}/{tracker_name}.slp "
+                    f"{centered_pair_predictions_slp_path}"
+                )
+                inference_cli(cli.split(" "))
+            return
+
+        # Check for ValueError when kf_node_indices is None which is the default
+        with pytest.raises(
+            ValueError,
+            match="Kalman filter requires node indices for instance tracking.",
+        ):
+            cli = (
+                f"--tracking.tracker {tracker_name} "
+                "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+                f"--tracking.similarity {similarity} "
+                f"--tracking.match {match} "
+                "--tracking.track_window 5 "
+                "--tracking.kf_init_frame_count 10 "
+                f"-o {tmpdir}/{tracker_name}.slp "
+                f"{centered_pair_predictions_slp_path}"
+            )
+            inference_cli(cli.split(" "))
+
+        # Test for missing max_tracks and target_instance_count with kf_init_frame_count
+        with pytest.raises(
+            ValueError,
+            match="Kalman filter requires max tracks or target instance count.",
+        ):
+            cli = (
+                f"--tracking.tracker {tracker_name} "
+                f"--tracking.similarity {similarity} "
+                f"--tracking.match {match} "
+                "--tracking.track_window 5 "
+                "--tracking.kf_init_frame_count 10 "
+                "--tracking.kf_node_indices 0,1 "
+                f"-o {tmpdir}/{tracker_name}.slp "
+                f"{centered_pair_predictions_slp_path}"
+            )
+            inference_cli(cli.split(" "))
+
+        # Test with target_instance_count and without max_tracks
+        cli = (
+            f"--tracking.tracker {tracker_name} "
+            f"--tracking.similarity {similarity} "
+            f"--tracking.match {match} "
+            "--tracking.track_window 5 "
+            "--tracking.kf_init_frame_count 10 "
+            "--tracking.kf_node_indices 0,1 "
+            "--tracking.target_instance_count 2 "
+            f"-o {tmpdir}/{tracker_name}_target_instance_count.slp "
+            f"{centered_pair_predictions_slp_path}"
+        )
+        inference_cli(cli.split(" "))
+
+        labels = sleap.load_file(f"{tmpdir}/{tracker_name}_target_instance_count.slp")
+        assert len(labels.tracks) == 2
+
+        # Test with target_instance_count and with max_tracks
+        cli = (
+            f"--tracking.tracker {tracker_name} "
+            "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+            f"--tracking.similarity {similarity} "
+            f"--tracking.match {match} "
+            "--tracking.track_window 5 "
+            "--tracking.kf_init_frame_count 10 "
+            "--tracking.kf_node_indices 0,1 "
+            "--tracking.target_instance_count 2 "
+            f"-o {tmpdir}/{tracker_name}_max_tracks_target_instance_count.slp "
+            f"{centered_pair_predictions_slp_path}"
+        )
+        inference_cli(cli.split(" "))
+
+        labels = sleap.load_file(
+            f"{tmpdir}/{tracker_name}_max_tracks_target_instance_count.slp"
+        )
+        assert len(labels.tracks) == 2
+
+        # Test with "--tracking.pre_cull_iou_threshold", "0.8"
+        cli = (
+            f"--tracking.tracker {tracker_name} "
+            "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+            f"--tracking.similarity {similarity} "
+            f"--tracking.match {match} "
+            "--tracking.track_window 5 "
+            "--tracking.kf_init_frame_count 10 "
+            "--tracking.kf_node_indices 0,1 "
+            "--tracking.target_instance_count 2 "
+            "--tracking.pre_cull_iou_threshold 0.8 "
+            f"-o {tmpdir}/{tracker_name}_max_tracks_target_instance_count_iou.slp "
+            f"{centered_pair_predictions_slp_path}"
+        )
+        inference_cli(cli.split(" "))
+
+        labels = sleap.load_file(
+            f"{tmpdir}/{tracker_name}_max_tracks_target_instance_count_iou.slp"
+        )
+        assert len(labels.tracks) == 2
+
+        # Test with "--tracking.pre_cull_to_target", "1"
+        cli = (
+            f"--tracking.tracker {tracker_name} "
+            "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+            f"--tracking.similarity {similarity} "
+            f"--tracking.match {match} "
+            "--tracking.track_window 5 "
+            "--tracking.kf_init_frame_count 10 "
+            "--tracking.kf_node_indices 0,1 "
+            "--tracking.target_instance_count 2 "
+            "--tracking.pre_cull_to_target 1 "
+            f"-o {tmpdir}/{tracker_name}_max_tracks_target_instance_count_to_target.slp "
+            f"{centered_pair_predictions_slp_path}"
+        )
+        inference_cli(cli.split(" "))
+        labels = sleap.load_file(
+            f"{tmpdir}/{tracker_name}_max_tracks_target_instance_count_to_target.slp"
+        )
+        assert len(labels.tracks) == 2
+
+        # Test with 'tracking.post_connect_single_breaks': 0
+        cli = (
+            f"--tracking.tracker {tracker_name} "
+            "--tracking.max_tracking 1 --tracking.max_tracks 2 "
+            f"--tracking.similarity {similarity} "
+            f"--tracking.match {match} "
+            "--tracking.track_window 5 "
+            "--tracking.kf_init_frame_count 10 "
+            "--tracking.kf_node_indices 0,1 "
+            "--tracking.target_instance_count 2 "
+            "--tracking.post_connect_single_breaks 0 "
+            f"-o {tmpdir}/{tracker_name}_max_tracks_target_instance_count_single_breaks.slp "
+            f"{centered_pair_predictions_slp_path}"
+        )
+        inference_cli(cli.split(" "))
+        labels = sleap.load_file(
+            f"{tmpdir}/{tracker_name}_max_tracks_target_instance_count_single_breaks.slp"
+        )
+        assert len(labels.tracks) == 2
+
+
 def test_simple_tracker(tmpdir, centered_pair_predictions_slp_path):
     cli = (
         "--tracking.tracker simple "