From 97359ba5c5a6588cbfe824f6c5642d5fa8cf3d13 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 21 Jan 2020 12:00:28 +0200 Subject: [PATCH] tests: add output transform tests This goes through all output transforms with two different buffer transforms and verifies the visual output against reference images. This commit introduces a new test input image 'basic-test-card.png'. It is a small image with deliberately odd and indivisible dimensions to provoke bad assumptions about image sizes. It contains red, green and blue areas which are actually text that makes it very obvious if you have e.g. color channels swapped. It has a white thick circle to highlight aspect ratio issues, and an orange cross to show a mixed color. The white border is for contrast and a 1px wide detail. The whole design makes it clear if the image happens to be rotated or flipped in any way. The image has one pixel wide transparent border so that bilinear sampling filter near the edges of the image would produce the same colors with both Pixman- and GL-renderers which handle the out-of-image samples fundamentally differently: Pixman assumes (0, 0, 0, 0) samples outside of the image, while GL-renderer clamps sample coordinates to the edge essentially repeating the edge pixels. It would have been "easy" to create a full matrix of every output scale & transform x every buffer scale & transform, but that would have resulted in 2 renderers * 8 output transforms * 3 output scales * 8 buffer transforms * 3 buffer scales = 1152 test cases that would have all ran strictly serially because our test harness has no parallelism inside one test program. That would have been slow to run, and need a lot more reference images too. Instead, I chose to iterate separately through all output scales & transforms (this patch) and all buffer scales & transforms (next patch). This limits the number of test cases in this patch to 56, and allows the two test programs to run in parallel. I did not even pick all possible scale & transform combinations here, but just what I think is a representative sub-set to hopefully exercise all the code paths. https://gitlab.freedesktop.org/wayland/weston/issues/52 Signed-off-by: Pekka Paalanen --- tests/meson.build | 1 + tests/output-transforms-test.c | 137 ++++++++++++++++++ tests/reference/basic-test-card.png | Bin 0 -> 8347 bytes .../output_1-180_buffer_1-NORMAL-00.png | Bin 0 -> 4642 bytes .../reference/output_1-180_buffer_2-90-00.png | Bin 0 -> 4869 bytes .../output_1-270_buffer_1-NORMAL-00.png | Bin 0 -> 4783 bytes .../reference/output_1-270_buffer_2-90-00.png | Bin 0 -> 4638 bytes .../output_1-90_buffer_1-NORMAL-00.png | Bin 0 -> 4880 bytes .../reference/output_1-90_buffer_2-90-00.png | Bin 0 -> 4655 bytes ...utput_1-FLIPPED_180_buffer_1-NORMAL-00.png | Bin 0 -> 4669 bytes .../output_1-FLIPPED_180_buffer_2-90-00.png | Bin 0 -> 4884 bytes ...utput_1-FLIPPED_270_buffer_1-NORMAL-00.png | Bin 0 -> 4789 bytes .../output_1-FLIPPED_270_buffer_2-90-00.png | Bin 0 -> 4570 bytes ...output_1-FLIPPED_90_buffer_1-NORMAL-00.png | Bin 0 -> 4914 bytes .../output_1-FLIPPED_90_buffer_2-90-00.png | Bin 0 -> 4667 bytes .../output_1-FLIPPED_buffer_1-NORMAL-00.png | Bin 0 -> 4570 bytes .../output_1-FLIPPED_buffer_2-90-00.png | Bin 0 -> 4892 bytes .../output_1-NORMAL_buffer_1-NORMAL-00.png | Bin 0 -> 4655 bytes .../output_1-NORMAL_buffer_2-90-00.png | Bin 0 -> 4854 bytes .../output_2-180_buffer_1-NORMAL-00.png | Bin 0 -> 14395 bytes .../reference/output_2-180_buffer_2-90-00.png | Bin 0 -> 5270 bytes .../output_2-90_buffer_1-NORMAL-00.png | Bin 0 -> 14832 bytes .../reference/output_2-90_buffer_2-90-00.png | Bin 0 -> 5179 bytes .../output_2-FLIPPED_buffer_1-NORMAL-00.png | Bin 0 -> 14407 bytes .../output_2-FLIPPED_buffer_2-90-00.png | Bin 0 -> 5360 bytes .../output_2-NORMAL_buffer_1-NORMAL-00.png | Bin 0 -> 14482 bytes .../output_2-NORMAL_buffer_2-90-00.png | Bin 0 -> 5313 bytes ...utput_3-FLIPPED_270_buffer_1-NORMAL-00.png | Bin 0 -> 12107 bytes .../output_3-FLIPPED_270_buffer_2-90-00.png | Bin 0 -> 12541 bytes .../output_3-NORMAL_buffer_1-NORMAL-00.png | Bin 0 -> 15856 bytes .../output_3-NORMAL_buffer_2-90-00.png | Bin 0 -> 11702 bytes tests/weston-test-client-helper.c | 62 ++++++++ tests/weston-test-client-helper.h | 8 + 33 files changed, 208 insertions(+) create mode 100644 tests/output-transforms-test.c create mode 100644 tests/reference/basic-test-card.png create mode 100644 tests/reference/output_1-180_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-180_buffer_2-90-00.png create mode 100644 tests/reference/output_1-270_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-270_buffer_2-90-00.png create mode 100644 tests/reference/output_1-90_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-90_buffer_2-90-00.png create mode 100644 tests/reference/output_1-FLIPPED_180_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-FLIPPED_180_buffer_2-90-00.png create mode 100644 tests/reference/output_1-FLIPPED_270_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-FLIPPED_270_buffer_2-90-00.png create mode 100644 tests/reference/output_1-FLIPPED_90_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-FLIPPED_90_buffer_2-90-00.png create mode 100644 tests/reference/output_1-FLIPPED_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-FLIPPED_buffer_2-90-00.png create mode 100644 tests/reference/output_1-NORMAL_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_1-NORMAL_buffer_2-90-00.png create mode 100644 tests/reference/output_2-180_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_2-180_buffer_2-90-00.png create mode 100644 tests/reference/output_2-90_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_2-90_buffer_2-90-00.png create mode 100644 tests/reference/output_2-FLIPPED_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_2-FLIPPED_buffer_2-90-00.png create mode 100644 tests/reference/output_2-NORMAL_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_2-NORMAL_buffer_2-90-00.png create mode 100644 tests/reference/output_3-FLIPPED_270_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_3-FLIPPED_270_buffer_2-90-00.png create mode 100644 tests/reference/output_3-NORMAL_buffer_1-NORMAL-00.png create mode 100644 tests/reference/output_3-NORMAL_buffer_2-90-00.png diff --git a/tests/meson.build b/tests/meson.build index 87dad82e..705319c0 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -132,6 +132,7 @@ tests = [ linux_explicit_synchronization_unstable_v1_protocol_c, ], }, + { 'name': 'output-transforms', }, { 'name': 'plugin-registry', }, { 'name': 'pointer', diff --git a/tests/output-transforms-test.c b/tests/output-transforms-test.c new file mode 100644 index 00000000..3ed19e39 --- /dev/null +++ b/tests/output-transforms-test.c @@ -0,0 +1,137 @@ +/* + * Copyright © 2020 Collabora, Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include "config.h" + +#include +#include +#include + +#include "weston-test-client-helper.h" +#include "weston-test-fixture-compositor.h" + +#define TRANSFORM(x) WL_OUTPUT_TRANSFORM_ ## x, #x +#define RENDERERS(s, t) \ + { RENDERER_PIXMAN, s, TRANSFORM(t) }, \ + { RENDERER_GL, s, TRANSFORM(t) } + +struct setup_args { + enum renderer_type renderer; + int scale; + enum wl_output_transform transform; + const char *transform_name; +}; + +static const struct setup_args my_setup_args[] = { + RENDERERS(1, NORMAL), + RENDERERS(1, 90), + RENDERERS(1, 180), + RENDERERS(1, 270), + RENDERERS(1, FLIPPED), + RENDERERS(1, FLIPPED_90), + RENDERERS(1, FLIPPED_180), + RENDERERS(1, FLIPPED_270), + RENDERERS(2, NORMAL), + RENDERERS(3, NORMAL), + RENDERERS(2, 90), + RENDERERS(2, 180), + RENDERERS(2, FLIPPED), + RENDERERS(3, FLIPPED_270), +}; + +static enum test_result_code +fixture_setup(struct weston_test_harness *harness, const struct setup_args *arg) +{ + struct compositor_setup setup; + + /* The width and height are chosen to produce 324x240 framebuffer, to + * emulate keeping the video mode constant. + * This resolution is divisible by 2 and 3. + * Headless multiplies the given size by scale. + */ + + compositor_setup_defaults(&setup); + setup.renderer = arg->renderer; + setup.width = 324 / arg->scale; + setup.height = 240 / arg->scale; + setup.scale = arg->scale; + setup.transform = arg->transform; + setup.shell = SHELL_TEST_DESKTOP; + + return weston_test_harness_execute_as_client(harness, &setup); +} +DECLARE_FIXTURE_SETUP_WITH_ARG(fixture_setup, my_setup_args); + +struct buffer_args { + int scale; + enum wl_output_transform transform; + const char *transform_name; +}; + +static const struct buffer_args my_buffer_args[] = { + { 1, TRANSFORM(NORMAL) }, + { 2, TRANSFORM(90) }, +}; + +TEST_P(output_transform, my_buffer_args) +{ + const struct buffer_args *bargs = data; + const struct setup_args *oargs; + struct client *client; + bool match; + char *refname; + int ret; + + oargs = &my_setup_args[get_test_fixture_index()]; + + ret = asprintf(&refname, "output_%d-%s_buffer_%d-%s", + oargs->scale, oargs->transform_name, + bargs->scale, bargs->transform_name); + assert(ret); + + testlog("%s: %s\n", get_test_name(), refname); + + /* + * NOTE! The transform set below is a lie. + * Take that into account when analyzing screenshots. + */ + + client = create_client(); + client->surface = create_test_surface(client); + client->surface->width = 10000; /* used only for damage */ + client->surface->height = 10000; + client->surface->buffer = client_buffer_from_image_file(client, + "basic-test-card", + bargs->scale); + wl_surface_set_buffer_scale(client->surface->wl_surface, bargs->scale); + wl_surface_set_buffer_transform(client->surface->wl_surface, + bargs->transform); + move_client(client, 19, 19); + + match = verify_screen_content(client, refname, 0, NULL, 0); + assert(match); + + client_destroy(client); +} diff --git a/tests/reference/basic-test-card.png b/tests/reference/basic-test-card.png new file mode 100644 index 0000000000000000000000000000000000000000..027ca852e94d2c58ce735e6a042515a6171b1fe3 GIT binary patch literal 8347 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 G3;P%Myjjfv literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-180_buffer_1-NORMAL-00.png b/tests/reference/output_1-180_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..cd60739060c7fd950d4731ded23234190a487d0b GIT binary patch literal 4642 zcmeHLXH-*7x5kEwAfQyi0Qv&b4FTyyq$vo9G(!~vL8{VQLIiz5k)j~INsV+uF?3W) zz)+PYRYM7oKp^yDa*yl&`0oGv^WJ^d+Gl2+IeYfr^USkn&Fcro`fMy$SeTfY*zVoc zdC0_cLI-GXoI45Vy}}qh;Kl4@sISAs`1^cl#UwE?agN{9(J~LtTAM*V;0nsYZ#oQW zvqL_7$d7+9nBT*EHx|=luLa_1v_8R`RAw7^o&XcDOE7TXYk=PWH@RO6`?}d`+U}NN zNN_JmAIomR+ri>FlecL1K{h6(>4fZEErpoaxVwUaOCe21^t5wHpqD2Q%=?ES+-T() zjV%x9xj>VkK?U5O&zY=DJkU{O6%*4-W+!Ihli*Vv5osr0-R@)35k@dwHq)ye?Bb=TdgOnmv^#CGpH6Ht{?nc1B3E{wa+~hRGKTh9U)Ed3sDWM{crR< zRubUJA`*!d3Z=7Cr(l?mm)G?sU!AoKyl;MUVlD7Z*R^wZ&}hcbT37Pw>Qa~sFNgP0 zgc2$2>SG_WiUoJ#USCK^NHn|9Y@;8h*O`STfv7#8EfVVM>-+or{Tw1f#0l~jpMN1* z+S(!)dfshsZ>Q5SkLA%KG{`h2k7r1V~}wKjPxzqM}|iO`}f~m^Fu;Yid|nSSF{Y zPLY;Kq+Cr@XeGJnqcGyt$HT+J&xvQWK9-mFef#F_=9a#4;Zt3mvx^Jh7)#`bwB+1e zASmcjfSo4?M8_BggE>0pIXPKbjmKYA`$iy;Xx|nW7u5nO%d4vo?*j=#BIBb)5U;Wl z6EAgfRvD(s0&$=5Hh0zHcv)9h2lNk27L+Rs3!T^H+HL?Iyd4{}>?*PYq&bLsaqR}6 zEj@FM#F7|}kgvd$kyKv~hD45z!%jmb`vo4&rjT$zUeU;x;BunNT9>Ek%BA1`Q1 zd7P^rBL7d=c*JQf(*wWsrRFJwDUFJEA)@mXCqC0@Z@nx6#4$ z;{#ZhNlpo{9$TbA6YQ03VZ^yABGIW!i_+cQ-NRbJ*W)ZdtjQXcCem_}-RW#d{nE6B zmDO3$SbX2m)=98-u&9{WA(TQUzgbw0`OPJz&FU1j@eug{i^C};7Dz>9Zkr`J|25js zpv;KY(9n1%Xa~-6a(VTIlrGZ3%KU=S0YK}sOJqx($E0W+RRVJ(%B-9f{EGi8VNa%U z9y!N<3H;aa<-0DydamjphM$_36u2zyH1!SSA$n==o>q#K7#9)OaA=Ifo<>~YzyC~T zT^9;lM+T@rT}i5tC2)`TDdz`QRwEYHFIPKTnFLY*cMIY?C&j}{><+TX#qx+5nm=q;wJkV0 zq%!)~__>QfVr!<>=wM7?;puQ;@J4GTl(E-qCdYq6R8$u$4+(1v8i6;1xSNyQl#XiN zw^%y##)5x_8C~*{T&wv^Dlrd*`Rmj;14}tA&GUu9l43>@%N{7X zFW)@Cm!ykf_`_(W=Ez^Pe0=_Jl>kFdSpJzi%U46JS@!$)T)o5G9Y)R3a)#cx#c#{G zIYJB{=(2OoKVh0e4*#V2*lDAkYYOM~qulS^f*T@gS0T|dke5~f1LkOibqjgVG%5bY z2AN9D4GpRCxLe_%w)v>l06y_6;Qak2NP$n+FuT_&$&N|tmd&*wIVDd3Dg!xxCclUj z3_r5AzLK72XlTftij=SvdrO{0mmCDo6zBRK=a%HRdri=8Vd4WXD)t9^t|7GVk9eoDe#D#AX_}hC}MF2cDHL2GAq(F;4d=Qq`mSUFA?Ef(fGZs9E>p!-s2%rDH z_7v}V0G?O)Bu5V*wwMnoNVQdbmkvPvl#LJXX(@o94k-Zbe_aP?nw}fk*VEI}-_N$E zpW)}{2a%WOD&y?C+}c4+U~7l2NQYI?F29H8{#jh8y7u}@EVuQ9y!OQC*w{B(r_c2` zJ-_Yc;b-ij+smemsj;3KTN@jJbuIks>m--q$~S}N__ofGvTKkVPEpk!-rnoW%Nx0g z>FF?2Q_eO{DM?9r2;>jO-``({7DcJqUzzAfzq3tQ-s!@Yw8x=VZ5!kmP80o6J<2}B zmqh#3=!;iNOG?h;M<44IY!2mV)6JY=nm$CGp0f{wH&({mR33#6IiqiGU3c|+E(6iI z12Ebz$2H;h%-Q`}fVKekKE>{261Mz?sgsp6F)67)xjZ`~BXpD4H5Bg)=#dd~22j0J zdY(=>Q2uhQkx?Au-OcWaO1oxNH8pM88DYHwY;CRIc%>cvvJ0%Tq$K_5jU3A>{%e@h z($c&`Tvue?GD;+#GH1xp2LNV3KUI(yhZfa_3mPD(5JN!gF zkn+gJ#s)~teTSP$O1O%OwFxXdB6F{}xHvyQ|7R81=|!5z_g(6o&;$f74T02RvDk_V znI5tR0HUeM$twZ^+^%`ZjEoFm40Jre&b(pm?6n{f<+me#r3OA`4Ub30$9Z{pG*@3o z3UBZ1?CkFDZg2Ys1s%2h5tosX5fv3xQBjeQa3haZB!psQ2)^3d9Zu6?gqp15uau{3 z30r+Pp)oNrKmsfuKFn{J`!`|uiNck*ByV2~;#Q`IyE`a%ua{n($+lHoS}G|b^1Ck` z5~Dp`d!0Z_hqzw4bO|(=$PZNZ)TAW8jbC3b@XGe7y1`Q9Y#W{dUHk%)Rv?T>Lj(1d zpP#?&6g=jFVKHDBb+$=fULF+f(NY|>*H`^OK}qRI^Ma|ZZB}-6c3K+X!aR`(5HR(q zQUjDQ$}};Qt0qCbdw)(YT*Y} z*9N*1zAM8E_gpcYo)n@D-*Y!AH}EA4$aPM&2PU+LAEac3t{2KR92x~2YsQ6VTVL+* zQ5RQn#vA!8zYkmXTCC+!>tww^0RCNhrn1#TQN z;TFY1Nzb3qmByFxiKHCCqjLA1Hn|DX5p~Fi$J?*&?zce7yPiCh)DUho0R_mkfSd#H?y>uI2LN_m_ z(XJNCjlXJx^R6|I%ISI^b$-~ zxNy{2I?7YEw=gt>p7J!&*F`C5YDSRQ@p!b;El9VX?q<_y=ok0aRsU7zkkl{LPY-Bu zsxtyoR&BQwMjqoxDuN}UD44D7sJ~KGreY`SJ25qWOy>SVK`6wGEDka-4%v>xxaNi- z4QTwDvM++Rzx^24`TZkJa@8ZZJa&$Np9<-oNN%rInQFIwD41-a&fEH?Hv7VE#zs;Q zbu2Cp+^vf5u2d0J%v2KB(>*}6D%||lz93q*11%qedj3r0xw@7~ix56`n(uDmmb#*^ z&yeF1l0N?u*w^Yj_u63^^da+nMEHuzSsfIy({=~JQ)@ThB4Lng1Rclkzj%!v{bWWH zkHX%w(q7_&_g&u378guhkorlAym2v1U9TbqoI=>bD|u&a!-yT;gTd-+>>zbsfg^VE z_&7T|ZemTO-HmM)qFoqwjIk0Zo809bgm$D$ju2|<@=;EPq6!TG9wSpW!P*yb$7f5$ z!-b0MzopLwoq<@@$Ne29uSl2MzmZXtwU9Dnb*K8B|7lzi3iV|9`^1E5_IiK42P0_e z)4JDGVE27`rDGs)2*2BGCedBkkOIZaq3y{nBH{K+hkDtL$jS}Bd-a{zrRL)#AzF=9 z;OwO%!qq)GEF;kS8@@@@#7)rQ6$(u?C{etxxvP!5@}tU3?P-iwn zs?5d*XEJQJz{5xiCnf`=fji>og*$lVs~H=$Jbri?{RiVcm|P{(a^Pj(<@YrjqBe+p zGFs{)IjYi((l;O3BhH7!ll@is;RUfX{*9kjcBmEhs8xbobjvI>;q}1)ZIL;7mDu5D zij75~MtPRRonr$sOe}1sLTT?(ljm}j|*csTUrVchT zYsXq^EC(|7*Js`y+edIfID-DjkXBRcrFLm$4h!b0#&v{B8{&>Z^Tt4*Ea|=TK}AG_ zPz9{k9s`e^@om)PcxeK%SD>ji+i588`y!E%#u!AOWQ<+l5p=dS?C7_5V4YqE-vxpx zB^og9T9PWW|Lryi@4>Z_lg99nzzIZ(<$RLd`@ohR1J6TgB_8ylU_>6v4@n1g+!rw)>ny>jBw$h!P4&Qa~Kivx1| zW=^9Iyv@onbfW)1w;P|s5a%M^PD`^aox}N`5kC1p>HL3p+reNzS1O5mT%fNGT>3EG N(>2zqyz@BnzW|DDxuF06 literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-180_buffer_2-90-00.png b/tests/reference/output_1-180_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..8aa9a1fc2a2c5dca686931711dec8934d15a7a8b GIT binary patch literal 4869 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-90_buffer_1-NORMAL-00.png b/tests/reference/output_1-90_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..f17d21d76a333f328830d7d8373ac0f9a699d904 GIT binary patch literal 4880 zcmeHLS5(tWxBnw390Y07LvMm$fJl*Q31CF3hh8E@kd7c-s?wW)Af01SdI-HY35Y@h zNN)iI=_Q~*fB^Y&&bQ9%eYy|#;m)kJXV2O*YxdfE&+j*DV)b>k=xMoV0RW(fJ%kzp z00oq+@6lW$OTx!EP4aNXR$B`SkpAv}wHK!W0CO)4dhbvF+#Ou7{&mNE>OHvL&{arV z{yolnwg`@{2h2XKYn6L#lBq}rILJ-Ke-mfxg{9pFU)x_+am> z<%?V&c8|%bw(W@zt+Cohj8ZEIR~p;LP!alw2x*8k7)R)Xa&QIYg+yib;fq(3H==h# z@=unv{nXD7M(@uID$oGk1@6_{05EemlR`0En$q)<&6P!}Zn~~N-f)Jo&_Dn&Mh8Hb z9|Pq6|APOUad@NlHc?skoy&NVe#V9ChOGj{Q(ub6tQe|$!ykDBv<=?%x?k$bUA)cx zKc_SHE_I?LVrgk9H#hg)yX)oSTDpFEX_4W0v ztgKH+5-`IjPezYzVKA7D%?GT*=$6>I={-j4z>QB+Q&SNU5zQpFu(!Quw}Y@jQCgjj z@+fB3$hOyUB*#_yVr?&PZ*Lo$9}`Fme9q5O2?>b?cbvJY>D1hu$|36HqtND%WNn<%VxhH9ou#xYDS`54@O<@kV<^OIO>FGPuwOT$)c?AXV zCr@7gcBApbBx53CJC3V^taILFWU#TamePW)TIxd1Pa{PF=03lso7wwUV8^d{xs?%GgdQp!aM!v>5$ZRo zIZ`OfR5wW;o@;thNV3(|*0!?~+G>!Kmv5-6!wl1fd45*G#CpUhcQ}2|iu?d!@yoGl zTwz_1Jw+K?T2^fKR3eeja1BJ`cbS={mX@I0GK$+hDwqMd^!!QQR=3??QnA>TaNJ23 zcb3E{O1_>YD5+46(!{{v!=~L6xhwpV(hRjS_qNq4cqx1dxfRKIfBHOn6i2c(F=5|| z!s_Rh$pALt0hz4H%qbNeDoN9bG^@1TJLO-r{d|3E+^6WqafDJ>7-L_EqGO|9uUa8# z4}4B*zOS>q&TdT_C&R-TyRwp!se)_N=AVfaG*>Zr$b$c5x}n3o=Zx&H(&(5Gu0#Wu z!zhvNl@S;N#6psd)O&PvRNDHBZ&|K3Ycf|!?Xl6nUJw}u5bKX$^>V({yYk zoLUr8;=f*$pE!KuS<8V4KmT*Ql#7y)Ekb7Wp-1GL#g8$hhVs|=weH?3 zkfts`6dN79wdC8H_$5|($Xs<#Q7bDetLzIE(iuQf31KGi>lGSbV(bmr1zy>63Lxq` zWpKx(Tf6(QuF9ZmBxy%``^UljFIF8ttP;oGbtWXxku=DV*SSM+|87YFzzqT&z#r@B zIpV4~%l?V-n|>PUahQ*@v&7#~wUQp%qo`w+5bCP5Y+mYYa=>y;(C2(mGO`1@@00f{ z`)s}=A;z7h#KmoJ@&&1>%;Rst{~F6HD|a_G_QB$klJ)}i(Nf!ZKhIv!`T6tbZf=L*Z-axkZr-$;tg5MzCH>JAQ$j{S zmau!7w!EteqoND!CoDCc>I0^OLRv}3e7UjDH)rkZZ0pSl+tbT%#Et$GAuZFf%ZyYQ zH0b<|HDSuqq_VOye+H@A*SvwmKYq1}C@pnz7L#x3;D05QLmx(c$hlEY`@! z1!d8=yFFby)38aFTNB9NU^2&KExQtd53vE6t@B(K*^d6lRr8s5i2Z8m>FH%@J32Y? zR&D+UX}{gd#{>75ddc$>c8NGcGc(TPK?*h|qRXm;b`N?fPL&C+%u>JNYi~^Iact4) z9~emHQ7)3OY;?D>u&@X_w|VyLnVXwinVl>XIpP&lCqx!bif^)4o^ zt`(cCSmW|Ttil2rQD#3ph+b9xbVN?gHIU+8o2^HsC{*7-Ryd`=K_FK;nH5@ET1rut zLxY12)2{zz6Ys2~#*ZIAR#go<)SfKp@tVNlaDDx%Dz-~+t_!%WabKNpT81`ns(L_T zUQKxDL~i5tlnuf=v$L}i2*ieSig0Opd3kMZZDCw6p`zT>E(+3arK%Hy9Ptco zgxQy=R;|9lryIpY0^Xz@-`(e2Z;qTG=Bo@<6c-oQ)G$we>tZqHdHTl?cMr{v%>^B< zFkI-!3NgW&@I_s9k|eaUvO=atF}?gheO`bQ5I4x$<42F~r-nl+xR<; zflOs%o89xsn+~r9kl#zVQr$2g#{%szlXUH3V~|APF28A>gSL8VVF8Clwnv<@o2NA) za91MYzHP-*T{a)hAI9gVcm_N~odS^LK>x_K8fuMZ=$}}lTTMp{-e64GHq=A~e1bQ9 zlFhZFe4el~r+E!hJwmnc3A@hL`prZKq ziT^ohx@EN|+WK~{`X>bu8l~l7k}3?!RL;=ap(3EH3-%oa*zPs)W*ut7W6k$#bRE4G z-1xwM&OH#_8q{!Q?GmJ&l-80Ac0SmROi5bHgSV+!uXlJ`dxY5Ub6u{=?3TkIE*LBo zlFMn+zw7xd)un}8+LN+GSG<+v$S9+Y{7M(eCd+vPpe8TOmk}4-7wEHQ9(kv#8EjMXGi?m3e8Ji!8eMzt+PWHNUbuH0M3f20pH?+12Kf;&Q;9!cOt*%LGIVrK=}?-2%z3l))KAwzlV@o|>I`j4_&mb4-@Fjc>vNTP zO3>F}xxL^^Z@^OMiX0WAc3nnWjg*+&n#WLwyrh_@HfytZPH(ZVa0xrObMu3+y^qf_ zYf-u&?t-(Uct#V#6u`HF8s19U&gL=R_dHt<2#+)2UUN70GJ3_;%(3{yO z9vNUbVv^L>x$xdzu#A`Uq#!(8B=EcuPjHVr8QDk(;Y)iSBbRBi-t#bTkb{g+-Av{4 z+tE6rf~QFI5BPC7t|R)!bjiJWO(kpn^mW@`*a^ox_{5bC?=a7v28Ezt=o`{f)VKJV zRQyEp(Zx*enP95~aG$eW+Aleg>3jVCzC{np`a!M6b$Cp&7-ILkfo6LD;Lt%-G{+8z zzo%LW8)A|=?|=M5xUkx5yv)K~fk{e^BO&7H`xU>SAhWR>>!X;Pz5~|8?ea@|F-Do8 z8(z50-Fa@l0%j%~IgXg;Q(NtdO6KDWq!jJf8(oNri@8vP;SC>K;grR7qS2xlYZfDMv34Ft$pwn@OU?L^dw}s2R<2 zmM79utK`=^{I1>KKfJ1Xo)pmLG~u%wlHga0eogkiAURoqraSt<1JvPBgZfb>Y7evL z>HG4a4A_-Vrneq02?yG2SXYJ9VqqdzU|r31duhN0 zQNYczO2yYhu45|kHVpNJj>uWk9nB1u-gDtp%s|dHEKkqHlTt4Y;EFY$!Om zT&E~q^a;9sLo1{?(5LRkyk~QWv~<-XPE%M#=w_ka2ux5`>RUs_@zuuK*^}Pnufgeb z<(TAGlLy0TG!T_cQ!5BOW92;xPV#*I_11v3#=b(Ixjd+T2lNMMQjM=T~iyy=Rcz)JBtn>tPvbPcus~1I2Uz| z1Cw8#TgUK~AIA6k_QbWr^x3wj@5D=Hz>$`mUDv379R(kbL!eM7IwX`QzecU=b;P%n zfcP7g@d9c{w+fmq_)K zM84qQbTnEW_V8;`?Dwk?KYjV|c!rO0>slSEXu&Q@?PcjukLjAjloaSo^a^uKYQh%} zQDN7(r1|Tta@&XUbad|+t_`-NaVk=W6dPz$_!qv&RDfzSe=q&~xpQYr2*C%o$Y5b_ z6qndMotoOh;W`=ozqn2w;;H8!0=JyzDA>v;SqygalskG`g5b{XI9io&fHY+yx`Lfb z@N{oJ47)H-98nAyv;u}L-@5D2V>@U8syE+|rJLgT3jOr!kQ{Eh#qeHX40j>IL5c!! za{{eOz(#zd0ckC+=o9$v{P;imXWkroAb~2--q@4C!GD{^NqNC^TOJ6z;+akVzxkze a!N-kUKUcm;>n4A30Wb|+XyyH<5&r=JBP<*M literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-90_buffer_2-90-00.png b/tests/reference/output_1-90_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bb62c8eed8ac8584595afecc791c53f78f9c17 GIT binary patch literal 4655 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-FLIPPED_180_buffer_2-90-00.png b/tests/reference/output_1-FLIPPED_180_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..381ef746671be79dd6a8f3ff46d90bac4c4ffa6d GIT binary patch literal 4884 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-FLIPPED_270_buffer_1-NORMAL-00.png b/tests/reference/output_1-FLIPPED_270_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..91c5cdb925841c6db739bbc15112f2ef8908f34f GIT binary patch literal 4789 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 Z(J`64iF3utvA};Qkby1)T&?XK`!C&;6Sn{W literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-FLIPPED_270_buffer_2-90-00.png b/tests/reference/output_1-FLIPPED_270_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..15333fc17098aa9ef78ab5665d0b195871d5ef20 GIT binary patch literal 4570 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 PV1U+ReYF}D`S!dmQoqg?dU)R|Ob>Gs2=d{>q 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 Dc+|Ba literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-FLIPPED_buffer_2-90-00.png b/tests/reference/output_1-FLIPPED_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..0e32a86a4fc4561d11a05a4df10d10794fb53c70 GIT binary patch literal 4892 zcmeHLS6EX`w+0bKntVzN5NU!)kseBD5+qUt=}kaN=v{hA1S!%Lq)8Kz-kWrysG$>z zbSZ+gP$DgWB=T>+^PQXj;y*X%+?~CjnLT^Y%vv+=TI*f&?AV7oa5`!>YBDl1I*t2k z`ebC}YC!uZ)diqFeix?>JTBR4!PUsl|J-jnOH#?mu8nG_-8Br%*_jV}$mp1N`De*` zF6f0GcVnpUOj$3N4-9W=!MC;^EYoh9IOeYg*SW|qa0^CI@a*$^>Nq+iiC=mh9d2Xw;dJ%v_U}yO zM$j*KnsxixW=VUi2)1*WjO*lfdONV*tC66mRR0@g!iR-y=_Mh#KfOJ&h~b?0R}DH| z3^uYP>(Q!3C9KC7b}CQbK>qwg9w=f0Yh3x$z6k|pr}5>xdL6zel2N#HXS6?EjSz#?`aI{cb4xbgF(>|R z=Bz*bg{W{g;~r$FR0q>zrWewLEaO`jk-f1?nw-;Utr?K-S6JJ+SDw%f7{%;kFq=m`$-5>u^0jy*Ol85P6q z(sX-XzC6&=vzQpCX;HUalB}?Q*q_EpPiK^n95RLK#aaHDd{m8ps*=fVN+*%NIF<3% zke`kAI(<)2L(nU6%(M^%1?bZ!(fv@>`@Pu7%02nPgu1;gyiOSX+|M}Q(TQb0Z1__# zn3pSaf`IKe9lMDbX~xM_y?iCrdiL&d%y zek0Vd^-f@v29h1(NQzV*q#=3$$zUabJ^ zn5vLd0`n@`7n8{&JR`TT^s9Tr;Z4imltk^P2wA(D{T^-O^W2Au85#L$HqQwD{6OY4B)T3DJ7<#f$1B# zH%Rlm$!e}mGL@6to?YHe3TH=CQ&p3GY(rZWCL!}xh^2&x@y%1mBVt32Dx&Mi!tefI zT-B}aYr~b(!K!x8n-)l)by4A{$5`6CqIxxs3Avyfd9zopN)YybdX2u8)&_K>ReqBUIYGtSo_vBIcaDSM}|fV-w0 ze5NqYIUxd$1PRC@Ao*=Uk~wudE`C%!;uyk_lJ>ERFc3u>tcdOF?eq9~wj250SNb;_ z<#vv@1AhOIk~s;p=u*iHkH9-iMg8?xoqX<=#6%01uZ1uZ42F6?6N=9<02RdxMrqnS z9|xrlJ<}k}^@QOUtr;Asg0U`AH9enM8L6`cUT^zjOy8N4SPBaEf=L!Ko_Tw6*kd%Y zt}@EN{Yq?*S#$6)jLG4VWAvM29xOX!oKkjGX~}xl)>M8gva__L1nVFvz$mJIkJ2{& zZK2)%BwFazg03jdMSuaU5{w5}Lr_kor*jqkLlHkejxg8>t4nn4SjWBS;UKh=Ry2+dn0)16aCl1TrOiEy?`8WE3)$sn_fgFxXXcXKb)MW! zmG)^9(Xp{L!+EcN|5Zb|#BJYta2a-}JF!<1*=J#ph)bITr%q+ml*(}plF@j5I~@vJ ze+O9x9mPeKsq26}I!U7v#?tKFw6$X2chA<^B|R!?LrFLvrWN|(Eb`|nng3Nj$VrY| z!${4^Hl;jx#5{B2!_v^m;J_6js<*GKzjeb%P>RED(D}NE%*Ao%_A)84fQO2q3=VI& zc3;U$z_%J>Q)MW7GJ9jSLBmm>1!Ta+QSMFtq|fJ9$B|S(RyaJFVtgq#`(4*v5#2ar zUOXqQ;bxb`F9C-Vv}~5#OU~$@e;{MM*jdWyjH#Z5);rwH5_fR5$(4IwcisS3tnofD z(*F|;v#dp%jdK*6;p2oC@H8zmtj|Xq$VJ7XJoZkp6#?@Mj2RoJf{D|iLCM>M1MlmU zl$4vBn{{<{3Rw0;^-ilA;|h?SfBU=}Bsn1=Q@eO~cQ-mZy1!qOvw2k-h=ROvLENO5 zKZImh>y8p5nxPht%)lRGA)`YkEH83%Elo{Z!p;aA8?By}lTK1>i5Mp-kLg-&K0d_x zZ<1%{(PWyCiJ+jMi>qtrT;nNgD$6@hS_^u8OvIq)H~9G^xaB>aY7Zg zalJ2j!@|NqAW+xMAnG1(paHzXlQ{M|n<;GoPWODL*Y53>fzsP}x7xjACq&YMS6&M)k;jwE=bHLHO+B!us1$~NcL>azcD!@-FyUdet1DvMor*GSD z%0M7Dp#Iy$(}Nq#n<;5&ekVV_H#RoTpydO0zbOPU-xL2GgumMBJxuExsaQrGqL0uv zVmFu&%F}OUwp2a{ttc;d@lSccKR#Lr57?P)n!YKC8O~QmyG~UX!joTX^Uu`y`1q8U zmov{5!~hocZDe|Fcdi#wGiviI5e8`*&*gvOGs!2I=BxT~tFpaHvwo<>0J=I);MUJVY{ ziWwqO0z)y%Ph`>izKAJbS7$)nzE?!d=ISP=?x2#BuCDI!8Bq+#RZerH$GzrtX`sB7 zuXAe_ry~WhdW!ATTe`niH-aIleZKoYG@NOAykqFW`*>r32>8lP_r9`l_hqQ&S33=b35LvH@%@P>EU=nF;$ zW+>G1lAqnq?ZhBkzsEgT(*9^*AGID86*V?r|LMD||F-Fy0l=1-pTrgGUahorcdIHB zlEo;%TUK8)(buYXA$)H4mG4^3zoH_nwP)EZtmO_LqbAZF7}TU1ep? zc@m+Kz_d2j)vD`|0>`#5-tqIlu4a3DN?^Z9Lrrb}Y#Q)DErS9#*y!jelH(FAGn`)M zi&^k$Lw(Qd-0B#-PL|?x#r2LY6x$5X~*yGZdP~uYd?XuQV%aIr4;Tx~LcGwM{Q9bg3N;HOZNY|2a4?jze|E zq0G($+u58)!JWQ!RaNduNQLa#rlr@!kbUNvf3!z1TA1}Z4Ew`gDKWXlZQX7)c!Z@j zlc*o+i`%2@rhTWzB=pvL40prG2S{*`AcGBMXRxf!`MeY@aE^_Qk^Hbt0M(%HYigSJ z^B}TQnO0~3ccq`AtrfMZrBd7uad-evf6z2c_zaqFqj=qpe~^Dad&nWtA-Dy~&22-V zi*3OA6}?;UJE)PfP*sia9d(0XAc>7&^Sy`ExnOS(Xh>(zww6x#fUi2wI@7}#A0i9cqiuA!sp|T_F zilHa9hfUIN1&j?1PwG&Q952Z$pcEgtyYGC7XED&%FE$?=8`IR%qBv%)9UIf1p>e%q z)v>Y2QqMc660;>OrK#AX#;@H^U$xq7kt6HPBPVC}>t^k<%U9DgGA=KZ=PF=16#^g5 z^29C2UcW_bXX=opk9c-VG>K+l8PZkO8Srtz`p*55q!t4clZ=-yx!s-J-RVAW52vRy z&uF>ewzeFV3)w}JC<2%2Bz8vdJDupC0szen4rEhd24USk)JKmO@_ z79a5^RucOQl<(|bD%;=p*}Ttc=hl-177-Ca29Z%=4}b;`mM&TM@5+c0sw#Z5dg(F98RU&gQVq7T>~zl$Dhg6dn=c9P-u|16L9iLkK4%#MbHQX*_P|$+RQ|*iv*F z9TehI4_}fkmhu_PKSgI|XNT;5Yn|C~c6J6rndQ!-pI%*#fKNoxu(-ImeB+aok(o+G zc03z(qoU7Ca5yV1FBcRQ#m*aR^8>hPA>XY1#86me$H z32*Sur2DCYL?YpExSrn2?J$-*3fKb$<@GxONWiC7S69j9b+73brzWSS z2BKR!dE;!u!br1Ct{Gf?v^JMAMI;Y4Gmer%^AO}t*ud9roXrxTn`+oKX3>N z2^km|SW?*4$MPL);qd`Q~y8qDt literal 0 HcmV?d00001 diff --git a/tests/reference/output_1-NORMAL_buffer_1-NORMAL-00.png b/tests/reference/output_1-NORMAL_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..83ff8859153e7dad2e258e47adfb553789895eec GIT binary patch literal 4655 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_2-180_buffer_2-90-00.png b/tests/reference/output_2-180_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..edd425e569c24d9475d72431a9fe9675e355eb11 GIT binary patch literal 5270 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_2-90_buffer_1-NORMAL-00.png b/tests/reference/output_2-90_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..127cd516ece5479a9f169e718dc5dd3e0fc11bf8 GIT binary patch literal 14832 zcmdseg;$hO_w_?asW6~Y!Z375mvl&%grt{h97ruwJVAf*hKKI_|oPGA*=T5lBQ-!+(lmrk2-BnVQ)q)@lS@8NV9wzvG z@*zSV{J}9-QILgh{{7^(79~Ou0#cHd*7nTYX*F;$R7l=y)?I^hV=-U^rd7A0;~iH;*tOM~RX@AutZ=b|FOt;Sf9{~4Rq=)CIxD>~<9>D8_;x7W_i`LzGb zZT6erWbLQJH;9?w%f8TwEV-@0wYAM@L7ItQc9kdWVN^&B$@q zGhK$rzsgXx;88zOW(|ft!Ip+$2W~aREWhhtt*EHT%F0?;SeTrgoSmKR>guYit5YsG zc)GVsbF)w5zaMG(tw!(WqW$K&e`9^`u$8~6>+>HBS45!=6G^xwZ<;F8#re6sfzDRR@h+9G5ea>k z5;-(9G)q5zJU1{f(AQ5*OH0eh$jHfAT3V8vdpv0*_$hTb!BZ@IcwIqW{^e4e-_}$` zczF2x_wVfmAIA3l!p1nRFpJ{pRvnM(GEY-2)L=1cbhdi+@A|00QfzSb`}gm)HDs%a zzkU zO1Roif1`&bO^uAiZaPszxEyQa=5y{$iAn`peU{G7&Ih%_63rfaChs*AnG*kU<~xZ_ zh?cfIXD97P);1b(ru56v#e27A_gR)s+7@WBCMj2LWus^K_wIv%z~T!F3z?XinVFcn zySpomn+xB$j4q$Yp!k0*Ejgwm9Ub@P=jR6o1`ZDo^A%zRA3x^uMy1!vMxO0xIyst~ z|4vkwX!JSRjehu;Amj@^-=uA*k^|RS)o-utb+5L)+q6)C%ggjaD}!XKv?}M16jl$ z6q1pJj!YlPhO`KfOg8xUc#18~&4~&K9BmZky#CvXOHWU4Y-~L8Iz&|#%C!|sA4KMl zvLq=#eE87E$0tcyj@3YuEs5~kwh$o%9wipfBgRKsV2(+fySuwvTm6>2)%vOqeiUy< zof+7c9mu;onJCslR@wXJ`lQ|e+GyG_B>PolT31J}v}+Kf1akBtii}*Hei@>Q!}xTjoERq-4mr{z zA0#e;*{Dli9qwK4?&09#PM+6NOT&a>o|R2%vzUMjWEYrOPEJmCHdup1Uq&fxA;E}K zk1c6xdOGy&zpK)uwG`8hES#z;`ibr9Qt!g<^F{ONsn9N zZ{A1bbt%|z4ika`4>7R&a(8Nbu@W55V%V7c&o_!B&qrgyBrK|D_NPT-Y8x9HKYu`RjjruQkm?FY! zp5eK6pP|16Puctth|u%vi#-~eM4du!7Z(?I_v2q*L;bI|Ovy+|zppx1==v0i*zi-@ z+1V9n*}QzY3;s*vf4T3o*ZNpO0^nP0pJ&-=c`{bG?349|uPUFrqHxHSuyKYW$|Ycv zHwn9!b47JO-rKeSY?e6xlTRdZ`T~V2HdZBl;+fsh+}!->6F*qZ;NvARuY;A&H@F}x ztR+hGv88jJm$$aIE-o&fglUz0s;d(K>lPE6A0M|cm>SKheRE2M9SAeGv+H*=Hl`t! z2ai|^BFuYQ=V-Z8a%a)^z?VcjI_0}@Y*Z9gE$m3l(cjoVsVM!#HW(qXyJ-Y=5ADyUXlR%YkvdAhsMyz1;_ zW1|!)>6A*UAwf8vo#T>1z*GKae+RrDe+Aa_J z2L}g{wI!Q8T(CNCQ+@r@RWAR=rlxar&dogkpuM1v_CSOsuh(*SG`J)$e-W*VX%BAT zH>ApCWm@5rrrU%?^EPr|C~8X!Vg%LCZYSmsF{?j)T1p>1iaJDDB|T>*i|kT}g#L_UvQhrMq3``_t{$M?*s~X5^)d7k|zTCLK+i-FK`dFAT)s)9X23B%SthQ?RB1-S@VMX)&{*hjun~iBMsrM;b#@PpwKU85)l$UPZkgsP8(it zZ@4MnY;b9uZ}mB$>d{2X{E%d42Tx5m+3LDe@%4bVQvIY#wPyA?WSP}#lR;D_nJjuk zj}jApNm}XK0?0uH(+tNjbJ>H9v9U2n|BE@vs||JQ1RhG&&i2KCxyHSlt3JWY3%=Av z;hinVmoHympRGsB)5Bwnv`UgMhT|1w)#@FW+Kf3<>iqTf!S3>4{#!2&6wpD}Yw_Y3 zQu+WD56UN@NPHIh!Yp}(1qBPo+IJ32O0``;LT^>I0|XkMkEC<>xC{$gq4_?Vm1B`Mc67wVP`4h_9V4?doon@gef@FSV9H}~ruYI?4G%}*WPAZz- zsoNC`0D_1{!uMdM50px|9p-jcwsw%$7b|^(o0~*BTV8n^$`hUh(i3G0dAMyS*YC`W(y$j|I3B z6&+pj=6cCTo0`0Q(l#!Q1OG{JCTd{tJAa+6|O&)%pavos~;RtdIuqHxq z-MRCr{DdGVch>%;y}g*vvHk1UZMtQx%NahQ6Sj3{XJ@_={vbWBudh-3-a@s08utXb zxw(aeW_E+$t{sfvo3Gh~Eq4FGmRCqkvKEUOkYCa8XK%R9$=z4P444f~yGh)?Gi4oI zD|JoME4XDeR}TaNxSm%g8&59)_6$nAzP`Sp;q4>g*KXHdW@ctyUS2O=bQ*3SH%;ZQedU zwX^mjSubt;7wiR-=$8PCo|%r@yhN|9t$qLgy|-6UBugS4=UGvf&ch#-m7KS7jBuYa|xtz!xT71WO% zw(5t`Z=F|eyQxYH?0bADtpjupROCw2_SYmdT7z<6@()>~7A*Hg2iUj~uSko}L&~pp zrfAyr*=P`cfBR)Q^@TrGAsp+VsGeoLDwBT|#O%z+Ek;Xu=|rVqY7;3jRE=aqx_fkBv3s5kVRuetKi=}4yg3cdFBPdS%U)e}3TvF+S zY99KnC8~7{dCpVOl|2j?_wDLQzcMVG67A9g;+{Zb69r^|?~nR!7ftI8zL-wW)9V z{@s$452$S3-#jZ$_QGDexp$F-gY3EZ49|07Rx%axN8Piibhd3z+=xVRC3QIVc2Cvi zU6cTnDh0UWlk0nZszj(@=_~BwW2kbE!6=?w5XcaY6(k?Oh^kg($UB#$^3(QP5H%dw z*^P0jlt@cFjF~jL|0`P{9@1pCB&W8@liwvd^O0TJnzV%?1Jim=?~*=5LI_*g3gq`F zp2_i+RXyDu6}S4-$=!)jh1eTQ{*>TXkp?0wFBM&2gYc-OpC-hfsuAK5QFQ7MOjce) zsCS$^!*bv0C31u-zJa!2+&sJDSX;;9TYfCucR_qlU;#=M^Q=c z30)_S0+<9f0qzeRsa&X6(q^2ME8~3w&Z7}zCnzbx2*uiW4(n@*diN*K%Ir?zI_O6jn(|n63?Q| zzf-)IrPG)F4URW8Jr)MKOo=w@zJ=d>CqiXiNH^hvVF8=+r8o8R63sTQ3i=R8q7R)4aLFCdQgWLUBTx z9NcHJvmduzwLVgp>-(dTF)Y=cI+2+1u?^+_Cg@YV_y4=j&t1Ot@E4`*AB=wm+oS`` zsqM;CF8C3Cmiph^AD+TeZSsfXTAU+acu~w2F0WYkreFlK{*gZ@> zA9w{Q6id!*;5%P|I6m`z4HTdT%ct#*@-GKNLqk(jQ-ENc5ox(Nf8kgI z6L?l^IlR03k~d9^vfO@dcW0*+6uUov{s6lPa0bter(NdNfq{WQdY9={9Rnr2rBESp zH|xCV^1nd{?4B~9r0nbfe@X0vI)2G$vlT5&PkR8>1LTob$$b-^vdIJBKmjZ1_x|b0 z)cs9Wx!PGHL&JacP*B~S&d9~-zk?O)metnQg0=YiwrH?WwFdAc_gU`FH`X>ZJbwJR zp{?zD_vPO#U?S}S7hruT3oy?inTF>TL%^RJ8qzJ>@xS3udGjjrY(TsN$~CFt;^aI& zIdODwFm7~aBnhWl^w!Z7iB|-C5g4bEzNfGJ{oA$KLhOeB*WU!IG;DYo9Tmku5}vQ{ zSx5XB>=zJSzklZqS(v^CP}Vi;9Uwp%4fZ}HBm_8Aot>RP&wPrZBMDzYp8=&9D|xMt zxBs*A4N!a@Za#YfpxOh`4`h4~pfYE^ZL6$2I!|hAYHENjT3YCG=n)9t_d?B8R38D! z1G467(P!`I&zz=Ii&fd{8A!cZzw57q@7P7ui!%BE~d5$D*4w!-Ye zqP%GS?!8w(H7+7vBz54%L7Z_uE56GQwJLPi*VX_fB>Lp-I&7d;4=DETVyj`$49H4vKpn$m;opguRNSfW={{1kA=FX|UnFd?dA{IEF?> zm%k&qfT?AZUh0Vc#X&V$T~Jg6f=e`ey`r*`fEECQP1{w`A(7}?SvpOY`x2)=-^2og z1-yeJ3%}sqldzqgovOC;%}A~`eIug@9aCDmdGkUjh%(J4>W=isz-Z%y)mq;xkPX9< zH!UVrz)(6qJp5EXrCXWR@N(h&Y}h{=xT!$<3=a-wts;iPp1l9db#uTadA%R&xX?5? z6!J{RT+;vg@^SmwV9w3u`gA&h9p?j}sZepXbgV(TT-`6Z4H8gs#XAZI=UcLGY{PCRsI5T8EcVwKi!M>V#JWX5w~V=v4-VMGoAXP zbfs2_s=9j7xJ}a3Qw9=+qZj0$_i=S~HHw<3DVNWWS7ZQ&ori}9*9QsJNzbFh!xiU7 z;K9E>p0&2knm<6@hfdo}%O;bPliRM(w>CCxTC1u4xmsnRZhqzrl1O>Vv=C&nT$Sdg z0%D6HL#k5~_bC)`ZqbOA4C+oy9Qpzj1F+j6M8@EcdU0OfG0^Vt7E10K0cS5YrmmJGxAKdKKs7zi2&Y@@!>mx@rl)^i+i*fWFe_&m4ek z)6E~%H#YYB`?GWJ^+_`>5qx{QB_oSxu$g(@obdaEC!HmFkhlAv2jQ4$srxI^CA)tW z79aL*a%eQH=r~7hTpPbul_{}*6%=t0v|qk_0je{9w0P1sNqO~<`PyL)v=)Ft>h%^x z+2UuXWss$yDRAa{?U`TmCiN1Sl4^sMdb+w#h2ev@K&)Ln)IQHz34c8IhD6}+<3;Bl zl%3tyN&C&!KSLYwn`htPy|Tpe{^`%3KY{6#oRR`Q3$C^G^`fGphK8m3qb-$p4QoeR z)4=7LEYkxWGTyW(g5DlUy{;ADfI5QC+ReX$0J?9_2<2U>!4}sL?tUq&;ScPBe#}l> zARcmv@a1HBw_abKxj=t*cXeBdf!|IN9vm^Opnj_it+VfGG#LyG1W>oi%gYZ>PON#; z%&UvfpPqB=i>Y7vj1)xkAVCkupwOn&|G`_c)ItN6`@l>BUPV%@o}**c!5y1fb4rt4 zW?(~q{~qz(6PU143-6dFz+@E6c(^Mu?I_ssEh&N?2>B(YMhpY%C}tU3nj3`n3?DN?}-C9b0c-0B3Nkvg{cCm2gXbD$NQ2z_}iceKj`>r6Q<6C z-i-eYdbFKPLc|*!i7Z%I=8dJlYhfUY@o0^vfpCAyl(_lli>7diPzhb>^Bz#(fgxF8 zQuTfl z7hkCf#j*&w@oSwqSPcRTdjYt^_X$FhkLDCKDI5!Sj5yb6o(xv|E$MNP39s7*`FY0p zagXa>STa*ols0pcMgpL_INz$eIY?;-yyefl8#6H*PfsVj^Yns!pVmT95P6Feqvc#} zjVH=vwR%fcq^dsqcZcc<58kGhcIu50j$u(nx^Bsfq)uK5@Q(1&f7MhR}MX1Gw0X#gYlT zn;wR`@;LN*qkrVHrD|~v=9;=6%TI=uuz+6E@BPoqLSR85PiT{rfoVTiKdJiJ_??8I zHoxwpGx>bY6731;;(txoVgKt|iQAK%!O8e;R&N)YR0Jl$*eOZG1UbuQqO;X3d6)+z2RXd|c$VvveunO*_+TVsS%ojNI_VurIS#CZ8E)hyZ zb9{6Z4cJt4w3@2wojZ3x6ZpgU#yw<av21sGqfCK&$fzLy^FpVPwFc<6I6 z5QrIi{}jtI{Q6=|7wO^~;Y*JLT9)`?2!;stX!6#%He(~HtgI}>+3hlS0)6tLBIb-i zz*-8&HxwDn=Z-s%69}d~!}f6e@g4++z`z*;>7PxN%R;tv9|3;{@~WvxL{zl-^JntS zLih9rgsQnbwj~4sQxy0>M#~Q07jC#TZd^|H7^IpI#t`PuzfbAWX4?Kypoq`T8VC#m zA(EAvN)Ctb?(OYuYzVVlf}Uft6*cN2mjNx+q1>9iE*vv%FR0V`&yN1rq#hdsxdiBX zCx5d^)fW7|B>xwNH8Mo*T@+RgDQkJ|og)Pj=v$dUMsJ{8fE;w%-0NE>chsZ7YIT$X zmI^j>b#?X0`?x`5V&94xPuT-E6`nGkeKQ`tvPp1i!o2!(OG~+4S2}li8iNLe3YfjE z3%81o$xf!j{k9f)BYYPiB z!5?FMfjZ&YBko4DO0yDIr=apiQp4Yit5T8;DN(S;y8^Q4Dr_^V#<_Lw)Mx^}Wi9XXB}e@Nz> zMPY1V`d}xX=>PVEH+KbUT9^pxeL$gj>_nn9!W#(&4S1WZTmuaC5bmMX*dJN=FBI+H zl#d5eGt)s>qzc(@dfim7!xXA`NO3)=(}yixl7o*ur(LPulekc%$Aa*&Zh z)m#^QPUB2{!!e*)ty+n+H3CUwLHyIn{j*{s9t&b4p#4#L|3qr?QTz9`s5?)$LQ6)C zw7xJSXCX(55A=*0AJwnfYQ4jmmPbca#d{_6`Qu7y^bc+h(`QQ!d}V%e;ng*v^Pvq)?B{*yG%#vfBoqh1 zi``!}QOTmeGN{(gQbwYD5&8?bk+!h z_?x^AWM1IU8Zn(15(qxepta!-9Wj?s7{N?_ag2yu_&rLDJmH~_M$y&AD?r3&Ii^N^ zbf}~E@mRbJkR}Bt2XfHv-~080-x-MGF)X-IY-^54@x75>Nm60W%~dY!8F(q*+Dq3|u7-XN zrcSh?32*#TUVi`X#_LC=riva9SbkRXz*(u<5d|*A|Kno(3 zCKcvfou$;}&pv%!~@p7_4YH(QY|2bMNDSWa~y6fj!a%q|1BaL+a{c=BOtL4-ej zFaO?)b=-KwsBB{OA4n=Oi0;-ZeU=b8H}E@S32PK-pg7c@DgE@s+%Df3MRo7y7l*uj z(cG$?ga>%xl(m&mBqmgQ&bkT3?)P%X626arC#~b%jA)I7H!)#@Q&%($>3NMf<&lit zp00Ra?=F=nv_};4M(;|o?|YC_Tga!Ui4S~N`K4IIk|{tkINjc~h8s(YK9kO)U3jp< zQ=|2*lDmv-fc+j}ZlD;3l$eO}3LhM6g~4y*WyD&ZtDd4Dr}uU`?BC>iMZ8oh7fkZ;p$q;8L5W4}C#JCr^jdxUST#=mZfX7#em?J5_>NYNa??>@gn-#NrPZj$Is zk7s*eKK@0bH{mdl5~mL*-0$UT9CMr;qy}Nb7&7i_7c@`{m5mwD?HP`!?ea4(^F}ld zbH7ekG-@d4^BwdWzHq1z+%pbRO^6uoBo!#S6^W$+snDrlatGn`vW4*izZi_F=y#y$ zqQ#k?dM_&4U}^z%m}&?6`O4vbyzRgpyjOp%G2=q7uZ#HZ9yt=7A(R=ESFi#w$g!fZ zz%T(gy&}DA9gL@=qruVrEXV+v2zxX_K|4kiLSSIWr%UlcF?#06MI!S#$UtWnQTyyyvCRWev%~5~HlZ;)O9iWd&&2w30u#hC?0l1Ki2x z?46B)VNm6}3+ay=7elwWQZe-J46@hEJQNSNd~->ig*D!i+|RNWjW|`SJMW>d{mo#W zlOEW!tl4dpcZEoG%QP6yIJq)r#mEh<-YOJ+X|Noxm|~_FaE0*Huab1ltoi&xU5vk0 zev?Mu@=tU&V^&h`0kgB-;%G5H^;fI=wGjgfH`&(gwg#91v^ZdL$>MwQ%VJKMXNZ{; z5~zv%(ODaPK_58=gOGwO#$WRqzxRm9>Rugq^X#sZl&@1wM3@vNF@%AbY8wmX;ICQ* z4~m*~$WcDO!J@j{3|qFW^5UBlym9yUd-0<5cW7yZ(c_?AjBdL4Of%JPbHd+2?;et6 z49eHdtaH#ji^ZhuRYlNk5Z{s_i8r0P)xPFT%*3NW(QIyjm7KKVJATrBbR{=!jJ~>( zi8P~mVXFKHk5s%W6kS%oU`4LSZf6|!C&ao|PNu1U=6C9SaMTlPr8lqlSw~&~j)s(U z^d*VnjW2E~KBE~4pF)%i+&YS0M79gTf)hAyd$6tO_4kj*u*eN@d&FVGn=u;f8&e0k z0)(9{Z5K8xBgP9!iPtZzo%MBYFPJduX?Ky>d4k{f@_mk~kEum<&5)!!znmSIS4#x=lxOO&a zY*bCJ4(WyrXP=+EcV2}THCbzv?>&Zig%u@MjJ&X`LSa<8cvKfeSU5t3z=^Z6@8!Qx ziyEFFD4_4;L3Z7}Q?j1MYK7-kC-p~FSmc|09d0@8^(@9q+p zcedG_X1BN6IAbXuv6cO^@01Y403Ad{&mN-~68O~aRny9jq6NkFen0AXijBn`&p4vU zLm!ArP>!LSmG>iVu#`pF%eXHfqw8vZqm8wa|0 zG9Z}YGKf6N1H-(s?jM?PMG1@F`QoHYi(Y}{CLd`z%;kmM3lWa~WL1chmj z)!cG1p$UvTI0y{3C)>BHe+rFPUd*3tkx2|9d636+u{0ic<>ReV#d|F*2ENB1T4}tW z7P7bFhklW`yg|t+52GpTo{ye5%Fu`n2x>ihzym0miu|P4om0P=SUp-b50p}`4TL2{?gxF*QVcA={1?9@K zjs~nl`B7QM)u+nj2MGF4lxT`Ohygd zRv?Q;J(W%UR{koy{zJLfVku0shX-~>n~!Owh=4Hj3g79_Qp)aHY4AdE*ax|4sf=_G zt5U!rD~pP?Ow*$=_uR*lWR6s z-OyKJMTFA*IM+Td73()Gbhoyo>RjN3Odo>P2SUvtQYlP;EZB4k<-`?A28|5wPjx=D z-_yRv+};w5y$7`lU9$L*5caOczb2zpGX(d#hlnA!W*_pR;)zH_Zil2|OogyCzeHFK zag#*xK(WPavTENWV`pku7bYXAg9_i^=cF!&P2X8gw~C%|&#_?=j^#rx->&+>Tq(*N zOuH)CwVa=9MYoIFSu1bRiPq(^`!KRnH7SMg>Q)?zPITyrQNAV+x|yc6JHXxSYgG8O;iXQ!u0Dtis)mmb zq^)%(Rlb{RYj+^ma}W(oT@mYR^lG!tQ1bpV$7mw9x~1rt;;N!Ih!4`$;hV|$w!k2s zg%xevQHw#3*QQWw;jE|I^)|^4PG=>IlUN~&msH$i4nZO?Y9!?MSa+i$al~*ieH!Re zmv7`CrG(67!mOr^k6Yx+tUfAydi1Rl1}DZ$4P*LUt;Rb9Cpfm+aZC^w-?`n#bnC*J zhfXaNe3a%GLThi|#jMf^dJYrT644@{!`3*iU-x55r8-a-?U_P7eVWS7{&&P5GgoQi zT}^>M9_B0P>0wrYj5SW-XbY`b#K4EALL{_wSRaWUy7kL!>fbAWBY)OVlSiLWqQ7bfbs-RrR8V!0)lnL9 z#Y(R<9oFd;ISY}>(Dx6Np^o@OiR3Y1O4_NT9IcLhb5f)h)eptIv*d76lcf1Eh!vGJ zQ`TaBI_17)z^^G>u3f7G=msBs4co?*4z4C&e^cN3Xq9g%mWu7>H$)u3**p1<5Ape#1*)mSUp}VP3!YH6kbsZp`Mn|XO1_euNvN65FH3LIQLqJNnkQyaKF-( z-Kloflh%bG{fOB&Vmw^~aHJJ0ORu+V&hc1FGIw~R(kD`E&EbBL7;KhQWCEJDpBKg< zJNa6;d*-9nEm`c3G}r*xzd0d|PUZwT))r|8%yo$6d z)Qr6)UeClTW+x}c4|w~o0HJ@-Qk5}io!zi@L0IRswD{tZNeYo=HJZxok7fA)0YPy(2ajbf;G^b9g0zsP{E#(l5F{iWw`P)RHoWe# z-s*^fQG5+^dD(7n#tHf6rNaP`-1ds4w&uX&?6$zB;Jq!S=wZxH)@z7SO$2@0!oCxY z-K7u^>>9aJ8N`A`wNfSyvvSre7!3)37=Zk2>%&hb2g;5{vR|3BhK(T2=gN>?;iH5STD)_D-*Mvw7}8 zo_@-3S>2$Y?dfVljyzaE?GVbZUHGrzOJPBA%$0m z&&~cVpqSy?bJ#Y`s0(&(PPJKo6Fl0ab_e6@AD$>|i)PvG5UNabo{yDzLRwYk#5nT-OZ*v0k$;8J(t?hnzkZA{g2jI%q7-x0qVorjiXu{iRK(yj&gG%gebn^h1H8W4x&ko zPtw-K4_XEzQ;o5p@Fo;z@6S(JEWJx3|3>?D5HTyi%@YOx`jNurgV9NgBh@l;bj~+zOlGd|eN2v__5S^LmREK!;>X+KK$>KA zh4E7ltv;v?O#LYaWS>5MkfX6jw^JdtwJ;u(Yfmm7#`=x(tK!4Aw>0pBsF!j)7J6dP z18yo1nb>2-(93ARm)3B*Rx5s5hmra?nHSTpMyywS-VIc7m-((UZ7jZ$VVvUJ>69%z zlnyJ9DI(=hr@>2k%-jC4UrsiFX|zH5uLF$VRJnn5wLyA>2754Nb;^x3#m|2f?H)36 zMmIhcumnpBpX3ficgq%BQ0QY$kAo7*`y=A#2$#ltalt{P= z$C`Cat&e=A@!XSt!)AbYMZ8-&z5Y!hhfFDUc498(Pj~qVq5^AX^k5wIRCQfDz=mJ) z6(=t*=-U1JCfHAizi0(~?I2B6p6shB38&V;*RNl1jva4w*=!z0e*|Cp0$pP3>0>T$ z1Z6-ZiA&wCm?0Y`M82V4UuXAe?O+*WpmImjkWF{%9Pg~lg~$Bb-R?&3=0>mYwB)Lq zKPA9+;mlnHcRg}Fh|Xo%%5n!9DAWCE`5D4865D}y^j?$Ze6hT0GC$Rvc=ukvL3rYl}1duKQ z5h)W0MUfyq2n6ZD&sxsCVUNSoZRGY|zcwoX)i^ zx{1<}vs~8&c22VyUhFTs2pXR@Y9uqr2Je>dHsS+{FDy=Z25SU+)#N=EwA+m@Y+RnI z=wHFzsqyXm(#79s_m)Jex)zjtD<3H>qzih4Jgp5$-D!x0n~9{LZ(oNHh%n5M)R)xD zp)0hp=^^u#K+K-K!G^HZ6}?}Wz#?&Jnc>$iLY0paZQ72XcRyxalyU9i|DOv}lEq-D zh~|(YzDp_kJ*Qsq1q<$8CtP%Sa@yGa^OQf&J+R(~c9+W6zPc@P=>ILSt5Fz@$tKls zC4r=N%_T(VUOvH{9y{^~k#iI{j}ENpTbn4Tm8 zyjWBOKseYQB?dPjht4FQ_A0!-VxjcZTE-x?q0Z{+Y4TtJgxnI1AV-u7XZ&e<^y9?H z$TUq&GY7A2A9)G-c@7-cV2?DU#^L12!xVS2SBv)iu@>?MDAdXlB$$}^AvX4X3HNs4 zKw;HT!-XPxfuIOYR>4B~6MKCWpY+H{aBG=j-oAy1`koJ$=Wz05->lIjOQmErLblxf z;FRb7^_`@}95b@PbSHR7_H6MKh#dFBg)BbZ0ZfkLAP+x^Vw4VX!EEbk_4jTVx zZ^utF$C|}I+~%o3K{sspp%I41`gbk4)EVPuMVh{Ir&%^4>q3I~ zEF#aoI@C~&Ko5VxX|3tP2JKyBA31Z3-0o=gaZ*AnGYo?Hxc~}rtOwA|BQHZcmN{1H zDPrW>Ujbx4{UlJXR`~lpamyEC*Wjt*53Z2WOf{UP0Z|ik;AZ&U6Ba80z`6V{rCW6Y z51)oXoWfMNBpgpHt)T@J^OoD8{r-U>8T3GjANuW@&xM{z6uubPweVre9~d6plpVXfTul%j*FSxH1(OXzPZhL9P+dRuo9oi#n-{%|D_+a#e^*ebe_%X35&)Jr!2B*gf8 zEoRi1k>fgz00*4M$PfL3K&V|2=+qT{=-TV!(jyek-YD(Nm(habRO@5?)fd>54?b{b ztoOfNqi=5fNnVHaY#N*Wt8iPxFy(GYavx`@gqB!_gCz&upD02`Re4kew54Q+*TrqQ zbCTCJ6Z%#bv|+AG(?hK~({VF|ka4YRI#?BskD*q81c{dF4XW`KGKJq>XEs2=pR$K4 zU5d2fjul?`(#jtr&emn#h)Rx~(kEnRrZ5doBa`@q$VG$2Xj3-{srVP?%sG5dAtbEB zra;typI_DI+OM-w)g|!42>Rb8PD$8H$AS8haBR$Z?^`ya7C(YOj8a6^?0tvbP=iEg z`Q}037`@~x)^5`A3or;i88`>ip4YJJ^`Br{D_KvEz9Qc@sF%|zqqAdgZn@cH!jpI3 z_!mr6Qwj_}*_9g<6ry)AnUj$Hv&ow0dmsZ&9rP}jW!xO--q;w&gcs(6Gn^dx=!v89T~5hNkj%f`H@~-CfAlXHxw1(gxA63jzRymF-db z#y`p6Z=KK8T-#Qmja{iu1Ww1Nz?Q9=&;v?Gj-&Ip))^T74NBylLA!B*1|VM0xeXJB z>f43o7?Lp2g4Z-%v1S|ARy_WeGhOxizBgFa)R!_`bk7TjP-E`TCM=uv3hh{|(oW=D zFYuPEEFSwt#<}NvrB`zgvDvJ;tU?sRyi@ z{G1%8SdWZOeG*jMo+(xtgi}%9t==26isPe+`}AB-4}PfgIeYpGNnUvL4>tevV(g6C zX2~$Ond@ZO+qXImo!~YX#XObcz~`JGJguikt9fVZlQgxBnb&dG4uD|d)5bay=R-Wd zxHyV;x|82xwHGc7f|Lh>)xJd-s;+9<5kLCEMoX60A^6w=OH@RUtsi@RMws zF<)MJBKF))aB*HnEw)hDizO9aN2YJL%k|$s3(DSom20)SKWz2>8dK0CEZmExus|u~ zKSQiClA)Lx9K!PIAuNxaWCH3YQ6}9&@u{_LJM#zsb)laJYUnjsd<*}8of}zPd_M2} z`{PASYDFQW$ZPht0~byl1;(^Ud3t#Pd$Tpb5|=}GzBh&{P`~|U&Ksa`G@iBRGJz0` z^~W&9iinN7&ZJTsd@z^_DeLIaC*x6IeC@qaq*mmn+rC_MzNoWIieONWeLwNmTJ+X9 zClL*cM;+J^uuVH&459BWvDy{EiB|%E&-LaQ(^ntN zcE1AGO~&l~U43qn1(nxs^3pF5yK)uoJz^a0*bmw!Mhf=z0-m0pfLfnn&^Ho^@80KM z39OYGQ65ydcJlqO!dgW>_Hn;|N-N@odcX{q|Ihx@c{m(j*j$dW!bpZjAOsq{8%SPPYfEoaPvo1r_yc4-S5?2f))-AyruRHzlulfGtyX^D%trC;T-TOvc^jED0K;r z&E-+fkJMIfe5yGDJ=F~P+@l`u=RJgDPrqcxLCjL)_ir57pYvcmurw{UdiyXf#i z`E&XS2&+1j)kbZtvIyl(n_?B=G3cg=$LeIo8gl+9sySz)FT!xioaFWw}E1&0VO5%&qPPCNNaQ7vA}pB{1= zMjs5Xk7NVOqzc@GD)k&8RiX509l}4_%QdnbZ8AV<33Xn!-W9etWsQ+hIL{wj$Tx{u zC{i75FR{C{49#dpqNi1=w^GY3e=JpREDoL9e>PvE0XA}H{qrv+v|!EtRJ>00tS|uQ z4YV4L%5$UV=nS{DaE?r9A8C{EUf!opbPb<+VfKp&9N+z0?3x zd}ez06ge=giVDXNUp-LBJ;m>F_rf8fjyzrSnePY`cKZOH~OdbS$?MoY^^Caj$L>~N8ENSO38w$Gi z@+lznPgyelh+eA{7!}w8YMqPu8gI7lJ~5b)Xw&JPH^d_<@@JF$=C z=jhDPVbO?mG%YO#Qfp&30AWs=GMt^Ho6CEchKX~u3PXMXRp-T|!I@LYgKy?Q-A>Ne zvhA+v0L8#D{uXx3Gn}}C)V>1wUAT~(*v1^PMT(G3Fj*oFHTE)>$gfR@T4k1%xd|o1 z)3*pw!#vP9VDIff_1ZxuObm9@+PLwrP&_DdV(inlb z7;t%@Ij8>?kHGQ*!}Q{aC*ug4yd>ZQVz(2atPyzfjpj-J`Vy4&w*Qvp990%Mpv9B$NZxVeQjkOfTQ4a0D?#T~ zql9!e6X4TdP}T;g$Z|Li z_!)N~pSgy>HuY0;h~SIPRQD2_`y-a~k*^rU?}zt7AI&KffmN04c^8b7=4XCBXw}DUy>Wt?kWVnBgo+MCqocc z@Ub1vyv22z)v$5$g~L`=AyvcrKwY48bx$oQXB*NVEVD!EpFh_ayGe@i^vLv6t!mrH z5Kl_Uy|&<@Ml>1LF@cjBWhZ+%upsnZ2JEjxv;C*rO{itke8DXj5v{qVcD7&$v!%PWu z9;x&5$J#Xz0oq)~?VjN3*_1^yYk|N3Y3kR*R%d$bPlC zGR|FUT`4nfS;a>hsqwD#-tZa7UoVM5|GP*Fr8!wzN8GvGum|7#vTbX9L_=h&=KnmO zl$3O0q46TmzXrI(#3R;>5>BJA>|N$y@~cn8?TEBQ4e`e&zn3C8T6<5tB5chCKlO7b zm$z<|x74ogIo;fSfO{Z+!lhDVt?JKzeluvUk_lPB-qz~54Ie1Ytbk?x;;KF(ZKON# zUg5=R#-bFSjQ<|pRAyHP3ZxKE55KIszuL3~va9tu9h-YW3D#uN{gCt1n-4k^8Ue{&QS7sqj*FyiubnAY+ zw%k^-yN>qJuP`;2O+KWydkGWbpuxdGtYdr|bUu_yzT&*Mxy&<8hr&9$$IQ*NL+-)% z*9Y1n&p-K>$ey!ZFLlDhH7eW)DasgS!}^&02xkU;2T$qA65TE=CDI5Ko1%3ZPH=gm zDJyIhd$`5Yh$Pz&L4QXi!Tf z6d0r=vex%}K>?w3mJ_iab?M#eW22De@0Aa?>B}Wra}@dYFZl+jGX~EA@qDL13kwSg zljW+!Qa>8QjfT@_S{aQm(L}#kkjY~Ar3imqYR@t6m9QXz=PClMK>AezuRsYQ+tl06 zJ(()l+?Mey!<#f1EqRUsrQv!c6voYavwt@>AeS4xbmgi%;fvNfzR&D47H`p_-se7E z5dWPS_AcyX@vRahllLz!l*y-B)fI^;eQ@TDYoSgyNBQs)(@$AwU#3z!R-|* hvh)AfPpsAs((z`w&Z;yM=4l|n@S2$(PS^Rte*j-2`|bb$ literal 0 HcmV?d00001 diff --git a/tests/reference/output_2-FLIPPED_buffer_1-NORMAL-00.png b/tests/reference/output_2-FLIPPED_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..8c456b51434b95d4d02a7a4bceb25ed31c5b8284 GIT binary patch literal 14407 zcmdtJbyQVR_xF2%BaIwFy1S($q`TuFAl=>FjWiMh(x3+sq#J3FZUJcl1p#Rg>3WyX zGu}IXcZ~bT{r7#B4mkt&*?YyD-#OQ3t{tbTu7HC{h6#Z{aFi5fwIC2AS@8K79U1(4 z@gZIw{6Mu(QILf^{QL8+qa+Oip@AsLN@@G$9dsyp8V#o&?NPaZ6wQuPg z*m;^X#bs6Rb>@6-^u>lN1PxXy#RqTrJNy!Si8Txw#u#SXT5T%Xl=jQY*U^c1@L$mK z&~J;rc-18bqd{koBt*iOr3=xGe#AF9EL1Y_;P*ME4K3;Z`T_a1yyuDewipEb6tLrQ zw&Be#bxB(GXMJmzS5WA*bZrTHDXU5;(V{-yi?ziF~-7d=Nbf zx8sLEqNIDq^K!Gi`3;Ng@f)(9NYza{2HZdQK^E&smdT3_#w|Z8{L@d=Nd7 zGS&vyZ!2Y*-}0uC)Nx4WVMIuzkMc>mtwy$%g2kFhgIZGS&G~UeL(q?(i3oP#A_+-i z^YpijX1%tf;g$V<_ZK1#*N?4(F|w|u%_oCJMuBuAQG~fnxQeKESvQi)M|dXiJg#Bh zxpR`A((bq)I}Jha9lz*(_SIs}4gxXiqw4+aqVH>2E43U#Ya^R91bIB_&xnp-S;FjX zVR@d3L@f^ng9NdAmY8gGk+gxm;L~QlkVvXLuq{@TR@7h7vhM~Vry0G9bxwY+o@<_! z=&$t_QOabUKSZxJFmKJ#>;Hyl?>6Yh5&w{*@ zR+`EZ$%1_4>Z^?^iO(~thqcW!AVenvg(xw^iX!S@I;@UuJ{}TGlE^$0dU>9P!mY9B zl5H_)vd>smq`$>UhutBuW7X!Ls!zN~6i&oIRI*(6oHB{IPFT%Y;B0f|$J=c!DYLp_yjyg?6aw)b%oDM&v@j z-dJ7Lpv6lL_KB7#bO;h$Cw7)QuWG&!tp}0Lh(H-+f}vq=d^Wi>{!v6L|ujBmH&dOVsVHAteAk&g?yQJ-dFjJ^P_T#s4v7*eW{b)+oAb z_<}c4SFZ)in3IAHEsZ9W2FMT+4kTL9E~BSCLO$0jarXu95=1}Hut=F#z)Bza$J@Pg zJ>8)BXE+}!l(TUoh#+V@=n;zOg^DUwY~~sfDQYilTtt!#dlta7e>z{l*~hfCnxJ@{u>W3EQ&-X(UZ!O z!$zN0QXG3!OE=<2R2FHQjeb#6@OYDmDjy9SCY*qd1|NdmZNm}$+hf&%#C?FFTbX3; zgHb#p1s#Hnh=7Sm`)T2a#Vvf%OExFOv2@J|rgdr{I<3s^Kv7RD1=QmxLhBltX@I@$gZxA6y zn9oF;+6(_Lk1Z?nfG6sYFw$zT>g1gwEmL{rF>H%Z8NhBypje$(j@$_P`VWrwys*f`W5v z!;FiB((FTua4aeW8KwzED8s`cJtN#+VaT!ZgjH`UIz@>nf7o*yqzr~Hq6Z0Ta)dz@ zlM%deyhHe3-+x;z4B$`+n~f5U8bjW^izkzNgp8^yB6ITtT@J%RgKr#UkNTO@ z%)5;onYAu6`%M*D+ei?USbCpqn*nZ^8DD%sz-sz7C$vYGaJIOCbPv0i{cR)T=Cftp z)8mlQCBpU22MZrO$UdwRGZnX&s~6~cpTeRd7S{~UfM4)##;Yl-_YG!UE+_S!|Tm0i_t^0Whu=pD!7a}U$3*x zZ5}6a8PnrC&2$ z&9|vmYGLZrCCqr`Mmm~p^X8OjLMPzuBbbb;hYO!>n#bxz*Qfcy028&5Fhv*->wK@9 zRIIJJpGdsXz%>WEHHm$1jSnAx@pL_G<}3i;orTD8vwgJA0LQZ1JxP@eZ{7L(tC@HG z-$@$6OK1hYyrDk5j2TnpF{3GC5VNv}V9C7_4IkFXUhIj`VcqK^__JBd>K4s?f|tBz z<0I%n%qsgPEHR9hmp?GomqtSwy*Qac`Dy!CL6P%E6y2zAA$(E4-eC=GWZkA`AD}6) zl>d;BNVU(W^mHR26FJ{%mSDvPa9gdgx3Bf3-G{S2Aw#d%5+AF-2shC+du{O6V z_nBI5Er}&XH$)Ngfh2*?hW;9)W)ZdOGoo%DC{t1mFj7P~$+qZ(@LHw|ClaQXI;vD+ zZMu0MsVAvQM`kwdpj%J$&BPCTH;KN!5{{4rLrM~-v}P7|2}L-48_GE0=iaehGx=7j zT`mo&eIh1tn@<`o8I}k-N4`1%)*^g&;!2JI)a=D1V6=_2ypo0i1cc7*SG7HCPwrXR z*9b<#7GJAV>*bR?gz4vxDdw}aWFe=B&DEf?WMp9TZACbabL>7dNT2SIaiRI}E z^U@oS?G(aCk~r^>e|*Y5J*-O$&yrN7$$CbdIP=sl!`2Teo83H>>w_$FL%xiOdHNcjQW~d@Sk~^7!3%`%E4>{I(rah}nJ< z5JKqfavt@Hwm!u@g;w#wtVSXI{e9xtV}~pB zvGd3nI*_Q@m}|a4s1kNw=gCQ0!fugqv)OnTGJ zk7X`YF9B&XoK3gp=+BBOovvhrzqZpKK^$pd;feUHmj8NgwfvBydT#i3K`iq68`5tZ zr*7^l1KkpP-o7)M%O->1eg9EuCk!|<<^+fMG0~KT3pU+5jBX?-{PGLS0qq{FLh_P+ zm@TyrMHfk!n_M5eCDI0!VB@=;@a2L?q+J7Deb{36#*krZv81ks_x^nahklG1X@vC~ z9l9k!X#zdWvGS}-VP6Te>7r7|&uez}U$2i)(KMHm!yF{fUaDT~m_s-daSY!w7as?+ z$7_qfjmk2wSmTa%5*Zgp(bU&Rra@)_`3spACPa!5?@H@h*1=f$YE}S2n~HZandW`jgR_u?i z)mbXXoqkyc+p}>Zhnx;-R6FDxNobw=6q9T&&15SbZ_icDMpmM5tfy2;GM&`73I9U- zq~{awHX6vIp)6SNCFcIey_cDO?SuTmAnSH|^;4J78RMtYFw%OWwa}#goX+TO^8wck zLzpz-fh@cxFdDi|-De?Ft2fOp%9$jJHtqFk~7e zS+rvOC-1NIsQ!Mym27+HNuZX7cE6wuG<)?cyaGi|K^?{lg)@aJ>2?yIF)OHMlfHYz zk>v14122v(j&68Fe~XWKGwsh8d~(f&5)Wjjf?ym_DK%xCM=Q=G^G)G$;}HJuw@P+Ag<=TwMg;{4Omwrb!}1?{MVAU0|Zo}7yLXA(Kb zBh#`irLPtt+awO|=;J=WFw&9aL>T6zT=Ki+M8<1f1r~HwSFMK&-Rmif70w=&Jss+G zx!s{fJhbN>8G6%NB*-3pR7QC$ZLeM zjE6QPk*(0D>36zRI|Q`MY^FMfE4ZR5zTo`HEM8#JY4*yo3`KTW9}i!&`!KaTP%1f% zf*B5_LEC~PASD+CMlv2AFFZqq_F&F3S>0t5Zt}5bmx1UGMTf*XnqPiBg{H=QrjyO9 zeYu4CsK=}0UKIPK?=t>=zPSLpG{PC7PHPfR3V|_B6=ZEk{zyG~Adw46|{ z$Z01csCUm6X-cWYda9IKNTRE@D>30|9$eUhua1+A*F!S@Ew>Hv#|I6Yi=w}@99k(Q zX8B*#kfHS``QnMmb(h@DfvL!)ld;$73u%M)Nn)&lqy0=|tX@?Xx0ZcG*z+`O?TXz3 zZC`h!w&gsLC)QyuL%Rg}cWo6C3~-_Pz(z8;&&_?^$azzVaQ(9T^MDe+g=l)CEyIYd+kPCn6cMcfN~pdEvErMl=tH#uLmne$cm%PMK&mfdu} z7R#K<5R3na9j9;q>B#s4vqfB{n*X=1QMOm7G=f8gFi})HgfbHf6tS}Phe|GkxH9zI zGsjXxTpA8N!i$<@OhBrKye95f2vm743t2ZK2pSJeBJ#A9CEb;1XIhj_e|P>NwU8)+ zBaB1xa{agv|K0QPT4pNRD_EsWL#OYb3r4DPVVon&*NyT;{wV+77|o0S#@Rf_hAuUB za3g7Bp~;yf+MFcMvkB|4&KLcF&KFNw7EUOadUR8;ty4a$T#R2JWU1u&2{^DJ1AZK? z_~nn?+42@6uC!r>v|&F{s)T-u!CH<{ezl2~>89!W=^B_cI$pFn3|g=~yLaZ$Xuy>z zC@6S(b^GPZm$9+2iHQk+)4Z)<*@P=6ZtPy~6+h7eRVK^YEa&C?{Cs+PdO#6ZR#pxU z4mdeEZ~EKUG^t_ry!|)*Mr;{PO-;JGx?9`Z^^5!0*Fc8P0y>PiUY5@qR1$SmFMi4K zjUzf;{L$*7p)uLr-F(@(b3-C-oe4a#l^+nzeW3+^=dJPNiN}P9B$&yo2|-}W^8O685t=f zBLjLWCME{D`AK`k+xXO*oMRs?+4b%bEZV$Mmz^lV(9m#nbhO2&s;w>1$H&LpyU~a% zbJY3(ZfetzwMMb|gdGX@@#FKeGjAWCL$&&hmqATkL&7hg##-@akK4q=#LUmn6B85L z+S)QRGnbTa(drdAVFE4+6eGR%MN)fM!0$K-F@fdSW(IUThScg+ zcxP&}WvG|D_@u3(l5ky)ubzZ|8lv6T*48GHt?J|D1r|2&;xPE`Y(60&p`-&Z=Ykx7 zAmD|-?kz1X3q$X(6sUvwxw*eCEnzAI4#`3xY=cE6)$y3bfEw)@}H2Yi#uP_AZ{WpZA`f&NL^%Q9#hGMw{<*zHy&m&%oRc3Jx|_ zXvrl3&-}f=e>)#~H$N$Uvp3F!g z%}Am#10Jp>LqqOwuNJ?Pjo-uoAxl^5^xU4<24g)fd}wcOetA`>fG3x_?Vq76m%Sbp z71jTrmYtm)7Z>;XH9=#k4pS>FFhwwCYwP0bf9(k9&xj^7KE|MXdd6yU-NIYz#>PhX z37lTZzJmj2$k+20{eLl_ZusAnPKKP)Xsbg+ssk(f*^>r_N4sSq8-G*EqDVl3WF;4aU&mwR@8i54T`#2A8d# zd@=!#1?jG=yvi)&lI zXi2v^BF^qhldAap(&zMj|1EyT#xq`CV9bRn@?TWI#-sK$P)U=LQMOcgV)x+e}_WyspnMfc)C6m7jFWE0at?P z;2?IzU52J8UKo1)cc&xpqVsAicX)U>pd-YjLtJ#y(Aaq8`*$NFqY7=dsy$RGw~c|< zMqDM=*%X(Z_BoZ6mEacOM!<7JLQE1`>_K2t;?1TYB_*Y#)M+HZ!H6*P^gIO`({;0Q z)OmB*28=79qv{XOB;IDnx^hjY@a4miCtgsRUfUi35tmYa}|kU)GUZI1yjBOYk3J(;)YQrDyZr5DyW$5oTJKwg zKkr-U2DhW4qKe;NZnXIx0d1nFiqhH}29`iTKyY!m0!DqL?wV%E@!L84+j}2WIqJ8{ znwYD%V;RcU0RcIltINxd`g1_8K_Cu4v(4yQnVNFHI5eI-)vl*qk=RFgF7{Vk`>nKk ztEknG&oQ$ndxeDD|FZyrNa2%cCN<@{J!|5{qFEC)i9$E7EriKv#m#W?wcM za8e~VH#G1Yh5Aq^s5QB+wCZpWc|X)7Ojr|pg1IIm)B3qqv~I$t1A@YJPb3hg$Fq7*Oz^#QTJuGq;j=8(DFA5NDlvpxpG%y7JQPq?T%F`<-DELpZm74gG71Dk`J! zwNKh?FJ8R(=P_W>ZeVTV7!CrpwY4X`xDsAIK4ovaak>_#r+ImK-%M^(iw9jMq4`I1 zvpY5g4_CP0ImKO9RNO{>36{dyLM)E%n^5gp>WX*}n<|nanM~CuvVAcnIMde;mi*bK zi1b{Bt2#?(k7M?zwYqxJd!-l8DdYBYUEQDKpS{c)1y0V+#_1jO+ChPij(fvt%pks& zm$PT9Qk7O~&F{6kn3}Hr_+j?)LuiJFBhBghpo~JPOpMy4wB80ns`pjvOo8)ICeY7 zm%*KtuGtAIQ&}MXLmOtso3&DW?v%&OP6o%F?*9E0$%AO9s2~Z@e*X}zq0?hltd*Uc zORCzU27wSC|2qp1c>VX&(zA8ZXn!{CkOiPlGbI{23ah>O9m3mXet~v&ij0AR8Cg^E zMU<5;hkv=tjpeOLUE;4BN+-2GV{CNSqc^CUC4Tqp8ias)+esT68@7y*7VJN& zrP^$Ke0+;e=fHVE##^iB6lxXtl(_;Vd(F)krI@b^Q4PBBhc<>RW498%@<75E@M%!+ zz44!==!6BcFOSLbMUFj^g*_v62@};;8Zol*LG}%27%IaSl%i_>9A@_p4~;&244T4F z#=G?1j-W5<^)mJN=97BoWf03i!|AYIyZD!75)s+h+Gb{EKJ}vPDhn;h&o|c7`@OSc z|5?@hcI9%o2I?7|H8YvdKBh{)6q^W%mB#lb1twhgmzXsR?TQyW+-AV;%67|0?$@+w zEM{ox{g)ns+LKQyvDL|4RBgao?X zy2aArTjMj*QS(HLP9*Z5V4tul;<7;O_I-_Hxr(xM=H`Ke+uCl!vlki-)VzPSeHHMR z2z>c%e%|-;MMh<%K&+{uVc@9~H<3bMSc_m{pR-M)3Y=i|O$Dcx_Mp3vSp-%W08K2qtH68JL>Ey`9sK(yNh=i$-5faZkCZqmM~Gd-TlA;YeG*^s;+=D z2M}3h>MM9_v7)|w`}R%l;_XF|==R~^p<%O&x390@*qnN?76@KgSXfs<_v3wu->ucD zlX1935+tV|;NNUyoeL1WyfI%Mhdq~;NIt`B`%;8CoRc`W!x_IAI`4^+Phf>=?qKvQng4HP>ZmdeDT_lK{4?Jvr8mrcDC?`XivcKPD$vtV;pa_jSn zmR3IIMUf_22KFzx&YH|YzY`#UzoBSa4k2BoT7PzS1-MScyCEoMD&yDoFZ(9HFleOU zsbA=Z=3Ar*hfC??GWf{-BNjV&+4dlMr(v;dfhVQ*=NSD#c)}s8?zj2E7N?|~ej1&<=Cwb3$_XK9mZ;*J2 zbNHCnl~zA(wd}91Qv1hkDh$)>-0AODqH#7k%mZPAxLj(_urlFe?;gEEC)dj^Kv=wkB*HkeUG6PN079^uXeH#@{R0<$DVd~qWuat_W6~BGNdmB&in_; z9rIOE7MTuH@tai*qv&j&8EM~Wh$@5Qw4ru^NYo>E=;N>mlPSx@{1`2$nZ2@jnzubv|^- z|707&n&T(uD#?mdRAw!9`b|-$rlAwwxozD3P&8<%|F*R?nv?YWa4dH(TQpubE}n3L z-V+86m3?mh${2?rc8;_vS}!?k;jU*m2#{7p zEt_^sLmx7d*{5?6#|rx1VcD^5_G~exTQ|8sO!>J!WktcHW24{tAGwDf2=L2M7qr{! z%q}lD?hd08-pvQu9_@0J_wZh<<_kx;6G`gCmJ#0ljc3rO4?XFIGgl_1>+Dc=Tu?ru zX;N|$)JgqD3$oWD76+kO(N&)V+fUGkjYaZ9CQm+;hv0@Dw)E%Qxd+dRO`wDIf=5Ei zV{pQJ^|2h!4G@u(Nu$jP<#4F&W^vf_)dg?8B#M7%i?l!E@7m1^y*U}z2o!y5T|Bc> z^t_OjC&qjsJ@xkEHt+fPTP;*67*wiPVUB;?lIkL1Vzs>N=PYHYE&q{lrZ&Jg{sr@H zl{#XF;wXv?AwXzVR8%|@TENbig@@YnKVO57m5qYkk@JFz z)see|T=VM-;#rd4r7veseC1CIJeB$ZSxa`n{y=q6jjAKS-_neUUj^^uebN>q$CrsNqzrO0FwY5 zh}l@!T>^yd&!0cj(^?%N;pL}Kg)?7{ZF=|v;_Ts3XT&9Vi)_h}ufEn9d~<%V{7HM4 z688vOsaR{54FFQOnAhm$pI^Uzf#eYGD|349>ECZusk^$|&U)1H;Oj=zPO@#8?+hzqvNbCrf*`=QV{ z5xS;%u)n;#3^w>@fLrzG)!siaB-W9Yyi4u#M%;v% zHg`PaYBLj1ako9J^cnoS2$U?wIgBuP-6*3-ePoElq`PzD^0@%z_J>?_vu>b|DeO&#aigi zK{L2pNvN3p#J`UA1KRk~G+3un7YrUuF}aOnc~!ok%lAvbt-#hi`e-l+sCv!&V4OvJ&^LaBne?j|4&D+{^ ze)xv|Fi>mqY{}#G%FWHqI|Z8I(GqmnVLyBLdf18=%m5&bU6=h&0fa5I=FRT4UvS79 z(E(0Wkd>8{E7H2s0FHtKH2GxlaCcXk2@vO}|uLV&9Rw+edc z^)121&Fy&fY1i$)Ir#oLb=WG&{s~aMLb1S)^b2ayM5ijs#nXL#vTPYz<_EHL?s~YO zx)nXOvO<~A&oNpy>kubv0dDQ+Sgy&^ev=b2=svyU1xiE;3WMN?I)H2MZ+}G>!y%xI z1GqzBVJJAK-q+X1gXNKf1i9R(VH!n zhAh+dn|rWwz{vsF6xxn9cbhPt7jvjp&Ug-xE~uS(Js%e?%+Kc}O2|+y)-CVoh-)?{ zsoG=0kJDy*CM0yZ0~qk-&lun%K;eEqZ=u7M$=E+z@m&Lz8CMSvt-+2QY|gDnCl{9x zP>9G-?suoyB%#*fZJg)iNLBRm_CC9~kO;p1d$KVI-~`Y!S69^X-86~IACb!dhyziv zvXZrSER$<2N&>S9H1FbQ?O~?y-V2O)e7w1y_oJ{xLl!P#jCi}fs0alwPO))G*y-fk zb-jHKo7r3S5|QW6!3gXA(RYB~4JviZwb_cbcK$wjXmSS7j{zTJ-Wy=WA3uKl{{8!4 zxf!4UaPi6JT%f=e^}}UMjxpfI1sJim*3ypQ(?d#5vS(L(>l{R@iW?db^iA+5L^x} zE+AkfGdn@z)#v%xz8DdbcPq=quX$|r-&*Sf2k*k{gw*qNEVYivBblp(PkNd*)Dgg#(Y z*P#5+)ZDC6tOaP~p%x3Fj}IKnAZerF5YhBryA+27%yT-ckFg+8!eUdf_GHRk>B5=s zTJS}Q#N7@6+)GS?f(B!Q@AvCrbg7Eyv_We}M@Je=X=PqNYx2_bwTX1DY5|yo~5SoSaNeO&M{`bBEq=v#nP)0BVePC^KH$%dJhBAhhie(Gi-|AvmME zXT?lfInoAr`DB4uAn?F7psmBhN|bG#*q|Cf^#oHFZ^xqcb8G8!etxfmrN*SB$BjXc zUboxzoAljOCTaQ)!3q5fnt?RlUY+jj?11tBAQ=kDR6A$CR3eB@mEc$Apym;JHEIg- zmaB5pyIla`fV`G+9Qr1+6<*%o96cPzNT{l+mgaMLC(Un4C0u22u^6 zg?^&isp-p(XaB7e+uGQ8O{Saom#oOOvMEh^)p9Xljp7F{}sINdea$=3=Fi$KLZW}{0r2s zRGDTL7qgX%LBZcS(A8fl+wuG0DuzAv2s#!mf+Zd?bP+sx`c3vJJ78vXzUEi?a?oM^f+M;4lu3Ln!tWE!~IdrKMJIT}@5O=q4zJ^Jag4YO@I! zB&`1ve~|#j1v1~Q)2pbcM+Z+FlcW=_oZpM?28oB7<&66X+vITi3UiNF>6S0C&rw7X zoi1B+DO66iqj24rydYBp$FwV^_%RH|$kfu@YJ<1Do{Nc#hpZNT1#kXxc#pzvK?p$=Eyr3;94#x~0?oWyY|y5rRu3s*Y|CLxT$wyFT(1%bzB(zU-i$pBxkdFI#0gw!PIanu3HS*?@P@ iBLDAr2krmgC~hAZ<8{z%5}}_Vpef0z%T`I7Mf@*d=<`Pa literal 0 HcmV?d00001 diff --git a/tests/reference/output_2-FLIPPED_buffer_2-90-00.png b/tests/reference/output_2-FLIPPED_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..58206d1eac41b1849c2fe9037a8fcd43afb71197 GIT binary patch literal 5360 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 OfYxn2wNe%9r~d`06IdAl literal 0 HcmV?d00001 diff --git a/tests/reference/output_2-NORMAL_buffer_1-NORMAL-00.png b/tests/reference/output_2-NORMAL_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d2a3774b94ca3b1e7604ae5753e614d319ff95 GIT binary patch literal 14482 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 I@#6LW06h`QH2?qr literal 0 HcmV?d00001 diff --git a/tests/reference/output_2-NORMAL_buffer_2-90-00.png b/tests/reference/output_2-NORMAL_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..26b5789d2002a7df71bcd38120ba22327808fd41 GIT binary patch literal 5313 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_3-FLIPPED_270_buffer_1-NORMAL-00.png b/tests/reference/output_3-FLIPPED_270_buffer_1-NORMAL-00.png new file mode 100644 index 0000000000000000000000000000000000000000..878307d7e01de9104ed1faf2efef19703fb31cfd GIT binary patch literal 12107 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

