From a4aa3790a771338be14deded2ec030f5f35adbc8 Mon Sep 17 00:00:00 2001 From: 4eb0da <4eb0da@yandex-team.com> Date: Fri, 24 May 2024 13:01:37 +0300 Subject: [PATCH] font_feature_settings for text d48d5335dceddd6c123c932722033f2b28d3b51d --- .mapping.json | 4 + .../divkit/src/components/text/Text.svelte | 3 +- .../src/components/text/TextRange.svelte | 3 +- client/web/divkit/src/dev.ts | 154 ++---------------- client/web/divkit/src/types/text.d.ts | 1 + .../chromeMobile/font_feature_ranges.png | Bin 0 -> 52192 bytes .../firefoxMobile/font_feature_ranges.png | Bin 0 -> 20258 bytes .../chromeMobile/font_features.png | Bin 0 -> 46722 bytes .../firefoxMobile/font_features.png | Bin 0 -> 18320 bytes schema/div-text.json | 6 +- .../div-text/font_feature_ranges.json | 3 +- .../div-text/font_features.json | 3 +- 12 files changed, 30 insertions(+), 147 deletions(-) create mode 100644 client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/chromeMobile/font_feature_ranges.png create mode 100644 client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/firefoxMobile/font_feature_ranges.png create mode 100644 client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_features/chromeMobile/font_features.png create mode 100644 client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_features/firefoxMobile/font_features.png diff --git a/.mapping.json b/.mapping.json index 9b138a887..b65a2202a 100644 --- a/.mapping.json +++ b/.mapping.json @@ -14322,6 +14322,10 @@ "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/empty/firefoxMobile/empty.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/empty/firefoxMobile/empty.png", "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/fixed-size-with-paddings/chromeMobile/fixed-size-with-paddings.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/fixed-size-with-paddings/chromeMobile/fixed-size-with-paddings.png", "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/fixed-size-with-paddings/firefoxMobile/fixed-size-with-paddings.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/fixed-size-with-paddings/firefoxMobile/fixed-size-with-paddings.png", + "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/chromeMobile/font_feature_ranges.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/chromeMobile/font_feature_ranges.png", + "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/firefoxMobile/font_feature_ranges.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/firefoxMobile/font_feature_ranges.png", + "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_features/chromeMobile/font_features.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_features/chromeMobile/font_features.png", + "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_features/firefoxMobile/font_features.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_features/firefoxMobile/font_features.png", "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/gradient-background/chromeMobile/gradient-background.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/gradient-background/chromeMobile/gradient-background.png", "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/gradient-background/firefoxMobile/gradient-background.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/gradient-background/firefoxMobile/gradient-background.png", "client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/gradient-color-text/chromeMobile/gradient-color-text.png":"divkit/public/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/gradient-color-text/chromeMobile/gradient-color-text.png", diff --git a/client/web/divkit/src/components/text/Text.svelte b/client/web/divkit/src/components/text/Text.svelte index 65c0fea15..8498cf30f 100644 --- a/client/web/divkit/src/components/text/Text.svelte +++ b/client/web/divkit/src/components/text/Text.svelte @@ -95,7 +95,8 @@ underline: componentContext.json.underline, strike: componentContext.json.strike, line_height: componentContext.json.line_height, - text_shadow: componentContext.json.text_shadow + text_shadow: componentContext.json.text_shadow, + font_feature_settings: componentContext.json.font_feature_settings }); $: jsonTextSize = componentContext.getDerivedFromVars(componentContext.json.font_size); $: jsonLineHeight = componentContext.getDerivedFromVars(componentContext.json.line_height); diff --git a/client/web/divkit/src/components/text/TextRange.svelte b/client/web/divkit/src/components/text/TextRange.svelte index 0b52ea4a5..3be25e09b 100644 --- a/client/web/divkit/src/components/text/TextRange.svelte +++ b/client/web/divkit/src/components/text/TextRange.svelte @@ -140,7 +140,8 @@ * 2) There should not be a border-radius on line breaks, but there should be a border */ 'box-shadow': border ? `inset 0 0 0 ${pxToEm(border.width)} ${border.color}` : undefined, - 'border-radius': borderRadius ? pxToEm(borderRadius) : undefined + 'border-radius': borderRadius ? pxToEm(borderRadius) : undefined, + 'font-feature-settings': textStyles.font_feature_settings || undefined, }; diff --git a/client/web/divkit/src/dev.ts b/client/web/divkit/src/dev.ts index d1f5cc8c2..0b418c6f4 100644 --- a/client/web/divkit/src/dev.ts +++ b/client/web/divkit/src/dev.ts @@ -6,147 +6,19 @@ import Lottie from 'lottie-web/build/player/lottie'; import { initComponents } from './devCustomComponents'; const json = { - "templates": { - "tutorialCard": { - "type": "container", - "border": { - "corner_radius": 16, - "stroke": { - "color": "#aaaaaa", - "width": 1 - } - }, - "items": [ - { - "type": "text", - "font_size": 21, - "font_weight": "bold", - "margins": { - "bottom": 8 - }, - "$text": "title" - }, - { - "type": "text", - "font_size": 16, - "margins": { - "bottom": 4 - }, - "$text": "body" - }, - { - "type": "container", - "$items": "links" - } - ], - "margins": { - "bottom": 6 - }, - "orientation": "vertical", - "paddings": { - "top": 12, - "bottom": 12, - "left": 12, - "right": 12 - } - }, - "link": { - "type": "text", - "action": { - "$url": "link", - "$log_id": "log" - }, - "font_size": 14, - "margins": { - "bottom": 2 - }, - "text_color": "#0000ff", - "underline": "single", - "$text": "link_text" - } - }, - "card": { - "log_id": "div2_sample_card", - "states": [ - { - "state_id": 0, - "div": { - "type": "container", - "items": [ - { - "type": "tutorialCard", - "title": "@{getHours(parseUnixTimeAsLocal(1715855877))}", - "body": "Server side driven ui Яндекса\nПолезные ссылки:", - "links": [ - { - "type": "link", - "link_text": "Официальная документация", - "link": "https://doc.yandex-team.ru/divkit/overview/", - "log": "docs" - }, - { - "type": "link", - "link_text": "Примеры карточек", - "link": "https://a.yandex-team.ru/arcadia/divkit/public/test_data/samples", - "log": "samples" - }, - { - "type": "link", - "link_text": "Клуб в Этушке", - "link": "https://clubs.at.yandex-team.ru/divkit/", - "log": "atushka" - }, - { - "type": "link", - "link_text": "Канал в Мессенджере", - "link": "https://q.yandex-team.ru/#/join/b7263a0a-c2ef-4c02-9669-e8a1f4cf3762", - "log": "slack" - } - ] - }, - { - "type": "tutorialCard", - "title": "Горячие клавиши редактора", - "body": "ctrl+space - вызвать автодополнение\nctrl+f2 - заменить всё\nctrl+shift+i - отформатировать json\nctrl+shift+a закомментировать блок\nСхолпнуть json-блоки можно с помощью стрелочек, что появляются при наведении на блок с номерами строк слева\nf1 - вызвать меню со всеми доступными командами и горячими клавишами", - "links": [ - { - "type": "separator", - "delimiter_style": { - "color": "#00000000" - } - } - ] - }, - { - "type": "tutorialCard", - "title": "Интерактивная верстка на ваших устройствах", - "body": "Для того, чтобы посмотреть вашу верстку на android:\n1) Скачайте demo apk по ссылке ниже\n2) Установите apk на устройство и перейдите во вкладку \"Div2\"\n3) Нажмите на share на этой страничке и отсканируйте QR-код, нажав соответствующую кнопку в приложении, либо вставьте урл из поля \"Link to json\"\n4) Для каждого подключенного устройства в редакторе появится вкладка с тем, что отображается сейчас на экране", - "links": [ - { - "type": "link", - "link_text": "Android демо-приложение", - "link": "https://beta.m.soft.yandex.ru/description?app=divkit&platform_shortcut=android&branch=unknown", - "log": "android" - }, - { - "type": "link", - "link_text": "iOS демо-приложение", - "link": "https://teamcity.yandex-team.ru/buildConfiguration/MobileNew_Monorepo_DivKit_iOS_trunk?branch=&mode=builds", - "log": "ios" - } - ] - } - ], - "margins": { - "top": 8, - "bottom": 8, - "left": 8, - "right": 8 - } - } - } - ] - } + "templates": {}, + "card": { + "log_id": "snapshot_test_card", + "states": [ + { + "state_id": 0, + "div": { + "type": "text", + "text": "Hello world" + } + } + ] + } }; window.root = new Root({ diff --git a/client/web/divkit/src/types/text.d.ts b/client/web/divkit/src/types/text.d.ts index eb010eda8..2835190b4 100644 --- a/client/web/divkit/src/types/text.d.ts +++ b/client/web/divkit/src/types/text.d.ts @@ -18,6 +18,7 @@ export interface TextStyles { font_size?: number; font_family?: string; // font_size_unit + font_feature_settings?: string; letter_spacing?: number; font_weight?: FontWeight; text_color?: string; diff --git a/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/chromeMobile/font_feature_ranges.png b/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/chromeMobile/font_feature_ranges.png new file mode 100644 index 0000000000000000000000000000000000000000..49894ba1f4c00db52dbc378f39ed3a80cce7fa21 GIT binary patch literal 52192 zcma&O2RPRM{y%P%6eX1?p;8eciXvGdB^hOJvJ#OIvP&W($tu}oZ$d_yQ6X8`BN1hj z?e}
)KrNZH} $jC^|4oj&F>9sR{2)6`S67iY
z^42OU`%hd8S4bRC|BNHgi)uGEKF*gJjh5s2@S*kQhKq*N)vG&HvUL1eF9#@?p^8n<
z%;-A^oU`cK$IQ%}Jhl;Rw@DNOOH0d0aSI(CW-I~i!Gk+uN>yvx+xKg~vzG!CZ!WPj
z_i{dJROZi7iL-Os{gN!`B-WO8zHk1O)RBhHu%b>
njVqwqpwI7I!j_v}9x${QmPN
z$9h;gLZrr7gat^q`o+l`9La)vae>>pH@5FRp@)OR_h*Zpt*zPw*B&3Mg>mKUy^pr<
zZ3gj@ULipBuU|gIU2(2@C19a(vSX(@armLNRAD>S>S$CSIe11td`MpIyj)q_pR5?4
z?J#2y{_ -(D<>*`Y-4GxqLbq<)fr+fJN?idwua&n6NOVgd>0>lthTlj1beMw1)
z+B^G<&z7gTg>1*f9_R
vhG|E8UIX7BRcD6ir1JV(hE&$DDw&a*|HbRyAN z&zg8UZsj57(J-&RFYv?jx4R53YPu^ZDII+)e>f~n9QNWRQOln5?fXMPZwzp;2|cgi z^i$hqY+h%s5tYSvMYGwtIdzxYZ{%J{&zXjty5I2PWGC*z@R}8q8~8V|4LCklh5Ku2 zYx#sfY$YRwOnS9!`7S&_AV~w$FfPrw5Lz&%TC z8?yP57#8)B{Z9~g`= l}%F; z@gMRwKpbaneH{uwAj(7R ;v HrVP0Om9DZ`E*h^w54$vBxGRhOrFL@1^iDp9cq9|DDt(5> !-?Yt*2>}BPjv-J2`9@QYVB+LR_~pS7 ?5zbuWn{Sp1LS@1X{;69=+<{>-(~pJZVhu+YvUjmIT7TUsx)F<$Np?+klJ zPx6AM>H_NX3hM6MlGIUJh^1BRXAmbW c@$^lf825KkD~(?Ir~^ZFhz&C9_WG%%Fn8 z&P&f!vc_l4LMIPA2@I@*Fm$`^O;M^yJ!ApOUArE?e$6zJOW-n4lYH}z0PA(4%RGCw z`$cGITu~7N07xCKykPI0V+(|zFp*W!jBwL 4N=X*rgU-`Qi}h z7d(%x9|{`%D-U1WStNReX(ts`yb4uFdtFV9{*RAA=^0;?XTFC@_f3o kN*KQNs3M zU|@Lv^(!sfeY~d$6ts4I(l%b+j1maGA8w|qBO{2g$Ov(*a@87%I_n`)v4M!I{M`{+_mio4pf}+LA zx=7 Du6W1YM z|Mv3o^7P`OG~$f0@$nB4QH%vbCS
HXI +l+f13+4-&a`6@+GopQ&1e64DbFS=dx zgp7>phU^{Ztzy L- z?3~JP(Vq-(*4p-vkc|{tAhc15dad>r^okjpo+`UMQW?mp1unQ6F_I}VE-fut+3VLo z6g&JL?{9YLKF8Ap&02uy h=0W(6o%w) zH9#(!(^_wtS}Q-GiuLq>I8@cVU31S9%)TWNAt}5 w43U?DJ^HQl|SUh12QU@igSp^M@;lVP0`RCpp! z>yueL=kj q~3vJ_0|VhJz#j z(mN|0TK%}cF0HMdU5?#^3UV6TZX{jPw{`sV6g&mT_a7#?lgk)I06;t}P3jFi@FM#^ z2Zij$tDP#^=>oq(H5rDWs8)C >}{4FA|QaZEAcD%GIJ8&k@(shmpFQ@)i#hz@XQw zb9dvg!} mo7wA`g`b0%^l7fWeyN{)`C6;>3zHdNA29|v_ z5){)zHB`>XM?e#XLe5L%Lt)lJlYQt!Zk%^{b!8!~l47pk6E}%4)zA|zBNd8p!VH2X zw~UO$fpl>R2!|bd`gS<1U7sYCOWq@iei|(w!Y4H@!#^Qk5f@) a`$%fe{F58hF+ allonLb z4?yjtb0laoRB&%(nuw4R*cI!E6BK~tGIDZW3ha{jc*Gq?@Q=u$AUErc!blh~xPP4c zZppnCq9e?x9Xl$4OQsk9XcA?Ji2U&J#g*it5cr}r!T!$f%NnZpvGafpFwmjvR`Yl# zBjL*u!6uv$BKwQDMe^L6v@|O4DCD$a02H(H@`BA1uR0FSnrD8jD~70^&->Eg)`IWN z{kTy}%gckvixN>2?4W|08YNmgp=1L}WX*rl(th96L_@H-{rW3_{Rj+DA%5YJGliyn z+Hv+)Pq_=DzP^6ZgTLHxR@{+riBC?Zgd73bC`q^s=yE7 ~aW+xaB-I |h%6hPJE27-=Smq^+bbyHZ`TKu`JB 09S;TtQ--D`}+0ky)d5d8JY($hA{BsN41RVEu&2PKV7^f z-#Aj;)YQU1Cl-!))D6etQ>Gh=17N-uva3Y-S6`TIfg5 0>g38($Vf$}Y^yWY=-Q&GpuS LQ{Yqkf_^2Xr8XvrcSu}b)S9MNu4pYVI?a9Bt_-rs;9@|gNSrO^D9 zpjD((A6YZ~_?4LQd4aqkx(?P(n?1qC%*`hbzOD$4jJ#$;tM{rumXauLU;`vK*VZ=X znnXEEH~3xF6TY^!)%>Ur=EcqyNA;uBt{OLqR{r&l$z1(S`|nYZy=6lyd)clxw>bTs z XA?*WT?TB z5idvyLr}_y&^nI2n4LI`Qjj$&5JvQp_e2T~r1qe8M5x$O&=JzJIEuR|`$=~mJnR1I z6(dN??axWUVuwF&J5Y(%_^%l)cK82#mH%1pj^h`3SXnRK4EtZkuXGMKK6=`<_?`8? zC%N#&Wu5pa{vShNVq~W9&Hi~uaZ(u)x&QCINw&xQYm5pXX6x=&yZ>bjY!rHl&v ga^7<_Z#Wh*?si%M%hPl(?Xfkgc%_ zPf${cQ4MSwl2WI6dBst!^vul(&3k%zO(W~SXP>nH*@Uy^?We$wc cpg``Vz0lF^5JI^Jh1LaxlJ$Sv!7m z_g=OvaBTz>jekRD_5p=ycK$nF(xhuK0cA<;+uYooB3i-d#3t7Q5qH9yJPQi?Q0yj^ z@aBynGHg&VkoB9tZ@2cJ(Zo%Qd1n$V$_KDr_4@$S##`FytmnrRA N`#6ITwuEBv=1@nN12(HUI!*SbI2hr m?ctsOE?dRJX``w`-)U4fjuEw9XuG1MNCLIR$Wtb ekY``Y#q8J#*Xx*@a}jAdb}iN$Nb*xa)7@4m8E zc69_LLWAZzqY3KrNa6^W98M5gQ-%RCD~JIfwQpdDycS(&z2?kY61KapFR1pE*rlZ^ zvpQb}{>Lx}$@lNyi`+IvMk9BlLCy+EU%osXrt6yWhl7^#(Iz{Y+0$K&jEpcQkDNar z9;$ qHtW;`&GsxxRLT;u_Hz^($roDUj#wI2%d}$!2Qdd|m z^FS;kBGMLW*?OdqUq4T~?E(|P8|qnD$k82c=h4U~0=@a`7i`DePu@rplauq$^Sm=6 zs{#*aFQR0k=}{9s{HDz$u&nLMH~2F~XPp}B>pkG6&Mjc7HTIl >t_?A6QSjauKoQB$Od#4cjzwoq|}ALkdwMALWSlXyP!w(r#oLE z24goWGU(w6@HtP8cVq=Zu^q k4w2w5O@|nP^-*|j=-k!^4p@DyrZI+A>coSc&+!|om4?Z zg@R<<&5SUALv 7_tn?~Y z1Us$ATTf~{rFm5jnGJ-OaLdeoA>FJKrcu)U2ow@uoNgV)!TbMnpvg0CpY~5ZF%y z2Z_-*u }2Wv>2dj=IrXiL>+^`$e%wu@87>aK8O1`gIE`V zwSn0mDzHDol3^$nvZy=oFp;tG+u!WlfFS3kn>Y7irq&Ze+c7pa0{;JJ91SBk B{#xX+DgaOkrRl@3yeLdpAt|dEO-@GEoT+^wV#KCEtRrMN zYv(%9fN6Wuol(WFv&XXxp>SuzF}kZ!ewHYxoBeH6MFNPrkRv`@4GF{S7eXVK5e5Tl zBa3nV`T|pr{;^ZtZ+W1T3Q~mvVw^jVSRp7IF#+A~;`{Vz5Wr4;{#l48!-1k3?ny}} zlH{WUeD< pxxm?e`$@5fOS~=n!5?HA=}XZX0engs4M# zbOSJIkZrj+JxESqc49)Nqk|r-RTABRPK4PE?Hr1oHzAeuC{{z4Iw~l508zzC;Pd~P zQj15VDt+}`Ny!j2Lzu^VxKMDI&_e%vP^}n*9@0xW*=3bo9Y1cO2ND)W-a<+$P@5iV z3E?Ch=%?i!+TQ>uH}2Zj-d>xkoW^mnRz E9{!&Rv|Y@?AB&r?&aoL8Uu0+?*&_sS-VTc&=O4eV zp^h;N4w6lg? R~&5dN-8JHyR})81UVPB4@&Mkd+3`U9G(6`XdbDT>V9=hvW?E=C+AK3{BrF?6g2; zsz4Lecgq>$&xnLt|0|l#seBo#@mY(m7k1rYJh}rTBU_=4`W@uoQL( (UP1`Iazsu+K_RhB0ww?);P=HCs?&)L zbuhyOT{Z&NUUulS@Pd_!_@n)CF!NSUk&j#wMEv@|uc6pOEtn$or)@^3RlPm-m;rwN zaoNz1hXe?*6mGyaT+~NUHIT?5Ca*Adels?7dAzp2Usu0k5SVxf8P$xNj`$A1N(R05 zPy?WzXDcnM&|wOuf#rK+V`gROGRADD9fXNNc1T!o)aVMsA+R!Fie!atz2|w|oA1y* zpmLyH$0f=~@OdTCZ3f$kEU#_4%_k)$66FC#@mNO|3yxhgw3)T}Z}MtyEty~d88I_5 z;{7pNfQJ=eaCs|CTS`CyhJy#=u&~6OTU=Zm$7k&SGy6V>HX|JUH8oo?If%y(R1SQ2 zXx3dlY7M13-}cuWdpo8-G$)5cO9SwNB@{b`)z(|fc+5dvY^8V=BAqn|&oNZd;Ei(- zoUYv<#@7nPXNe~QAa4~9oQ#1)f+)6CE yNKt$w$(TFjhQi*W@wTE*+r7`d^?A8__6bL@_z;PsWdIYH+p(!I73Ri=c ziOHW(EwHVvyeAs~{?F^~AY^06Z1L!rNMzJP7o3?Lk(HE|#yI<4zxQ!C%Ggu_2&m6> zWAX$Qt=3eZxaiO{Qmo%XYtbvE#%>YyO6k(MV>xf%) g?Wy5&Vy0v?{Sbx1c#oZ4j7m$}Qn^@mNl9Yl4i=m6_vK2O? zyTG!lHQG_B28V~q!3JU#WZH5dm=fe4&^`wfE5zeC^2%XHq>Fd~ZWTGq98EKBOI5~X zK5yHKvYOfxP}HiHmOY`Nq2cGPk7{XaAK+>P)*yzf5mT3u<-zPW2K;g`H<7Me5vAA% z5s`Ql0UpyqI1yj3p11jVjfmFGF)LQT`HG~_ UZtce-8m_)AC`c^7@4IxC zbA>N0J^k9R#JWK|$^jKqE|WP4^u4I4h?uR)_o=zl?*@Aj<7nEGCBWncn1Jdmv|z+j z6~wxeQd1ikEJMP=E|)ocoV}u~q!hOSe W2XLFbMt%LTsZGd5eF3dq ZO6av{abO38tOv0%>C4U= zYY}a4?1__JC#YY!1>dZ>)+sN<4d#fnY?REgN+JScJtV17qBaHj38q5rxC<; 6|7<1^qXVEcPwAi zP*;xyPV<{w0@%F%h9r~33Cl ^g#2}DIVwmx*H2jWt~2G(krzBsiu9n85`sJwGs4Tph)cF%-LBgbmPjHJ z!*~cs@HIv+tswZl2ZmW P!F)V_{%0`ZiX>lf*jXMPc6+nj_eB03=|V}uZkJCW1R zsCks;oJmIqp*G`MkW97EGT8oh(1f_HoVfvR2&cl-Hh%5SZs`%)p0~3A47Lighk8?d zemTCIDP*oHo>hP|gyn}?S)hf$Z}2OLA|@Y0>xO5D=TH#JL*Hs3)vp!AbQFfWXqbc^ zA*V467PF&3sJGN{FZ2^hJQktTxy2|1fl~M-##@?O{-zzfLuv~rmdHkM$g7XQK77f) z4v H_N}4uejFeaFA{ z0|(s!xqplBprQ>7Rpl@5N1B(&!u?UB+OZ=hDT(62g9n&zVTFnVXhv8+(01WE`T_{X zp~u}6xr1l $|6C;;s<&HOvNkFxrfu;TGWkIp!Rz7ZDKvu6*(2TFxLyB_FC#S=+y-qekShDyQh z!@JeUOtoh)5=rnz?~DLCxk5rwh~KK@XM0XYS?k=7M8JIl0$q<5@o#QcxYL!t9SQQ0 zdH>L#pr~{!>YO{e&pS#@sgjdFyj`K|G3%q;5{Wa77kRyXdyb$yU|J`Ig{5_fEY~{M zqNK?%JnPne(e?Sg7T9deuV9n^nP0(7e8yGfG%rY=#2djV8SL?fRS)vnYJ!6&cx43= zPi(<{7QuU4F!COx?j7yAvK<^hNd#jCpDqTv0|2|)?$dC*1+lfW+~opm89qt6{r!;R z7%cwq;RE4JgGA!NM+7CsoGnMUw+mH~>ly~(60CG^|D^CpEUndhf _JBMjLDJ8JVWlR2ka*((4UFYtH zFV$E(<7)Rm*i++qJV&-w@=9w=94#k@uj20<^8LpaAIG_8A0B8?U)mV>?R+8cj3#^T z`0533oA3yi$+B;gr8c8|qqQ|e?&|#g$;hj(Dxg2kPxb5mc`vcN;DmW6V!jT2`PtP( zh%GCJGgV2JCf`kEyR6zL&Wb!(^t03cH8By7nR(N${FB6kypCLYob3Ft;{|M?oKw8u zEdfA$9P8JuPY(daT2Hid87oEM%Fj?F_`0m%JMz1drpT1o|7lpQ383nTQ%pXtYTe$6 zN<5sFRo-Iy><57qFiQLL(?>K<*^Biw;=8NgJgVhtb{`j)8xhCeLh2^&6alx9gBQgU znF2A6id?YU=?{PbgW63@kKSzW`kYYHF|Mt{?)qGL;T2}o#8v%suZ1f`wPtEFLMN=l zfkBb=K!jsv LUPrB9YHzg_EZ;mYVEuHH~dJ(q|CzY=oh4ssW&vfKtfXksNkt0%I zC1+Qd{&JG(R&3yy<$8`lTDh&YD@X0~!EP&fxk}wmd$x!>Up1u@Q{6|zW@l!^;e<7u zo$=0m77 g_hqD7^#)A!^hhpTcsF}WCBh7k{2;CgKHjut zppTEDMi@>eSiBzGoFZ@pDf*c*0z*M8FkSFu4X(GsL%8s?fgFk=Gg(-H>KPf%r1P+$ z!#4rQ$)VW6+vc5snWfgt@BTbX-1niF$mZIdQkbIZ;Prs`hQ`1^OnPL8@-H}@p!8gN z@zsaK38R>Vn8EpuVdSxbo1ujX>z0@hRj&Tlt`V;jF5X6b2jEPfJf9+ke0b<7b)}yX zB%c_;NX0MkmQS8XFBmFNT4f*{c_J|gh;P171Ep$Pd3ia`uU5*O${nwOfB==-7RuBy zBNcyIQ}(9a73^TunAv(6&xJx3^rYRgE!|`on? YAPzjJ6=Ty!4u=Krk&YG5CBk2yh^9CS%b=ZX7B0g5UJo RKfjZ+yp)toe|vCoZfIaBn5Q!)t+DoVQpRqhC<}=0LF`iXa zq&B@WY+g_Qw8m3pRI6y$j(e#$Q^*iJ6fXl0Mg)=w!h-4y;9@`V@gauRX4aN%#Mzi5 zu06(Z_7M(_9qx;xQ%`xyiF6C;i}~UTu#?*znLA?=qO+WhMWIs>Vk%GytcgdcOnbGW z&s&ob)7-PFcY^R_596&*eV1)kmqtfMwueS{OJt4tf0nz%7;Pp}7ROU2e0Oqrbb_yT zq4?*e%+dCzcsQH>e2+&KtiOZWZoWMAz8&dDdnQlz46D6djefukinWDpG4;tB-I0sG zu54OQ)O0QV*nV*g-R$b0;QCRn3``**ePe* T-3Nf~Ni!pSbt-OdZqH z5t2vs6F-a=lDwGbx%vBBx=&M#FvFly!ENQ^(HgNNn}7zTE-9bBvCSaUc=ekkBLhQB zcDBOF-CCgNgvtng;q{E;z8yQ#Zl+WU+4md}^w`wRf=y!BekD;Uam`EX{G&|KauVdX z)tW~m?`|$-7ZlLVtE*IlDI)A7s8MjcMq?9Wn#3~`K){r9FE~#RkRsOAjHZ~;qzgM- zt((Zl5l;&MZbK^Bz%w3YAPx=CuN;)`8VO`3BQVCu?Fy(6D1%geZd%blA^hn?+r|9o zyCM0NG2+2m{!GNrZ#KHM1i!Q0C?=f-)WgFZVrOQ;nw(Of^sv3se1mw3neF$t)ny zyZ@)XFO8>q{odXsDGi#WQfVY2%_CbX4N_zZg;GL>iX54zN;GINR;Eg3LJ}F0Btr<% zU<#X1gk;|Pxt7lKdw&1V=l|k)^StPM&Wm%Dy}!eKuY0ZQy4JOZv-jPxox9h9V^Mrx zsfOQMX2Yq{TY*1>;&cwH2OSE2kR-colBG??%mU~M$RaY0nd@N C1C@WZ**+{(|!)DuA&vABkjflmADMJrOWJA^48_8rY0sw3=G14 zjQ@$u7@F$~F)=a9n^~W4^?~#l`ku`vFZ%+Gf7b&7uA&F gPYnpENOv#&ehb2}H~< zB4ynsb`>L4-djw;zfUW8T?%`~vs#FNyM3JFxc%< ^Ci;Rwa z=uhXOH*Z*`{betwb)ZCcsTLFy#IAd6@ 2FH|zWo5^9@ z#+1Ijh?A>A;ndc= FH762v%6s$P9hwLR()FbN}J 0I&q=BI0uU=&em`58 zU6;kB?r0ZVmYX}eQf}uLeWh{jTQvm)d{_IrFBn&UEKHfpaN!{-OIMB6Pz_r&6?!aF zPJt83n`dkUF29vWU5>OZP%53Ik5>n8va-#!*n-`$wXhxm>2SZx^zvSy1xOS^%~d&& zhrkcwrB+y6oF}xy=vig}+e#}7;&RH&%q%Um`*;&*AK@UV++Yr;#M}6ek}L2=<9{0e z?CR2EbNu2eDMUaLMTPyk`HlUsQ_|@;V ;K0zg zm6ZnlcMG@-b1DpQ(g5OmTFxrfhX^PC2LqtjalNA5h`x$&Ut 6bj!4K#_*su>gl8-J$k+?}g zk!|aiE@ins)p4Gd*$6(FtXiSDn+-aZY*-$IhLRI4b|+kwo+CuWqfw5KlU_Nc8vFZe zmp$o2*X3tqazx%te~Q<4)#{>LPB&iKV*E04Mx+-iX3U>eXZzCpYen?pX93UD_kqCl zD)!pR2i1Tq+6u;5{jsb4sV9nU?-m>ZQ048oFS*Uze(v%ujxGzBCXa8sKUxGRK3!R+ zwz2Uz)L5hN+dJ_DV2n!A03__6p$^keHJc?UI6>=S%V>CqWCLBa=CP25lPb26>&LYq zGOT&}!(Tw&wRq>1x^HuXV5x~7iNq83%O$Wqvk~qz+7Pu|ft-mA|AA10D(t*+K{+y| zDRbsT{-|3q0ifJQXf06OXt%C~2TVLF(a;_`-|;3j+Zrp|Kt2-sCZ-lis%d&Dr%$ge z+ZNMS88z2^hYQk6sMk)$n3e=P2ZucohQ#7Z5>k>kbHbMe?Yp@b@yeeAr=O`H7Hm4p zDg-t84?la2Wu`VTMgmv36FIVlJy{6?)fVfB0$D=s#)S#c29J1Z?gRX%SpZKAXc(I8 zXN!W~MMnV|B=E4xpQu|@ud3-i6a95)yi4Dsh_gapu*AC5U%{^EC2SGue(6_9v bN8$%gXii){Nm!R!4Ps6>?V zY$hzT);Pm6J^#a_qplx)Bo;nCWB7Ik6nf%^o?J ;N0Y9fv&_c8~fxN F6+ld9wVS%jDiuI?jDW(uv1PhKDF}npiDu8W}@(30c7`2pKd&nA~h(p z0nd *C^F*k;%xM7I&$2w-6+#24>; zKD>LU#ySK3GzVmyJS!+}ymx>MV#<0wQ@gJ7CSQR~$5lQQX4=9R2O)JdLi@TEj{y;} z*@LHQ*s;KBT$rJD+T0+Ox$U>5*o0JUmpi2%>wrfz#eD~I<%{{pvcj|>fjA72hLKUk zkCi@y6D9;?BDYu!(wgdD%jIuLl~<7hhr|nUadD+0#eiw!NAtILB8{21^U5q|fMh-^ zmM@>MTs>N;b#F{wPvX(+vE=Eo3mLm_>;gdbx$prR3&~y05ab{@-(`*f$ej}=nyG`s z{NCf3;NY!DTPK`^c8J@)DCN7QC4=2@C^lRd;bW$_hSI}PPEf*b#UAyy4DI<~0@utn z&Tmk*BhK?N$m|$|5O;4Twyr{Dm?LM{S5tDDJIbm^RY&iNun)+>bnScisl_n( pDOTMgNW)@q=hFES2Y~0A@1JxT)ktx%r-TUL>Zb-1PGPPQkZqMKV z6CxWF|3PCEUsrTD2ml3#f6+yKMX_6X=Yr !IjKL)eCznFZuLE$oIpsQ{YWPy=_D6!H$hsun}5Uu%|D;9%nuXk)v9l&v$X) z7)u60fW5=hbwGq(!O43M3733e9)rlktTs ;XZ1E7 7xr;KCgurU% zUDul>z2)D+(u0i25WZD5^^tJ_fd&-AQS3h|o!XV>W9vTQY9d2^K)c(1U&ALyv;Om4 zvEf50)(4;b{bpJ2<3hgN5}Dx#fFWz`+MW-GpuxfYUjWb509=xo9MpqHO-v?&gvH6e zIw-g2#}9fm8#iwj3-!HmV-)K9b4g-N#g!hxkzWs|N6s{~9Mp|cmw@Vi6m~&2@}MbT z&mhPm%OYq=AXGVzM3v+oNTsq%O0I9Rw)0L- 76+Ox(lFKfGFhHwJf|3Z{bX^Bk*dU(!to0(Jh05x<+vr zr{Z=%4N8e8_IcaLH4fH3F+G%i+^p;`EdaH?AarhoDIO|^^H>RW*s V_v70q0ZKC<*!OQ!V|L18Cy=!}gyOPd-u2K3q;Z` 3}$u?BE=ZE6?X%S)Xk--ze+bC-nOG(Wop$O16z&E*bWgtQ*k5rqWYuCw5Pz;c% z&L%FeB7;N(vb0P~E31PoWo;~0&ZpidD1=$ @>q7 #Llk(_ZOux;G9@i~lCk)t9& zl!mhhy9y-VBB3DxAYCW$P=uT#&?qAXYCy}?EA(yn`6}l4Zfjo`bqPKvv4G5g!V&Rf zITsgw6>&PM+@cpnGKyhU9Y T5&sAc>rSGaYa6gM!`Lwz)^Hf*bW;finmU3_KYZ zl+e`i<;x`iO5sut9x=Lb!Kh1jJTLqu#kMy#zbgt26}wKm2&hqS7Jdi(XZe>t?+xIk z3uiQc{F({aqHX!D^#j z+#breXvsL21^D+8-+12O@gx5^Zrg-qP5`Uu$Kxb|8MjCN!)3wat?+=crNV8Gq77Be z4@A;ewDce`_qZ_a#-Xb5OBeO#E&kV^qQc`(-zX`m7-s)-_g}v<^5@#6Dnf?8zQCnq z^#A(BPNV<%%kfZ`-=OdQ`-@T^RNmUXBq#N2;;uh0>(?K(-P93R+;J%%qUXQ=F8!M2 z9!2~A?N +@3a4o`5 zuHU&cfsBd${VAm)gInZ4=q3;XTd+%XUP>_{@O+3=E+Un?4~T&*lIrT~?{zaB`D1+L zLk&SeCeEET>k>>H(~^hw-uK 4o}QrZ%Z`mOvOuArAl z-V3&)g-3 ee((AF=b@7ce9zXBVqVYph LKWk`A(#{JS#mbVDmuhUIKZIYOb#5`YRMo%oY(g(8LrW?|&K46+yLE;{#V#0pXZ zJ)8u6$nOp$n`z^{>^mJ?2qbvw{Q1|gJg8#`u5B(C7M=A4i~ggnl8<`cpk8r>1_s1x zJyzFKo1Vyg#rb0fncxp5Qv=QiIhzjhr9i1XWnv(X$17jH7+%`JzhTE>m>Q!}iMB*q z>XKPmR+f!p?-7hH* cn)ebn9Dxiv0f zdyjzZkdP1G4=CfN@bl-0-??+=K6=EEO1UK_u7R}u$noRnA+|u9-9i}LgOa6$2p2VG zaA?$4K**XB`vG;tI8`qc YFf4p~x9Lf70#kzvAAodi*y9+$0A$|ky zd(eHU9cKtPLBf{Ax%~X0KSw<{C$w?PmSgC5;MZ0N2*Zvb;(yJ#xO< FRqT<-C1xOl zRIm!nXF7OCz&7lN1R(4+&F%J$oRHR@o*wE%LwytskU;Bda!F<7!7if;VGcDuGMRx% zG=T@w(~74<=4 k&Ze>2GreAr?tD5At*@UM>c8hXbE{o|P3+W%m==5s;z6 zXugRP&wF}$-elsMXHNpSK-{b_2YTxTu(g65VJB1(NVx$`xI^am0)Rct(^Us%+`Vzb z8BF -0bUklTnw34xO&W-+iQ(np!*1h{N07?xvF+17Dx{2Intz)ffjVZz)#_1PltX9 zEIlXA+dKn8grnZo7%tP3v$F{Bx^;I7v~uKa!jSLHg4rkuPIUtG`hf#>Vq4aMQy?`R zwQ~9Uj|a3(lVnhuU>=w(EE`nYWj1h-Uaew(LyXA*qIViC7il& *low#0%Q;)yC<#XxO#-y`W8r97(^HK+ zi);@Lr 1*>*a}%l!b(SJT%6Jjv#Xv_D`kWx@xBz1g8twv8!~ds`4xW zwR-=&&?*_3Sz|>9WWmvat(B2#myIU9f#Mqxvq)9g`vNkf9gCcy5(N!+5uk(Uu<*Kd z{BZZl0-`Zx=1iK2vfBGCPU=S|--(4PI^)|eUAnXt@=dKLChj<`jLSt1AUnlxffgn6 zWF&2Xtm0Gyaktbl1L06Mel`-KqQbtRAz>wa{c7G0Q-g`T{5E*VQ`U*uA^@5@(toaE zExMIQ9nNri;D^-pIZ##&F7*@=k{)_ul7+u`&LA9<=(ZxCBqkgR%oj+5K#;!>(6tLW zV2#k`fvDU7FS@i((7!{MeGy_^>LxIR^agxJ$RAGo p41nmnK$sdvRco#UNpTg7@cP#XZ z%?sO76K;Z @?KTp(Ty(aO#MV}Kcc?P{O@jyyz!RyL$tfL6=A@dLX)H;* zgON$j2~9_6rfz%Sr}EZdNoLXnAh@cm0zqikTWvMRH|1W)K$MBnu$*1=$^+UsA2bEA zD%{ZML>x&+x{?RB6OBtq%Ua`$Ongm{;RciUPM}#uxr+}Y)l;49(Ab56F$gg{Xf0Ic z4NO7U(8B>WYvmEAkLHH?c!20+%@LHc$ODyvvH>ajWAnUc;=7kjqeeFrva0>xN6DLH z FShH!>s;N-7s3izD9D~)ym#UOR^q_fSpccv+ <5=@wJ|u>{a)?5E9Z3)| z94zi_2TG=ur)p?k&c2q<*-L@6LewxqW62+?q+`-p6J81WZJL_oxfNGw39@zF IJj=~KvP2=UuR zRSayH%g&%WU6hkJ+(jqVDPMp}K7&1Aj35Q?X4peb2CNQ~`AM|L0O_vc>j3-+=y(o% zOQtBC0=p*uNf@;WR`fkAWUzkDkiY`RM>;iCK)?-oF_m@ld{2-a3rpuzz$fd7kEEDY zq=6~ t zk(tJmQ?;>=YoL&aWKh&%0FvujQs-78MdAf*Gi&y2*(KBBwdP@x1yAtH6{PQ+!}Au3 zQL=Am1mip;egdy~B7_v!9^~QyO2j~$57^R6n1e6%dk7n)HWo%FlIstBcBFa?FV10v z4X`ku5t3h_UPIh>UtL_WyGP)iuF&3Lxi7*B3<;ogpv|D@-e=?!joyHj0>N;;Nww-A zec3%6Wc)hMab^G$oq|9`kfp|_Icp7_Kv9w-34k ?ps2d4il$>BI+82TmF(vz1BuDOs1@JV zjcDAVF?@vykb+{Y5EMJFY#2y%8{l3qhfbvL)mF9C{=i^Bem!ya>M?4Os-kLaeSIqA zEa9Ym0U }`%vCAB>I%|)9oSxuF>7oUXy+qK*oJk zi}L-r**R#BlSuqpSLXz_poSgy 8go&zW`f+f8Zv(6^p{5pC$16_-eSN(S!{AP^q7hhL$eSOXzkBJL{-<=+J#wn1CrH z@S#lXEGwTMZ#(7$E6N1Jk-P^M17mnx)oqPUPKIAwG!>2 ECzJC1zzesOXco|V@Q5TV{hhXuLNpH8e7{&&{9>bt#9zWTD753CMG-UGzgY1O4( 4=5XxF2Ck90=O{~ `$NW^xX9J@_K+tB1Jf|)M|9mdIT#f zeIF!;>sq%x*n9ffDeUKns^(HcI~35%q|YsEfC3W%XNP~O4D8&{IvM*!4qkjyYVn|q z1L}R{EWMg+AX#V_{)RxLS$q+PU-*xznU{0?@Jej`Zzv1?{g_u(HWvZdK&uRuxL6m2 zETFNz3*ZRx)b41u0>n)yL-c`I52mf1L#`duwn{z>$uPB0b!^`g>+AW^=NN3O@giZf zx}&67amlo-qM~a?A+R=7yDfL4IBfQ^@#kT){%&9l>R};7VDchjFaQkFT2J(}vw`i_ z(x6Wm`%n> E85$0nnJ$u%yW!hF`C!WW|dFYCu zBv#F3$AV~X5p}%v)xc{!o;hevU+t^>DCeL ;UA)1`V0VSNQq*oqDS6+*c+Lpb$i~Fn^a#kB zmu#Hvd|j~?4bH@`B{3a6BwphbmLHDkv%8G~%mW4I$*;G*K^`=w1kZ^a1IfI}s}^P~ zq45a`%3UexI7p(pI?=WS!ewVaZY^khFb9HB _T}Z@WO}83!YU{4RI-%a zoRqST+y4F$(hdk *HWX79Rl#h598O<5li|l>W9=ma zg*P%Y`P`WdxR_l+`rkddK5}=Ea{I8zjon_c3o{0C3kvow4l-@;A-4VOya4!juPgaj zR;JQ0Sc`TSyf%gE@m`0Yd04K0r>pANVm>T4;HfL=BeG}*yfATcg9)2NjV~CYA|}R* zVPIJ}#WXg^<4 1sV?YWH5 z8@H4B#=KE-x;gUU+>`TG!)C&?Igl#w&;#vQdJ414S#f yiyTh*2YDmr3rRr@#`)0L6zmiO_Cmpc{Z=ieKc zpz0V=5EM7$t>$=x-B8hObynROhcIw|PZR>jvRt@nY!&oWuS^^PN+Z9yhT_2R&JP~v zC-!*=0Gb7Md|H-ZSACMA-zzEzK9!i9T7(rt9rF! VtCxBSitx6PrP7T0=wsn=#MTv^JxqKn#< z51|e}16u*ug)V|YHUL8K*{ncC%{_bf9+NP(o!8wX$-W*u5H*GpasC)CLpgDAaddHx zMdL?3uEwAO$W8bCNx| ddsXxxiB>S02? 9O{h=L&nGM5}m;+~!>J@&;*w zR$Z?o_)Uz5de%Ck%u7BLS!zSTYY1gVBi~hTxu&88Z5q0I-}6P9v2?6H)>sMY)$O3n z5F}p8m=Xw@K#Ct9TZO( d z2K9W8&`J`cjGl@U*e0Dvf?pQ*38xjp5_kdk{Iw~$k~o0Fgtk^W%i&dNN$+^drCXcK z6CF!VV(=olJ%Z 13$ee-UXF~MgeMN zr37aAQWOtaTGy^#eb<_Lqj-r33^zj$=l6t=$9t${=(h~=2ZI>mdhdjCT=*0?VIGy; zhw2b!J^n0YW=D}sV`S4zJLeVq4#sz3LBQPk9-#O+ZAt#IS^~lGEjo&SX#sw%UPbOR z)_skk4<4+{xVkm3jxSbGI9br;#*G6J_QEOs7J0?Rm9N88;+M*|e~TCw#71O7skRkm z@w%?@s&?O@CJsTaqHx=eS!UigBWLJSk}*v$c&Nq!zb1#%w>C=gUj2hLdhvcnd#09J z^zMCItF?@SxUGJ980QZGcv(^i{?x$`y4u217x)XQ_g^`5g1MWu@$?aYPa&%XT7UfU zL@P+E-Tt{%HI4W4H=4|#5#y++#aP7$*$9N>T~laI@V(@b+l|Es9b&6By~WhTh6Wn8 zBTvi|@g?XH$>*h{A{g}nJ$kp1gK7}3t_~J8FQE1eS*z& zw#PJ&HEI8sJ|N)}feSF4uzVLm
z*h)i%+F21qc&o`6>R-b2VU+TbRU8DY!n>PPL={mD#}o_E*{!Dj=h;2zie#rA$u|jX zVX5FJe<(n)hENBjbcw6Km4$iUR18&`aMs99nE!Kki^>lvH8lsb36F)D5lGI_e4h=C z7lFsJj_>fkj^O!5r=gR>JO70}SN%f~Ne(6^(~AC8oYkR>+6i|QoMG<<=AvH@FdF;0 zL6H4L0Lh6@j9YJopNpPR?0!8kj@zw6YFR6cgivqz`Njj*ISNfgS}L4C_+S@TZz?-| zvjbMvPFSTvu!9!*%Y-Ll`Loyu0YJixWfzi8udjZn)+1Gg+r#op2kt`rITuLAajgKP zrsMELLR(Jrd+JgJ2}6hz^vqY`C7O3?HfQX{Or!3
~QwIfvDAOlBJGSHaF_Gfj=e+9tpZ0 zR0fnEu!nnf{{+6T=N*Tk(n~ ;p+B?6y9`qsR}n0yy38c$H%P39WMg6CAbIL$mOrSDr$iScb$df*e3uNT+>9U;P9? z5BCA^%$cMV0U#@CDSUQ)NgIoWa|S2XgNF}k1|vves)op*9~nIvkP^>t?HK@|sIBZf zu9do;5q2PaT>zIM$Zp<-2Q3x=?ncVILUXY7Hb1|*!(xb#D+Oz)jL2L8bt5-?RFAgH z!N)QBQ1X73NVq3||5sBFYMlZW@2z?-;poYe9>~B}7l zH@v_OUqG=D**1Jl;f?=LrQ#n#t1Nj z{es!2fm&~nY@xcZU)>D)$plYswew@FB%I@}j_m%hLZdcb97|*o;6F18APelszq2ba zM+fO*?uJ^s>@+#t0`Eg |hZDX*_xHX;15;DW@63KMz6mKWNXN zcsTga=l1oI(@n)qDEKyHARs8GY{81H2Y>Vu3$h^HDfKm0^dn3Hu3^9Rz<$!hN54 e-e>8}C#gu+eb8t7WA=5L-Yh;PNgZlow40G_2V2y9sP9Zg0$S`K zR#(~+Dk?-82_ysB-zIwCSb2%_0Wjw4R7v?V4-Fj%GVyLkw8u$L2KxHwA%-RlMVo}P z^+4ozuF9@rLFY=twopw?oj%Y)=AnECnj9fPJcDOMTqXo`B=@kf*$l)PrU&FMjYoL}Q_v8wrYaPC{5S{4Fb(@e z7Iy)`{XX^;77>Y4R$|OTlB8Da7j$dGf9^Cs6D7< Bi9IZ-ddjfvGdFKTPfpAO$@M!`wMW;uPru?bKq6mUyZ;fOdp62m~t13?fpOEV$ znK({%>Y@fK<&1M^8>lE4^+7xC`b+CteAaReq>UQlvE>!rrCWOh1V?J5(8}XCc8|dd z1F!4dwqqXlzIuXlePYlVb924B%NzTRM^|?3p5EwlHZ;KSCFn7jBRvOGV4ZAS`cWA# zSJ_(|10jGnLCq6!q@R@=C*@*b-8+9DKHvp%95o%8NaVh+0QRgc1&*uL_QUxm&jApl z<@04Mfu9`(mITGp#yFkMHrIOl;5WnfF=-3x&7sP`&RDqe?02d#$IM#v-qk>& x_MNR@Op1P{3ljwMrf(okHot3d^AM{0iR+k)*UP5(dVlu+dBst&h-66GeKD zMqFn7DHwE|Wh3prLs{JGl9a{_`5k88x>vOcVR$+qqLppnM$Q9;wqN C~Umz>l;?~-(t)NzW?!S zNl`d*3Fl`jG5-F>e_f-qM&*C&7u)tMxv8i9-|EQ`h(`avRhVJSe{S@D{l +b@G&EMzpamlN&5wg8 pNR0C%oq}D7SN1WbhZ*_r7(3(#~kmK-zji1A#e}B$HoxdI|XJrqB zfPQEZ0JHo$>Q g_bexL*LfIOakxjn2)QgD>u)J7QO!EDjb{@Vl62WB?y8F zw{JH|-pX5P*{Z7k9gFxFpr|k9?2%AJp#dmqToT`7j07N-is1y{2Kn;ieNbqhz~_=; zIMD<%)sYiCfB*jJw7qf^V_t@h`|y71=3?rmz`P&vHspd>U+8l=vDC+7L;|kJf7|_f ziIGl*-FR37R-^(dBkDHV5?zNmIJ1bnK(Pa+XaOdaBh3p}37d?QmYOZ#8k|;KKN4m- zr{1$1S$g>K32Wdr7?yrpOB+%#z$v8eNwe#p27Cib!=1o8$RZmFPd4~B#v@0L1Kd7l zF_eH__~_3T0_+5;HwWeE8F*$Occ_Ev7POEY&cy>D1&K-r 5D4T}KC_mO;1WOa{r(NUmx;h#I60<6(l2-)_aBEsJ@B z9~^LM!<}x#5CnNPO%}W3i7Xh;?liJ+qI3})fYZ9c(iHfp8*~}uI1LO=^-xnUjTA>3 zX$uq)#hb33Go&u73jnKWV8ntt24-Q;hOS*QZ9M)(&O!!Y#K_`4>?K(uBw?;^c<|y- zFbt<)gyjSuTqGw>N&C #a-qAsuA6=5bHejTCcSF zkTzs7Bu2Y*X&icO^zgFNd<=v}BeMfg3Y#99d`fB`WbSJ|@r$fF&`8AkxN%#7%#}WY zb_|J21MZck6=27q%^-)jbopg081mjPOaSqWlyfXN{u9;62Csm$yIKl4&U5rCpr~;I z_UvnGJ+k-v)=nvq*bKq4h9ER<=j^+ln$1H77(H{F9B^ft=Tf7ty#kj7q~#ULB#lvz zu^)qr(GGims-R%hdeco^!D~S9)9BWl#kvO$+<0X)$_a?lee~+-n-)Mo_}V~em7>4G ztIa-k1K_z(x=>}iTR}lJ|5g;l-7oN>)_vRn*{P62-zZXh;Rgk83=XWS zISTk=h+>5a8se|Ok{v)xg*w(WEi*1?&)>&%oUKhfR0LooU{00&(Qkwd z;)N0rjh8FiQY6yhQUX}7?hUC!qU%0@g2xUW=_JD9MV0gUbG91=UU01BdyR51uqA=v z_0(b9Ci_b}mL6LGitlqvi#w83OyS}NpAFds)#lVFK5N$NjT=d+gUvvBctf}E?c2PJ z_t3I4s6r(e;TCQ95=>$U9pdjn{TFQt;Z|C%XVk%oCMmh4=q?c!78c)!?(P$XejziY zxRz>b&XCZgWF36t>H@eUlR|-7y08F3fVGnT2&5W7((_blJx7(}T+AGth^?%0$RVd8 zSI+E)Aq16Lm_fq>ry$v3EMWA-D^#RHnwXe6Ij`GS*Aul+F3EHtQ+y8O8%4e>mLqfn zWJKrFj`NL32UzLE9Oy4d<@|HRHk49d#Yk`6Ov6~k`N`a=*c_E29Z-2kv(o^$WMjK2 zLC<|60Ivq1@GA6`|7fok1mgAz38%*NMASw=r(ocKi54NqFQd1r%vb&J@uMC *^N zu?!7O%`B)QF`8%_5@ZN~bH89_`AV>k>YM)*WcXQjHFPvIxZ=*Kn^vKXgAn=_Xb3=} z#wT03j+8dG!tKEgYb~*6BG1HG!D|PD=fd=wntMpkyI>|KbC)u(Q=q1uuofdk09lPe z3qrIT7D`K6@sht&(@JUk3m@K_R;POR*WzWPP}PIz3zM}-(ySV#zOO-w#9|2bVo9au zt8jXvT}Y!1WzX88UA~uK^9RK+c0c+1K>bOWw7e?^?@6;-9#JS4S}}-;xNuD9`z)O{ zKFYCY1dt~U9u!#qmVjk)@CDrKsELWrQE1RkW%Tbfs-_%XU1OvPh^Z;I#K{4Z3dt%_ zd~jeO;o*1zVn5KeU9nL}O?J93FpNZef%_{h?FPb>QH_k5Cx?Rj%-8p;PEh+IIWm<$ z`~=FSqS*ub8Q=6rS~%&hkV>Wi_JvT7`O3F#+BbF!CXR^3Odk;6{wpiL#ydV3^tfgL zR&bd{)O${f)aUit&~>WsX7azGMT&$dVrZX W<_tD*O z((%6G@K~?M;>I3&QBRbbZA>>oGY@@$zf7z#^iR&nc+j$tX!hJ`6y$hY{kw|_3wJ aagk#61`Kwl3eStQwr!Qi{#7n*b`9o(1)((+wq``!Yax0=0?!!7g zM27q6u =NJf_^Re> zZLvp>AAi|)D;N47K+9c5>mmDQ3qWSYd<&Oy51L*nn~si90&4+rs<(v-kLy3owNy59 z(P2k@P^0S*b>{R>6dP*}{=!nc-|iZ#VtLgNKWGtwLKQ(ktXiL$m$8Bjst!2abofp} zgqRppfBQL5tv%P6p6@ShyPi^y2-N}EK82fqH-uG}U1l+@sw%WVGNCO-w7>Dp@I7Rr zUUs)hd@>Y-K6X_5-7{5R8z{E#n&_oqm({!`0PZWO`$R1dmdscfWDL=_D$?u=$rC+T z$q5O1rqEV2NIM)(*Q-6=9*?;M*+?3^@+BlMmvll7KINln48lZ|Qcw=o-7#qQ3KP(q z2Wi!dv;CqmipRht;b10<---booyQ>jIq4bn@Lxq{&_n7~3+KL#hiW>N|8kDJ_F8zu z7i(oW3~z?9*SQH {mK_~bL zj-Dg?UM_63n6x#odeN3Ghf0}%W4H`gAbnIFyaNgW-?XLxs`M9#^xk8I#K!Kea^KH90q-n}iY`Rz z{1~-VDKtdo!0-8G>PkdpGG_J>tww2~2ZSiPr5a{Q !x`dHV31jooAhjpPA{R1(@`s0JK27{4y8o>Nr9pvAd#!eTatAXW zo9$6!WvYq3_yUnCoJ>&mrLCEHG9SXvy7u-W-au^XtH`~014lBOWe3GfglWv y>s^W+DSdGp%6DSt#%^~N=9&Q`AkBiq%Vky|xuE#j z)4M_vZv86_OBS5y2SNk6|DKd)l{pxob_IcObwNER$?8-{kh(r6w^BOh?yH@rOBe7f zEAKUZHG0C9J?D7ELg(>6Y`i#np=e96(&A71X55&6ZkoGXop9-l#Neyrr;Ra{9{(aC zp+a{0%?T0#t`!^qkm2bZ9v+V9-RLWrQJKx@*}T`jc7H`yn9-YcNj_j~`)6||_HXBt zRxOh5tuhBKcxu3LZqcUZyIqMv!_lxsY18ERjbhC2uof%<>+*;7r%yFcI^%l3eo!ge z(vfD~^X{N;?Qpx5KGJc0NOf5mgYC<8hg%O8;Bn?FI&|Giz@3N9la{p3+q*t}p2N@r z+j}zXPEXciq5jtoYc(2Mq&lrKw)h1}%k($i+A!P}XaCJuKd?D$$XLk!$6ND$manhw zP`v<8kKkRY=|Mw{A{!ibT7f)c9TOUSFUxT$*frn!!C`BbH|xnKGu!=+3XXl*LiyeY zby8Y9ztyB~IU6?6Ip5|>NY}*;X-CUKuP*kKN~kg~kYIhPW&gb8a8!ix+~TvfHJ5h2 zqvOn8!P>r^o4O0vY+#@2afB^6>y_ZC!$TkHvL|neK8)Tl*1gLsHrFL5n|@M9x1E~9 z;HO$2W%-nbYg_WU1r94Qac92M_iqgOTAP_!W!sU?0@o;6sbgzu{p0Pff;OGrRP&DX z-ud5U`|=~g0s#+yNa&o{@XP!B=yW`7xMu$Of`AX7T^*O8$cOpo>YUA?5%(25l@>q5l5`XWrzV~|-}dXn-l}5n zgP8;GSlvM!yOes5^DO^uUo{-jLq1kM-u1gT BcPxX=Q9J0`6wy9O=3PLVh)x@N4>|P#O# (;|dz9ng*JIZ E`A?JJg7B@gY0Jm+ghqR z-~}Jnls*`F!OZEk$2_H 9fe4XLUHGH8LvjUBIhQPR+b40%>*J9FcZ~)*hR5ow(x4%69?JL~5*bQg02tw0(Q* zN?6*Bv;o1nXI@Ta-8POD_0|4Ev%exaL(O5JEXZfD{aM@)-l(|Sd>g|}oiC>saE6LG zUKYjD$zT!EhlV>GYkySfArn>HT%ay5+JQw};L69;VD>~P&iigPSE{F6rNFXM`{4eK zpU<1WoVv?oNJF>pg~0sp`@2P$o$ltv(!E}`?I{MGpClbRFK_6f{a9eY?Dp@%^KNmH zd3Z3R%bVqM$V@bMu0`QPgK3IG1}S*z=3heG%ue#bPw1-Sd>)Ii?-O+Uwry&-vL@d^ zX7Izl%+noPp-a*!0?}mN n8tUcAdQrpUOs1wRg?>lCx5pyle4-~iVZ^&f# z#JLXicB=-qgKg;_ 3G)49K9y5rb^x4VR-!?)NX^on6A z`)(Lc$*r9o*lgXfCB64*W)l|e;UPH}l<8+aVE$Zx(}qk a^!0%n&~ElRS=}~{VLiNKCMMID#g`8tN5=u7!FSb8 z>kkDw>epo0eO*OX8HqUb?^l6gx-(#v)-aEDENe?`f6*&XBMMiz4DmSYH^%w4wSzV0 zS=<6%+b3^&fX}xovu#5GCDW4I)n_~>bSRUfbZ~N0(Pu1El_KWg*RBR3&eJOE<^UG1 z)f$PLqV@MIo&q2e`5|uewXSV$4W}4u{?RDRdri^C`)I8&Z7^sFdK2&x?=cKSm~ENR zv!>g|`7L2V8J)T{1~y@x?i`av2tMXYR;iWt2Fh{tXzeo`8YUr332C<@isxjWW+B>q zI(P5%%FMSr%RwZsAC`2vwSRMqlOxUV)?I;_#bHAhZu9 Y4q z3?~s=9iAUp(a9~FUX}HK=5u`7vgCtNSb+L|>7MfD2Dh;cM)B+JKVHRpaVCF>icO8Y zYu)6}k~n3(chk4WW%Iz7z$KD%LP`x7rjvZq7+#f~dLGg|e(^>k2m=r7PUd+avX z{B?cVcm_kmx7l*5uW~*;{oah;^se*{`;Oo{s5*V{CI>$lFc_r~#mxa}6kb?ux*Qw0 zW7o=Zoc6=DtgA)QG4<}bdUw(Gp_Y-|kH_xW5mqyp_TvWPW2k5J{=4(SIXIcrGdRN? zzI2eX6deat`g3L2@n?pqH%T9T q~vxugqgGj-S}d#n|dJY7&DnYV2ADW6Z1)24jj+ zV(o{rzdmeDkBYHrk)46!$P%G|RbIJjXX_T*KflYy{$Y)vA%ih)W$-A*g6B?S8BPqY zISj_=iS)zp4;^3szEl5!h+d{aMq=2=KE{ @-`p=6w^3N5n8w`;C zb%QqPOcj}=il#!VpFjS*jsXSxdB-07$A_mo|L4X0bA?W~hl>J79uu&((H{SId9{i1_{u>|u z4L<+I>VISPzfZ>hUrt5~H|ci_#su9xJ7iUVlW4z5wBMZLZ;JLeqy1X|@LMnOTQ4!9 qq4^Ew{04JSvi%kS{67c)IGJO!x^HWkTU9gg&mOt`J7TvTarr+Ni3tk; literal 0 HcmV?d00001 diff --git a/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/firefoxMobile/font_feature_ranges.png b/client/web/divkit/tests/hermione/screens/crossplatform/components/div-text/font_feature_ranges/firefoxMobile/font_feature_ranges.png new file mode 100644 index 0000000000000000000000000000000000000000..e63738ed3b56c0b75d6bc8d9d1869e52101d545e GIT binary patch literal 20258 zcmeIahdb8o|37|}Gzf`k)3QfN!_H1N$;c>smB`FWQAVVY$d-_m>|H|0jF2P=k-f_H zd%W)M&-eZL{*L4OAH475xR2w$bGfe9b)L`j`FyN1KNTfeDvG@nBoc{A?!1&5iL}9- zMA~?I>t_6kyWh@c5{a24CnbK-IchB0No&{p<$_7cU9U*~2~~Ft4;hMV-H^?Akt?p| zo|bB&+}N%X!vNK{3}X^w{^W^Lfi;^ss@d*zZ9Hv#n`#I9mR>PuC(oZZsQp#Rz7_s) zaM63++%VRV<7#RqIy)A`b@=dM#$y9^MKiHdGBSrhA1g5qAA7v|t-$IK@sBFkBSG_R z+qU@``nQYApFe+|UfsB;sEA{)y{Z+@W4+h%j&(erXM<&0cH*CE`V5!Zp+g~c!F9&` zRvlx}em@(Z-OtG2&d<+ZS^OEhuC|NvVRCY^Rz-=^B!h#4)I@JtKzKOgH@8`;Yu&kT zdwXLTxOMu5hGb$z-Mh+M&wT#;Sz1q#`1E@nRep4-7gKkVem2Mc>?yjrmyU&nWoEWn zjI1S2oJ=Rraz0CA#xo-0a)IHsYmEug0fqJ>JG1o5B;r+qpFF9#yM=~$L-(b*tK;2y z(s~;Iys474HJ9XlYLm5 K9js9NuDu1J)Pw1?{D}%=m3WwR;{bTQ;hV@W0{*+hMkjUjghAe zfA-*ockbNj%D=Xc^HTa1JoBc_n|IRFS9N4uPSq=Mr0vW%pPHXf(nz}`B`eFwvD%ew z^r+5QN=j-aan{{>t-0~JT*&bgCk}COrKhCLWZhg{axmuGWAr|V``1hQeYvFE+}zzF zw{o3tbfjw=o0#}{X6cnYNl)jpx3|~IHE*pj_^_@TDij?rc|Rc|BjZGLU|?W($gKSL z?mVmK&!4BH?>Tzx*a@?y{T|EX1&7nMTW?JFOY4`r$yr-lt7=Lo>}Hm+Ju4_^Xk$Zj z&dp7Dv?GJ8uO@Kceld^zw_`+H)e>c>!ZuFy6uqkt QuTF|qrO5uWkhy?eFBe5TDYdVPz=d=U%lommDI1s?TS-;*Zw^sQOHfB(il=bx*X z=*lL$eED)~)}M*5M#C-f2?lz)x?08dsWKI!E;HV-9!q`)MQ&X&H}{Q+Imp1kU_aUs zh?RF&DHEf&v9Wo=r7dxv`aqQt3alYo=uf~{oYPp>+ukx)TPG*pUoX$olU?kOL+xJp zQ4@#?i$`hh7j_QD*|P1g+EyRR{w`X`snBUM=IJ8VbZ+w7dNk|Q%#7jNJLLV}=vWl4 zEY1ujT*EI5yZ%<-HVE8%YU|dmZ(3Vbg@-05n^Cr^Z1k2R`}oao=jEL$aU9=x #M6&dSQ#6eAL#z;c9-?=k+EZtq@y zKfi4SHs4<0Aq@rUBR`h9%x z $ZN99ORLgTY zx~1RaAH28G`RlFvS7z?q@)f;8S67#GUP;OHS9@yIS=)`bE!tkFX6g!rHQd?WKQK_0 zuAS5M>MEIfvQqV@Pa088yxOn5x6mAn+h$;3Ku 6=3w8B`_Gk%N8fx3`Ibi0w3crwi_eUs)Gk-g0~@g;Qi^jy|f1ax$C>?e96 zssk8vuDsn?>@-RJ23>1mqGYm4_-lz%^3`|u>6+98Wy!IJP@JKAxlybyhX$W|K0S zV#}vb t`_v<2?MKg40;XA z?mc^^KWQ4Aup2mUduUm5dS*s~CFJ|$B=13aMaAk59|9szStVp;JuE5`xcRe5W45H_ z9@ t~OTFDlC*L#>DIE|W|VuucS zp_RW3B|awbPiu}@^V2gn2XXv&@7-%?X7+xvV!bJF-lKZAV8(LyX8}lNXE1-CJBvK9>$)Xw5c~y%5Ugg;w$G^tD^>KP}p|)_GnT zsC|Tf74_i3b_odyQi^U7pHa;N)eqKJufClh?aa>4XLz_xnItJG={VNqB@xej^r*L} z`%=o_nNz0*D}5-nw6uKRqs=}Qa^kt|PyKUzoZC?s8~pym2g+L4jfzi?d+j-Cn)0AM zEJDmv6vutzm4>G$IND@+d3jNzXK&51-KSwP#Zx?uh`>;ND(WscF)?9mYRZRp6nVym zCul7?D(Z%#V~4Y-7bak~RVUBA?RyT#tdF!Mul)XEL;P!QW%UD _q*}gnFIrTEQhGd?6L!@A(YoZzrmpFmcwS6gIr5_^5Hz^^q+4#hdC7?;+kJi z*VEei=#*85FRjR8c6PQZyW}~ozWTbl@6BTC&t)GTBn=D=+5M=Y!nwK|6x5xu<#t%u zE*>79{Q`DUD`K}%PZx@RynmQ;?aOJDf(&+j8ztqt=H`b&P7|-3rws#57^`AE*XqzQ zhP$$lkZs;hVm@|^Tv=IpZEe}c^3zM{&P+YOfPf!U-{0vL+xy|{Ym9&2zk7ErpaD7> zD&S?8X;W0)_jmVg9UWg_u&>N_8lZ6{BqeF|y*Vs)(yVFVjTc#AVWF?d!s6nisHk+c z8kEp(3?M&0zxEW>yO Reo0H*9UcudOZ<9l`Cm{0ft0#p9X54?iX*nlQ$y zje2`~`{_0JsH>}oHEBm+ pr5 z%n95anp&E-8XF&%!y&A#^#ypbv{v^(*HOaDh&J^(+vvW()N>U!bnSku c@#Ahqg&3+#lYMk~vLe~$TRFy~!L@vs@0H|+hK5z2 z2X1d5Blg?N%gfl<*!OW;N#Tv}8(n{o(M|?#AlrN#eI<_%El0-C@UY~)?P$hShF>+) zwcet~kv`2oTEVe?Wj~^ZZ968~XHemxSaxfED;3o-cJ>jb0-I|8UBd25p&qMCCrlf5 zPrr3tS+Es!99z(5a y znT0%g!t$cX^-t#03hZ(JG(IfVf~Q_gA2oCM$Pu~o=b2BP+NI(tCnMmAkFTQE@x3eR zws4$RzmzoN@nDjYmjCqWOBP0#E-_%Os;aB~9JETEv(LWfOn=dyC`)r|ZrH25T=e}z zrk_9qQ6jDkwWG&f|4cLzN9V>3(v0Bbn>Xi78zZIhNZ36#dWx{&$gJ|E3tR@;GA}jK zp6Em^p?_$saC8aT55EBlkyB83uK4UU(T0tT?j|N4Ie75k hrq456s;Pdhz-Ntd1+cruT4JOE>$g4V3FhrH!?QfbQ_D&z38*0 z8SP^DYe|8Bnd5kOPq70fP@-xiJ6i?Ni(OF^&eSZ<9f0xsGS@%B9|nOy?)CLuv20KA zdiHFe=jwd;Q%@iw0*&CjGKYWgd+>n1Q>CY;r>oF5v3}9}HxQCPW_-#*^V_#xPoM6- zbN6obH|ez{_HZ%Fb~en^WVLc1AM)?tzZ>qkbm>wQKvJ>8=xa +IJkKW$hk~VA-OE%cFmX=k{aa?cYW74OfZPAuj z+0|b>sQ*@6T+DCX6 EqLP^2hKx`!O_kv zBNG#8Ev?-s2;kr+U^%bcmmPuTWw5%{%Tm4!OS@-e={6+v8gz9Ixx2dyI8E#qTU$sh z>?OIxd+yn@XLw}f`{-!e<77}KVC}#qPjpra;qX_R;~pIU(ULo?*Tv^OdN|Z}y!#Ze z7MM`m*$da(UIen~G29CcrT_TxW0kYVxxw|xmzURmucAMKy0n(M+?>{7|IydS%=1!y zAYOYb*HK_!I#2uS*RRiwe+kFYGP-i*P5!knQ&Uq5N5kl4F5XTVw3G-@6tIaFbl6Hw zeJR_Z#8Gi@5-)lAndYD{+gfx;$h(JPYqj7%6q<`pEyWI2IL2({n~tswzYpBU>ezJ0 zfK%h86kw`vVBo5;hfith#M2W-_=G-CM`6$aU*E0Z)+%iDo3?B@68^!~!Qs Z?SPe 1J3M<;$_r($<63-Y&UBh*sl->Z3Uzw= zJp2_$eytN#2T(wE<;oS(lpNVO=f#xUUS1nUMn=4Se5QYoUp}QM%*iQl!ohLn`t=~7 zBnt}*w2iBlmM{4}Dk&*llH+Y>Vm^5?1g$nCBt#Mi#(DWSH-v#r UuC z#wn@y@8AD1Hr9ZaV)3nf)hu=W{>K6v10KENDu6lP2M?+`IxgjI`*VLseTssuXZ-mT zS8-a2Ns46p-TdY|(7fY8iJhIDuUK08=jWdWx#F0*EaD@+n@hxFMJrKced*CAqWhxQ z*Lb~xf@BmqgoG|{FJjj#&hjsdF2&~kcubXgQ5pTFL{2jf;pXRo89qy2by7+A^UhzP%u5+Q&JhGftB zYeJ4=PyJcuKJZrTU}U@xu#7+0kvtL1IIafDVJm*3!jshV^(%Ov*;L=#1pY+phk=2E zD7+o(YXEOW_9KsnHGL%F)d S0@}IX&}Yt^Ig__! zWo4zFAhoTx+_FJ wbQ# z%*p_903gc)2`r5|ZyFl5FH~4%^*|ND 4nWwGHu5u zYkOJgOJ{6jwAep)KMoT{DLhlZtUlMG?X3F}Kla=ZRGj>t>Z*EaX=xQ7`o3oQ@`O;n z&9|mI U7anj7cc*&+>_1^vaTLAg{0Vx3pPq@q&|LVw)FS!1- zN*J7$!N?G}HZVH+0Msd3p`7Q>kA^j=(cuJ}LN&RVsT+}1u@;H9c>*$b(yD_?SXdYh zV23O}%5j%$;vEB EM~t_%B$4|i(YARe^#`(xVb+U-DJhQkGouO zy`R3Pr6u_H_?M92;5QJ0KJ}_W=wg=*+P^q3zeo@5!ymfZ4ko6o8SdS+0dY{DZkc&p zl?e|E^O>T)eEm8PHe;Y6;v|zs0nqoy7mE81ig`SE`0!!9&Rf9Rs_=%RYY!hT JqzP24Div(ymP1qJ-AoS63xH zR;J%OJ-KRQ(~JqOooBgg^XAPQhukrJO;KRjZ;-0qJ%+3*@e<@5m(pvo73Q6p2X5WE zb@uGp llprhq@e1Z4}gvF z*TgYyVNrPc20w%7(zmiW+n%QR5S$vM_dv1Z_)^n6-GKuKfXKH|Q6+)X*AChNm^!a4 zoDf@?A}cR1ANb-ua(B0whcF=?;P8RuZ+3Ncg;MD2>q|&Gmhk}wf=qdd7f`up?T2?j zmm;> (2>%_L@PJ3%l>pFg1bDn13xk1+f&vSGC0P8Y-cx+ MiE(z$n}mMDFvcd}7`^}?w9G2Dl8~1V0Hy}=lr%SIQ&m;vn4XS}^rK_tyYhxa zeNfmpHkK)vF{}@w$b&s6*$m2s0o4e0{5&b?`^3bW_CbbN3Mfb$H*N$J f%9u`m(=I2JK&jM(*yD;NW1k7v~S;;wVa;kp2}1aptH$``(Hz84n150K)(8glzdE z|37QsIkgU?l7y!THwS8Ip`=m`j9-lQ3{f&sH0~{R>Hl+e)`o*!r9Cn*EiG*!FVlVb zx8J@e3=XUC0X_it?7=Vx`U1BJ+j;DQO17c&fSmvV;=pZdS6K;ff>+cr1N*9$s& v`*X9}3Tg1NU<&q$rD1eXME{&G*SYLGtlbW8MPQP40UHj#t z#(B y%#Iy%5`iZBmM ztgh~EkKbPh#EwbqgH#<*%&~J_($}^H9n1*pa<2D`5m<#k#M4KQ9x23%MmIDlK*OJ! zomKxlQ(kCsdayo>ZruPQ?QmACT{6n^Wxi}wuz{@XeJC2ciq`!r*WNREPC-s5SkHVg zh8#5XjC`X&-L(mkrM1Q-Rw(^o3h5ac)q)J62Ih%&ku-G%^y498(l(3^+ht{CZOyh1 z(#`^^o%L8bOA>MY4JCv8f2sRK_xbh9(A4x^PR>cswZ&weTTDz$IKzAq53D*fr~f1H zFD)(oEATTGl1*bkN<*4HapuhX)>hiT>b_pe0U2 a{o82P`M}5B~ciD5~DSH-Z!o7o#iHT%t>tj-ud00bgrtYk~nLiBDNs*|6r-pEf2? z@eVD`V;kVxD9@$cy-No1ihOAv4QyquO&Pw=7F5jK+}x{Iudb{tOauIk-Tk#1@9gTD zV_dfrt$_KU{DljK_})x;0dqfDpb0@IWPBMUvG42Guj{HFe!O&H&4EFCPTm8K1B|{~ zP;ds*-SpE-4M;a?uZ`tYlP?YZmGlk9oz>KK5)6G|`p4daEXG3j< ;I9x8BUHuy@$trcRQsxg6J-Jqi-;UR5#mua`vfx5)2mV!u-++Z zNfd-cf4uC?;D_)}F)!kNX+o@on3Q?K^WsH%Xox>P=a}_pL! i$;`<~S^GuT9typ6*DEg!+5V9c_TC3;YipofQby!%?(Tpe z#H2Q=*$y#~J%&|KP-lOcWG_!Ajtrg9Paubrz }aMR*(NlDcJ z$#_B coG~Dk=ox0o%c9S`mPEd?bpxGRVYEwug;2ziNV;uFqbw%T`wvs z3Rf*IBcl=1o`ADguU-XhBtDWuGgJ4 B5)9$T!H0XQ&SMSdukWNAs-MF z=gEQ2(AAZdSNZvyuRth6-!QbY`hfSlSl`;wF$7m)`|jf;I5>h1zp82<9XYkc&&?f( z3N^ZREf8vusj2DQ*k|=?M+|V#V1UU~2nq>-^3OL3Qt#zIpBU?XnquDpPjjM-qgN7h zu{GH@e=31f5mGfNj8k(cIo2ZqTW%RChn`gEv0Ch$v&~URNC?gUUC;p`aAADQzW#m* zW8 W|j$caCmg|q;c(z?8IABeH&0kI7o>Z8G*1G0f{fRHmIwqb(J{r5-p9>AjDup zSn6vu7Yvz12qgX4=sA4OQ&&i6ovE5x2SE*S!u&g51MC^zg7mYpvVt!S`U9xh-u)9@ z3a7cqb6wP~NH-TBf1vh@%L-<3zvS`5hwn^H-LUM;RJ?dGR7O!-S(%2Bkui!^l;?l4 z073f&BnY*y6m%0_y?@R|G*QrgnHnm2*n3$eetJNR1Ejb(!3#)=jqKHy#Y696+P3I(8kW)FkUG(`6*Kdi zGOyPQ#w~4jK7m6Z&3adORpBYM)dgPrrbSxE9h=*Y$-M|h6`gZ?hPtUTs83s4yFcYq zZSDE7qhYWPP6PI72*rei9I?#DyUtB~z09o$MbN7>y4VPs>@J5k4aJVoF5RHCaOf2Cp=%}MxagL O?(%j7d?Bn?kg8|TTt1*;j*^2YO%dVo*U%8 zy#=#G0sSNO%AAMn7 PxxNi$T{kd(X=bvq2%;BVczFt^P{i8!s+{ z@+d%^ih^q(8UW0GcH&_Fpx2B*x6c70q68f-C~(&9Mu(o{{^PFj^tiamCRlySs~Dc} zhXA_H#bA`rYXUXbKxVu+L2xy~#RAkq#Nmr sQ3dZKN$giCHZ0wTXZ`tt$Sfe^^G zcZf39)9zT5y;pDkt8mt-a8h!&Dg_}V4h$T1 2~jCTXTn48n!b3 z>r*0B)!n;y`wl|P3 PMSnSWT-B;)2Ie<@%F$f9q!0AX5JRlSsT3T@_sZGGtSO+7hIso!D zOX2M5n{Ow|J|tRU&_NMGf`ibrizx^MwX(X}2hM_OxtmL|{m9`VM*hLBF0E`mobhwL zBCCg{SH}sJ83^k>c8|;@AhU8c`2ll9Pnl~tx`^%D0?1f^3TdIS(b0-92&?({ zKV`>_^5(X7cP}vwYF@7}Ubh=#Ixu^rO5n1N4j)*$Dg~+iQmxqL_%;RQe}pUSz{`<- zv?kacm$