From df366b8aba66c29acabcc2c19bc1c8f5ee004988 Mon Sep 17 00:00:00 2001
From: gfhopper <gage@gages.blog>
Date: Fri, 9 May 2025 14:25:25 -0400
Subject: [PATCH] Test new codebase in Fedora VM and push upstream

---
 Makefile                        |  17 ++++++
 cursor.png => assets/cursor.png | Bin
 include/panes/compositor.h      |  20 ++++++
 include/panes/input.h           |   0
 include/panes/renderer.h        |   4 ++
 main.c                          | 105 --------------------------------
 panes                           | Bin 29632 -> 36080 bytes
 src/compositor.c                | 102 +++++++++++++++++++++++++++++++
 src/compositor.o                | Bin 0 -> 23472 bytes
 src/input.c                     |   0
 src/main.c                      |  17 ++++++
 src/main.o                      | Bin 0 -> 10856 bytes
 src/renderer.c                  |  24 ++++++++
 src/renderer.o                  | Bin 0 -> 8576 bytes
 14 files changed, 184 insertions(+), 105 deletions(-)
 create mode 100644 Makefile
 rename cursor.png => assets/cursor.png (100%)
 create mode 100644 include/panes/compositor.h
 create mode 100644 include/panes/input.h
 create mode 100644 include/panes/renderer.h
 delete mode 100644 main.c
 create mode 100644 src/compositor.c
 create mode 100644 src/compositor.o
 create mode 100644 src/input.c
 create mode 100644 src/main.c
 create mode 100644 src/main.o
 create mode 100644 src/renderer.c
 create mode 100644 src/renderer.o

diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..405f995
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,17 @@
+CC = cc
+CFLAGS = -g -std=c11 -DWLR_USE_UNSTABLE $(shell pkg-config --cflags wlroots-0.18 wayland-server) -Iinclude
+LDFLAGS = $(shell pkg-config --libs wlroots-0.18 wayland-server)
+SRC = src/main.c src/compositor.c src/renderer.c
+OBJ = $(SRC:.c=.o)
+BIN = panes
+
+all: $(BIN)
+
+$(BIN): $(OBJ)
+	$(CC) -o $@ $^ $(LDFLAGS)
+
+%.o: %.c
+	$(CC) -c $< -o $@ $(CFLAGS)
+
+clean:
+	rm -f $(OBJ) $(BIN)
diff --git a/cursor.png b/assets/cursor.png
similarity index 100%
rename from cursor.png
rename to assets/cursor.png
diff --git a/include/panes/compositor.h b/include/panes/compositor.h
new file mode 100644
index 0000000..c5a76a3
--- /dev/null
+++ b/include/panes/compositor.h
@@ -0,0 +1,20 @@
+#pragma once
+#include <wlr/backend.h>
+#include <wlr/render/wlr_renderer.h>
+#include <wlr/render/allocator.h>
+#include <wlr/types/wlr_scene.h>
+#include <wlr/types/wlr_output_layout.h>
+#include <wayland-server-core.h>
+
+struct compositor_state {
+    struct wl_display *display;
+    struct wlr_backend *backend;
+    struct wlr_renderer *renderer;
+    struct wlr_allocator *allocator;
+    struct wlr_scene *scene;
+    struct wlr_output_layout *layout;
+    struct wl_listener new_output;
+};
+
+void compositor_init(struct compositor_state *state);
+void handle_new_output(struct wl_listener *listener, void *data);
diff --git a/include/panes/input.h b/include/panes/input.h
new file mode 100644
index 0000000..e69de29
diff --git a/include/panes/renderer.h b/include/panes/renderer.h
new file mode 100644
index 0000000..903ba12
--- /dev/null
+++ b/include/panes/renderer.h
@@ -0,0 +1,4 @@
+#pragma once
+#include <wlr/types/wlr_scene.h>
+
+void renderer_set_background(struct wlr_scene *scene, uint32_t hex_color);
diff --git a/main.c b/main.c
deleted file mode 100644
index 4e9dc3a..0000000
--- a/main.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#define WLR_USE_UNSTABLE
-#include <wlr/backend.h>
-#include <wlr/backend/multi.h>
-#include <wlr/types/wlr_output.h>
-#include <wlr/types/wlr_output_layout.h>
-#include <wlr/types/wlr_scene.h>
-#include <wlr/types/wlr_compositor.h>
-#include <wlr/types/wlr_cursor.h>
-#include <wlr/types/wlr_data_device.h>
-#include <wlr/render/allocator.h>
-#include <wlr/render/wlr_renderer.h>
-#include <wlr/util/log.h>
-#include <wayland-server-core.h>
-#include <stdlib.h>
-#include <string.h>
-
-struct server {
-	struct wl_display *display;
-	struct wlr_backend *backend;
-	struct wlr_renderer *renderer;
-	struct wlr_allocator *allocator;
-	struct wlr_scene *scene;
-	struct wlr_output_layout *layout;
-	struct wl_listener new_output;
-};
-
-static void handle_new_output(struct wl_listener *listener, void *data) {
-	struct server *server = wl_container_of(listener, server, new_output);
-	struct wlr_output *output = data;
-
-	// Pick the first available mode
-	if (!wl_list_empty(&output->modes)) {
-		struct wlr_output_mode *mode = wl_container_of(output->modes.next, mode, link);
-
-		struct wlr_output_state state;
-		memset(&state, 0, sizeof(state));
-		state.committed = WLR_OUTPUT_STATE_ENABLED | WLR_OUTPUT_STATE_MODE;
-		state.enabled = true;
-		state.mode_type = WLR_OUTPUT_STATE_MODE_FIXED;
-		state.mode = mode;
-
-		if (!wlr_output_commit_state(output, &state)) {
-			wlr_log(WLR_ERROR, "Failed to commit output state");
-			return;
-		}
-	}
-
-	wlr_output_layout_add_auto(server->layout, output);
-	wlr_scene_output_create(server->scene, output);
-
-	float bg[4] = {0.1f, 0.1f, 0.1f, 1.0f};
-	struct wlr_scene_rect *rect =
-		wlr_scene_rect_create(&server->scene->tree, 1, 1, bg);
-	wlr_scene_node_lower_to_bottom(&rect->node);
-}
-
-int main(void) {
-    wlr_log_init(WLR_DEBUG, NULL);
-    struct server server = {0};
-
-    server.display = wl_display_create();
-    struct wl_event_loop *loop = wl_display_get_event_loop(server.display);
-
-    // Create the backend first
-    server.backend = wlr_backend_autocreate(loop, NULL); // Automatically choose the backend
-    if (!server.backend) {
-        wlr_log(WLR_ERROR, "Failed to create backend");
-        return 1;
-    }
-
-    // Create the renderer after the backend
-    server.renderer = wlr_renderer_autocreate(server.backend);
-    if (!server.renderer) {
-        wlr_log(WLR_ERROR, "Failed to create renderer");
-        return 1;
-    }
-
-    // Now create the allocator with the valid renderer
-    server.allocator = wlr_allocator_autocreate(server.backend, server.renderer);
-    if (!server.allocator) {
-        wlr_log(WLR_ERROR, "Failed to create allocator");
-        return 1;
-    }
-
-    // Create the compositor with the renderer
-    wlr_compositor_create(server.display, 4, server.renderer);
-    wlr_data_device_manager_create(server.display);
-
-    server.scene = wlr_scene_create();
-    server.layout = wlr_output_layout_create(server.display);
-
-    server.new_output.notify = handle_new_output;
-    wl_signal_add(&server.backend->events.new_output, &server.new_output);
-
-    // Start the backend
-    if (!wlr_backend_start(server.backend)) {
-        wlr_log(WLR_ERROR, "Failed to start backend");
-        return 1;
-    }
-
-    wlr_log(WLR_INFO, "Panes compositor running (wlroots 0.18)...");
-    wl_display_run(server.display);
-    wl_display_destroy(server.display);
-    return 0;
-}
diff --git a/panes b/panes
index 380a9ae9b34f02301f1090758cb68374d05c7e48..5e1f12b4740c547e827a3b094bf6cec02faac70b 100755
GIT binary patch
literal 36080
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

literal 29632
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

