From cb4698bf7bfa1829515183af3d76e38955b6101b Mon Sep 17 00:00:00 2001 From: Cal Stephens Date: Wed, 14 Feb 2024 14:59:50 -0800 Subject: [PATCH] Fix crash in Main Thread rendering engine path interpolation implementation (#2305) --- .../Private/Utility/Extensions/MathKit.swift | 2 +- Tests/Samples/Issues/pr_2305.json | 1 + ...tAutomaticEngineDetection.Issues-pr_2305.txt | 1 + ...nimationRenderingEngine.Issues-pr_2305-0.png | Bin 0 -> 15807 bytes ...mationRenderingEngine.Issues-pr_2305-100.png | Bin 0 -> 15800 bytes ...imationRenderingEngine.Issues-pr_2305-25.png | Bin 0 -> 16727 bytes ...imationRenderingEngine.Issues-pr_2305-50.png | Bin 0 -> 16485 bytes ...imationRenderingEngine.Issues-pr_2305-75.png | Bin 0 -> 16346 bytes ...inThreadRenderingEngine.Issues-pr_2305-0.png | Bin 0 -> 15807 bytes ...ThreadRenderingEngine.Issues-pr_2305-100.png | Bin 0 -> 15800 bytes ...nThreadRenderingEngine.Issues-pr_2305-25.png | Bin 0 -> 16279 bytes ...nThreadRenderingEngine.Issues-pr_2305-50.png | Bin 0 -> 16358 bytes ...nThreadRenderingEngine.Issues-pr_2305-75.png | Bin 0 -> 16475 bytes 13 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 Tests/Samples/Issues/pr_2305.json create mode 100644 Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-pr_2305.txt create mode 100644 Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-0.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-100.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-25.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-50.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-75.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-0.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-100.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-25.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-50.png create mode 100644 Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-75.png diff --git a/Sources/Private/Utility/Extensions/MathKit.swift b/Sources/Private/Utility/Extensions/MathKit.swift index f7ca635efc..e512cfa9aa 100644 --- a/Sources/Private/Utility/Extensions/MathKit.swift +++ b/Sources/Private/Utility/Extensions/MathKit.swift @@ -369,7 +369,7 @@ extension CGPoint { while foundPoint == false { refineIterations = refineIterations + 1 /// First see if the next point is still less than the projected length. - let nextPoint = points[closestPoint + 1] + let nextPoint = points[min(closestPoint + 1, points.indices.last!)] if nextPoint.distance < accurateDistance { point = nextPoint closestPoint = closestPoint + 1 diff --git a/Tests/Samples/Issues/pr_2305.json b/Tests/Samples/Issues/pr_2305.json new file mode 100644 index 0000000000..2d3247fe93 --- /dev/null +++ b/Tests/Samples/Issues/pr_2305.json @@ -0,0 +1 @@ +{"v":"5.7.5","fr":100,"ip":0,"op":400,"w":800,"h":1000,"nm":"Comp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":0,"ty":4,"nm":"Bounce out curve","sr":1,"ks":{"o":{"a":0,"k":100,"ix":2},"r":{"a":0,"k":0,"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2}},"ao":0,"hd":false,"shapes":[{"ty":"gr","hd":false,"it":[{"ty":"rc","hd":false,"d":1,"s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":2}},{"ty":"fl","c":{"a":0,"k":[0.21176470588235294,0.9176470588235294,1],"ix":2},"o":{"a":0,"k":100,"ix":2},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":2},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":2},"m":1,"hd":false},{"ty":"tr","hd":false,"p":{"a":1,"k":[{"t":0,"s":[510,100],"i":{"x":[0.2],"y":[1]},"o":{"x":[0.5],"y":[-0.5]},"ti":[-268.19047619047615,-294.42857142857247],"to":[-268.19047619047615,238.90476190476068]},{"t":400,"s":[510,900],"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2},"r":{"a":0,"k":0,"ix":2},"o":{"a":0,"k":100,"ix":2},"sk":{"a":0,"k":0,"ix":2},"sa":{"a":0,"k":0,"ix":2}}]}],"ip":0,"op":401,"st":0,"bm":0},{"ddd":0,"ind":1,"ty":4,"nm":"Bounce in curve","sr":1,"ks":{"o":{"a":0,"k":100,"ix":2},"r":{"a":0,"k":0,"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2}},"ao":0,"hd":false,"shapes":[{"ty":"gr","hd":false,"it":[{"ty":"rc","hd":false,"d":1,"s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":2}},{"ty":"fl","c":{"a":0,"k":[1,0.3411764705882353,0.21176470588235294],"ix":2},"o":{"a":0,"k":100,"ix":2},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":2},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":2},"m":1,"hd":false},{"ty":"tr","hd":false,"p":{"a":1,"k":[{"t":0,"s":[360,100],"i":{"x":[0.5],"y":[1.5]},"o":{"x":[0.8],"y":[0]},"ti":[-268.19047619047615,-294.42857142857247],"to":[-268.19047619047615,238.90476190476068]},{"t":400,"s":[360,900],"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2},"r":{"a":0,"k":0,"ix":2},"o":{"a":0,"k":100,"ix":2},"sk":{"a":0,"k":0,"ix":2},"sa":{"a":0,"k":0,"ix":2}}]}],"ip":0,"op":401,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Bounce in","sr":1,"ks":{"o":{"a":0,"k":100,"ix":2},"r":{"a":0,"k":0,"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2}},"ao":0,"hd":false,"shapes":[{"ty":"gr","hd":false,"it":[{"ty":"rc","hd":false,"d":1,"s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":2}},{"ty":"fl","c":{"a":0,"k":[1,0.7254901960784313,0.5764705882352941],"ix":2},"o":{"a":0,"k":100,"ix":2},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":2},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":2},"m":1,"hd":false},{"ty":"tr","hd":false,"p":{"a":1,"k":[{"t":0,"s":[650,100],"i":{"x":[0.5],"y":[1.5]},"o":{"x":[0.8],"y":[0]}},{"t":400,"s":[650,900],"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2},"r":{"a":0,"k":0,"ix":2},"o":{"a":0,"k":100,"ix":2},"sk":{"a":0,"k":0,"ix":2},"sa":{"a":0,"k":0,"ix":2}}]}],"ip":0,"op":401,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Bounce out","sr":1,"ks":{"o":{"a":0,"k":100,"ix":2},"r":{"a":0,"k":0,"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2}},"ao":0,"hd":false,"shapes":[{"ty":"gr","hd":false,"it":[{"ty":"rc","hd":false,"d":1,"s":{"a":0,"k":[100,100],"ix":2},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":2}},{"ty":"fl","c":{"a":0,"k":[1,0.8392156862745098,0.25098039215686274],"ix":2},"o":{"a":0,"k":100,"ix":2},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tm","s":{"a":0,"k":0,"ix":2},"e":{"a":0,"k":100,"ix":2},"o":{"a":0,"k":0,"ix":2},"m":1,"hd":false},{"ty":"tr","hd":false,"p":{"a":1,"k":[{"t":0,"s":[150,100],"i":{"x":[0.2],"y":[1]},"o":{"x":[0.5],"y":[-0.5]}},{"t":400,"s":[150,900],"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}],"ix":2},"a":{"a":0,"k":[0,0],"ix":2},"s":{"a":0,"k":[100,100],"ix":2},"r":{"a":0,"k":0,"ix":2},"o":{"a":0,"k":100,"ix":2},"sk":{"a":0,"k":0,"ix":2},"sa":{"a":0,"k":0,"ix":2}}]}],"ip":0,"op":401,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-pr_2305.txt b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-pr_2305.txt new file mode 100644 index 0000000000..4b816d7353 --- /dev/null +++ b/Tests/__Snapshots__/AutomaticEngineTests/testAutomaticEngineDetection.Issues-pr_2305.txt @@ -0,0 +1 @@ +Supports Core Animation engine \ No newline at end of file diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-0.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d99fdbc402865046ad616c2a2163056b1ed4d89 GIT binary patch literal 15807 zcmeI&Ur19?90%~8 z9m&ZI35*ORq7a={V<3{KSecOruq_EAx1X@UnGKog)crbomaQ~Y*?LZNn2XxT4P2tX4o}o*BB{SlA&cVD!U}8ckCHC#&nI^AziUfWU6PG_ zMr;-|yO&;TG9j;;$&?F_ty+SU-zeo#s$p z4d)sAU}`Jf)^POEa8FVGt#{-0jPd?!Mnzzs^y zszQQ6_=jdfoli5h^kZRU%pAOSed4aS%H?wQS`N6UhJ}xpoyD$>vbn{gUYFIna$Exa;m%~RXtEso0Rs>xky>EPtIdG8BFDEHNyu-Yz^$)t9=;MwQ9r_5rt zUKwR}(pAT+rP`+vRf;TeZ~LaX!E@YBb!2Y1ijSLUqcGJ_u``~1FBM;&D#W^36H`_J zYh8Yfbs2YQ{-&_rKQoB=W=ZIp=AGgquAjMbci9vqyY;Y zX>csX*#hT7Tw>rN>Tj2cxb4HeFMa@k0w{n2D1ZVefC4Ch0w{n2D1ZVefP()_LESS! zPeeYScW+P_QB=P8OvUFnDdHm?eO*iXGr>x`x>T@nl7QeH$t6fI2$%^_00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5PyhvjU@l4O@py!Vmgnq$HPU6|Xu8u&>VE=DPC6D(TkDy(Z6T(aZ9~<(Z?_6 z6Ut%9L!O5$B%ZL=x(G?lRw|Y3#%Z=Qv)N*Eu*fc`6#9*AOn;)1XL#br{TVFQNtW%7 zvo!p+K=}i&e6zL|O;)@4V8BiJ1kKvb4M;Eum*%S1Mrts3?oZUw&TxM&E{Gw; zqyY=uX>c#a(*n;!EHSW%`j^YZ74njR_u>ESeK_z^ALYG5IDD+=`4+;8w4=h(Q`&I( E7g>C7Qvd(} literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-25.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-25.png new file mode 100644 index 0000000000000000000000000000000000000000..9c121c21bfef84fa2c44efc818f8f8495e28048c GIT binary patch literal 16727 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 literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-50.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-50.png new file mode 100644 index 0000000000000000000000000000000000000000..37477e6524c4304e02b7b37e5bf2665aaa1f183f GIT binary patch literal 16485 zcmeHMdtA)v8lRa4GetWUC8`-Um1`09QkoOG!5>(q%UlO6Psv`89L){Biy`d;Zza=Qlq2UFNxbpXd2L?`;mQbg~(z zI7yL0p^US$wRWLU6gcRwjWHU%F{n6w6J4mmE;dUjnG&sb^ssO9I=d~7j+E)>oM5%PNIy$_Y}$s>SWoy3w0_XL!(e)d?|E7W<9#XCjtE-ZQ`nsMwMGkqm4)_ zaMBcH_ido2R2H9wF3bR1w_plIT_66ab}rm*^is>$+Icm)B8Tvy_M-o$O0RIwetYA` zUz*YNmYucL>QHJ&&0T-}Wf}(>YqF(yemKA-jv#|El+Ex=e!#>e} zDUG>Ndn)EP^tJO&_8=&9dY&Qk;G)Q2Q4@o5l^sV)p5V%h zVkDfY2>HhdNI?>fW*wETmAO=Hg;s}>eT$K#R=-veHxx_`2YHl znWTpDmtNOaV2tFQSm>c;UriWSkPH^@^M7(x;qbg>LA9Q(|2bz$Ks0EYR+id8;k+)x z)56P5Cbak9>ekotf+@(3L<8&$PB5nmIADh^yxd-2}vz7+^3!w`gWSDCW}*>prIGr!%bNM5i4#8ea=K4oMl7U!z>h&fx}3#ty2Q^ugM(y~B#e{0uMX7~&c&pFhs z4Gh(S9Ew%)f}Cm7fXsGg{1`-Lo(Y&wbbJ=b)BATHP5TJpX5{SJ z=78isfqbRsSwmIEbR=P0#kOggx+{4= zAllsiID~S+26(8pX`|3DfV}GFLlP@w{se^R7WTUS2=6!mc8m_318}y3naA_B*t%I4 z;QfrwmkUwWIG8(+zHPUlI{|lEe(nha?kIw|%MYC%CyHwUaDD+Ras?Du4`R{0sn^fR z+6Q**$JW@R>~M17;jZDkQ2JX?HQDB$YK`FB0p%wficAdya2XzO!!bw3;24Xq*CqaG z@JPVz!#@M-zq)8N&*V>}nk5vS)jk&A>Cknz>gA?s*17+XtWT?$kv6;jfZhp=Ts6831qVR%C* zs2=qc8nSG0cO+(*8z5m9+{C+zm7TrPL0YfB#RHX-6M*aazM|WeHVR^$wqW-Spi4Vo zcVM3#qZ*6p^2Fa<1DW{_)8*2l-5NAg$ahe6RCqFg*#S?t{H7Y|uCxNYiVORX0$tqU zA=|X=6a5~h%a+5+OOW~fm@c999!Gd70LTAO;Cy6-(F;P4vnQXMl7(T~E7#fsU6OH` z4cZsbC73SxAHz(L{5ueL@%d1nRJ;(=Wv)sjLQkbBKyEaR^>R2_2SC+tW{o@0^Ql#{fJGzy2encqK zAq(86UfL&%kAbF^Xm&r$QvyRs{-6;W8)qUjv7V!mFl&Jas5Y;C%cLg)-o#B;k3t7O z0o8P!tY6h8VyEIoB1kcVkH@{wCWA>lE3l_1sh@#nDz7_$z1pT#K)(RkRYOuFfc*r7 z>gM~fet)qeSgf1JVPh~G;HhI$+#$wl7?IQONec9keTh2sTgSLvmI7mt*r$0h8pfH8 z;7dI%^4 z_!GB0Q~mCv0JzKHJ{#uQVhY$FT`8W$xQ<(Ll6{{#vJ*QCoOSFs*A^TERfjVvHZZJS z2j$JBT@RRi%z6>?H8z9!U2>ybo5`I3RcPO?4c(9d80_Y+i_s5A2ThyKiUR1*20N5| zR*@2&VF4Y`bV>khJ&IF2a3YK*;DS@G@TxZ&`#HBkHDgRiH+?y#N04(TN->r89C#oq z9J^S5wOaZdjH}1hB)rB@dp}9^cfxuBOZ&c()!HpwEcLif(gqLgpTRwtBe<~+8}gO z36lsz_mv3WU9G(0Qp7_8lL8TaQsp;*kU~Jwd+Gl&v1FBt&ClqgHe<+6`hCFsk}ssiAT|H zMLOsi+rZ3eRuQyD?pqtCG4t$hRoS>GFoT)1((U9m`83&vSE<7Nr{tYe3A?vVl3V-} z@@W#=m(0w!9`VTY!b_sylW(rdgTxD_?OPi4X3=yxSZx2STj)UFvylHS%eAJJ@fpyk{>*@fJcd@o~$SirYj zir6%C7Ad&pwDSoCT>nl7?wcE&WHEP}{gWi=~JHTp*XntC>T| zD75nm+k*)Q_)wwsxmv#+LfZ7KRYHWk6p&iXOH2C(cZde^HZfBlJ%iQuKWL%pNWz&xBtyc0+KaAGLZPayoBm3{MJZ=IA(l{ zm;F0824@=mske;rHo09dB|rfbE6eqz-6WU+o<-mLTgEg{-qko$} z#9}^GgP>j}-oM_teI)NV5&@|6%^=|osI5_Eb8ywv3z1&h=rkoyCp3C6;P~Hy`@^}frlx!v3Ykx2~xB$ zX0wS(>q5E@*1fLT4K2E3p(Qaz(}DD=7I$59G!PS>1cb**5yiqTgu7>dsWW7^=ji}l z8gs%DKstV@MJR)+%TsnLsU?y$6OeAIX*w1RU9@R-JwA(}Gq`vk{YYyk8yNG-yJxwy z&YV+_JdwJnYaUYUaF5$bjC$>mZ9CI)?J=q-N2Lz=`=yA)coR{wp?)DGwg20uej;Sz zAmxt--iUg?H}M9EU5prx>TK&n>MeyxA?JCcDWUKWAco5~y(NuM*E!>66PvFZ$WdA0 zqxw(i+Wz65A0bZ#dBw`!<9bkpvZ?vRSos8Rxl3FYTUrm=YQl=$5ti4G!bA7&NNFz8aMd0dd>IZzRL#hB_aUf?PtYc?>B#@| z&Syd*)p%F_V2l;A6_*#Xg|LB7)q1Q@+0vV~o)t=y_5&bU9nL}lk!Js1N$@CmwP&dP zL!ZQ1IhsBEvM@7OZ-f>!Xc1=eS$ElTqNRUGG|2YL&Lw%p!7l)1g z?$!A&*{@8p6%u(P9p|Kj8kr3;8zd9RE+D&r>;ke2$Sxqefb0UY3&<`YyMXKhvJ1#A iAiLnNcfn|-L8bKx+cH;2?)aI4K6cBTtTUH*?fn;6tzR<$ literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-75.png b/Tests/__Snapshots__/SnapshotTests/testCoreAnimationRenderingEngine.Issues-pr_2305-75.png new file mode 100644 index 0000000000000000000000000000000000000000..5e63e61540cfca2df62698b2e0279e8255aa7170 GIT binary patch literal 16346 zcmeI1i(ky?7sqGD#3YxgTtXO1E~Q-BrKE;hT~@KlCf8&MN$DO%!>U|Ln|0|%R=X(_ z?RL>rN-eQAek_}6y0hAnDRwKje$VHG{r!Ib!tdL@+L`BZ&UxO?dCob{`F=aF)WLf2 zz|jMFJlQn?~eQ_?_~r$Uc?rj@V(4R_KBYu_RF;2fA&k}|6?&( z@IkttB)Q+m?@ytocJs(3_Mz%+K3CaVEpQ6rx80oyfNRNrE%6*QK2o~AIE>$~{~)ayuG|;S30x#_S-@oh zmjzrFa9O}*0ha|_7I0a>WdWB3To!Oyz-0lK1zZ+zS-@ohmjzrFa9O}*0ha|_78Doz zy0X8g_4bwvo=@cQbX@Ugwr9V8e$dl>?DYmgN%%5vp_@)jqTQST?J(ExJWEu6J|(Ht z)Lt-4rCQH2Cg@d;b5_aG3+X?4JP3UF*Ph_7ubF0h)pa#1qUuWb^{PvxVLZM-C=zpD zI45wCz-0lK1zZ+zS-@ohmjzrFa9O}*0ha|_7I0bcf0zY%i|RYB-me>9=g_OvEUo{& zZn4GHO{(U{J_bXvs=z{6-fJE@&wjU?R!HaRmXVX+xOb`llP?+SV#&;FO>1}qV?2rm z{G(d0%jZv&I>g5xneg%TgHkDx3L~HM@iIcFd9tXdZQbrhEnz}Lli0?H{gcfrbvc$! zS6y89Zd0e`jpVALnuy{D0)bW7>cR!5m*73d9buVuVt3x#+@QZt->^^>S59G?<=0h% zO<=ZdI!3h#ox6n-RYhXH#+D-$3!!EqVxz`G(&Vf#p1R~%*R$nV=>a7M-W7z`W z_D^lxf~|QUhmgDHuYZX17D~fJG5P_2%vNRZPh1yZv_Ci~Qo0ig_l{JmF!`nSnBJNY zFkaw`=_k9C^JtS|u|%L-JZP+}cs(|u{i&hXV$ie-g^@g$TF_uu({@mY=(Hm

Q@;@no@t^xCV zF;aV>6w6*hA!Yn!H71`NkLd@WJ~J0S!SwB}`arx~5=kVCGHjHoKvs&~nQU8KdlIMl z5a*D!-DK@&k_f1p9RKrMCcjx1@@KEew^{;VbVcnk=3((FP*$q>n+mF7R04UyumAdj@b#FPNH2lx7GRuebLH%Pm*jgaG&Q32uCPD!MkO9h#cQx) z7YHS0e{$Ngeju!5R3_cgg?SZ>Mm%YlAZUStt%ci2CNKR2)9Id7p`zQEj(cA691a#s zLCKr#Clo|rcRrPQ1v7Er7vTA?6g~w9r9+_VWAI=q+tpng$S?8@d=L%*4vE2}ThJ8cW|Y8V;ZF0~Zi!$PsU%M2mE z71K`DKfM;8#PqDXeRT+VNf;>ko1Th4QPJW$rF#c7W1tpma0(twpqrd{n)+ARf^XFcKc?`Xbm;AOo*UZb%fpwDslBrW|$UMphz@d zxY(mDa7Iz{`MEtr59SRp%9=5BsQUj@Q#S4BdB5G#mDUd#x_dGl%mbzHGj7^RO6E1`PSo2%Y{C$7`q|OfyIq%5#){I<>xr)!q*2FQK%b+|^xHMJg5*0yD zwa%@Gj>u`0?3&l%oiDkr$u+uNVZc1dn8iKQZV>*E**mM}zy|Sl z$q*|^Z1KzIcgDRfn;H4jV0WscW`af?hme|gtD0S+kK$g(k}QEJ#11|RQl%m0W&Z>S z4G*dOaL3}+)(Sm!`L@|s8Bqgwc|?mb zrllW?%1X+Jz4rHZkoSwJ7;N~wkqL}Cl90wDY@$n#vULy7f{7*)$ceQNek3`Kb!s>Cv!&G4EEPO zC8oA4rqpi=?LbN0RiGrD)CAke<`ity#x#Hk}Gq&;ncEq zX_^$*vUwQR#O=43M76wR@z`(rP5}=W<*&~xPYi;@SCwhA`xLr_I0dg^?_#LSA7<%q z)3*n@JpM>fKL5|ohGmF5^vx2!-lNAJdjz^SoyJm^Au=1zhRrP#-{>F0?p<>JOr*f8 zKY-zq{te@|U@6<#Uk;c=-uv*FuxlJP-+AGIZC^IgP5emvO+3|BD_?)7KA@wpV{x&> zD-L#U{^ac5XUBq0p-JmaEMO!u2S}1A%*M}seKB)=y%FaOh|=6lM}7K zf%7go`0sUlQ+RBDx=9%us2ieEpTB27R_!|G@C()c+hKb%V%p|KrnIV6ja}LS1w-hH zEkt;h{=)8D0yKW7$eEYS309mG% zps6RdD4!{%4QNvm90h7o>zzvM| zDq8;swK_lG*o>2Qzw!WaU%$&2%qQY2Z{FmNU}xETP(e|*5+1$h)2(7SodL^6$pr*V zJx^1+evJzQ9yl*x00F=64o>7{F_=l=Z5jkj@wxka=8g>vW~;%Y>4@`WYO9_tTGxDy z!3>Mb@<6GPQtOxRS#&Fu0jFhc?4r`UiGUMA;#vo?-fh!uLn@SoILemnZqwZ1tjnp0 zSA31|UP<@&R^@&}eFl8SL{6=TA3aLmuhmy9XTWy50!9+>`-iR*`RNS!`~J^n5wNwC z$(Va&`Y!|U^eRsRjv^0VU)%N_fD?XdCE$_d;cbOg^8t(&8drxN0mtpU;sN08zZqJ= znez$w^2?pM!x(UFx+0Q*QOfSQJykK9%79B;K!0&D;Vh9*9?C4WD*l-d9 z-WMmI2oF0^3^!)XtFdLkL*@lq!^2Z3hD%&>^I{py^zimr0;U+=dA@yz4g=n4pqNfc zmq;F7q-b8qfQ{qwJy1tKJSFG<5{mfD^6#QYYBvH-@JndLac^ofq)s3kA(58-)I3+6 z0pF=od`rNHVaKg^qYQNzFncL5jeseJ@12^b_>2KN>|FkF9{aKV%)u&S Iq3hm%13*zzQvd(} literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-0.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d99fdbc402865046ad616c2a2163056b1ed4d89 GIT binary patch literal 15807 zcmeI&Ur19?90%~8 z9m&ZI35*ORq7a={V<3{KSecOruq_EAx1X@UnGKog)crbomaQ~Y*?LZNn2XxT4P2tX4o}o*BB{SlA&cVD!U}8ckCHC#&nI^AziUfWU6PG_ zMr;-|yO&;TG9j;;$&?F_ty+SU-zeo#s$p z4d)sAU}`Jf)^POEa8FVGt#{-0jPd?!Mnzzs^y zszQQ6_=jdfoli5h^kZRU%pAOSed4aS%H?wQS`N6UhJ}xpoyD$>vbn{gUYFIna$Exa;m%~RXtEso0Rs>xky>EPtIdG8BFDEHNyu-Yz^$)t9=;MwQ9r_5rt zUKwR}(pAT+rP`+vRf;TeZ~LaX!E@YBb!2Y1ijSLUqcGJ_u``~1FBM;&D#W^36H`_J zYh8Yfbs2YQ{-&_rKQoB=W=ZIp=AGgquAjMbci9vqyY;Y zX>csX*#hT7Tw>rN>Tj2cxb4HeFMa@k0w{n2D1ZVefC4Ch0w{n2D1ZVefP()_LESS! zPeeYScW+P_QB=P8OvUFnDdHm?eO*iXGr>x`x>T@nl7QeH$t6fI2$%^_00mG01yBG5 zPyhu`00mG01yBG5Pyhu`00mG01yBG5PyhvjU@l4O@py!Vmgnq$HPU6|Xu8u&>VE=DPC6D(TkDy(Z6T(aZ9~<(Z?_6 z6Ut%9L!O5$B%ZL=x(G?lRw|Y3#%Z=Qv)N*Eu*fc`6#9*AOn;)1XL#br{TVFQNtW%7 zvo!p+K=}i&e6zL|O;)@4V8BiJ1kKvb4M;Eum*%S1Mrts3?oZUw&TxM&E{Gw; zqyY=uX>c#a(*n;!EHSW%`j^YZ74njR_u>ESeK_z^ALYG5IDD+=`4+;8w4=h(Q`&I( E7g>C7Qvd(} literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-25.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-25.png new file mode 100644 index 0000000000000000000000000000000000000000..15df762437a88b717728474546b279fa74c8bc57 GIT binary patch literal 16279 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 literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-50.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-50.png new file mode 100644 index 0000000000000000000000000000000000000000..b86fea79d1a07db041422c828d43ffca5621cfba GIT binary patch literal 16358 zcmeHM2~d+s7XA~024oN-5MU6(Dd2&q<069^AV?w_90U=EYe8|!)!eWO0a^jxnPa!;ZdOcq;<$0r>E0*M5|0>T2q0>T2q0>T2q z0>T2q0>T2q0>T2q0>Xk{g$4I4dWMFjO_`I6PJXbkj~(d>{dT9rBt=a|vO-d0_j5vD z?2es7qL7}pfuj2HV3Q?^aO7ntQ6i4-el0W)XSv`to)g-)xo(y2Yq4%eA0%0v-1Xy(0_4j&|n z0uui(Nt8CP;rRPF<;+uK?r7TZ@Y%2dp(`V-8|dC@abZa;(Bz+?)N z1mX8Pv=!!F)j>1cw;GKptl;z3@RQhCoy&)vlrwW+rvHIkCQ8=@laTA2>ozBq^{!Sg znE7DKkP5h-qV6;{^!D?`aT+e;+jiIw!=gLW)sW@EZmk9;lhK!}#_X==P!d&u zNbl8)i{NOF0rR=JXZ(l0#9o8(sKBL3`~vXi;Ewlx@O1=0d~d+^wrwVBhw?+b5gc3{5)K|XvX)>2Xpa-F==Kcns7eFF}DH=%1bD;kWvylF?C z2eR>N7!&zZ#Rx|qbj~qK3*vxJS7CVDnfDTw81LY1spDJ(y7Gf00*tA4f2o4CS_5Jc z`U#@^<1kY?|J@CQ~CGiGD1%?H;kfZsRU`%Sq+l{PO5NyYSGJHX6)n1TK zAL$Kbt^g&uu65IYFG+oi~fvoP%j8*g1E^ap1=TFJHma4m)f zQz2-T>s>N~CGICw`>LObcVXFXO5w~2NI|Xg1@&g+i6Ysq!3$&&&5f~b~+j3afKvCo7 zzHZoz01&_VF|UIo1mJ|{ogFpMXmwcKEB0C8l3>N=g4PQV8J91cytDj8FtC2%chy2z zu;u%Co(M$>2Nzn31eY=xNN|zhLQEr>>%YldPJw|pwpWY}C7+xz;a%ms66Zln#3wG~ znQLE37s9!KFFhQ{Q-^}n4$vRb;Z^Sjht#YuV?5X* zq_{wmjv_`#M@}Glu*(v^jwoTnP z7&3qF8`1io%gWfhX21CC%{a%Z>tncz^q1oRkRA z9|KyRjb%pwWN!i#0pTOrsz%*^{KM#@lSav*yE~sND7BvLKYqi1tX)61*s)Y`xI3)k z$G6|E8LZ6sx54O!vGs1F^pHIL@m%1Bk#6e9k|)M01Gr)27Dp;qONS>&i;#3pXL)Q! zq`?hi{S4_$#qGrmZWw#?PrE91FV_^Vj0PSt9&&diY`FB8r8(?O&ulWOD{A5uX34iSx>wjvpC@6evyMNANg9&w+uPaZEr4HNC`Xt*x+Xnw~s+OH; z!m#EWjt9LGV^CVT@Tfd|r%Nzi2NoHhyM@avl5CJ~XsJYo?=O#@hHY8_CJOIlm3qJ< z;__;98ig!)_7&dOn^tFvJZR6W$e{7khiCk?5n}ry4gw@>pQZ~9$OVAxLPlpS5*LKl zeof<~4hn5@2eSXy8m}a#jA?z$$swj0zeE%(3llHEP}KaqeF18ZwPeT0%2CPSjmBe} zS3an{y|2NU&Pozo)``-d>WRdWGn!{&F&{tRr+)vB%=%ID{=0tVQ!s>`xRMiE`+8

$CW9>m6+Dt zkU&uQP=9I)t#CDLnjg2J*8+)a4oPW+I-t*Xq4`Do1pmPMsKs<*jW zQQCPjr1T+%L+(1nYN2*QN4pPA*Qx?wP4SJ$5=)O9T0n!IK*k9)@ralK&CJs6ee%m8}|)r z?L#BAWD0dbVSu0pLUXD|^du}^ffcr080B0GatY6stJH+G9gkEztLAD2@t?TGLeUO^ z7y?_f$KXY)GinWTvwdaZlMUgstlQ>g0BQ@qYFHoxWjTPgnWLMD#NHasmUQ@>0Sot+ z>mlN7Y3df>m2F|=@AThCt1*7Pc=hN^P`ke6iA<#Iv4`7vuyq(lhyx6bJp^x+Z0Li@WH3)#a z0WyZ1!wdQ$eB5;~(u#jaU*=;uA?iNcr0%WnqzB_-L(t=jy+W(m8g-x09u~ z`_$l)|HG#NhiUGhN^%0wp*!dl%BZr7v=J_a+lR({LFYbHKOTV`UzV6ER@}8C_CXq| z*(Y^V+-JJ+Zw_O+jtu(1KxKD(V3pC_XfCSX&>F7>K~nnA8}~d(P92Z3cW;bVnLxx@UDLWohK8Y literal 0 HcmV?d00001 diff --git a/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-75.png b/Tests/__Snapshots__/SnapshotTests/testMainThreadRenderingEngine.Issues-pr_2305-75.png new file mode 100644 index 0000000000000000000000000000000000000000..47e25ce1a0737df0f4e05da1534164ba5b723f61 GIT binary patch literal 16475 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 d0)1te!^-X<%MNI@m!}ZuV literal 0 HcmV?d00001