From f69a0c8389c79334a5421594d6b053574341c1006761cab6fc7e04ed1a11c6d7 Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Mon, 26 Oct 2015 10:02:50 +0000 Subject: [PATCH] Accepting request 340879 from home:mimi_vx:branches:X11:XOrg - update to 11.0.4 * bug fix release which fixes bugs found since the 11.0.3 release * droped patches - merged by upstream: U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch U_i965-Remove-early-release-of-DRI2-miptree.patch OBS-URL: https://build.opensuse.org/request/show/340879 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=481 --- Mesa.changes | 9 + Mesa.spec | 9 +- ..._SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch | 278 ------------------ ...Remove-early-release-of-DRI2-miptree.patch | 33 --- mesa-11.0.3.tar.xz | 3 - mesa-11.0.3.tar.xz.sig | Bin 543 -> 0 bytes mesa-11.0.4.tar.xz | 3 + mesa-11.0.4.tar.xz.sig | Bin 0 -> 543 bytes 8 files changed, 14 insertions(+), 321 deletions(-) delete mode 100644 U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch delete mode 100644 U_i965-Remove-early-release-of-DRI2-miptree.patch delete mode 100644 mesa-11.0.3.tar.xz delete mode 100644 mesa-11.0.3.tar.xz.sig create mode 100644 mesa-11.0.4.tar.xz create mode 100644 mesa-11.0.4.tar.xz.sig diff --git a/Mesa.changes b/Mesa.changes index a21f361..546463f 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Sun Oct 25 18:08:04 UTC 2015 - mimi.vx@gmail.com + +- update to 11.0.4 + * bug fix release which fixes bugs found since the 11.0.3 release + * droped patches - merged by upstream: + U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch + U_i965-Remove-early-release-of-DRI2-miptree.patch + ------------------------------------------------------------------- Thu Oct 22 13:08:47 UTC 2015 - sndirsch@suse.com diff --git a/Mesa.spec b/Mesa.spec index 36074f5..46b4e37 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -18,7 +18,7 @@ %define glamor 1 %define _name_archive mesa -%define _version 11.0.3 +%define _version 11.0.4 %ifarch %ix86 x86_64 %arm ppc ppc64 ppc64le s390x %define gallium_loader 1 %else @@ -37,7 +37,7 @@ %define with_nine 1 %endif Name: Mesa -Version: 11.0.3 +Version: 11.0.4 Release: 0 Summary: System for rendering interactive 3-D graphics License: MIT @@ -52,9 +52,6 @@ Source6: %{name}-rpmlintrc Source7: Mesa.keyring # required for building against wayland of openSUSE 13.1 Patch0: n_Fixed-build-against-wayland-1.2.1.patch -# merged, should be in the next release -Patch1: U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch -Patch10: U_i965-Remove-early-release-of-DRI2-miptree.patch # to be upstreamed Patch11: u_Fix-crash-in-swrast-when-setting-a-texture-for-a-pix.patch # Patch from Fedora, fix 16bpp in llvmpipe @@ -521,8 +518,6 @@ rm -rf docs/README.{VMS,WIN32,OS2} # required for building against wayland of openSUSE 13.1 %patch0 -p1 %endif -%patch1 -p1 -%patch10 -p1 ### disabled, but not dropped yet; these still need investigation in ### order to figure out whether the issue is still reproducable and ### hence a fix is required diff --git a/U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch b/U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch deleted file mode 100644 index 1db879b..0000000 --- a/U_gallium-add-PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HI.patch +++ /dev/null @@ -1,278 +0,0 @@ -From 814f31457e9ae83d4f1e39236f704721b279b73d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= -Date: Tue, 20 Oct 2015 18:26:02 +0200 -Subject: [PATCH] gallium: add PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT - -This avoids a serious r600g bug leading to a GPU hang. -The chances this bug will get fixed are pretty low now. - -I deeply regret listening to others and not pushing this patch, leaving -other users with a GPU-crashing driver. Yes, it should be fixed -in the compiler and it's ugly, but users couldn't care less about that. - -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86720 - -Cc: 11.0 10.6 -Reviewed-by: Brian Paul ---- - src/gallium/auxiliary/gallivm/lp_bld_limits.h | 2 ++ - src/gallium/auxiliary/tgsi/tgsi_exec.h | 2 ++ - src/gallium/docs/source/screen.rst | 4 ++++ - src/gallium/drivers/freedreno/freedreno_screen.c | 2 ++ - src/gallium/drivers/i915/i915_screen.c | 2 ++ - src/gallium/drivers/ilo/ilo_screen.c | 2 ++ - src/gallium/drivers/nouveau/nv30/nv30_screen.c | 4 ++++ - src/gallium/drivers/nouveau/nv50/nv50_screen.c | 2 ++ - src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 2 ++ - src/gallium/drivers/r300/r300_screen.c | 4 ++++ - src/gallium/drivers/r600/r600_pipe.c | 6 ++++++ - src/gallium/drivers/radeonsi/si_pipe.c | 2 ++ - src/gallium/drivers/svga/svga_screen.c | 4 ++++ - src/gallium/drivers/vc4/vc4_screen.c | 2 ++ - src/gallium/include/pipe/p_defines.h | 3 ++- - src/mesa/state_tracker/st_extensions.c | 3 +++ - 16 files changed, 45 insertions(+), 1 deletion(-) - -Index: mesa-11.0.3/src/gallium/auxiliary/gallivm/lp_bld_limits.h -=================================================================== ---- mesa-11.0.3.orig/src/gallium/auxiliary/gallivm/lp_bld_limits.h -+++ mesa-11.0.3/src/gallium/auxiliary/gallivm/lp_bld_limits.h -@@ -137,6 +137,8 @@ gallivm_get_shader_param(enum pipe_shade - case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - } - /* if we get here, we missed a shader cap above (and should have seen - * a compiler warning.) -Index: mesa-11.0.3/src/gallium/auxiliary/tgsi/tgsi_exec.h -=================================================================== ---- mesa-11.0.3.orig/src/gallium/auxiliary/tgsi/tgsi_exec.h -+++ mesa-11.0.3/src/gallium/auxiliary/tgsi/tgsi_exec.h -@@ -463,6 +463,8 @@ tgsi_exec_get_shader_param(enum pipe_sha - case PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - } - /* if we get here, we missed a shader cap above (and should have seen - * a compiler warning.) -Index: mesa-11.0.3/src/gallium/docs/source/screen.rst -=================================================================== ---- mesa-11.0.3.orig/src/gallium/docs/source/screen.rst -+++ mesa-11.0.3/src/gallium/docs/source/screen.rst -@@ -355,6 +355,10 @@ to be 0. - are supported. - * ``PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE``: Whether the driver doesn't - ignore tgsi_declaration_range::Last for shader inputs and outputs. -+* ``PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT``: This is the maximum number -+ of iterations that loops are allowed to have to be unrolled. It is only -+ a hint to state trackers. Whether any loops will be unrolled is not -+ guaranteed. - - - .. _pipe_compute_cap: -Index: mesa-11.0.3/src/gallium/drivers/freedreno/freedreno_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/freedreno/freedreno_screen.c -+++ mesa-11.0.3/src/gallium/drivers/freedreno/freedreno_screen.c -@@ -407,6 +407,8 @@ fd_screen_get_shader_param(struct pipe_s - return 16; - case PIPE_SHADER_CAP_PREFERRED_IR: - return PIPE_SHADER_IR_TGSI; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - } - debug_printf("unknown shader param %d\n", param); - return 0; -Index: mesa-11.0.3/src/gallium/drivers/i915/i915_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/i915/i915_screen.c -+++ mesa-11.0.3/src/gallium/drivers/i915/i915_screen.c -@@ -167,6 +167,8 @@ i915_get_shader_param(struct pipe_screen - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - default: - debug_printf("%s: Unknown cap %u.\n", __FUNCTION__, cap); - return 0; -Index: mesa-11.0.3/src/gallium/drivers/ilo/ilo_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/ilo/ilo_screen.c -+++ mesa-11.0.3/src/gallium/drivers/ilo/ilo_screen.c -@@ -138,6 +138,8 @@ ilo_get_shader_param(struct pipe_screen - return PIPE_SHADER_IR_TGSI; - case PIPE_SHADER_CAP_TGSI_SQRT_SUPPORTED: - return 1; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - - default: - return 0; -Index: mesa-11.0.3/src/gallium/drivers/nouveau/nv30/nv30_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/nouveau/nv30/nv30_screen.c -+++ mesa-11.0.3/src/gallium/drivers/nouveau/nv30/nv30_screen.c -@@ -261,6 +261,8 @@ nv30_screen_get_shader_param(struct pipe - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - default: - debug_printf("unknown vertex shader param %d\n", param); - return 0; -@@ -302,6 +304,8 @@ nv30_screen_get_shader_param(struct pipe - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - default: - debug_printf("unknown fragment shader param %d\n", param); - return 0; -Index: mesa-11.0.3/src/gallium/drivers/nouveau/nv50/nv50_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/nouveau/nv50/nv50_screen.c -+++ mesa-11.0.3/src/gallium/drivers/nouveau/nv50/nv50_screen.c -@@ -297,6 +297,8 @@ nv50_screen_get_shader_param(struct pipe - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - default: - NOUVEAU_ERR("unknown PIPE_SHADER_CAP %d\n", param); - return 0; -Index: mesa-11.0.3/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c -+++ mesa-11.0.3/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c -@@ -310,6 +310,8 @@ nvc0_screen_get_shader_param(struct pipe - return 16; /* would be 32 in linked (OpenGL-style) mode */ - case PIPE_SHADER_CAP_MAX_SAMPLER_VIEWS: - return 16; /* XXX not sure if more are really safe */ -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - default: - NOUVEAU_ERR("unknown PIPE_SHADER_CAP %d\n", param); - return 0; -Index: mesa-11.0.3/src/gallium/drivers/r300/r300_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/r300/r300_screen.c -+++ mesa-11.0.3/src/gallium/drivers/r300/r300_screen.c -@@ -300,6 +300,8 @@ static int r300_get_shader_param(struct - case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - case PIPE_SHADER_CAP_PREFERRED_IR: - return PIPE_SHADER_IR_TGSI; - } -@@ -356,6 +358,8 @@ static int r300_get_shader_param(struct - case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - case PIPE_SHADER_CAP_PREFERRED_IR: - return PIPE_SHADER_IR_TGSI; - } -Index: mesa-11.0.3/src/gallium/drivers/r600/r600_pipe.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/r600/r600_pipe.c -+++ mesa-11.0.3/src/gallium/drivers/r600/r600_pipe.c -@@ -504,6 +504,12 @@ static int r600_get_shader_param(struct - case PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ /* due to a bug in the shader compiler, some loops hang -+ * if they are not unrolled, see: -+ * https://bugs.freedesktop.org/show_bug.cgi?id=86720 -+ */ -+ return 255; - } - return 0; - } -Index: mesa-11.0.3/src/gallium/drivers/radeonsi/si_pipe.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/radeonsi/si_pipe.c -+++ mesa-11.0.3/src/gallium/drivers/radeonsi/si_pipe.c -@@ -489,6 +489,8 @@ static int si_get_shader_param(struct pi - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 1; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - } - return 0; - } -Index: mesa-11.0.3/src/gallium/drivers/svga/svga_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/svga/svga_screen.c -+++ mesa-11.0.3/src/gallium/drivers/svga/svga_screen.c -@@ -383,6 +383,8 @@ static int svga_get_shader_param(struct - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - } - /* If we get here, we failed to handle a cap above */ - debug_printf("Unexpected fragment shader query %u\n", param); -@@ -441,6 +443,8 @@ static int svga_get_shader_param(struct - case PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED: - case PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE: - return 0; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - } - /* If we get here, we failed to handle a cap above */ - debug_printf("Unexpected vertex shader query %u\n", param); -Index: mesa-11.0.3/src/gallium/drivers/vc4/vc4_screen.c -=================================================================== ---- mesa-11.0.3.orig/src/gallium/drivers/vc4/vc4_screen.c -+++ mesa-11.0.3/src/gallium/drivers/vc4/vc4_screen.c -@@ -334,6 +334,8 @@ vc4_screen_get_shader_param(struct pipe_ - return VC4_MAX_TEXTURE_SAMPLERS; - case PIPE_SHADER_CAP_PREFERRED_IR: - return PIPE_SHADER_IR_TGSI; -+ case PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT: -+ return 32; - default: - fprintf(stderr, "unknown shader param %d\n", param); - return 0; -Index: mesa-11.0.3/src/gallium/include/pipe/p_defines.h -=================================================================== ---- mesa-11.0.3.orig/src/gallium/include/pipe/p_defines.h -+++ mesa-11.0.3/src/gallium/include/pipe/p_defines.h -@@ -674,7 +674,8 @@ enum pipe_shader_cap - PIPE_SHADER_CAP_TGSI_DROUND_SUPPORTED, /* all rounding modes */ - PIPE_SHADER_CAP_TGSI_DFRACEXP_DLDEXP_SUPPORTED, - PIPE_SHADER_CAP_TGSI_FMA_SUPPORTED, -- PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE -+ PIPE_SHADER_CAP_TGSI_ANY_INOUT_DECL_RANGE, -+ PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT, - }; - - /** -Index: mesa-11.0.3/src/mesa/state_tracker/st_extensions.c -=================================================================== ---- mesa-11.0.3.orig/src/mesa/state_tracker/st_extensions.c -+++ mesa-11.0.3/src/mesa/state_tracker/st_extensions.c -@@ -249,6 +249,9 @@ void st_init_limits(struct pipe_screen * - - if (options->EmitNoLoops) - options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536); -+ else -+ options->MaxUnrollIterations = screen->get_shader_param(screen, sh, -+ PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT); - - options->LowerClipDistance = true; - } diff --git a/U_i965-Remove-early-release-of-DRI2-miptree.patch b/U_i965-Remove-early-release-of-DRI2-miptree.patch deleted file mode 100644 index 7399bef..0000000 --- a/U_i965-Remove-early-release-of-DRI2-miptree.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 70e91d61fde239e8ae58148cacd4ff891126e2aa Mon Sep 17 00:00:00 2001 -From: Chris Wilson -Date: Fri, 7 Aug 2015 21:13:12 +0100 -Subject: i965: Remove early release of DRI2 miptree -References: bfo#86281 bko#349519 - -intel_update_winsys_renderbuffer_miptree() will release the existing -miptree when wrapping a new DRI2 buffer, so we can remove the early -release and so prevent a NULL mt dereference should importing the new -DRI2 name fail for any reason. (Reusing the old DRI2 name will result -in the rendering going astray, to a stale buffer, and not shown on the -screen, but it allows us to issue a warning and not crash much later in -innocent code.) - -Signed-off-by: Chris Wilson -Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86281 -Reviewed-by: Martin Peres -Reviewed-by: Chad Versace - ---- - src/mesa/drivers/dri/i965/brw_context.c | 1 - - 1 file changed, 1 deletion(-) - ---- a/src/mesa/drivers/dri/i965/brw_context.c -+++ b/src/mesa/drivers/dri/i965/brw_context.c -@@ -1412,7 +1412,6 @@ intel_process_dri2_buffer(struct brw_con - buffer->cpp, buffer->pitch); - } - -- intel_miptree_release(&rb->mt); - bo = drm_intel_bo_gem_create_from_name(brw->bufmgr, buffer_name, - buffer->name); - if (!bo) { diff --git a/mesa-11.0.3.tar.xz b/mesa-11.0.3.tar.xz deleted file mode 100644 index e792d89..0000000 --- a/mesa-11.0.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab2992eece21adc23c398720ef8c6933cb69ea42e1b2611dc09d031e17e033d6 -size 7264824 diff --git a/mesa-11.0.3.tar.xz.sig b/mesa-11.0.3.tar.xz.sig deleted file mode 100644 index 8c5e65c792499a826575c12b8a61a79abaeadd1f5bca181ea941b6d49f0ab5ee..0000000000000000000000000000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 543 zcmV+)0^t3L0vrSY0SEvF1p-zXHgNz72@vhBH?S=0Nex7R5CD@dU-z;la$7*BW zg{q2<$#?W$U0+O`J#BC&p7O8J31TZ49b2qdL_CFKWA;wa@wCo`dvWj%PUbo9>!~?m zh+FRM+lGdxWckn$>(XO%kL2u6mesqa(8d9gyfC;Ajd_L_E7wcH-c4SW@bD7-evKRj zd>ug{Q=)ud$LjvgWrW`$gjX|Vpk8*HQk{+q`N=QM)3I9Wc9(EMTV#+G~Q z%=E0FgCp&y4;{`pmnN+|Dblt*ZIpYeSGLX4n>)3J+pHt&kY{aS$Y5M5anrt)Vp@CB zGP!}azYi1efYMK&!1A*DQoy52IhR9^4G&9mVl|6_mytA=GYS5m)dra92?=UGFY4ED_`Kb>JT(X+<6l+gqDNyJ1$O`d diff --git a/mesa-11.0.4.tar.xz b/mesa-11.0.4.tar.xz new file mode 100644 index 0000000..5d3cfdb --- /dev/null +++ b/mesa-11.0.4.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40201bf7fc6fa12a6d9edfe870b41eb4dd6669154e3c42c48a96f70805f5483d +size 7267588 diff --git a/mesa-11.0.4.tar.xz.sig b/mesa-11.0.4.tar.xz.sig new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..03ae48a53d4c352e8901b6c6b3be67588963071fac90565af515763c2696a03b GIT binary patch literal 543 zcmV+)0^t3L0vrSY0SEvF1p-zqsLTKg2@vhBH?S=0Ne!|05B?%|d)^I#_m_I=$96zD z88G~*{?IdFd)UD_`nYBkC6fs{b(`(Sn=T!Yr)NF*qplg*0(X+ItRv17X{58EJP0)^ z>Jr&*%nK-^M_zSqO&Tv-_TQ^=lm9&D&;~@9_!n$gSF45-72*i8>H|OrOy}?Jo6<^+ zM~-?m>A}jpU=2U+KE=Gg+PdOCXk1s{iw98?9Y>%J!a}4UI2wo_l%hwoGP||tsW5Y# zLKB-GUW7e)gULUxXxJ<}@4`{v8r`Vd*9uQYw$04nlxJml`8}@ez|VsJjuNk5KfaH> zG>lOD}BdU$7xs(A~2b;=S zxtw9UrV{HZpwLoEJ-VzeZ*=cmw$J(74Fu~UmQ&$JMCcy?5^~RR4F^C!e=y+n=+4z& z)|+5*K8FoGO4l26CuJFFEj~OQ{)n{|yTsGm)hpgY;=^K|Pu~-$txTCRdG~GFwGLi= z2GDW{XSDi2WUkhX7s6h~r^Gp2=Bj1CvIbr>75QM`DoUtm585Nlo zDBm&Nn4j-F3%Ky)U0P-W;zKTiaRrZ;3h<~bUj=?_SNe?JZ}6;I*s-<(K+m$5?#GG7 hW@