diff --git a/src/compositor.c b/src/compositor.c
new file mode 100644
index 0000000..b0b6e53
--- /dev/null
+++ b/src/compositor.c
@@ -0,0 +1,102 @@
+#include <stdlib.h>
+#include <wlr/backend.h>
+#include <wlr/render/wlr_renderer.h>
+#include <wlr/render/allocator.h>
+#include <wlr/types/wlr_scene.h>
+#include <wlr/types/wlr_output_layout.h>
+#include <wlr/util/log.h>
+#include <wlr/types/wlr_output.h>
+#include <panes/renderer.h>
+#include <panes/compositor.h>
+#include <ctype.h>
+#include <string.h>
+#include <wlr/types/wlr_compositor.h>
+#include <wlr/types/wlr_data_device.h>
+#include <wlr/backend/headless.h>  // Add this to the top of the file
+
+static bool parse_hex_color(const char *hex_str, float *rgba_out) {
+    if (!hex_str) return false;
+
+    if (hex_str[0] == '#') hex_str++;
+    else if (hex_str[0] == '0' && tolower(hex_str[1]) == 'x') hex_str += 2;
+
+    if (strlen(hex_str) != 6) return false;
+
+    char r_str[3] = { hex_str[0], hex_str[1], '\0' };
+    char g_str[3] = { hex_str[2], hex_str[3], '\0' };
+    char b_str[3] = { hex_str[4], hex_str[5], '\0' };
+
+    int r = strtol(r_str, NULL, 16);
+    int g = strtol(g_str, NULL, 16);
+    int b = strtol(b_str, NULL, 16);
+
+    rgba_out[0] = r / 255.0f;
+    rgba_out[1] = g / 255.0f;
+    rgba_out[2] = b / 255.0f;
+    rgba_out[3] = 1.0f;
+
+    return true;
+}
+
+void compositor_init(struct compositor_state *state) {
+    state->display = wl_display_create();
+    struct wl_event_loop *loop = wl_display_get_event_loop(state->display);
+
+    state->backend = wlr_backend_autocreate(loop, NULL);
+    state->renderer = wlr_renderer_autocreate(state->backend);
+    state->allocator = wlr_allocator_autocreate(state->backend, state->renderer);
+    state->layout = wlr_output_layout_create(state->display);
+    state->scene = wlr_scene_create();
+
+    // Add headless output if applicable (nested testing)
+    if (wlr_backend_is_headless(state->backend)) {
+        struct wlr_output *headless_output = wlr_headless_add_output(state->backend, 800, 600);
+        if (!headless_output) {
+            wlr_log(WLR_ERROR, "Failed to create headless output");
+        } else {
+            struct wlr_output_state pending;
+            memset(&pending, 0, sizeof(pending));
+            pending.committed = WLR_OUTPUT_STATE_ENABLED | WLR_OUTPUT_STATE_MODE;
+            pending.enabled = true;
+            pending.mode_type = WLR_OUTPUT_STATE_MODE_CUSTOM;
+            pending.custom_mode.width = 800;
+            pending.custom_mode.height = 600;
+            pending.custom_mode.refresh = 60000;
+
+            if (!wlr_output_commit_state(headless_output, &pending)) {
+                wlr_log(WLR_ERROR, "Failed to commit headless output state");
+            }
+        }
+    }
+
+    wlr_compositor_create(state->display, 4, state->renderer);
+    wlr_data_device_manager_create(state->display);
+
+    wl_signal_add(&state->backend->events.new_output, &state->new_output);
+    state->new_output.notify = handle_new_output;
+}
+
+void handle_new_output(struct wl_listener *listener, void *data) {
+    struct compositor_state *state = wl_container_of(listener, state, new_output);
+    struct wlr_output *output = data;
+
+    if (!wl_list_empty(&output->modes)) {
+        struct wlr_output_mode *mode = wl_container_of(output->modes.next, mode, link);
+
+        struct wlr_output_state pending;
+        memset(&pending, 0, sizeof(pending));
+        pending.committed = WLR_OUTPUT_STATE_ENABLED | WLR_OUTPUT_STATE_MODE;
+        pending.enabled = true;
+        pending.mode_type = WLR_OUTPUT_STATE_MODE_FIXED;
+        pending.mode = mode;
+
+        if (!wlr_output_commit_state(output, &pending)) {
+            wlr_log(WLR_ERROR, "Failed to commit output");
+            return;
+        }
+    }
+
+    wlr_output_layout_add_auto(state->layout, output);
+    wlr_scene_output_create(state->scene, output);
+    renderer_set_background(state->scene, 0x018281); // Hex color
+}
diff --git a/src/compositor.o b/src/compositor.o
new file mode 100644
index 0000000000000000000000000000000000000000..03ab5254fd7f1df2b810d1b06355ed40bb3c2921
GIT binary patch
literal 23472
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

