From d2ff56bc444be383de44b3e3b5dd349700abac87 Mon Sep 17 00:00:00 2001 From: helly25 <6420169+helly25@users.noreply.github.com> Date: Mon, 2 Nov 2026 04:17:49 +0000 Subject: [PATCH] Reuse budgeted native comparison cursor buffers --- CHANGELOG.md | 2 + TODO.md | 14 ++- ...rs-20261102-initial-linux-fallback.json.gz | Bin 0 -> 30145 bytes ...fers-20261102-initial-linux-native.json.gz | Bin 0 -> 32617 bytes ...rs-20261102-initial-macos-fallback.json.gz | Bin 0 -> 27451 bytes ...fers-20261102-initial-macos-native.json.gz | Bin 0 -> 31699 bytes ...d-read-buffers-20261102-provenance.json.gz | Bin 0 -> 33126 bytes ...rs-20261102-refined-linux-fallback.json.gz | Bin 0 -> 30128 bytes ...fers-20261102-refined-linux-native.json.gz | Bin 0 -> 46743 bytes ...rs-20261102-refined-macos-fallback.json.gz | Bin 0 -> 28674 bytes ...fers-20261102-refined-macos-native.json.gz | Bin 0 -> 45704 bytes .../cursor-owned-read-buffers-20261102.md | 104 ++++++++++++++++ docs/performance-analysis.md | 28 ++++- release-site.json | 3 +- xff/engine/BUILD.bazel | 3 + xff/engine/expression_allocations_test.cc | 42 +++++++ xff/engine/parallel_compare.cc | 104 +++++++++++++--- xff/engine/parallel_compare_test.cc | 115 +++++++++++++++++- xff_extras_api/read_source.cc | 12 ++ xff_extras_api/read_source.h | 11 ++ xff_extras_api/read_source_test.cc | 46 +++++++ 21 files changed, 458 insertions(+), 26 deletions(-) create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-initial-linux-fallback.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-initial-linux-native.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-initial-macos-fallback.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-initial-macos-native.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-provenance.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-refined-linux-fallback.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-refined-linux-native.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-refined-macos-fallback.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102-refined-macos-native.json.gz create mode 100644 docs/benchmarks/cursor-owned-read-buffers-20261102.md diff --git a/CHANGELOG.md b/CHANGELOG.md index f4416733ba9..aab3febbe73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ # 0.11.0 +- Reuse budgeted native comparison buffers across chunks while preserving legacy decoder reads. + - Avoid redundant zeroing in native bounded range reads while preserving short-read, EOF and error handling. - Render lexical filename fields and path qualifiers from borrowed input slices instead of temporary path objects. diff --git a/TODO.md b/TODO.md index 694ad8f6101..f65a6d6a413 100644 --- a/TODO.md +++ b/TODO.md @@ -389,8 +389,11 @@ EP/JC/P work; candidates are not speedup claims until measured on both platforms [Select native range reads only](docs/benchmarks/host-range-overwrite-20261102.md); preserve VFS and memory-budget boundaries. Cursor zeroing stays unchanged after a repeated Linux ten-worker early-difference regression; revisit it under O07 buffer ownership/reuse. -- [ ] O07-O12: Profile and qualify caller-owned stream buffers, typed reusable directory task slots, - batch ownership, bounded result reuse, active-worker dispatch and direct production evaluation. +- [x] O07: Qualify cursor-owned native buffers, preserving budget lifetimes and legacy streams. + [Native/fallback evidence](docs/benchmarks/cursor-owned-read-buffers-20261102.md) selects one + initial clear plus reuse; reject uninitialized Linux regressions and the first shared fallback loop. +- [ ] O08-O12: Profile and qualify typed reusable directory task slots, batch ownership, + bounded result reuse, active-worker dispatch and direct production evaluation. Preserve existing stage policy while isolating task storage and lifecycle costs. - [ ] O13-O22: Reconcile remaining derived-value handoff, static catalogs, invariant operands, paired streaming compare, reusable stage pools, byte-bounded overlap, archive indexing/admission, @@ -730,6 +733,13 @@ The safety model and directory-scoped permissions are tracked in ## Active engineering priorities +- [ ] Make local clang-tidy header scope resolve Bazel `include_prefix` aliases. The physical + `xff_extras_api/read_source.h` is included as `xff/vfs/read_source.h`, which the current + workspace-only include graph silently misses. Add build-metadata-derived mappings and + regression tests, without a second hand-maintained alias catalog. O07 verification explicitly + resolves those BUILD declarations and lints the affected translation units; keep that evidence + with its report. + 1. **Fuzzing.** The parser-through-evaluator, matcher, template, PHAR, and ASAR targets now have committed seed corpora, semantic invariants, ordinary-CI replay, and automatically discovered bounded CI campaigns. Continue with shard, stronger matcher/template, and regex targets; every diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-linux-fallback.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-linux-fallback.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..3e3c9474529ae8223902f0e7e5539fbf0102c132 GIT binary patch literal 30145 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 AssI20 literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-linux-native.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-linux-native.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..eced65dbbbf9f0d62971f7ea5349621e80423862 GIT binary patch literal 32617 zcmV)6K*+xziwFP!00002|J=RXj%3G?E%+-0fq5fSZf5Ro=6!JfU|!~JFpUP0SE=Su zq)=5-OFig+AF~~-VpVwhsxZ$@3@}t*sEVxIJN#nTWo!LE-~aXgmv=AEA3lEnZ~xEt z5BDFQe|r4&uYY~#|MmN)XQAhAg{a=&KiSiuq57zgr9F*@r>FAxRK@t|>H8nP|I4rO z3%>u~-~ICUfBvX<<*xiF_T!(Qe|diY?(xTeTK}onAOG{+$G`me=bzs_Jn~%?|64CV z-~ai;_y6|q-~agIk(4=l^_piU0Sv`;UL|*ZI@Ozy9q{{zpGP{{8)j zU*G@u@b{OO=l4H8|MPGDT7P~1<>Q}zju$?DrM^7h)8ix2;QGY>||M1iO-`@S{{qz0PPnTD?JVHq2{_*9dj1gbA-w)P4p6~tFS7jU2 zjQls&dtY-d&;C`Pm8zduF&(BAKO*+x(bsCc+_$Gn&o8DA4^Q`_mX{~%-&2J-s|K$xDBH9(qrsP-sj2cqsr;l*{3Ora4N>*4q~+n>&$N+H_2bsc)3AsBK*BYBZ1wr^sXyuC zcJz9 zOMNa6_IQ8);@_h`Ni58hf3sqbkG+U!86qY&{2;JB-8U`NzdW|T{^R-mf4+bB@%&@^ z`)|HFwvE3$0a_j(e5?EYlk_T7%KdYr7dKS)qJGu2$*6H09@NGo_ZNMp2jkkMKUgbg zAKTYn`Z%`o;02|Qv4#;*8N7^KRiA?zkK)p`ESquyPp2X zcgL^(?*I7VyZGJT{a-(P7r*?w`=_T5-~FF)*M9!>&+!sJeYza2hKu(Ni_h-={>$TE zp5MQA58a3V`23If5|7V+`sM!PyMH|Y_|b1-1eBleRkbH^Z!GfiQXd{h^~gf0zuc4D z`%`-NWAC9AKTB~3{Pc9s_4)bX<)OPvdufl)6fgL<_rHGp_0bo?U*f~_huAZJPx;~d z_rL!ASjyr5`uy?Um*n5{hwuOM{{3J7{x|>Q?|=Q}`MalgA0F@DKRrKv_wJW}{QBsx z`Rgy=xyktMw|MkVj~9=3&Z~m+Qtbbj9(DUUleSCiJ;p{*B-#Wbv zzy9s#=d0-3A98u#PygvA>ZcF>8pneA4fJrxP0jF#^zR>@-~aUZx4&O~%oNw=Umrd` z|Mluq-;EC+KE2?-H@CG!?1%XIpYJ~UWqdmRxctX|{{Ws|OwB}BPxlwo+n(P2KXD6_ zPw(!eFbqmx30YBCB3Ad9=@Wd zzk3|NGN~mM!WUt|M6O8_3!YN zJn-ow{YrY$MJT;TWSe|CU9U$(ym<@6ZejCZo$ZvT>k!*G3p{=I>LK68EiA32A71$+ z)30v2@@H;(I*aAcoG*N5V0@2y)(s}W`fwANH~qEBhTH3t@oil5Pj4(^tiOA;+rE2K z)5g#MeUT$$17uPaL?MH3jDbi7=Y64vAqxX^iGkz~^~9bdhcU}u!`c41Bi@Jus-Tsp z8>5iszh$I7@#vPfe;(z^Ii9$>9S8e9Zj8JuE0^@jdlb+(>v^cqwdb)~Y;5>F51qii zM`U`_jVtc;^XAuD?_lK%z46BR^S^(1{_s(M`s-CLR_;tZ^ljuP#_dH7PdJ ze(~8CmMnfl^A!8P<2$~dJYHpwN4es2?)W)%{IW2S%^N*x;nvn`=m*l4$H?FC+KYGV zZVR%9*jiNVD)1$JeU{z-U)eAZ38G?_dkKm=;nCOXC1hA#zeINvbo~-c=}<0GIS-jCEkf(S64#wd5MuHWh0vz7>V4v1nDGov`SW%x0I|KcIbp_<~VfiETdCd;S4^@x0& ztJ$!~?^j)BxS&ikHwcEg<1Fc?dm7Vv`svs9C5pP~Lb2zx9!8?tV5U8@RVgPaZk^NL z-)cK&0mxI}bxyB(TUpwlUNmjq$-_`qUVGUa8^r!}8|j=R3K~+gT{&Np>o%oZ8%ui? zs%?~>e)^c7?$5V!M!HJk`FF`4MUM)v(~?q0zEbW_k7~^FE*_QS<+}LgyLyQLLZ{o6 z#N8d^`aW14H=ao2mbZl*ZR(b{1=n>Hs#Zq+yL+(Gmocv=&mhDgW#xt{pK+%eQRZ5p!(>GN1NG8so}E4CKTW_H62{E0E4gJ%BSSH60xd zzSUCVWg!yg^wV{^lQevL(?_CTp#00mZATHxWE6`8G&p@Ls;>IC7sF7YVVFWS9+Ivb zxn=hBL)MYXxYaUim3)-u=h-90>?vR!Q;h7UD(@OQOTLjh>UFh@dad~z5a3Nto8&PY zMNj6-&eMm0N=&;EI5E11H$9bY(w(2wE(JGIGQ}n%>42^ihw#}rRh9!WbfJSaO>m|`1(>*a3{L)t*0@an~M9BzD`bn`wxpI z*G1Sis-OAvWn~XS)+s6(1IyWJpDrsmPNNUpB?S&`eO4J*jMllH;gu!oHnhIAhLUxy zecBH9N%>n#zNG1NxsRzuL_(SlNQEen)u6AAs^R0>dhQiXJdSSC)(8XG+?O%6Q`v22 z-f;Q#tA+Nu+U=F(nOeR<;)#uob^hwNub~>&b&f*j*>*o8ef2G>vQAtI^za_FPUocQ zNH_B$)-eXzJvt|T$EKG!dO_)zD2DK39r>0C0>Z7f4GZqSXkGAkgHmA&YpQXXTcGrP zAsMX#3yvU#9$U~E^=E$x|KA2igwTng>kxdexZ+m7bp@7VAT-}-^^}#U9=29mqaGA( zN3E0j(ysXsoR}IJSP6sP+M`4UqE z-IZIp59J+an*C*r*;yud&pEvKj5fXRO2s#sd%?X-9(wyAudcOKquW*^?*CB@tYN0TBZp^8k0+D8_FzeH`hBX+O?@@ zw*_kUJJxuOtoA??xw$4bxw+9c9KIIdOe(G%a-CMfT}jW+E%`s|AW&KXwYz8ue*F?L zA)0Qh$I&WaN}bHWc9004Fv}LB5Y5&eO@vT5d<@dRd9u(W(THT$l_3IEndpvA;N}tx zR!LwnhtnD``5kvr?J*229(Nu}N|jq0y(smS^Z1uWGz`}9Tk8;6*RO-f5!mW9hGEot z)SFYqdN~LIzrJg1nm%FdclrQhtdd_;dt^2_{f36WM2mcLV$I&U@q79U#N#_ax zMFWCQ?Tj%3w`><1y4(zbn=vId)mr{MnrQ{aXf*0HM<(vm+?1x#T^`A|^+J%L)_{k< zdcrVViHWabVBQK@hcfrEhD6qW3Le>06YZe6)ox>Oh+&XCX;aJ%*V@)61VQhZCj4LX zbTbc!)!}yxOkq*au*mfhi<*XD`EBhAI-Q~j9IMj_X|3czh$evn2V`>4a!n1saWpK_ zE8$Bz8t8O3^b&H)J9y-3>46zOY{}Oq>%gd|pUz_ihrM8w;mAyzhgYSflPUJYpt8Od z4K>jG(`h2F%Ip3AJXYD75jr5qqSMsI>Ej^YNn0+@lNu-*qU<+9q?8!^X3e9dvbPk-IwBT5D)48tZQFWfxBiMH8 zUTESUPGP~p`IUSLjpCjl%2$IG`F2KZq7ktZ=oBFogZmjh!}ECh7`$P7+oAnBaQDc- zv%9jv^g?UqJ<>Fn03$4BcZjT92g*+eWixJ$nB%F)vVNiJgfu*y?>&?%3;_h6nhJ746t zc=OUgHKgQ&lPQ7x46tJoRv zkD#z=>yb4wMLxZ8pAJZjdZ(GGC?>{$J4L}}pSy;2l{6 zAOL2s$X)b$LO|hHbW}h?R0fzG46MW{NFehdvldXgN2E|jQ(C{wjdO4NYIZXg~z z>u0elR)PyBn;00qKf0jn?Vr$F%}?OSzeEplN5JlTYZFk-EMH0=ZZ$xD z#E=zb!foxHf?%J>&JFnAntEPK#6UWE<*o$Uk{z9lR~VN?^O_dS*fyd0rOT&p=T>IV z(p7kGq|HCo6X2i6Mw_)fL(Mp42|V5c#eKe&vq%r|&-7R4N^4r_3q#^cB`p6E zZLA^a9dUe;%*ekTuJ4eo>;)|Z+>Dune=D5x<4^%=BD)(+jq)i)bXXd&*z!k))5K$d z>F)w9X1y6TvP@O^u8a|`?o+b*Dt|HGk@#)v5N7N@6zOyM)W_{_pRnET!rCak){z}- zl?gkz1z@xqO$P#$HL&wJF$fJ0!SXUe6m#MOXxvuVXF3D17|`Ca9_e?Fh_L)LfseMr zavedv2|{8t88-Sfp0-C+UL!Qhmh#;?@EK4=Yt(`IDj9+U)VcK=%Bblv=csk9Tfe?O zNSWs-@t!axSbAA;io$Vwy|t~FOlA zZB)q;Ptz-+CwmJp{3IcwH7Mye-Hok?(A*<5fR8k!-{pT(&PZJ?&f)SEM39vfZf6Xy zTB~Afpp5S>GE_R%?)SX+@Po9z5rT$d{5#LECCX>9)_fh-7|qhbZn#66F#s#wn+-)C z7GAek=%`JuDKo|y1$bXi1yYt(QQn|)HoFD+wlOX<6{{iMhM-J+E;-gv2Th+7&;1yv zC7@h#%mOHz+u@FV%@oAw(%M8psHP=@JoHw zg6&b!<{2oJ`*)y3hVk0lOjdQYiw8x@Lu{%RNq4&7|3wUM@=T3 z0PUsMQ<#%$%$)2b8)TcGfDBs~ zwvxzLm){w&-<6;%xmC{qu7pug@2?|RR4a|h{S>R=-hE_&w#6fMI>m*==B+acZYX$d zH1qM+mPfS&B~e{R&{B~0fbmp~+LBc9^GF?p@lBzyWt;TxjO--NWcDa<9oth!(=%;C zKkaD(_-(bc@Q==0tZgt` zI_(ek16>y_g%I^%o5job4ul7M3`iIitK3gWi!HkOO06JiW<)fnHVry%n$CIw{jH8f zg(FLoDwxIe3MZM8L#D6w&oi{`b*kiQ64?N1gvMg&}2WEfKLuFM0|)R&Zk@j$70oW0|OKw&u7= z-A*C0GC?P?^m@j8WEgA&uWLvV>GJ8@$!2^z+?Hp%*I%R{yTf4Ny0#vZp@Iaz2Bs00| z0p3sVQLuZgZ73t5jHc}j7M?K0)YAZM=5~fUg8wm={dk# z76^3|J|j}}Z5Xm9tFIMJHrq^#wM8e$X50ZSmQ-{p>NVO&V^BIjONsAU*Q^nDSq@{do>(Up-yZ)3Q}`FlXjt z?Y)g`*VfZ)Rr%KNtyw@{KKEl^AHE&Ek?5O=qJB?)f4=u$yu*Mz0$dB2@gQ&D%*C?9 z0Tz)@H_($OL0J4gNvv&ksw|4nsCiv0iWaWBF?;00X3~0J1G^XjR!pzU5W6oi?3l7x zHOCN2dPZvRF$KEy0=*f51bN!!3?T$JmN5nkD0b1jPMg&kJp{|oA~PxCuR`pZW1_^~ zdsLxS$fQ=*`2y`MF$+OiKX#q`{cFoxwk5 z9?TM`8Fn<6Tc#<@EyFcL0yPK}eo^%KN`kXPD&W?UL2p|X6-R7BVC)f8yDO+`eKKYk zbCo)~k*FqY&@&^t%7JLI$9ydJMzxvMfUrR|$N)3(wr(jNnOk027g1RXUI{*DRC_Sc z9P;P~@d_MLYFDw}ke;2)jV^8Z+^DtJCvzh$9`^b`ZZmD9pMSx2qxYOXueohCpx00^ z4&EmCccl7hk|R%cd0idnfhIt!U5846u*^4lLmINSETF*?f$O0NHSKA`?`KhMjpY#p z<&owUA0|@~BhY;JBv68nR1@nMwt>RMg1nlwY z*SirGBQH!4_GuZ7w1PMCV6}{osvHC^l(9ELqO4lk=%}ldDlMV=rot~ zLU>@qKurXp``grN_BR;$Sk1kGPzPFRDA)Ax@G4+zu^;KERY}Yg5SS2piE`aTY`sU< zCA%FOQESqf#uV@LaLd=vRYWQnb417sk0-9jEY@cso#?vt^E@{@jOCg3bVs=7Gdnk! zHr4{^OemFTwN1eu*ZfRY4DUz>Nfn|ftCJRkd-yJSTFvGgs%w))@FgaW3(xEF>5Q9N z?Le*`j(^s1T`6_D-8PCI9=G*@#w}2__Bz-1@L%$rb*i0en#^LtcQ#Kd^C)VSpyy1_ zrC*N*y3+~_NZM(ItLt0ZOX0MpdF(2$OP#JWTD|kkqf-B@U;FCtt=^Rw-7B9pYF{&a zdKbN!(LZCI-=5pESUOU-JtOSe%HLY4nuChd^F_-93Qk^qHHJ*52~8bwS3Sem1x1 z*`;nwZc0Eb2bdBAA?M}OD`Og^x%2`=R7B||nDX^yM3JAWbt^Pl-U_wJuLdJ}-U=y! z5<)p_#CliykB5w>Q#<J>yK$Sm)Vhd?zk6$| zJPUsJ$q2_mOh<$qTw-}sAX6!uIS*Eic}upwL4b1o^safZmRnh0`n(I6i7a<&#J=*4 zYkj)~+C1~_Gm(r+xiKCd(ZMLm`B=9m;|uEH_WFFR{}lDl>F4W8vUKMM*f+AiS)S+Z zndNY|S^=3JVoLEC=9D=|wXUcUj%wZA#BP;d!d08t5x|jQsB_%-6cMf{yft9dp%Pf< zbEwl*tM#$QRT*L}uU71gDUkyyy?zNA4YnR8n#C=JItyyZMgXCK&cv8V$<TK*(9BU|g6R#HPu z`8;kNc)%f#A9w;20)l2KY36QTarophz#~}E){}h@=g9RGoobFjkM#~|Ll`b?rwol5 zbF?o2HwTIWdOM}^;|FyR5R^nUurAlC;gQeFM)|3;00LuJ`LQ;!LT<5GdvG^EpQ#*p zfb~nv60AFP@9xTxw1gBWOjNGtwbUJ=P4Wn?FmF(D2Tp3myLVAhUvECknCJ_ zj*;w#+H7hLa;bc(TL=j%pzScDGx&Nvhv_Q3#dsFe(^LA;`bpESZa6}kVZBALQK#3r z?w;u|s+|?U91#6i?^88mDUAM&5w=DI|1S!^Gf$$7!d^e$GWTBL! z+0206C{F}OZXUt#9O~G1;dTZ|?dWjgz)*#996jZ?BTd{g(jX8qS16r0^=q4NYQA6| zVQ*Xev5vG|`&{!_v5e>QTZx`Jz~LYSxOF*)H<9(iJh-e&4Oo{Nw-Tjd56f+Ug+R42 zvpx#|`uVMSW~tVJQZ-r!8%n1XDnmqKU9Uyl)olJr#Bsesyz4~XNXJk;G*jzQB7d#KUuyYSWSt z4{Pp5sf^dNlWicJvI*-ME|Le8qrbh1@D=fKjym1j10$T?qd<$Vhj<#4ZRv&2Ab^yE zXEixoP1IUH#dLKIzLqsVEM%@N+)r^N%>y&Qfmu=6QfoPdq?T*wiG!R9Dqz?->Nzcf z|MfyN6gX--2YC?)B?UNT$P+lH-Yf9ohJcTawnnhI^FvI}eR6PH@*sX&>mdWNf(SRr z121RjM+BoY$a-r-?d>rE+4N|b=e7FC4+^MR;u6ig5*|$U4eQlf%Mu)oSy0>a@Sd)K zuqV7LzAeQ4K3&r-zrjruFye7zIAYT48B>CC%#MO#ED-sU-OqcI0M4^Az*?C>DCnh$c-|*Ydy{_0}u|4(eLOmbe{nzu4{!Kr=|8)zs9By|t zT#m@>rdf(FutkF9J`A)Wo<4_RTNx4^(7<(MjzGA=Q!jr6 z{51U%F^2;PCLoDgPky|{CcGcbN`roq%6Ndtk9i0UaRtY22@Ko*(mZM=kg#+n1$mpudi zPUDpLOU8v3eQ6{RDR7x)TC{SW)!pNTfT#n4LSPWY#<*3-EuFV|ydP4I>y#1ok!fZu z*gGL1VG9uBj4lcFS(kUqo%=m7$&UO~okf~UfOhg%lv`Scq8{Lz6V#cHfsmRu(=(CE z&H%i-ON3Nd6HHID0WAa?|GN|juLj^Fmrt)mD+VZKiU?AFm;#5rqZpK; z>&}@6Zy>h2eEL?AS-ztdb?48?=ptne7hXO$a9262TNn4+ZUJ04jG$?_pIU!y*c zc=~_x7_RER2+&xex=hhChQ=a2HnXusr8W2!J<*-6(b*pI)x7~yEJHy;pSy57G%)TKrKX3% zZQ>``v)t-8(Ew|cLNNFoB=00L7Gnd9b^*?p(ixqN5$K)u)SL_?XHv%`cf8e*4Mp6v zXk0txAcT&f0&R4(2bCv*;XU@Qam?%ir-AIX+08=%dH8X!eo=Tmny)a`p0c@Kcmr)p zb*v$lTnNr}w&|*ROw{u7%XXRQUXHaO__0jYuRUHD7NFV=<&RsPsrI(ml00{#HHbtY zYib>*G-ItsXa+_{PK8UwN!)M<1_2=Vz{=)YJH}mdb{e*TYIwZM=wI1DX&=U zdfK8L;LfZ|3Zg(&NxYtfvr^wT}(93%bo zGD)aKIDbl_8r7lEQOnbAyazSt`_c;%6Qb)fw$)p0KoB|Pw|^N&X_VGZeUDrn9HXKwmLIM^i6v1Y)QxZ-VFysVVFns8Qj@`ldT-{8#leumO~h2IrD_h!lZ)SY2=k5 z+yY(31Cvj`4yRii9-?l1_X~qa))n`2EKn`T{^_tkQ2x-rMJu#nfu@zOZEQSUb!a{W zlWXhSi^zrv>eP_eWxiGQlJaxre&2n~^451Uzf0S{P9e*ke|6*NT3-I4*WxArDNhlt zeQuJznoasoX=54u<{?%&FP+pOpj8lnh-QpGGNbcQQqu}{9{<`o zjx~4#(tc!2lA3#Qbkv9dlcw3N+3a3Q7e+`nsQ#~Sv``+>8a>FPfWOS-|Ij*un*X)5 z4;`hS6217gqaio5TXTro7o_g#gwj(49r*>h23c<&1`Dd0{L`oOzLIU&ztM~2%V}er zl257?hMD}W)>nGjSa|NHXmIG(Tsl+$^AQc#k&ogBk8|vwn;-#Y=ym~Q=B*N*I|8CXfuZ@* z#;9~oK`rEnff1l~Yf+u^P5y%(**G79P3de%q?L`jP8y8-O7z*(bi)Es$RoYo>Gm*x z8%MtFMBYSaWgUw6FmF|AUKiCtKB*Q^x>w+|U+0sBjDFX5t&4mzu%vPm==R3;*&NIuT(TO2Fdb>DV5$~*f87_c;~v98>tItL2Qg1jzCDe0rJ&1PGgf?K=wfm^&98@^LWblnBve4wJVfZt z>ckzeR}AV>i49Qo4Q#;r8EWo5s7*>X6zn`#_x(4eJA6^h5aRUH`x&;ovj=r*>4(>I zo=zSU03r`aj$J2UzF&=!m%a?3QyuGj(9ugsoA$w%p{27C--lM#^v9U8(!cX{w8+PBov8LI)_`6Z6p*caJ-X(emGgvQomI5d^j(>3xW!dTTgn!l z`1QQGp$U%K$xb<@R9j~xX$(U>>!(~;^1OWwMv;Ozpf8`Ea94sLA4NE$LE!H=Bk1iE zy!E`j9pj7$Cxq5&NAP15>#@oi)tv6GLM!iu-gQh>ZHvf^lhUn0eeM?**TKEc zyue>r!hRRbBb`2_w^!&}%FmR(O~bW|Sjm=5tc^2prI{Z8l!m=a3JEqyRt<_gQfca)oz(ywi0L@n` z1AhXl8#F3Z1V4lC&Z?ijkro7(!KX~+#X$9%a69;)QS|c)i^F0U@}r~8y7s(bl2cey z-9q=C28T~@xV?GaaZs7}tx-uW(}4LFpM;K~#ZU+YCwC{Nvc17(8d`x~FOELSID;A0 zf?@}~1H&+En)unGYzugJ6`+5H;?dSlF;t-n1vG;P4W!LFk-=}xfce@nN@5LeMxXif zg5&8N?V2hCj!Cp8P$(m(Xk8rzmjW_rLPORvna**v0JGMsjUdQauLP=5+bcAiE2iad zm@g7ga$$61TA!7KtF;Z&5iK#q$%BXoXl6gynxpj)uT~eN$un-`YbLbN zAp<9&PHb6QQdwl(cViv0RY;Clr@h!Bn(69F7$8xN8J6EIvft;*@u=9xWJPxD*;LJ>zn??dd=W zl-K9-npZVwRr60L63{(2xedL0Vv5VZp(0YIDnwn*AaV0Vgb1ZE@Pd|l3J;FwbG;2s zhgNe`v%`o^=01!80VgCSFEj~}M)5a&E;R(svZsKx@ELT^6jX=Yfnk7lLC&bf`8JRd zATUGnkf9`fimMoY9{^y0&_d`Ws2w>&`bu))NO!=1K}V4t@vS87>r|HRjMc`g0<8X7 zXpIo+1waK52tCJen57;a*`6uAY&vntKCoYm^|N z1R)UG*JruQ*kPL+1Y{c_%UTmVLwd}8LgV!mBMScP6sgtVnghb{)EcTDPvK_|S*Q(y zwK~>V4>wc|)zK#($6fL@x*A}tb+%ZLg||uVb#pWPKG(i3qZ`5?&Fz)|8rV6FSwAHW zD8N>Ns=#yCyhzR8l`35d07oHJV5{wvG{xAB)4D6iM?+=Zs4a9W-TgQElf(uvG>EIS z&GN|1dHAA{l)e@ps09fIHM*`mdWhLup4>L7bfD;mutau5j&GNO@Drgxc~=VTnv?M< zbkAIwo33>OE9%tJ)MD65RxD_305^O=!Qm*cr0|RICY{C(F->eZGJH^S^eIT#5mY z^ho-J_xfsbvs%7nRqKUZWU;Fq?ds*z+XkfJO9%}iq&s>e-{IECW-O(oRk|+Xa$i3^ z7<)PY-Pe6LkP53B-l)tf02C@%p+!v2@mC0o9gluotfRjd3O^uqbWpr=d% zM~5`eH%%gXlI;~)>p0LF3^>t)aX!E$36k@*0TSweASs>OfaTaHv_NOs-ZEPL(9s!G zG!zr|W5f8;tu#F8+>?SJu(h}E#+EPQU=^eE!zW^(A#DQ?#a3y<8%#?6j$4ENRRo4wqr!(s^QR=SzTPDDq@-*6T@2>+c4?F~zu@@oyUFC+8>S*vE0|hb zuj!!-bv-uc#%$!N^Q&Kv4tRJNqPS%eWQ}>Vv`uqg;yJ-uudJhDGfx!WJ(AsY>0g*V zZeGvpE9#tHKK*(-qV|yu@H`|Xzy%~oxUIHQPk9GFML^fC3^?r3CUZBc=CPC_EbCrS zHB@xx32W=F))SrdiD;ciU1JKq!CNqKkq-4Mo!^ZRr(X}uVM>vSF(C9a&&feWs8$92 zZOK`$t;H#7|*J1O0 zrMys#2UdgDF#X!$WRGe)$9!7tB~7a~bKSd7$&XUH-82M{8e>4^_sLpR&JUFe70;&E z?zN)!_2ttO?uy5J;KE+Wlh!zP+_`LX)LB&tSMI&s*QX&Da{CDiC6&2Oa6x?ePQWl|~3~?Q6x- zXf;BV>IBu5p1<|x7kjL+5^k9gRCcOwuZMKLft*1rK{OC@=9(3G6Q$Z~aR;Q|0@GRJGfAs^mQ;ZFdq-sL1!Ac zo%whZxiF?L>)D85zwsG#1$4|F7qA`3NQ?<9us)V~awpF#3xJlRl*?wS!aY*Bi1I3+ z2!=1wu0cH-?E}dl)`+0wB(Uz@sJ?mH#Gvg#2(Q~{B4k^7xo^yi)dA*D6wTs>Qr`rf z=Dc)lw10-8N;{lCnVAx|Ucxs+)*$lA1!dtpx%MF9&d1|Dsu%>QOi?^O5%27c><(hsY9t*rAEYPhvtdxdhY{+nVR_IGlqw|9Eql=yl;tGbqT6GPQ5 zn=8Yiv60O$Y6x?$vpx4(C}`_brWNWlX(WTEdWxoGi=rt7otnLs`bOJZ0k@MhR00m% z&KZ59${fw|b&u14`LC0FvcH7nCBwynZnpszH#kGYr*z)^U;$3OdYD!qn{XYy2G%oQ zgKd5T0pld9gEX5?CHYND2PNVcih%N&RYsGtQ*A6zJLhm1i(hmipht{CwnFuc?xI+w zv98ecHU2&JuT3PB5!>2587p2-4*$0StLJ@A%%kJo4nL^O@&bGy-m9}>#X zA%?+fpx@F2GAZ)}@N=V?F0PAzRnhf)ZbL0K&xq(05AO!BulXB!pq6_`IiCV`?A(EL z6)Jsnp6V}wAp1BBS2qLkc?Q4X8MZU#)+=C2glHw5 z&O;!NIZ0qFcjoDsdml6-D|dbPog*kV8$Z;7Vd#xKP*mPNBx~ZCHyTs~wKXbbilu`> zBTw=_tQYc)ouZw=6dqgd6BIq0umqV+L0%FrUnFAq@Aq96@9r7I9b z1_ZR&8tNyuDY-jJQ)whtN|6Q$JutioPHZ%>Qtip))WJy05_P%9 zoMG;e69lEv#lokqrbn4_Yj1g@tsB|`YZyeUg6?a-KBdiiKCx0aoF;&~4V_ZcG4nAF z&hxoY*bP8?UIf*EUuh-gNwIN&XC5@Pz8WE7z8*Nb4xvRZ1UVwMXLe1BtrIbMg;8%N3qtr(Yu^F z8GHD>5ZCD~`}8^?KGgHsZ2Q2yi(jlPI}LSiH;ZsWDIUL!Ofwew>%Q#>s_Jhj@f5#L zp*vOz3V!s~h2J0@3R2NL*Vlz5=}Ia(X2{Y{cgH$L`sp+gE>X+ZNkGyS zZzXzZdBxHa{Fqr29(?rEy0?;-XYdp6rnje`K9vKPJPYaMG(e)&@+M$rJlZ>mTKmSs zr*mjScI=Plta{5Ll`$LxE~)onwzcB0uE#qv*Q8MUUr`vg;}ta(z3 z(9+g4)l;$A=Z%)fr>aO$1s++yaNt$FUd=9rFKgvnk8g|dzyKRCell{ zt9gw7!Dzd|GRS4@{1v7U{}Wgs-@K`n6STm2@K(r@$yjiAq*pm|0D!R_|>d|*v17-Ro#G#T8c|uf~4Ip6~|up4pg0f`F>ZrBbxLwt7>)Q%&h1wwQ6p|?@<_>d92OASa$K`Q&H z0JFCco{dr+z(z0Vp7pg>6i{Tqn+|ynRW`QKtq2AaFh)MF|jd0Ol0JXB%bMY z11Kgogs*5a-PQmkr7ecLb3h4P6wKk$D{_*1`a$aXeoNQA`=k@T)%_Sn6-|pXm}>FE zFf}P9bcnL=;K2m1n;$F{f{yrvb{HKU0IFGBMVW?Pdnhubdmn>_pkl3}U6{;5<5Bn& z5b)qYodd|epld4UXz*HR8Um)j5JXyMEWyqh^?N;NjhPolcx3BsoFvVM#96qYk^M14 zfw$m!W->-c9C6UKw|W6GKh3~GyUxuP1u%L|B~ekov`m`iTm902zz#&X1VJtnPH}S} zyt(aAz$A%U==6%F{m9D-cn;!gA!!#j5e9CEzuH~zekb%BQaOIx8V$&AYhFR& zRx)!mrgv?tH*?3PHB23SMrE6 z-@>Klo)?iTA);3QRL{WL`_2gxA|*64cKP(}Qz+zlh5+^pLbLTW4+U)vOL@iyIE6il zhtlU$LdT>VG9n&j*L5)BCkCL?gT?5KF%&nQLluZwA@~}N323^!92@F7sy#hkNu$ac z6WJ8}+a0Y-gQ`Q<%i`H#x)$bUv#9|2I4BH1Pgm{?uF)|C2s9mUEc|a?)26kgfiKK9 z4ej}cdW@K^rUCH>ux(&*Qwv2z~&LG3aE zv`XV|?6(aM!}=-NYp{3Lme&3`Bw61s4-u+0mPTNZPQAZPt(#^e+lco)n&KwWmY4ad zhR8uZA+Bc(xCg0~7^OFW?FBb0mja zy97K-_&*96$2q$o9&)eQhU*WJ(Ez5w5Xslvz1W=G;6Vkv#6T>fW1irkK;CbRBZ6w6 zXP=O+aW2Gd5x-GT+K)W}k3P?`Y!$)$Oe~88-(($cqnxr5Zs|k^m?N)W9QDEZOl@bsB(o~X!Asut_$oG@g*nKA^eF+-K^O6zJS;WFKh zjtR>dLi5^!lA{C5foLq|OlhlxAD4^pQd|OL9GGmp@uwZ9dgEatVacexTp*PMf}vs8J<)}?QN~M!>Fz1>rij) zp`;U7KOen;4%2|EGoh+`?|$Xd7d5aj*B6n!Tt)|%_$6}rAW!$)) zpOtmrF4=U}CRkfj%XdHyJU^gFCqz5p@zgklljVrj+a66>>r+)>Im!JEg@+3wcd76I zf*a-8U>$TC>6f4eI3CI%2z8{X>+2D6%ijuWHUP&16g{d_tQq1bJ%=mSyWt0dX>O^0 z5sdi{xsUUGL%FTqxhD#2-KQVg?Yn+~Dt`OeswznEh_v21NwOhT9~g@?Yr{deaE(?M z)s4Z4x{gmT!+L+<+-TJ9TmGB#87kFf1eNs0)Af{z-O+c{$)~>N-pU8Bgz(6V($gt} zk|WBT>6NEzR@T;H;4;7RQVJlOEX$tm_0ySNZ|3IbR!68Df`0pLFXV}M*%;gjOcAJL z=&hsUTSI&v@|UqOIy$DKV7g%ff~_ZSdgsB_nAlAZZ@P6I>5fs+>swGg!Pkwi?y)wY zY8ba}`yoZRv+$B%c%AGINt#ye0J;{?s#uHKowM?!D|S2d-KVDUa!zk!ZdENmH&1k} zC%+eh1he6aH3T`MISlasY>ex9k_5&A8d7>F6IptzAy#7>XJR7|VmgOBM2!Ju{jFWI z^(f4Judw$Cww!8@+`0JKlL&ZFmzpx;#>J6-yX#X!>Ow|)-b^8HHkdB`!^>?P;*QZnmdldTl7d3lxuk@|yBy$8cEscnpFtp1VG$<_} zb%(yiE%w`|w-pQUJNVKTk}e9mL`Sq_0u!v?l`o# zdOFk?)5OH?De&N0K)3ida-_Y^oBw(fMT3tO(o)njnxh;gOcZH?q4D27y{+q#PB}w; zy)c-mxsg3(uN}w%m#=8j4BpL&D|GXGDy+3bExpU9SF_XBH>?y(FX;$mn4B>a%M|$b zG;ok6O4Kb@(lAff>z*j><YT zp>I-N6$wJ?4%E@XjI&?PdWO!ja8+GruqudN$lAoJGlEJv`wkQ-ClHuu0x23Mfr&nP z8e=LPYk`;$1X6}vOK;O5ah!b#PX*eV(zy|2ZD;9cFvklwgd1y6yl==vn7$P&$7r6c zwdxxSqV1^K&roCMK~acUo{0*X(Bv8;rsbHE%)W#jTsq5@Kv>Fa6YO?R&yrqcj?t}k z7nQ+Lt-YL~g5f8m*R}By0aBNtfN%;G7W?Ve^*m6B!=jTqXgVa8A4&5FPg&bqbOXVT zN11oyAjnOhRL@M;9I=(r5V^If4z|=$f-j*q2$3#TL<2S@FGELO&pcpft>sC`ro3Tz z^s5^yU_GsU!gXRzSyG1Jr+Z)wlz}?%9+5mwhWnV4J|nO71dzr$uayC8sV~ozac?b; zJB5n^&gvzQ#cDJo^DWOHE&*c9HlV4R>KXn_N^KPYEZ4Qr!)Q;~=PkOY;Iou$H;}kb zWE-I)nC`)g9|K#%K`vc{HT9RA!LTIM#`>CagCb%RJ>S+?S1^u{Sb7u2Df(UPmQ{QD z2o$=N^9<>$7B!DGKDSZ(>uIfthj1NsWc^ohXt8}J7uL7)2EVx_TSL}9JNXj`{xhKL z>>j8A<*N?(%lsZqQ1&fOJNAv>EXXG2psxdfHYh!*7!+-t0RbrL_sFC|zek?T63Wo) z>2Ne$a{2TsiEMe$aSUNuTC%0ud=PggnPUZHjWdmz3-A)J%p-0&y6DTM=WANweg?gy z=U5f6zzP+_Q!vj_FIiyo9a(WFrojIp)!WObC%7P1UxM`J@Z65vQ6Kgt@OT?YdLRZi z8PZN^a`+LUG?_}9#%#7!OgZuaFacN4(6Y=0?md51I>N^m$a+>MHIuzr(Lhl#U>le>8_j1=NfUIZuzkT}l{+S2*!xYW*q3clS1mXGvrXXut#Mmx>qvQ=z6XrMN;JU zbmn5(D(qYIBeO+?5R07p}UT z%|2*jI*6l%4A~jUtTtwVt>uA$&&|q|>w8|2?t`kQ9W71IYIT-4AC#Z-3#BVX1QtN% z!`H7)t&JlzOdn5DTAQkiz|Z=8PRNO^F08)<^|nc%r;|FbdPeWDf2*{$Ku!v0+ z{&9?+W?!O8&!fF<)(Y#9q36kED)%OPIs~j0Rm9 z*zX9BtZaCYOX+Iq$Qe3vn|vwdIef#mq;;vvn07@y4cj=FO*<&Ea7QFN6GEZ2Jcqja z4vY>M7%H?-PQlyCLs-|||3OPJ9@^g0!xJq_%6hEIuk^a@5(!8+7e zSQ9;a%I7-FWz7jBs2v?tWYevzgQ+J;m;7*x@n`+j*GZRZDB@I@$m*Tvhr+y#FFuiK zDNq~h;)Lm~cx>d9n6MpS#tTj|2m2J_e_sUg{}aC)W8u z>nvA(+{!Xzvhm&h^5uo0byG`kmF3=Jw~#;|X21C?OWaXvO)Ag#q!tSx`Pz9w{K8A z)foF-n}BlTMcCu~@w8s@L{m1gy)`$YlHYgt(P@c{izMwCBwN+(>qvk1iCrf6hBhp} zC#(5|=ZWQHXud5JK{Xix<9jR13Hxt4N2lhPBLyLl)j!k~n#b1p?WnU!uG%*!Z>p^o zW{bU3OerEfBYR-~7O9-tFA{aKy6YA^%}VU*lG?O5%C;H^`OTRJi5){ijZtP~DeF z^-Iqqn?DItKcgrS+{eu6rytzGZwJs)4-hDTE!G>kbhd`tf`7WMyU)}*1WiuR*(GT5 z8|qFT@&bfMqZ^lCXNZg3MAn`^e0It_GQ~{Cx-=-|Ry@V#;q$v(0Y!>*H2FVO?zbwm zbX?o~2Gps=+PI%X+w0e&Q2LE#J@SL*F1;S=NqU++P(=C}A_?Tia2-~YAR(yB$lKdX z)qW|K3}4V9pD|EL%CZ&)7M5G>aqUKVxyR7}UG%}|z9vGMVA56U#yhBA?EH1S#(YLd zm*+vD?j8w9A~(bX!hQD1JK&dNT&*I73iJ}idVZAP))Z6ybfyDtQKmECDADUL0ISAm zkYQ$d@7hY9W8MwaATV{UsMme@^n{gA@}*ewsjxvY_j&Yt%UF2iqAh(G>Kr!ja1r=l zaYvD@H^@Qqb7iGlwGHWX1=1=0F;YhD6JyeD@TR5aH(-WmZEe4)$$G4o2uYN)*v$|z zAdTAn&IhpgH9=I5EyvJTWK+KqMAc&u|98INw|6pszW3j}k%jtITEomk^9royglpSV zdyaXU0_I5zA^7R_z<3KipL~y=f1C7KWh6+HsLnDbG2*hZ5TzbNHmjFF$dNitOGRC; z=bx!O?`GjV0)3L|47W95tZlM*NeFJD;Hw+1-a% zKyL_%%3GnyVnzg<-iP35P}-wxce7njv00452y>Eb{*(`tIgG-E$UD`Jl;AsL^G8((T@x=$}@kMRz-w_ zXm-#S!cHODRWn|0M(=-%4DGUxG%uFe*29gxpE2yqEr_4jU3p`$ z8DpmU+nQnvLFif#Nd&qYHt~4wxv_A;wypva(taC5Z#Lg~$|UzHOeo(*G^fO8c~}!L z?Z`;pfF>mmiylro(QC0M? zD<^Ph1vwfpUmcaAtlQ1b9$(r~bPbGWfn@DE>rX|UA@9&grS)vQGc$SY5lFc|uLa<= zJ2IYQ!n!R9q!4|QYLL`@W<9E}^Ctz7sM$Q5`W1hYTW%S_j&%7)-rlx-lfI3P*2Dlc zmLbNNG0QFQ%z$aH+SZfBRU4re^7VZWNu&)%j&8Qb@9|(%LNT3ctD#?=r>*&|U%p~^ zY>1fnl>TuDx(NU(p&9Qs*S>vW(wT&r&{$WP8TO;5+29@rC|yt+5<{wMba_El?tX|N zeO*!OqwTP234xgHSfq7l?wYu+S+P7zcGTzFIwF8n6fvB4>&$Mxe;e*G&92yop3)^! zmLTz2N3BSct4*>tn?MV(qQGbscvX0sp|$8#rF$`cK0x1+2{CBP)QxDeLHE_5IGHdi z3ss)tq%D)75=`cxB_ay@GIB-}S&ylF*vKmhD{OoQ(*K|fm1SEZdv_2;Zj$3Z@^ZYWPP@q6HlF+4-Fv_GxwjHe&T z;mD4zC{HJG%ZIrmtz}&=6+-h|m1gYC))Eji69Ta^M5ImFO{2y11nA$!Vtqiy zgJrSV+UyNj_U`k9 zR_pnYHCQ+p)f@)IT-eRp8rd|LqEm(#^a&ZTF>5&lzB9c=!?Q(Ax4gBSLb5(6s}!q+^3$tx;Nd3c-ycwajz&UpKF_7FngwA1kvUi4#Ws3t##&d-kG-@k>F}g zL)Na_7%|FFH~KjqTOoKFs?K_RFSj0sbzWbh0OqYE75vokcNMpT_ZouNR6?g=ivvm4~w+7I5T)j}W~sOl6WZ9!HBhaeGX z-ooB3of4)UEd5}z6Ojyf!gr1$l3Ei$tO*;)T_^th)3Vxw0<{CCm;qV!br$&Ek#@D1 zBSRDWcz$S->DzmW==`o}S;SE7znY$t;0GHe$sTc!%0x}FB{OS5;;=Ryki0O!YyMKchn9|LOn1JMIz z3=RaE|2g+#9xW3f)Pv9T;TCD5t{X%IC73+a zy*^;UsFx1YBu4(%9Ggv0mr7>pGI#NLuUvy=b&c*~1juhf?Udahb*IUDGVASV^nJY$ z0kz9I;DafJz+4w&RW6;F&q}@#5}NSO^{+9)D0vW`!n8p4 zrZE;0RiKKx$mm$=v<_zNq~TmCo@9cwMj?WlW+F1bwz_d)f?Z+l9pQy36SL0VS@mNw zKuyHZTvwZH=;m2<_e5#V{5~c(!oewfdwd7yI!$rUy4B;nrO7=tBb>qhRW6~7&*K7it##`Ljwsq7A zb%|@IIpDKA`-p_21f*ARxS~!XVtdA0N=XZt^;wwM4~32#b+X*WIBA=ixa|nBM`UKKm)nj=kAb7p6}48 zYhOnKLMVgjJk_y(MsAWe8P-Ux!fCnPF&aJECy6<|^T1U;wm5 z=vK9td{z$E_6sJXj>Cr#w?BZZTo0`{8aNY($Wl{)#-+ z78ufVW?I)?n4w$OX#^=Ie0RttY|XI*jzcMQt4mMkxu%|AHgH!_&)>>)O*VmaL_Mtw zelS#=U@>cJ1d37$Z;9GCDcp+Tq4i53Qe`Vsn!N>>^1TzFl^~G+q}O@0A^tSoMXX{K zBzR~ldftt_nVZmPC4lTy=)kN`Fg}k|^Y%jhCTZWp(7D67w%)yJo{cv!iG*}SP@Pi8 z)ZJJ@98go&cVqO=3{>Owsay|DqZ*9lYweCZh04~aw(f3I_jmmAhj;(={G)&6kMDoo z%6bEw4)AZ00o^9VyyV&chWxgzQX8a3+)t81_VYn`E#x*aWN;KV^FqwS7_5A`QT;ob ze`Q1cTbt&;J5TfeoX0zsn2krR+sd~dx((h7Us(lh{IVWQnb_7w9;FgfzpdpLermr( zAlmcVQYX0ecqE2)BlQ#h( zD}f#O^mZ$k9DX{3G{bjYZnQruho4SBJq8K6iTpK~NSH$B&GHdYWzAp0iEd`o9f)xQ z?qJ;N3Tt3|HsUYM-vjHXgr4RJj3WDU<2M&BCBN=Li~wRkx;ggSiafhV&>L>2o)dlr zrG8(3_hxT20r2TMxDP;Ryd;jim1=jLNS3>U9OZXR@2l|O_$l_Nx*%& z8X~QvoKMI-G#GU~f7%GnpH5}>J>{OjjjY!Jsf^NPxc=(SwmcI)#~d?Y!av;QnvYH8 z40=3nc2RB5(WcZ11hsc3dPBN6$9U^{8z%Ca=)>1@aKWDRuNiaY80%jLTk{#+nVRR( znypDc+%7?*H3`A_uIa{0c(C39H6OvSlTQ)L38I${peBd>)$%21qEFmH7qGv2UytZ9 zL2}W9JMZlS(NTV=Yj9Q-1lY3~D>p(-A|LTYO=_*1Nl>$r>a2rD`8h!j8u$WO;1LFD z%tBI3d4YsTauNE-3?UbFvfxV{JS5yRg2-P#w>#VG!aW{0)z04#?uj0O*_)?fzeskU z@8AFYubphyBa5c#y18(bGvXvST-37kb`cj$Ua^h*#18p3G#%-uw+TQL5*<5F2b0JZ zje=Z0eLLlXM|o-{=@l6LjO?EDpm@qYolXgfs6{m(yZLP66t-lKT|5I`#~cmKP+mTL zJD$=*1Wt30#)#Qu)CbW?{nI}Bpu9b(XXsi|kU_0s;j$j6JR|OLd(aKA0(3-eNS#h$ zccjqc$l3#*D8}~CY9SNe(^v9>J$`%bf&xy}IQ{hN{idiwn{OwkyZ)2B)D&f^^!-e zrRSeM*~UGGr7_U3?l4v~Q0889Dxz4+GY^nz1>>`xfdUihx9i$WB@K9xnICnlKtO8T)BZtbKG408O*J2_$UH{4BkJI*Wq{|vw*`gkT4&uA zHpz8d=`NbYq`!}%z7}2iPj$bIUr5ZpX6ES5J*}#~9la|j)Qky6%D4Jv0hlhq8z^*h@ zo~LQP&4XTFto#bZq+hlSLKBLl2jNNG*!`v4BievTK4|ahJ?N*h_(7hSS~pkTU5ZHd z@Okn)fwu#`b4n|fqRh9Rorg2A^a?9kcT?N*N5blm^nsLd2A7RLJ&+ga1F6%~J*C_E z?j%C#?|urGkZ-(-wNB+(G9a(L-N8y^SUZzXW$_Xr7jCG>YT_LOL?9 zk)W)X00O_JF6bUfXfQDJbbQEl(#-Q{x2AirbYN)Hy$YUq(@5IuQ>!TJ^gAFiSM*!n z*F(!~0i6r93Q5^m6f&MGk9|E>8h31Eg5035B`@Y$oJM^ z7@k~|HSa^W1_`^VpV7hfxVj+G2s9ZGn!nf9vv$kA14ZtmfbXTDTS3$8(h{tf7P%?S zFG~U3yA5hT%NaUEgFOElYu9pw%WKy%$u8`%xmmklHCC{%hS05K=a4kD(FBmsR@7p* z(I-VFw?X-rU<&bPKu3w(NE>G`MNtSX4!{^Q08>;Pr>UV_TQ=MXWy@X*gQ8!DcD$e9 z%IE;!tWSi&V_DCb({Qic3LrX+m<(D_yA^Z2PIku~1@p#$Gp*y!ldQouw_(39hU2aV zXLx;Urh670um{d-O(#C4eb!u~v%u?)FyJtbJz3v1g(>%hqR|j3O{X~209g-Xem*?~ z&2BaFR&dwQq+aW61!`1=#IY zJE0yxBp!=%dUlUzJ-#ggVh`|&BAFLtvv?xE)riK^$xUzr5g?L;`c!%bICXR(OG^TJ zgej*~Nds}PzNZzK>?v{B0{#t(!9pM~3^fVMM1`;?tLw{I6{&V~Xejg)U0oA53n-UF z*2?7iJT&X_jp>Ek>3@~WI)XK%pJr3HW{a&NrYAv9!6O_*9YQCFs8VEST9UB^6&q7i zC75^fcEapX%2|b1)}XKmpAzE*m_LoFvbm+BrgmVG^;E!;*cpMI#ny?6Uox?h%p(NcuwBBp8e|F^a)Ns=pvtrxNt zBtU||VZ8LhD@WK~Il^~0kku`9Cz4MeEOuy_smec)Aci-bakQx~5hOYX!YyBEVuj$o zGAgW551#Et1wo@7l#{b18(E2wc$uRfTXyazmq=jTpWPKF72;?c?T;Nne!5?uUXZF9 zLx6UIZ_R-`)YBCCh$KRO0x*yyRz#H;8CP(om*pkN0@8R;^o3t8BX7GR{28tYH3gOj z$R(N~lg31~Jd~puEWJ$opOjsPPOK5A`+nUc4TzBrKBcI+7o@=#!8=Veusqj?AFrnd z?d#Oo3*S(KWZ%|r(CMfJ4QqdXPBb>j_rhm$NjHd&t+P7a~=_KS6S%1Y0k;OFLWL zV1PoqkEI+eGVAh4y{m`4X|?k;G%e2~->W#UwCzhNC{;nT(~WUODC*cAKj4`=v`dvM zDnvaTYezX!eLyc9EkQ2`mFnk}TmY7Y+N%+uzcL!w@W|quyA&HKFj2U=^%SAJKKl!x& zT&A{G4@f=zdeeHA(L-f>0t(`!r*EYl2)vxJ-STeS+8O;O77&-6LxLms)JxzuM?nap z?VtRRhfhA-Gg>_oMfVHr#(&Vg#~(bx!ub1L|KzQEVy6az@OVh=TSGp#LF$B8_H|F%4h8bd~fo#g&%ym>~T5x4w=1{q~sjr4PREod^`z;Y49R0+7)c zwst%7KqPj%A?`_$q9W%GWQXwe>Gx+2p_XmHC(ssr5X){%OZ_5{g^4{hjq;+4>yDv8 ziEn#uWn}G8<#gWQ?F9&`Ei@ctxE>RNETV0z4~)Mgw02^KNaix>PDzux)(yp=7UaE9 z@AK=^H!L`{E?0)6jXj4b*Ma%f93c#;$H=)X0+X@vFG1Dv;vA8b1Ht`g8M$ZUHp;3erH{fOT$EP)8t3R5Js1<;5Do(GyK>qKq1K<4iiq3>lqhNKCn_!JCy5`=E$aa zA1E=P>Fd+)qrNE^B|s%@BEWCUQl@7UVh-s527nqg)LDtvHm!}1WjvaawmFP{m8s+N znAHC;F@GM8hP{i;pL5plD+7OvyBdk$-1kPPqhwuXs+q|DSb2Hz2=c1!**5}tXsK+W zzUs#@dpg$?Tm(vsX6s3iE^3gnE9~$`zVFmeLSrHl9#197;6-@h3#5u@B0knkMZ!x3 zr|i)?Y3`o`F%qttM(G-w*VFZvLA3TQQxA%UsKklpuvM*u7r|ygzM!Lb;YDjwiVP*@ zvU43b>tJ%%k!(~nhMvmwl`C0hYCzeW6oK={(zH&b)p>jDXBpC&Gq_#eQ)u5ncHn7E zF=PY2eu&39U!%#lSLEBayjIB%G@$a1G-icc7P?)t)z@lFDE5PPU63HvlE!kl9%}s} z$OwpzpxVXv==+ig?cQ>;f&FE0S=Vw=mYF`$`sE%@3Dq9c;&<(^X>-o{mK?qzkX16m zwaUvj?M?A{QomBxGXKF{-)6CpJNJ(DJ5wN!f!HK4l1G3;VNU2cqB`o)*XCj{GMFgy z%%dr@koPXHQX9bbyrIx7oMv-JBE;dxH1?+}F{<$V3`;fzleL_Jd%Ext@ z+~wd9TXRg^A7U`;8#HfNCIoKI0M+c}e!f3R6H?&_E5#fY#l9GUgPgBV-{7nIS&DLB z>++AFd{`fl-O4}6&j)QE1dRU@5dB-eGyK*5`87VA+w!%!ZP(5!RClOMjLvRa$AVap z&C0*NdM5FYUMC$y+6m};3$iKM=*A=PV!I0{@l2lK!p@We{Sho+gV)dj=*jfE)a%QX zyu1jM{GeUsCHS5m9{R(Yjb2`Y+|qfo^?UveU?2*ovKJ6_S$H?2-YGnk!XY=w@f(1c|jY5jxXGJQXp~Oog zRr^`F+Gi-SzH+ypEY<$~N$huPQa>+OS=uemM1Bg>{ulV`-J>&r5z}}|**suK`LFBT zi|aIdN>Gq6v?~943=PU$&8C{zVO|Q^!IN)g{exyb5fi+qrGs1dI&hzH4M9e1uTTGW z5z}TrSbH7|fC7Q>Lz37G7Xm6jfFf)2+OL@df3d!n)61}ISB##~Q3O=}n;2E%^ zH=a*K&n$1j9~$y-)53OTH&+;HZlqhY!aNbOc!vJ&}{`GiRk- zV|q;VOz*-2Im|_Zu?SA1&i`aCqPz}P;yctQ3e>tOY^0#GOj7+i5#DaS^@D?WskMDB zqECezP7j{8BPV~|D=39 z!26=Ic_GNJL4Qt?{IjsDA3uvk`V`3GFPP_jzhOxxE{&PvOisQdjFJeer1jsRrj#Emd zq1Tw@km1|RQ;=#)AYArt2)9T`2p%H3Cr!E`<|iB*8t|28hZm8KumHV~S_sr^da^YTRZPCb|* zI5Y|Fc5Me9@iWG6;5jg|QDnNIGwP8__KJ_8<6PSDXX{~heXZ{uD-v}cJjB=y{pscT zz}V*{T@kIt@0)InHdb__kY&$rNJjirj<{U(u6WyffvV9Otg_m;u~;n#{`(Nxp;T9N z=5DApi`p8X>2C|2)SCITCv-(oKk@-B&rp#ubm1g#06Dx9m*g~U3r7K)oiIi=uGuZr` z$?oE;S)``2@8j}oT(?JvCj8FXtib|E2m-mno=mFyB=WEFn(%jF3za5tP2}9?L~C2r z|Lu1u!Nw4)$E12y_e%QanL+wHZ+%Bm% zdCJiDgy{iwCR7I9AQF-VUIw`BA;k?#5-j%WIhC(rQs3v0w7@dEB`kzcwT8I{MUhyb9 z`Lb;IK2?GOQ@B5hcp-;B%hG*YmsEHWD}+|}ITDao3*{U7=bTziCTx_WGtye3k@@jd z2VIeuO{?mU`GZOGT5CUPm6u`tzH2smx(It6* z4>OR1)r%18yk|sAMk##W7NTD2wL6xrI&JL_d0ME!Zk-- z5!UO2VZhI93fM9u`D~xr9eAFO3Qj@d)z;t3tZ0tZFC)8uw5wy0>y4rJx7xC-9Dv33dO!L zY4krSvhrD=c!`EZ>`ytS&r-!2jE?!sx#!eur+weZHADhlNWYyHE7B*kmE+Bcp}G3b zl)a~BC{LnPDcc4dq^vzUs|%QzDJpfTC8f3_trlIwbNB7*@FWoGt|r@nBcqwHNWJmWI(4FHGvWU?94zrtSlDN4@CO2 zrt^xbT4;h0D!9?ATnR`F;%~LsRSESw+8>PrrL>l0ZH|gv4KZ**Zj`XVNFx4i)}aX+ zU5_f)z4!jE+j1s+7slv-U&e@=qK)~=HIS}-rZym^c%`x8;XyWq0o{HK76=newdRZo zet9Xx%m=6}4HP=Fao$Mk%cfV}26^Sb$F1@}cu7wMEE!vjDOUi_>KXA) z#~SR`_O72Cn)7uJH}x!X0Fg!kjtpLFj~hBu7P@%*I@fnAYKUm^$2ba_7C=!0+!S~X zxtV>U%jUW7mLUH+TNNFx@3^)At=DC@Jjo#2b94rj&ek;M5v`AxJ!lC?F{t6DbvnmA zm>!%UF9(e3uB2RFDp{E!uEfgF>QhnLt&e@V_C>D#;1wOhKL@%Wi(C!hGj(hz>tFH@ z`=g2OGe6l=;;w2am;l_u5V*Me4T~k!B`+JLErJ7;by)}W=r}YJ(J~p_G?&*)wLHzX zfaFX>A_4hXspEv5)`SCx}lrI#@#2RXoM z9r)>@>6GN$=*WN0`X3CYlTqb*%}g$IJ1CU*K;eMkJYSzab2qLRw{x^PfNVcOkaZf~ zoh_6=n*$@W29tv>bi>lq>#7he00>@K+-1w(lk~t^#BhWxN2th_lw(y!UHm}3(AEwn zWdm`*M#4T!)4Hm)$8l{Sj4B$#Ik`ogTMyLdFNi{*O8 zPdEIAJ!{_=x71*(A*D6j_+77UHPTT~Qz5d@YrJ{k(S&UP?-9>BM$Q57k$FlU}8Y$R$=3CcS39-MOx(LdN_)Z%w^a09#Bf9#! zlNB`r?bJ4*MuN$efnb!#YfoJ=MdS>VD-*%BmKiYYGzfxSk`v^ht~t<`nq zBBEj5XaZi>sz^@kOQVUzIY zQM-06_Du@bhhPWdb)yTn!~=I(>M;pTdi_DP>N~^;D8b^cxn#7>7RLV@SsG$wYzI%S z?4otj6m)9Hd?GVcSR)rqVOld(?R_NO17 znd-E4gB7kJi!p%^7Mz(bnKy>{8eOJ+wr&vIx7H1MkZarw(Z6P zXuB%X##-Zp3vr}fZ)3DMFhy zn+^w})l?(MscwGUMMe&Y`YSd=Q(Q1n)gCR3Yzy|bdkyxGS7#A+0`^_lt!N{}( z(HUvp@I?h4fsihydL{qnAV2IU zwu-J{$&DPtqPI8!G)xi3g7UIFt3$dqpkKfU=&@4MGQajf~P6aR>;59nB-!edp@oW8MIzb5MGY47dV#DiA3m26z^JE-A95# z#wHD=X$twr2`+Tf%<8d#Y41l72?SDpc<-p4IdDfaOUff-Tl3E0=P^dxs0#M<$yZ*0 z`hkO5d5CfRfnRDtY^X{<}$&q)bE=9gZA zQ&^w-ikcwuc4Z+tPvH9jePWocGXjHunDzKhx<5wI|3P|AuorhDP8qQf@Ek+UpOv)m z&Jfj3`tdSLT!w{S9zt7_1g1-B^>$gM9}qO2lA{X5hG?F{V98#rriW$k%GM z%pcrAo(?9qA;i94Cml%$E2Yl$5gu)MZU)*g9j946<1NFauhqfwV^4x3MPmeLUh z1*uSHfPNiNRVrzqX`gj1W#2C{6v%6v!Xp1&PPDy9H3#kU0mkTXY`7%zo=&ExHYgND z_ZNXwrFCSW{s}bP1K8G+{8fBol?oN}c1aMQJi_S0LLeQbg(VcW9D zDr~zr@5bMK@qzuc$D6tX^O{#~-Lr}^68Fpa?}ppE2isAkaeJ+Da5^TFau zVIM-s0)E@wNJarvFP-D4-lcwUCCUw-s1`zxNK0-zrB8Mdvz~f~ZousIT{uz%TC2{z z3!ok#sQNh$8uwqHe&6}n6X&4|l&M>BviHL;%G3Jm@7fN+Aip0#lewN|2X}o|RhHuQ zC$EympRuy#iZnzxCY1wGe|Pl>&*Ot5kwbJ8Sa&{L3&PS4-p2GAbk#GV_qQ=eua7i+ zC3+-4Mm|sP-T$rny?fEt4zfVLlK}fJM@*pYO!>|cFhbaLPwh z1CPAULZ7mY`Th64O~CghW&5FHc`5iyX82Ru@X ztc?l!28?`ZxThBIT3rt&cD_pYqY*}QZu`JAJ(5NV3nrj%)dk5tX3CIgtH(DDVPZjz zRzd^3JjFfg$g4lo#z!`fF~!v@uft6D#m{6U&m!Z4@WhGegI@$dYrwX*|J;~2I(sGo zve>_k0l1Al%s;NE<;-{xU_R2Jj5I&i^e&gAA^+awOxHQaI{k_!8+lE!N4(7@sQcQI zM2XC9^|@-d!Kfj>kYP~f`<*~#JvT!R3p6IQwHjAs*Da1~py)FY^U>^%OkdcKC>X6O zAt+4COxzPFhM(>+uiCE5IiWaRlKZmOS6%qbx-1}AC<{J`{5p;#jJ0z^171eEgA(g= zi7z9$QOTP0FS*1mWM{%7f8M}G8uhLK8;R@*eU-@_0l`4I>=`*c6b^VPag)O2r_RWc z-uAi|eNAK*DG5Y&r26geJm9~3QD?YX#q_-sOz5Y!# c@?XNBe~D%&>iin1{@efkKS8&|a;Y%{0MfpfAOHXW literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-macos-fallback.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-macos-fallback.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..c98100b021e5be829249479f5a720a44eaf38f13 GIT binary patch literal 27451 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 KRhfFlegpt^-vt%` literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-macos-native.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-initial-macos-native.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..78db9cf14f11daa53cfc4ef08afa73d3981e6c25 GIT binary patch literal 31699 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�l*tDzEk2> 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ȏ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 Y1jkOm@Hfr=fBfJ71AHUPZ8C%e08WjAcK`qY literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-refined-linux-native.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-refined-linux-native.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..2abcccc208f5555e7ea2cc08555dd68672567163 GIT binary patch literal 46743 zcmV)3K+C@$iwFP!00002|J=RXl3Yh}E%+-mn#~(o9e#;$cO5%_Ffa2qHZoaTp)M`V zVUukHTWaZ;{(amt2@uH0aBPp-(8EwIHH9qH-WeCaE??_^fB)CVpWnZ}eE9AAfBN6w zzkB@f^5>^t{`%MV{{Mde{6g?Dv;pwr5qST`T6D7_fJ3mL&u*7|M>6kfBV-T|MJuOcTf1hCcbP+{RODDAc9<57^Ule}0Ab><0iJUxc2Y>HGikxBl?U-+z7jwAO!m`S~yY*gyU4 z@mGJ9m!IP7_`knAJUzuKiGS;6FR$&9+v9k7_hjz|KEKiny*}A^ec>ChBjSoG-~ z+B?$M=O;gMFQYyAxAABE`Q;zK{rdRf&yRn5?_dA%`Onu^xIThF=<(_GwVB1&9gl`G z?B&saJqxNqSMcA+kG}TUUi_=R2(X`EQZW_I9}#=<8 zjZa-4p;PmJefRY45ni7V=yg23m^^|tXzw~-R_(frs-Mo2^awdvK&_{pAy@X3D|?b*M_i~lq#i9No&K0m*EdGdqj zx6w~y`53biyn8o>@A>oNlm9ordnINy>->l?M$>2RL(z`~k^iT)*B3VouQZ;YI`sp` znANYx%ah5gJo#cj!Z3Tpr)POlW&d^W#J}&80{eX=ebVP=znc0e&oA+{-{FB{Y_Fp~ z`TwP-#xE_l_wg0p`74sX8}FX|Xg7U&8jVPr5h@mMdDM4Lul(rO{>l85x~YABd47ImAuW@hxe>ujnZhPU% zBZB(bzroWbr272d{a}1}|I5#Q9xeyrZ?SX#{Lj#S@N+!=<%jsU(K}uL^|L?y;*UT7 z^Upu{0UB$UkALIi|L3puzuy1+duZUw`@!|L>n3F9-F*`~Q6T z@$#;}{1m~~&yRn7i7WR0rHbU+T**Y=a<*- zetr4di~p|Y|MA`BSAX|^{qSALH)4#s_dhb5EkN@%I-{MO=z5MCt$KT%n+slu?`HhSK^wYg!eJ1zTZiwAZ zzccp8Ltwl<0zLXu#&~>v@emAO+?q6SGlBf_^6vHB@G$MQKfPRx!ry-V<+op+d?EZL zKD>O0J@faZAHM(fm%m?@()?dvetYyK`6v0|`+tA@^{;>boB#3mzx@32-ShhoPmjO4 z3Ht8+&;RzzlfULKKY!<@Br;Kcm4jKn%jE+s=tNh^0Ra~1|PTUa^imYKH~ED z_vR76?{1p@{J|f8SxCQmO}h>nZrK0+;pNvqKmG0R zpMC7V?ms^K_VU-8KYs9>WSHNgUq5{K_+I}!hIpvZ{P4c~2-2Uaien_6~ z0nX?H?>^l>CZgp#G*!KQ2akEXa_t>_jfY`GX!qX%u;F?k{KIkc5`u8C3Z;cmmgP$% z+n`LhPj@3fs@tF*DD^?rr?d2%r~99Xl)wAv)`V9ZfSxQQr(h7?o<#KM6w9Z;lNQwF zDQK7AXLSl-+69k!xOy4P!x3Fx2JBtduh1^1=ku44hOKk;B~-*60xZ|T_cwb9zP%0R zffMVUm-v@^iCJo?)K50{)tfaM!k8u4$ok)dO(a)ipgz-aceT%{`=-tPbrN-ofDhAzOBtX;J6;{Tj^mToL#xjJB3eBm27#TPx&x$5#5H#Axw zR^#Nb3g7zJKDx(WRny__qpi=0pZ}4(1mA{x;&!9ey{sRU-fbOnDkO)s(HTzG$PWZB z7sA7r?A9{e+E9raB5oLR(eE+%^{jTxaUQ>{)GQuxn~b8j)>d+k3VJq72o}ShWllL`+Mc&V~R_kGThJ0C*>@c z{Gc~kU;3`eS?`l`@G!S-f=QLx`Z{_`{J`&@e(@4+jHG<&$?eXN^-NdD$3%a=gu z*{$Glb0E7fr(ioH>80V}Gp*yck=|Fa+xv>m>cuHPA?|>dr)Es2u&GwHw;P`F z`7c`@2~RkZ?Es!kco!?@o#bZU#<~j7vQS?7xIGi9-Rd5-`!8Cr1dPOuj6M}FeQBDN zFDMT}Sy~BCQL^M0gpOK?YVz9{#N*nrj%u^z(Q#W~?&^EGVczXh{92w>%vNXI-daRZ zET2`6HE`IvMv^UrXWNsX>j>onBC#}Xl9a3xBRce?!|HE=>p0j`%k0MJZ9Syh5MSEz zN`PM)TNjfDWG^u#zaGL!{agx+vGgVgnIRt@M4u7{d-zW4v@>eG$+;AxGs0ls4Cx)$ zHD&H;dN#jAzhBN>=f3pd4grUL%4_c?zx2@kGQ!6MnX%t9i2hTa%17(t_n#U``kOU) z|Hyv7KnQFkz+iqrISI2{vclMIkDAB%y}Zky9_+WI!ZDKb9!SsIGK-t$a=zh_c|=g_ zm+09$%nLDC%NEeHY@xR9HCp1Wn`xiQO<0d2aX_>ii&>u=ow>^x#gOU>m>aM~?Q#8d zY9wdW`}`_Ev!rQ)i3hrV`eo%)BQ+@>0;GlUPi~@3a03rosciL;^isB51tVD_5nyUb z^u~Nnlh+^Z5&e2=Ms__toW9)|^6ldC@la?RTXXwx^<$?p2{1!NfQ<#8Xa4VDHujvPqUb z;f$4v;$}H^@X!Iu29jFG$wGPFq?K#|x<^8Z*6*TGo;tpKTZ&f{ji&Vmru5sot z+Emd|Kh?#g6&~Elv&pA?l<&n`@lydo`IOn-ZQ1%yS@&T2kKA^hw5BavIHzSB$QNE0 zciYe;6uf@=MVTm~^m0rPcok(Vo-p8nr#w9xrEKM=x7&V{!XRw*@6HKqiMt-Mv)#>$ z)WhHyZoqY#E?KSM`stS|fI8|nj@`(qCVAp9SF=~O_7%SNa#l-_m29q`o^S}r^GmL} z`lzj*@^tnDU(4qo?C23J=cj;n?f2GR>4J{@ay^Fiy33&$x#jZHr}dziGc7;7GnLZ< zAb@E%0$f>sy1N-k5WnN#Rb;D&oKfgq!H2T1F4MwCKd@XkCG@Djyzr=ajs=K%$U4ly zWx_F;;D~k0PiK{Kp%7?xfm;s1tsf=mYFYxDrwhmT0b}(fls%N_iDLxFyux%DwbMqC zicK%blhsQkfXUxK{qiLUWy2o%m8{#s39K{3ZF>DyG{4NF{&YO$tFxK5vR9s3hW-_L zy>01Us9grns`f~x?>@AifuqKVTlwjHd*}qmM%wGw&qh5YzwH_9Izgts9&&I;f6yK+ zS3b)%{rGs?@ToyM?&q3>(UJcni@cv}2IAKL_hUkeyZGSGMqoeAQkSv8{=&;Nr$bV1 zjH1CblfZ!puQuVKdxp41sPv?==$n3v@)HPzcDbq-#rO4075Aj~;@?@O(&BKRTZTkL z^;y}QB7d*(iCNAk*u1t+f*non4Rffx3#%)#24u24wLB3>{g2g&!vTQ(P9)#ax zq3Zr+k|0{M`4AaXy0=Hi75R4pfwP1q!kx!-=Y?fsA^H{Nx&&yau8{N;LM%fMeAmry z$Rb#g8K%4g6E`w$>tl&ocodYE^WCs|vDe&CWi61FX5SN9If|#_l*w4@eqEB-8ZtEA zK%L+>0Ha(fQu9YMc1x&`gkCMC=bsl6cH z7^LqWQaB~oGjQ8UNrfmoj&qi^#Rg^Iw}O)hKJ#O33YVH8Z`ccij7z0xFShuo)VS9f z4V2_4j=Y@e`YUNGBR5p1iH0piw*~7*Qkk-hB}~SgmR z(>!)np`H+KV3y!blhQj}lM!!rNswKs*HD`->Q1Kx0woODG@fLsu1q8>JFW{N+U%AL zuD6W;q~S#BNFI*24d zE^3Tf^Qn4*1=oc+}P>{EyeBA11wO6&4I^I>oQs!SttV7?34|Nfkr7KbrdE_ zA@@CHz6XdA(^kev=}c&}!?6%7th}ZTY8h)#yRE8hUp~7GJuQ152M?gHeQW0ch`G}` zPXMK(cOqDs%D^!k!c>NCDZ_LisNS1|9=vH~AnOcT426je*cuO$@^_zR{x`pSjN2#s zzO3b(!TJXX1L~-CnTjM^1asi~PJQWqW5OnzHoq<7?@@P!UB4Xns1 zqeUoUlH`6VetTkKS-Z!tEP?;C5gOS!qcrY|p!{^38Oipr>jL?`J2=Gb=d=zt_3a-r z>fasYupvrd#2$~C=pFvxFJQ!oZZo0Jx#$-#VhrB9b|B3>I2AKM{(7Rx(iBI1QUy*q3`AF6(dwisP2qO5c{fr$ z{VLMb54sG8Yz*_mW!h!QqM+Zj>|imuyuS088e}|dkhAoY$n$ro01PZLz) z_0zZ4Mf3tyNLrBTLX4R#!%s;WOC0KwSoQS&=6FW@sWH@-33X)9uiogJ<)_MiSvkY+ zX3*J5bZyUKh#Km;YS2t_OxnCWy-r8%0h|&f(!132j=1C! zpRB=EiancKohtzS#`jL=?G&Z;>vn3Bna+M z-E4Gt=;Stn516&6-x_hc|GkW%NgkBUjnEyTo6pRjJa}dpD&-$Lu)AcyZ|7$MKcbXW ziyCJ)Y_v(R#I!D13cek^SwgFkkv*eKEHoE$TgK11qbN632&X|^H!&x9cDm7PkG@*DbWV7DD!1Nj?R~U$xK5zQMhv2`xKU4!-gDEsmXMvH z1_2|+V8^ax&ondc&ai$gLxp;s#xqOiBBo<$IH+!$SV_zMBzLmY%p=MMoN;u}vK9i- zqy}N3uwDM{F$dQZ{85$%#A4qHN}+AQ+BgO@)*h;7DuUNfZv;ZXHr%B7TVyYhTF6OY zeGI;@^I7k>O3bq+!a5x?@s=j1*zV!3NRq1GLBz4|&5-&P6=7Jj<+a|jCFqk6-My)v zFecqk&O%9^SvK7G)sLyL7*>;J(uq`JPen)6Jz`R9OqG<3PZ|3RarDcH>cAfNdtktz&!A~z@Vi7XeO*|RQz%(-#`>~ya+~y8n@E849zcK+~`HF%~ zNMXVsIybt@uhdS{UB$>($~gm@onmc~nmeOp{4K+U(wL^*6?z@%g5+Dm*~op?2*iov zDR>mh0SX4A8uDHvkaT8n-J->$$l$AqOP^iuARFaMWz@6`6Ow7mrm$?*9ff)?6h~-_ zt|hP2R+op$a>_P%jMk}qC+FL+Q%1o^)YrmBAV8VTowR4|GM0Rb^lDSY1RFH6$d&HM zpKe(!j44ejUy;dPZV|yDNWyst7s0#b`G7ugFi`L1umrKY*-oJ3l3FU5IAbqd|MgSq zX-uLr37O5Nb`AxlXS6($9w=lTu68TAv`OI`M9^hp(PwIHxp4fI_kk#(Ch?<^yk^eEXw6e-SB1~M!o%qfthY2 zsrzJpz3F7OBV5}EFu5nym6nzk8l9qG9*3CA@<42}F6~Y!7*RY=Onf+Im$FT~#lu~Y zV39Kz-O}IJV#NnAB%!?f>c0U(*8J1>>zj#!-<-#KXxIj9iK9caGstNX{F;|VuO_YE zJyRca>Ip)RQsr;rGf4ab4b|&kzn`MZgQ40+x)+OGKRrfImb0^?buBM}OoBWkh`7tl z^n!gPEYXk()AN*|h+pu!fydq;(S%Kt_&!m+Zs`QLtMl9-qxj6Uzh|n`?s?}~DXfPf zYfeMAmXy6&o5(i(z{!TKpq^slvUfP8ABq5drO%iJ05iSio}umoTQ6Ix>AUZl>SoOn z%CD4&7w%9>?y%tcmyrSGC1`UAp@p_mS-W9)48JzklyzgTpPpc>Jz&skgDJ{Cx7NY! z!^Q>Z?kIS#=6wD1%a;(n-(IO_u6{6>5>j_M##6A@^YXBgTcVu;yI*(BM4P*6-7xAaX{-W@{HyJk9Q5|(pEUs-vjq-Q;ByFETn6z%I!dy%6`XtS+;oF^aU8Y98JgGA>L|XY5;E{W9-#yp z)NZuH_ z4GN)z&q)l9ra2pABoO$sq)@0#-;x}k#4ZwCt0F1m8yRK4rk2neyqTJRlfD&9HJc{O zFdUxY@G11IxJ1L2R$v)JZ6uZes0o$mNZUH|n{BBoMTR%HZjbmJNufagm4!@nRxH>e zIFIg3GDI*^6bw$9P9q#_tIJv?v@fk|3ge%6eK*xBc!=~3ez{Ymbg)^SPz_{Kwc0B( zAZ-M;GM629NJau4N%i`QPK?$%fX-=XMzGhp-0H@u)x9TW;m4QOpqwUYLz6{L*%d~H zgo+6c2K*z!@C{Z~2B=?$nQ>-MVvfL|t|g*VD=qTX9b)Spl6#wo`-}}YlFE6}J zd_#NkIqp(*L(|L7(fSBc%YKF-S~0t)5;B8W+t;#8ceqXe;5pI-o3AQ+mhox+^v&(e zw?b`0G%<1Tq6dX6f|Riw_%{#ka80(<1P<0x1Gv`fPxn=ANoQ&FZ~Alv>#*TVCV4`s zqbi$(NH``%!-Egs2`Ym@4zg|Uoy(O(v(hcM`REFkQa~Q#*gSlc+B|N~3C86%@?poH-nII9?l5+j`gQsg|V(+mz1s zcy{@#D|go}zO$gDL5qHuM+46-+{(r2Xx;X~IL8aS53XC@Vdn%OOsaLC17|4LwIG7(i2-OwaU(k_Wgd6x zWm2*ldri4cBo3u4vIWEK2q~b9EjND3+Gjs?cV5$filZ9vDT&lKH!I(qMY{d5UUsN* zOQhjnz1xN@p(u2epME=z9uK#TU}8Xnbv~hFNAn4+Pv3+cwS?JAzHJr>eiD=X{h-X2V_>e$F(p=r<9%=DWUPCRx_*cBBH+R@%460e{5fmHTiddp?Ejv+U) zNXBGbwlQQHeH_+RAitYR7`@On?{f_7TT+aJ!S;C^G+DuC~YSzuf*uH?>_0`Y^QWtG;je=9NYJunvM`_Qco8K=sxIM*R(vxh9f~=S-(-y*E2<6xv_1W-rGC*l%vbDzzO4z5D`!YJ|C^@}sT-q6GRMw|<}6&L$==RrYkoy>Em`OneLYMM4Neh6 zvEXXfV%QaYMRataJl_Tl`q$#qktf2~B|~O8_p~7TPt=++wkiO)E$d3SjcWb{9^j0& zR$gVv5@0{uc*^ngZBFPRuapLBYcX@(?+}Q3{DhE<$Yu0t0CY>=wdN7c6{;Cj))y5p zyQq^^;kXd)m$xG-OPHubBV}h|y0BYpofZV@mWU!JF99$$eD{>Rj0bR|wcX5g6U`=a zUxPqRRj()nRaC+i1&ILzJQ`9|lUBbFHr5qnN}0G#?oe25P!AiMt)P_`%I%Cx^g0Co z9!uF8TY&7gWIOmQDhsMD&xglzOh$LD+EP*F$3EA>tMj3OPf*ZGids)u_E_I+A zI|N+sU)s0=jh17kDS=8m$ry@9srB8Tw|_Nhm~X&fqw>?IfPas?Bmn48XV=52Z??ze zTx-5?!g+8phoVpV=Rk#L>OZ%zh`p-d&zBBhsw@DOre*ZbTKjZ1&!~gT< z$GFky6fq@)FWo}Jq2O4&zb9)8I9HlA+Z7?+As^y9ik)y1LR_FI_8XQzsA7#TcxCi6u zEc*6Ax)u)W6fCZ?r??3yrXA&|+^TG7l*l&LVZ}X7;GT$rfs*@Hl{F!r;y3M<3Yc(#ggSKKN7jDg8AEFhYx`ZDpzg- zuz!2zyV^M{L4mu2`dqcbv>UvG!#5sT6wr@OHm)jsUx|PuVaq>GD`CK6V<5==aDA{^ zSWbz*6gO&!zG8L;O@2(Y3nnYykJ^B(GM)~SI+wtt;M~nanT=DI2fomcR@8SM?q;iR zxV>BT%{4bs3c~etb8yZMqCSHoY)LlEY z3@3K92eUUupu@uttbcbnx4kL9zGzN4%ldvnbJJ1z?;M9uz`*jf8X zW>{?;T=+;|>%+s^219ZSzonu|0L|Dk!DW1-3HZvcbE4tl+dJN9{^}W|^(94Jb`U4~ zgp}-XAhbnEq@>!)^)s9Kj(7T>eg%6bYjjjg#t(vQ0E60)q;P3RnLIY{ zV94xY{m8*7CG>zQCna>#Z(Fn#ZgplJn-CaVU01h1*b~bu_(lSkEPqswy*}sixt~8q zL?Z1Dd(an|qzADBKKrTN9%MTK-Aewo%A7nn>$L}-yWU49_b2O%%&98+xCMA_zC#G} zXk9&EQgT5M*^o{2Q_wQm<70<RKx9!pbT(V5DaViQpxAsGd5sTP`g3pRn`v0h)CpG?_xg3C1!|>^{3^9ppM1H7g4T z&~0Y1sVzi1c@56fJV7D{_4`0J)atDHx0VQ?*9WH|m<>2ft0;Bxbjk+!T}I^%l8Woh z)wB{ub>`_fgVfd|MXhIUsZCRe#JnNqEWOv^b=YswmBT~AI#r3U8#XEn`b^@rc~hl2XjzEbEqigjgTg0i{h+qTW#sB}oPTOun?lxsZQ-U`8}ebhCcka>A4 zupdN>Z7u;v#!^p7VID7oDCZ$kX&$oLXb1Q8* zEGGBrq$wBuul2lLM%)5jrW5AAx0)B>#on*6A%2wBkyv;n%Q>0~v*n7r|p*qdC@6dAu=OFQ#fE}PEL?tx4pq)wo(0Ghu>GDhv zWpo2DrAMm04jnY&4(pe=sI{zi!{2^75}{dG^~D#nxwI0aWhEp3^wvsF^?`fKl9K%D`YMA63t)jAS(Ew*JF(K=Q|E}_UiaT0QT-FE?Y8eHWr}8{e z!;SidxmZzI(+jC+wjCW#pk#oM;FER74A(Or7c#7qEC(9Hy2=KanJ-p4!KKAIWSY$_ z;pq#@H*dx$3o-^_A+LFt2`yu%)0vpeU0|KyNXQSx(tKqT+;*W;JC;e6xrG414dHrm zQt}YENIl+EC3~3{H*Sk2ygq`Kg!k7^-|XY!lnl^}bs(`Dh_eOVdWjHAAIUMvXqJp8 zhNBR$g7S7C1*c@P5+gMnc*dngmDbm)-$;q!pv!d2O~x1S#X8>J~_0QV8&Vw?7ymu{=tEJcLo%q z$?8G-9n#&;bKv$6+%Ecu(C2Or{8lzyzqB5?twU?jsTQZw3n$by?5i)55=1I2w{wj=5BHV!lMpz^ZRnub6YM%@)Fu{ zs`_@WqrHQEs;@DYXh|6$GOIb?(sGL)F1$Ki1S!B(74jITS!#JZNPKPu3J1thPF+7zkaQ**C4q`wIx05~Vbryi;zSYH7Weg-8tU#_ ztXvs!D+9?;1YuT|=ya$!ilkgG2dXxapyX-TH%cZFsj(qW^5>Rtq4O-TuotVF}x zl?aGstDgvW{cHVPN@DnS#n|8Y5Uyk8Ecii3vKtvi%yl;K&6MmxH_evO!gtLIsB`?h z5xNFtSZ|cv&uk$k3lSrKr-;DVWfU(#Qf4cIa0+E-xR$lqz{|wY^2Uydyfj**SoW?M zgK=y3mYQ&wVtVP}66=F8EQI^OuGOZyUaH@3r+0RHk8LD#hMHv|29tR(x)0CH z*mQf~^gi(zE!cFM`=(BFNB9diU60X-?1b6XeW0-i7?6-wjW#l@ZyRSsNKx`APmB0# z-ySKuU_R@xGT~|#6Wx-jv)x;L`Wig5=c*uwfA=Y&7L`_q`bOts4LH4$WF`p5NqfUX zINDeO?ybH7xAEW}f+j{4o2|S02ibPE4?aP5`6Ru3(*gk2=}!V4(aUrn1blSw>tJI+ zOGr4b)YoflnaCM_Ub@y}&oGbFw9N8Ocn99t>g2xQ zaTZH5hGXdxOiuEmh=HddkKN%~nRb{6r(KD8@v?DJPrZ^6`;pZ?sZFu?mdXkEy-xIz zK(e;P_0zYfBj90|B-MCG)WaH1qiS2l_*jTGsxtw^WM|0xfi&eZ`M3KvKBF4~p%s*H zZ(J0c)@EYDPHX|-K-fe7@&-)vQagxDf4G@RudhEIg<@vNJO9MlX9IJe? zCS~?Dn(`~tEvD-+(2$Z$V<0%?X0!Sd)ZOfq18lXAp!YfeTM6O@S(AQq$PB;U|URg*_aGc_cnH04lWl^}G{cdI=dDK_JFZ9YnCflG> zPPn6$d&!D>qMyu?PGsKhgIwg>>-&Ilq037!nZ|A&2-I`Juyb7B06E1pjxKdsf%z70 z!E8c71j-y_G|zJ^D>7L|>d&U$?;w1?oP}j_ua9#R^~+gU?H%AqN_r3nyxk{NL^IGm zIL3gPa9|6AOFR;xy=IunJkz|tF}z;}A#}I$qk6jhR!=DNKI%M=Vln%cU?8$#lwo*E z$xS`MwB#%#Vb8z`gRq0W4aPT1IB!X_q0ei#{q5WnAv>7y?xsj+IR%XpK)Q@{R4O1g z1*=PMs;@y$2INJP6WRN1xG{zYmE6wAQ`IeTTa$9*MQCdMW^)F;0?T{_1?;(hFXM$K zw9*!KObxnb z1io4BYC$f^nmG6Dwpu@9zS8Zv(#YtPd-f7@?|-YXpuv`#%=cUv6V`kRcm~5pQ@EI} zgjhPeDHo#kGsdl0sH{wN0np#L52=gNxbsrb3~ri@|7qtFfZ&1Ja0j|h=7k^~o1imp zg&zbN8L4(w>l2&k3IvEYCKd)_Ha3x=(RG^U>BH_zU98hveW2k{!Kb`c?!{#KzyugK zbT)tb5WZXFipW3$uB&#F-+;XAswZZQ;ZfFA|wH#WC0>hY}p>0)gdAR!8f;NKWiEI z%gqH%vNNMzY8Px7P6b*j% zWCIDQ$a{XQx9MDNX@U4lNYa*#@HcyjSz2{y+k_O;ollg37Nlu&M6$M%vg7$tE29>%&hU3CRp`^kzW_o1Ur|;3KvN9mx2!NbITAqGC$;) z5V)m{RGMJU%~~BlMxz0)b3KwY=N%KBQvkxsZ7LGzh6zti7R~pGSkRZX)q4`8fwtyE zyE0>So};EM33T?8hn93xGcL~HExz53u*qEB4pZWK>V1p*ZfN&syUKYl1p|{MO$kgJ zMw3U_5=V-em8>d2X(3us&p052BXaijR3v0q1t&gwAP}gVPwcoZ$wSwS+lr>$2%)aB z%|Jg}CVPZ@gKvk&_XKHt%b8mBrnr^vryR(jGc5~%$e4z-VQ5`v)LpTsJsJE3QeH1O zLmn!+C~JrZU1(R<`Q(H*TuQc;GhMe>Va$_Oe^$_j35MxEKdkOoJGQbW`=!8mqajFj zpaGHlo`lItv%bQ$i1OtX;h+~Nhc{g=MsF!4nBnDcLg64n9k)nInxMiZV>1w#*v>)- ztnSnO6?#uVI2km(Pns2*yCHtXlfsl_Tu44|74wYN)4_nr(#5n=|Im^{$d zGPvD>Olu=a@*$dOw~)W+Q*Frf3`_u+3DOPPj8opEQZ(bWf`P|zIdNV;g?O}6AbZ!g zKkHNZKJpomF6*8^uVDrtX^uasiJnOMS~(hpF;l<#sHCX9*7a#wY9656B})H`A% zJF3W%=ud@iKtz`rdvc8qfv^_iAc7A1hXGnCcIrELv(Dc@A@zjcR`3jtMvj_Ka2Ena{ zoPohsloUhK6VqB3u9s{tbTx?y&-Oy*y77*NVPp^fBFmMy9+qWCpaYz;9R{7(Mm&P? zRPTh(&}oik=n1V>OI9L~q*S+F2jytPS*}exr+|a$tPYEVRW1qz40J6Q+$BR^ke(Cr zxFfx&53C9zS!rMA334DSH~t}52>V(I#UsP4rcIM}K(IAcYub_B7_X_e@G_FUuI|$* zG;|uZ#U$tMIlaQn$GDPj{+cgoYknY3LEJj@l%lQ2ppx|Z)4L%&$yV*C{=o%gC5g&> zwi_|(e3YLu!!8FSvi*TLzMu3CxzYgM73Q&l!`?oe`{Dh6zWnH4@V8%o*&;y>0-L%x zM>C=ckq>pzz`z0^R?%Hery0x(?S3^*^<2G+jPlcIdOEc_sryBCti14g%WChA9O@C7 zdkN@LemI^oP#4WcSnI8|C0gg4P4@(&ZG81x^zook_GeLB^89&Sw3K1TzI!K;a*rdv zd*aBN!ojD*48z3#!CF%9p(-e0>X_&q-M^sO=Y zfCmoF4g(!Lii&mZ-YDa&#}tpB#O367{&12+SGmd2Z66*E)eXPfUQK$ghrj!#rU?$Db!=8y`Q49<8GMi`gs0D?3`=h2WTSzn&v{$>UFvZCag@f z+4Qz`wrP7+d*3(4bfc zkbmdt1c}dOIB0zLEKtmoCQok%eeQAsd7U=42j4Dor#p|ceikkHPYq~*pD3X8o=J6JTf1=`6r185R(+bW#V zMF=;WRZ3n0C#}ORuy)L4;Gk@}GP$5Q`Q73EpiXUso`CXNbCP;OhyhLLa08@10qeUB zRY8RisFpJX6{v;I+L|MdC7WvCX-eF>K{+!)6;6_I9FkSrXZ`mrbqxximS`4pLJj6| z;Pet(z!&rY4O&s~4~XYhrElt}+ir!vUIJ{{J|Iu5pq|gts4oHbp0LKSW&ZpU-M(Fa zD8e6JqjGU%BtC}Y6wnJsORY+j2RMOF*L}G9@GA###Cn(^Bf5q@`Y8(5LHGshU<)`4 zwz!}13hqv<*Kg@zWz6*Jd-Agy4*#Tqu(X!MbOzbDe|}#O4A=l#Se~9y0eRI21!{n?pyK%5?!(eTr zbSt_Vno4`Mw{@FfkKX7PaO-6a;{DPVtqGwqFcqj(L8U0RPUBd+-Z9@ zK>Ta09S>*YZ`V)1e22?GUHKhMSCr5xWM%5!MQvhZ_oLihw?k9cBG?BvFe|*aoLwX7AITtLM$e@>NltCGNR0=iBVt*-B#=yJ6m2}F#bm+(T1FeE zG|g1*NsJD(w(iP#7?W*>$y86hKy%CUt)6RXro7uTR+c`_pm^{w8zd8q;&kd|B1G95 zaW#>F>j8A8o-*i7D2B`Y`6-I8MkdKfBVH7P*MrbAz9Ja(%cr$50%bh@**GE3lqfr$ zhfAS+l3UwkaOKDXK-W5VpqW3FF5?U=oEidVQuaL?)|*gh zd*kOAV-{N72IOO=|2 zRxcfBFdj;o>+f<$j?qMAX92K%FWon z>EM)%EL~ZvCZ962s$)PeHv()bgKrK`j&j%;D>BXNveHI3j=(bdQaZTpBQQv#J~7(? zt9Lk1qf-%HaijDZV44ioee}?U;NV69&U539Iqj+Z7l_sRk*C2_KXtPJ=b-yq^*en~ zVat*aK5BuW4!a7kKGyZCoQ~o8>Dx6yJwVb6>sR$m^vMt*z{Z*2`ia2#E=KxL=MC_G zMj}mfbaHk_)G_7}u_s55-a1D8wLWy;=)8fPGr5K=$>f?5d{aCIaXE-<6RUU+959V@ z`k)foZ`~i?cH^`FIY7q0G4I3zmPsKD`KF_Eq0XE{VR+aA?;J#979HhaVA2lX8y_`K z(#zdAPsnFg+0Gm8IEY%M9)ZF%!0G?la66o&l#MmTqTEV5?#{4YESZ#({pGeW>oj7#82 z>Lnr|L@wVbuv@O*Fr;;eC7^XI6A^(<;%d~j{?!o&K%z3&Mhfp8lO`q9TRIm)ZcA#F zoeu84Xk8#1uybcEum9ABz6b%-H$ai7oYv~3WYjva2>p+V^r|8Aq{cFTYYh=P*#?6`_3Gw~2Q=UV^D>vL&SFo&f43 zF(9|S_ii%UhAmi%o@NhcIYYYJ15wk&3|c?x1f|t0T!4Jlj$P`o^n*{|QF`^K+s49A zME4LZup^j1Z|GjR84knggHq&jWM;sp#Dz3Q8FLPEn&-E%4lxO5vQlNro=(%9@W9$O zY>_{`ZVqPo?H%<{2qqid`0jR&7tn#42ybWL$m^$HZoemt#g-*JpnC%QO3%`NDl}d2 z4l?&MD+dpLg*d1^e*du>sv_7(Gk2w3{0<7QG2EDuOSEy38aY8ASI~G(KS*g$zVjqu zv30?S-L|h~?s;U&Z~m8WlaCOGEtk=#$M}Vjj`a6?~rvasnw;e+N(4RT9A; zPIjZyR5{sGeD4u9t?ve8m6I_wrUyoMw$4Au+R80?k%ni~Z73KT)^h`38Cz1)|*2;+Z;C!v(0cvUtb<@&%8XQ%vnb1XZ(~B4`EdUW2P_bALsg5ldlgofV$N%?dvLo|H90fT}Xv)?rpCR_fs%zP&L^V zo-gc9m52B$z*T$rm{4_lL8r)It(KanDVp`eGp?c@Y5pgAA=P`~7(K*1gp5x=c304a z9@s6mCwBM6OX28P>1R|$yD6?w^b-?wQld==FcH7*kp~8?xg`Al>v`eJkktGV2)!I5 zY7hWgQb&>OC1loZQfcL6!Z>hFYu%=vSvi@-qn5hjx#F8<5~{st1Z`sykJ=lU^O$_B z^~5lfF}E=*&5zI)FAG|#z99`CZxSjdC8gW@PlMW0E=B zVwW`FA#2(p&o`0`*A3Mq_!jK@WtDS3jJTd2;!HeLb(-G^wVb*Rwsd4m#$7UUNu1h* zTZ3dK?ue^BO7Mu}3^~XE`V3(xE8S0w$Xg7fHo9M-zD186!~*?WNtT9+8>?Y;S8!UF zi_&sA&T`La>k;f+C0^$QVoM)06xw;sj_4LW<8-%K7P3QKRmuDetZv7p7)M#K*QT!J zPOulOz9{QLnCJePz0@h26q35aoq51+S$&oyW38S?J_ptt8Wt(Qn!!AG90TTPkLwC& z=D|W=ms)V3r4rz$NIw`6B&;Ub(s%~ubGh1$b)svY!b)fx{GRLLy_n1%IBFrE5W_3k zQj~}aexFg@&2mpsoQc6cH-D0pJCoE(=b~be4OfQ}gOpZVB1bEUv_~6#5}KEoo2ce@ z7_9&6W-g^95Z0!8p2vK3RXu}H<69fQmZcOS1w2tM_+nJ&-9e!BtniTL{NuL4KL*N1 ztOP@4Js^gS^87(gsD3~YY$a0jkZs3Zdit$2GZ;hHQb>M(GpK|0Q#5DXh4!Q(1{pPc zkQVXL?WiZa1lWX=yn-@Qtu3xR4Qkc~?fOE4)WpMS9Y+${Ls|b0wnr zZ!4E%BD|o)lVDn$qBEo%+-?O)^tvPiUunur#}tUTY(GP&Dhb>!67*|NqVt7y-&8MG zvZtEs=DtZ@Grc_%gL=K6?4i(AY;t9~TGq0hvG7ackld3fB^o>}Ll`Kuxd>!(iU18n z-<~w#Ww-3coKY46Rgb;a17jIwq3K*7TU7+|48t#M&wOk~zD1MW*a>+q{EG<#8eJq_ zmj~6Rl^AjV>Mx<#6NNiVblu$1PYhtollqnIXc@2)Ad5ipmYvX7!s?ht3v}d~8OJO` zn9fw1JN_*Eq9`S|Q!+5h1Pa=+pYFKD5|Ql;+Npike)K%Lh++Ocjfam-*}Gaa{!@tE z9q-4VT4lZhpCg^uneTs#*edvyAzZV@4opt^_0zYjd%{J=rizlE)sD7$n(e{`R8}!2 zf-@Qdo&X4yS=ecgk9N}ic>1b~nLHfZDQb9r^bppPd~`XMN2bKKnjpUG;TV<&zbEL1 z-#>jj-6eGGS|*|*q=}-Knagz+zjn<={o3JieXsJ&YzOx^SxbBUVmM(R_YQ_TDJajX z5%=53gGB0#95HV;TKPo4QZ)^Wowf@s+xO)aMo?A~xlo|3Oqkk&IgG^ATj zp5b@kJ{wYfjCRDBla!+b<1>g)-L~~axh*tMl69FoP;#jfl`W&MK_YW-Y27Yw<{UL_ zQ6YoJc%#}Tj}b3C1NRjLJS+1T(%hOBPwmR!1vjyRWq&=1c5Oaffy&Tgx>I@ITK7=z z%f`8~meBRn6QX4e%BpoTOj(7Q`t3@rx$?7d+D;zpS^M}8-XEt8Z8*I@Ln{MAZ}?Mx zcC+>R<`LS!Ix)93j6+0`3`WP1beQnI`4JuU_95r0tRP@ zVVG}5OMsl3achrRgketsp?N|C34N1hO!G6Wc1yzska11Q#!a$GxMp+)?%ha`dm_P{ zp`3+h+>3VFpj$T`9XHrfugW6*ge(!1nlg-j;a_X~f=DH=9zaauK3gE?8- zgow35?|5=k zG^2wE8qC}6xLB^T%?O|aCWEWlO5nsiWfw~2vIY0+n(+B&ZC`~MK(qyUR~#KO0kEv4 zXX6YpA3z{6S-UbxQdxj8O)j~$X?#x0l|7J4!1&#=aHGxFc4vx5EsD>w*O4{=IOW=^ zAxVO8)f8rnQ~x;xhw30NY#FqvY(=-AP2`F7T94HOqHKnibh4r`LtlQ0CLa9Z_L(?i zKtKV+IAMg(h(i=X&N!DBm4r1ja>pzV=BW<5lX6Ggg*q}6W&$bWNo^;Q;!5;xG|&5!kd|_r?YuG9#lB%88YiryYeE|p6OMfaJ^0;2W~8n;9c`uczRN*& z-Yy|{P$yY$-PT~h5P(QPw++GB4w&poTE53h!e#rMfj$cAA{koeg`KDfYIS7-@zc9N^I{@ z&A~0M))sAmwcxo2U`K7hmi-CqmxTSI2L+ydFX|{_h>QoYE^;JC+1gT_n-NL?D|H+5 zP)O&2)-Tm<2o1*D$%fx5mI|IgSVH)6=^?%;l*|KJBpYQ4bLe|$h3oLt6yBOozx97<}Ey$wgS}&5Sj_CM^QpT zJn>q6D%fmpK6fnZ0>Z@I?yob>X?p@Ts!OK9G^DgC8fPqJWTv~4Q*I)(PFxn00X;{s z**x2owHW|77(oOcwvNDxlJA<`{F*KtdOCO8S$M;`0mgGOM>A=4wdgi^p3bnLRZZOL z!Xa%;0)@==-jsiL?u|ASBqpI$;`@JZGR zUS)Ss^jpfb`n46ROO@WvllN{=pAm~VM1fAwY~Qhd9(FIMl(VPb0y{QiU-h(|>QA3^ zE%s^##v~()0P&l~pDn2rK|5NlHIO3Kwmn$j-#l;s_|N?u(t4=4VoG=vzbl5_`hmI6 zqrASm9Y_xp8m=o52nk>+Q2clT?l$gaEJZSOpP^%Pnk?Qzm1|J)Xu?XFv2}z<%Qt|VMX!%yH^@{lq~u&A{RN7(QbQbxZJnsCT^;G5A3OScoiu5lt`@-LyX&)Dwz zyd68pwVd^w#|xu$=WP3q$QVl8mFE{2%fGqTta?BsUVb z0TaRZa$3Aj87z5;l`vHj#(=VYG!-~_;4p6b8dI+a3n$6DN&@y4EiFSilEjd}7!zN7b^GvH4_lIMVB^7)ty$2B0JU+Bt~FEMyx)nRCL8EpV= zYi10ljG5R2R6H85my=h|1pAta$+r)(4*Aq@G4@?5OPq&H%Gyzmv^U-Qq+r>xEM|%p zB$R8qHqE$~fNY#W$LM$eO7g$bq{}QQ&2$}ZYRa**Ng$bveFdi3iFlw}2F3XyP-_W` z4Q1tYg6W!ETETULp_s%>{FUa$RC2qxvhqs^C!7v&nSEb37RG!jpsrSd;yL^pNYq;< zS0R%&R*09Wp2FNq=q5d3l|jyAvd7c~8zF2|Kdl$thqaGQ7+vD9&cUBbeUB{S=H+Sa znrZDQ-fC&M)o^cAH(bi=OfOU+v#<+JQM#cZG|G%;7V$Lhr!+Pnp|VbrLi2VQ5Ntj#vMENMI=fN~z$Z9c5o%=fCt2 zv(EjG_H4fwq2YsH<2L?aMY_v)~zbx%c1GR%bkW zI!{k$-e`OHw^%7_r}HXslzt)C5(ojjWbC|+Z1TQMlWPKXR$q5ueqPtDaTGW@eIC-> zbvXr12wx;qIGWJzyC-n?s;vPE8Tw?Nf-@s-C7MF*l#mrYil-Z)&9KV5r+ zUiZp4k%DkN6@uQQVq0GM+rgu51ougj>&;mH9T~kkisRs{Z7BNHTagsAf#t#0i%8qe zlpmBOi{mH`O^A3$GJNyG#0{HG4a)g8EX{(ThaaIg#Rb zpDfW9F_inCo=JQTN&}>+_`l={`q~DpR5;QbaJvESg*E^(=#gdCedVK5wmioD&?xD< zQc&;1r?#uy@4HeEsOp{U^ozc$n*_stL}2E>i8iT;T;~~l<0SRWnt<4`8A2)z95)5qY!8@#WXN`)TeE4T;|)G2Rcd^;iB#e-~FJ-);S*CuIC zGzi+kL&v?>3B>)-(W-}-a%~=_4a%R69!p@tHg|O2W5l4&wb`|syq({1$rM&6+zsh% z&bXi9TV4bcOUkQZcMm?@qqI8dqp0y1Z?^##p@cf;BVxJu*0i5ud!tw%kX1fY!zGecXkGC_u2cU-QlqG_+MpU+*O``axw|0n` z?t_l&yt{#ktCP>(s(bXne2tA|8Rgma5dFCINvt|{_=9?~DaUEpFSB8FJ4DiCY}7w* zzdKmlVUCkJVPCsd(+%b}+i}OePTX{Li6rhvKR>NELW7kp7 zZ7ifc*APs!1pe5D$T`}i8Vq9V!JVv^Co=`hl6NC#xA4td<5t)*ebnoxZ@(0wk4o!2 z7d3$qd1{H%SS7&VQ@Wbw=|3k@?U2z<2;E`S+88J?a&(5;IqI<**P+a|DwERm9yHY&%Bpa3W%=gRyTY_NJT`Puk-6LqcCR`;eY83p zR3+#XlYlpK8#B+|7I9UyaQk{h4O@nr8x!}p#6VfyYLf?a8T)p|pCuFPp8%DMS;2UZ zsFHB&WQ3G6-(G;0>T$mZm9(zisAh5h3|mLUqKb?@gn}XUPs!-LfXsi$4-NeRxxKGM zDzT#6e*XvF+#dbu(SPp_DA&J^B!zj&qStGa_{+BUpbb6_ia|@-;2J%p<&T|uSrjfP z?It{8-{6IS0F9NOuC1RT1_yh%omY`du4X!N0i%fKJ?`KKC71n42hf4vHt{#Y4TV?MubXF?U0wK*t za1VQ@Qhqqt^wszDX~9n~m+insE$_>x3)MLhgUh`cB)k{=4ONljF0+;)Upnb}8IBDC zoZwCv>)wQA4*2@%2@cpT4O2o}m=$SSpYeZN`@lij*5B?8mitgg}<_rEeJ|^r)zAkaS{C^jx_<1{hTS$$YB&z=K3(o{aOx zq*T;}%P4G}2V_{NJ_v%IEAxgqoB`0>HdbC*nH&#vlG#)3);Au`Ns8Gn+?;D$Je|ED zelGS*;Q>8g7XF07wfiVs3<28lDajo7QMf^6;vxQ#?&-li^G)POY$CSiBF{*$b>io} zki}Qc3Zq}iWYXCrYg^ewwF8kLm)T3yv!z7%IwMKYY1CqC6ptfOUbFqsCBa)Zt>ktc zJpZsdS#r!e$hyRbU9(mIk7))d2G7bbA$V2kTg9G~Rhw-hQ9){T0Uqj<5o0!`tUc7{ zX()*Ta(z2GtzRNBeSL0{H4mH0A%~~q0}~1W%j%57^l(aECp{V-RBnnB1^i;tur{t& zK>0$Eu)MS}0GD-|r{&oiQ3>^zOINno6_}_2p<|svg`+R9E<}48o9u(a#8P$%qRS?u zV_z3-sAs)g9yYxLV4Y)}_}YyuOCn$T$rGs047q$BNi;Z=)=ckNMc!}bZ8O!wueua4 zQ4}1ixJH>6()Q|i{%ql%OcnLaF39Z6gEjON`56w{kHnH@ohzH?{dcMg#2#WK=Og91 zq*-|cSnGYnh@~^ot!6mvSyc{Vq_ou+0L**h z78*TPwFUkr1fg;E^V38#2kW{LEG|1E^+eL(>LhI!u215`4)n%P-*um+NiSDLQk% zx6#%k!WBk2-GFI^U6?kuKX{Fy-q@R-ZcR3dXqqWxf*zYV^DF~4_}j5Vx8&h;@ag^) zZ0FDoGOd?Rry>I5{aL?yN3}E83#x9+Z(qq{m<`G+&(}!mJ%l#XyQuEelDk?07&_Kf zbnn&)cd!j(1KTixrLe^o)=#3Wc+Jx~dOyVgvBwuw|LV8)Cnk6{NK8DVUjtjO9CQh; ziT^kpg}u{i{8Fx*pQr>z*#l!Oo(L(Kkrm$dbDeTFl3uzBL08T;08wyXibhJuI=C zUqSbHXrAy-rpjYDjqz=%EO>gtb%+DnqyVe9L376@s|rB!^f6)md(eMwtbf1|%3SqF z6*khIs!?36k4;rtFdNZu1MxLxBj3NMf`4kg?oOnhBPat9Mejt1fHN7DYpwdtGnvrD z@5egp#kFiwd;^)C$*(9g8sNXMIz$opAw-AOIiOXGlBg+!DBT;g^2GGNJefuqAYuRP*Cfz zBO5WDy{6$O$S@gW${I$Hzm#oiKi4^db*nLXx#Y&dZiGuaUe zH4gFds;JDYP0{_kRKuhY2-3FJ06^%O2EZi4H^Ax;A;SPY^HyIGA|Na%8PX_9a3tuu=I|Mup5gG0e~B^wP&39%>5_RS^Gm{3aavE$%~;+|j$ODJ=!rS<5jE(GI7 zxpcV8Dw9CKg?IJ@Ci;Pm>P+-~8pPNmj5m!p#?8w0AK zq;-`PnfUpUJM5@Pt*E9_6)8DIAx0=*n+Zrglkd@aRJ0S+$K^S)+PYE?%?cH^0WYB5 zX+s@gqOsf)kmBBYugjH8(;AxsL9t_4*GRfuc%Y45W{0cx-pUVjJ?e#a?j1`^1SX&^ zP4(0C=*iz0P&K>MwO7sVY%byY=?Sx%M6o+%*^pbX!LG7fA6i#Wny=*6SNA1cp^KBJ zk0$4+W*KZ~)exT}R^rCc`i3#=rzqtxXUyinN2L|^G`mO?6MIBQ)kL5s zzOR`~%t0--fDLP1tOPq!#*%%M99?^z*7w42taY~j$(DIeUS~t}T~|o7ITiI=62mLE zu5Vv>31X)Dnd{bUyj>|}SkxEl3qRH~;r^7Pc2og2bdfwUTlcz-6Y{Ug(aRz+2C7sS zXP9EC5qGeD5IqhdC_kO%vp~F|&YL7|m1j8m^u045EylVy&^Uu+C;ZMxq<;_loj@qq zI7J>teLLvwet4_E(tOqK|Qs-~%k?%-kfsUGfZgozBOYAvLNICXYvXq9Di#K=F*h8qL*sp94 zo+&iX0n;H+|0(gjq6rAK2oD!j-SThdQ|RdC`h@- zLekEe6O1y>S^$Oy9jgm$n#5sQRRTC;$;5uE6dV134d_=ex|HR6X(kHYn^hHv4)uDN zEVD}UFqy~iy-qX-61jZYF-|OZTWVn-jkruAWjmB>NhAFKa|IwTwVB0<|-+ z8-6g=Mpm21SePdk&%N#NgK0LFXM$Vu4t$a5J68Tm-(etuC1h}^lIs|7hElyEASd3w zWu`XhuP1b2Q#+*@D&om@;sh?+mk8a$87evMflWB!P2`L`RE}{-+?KhS5>ZAnzv!6SE!A}%CZn* z^EASasgfYU;zYMKqwnu+zKg0<25k6A)VA)DqhTsQK3zsX*!>*Q(%@-Wg9qG5WNuY? zYNlAPms>qd^?Y0tL(Z98rS>zXRy@GCo`uyp;q;!K(Z&^sY093cs%4u&G_M1fM`W7} z4@we(ZcVk8VVptG9T_xQ)n0kR#^+e<;dd@!Ue4&j2c84a7Um_U=u%r3$jI7Z>MtYK z2kA%f8DK&Or&$hU$HC&6b}4w=!I*YhHlAEU$QI7vLp9JI&hLc z@nf`ji(UwLfPj`ZEkOS+GO~tS!E~#jrysr6N_lQYgby5zW@F8@SQ{D%tM@Krt4_C= zht4_Z4Vc<0Pcc+&gJ{@^D`{?!ir=5^Ol#?HAC~X|%=QISd$j#N63+RjcS7n155L?Z z+YP)p_15!r;`#I_h~|mqizTAm)6;?F4s&p%MP84DsP zx#nX#UTN~3EAN_7 zg#db%o<%i0`06$RT%gy&IKqb-9I=5Y5l3SjcCd3J}(!lHzCqAETG( z--!fty1W^zGonteQamWm0Ghrr+;m-%s8E`+7m*`0+-5fv@jjz1lF0S%{81&(T*}gc zW-Oxfoim`DcV5EBJgNeu1(Lkeh_K!vW-m?+f35h+mvnS%BVXsVL?iFeTy`4_gQ!+? zHv%8|7T#Jd$Qwvto&<&$`g9He0~+iOu7xmgJKyPUo)R3Vvsc$9X@KqTZ~D&x6E8CJ zoT}^^y=xZFi{W|gW6BX!w(DTi8k2+Mz-!QO(hInk<`*`n1d@3~c{O`bB;P?nlUKtg z04AYjP`N|2_C$jmBUX?VR}=thys|qM)UG5oAo8IF0-=JW;uv#ooCwR0!8Dg534sx% zboY!`7j6nblrRG9Avx-1k9j6pb|?A77Hp;JmsFppjx0%ku@xy_D#;BhwuNMqMxFqL%~dFXDVO?G9PHvJPd~kl z6}jar!=r~YCp(j>%!4MUk09S^i1tRX*s-Rl=7L7Hsf4=EmTZr0e-Ttjh028`ijYj( z(VoAJtv7HPJG_kjyL4g-i-qCoS#svy4=5hkzvGN|d6oYGduOv@)0;uAdo zE|SnuLSxmvOgAgF{8f3II}wV#=%Ew<%(DSEEPI3a6s zJ#$FK<m zdH)fD@fUHe@)zb_`>P_OPW}16zL~?y85LBI^HvxHAj4Fn`jEqE)783KYFAWIMSaQ< z3ROD=Zi}y6esA5nR+Pew5r+0H+D)TyoNvjT*P6GW!Ycbb(LQHiZ)u>442os^5+c5F zPZiDjUJEW8L#AZ-Bgb$)n1EGbgV)Ab>iakouzB*m=rAy z3DcthVFWFQJ$ZDUS_wg3knNf}0#Vq-1)elsZfnMxkgFo$PmcZC>C^ey1HtA4S7_>2 z_6DR4rQRc@Q7-bh?5VW8TtV|^R%E;=q%W2ymh?(^ZyF383kft{jgEj`EGaE>ol8ze zBGx6e;+9&lI|`^OYYGL{3K0$z?CRz3({WFGf!{d5T5d;L9;~=$1Yvm=0dQ z9;h?3S7z6hUPNKU66!Bw0qrMFu~`FXX3U?K>1T z%PQKN5;$h}c(C0WrNt|S?%X-UNpJI1mKMlVLc}bBmLOE5M&}JV;c4kdLG{6BTGl?Q zNW9axy@W`2NXA?vAQZ%A-w@QUs%aW6XQ90(Dn4zP?}a%*^m>AVVIzn_6Mv5rU*`as z3PZN#mkqnUgyt#LY#%zWDIuAj$!!dW>i)$@J?+<)A^G`DDKSv5oF8MRDf#Y&b2Ucm zMEQ9Z3+6giz@CE83|#NQ+3hgHZq2_a>Z{ne=AQU*W%N1L2YzthjdqpTs{(T z-(i6(+Np*}iwrx_Qe4t-Y@q7Jg~~<$ad|N!mDr%5Uo4m8Q)lzNGI{NjtVxCOx44 z#lx%T=znc5EmY6iu&Tl*DkkiM2>{$a5r(f`p!@@UAD*+1>~(GwpeI{uW!$ApS{I=O zT>sv~YjZ{(V8uZj_ys@xvs%PH=$3tnCORgF=nzn>wg7h65>jN>Ge}$27J$BclsoLx zB4wFk*3rhp{?b;9N{h}V%Nd}CesHJ-qAi&o>r|Tt}9vPZ+0he{-%c=K4Re9DUYP;N= zsd=tPG#VPl3UKc|W%yFN+(n<> z%zQ7@A%G2GX+XWwZVDY3B)Ud>wPa(u7O@i3PjtQ|>MNWLr!0-vBlglqsK5;sC|G_M zRTvj-K>8g+6q7e?PBk9)3*zm9>s-S=NKH zHLks$?*dS0i*z0vmA@j|@->*)6YIr7fV^gc<83&vR&g)?*G41VkSa=5$Hqv0(A%Uu znVVS?%he?>7r{?upzx<#zyTOR=_z0O9$UK(ALvhidl2dv)d%p?PxtyxUZ~^F2itt= zF)vc0Oi}^9r_+b0E}fzlb;5AkAU6zpg+2+EzX)bp^U7IqJ6!cPza7r`m4<>8d0K}3 zO9zm9zU@-(*rw*XU3v58lP_SRaLsamf4Y0zybW;5*b{EAaouWsNLn<3q7dMYIHq~M z((=|XAaJ@*8tm-)$TysxdixEnnu{TGZG4_$QhXj?@;!Lp)V%RgJ|UZAZnm!oT~Yfj z24B+4hG?J}Yf7^+6*^@5CglaIA^?6*m(_OAu3*~oMw#=yQ#XAs6gb@eu=%%T`-%fL z(p{pWA?UtPy&Lh5lrd_?;~Fg=)yQNP6M%nmV#Rqwm z37$Ut|MzUt%;6BQ7xl6E(YYaoJIs5gwb(*sVW|iEm;2wFR$u_0%AanDa5`@{I*Cuy z_$~E89}ru`@o3@i<@wEc&TOlsC!R|m8g3&LErb1&ge>L>u=UE zN9WS`bEkKWkd`wkWog9e!w`D8+X0aMXDAAI=#88jsci^hHX>ks>07;#y)%Kxlb?bb zchLO4vK6q)K3(>%dH9(fp2BGY5EsM>A;^@CsJFHT^2z>Ga(vJ7yJj3|-sSc)-|p2% z@a_8a+gH^zlt|jcrTu0Pn(q@y+a8wrt8Gc|6Uosm>L0&FQa?^4KjG57W-WojPObcn zxeU2fWSXdhdMHthIr3;6s+I!*?yySzI|p+rTLzRaj7tb*wi0ME&nc8HjMqCkh9$zB zSFxw&VdVID3Z`|BWJ-SDg-d=0r}PtjFtecyxKYYLVgV(ndu>*v>zsL8{$?_IISiAZ z(G(@xn9;1Epj2j_vBoZY$&+%BgcG@GiKw)6T0?RN^zWs!wuYk<2&s@5R&QbXot8Ll z5G)y#ygAaRRbu@8q^%K{(RmtDy7FS$8cCU>P<~MV%(<5;m*hh7m2Or-yfY-e~9m_@InbppU11x@`RNs$hN~fkBwaD&ZARviwxlzwbWoM+NPwL^en7;rG$ZnM`42^mX zd;{G2q4d(hFzKXU?_7hnE}GX@_aLbc{rEsO^{)9wiov{QVJXT`?wHT8K!{2KB;rqz z=<2*?`C{8OmzwrTci2L|rmOP1-|Y1D_4*gM{-qsR0`>@{=H0^m;mkAdlVo-Q_=Tk4 z_9hF89f1vb%1Q01UEatxX9EJvr9-L2{?uCjr5ZXpJ(Ef!FcR(YqgdEF*3*wgD?Au6 zT+q5v4Hb)Xi1XHYgm_JM%F$XXSHM2nQ$qrKtc7NPl{W4Mo$(EfRI)iku^9|K(9_qxif9r1AUuieH`@3(s$U|*OT6xgi zd^~vh?|<39ype~B%itCu(*)#+r1d~_Ej>>@CAAf#-_pR{e(l7^ihp(>rmV-yI|F&Q zGJ|54Uck-tE11V@OE=d$QU{uPmuB7^w4VaHy^uIa2e%WG-FD_Ct<$5*fM}Y^ka~o9 zTxZp+x3geFqugN2v%{Kss&ic*sFwuDatXNhBkV;k^E3d}01^$GZ^T;`3z5!J#Sunp z`T-xILbtWtHTK*?%)G&n7nXXJsv$Wu%MR)Z=?b1hbj_#a(%N8;MwG7D(A2%oiLPCU z`4?zBHE2%NJWhm1Z$NCYcBE4p3e|fO9z4vEu3w@yl&8FU%YPnAD)}JM@>dHjlYkjJ zk3m|FC6C%*7k~$pZ%jy*Qzdw?D^)H2Ruyx=gX{`CRRtpjW2Nr{R zi~KPq&voFQrLLjD!w5jKdEG%qp<+9jdb#ql}|7#iSq|fB<)<$ zK^SMqO0}%Yj=yA$)(cViDGS~@!4>BUtEBH~gvRJsXz)|>^F5)EQ;CplXR~Lpx^^yT zq=Abs62i|J1zd2L*OGFih#RZ-02H&Zu%$b!^O`&WF9E_r$H$KoWFi)tHbAP#6IHX@ z2qpC`)S5T>fR*C{rLaR|X>!RcVLR5nw*huzpxub@Jx@K-N5Zlq5FztG>Ptib`7KEm=HXofkWZf}+~9d=Ml7oaK)EqN*91oG60O{$_ zmx-J}&(2|KDUj5G@}ZW41gSx)d702jV!IUzW|c@(Ufz@9f|Fa%__Y(?9?0W7*Kp22;B;`~X-wvNx|^Z`k;n zS5&aDW-?$sP|yJQ@#}%P49hJVU=f3glA(EO?@-$grd1n|E1vw2{y{BT$WLe3_pkJ; zu*tnYy-S`y*n3)Qa`d7Fu78M@_ohZ|`87?u^0L4OX4IHFNGxeSCI8q16^lD>;AWl@ z-ki&4?UhE)>sih>OfWk_dMpEAX=y$rblsEkWXn<0w1O1lKg;39#+M7_anvKgSoV;5 zuHONIu8!&}X2bNz$P$zAI#IJ&66v|lK*Y8O7j(&tnVy^KcSh6h<Yo^53)XbJM-Fov&Nu!OIb1iTMn9im zb&v+7E&LBYozEpM)dN}pd=rTB2@?^WN1E%)F0fB2GEfo($+xA2rOgo(SoLC9KhkIQS}4d2 zVXbJ4a>Rg{5vpT?+H?W;Rxg_4KbOZHOWJr;M-KtnZzRY%D~Ffx*eZQcELR`~2LH`Et_U8QTM>+xGolg3RwgXO~gx%09QAt}-pClT< zfT1HH!(8B3rDdWkZhi~MCXS&Kc98YY|PLeWov+;1U?l{(io*XUngg716e z*>u`~c~;Wb*R~+EipS5vc9gt^nw@Y_G@2>k%Bb8SGke!oUlra|FkWhKBU?)24pIRj z59)7H2}Y}omi8g)0!twx4pcy)qQq6>uL1-dGoc`2D%swj|2(pI6XsV6v_ES;Zoq6Qm+7li_< z_PheM_-NyLLii;g4{+UK8LH%mR_ah%$EbF@QN5vaJweA|7OTrT%dSKni9b_6av+>Y zcHQWb3y`~(WuN^iDMWriRz@uy-4_HA93h6^Vpx+}8W8Aa?g#)DOsDI#rC&junkU-` z9i7?<#H#r~1-SnTGbwYCp$ka7!L7jKC9JUOf}^9*+KAZQvN6%`m76t6sa`L*>`2Z~ zX4s-n5q9;ub(nh53$I?{_3P)&4_}B5w7C=`h)XyVmMORVOLzjk9z?wuqu16m(0vsP z=>9U<|8zvQdPdOJBh&?i@n-ezCe`}@lAnwmyoS#@O&qEO#YWLii%tf&0t$12aDDxP zI{mg1+YFqJHHT6Y$pIHd(Q{RF73ngyS0Rz4Xhw{AVc33iAH{nlR7`%8KlQ0jR7 z`sZ#`-k4Jr0cANJ$eYw2h{!Be%WKt(xl>jk27+onZRiOeGI8<@*-FW}l*bKpG%4Hc z{^_s$RNkVA<;z=&7gzY22}-^!y(II|KmVwKTo?6o|G@gib$H{%hi%@yX)_l zHhk=5a{yx$l2;cuN|WB0 z8=asGAOpb)dnf~J^-$UG?K(P;issxYWc+q*y#$_q2|+dJjt=XE82)oJs^nS4Z5et6 zvu_NTWn6UX2$u(yTESijO1UY_0B%yNkkguFvB!1X&6efad0BflldmXfNB5EfllCOa zt3|ohny7`01e>Hp9zX9+9>F1Vr^WS!SFO^CC_dSg*WSELZy8Kn~vZY#Btcd<^1 z1qRD!X&G^+J+4KzrC23*Al?d7?Xyqa2=;v5a2;+nl+{@_c3%M>PtS9HS};Qcz)q;5 zn6Cv7)=IuI=8cU4YzC~1k=*Iu`*6@<+Gtn?*3#5y?WuJciCx3qW zHENT7x~)BOu!wx?_3NKYAWVE_I(AN~NYtSrv()DiqG>ZrDq7PPAsEFi)RNzdnVyp6 z$w#73yA`wd^tVemnC${{r@ws&Ko2-g3(8OW3C4M9)(naNGX1ir5BONjH;5zp1 zh=q>@NPa@_!t2*tX|2t+VIrFX`o;;>+OA)3wo3DjH;Y~@!cXtRh$!m|ZAg?F+JO-USZdd#C5aTdO-el`q20Q za|>|rsze(09nBlPK&@Gglfv4L3@Hw&t0_G2^fFH51ysE4-oX?)YVWC5JutIDj-{9Y zYE&v9G--l#h6(uYs(jq z4`a-k&QvXGWd_whNRF%{%#keHM(IpdZ9gZ_-fM{8ZT2_7gr0}}OdYk?nKo820&1gf z%$B>?P7h)9FnTa89@!vJtfj1bSp-2(GlZafOQ2l^K)*^sDnF$hiN%%mHDIuCn;k(B zER56>;gGs$5!0Sb>(tH%AWA-HMcHbmhmhk$!)RK{-UVr2A%1~2<>?CKCu5~?Tle0H zP_18Mp%)2q*++tWW38lbkdxTWvQ}-%em4=GCW(G8AAOcY4RIl z+&>?b{fLaXTHM<>>y%tW>8U<1#D&i)h<6eas!R%X~Thn68S%OW_BBk zd1ziwN1}@QOTFm8tg5fX1k)p^@m6EwZExmlx-jIPB!Fuf-sd)?Silss;xh@o;^m#&`z}%?$F)-QQ(9m6E9pd4Ebo!=J z>uVM}>TtY1%q;J59Y~)8Xk;;=2&LCh2J%s*G&X(JjQ58@@pdN86anyfn%6@nv065PFI;$G&2Ia>u zy!s-PR+$NC76-^{o^OHLs`dji%b3*dr61LjI$4K#FwuYgdSG;2n!CgGT|m5ftxkGM z&Vr_6Z9iQy4mND%%j4Lof0>T$PKc<#6nQow#Gms(+2b46^}2F>D6Vl;kT&?bNx;an zAa<`;?(vMe`Y$iRc?bf{rf2jtEJAFQe)=Iv3$ZAG5%p91P+R3MwE5ag%S#6E8F447 zqLFsST{+K9#LsRDxFxXJ9Jt3$^UhSNKW)RAa zl_>1fHP4)E>22qkm$!+#vSkMyG|XvBG-^Ad@nw+_%10h5d@b{kzud*vD(5{wTzBF8 z(Ie*)$ct9YdBp#a#UO3wrF?>1NU25ke6Qqn%^sil4KW=H;K204fGSTlsyuB;eD$tK za*m1lPPONr<{3_KaHP0q^H5bE{EeJ zi$BuH1vr>2>$;M-^}MS6Q@s!V{ZIAJnV3FlraFhjXmziX=q;jv(RG8(8%UN0C@cv{ zGbjh(z!ogi>_x9tv#`uMA}CbSLe_KvosmJ%SbXI(P-xH$eMKUJ^VpucY3eE&%u?$aYHLei=+H4eocWC$Fn^ z4Qen^M8ItThskx0CWuZI9ab8lz3m9DJhtD9fE7%SO@ux>GsWlgDRyhymI<~0c*s){ zGkk5kg&zPnO9ZDJC(TWynM=po0URjU2y8bmdnD?xDJyV&@YrS(& z)H=KAEh5sw*RP*re zqFx%@pEFIn4@wgW(w#PJm*tvT0Z{dd@TL?+dWS7YS<3DP!c-m}#~JT~~`)O-7DLEPELLz}dvnc&0C6L7gz;1piyf*VJG6BVV+ za_fLAiwpEjCA!Cr`n(ruS_k#UI>tk`svVA1R}t?e&vF_nM?UJCcT9G0(!wP^iyG=y zG?Kty`kF2$Z{FeO|K2xa-E{N#1^lh=yRq7O}?#tck{OM))*;>b;M! z7wS0K^30R=*1$@$Rg1hxGFzS?G_;te#ol@7t5X`GUK^rFjn&wpM1A8O3X(ZTdZ!cz z`1d$;N2?0jo=`sVJ_%)qne%FvF5j_|zeQ}Rv7^Uj1837KQ=YwFnv5rt7k69?4@qxLopSv8_?M4iqP$2Zpv-%*h&Mu`bf)^Vr%3QzR%Nh{vgg- z7O;B;54m{@hgh(@E?^HReKa`aKvxQO1S>oo2$?QeNDr?xdVVa>wM~kQJpa5L;h*=o zN7Hre!ADdFT(EwvuTw7W^)_p5`3VK})3VQ>rCjB6azb zk$?JqRK(6t*%%cuyDV$VXt@;(Tm#m`lIo3jXaZ_w1&K_>qRgs?fO1lckLLU>!Yc1` z(mtwvUyGDXf8?ao=RAKi5szJj@Co|hR!IlRUglrnCb4`gSK&8lPbL_2v z1-<>mdDPOK-y6IHBG|LJKija?^o>0@Z|A-0Hv?gMd=@PityW0O{F`!g>qXF2@ z6>;UMh7;nGb9usRM|T6;ji?xV(B*2gOV6`P%aY3%5tK%Z<<1INAmJQ?>$5N#B%IU_JyBYjl?J6NYqp_b zT`W4FJm#`AFu+hCEu8}qPh=2ob`@ZNpist$LK(|R7kp1kr zAaO3z3TcO!*GcPKvsg0ZQXUs$#j~6GH|BN8P6FBy3Yd#2o%5%FRq|!58CB+2hhUw@ z&M%h})3Klmw$-ftXI`rBOx^sl$XJAbX1MY(mC~o6-%Iy+W^MjUi};VZVUM@de*en- zYX0f>DrsxY0=BGCD`SY#I`Vluw%?j3km+xCHD$mP*B_EuHD8dK|90)^PM#an`@XZJ z#cmuGT2^{?*U$4IgNh%!nSZ*xBp6mt*Jr53R;lI{w%wD~bp9=0lk>JVX|7 z#rwccyb-vTejfffQin)H=7j$I-WIm06ls0amQ>1J9DBeMuyHSAm!+;}xN?7FzKW!rh$t#J* z9*L(8`BC07EdLP@e$A(0H)}5&7HCjf!nXu1q;<-%&L7Ly=yq21*Uaa97cBW-IfF34 zRMP%xP&X6&vt7y`=aL_(&XAZ}Njo(rsYf`_>hKD3_UQrd-PHFrPd~+o2ntF(L9B$YUq4sQFekSGJff>_ zed9#rjmgmJ)ksMjBCzC40(l-IA%?qVK~>*_vf zF=Nsoh`C9oKcuCby&Q&lwlq?xUBd4`$YDICPv7B6^?DKKnObL%U$c+MJ4<2KxdwgA zX9<6|tB@aBw};EfleTM=j~JA1_n23nGd(g-QAJ=+zd;6~MC=fl&mlQ{#tM(D;G+Xa1@0*zRTebMFj=zxfI_2}|ztUL!T=DetKISlopDrwFa56(`9`oq^ za87r`i`Gz3acYK*8scam++h07Qj%BSK|5>BI1oOa^0*YQ=8TO7a;Rjv-q=nPwN6mU zy7W&TRkAEpPbd6#=t>7;CEA{rPtBC2<0|h@=LyHn?%YF5$DriDUG2J0fR@ww;hEp) zW7-iO2&eV*8ahwch6UoQC7RuiBNxGu_mal)63H1H$MnSoD_`h4(FBt%FUem7x#yar znKjElU7T$q{q#`vvrCxAiSa#yNsqtvG9BH;6DO4ZSC*asLqKM;m-!Exp^p>FF+8ft10>s#8*L^S6)Wa)vNWJ{ zq-_8sn|I;T-yUGO)yLQKPxpbGc_6FW0;SkR;10-+xIG00Z$XmVvOf1C-g*j6b;wrU zo|rAogMxd6#p&39#MsBz{L=%1U=tMV?0W!}^7z!PU|{)-ayX4!emClodoZ1mapUPB zzpo|F7IF;+w0t~u*RpR;UzrExO=_j>NVuQ52kj+9z68cTY@If->?n`UvRxl}gyuYC z`@44*fZuy){zjL!S4YTydJp-NefbU=vNa%aHlLPpYoqrNj(k38QOJtIGl!Mi0xDm$ z`FRsSM@qYP%W6kK2tUQ;&bION(xvx2Hgz1TXfN)#?rxLk|rWYd>l{g)o08j+Pmj{b zB+5Hba~1UM^0Xt=%SIqaI@fea&kvoQ-8^f7uOV|fedqxby1DNbkEWH{%c%26@-k$u zQm5BPKE3XL?+iRnB}XZmA2|zvNN0zwJM|kndZ$booCSmRNMxP(vgTGCAuNa}>i#CJ!uYc#4Ps`@o z$4+ng;V_e|zgc)Z`&(p^jk@RUNTbvKitMk-@2qrN|K!Y&rHZ$8cJ$Vq4vqQ|0J|+( z69Lj=4Pco2tP#y!^OA^a8Esq7*f8XJ_alA6&CVfO*T`GC2B6l|yAe{pLUY5FsC5Dj zzQ$-J%$3HOZaYV5QZ8T80YtYZn0c~=4;HTv+F+5K=4t?)CVGjk0SL795?ambBP@DECf3N4S4ACVpkmIrI{m8ub^cL9~GWQbWTVB}S!!d1=*UA`81)Wk+#Jf5|qBhzF zbvcQ22AtVcp(6=4+|>uuY{WuNyuSA9NZH5&nHKzd%S(!yAGTme0rCZLe7<>!9d9-- z;tScp^j^f>@k}@|*AZFIDSb?IPzE}!9E`@^jj@jznw=RPlY&K`Ew4g1EExcO44MxknAJCO6?(57{xnyG@b(4-x4AYK$fLs%#U=qjIQyiO|1+I}H%>w9`yc4^w* zaNT$2Z+wkwuJ=LX^f3ZPlXfY%0V)%xk_nX0Of5|mCoV+0&U6JyFH%uGBIIOS-oc;&H$g8ExNa=t z>vLl}xHV9MQIx=F)VOx_yZlOwSuYKWjM?=QDJOLHJUNhc?M1EtWw``(M8(0Gr@J!y zL=DIuF;E7u#OvPWS*x+8Q(SiVRJQ6%Qlbi|PuHb4XIPwCmSJiY$kgBDgcvA~I_g@7 zh@>KuHAb-At>-fdvlhCVP4tCOBuQx|H%L-mAxiosT;Yv?2s)!&e+JQjYdAQ)9WLxK zK*6>ld5<6ww&hCM4l}LoCeN;DB}!28Xd@45=Wc#yt@QGmWnF7Hgq2XKd2lD&w(6RG zoX0>y5^^81>E3BBN9IS_E2wF&GJ;Uzp3#^Da1sKOOFO|~Yh1EC{SG?ns$uuH#E$qH zow+%co~Mmt3-=1ITN{iNBQ*@;Y_7x{w4Q*F)}b;LpU@O$AFKyG1)0c;P!IP+TfRzb zi>)BmaaKT-=guR_(zX&Ek?B!am;#I-ebVx9d}ryeSxlYTd>&6D-gS!0Us|Yj{?)C0 z3lHY6A)b`|YUGRGkfW9niOeeDmwqXF9d;B`lL2+Sbif#G7arZ9L5?;7eHOy2dMd zw+9vWT2yRi&P$1Q%Z+EUJ4I&X=K;+#^5P~HAp0gLM4BZe+3fUS`2#uU$gTjln8sXcJIOfYnxULr8#(=)mdiWQQH5;ALo^Z&DyjwKo-HkQk6GS_THk(zJtRi zKpo1SgWR!%I@DH0PJ8u%<@HOzC~=e{ihRn=BF=RxbCp5XlFK|#R6N{V%3LQ7NS7~m z4EG9hDwajB6U#~{&$qZH>hje*7u2j4t16(n?H#IchZMUi=S}zEMp-&64|~2YPHraSgtyP-8Z5Wm;zG zE+O4AwD_<9>b`;uSBU{{&rj&sb+wcVsO}8p%0_TydJQ;d7otxy{6K|U5!69Lm{)YC ze_N!2T0=)w7e~h(@TX;ph^|HHgbDN$dVtJrikdd(vs~X#D6HChecVo1Cb{}0=E|o0 zN?+dvX!b|upW1Jxq<6+pzlxcfHa;GJEr+yW2F;p=x=9l{5g*tctLf1OMNJDX2}xevB=b_tHP!4-QdvY@UlaC-`zf~n=M?R21UqF>>|lHqYh&s!vwo> zDbqaJm92K1t&9Cf*}+8ff^tI1-OH#9WX$VCCZTG03CC^aFJ*NQ9iVR(C{YuG;hHBJ zA(v1XBX5`HiFVgDR|K>V3)lv(LCoBa^M-k_1H6V(3hA@ayv+p|TnETjJL*cme*NPm zs-<{&iJE3Mc#W2zM(8D4KzNzEt!L(C$*W^?4Q&L4t{=aCUSqPj&Elt^lq`MO2f>%hrAu|M?NJB1wnDMFt6@_wh5c3Ri`?54+kX%ZsoGS37J zI`gdB68jE&!D9CScU@G4(2Uowf1W(izL7GBg^hqZ0MS|VeL~8==>41ll8A9(CB~Vk z{gICf{^nw;@3msO@~{i|OU!h$-Fj+*)~io|lSk1M#|$di&VQU9_aT>x1X%$W20N@2 zfP$S$nw{gq?WZLp$!Qc0xE3ltq`jsE@HPop0*P(L9XqS$tP6u43IgX*KT&tG1+~y^ z&5cu$DwP|G5DAyO2)Pazju(Y!pTHK=hka4L+e$?<|nA zZX+q7?n#UnyR@{3CKal^YZ@g}V!zjd?mR|E$Hp+Ih8~(-1bshzx6x{Ca#3$Ads?WC zqOrQPWvtY(+Uxlg$bQgg=&W5l#Ob5as}q`ney?UY2F#oJv}5|FTJXIFj&iA}^Gz|Q zYI$)UwU~ddaeYFNY=L8>*GisTTQ6b`z*&R(oLvLDyt@U-166!zVJ-eS5wLH>e#lmY zqgM%&!Aiifn9e7PE9xE70n9{2n4J;&6ZT$N{TltcfGQ;p#QxE3RR>vVOoadFwl=XG zX#Prs4@}K|l;b+x`AUuSW#JegargwtLu#?4w6DAAppZh1M?F!^5g&P0FzurNEGVr6 zFt77eH;X`6b_W8+d5JMk_hzNE z*4CDTS|f02wFfvS*StQx_?X}Tt!qJ+Bi!2EIk47209ghhD;^y6)_q}T2n2}1QBj$$ z#=L(A#lmw80rPNZ`pI@9=YYb)W(Fm}vSbBKBo>X1F{Y2MR9Cx?AFa3&a)*$E_N+Y#X znj2HR5(a1~8PHOir;Rbk&fuhYVSCNZBf`jhm4NW5EkEuperwm_6Bb@|WX8u4cW*D? z>;-$no2(Lt>m;x3A|AfPj8CpkvxK5sy(bsvee3=iCt3tN!?ef=bGRtoo<^IkP%9nlotnG7BneGO&JA4058C6%VM{Hc>ZT9@><^AUPb za^E-dPp5F|)bVvkz{Jg+$~s}Kk0l1SwxcqSw9*I3&=Yi|7C}{B^VX6)78z($^MeJB zcxxL+k7NmNvfKGTpop2vy}ahU3Q5 zXWkj>H;jMycKZh9BUoV>FEOR;b_6zc^*(go7tb#FD2VC_`c?aiT0vELe5>_kZHioR zduso7=x;4WE$KVRkwSltJPgL{SgmVzJ$uYUjo8jZ^A^A%rJ$3_@>F2Pz9K)p;_}V_ zHpu)i0NV@yD$AgGz~irUR}e5*h9{jBc1``SEC3grJ=$N{{V4qFpX#6Ikss@{PDhaf z-Jo=sXQEO-*~#R^v_rRA~G%;a^F+I6y8%w!o|Ah zby}wv{3*X2azrg}PA7uND}d{Xs){|iDFNm8@-U>hhSc*%!A=681X+W#?oY2(Hzb4Y zzgZKHmNoeOi0=G!vat!|`kpF8vdog-cXL*g^QSI|)QTl^8~VI`HTwV^&p4sEQO4x&6sq>5qUQzMLo(aUj>?7&pfU4aHx$z@8mRQPtAm=rg=_5_(@Fd1 z6;Pr-zwXN;kF;86^T7YTLaXIsc9Qki|K2OK+UmHX(l0)w&y&bq#Ts>R&RQVMUI5KV zl{?`~bHtWxh_lw#0ld2*w0(@^rZdK+U*c6EUN+eq(nt}}BV|d;zze`#FcF#-lc-R& zQ>GuT(X}pf~whHl2D-8l>q!c+y>3uwNbMZ1^#%<>705=jlY^4Ok;K!;0KgI;!l)98Wfzjd#IreA_bEl3P? zB0cNUPvm8zSoWgenj(p-szXm?Bg3=lwJ(=423(2I>TQ%qfDbB7*Ta;pAS!k)5qNP< zkky=YO-oM(hV;#4QA@W$!A7A!(}+LY(n4+S5f~7sq5~3DzIXBmOZO~bTMygHgt6Y_ zBU;)X_ZDzd&@gx_cS$Ap>oYB>Z7B!=m8}9Hy z;ktG(nhzy!1B^$6Co zO4T(F8Oc+K$KLMOPDn$t($llI_w9Xy`Ox8zAy4i3NeTOREE&r~%z7~2P9~S9;Nw2m zg2PbfzQinfWxVr1TQPf3Hh_0QZN2108?UPf$ogx2RvzzOqRVfIRB8xu^z_|;CvYj$s+n#;hX@9OfBbp?@+EdD$_CW+jmqEifBLg7p386Vx6_KgVPZjW?U-T|SrtXV}$hrw|V!SS4wp9D9{ z&?;aiLMt%eMDGv58(;q|)T!dcH2825P)cSt37=dxCmyLemXMMHbf^lot z*?;r&F2J~2of_rmpUG|?RSpbwip=~t!y8r-AL-l}Y_yeJ<6pS&L+bCMb#CG6o2Ebg zt~|Xv*5fI^g8takPv2U2ZY!mniyckI({-PkA7WvbLi3nI7tr(Hjk?o| z7%}9P(n zS|=os61aXHUYL*Z%rd2C%*Hsh`d+hLS3Ty_nu|{;reVom{}VtNI)^;md#3lafje`a zW2Vu@0yT z`C6cie#N56^B(|G>iwvaOgJq!bULUgKKf_E$#qzE{4?PktLaa>1g)Oya(*UJdI@&{ z+R4e^Sz)g}SDSBb+{yHILoJIN0hi8{?;NIXwNk#aUL#0&i$}(|d=ROAez`JUcYb-bbcbVGtrR11(Im#2mNb3INoLcAu+ zr`o>rM0nW^lz&9@>C?A}JiNo2=adQa=UY%ZXT~7`Odj(oqXcuFvC}d=T1y|5Q5m&3 zE1yaF8~63>TY^$;3uwd2lBe_u-Q8VEjal+6g3{>-(nTyS2h+DOuX_FZZ1{Sk)7i{9 z<~ja?Z{DPNlG!TgaaFi3b)Mn5vGAk<7yWoBeXHHtn(K7{>_dgvhk61FPfnl?yyTii z_YCr46j@8yl#alp_A8y)2ex zqH_O&y8ure`3mdo_TQ}?A1exb`V5_?(R+R-(315oNS+EvJ-8@SkXg9GpY%$Ily&ui zfly89VKcUfvHd?nld6}N!xAvxj_9#ELHI<%f~e;+IE+y22)EhI5SNl%??p!kB24zU z3}_x+Vu6n~K(7Zo!gJgU{%e}@bcU)jO9R!S(V>8HJ)vvotSOdftw#hK)Rdz>4+t93 zh06p3Kcgcdj6rh1e36fFm6}zcq&k8`jU^%JxMC#Fw|0Q?LSs^<-v{lrR4SCU@mY@!3rpJ~sV zt%s?smR8pE1D4@{yXp;(pv%JfkuEt1%t}uLb?q%F zl<8crYeg$UYNVaR_g}KLX&wq!7hB7%6H+f~_a3(8WhIZPFe_&U19UTyj`f@)YLLu4 zf_PedQP$mjD!^K3(RxDI>tb77yALW*cfN&KLN6l5^r2Lb>eg-D0kV)F#y5MJ$+qhJ z8q?fw|J7D~7n1ofsonUu;NAJvdb5n}XKFh)Q`>*&kM3f3=|WPj=cE{_JQDSGB0SVu zU%k<#L>atbswY&q%oTRPkj+rzb_Q;-t&GYyycIA$QwG?L5p|zh&2u1mVIQ^Dk@VDE zyl*(nyY8$)RYYq7bikPJ!{C-+kNg~!d+-&&_L3e&k*bqao(MtQOw&vjGHnT>h~iFk zXeP?>^XsAfhRy=1K9$wXX0;yRI2Z>|x>vY7dP1gGJ2Ov&fbU2$kD@vl6X%O^G*;7X zU~}euqQ!FA**C=ERk+Jq8y8oA?lEG&lG?mZyK5D%Wj3oImEbUOx)mFd^V^mz^wzxI zI8Y3v(xhfVW+d~CTD9a`@oww1BEiIpJVr2-(^Was2hoLNL2+kxq%g`odQPu~9LQuZ z#rnA}c)0L76!V@(ilh$l$Rd%i@uE=la@<|I=+(Kc84WLG8E`=Kgfg6{@?vfLEi;n_D2^}SNx+tl37*zXMWGC z?k2OJ_i5G6_L}+58$}=%i2>2h6}Q0DW1e*^QW{ESIn>y9?5#y*tu<6Ds;CSt+4d3*y+mx2`rv!I>oO}^33JXJ9n5kjSO;k0&2FXT&fo}@1I*_#w%S6)7ceBQZXT>A@e2y zp=SO{@-17@vMxv2rxN1t52ag6bJEga#LX2Q0n%fjoLfeyO|l)8d|zh_R)p0w?gAX_~a@MSp1?F4A)Q?;W_FD7$QVi7C>NVJmy=HCEmV4b@ThA zwYh_hA!jG)OvCMU+`|*Q@*50$;=CK6U-@t>&W68U+!Tmeh)w)=cvOOf?skR*(N1_qc^k}LEbdb*@jlMw%r!9XL!d<*ro${<7 z!f91#`$#$=hU2tgm4KSrd}xY^rSZn}9aEl+k3#crlW%2|BA{sTRFrj--_pyY8%O?r z>YRvbW8W{Cto6hjL3YhhRHN1x(Or5ZwsCLkWXzsj(ei|*z_Krl59Vwuib`-W`x`vh z++pl+FmC$kjrs|^Ke^Ox1B3dg0{{B;^PV5sg~~Icb9>%u`wR2!Sb^-(_Q!r_=^G5C z&XbcCC*Uw~ve#|4?Qfm?1{40TUvGHbx06U(|7 zjip!D>D@qVbArM4du;aOPV4{rAOGh+{+oU3|NhVaxkbX{MS5QMvC9QWU9M{j!#u-f zL$fE$={p!`Ex(^U(nk8K#X9rQ2k!NEK=B-hFl*k_Ll^RfcMJo^>J|4iPU!gcT zQO)OoCt%Y~sBG~nf#C>bWeNo^Us_%h+rEFULa>*fFl0atd~;hkILjkM0E&Ix@IEn| z&G!E$5U17&nP_J)w0=B~5H&HI^Q?Jx;1C3LGtgE?XPC4V^@6*NONp_!N`qCs1UAwv0W2+2TEuK7bi155zpS+>`& zpHDT|N$gUQ^dhvBaT0saV=+&ypJ&X=s3o1Ox`4P&;Kv8NB#~fa>!ucM8(I!0;&h9L zr1Or3+{=j0GqJ?9=sukg+K>gR;P+dWc8LiBWT)M+A4u*TZIBQiMs^g2$Egxa_Jo~}dBr$Q+fa^`1A z%Pd-ChY;@s6Q1uojg5T|JbYv1OJC-XTLU_X{GI)PGF#Dflv!q}PxasNrw>Hm;Y=7G zGWGuL>C`~B^_VAkrGJ@DKQ9KPUh^k0=)-7F&r|z?XaPb0sPv7(Z+55}09@NO`QF1| zZ_VJ_AJgPc%GZSK8k*CXfV8`Pr~Mli7WBO5X@RS~%{-LcKF-fQ*!TIAo?7#TF!!H> z(7umv6bSHnB7k7GmwWi_OV5)|E}gxl11R|{{Ef7*-U}d90i&mZfLHtT2GG1AgCL0b zsUojAguDUdcG1Trui>mGxXPU{M>QV=O+6C)PPR;>e*W!Sf&tF&Na=jiZl|8mfp*7N zT7KU=^IHj6-={Lr&QIQRd1Uz-u97={tCPNqm+Y^c-1#m0um1~;itwlOzyE;P z?#`7u150JV|Ep+Vx`x8gR&_vqGy7J9i|7i5KW}m>LFUE_{Is5>3{4FCq_Qy(HCBwX zU~as&c4D$a>vY`rl0!fn90`jjVULy2{=2n`vpL6sNO|H+!3J5D)9B5*o`tHlp_hni zkJH@xOcT0#H+VET3LArSSVEr8Fa z+3JnSm#g!-JgtK4Ru5BQb-0pzo*jo9fwn?L=R`_iIW^Cg&IojxLt7tKCU|W}7}VGs z0+(Lb;uta+aY3t`Ar)g+2&h}yfac0-plRSP8@tg8tr0V=Dq=$JI*-uYIrmfp`h*Oq zd6?+{^`e(FWUL!bZ3tv13i#M1eksoY>_rDzlh0K|TyBRVkTf?+Yp9x=b3F^dA2AuR zc2^1K#Kl?CH-?4Q2LI~w(wL?=9& znT|RI5b6^EFA!5?NT8C}HdQAcR8-vp3_`?_26uxY(euAKzyF5bPnCAIXk35(5n@t$I#&8A!q*{2`H`9z zxz(T5bM+cVwuGTSMuw74zq8gk1YPpQqdCijIrsQRiNP|vy>@oxOBkwbeT0nu*s#h0@d2r36Jo=YcrB8SP;=+uPY2 zRpe&DPEVVmyXu+U0?y;for0}ve&xrRU8hzN_maqmFoM4s)5( zz2>+54wr8(GoAPQ&Ox}I87violU~xR@vor(3Ph$n#gOc@Q0MRzD}UyK z9a5+K&7V1Gv*xYf-30WD7cg&wRe&8*dKdzB7gEahP^WErcl61R|Gn>_UWJrjIU}|A z-Bd3Y=ZJb1@Qd|Bk&i_sDg;7s zXNk%y)m*J|!0OBGX&f^tuf5s}A7;Mq^X-|CHoBN?Ql5t^j!v9xx^7md+$BLEsFq5v03S_#Ob zr-z;yIoWdE2>v9`QYm-X!(K1L-Hzr*8-?qcmDksxUhe6&9{Tn+1OT<9Je-2CAhJq6 z@?{Sj)8=pTiTv3GXQzG~ZZst)Ku>ZGU9=1R4Vmp9oI_4s{(IzeyeA*B<69^FGlTr^ P|M&j^Inpth8aM_3$dZAj literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-refined-macos-fallback.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-refined-macos-fallback.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8f8d47fa65e2137789cc66c8742f6a5ebfc15413 GIT binary patch literal 28674 zcmXVXWmFsu(=1Lxf(AlxcMAl!g%CWry9JlU-66PZaCZ&v?gV#OSbTB!1@`j1_nV({ z=FFKn(^FktRZSN84(`7L0d~@<2PBrRqj}Ik`|b0mSKXsMEhDY{J{OFldD3qjkd;+3 zR4GDRW;LNEjV`@#f7dw&^O<@tV=PgaekG+Y^EhbyS5<~XD!cY8VBcopj=U8ei-e8d%jPXd&e0D8?c9A0PNvw-}SVo zkg>!A^!2zrd%YFvViVqhY+eCUFby*`~SfbE1qu&w?YzZXRPCy(p3_In`s#T&Xdo_c@o+XZXx z-stwaJ$}i+^mBKE;b^o&2>|D7_j4t_uNZ(Acj!H4N88>(%9;Y83pO6@x%rfFv?Vk? zzN~t=M$~y5-Q5AU*_}KamuBM*4y7XotlY+9>?Zv%{)9jZ0EA$Avr1)&cm^4cHBO5*WO26k5{ zsc~`)jyiVd`mYa|&ll(5*E_pwf=2+T`w~Dx`$7ED6 zloEjJwDY8PkVwC7zx%tvHJ%Jal*>uCRkZzdSsT=A*|nqzTX@Bc)aHA~RN!Tz#B{#E^KO~;Kd2Ozuu*WuaIsrb`Zo&r(4XaH93%Mg;+sX-ABt# zXcyyN;=DY$l%*)B1FO|L(473qRTm@A>R6e<^zG@Tn~l<>r}L5R4GJZn1qW z8g0}1K`Wmjun@Nc67@`eh2vqgGl&{UcroR;Hb zlAKAbHM9$ix}6qptlzh5+qsaJLdP%Ag;V63px$fTBOl$z93X49n_57w<_TIy1}?WB zVwOVs+=DeITyJlDyVkwl4PA1p5hfNcCF`F1BpTg;M`0I2?5$$w)HT{l&ZH_hAhpO= zaUj&!u_ZyFcwe9T4I03ykc(bpvve z0eyF`eAZ~)?so3>P!%U~DZ8=mdFiKG&=YxZHYnAQnw$JX0;hVgu zFAakmPJDKnrP{qQ;zaEPb7U12T5LC7@%}#V`1#d8erOqeS;vGez0|z@NiVS8W+-sZ z4Z1Za_reC~Xnnjm0^S3>ci8~m?zhJkJl)SX{oR2#&v#2?j$==+p&2}G09@}egL6Q~ z)5Xzg#yz0JXEb#TN`}P=cpiUg=ee)(>nrK-yxw{xVZGt;o{F7^gx=qugRiYGj=Q0! z=&f^aXmok*`)u<1GydWD9A&w?%O|vAClX14iJrt4C!t1c;A#p0-axE10B*dDN2b>3 z@8Cbq!R~W5U=cMBj|(KMw^mNqPkxKCKrP9k zd6~LzaS#BX430OS`*uEFlpLyIf!i}MdA#jK69DAfkCM-L1 z%)2+Vy?p_n87RO%zb+*nYtpkZR7TLTTaYxm1 z9m8|#wPqq9E*%ChEV&m_qvoZ%=US=YzqDcZfzLa z<-YssKWqV|Fh+O1KCW2u^SeBnSbyo3V+iIsyf)~9*&_}$-ZBOr3|=%oj*|Hy1`o7n z#5NlpEA=}zzrb|B2mJ(YD}zA`1;RxX65F7Ciy)Jem;P~eW;h9QCJ_wXQOlu8H9@;Ad8RzODaZdtOZ=g z^-62puZslvRdn+W>Ks;8W^&`?`G$skTVgd4g=+F-N_wHC_tjy28$Dkiu83#SMMVZF zJ&$d1XTqe=HWCKg4|wz0d^@{6u1^g+ANNw-?z=%ht^05mZIJ+e8ztvgm&4xA(AY5V z=g(_lsU#g0ZUbqq&lc-XlyvXT6o)4+D&>r^&MB+IiO?o=D{A_nXA9xvua~InnAaus zL#|QxV&>8K=K#?9I_wnbE9^O_dRUO|max||g-LgrdzTN-1>Qy|gHxQ3tLdRES*pYA zhOsouNiX1O9~TSkjcxlJN8}C8Fz5>Lm^^At$B#`=s!UL|>CbiwCzfN(4x#^Si}etz z!Md5eaY;`BY^?e5?DSdYk?;x}IKlp_xd$Cn@Kkp>FvEqfDIWbAx60GkU4`U3o^(5I z4Z}|+Qp7TI__E4C&JPyf8&f(RoNS1cYe7}bMp6z=)M?EjAe+TWcx63!OZmojNjK`z z>8@bhKNYu!Rmq}KvhL$$c*8Eel}jRRm^oe;)!^*u-#Q#+cA8U+GME`u`f;3AsqXH_ z1)?8G<+W#>wl1gnd+y1d!SAm+3Dz~f4GSB+M*aIsRs>}&1q99E;nLCS%O*z^*?&Gv za4%hOU?VOYt{BBSN{$Pn^Q^)vqE!AzIL|{D@KDc3Vhj>V?G-5GF;KR&Z#z*#5_ePi zh0)CM@6i3~Y}2v0rDk(mXOqpfr@QTzf~n}NH@EPs#NBTr8r|rRvzf&jKft7#|s0>!=IX~@ZyG=waT)jVDEXD8(`$X1!~}N z$p!zg>?g)B(9*09`z6}B(*1oqyIx{!DHle|X%{c5xL-u6?QxUmlGfO3+uRh7@=2;f zN|2sSJg!yX;FeE>(VBdsEHy$g8noa8Zy9~_C&`Iq0GHr*S+<&hojMn7suMUDHwAkLiZc&HxiRjzH|4Bbqs=BQyI`qQyDv`^o?poLM#86bhQZ16BI6LucM}*r<9aCF#j!5 zPY>QMGC2QVP_p)LqM!k`wS1WQPJr$E#J_ldzc5P6(IDzMcrR!>cmIT8e7tnq^q1@5 zX0D^Oyt(kO{X*`qiQSu3vYQtaaJp*sy>F^@9^|=#2xY_R-4XZm<91K-faW;#nRLQW zk%y!#dzC2nQe1q!;Rn>&MnoCZ6WvPCCl7H$WzODDss3V!rZ(kz&6w+bZN*g*3=+gw zv0YTeJ3WDlpAwp#ph}n#{QTZg>+%i0XlZDYy@JYZi;t-?YCQ<}9n&P<^q=yvA@L8Y z3-BYFPBB$TtXfG7w*A<<;Eb)IHB>ZTyNfa2j$8t1#SgBy?5hx+B{Z2t;pWvFeH1s% z4|PJD6Gg3*u!Gj#3hR8074~WWJee?-z~(|pXK1d}yBQ*X{3%2M$BxR_4WD=0*X*wt zA7@GsrRJ1%s?tT9d^&yZoH#FySIXl;Pk@ z3_*yS7NvJvcaix9RV_j=j!dk$(g>SP4Vt0e;=MPto~rB~x> z$$n~kfU^90M8@pXi*oOo--Ng$(u%1yfvW}Q^w|YUkmRC_v0TC=bJG;7WDwohC7#~) zdvZo5Y_*+9i<}|ihTp|}m_hVhTWA3hYv$_*bZGh2@bRY|RrvEOAz#wZlM#NXt_Gyy zab34a@ztUgmroQ;5dG-7k|mP}1r8VW(}~AruLzVlaeXjpQkxGpA}}=~UD$GC;#yez zHkM}g7wtUg;NrB!`2j4TKrG`49H!|+mF?Y;N0$-Z+Vsi$k`SS~UAm7JtN4`LBpxq^ zL+AMpszH;ASNjGTSLV$@{$&9?Ux=oV$=sZ^LEk5E1Tp(z%Pluuzd+J^@D2spf4$Y{ z>_Tz5$g=AmiPyBfaG20LqL5_G1g2FoL|rc$m90fbFq?Q9jeDJvwrA3LgixhSiDws; z2c3vD>v|aX`7gDZrN2%D+6tbaqKih1Na!~e6FyYkFz2gkh!B#a4@q{2-#^MbE=VP5 z29hU{5(>YwRC~_gC69vW7?|Kr728ks-mW>dtTKz|UVJxQk4Qq^w$-k>Af%gK{<=M~ z#bU{zx)xFS_(cI0m{H&9F4dPu~4q?#SeC$#C*4=TeapUMJ zqIS(==yV+(q(-TRxc9Y|6_@VY5kb9irpK497xqiuV0uz5m2shp298(*;U(g`&;%sQep_CDrZ40Xc6Ye` zdX)&z*6uNDn! z@|(L5t|u5aUrs)QRx`yM!~(olNOEvU61A)>cH)LOl#xnx!x;Ryn`f#;Lml^>MCv zQbw>+>kwuT!_Q*FMk$6VnZAxA&?OmjPoc%r!$IP$Z-oi_N;`a3V^H{_aQt&GW)_J>| z(eZ;{=}YMqv%boyWPV~#MgJV^yMx5eh|2ZLMm3q6)T>}%6d6<8a&YQ{fmT4xqH4j< zZyJB|4?9%gkUh5dEs9Vks8j#4OeYB4r!=5&NRE4&T^td*^YIfgw=s-}Wm~hh)*Bhx zMeq*9YWU#lZAO+LG>cWHS0dlX1wyH|{S3XGwYR>!$A~JmC0$O4a6-wp$lZ*Y>7uej zo2AZ^k|a^N>v{DLgcjrnDuljvh3}>1`6;%(IGmm<(cI2*2C^# zjLW4DQz9UQ#Cj#x zz#qXXN&fTJY?#c2s|_`Il?(L_PgkRMolSh1;8sA+urEfGyB;)m1NNV5EhaN(6}X~UWE`fG!{c-6eG{wyCFs0nr; zGA0OjWt@U)i#l3&v*W}fqNgKp1npH|1unHs=PpEcH?Z0}A0TTWQ*&_mSj5)^(eA%k8RrdZ*hBD9JX%}VR=R+YBy_EtkE6Z&xnDM2098mUn8-H&|E zvn^PuUi@qUA>{bKwz6RzDfXKzL!aOU(I`xGWHhNtJZy%94Tr5fxmpcW?W?mEw5qcT z6t5gp0qu#$tx_(oj8Pv>NnCO)CengFQ4SYrfrwBAtjFoiT2fmZT7av&JLGxAcxlYbdFX=|BDx0GP zeQ%7izsM)o4G^X7TjLh;`y8RDS1*lFs5sXBEER1kQI?mpJjVS=fOoA#RljJ|eReGe z%3Rfb#o!CRq93Kp2>}FJ5;I=glB#N@Vw-&JiZ$V~6+=jWODSMG=QI`c51|yI8ljXS zxISGm{DM)W@^v?*lQI>FS87dZ^}6TtJAQ%kRx!Z8L&X;7n7@AmWydv;k<85*g6Oq6!Dm*_h;W?-izEFJH3?-5iZ+mAZghrjJu6E;+eGKr^;zbM_zrSW5~2;y*(v+(>le%+tIRbl~o|``ca9G;Aa*pOXr@b(DpEs(}h}Ig?%Ea zrxEwP2y>Y$t}TUZB*yOLa{3axmDxnq%SX~36&epC()$f&hZ_8uFWSd}LrUDx6_;Wz zq8~|e&NG$sUt@$WK74DHw2bOl+(fOTTqUwQ?O;pkE=CDOy9{W zC7C!sxl4rjUQ9Rxlxj3^=uI~kWV?S+G5W%KB$*V&*1t_kk;e4J*^R*%M3X+lCx{eg zpLRr`y4Q+fm5`V^M&hU244 zqE^+)axd`t6rai5v_z*$uE?UkNWo>A^gQv%-2Rm$8$mU_%n{{#%3`N(T;~gdUK|ID znq#uCi~B_6`GK^B{7dfBU(xE}zn2nq!%8SECiuI+?kGLdbFakjB}p6m%bs<2T6MGq z`_Y+jvTk1Up6JcR`lqL`a3?b{GZAWaldmalKZ#V^g?}_+#N;w;C=F7V#EBNFx3{eU z;9-K+j_obp$DGi7Eh-23^+4mR)Z zd=|oAV%Ta{pCuuP#9<6>Pg1TJAe6>Zk?yi9Ht7++~$YyNHZP4S60LMDd&L~kF$ zWyRk4bZP5cGUiSxUs4wmF-FBYy5SoRJT0RNp!y955(Iyz2=Wj_XL6a}$Y$vsT~?66 z$8M+gg3@&8UkbX3|4E+QvWmP&J{1xrKnExEi>%SX;IMKkx?cbb-a(-kJw+k*SVx%! zrRJ*<-k!i9qF`Dpp}d%KeI2G3D0xF$NYLib;>%;Jc?HGUX|u{#$@gL^O~7f8ZrxG9aM!BGKV_rQK(%LsCeVip(dbW$NiYQ z_OPK~T7-%pId16)GnQGfF9kl+##zM+@!unP@@)GTW_^oW*&1=%{2*3|)^pxNqV?Ln z0hi%Hza?sB%Bjob=&o5>`Bwp1oKJ3Yg!sllu&k=xBP8J)<_)r0pl@^HEGr5vj`_K5w||3&)#m$#K8KoXB|xLp z?9*e85 z$ml;oOv3ptiRTfbTB!6Il<2etIZJV{4>gfknjLSOz_;Q>4g`pLhkvFESvqkJnv5IU zHFGAPLZX#q?cK5D>;|n~%Qs*DflgVZ4>@e>@{=-hxTF<+^P^L{&Tk7J*~MySvn~q) zP)n{Iwa)Hx@qcd^l>#Cbri)7A*31E}OhML0TP?4@KzxHs+Od&!&8YeGIBl+mN5Wvb ze9;v3_|HXgH@!b3D7Ujqi>@55=U3<9d;cd zuu!l6a*8h)BMK@hMk|aR6d~-8*O4-fMSAyMGZbTv*GWX*(fWY{)cW>(HOksJ)`obC zRa4QRj_XE+jV*3o!ye{$GnpS zNfF+&XilYj%qjit3^RP}C)r8C@)A0=0(S2@s__XF@g?*%95&@T()6L}pOY`oR>mr~ z5~g{U|GbtbN|MbCt@oMv4d56YLxaPP)@oleW$1EQT}8!Im%*@D!^wy>l+s(H-A1t+N1rgO4V z3lyWI;9siP@&%=;mdJQ9uvY3=C{0`7b^>B5nsUosE2`J-fMq5oPzc4gN61aRvNR$X zed#5E`3(Qyvr-bTQSPVY6?cMmH9&WC3{_&JZnmCYb!Ail7zPv9qltj03^d$mx3Z{26NEq&P%9SK18Rq>5!o&@`;{O5VnA}1Lm8e~-gh!b<&|1G{%K3lh2uwA^3xZR^AiCx!iq>KnMDM5wD#u)TTQ6QNxo0kXYy_=nuYkt@m z;SZKZiCfuYJtg2jNh11pcRM;nzp(UW>N(YfBHH&#VoR$<8>m?ya%*P3n`KCla7pi% zj)&fh5(vB7+m0~Iii=GCO2&tV^Zo_&hh`O={mYoSS^FHsC%m@d#99{HH=%-%UHN;j z;?jq2-8E5=l7y_7DO)* zZ@zS{&H)WU&JX!S!K@?#f6L1NXKgrQ{$~cUj&=xSDlF#gGSV8DC>etceYu&nIcEv~ zS4`fl#V6TYDxR;kXDhyvMqrv z`Q74X;DBUgN)n=PdydL6obAx%w%_t`$!m8f1@YLAP4C*fEfk?SYJpv4W#QPuKyD#- z;wvf&pMqyi_I-ONvHAiBw4y%O#!^7PtkmKo7v;ly1l}cX(75PSD*d9)r?KYM-+UX^ z2;pK|(Y3e6F2jm~q*WMf$}WZ%ODbSa{oG`@)m|TJGeAZNza@humL3*b>-`>s%Acc0*Hc zW~f|v$y(^xj+85J92?u&m{f+;(MTKg{UpX(-gQHxI%eieS=DP>7Oy%0B#j?m`8_Ly zC?UO4_*<&~7%9>I;o)~`Z?L^6@g0uvD&+skr;VyRj*F};yt+p| zfHFT#^mgX9?K<-TTbmlU8aB%yvjtXJ3jSTI8)T;3!hb%)O2bILmPo&F8a4k~T8Sy0 zFC!|}j6B)!o)@X1Bb`t;Rp^F$syKhas1ZxHBexMXH%Qv8s}~9tZ*a=TN$H&JwE8&5 zudkiq>KeJ?Eqvcf1cs1U-^FpexQ2!w&8Cq=J?%YXmoOv5uITs+SLsk-MtL19clO_DVAOf)f$KE?87HC+_tm7dl%d+%kqYq* z>`vR7{D|)&nQ&^k-|wXmv~+)`e;#gL#}~mNFoh~;rRrJg=R2o#6Q9U}2g#*y>=Eh# z;*0ZuqVES%i%_u)z zVkMl^7R9#tppQ?wGO3E=_^0#*g%+gq0Sb`&&dcI}<@uE3C!Jb8iiaHVzN8Y0=0~(y z*2LJ!O!{;yZtM9O)iQoxenB~;JWuzoT#l>7`Yr6_v>ZPq zdOkN5poo8F8EM(bNS?)iTH`NoMP^9~#+i`;s@>jnu9>1or1O>%xr8Vvo|XO?-^qxT z=b8o)TxR!5&L168l^q{m!~6bzLt?;&Nxb?^qP}8OxYeH~@KmB~=Gzduo zy;5g;2}~v17I-(R^K-|M%Z7%m+X7{|cfSaVk+?kaJwyTaviUXm5dY$y6nvgWtF-j7 z^Ezc99X7Wj$z}@pnL|H|PMY%gW^XZ(M-S*mL6$p~iIptZuD`BJVB6AvOAPuOJoE98 z7;C}dM@C@fZA!eS4vUA~r)tfrCUTYn?yZUMD*N%Q>TMRs|5g+R(|rsuOZm~aE^_I( zq6HvfsY&9I9`-ir=%^0ZMt-<;ynnd6qqHOm7L z+et0*K%PX(9q3Jqqbh~~cL}N9(P2h3#G&3{rclYU@n8J~N5R;?o-lUdfR+V*$Kk+>(&)5{XhzoKq zGQ5nAeomz?#K&0#3NI^?c=<%1jogrd*Q&UEZkj9v4gXVrF3Y4i#3#As8V4zFWYfzO z4m?d-xK*-tE&umP635J5^j^)K>_?oRuIgD!!cZR4qwB9ud~%$uV$CGk1Md%Qw7B5S zzA863xj#+F!Di z__}TB6?yZjLZ~H|f+y>&Bu1%#$^P3`D$!$Cb#{ii$)-7m!YstxIs`>k z$Mt~@#qmm~A11Pr8BS#4^UU^4GN-LRwg}Ufn`Qm(R`BabnH~}bcaIjjZLfmzs#ZbS z-@LcccQFl=<4Qz#7PabgBG{o_PJ~=bNnWU|3(hkOLz%gyp6%BrOu~e{fsqnU+H<*z z)&G5PBv`3Chy(a6oaPShaQOQ2;$S<%N7t#2XmTJY8h7k1#%irH^O0K;`89Wzu`f|o z6@YPfs^^V(vM#UrAvs#7kTjqmz|R5412+XbWERcnk;7 z)XX+nTMD7iFQ|Jm;EcCTZ(kRlnf1pk8kYq};Kk$v*qlvC+62imX&>xEVp(PuXrC-s zcgR^NI!K=5&_pY$Mm^q)x=mXKD?#3wJdQ*X_p<5dfhT8P&jkk)esQLv7)zq;W9KKK z_2v6JV_^8Fws;XDUTLs2@h8)>#4huTj~(`;9O7DrlsyI&rvWeUd-sy!NZr}3_y1U? zWY$B~z+^f*S$k&M@3rBRbxt^?&nHhUY$=H8*-P2}37OWCJ{@xcO;&dykD0!Jn;bx1 z*_ZYy7V3+?XPjH%_-D6i^L7y#oEyJ~t3v~!<3E2bN^)(Nn9#rCN}ohtn&1rzMqFCZ z$Y!Z;Ri)Q2o_3atqL=Vo)Pf9{CXk#GkQX%xZBQ%KtT$kXgee4dOlBOvL&BQKp_e^#u^u@@@U$9@&dYX zG(>(?x*SNU?P;x@z}2ZpP;8-T8_?PCuIxz{Kya6>ZLu9lcMv=9sqpvWeM&> zz5trHxQxpgdL6!`8*y3{Qpxt-EDDz-Nsd8lO2{u@`tc#Od7SVE-cN$TW*(-*n#u24 z8A?>13|W)B1++_e^9A|5R)TVqjakC^Z5T?~tBbj-9NIcZ{fDHeA!}ZXi*JBBXnpj+ zQGqVnHCFQSLw7YN54|}?@dNiC4o!Ubj5a5En^8lHf>nFeX~StQuV0ZaZ(tG2He5VR z7JKP>@dXe^3LDXFL0D=1+UIpydd)yKxBMO#y;?c2bI}B^x%ngQc5%{l7(^5PEgu8t z=lUCxX%wnfc_X;sKAs3?j|FEyja$if)S?pP#*^;4knQl^8e+(wt??(ut6aM+b<(4t z>nlkt($}@&GE#Mki9Ze*B2_x-c(jR5{;KLCt2io-S^KjG2s1LD6qF49lF+ecNnnPZ zMF4zl@dVKYUGTCW8uj9dWy4#gJP>X^W%k>3izM|6DSz0>gS$H8PrXyQv;eQ=b<$cF z$xNI?B(?n@e%zjOuKhCczEz=Y$l(&y#j213%pC+UvfeK={8dOg&*H%-9sqCzAs;n^ z7XCGAG7tV}Y>`0m+TV8|Q?ifT~KJW#anD=~Zix+Z+nTI7HDb`fk?<$m0aBL*5aY$<1up;$K=VGEb8{i9HPxi)`|5Xs9A5DH@K>APeD~@Gxk7kri|jpVsJi^%4U$ez0ep52K6texZ1cXK$mD9Y&qoCR<7&4%8AO3FgV{B6eCJ zg7k3Td75F*C`ldI)i!4XWK@vlC|&i z4%)-ALGNZK%3BxrA*S@NNz-Ha73Pft(bSX2Q^kKTtWyW(;-%l=7T7xdzMkcp5lBWw zs>;M~sY3zv)i2of&e2|q_o1}S{nHSMyqPhv{|3-)quxKY`^+-=KMPJmjyX>XxyJ+^ zSggOB7$=8{u0bD_>nm%K8&wGG3Z;Nbulzl?9nwFD+DsOjM)D+B<2#m2PL8dP(A1Yz z_7*?;N9slHC&KdT;LvMo#TW9=QIp{{{uV@$;r8p@YBBj3G%#!WC$dfYA{;uWsm)#` z-n|@gYh`Y}!ITUJ-2hcFF}iaj*QZp`r7Fl$7vv^1YvfXCbPx1QG`ZWt$j2-V&g z0yullYFy03awRT+P{*yX*(pdvBN*s@R9aKN5E5nO6jIvNsgQh4-bLHsf$wB=$jbMB zi0`9?#$mthJWrgduDOqBt@?LkYcLkbF)|%pOc3%=t?C@`3>AJLQ-0&~KOOYYVu8v1 zn9L)9YL*{&9|R%`zgMn;ij=L;2+u9{LB&Tt4P|V~s_NbD9pCTV(ca9)*ZRk8&Pd9J zPyyB2K<^)+mJWb{9!5@{__6@rvmA*a3oy-%2c1)x(*j=_`CKi#F&?U*gSe3r|Ne!25rgtF6;58DsXntaseXu z*?y66f;q5yyb2RRyEl){=q(b}{)XHY^ABmt-;s>+j2ve)$;&ylt61nYNs$^dP}d~l zf~+tX)XYxlj2F6^zY3OY9F)W)RHq}^%rttI_ys5c+KTDMJ{u2+Khl!m26e3^D|MEudjOZwAhD<9uDzFJt|fVhQG&_+i^Te;2Y6+VG0I>i0oFLHd6y%U*=I~8^-@LI8+ z%0#BhS(3!R`=kncRXcCbngahFEeoOd5jZ_nrX-u8GdpCdc}Idk3)p1%j$y=efw8m1 zr?D~W9{Jc5^HLM+`Z1r6{5#VE?zL0>XyrdxVk8H3z0nUc65*cR{#4_>`WoT8jS)EMCN zAGuG6TC;0#u%hKaZKyrR_>f#1^NBzrDKi*@iQMJZ+A0!~UhYelbLS)dyG~3(X6Fx1 zZR5&S2r9o&dc*xp9-XpgFkRzl2F|1Cf52}0>cHMw6677vHP##SEVBJvu1=|y{>4XK208fKFFxZ$+jge67!Jbb)Sg4`(Du81(zK?3k)wsJ z+Ge1@NPmMGLkDj=do4jyAs)u0$zBh^Sb-2TyHe=ae6A1g$ite%V_i@dLzVW(uoDrtS&#+B_=raF%e|9mbtF!08(PG)YqM1? z2uMqvY)E$hy9_T?hj!;q^{Dp0c`p1aHe$l#%5EVI8;xe{x(<0+oTu%#3nl@zlW~f> zuc9nsm9>^L`q6)B#mD^TGPFX@l;O2@NaZY)bKa0}N?mSfO3Pz!wncdsI$w~TI{KiJ z&Q$dw$5a7%o(1vUu%BrOb*em2Y&!WM$Z2n!vw&0_gD5ldV}!aqs=gK?TlucxN5}!D z58K+s?0!t>i+_ZWc)^9Ii}Wn=hX7AYSN;EzCM#%CE{c-H!Sur{3*KOO-;OsW!L zfLCdZdC@XY;;G9#P1H(cr3eqGe}@^%M{EB@e0-t> zfFEzX0=s$eL8GA8Uq^Sqq&CcoaX__R7qt{Kaeqb-Ul%kp_h(`{XF0e0Q%rBw!arL2 zo$w&ZB@dJHWs>DgjHfB!U_Hvy#MY2~L_jdrmQC%}`^-?<2m+0vx(W7s2ue+*|5BV3V+ksO z{beh6kC+OKR~H#;E%(=F%d*tqo+93!qm}JqtCc)@{Kpv>f-b5aTk zy)fzXF^V~pLFs!-a+hO*D8dD|$}1ZH_V8UN&Gtx#(Qh%y70qvuUZ3w1ojWN%mUF*@ z+*{&6y%nvYlogx8VT=YbvdI92{wLMXDPrbZVr5scHrl}Cg!_5zel;>oXm7g^BLt2*efA$WtIN8 zT)(x&9W6>V_J>2T(S$>!eEppp;FrIo#nYF4^7goUn+!BWtQcxT0-RR*xnEu5W{tP% zeOgv6;?mW~)4z2sk1e%a)|Y|Y9BshOpST3M94;bd3cejX4IJO$28$jsgJikudi0sQ z_-BsX$erHe?=Ne9vCLzbMWXiz$tmG3L;_Zy&@rTAvzbuO2zc{-w*>EY;ga$E(TGSaSC&@7y1pWvW4>w98vJ#B}l*q7$2|H~_m02n_n zB}xycW6siaj(U4Z!MV@u7u~M*UZN!bNY_DFbm1`DVm(Ud{a>G;b1+MjR9onoXNF>g zJISAmkc7+N2)cvR7AozH<<3RcBS-m`;~)-1R~7_$_=`ePtDh@=S!{5a+ZF8p8~m_r z@CC9k?D3!QhnFG3|&IVC8qS3Gk&?dv!P+S1LxaZ`TA?a|0yOKK5S_k^p+bkC*ST)E7{cXVFS> zcwkS=NPM-7uy+huxfmbkH#_~MhP{yn`;XtbPg{OaOXAsqIwq;iN4e25+9_qFt~{s& zGTp5M>5^!}`bYEIT#tgx-v5qZl0mDWe-&76RO0Mvw$-HtUGol4A4 z3{Up6WgQC?-+8pIk-qUk(}gZJ?A|B5w0H|8$1JAzmj0`iW`vsf13qNPIqPiiaSKyN zI#Y#e0lCz$mat6@;IK;X`CT-}y%Ei$qi#VuM{Hgj--`;|l}!d4*8qoO8|S1hq2M~& z{He4T21x0-WYp?`rv&k(UecZ$n`3xBzYo)|S zKPq%2dgvOB>|Qxx&nj&1r$Llff~Y<4^kvj=t3TdBiUWO@;bcE z1i+f|ko+v9@D)t|)*)j3RH>DyD4zBBxJwBozfNfy%Ra=5(IHT=7RV`XUR!c_Y+)_5 zO|dLzVm(jMMg;!c)z*4v>awyTQD~NARzc$>))Zm%7HNpcpks`1X&T$`^cGMP>dHzb z1^fC5`Nmg}!petX*JT260Htq%2F$^^^j5{|fJA1qYw0o}1u9fop9kJ@q$4vr< z<<+M{ueLXV2bp=2;jWNM_MfCqWA*_?`gs3vZ)exWceLX_flu$;r2n@yWuaO8Am9|{ zV=MbZZ25-Mhq>VMb`jq?Ba2(GTeDiz+l;XK`f>b@a0EFk;;imV1X9PPlu8-EhZvXg z4&_QGVUwF1RGj>u82mOMj2H~K`%w;^Zc_M?i*}Kul7rDc3zg#~+jhAKBe2nxoNrO{ ze$Q>55yIROrStN&$_ukYKFCmkdw#6y7WBhzY6<0v)couY(r%QWp=jSU6+f=Yr~Jj{ zRz<5f)$8-jpt0~f!=NHu*k>#YMaIyq>mRP0`03pHpQ9Y~!w@)ACWdl{V8{%@(nC!mh|M={ZPhaVX7O9*vSAQ@lfn3 z5;YU?g|KC|E{x0mgUi@)Z5M3FRp-vLV&EHFcFG)A7m|I4mrt)_c34DBDq6-B)6VGc zdx1pLoIq%Y%Yw+e?)87#u>Obi0Ixv~EywZ3Q%*NcH7p@qZUR0;mz@?0d{%TBME>Q{ z9?J=NaEM^+THKu2q!PL-lCwsZmwk9K3;q=dCA6%Tt82Rsk8j}TIKh|pakL+o6;z36 z8mx>)`(c#qey)U&uVJE7$9B$wN0}i-HLp;LZJG{8J-GwuAH-jHMg0Qork9#!nCZE{6hy;+o?)$XdQywg72b)zIGInML zeefW4qllI2%zLNdc1`J&!z>#cvussBb;&Q}m=qK*U?nPqDq>2k*uMiNik9!i8Y7;P z%BiZhov#rKEVxYIVa}9??K$U9>FHlWn1GP zeiQku!E04Q?%ApFpR(#pyi?3OEyr$5t)5G5c`1I$+QIWv7;`OB_~h9qGy)I7k;|nsF5L1NJ*J45QH$4s8tOgcT~lADlo2REpM@7O;@m$6 zZiC{xP`B`+^UG9mDdfiS!$zeGDvqboSIcn)2f4W@C-wTg>a{f!{)D6`IqO{G7R@>r zwf(;UG%w50>|xV>QYP(tTeO4Xff*N&ZRZfuIrc4~1j!xgRjFENgV<-EZYgSQ%dJJ- z1N;LD@{fuOekHXmg5SSQYB{VN|EOr8rR>Z(;!&iE&nIKC?FKKR0xHcV%HTkX#wkt8 z8_KWDwi^G<>0tltjXqEdMmMMn$y_fx^bn5*2U4&tvd3WW<8)zT*Kn=IYgov+IgICV zhw+jTkOj;y_^u0&YmRIBWH27u2i1g}&hCk>z!mqev~z=3#^J@vn8J~*TLxF|^Pz_B zsLSKC_2DSI!38&=w(MRzi2J$0t1IAT(|IL3M2X#do=2}s`WU*zI1f%Q^Z?sQHEM6T zC(ZY9Xg@7~_PyQN$>m&G1{QtjMc8&{Du;+C$x4Pws;IB7b);qF)82m3>6@$I-K zu|FOCdnK3WNB?2P_(w$%tE3#g5h*Zn$%|GUP71+efJHEu-Up}giAis%((he*&V8SU zU~@w7KbIv=<4z43hVs=3%c{N4+f;?3lEIjDM(lrHTpP6GMR#~y1 zh!OkVs&9@jt}ReT5U07j2qIX!(|^c2&$AxP}$0f9{z=s|f)x|<>(O2rKoH!U1B6=Gf?TAn1P~WaXLz7zLYJ9(F0jWIL z3flN~ZZo%Cp}m%hn-Stbe%z0tvUdcRM9y+Lwx7H2ecAE7&ngnm^IKn-wA1&VaLe>D zk2dddYp$m0PSuzn-JYfI{jPmA9)DzJ)xt-54ymQj{n1`+v@nBaM?+_RW|o$>18)Hz$Gk^BuN8xI$~m!fEEVJ2@${c{HYB+mW-5J8W4+TGE(? zgyeHDYR@Z-#WOe15U|RYBiFhxT}FMfWx8ymL!Y%K4#z{qQ)-jbM^x4zisi1A654WO zN7fwCh9&J0(l$Isn@Txxr1RE`x6?;d*C1Nxk)mW6EnIykM)eWV@xkQIOpX+dIs%D;1vA4p_> zR8&r|^l9s;S)%pINq2K&EaCJ}JOG?z*=p;9D*GhbxGCC7EiP+7-<$&A&t`HNfOGz3 z2dtG{5IZB2GWfN0$w09hnD+R{q>tBjFV>9vqjnDN;(6R%oQ4~PrjVHfL2bc4YH8`w zba~K*)|xa;lYwnxRo>45Qdwcx-XmG<91TJ9lLe&FWXoDCbkxaOICF+LC7Q3D9E#!?m#OcKaA}DxLDoMMf#zH_s8XB)f3p93D_Nq=C1QO+taJwrq0@q z{5!S^Mx|mD)eER}Vejo4)Hf%A`0ubsmoshd4K*SNvn+WXUY8!!x6uqtny=WT%c7-M z&g21h2(l$&w{_0t>S3?0hQc1+R?5 zi*hh&27AUrDN^RrK&>UYKl0~6T{tIoIIXHHl1)^P^Fmk0(Ji^6{Ghu5@(8<8Xopk>mFw8CuPOHukPDQY7Kl%bLY;++~u?sP{8^K{@_p)Hkjs4 zhr!C@7c8}VpnpK+{ZY}uV~ziVYVVJV8P?7rKGbJVBZ3z8WHfw3-p|Hk*yv-&T_KLe z)4e)~Ve`Hk{mtnh|4fFcbeH8wQ{bdJ-{Z!s26kO?Qx5-$o<}EaDklMh!+;&?G)(r~ zY{c^l8*!fJ5=Ey+ug+C#fZx-WkM*dJcp>@5WgUqttDhadvIgHswR7CJV%hWg;2?%~ z`fSr~I%=AQ5owECeg<$v-U{HTgTrYm7hL*|7}YS* z_i^6dVgFShN}`x ze5?F&VD0^JZ63-bzUQLHS<4HKE;&i-;D(Lbg2DWQrz%pk66}F3b&p42b3)iZcN-B2 z+QV4Qw6JLpYd(h^_eR;)%Hj9chxZV{EA!+`Dd36C>T2P=otp68&O>;A2&??Q;%s~_O5fP*!@7H{Xl%I-6|e4R z?r<+VDsdNjx`}Z{z34(EZk)+O*?p%c+@MO_%{V$%&3pT*eecOT-0vbPMuS59>l|LW zaQ_A$sFA1cqcUhV+beE?r`9?f9>A2Z4)-&>X_PD+uw7c6pN=zvQClNZ7+v!EXaozL z^^ncO8lH)(!+m*1){sMIjf=3jM;YgyX${gPA}^fFa;h!Zl2cd`_ZaNH!AtS zDU3Y?F3mg^_Tf1-u}|-9)Xcg$(oOPeQd*z4p`NA5{Q}a~un=mih{Tfne9B_wIP=H1 zQDZ|5kUmSDRC{(7c$N5(3Y}Va&V=uj|K!2ejZQB`lrFusmZMzV?RUp0DQCTDmJv6}_ub8DLW)!BY4f{i0H5T`k6^!Y4I`n^&5fW@x_=fucp z1al0SPQ&7Jwy$|bUY@o6aixumaJFwLdSxS4IIY^|AFLvZ82r}*#2UzZ6U=?1Ugx%d-@n4!5jJsXoOS4zwBNV0BWf|K`uiPNgjA|JK zd2Yn+dCS;-aBdQ}L>)Otu|lF6iC!+s*dDpI(AYk_W@9)meZe0GVS?X|TAny^ackDR zfXHOMENgo_^QoDasg846KXU_7%Ia?l-P>s_CujcmKh*uuSbw$0*8QQ)` z3OqTgbl<_pGU)6m)<7jF-RGcayIR}tV7`d*`4pf1GV!yb{35*V5y7czH)E*xg@-B2 z!%hhmy&tJ~9YZ~XrJ!0VMey|GUhCD`e#zx3{t+O=-ehTQxgS@8wqU)`{2+20Y?k45 zOXSjvX$c1Z<+$3jhkje3S#k=px!}&H`#ghB?$q`1O$Q~i%BQ7iv%)sJS}w=ceg|Gb zP0iU~2sG1Pme$jpey3&nsDqQD@hqUQK^@<)`gRGs99R1tbg9y-p)f}I!HZJ) z^V{HXV!+GoC#D9@JT|kdul<+B-H2@qjuGV1hI;H6+vjG?&-^&pYRf#&(T`HZ3uUuc zTl**Re zmo^`*?(}Rz?fx;owT%HAlHJGp?x_~1ZgEEkFz)p{4)RII#LZ~G^YgqxPG(;i_fc{zwFqu>|Lmox;l zhDi(`2{({S+}na{vjKKTWUp6u`y&$B>tWsP+f`(L71^JsyS?w&Do>p?#++JwKIa>Z zj|QJqRdmmzl7L>ZGzMy&5LEQ8=k9LryPEK9Mb&Be7O~WXx2?^*!6Lg?N@X}bnc8RX za^~*#yNEhVUpg4GuwE*Vl{P_{9=vWg8l!9}O9d&=5c<-u?)D43u_g)|8GYJpo8iq9 zl@_g_5_cbsV9uOM)zzz0=5n>Se>%p?_l@z(@VB?7YF4aCtv&a?V{ni4uyy*e=dL=| z(`#(_3kf_ujl;gm)!=@y*Kak0aun;%G4;#Y20633Mq-&}o}oA%?gZh5g(kE;YGHCZ zcZd7AhB=&5OxVNE{^lBW?i~)EM{{5MIH7ycR9QJ5J#nwqeBLL0mIn7rM8RSW2uN3J z-R1`OCfv?%^}z;5M{TN=Dz~JZ0*G4`<=hSK7m#ucZp#(P5j90E^B{E|ba0H!1nHoL z0$HT7M0ByJ2=H<>xSz!^f~_@HB02hW>a-ohk*J{X2M4V|b55BY4kfXK7j8w@tHJ#a z>PMA}FT>xSb+^|Fcv*S(g+41dIkkaBcO;+D!)<(iVrzD8&1s5#b+_MPbA>YqqJlk# zwYtOR5V9SxPZQfv*w=BLJud9E1r?>!#` ze?&Bw(Fg@SwJ2Xa+z+078;EZVQm_Dla$)X>2#|H{sm z*x8dq_3_bxBf$0Yig8J}G6x`==Hl|D7O%5*wU=g`#lay|Q8))>oGiF=Y1?Y-4llxwb`Opl#hF=03`wT_Y8&pTdFjMX#>* zJFfP}mOL)Q)*gj72c&oh_f>AB&G$od5|9HEl#f|DJ|eYP;`%9dI%>G59K!pF!E>tU$Ut^^9<-;2G921biT%F$d*sb;ORl(h^!Pwr|T?Z-1|%&?J0*f zvg@YmD)Xr|6ZDUU>uq?Nfn`a^ASi4&=l7Bg?X^tcYc-lXeQpXTq-5Wj z%Y@s4+(b7Gk*0>sgFI;q0q-6j-48tL64rPy6p9w?BZVz2&Ri{`<@AEg>)B2b7+a zyM?veO%coS1?{tFwhVUH^q`M>!Ubt+QNF6*JatF=F9awS^PCxm+=X5M>OG4V^QfE* zF&d(^uyc=7!wN{k)zN;2H>$hZIC(Uzl;v!L`lz)J8O6JFV;_h(SBWw@0Er3 z4)IGcv`5~Ma1O3RsbE!>PEJzPk#2j>SjITQYq0UAu|1oE*xFhU+&}ZM5{mgHqVk(=N@@o<6AF8b>2V%*WMNs*$CAd{-GY zQtp{PQn?H2?CPaon58|BWNWFFB0^it;3lN)^V@V@I|OO#w6s?TqeEtH7iMZ7_Aog< zmx8D&iy-Apnf~}bXc3v&OGf9t&dwW+tEv4ghJ|{1c0ErFc@B7Nokw{a4dIULLP{dV zgx!%>Q~MpzSL9+pd@jBWQ~O9puOU_?HRt){BqVa&j~;3$yCp`=P^t4yEiAVTQc{~- zUF~-WT?2y_4l*#XIhCEZ4crct^jP+SmU}u(=USm&gFY=0G+8)rQ~SPSYTs(E&KY%V zCY_tww}dFif5MDy&!Yy`o%T0by5%pOv!0cs{Q^$M?`>MDw34IOxgU6;<6)(Q4WMcs zbhDvxoZ>5yX+Zz5%$D=Ev|k`vl%3F6hB~>L&JRKhIEQnNTITKp`0l8sJ(f)R?ltF4 zlB=Wr4DV>!Jy03bl45&_T5+r{A@!q5V@aUcPgPUxJ@Kr=HMM zrgYAvL&Y+mRGjEAf%T9*7)ZKfTSG-?ca2LS!E>g5^{c1-oWcQXHr;Ab;FG&8TPgyX z#XD|HnVyDWp*^mf$zqscDvuN{%+tPV^5T=(o%-Bf*1c{yDFfREu|1-=rGz}3-y7Qkh)hvujq$A@`Jh`QCiX*!w`@}#h5YGz>7{ zT!y7R);_HIUbJHA51kKTl#+TEL%fRN?#Q4JSz5HzD##&+H`e~OlKT=p?L}%Q)z2P7OsOcQOHeb|0p4A}BnCM%dsU9i__!ncC0S%z|vITrmM*LoH$pXX>7??t%7M z;Z{={tWl7ba!a*!3HBXakf;3u-SUuD*(Sv5L6=202Umrdpg14(gH_}j*HkiU_~4-L zOER@z2Ct{CS*vyv=`PFIRc)LM;SpU14`30yO-u4zj2)kYD%T6Nv{x)%Qll5OS~V7- zO=Ehb<%&Xqj<9@a#zj`mMb!>Qqjn{hcxksX0O#}v>du7Kf{T>7xfjZ9Wf zMX8{|1Cix|{p_XX#O{A9K2h+xEH)o4sYex>-ligzqJqjfDi`c#PmwXFwT19}pvS^) z-BPztp5LVo!fSNrO`)Y3y|wmm{5~T)`wR-$Bcnj%Nx3eA_fzDG*V+f8m-9PQ3s9BH z$wF5*`+utKmX>mJ*W8+!Eiwm)yD;=?mO45B$UJxB*|4xrq{-FH{^=WVjM0BdR`!~# zM6M2sg12f5znrEP-YXBxxY_;xw|7Q6lH|A*{UQq@MM~ti7{)#n_Q6jJEDRek;D7hM zQQcJ)k-gQ5OvH3VR^{~04yGrw&^HwnDe>}5eFNbmOEga(tTC%3*Uq2&`-Vfucqn0{o}v?{?GsU=YRg!kx2Vr{HSlV z{V%-sTb+(T+?)Ox&;2jfz_<7Qq~80BqwZyE`(zi{GR%j=i${+Qm>p$0Dr@1;&D2T6 za-amNybyL|lwIVxQTH1~GfN_m<5^ORo^9PfwshWc46G<~jM*uUwT>X_K1HHQYtN0k zzgeTTbY7aE_U>ZqHb^MicxLClJ5sV)_kFhHczQ^Qlq~lM`UOb$kUL+;q=$~Bxqqd% z4^$>%JyK_ftU+(_r3~z(SbKbv?(bjX?eHc3H9+?S+$%(4Ybk`^G%9rLh3ZmM!zbf3 zyW@*hY?Y?9%8JhUO}SqjRiYK^GP*aP9iw>H_+pfM zOWMS<^Q0cx$C|9%vQ$Lt9{}-5>?9KI9CaWniLi@Oz8K|xX|7WeScnR-E#$twgQ~|Y zAl&hBS%fCVF;c%67;SwE|8~N^e=N~iMO%$ZG~#e9Q~O5TuNH6=PE@n3 zM5N1h0c(8&qfVA};@H~Qk*!DxrS;+8g!>!OKa0bgu+a~X!(W4NZ^dh{s}6NznCfb& zYtc5+NTek|x%bJ?QkTgTh$~p}yz13&$o)++hd4e&*~WyJ?tWvtXY8TX8v<74y!7d8 zt|tkJonE6Rk@B@D_k!q*^17+?uniow<|uC{zKq!k{`i7=sTnOTuw};AqTE+Rg=P{1@fMGDRof`qc&7Z50A6R;sEsIQ ziNAuEd*7V%DRY~L{8|x=d4|(B-VX? zf)YL&(MkqObOI*qYk}?w;Vt;1vuhNA*0x|}4h?*J`7A%V6s*0VMDEM@(SuKMV`&-%1wa~u=r;WVv#96;d_x}R4-V1^!`I#ap4YO~hAMdxbZ5DJdJv#Cm=$?o*t$&m5 zKm7te2`!tr{TD@+FNL~CLeeR*4Q-9N#5z4uIqe??r*{2gkd~$D2BAQe&`O2*O#(A=wTk34#&vj$3 zlBuU}uNJewWN`wyAac-)*zF7R?wg>7tfM6=`f(#~{~+%ya|rTsv|h*Rr|o5OCw*4j zeMVU(bu`pC?rXM!qWJzmAc{6Cu-D~dt6OFD>EFcrf0d|UEf$W^!?R99>>5_Kd^_Xq z6_b{HWc+L~=?EW{GnK!2_n&_Qdm{K>6~Mn3@}5>YNeDGYuBYI$leGs22StYYEb$&W zK0b0F$3b=5??_R;81X*ybud|1gWNYa#K<9Cq>mwN#dh04OsxEF`EF#IVRyUo?W(SP zdoEYL9pK8hZ&&`AT=|wP1|>KSsMD42-R%#%@-F}!|IC$N;|9i@9MImq%V7Wc2FBb6 zGG{^%!zQm4a*)1NM$ZtWl9|^hxXV64X*^E$H)$>`<&~fdTMu~|tDMO?F$X~d1;rxk zMEvjiis~LkkrtB%-b^@LYOEF263CdB8NZ{?4z*7d+r}n8-WHon?qalGgwTGsL)?m3 zN)^-@%M7EH-ckesA7#t8lQjU> zW&<*zJZ5wHW=O9gqV&oU%HifZcjUoyY!rOF80(`UZtq#?FIQ0fVE~u0-M~4phMwBC z9lGXGk@N{Wua&gLc>veoZE(kzma>mtds^7|XAsp5f+Pl#<4mUX)@42HesCH)O5aqh z<7ksv2U70jJFVC5OAG8XNGkJ^4jS2nxKpmiHPdWpD_Utt6vo$CV3Z=3Fr68d(P4-_ zgQU7+m1fBxffE~EZR^vW(OUVbr*NwD>?%caEQKRf3?=DKK>Jnj?Dt|l!xn>_r6Wu3 z!?$7KgWx(ju0w})WZhPIM2GxP_bGmiIsaTR)sqF|!`%7jqHq;MZh?|pQMsTZTm$|J za{@$iUSFa5)=76hifts{baV|m|9kF{{pAvpKYV1L2n0|E*)F2VLV?}^64djW* z#gFxg<)%70grw+-2l0Q2RwN?f2#t5~XSMWtt!nKx@Gb2x8YY8^PFdTbpw#kPMq` z#OO#6>4N0>_3vzpkI_{Bgx(L+5ZqLj?g%nL79YkcjpN)qBx0h8V2%=Gx=9ydoJ5Mz zM#tk5`V`plx`X3BQ14-TB)3qTtjiL&4@732MBVUsG>{&WO(7^uT6+dbWnR+OOHUqZ zbdEk>!-ME}enYwY@;=3n@#UW? zmHSO7zIUD9ABqn%=ASE@L(vj3yrU3A3J~knE~r|Z9iJIImZ&*9!wuh7YprIgjWpjQ z`^zOHfB0NZ)5EMah6E(OTh|qI>ungJzJyxq{JETR*A2WA`F9X6{9KIj&rDZsJ)e-C zAQXmy~|Tt`Q%gl`VglNz5{0Pi-anNGPu#pG#fYr*7kbQq&_5IoG{(qKM|H zYzX7u`=oK4cZ7&JZQz#-e=c!#hqy{-a-*kV3|C(d2jbeT_O^I!7SWC%FC~?|9TKYJ z4n+H<0PT0<*`ZQHSgwmls^8GrTYrB|+QOxBD0q%$rVjD%(f&YN{;5*I-^T4b*8Zbm z`&d{0x!|YJH|wxO3X(b2Qz@kA2x+KbO!0Ko$sw~XMi$Z;I38he`04I1;N?2vKYZG! zK87GSq8Yal$#R4Gt+8| zVen(MY303Zy-$u_F&@%tX$@JoIEvV3Q&;BIZ8?e(?~en|55j34#-5gX?+=n;gIDNZE{Ugozb}lpi3B$|5R{V3hGkRfz6OH!B z!)vdbwz7^ghmF4}NEDGmPM#WSPots2l&|8u)hOpVWyBB zoVCnuPe62+J&HOS2okzx22Ue&1 z8a#)s58I)J=;Gjtm>j>Bj+$G0#ftBZF5Vrgzg$7_M{B%RM{4&m9BCld^wzy4qbWzT zb3S-LM4v738vg3MWn~PnE=-Zk-?H!ar3S=OyUj9JD73YL``GfffE6<$?WR*J;k%~*AuOPR^yXpoZ{b%?_xkd4bGVpm%lI7t?F#hqx`#fl zEFKK9BHY%x0r>?RP~ToL3&W;&v9?q4j`c8nB@NlN z%+n9}(SjnV;s@YI=k*esPLRrSp6iClj1=NMgv=6|N6pf`;!*Ja+YoXM zMP**mE`yBg?8?qIU4td@yZr-Ne73zA*`FXaMw!8MJFGv0rn*B@=k=*%>!zb^5KNUv z%I})$gc~9wLb{RM9bv0fq z?*4l#zWfDN{Bz}Wrwbp4dGSw`*Ae)egeeH!g1Yt{_T-eG){$nY*qA&d66b79HFimN z?ybH@^_NR1{%~g35Yt;Ya$mI&vm2~cV?%l6klqOGZQhHIPewu*h+JZ#ruJNz@z3m5 zzC|r#Av)yHhQKRL)~MxH^21r3O`?{YH80*cWZJQN_UBSp_NZ(0wo1n~nLj|uALX^8 z_>CWo3ZFc@gT9@7PE;kH7Wrh0SNF)FK#px z3QBt8$jJ3HEc|XQ*mfIIX_ab|cx#9o$)U?#v1?%Kel~q&hrUruD9OmuE63}t^&M>e za5j>1xa=gmnkIu%qw?x~cs`rDx=-EZRB&l^%x)WX*{1L+Ef%r#X?m2OnCcef!1ReQ9y^m%dv(qFwVXL@!3W{GOnRmpXmkX)? zc$Z%f;$T?UXdC0^7?DZ3_ufViseQ~JBO)V8UG9`sq>j7o_;yu0zCD*6-wv?j=eHgI z+m8S5S0|6xJ>>CLe6ZJPL`M$THg5bM6PT8>DWBwEJNci2w+Obpme(h_%N{)ye{|*G zovIvIZyU<>8{%4cXf$bM#*SzO|2_7@wBKoM&osDbZEQfw7;KJ+vGW24%Clir3Ib}EarW3AL7Ngb9wPM zOWgkK5W9)(HzBqt`|o%oLM-bkswL-m&{ zDE@GH*GFcMM8t%{qTi5IEwO(hF?UpYdt6-jyn(Vj)2ddNXP}OMhEla#kUR1XUAmie zy_g4&HQrx+n&XZSDv_L?PcHB?C@MP?)uNX4tY~Pg$5ag&NaVtQ{F)`HYGQE*JsJ21 zye*$WQk|ES+ysu##@>W2FE*rhthMpVtiTeUWmk{LhBtVcs&xKRn#A5j*7EdN~4+Z1HO!+6{ zEg+p>qi9dXN?&&vv|=`lmVFPR#QWT-aa6}9khy@3b}jUmOUV6rGKad(Xu47cgSfHe z8*)69HOp9#YIWYr)lu!Ji*|Y~4pfWFLQ~b#nVo-KubGk(l^)5d(ou#QZE=#tR84*YF1PfGm=;;MQ zItQN(vGpAt(LxBooem6!V`2d#4KEA*rXqN2-zE4Vp8RvAahssg{%FuR%94Mo9F9PcuEKs=1cT*z zWmM zL=OB{I@@^k`oTzENL5%au<|Jo?sXbC-fE!wuBfal{&9WM$$>ug{WYm6hu{f&* zo`Po(ROSipoadYxtv6mJt%*S~%1^GfHJQzdJzYkLia!vqrtBF6)g6L5GA=x)%9&K_ zp)=T{J_uT6c9JWnx0WI_QM|KhV3W+XTn_BSYG;)_@3Z0&C^6c?y+HNJpyG88 zRNN_t)~u?Hu$pyY7)AR#vVF`_#Yd0iJAE0tSNn76D?9WR=o^OZu_9X6+{lZpeZrjBe1Wfi*3{;5b})*t{$^k_Qqj0hV2mHMel&JUkb^7 zFOXe1STmWWxp}TF__Dwt-=!ZiDZL=vm(i3%u-w}n+8^k_KUE%hv-D4~_764T+quT3 z3kSSOO4b^6J)lrZ@Tir;=dCUDpegxLwkCTV33KOY+5P&zTu1wdS*OnPJ>%52fgRLz z%fT^YV#AXq;}Feh(rM>-NM}AdI+7xLHmLX>4?aqp|Eguc|eR9TWSHX8CJRWeQo#WZ$-C@DUqAeL& z%?7WvWUa22Wpc!;zSOfm4a>NFWs}AH513_H- zx<@!mbf$-dCpMew;p=!{3SwDPwg;-+q5sQ;w0}HDk*RU*3r literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102-refined-macos-native.json.gz b/docs/benchmarks/cursor-owned-read-buffers-20261102-refined-macos-native.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..19fcf410607d10c0fd5dffd44464990c9611160b GIT binary patch literal 45704 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

