diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..044b806
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+__pycache__/
+*.py[cod]
+*.qxw~
+.DS_Store
diff --git a/README.md b/README.md
index 194e64e..3922e39 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,49 @@
# qlcplus
+QLC+ show files, fixture definitions, and generators for the XCHC stage
+(8× beamZ BCC145 parcans + 2× Small Eye 7 movers).
+
+## Layout
+
+```
+fixtures/ Fixture definitions (.qxf) — install into QLC+ if needed
+shows/ Workspaces to open in QLC+
+ xchc.qxw Main show (patterns + movers, unified VC)
+ simple.qxw Manual board: M1/M2 pads, shared + individual RGBW
+ small_eye.qxw Movers-only figure-of-8 show
+ archive/ Older scratch workspaces
+scripts/ Generators / patchers for the shows
+stage/ Stage map (SVG, JSON, canvas)
+tests/ Art-Net / fixture helpers used by scripts
+```
+
+## Open in QLC+
+
+- Full show: `shows/xchc.qxw`
+- Simple RGBW + positions: `shows/simple.qxw`
+
+## Scripts
+
+```bash
+# Rebuild simple manual board
+python3 scripts/make_simple_vc.py
+
+# Rewrite can/mover patterns from stage layout
+python3 scripts/integrate_u_patterns.py
+
+# Unify Patterns + Movers into one Show frame
+python3 scripts/unify_vc.py
+
+# Figure-of-8 (live Art-Net or write/merge workspace)
+python3 scripts/figure8_small_eye.py --write-qxw shows/small_eye.qxw
+```
+
+## Fixtures / DMX
+
+| Fixture | Mode | Addresses |
+|---------|------|-----------|
+| Small Eye 7 #1–#2 | 43ch | 1–43, 45–87 |
+| BCC145 #1–#8 | 8ch | 87–150 (starts 87, 95, …) |
+
+Copy `.qxf` files from `fixtures/` into QLC+’s fixture library if the
+manufacturer/model is missing.
diff --git a/fixtures/Small-Eye-7-Mover.qxf b/fixtures/Small-Eye-7-Mover.qxf
index d262774..36adde4 100644
--- a/fixtures/Small-Eye-7-Mover.qxf
+++ b/fixtures/Small-Eye-7-Mover.qxf
@@ -27,10 +27,10 @@
Prism
- Index 0–60°
- Rotate CCW fast to slow
- Stop
- Rotate CW slow to fast
+ Index 0–60° (no spin)
+ Spin CCW fast to slow
+ Stop
+ Spin CW slow to fast
Prism
diff --git a/scripts/figure8_small_eye.py b/scripts/figure8_small_eye.py
new file mode 100644
index 0000000..8e2481d
--- /dev/null
+++ b/scripts/figure8_small_eye.py
@@ -0,0 +1,1012 @@
+#!/usr/bin/env python3
+"""Figure-of-8 for the Small Eye 7 Mover (43ch).
+
+Traces QLC+'s Eight path (pan = -sin(2t), tilt = cos(t)), rides focus
+with throw so the spot stays a similar size, and walks hue around the loop.
+The whole 8 slowly drifts in a circle so it does not sit in one place.
+
+ python3 scripts/figure8_small_eye.py
+ python3 scripts/figure8_small_eye.py --write-qxw shows/small_eye.qxw
+ python3 scripts/figure8_small_eye.py --merge-xchc shows/xchc.qxw
+
+Stop QLC+ output before live mode so the two sources do not fight.
+Quit live mode with Ctrl+C (sends blackout).
+"""
+
+from __future__ import annotations
+
+import argparse
+import colorsys
+import math
+import sys
+import time
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parents[1]
+sys.path.insert(0, str(ROOT / "tests"))
+
+from test_small_eye import (
+ CH_BLUE,
+ CH_DIMMER,
+ CH_FOCUS,
+ CH_GREEN,
+ CH_PAN,
+ CH_RED,
+ CH_ROTATE,
+ CH_SPEED,
+ CH_STROBE,
+ CH_TILT,
+ CH_WHITE,
+ CH_ZOOM,
+ FIXTURE_CHANNELS,
+ ArtNetSender,
+ SmallEye,
+)
+
+# Lens rotate: 0–127 index, 128–188 CCW spin, 189–193 stop, 194–255 CW spin.
+# Mid CW — glass often only spins when zoom is fully narrow (0).
+ROTATE_CW = 230
+
+# 0-based QLC+ channel indices (same map as 43ch mode)
+QLC_PAN = 0
+QLC_TILT = 2
+QLC_SPEED = 4
+QLC_ZOOM = 5
+QLC_ROTATE = 6
+QLC_FOCUS = 7
+QLC_DIMMER = 8
+QLC_STROBE = 9
+QLC_PIXEL0 = 10 # Red 1; each pixel is RGBW
+
+PAN_DEGREES = 540.0
+TILT_DEGREES = 270.0
+STEPS = 64
+LOOP_MS = 12000
+DRIFT_LOOPS = 8 # figure-8 cycles per one slow drift orbit
+BLACKOUT_FADE_MS = 4000
+
+
+def clamp(value: float, lo: int = 0, hi: int = 255) -> int:
+ return max(lo, min(hi, int(round(value))))
+
+
+def eight_xy(t: float) -> tuple[float, float]:
+ """QLC+ Eight algorithm, iterator 0..2π → x,y in -1..1."""
+ return -math.sin(2.0 * t), math.cos(t)
+
+
+def hsv_rgb(hue: float) -> tuple[int, int, int]:
+ r, g, b = colorsys.hsv_to_rgb(hue % 1.0, 1.0, 1.0)
+ return clamp(r * 255), clamp(g * 255), clamp(b * 255)
+
+
+def throw_factor(pan_off: float, tilt_off: float) -> float:
+ """Relative throw vs home aim, assuming a wall in front of the head."""
+ pan_rad = math.radians(pan_off * PAN_DEGREES / 255.0)
+ tilt_rad = math.radians(tilt_off * TILT_DEGREES / 255.0)
+ denom = math.cos(pan_rad) * math.cos(tilt_rad)
+ return 1.0 / max(0.35, denom)
+
+
+def focus_for_throw(throw: float, throw_min: float, throw_max: float, near: int, far: int) -> int:
+ if throw_max <= throw_min:
+ return near
+ t = (throw - throw_min) / (throw_max - throw_min)
+ t = max(0.0, min(1.0, t))
+ # Farther throw → more focus (tighter / far), so the spot does not bloom.
+ return clamp(near + t * (far - near))
+
+
+def zoom_for_throw(throw: float, throw_min: float, throw_max: float, close: int, far: int) -> int:
+ """Narrower zoom at longer throw keeps projected size closer to constant."""
+ if throw_max <= throw_min:
+ return close
+ t = (throw - throw_min) / (throw_max - throw_min)
+ t = max(0.0, min(1.0, t))
+ return clamp(close + t * (far - close))
+
+
+class Figure8:
+ def __init__(
+ self,
+ pan_center: int = 128,
+ tilt_center: int = 80,
+ pan_amp: int = 28,
+ tilt_amp: int = 22,
+ focus_near: int = 70,
+ focus_far: int = 200,
+ zoom_close: int = 0,
+ zoom_far: int = 0,
+ dimmer: int = 255,
+ outer_dim: int = 60,
+ rotate: int = ROTATE_CW,
+ drift_pan: int = 18,
+ drift_tilt: int = 12,
+ drift_period: float = DRIFT_LOOPS * LOOP_MS / 1000.0,
+ ):
+ self.pan_center = pan_center
+ self.tilt_center = tilt_center
+ self.pan_amp = pan_amp
+ self.tilt_amp = tilt_amp
+ self.focus_near = focus_near
+ self.focus_far = focus_far
+ self.zoom_close = zoom_close
+ self.zoom_far = zoom_far
+ self.dimmer = dimmer
+ self.outer_dim = clamp(outer_dim)
+ self.rotate = clamp(rotate)
+ self.drift_pan = drift_pan
+ self.drift_tilt = drift_tilt
+ self.drift_period = max(0.001, drift_period)
+
+ def window_rect(self) -> tuple[int, int, int, int]:
+ """Inclusive pan/tilt box centred on home, used by the XY pad."""
+ return (
+ clamp(self.pan_center - self.pan_amp),
+ clamp(self.pan_center + self.pan_amp),
+ clamp(self.tilt_center - self.tilt_amp),
+ clamp(self.tilt_center + self.tilt_amp),
+ )
+
+ def drift_offset(self, elapsed: float) -> tuple[float, float]:
+ if self.drift_pan == 0 and self.drift_tilt == 0:
+ return 0.0, 0.0
+ phase = 2.0 * math.pi * elapsed / self.drift_period
+ return self.drift_pan * math.sin(phase), self.drift_tilt * math.cos(phase)
+
+ def point(self, t: float, elapsed: float = 0.0) -> dict[str, int]:
+ x, y = eight_xy(t)
+ dx, dy = self.drift_offset(elapsed)
+ pan_off = dx + x * self.pan_amp
+ tilt_off = dy + y * self.tilt_amp
+ h_min, h_max, v_min, v_max = self.window_rect()
+ r, g, b = hsv_rgb(t / (2 * math.pi))
+ scale = self.outer_dim / 255.0
+ return {
+ "pan": max(h_min, min(h_max, clamp(self.pan_center + pan_off))),
+ "tilt": max(v_min, min(v_max, clamp(self.tilt_center + tilt_off))),
+ "focus": self.focus_near,
+ "zoom": self.zoom_close,
+ "rotate": self.rotate,
+ "red": r,
+ "green": g,
+ "blue": b,
+ "outer_red": clamp(r * scale),
+ "outer_green": clamp(g * scale),
+ "outer_blue": clamp(b * scale),
+ "dimmer": self.dimmer,
+ }
+
+
+def apply_point(fixture: SmallEye, pt: dict[str, int]):
+ fixture.set(CH_PAN, pt["pan"])
+ fixture.set(CH_TILT, pt["tilt"])
+ fixture.set(CH_SPEED, 0)
+ fixture.set(CH_ZOOM, pt["zoom"])
+ fixture.set(CH_ROTATE, pt["rotate"])
+ fixture.set(CH_FOCUS, pt["focus"])
+ fixture.set(CH_DIMMER, pt["dimmer"])
+ fixture.set(CH_STROBE, 0)
+ fixture.set(CH_WHITE, 0)
+ # Pixel 1 = centre (full); pixels 2–7 = outer ring (dim)
+ fixture.set(CH_RED, pt["red"])
+ fixture.set(CH_GREEN, pt["green"])
+ fixture.set(CH_BLUE, pt["blue"])
+ for pixel in range(1, 7):
+ base = CH_RED + pixel * 4
+ fixture.set(base, pt["outer_red"])
+ fixture.set(base + 1, pt["outer_green"])
+ fixture.set(base + 2, pt["outer_blue"])
+ fixture.set(base + 3, 0)
+
+
+def scene_fixture_val(channels: dict[int, int]) -> str:
+ parts = []
+ for ch in sorted(channels):
+ parts.append(f"{ch},{channels[ch]}")
+ return ",".join(parts)
+
+
+def bound_scene_channels(fig: Figure8) -> dict[int, int]:
+ # Pan/tilt are owned by the XY-pad EFX so this look scene does not fight them.
+ ch = {
+ QLC_SPEED: 0,
+ QLC_ZOOM: fig.zoom_close,
+ QLC_ROTATE: fig.rotate,
+ QLC_FOCUS: fig.focus_near,
+ QLC_DIMMER: fig.dimmer,
+ QLC_STROBE: 0,
+ }
+ for pixel in range(7):
+ base = QLC_PIXEL0 + pixel * 4
+ ch[base] = 0
+ ch[base + 1] = 0
+ ch[base + 2] = 0
+ ch[base + 3] = 0
+ return ch
+
+
+def sequence_step_text(
+ fixture_channels: list[tuple[int, dict[int, int]]],
+ always: tuple[int, ...] = (),
+) -> str:
+ """QLC+ Sequence step: fixtureID:ch,val,... — zeros omitted unless in always."""
+ chunks = []
+ for fixture_id, channels in fixture_channels:
+ kept = [
+ (ch, val)
+ for ch, val in sorted(channels.items())
+ if val or ch in always
+ ]
+ if not kept:
+ continue
+ bits = [f"{fixture_id}:"]
+ for i, (ch, val) in enumerate(kept):
+ if i:
+ bits.append(",")
+ bits.append(f"{ch},{val}")
+ chunks.append("".join(bits))
+ return ":".join(chunks)
+
+
+def point_channels(fig: Figure8, pt: dict[str, int]) -> dict[int, int]:
+ ch = bound_scene_channels(fig)
+ ch[QLC_ZOOM] = pt["zoom"]
+ ch[QLC_ROTATE] = pt["rotate"]
+ ch[QLC_FOCUS] = pt["focus"]
+ ch[QLC_DIMMER] = pt["dimmer"]
+ ch[QLC_PIXEL0] = pt["red"]
+ ch[QLC_PIXEL0 + 1] = pt["green"]
+ ch[QLC_PIXEL0 + 2] = pt["blue"]
+ ch[QLC_PIXEL0 + 3] = 0
+ for pixel in range(1, 7):
+ base = QLC_PIXEL0 + pixel * 4
+ ch[base] = pt["outer_red"]
+ ch[base + 1] = pt["outer_green"]
+ ch[base + 2] = pt["outer_blue"]
+ ch[base + 3] = 0
+ return ch
+
+
+def exit_park_channels(
+ fig: Figure8,
+ lit: set[int],
+ *,
+ rgb: tuple[int, int, int] = (255, 210, 160),
+ outer: int = 90,
+ dimmer: int | None = None,
+ rotate: int = 191,
+) -> dict[int, int]:
+ """Home aim, rotate stopped, selected pixels on (0 = centre, 1–6 = ring)."""
+ ch = {
+ QLC_PAN: fig.pan_center,
+ QLC_TILT: fig.tilt_center,
+ QLC_SPEED: 0,
+ QLC_ZOOM: fig.zoom_close,
+ QLC_ROTATE: rotate,
+ QLC_FOCUS: fig.focus_near,
+ QLC_DIMMER: fig.dimmer if dimmer is None else dimmer,
+ QLC_STROBE: 0,
+ }
+ r, g, b = rgb
+ for pixel in range(7):
+ base = QLC_PIXEL0 + pixel * 4
+ if pixel in lit:
+ scale = 1.0 if pixel == 0 else outer / 255.0
+ ch[base] = clamp(r * scale)
+ ch[base + 1] = clamp(g * scale)
+ ch[base + 2] = clamp(b * scale)
+ else:
+ ch[base] = 0
+ ch[base + 1] = 0
+ ch[base + 2] = 0
+ ch[base + 3] = 0
+ return ch
+
+
+def fixture_vals_xml(fixture_ids: tuple[int, ...], channels: dict[int, int]) -> str:
+ return "\n".join(
+ f' {scene_fixture_val(channels)}'
+ for fid in fixture_ids
+ )
+
+
+def exit_functions_xml(
+ fig: Figure8,
+ fixture_ids: tuple[int, ...],
+ fn_base: int = 0,
+) -> str:
+ """xchc-style exits adapted for the bee-eye ring + home park."""
+ def F(n: int) -> int:
+ return fn_base + n
+
+ blackout = F(2)
+ # --- Ring Collapse (Fill Unfill / Center Out, reversed as an exit) ---
+ collapse_sets = [
+ {0, 1, 2, 3, 4, 5, 6},
+ {0, 1, 2, 3, 4, 5},
+ {0, 1, 2, 3, 4},
+ {0, 1, 2, 3},
+ {0, 1},
+ {0},
+ set(),
+ ]
+ parts: list[str] = []
+ collapse_ids = list(range(5, 5 + len(collapse_sets)))
+ for sid, lit in zip(collapse_ids, collapse_sets):
+ dim = 0 if not lit else fig.dimmer
+ ch = exit_park_channels(fig, lit, dimmer=dim, rotate=191)
+ parts.append(
+ f"""
+
+{fixture_vals_xml(fixture_ids, ch)}
+ """
+ )
+ collapse_steps = "\n".join(
+ f' {F(sid)}'
+ for i, sid in enumerate(collapse_ids)
+ )
+ parts.append(
+ f"""
+
+ Forward
+ SingleShot
+
+{collapse_steps}
+ """
+ )
+
+ # --- Ring Chase Out (Scanner / Theater, one pixel then black) ---
+ chase_sets = [{p} for p in range(1, 7)] + [{0}, set()]
+ chase_ids = list(range(13, 13 + len(chase_sets)))
+ for sid, lit in zip(chase_ids, chase_sets):
+ dim = 0 if not lit else fig.dimmer
+ rgb = (255, 255, 255) if lit == {0} else (255, 210, 160)
+ ch = exit_park_channels(fig, lit, rgb=rgb, outer=180, dimmer=dim, rotate=191)
+ parts.append(
+ f"""
+
+{fixture_vals_xml(fixture_ids, ch)}
+ """
+ )
+ chase_steps = "\n".join(
+ f' {F(sid)}'
+ for i, sid in enumerate(chase_ids)
+ )
+ parts.append(
+ f"""
+
+ Forward
+ SingleShot
+
+{chase_steps}
+ """
+ )
+
+ # --- Home Fade (sweep home / soft centre, then black — common live outro) ---
+ home = exit_park_channels(fig, {0}, rgb=(255, 200, 140), dimmer=180, rotate=191)
+ # --- Move in Black (kill light+spin first, then park unseen) ---
+ mib_dark = exit_park_channels(fig, set(), dimmer=0, rotate=191)
+ parts.append(
+ f"""
+
+{fixture_vals_xml(fixture_ids, home)}
+
+
+
+ Forward
+ SingleShot
+
+ {F(22)}
+ {blackout}
+
+
+
+{fixture_vals_xml(fixture_ids, mib_dark)}
+
+
+
+ Forward
+ SingleShot
+
+ {F(24)}
+ {F(24)}
+ {blackout}
+ """
+ )
+ return "\n".join(parts)
+
+
+def vc_appearance(fg: str = "Default", bg: str = "Default", frame: str = "Sunken") -> str:
+ return f"""
+ {frame}
+ {fg}
+ {bg}
+ None
+ Default
+ """
+
+
+def vc_slider(
+ widget_id: int,
+ caption: str,
+ x: int,
+ y: int,
+ channels: list[int],
+ color: str,
+ click_go: str = "None",
+ width: int = 50,
+ height: int = 380,
+ fixture_ids: tuple[int, ...] = (0, 1),
+ value: int = 0,
+) -> str:
+ ch_xml = "\n".join(
+ f' {ch}'
+ for fid in fixture_ids
+ for ch in channels
+ )
+ return f"""
+
+{vc_appearance(color)}
+ Level
+
+
+{ch_xml}
+
+
+ 4294967295
+
+ """
+
+
+def vc_widgets(
+ fig: Figure8,
+ fixture_ids: tuple[int, ...] = (0, 1),
+ fn_base: int = 0,
+ widget_base: int = 0,
+ origin: tuple[int, int] = (20, 20),
+) -> str:
+ """Buttons, speed dial, XY pad, and monitor sliders (grab to override)."""
+ def F(n: int) -> int:
+ return fn_base + n
+
+ def W(n: int) -> int:
+ return widget_base + n
+
+ ox, oy = origin
+ reds = [QLC_PIXEL0]
+ greens = [QLC_PIXEL0 + 1]
+ blues = [QLC_PIXEL0 + 2]
+ outer_rgb = [QLC_PIXEL0 + p * 4 + c for p in range(1, 7) for c in (0, 1, 2)]
+ slider_y = oy + 100
+ slider_x0 = ox + 410
+ slider_w = 44
+ gap = 6
+ specs = [
+ (4, "Pan", [QLC_PAN], "4294944000", "None", 0),
+ (5, "Tilt", [QLC_TILT], "4278255615", "None", 0),
+ (6, "Zoom", [QLC_ZOOM], "4294967040", "None", fig.zoom_close),
+ (7, "Focus", [QLC_FOCUS], "4294902015", "None", fig.focus_near),
+ (8, "Dim", [QLC_DIMMER], "4294967295", "None", fig.dimmer),
+ (9, "R", reds, "4294901760", "Red", 0),
+ (10, "G", greens, "4278255360", "Green", 0),
+ (11, "B", blues, "4278190335", "Blue", 0),
+ (12, "Outer", outer_rgb, "4288256409", "None", fig.outer_dim),
+ (13, "Rotate", [QLC_ROTATE], "4291611852", "None", fig.rotate),
+ ]
+ sliders = []
+ for i, (wid, name, chans, color, click, value) in enumerate(specs):
+ sliders.append(
+ vc_slider(
+ W(wid),
+ name,
+ slider_x0 + i * (slider_w + gap),
+ slider_y,
+ chans,
+ color,
+ click,
+ value=value,
+ fixture_ids=fixture_ids,
+ )
+ )
+ h_min, h_max, v_min, v_max = fig.window_rect()
+ fixture_axes = "\n".join(
+ f"""
+
+
+ """
+ for fid in fixture_ids
+ )
+ return f"""
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ True
+ False
+
+
+
+
+
+
+
+
+
+{vc_appearance()}
+ 108
+
+
+ {F(1)}
+ {F(3)}
+
+
+
+{vc_appearance()}
+{fixture_axes}
+
+
+
+
+ EFX
+ Figure of 8
+ {F(3)}
+
+
+{chr(10).join(sliders)}"""
+
+
+def mover_functions_xml(
+ fig: Figure8,
+ fixture_ids: tuple[int, ...] = (0, 1),
+ fn_base: int = 0,
+ loop_s: float = LOOP_MS / 1000.0,
+) -> str:
+ """Figure-of-8 look/sequence/EFX/collection + exit cues for the movers."""
+ def F(n: int) -> int:
+ return fn_base + n
+
+ bound = bound_scene_channels(fig)
+ n_values = len(bound) * len(fixture_ids)
+ step_ms = max(1, int(round(loop_s * 1000 / STEPS)))
+ steps_xml = []
+ for i in range(STEPS):
+ t = 2 * math.pi * i / STEPS
+ ch = point_channels(fig, fig.point(t, 0.0))
+ text = sequence_step_text(
+ [(fid, ch) for fid in fixture_ids],
+ always=(QLC_ZOOM, QLC_ROTATE),
+ )
+ steps_xml.append(
+ f' {text}'
+ )
+
+ blackout = {ch: 0 for ch in range(FIXTURE_CHANNELS)}
+ bound_vals = "\n".join(
+ f' {scene_fixture_val(bound)}' for fid in fixture_ids
+ )
+ blackout_vals = "\n".join(
+ f' {scene_fixture_val(blackout)}' for fid in fixture_ids
+ )
+ efx_fixtures = "\n".join(
+ f"""
+ {fid}
+ Forward
+ 255
+ """
+ for fid in fixture_ids
+ )
+ efx_ms = max(1, int(round(loop_s * 1000)))
+ return f"""
+
+{bound_vals}
+
+
+
+ Forward
+ Loop
+
+{chr(10).join(steps_xml)}
+
+
+
+{blackout_vals}
+
+
+{efx_fixtures}
+ Parallel
+
+ Forward
+ Loop
+ Eight
+ {fig.pan_amp}
+ {fig.tilt_amp}
+ 0
+
+ {fig.pan_center}
+ 1
+ 0
+
+
+ {fig.tilt_center}
+ 1
+ 0
+
+
+
+ {F(0)}
+ {F(1)}
+ {F(3)}
+
+{exit_functions_xml(fig, fixture_ids, fn_base=fn_base)}"""
+
+
+def merge_movers_into_xchc(
+ xchc_path: Path,
+ fig: Figure8,
+ address: int = 0,
+ address2: int = 44,
+ fixture_ids: tuple[int, ...] = (8, 9),
+ fn_base: int = 73,
+ widget_base: int = 100,
+):
+ """Patch Small Eye movers + figure-8 cues into an existing xchc workspace."""
+ text = xchc_path.read_text()
+ if "Small Eye 7" in text:
+ raise SystemExit(f"{xchc_path} already has Small Eye fixtures — aborting")
+
+ fixtures = "\n".join(
+ [
+ fixture_xml(fixture_ids[0], "Small Eye 7 #1", address),
+ fixture_xml(fixture_ids[1], "Small Eye 7 #2", address2),
+ ]
+ )
+ group = f"""
+ Small Eye Movers
+
+ 0
+ 0
+ """
+ functions = mover_functions_xml(fig, fixture_ids=fixture_ids, fn_base=fn_base)
+ # Soft Blackout (72) should also kill movers for a full stage black.
+ black = ",".join(f"{ch},0" for ch in range(FIXTURE_CHANNELS))
+ soft_extra = "\n".join(
+ f' {black}' for fid in fixture_ids
+ )
+ if 'Name="Soft Blackout"' in text:
+ text = text.replace(
+ """
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ """,
+ f"""
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+{soft_extra}
+ """,
+ )
+
+ # Insert fixtures after last BCC145 fixture block.
+ marker = """
+ BCC145 Line"""
+ if marker not in text:
+ raise SystemExit("Could not find BCC145 fixture group in xchc")
+ text = text.replace(marker, fixtures + "\n" + group + "\n" + marker, 1)
+
+ # Insert mover functions before Monitor.
+ mon = "
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+ """,
+ f"""
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+ """,
+ )
+
+ widgets = vc_widgets(
+ fig,
+ fixture_ids=fixture_ids,
+ fn_base=fn_base,
+ widget_base=widget_base,
+ origin=(720, 10),
+ )
+ # Insert mover VC before closing of VirtualConsole root.
+ frame_end = text.rfind(" \n ")
+ if frame_end < 0:
+ raise SystemExit("Could not find VirtualConsole frame end")
+ text = text[:frame_end] + widgets + "\n" + text[frame_end:]
+
+ xchc_path.write_text(text)
+ print(
+ f"Merged movers into {xchc_path} "
+ f"(fixtures {fixture_ids[0]},{fixture_ids[1]} @ DMX {address + 1},{address2 + 1}; "
+ f"functions {fn_base}–{fn_base + 25})"
+ )
+
+
+def fixture_xml(fid: int, name: str, address: int) -> str:
+ return f"""
+ Small Eye 7
+ Mover
+ 43 Channel
+ {fid}
+ {name}
+ 0
+ {address}
+ {FIXTURE_CHANNELS}
+ """
+
+
+def write_qxw(
+ path: Path,
+ fig: Figure8,
+ address: int = 0,
+ address2: int = 44,
+ loop_s: float = LOOP_MS / 1000.0,
+):
+ fixture_ids = (0, 1)
+ functions = mover_functions_xml(fig, fixture_ids=fixture_ids, loop_s=loop_s)
+ widgets = vc_widgets(fig, fixture_ids=fixture_ids)
+ xml = f"""
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+{fixture_xml(0, "Small Eye 7 #1", address)}
+{fixture_xml(1, "Small Eye 7 #2", address2)}
+{functions}
+
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+{widgets}
+
+
+
+
+
+
+
+
+
+
+"""
+ path.write_text(xml)
+ h_min, h_max, v_min, v_max = fig.window_rect()
+ print(
+ f"Wrote {path} (EFX eight centred {fig.pan_center},{fig.tilt_center} "
+ f"in pad window pan {h_min}–{h_max} tilt {v_min}–{v_max})"
+ )
+
+
+def run_live(args, fig: Figure8):
+ print(
+ f"Art-Net → {args.ip} universe {args.universe} "
+ f"#1 start {args.address} #2 start {args.address2} (43ch)"
+ )
+ print(
+ f"Figure-8 {args.loop:.0f}s, drift orbit {fig.drift_period:.0f}s "
+ f"(pan ±{fig.drift_pan}, tilt ±{fig.drift_tilt})."
+ )
+ print("Stop QLC+ Art-Net output first. Ctrl+C to blackout and quit.")
+ sender = ArtNetSender(args.ip, universe=args.universe)
+ fixtures = [SmallEye(sender, args.address), SmallEye(sender, args.address2)]
+ period = args.loop / STEPS
+ try:
+ for fixture in fixtures:
+ fixture.park_light(
+ pan=fig.pan_center,
+ tilt=fig.tilt_center,
+ dimmer=fig.dimmer,
+ white=0,
+ rgb=0,
+ )
+ t0 = time.monotonic()
+ while True:
+ elapsed = time.monotonic() - t0
+ t = (elapsed / args.loop) * 2 * math.pi
+ pt = fig.point(t, elapsed)
+ for fixture in fixtures:
+ apply_point(fixture, pt)
+ time.sleep(min(period, 0.025))
+ except KeyboardInterrupt:
+ print("\nstopped")
+ finally:
+ sender.close()
+
+
+def parse_args():
+ p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+ p.add_argument("--ip", default="192.168.1.228", help="Art-Net destination")
+ p.add_argument("--universe", type=int, default=0)
+ p.add_argument("--address", type=int, default=1, help="Fixture 1 DMX start, 1-based")
+ p.add_argument("--address2", type=int, default=45, help="Fixture 2 DMX start, 1-based")
+ p.add_argument("--loop", type=float, default=LOOP_MS / 1000.0, help="Seconds per figure-8")
+ p.add_argument("--pan-center", type=int, default=128)
+ p.add_argument("--tilt-center", type=int, default=80)
+ p.add_argument("--pan-amp", type=int, default=28, help="Half-width of the 8 (DMX)")
+ p.add_argument("--tilt-amp", type=int, default=22, help="Half-height of the 8 (DMX)")
+ p.add_argument("--focus-near", type=int, default=70, help="Focus at closest throw")
+ p.add_argument("--focus-far", type=int, default=200, help="Focus at farthest throw")
+ p.add_argument("--zoom-close", type=int, default=0, help="Zoom at closest throw (0 = tight)")
+ p.add_argument("--zoom-far", type=int, default=0, help="Zoom at farthest throw (0 = tight)")
+ p.add_argument("--outer-dim", type=int, default=60, help="Outer ring brightness 0–255")
+ p.add_argument(
+ "--rotate",
+ type=int,
+ default=ROTATE_CW,
+ help="Lens rotate (128–188 CCW, 194–255 CW, 0 = off)",
+ )
+ p.add_argument("--drift-pan", type=int, default=18, help="How far the 8 wanders in pan")
+ p.add_argument("--drift-tilt", type=int, default=12, help="How far the 8 wanders in tilt")
+ p.add_argument(
+ "--drift-period",
+ type=float,
+ default=DRIFT_LOOPS * LOOP_MS / 1000.0,
+ help="Seconds for one full drift orbit (default 8 figure-8s)",
+ )
+ p.add_argument("--write-qxw", metavar="PATH", help="Write a QLC+ workspace instead of live output")
+ p.add_argument(
+ "--merge-xchc",
+ metavar="PATH",
+ help="Add Small Eye movers + figure-8 cues into an existing xchc.qxw",
+ )
+ return p.parse_args()
+
+
+def main():
+ args = parse_args()
+ fig = Figure8(
+ pan_center=args.pan_center,
+ tilt_center=args.tilt_center,
+ pan_amp=args.pan_amp,
+ tilt_amp=args.tilt_amp,
+ focus_near=args.focus_near,
+ focus_far=args.focus_far,
+ zoom_close=args.zoom_close,
+ zoom_far=args.zoom_far,
+ outer_dim=args.outer_dim,
+ rotate=args.rotate,
+ drift_pan=args.drift_pan,
+ drift_tilt=args.drift_tilt,
+ drift_period=args.drift_period,
+ )
+ if args.merge_xchc:
+ merge_movers_into_xchc(
+ Path(args.merge_xchc),
+ fig,
+ address=max(0, args.address - 1),
+ address2=max(0, args.address2 - 1),
+ )
+ return
+ if args.write_qxw:
+ write_qxw(
+ Path(args.write_qxw),
+ fig,
+ address=max(0, args.address - 1),
+ address2=max(0, args.address2 - 1),
+ loop_s=args.loop,
+ )
+ return
+ if not 1 <= args.address <= 512 or not 1 <= args.address2 <= 512:
+ sys.exit("address must be 1–512")
+ run_live(args, fig)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/integrate_u_patterns.py b/scripts/integrate_u_patterns.py
new file mode 100644
index 0000000..b54f29b
--- /dev/null
+++ b/scripts/integrate_u_patterns.py
@@ -0,0 +1,366 @@
+#!/usr/bin/env python3
+"""Rewrite xchc pattern scenes so the U of cans + centre movers act as one.
+
+Building 7 m wide. Coordinates in metres:
+ X = 0 at centre line, +X to the right
+ Y = 0 at the row of 4, +Y toward audience (in front of the 4)
+
+Audience
+ 1 8 ← wall-mounted sides @ 2.4 m in front of the 4
+ 2 M1 M2 7 ← wall-mounted sides @ 1.2 m; movers @ 1.1 m, ±0.3 m
+ 3 — 4 — 5 — 6 ← row of 4 at ±0.6 m and ±1.8 m from centre
+
+Building 7 m → side walls at ±3.5 m. #1,#2 left wall; #7,#8 right wall.
+#1 front left. Movers 1.1 m in front of the row of 4, 0.3 m off centre.
+"""
+
+from __future__ import annotations
+
+import re
+from pathlib import Path
+
+CANS = list(range(8))
+MOVERS = (8, 9)
+
+WALL = 3.5 # building half-width
+
+# Fixture ID → (x_m, y_m) — Y=0 = row of 4; +Y toward audience
+LAYOUT_M = {
+ 0: (-WALL, 2.4), # #1 front left — left wall
+ 1: (-WALL, 1.2), # #2 — left wall
+ 2: (-1.8, 0.0), # #3 row of 4
+ 3: (-0.6, 0.0), # #4 row of 4
+ 4: (0.6, 0.0), # #5 row of 4
+ 5: (1.8, 0.0), # #6 row of 4
+ 6: (WALL, 1.2), # #7 — right wall
+ 7: (WALL, 2.4), # #8 front right — right wall
+ 8: (-0.3, 1.1), # Small Eye #1 — 0.3 m off centre, 1.1 m in front of row of 4
+ 9: (0.3, 1.1), # Small Eye #2 — 0.3 m off centre, 1.1 m in front of row of 4
+}
+
+# Walk U: #1 → #2 → along row of 4 L→R → #7 → #8
+U_WALK = [0, 1, 2, 3, 4, 5, 6, 7]
+LEFT_SIDE = {0, 1}
+RIGHT_SIDE = {6, 7}
+ROW4 = {2, 3, 4, 5}
+RINGS = [
+ {8, 9},
+ {8, 9, 3, 4}, # movers + centre of row of 4
+ {8, 9, *ROW4},
+ {8, 9, *CANS},
+]
+LEFT = LEFT_SIDE | {2, 3, 8}
+RIGHT = RIGHT_SIDE | {4, 5, 9}
+
+GRID_W = 7.0
+GRID_H = 3.2
+X_ORIGIN = -3.5
+
+
+def m_to_grid(x_m: float, y_m: float) -> tuple[float, float]:
+ gx = round(x_m - X_ORIGIN, 2)
+ # Row of 4 (y=0) toward top; audience / front sides toward bottom
+ gy = round(y_m, 2)
+ return gx, gy
+
+
+COLORS = {
+ "Red": (255, 0, 0),
+ "Orange": (255, 127, 0),
+ "Yellow": (255, 255, 0),
+ "Green": (0, 255, 0),
+ "Cyan": (0, 255, 255),
+ "Blue": (0, 0, 255),
+ "Violet": (127, 0, 255),
+ "Magenta": (255, 0, 255),
+ "White": (255, 255, 255),
+}
+
+RAINBOW = [
+ (255, 0, 0),
+ (255, 127, 0),
+ (255, 255, 0),
+ (0, 255, 0),
+ (0, 255, 255),
+ (0, 0, 255),
+ (127, 0, 255),
+ (255, 0, 255),
+]
+
+
+def can_channels(r: int, g: int, b: int, *, white: int = 0, on: bool = True) -> str:
+ if not on:
+ return "0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0"
+ if white:
+ return f"1,0,2,0,3,0,4,0,5,{white},6,0,7,0"
+ return f"1,0,2,{r},3,{g},4,{b},5,0,6,0,7,0"
+
+
+def mover_channels(r: int, g: int, b: int, *, on: bool = True, dim: int = 255) -> str:
+ if not on or (r == g == b == 0):
+ dim = 0
+ r = g = b = 0
+ parts = [
+ 0, 128, 2, 80, 4, 0, 5, 0, 6, 191, 7, 70, 8, dim, 9, 0,
+ 10, r, 11, g, 12, b, 13, 0,
+ ]
+ for pixel in range(1, 7):
+ base = 10 + pixel * 4
+ parts.extend([base, 0, base + 1, 0, base + 2, 0, base + 3, 0])
+ return ",".join(str(x) for x in parts)
+
+
+def fixture_vals(
+ lit: dict[int, tuple[int, int, int] | None], *, white_ids: set[int] | None = None
+) -> str:
+ white_ids = white_ids or set()
+ lines = []
+ for fid in list(CANS) + list(MOVERS):
+ rgb = lit.get(fid)
+ if rgb is None:
+ ch = (
+ mover_channels(0, 0, 0, on=False)
+ if fid in MOVERS
+ else can_channels(0, 0, 0, on=False)
+ )
+ lines.append(f' {ch}')
+ continue
+ r, g, b = rgb
+ if fid in MOVERS:
+ ch = mover_channels(r, g, b)
+ elif fid in white_ids:
+ ch = can_channels(0, 0, 0, white=255)
+ else:
+ ch = can_channels(r, g, b)
+ lines.append(f' {ch}')
+ return "\n".join(lines)
+
+
+def scene(
+ fid: int,
+ name: str,
+ lit: dict,
+ *,
+ white_ids: set[int] | None = None,
+ fade: int = 0,
+) -> str:
+ return f"""
+
+{fixture_vals(lit, white_ids=white_ids)}
+ """
+
+
+def replace_function(text: str, function_id: int, new_xml: str) -> str:
+ pattern = re.compile(
+ rf' \n',
+ re.MULTILINE,
+ )
+ if not pattern.search(text):
+ raise SystemExit(f"Function ID {function_id} not found")
+ return pattern.sub(new_xml.rstrip() + "\n", text, count=1)
+
+
+def all_color(rgb: tuple[int, int, int]) -> dict:
+ lit = {i: rgb for i in CANS}
+ lit[8] = rgb
+ lit[9] = rgb
+ return lit
+
+
+def monitor_xml() -> str:
+ items = []
+ for fid, (xm, ym) in LAYOUT_M.items():
+ gx, gy = m_to_grid(xm, ym)
+ items.append(f' ')
+ return f"""
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+{chr(10).join(items)}
+ """
+
+
+def main():
+ path = Path(__file__).resolve().parents[1] / "shows" / "xchc.qxw"
+ text = path.read_text()
+
+ for i, (name, rgb) in enumerate(COLORS.items()):
+ white_ids = set(CANS) if name == "White" else None
+ text = replace_function(text, i, scene(i, name, all_color(rgb), white_ids=white_ids))
+
+ for step in range(8):
+ lit = {}
+ for ci, can in enumerate(U_WALK):
+ lit[can] = RAINBOW[(ci + step) % 8]
+ lit[8] = RAINBOW[(3 + step) % 8]
+ lit[9] = RAINBOW[(4 + step) % 8]
+ text = replace_function(text, 10 + step, scene(10 + step, f"Rainbow {step + 1}", lit))
+
+ blue, red = (0, 0, 255), (255, 0, 0)
+ odd_blue, odd_red = {}, {}
+ for i in CANS:
+ if i % 2 == 0:
+ odd_blue[i], odd_red[i] = blue, red
+ else:
+ odd_blue[i], odd_red[i] = red, blue
+ odd_blue[8], odd_blue[9] = blue, red
+ odd_red[8], odd_red[9] = red, blue
+ text = replace_function(text, 20, scene(20, "Odd Blue Even Red", odd_blue))
+ text = replace_function(text, 21, scene(21, "Odd Red Even Blue", odd_red))
+
+ off = {i: None for i in list(CANS) + list(MOVERS)}
+ text = replace_function(text, 23, scene(23, "Test Off", off))
+ text = replace_function(text, 72, scene(72, "Soft Blackout", off, fade=4000))
+
+ for i, can in enumerate(U_WALK):
+ lit = {fid: None for fid in list(CANS) + list(MOVERS)}
+ lit[can] = (255, 255, 255)
+ text = replace_function(
+ text, 33 + i, scene(33 + i, f"Scanner {i + 1}", lit, white_ids={can})
+ )
+ for mid, name, ids in ((99, "Scanner Movers", {8, 9}), (100, "Scanner Off", set())):
+ lit = {fid: None for fid in list(CANS) + list(MOVERS)}
+ for m in ids:
+ lit[m] = (255, 255, 255)
+ block = scene(mid, name, lit)
+ if f'Function ID="{mid}"' in text:
+ text = replace_function(text, mid, block)
+ else:
+ text = text.replace(
+ ' ',
+ block + '\n ',
+ 1,
+ )
+
+ scanner_steps = "\n".join(
+ f' {sid}'
+ for i, sid in enumerate([*range(33, 41), 99, 100])
+ )
+ text = replace_function(
+ text,
+ 41,
+ f"""
+
+ Forward
+ Loop
+
+{scanner_steps}
+ """,
+ )
+
+ for n in range(1, 9):
+ lit = {fid: None for fid in list(CANS) + list(MOVERS)}
+ for can in U_WALK[:n]:
+ lit[can] = (255, 255, 255)
+ if n >= 3:
+ lit[8] = lit[9] = (255, 255, 255)
+ white = {c for c in U_WALK[:n]}
+ text = replace_function(
+ text, 41 + n, scene(41 + n, f"Fill {n}", lit, white_ids=white)
+ )
+
+ for i, ring in enumerate(RINGS):
+ lit = {fid: None for fid in list(CANS) + list(MOVERS)}
+ white = {f for f in ring if f in CANS}
+ for fid in ring:
+ lit[fid] = (255, 255, 255)
+ text = replace_function(
+ text, 51 + i, scene(51 + i, f"Center {i + 1}", lit, white_ids=white)
+ )
+
+ for i, (ids, name) in enumerate(
+ [
+ ({0, 7}, "Pairs 1"),
+ ({1, 6}, "Pairs 2"),
+ ({2, 5}, "Pairs 3"),
+ ({3, 4, 8, 9}, "Pairs 4"),
+ ]
+ ):
+ lit = {fid: None for fid in list(CANS) + list(MOVERS)}
+ white = {f for f in ids if f in CANS}
+ for fid in ids:
+ lit[fid] = (255, 255, 255)
+ text = replace_function(text, 56 + i, scene(56 + i, name, lit, white_ids=white))
+
+ lbrr = {fid: None for fid in list(CANS) + list(MOVERS)}
+ lrbr = {fid: None for fid in list(CANS) + list(MOVERS)}
+ for fid in LEFT:
+ lbrr[fid], lrbr[fid] = (0, 0, 255), (255, 0, 0)
+ for fid in RIGHT:
+ lbrr[fid], lrbr[fid] = (255, 0, 0), (0, 0, 255)
+ text = replace_function(text, 61, scene(61, "Left Blue Right Red", lbrr))
+ text = replace_function(text, 62, scene(62, "Left Red Right Blue", lrbr))
+
+ for step in range(3):
+ lit = {fid: None for fid in list(CANS) + list(MOVERS)}
+ white = set()
+ for can in CANS:
+ if can % 3 == step:
+ lit[can] = (255, 255, 255)
+ white.add(can)
+ if step == 0:
+ lit[8] = (255, 255, 255)
+ elif step == 1:
+ lit[9] = (255, 255, 255)
+ else:
+ lit[8] = lit[9] = (255, 200, 140)
+ text = replace_function(
+ text, 64 + step, scene(64 + step, f"Theater {step + 1}", lit, white_ids=white)
+ )
+
+ collapse_steps = "\n".join(
+ f' {sid}'
+ for i, sid in enumerate([54, 53, 52, 51, 23])
+ )
+ text = replace_function(
+ text,
+ 68,
+ f"""
+
+ Forward
+ SingleShot
+
+{collapse_steps}
+ """,
+ )
+
+ chase_steps = "\n".join(
+ f' {sid}'
+ for i, sid in enumerate([*range(33, 41), 99, 23])
+ )
+ text = replace_function(
+ text,
+ 69,
+ f"""
+
+ Forward
+ SingleShot
+
+{chase_steps}
+ """,
+ )
+
+ text = replace_function(
+ text, 70, scene(70, "Home Soft", all_color((255, 180, 80)), fade=2500)
+ )
+
+ text = re.sub(
+ r' [\s\S]*?',
+ lambda _m: monitor_xml(),
+ text,
+ count=1,
+ )
+ text = text.replace("BCC145 Line", "BCC145 U", 1)
+
+ path.write_text(text)
+ print("Updated", path)
+ print("Y=0 row of 4; +Y toward audience (in front of the 4)")
+ for fid in sorted(LAYOUT_M):
+ x, y = LAYOUT_M[fid]
+ label = f"Can #{fid + 1}" if fid < 8 else f"Mover #{fid - 7}"
+ print(f" {label:10} x={x:+.1f} y={y:.1f}")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/make_simple_vc.py b/scripts/make_simple_vc.py
new file mode 100644
index 0000000..12e85a5
--- /dev/null
+++ b/scripts/make_simple_vc.py
@@ -0,0 +1,305 @@
+#!/usr/bin/env python3
+"""Generate shows/simple.qxw — per-mover position + shared and individual RGBW."""
+
+from __future__ import annotations
+
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parents[1]
+OUT = ROOT / "shows" / "simple.qxw"
+
+# Fixture IDs match shows/xchc.qxw
+CANS = list(range(8)) # BCC145 #1–#8
+M1, M2 = 8, 9
+MOVERS = [M1, M2]
+
+# Can 8ch: Dim=0, R=2, G=3, B=4, W=5
+# Mover 43ch: Center Bright=8; RGBW heads 1–7
+MOVER_R = [10, 14, 18, 22, 26, 30, 34]
+MOVER_G = [11, 15, 19, 23, 27, 31, 35]
+MOVER_B = [12, 16, 20, 24, 28, 32, 36]
+MOVER_W = [13, 17, 21, 25, 29, 33, 37]
+
+COLORS = [
+ ("R", 2, MOVER_R, "4294901760", "Red"),
+ ("G", 3, MOVER_G, "4278255360", "Green"),
+ ("B", 4, MOVER_B, "4278190335", "Blue"),
+ ("W", 5, MOVER_W, "4294967295", "None"),
+]
+
+
+def appearance(
+ fg: str = "Default",
+ bg: str = "Default",
+ frame: str = "Sunken",
+) -> str:
+ return f"""
+ {frame}
+ {fg}
+ {bg}
+ None
+ Default
+ """
+
+
+def slider(
+ wid: int,
+ caption: str,
+ x: int,
+ y: int,
+ w: int,
+ h: int,
+ channels: list[tuple[int, int]],
+ *,
+ value: int = 0,
+ fg: str = "Default",
+ cng: str = "None",
+) -> str:
+ ch_xml = "\n".join(
+ f' {ch}' for fid, ch in channels
+ )
+ return f"""
+
+{appearance(fg=fg)}
+ Level
+
+
+{ch_xml}
+
+
+ 4294967295
+
+ """
+
+
+def xypad(wid: int, caption: str, fid: int, x: int, y: int, w: int, h: int) -> str:
+ return f"""
+
+{appearance()}
+
+
+
+
+
+
+
+ """
+
+
+def label_frame(caption: str, x: int, y: int, w: int, h: int) -> str:
+ return f"""
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ True
+ False
+ False
+ False
+ """
+
+
+def fixture_xml() -> str:
+ parts = []
+ for i in range(8):
+ parts.append(
+ f"""
+ beamZ
+ BCC145
+ 8 Channel
+ {i}
+ BCC145 #{i + 1}
+ 0
+ {87 + i * 8}
+ 8
+ """
+ )
+ for i, addr in enumerate((0, 44)):
+ parts.append(
+ f"""
+ Small Eye 7
+ Mover
+ 43 Channel
+ {8 + i}
+ Small Eye 7 #{i + 1}
+ 0
+ {addr}
+ 43
+ """
+ )
+ return "\n".join(parts)
+
+
+def main() -> None:
+ pad_w, pad_h = 240, 240
+ sl_w, sl_h = 44, 240
+ ind_w, ind_h = 36, 160
+ gap = 8
+
+ widgets: list[str] = []
+ wid = 0
+ max_x = 0
+ max_y = 0
+
+ def place_slider(caption, x, y, w, h, channels, value=0, fg="Default", cng="None"):
+ nonlocal wid, max_x, max_y
+ widgets.append(
+ slider(wid, caption, x, y, w, h, channels, value=value, fg=fg, cng=cng)
+ )
+ wid += 1
+ max_x = max(max_x, x + w)
+ max_y = max(max_y, y + h)
+
+ y0 = 28
+ x = 10
+ widgets.append(xypad(wid, "M1 Position", M1, x, y0, pad_w, pad_h))
+ wid += 1
+ x += pad_w + gap
+ widgets.append(xypad(wid, "M2 Position", M2, x, y0, pad_w, pad_h))
+ wid += 1
+ x += pad_w + gap + 12
+ max_x = max(max_x, x)
+ max_y = max(max_y, y0 + pad_h)
+
+ place_slider("C Dim", x, y0, sl_w, sl_h, [(f, 0) for f in CANS], 255, "4294967295")
+ x += sl_w + 2
+ for name, can_ch, _mover_chs, fg, cng in COLORS:
+ place_slider(
+ f"C {name}",
+ x,
+ y0,
+ sl_w,
+ sl_h,
+ [(f, can_ch) for f in CANS],
+ fg=fg,
+ cng=cng,
+ )
+ x += sl_w + 2
+
+ x += 14
+
+ place_slider("M Dim", x, y0, sl_w, sl_h, [(f, 8) for f in MOVERS], 255, "4294967295")
+ x += sl_w + 2
+ for name, _can_ch, mover_chs, fg, cng in COLORS:
+ place_slider(
+ f"M {name}",
+ x,
+ y0,
+ sl_w,
+ sl_h,
+ [(f, c) for f in MOVERS for c in mover_chs],
+ fg=fg,
+ cng=cng,
+ )
+ x += sl_w + 2
+
+ y1 = y0 + pad_h + 36
+ x = 10
+ widgets.append(label_frame("Cans individual RGBW", x, y1 - 28, 200, 24))
+
+ for i, fid in enumerate(CANS):
+ col_x = x + i * (4 * (ind_w + 2) + 10)
+ for j, (name, can_ch, _m, fg, cng) in enumerate(COLORS):
+ place_slider(
+ f"{i + 1}{name}",
+ col_x + j * (ind_w + 2),
+ y1,
+ ind_w,
+ ind_h,
+ [(fid, can_ch)],
+ fg=fg,
+ cng=cng,
+ )
+
+ mx = x + 8 * (4 * (ind_w + 2) + 10) + 16
+ widgets.append(label_frame("Movers individual RGBW", mx, y1 - 28, 220, 24))
+ for mi, (fid, label) in enumerate(((M1, "M1"), (M2, "M2"))):
+ col_x = mx + mi * (4 * (ind_w + 2) + 14)
+ for j, (name, _can_ch, mover_chs, fg, cng) in enumerate(COLORS):
+ place_slider(
+ f"{label}{name}",
+ col_x + j * (ind_w + 2),
+ y1,
+ ind_w,
+ ind_h,
+ [(fid, c) for c in mover_chs],
+ fg=fg,
+ cng=cng,
+ )
+
+ total_w = max_x + 16
+ total_h = max_y + 16
+
+ qxw = f"""
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+{fixture_xml()}
+
+ BCC145 U
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+ Small Eye Movers
+
+ 0
+ 0
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+{"\n".join(widgets)}
+
+
+
+
+
+
+
+
+
+
+"""
+ OUT.parent.mkdir(parents=True, exist_ok=True)
+ OUT.write_text(qxw)
+ print(f"Wrote {OUT} ({total_w}x{total_h}, {wid} widgets)")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/scripts/unify_vc.py b/scripts/unify_vc.py
new file mode 100644
index 0000000..36980d2
--- /dev/null
+++ b/scripts/unify_vc.py
@@ -0,0 +1,268 @@
+#!/usr/bin/env python3
+"""Merge Patterns + Movers into one SoloFrame and one Speed dial in xchc.qxw."""
+
+from __future__ import annotations
+
+import re
+from pathlib import Path
+
+
+def btn(
+ widget_id: int,
+ caption: str,
+ func_id: int,
+ x: int,
+ y: int,
+ w: int,
+ h: int,
+ bg: str,
+ fg: str = "4294967295",
+) -> str:
+ return f""" """
+
+
+ROOT = Path(__file__).resolve().parents[1]
+
+
+def main():
+ path = ROOT / "shows" / "xchc.qxw"
+ text = path.read_text()
+
+ # Combined looks: can colour chase + figure-of-8 movement
+ combos = [
+ (101, "Colour + F8", 9, 77),
+ (102, "Rainbow + F8", 18, 77),
+ (103, "OddEven + F8", 22, 77),
+ (104, "Center + F8", 55, 77),
+ (105, "Theater + F8", 67, 77),
+ ]
+ combo_xml = []
+ for fid, name, a, b in combos:
+ block = f"""
+ {a}
+ {b}
+
+"""
+ if f'Function ID="{fid}"' in text:
+ text = re.sub(
+ rf' \n',
+ block,
+ text,
+ count=1,
+ )
+ else:
+ combo_xml.append(block.rstrip())
+ if combo_xml:
+ text = text.replace(
+ '
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ True
+ False
+{chr(10).join(buttons)}
+ """
+
+ # Replace Patterns SoloFrame
+ text = re.sub(
+ r' [\s\S]*?',
+ show_frame,
+ text,
+ count=1,
+ )
+
+ # Remove Movers SoloFrame (buttons now in Show)
+ text = re.sub(
+ r' [\s\S]*?\n',
+ "",
+ text,
+ count=1,
+ )
+
+ # Merge mover speed targets into main Speed dial; drop Mover Speed dial
+ text = re.sub(
+ r' [\s\S]*?\n',
+ "",
+ text,
+ count=1,
+ )
+ speed_extra = """ 74
+ 76
+ 101
+ 102
+ 103
+ 104
+ 105
+"""
+ if 'Function FadeIn="6" FadeOut="0" Duration="6">74' not in text:
+ text = text.replace(
+ ' 69\n ',
+ ' 69\n'
+ + speed_extra
+ + " ",
+ 1,
+ )
+
+ # Make Speed dial visible next to Show
+ text = text.replace(
+ '\n ',
+ f'\n ',
+ 1,
+ )
+
+ # All Dim also drives mover dimmers
+ if "8" not in text.split('Caption="All Dim"', 1)[1][:800]:
+ text = text.replace(
+ """
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+ 4294967295
+
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 8
+ 8
+
+
+ 4294967295
+
+
+ \n ',
+ f'\n ',
+ 1,
+ )
+
+ # Shift mover sliders under Show, right of XY pad
+ slider_y = frame_h + 20
+ old_xs = [1050 + i * 46 for i in range(10)]
+ new_xs = [340 + i * 46 for i in range(10)]
+ for ox, nx in zip(old_xs, new_xs):
+ text = text.replace(
+ f'Visible="True" X="{ox}" Y="180" Width="44" Height="320"',
+ f'Visible="True" X="{nx}" Y="{slider_y}" Width="44" Height="300"',
+ 1,
+ )
+
+ path.write_text(text)
+ print(f"Unified Show controls in {path}")
+ print(f" SoloFrame {frame_w}x{frame_h} with pattern + F8 combos + exits")
+ print(" One Speed dial; Position pad + mover sliders below")
+
+
+if __name__ == "__main__":
+ main()
diff --git a/shows/archive/qlc+.qxw b/shows/archive/qlc+.qxw
new file mode 100644
index 0000000..7d232ff
--- /dev/null
+++ b/shows/archive/qlc+.qxw
@@ -0,0 +1,269 @@
+
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 0
+ BCC145
+ 0
+ 0
+ 8
+
+ 0,2
+ 0,3
+ 0,4
+ 0,5
+ 0,0
+
+
+
+ 0,255,1,0,2,255,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,255,3,127,4,0,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,255,3,255,4,0,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,0,3,255,4,0,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,0,3,255,4,255,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,0,3,0,4,255,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,127,3,0,4,255,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,255,3,0,4,255,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,0,3,0,4,0,5,255,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,255,1,0,2,0,3,0,4,0,5,0,6,225,7,80
+
+
+
+ Forward
+ Loop
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/shows/archive/xchc2.qxw b/shows/archive/xchc2.qxw
new file mode 100644
index 0000000..0e39db9
--- /dev/null
+++ b/shows/archive/xchc2.qxw
@@ -0,0 +1,115 @@
+
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 0
+ BCC145 #1
+ 0
+ 71
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 1
+ BCC145 #2
+ 0
+ 79
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 2
+ BCC145 #3
+ 0
+ 87
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 3
+ BCC145 #4
+ 0
+ 95
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 4
+ BCC145 #5
+ 0
+ 103
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 5
+ BCC145 #6
+ 0
+ 111
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 6
+ BCC145 #7
+ 0
+ 119
+ 8
+
+
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+
+
+
+
+
+
+
+
+
diff --git a/shows/simple.qxw b/shows/simple.qxw
new file mode 100644
index 0000000..b5a4626
--- /dev/null
+++ b/shows/simple.qxw
@@ -0,0 +1,1259 @@
+
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 0
+ BCC145 #1
+ 0
+ 87
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 1
+ BCC145 #2
+ 0
+ 95
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 2
+ BCC145 #3
+ 0
+ 103
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 3
+ BCC145 #4
+ 0
+ 111
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 4
+ BCC145 #5
+ 0
+ 119
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 5
+ BCC145 #6
+ 0
+ 127
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 6
+ BCC145 #7
+ 0
+ 135
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 7
+ BCC145 #8
+ 0
+ 143
+ 8
+
+
+ Small Eye 7
+ Mover
+ 43 Channel
+ 8
+ Small Eye 7 #1
+ 0
+ 0
+ 43
+
+
+ Small Eye 7
+ Mover
+ 43 Channel
+ 9
+ Small Eye 7 #2
+ 0
+ 44
+ 43
+
+
+ BCC145 U
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+ Small Eye Movers
+
+ 0
+ 0
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 8
+ 8
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 10
+ 14
+ 18
+ 22
+ 26
+ 30
+ 34
+ 10
+ 14
+ 18
+ 22
+ 26
+ 30
+ 34
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 11
+ 15
+ 19
+ 23
+ 27
+ 31
+ 35
+ 11
+ 15
+ 19
+ 23
+ 27
+ 31
+ 35
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 12
+ 16
+ 20
+ 24
+ 28
+ 32
+ 36
+ 12
+ 16
+ 20
+ 24
+ 28
+ 32
+ 36
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 13
+ 17
+ 21
+ 25
+ 29
+ 33
+ 37
+ 13
+ 17
+ 21
+ 25
+ 29
+ 33
+ 37
+
+
+ 4294967295
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ True
+ False
+ False
+ False
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ True
+ False
+ False
+ False
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 10
+ 14
+ 18
+ 22
+ 26
+ 30
+ 34
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 11
+ 15
+ 19
+ 23
+ 27
+ 31
+ 35
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 12
+ 16
+ 20
+ 24
+ 28
+ 32
+ 36
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 13
+ 17
+ 21
+ 25
+ 29
+ 33
+ 37
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 10
+ 14
+ 18
+ 22
+ 26
+ 30
+ 34
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 11
+ 15
+ 19
+ 23
+ 27
+ 31
+ 35
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 12
+ 16
+ 20
+ 24
+ 28
+ 32
+ 36
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 13
+ 17
+ 21
+ 25
+ 29
+ 33
+ 37
+
+
+ 4294967295
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/shows/small_eye.qxw b/shows/small_eye.qxw
new file mode 100644
index 0000000..fa61f1e
--- /dev/null
+++ b/shows/small_eye.qxw
@@ -0,0 +1,487 @@
+
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+
+ Small Eye 7
+ Mover
+ 43 Channel
+ 0
+ Small Eye 7 #1
+ 0
+ 0
+ 43
+
+
+ Small Eye 7
+ Mover
+ 43 Channel
+ 1
+ Small Eye 7 #2
+ 0
+ 44
+ 43
+
+
+
+ 4,0,5,0,6,230,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 4,0,5,0,6,230,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 0:5,0,6,230,7,70,8,255,10,255,14,60,18,60,22,60,26,60,30,60,34,60:1:5,0,6,230,7,70,8,255,10,255,14,60,18,60,22,60,26,60,30,60,34,60
+ 0:5,0,6,230,7,70,8,255,10,255,11,24,14,60,15,6,18,60,19,6,22,60,23,6,26,60,27,6,30,60,31,6,34,60,35,6:1:5,0,6,230,7,70,8,255,10,255,11,24,14,60,15,6,18,60,19,6,22,60,23,6,26,60,27,6,30,60,31,6,34,60,35,6
+ 0:5,0,6,230,7,70,8,255,10,255,11,48,14,60,15,11,18,60,19,11,22,60,23,11,26,60,27,11,30,60,31,11,34,60,35,11:1:5,0,6,230,7,70,8,255,10,255,11,48,14,60,15,11,18,60,19,11,22,60,23,11,26,60,27,11,30,60,31,11,34,60,35,11
+ 0:5,0,6,230,7,70,8,255,10,255,11,72,14,60,15,17,18,60,19,17,22,60,23,17,26,60,27,17,30,60,31,17,34,60,35,17:1:5,0,6,230,7,70,8,255,10,255,11,72,14,60,15,17,18,60,19,17,22,60,23,17,26,60,27,17,30,60,31,17,34,60,35,17
+ 0:5,0,6,230,7,70,8,255,10,255,11,96,14,60,15,23,18,60,19,23,22,60,23,23,26,60,27,23,30,60,31,23,34,60,35,23:1:5,0,6,230,7,70,8,255,10,255,11,96,14,60,15,23,18,60,19,23,22,60,23,23,26,60,27,23,30,60,31,23,34,60,35,23
+ 0:5,0,6,230,7,70,8,255,10,255,11,120,14,60,15,28,18,60,19,28,22,60,23,28,26,60,27,28,30,60,31,28,34,60,35,28:1:5,0,6,230,7,70,8,255,10,255,11,120,14,60,15,28,18,60,19,28,22,60,23,28,26,60,27,28,30,60,31,28,34,60,35,28
+ 0:5,0,6,230,7,70,8,255,10,255,11,143,14,60,15,34,18,60,19,34,22,60,23,34,26,60,27,34,30,60,31,34,34,60,35,34:1:5,0,6,230,7,70,8,255,10,255,11,143,14,60,15,34,18,60,19,34,22,60,23,34,26,60,27,34,30,60,31,34,34,60,35,34
+ 0:5,0,6,230,7,70,8,255,10,255,11,167,14,60,15,39,18,60,19,39,22,60,23,39,26,60,27,39,30,60,31,39,34,60,35,39:1:5,0,6,230,7,70,8,255,10,255,11,167,14,60,15,39,18,60,19,39,22,60,23,39,26,60,27,39,30,60,31,39,34,60,35,39
+ 0:5,0,6,230,7,70,8,255,10,255,11,191,14,60,15,45,18,60,19,45,22,60,23,45,26,60,27,45,30,60,31,45,34,60,35,45:1:5,0,6,230,7,70,8,255,10,255,11,191,14,60,15,45,18,60,19,45,22,60,23,45,26,60,27,45,30,60,31,45,34,60,35,45
+ 0:5,0,6,230,7,70,8,255,10,255,11,215,14,60,15,51,18,60,19,51,22,60,23,51,26,60,27,51,30,60,31,51,34,60,35,51:1:5,0,6,230,7,70,8,255,10,255,11,215,14,60,15,51,18,60,19,51,22,60,23,51,26,60,27,51,30,60,31,51,34,60,35,51
+ 0:5,0,6,230,7,70,8,255,10,255,11,239,14,60,15,56,18,60,19,56,22,60,23,56,26,60,27,56,30,60,31,56,34,60,35,56:1:5,0,6,230,7,70,8,255,10,255,11,239,14,60,15,56,18,60,19,56,22,60,23,56,26,60,27,56,30,60,31,56,34,60,35,56
+ 0:5,0,6,230,7,70,8,255,10,247,11,255,14,58,15,60,18,58,19,60,22,58,23,60,26,58,27,60,30,58,31,60,34,58,35,60:1:5,0,6,230,7,70,8,255,10,247,11,255,14,58,15,60,18,58,19,60,22,58,23,60,26,58,27,60,30,58,31,60,34,58,35,60
+ 0:5,0,6,230,7,70,8,255,10,223,11,255,14,52,15,60,18,52,19,60,22,52,23,60,26,52,27,60,30,52,31,60,34,52,35,60:1:5,0,6,230,7,70,8,255,10,223,11,255,14,52,15,60,18,52,19,60,22,52,23,60,26,52,27,60,30,52,31,60,34,52,35,60
+ 0:5,0,6,230,7,70,8,255,10,199,11,255,14,47,15,60,18,47,19,60,22,47,23,60,26,47,27,60,30,47,31,60,34,47,35,60:1:5,0,6,230,7,70,8,255,10,199,11,255,14,47,15,60,18,47,19,60,22,47,23,60,26,47,27,60,30,47,31,60,34,47,35,60
+ 0:5,0,6,230,7,70,8,255,10,175,11,255,14,41,15,60,18,41,19,60,22,41,23,60,26,41,27,60,30,41,31,60,34,41,35,60:1:5,0,6,230,7,70,8,255,10,175,11,255,14,41,15,60,18,41,19,60,22,41,23,60,26,41,27,60,30,41,31,60,34,41,35,60
+ 0:5,0,6,230,7,70,8,255,10,151,11,255,14,36,15,60,18,36,19,60,22,36,23,60,26,36,27,60,30,36,31,60,34,36,35,60:1:5,0,6,230,7,70,8,255,10,151,11,255,14,36,15,60,18,36,19,60,22,36,23,60,26,36,27,60,30,36,31,60,34,36,35,60
+ 0:5,0,6,230,7,70,8,255,10,128,11,255,14,30,15,60,18,30,19,60,22,30,23,60,26,30,27,60,30,30,31,60,34,30,35,60:1:5,0,6,230,7,70,8,255,10,128,11,255,14,30,15,60,18,30,19,60,22,30,23,60,26,30,27,60,30,30,31,60,34,30,35,60
+ 0:5,0,6,230,7,70,8,255,10,104,11,255,14,24,15,60,18,24,19,60,22,24,23,60,26,24,27,60,30,24,31,60,34,24,35,60:1:5,0,6,230,7,70,8,255,10,104,11,255,14,24,15,60,18,24,19,60,22,24,23,60,26,24,27,60,30,24,31,60,34,24,35,60
+ 0:5,0,6,230,7,70,8,255,10,80,11,255,14,19,15,60,18,19,19,60,22,19,23,60,26,19,27,60,30,19,31,60,34,19,35,60:1:5,0,6,230,7,70,8,255,10,80,11,255,14,19,15,60,18,19,19,60,22,19,23,60,26,19,27,60,30,19,31,60,34,19,35,60
+ 0:5,0,6,230,7,70,8,255,10,56,11,255,14,13,15,60,18,13,19,60,22,13,23,60,26,13,27,60,30,13,31,60,34,13,35,60:1:5,0,6,230,7,70,8,255,10,56,11,255,14,13,15,60,18,13,19,60,22,13,23,60,26,13,27,60,30,13,31,60,34,13,35,60
+ 0:5,0,6,230,7,70,8,255,10,32,11,255,14,8,15,60,18,8,19,60,22,8,23,60,26,8,27,60,30,8,31,60,34,8,35,60:1:5,0,6,230,7,70,8,255,10,32,11,255,14,8,15,60,18,8,19,60,22,8,23,60,26,8,27,60,30,8,31,60,34,8,35,60
+ 0:5,0,6,230,7,70,8,255,10,8,11,255,14,2,15,60,18,2,19,60,22,2,23,60,26,2,27,60,30,2,31,60,34,2,35,60:1:5,0,6,230,7,70,8,255,10,8,11,255,14,2,15,60,18,2,19,60,22,2,23,60,26,2,27,60,30,2,31,60,34,2,35,60
+ 0:5,0,6,230,7,70,8,255,11,255,12,16,15,60,16,4,19,60,20,4,23,60,24,4,27,60,28,4,31,60,32,4,35,60,36,4:1:5,0,6,230,7,70,8,255,11,255,12,16,15,60,16,4,19,60,20,4,23,60,24,4,27,60,28,4,31,60,32,4,35,60,36,4
+ 0:5,0,6,230,7,70,8,255,11,255,12,40,15,60,16,9,19,60,20,9,23,60,24,9,27,60,28,9,31,60,32,9,35,60,36,9:1:5,0,6,230,7,70,8,255,11,255,12,40,15,60,16,9,19,60,20,9,23,60,24,9,27,60,28,9,31,60,32,9,35,60,36,9
+ 0:5,0,6,230,7,70,8,255,11,255,12,64,15,60,16,15,19,60,20,15,23,60,24,15,27,60,28,15,31,60,32,15,35,60,36,15:1:5,0,6,230,7,70,8,255,11,255,12,64,15,60,16,15,19,60,20,15,23,60,24,15,27,60,28,15,31,60,32,15,35,60,36,15
+ 0:5,0,6,230,7,70,8,255,11,255,12,88,15,60,16,21,19,60,20,21,23,60,24,21,27,60,28,21,31,60,32,21,35,60,36,21:1:5,0,6,230,7,70,8,255,11,255,12,88,15,60,16,21,19,60,20,21,23,60,24,21,27,60,28,21,31,60,32,21,35,60,36,21
+ 0:5,0,6,230,7,70,8,255,11,255,12,112,15,60,16,26,19,60,20,26,23,60,24,26,27,60,28,26,31,60,32,26,35,60,36,26:1:5,0,6,230,7,70,8,255,11,255,12,112,15,60,16,26,19,60,20,26,23,60,24,26,27,60,28,26,31,60,32,26,35,60,36,26
+ 0:5,0,6,230,7,70,8,255,11,255,12,135,15,60,16,32,19,60,20,32,23,60,24,32,27,60,28,32,31,60,32,32,35,60,36,32:1:5,0,6,230,7,70,8,255,11,255,12,135,15,60,16,32,19,60,20,32,23,60,24,32,27,60,28,32,31,60,32,32,35,60,36,32
+ 0:5,0,6,230,7,70,8,255,11,255,12,159,15,60,16,37,19,60,20,37,23,60,24,37,27,60,28,37,31,60,32,37,35,60,36,37:1:5,0,6,230,7,70,8,255,11,255,12,159,15,60,16,37,19,60,20,37,23,60,24,37,27,60,28,37,31,60,32,37,35,60,36,37
+ 0:5,0,6,230,7,70,8,255,11,255,12,183,15,60,16,43,19,60,20,43,23,60,24,43,27,60,28,43,31,60,32,43,35,60,36,43:1:5,0,6,230,7,70,8,255,11,255,12,183,15,60,16,43,19,60,20,43,23,60,24,43,27,60,28,43,31,60,32,43,35,60,36,43
+ 0:5,0,6,230,7,70,8,255,11,255,12,207,15,60,16,49,19,60,20,49,23,60,24,49,27,60,28,49,31,60,32,49,35,60,36,49:1:5,0,6,230,7,70,8,255,11,255,12,207,15,60,16,49,19,60,20,49,23,60,24,49,27,60,28,49,31,60,32,49,35,60,36,49
+ 0:5,0,6,230,7,70,8,255,11,255,12,231,15,60,16,54,19,60,20,54,23,60,24,54,27,60,28,54,31,60,32,54,35,60,36,54:1:5,0,6,230,7,70,8,255,11,255,12,231,15,60,16,54,19,60,20,54,23,60,24,54,27,60,28,54,31,60,32,54,35,60,36,54
+ 0:5,0,6,230,7,70,8,255,11,255,12,255,15,60,16,60,19,60,20,60,23,60,24,60,27,60,28,60,31,60,32,60,35,60,36,60:1:5,0,6,230,7,70,8,255,11,255,12,255,15,60,16,60,19,60,20,60,23,60,24,60,27,60,28,60,31,60,32,60,35,60,36,60
+ 0:5,0,6,230,7,70,8,255,11,231,12,255,15,54,16,60,19,54,20,60,23,54,24,60,27,54,28,60,31,54,32,60,35,54,36,60:1:5,0,6,230,7,70,8,255,11,231,12,255,15,54,16,60,19,54,20,60,23,54,24,60,27,54,28,60,31,54,32,60,35,54,36,60
+ 0:5,0,6,230,7,70,8,255,11,207,12,255,15,49,16,60,19,49,20,60,23,49,24,60,27,49,28,60,31,49,32,60,35,49,36,60:1:5,0,6,230,7,70,8,255,11,207,12,255,15,49,16,60,19,49,20,60,23,49,24,60,27,49,28,60,31,49,32,60,35,49,36,60
+ 0:5,0,6,230,7,70,8,255,11,183,12,255,15,43,16,60,19,43,20,60,23,43,24,60,27,43,28,60,31,43,32,60,35,43,36,60:1:5,0,6,230,7,70,8,255,11,183,12,255,15,43,16,60,19,43,20,60,23,43,24,60,27,43,28,60,31,43,32,60,35,43,36,60
+ 0:5,0,6,230,7,70,8,255,11,159,12,255,15,37,16,60,19,37,20,60,23,37,24,60,27,37,28,60,31,37,32,60,35,37,36,60:1:5,0,6,230,7,70,8,255,11,159,12,255,15,37,16,60,19,37,20,60,23,37,24,60,27,37,28,60,31,37,32,60,35,37,36,60
+ 0:5,0,6,230,7,70,8,255,11,135,12,255,15,32,16,60,19,32,20,60,23,32,24,60,27,32,28,60,31,32,32,60,35,32,36,60:1:5,0,6,230,7,70,8,255,11,135,12,255,15,32,16,60,19,32,20,60,23,32,24,60,27,32,28,60,31,32,32,60,35,32,36,60
+ 0:5,0,6,230,7,70,8,255,11,112,12,255,15,26,16,60,19,26,20,60,23,26,24,60,27,26,28,60,31,26,32,60,35,26,36,60:1:5,0,6,230,7,70,8,255,11,112,12,255,15,26,16,60,19,26,20,60,23,26,24,60,27,26,28,60,31,26,32,60,35,26,36,60
+ 0:5,0,6,230,7,70,8,255,11,88,12,255,15,21,16,60,19,21,20,60,23,21,24,60,27,21,28,60,31,21,32,60,35,21,36,60:1:5,0,6,230,7,70,8,255,11,88,12,255,15,21,16,60,19,21,20,60,23,21,24,60,27,21,28,60,31,21,32,60,35,21,36,60
+ 0:5,0,6,230,7,70,8,255,11,64,12,255,15,15,16,60,19,15,20,60,23,15,24,60,27,15,28,60,31,15,32,60,35,15,36,60:1:5,0,6,230,7,70,8,255,11,64,12,255,15,15,16,60,19,15,20,60,23,15,24,60,27,15,28,60,31,15,32,60,35,15,36,60
+ 0:5,0,6,230,7,70,8,255,11,40,12,255,15,9,16,60,19,9,20,60,23,9,24,60,27,9,28,60,31,9,32,60,35,9,36,60:1:5,0,6,230,7,70,8,255,11,40,12,255,15,9,16,60,19,9,20,60,23,9,24,60,27,9,28,60,31,9,32,60,35,9,36,60
+ 0:5,0,6,230,7,70,8,255,11,16,12,255,15,4,16,60,19,4,20,60,23,4,24,60,27,4,28,60,31,4,32,60,35,4,36,60:1:5,0,6,230,7,70,8,255,11,16,12,255,15,4,16,60,19,4,20,60,23,4,24,60,27,4,28,60,31,4,32,60,35,4,36,60
+ 0:5,0,6,230,7,70,8,255,10,8,12,255,14,2,16,60,18,2,20,60,22,2,24,60,26,2,28,60,30,2,32,60,34,2,36,60:1:5,0,6,230,7,70,8,255,10,8,12,255,14,2,16,60,18,2,20,60,22,2,24,60,26,2,28,60,30,2,32,60,34,2,36,60
+ 0:5,0,6,230,7,70,8,255,10,32,12,255,14,8,16,60,18,8,20,60,22,8,24,60,26,8,28,60,30,8,32,60,34,8,36,60:1:5,0,6,230,7,70,8,255,10,32,12,255,14,8,16,60,18,8,20,60,22,8,24,60,26,8,28,60,30,8,32,60,34,8,36,60
+ 0:5,0,6,230,7,70,8,255,10,56,12,255,14,13,16,60,18,13,20,60,22,13,24,60,26,13,28,60,30,13,32,60,34,13,36,60:1:5,0,6,230,7,70,8,255,10,56,12,255,14,13,16,60,18,13,20,60,22,13,24,60,26,13,28,60,30,13,32,60,34,13,36,60
+ 0:5,0,6,230,7,70,8,255,10,80,12,255,14,19,16,60,18,19,20,60,22,19,24,60,26,19,28,60,30,19,32,60,34,19,36,60:1:5,0,6,230,7,70,8,255,10,80,12,255,14,19,16,60,18,19,20,60,22,19,24,60,26,19,28,60,30,19,32,60,34,19,36,60
+ 0:5,0,6,230,7,70,8,255,10,104,12,255,14,24,16,60,18,24,20,60,22,24,24,60,26,24,28,60,30,24,32,60,34,24,36,60:1:5,0,6,230,7,70,8,255,10,104,12,255,14,24,16,60,18,24,20,60,22,24,24,60,26,24,28,60,30,24,32,60,34,24,36,60
+ 0:5,0,6,230,7,70,8,255,10,128,12,255,14,30,16,60,18,30,20,60,22,30,24,60,26,30,28,60,30,30,32,60,34,30,36,60:1:5,0,6,230,7,70,8,255,10,128,12,255,14,30,16,60,18,30,20,60,22,30,24,60,26,30,28,60,30,30,32,60,34,30,36,60
+ 0:5,0,6,230,7,70,8,255,10,151,12,255,14,36,16,60,18,36,20,60,22,36,24,60,26,36,28,60,30,36,32,60,34,36,36,60:1:5,0,6,230,7,70,8,255,10,151,12,255,14,36,16,60,18,36,20,60,22,36,24,60,26,36,28,60,30,36,32,60,34,36,36,60
+ 0:5,0,6,230,7,70,8,255,10,175,12,255,14,41,16,60,18,41,20,60,22,41,24,60,26,41,28,60,30,41,32,60,34,41,36,60:1:5,0,6,230,7,70,8,255,10,175,12,255,14,41,16,60,18,41,20,60,22,41,24,60,26,41,28,60,30,41,32,60,34,41,36,60
+ 0:5,0,6,230,7,70,8,255,10,199,12,255,14,47,16,60,18,47,20,60,22,47,24,60,26,47,28,60,30,47,32,60,34,47,36,60:1:5,0,6,230,7,70,8,255,10,199,12,255,14,47,16,60,18,47,20,60,22,47,24,60,26,47,28,60,30,47,32,60,34,47,36,60
+ 0:5,0,6,230,7,70,8,255,10,223,12,255,14,52,16,60,18,52,20,60,22,52,24,60,26,52,28,60,30,52,32,60,34,52,36,60:1:5,0,6,230,7,70,8,255,10,223,12,255,14,52,16,60,18,52,20,60,22,52,24,60,26,52,28,60,30,52,32,60,34,52,36,60
+ 0:5,0,6,230,7,70,8,255,10,247,12,255,14,58,16,60,18,58,20,60,22,58,24,60,26,58,28,60,30,58,32,60,34,58,36,60:1:5,0,6,230,7,70,8,255,10,247,12,255,14,58,16,60,18,58,20,60,22,58,24,60,26,58,28,60,30,58,32,60,34,58,36,60
+ 0:5,0,6,230,7,70,8,255,10,255,12,239,14,60,16,56,18,60,20,56,22,60,24,56,26,60,28,56,30,60,32,56,34,60,36,56:1:5,0,6,230,7,70,8,255,10,255,12,239,14,60,16,56,18,60,20,56,22,60,24,56,26,60,28,56,30,60,32,56,34,60,36,56
+ 0:5,0,6,230,7,70,8,255,10,255,12,215,14,60,16,51,18,60,20,51,22,60,24,51,26,60,28,51,30,60,32,51,34,60,36,51:1:5,0,6,230,7,70,8,255,10,255,12,215,14,60,16,51,18,60,20,51,22,60,24,51,26,60,28,51,30,60,32,51,34,60,36,51
+ 0:5,0,6,230,7,70,8,255,10,255,12,191,14,60,16,45,18,60,20,45,22,60,24,45,26,60,28,45,30,60,32,45,34,60,36,45:1:5,0,6,230,7,70,8,255,10,255,12,191,14,60,16,45,18,60,20,45,22,60,24,45,26,60,28,45,30,60,32,45,34,60,36,45
+ 0:5,0,6,230,7,70,8,255,10,255,12,167,14,60,16,39,18,60,20,39,22,60,24,39,26,60,28,39,30,60,32,39,34,60,36,39:1:5,0,6,230,7,70,8,255,10,255,12,167,14,60,16,39,18,60,20,39,22,60,24,39,26,60,28,39,30,60,32,39,34,60,36,39
+ 0:5,0,6,230,7,70,8,255,10,255,12,143,14,60,16,34,18,60,20,34,22,60,24,34,26,60,28,34,30,60,32,34,34,60,36,34:1:5,0,6,230,7,70,8,255,10,255,12,143,14,60,16,34,18,60,20,34,22,60,24,34,26,60,28,34,30,60,32,34,34,60,36,34
+ 0:5,0,6,230,7,70,8,255,10,255,12,120,14,60,16,28,18,60,20,28,22,60,24,28,26,60,28,28,30,60,32,28,34,60,36,28:1:5,0,6,230,7,70,8,255,10,255,12,120,14,60,16,28,18,60,20,28,22,60,24,28,26,60,28,28,30,60,32,28,34,60,36,28
+ 0:5,0,6,230,7,70,8,255,10,255,12,96,14,60,16,23,18,60,20,23,22,60,24,23,26,60,28,23,30,60,32,23,34,60,36,23:1:5,0,6,230,7,70,8,255,10,255,12,96,14,60,16,23,18,60,20,23,22,60,24,23,26,60,28,23,30,60,32,23,34,60,36,23
+ 0:5,0,6,230,7,70,8,255,10,255,12,72,14,60,16,17,18,60,20,17,22,60,24,17,26,60,28,17,30,60,32,17,34,60,36,17:1:5,0,6,230,7,70,8,255,10,255,12,72,14,60,16,17,18,60,20,17,22,60,24,17,26,60,28,17,30,60,32,17,34,60,36,17
+ 0:5,0,6,230,7,70,8,255,10,255,12,48,14,60,16,11,18,60,20,11,22,60,24,11,26,60,28,11,30,60,32,11,34,60,36,11:1:5,0,6,230,7,70,8,255,10,255,12,48,14,60,16,11,18,60,20,11,22,60,24,11,26,60,28,11,30,60,32,11,34,60,36,11
+ 0:5,0,6,230,7,70,8,255,10,255,12,24,14,60,16,6,18,60,20,6,22,60,24,6,26,60,28,6,30,60,32,6,34,60,36,6:1:5,0,6,230,7,70,8,255,10,255,12,24,14,60,16,6,18,60,20,6,22,60,24,6,26,60,28,6,30,60,32,6,34,60,36,6
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0
+
+
+
+ 0
+ Forward
+ 255
+
+
+ 1
+ Forward
+ 255
+
+ Parallel
+
+ Forward
+ Loop
+ Eight
+ 28
+ 22
+ 0
+
+ 128
+ 1
+ 0
+
+
+ 80
+ 1
+ 0
+
+
+
+ 0
+ 1
+ 3
+
+
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+
+
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ False
+ False
+
+
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+ 108
+
+
+ 1
+ 3
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EFX
+ Figure of 8
+ 3
+
+
+
+
+
+ Sunken
+ 4294944000
+ Default
+ None
+ Default
+
+ Level
+
+
+ 0
+ 0
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255615
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967040
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294902015
+ Default
+ None
+ Default
+
+ Level
+
+
+ 7
+ 7
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 8
+ 8
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 10
+ 10
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 11
+ 11
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 12
+ 12
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4288256409
+ Default
+ None
+ Default
+
+ Level
+
+
+ 14
+ 15
+ 16
+ 18
+ 19
+ 20
+ 22
+ 23
+ 24
+ 26
+ 27
+ 28
+ 30
+ 31
+ 32
+ 34
+ 35
+ 36
+ 14
+ 15
+ 16
+ 18
+ 19
+ 20
+ 22
+ 23
+ 24
+ 26
+ 27
+ 28
+ 30
+ 31
+ 32
+ 34
+ 35
+ 36
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4291611852
+ Default
+ None
+ Default
+
+ Level
+
+
+ 6
+ 6
+
+
+ 4294967295
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/shows/xchc.qxw b/shows/xchc.qxw
new file mode 100644
index 0000000..ef18737
--- /dev/null
+++ b/shows/xchc.qxw
@@ -0,0 +1,2584 @@
+
+
+
+
+ Q Light Controller Plus
+ 4.12.7
+ Jimmy
+
+
+
+
+
+
+
+
+
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 0
+ BCC145 #1
+ 0
+ 87
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 1
+ BCC145 #2
+ 0
+ 95
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 2
+ BCC145 #3
+ 0
+ 103
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 3
+ BCC145 #4
+ 0
+ 111
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 4
+ BCC145 #5
+ 0
+ 119
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 5
+ BCC145 #6
+ 0
+ 127
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 6
+ BCC145 #7
+ 0
+ 135
+ 8
+
+
+ beamZ
+ BCC145
+ 8 Channel
+ 7
+ BCC145 #8
+ 0
+ 143
+ 8
+
+
+ Small Eye 7
+ Mover
+ 43 Channel
+ 8
+ Small Eye 7 #1
+ 0
+ 0
+ 43
+
+
+ Small Eye 7
+ Mover
+ 43 Channel
+ 9
+ Small Eye 7 #2
+ 0
+ 44
+ 43
+
+
+ Small Eye Movers
+
+ 0
+ 0
+
+
+ BCC145 U
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+
+
+
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,127,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,127,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,127,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,127,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 0
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+
+
+
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,127,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,127,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,127,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,127,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,127,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,255,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,127,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,255,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 10
+ 11
+ 12
+ 13
+ 14
+ 15
+ 16
+ 17
+
+
+
+ Forward
+ Loop
+ Gradient
+ 4294901760
+ RGB
+ 0
+
+
+
+
+
+
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 20
+ 21
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+
+
+
+ Forward
+ Loop
+
+ 24
+ 23
+ 25
+ 23
+ 26
+ 23
+ 27
+ 23
+ 28
+ 23
+ 29
+ 23
+ 30
+ 23
+ 31
+ 23
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 99
+ 100
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ PingPong
+
+ 42
+ 43
+ 44
+ 45
+ 46
+ 47
+ 48
+ 49
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ PingPong
+
+ 51
+ 52
+ 53
+ 54
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ PingPong
+
+ 56
+ 57
+ 58
+ 59
+
+
+
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,255,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,255,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 61
+ 62
+
+
+
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 1,0,2,0,3,0,4,0,5,255,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,200,12,140,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,200,12,140,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 64
+ 65
+ 66
+
+
+
+ Forward
+ SingleShot
+
+ 54
+ 53
+ 52
+ 51
+ 23
+
+
+
+ Forward
+ SingleShot
+
+ 33
+ 34
+ 35
+ 36
+ 37
+ 38
+ 39
+ 40
+ 99
+ 23
+
+
+
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 1,0,2,255,3,180,4,80,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,180,12,80,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,180,12,80,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ SingleShot
+
+ 70
+ 23
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 4,0,5,0,6,230,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 4,0,5,0,6,230,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ Loop
+
+ 8:5,0,6,230,7,70,8,255,10,255,14,60,18,60,22,60,26,60,30,60,34,60:9:5,0,6,230,7,70,8,255,10,255,14,60,18,60,22,60,26,60,30,60,34,60
+ 8:5,0,6,230,7,70,8,255,10,255,11,24,14,60,15,6,18,60,19,6,22,60,23,6,26,60,27,6,30,60,31,6,34,60,35,6:9:5,0,6,230,7,70,8,255,10,255,11,24,14,60,15,6,18,60,19,6,22,60,23,6,26,60,27,6,30,60,31,6,34,60,35,6
+ 8:5,0,6,230,7,70,8,255,10,255,11,48,14,60,15,11,18,60,19,11,22,60,23,11,26,60,27,11,30,60,31,11,34,60,35,11:9:5,0,6,230,7,70,8,255,10,255,11,48,14,60,15,11,18,60,19,11,22,60,23,11,26,60,27,11,30,60,31,11,34,60,35,11
+ 8:5,0,6,230,7,70,8,255,10,255,11,72,14,60,15,17,18,60,19,17,22,60,23,17,26,60,27,17,30,60,31,17,34,60,35,17:9:5,0,6,230,7,70,8,255,10,255,11,72,14,60,15,17,18,60,19,17,22,60,23,17,26,60,27,17,30,60,31,17,34,60,35,17
+ 8:5,0,6,230,7,70,8,255,10,255,11,96,14,60,15,23,18,60,19,23,22,60,23,23,26,60,27,23,30,60,31,23,34,60,35,23:9:5,0,6,230,7,70,8,255,10,255,11,96,14,60,15,23,18,60,19,23,22,60,23,23,26,60,27,23,30,60,31,23,34,60,35,23
+ 8:5,0,6,230,7,70,8,255,10,255,11,120,14,60,15,28,18,60,19,28,22,60,23,28,26,60,27,28,30,60,31,28,34,60,35,28:9:5,0,6,230,7,70,8,255,10,255,11,120,14,60,15,28,18,60,19,28,22,60,23,28,26,60,27,28,30,60,31,28,34,60,35,28
+ 8:5,0,6,230,7,70,8,255,10,255,11,143,14,60,15,34,18,60,19,34,22,60,23,34,26,60,27,34,30,60,31,34,34,60,35,34:9:5,0,6,230,7,70,8,255,10,255,11,143,14,60,15,34,18,60,19,34,22,60,23,34,26,60,27,34,30,60,31,34,34,60,35,34
+ 8:5,0,6,230,7,70,8,255,10,255,11,167,14,60,15,39,18,60,19,39,22,60,23,39,26,60,27,39,30,60,31,39,34,60,35,39:9:5,0,6,230,7,70,8,255,10,255,11,167,14,60,15,39,18,60,19,39,22,60,23,39,26,60,27,39,30,60,31,39,34,60,35,39
+ 8:5,0,6,230,7,70,8,255,10,255,11,191,14,60,15,45,18,60,19,45,22,60,23,45,26,60,27,45,30,60,31,45,34,60,35,45:9:5,0,6,230,7,70,8,255,10,255,11,191,14,60,15,45,18,60,19,45,22,60,23,45,26,60,27,45,30,60,31,45,34,60,35,45
+ 8:5,0,6,230,7,70,8,255,10,255,11,215,14,60,15,51,18,60,19,51,22,60,23,51,26,60,27,51,30,60,31,51,34,60,35,51:9:5,0,6,230,7,70,8,255,10,255,11,215,14,60,15,51,18,60,19,51,22,60,23,51,26,60,27,51,30,60,31,51,34,60,35,51
+ 8:5,0,6,230,7,70,8,255,10,255,11,239,14,60,15,56,18,60,19,56,22,60,23,56,26,60,27,56,30,60,31,56,34,60,35,56:9:5,0,6,230,7,70,8,255,10,255,11,239,14,60,15,56,18,60,19,56,22,60,23,56,26,60,27,56,30,60,31,56,34,60,35,56
+ 8:5,0,6,230,7,70,8,255,10,247,11,255,14,58,15,60,18,58,19,60,22,58,23,60,26,58,27,60,30,58,31,60,34,58,35,60:9:5,0,6,230,7,70,8,255,10,247,11,255,14,58,15,60,18,58,19,60,22,58,23,60,26,58,27,60,30,58,31,60,34,58,35,60
+ 8:5,0,6,230,7,70,8,255,10,223,11,255,14,52,15,60,18,52,19,60,22,52,23,60,26,52,27,60,30,52,31,60,34,52,35,60:9:5,0,6,230,7,70,8,255,10,223,11,255,14,52,15,60,18,52,19,60,22,52,23,60,26,52,27,60,30,52,31,60,34,52,35,60
+ 8:5,0,6,230,7,70,8,255,10,199,11,255,14,47,15,60,18,47,19,60,22,47,23,60,26,47,27,60,30,47,31,60,34,47,35,60:9:5,0,6,230,7,70,8,255,10,199,11,255,14,47,15,60,18,47,19,60,22,47,23,60,26,47,27,60,30,47,31,60,34,47,35,60
+ 8:5,0,6,230,7,70,8,255,10,175,11,255,14,41,15,60,18,41,19,60,22,41,23,60,26,41,27,60,30,41,31,60,34,41,35,60:9:5,0,6,230,7,70,8,255,10,175,11,255,14,41,15,60,18,41,19,60,22,41,23,60,26,41,27,60,30,41,31,60,34,41,35,60
+ 8:5,0,6,230,7,70,8,255,10,151,11,255,14,36,15,60,18,36,19,60,22,36,23,60,26,36,27,60,30,36,31,60,34,36,35,60:9:5,0,6,230,7,70,8,255,10,151,11,255,14,36,15,60,18,36,19,60,22,36,23,60,26,36,27,60,30,36,31,60,34,36,35,60
+ 8:5,0,6,230,7,70,8,255,10,128,11,255,14,30,15,60,18,30,19,60,22,30,23,60,26,30,27,60,30,30,31,60,34,30,35,60:9:5,0,6,230,7,70,8,255,10,128,11,255,14,30,15,60,18,30,19,60,22,30,23,60,26,30,27,60,30,30,31,60,34,30,35,60
+ 8:5,0,6,230,7,70,8,255,10,104,11,255,14,24,15,60,18,24,19,60,22,24,23,60,26,24,27,60,30,24,31,60,34,24,35,60:9:5,0,6,230,7,70,8,255,10,104,11,255,14,24,15,60,18,24,19,60,22,24,23,60,26,24,27,60,30,24,31,60,34,24,35,60
+ 8:5,0,6,230,7,70,8,255,10,80,11,255,14,19,15,60,18,19,19,60,22,19,23,60,26,19,27,60,30,19,31,60,34,19,35,60:9:5,0,6,230,7,70,8,255,10,80,11,255,14,19,15,60,18,19,19,60,22,19,23,60,26,19,27,60,30,19,31,60,34,19,35,60
+ 8:5,0,6,230,7,70,8,255,10,56,11,255,14,13,15,60,18,13,19,60,22,13,23,60,26,13,27,60,30,13,31,60,34,13,35,60:9:5,0,6,230,7,70,8,255,10,56,11,255,14,13,15,60,18,13,19,60,22,13,23,60,26,13,27,60,30,13,31,60,34,13,35,60
+ 8:5,0,6,230,7,70,8,255,10,32,11,255,14,8,15,60,18,8,19,60,22,8,23,60,26,8,27,60,30,8,31,60,34,8,35,60:9:5,0,6,230,7,70,8,255,10,32,11,255,14,8,15,60,18,8,19,60,22,8,23,60,26,8,27,60,30,8,31,60,34,8,35,60
+ 8:5,0,6,230,7,70,8,255,10,8,11,255,14,2,15,60,18,2,19,60,22,2,23,60,26,2,27,60,30,2,31,60,34,2,35,60:9:5,0,6,230,7,70,8,255,10,8,11,255,14,2,15,60,18,2,19,60,22,2,23,60,26,2,27,60,30,2,31,60,34,2,35,60
+ 8:5,0,6,230,7,70,8,255,11,255,12,16,15,60,16,4,19,60,20,4,23,60,24,4,27,60,28,4,31,60,32,4,35,60,36,4:9:5,0,6,230,7,70,8,255,11,255,12,16,15,60,16,4,19,60,20,4,23,60,24,4,27,60,28,4,31,60,32,4,35,60,36,4
+ 8:5,0,6,230,7,70,8,255,11,255,12,40,15,60,16,9,19,60,20,9,23,60,24,9,27,60,28,9,31,60,32,9,35,60,36,9:9:5,0,6,230,7,70,8,255,11,255,12,40,15,60,16,9,19,60,20,9,23,60,24,9,27,60,28,9,31,60,32,9,35,60,36,9
+ 8:5,0,6,230,7,70,8,255,11,255,12,64,15,60,16,15,19,60,20,15,23,60,24,15,27,60,28,15,31,60,32,15,35,60,36,15:9:5,0,6,230,7,70,8,255,11,255,12,64,15,60,16,15,19,60,20,15,23,60,24,15,27,60,28,15,31,60,32,15,35,60,36,15
+ 8:5,0,6,230,7,70,8,255,11,255,12,88,15,60,16,21,19,60,20,21,23,60,24,21,27,60,28,21,31,60,32,21,35,60,36,21:9:5,0,6,230,7,70,8,255,11,255,12,88,15,60,16,21,19,60,20,21,23,60,24,21,27,60,28,21,31,60,32,21,35,60,36,21
+ 8:5,0,6,230,7,70,8,255,11,255,12,112,15,60,16,26,19,60,20,26,23,60,24,26,27,60,28,26,31,60,32,26,35,60,36,26:9:5,0,6,230,7,70,8,255,11,255,12,112,15,60,16,26,19,60,20,26,23,60,24,26,27,60,28,26,31,60,32,26,35,60,36,26
+ 8:5,0,6,230,7,70,8,255,11,255,12,135,15,60,16,32,19,60,20,32,23,60,24,32,27,60,28,32,31,60,32,32,35,60,36,32:9:5,0,6,230,7,70,8,255,11,255,12,135,15,60,16,32,19,60,20,32,23,60,24,32,27,60,28,32,31,60,32,32,35,60,36,32
+ 8:5,0,6,230,7,70,8,255,11,255,12,159,15,60,16,37,19,60,20,37,23,60,24,37,27,60,28,37,31,60,32,37,35,60,36,37:9:5,0,6,230,7,70,8,255,11,255,12,159,15,60,16,37,19,60,20,37,23,60,24,37,27,60,28,37,31,60,32,37,35,60,36,37
+ 8:5,0,6,230,7,70,8,255,11,255,12,183,15,60,16,43,19,60,20,43,23,60,24,43,27,60,28,43,31,60,32,43,35,60,36,43:9:5,0,6,230,7,70,8,255,11,255,12,183,15,60,16,43,19,60,20,43,23,60,24,43,27,60,28,43,31,60,32,43,35,60,36,43
+ 8:5,0,6,230,7,70,8,255,11,255,12,207,15,60,16,49,19,60,20,49,23,60,24,49,27,60,28,49,31,60,32,49,35,60,36,49:9:5,0,6,230,7,70,8,255,11,255,12,207,15,60,16,49,19,60,20,49,23,60,24,49,27,60,28,49,31,60,32,49,35,60,36,49
+ 8:5,0,6,230,7,70,8,255,11,255,12,231,15,60,16,54,19,60,20,54,23,60,24,54,27,60,28,54,31,60,32,54,35,60,36,54:9:5,0,6,230,7,70,8,255,11,255,12,231,15,60,16,54,19,60,20,54,23,60,24,54,27,60,28,54,31,60,32,54,35,60,36,54
+ 8:5,0,6,230,7,70,8,255,11,255,12,255,15,60,16,60,19,60,20,60,23,60,24,60,27,60,28,60,31,60,32,60,35,60,36,60:9:5,0,6,230,7,70,8,255,11,255,12,255,15,60,16,60,19,60,20,60,23,60,24,60,27,60,28,60,31,60,32,60,35,60,36,60
+ 8:5,0,6,230,7,70,8,255,11,231,12,255,15,54,16,60,19,54,20,60,23,54,24,60,27,54,28,60,31,54,32,60,35,54,36,60:9:5,0,6,230,7,70,8,255,11,231,12,255,15,54,16,60,19,54,20,60,23,54,24,60,27,54,28,60,31,54,32,60,35,54,36,60
+ 8:5,0,6,230,7,70,8,255,11,207,12,255,15,49,16,60,19,49,20,60,23,49,24,60,27,49,28,60,31,49,32,60,35,49,36,60:9:5,0,6,230,7,70,8,255,11,207,12,255,15,49,16,60,19,49,20,60,23,49,24,60,27,49,28,60,31,49,32,60,35,49,36,60
+ 8:5,0,6,230,7,70,8,255,11,183,12,255,15,43,16,60,19,43,20,60,23,43,24,60,27,43,28,60,31,43,32,60,35,43,36,60:9:5,0,6,230,7,70,8,255,11,183,12,255,15,43,16,60,19,43,20,60,23,43,24,60,27,43,28,60,31,43,32,60,35,43,36,60
+ 8:5,0,6,230,7,70,8,255,11,159,12,255,15,37,16,60,19,37,20,60,23,37,24,60,27,37,28,60,31,37,32,60,35,37,36,60:9:5,0,6,230,7,70,8,255,11,159,12,255,15,37,16,60,19,37,20,60,23,37,24,60,27,37,28,60,31,37,32,60,35,37,36,60
+ 8:5,0,6,230,7,70,8,255,11,135,12,255,15,32,16,60,19,32,20,60,23,32,24,60,27,32,28,60,31,32,32,60,35,32,36,60:9:5,0,6,230,7,70,8,255,11,135,12,255,15,32,16,60,19,32,20,60,23,32,24,60,27,32,28,60,31,32,32,60,35,32,36,60
+ 8:5,0,6,230,7,70,8,255,11,112,12,255,15,26,16,60,19,26,20,60,23,26,24,60,27,26,28,60,31,26,32,60,35,26,36,60:9:5,0,6,230,7,70,8,255,11,112,12,255,15,26,16,60,19,26,20,60,23,26,24,60,27,26,28,60,31,26,32,60,35,26,36,60
+ 8:5,0,6,230,7,70,8,255,11,88,12,255,15,21,16,60,19,21,20,60,23,21,24,60,27,21,28,60,31,21,32,60,35,21,36,60:9:5,0,6,230,7,70,8,255,11,88,12,255,15,21,16,60,19,21,20,60,23,21,24,60,27,21,28,60,31,21,32,60,35,21,36,60
+ 8:5,0,6,230,7,70,8,255,11,64,12,255,15,15,16,60,19,15,20,60,23,15,24,60,27,15,28,60,31,15,32,60,35,15,36,60:9:5,0,6,230,7,70,8,255,11,64,12,255,15,15,16,60,19,15,20,60,23,15,24,60,27,15,28,60,31,15,32,60,35,15,36,60
+ 8:5,0,6,230,7,70,8,255,11,40,12,255,15,9,16,60,19,9,20,60,23,9,24,60,27,9,28,60,31,9,32,60,35,9,36,60:9:5,0,6,230,7,70,8,255,11,40,12,255,15,9,16,60,19,9,20,60,23,9,24,60,27,9,28,60,31,9,32,60,35,9,36,60
+ 8:5,0,6,230,7,70,8,255,11,16,12,255,15,4,16,60,19,4,20,60,23,4,24,60,27,4,28,60,31,4,32,60,35,4,36,60:9:5,0,6,230,7,70,8,255,11,16,12,255,15,4,16,60,19,4,20,60,23,4,24,60,27,4,28,60,31,4,32,60,35,4,36,60
+ 8:5,0,6,230,7,70,8,255,10,8,12,255,14,2,16,60,18,2,20,60,22,2,24,60,26,2,28,60,30,2,32,60,34,2,36,60:9:5,0,6,230,7,70,8,255,10,8,12,255,14,2,16,60,18,2,20,60,22,2,24,60,26,2,28,60,30,2,32,60,34,2,36,60
+ 8:5,0,6,230,7,70,8,255,10,32,12,255,14,8,16,60,18,8,20,60,22,8,24,60,26,8,28,60,30,8,32,60,34,8,36,60:9:5,0,6,230,7,70,8,255,10,32,12,255,14,8,16,60,18,8,20,60,22,8,24,60,26,8,28,60,30,8,32,60,34,8,36,60
+ 8:5,0,6,230,7,70,8,255,10,56,12,255,14,13,16,60,18,13,20,60,22,13,24,60,26,13,28,60,30,13,32,60,34,13,36,60:9:5,0,6,230,7,70,8,255,10,56,12,255,14,13,16,60,18,13,20,60,22,13,24,60,26,13,28,60,30,13,32,60,34,13,36,60
+ 8:5,0,6,230,7,70,8,255,10,80,12,255,14,19,16,60,18,19,20,60,22,19,24,60,26,19,28,60,30,19,32,60,34,19,36,60:9:5,0,6,230,7,70,8,255,10,80,12,255,14,19,16,60,18,19,20,60,22,19,24,60,26,19,28,60,30,19,32,60,34,19,36,60
+ 8:5,0,6,230,7,70,8,255,10,104,12,255,14,24,16,60,18,24,20,60,22,24,24,60,26,24,28,60,30,24,32,60,34,24,36,60:9:5,0,6,230,7,70,8,255,10,104,12,255,14,24,16,60,18,24,20,60,22,24,24,60,26,24,28,60,30,24,32,60,34,24,36,60
+ 8:5,0,6,230,7,70,8,255,10,128,12,255,14,30,16,60,18,30,20,60,22,30,24,60,26,30,28,60,30,30,32,60,34,30,36,60:9:5,0,6,230,7,70,8,255,10,128,12,255,14,30,16,60,18,30,20,60,22,30,24,60,26,30,28,60,30,30,32,60,34,30,36,60
+ 8:5,0,6,230,7,70,8,255,10,151,12,255,14,36,16,60,18,36,20,60,22,36,24,60,26,36,28,60,30,36,32,60,34,36,36,60:9:5,0,6,230,7,70,8,255,10,151,12,255,14,36,16,60,18,36,20,60,22,36,24,60,26,36,28,60,30,36,32,60,34,36,36,60
+ 8:5,0,6,230,7,70,8,255,10,175,12,255,14,41,16,60,18,41,20,60,22,41,24,60,26,41,28,60,30,41,32,60,34,41,36,60:9:5,0,6,230,7,70,8,255,10,175,12,255,14,41,16,60,18,41,20,60,22,41,24,60,26,41,28,60,30,41,32,60,34,41,36,60
+ 8:5,0,6,230,7,70,8,255,10,199,12,255,14,47,16,60,18,47,20,60,22,47,24,60,26,47,28,60,30,47,32,60,34,47,36,60:9:5,0,6,230,7,70,8,255,10,199,12,255,14,47,16,60,18,47,20,60,22,47,24,60,26,47,28,60,30,47,32,60,34,47,36,60
+ 8:5,0,6,230,7,70,8,255,10,223,12,255,14,52,16,60,18,52,20,60,22,52,24,60,26,52,28,60,30,52,32,60,34,52,36,60:9:5,0,6,230,7,70,8,255,10,223,12,255,14,52,16,60,18,52,20,60,22,52,24,60,26,52,28,60,30,52,32,60,34,52,36,60
+ 8:5,0,6,230,7,70,8,255,10,247,12,255,14,58,16,60,18,58,20,60,22,58,24,60,26,58,28,60,30,58,32,60,34,58,36,60:9:5,0,6,230,7,70,8,255,10,247,12,255,14,58,16,60,18,58,20,60,22,58,24,60,26,58,28,60,30,58,32,60,34,58,36,60
+ 8:5,0,6,230,7,70,8,255,10,255,12,239,14,60,16,56,18,60,20,56,22,60,24,56,26,60,28,56,30,60,32,56,34,60,36,56:9:5,0,6,230,7,70,8,255,10,255,12,239,14,60,16,56,18,60,20,56,22,60,24,56,26,60,28,56,30,60,32,56,34,60,36,56
+ 8:5,0,6,230,7,70,8,255,10,255,12,215,14,60,16,51,18,60,20,51,22,60,24,51,26,60,28,51,30,60,32,51,34,60,36,51:9:5,0,6,230,7,70,8,255,10,255,12,215,14,60,16,51,18,60,20,51,22,60,24,51,26,60,28,51,30,60,32,51,34,60,36,51
+ 8:5,0,6,230,7,70,8,255,10,255,12,191,14,60,16,45,18,60,20,45,22,60,24,45,26,60,28,45,30,60,32,45,34,60,36,45:9:5,0,6,230,7,70,8,255,10,255,12,191,14,60,16,45,18,60,20,45,22,60,24,45,26,60,28,45,30,60,32,45,34,60,36,45
+ 8:5,0,6,230,7,70,8,255,10,255,12,167,14,60,16,39,18,60,20,39,22,60,24,39,26,60,28,39,30,60,32,39,34,60,36,39:9:5,0,6,230,7,70,8,255,10,255,12,167,14,60,16,39,18,60,20,39,22,60,24,39,26,60,28,39,30,60,32,39,34,60,36,39
+ 8:5,0,6,230,7,70,8,255,10,255,12,143,14,60,16,34,18,60,20,34,22,60,24,34,26,60,28,34,30,60,32,34,34,60,36,34:9:5,0,6,230,7,70,8,255,10,255,12,143,14,60,16,34,18,60,20,34,22,60,24,34,26,60,28,34,30,60,32,34,34,60,36,34
+ 8:5,0,6,230,7,70,8,255,10,255,12,120,14,60,16,28,18,60,20,28,22,60,24,28,26,60,28,28,30,60,32,28,34,60,36,28:9:5,0,6,230,7,70,8,255,10,255,12,120,14,60,16,28,18,60,20,28,22,60,24,28,26,60,28,28,30,60,32,28,34,60,36,28
+ 8:5,0,6,230,7,70,8,255,10,255,12,96,14,60,16,23,18,60,20,23,22,60,24,23,26,60,28,23,30,60,32,23,34,60,36,23:9:5,0,6,230,7,70,8,255,10,255,12,96,14,60,16,23,18,60,20,23,22,60,24,23,26,60,28,23,30,60,32,23,34,60,36,23
+ 8:5,0,6,230,7,70,8,255,10,255,12,72,14,60,16,17,18,60,20,17,22,60,24,17,26,60,28,17,30,60,32,17,34,60,36,17:9:5,0,6,230,7,70,8,255,10,255,12,72,14,60,16,17,18,60,20,17,22,60,24,17,26,60,28,17,30,60,32,17,34,60,36,17
+ 8:5,0,6,230,7,70,8,255,10,255,12,48,14,60,16,11,18,60,20,11,22,60,24,11,26,60,28,11,30,60,32,11,34,60,36,11:9:5,0,6,230,7,70,8,255,10,255,12,48,14,60,16,11,18,60,20,11,22,60,24,11,26,60,28,11,30,60,32,11,34,60,36,11
+ 8:5,0,6,230,7,70,8,255,10,255,12,24,14,60,16,6,18,60,20,6,22,60,24,6,26,60,28,6,30,60,32,6,34,60,36,6:9:5,0,6,230,7,70,8,255,10,255,12,24,14,60,16,6,18,60,20,6,22,60,24,6,26,60,28,6,30,60,32,6,34,60,36,6
+
+
+
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0
+ 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0,38,0,39,0,40,0,41,0,42,0
+
+
+
+ 8
+ Forward
+ 255
+
+
+ 9
+ Forward
+ 255
+
+ Parallel
+
+ Forward
+ Loop
+ Eight
+ 28
+ 22
+ 0
+
+ 128
+ 1
+ 0
+
+
+ 80
+ 1
+ 0
+
+
+
+ 73
+ 74
+ 76
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,90,27,74,28,56,29,0,30,90,31,74,32,56,33,0,34,90,35,74,36,56,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,90,27,74,28,56,29,0,30,90,31,74,32,56,33,0,34,90,35,74,36,56,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,90,27,74,28,56,29,0,30,90,31,74,32,56,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,90,27,74,28,56,29,0,30,90,31,74,32,56,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,90,27,74,28,56,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,90,27,74,28,56,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,90,19,74,20,56,21,0,22,90,23,74,24,56,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,90,15,74,16,56,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,210,12,160,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ SingleShot
+
+ 78
+ 79
+ 80
+ 81
+ 82
+ 83
+ 84
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,180,15,148,16,113,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,180,15,148,16,113,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,180,19,148,20,113,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,180,19,148,20,113,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,180,23,148,24,113,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,180,23,148,24,113,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,180,27,148,28,113,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,180,27,148,28,113,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,180,31,148,32,113,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,180,31,148,32,113,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,180,35,148,36,113,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,180,35,148,36,113,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,255,9,0,10,255,11,255,12,255,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ SingleShot
+
+ 86
+ 87
+ 88
+ 89
+ 90
+ 91
+ 92
+ 93
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,180,9,0,10,255,11,200,12,140,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,180,9,0,10,255,11,200,12,140,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ SingleShot
+
+ 95
+ 75
+
+
+
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+ 0,128,2,80,4,0,5,0,6,191,7,70,8,0,9,0,10,0,11,0,12,0,13,0,14,0,15,0,16,0,17,0,18,0,19,0,20,0,21,0,22,0,23,0,24,0,25,0,26,0,27,0,28,0,29,0,30,0,31,0,32,0,33,0,34,0,35,0,36,0,37,0
+
+
+
+ Forward
+ SingleShot
+
+ 97
+ 97
+ 75
+
+
+ 9
+ 77
+
+
+ 18
+ 77
+
+
+ 22
+ 77
+
+
+ 55
+ 77
+
+
+ 67
+ 77
+
+
+ Arial,12,-1,5,50,0,0,0,0,0
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ None
+ Default
+ Default
+ None
+ Default
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+ True
+ True
+ True
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+ 108
+
+
+ 9
+ 18
+ 19
+ 22
+ 32
+ 41
+ 50
+ 55
+ 60
+ 63
+ 67
+ 68
+ 69
+ 74
+ 76
+ 101
+ 102
+ 103
+ 104
+ 105
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 8
+ 8
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 3
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 4
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ Default
+ Default
+ None
+ Default
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EFX
+ Figure of 8
+ 76
+
+
+
+
+
+ Sunken
+ 4294944000
+ Default
+ None
+ Default
+
+ Level
+
+
+ 0
+ 0
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255615
+ Default
+ None
+ Default
+
+ Level
+
+
+ 2
+ 2
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967040
+ Default
+ None
+ Default
+
+ Level
+
+
+ 5
+ 5
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294902015
+ Default
+ None
+ Default
+
+ Level
+
+
+ 7
+ 7
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294967295
+ Default
+ None
+ Default
+
+ Level
+
+
+ 8
+ 8
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4294901760
+ Default
+ None
+ Default
+
+ Level
+
+
+ 10
+ 10
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278255360
+ Default
+ None
+ Default
+
+ Level
+
+
+ 11
+ 11
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4278190335
+ Default
+ None
+ Default
+
+ Level
+
+
+ 12
+ 12
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4288256409
+ Default
+ None
+ Default
+
+ Level
+
+
+ 14
+ 15
+ 16
+ 18
+ 19
+ 20
+ 22
+ 23
+ 24
+ 26
+ 27
+ 28
+ 30
+ 31
+ 32
+ 34
+ 35
+ 36
+ 14
+ 15
+ 16
+ 18
+ 19
+ 20
+ 22
+ 23
+ 24
+ 26
+ 27
+ 28
+ 30
+ 31
+ 32
+ 34
+ 35
+ 36
+
+
+ 4294967295
+
+
+
+
+
+ Sunken
+ 4291611852
+ Default
+ None
+ Default
+
+ Level
+
+
+ 6
+ 6
+
+
+ 4294967295
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/stage/map.canvas.tsx b/stage/map.canvas.tsx
new file mode 100644
index 0000000..9d12b90
--- /dev/null
+++ b/stage/map.canvas.tsx
@@ -0,0 +1,279 @@
+import {
+ Card,
+ CardBody,
+ CardHeader,
+ H1,
+ H2,
+ Stack,
+ Table,
+ Text,
+ useHostTheme,
+} from "cursor/canvas";
+
+/** Y=0 = row of 4; +Y toward audience. Side cans on walls at ±3.5 m. */
+const WALL = 3.5;
+const FIXTURES: {
+ key: string;
+ label: string;
+ kind: "can" | "mover";
+ x: number;
+ y: number;
+}[] = [
+ { key: "c3", label: "#3", kind: "can", x: -1.8, y: 0.0 },
+ { key: "c4", label: "#4", kind: "can", x: -0.6, y: 0.0 },
+ { key: "c5", label: "#5", kind: "can", x: 0.6, y: 0.0 },
+ { key: "c6", label: "#6", kind: "can", x: 1.8, y: 0.0 },
+ { key: "c2", label: "#2", kind: "can", x: -WALL, y: 1.2 },
+ { key: "c7", label: "#7", kind: "can", x: WALL, y: 1.2 },
+ { key: "m1", label: "M1", kind: "mover", x: -0.3, y: 1.1 },
+ { key: "m2", label: "M2", kind: "mover", x: 0.3, y: 1.1 },
+ { key: "c1", label: "#1", kind: "can", x: -WALL, y: 2.4 },
+ { key: "c8", label: "#8", kind: "can", x: WALL, y: 2.4 },
+];
+
+const BUILDING_W = 7;
+const DEPTH = 2.4;
+
+export default function StageMap() {
+ const theme = useHostTheme();
+
+ const pad = 0.55;
+ const x0 = -BUILDING_W / 2 - pad;
+ const x1 = BUILDING_W / 2 + pad;
+ const y0 = -0.45;
+ const y1 = DEPTH + 0.55;
+ const vbW = x1 - x0;
+ const vbH = y1 - y0;
+ const px = 88;
+ const svgW = vbW * px;
+ const svgH = vbH * px;
+
+ const sx = (x: number) => ((x - x0) / vbW) * svgW;
+ const sy = (y: number) => ((y1 - y) / vbH) * svgH;
+
+ const dim = theme.text.tertiary;
+ const ink = theme.text.primary;
+ const accent = theme.accent.primary;
+ const canFill = theme.fill.tertiary;
+ const stroke = theme.stroke.primary;
+ const onAccent = theme.text.onAccent;
+
+ function DimH(
+ xA: number,
+ xB: number,
+ y: number,
+ label: string,
+ side: "above" | "below" = "above",
+ ) {
+ const ya = sy(y);
+ const x1p = sx(Math.min(xA, xB));
+ const x2p = sx(Math.max(xA, xB));
+ const mid = (x1p + x2p) / 2;
+ const ty = side === "above" ? ya - 8 : ya + 14;
+ return (
+
+
+
+
+
+ {label}
+
+
+ );
+ }
+
+ function DimV(
+ yA: number,
+ yB: number,
+ x: number,
+ label: string,
+ side: "left" | "right" = "right",
+ ) {
+ const xa = sx(x);
+ const y1p = sy(Math.max(yA, yB));
+ const y2p = sy(Math.min(yA, yB));
+ const mid = (y1p + y2p) / 2;
+ const tx = side === "right" ? xa + 8 : xa - 8;
+ return (
+
+
+
+
+
+ {label}
+
+
+ );
+ }
+
+ return (
+
+
+ Stage map
+
+ Building {BUILDING_W} m wide · walls at ±{WALL} m · Y = 0 at row of 4 ·
+ +Y toward audience
+
+
+
+
+ Plan (audience at bottom)
+
+
+
+
+
+
+ Coordinates
+
+
+ Source: integrate_u_patterns.py LAYOUT_M
+
+
+
+ );
+}
diff --git a/stage/map.json b/stage/map.json
new file mode 100644
index 0000000..c10e9b8
--- /dev/null
+++ b/stage/map.json
@@ -0,0 +1,67 @@
+{
+ "units": "metres",
+ "building_width": 7.0,
+ "origin": "Y=0 at row of 4; +Y toward audience; X=0 centre",
+ "fixtures": {
+ "#1": {
+ "x": -3.5,
+ "y": 2.4,
+ "label": "#1",
+ "kind": "can"
+ },
+ "#2": {
+ "x": -3.5,
+ "y": 1.2,
+ "label": "#2",
+ "kind": "can"
+ },
+ "#3": {
+ "x": -1.8,
+ "y": 0.0,
+ "label": "#3",
+ "kind": "can"
+ },
+ "#4": {
+ "x": -0.6,
+ "y": 0.0,
+ "label": "#4",
+ "kind": "can"
+ },
+ "#5": {
+ "x": 0.6,
+ "y": 0.0,
+ "label": "#5",
+ "kind": "can"
+ },
+ "#6": {
+ "x": 1.8,
+ "y": 0.0,
+ "label": "#6",
+ "kind": "can"
+ },
+ "#7": {
+ "x": 3.5,
+ "y": 1.2,
+ "label": "#7",
+ "kind": "can"
+ },
+ "#8": {
+ "x": 3.5,
+ "y": 2.4,
+ "label": "#8",
+ "kind": "can"
+ },
+ "M1": {
+ "x": -0.3,
+ "y": 1.1,
+ "label": "M1",
+ "kind": "mover"
+ },
+ "M2": {
+ "x": 0.3,
+ "y": 1.1,
+ "label": "M2",
+ "kind": "mover"
+ }
+ }
+}
diff --git a/stage/map.svg b/stage/map.svg
new file mode 100644
index 0000000..66f4915
--- /dev/null
+++ b/stage/map.svg
@@ -0,0 +1,97 @@
+
+
diff --git a/tests/test_small_eye.py b/tests/test_small_eye.py
new file mode 100755
index 0000000..11433be
--- /dev/null
+++ b/tests/test_small_eye.py
@@ -0,0 +1,294 @@
+#!/usr/bin/env python3
+"""Art-Net tester for Small Eye 7 Mover channels 5 / 6 / 7.
+
+Pan/tilt (1–4) already look right. This script lights the centre LED, then
+isolates:
+
+ CH5 pan/tilt speed — head should move fast at 0, crawl at 255
+ CH6 zoom — beam should grow/shrink
+ CH7 lens rotate — front glass spins only in 128–188 or 194–255,
+ and often only when zoom is fully in (narrow)
+
+Quit with Ctrl+C (sends blackout). Stop QLC+ output first so the two
+sources do not fight.
+
+Example:
+ python3 test_small_eye.py --ip 192.168.1.228 --address 1
+"""
+
+from __future__ import annotations
+
+import argparse
+import socket
+import sys
+import threading
+import time
+
+ARTNET_PORT = 6454
+HEADER = b"Art-Net\x00"
+OP_DMX = 0x5000
+PROT_VER = 14
+
+# 1-based fixture channels (43ch pixel mode)
+CH_PAN = 1
+CH_TILT = 3
+CH_SPEED = 5
+CH_ZOOM = 6
+CH_ROTATE = 7
+CH_FOCUS = 8
+CH_DIMMER = 9
+CH_STROBE = 10
+CH_RED = 11
+CH_GREEN = 12
+CH_BLUE = 13
+CH_WHITE = 14
+FIXTURE_CHANNELS = 43
+
+
+def build_artdmx(channels: bytes, universe: int = 0, sequence: int = 1) -> bytes:
+ data = bytearray(channels)
+ n = len(data)
+ if n < 2:
+ data.extend(b"\x00" * (2 - n))
+ n = 2
+ if n & 1:
+ data.append(0)
+ n += 1
+ if n > 512:
+ data = data[:512]
+ n = 512
+ pkt = bytearray(18 + n)
+ pkt[0:8] = HEADER
+ pkt[8:10] = bytes((OP_DMX & 0xFF, OP_DMX >> 8))
+ pkt[10] = 0
+ pkt[11] = PROT_VER
+ pkt[12] = sequence & 0xFF
+ pkt[13] = 0
+ pkt[14] = universe & 0xFF
+ pkt[15] = 0
+ pkt[16] = (n >> 8) & 0xFF
+ pkt[17] = n & 0xFF
+ pkt[18 : 18 + n] = data
+ return bytes(pkt)
+
+
+class ArtNetSender:
+ def __init__(self, dest: str, universe: int = 0, hz: float = 40.0):
+ self.dest = dest
+ self.universe = universe
+ self.period = 1.0 / hz
+ self.frame = bytearray(512)
+ self.sequence = 1
+ self._lock = threading.Lock()
+ self._running = True
+ self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
+ self._thread = threading.Thread(target=self._loop, daemon=True)
+ self._thread.start()
+
+ def _loop(self):
+ while self._running:
+ with self._lock:
+ pkt = build_artdmx(self.frame, self.universe, self.sequence)
+ self.sequence = 1 if self.sequence >= 255 else self.sequence + 1
+ try:
+ self.sock.sendto(pkt, (self.dest, ARTNET_PORT))
+ except OSError as exc:
+ print(f"Art-Net send failed: {exc}", file=sys.stderr)
+ time.sleep(self.period)
+
+ def set_slot(self, dmx_addr: int, value: int):
+ """dmx_addr is 1-based DMX."""
+ with self._lock:
+ self.frame[dmx_addr - 1] = max(0, min(255, int(value)))
+
+ def blackout(self):
+ with self._lock:
+ self.frame[:] = b"\x00" * 512
+
+ def close(self):
+ self.blackout()
+ time.sleep(self.period * 3)
+ self._running = False
+ self._thread.join(timeout=1.0)
+ self.sock.close()
+
+
+class SmallEye:
+ def __init__(self, sender: ArtNetSender, address: int):
+ self.artnet = sender
+ self.address = address
+
+ def set(self, channel: int, value: int):
+ self.artnet.set_slot(self.address + channel - 1, value)
+
+ def park_light(self, pan=128, tilt=80, dimmer=255, white=255, rgb=40):
+ """Still, visible beam. Strobe open, pixels off except centre RGBW."""
+ for ch in range(1, FIXTURE_CHANNELS + 1):
+ self.set(ch, 0)
+ self.set(CH_PAN, pan)
+ self.set(CH_TILT, tilt)
+ self.set(CH_SPEED, 0)
+ self.set(CH_ZOOM, 0)
+ self.set(CH_ROTATE, 0)
+ self.set(CH_FOCUS, 128)
+ self.set(CH_DIMMER, dimmer)
+ self.set(CH_STROBE, 0)
+ self.set(CH_RED, rgb)
+ self.set(CH_GREEN, rgb)
+ self.set(CH_BLUE, rgb)
+ self.set(CH_WHITE, white)
+
+
+def say(msg: str):
+ print(f"\n=== {msg} ===", flush=True)
+
+
+def hold(seconds: float, label: str = ""):
+ if label:
+ print(f" {label}", flush=True)
+ end = time.monotonic() + seconds
+ while time.monotonic() < end:
+ time.sleep(0.05)
+
+
+def sweep(fixture: SmallEye, channel: int, start: int, stop: int, seconds: float):
+ steps = max(1, int(seconds * 40))
+ for i in range(steps + 1):
+ value = int(start + (stop - start) * i / steps)
+ fixture.set(channel, value)
+ time.sleep(seconds / steps)
+
+
+def wait_enter(enabled: bool, prompt: str):
+ if enabled:
+ input(f" {prompt} [Enter] ")
+
+
+def test_speed(fixture: SmallEye, hold_s: float, pause: bool):
+ say("CH5 pan/tilt SPEED")
+ print("Watch the HEAD (yoke), not the lens.")
+ print("CH5=0 should be fast, CH5=255 should crawl.")
+ fixture.park_light()
+ wait_enter(pause, "Ready to wiggle pan")
+ for speed in (0, 80, 160, 255):
+ fixture.set(CH_SPEED, speed)
+ print(f" CH5 = {speed:3d} sweeping pan 40 → 220")
+ sweep(fixture, CH_PAN, 40, 220, hold_s)
+ sweep(fixture, CH_PAN, 220, 40, hold_s)
+ fixture.set(CH_PAN, 128)
+ fixture.set(CH_SPEED, 0)
+
+
+def test_zoom(fixture: SmallEye, hold_s: float, pause: bool):
+ say("CH6 ZOOM")
+ print("Watch the SPOT size on the wall. Should grow then shrink.")
+ fixture.park_light()
+ fixture.set(CH_ROTATE, 0)
+ wait_enter(pause, "Ready for zoom sweep")
+ print(" CH6 0 → 255")
+ sweep(fixture, CH_ZOOM, 0, 255, hold_s * 2)
+ hold(1.5, "CH6 = 255 (hold)")
+ print(" CH6 255 → 0")
+ sweep(fixture, CH_ZOOM, 255, 0, hold_s * 2)
+ hold(1.5, "CH6 = 0 (hold, narrow)")
+
+
+def test_rotate(fixture: SmallEye, hold_s: float, pause: bool):
+ say("CH7 LENS ROTATE")
+ print("Watch the FRONT GLASS. Index 0–127 does not spin.")
+ print("Spin is 128–188 (CCW) and 194–255 (CW). 189–193 is stop.")
+ print("If nothing moves, zoom is probably too wide — trying both extremes.")
+ fixture.park_light()
+ wait_enter(pause, "Ready for rotate")
+
+ points = [
+ (0, "index 0°"),
+ (64, "index mid"),
+ (127, "index 60°"),
+ (160, "SPIN CCW"),
+ (191, "stop band"),
+ (220, "SPIN CW"),
+ (255, "SPIN CW fast"),
+ (0, "back to index 0"),
+ ]
+ for zoom in (0, 255):
+ fixture.set(CH_ZOOM, zoom)
+ fixture.set(CH_ROTATE, 0)
+ print(f"\n zoom CH6 = {zoom}")
+ hold(1.0)
+ for value, label in points:
+ fixture.set(CH_ROTATE, value)
+ hold(hold_s, f"CH7 = {value:3d} {label}")
+ fixture.set(CH_ROTATE, 0)
+ fixture.set(CH_ZOOM, 0)
+
+
+def test_hunt(fixture: SmallEye, hold_s: float, pause: bool):
+ say("HUNT: put spin values on CH5, then CH6, then CH7")
+ print("Whichever channel actually spins the glass is lens rotate.")
+ fixture.park_light()
+ wait_enter(pause, "Ready to hunt rotate")
+ for candidate in (CH_SPEED, CH_ZOOM, CH_ROTATE):
+ fixture.park_light()
+ # Narrow zoom on the other two optics channels
+ if candidate != CH_ZOOM:
+ fixture.set(CH_ZOOM, 0)
+ print(f"\n putting spin (160, then 220) on CH{candidate}")
+ fixture.set(candidate, 160)
+ hold(hold_s, f"CH{candidate} = 160 CCW")
+ fixture.set(candidate, 220)
+ hold(hold_s, f"CH{candidate} = 220 CW")
+ fixture.set(candidate, 0)
+
+
+def parse_args():
+ p = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+ p.add_argument("--ip", default="192.168.1.228", help="Art-Net destination (QLC uses 192.168.1.228)")
+ p.add_argument("--universe", type=int, default=0, help="Art-Net universe (default 0)")
+ p.add_argument("--address", type=int, default=1, help="Fixture DMX start address, 1-based")
+ p.add_argument("--hold", type=float, default=3.0, help="Seconds to hold each rotate/speed step")
+ p.add_argument("--pause", action="store_true", help="Wait for Enter before each test")
+ p.add_argument(
+ "--only",
+ choices=("speed", "zoom", "rotate", "hunt", "all"),
+ default="all",
+ help="Run one test (default all)",
+ )
+ return p.parse_args()
+
+
+def main():
+ args = parse_args()
+ if not 1 <= args.address <= 512:
+ sys.exit("address must be 1–512")
+
+ print(
+ f"Art-Net → {args.ip} universe {args.universe} "
+ f"fixture start {args.address} (43ch)"
+ )
+ print("Stop QLC+ Art-Net output first.")
+
+ sender = ArtNetSender(args.ip, universe=args.universe)
+ fixture = SmallEye(sender, args.address)
+ try:
+ fixture.park_light()
+ hold(2.0, "centre LED on, head still")
+ tests = {
+ "speed": lambda: test_speed(fixture, args.hold, args.pause),
+ "zoom": lambda: test_zoom(fixture, args.hold, args.pause),
+ "rotate": lambda: test_rotate(fixture, args.hold, args.pause),
+ "hunt": lambda: test_hunt(fixture, args.hold, args.pause),
+ }
+ order = ("speed", "zoom", "rotate", "hunt") if args.only == "all" else (args.only,)
+ for name in order:
+ tests[name]()
+ say("done — blackout")
+ except KeyboardInterrupt:
+ print("\nstopped")
+ finally:
+ sender.close()
+
+
+if __name__ == "__main__":
+ main()
diff --git a/xchc.qxw b/xchc.qxw
deleted file mode 100644
index debb5a8..0000000
--- a/xchc.qxw
+++ /dev/null
@@ -1,1191 +0,0 @@
-
-
-
-
- Q Light Controller Plus
- 4.12.7
- Jimmy
-
-
-
-
-
-
-
-
-
-
-
- beamZ
- BCC145
- 8 Channel
- 0
- BCC145 #1
- 0
- 87
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 1
- BCC145 #2
- 0
- 95
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 2
- BCC145 #3
- 0
- 103
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 3
- BCC145 #4
- 0
- 111
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 4
- BCC145 #5
- 0
- 119
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 5
- BCC145 #6
- 0
- 127
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 6
- BCC145 #7
- 0
- 135
- 8
-
-
- beamZ
- BCC145
- 8 Channel
- 7
- BCC145 #8
- 0
- 143
- 8
-
-
- BCC145 Line
-
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
-
-
-
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
- 1,0,2,0,3,0,4,0,5,255,6,0,7,0
-
-
-
- Forward
- Loop
-
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
-
-
-
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,127,4,0,5,0,6,0,7,0
- 1,0,2,255,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,0,5,0,6,0,7,0
- 1,0,2,0,3,255,4,255,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,127,3,0,4,255,5,0,6,0,7,0
-
-
-
- Forward
- Loop
-
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
-
-
-
- Forward
- Loop
- Gradient
- 4294901760
- RGB
- 0
-
-
-
-
-
-
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 1,0,2,0,3,0,4,255,5,0,6,0,7,0
-
-
-
- Forward
- Loop
-
- 20
- 21
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
-
-
-
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 0,0,1,0,2,0,3,0,4,0,5,0,6,0,7,0
- 1,0,2,255,3,0,4,0,5,0,6,0,7,0
-
-
-
- Forward
- Loop
-
- 24
- 23
- 25
- 23
- 26
- 23
- 27
- 23
- 28
- 23
- 29
- 23
- 30
- 23
- 31
- 23
-
-
- Arial,12,-1,5,50,0,0,0,0,0
- 0
- 0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- None
- Default
- Default
- None
- Default
-
-
-
-
-
-
-
-
- Sunken
- Default
- Default
- None
- Default
-
- 108
-
-
- 9
- 18
- 19
- 22
- 32
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294901760
- Default
- None
- Default
-
- Level
-
-
- 2
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278255360
- Default
- None
- Default
-
- Level
-
-
- 3
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4278190335
- Default
- None
- Default
-
- Level
-
-
- 4
-
-
- 4294967295
-
-
-
-
-
- Sunken
- 4294967295
- Default
- None
- Default
-
- Level
-
-
- 5
-
-
- 4294967295
-
-
-
-
-
-
-
-
-
-
-
-