literal 0
HcmV?d00001

diff --git a/src/input.c b/src/input.c
new file mode 100644
index 0000000..e69de29
diff --git a/src/main.c b/src/main.c
new file mode 100644
index 0000000..242c13f
--- /dev/null
+++ b/src/main.c
@@ -0,0 +1,17 @@
+#include <wlr/util/log.h>
+#include <panes/compositor.h>
+
+int main() {
+    struct compositor_state state = {0};
+    compositor_init(&state);
+
+    if (!wlr_backend_start(state.backend)) {
+        wlr_log(WLR_ERROR, "Failed to start backend");
+        return 1;
+    }
+
+    wlr_log(WLR_INFO, "Panes compositor running...");
+    wl_display_run(state.display);
+    wl_display_destroy(state.display);
+    return 0;
+}
diff --git a/src/main.o b/src/main.o
new file mode 100644
index 0000000000000000000000000000000000000000..ff8ce7a34a151476179dfa0f0841adc0ad183d77
GIT binary patch
literal 10856
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

literal 0
HcmV?d00001

diff --git a/src/renderer.c b/src/renderer.c
new file mode 100644
index 0000000..e088314
--- /dev/null
+++ b/src/renderer.c
@@ -0,0 +1,24 @@
+#include <wlr/types/wlr_scene.h>
+#include <wlr/types/wlr_output.h>
+#include <wlr/types/wlr_output_layout.h>
+#include <wlr/render/wlr_renderer.h>
+#include <wlr/render/allocator.h>
+#include <wlr/types/wlr_compositor.h>
+#include <wlr/util/log.h>
+#include <stdlib.h>
+#include <string.h>
+#include <panes/renderer.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <ctype.h>
+
+void renderer_set_background(struct wlr_scene *scene, uint32_t hex_color) {
+    float rgba[4];
+    rgba[0] = ((hex_color >> 16) & 0xFF) / 255.0f;
+    rgba[1] = ((hex_color >> 8)  & 0xFF) / 255.0f;
+    rgba[2] = ( hex_color        & 0xFF) / 255.0f;
+    rgba[3] = 1.0f;
+
+    struct wlr_scene_rect *rect = wlr_scene_rect_create(&scene->tree, 1, 1, rgba);
+    wlr_scene_node_lower_to_bottom(&rect->node);
+}
diff --git a/src/renderer.o b/src/renderer.o
new file mode 100644
index 0000000000000000000000000000000000000000..2c8e0b34deee522066ada9a0bdd05dcb3e541b88
GIT binary patch
literal 8576
zcmbuEc|4R`AHbgpqX;9iRH9V3T!|>6MOQQ-OQn=$W{fei42{94Boc-crLwiBMaz|>
zT_bCyXt~;MC26@uDN4)R?R}n^-zoQ8{qw%(^O-s4_dUPu`JM9|^E?t9U7h;TXas6B
zVmk3dLX;q+Lw}6zWkY*Hm(U@+n3AW=HSP9HNqoH|x;l`Vp*VUhInR_hezcHgI96A_
zU}%&}B~s>EsaQ2g<Bhb7sbM00rO%XHWL|%{riI2Fa1r5)T^iofE)9kn6`)JQzp_h1
z)3HV7r2qftq>Xg)|9N;p=A|UhOVhEPnc-N^%=BtuO0J)w%2h#qF(q{`C=K%3?~n?2
zkeo#d9|M`c$}1yMk||xPA~h2n2x9dN$_CYZADxnZ$l}8A&5iC_GqvmZL9zEc1iIx-
zhWF<&G)FR+D)k!1S@c;Jwao6M+BHt2j6BRoXsY*f(#qbXraUz_SNt@Io+CE*)KVWl
zcU?l_+kjS@z`wBP;k9xL!HvA0JnOD)Jr5fMthIWUde(U>Tbpi`CTzDn7Z_^gsl{m*
zy>xvkPFqPA*^FA!s#WUpqE^JYZWuE6!;}2d#T}EXN?r0R`W@sI*KIz+Z?#PH(_&S=
zxAoA@A9uamF-9*hv_WE=OJ{2*$L~<Gau2*wywtN!ToSUln_05eHuv}d;}1gRjKre*
zF566LTb53UE$trjI$g!G^<&n&&UJ$=uKeK^y8FX{vNsN%%4S<78YUS{8*Z8FF!+0i
zckUdSpW&dr@Kj#Hg58f7`YW}}ADVrsTBpbHs$b8cvYObt;u$<H`*`A{zX#6>dEL3U
zlh<&2YWd)_{0Q-Tnp5#In!@HHj|TUZ=HBn`vTCZicOUP{bR6<<&W!a=Zr<Lr3=gbV
z%>3ZOFbXa`IWxZ{u>aBY*-c?<ytnLB+I2O*ke%J!lvws9Phlc^p}j$#Lg)phG|kfs
zYa#|`KmAPGv;X1xr&f=+i@38I^3Ts_$BYziIMms$-ES>_|DKX+Zh+50am?+qeL68u
zd|9O@eV>Yk1YN31W&au6XnZ27%=)2GQtp=Bekn(%?r&v(Y1*%ARix9===HML`Fdj5
z$?jWP0|Qdx72`~wjji<Pr=GB`C2X&simT?j+{h_9xd#US%~5q(elv1Lei4W5pd0MH
zUUI5U&*)s$gGHkq^|oscw=PdQeXTynxn|0u?QKan6ZFLN5Zg7QwpEI1J?7ZPxvo`t
zGjQ#Q{N<sNDOI^%drp{M?Vo$q>ghT4?6&@9Y`3_ijB%&57brg$4tw}^nF{afX}aCU
z=Vz?FRG!jbn`H>Sx3_OT_x4esXV|0Dr*+dFyi<1xIO!Rd$u3n7nr3_|WB<ECcKKhq
z-R+D9PVHGmrQ~TzamgoLrK2xyyS?p~grse^uiO-;*DUFzv9cVK)U>wLFTcpIQ#rWR
z$v#EDFuQdZ{Ud92$^gcZUF=h_bJQyvSHINX>8!SLSgv@2@^SC&&I2`uzyDUrS}=3#
z8iNz9f1Au3?mzv=sk2Me+U_y(#;zYR`glq9*!2@X=n_5YzW=z-cESya?n7~*SJoA`
zDszV8o9bm;y?4b+hu(DlgK59GGDXSCi&K!$+IZJIW@B;tZcA(a(NyQ$m-W*U-nGoo
zs}CtTRjKeyvw=T(aF+WxyZwh9*O^YuOP}&}!ulNTSHBvzn9=N%1pZbf^J|XSK6oGG
zW*;`;!l#DU8{P5@;zwU^*|TrZ_|7r(1LvLGXu(sDS#h_T2Ho@Bx}%7FNjV{BqPotq
zlCn$A=WlryM6XWR!Dwu&DB6Gd_}z$}@#8as6b|ppuwftJ-&j@fT$CzsOl4dhv1*-~
zq5ogMHY~DBo}VA_t*UZ^IJR=wvOjwse0@>Ssl4Twv8E|mi+-|t^p}03FFRBY1itrZ
z;vNtriwn=zN~O}v(#j_KUVVN2gs!(qW1ScprbdmI>=oGoIsDe=+|@6V2Du(kv`k}j
z2p?tRJNAlpg*CJ>-skmg^4N6CE{o}$&8upQb83ruRhO>>npK+^NE+s+2max#U}?N~
zv-`19;mRQ1pI1kzi)@Kwu4>F5=jCeI8T~^R7e+6*@Akx;@qT}saynDDsiKpx%GrEp
zWc180Hp2Ef0gvxwPdMLx`^}xd*6N6Z2itvUn8LqyX^CBDKeeP|gJ#~JWZPdSWN1>y
zVy<7~8h&Q^)RLLu%LP)-p~Ign)=Ha2erJZ)Mwyyu362KO2vZL9|LU+@XQ5BsI<?}v
zr574qK6ZJGH}O8#U~(#9#md85TzzipeA=L5zIwqgw|lllkBDehQKKz3?6lRUB|8ky
zI&rVr*N|1}kjTBTIQrY<)VmMfoQ+d*zwpexv3rGqe)qZcYMqS2Vy^u+$-%Zn%Ofjy
zwyNJyIMVP%f7s;6*<)w4kMZo<=vH^N!gI~oP_u^|ucVT%JFT2!gaKZ!_wwiQcKb(i
zxoqX^<{{@o)Q<U&`#mJHVRGi|GpncDoGr>&)wELe%ZV3Rwy$5R9*uU&l1SW^&Z%D<
znP$q}=kG9ZM>4ys#^<fa7RR`FPyd{nZsGFyxJl>D#>A)5Bku3rFsQ7}O?0wghxMj{
zLjgB*v<%yhjJ=Y*y3At481?6yhKA>MXw4m&R?0AlJ$!QBBo%|Vq2gP#56x3=c1UAW
z&y^2N`g&|*i-N96n7-h*4+~O@J1!pEVXMEZ+O~Y}{6-%|JH;D`f-pA!)tw1Tr*F@!
zcrtIvCSR33k9J9%_72=zTUM~GEAtoK2^r}f@v4zS615@?4;CHoX@1!ic;4(#diJ37
zlqqx*Wy{7dMvt$hvhEqg1lj%dXB3Z_y?Ido%)seqQdBRiews6Du4i()Q_-f1*=oms
zzwx{!RCm?>`qCu}GxXyPo1Iexzq3m99I9UB47uGr)%x;f2NmhVaoan>ny-tahgdvr
zsogN*K{k&oFgSWm$#<c~@7>Kzk#?NPzyTqz!mQp!?HyOb(yt+SO<DFS4KW{1G_b!Z
z47mHH_{V;2h8yX}{gml(T~K8-ut6g+wan}5&{@(sSyCf~@XtM}bIXe~HhpGaimkA_
zn=;xlIc~|kYxP-b9DNlZ_Ndf#rX9q$V0!S{%1vrlN35&ZvS`egNkayO@Yfh}%5|Dw
zIkKiZmX8#N9LhbI_<5sqvEdV!%N)1n<VP(lT5>`(4d?mU*=&h-xmT<aG2oSP1b_R(
z$dDbDrw10<x_gB=CLAz`oRRR{z|AMhdIP&&Qc*QPr)_9yiDVhq&x-ph<caUgm^x2)
z$)1B}*c}zp&!6nhhrXX{5O$0??a9z2;l6xgwu6JM(b(B;UgL}`CYf27Sr|<;pE$|f
zYT_j7NKqs|M&yUOok<<?bfQTqhU!8Cc>u|%rY-LX+VXh>P0XMT9jM$ti&P#)a_U1h
z*=aUYosrVdL5;33nMSI}C;IrN;wTbtzx6RiD16W2pR)?GZ2!q9Nr8YLb=Z^w(RX|W
zLKV}LiwcD7hw;DW6bSWyv4JER)GJSPl8+)e<6qhYVfz!l_$QnY@&tiAAx~(={XS$x
z@kFcu4mXr9jEEKl60u=IRuq>f;IV`}u874I@;D-1FDi%#<gvmcVtGQAD1sFbAreJ|
z6D(Ggh;+f?28XhOI7`DI*M-nif29=2&wswjTftBGgP-u%7zdGHz{aBXm<stp{*8KZ
zYE=-Q)QeNKMjWju<pcf{kt5>!%28aI{FuxC+>&b~Zxp9&2ZO8wJ>nn|LtsFK2NyD8
z0-VzCz1u8$aVl;B7};QaH&s-!$sR_?p7KNKs{(f-$5cbyfGQN(=E}S8{5kkvfbkt5
zQ~QZ($WJc#N9&Auj$Dmc4n5)}Q1=9kKLtM<FwO^#{2@PCz;|N$w?RIPaW|09VEh5p
z;R43#z^`Cj7xKS@@leozhH-ny^F78-07sAR=(_Gf{jDJm;^V>I0pmuX?}73E0Qbju
zC&U$ET>fjCe454hFA#Sf##4ZA!uT?Xn~U)<h+BklI^1N(F&+%O4&w{KPY1>iL;XKv
z+!o~ikQb`wQpjH)<JI7QIL6~aHpcjA@Q=;|<lhwdEKDD*w+F`eLH>RiSA={*FrE+o
zV=;aZ<YbJqpq|+nzXE=?WBeh+ZN_*F<k^aGchK*|I69Beenj;_`Rjlk;$2{GjPaWg
zcQVGq;kr<K+>bA&ZwTuigYg?shh&UfgMW11Apf=CXB(z}5O^`h--CP-<E3!DXx}0K
z)8TrrWBL<-qxC`h_aOgQn0_Saf5iAp&{u_d<R=igCB{=B&zTs%41Q;0Tovjz7vqso
zA0LdP`Y*+}7vvL-@kQV#3FB^{zX9Xu94N&2DUdH<9Iaym#?kqC7vpIEJ;Qhv<kO9D
zUy#v{3{-zDsIwZ>4{;^nMi|$F`kP@~1l$VaDG=8d<1J9nnHawcd@jb-A)h4}*8|SS
zcskTUgz<}@pNMf6kk?~;7x*c_INE;)Fy02&dlus}z)u~<QT=aW9G%aPF^<mX*BIwQ
z-57NF0IefnVl2i>U}8ST4Z-gc;8faBGMPm<rauSPeFetRxhcW8?4gYGv=!qthznTu
zdk<|{DlmEm!Sfj@%S!(HkorA53gj^up8~Q8#;1X7hH-b0Ct{oj@??x}2AO&;q8e3y
zDxckyK(^`f?mI{O{5On$0NEAe=()lZ<G;ebLeD!W?quLTnErI&Y>c}CN7sk^_y7;V
z^wGH;f$?zA7h!xQ@HmWb1ilL61;E!}d=Kz6jF$n=#Q0_4TY*zz@BM59oMOE>VHOn^
zF5(1`y+|nUgV9LH3*(rHcw!M@7RV8C2(y5wD8ft_As1w`fxLidK5MBUD1y|HjX41U
zLS781Mi~PVas+%HW%`4KEfw&P2^kL!DNH`-k}@|UJe(&WLkl8AJTvlD$9UQEFUWjB
zv{|GuB9bQ*#erX5Fe^yN2}cVH*ZaSAMx-HCLv)`aKlU&{?+p-#@*|O;{w+w|*Y@9u
zd~kqzC??whc_({6L)lXI5Y_bL9YNjK6o+F6C_${i1HlZAO-WAq{9o;<=VQv}KlTbK
zqy3HYC6TQ4KEo(LoddF*FvT=TGzv=$QzNKztgrfcs8Qa@a}r(!X_I4WjgUR6pEJq&
zijRI5&>;^}P1cY-lKsd5rXri7!-g<NiqPY_-X!lUe>NnD?5X^zcXcQ}%6}Qj`pVx1
z;;$#?dpBf{SQt6zD}ELPu!n`E;!~wW_9%Wl$*B0|Xo4J5tsdf6U>gIep*p0Ix_#NF
zQ5Q?LxAN}$H*TLx&dBV)Ysd$2)PYSl^zKqFL9Ivu#oyIyjC81eGuZcL)EL<zevBMY
z?|HDxByzzXtsl}y`6KxfIiP&v_Vr+IgA}31?W;-N*ZMWVi!QWI)cR5H%8)(ceZ`iA
tg8Rk>E|_|+*4O@{7<P-w%x&QO3Xw@azVP~K{>1(T<bU&rsceMX{}*T+;sXEx

literal 0
HcmV?d00001