Cz8Qvi_>833d(OYKyMXkW#2I&lKS9Ch*va% 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 Q*Z<%D2Q7de{}fyX0J^pJrvLx| literal 0 HcmV?d00001 diff --git a/docs/benchmarks/cursor-owned-read-buffers-20261102.md b/docs/benchmarks/cursor-owned-read-buffers-20261102.md new file mode 100644 index 00000000000..8778bc6c2b6 --- /dev/null +++ b/docs/benchmarks/cursor-owned-read-buffers-20261102.md @@ -0,0 +1,104 @@ +# Cursor-owned comparison read buffers (2026-11-02) + +## Decision + +Reuse one 64 KiB buffer per native comparison cursor instead of allocating and clearing an owned string for every chunk. Keep the buffer inside its existing source-budget reservation and destroy it before releasing that reservation. Clear once when allocating the cursor buffer; subsequent reads overwrite only the requested range. Native measurements favor this policy over an entirely uninitialized allocation on Linux. Neither policy relies on precleared bytes for correctness: compare only the initialized byte count returned by the read. + +Add an optional span-based `ReadStream::ReadInto` capability, implemented only by the existing read-only host adapter. The default returns Unimplemented without consuming input, allocating or copying. `HostStream::Read` remains unchanged for other consumers. Memory, archive and decoder streams retain their owning-string path. Select that legacy comparison loop once from the left cursor capability; a mixed legacy-left/native-right pair conservatively uses owned reads for both sides. A native-left/legacy-right pair keeps the legacy bytes only until that comparison step completes. No archive admission or parallelism guard changes. + +The initial shared native/legacy loop is rejected: an unchanged memory-source early-difference control slowed about 29% on macOS. The refined implementation instantiates separate loops at compile time so the legacy path uses local owning chunks as before. Full original and refined source, measurements and slower controls remain below. Do not infer a proven allocator or compiler mechanism from those timing differences. + +## Measurement contract + +Parent `de31e680114aad8d91977c7c05d9bdd0cd4382dd` includes merged #1044/#1045 and the synchronized #1046 range-read change. Both phases compare independently built LLVM 23 release + ThinLTO binaries against that exact parent. Source and executable hashes are in each manifest; the refined selected sources match the retained implementation. No sanitizer or allocation instrumentation enters the timing executables. + +Native fixtures use deterministic nonuniform ASCII bytes with identical, first-byte-different, last-byte-different and different-size cases. Initial qualification measures 1,000 files of 64 KiB and 100 files of 1 MiB at 1/3/10 workers. Refined qualification also adds ten 1 MiB files at those worker counts. The 64 KiB range path and size-only mismatches do not use the new cursor buffer and remain controls. + +Each native case has three sessions, a discarded invocation per variant/session, nine interleaved repetitions and fastest seven retained. Cases and variants use reproducible shuffled order. Every invocation validates every comparison status/path record against an independent exact oracle. Initial plus refined qualification totals 10,800 fresh invocations across both hosts, including discarded warmups. Compare paired session ratios, not absolute times across phases or hosts. + +macOS uses the local M5 Pro, warm APFS and worker allowances without CPU affinity. Linux drogon uses Ryzen 9950X KVM, tmpfs fixtures and child affinity to the first 1/3/10 available virtual CPUs. Builds and diagnostics finish before timing on each host. Commands use `--compare=status --compare-select=all --jobs=N --exact --sort=dir --no-config --no-pager --timezone=UTC LEFT RIGHT -type f`. + +The memory-source fallback control is an independent Google Benchmark release executable: 100/1,000 files, 1/4 workers, small identical and large identical/early-different comparisons. Three variant sessions, three repetitions, 0.02-second warmup and 0.03-second minimum kernel time retain full samples and context. Linux pins each process to its requested kernel worker allowance. These controls deliberately retain their existing 1/4 contract rather than pretend they are native 1/3/10 measurements. + +## Refined native results: 100 files of 1 MiB + +Negative change means faster. Values are median session means; changes are medians of within-session ratios. + +| Host | Case | Workers | Baseline ms | Reuse ms | Change | +| ----- | ------------ | ------: | ----------: | -------: | ------: | +| macos | identical | 1 | 25.560 | 22.154 | -13.81% | +| macos | late | 1 | 25.389 | 21.781 | -14.28% | +| macos | early | 1 | 7.285 | 7.203 | -0.60% | +| macos | size-control | 1 | 4.281 | 4.235 | -1.02% | +| macos | identical | 3 | 12.795 | 11.698 | -8.57% | +| macos | late | 3 | 12.728 | 11.636 | -8.75% | +| macos | early | 3 | 6.197 | 6.208 | -0.09% | +| macos | size-control | 3 | 4.257 | 4.228 | -0.24% | +| macos | identical | 10 | 9.479 | 9.351 | -1.53% | +| macos | late | 10 | 9.277 | 9.115 | -1.40% | +| macos | early | 10 | 6.905 | 6.918 | +0.47% | +| macos | size-control | 10 | 4.268 | 4.266 | -0.92% | +| linux | identical | 1 | 8.844 | 8.220 | -7.57% | +| linux | late | 1 | 8.176 | 7.236 | -10.09% | +| linux | early | 1 | 1.377 | 1.374 | -0.12% | +| linux | size-control | 1 | 0.852 | 0.861 | +0.43% | +| linux | identical | 3 | 3.810 | 3.611 | -5.22% | +| linux | late | 3 | 3.534 | 3.309 | -6.85% | +| linux | early | 3 | 1.285 | 1.297 | +0.66% | +| linux | size-control | 3 | 0.839 | 0.829 | +0.90% | +| linux | identical | 10 | 3.078 | 2.907 | -4.95% | +| linux | late | 10 | 2.903 | 2.776 | -5.90% | +| linux | early | 10 | 1.624 | 1.637 | +0.68% | +| linux | size-control | 10 | 0.867 | 0.852 | -2.62% | + +Complete reads improve most with one or three workers. Early mismatches often stop after one chunk, so they cannot amortize buffer reuse; keep those slower/small results visible. Thread startup and traversal can dominate ten-file and many-worker cases. This does not claim that larger worker counts improve all workloads. + +## Initialization and fallback decisions + +The entirely uninitialized cursor prototype improves some one-worker cases but repeatedly slows Linux ten-worker early differences: +6.88% initially and +8.84% after separating the loops. The selected one-clear policy is +1.32% and +0.68% respectively in the corresponding 100-file cases. Keep the one-time initialization; do not claim that all zeroing should be removed or attribute this result to a proven page-fault explanation. + +| Memory-source control | macOS change | Linux change | +| ---------------------------- | -----------: | -----------: | +| large-early-different/100/1 | -0.12% | +2.17% | +| large-early-different/100/4 | -1.23% | -6.00% | +| large-early-different/1000/1 | +1.15% | +1.29% | +| large-early-different/1000/4 | -4.46% | +2.24% | +| large-identical/100/1 | -0.11% | +1.68% | +| large-identical/100/4 | -0.15% | -5.23% | +| large-identical/1000/1 | -0.28% | +1.43% | +| large-identical/1000/4 | -10.16% | -2.16% | +| small-identical/100/1 | +0.44% | +0.02% | +| small-identical/100/4 | +0.30% | -0.70% | +| small-identical/1000/1 | +0.17% | -0.69% | +| small-identical/1000/4 | +0.11% | -1.20% | + +The initial macOS large-early-different/100/1 control is +29.36%; the refined control is -0.12%. The table preserves remaining small regressions and noisy multi-worker improvements. The fallback algorithm is unchanged, so do not count those fluctuations as an archive or memory-source speedup. Existing archive/decoder integration tests pass, but no new archive throughput improvement is claimed. + +## Allocations, retained storage and counterexamples + +Isolated ASan hooks record counts only, never timing. Comparing two chunks and sixteen chunks uses 13 allocations in the selected implementation on both hosts. The old implementation uses 13 and 43 respectively. Total requested bytes for the sixteen-chunk pair fall from about 2.10 MB to 132 kB. This measures cumulative allocation traffic, not a reduction of the same size in peak RSS. Fixture creation, writes, assertions and warmup occur outside recording. The baseline diagnostic intentionally fails its constant-allocation assertion; the selected implementation passes. Both raw XML/logs are retained. + +Each native pair retains at most two 64 KiB buffers, under the same two source reservations as before. Buffers are cursor-owned, not a global pool or idle per-worker cache; a buffer never outlives its reservation. No extra source-size scan or stat is added. EOF, short non-EOF reads, errors, metadata-sized comparison and left-read-before-right-open order remain unchanged. + +The additive virtual capability is source-compatible with existing decoders. It requires rebuilding statically linked modules and does not promise a stable external binary ABI. There are no new dependencies, flags, locks, execution threads, shared owners or exception wrappers. File access remains inside the authorized VFS adapter; mutations in tests use only the existing temporary-output interface. + +- macos: slowest native paired median +0.93% at (1000, 65536, 10, 'identical'); all small/control cases remain in the raw data. +- macos: build-output executable 4,069,408 -> 4,070,368 bytes (+960), before release stripping/compression. +- linux: slowest native paired median +3.37% at (10, 1048576, 10, 'early'); all small/control cases remain in the raw data. +- linux: build-output executable 12,295,504 -> 12,309,616 bytes (+14,112), before release stripping/compression. + +## Validation + +Both all-extension release suites pass 305/305, with FUSE integration required on Linux. Focused ASan on macOS and MSan on Linux pass the comparison and source tests. Regression tests cover native span caps, zero/short reads, offsets, EOF, preservation of unused buffer tails, mixed capabilities, repeated chunks, invalid returned counts, errors, source-budget exhaustion/release and left-side error precedence. The committed isolated allocation diagnostic verifies that chunk count no longer grows allocation traffic. Raw-pointer and host-I/O policy checks pass. Explicit local lint resolves Bazel include-prefix mappings and checks all 117 affected translation units; TODO records the current scope-selector gap. Final test-only style corrections pass macOS ASan and Linux MSan/allocation checks without changing the measured production sources. Normal commit/push hooks run before publication. + +## Lossless raw evidence + +- [cursor-owned-read-buffers-20261102-initial-macos-native.json.gz](cursor-owned-read-buffers-20261102-initial-macos-native.json.gz): 31,699 bytes; SHA-256 `08c96b5b8e0f692d022283c1f7860ae5e6852e189c57bdf9d42a75ea2af3cad7`. +- [cursor-owned-read-buffers-20261102-initial-linux-native.json.gz](cursor-owned-read-buffers-20261102-initial-linux-native.json.gz): 32,617 bytes; SHA-256 `40fe6ca25e204edab71d222414587a8d07ededd5bc137f964b624c2be7780b05`. +- [cursor-owned-read-buffers-20261102-refined-macos-native.json.gz](cursor-owned-read-buffers-20261102-refined-macos-native.json.gz): 45,704 bytes; SHA-256 `ef358c9e1634a6af8e3a0deef8b01681098a8acbe2539035682ac032aa2967ef`. +- [cursor-owned-read-buffers-20261102-refined-linux-native.json.gz](cursor-owned-read-buffers-20261102-refined-linux-native.json.gz): 46,743 bytes; SHA-256 `0feeaced6e803a199df3e59a1ab182527dfe4f5c28d1b37d748f86a4480b5091`. +- [cursor-owned-read-buffers-20261102-initial-macos-fallback.json.gz](cursor-owned-read-buffers-20261102-initial-macos-fallback.json.gz): 27,451 bytes; SHA-256 `825bedde52ce3a3c5293333bac310d0fc8d4d46aebd49e1b54c05d050242878b`. +- [cursor-owned-read-buffers-20261102-initial-linux-fallback.json.gz](cursor-owned-read-buffers-20261102-initial-linux-fallback.json.gz): 30,145 bytes; SHA-256 `5487789fa7b6651b57d7dcbd63eb55041d575f5eab45423d70f5bfac02f7576d`. +- [cursor-owned-read-buffers-20261102-refined-macos-fallback.json.gz](cursor-owned-read-buffers-20261102-refined-macos-fallback.json.gz): 28,674 bytes; SHA-256 `958775ee4bd76a862bad1580ae54eeb6f425d0dc0811cc22ddec4eae2ce81e0d`. +- [cursor-owned-read-buffers-20261102-refined-linux-fallback.json.gz](cursor-owned-read-buffers-20261102-refined-linux-fallback.json.gz): 30,128 bytes; SHA-256 `e7489710481832ac609eb1c95c9d8ce8921dc7383b4e259ce09a7a39d8a996e1`. +- [cursor-owned-read-buffers-20261102-provenance.json.gz](cursor-owned-read-buffers-20261102-provenance.json.gz): 33,126 bytes; SHA-256 `9d90ce26d65b7efee6ee63d663987ef4beb8a7aee3f5158415a4d35e74afb80f`. diff --git a/docs/performance-analysis.md b/docs/performance-analysis.md index 978c6f08429..523483a44af 100644 --- a/docs/performance-analysis.md +++ b/docs/performance-analysis.md @@ -2918,8 +2918,9 @@ virtual layers and generic executor hierarchies need an actual lifetime or exten | O21 | Reuse similarity representations | Repeated shingle generation and pairwise verification dominate large document sets | Existing near-duplicate design | Cache reference shingles; exact verification after indexing | | O22 | Reduce output construction churn | Numeric/cell/JSON strings, row insertion and aligned-table retention allocate | Existing output/scope contracts | Append into reusable row buffers; stream machine formats | -O01-O03 have qualified cross-platform reports below. Other entries remain hypotheses until their -individual report records a decision; inspected allocation sites alone do not establish elapsed gains. +O01-O04 and the selected O06/O07 mechanisms have qualified cross-platform reports below. +O05 records two rejected candidates. Other entries remain hypotheses until their individual report +records a decision; inspected allocation sites alone do not establish elapsed gains. ### Small changes first @@ -3183,3 +3184,26 @@ not proven mechanisms. A reusable buffer must remain covered by its applicable r retain worker storage after a cursor budget dies. A generic span-read fallback may add copy/allocation cost for archived/decoded sources. Prefer cursor-scoped reuse first or establish a capability/budget contract and native plus archive controls before introducing persistent worker buffers. + +## O07: cursor-owned native comparison buffers + +The [cursor-buffer qualification report](benchmarks/cursor-owned-read-buffers-20261102.md) selects +one reusable 64 KiB buffer per native cursor, inside its existing reservation. Clear once on +allocation, then overwrite only the initialized bytes reported by the host adapter. The entirely +uninitialized variant repeatedly regresses Linux ten-worker early differences (+6.88%, +8.84%); +keep those controls and avoid claiming a proven allocator/page-fault mechanism. + +An optional native `ReadInto` span capability leaves the existing owned `Read` interface unchanged. +Its unsupported default neither allocates nor advances input. Keep memory/decoder/archive loops +on their original owning-chunk path: the first combined loop slowed one macOS memory control +29.36%, while compile-time-separated loops remove that large regression. Mixed-capability tests, +short reads, EOF, invalid counts, errors, reservation release and left-read precedence remain covered. +No global buffer pool, new thread, lock, dependency, stat, flag or exception wrapper is added. + +The refined 100-file/1 MiB matrix improves complete reads about 14% (one worker) and 9% (three) on +macOS, and 5-10% on Linux. Keep ten-file controls and all slower medians: the worst refined native +case is +0.93% macOS / +3.37% Linux. The isolated ASan counter is diagnostic only: sixteen-chunk +comparisons drop from 43 to 13 allocations, with total requested bytes about 2.10 MB to 132 kB; +this is allocation traffic, not peak RSS. Both fully enabled 305-test suites and focused sanitizers +pass. Initial and refined raw source/binary identities, all 10,800 oracle-checked invocations, +memory fallback kernels and rejected variants are retained in the report artifacts. diff --git a/release-site.json b/release-site.json index 78869b9aa35..5d584777d51 100644 --- a/release-site.json +++ b/release-site.json @@ -64,7 +64,8 @@ "docs/benchmarks/fuzzy-score-workspace-20261102.md": "docs/benchmarks/fuzzy-score-workspace-20261102.html", "docs/benchmarks/lexical-field-views-20261102.md": "docs/benchmarks/lexical-field-views-20261102.html", "docs/benchmarks/field-lookup-controls-20261102.md": "docs/benchmarks/field-lookup-controls-20261102.html", - "docs/benchmarks/host-range-overwrite-20261102.md": "docs/benchmarks/host-range-overwrite-20261102.html" + "docs/benchmarks/host-range-overwrite-20261102.md": "docs/benchmarks/host-range-overwrite-20261102.html", + "docs/benchmarks/cursor-owned-read-buffers-20261102.md": "docs/benchmarks/cursor-owned-read-buffers-20261102.html" }, "generated_html": { "XFF.md": { diff --git a/xff/engine/BUILD.bazel b/xff/engine/BUILD.bazel index b27ae873a11..853cc489716 100644 --- a/xff/engine/BUILD.bazel +++ b/xff/engine/BUILD.bazel @@ -957,9 +957,11 @@ cc_test( ":evaluate_cc", ":expression_execution_cc", ":expression_qualification_cc", + ":parallel_compare_cc", ":walk_cc", "//xff/fuzzy:fuzzy_cc", "//xff/parser:parser_cc", + "//xff/vfs:local_fs_cc", "//xff/vfs:vfs_cc", "@abseil-cpp//absl/base:config", "@abseil-cpp//absl/status", @@ -967,6 +969,7 @@ cc_test( "@abseil-cpp//absl/strings", "@abseil-cpp//absl/time", "@googletest//:gtest_main", + "@mboworks_mbo//mbo/status:status_macros_cc", "@mboworks_mbo//mbo/testing:status_cc", ], ) diff --git a/xff/engine/expression_allocations_test.cc b/xff/engine/expression_allocations_test.cc index 2fe792138dc..06a2e58f80c 100644 --- a/xff/engine/expression_allocations_test.cc +++ b/xff/engine/expression_allocations_test.cc @@ -19,14 +19,18 @@ #include "absl/time/time.h" #include "gmock/gmock.h" #include "gtest/gtest.h" +#include "mbo/status/status_macros.h" #include "mbo/testing/status.h" #include "xff/engine/evaluate.h" #include "xff/engine/expression_execution.h" #include "xff/engine/expression_qualification.h" +#include "xff/engine/parallel_compare.h" #include "xff/engine/walk.h" #include "xff/fuzzy/fuzzy.h" #include "xff/parser/parser.h" #include "xff/vfs/filesystem.h" +#include "xff/vfs/local_fs.h" +#include "xff/vfs/mutations.h" #if defined(ABSL_HAVE_ADDRESS_SANITIZER) # include @@ -35,7 +39,9 @@ namespace xff::engine { namespace { +using ::mbo::testing::IsOkAndHolds; using ::testing::Eq; +using ::testing::Field; using ::testing::Ge; using ::testing::Gt; using ::testing::IsFalse; @@ -192,6 +198,42 @@ TEST_F(AllocationTest, CounterObservesAllocationAndFreeWithoutCountingAssertions EXPECT_THAT(released.counts.frees, Ge(1)); } +TEST_F(AllocationTest, NativeComparisonAllocationsDoNotGrowWithChunkCount) { + const vfs::LocalFs fs; + const auto measure = + [&](std::size_t size) -> absl::StatusOr>> { + MBO_ASSIGN_OR_RETURN(auto left_file, vfs::TemporaryOutput::Create(::testing::TempDir() + "compare-left", {})); + MBO_ASSIGN_OR_RETURN(auto right_file, vfs::TemporaryOutput::Create(::testing::TempDir() + "compare-right", {})); + const std::string bytes(size, 'a'); + MBO_RETURN_IF_ERROR(left_file->Write(bytes)); + MBO_RETURN_IF_ERROR(right_file->Write(bytes)); + const TreeCompareEntry left{ + .path = left_file->Path(), + .metadata = {.type = vfs::FileType::kRegular, .size = size}, + .fs = fs, + }; + const TreeCompareEntry right{ + .path = right_file->Path(), + .metadata = left.metadata, + .fs = fs, + }; + ParallelCompare compare(1); + const std::vector pairs{{.left = left, .right = right}}; + // Warm up one pair outside recording; assertions and fixture writes are never counted. + MBO_RETURN_IF_ERROR(compare.Compare(pairs).front().status()); + return MeasureAllocations([&] { return compare.Compare(pairs).front(); }); + }; + MBO_ASSERT_OK_AND_ASSIGN(const auto short_read, measure(ParallelCompare::kRetainedFileBytes + 1)); + MBO_ASSERT_OK_AND_ASSIGN(const auto long_read, measure(16 * ParallelCompare::kRetainedFileBytes)); + EXPECT_THAT(short_read.value, IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); + EXPECT_THAT(long_read.value, IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); + EXPECT_THAT(short_read.counts.allocations, Ge(2)); + EXPECT_THAT(long_read.counts.allocations, Eq(short_read.counts.allocations)); + EXPECT_THAT(long_read.counts.requested_bytes, Eq(short_read.counts.requested_bytes)); + RecordCounts("two_chunks", short_read.counts); + RecordCounts("sixteen_chunks", long_read.counts); +} + TEST_F(AllocationTest, ReusedFuzzyWorkspaceAvoidsHotScoreAllocations) { const fuzzy::FzfQuery query("fl"); fuzzy::ScoreWorkspace workspace; diff --git a/xff/engine/parallel_compare.cc b/xff/engine/parallel_compare.cc index bb822d9fe8d..a137c703ded 100644 --- a/xff/engine/parallel_compare.cc +++ b/xff/engine/parallel_compare.cc @@ -4,7 +4,9 @@ #include "xff/engine/parallel_compare.h" #include +#include #include +#include #include #include "mbo/status/status_macros.h" @@ -31,15 +33,53 @@ absl::StatusOr ReadChunk(vfs::ReadStream& stream, std::size_t lengt } struct Cursor { + using Buffer = std::array; + + // Destroy backing storage before releasing the reservation that covers it. vfs::ReadBudget::Reservation reservation; std::unique_ptr stream; + std::unique_ptr buffer; + std::string legacy_bytes; + bool direct_read = false; + + void ReleaseLegacyBytes() { std::string{}.swap(legacy_bytes); } + + absl::StatusOr Read(std::size_t length) { + if (!direct_read) { + MBO_ASSIGN_OR_RETURN(legacy_bytes, ReadChunk(*stream, length)); + return legacy_bytes; + } + if (!buffer) { + // Reuse this allocation for every chunk. The one initial clear is a measured policy: + // removing it regresses Linux early-difference workloads with many workers. + buffer = std::make_unique(); + } + std::size_t total = 0; + while (total < length) { + const auto remaining = std::span(*buffer).first(length).subspan(total); + MBO_ASSIGN_OR_RETURN(const auto count, stream->ReadInto(remaining)); + if (count > remaining.size()) { + return absl::DataLossError("cursor returned more bytes than requested"); + } + if (count == 0) { + break; + } + total += count; + } + return std::string_view(buffer->data(), total); + } }; absl::StatusOr OpenEntry(const TreeCompareEntry& entry) { MBO_ASSIGN_OR_RETURN(const auto source, entry.fs->ContentSource(entry.path)); MBO_ASSIGN_OR_RETURN(auto reservation, source->Budget()->Reserve(ParallelCompare::kRetainedFileBytes)); MBO_ASSIGN_OR_RETURN(auto stream, source->Open()); - return Cursor{.reservation = std::move(reservation), .stream = std::move(stream)}; + const bool direct_read = stream->SupportsReadInto(); + return Cursor{ + .reservation = std::move(reservation), + .stream = std::move(stream), + .direct_read = direct_read, + }; } absl::StatusOr CompareSmall( @@ -60,30 +100,38 @@ absl::StatusOr CompareSmall( return result; } -absl::StatusOr CompareRegular( - const TreeCompareEntry& left, - const TreeCompareEntry& right, - bool retain) { - if (left.metadata.size != right.metadata.size) { - return ComparisonResult{}; - } - if (left.metadata.size == 0) { - return ComparisonResult{.same = true}; - } - if (left.metadata.size <= ParallelCompare::kRetainedFileBytes) { - return CompareSmall(left, right, retain); +template +auto ReadComparisonChunk(Cursor& cursor, std::size_t length) { + if constexpr (kCallerOwned) { + return cursor.Read(length); + } else { + return ReadChunk(*cursor.stream, length); } - MBO_ASSIGN_OR_RETURN(auto left_stream, OpenEntry(left)); +} + +template +absl::StatusOr CompareStreams( + Cursor& left_stream, + const TreeCompareEntry& right, + std::uint64_t size) { std::optional right_stream; constexpr std::size_t kChunk = ParallelCompare::kRetainedFileBytes; - for (std::uint64_t offset = 0; offset < left.metadata.size; offset += kChunk) { - const auto length = static_cast(std::min(kChunk, left.metadata.size - offset)); - MBO_ASSIGN_OR_RETURN(const auto left_bytes, ReadChunk(*left_stream.stream, length)); + for (std::uint64_t offset = 0; offset < size; offset += kChunk) { + const auto length = static_cast(std::min(kChunk, size - offset)); + // Legacy strings previously died at the end of each iteration. Release both before the + // next read so fallback decoders do not retain an extra, unreserved previous chunk. + if constexpr (kCallerOwned) { + left_stream.ReleaseLegacyBytes(); + if (right_stream) { + right_stream->ReleaseLegacyBytes(); + } + } + MBO_ASSIGN_OR_RETURN(const auto left_bytes, ReadComparisonChunk(left_stream, length)); if (!right_stream) { MBO_ASSIGN_OR_RETURN(auto cursor, OpenEntry(right)); right_stream.emplace(std::move(cursor)); } - MBO_ASSIGN_OR_RETURN(const auto right_bytes, ReadChunk(*right_stream->stream, length)); + MBO_ASSIGN_OR_RETURN(const auto right_bytes, ReadComparisonChunk(*right_stream, length)); if (left_bytes != right_bytes) { return ComparisonResult{}; } @@ -94,6 +142,26 @@ absl::StatusOr CompareRegular( return ComparisonResult{.same = true}; } +absl::StatusOr CompareRegular( + const TreeCompareEntry& left, + const TreeCompareEntry& right, + bool retain) { + if (left.metadata.size != right.metadata.size) { + return ComparisonResult{}; + } + if (left.metadata.size == 0) { + return ComparisonResult{.same = true}; + } + if (left.metadata.size <= ParallelCompare::kRetainedFileBytes) { + return CompareSmall(left, right, retain); + } + MBO_ASSIGN_OR_RETURN(auto left_stream, OpenEntry(left)); + // Keep decoded/memory-source chunks as local owning values, exactly as before. The native + // buffer path must not add per-chunk ownership or dispatch work to legacy streams. + return left_stream.direct_read ? CompareStreams(left_stream, right, left.metadata.size) + : CompareStreams(left_stream, right, left.metadata.size); +} + absl::StatusOr ComparePair(const ComparisonPair& pair, bool retain) { if (!pair.left || !pair.right || pair.left->metadata.type != pair.right->metadata.type) { return ComparisonResult{}; diff --git a/xff/engine/parallel_compare_test.cc b/xff/engine/parallel_compare_test.cc index 18cf5519329..6ca2f250768 100644 --- a/xff/engine/parallel_compare_test.cc +++ b/xff/engine/parallel_compare_test.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -42,35 +43,64 @@ using ::testing::SizeIs; class ShortSource final : public vfs::ReadSource { public: + explicit ShortSource(std::shared_ptr budget = std::make_shared()) + : ReadSource(std::move(budget)) {} + std::string bytes = "abcdef"; bool fail_open = false; std::size_t fail_at = 100; + bool direct_read = false; + bool oversized_read = false; + std::size_t maximum_chunk = 2; absl::StatusOr> Open() const override { if (fail_open) { return absl::PermissionDeniedError("cursor open"); } - return std::make_unique(bytes, fail_at); + return std::make_unique(bytes, fail_at, direct_read, oversized_read, maximum_chunk); } private: class Stream final : public vfs::ReadStream { public: - Stream(std::string bytes, std::size_t fail_at) : bytes_(std::move(bytes)), fail_at_(fail_at) {} + Stream(std::string bytes, std::size_t fail_at, bool direct_read, bool oversized_read, std::size_t maximum_chunk) + : bytes_(std::move(bytes)), + fail_at_(fail_at), + direct_read_(direct_read), + oversized_read_(oversized_read), + maximum_chunk_(maximum_chunk) {} absl::StatusOr Read(std::size_t maximum) override { if (offset_ >= fail_at_) { return absl::DataLossError("cursor read"); } - const auto chunk = std::string_view(bytes_).substr(offset_, std::min(std::size_t{2}, maximum)); + const auto chunk = std::string_view(bytes_).substr(offset_, std::min(maximum_chunk_, maximum)); offset_ += chunk.size(); return std::string(chunk); } + bool SupportsReadInto() const noexcept override { return direct_read_; } + + absl::StatusOr ReadInto(std::span buffer) override { + if (oversized_read_) { + return buffer.size() + 1; + } + if (offset_ >= fail_at_) { + return absl::DataLossError("cursor read"); + } + const auto chunk = std::string_view(bytes_).substr(offset_, std::min(maximum_chunk_, buffer.size())); + std::ranges::copy(chunk, buffer.begin()); + offset_ += chunk.size(); + return chunk.size(); + } + private: std::string bytes_; std::size_t fail_at_; std::size_t offset_ = 0; + bool direct_read_; + bool oversized_read_; + std::size_t maximum_chunk_; }; }; @@ -244,6 +274,62 @@ TEST_F(ParallelCompareTest, CursorFailuresRemainErrors) { EXPECT_THAT(compare.Compare({{.left = left, .right = right}}).front(), StatusIs(absl::StatusCode::kDataLoss)); } +TEST_F(ParallelCompareTest, CallerOwnedReadsHandleShortChunksEofAndLegacyPeers) { + const auto source = std::make_shared(); + source->direct_read = true; + fs.source_override = source; + left.metadata.size = right.metadata.size = 262'144; + ParallelCompare compare(1); + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), + IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); + source->bytes.clear(); + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), + IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); + + CompareFs other_fs; + right.fs.set_ref(other_fs); + source->bytes.assign(200'017, 'a'); + source->fail_at = source->bytes.size() + 1; + source->maximum_chunk = 17'003; + other_fs.files.at("right") = source->bytes; + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), + IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); + other_fs.files.at("right").back() = 'b'; + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), + IsOkAndHolds(Field(&ComparisonResult::same, IsFalse()))); + // Reverse the capability mix: the left stream now uses the legacy owned-string path. + const auto right_source = std::make_shared(); + right_source->bytes = source->bytes; + right_source->fail_at = source->fail_at; + right_source->maximum_chunk = source->maximum_chunk; + right_source->direct_read = true; + source->direct_read = false; + other_fs.source_override = right_source; + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), + IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); +} + +TEST_F(ParallelCompareTest, CallerOwnedErrorsAndInvalidCountsDoNotOpenRightSide) { + const auto source = std::make_shared(); + source->direct_read = true; + fs.source_override = source; + const CompareFs other_fs; + right.fs.set_ref(other_fs); + left.metadata.size = right.metadata.size = 262'144; + ParallelCompare compare(1); + source->fail_at = 2; + EXPECT_THAT(compare.Compare({{.left = left, .right = right}}).front(), StatusIs(absl::StatusCode::kDataLoss)); + EXPECT_THAT(other_fs.sources.load(), Eq(0)); + source->oversized_read = true; + EXPECT_THAT(compare.Compare({{.left = left, .right = right}}).front(), StatusIs(absl::StatusCode::kDataLoss)); + EXPECT_THAT(other_fs.sources.load(), Eq(0)); +} + TEST_F(ParallelCompareTest, EmptyFilesNeedNoCursorAndOwnedSourcesStaySerial) { left.metadata.size = right.metadata.size = 0; ParallelCompare compare(4); @@ -358,6 +444,29 @@ TEST_F(ParallelCompareTest, CursorBuffersRespectAndReleaseSourceBudget) { EXPECT_THAT(enough->MemoryUsed(), Eq(0)); } +TEST_F(ParallelCompareTest, CallerOwnedBuffersReleaseReservationsOnSuccessAndErrors) { + left.metadata.size = right.metadata.size = 262'144; + ParallelCompare compare(1); + const auto insufficient = std::make_shared(ParallelCompare::kRetainedFileBytes); + const auto source = std::make_shared(insufficient); + source->direct_read = true; + fs.source_override = source; + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), StatusIs(absl::StatusCode::kResourceExhausted)); + EXPECT_THAT(insufficient->MemoryUsed(), Eq(0)); + const auto enough = std::make_shared(2 * ParallelCompare::kRetainedFileBytes); + const auto complete = std::make_shared(enough); + complete->direct_read = true; + fs.source_override = complete; + EXPECT_THAT( + compare.Compare({{.left = left, .right = right}}).front(), + IsOkAndHolds(Field(&ComparisonResult::same, IsTrue()))); + EXPECT_THAT(enough->MemoryUsed(), Eq(0)); + complete->fail_at = 2; + EXPECT_THAT(compare.Compare({{.left = left, .right = right}}).front(), StatusIs(absl::StatusCode::kDataLoss)); + EXPECT_THAT(enough->MemoryUsed(), Eq(0)); +} + TEST_F(ParallelCompareTest, SymlinkErrorsRemainErrors) { left.metadata.type = right.metadata.type = vfs::FileType::kSymlink; ParallelCompare compare(1); diff --git a/xff_extras_api/read_source.cc b/xff_extras_api/read_source.cc index 50b3d22c530..2adc21bff26 100644 --- a/xff_extras_api/read_source.cc +++ b/xff_extras_api/read_source.cc @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -77,6 +78,17 @@ class HostStream final : public ReadStream { return result; } + bool SupportsReadInto() const noexcept override { return true; } + + // XFF_HOST_IO: reads into the cursor owner's reserved storage using its read-only descriptor. + absl::StatusOr ReadInto(std::span buffer) override { + const auto count = ::read(fd_, buffer.data(), std::min(buffer.size(), 64UZ * 1'024)); + if (count < 0) { + return absl::DataLossError(absl::ErrnoToStatus(errno, "reading container source failed").message()); + } + return static_cast(count); + } + private: int fd_; }; diff --git a/xff_extras_api/read_source.h b/xff_extras_api/read_source.h index 5b1481a7b0c..49be458826f 100644 --- a/xff_extras_api/read_source.h +++ b/xff_extras_api/read_source.h @@ -8,10 +8,12 @@ #include #include #include +#include #include #include #include +#include "absl/status/status.h" #include "absl/status/statusor.h" #include "xff/vfs/read_budget.h" @@ -23,6 +25,15 @@ class ReadStream { public: virtual ~ReadStream() = default; virtual absl::StatusOr Read(std::size_t max_bytes) = 0; + + // Optional allocation-free reads into caller-owned storage. Only [0, returned count) is + // initialized; zero means EOF and a short read need not mean EOF. The default never reads + // or allocates, so sequential decoders keep their existing owned Read path. + virtual bool SupportsReadInto() const noexcept { return false; } + + virtual absl::StatusOr ReadInto(std::span) { + return absl::UnimplementedError("cursor does not support caller-owned read buffers"); + } }; // An immutable, restartable source. Open can be called concurrently; each cursor owns everything diff --git a/xff_extras_api/read_source_test.cc b/xff_extras_api/read_source_test.cc index a85efb30fa7..a4eeb3ca3fb 100644 --- a/xff_extras_api/read_source_test.cc +++ b/xff_extras_api/read_source_test.cc @@ -5,8 +5,10 @@ #include #include +#include #include #include +#include #include "absl/status/status.h" #include "gmock/gmock.h" @@ -24,10 +26,54 @@ using ::mbo::testing::StatusIs; using ::testing::Eq; using ::testing::Field; using ::testing::IsEmpty; +using ::testing::IsFalse; +using ::testing::IsTrue; using ::testing::Optional; struct ReadSourceTest : ::testing::Test {}; +TEST_F(ReadSourceTest, UnsupportedReadIntoNeitherConsumesNorCopiesMemorySource) { + MBO_ASSERT_OK_AND_ASSIGN(auto stream, MemoryReadSource("abcdef")->Open()); + EXPECT_THAT(stream->SupportsReadInto(), IsFalse()); + std::string buffer = "unchanged"; + EXPECT_THAT(stream->ReadInto(std::span(buffer)), StatusIs(absl::StatusCode::kUnimplemented)); + EXPECT_THAT(buffer, EqualsText("unchanged")); + EXPECT_THAT(stream->Read(6), IsOkAndHolds(EqualsText("abcdef"))); +} + +TEST_F(ReadSourceTest, HostReadIntoCapsChunksPreservesTailAndSharesCursorPosition) { + MBO_ASSERT_OK_AND_ASSIGN(auto directory, TemporaryDirectory::Create(::testing::TempDir() + "read-into", {})); + MBO_ASSERT_OK_AND_ASSIGN(auto output, TemporaryOutput::Create(directory->Path() + "/file", {})); + std::string bytes((2UZ * 64 * 1'024) + 17, 'a'); + for (std::size_t at = 0; at < bytes.size(); ++at) { + bytes.at(at) = static_cast('a' + (at % 26)); + } + ASSERT_THAT(output->Write(bytes), IsOk()); + const auto source = HostReadSource(output->Path()); + MBO_ASSERT_OK_AND_ASSIGN(auto stream, source->Open()); + EXPECT_THAT(stream->SupportsReadInto(), IsTrue()); + std::vector storage(70'000, '!'); + const std::span buffer(storage); + EXPECT_THAT(stream->ReadInto(buffer.first(0)), IsOkAndHolds(Eq(0))); + EXPECT_THAT(stream->ReadInto(buffer), IsOkAndHolds(Eq(64UZ * 1'024))); + EXPECT_THAT(std::string_view(buffer.data(), 64UZ * 1'024), EqualsText(bytes.substr(0, 64UZ * 1'024))); + const auto unused = buffer.subspan(64UZ * 1'024); + EXPECT_THAT( + std::string_view(unused.data(), unused.size()), EqualsText(std::string(buffer.size() - (64UZ * 1'024), '!'))); + EXPECT_THAT(stream->Read(3), IsOkAndHolds(EqualsText(bytes.substr(64UZ * 1'024, 3)))); + const auto remaining = bytes.substr((64UZ * 1'024) + 3); + EXPECT_THAT(stream->ReadInto(buffer), IsOkAndHolds(Eq(64UZ * 1'024))); + EXPECT_THAT(std::string_view(buffer.data(), 64UZ * 1'024), EqualsText(remaining.substr(0, 64UZ * 1'024))); + EXPECT_THAT(stream->ReadInto(buffer), IsOkAndHolds(Eq(14))); + EXPECT_THAT(std::string_view(buffer.data(), 14), EqualsText(bytes.substr(bytes.size() - 14))); + EXPECT_THAT(stream->ReadInto(buffer), IsOkAndHolds(Eq(0))); + MBO_ASSERT_OK_AND_ASSIGN(auto partial, source->OpenAt(bytes.size() - 3)); + EXPECT_THAT(partial->ReadInto(buffer), IsOkAndHolds(Eq(3))); + EXPECT_THAT(std::string_view(buffer.data(), 3), EqualsText(bytes.substr(bytes.size() - 3))); + MBO_ASSERT_OK_AND_ASSIGN(auto unreadable, HostReadSource(directory->Path())->Open()); + EXPECT_THAT(unreadable->ReadInto(buffer), StatusIs(absl::StatusCode::kDataLoss)); +} + TEST_F(ReadSourceTest, HostIdentityIsAbsentForVirtualSources) { EXPECT_THAT(MemoryReadSource("content")->HostPath(), Eq(std::nullopt)); EXPECT_THAT(HostReadSource("/host/file")->HostPath(), Optional(Eq("/host/file")));