p3eGp`f^+w8~dOhmwz+!}gF$pcy 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 literal 0 HcmV?d00001 diff --git a/tests/reference/output_3-NORMAL_buffer_2-90-00.png b/tests/reference/output_3-NORMAL_buffer_2-90-00.png new file mode 100644 index 0000000000000000000000000000000000000000..b1133ef66834d5b75086273e8172d058a00711e1 GIT binary patch literal 11702 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 bZlZRDxsLyw_xfQkVgqzE41x7(cCr5p=p_>5 literal 0 HcmV?d00001 diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c index 27ea0f1f..6e270d37 100644 --- a/tests/weston-test-client-helper.c +++ b/tests/weston-test-client-helper.c @@ -1118,6 +1118,16 @@ screenshot_reference_filename(const char *basename, uint32_t seq) return filename; } +char * +image_filename(const char *basename) +{ + char *filename; + + if (asprintf(&filename, "%s/%s.png", reference_path(), basename) < 0) + assert(0); + return filename; +} + struct format_map_entry { cairo_format_t cairo; pixman_format_code_t pixman; @@ -1694,3 +1704,55 @@ verify_screen_content(struct client *client, return match; } + +/** + * Create a wl_buffer from a PNG file + * + * Loads the named PNG file from the directory of reference images, + * creates a wl_buffer with scale times the image dimensions in pixels, + * and copies the image content into the buffer using nearest-neighbor filter. + * + * \param client The client, for the Wayland connection. + * \param basename The PNG file name without .png suffix. + * \param scale Upscaling factor >= 1. + */ +struct buffer * +client_buffer_from_image_file(struct client *client, + const char *basename, + int scale) +{ + struct buffer *buf; + char *fname; + pixman_image_t *img; + int buf_w, buf_h; + pixman_transform_t scaling; + + assert(scale >= 1); + + fname = image_filename(basename); + img = load_image_from_png(fname); + free(fname); + assert(img); + + buf_w = scale * pixman_image_get_width(img); + buf_h = scale * pixman_image_get_height(img); + buf = create_shm_buffer_a8r8g8b8(client, buf_w, buf_h); + + pixman_transform_init_scale(&scaling, + pixman_fixed_1 / scale, + pixman_fixed_1 / scale); + pixman_image_set_transform(img, &scaling); + pixman_image_set_filter(img, PIXMAN_FILTER_NEAREST, NULL, 0); + + pixman_image_composite32(PIXMAN_OP_SRC, + img, /* src */ + NULL, /* mask */ + buf->image, /* dst */ + 0, 0, /* src x,y */ + 0, 0, /* mask x,y */ + 0, 0, /* dst x,y */ + buf_w, buf_h); + pixman_image_unref(img); + + return buf; +} diff --git a/tests/weston-test-client-helper.h b/tests/weston-test-client-helper.h index f4ed919f..a8253137 100644 --- a/tests/weston-test-client-helper.h +++ b/tests/weston-test-client-helper.h @@ -235,6 +235,9 @@ screenshot_output_filename(const char *basename, uint32_t seq); char * screenshot_reference_filename(const char *basename, uint32_t seq); +char * +image_filename(const char *basename); + bool check_images_match(pixman_image_t *img_a, pixman_image_t *img_b, const struct rectangle *clip, @@ -261,4 +264,9 @@ verify_screen_content(struct client *client, const struct rectangle *clip, int seq_no); +struct buffer * +client_buffer_from_image_file(struct client *client, + const char *basename, + int scale); + #endif