From 7bb83eb4bf203799be88eeb5c603378217180fc9 Mon Sep 17 00:00:00 2001 From: Ilya Asiyuk Date: Mon, 29 Apr 2024 12:29:36 +0400 Subject: [PATCH] #4495 - Macro: UI support for IDT import/export --- .../import-saving-idt.spec.ts | 123 ++++++++++++++++++ ...nd-save-in-idt-format-1-chromium-linux.png | Bin 0 -> 5757 bytes ...ng-corrupted-idt-file-1-chromium-linux.png | Bin 0 -> 41457 bytes ...Files-Import-idt-file-1-chromium-linux.png | Bin 0 -> 5061 bytes ...Import-incorrect-data-1-chromium-linux.png | Bin 0 -> 40953 bytes .../tests/test-data/IDT/idt-a.idt | 1 + .../tests/test-data/IDT/idt-corrupted.idt | 1 + .../tests/test-data/IDT/idt-empty.idt | 0 .../tests/test-data/IDT/idt-rna-a.idt | 1 + .../utils/files/receiveFileComparisonData.ts | 1 + .../tests/utils/formats/formats.ts | 4 + .../tests/utils/macromolecules/index.ts | 2 +- .../src/application/formatters/constants.ts | 1 + .../formatters/formatProperties.ts | 6 + .../formatters/structFormatter.types.ts | 1 + .../ketcher-core/src/application/ketcher.ts | 9 ++ .../services/struct/structService.types.ts | 1 + .../src/components/modal/Open/Open.tsx | 1 + .../src/components/modal/save/Save.tsx | 2 + .../src/helpers/formats/formatProperties.ts | 9 +- .../formats/supportedFormatProperties.ts | 1 + .../services/struct/indigoWorker.types.ts | 1 + .../struct/standaloneStructService.ts | 4 + 23 files changed, 167 insertions(+), 2 deletions(-) create mode 100644 ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts create mode 100644 ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Check-import-of-ket-file-and-save-in-idt-format-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Check-that-system-does-not-let-uploading-corrupted-idt-file-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Import-idt-file-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Import-incorrect-data-1-chromium-linux.png create mode 100644 ketcher-autotests/tests/test-data/IDT/idt-a.idt create mode 100644 ketcher-autotests/tests/test-data/IDT/idt-corrupted.idt create mode 100644 ketcher-autotests/tests/test-data/IDT/idt-empty.idt create mode 100644 ketcher-autotests/tests/test-data/IDT/idt-rna-a.idt diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts new file mode 100644 index 0000000000..7b17c2ced3 --- /dev/null +++ b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts @@ -0,0 +1,123 @@ +import { test, expect } from '@playwright/test'; +import { + TopPanelButton, + openFileAndAddToCanvasMacro, + selectTopPanelButton, + takeEditorScreenshot, + waitForPageInit, + saveToFile, + openFile, + receiveFileComparisonData, + selectOptionInDropdown, + pressButton, + chooseFileFormat, + readFileContents, + moveMouseAway, + getIdt, +} from '@utils'; +import { turnOnMacromoleculesEditor } from '@utils/macromolecules'; + +function removeNotComparableData(file: string) { + return file.replaceAll('\r', ''); +} +test.describe('Import-Saving .idt Files', () => { + test.beforeEach(async ({ page }) => { + await waitForPageInit(page); + await turnOnMacromoleculesEditor(page); + }); + + test(`Import .idt file`, async ({ page }) => { + await openFileAndAddToCanvasMacro('IDT/idt-a.idt', page); + await moveMouseAway(page); + await takeEditorScreenshot(page); + }); + + test('Import incorrect data', async ({ page }) => { + const randomText = '!+%45#asjfnsalkfl'; + await selectTopPanelButton(TopPanelButton.Open, page); + await page.getByTestId('paste-from-clipboard-button').click(); + await page.getByTestId('open-structure-textarea').fill(randomText); + await chooseFileFormat(page, 'IDT'); + await page.getByTestId('add-to-canvas-button').click(); + await takeEditorScreenshot(page); + }); + + test('Check import of .ket file and save in .idt format', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro('KET/rna-a.ket', page); + const expectedFile = await getIdt(page); + await saveToFile('IDT/idt-rna-a.idt', expectedFile); + + const METADATA_STRING_INDEX = [1]; + + const { fileExpected: idtFileExpected, file: idtFile } = + await receiveFileComparisonData({ + page, + expectedFileName: 'tests/test-data/IDT/idt-rna-a.idt', + metaDataIndexes: METADATA_STRING_INDEX, + }); + + expect(idtFile).toEqual(idtFileExpected); + + await takeEditorScreenshot(page); + }); + + test('Check that empty file can be saved in .idt format', async ({ + page, + }) => { + const expectedFile = await getIdt(page); + await saveToFile('IDT/idt-empty.idt', expectedFile); + + const METADATA_STRING_INDEX = [1]; + + const { fileExpected: idtFileExpected, file: idtFile } = + await receiveFileComparisonData({ + page, + expectedFileName: 'tests/test-data/IDT/idt-empty.idt', + metaDataIndexes: METADATA_STRING_INDEX, + }); + + expect(idtFile).toEqual(idtFileExpected); + }); + + test('Check that system does not let importing empty .idt file', async ({ + page, + }) => { + await selectTopPanelButton(TopPanelButton.Open, page); + await openFile('IDT/idt-empty.idt', page); + await page.getByText('Add to Canvas').isDisabled(); + }); + + test('Check that system does not let uploading corrupted .idt file', async ({ + page, + }) => { + await selectTopPanelButton(TopPanelButton.Open, page); + + const filename = 'IDT/idt-corrupted.idt'; + await openFile(filename, page); + await selectOptionInDropdown(filename, page); + await pressButton(page, 'Add to Canvas'); + await takeEditorScreenshot(page); + }); + + test('Should open .ket file and modify to .idt format in save modal textarea', async ({ + page, + }) => { + await openFileAndAddToCanvasMacro('KET/rna-a.ket', page); + await selectTopPanelButton(TopPanelButton.Save, page); + await chooseFileFormat(page, 'IDT'); + await page + .getByTestId('dropdown-select') + .getByRole('combobox') + .allInnerTexts(); + + const textArea = page.getByTestId('preview-area-text'); + const file = await readFileContents('tests/test-data/IDT/idt-rna-a.idt'); + const expectedData = removeNotComparableData(file); + const valueInTextarea = removeNotComparableData( + await textArea.inputValue(), + ); + expect(valueInTextarea).toBe(expectedData); + }); +}); diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Check-import-of-ket-file-and-save-in-idt-format-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Check-import-of-ket-file-and-save-in-idt-format-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..1efa10456e0918eb545afbec331450f70fc0e99c GIT binary patch literal 5757 zcmeI0`BxK09>6D|poNt~ET|w?Ypu#v0fSsoq#}YKV2DdNVnHHD11XR|0wh+e_z+R6 zsAvEe7d0_NtUw^-V5LC28&Du3XAp{*KtQn}TuD0C|6$+Tef%=>=Kg*^-(%j)`6Ho$ z>kKy=0sz(p9Sn#7K#vCivTUsZ?AfqG)eS2|W<;PrsOhwp17Lv)3fOlv=eBY<_ySWM z+x|-CP4FS--K_PkH*Y^5y>0KA^@&%bE`N39QzM7n2OW2q^8HczUqlt^|0Civiw(Uj zJBx|O`w9<-pFVO*UmtPEa$mT4qK8>_;#k}K1#_A;Ev+KaC)3&SVe;0K>$~1HN+{)o z6Szs8md?l8iW;hiiE1M#QGMghAQM=Fr*;_#018*jRRXI7Rtc;USS9ekPQcY$jsW-@ zFHkJ)__h9~=I&k&8AD&&p2kWkpiB1`X{ht&%(6j`GpCJ%2?EyO0|lAABw!^~v!tvP zNtC4XFx3leWW%e{WPHd3m^WmdsP@xI8@)t6O;%S!{f5{wol50JdWd@L>(|XxvnUf0 zDlC@eWo5g-!O`JN!i--k z4c)|4lzT^Nu1y>-HUN>|j3P~s%N03c$&=2-1X00qlB!f@t@xT2JjohBouh_;8wN;A z#@fsTVM31DGww*UFiL6?r4=(Qd^bL9bzn(s+&Kl28^%Q^MLD*2Kl(TC{=TYA;S)73966K zRnfhEz}5IeL(;}%buQ)1D;{EHR@V?~?K2SgfwT+TiKtv-ONMEJ_C6AXoa@SOQbgWk zMWthhsayp`m(^{q*(>TB?4I>z5}7$OJu0^fAI!h8QHmd3(D5eDHY42y5|D`$KQZHh z>0|NBNm6t^8xDS#uVizD(f7jW#0?43ZRI)5!ar_R^mmt4owHD+>)sftZg%PRF>}Wy z)R}uTz8SYR&r!%9_49t=g2t+f&^T4RUY_y1{9Z*3cSTZEwUMn5;H3HEQYWWIYJOdT zoFY7OxTiNv_j@F6Ful62PNpZm3ORffL!>20`$REPcZ_Cx8}5LBa+e0go*$M+aLh|eX8t}D%b&He1wTNEZbWEqM%9J-<*Ka?Jau=A zev=shTqSU8vx_#0;%rf1NpZ4hjdAaP&f9KM*b{6PpYNzJK-yiJg}(Rd`I=?u zrR{#Zg_XpMJ~13$8k?q7v517XdUZ*uuWKvrC&^Y^+w~X^UKzq2%X1&&Z0R{Z&lg+U zsjBxCO(oB)TeYX9)UltW)?T}x&B4&&PyONqTFS_L-x1xM0mE#M$R|?t?ib%WG9imL zO{N1n7skWq2@66XBOs{Oke!5%FQD5yrZh0;X+vU^0W#*B3N<)?|MPmqpC8jDRX_A#h z!6*wVQ@VsfVQWCb)(phU=b;sTu`a@evAgX6oE5vl_W=li!2g@&^f6{=LwWxEWJ-d- zO&$&y_9q9FWP100Am(vo{rBHbx?s5!wfjOxRp6BPl;9^DBfvAMfwtoG$a@<^nnU?& zK0%~Q*P)1PmUC=#G%8()y0aa@I1V)lNG+?LpOxt}BHbh2@RKZg3a6&N-NzodI>Iz^ zk`u+Yu&`kHIS^4!E}X&`@Uj|G_Vy=KEng<_lXH{*NsJNsmNo*$D;S)uIG^TYe6mt> zk2jpPI9J!?{5=AXg98El>w{O&9fQ}oQhp!tVxlv^FTj0jXSNYhg7=-OChZL8PNzP& za2Dp=Zr3q#&tSR;ha&P~H-Ty|BVMGjj?xz^gCbopr)K1S(RJru^vbv_J-6#=(fjP_mn}|QJ#YXX zYa=5Bx~4d)94D2h4ZR8S)7jS>g56t(2XuP9OvYFOS>d0W}{+P=DQ^8(v$^V=(I`$P=FjS}NXz zyIe&wk|*J!+Owps6cQ%eVNbmL_b535sY7 z7JAOR@`9a21fKRG>up?PGNbG0@XcCaz|+1v1R+-C9sAwJE3eXq`sVFR0ur3v4?D+K z9(8=y03K-;jiI-6x13&PKd3Ifj`hhj0`@S_hb#Ut1+LqNiQH%>lsjTCl8^<+?j$3y t=eBh9QM*cDmB1>2RRXI7{vQau74@p|#uI_brOuq9UT8V4+Bgf;3pjLr6%sihwlIje!Ls3R02^NP~2TqN1d9w}60z zbaUtSch0$g!5!m{JFa8AuRg>l_Fj9fx#pbf`&?F9Y}a<$?GzLgyTt#ydV_*uLpBA) z`nOv*<171_XKL}+I?Eekmno8}4i8aK9HkJydP%`9_)mweoq}TTx4*WvTelgwxn2Cd z$Nk}Ni7lHFp512(-+JJuwFy(gvsCv@mqhniKcH4s+8evQ_L9P@tuG9^BtS{@%KEqXzl=;>Dxg>&ZXXuU|(){@$}^D_)I) z;{N^r{}TVNUkkT4GutRG8k}KeWgU^nrcnofy2&&mzx6IQx1atKH3h{RnyO6ot)It^ zb+2dQ*_uj05&r&T!`QL;RJ^TF|ik+8D>;<$bC}bVVuGl5qz2%SJ8!S6_a-Zxviu=iS ztyN5;#j1Nhv#+DMU;RcY`{bAP6!#~;YtemcT32uN=i-iBJe$^Fd9io^B9!`)L8af} zyO+pCjPj2NZzB)1)>raH2JM$}TPNwQwq;Ya4>F!2#a{FHKrHZaL>z#6&Zz_i?x!_CGA$eE4R_wo@!%JNs zbE}^`Xk6aMw*fyp;MG%oK;~gmk&q1T7r&mdeX)-Z3sF2MMfaua^E-hD4PBS978kcA zJ-O_<^|h|^Ze3?53W{!_DC%b842H6EXLIXjD-mvu6e^aa;2*T5VtC&a%cAtJ7a0EBz~aU2Tib9=&xG7wz>D z*>pIV)J(@mE~<8td*7E_KGwVsJ9{zQGP5a@%e1AhI%^X%d1(#@iSjEkGfyq?lDhE; zmqR18+G>9{SZCU1vO3<|mVI%Pa$`@UR*vpHDg1^s|6L_A+Js&0$Z*VI+t0BD;dI~0`V}*4KmJ;~Jwr+sTbp0m;#lW!BdK6p zWP9M5mR8};Kb13CJ=Nr1_dZO{h-S~|edK1Fn-<&_PeD;kJ(hkXc(f-yqdmQd=gDE3 zu2S`$`alZ_maSCg>*n1~AFFQ_z7|mvF@=;c)rHT|=WoJ2(5k zG~=Qb+Mc7^;US5OQ)qAIQhs{U|JuhWnu8P+^Ka8epY;~R&1PE822`~tefJ4B;-b~u z{Vi!ick8L{_2vSzOF2ryS0VNW<6}2jMVv2{vg+!luO2kMK|%3# z(K0NjPe*@W>^)Z7;rKh3>S}o^jla@~J>5h=rL*wHeG!-L%9&7M%wzqV=QdcU- zE(|%o<6`k&(QMzy=4O@8Y`FE7&m|?)bad*sa|$v8(oAwE&)IHUN3->2lAEmA8~xUA zN>K(zm*c*F{|^_=wj#BZ>CCZXmwZ{2*;Cp>F1*b+r_nQ-8FL;*Gq|^c$9b&cC9C+o zd-pUfQD(b0ZGLp=@87@DCL_jemA>>{so2==R{}kafioY>b|gBNZ^Z@Y6yg+q=p`rQ z6~y(EbN+y$Kk?YHvE9n|tac^!r%L!T^I4M{n^#z9Q5juol2e%(Fz>IW|A5W!=F(@m zsC+tL`|jPdt$aw;3RcICF`D`HdA=H{7Row>XkS0s&tsY-r6sGP!W2>SyFLe(Dz--~ z_b~CxI9e3&9sjA0(50BX#@HJ(*x;+voVSX=r6}wfv(BE)oQb^t`wyp}TM&&ujbOD5!>EzuqE5m6OT`a1@LLYNNGe=33=1xK%WYKu;X0kDnAlPzlB2AP zN@fo0xSAXu`O&AFs|Gn0YKLaW?0W7x8yxRmPyIsR6M`#rp_fkBCn14#Wkh@J#?`BC zrg@_mzJC2WR39tf`tjByoAJ)X(_v1v!=6>nKkjlFetU6)$_*g>7ojFlvfZP17R)X<0#9`sMNC$N!l61O=(zNo6u) zqQ9E>Si`pLZ-emI&1dKK+!WmPy7PB|^>j1cCEHIAH@UxfQUB`L6|2#VrnpOwHXC;2 zW`sHnpHYlc5cfF1HaUMVNkT@Zsi)+r_1el@JZ>W)Ev+=tnAnhKYvw%HVY~AOFr|0o z51-RU4RMMWn#|g><)}_c$(oubDZd;n+Zf)N&ls6E`1^Tx-dOI4V)C1f6sA(5+A1nB zSj1eb7t_;LZ0ea(8#eEhy?pudYwKgjj=4X7&PiEUSyk1DQ|0^WRk)Y%;(sj4N%eT; zhVV-prn24-4Gp~&uuVF^t`T!R=)xHR0d-GW?i;eQuk@-z6DumDMw?TvSPoRw__3+) z-@EtSuV26R4f^`}MvWIPNjGU&dfvW$yP~|Ww^t#{R1;fZQ1WCKHruzhu5PBowky_h zu!>g5A>FVsAr@~u^z+>n2`Q=i_~gPkb<>=$8sG5f=>~PDGK^bpc&8gRu~!E3$&&{( zD_Z$5+z`*g&Mv(+Un=q@EG*fiE%VH&Q`f{^9Ynv-KsE zA_-UugR%A;@5qM_*E`SmJViQfLcG*xnQ5;~mUF1(*(B!Vd(!bR3kz#i3r@Xg%`}Ne zCR1CvmZ4YqHcm4y^TYL^57i=T8aR4Nh>FjjKi6m9)7i9TOT45%`*34oP*Qg9_Ja9d zj{#@AR@^mD+F0!A?yxn)6t__$YldNigpBY)Bo;Q>OJr3gCnv{YWu}RG-@ffrVmHdVmy-Bfoz5Y~Qx6Cd9V$ z%%e}?zkc269~?BA8EzP$uXl6XXg%7h=xx>K$uo@nqNJqc=k4w7ewc@e=|3-_*#MhA z&F?hxYz$`qv>*e>MqKl(PgLh=NYYeCe#W1Huv5xf_EEXEmJ;>8BZ7U@uTd_NR#r~>Pn(%M0wK;e_ttstAd{12h;q&*Tiq! zy-Tv$hbOz}3@ZXSThsKtDsPnl_1KhGRaf(@b=8?Edla4WYigwRyau>6H14|Q_Cm%`TZR{9$0I6E85=qpJ7_aBLabmWNs z{(fpz+o4*oM6SgZd2T^7N#kBZ7SARq=|7;n*E=Kk`fl9g5Z z?08o)j#IYAEv!E|F~~ElDeZT;;_x%loo*JP0BaI7l4cI?) zRGzXkePLliLQ*o#zT(T5tD3o1;`-I0+(q=b2$y!+POP^6((I^O`rX$_d1L(6L+AK`QV)gUkG-ExQl@ ze0fBG%YO1s|G+?;Oqj4}rgpAXEUAmmOS9xO#3?6-di(e^ycgYp{9&}Zyufeq>zT{a zC=Z)z>X%{GA1^hm8&JApy;oPpT}PJ2i<(wfmS)O1ihf6U3Ewa_PQW(lb>d2CWmQ#~ zYSLI2VB+aYo-U^I=jDSgm@x0VD`4{{rpsmNI^6|hSwq7(r6i5m^ZHf$4;coBh9)6p zok4cTk;ie&d-MABJ5i4VEzTV}Iy$(svO#CQeQTa=@@{&;82hP#GyMFmL!rh%R?RqE z88<(zM>V%bBJNp8`|H9bio=t4t_kYv>1F1B zYfuGtYvgXyhyYYID)(b+&9#o-%^;lc&694V({Y@;>%-vk!c=RjuE*l^Py~|N-L^~< z2?>c>p}F>mi3xKo6bmDxsDSNQeQSo1b$9W)f6q`K>vM9*U)x3Q>eZ{S4HlacR3mIg zTLVwuI=5~2ZYA8u*U#@mqI#Agu0|G_EPIiwt0ko=s%)ll%X@8?1<@k{HuVVldhCa# zmn9JKZ5^GATP2%K00I#HxwEZCzJYi zlE=&vEuY+KOi=CT@Z0dQETrdXX!~NR5@k}Nvxl~$kwbfura;i(Xspj^8N<(R+h}=A zgDX}2f&C@w1jh3t-n`jA^QWb5coBCn02p$ZZP7ncRd=gA)1*y8!%=-XrC_P`ZBmK# zTxj+ft8IGKA*Umh#cWkORqyThE)aT+QgqRNV!qF-EhH$ys42;?tFWN0r}4{OF2DJQ zT@B*zm+u`vrXAYbn2&!l3fe=K>*z*BwLzRw2juyB2>3{=#tRM=5JuvN z(I~qZ)qQ^E(vCj=1MAuM94&jl{$BLyM!Kx6c*y&ff(DMhU(f2wv^^t@=;T+PdzoV? z13!445P%;dU~a5ne9bs(D9Bq2c(#26T==`9inu7byTJ zQ&7LoYBOAI&OCu0?QI^_)t1&q1{P7==wgrO1r__Cqi@g_vwdaZRX%-;iIVyxS*Jn6 zpm@8Wr2LE)G%XqfRo6e4JL+x&>ZWfQeq$bG`Cc%i4d1DdFdE38yikwV3eUe+-#OWE zgu9Fuy^(nor)5gwq*T|=MMqI2+&y=L4P0A>zp{B|zE5twe@yrcHHGmUagfwT)!Id)4`TIxT$_MlDb_LTUL&cf`PbP#*FUew;W z&;G{df27qf+;v`B)Yxb*dd3f2%>2q@@qpF$Qx$1VvTC=tA;6_sWSYQYQ52u=PZ=d- znEAfgTHaImN`5j|tHtVmH&9JZ@3~CROlVE~52R zxRaEbRd(B3Ry%zI`89V6(*3!v&+sG--|LHshw+5WsgteWuu&8I>Q`=;8Hr-a_iSap zOy>#a=QEOI08*NAV>Et}g7PsT_9i&0TpkUM@i=!bKQXU)FX|l$$X^~|fuD<(kCu*g zSy@EicY(uoD9WG9;@5u#f4|WYB*!QY+*b>9oNhg$RIoT4kDf%~)~$Di^SwJ(rt4$~ z1_~2)w(9p)ZWa2#QPD9GaVRw4P|EGV@&V zKAEN+ai$%)L!Te-Fl>nPefV&7t;}<3u$txExf|$5Irf>47tCo95ZL9qR$#A+Y@0)q zgEcLysIamd>trgenLRBNT8|VtQ!g*WC&*ybmN%9E=SWk-6!vJ$GFq(RF4x<(%Z2<; zlCcoHU-w^KG1&L8yZdIm?=Xs4@b>Hv7wPv+t|{L7mzD>sLh8Oer?N&v;5_kZ3n5K% ztw-uJjFj;ZZKi=}TTndQP7aaM8Z8|%-RC7TTpJ~sySg}%VcNmJi(arf%HrgZkBo4Q zud-HbWf0FuMc{dd-sh+HGccH0E@7c7!$h=g+wY0JzQ0O-8y%K+&0U4Lu@38*2IaPn zPNjt;zrGk`j_xk0Ta64?5*fkiT9nrvD?@oPY|l~toY9A>+6@_Jo~#n#}d__eV;@KTj?+0@5Yt6E;H_InyyuV zc3_-3yaah`P0LDdvf*XEEZkPVWrrru4gnoA@$xng&t{g{MjsaIM}*mJz!8p}5Un=* zdq2;tOSm%dycpuy`=m)nuHuF*yA=T2xJ+8P(7;Q08`j6XE2Vdo^0w-7o-_F2&DffK zF9Ln9RhvncxOZx5>V7)9c%TiYQ>VTS4Q4wp+06W|x#ErWN>094TqXQV z>;Oz}+_<5^UK)wUkllns{Kt+2Q3pHz)4sIZitb?xf4YjJ=>7fM|Ij+*$6OY>E+ZlR!9jS`%lt^G_PYwEl-nzcCFX4cUu0wlAx zI#*=<>-*l(jyz>PK0d-YBJ>o~^scXrnz_m=D7<+>$uMSqI}%NQJRpOpgCo#!9BwTt zDoWS^?43OLrt<#mw3YFqwIrO3mA|D7wf!URK0ZE`O`j!hpr!5jpGV2`BT+{sgw`~U z%h8(h2>(g(TyQJytVKf~f`VH`xVRL6?+K+q(is*-1&75u5-Ir1g$qh}z}@35Z$V8k zxGu}}^z;zybrLCA>xPO-z|PH&urP!y#d-Q6sFN1opPjpcL`iyRQLG9;J7Ep*ql>en z@qy>{hrv~V9pRe$tk%}4wUG2i$BYlig0ep)tC6-OK{ai8FqDC!{Wgn&n!1)#U_oi) zs@X!?eBrf-lrO?xvv`EqnV8Ow*P;224vXh-LJy6E241G4Y+8_1H(hWu0~~LzQwh-S z+&m>xUV3Wtqjz8Ye}2u%S~eJ8s}ju2sOYp1`~7K?Y)=N*mIN76k+g~ra^kQ5(F@I0 zRjWhMquj5R4{dcJXz_o2gZyJXgv5)1oV1?0&O|R=7k@l6AXV&1{r|BWC~+!_F%v=_dUf)};LCkga-*tDvE>w+%>2#J z4JoqbC9@g76DhDt$?=$%lBM%zv8U zTn?2@$7s#W;IVRC>cRrQ)!WPFs!!Weg@qx23+f(Pm56ul_xg7urG-U@mfG#UZpv89 z1HlH5-po2%6yzlK3$OlrM2U$8?zF<4LApoolrPR>Jsc%iJ}&gmUVQm-Fvi&S3B!{7 zcPt{)XPTZynjWvVT{tvlk6)DiZ!duMUs3f>4aL953ak9arGBz`{d?MquoAZOoExwz z6%h1Vv=sHTY-gR;a}wF?KjE#fI=2R_o}E5~+chO*=>FLxDl_)jD3MjHl=+`vSj<>e zQ8sAM&FVRU)7V`dJeo1{jm3IyNu|1pQVAt_Znt?mp%dkhdvRsowKbs z8Zk&t;(5yIulr9}>&~Y(b>yX+<3hO?UL1!;xb)7@0C34VVvM2#P7 zE1T_5$oDA@yKHK}0F6)KqAuqxpMsks5~|Q9lmhx`HSy-mwwHr5GCeYWjtsMY10e() zsI@J(b8Af0ArfB+sWg*<+af=d7Vgd{+#c%&+|SIef7)d-QlmWc`rnTuRZ>6vLbiQP z?y!#9>DaV=scu3aPxQ&oA)dkZQ7n(6(RFH(tQBl&)Q^zNM`=Ess`9e3H#@tOnysUj zdzaqmeP>HN`cICL(LXnPr*QxU$KPwTjI%@Zzs(d!&FxRT;uD}tjaXr8yZq_XC&tFS zbMYzhS3*6;$E!)h*(*Mt7%!CUSCCOP+pe~wBuPuTT<9KlBFnB-+Fbv_9sPjMNwLaJ zzCR6fAVr6E6l7*`ttV=9VAiQH3!Xb_V}lYOXRMmJk(4>?EXLLKABM*k{2D57zyZim zl2)CYAoAH~pZkMlZ1x&Qyfp;(2+$c9Scja&p);@?=*&uT(<~1+YPr`f;T2~vpj+Nk zUG-;>S^MctoZh_lg06&!6)E4Cf^!;t4BES|pE`@E?S;&kB+aGE@`s*mje=Lno^Y0y$vpR2L9QJ2X?t!1ievAO!!NOROgKhfBzd~}nf zQONG3Cvx&KVoFGm7L%%mWk6jm!?FM3|g7aiSqX z^*or|`R*6^{q_EzZpwmk-A_Xk4I20gnhKuew8qV8)EXWfmKT04QdJN5Y~J%KpYuve z!DzxRNogsmlkMnC?T(@adH(!4qhDLl_!l}80oS)pZlHnBYHM5>xoiJ-#MndTly2ff zPtY{Dz6L)r=DbnBg99-5sc7XN88BX|^v)Vr>+!gWsFQWeV&+nw6_=7?Aci3b+oDl`#L_$>UHZeL**IuyNYtmM^nnzD*K-mRb`%N2NL+f38r(`Kjo6 z$$*R}cortJUEBVCn>mpAIdNN4CwXWu-L|rjS4L*q`i(iMAz3B=6Mf7Fm6Ln6Zo75a z7S}S{wqwWnwXPOEh5Szp4mQL-@TKb;u?sNv+T+hlqz+oet&0i=c`% zur9Ske>5CKdwx`4U1Nt$@c9vEKF-+l2Whs3Z?rx2g1IovfKJ^vl*hpo7|^A|X{wUZ zuPITzsV`MC!)3(*&5fm~-Xmd9rY@@sgEvITGE;%I4i8@&Z%Q|g{vXz2zp9y*C*0`A|Fw*0 zWsjHhK$xit5uj1^^YMw`)cF=eG$L@7q0Y0a(Afi;lGQRKoEN9%0GX|;h2{v^DV?|k zC{EZ(q8*SsoRSV!`Ngdbme65lI0~flFyL)1TD>G(GN8$I^2ceSY>)@pLT`7mXnE2@ zELntt;v+lIJQRm;aMHIegZL~5V$8Y<`CV7@+e+`v?&H*ddT`0%!X2}WZOGEW15#gg zMnjD{1A>bi3qg;Iu0kpZXwuHNlcPE){j^6neEq$_ zARcA2g}&b(x;y_AkhW^>5Qt?KIQQ!%m)e6o#(;hct( zx>3nOAp2nH~W?t_$;nA zX*nk1Kt+J2ipPaO?-2h=^ztw+aO3*uQWMc@xfn#{Tf$y>h?iQ}?+)diciAL37Ub0IRxMlG6?ZrM_2g+|Rj~MNqPWty6p}j&m zox?f4Gy{V7c)}g_85itz&jA~MJxSq3 z;2*8#CvIhFDU)q5(w4|8PfhIqeeS%Yk8De8^!(b&CNKtq^b&t!-cKp^+b+-Fi_hwg zm5X>%r#n5~rH%AYCNr;Oh*CHPn;C}%QcJo07`BYcL7tn%6a{OmOL1x$ zaX60QC|pC`pB@=De|#rd%>af~4^Kvf8pOI5PQFpun={*Y?5MlHZiAD9hFDWIf1Qt^ zSx{;|X(8^nNp)@Ir!s`x^ZPg5WietK0T1P`vRZMzItGbW+V>uq2o@wHL|Z++)c|Q~ z1=*5oi?lM&NctT}%>$YDPZms73Dov;gbV3% z(V`?M{7Pjt@{v^Ck#|a$TA@QXfZND#ZH8ro`SZk{!YZkC+D_RYGmbH5W~S`S{-2&? zca!RBMRm0@cJ%d9%I77*>jeiNhKZsx|4+|ThQ`FK&bYks!aS+!T@?4-zbnD0MuJEF zgH+A=YQa9a@6O>=R*I8?p$<$f{~xd-QPCwjn;zBq1?NLvJ)C z@6%f&lK#}G1P;%acE-yQQR+d51 zX5DMbXz(-q679J=&%k^|x3_C#dFdop_79CRbnv+t=sY_|5q3}Ek^}$MLsf_r52B&c zXgkTFULf!J!EF`c=H`|vjFyBs7z`q*%yM#a7qSi^_k-&)Dh&Rv*=V}dSFvJRejZIm z{9)&jfr<*J#!T*&^uwz=yBxb8Y?&_JKndLl$n1wH^vD}g?qa29A1l{cXZtmE@o&$Z zO=`)oK1^yOg>cVMMFoCv;-z~%J9HN6fb&gSylUgaCJzq!p+A;g{FCwNaK@m90Udu@ zyFakpeI}3XUpmU9m7cI+zl$A%4UFt-{idj8ydbSJGug6GI(7}H1~IBCF{@mLTkzsg zO4ETfo@93(Jq7kr8wSLElWP3o>tHLbk_qs(t5Onki@mOA);9S9M2XSinV*|2bU}l4 zn+2OVZmMMx0BdtRII&qHmSV-A7ijpt`)4|nv)bvqoS*+w>hyapGj2@zOY8xveP!Qz zjm6Bi7(%0YAWPP|b3%GVguFPE*04FPLC^BTPFKiFHwQe*%4?h(%G$CX;t~2E=+c$T zIaa7IAA@!E!S?TMzA~Z#AMu@|vf2EcF&b!MzJH(gGuMi=gH^{6Zfo9!2-u?#IColn9f(qKv`i`gA;wkM)%3)Z&Q&w2}yNN zfp4z`7Qrd{c;;7vt^3N|D>`2|`IWCvIY;DF<(I9uqV5fP)Ecf4g{895^D};Yk6oEg zn-`YLw7);zJwZ_66?tz>gY^F8Gym+m8`ps^Dqh>97DTi)g-vRV*aBI4g*O)tV#}2I zzxfK;2lFKxH$0f$b&T*=J(MQ-wRg7=-?JndRKoi!6uCG*e)^P{{T8cT zSLHtpPNRj10s7IkSwPo-;)jd_1F`AK)ksv_tNT4VKE?o=+)Jx}Y&&QKEK zd~#?gI;;_P1umU$JGo8URUmWzyh14yiMJdEXt0Q{xQJxhkftvKI8zxSpnT@cnML>+ z2*`_yiW-7>keKzj^eO^Ug&X#n7OmK5W}ClDklE1x1tLu%tXF54nd1^5+ssUX-VW-V|J=6i7KN1Q|0862rcE7j_^004bnJ@k zobFm%RR;90#}n2^Nz$O>moIRbsdd{%HQk`BE$)rlX+0QX%M6u)bboNOoY5THbm;8O z`vhOZ!5WW3`tKD?+j#-*e>%ND_o)S315&EBz%h&TZ@_b;BstFhdClrj3&9{!S=(8W zr_(NCb*XDD4$1;!mHpq|uLOJ4X-ek!+uS(yQE(R8 z)M%krnDcDlOM0O=IFf!ZjwCCiA+egO?aT`P%x$Q!Ijy6w2u z)GE}SJmM$B8{aLyzYf4h9>68TX~7~d+2Edfrm-A4CQ?u@n6&98JqPQEJyNmMP{ z{MPe9;<6+g2Nxj;UE&jpN0UelGw5}g#fjw>3NJMjH)0U37G6q#%S54fUR6~!7o83@ z*ca$mL%_fH=2eGaU$kGtOYFBdK8KiTh*y?@o0?X{CBI>=c)IX{LG4vePEK0R+ivz9 z=)&q_Z-j#FT52#mb zdTTihF%lO#kvU1(#hQzI6HH4leB&{|u;dL)bB9h5=qf1Ko-c!w zx{y+H_n!$C(3F{vPgUpJ3%GpVEllxP4=aFX`t8Zn`4isI3SF4st`J%G`Bchm=K+p# zZ-Wj5Bq5%F0^f=Z`r#Bt;eWB<$nYjFg%^LH5I?s@KVoqNpwf&q{c$LrkefdM^NM@J zhbBz0A7dH!5m#gavhO~pt`mWhI4QBh!%fLy3ugB-29<&n9jdKXu}pF}Qr3XPKP1L) zqA`}3KEOY9s2VEvv%M!2aPo+h4oW7sVXmgtGD|~$WXgDC#y=7+PiFX~AU@K$X>vF8jFYwdisZ5HT9}(mva`*RXvgyqNO;e05cg?g zl4d-%i3q%+RYtJ?IZW4xaU-}_=8D!Dq9py@-D<^sPW_Yp;eC=6%$yUHDs{mR;an42 z1wrqKNNUwi6a~QhnD1G6fRKc7;rksdU@J|>W2yi{2iKkNdyxKyf#Tnu({-n}>s|+n zr`hSc$5LC@>IcB+5eVAgKRn>|NW_1}!*lpn&_0!*u{nD(c7c3Qhvt(D0l0#b?0=G= zHjo2^Yl{PYbGIs(Pf7dfu`5rQ;7=xft5I^nhjkk^!_oP3%;?W|hYm0tH(s6D~5ghL7UoY1fbkM}X!foDtu>g3U zu?$DUPs?$X8{CG>yLay#7KfrMt7{q^?|3E-f)TKB2KBUvaJEAKMLf2EodeD!y^(B3 zJkS(=pn;}rzcvc{VY8-DeGK618`v`i>#Vppn$&ol3ers?{%hfx(7L?_!Q2p*iGk3R zp}J_|F(zg}GRlC8&F3VdUlH&Q)tFR0!k`RP1nR76@;Wc37p^WEC90-f!v-@=>K1!5 zO4diqgdNvyaWM1nSJVLcfll-TnTH^N{)Cs{dsy~pTJ%5<4Y#C4Bht8S$24})U8pcT zB8VLzEkC?`@K!X!V!W^5?yZD<82>5dBO}QFj_iAviER#k~Kmo)WaV%D$GNr zJ`*}*ISEtT2$Hs8ODZDm81K{}SIiv{Pa&ZfyPT#xg%^HNk>s{p+p*kwR=7G-YYkrY z-#<==kt~`H2L`z=%#vAZ)k79BV=!CNJO1G$bUCRWBz9al5*rT9s>JJz3Q;}`=2}xU+O#1Abk_#!H4VjrrwxS7tWjuO@coj1(F0URoGG9 zlCBL2C!p9xeGc-~y>{&h((WxwXDzKz!l!{FA&oE@G$H8>yp6awOz-hH_sqP!Dqszo zuxkyG;#7>MP8s4n)%I^TLRX)mTYdmt>(^KcaUug*KO8lH~t&&a>QyDeac{(Ds3LFBn(q`YP zSz=RRvoL7SzW0{T@77Dr&SAE+O>lR9P(2)l|%f`fSe@ent{Q)BSOqoo#W!LfeUHv ztPI_$)M30tTe#FgtX`v>SqD0Mb36>uYHNrjn}l^CiTK(=65Yl`zaEIL+j*u(uP z5AlU5Weo*E_D(ag;Bq@m-;Iil{O!(?bk_CQ?P{2eXW(dxLp7BU7q6MB7BO4ZEHLkR z2v=()O7-u!_@o=CpDt@Fw(!H>MXkUyD8EkqQ;_ASOYIM)j|30woLL<ynNMsm6)oIk`khpJaubRL5Opj45{^AZXvabstar@?_{5Bn0&bp7cu5g>QDj@mT%-c%a3~yC;m0@FObCjXlw{IFd{ATFz!T#&^ zlpkN3?}E&^km{YLoO!y`6SNmrNRm|s6G{MYafH)E;UV)w$?>p?zhn?eA{JrbwSj)W zCeL>J!4S0^izwL0lXlRs#~>FGg@S+)L`Gni0EqtD+S-%i0K50>3PCx;Y3||9MPX@S zQIUMQ;2y4qS}VM?PVGPlRcneyc?j68<)>to7&Cfae>yd%j16D=SU2Pu!<{?}eY zcOgS7;Y<@tb$)*SanB5}6J)>030`=sMjE6XPU33!JR+ckD(?Jz6o(1Q>%gGC{RJ}gv{(-sDlW2DU-$b>_F|0*=UN#~uFN1mSz5i}>+l;{|xdsd3@kcvZO9})|?M~HbHuy-K}3-l?zlIc@XeE%M|eyCeuFrM)b_yuEQ&{?WDub^dA z`_+!4VLG?4Uql9@JLrD`sv80w8od7p=FQn>l}^s2IgMqmR;ilym37INm(F&|>#y!s zwtCsBQ<(cCGa;!uY702VvSGSn42+4AA_tV>&PvV_(GCFLfF7kGtPEH`-F+mrt(@5- zv>fiRAUX{&t7Hfd69jixvusAyG-32ZO?Z6*-*6a?jjmW)1GoKe?y8nU>&Z|`#Gss0 z5i$p9V;En$B4-++#>2Sidy=$w$k*7n)K;nk*kHm=W2|R!Ajqs91AHWkSy`pf*Kvw? zAqA)uG&Z~ir$&zIjsvW+C}s%Z*T=8SBnY|cqx~rO?|#;Wd|nhwKruFp>&o3EZ&sYXTq4&BcqESo65rt6hm!%V?6tMx7JyPj@O&{qoWJYugI5H*2Ul&w2 z5g`HRV;Bdx7D#|Js}la&BZTW75+Q6Yj@v`}q4mS5`W>AijWzWmd8aN5kPjH&Z0(ru0;MJ@{R-2GWRFrvMj1Nc%h zz)00tm4*U@X~28)S!J~9)(Hhgw`PUMlPsofrA?QGGMtRZg{%jsC| z83@<4RWc|?kU0o>=phP(9R^6(qyM~!7iM8$ktCEl9Mc~Au59%%LI9ys5!>kuxP9;X z6dkeAt|D!e3uQo8!geDpRCgUknV@0UVES7cj)MAD*g4l_zGn*wP1Kkyfj13b8U}0N zA+UUwL5NLKAxJGE({p$ZXCU9)k)%BL={VI~AOx5{naF@062X9xC8ThBa74tEDT^5Y zqt#__27rf*Xbn__#3RapfAqom*6$zMNUH%wokEydg>Bx-&PgpocNIL43HrpRT5%W^;pgDcX2qO^P#k&;>B z09an+*pcZ^^VFa{x>bjs$23+w zpErS2Kf}e9{)M|A;1N@`JR$&cSz69BiUhHe$z%ZE%4&g=C$A!3k_mNgB(^C>8$9a> z$ee~0ol?>_blfXFqLke5CX&uH`w|pbAA4B=;kX? zojNWjC#+jpd3oAmo|z1eb%)j+$6$L?WJscpBjdjna?Gp>6G;Y8l_z?*mAzFJNFGLT zPz2&&TSUvOX3uwG?$dI-KUBz($UV{8j#TPl`tr}RW*6s%>cogJOy+g~0}Rk5z{vT= zcv;x?PqQ3;pMXTddB7AQ366v)Asv=Wh+fJ33z@?zj;sWRjGDRLg(+#myX~Uo`j1qs9US@Lc-A^Ws>v-3P9z)~Q0B-cf@V>`P+*=e z{Gw#3!1BtYonsV7+EL55OX;*9Jc7h`7wX^zII(?vu&;)lO_6}+1aMlxRS*N74kZVu z+$Y!}G)d44^QTv_LF_5{H=-oS^wC=`gZDt3v8YY70yYV!WI~P4vv%Qb{N~;F`F;mg z^#iFBf(Z>!G-6&1DD&R1J;n*itT3vQ5{A);<^VDiViAl8(V-4y!(Xmc9fW|9R4}Wi zdG9N=0|stMZyCSq1A4iCbI8)tjYM+7)}A?e^2>lxJCGMaqkv|_1U%hTw3=}>5MB3A z2s81hmhtG-htZF{zLok?!+ECRErjUJI}e5vD)QX9S|_hIxbD@kK<8zS>JE`M%CcH0 z8hY|$H@CZ(ee$Lof1Nle41$vw+M!>Pt}}_456EtV3yCBQ5>y&ODUsF}yCY>Wk$2mO zL6S6FU}lmbhK)R-GyMrI&T4qAId6P|sqC>y_nc|#hu3ZtXI`zpe0j&E%X`;9IbN`X z>7n~~IpIwL?tmZ$ zg_icBkup)6fxtlh9X>g8XMB7gBWU-adpid0ZI`yT_D;GBJ8}Hk$#`;_Gu*{ir+Vzs zEb?W?z*;CqCFmo^b9)-s5ja8$cz?(UbbUfqcOe0u1- z-hYKQ?Ck8%oYxIvAWW(pfA{r0f=WlGyq-OK zc0VHG#3`wOqj^CbaaDCZW}R1&kM5Z1j9H$y>a?`B{wgD~;?`g8Us7F7iD8Z};N5pp z1cfQLhNONjWJ)?U;QxW1IRacu+Lc73A9Ov{&3!Y_O99z)XlEK z)wxbb4nJ1a$i03@4xKV8w!CTs7_ZnZU+9>PAsaz?Aw7)ow9+&s&YquTc4_ zCHiTcVozREakbagjrzs*sNOK6ihuM1243eimmbA!Gfi*%uX3N{$tKi==U~{k_px<3 zjIiI|mC;}ShQJ-^~m-~1@rxDR?FFM4(lz=KxiCA1U|o<4p0 zgR`02`cE_GG8ifDR%gHAWN_B>4<0R0{J7yy(!FQrzDnzdDv}(eGaMMK$9R-C0r$ zxG-$o9BNnn%K%6Fe_y*!{p}G8Eq3AxdXP` zdNjKD*a!T1uU33tl6>dtRhtLv{GSBqvsK{Mu=3;yBcsZ))&*q+Cv+$?519yf@y!_uB-2_7jMq17`s zM(ln)V9CVfuSJA5S`!++BQ;|opWcyr1ItU!{| zQ_P0+6s@gr$Z{JzuD=Jx_9<*QO#8RzgXZOL8}BM&05w8GAN}FOZ9s#&o%wu%LPC3w z9Pxa#g>w4{$;I|NR~!SzTGF;q3QpXo*6PnA7r`{Hs;>4Et@5{omwU|bU}qPOKWc&Q z?%R1WgSygu1ANXSr0u|r>*C_iRcDqk8hjSR4K4kkP~Ct)ca+|URnTil<{a)S5&^n2 zo3#NJE(X$F7j@(Lix)em$2#bs8hh)KUjVN}p*S9!;unRaej7!0b5mE2QF(0adUQ@?Gqa)g;_~?3P*PHY(xN9mE6Am^vfR5XttBY z0%qd1xA#M=b#F>3eF-=VHvTch?*w$b9u)BJ-@ji}P}r~KvY?w*X0X<|w_zjJn41?3 z(n$tz#gFDv4 z>^LzoQ4EUwS#R%c1tq21m|&au`}Y#E$4C4|PXM%r3(L#P-90@IkaUi-uL{gIx2M2C6H1ka9Sx86B7X(pL%&wVqqTwP*W6xB;R}J&^8_(9uzhC`2hzsJqNiB z6*30f5Ls4Z?T6NurzqjnaaiabGYpNCSS%}G!@=WiKbQPNLtjGY{e+tn z{c>CLlg=U>97-Tzv5OZe$T^&FrgFrg{)g|-lN()JTrMX+&d(Q=3Ou(7x4#SK^A3xD%GASm)!)(d z5X6Dnatl7OgXi^jf>=~Y%n(4QW@jA3{zO=S!W@3Hc8EVD?tl~AZd#xhnI3JU0VKWD zRp|Ws)hh~x8Rnm%lnJ5{HR1XB8g|PFukPokLt~VZFkTP{Hw~i(cW|@s z%)VNG6w>DrVEV&IgRkGbaRV6Z!_l6{Jm6Wd(|5UONsfV5{TXw>j}cdWu4_vSup2$c zM-%14vejJR$b&B7bx4RObiG?BfAeq>n=ef2qIVHd$+2L>Cl^cr1or`Pm%yuvl(HTt zkX)AHEYc{lKrir;9R^?BJf`sJFBQRjRKSB@!S>22DV?&q?g*LaFI=8S1q4WB)A)%j z{*K^JOi=^7_%JJr2lg*d^i;QC7UXqV=0$XqrN)_)YBb7poHMO>%N^f33DV*?FYiI{ z(lIrT$1gyeY0tNpk6ub^M7ws@e)5;$T!DIl19zy?q_~F{)G?{_yEW^1OxueAGhc`? zIPV9=bgioh&b!a$e(G7xA73WDsdKDVV?zRM?l7K^VbMuQ565E4=gI~RV{Q&I6E%YX2 z@sl)i9ukczdrxPPs|Yx5cT8dTzI#fK?^EH^P@Vu%@5h=H#SEUzw&XAg!tx;4E^Pv4JXlkK!{4lw62K5%Cf#aY-H zknsD^1gK;fQq#LG|25Q}KFH5;aPbA~+d6noyFV$Vm{(?2n(5+$T_MI5=aF3WaSaK)+d@r9{^PJeNjZy)#* za~qp)5cDU|6)NOK$K>S+V2t?jgu05#GkE0;XU_j$-FaO`u;%n&jv$KJDusEo|}diVYP{q zM--G@D1+Gz=gImQ2uL|OIhnw}MqYieJ$oV~EKK?B=PTgtrKMQ`%O0xn6oTT16pE%> z=?W)-$%hI;iUci%^`ppkg0$BfZWsw^p*wl-S#@=s2v^gkX&9P4e_(A#+?_sWlW9w` zY(c0;RsymjdOErw0ljxqpm|juMo@i+jef6v(3)QX-tOG;Nls4T3j0o|D=qcqdtlFp zZuIo@7{i`}6k^`~VgUe!yr)k$&Pl-68?LZHivQwnS65dlbcX$))?eG)Yy;mU0mU{r z9uesCEAIh&%N%-HxiP5r|iB>4hrR^#|M7mQN7 z;^id;m=w%lpyHHuJDN{f1zeIah|Eaw1?c^iENu!;sX5s8A0X2bf6#Y&`|n>X=$IYr zT3A@%1uq22Y#XF$P(Vq5O5w){UL(H+mf;C@pc+V%^s%wAY~puNKxmJI-rZZE5P_<` zTsse*OC2P9Ya1J_;3H|li6emm*zrdY?l43`WUiIZ-}xlOZNK!q@D4T^w2*?!%P#^R z5&GkYjxepER@SNMMlAchk&_6Zw5Jm0088 zAS-+b(e0K9A&9p!*3I2dvS1n+^i83}a%!yuRgHH!o+9I5Xhy=#Q7B0U>h z#Bs)RHwT(JI*w~Btl0{Bf zx^Tq3L90k^`P1J|q(K=O+|Zd^`>Lfhjmb;Ldc}Hsc&Ng_9hWg^_gF!v^&7yznzA+- z0s_$gSGKa^NryIX$AF*BJnXFDYsvP}Q1h{$h43@&9jdIeB7r)~$A^5D@`DHGAzZFQ zx8;nO*a^rgj2i+jBa9NLH#tEHK>;yt9f)`krP3RbT;}J`IAC}k0a}}~(IV&r6yO;k z-Vk*f(s0=6YrlRm#NucWD)=_!_#rkY*u+sFXjdK_g9Z=}L?R@VHOB}*#s%qCE0hVY zAd>&k-u@QGIU(hN_-B2Hrmjo<0%;k53R0n_mY1W@mCkCbyMP!0K=EpS2Ygxeh%2I; z(0d0NDVvJ!!H9&Pzdzsd%f!TEP&%b;DRW$> zejf^q!*vl4@3(}26ODfoy($D^=300IOBEiH>_1u%%r zp=#+beAbfVI7*;_J$lW>MI2gC=ZE(nL$m;i*J)tuMM4(O4PuNYXfnEPuT8USY4a~` zyLBccB`tfPSNkzQK6tI|q)XTms`8#_tCodj@sg5#`x#4RJ3=L3 z1Ku4h^3obwp6q-3`|Hp`BSpaiuR~FO2VAFe)H9gX&~vSL2x^B?V5Vi&nps$!f{7s^ z$g%-I3em0!N^ZXPnRh@HJ$eG0bET)`2*{)_?7p4){{GYEPD!o9apH$!#va|B<|w57!% z`loh>_@T;mRvhSC(A=GZ`#FYP6{vyXl|M!+Pe9906+|DOo%;YgldCk7=%;-1`gH`@ z`3V^7_W}AQ^o)$bP!L-K)7J-@k0s!?quC@#A*wYGS;&46@nVlT1_-DM6x>K`gv|@p zmhSmHCBkRzv=27?4l3Z8r+@s2hO}2kUY^R6K2R;&{G6u+$i%^RKR*%^6cX~RH)e>t z3SUF$sClr+)Cc#&pZZW+QuYhU0(Av43jCpv zn^HLp%=KBVUUd02r)FgWNSL3WAC_wu1c%C|rtIM2$&u&0^LKZ*Yv&fYgX2IXZO#b= zNBQFA^$w96wgQAHhWPQv-?G9H0AQ@%p98RbHhC{$Am1Pb3#`iwKsVZg36O+@spmFB zp0@_PFdk_7eJcXEM_WgSBrq@#NlXF08me+V1H6K%nVF{mtjs_Jx&dY=^>88@<^if? zY2SfO0>zh@3v`m0n3$%3Qqu&~uc@i2AlTM605AaT8I+Qe(x>bNp1Gsr#@uq2?|*Xv zDxkIxM`(x0*8r>+3a--zK!yj9Dgi!7rGH!W1&E=3zf4LZ*T=s?G%iT_2z}>J04P4R zwjx0c0i_^Zxx(^8c|HwG)eIE{Ac8bVi4E&1hvNc;3o%yD*w`4?1EjkaxWW<;m0Ar$ zq=ox^0`w)g55_9U4uNGA3m)sc$G8wstG%LOw|5L)AKd`7qxxfacPn(pN})!IK6$Zi zYIkvNE(Cy~nNU`XD}X|P?-ua*D*5L?O=6=y`3q#G020jrp@`90Ll?dVny-k^28 z5Zmo9xoEz*bQ}OC5hUfz$;~}J9~swxw@F5f2J%d-d@ zpZ3s_Y6oPj#BulnY*8E7)h=#s%8>3OE(N(`*a$ao-fRp!_|2^VjK8uaeMTr}VJ;dai2x4383BRg2#x~j0(kytAWxqL3=--)RYB)icz5NlZ+%2D0)uXklu~>c=>oprSg0 z4GWKG$*oG2m~n$vbGuM+9VygQW(@&cfTXb26hw7_+4D$9(1V3TN^lL(hjnOde)rHS z>Yn8g@?M*|nkwfBL&9j;q#W6hlo2NPPC@ns*?fVxtunf2Xi;@99r+N*K@Nd?{yZru z92&St_6}aFSaTovJ8NL`HUNo!?CfM%%5zd9CPJM8LwQ&y4gp~T=$A&u>jxY3$HgB` zC`5C~vp|EuOP1GRivL-}j{y)a1w*~e3k3^I5C1k;%ncdi69^+SK&icQ>lQUc*I2ka zSjsMBCuEnw_O&IwIw zYv_`?K#FH;dlrh7r$|I6At8Z>&<5ksGPTbm1tAhILjeSUE7ftkqVeaLr_F-u8tR6bl!wIGv6x}c8mIeFJSP^L$>ocHf;9Yq(SgZ5Nm0HS+3IErRel2B);v6H^58qvEoVV!5Cb40a_PW8y$S=Qnug=g z@bZ@U{dGesNNDInOr@`xi$o?91Euv6B!5Wpgh1}iNoSy`rwn@wU$o$+usszl8`hJy{U z@+IB{$ZvqbavYpyIHdYOTX+UAG@D=oB|N~Evb$Y~lDr4GPcfWHCe7b%RM{R^9@6(GKFsO>T#1!%VQnsG}Kv%GF>%y!|z zg+8Egq=}yqy&p{gdeL!Fv#KC?Q5HOd=3W?Qspk|3JMP=pyc2+)P@<6k0jJg>cd zsb3A83yQ@V39-8R=U>yEO>loPTIH)D=+evSx+q zqZ_~*y@ezVQSf3iHlq}spmxE49a6oIM4%cZ(*S|x2Owt!10J5$RX*mXI*@4$BdMl~ zrJv%!12vc9t#gMPC@o|g`pj7kQ#V|G2cvhXd z{Zoe0q~Lt?`}>LgTF%t~p>@9Lwse*)O9!L}%I(I_pLMo*&7e9^0@qF%s=Uo*U|Ayv z-A}*cx%=j|n!B|=)m4QDHWKSzGtiH8BHpKhZVrtfDCV~TXCy%ZS*aDY34PG8MjLfG zLi#~n8Dp%g%K#08GtngP+EyU=Bj9jT=2_2l4p5wk2lN}uR__)>!DSwRnBXbg(3s%- zt$)|3Sq+S)BM9HK!ym~)XdIjP%8ocT;nRSehIEdqJiap^*6s0KH>ypXVOSSXcwm@? zLL8u&?0LCy=>s%O?YG$-s6_AUoa4nlfi~$B(CI5YB_r%rmk76QFC)}8Pv(dSb{a2u z#lN50|Ghg2E%AtmAEeM!`S&wS_MfgK^d+ePyZ!fL%gW~R?BDA?ii%G${Ci!zInt5* zfB6HSzQqY$`FDS36B8|i;;aupq*JZm>=i5V^mNP)%_9%W_mQvgjri z{PMXk@@QbKu$Q@851!49DWHwsPTZ`18Mn2y=e%rBF&MOQ8TDH|;ollB#aw2c&APfz ztK;cpsho`~=)3b@i>~uNKHf6o@x)Ez#S84;Wo$M6j}OD-)xT%;vFH)jO#J?pOJSZA z!Aa_&=<4e2Nu~R1-IM$%RGwu@Ojbd|Rl!XKLqM7vy+ zXN?!xFZJoCtCE+WeyMW9$^2Rw?|+#`89KOm3+S<_XS@thCRAc;d<=SDuHrbQg z3Iz$=pCzb!Cnq^*)yXbUMT$Q(5-z%T?`?uNqpUz6nGQnTRFs0;tuTDVtrej%4O5)BBLS`N3!$k6s&=7jU2V&TQL90MQrV<_?L z8rM%efj`ynEz2k>`B7UG34W>)qm1)dCPleu3qCh6)_3R)j|M!KH$_`;_(=#@jQwP3 zirVXm0**R!gO4Jj^of;D3sDmEE2Tf;WUNf?UFE64Q!<^Zm62;Cb{tP8yOytAP7%BBG%in2aTmfV*u7JF~Uwt00EtI|dOUAUy6>!9~oXM(JznBuOEAStdhypFYmf%tCIA?wD~D3VNhy*jaCwD9J9RN<4=fT1vhj zxJ_0}`y;CO)X5WK36z6nW$Wu1H%eAMk)^p|{*t|}-8U*szjUmJmiA`-%Q&OJ;UlQ+ zo#I*JOTS3!l-$Jo*(C{S)e+?ab}}h1!b(`WOJ*_cnfm8lF3YnP8#sOK8)}g;Zv|M} zM^e4N5ks`^nBTF|!x?IbA^}cV6s8Tq)oPoV2vj>ktkX1ES+8h_;x;lg%q}dXhH{(R z|4%%#1sUwkfohkw)BNA45=7pBZ~ zM6_qdKO$*4DPhD=!}mYb7t?Owl6W^Nk@wQs;l1LK|f@A%46(`FBhPri?Qj;jLJ^hyMwWt4+Zb z=seu6s-Ee#I?_GS(=VAQS-iN!Xko$-Z$R{5I07GLKem_RGt;PXctX#2EQ$r+Cs~>G zVEX%$4xME!A}iM%N!l`*bgIw*_)+@?~~al{L=%c~3;>JHi@nhhq`){9C^G3ZFnynI#7FRY>I z0>agM4^`lMRlf*V6R=SZ^)*OLmE_G^j?8*Ui9cMJpC{_B{QDg46?{V0YKL31-R&Cw zQQek8NqVA2V!A@HWdm)@b-gG_2U(Brz;@yUE_p~hp38I@jk?#!XRj)prrP+1|GLU3h?UOp^S5XF{|nL2U%m_m z2yekQ^jX>5weEl+!~CZfK<$RjlaX~rOdI4w9{}$7R3H1I z=H6F}QDWtQi7cm+ISFqWq)o~))$H;Tk$G67^Gw3KZBAVPCHOQ($T?7i*rj%8Hw9gT>|_A zFh47QLqirwnKKOwvS1?`7U;l6R2VqOC)%Uv5|7YrzP04ni_0zHL$3K&X^ultRy%xf zvyGDwRu{uWit(xr4h}B)m*|;}>_==l;YLx!E%8r58n!n+(WH1jx|ORda8!4HrIp{p zNp?lebhmcfa-A^ZAGMrG)3`Gyiae6CWA1Imkt(=@jd-8;2Ms${jRSrC-5ws=M4fhs zvAHnCAn7(h**e2m96&*wY}lSFFz27pwEy?bw?-cq&=5v`!D=EmEK)OLlOkt#;Riew zo!cgEdB^pp4LL0E=FeN_H{t~FW}1C0l}zYhoatkDKJ4*t(jVB5+#WWTbrmWkbd?e6 zsw4*?bv4d2EZ|cq^-5FRH?+X)oJ4DZ{he)19Tj4K)2}8NZI6C{pEj(c&PF+&-+qJE z(wi@I6)_n_vKDNP>HUph+<}_KsCt2U5w|@Leb7ddL**dhTV#?37i%`1gCKHs^vN1M zLq@J8%t_2*tl=+osUQ&=-lC4dx@F@oA+wU8VXcd>hm6o#h1e+#Xxqo#j^k zyRNLZP7j#L(JOP5BLikCo-E{M)r=aY8;S6QKJiuh7H6$~(B1uN$Cza-}Lw}7J)|3iA-8$JYu7LY)LFwwU7B{*B94{ovrscJBq}M z3zY;&lO!(;yw>mRH#W23Hw>L{dP==tpk(z*=28^eYa`AG49rB@wU2o)6fxYQ*X-Ov z^|$F%rwtqOI8?6=YRjq|s&g4>Ccm);Um0ccHpR_pMXw>jP|0OUOPueNme9f5)1pUo z2CZGAikQ|FKiS<)48~O>mzIGKew{k{i>;D6~=B?}Of-aNmie33Zg69)02P;mzvXbMV-2W^!NZKHju5>#}i}Fw&41 zKsP{`iQK}yXDuSk8y>zMQNvVx@Jy0>gdTb9uwrP5_#v6OqsrBz-^q0`zjnG>D=8U@ zSp)5g0~J)-B`Sr=vpn0Y;}F^WtC9Og{Dbdw1iCB?;wT z=fRcnmK(E2=hg@7&~zDpBBWR9z3=0?|1UvC>& z@}8$pn)gAdmlu+%MY478<|vuZGiO2BKGq4V>-A!qLgeC%k{P|$`8u~)*oZU*0Tmh zOzZ>QmIM|b_1pS7K$I=B!H??-;Xn1w>C%PXQYjaTY9EiR<#j-N)(96x1q>y8 z#UdeCA3Yaly6+ig>ao#+?e{Sg+0PVa_K3mHNab8dAtCFvEbi@2g_Ysb=*|66(r0L& zjW{vdue#>Z8!e*LM?JzU;P%Q`Y($dVltpfZpxIta3~LYG!~9xM2oGa&#DjVKFf%92 zunXEexK$KTX}j+A{K02pdgjJ`+kwMzZ6BhN8b^WB5iz*4j=RDXZzwBt<8G6oS01a_ zxYLB9-P^{b`dzD$!2CRw#Z+awzfUTxlS44i=`-`!27~8Sb^6}68k(8-jaC$V#BkD^ zXizG@5Wu)49({l*Td)u#4zgGrGt0i-m|AjAt>oe*`d8cD7>VjWc{`5fr-gi{+JzL~ z^{)i~iQ`+`ysFFQ0X5CdjNEC>9yX(O8b?~iJumrN1 z_@qCYj=ZpQr$9BvyR&|-GZtsiF6QqSchUNg~TwNn{-1J9`6hj_NI zgC^-+8&Ms{*o!Ts8xL*ncb)f$Puw+|!>%-Tfid3vXs08|a?|0lnTmM=O-!;RlWFb} zfBMa?W2^fS#0&@b5Ch>=TPe$c_O=;$l-IFcze~$^BGA}emq7^s7NxFFMWT= z*rBlhwZ%Ghr>X8$1LufDjX=UZxG($EIl}7!k4bTcXs{kVTs=5^%+8m`REQ1dXp~_F z%=K)1A(Dur%MR3rjJ>U#w(d$`N(ur=adzkNo802a>VSC-d4^{tC*&rcT>b*8jlybN zh2-}#GY+t0cAjdHig#`OZx}f@x|ShoO|xY)<{aRj{P})(wJ)|IL4FgtmyaXSWS3=U zU3kt6Es04FxH&kl6@Gtht`Td(2x}6fe_OezdY3LKe8RC!cRVTvFQ_8+&7Ql9D^N(3 zpZUeSwG5yq_6qh4eRCmtnAzluXG+HsO*C3?)yu*H_eJ0%^xsNUhSi+m7%j#;WRB^6 zL4D+^3APSnqj6jD?gM!N$>SekU-yfD^a-NEw)hu#rYwnc&{6OUt91Q_0UeTtUC1s?ipAB5s4|Z(a_6O0`H;z4@KEBhePds`j z3^CSSE1dR&m{|=^1A+&sfD;AYBf6;6X-TDu3_OEcX$A9Os&m%@XKx=Nthvb8+|!^) zjNcQvT$x+lVZxPlscvqyaB|sWv?cP5XLEJ!JjM#Lv<0OL+1aVAH8l#eN(yof3vg1^ za3CUmyzE?G=#QT8+)|uODiHD+~tLvhxHXZ(fGN}v|;0h`N34tFKunZ z$_vMhoGB0x??MvabT9km4gjM}+6fh{RrR6&Zc^YKXcD!fnzGc?oi4=ctE1JIcpVbW;NVX>%n2b}@Xeq+% zv$u$Lfx+4q)lm4it=@H5U61ka5aS;k7<>+nP4!#{O?4X~Ji*l3f!)i&%@3|ByXIcE zHWecdJdep_iwKf|h`N3Zec~eE&2ra0j_R39_WR<`R`ENqhWGk7!h>5*Z5=aP;#q3|$1Fsg3BhEYd6uJhEydkg+B9?F=YV2g( ze8s|2B_+p5Qr1dq&OLW2e2i>6lDuCqy8RR*NqFh|6J5P)PXU+m(Q#**IP^?s^|EWO zscrZ1j5f`hfmNy7NUYTxs5w@;`Tn7ZomG(*@><@o)hAR(a2U6zMF)fddsp0dwPai! zyfmkmC9BueJh}ULD~-U|Q{eg7H>dheb*8Be>r)kp)SQ&AV3hy2V3br zaRezIV_vg|7c}&Yy)1dnS9#ugSqNT5G?J`tQN3L$F%VPDa}15hLCPqrCl5N3snu5{ z=0XPFq-LIs1-t(EYJ@g;AT?i|!+r%vG(`ACh1WHuZ85(29V_*Y4=k+*sB>xdk0KQT zO_XHOW#MGC;Z(N`F0fmZw6WdM$d;nqN~#MLTCzjRNP2@hjGvkn>w|^dgL3L6zrDj7l@t@6A`Vcg*^CZ%bqvtFFjps_wa2AUC_jcMQpAcPa&em`S+BfOMo*AC`hluF5569L{%=C_H_%2w5&2U3 z`dHVzOp3qP_|A(JS9p5n)4RI41%;!*QNXw8RdYB^+-x85UL?iHV%oVO|4+zJs>bO<9%^0 zOZ&>(&lHCP_n8yyb8HtHZ_hssx;NqCHG_#=(ljw4`xT}B{6%sU{EoU>l?4WjHA1I` zo`K;hqIVb^92_txqXJS0LID73hd8LHhk2wctBz86xAKNJ5qjpBS!WyPRa4c}n?}!^ zDtYwL;5?Ju;egSP>|3f{i<(#I$Mi+lHh$fy%9UIE@q@zh;fbp1n$yKWtWQ-F;ebV9 zWo2cgYZQhS`n9of4akPbcS9$ub7FPz;^IkXr?YugY-r8&QcuZ$cT^@1OSk4>V|1!a zM9YYoGE&3QoF@C25DyOtbUq11VdEf(P=N^|KYsB)Rbu>3*d7qfO-f{Lz@ib2H>jsF&x1J{55MB3_w8v6Fd>N8SpZts(OL_0m7&e z!QNnYsr&bD#2%i*K7r{Zgs}l$kZ+c^Nlpq(vw9I=ik>1YI&VB2I0T3EkQ&T3z#z|P zq@4}DCk3Q8kMux+?}iEjnS$d)-AVYnOZwPakv3oqO5v2iMs;i;u~j__^J9Xcy*%v- z+AEMy#{fZS3S>aR&}#=?7YPc~2q-!>HVSWV?-U|}_e88BCHMtpjD9wpPB~Qf=pvAp zrl%TDx;~3oLQZxDe#62l@hScC z=m4>NDA-(%r^Zv9Wo7)Kha2|p?DeVlmWNl0ERqc;EPQIbPt=vm6Go)ALXXWBFH3h9 z>G2=3unkLa;{58g4RxM$oirJGyg+(^lCpb(m1vo28yWF21Y{ce`uc09q5+7#g;0N- z#}Gb%0!RvcfNlrZ5(<-!xIpJs=DA@DXBA61T%X<1%+k)($mHH^v%K2-+|Y3Ha65wb z-a|(EsqnnV-tE)N((4Pc?~S*Y18kX?ta^g#UEIA0kGVR$hMsEJwzD^1cHkgoWo3o4 z8SF5)0%d$*em;dA#_qxRJN(>^!?VGu#h>KT(v@<>9P|cTU=3$L*#eDm#zYtxa0(V0 z=2WY~V?fv&Kpf@;p(N}G!0=i@vC;?g>tNuy6|hBs@%h9QcOAOx@EA!@2v-gfPmPR4S)#y`53k^UfCcX}o3NXb%f!_>k|w7@v;)ap!hB&B44VxW#&+q6WQ{GG+n zqnzq>Ji?=o7Zh}V|DHA`x}5@2g~~`}D0H(5o2~ua{~UFTjFQM7zx?3)*Q4s^r)C!@ z6JDNCjFJyKa6-3yzWS`2|7U>g^z=;h)(zUW< z;&i6|OzEn*t5*3t?ejqe$+E_Wy#lX{q-)YpFQut7gDzut8On{S0w`Vmj{mj8TkbVkpkK5G^p9sa~a^#!iaK7 zAXkL|`QpcTEh~zSm6aTC8UwThE12874L$ex^mJN%8XY)22q7>cgtuuRjRH-!*sE}8 z$QYq)02Kiy7m!=q{Pe;AcUKTt3u`d%dj{kRA)rg}t@>NK7hCA&Sg*Gb^)@8jGzxwe9=Z`lb(BICh`$=OKan;I;za)_%imo_1Ez zhi2H(&T10({zNus7!}zxt@<19ZXH(`7NR^QS|d^>$baMLU!Q4J-HkrK?UCDK0wSS# zQB>!=qZ%WX;_giJ7{iXU_Gz!pz^TU^qdy23dc32M_%p5rU+DO!mj5XK%NL*d`YeZx zRD+a6bMI$Y)p6=&*PNC*pqv=yin0_lZvyK>p?Ht%e^#A;TIt<7vtnNQQAqS^3BXd8 z{w?e?lCSw7Wr?_jY%b8JKQ#JG@h7U9yX8i7BfpRluSNfR2}Q+I1%`zmBI3_{-Z}`l zzI9dAGq0jT-|dAGbegJaYO-^d1_Tj0^Z1T)Z!|EU5snYI00^(&M({#Fszk)CMdtEm z)o#~@w1D11f^v3tMtE=tkJ1K?hF}I(2s!E~IXOa4M@@l}4jd{%9fRZL5S<7xa%dEj z6#aLmfD8$Aw*iy%*RLr+Ux)D5QGGD`^z6BF%^;BkZvq4{I6F@Yj+WNZ)g{H7iYO4s zr0?H9y6ZEo`}i0N*@#ue*p#x2aPm|xPFKZ^)g+1=MUx?Af*zsxwbq1Bj_|mjTt8xB zt7~HnTiS^<-x)GkaZOfRnHm~_4=y1+ z-ZHAgpHwjnI{y9HaZMdLOsdDWc`i24Ir*o|EH|uf{(46Jr@he&H=XGbq>G_5)hfPs zZ#w+tqPR?*2(nQ-Mg@jEW`xy+ZYx=8*eOlMAZ2(w5c6muoXacT@Z}x@^F(4Qp@^NB zMgR8tRouYT%Y*`L6P+iYZQ8}h7>Ft`ut*u$!1$9dVUSrLjQE3rJaFdV$@8M3AjWy3 zoOR{eH8L2=lBJ75>>Y$rZ$Vwa!qosf2XRw~3Ih}o&~}>wxg5hlcxWhiQ)+mcL!cr> zIJH2GW*f5v_8?GjgMs2n)diFtdQQ%0cvOZ$#VhYXFBc62*fT(O2hQcq+qYXmUnKHa zQ<5luiK6Quq6KWzYWU*k_jC~H`}atzBHK_0ZFa#s_I_YQ@GqGa-Qz+?-|vfVYZH&s=4OnaS;_eM!_78c)PQiNDyw;Q&QPtZKe z*V58@^5Wxb(+7mCZIOe>&$G|{VuX4ab#P_jrCf-V4+g80!1*4ILnS1rH8@En8)i-+ z&!JSu=DN*P=2bRXd!{fNZs+ACy7&-SqbW$Z5e>ty-@mgA3tZ68cBW=Wt3VdT8p*%?zn&1DRuj6o)6%=%gk)7Cu zz5)|j3WrrHU?-@DlKPu!c$XIGI{?REdS)u(Q?s%yD|6QUwei#JKW1qHwN99If5H&P zdlzRUs{GN^j)TW;o0;`}XeFCHBbRM-QwUz&q>-!ar6U2{o9U&w5DOmMlyxTF{D=KL zmN!-TeYKv?#oGo|=AV{DQrfbxC}*Ko8}cN9uanBjDV}N05xwM5so{Io?xb6^M+$+= zw<^&FxNDN8$SBH3d!QFj#`}Z16B#!=Z>r;e!Ff*xDI23*+}&Fc9V1M1n1Lxzp|Bp1 zH6J^1N;o=$EC{lL(=dmZA{I^&A;I1ggULhO2xBi(@Yb8JZ$^RASm8X*4iiCXKvqr% zA^}8636d{1(DVR-H3|rC43KMp(CHgYknQjf3kgAlV!#J&cIN~Y5#ixvENILSt~Th3 zntuxl2++5UN;wQrLwbU61Wk(H;{VXnG=HC4vZPDBt=2l{Y(BO0BjRx1oia|->joA{i7Vwh#X$jEqR_fe_v1ghK}>D| z?Ty*&eokJV4P@MK3Q3s3(p{}jk76>+4pnf2;nBN0pVjUqD7j3*{QA$I=_y+eV~$Au zk;gu!|5iC;&+X9ui{13$s+>w!v`A7g%s2VRJ9(#R8sqfk2*3{6HMZwp*%SY~DN>vv z^3iwPTX~6AkuyP>4U(5))<;RTCEtZ0N3LRW-C9RhU6E8fJ0VPoERXMpdr(tprU$du2^Pp z1vd~Lz5M0NGS^*>54Z9@gGQO2J)n-9<%5O`z;I<WSI`;~n!kN4W>;GZsNNH`3XTx6Rd5^PgWe^Yf%$?U(cQF)x5 zJF4<1<=d6OndPwGZHtrRG$9FETT{{lIVscu35zzQqexMpYHM~l;&sI zy0^!x8m%SW1=Qgbi97FEe%{U7PCqxL%%A9W#X+t}#heOtC0WmR5WO3Feu|W+E|*?y zu-O&>%CmF5WT-0#2H5 zGx-~hp%;l*n`c|vXt(0!<>hm|q^QQdT7wSXJ00>C&-{(N$;|Ft%uRzswjOF)KQu=L z*?9ZJLj^b-gePPTxa4aG`@7+R zd2nD+QKFwCiE$&@JrVQgnH4xXWuVk^QyUyZ8Bg!*$nC*g=8j&|`dTh@J{O$R(Hhnx zB6;*(PP4q?;=zGp9q2;q0`^B-?xKPyx3;#XL8vedbF8@E-^iV)w#M{^dDq&|mdVD^ z?xPw5%*@R81Z3XD;_Cp4$U`q*di8^Utu-dxO!s;rR!YRaXq{w7dN+*qyy=&8uo_ePs?H;3Haj1-}4q zZ&ncgHSh25w*%-WQ0%j!QP3Gx?6`z=?L+ID6>%m%;<_|*OH+dit}+lwPh zPTg|C?Z(s0E?H;L2Da!icTQ{f!92N7FwUZ6bmaw!CpI{ZYP5Zb=Ll*)g)*V~jvQ^} zthhXF^K6Fu*0Y~FyQydgS1l6O9jig4FJ#^Bm*vT;|ubWuOdw+Ogo_DG@P z5oeiRuYzLYj+p@~YDiga=#$8%zAj$mczv~R<#rmO?pAGqcZU?#92?UY8trek$5>9{~DuZ#boup-^;RW4DI2p zQJ43OqcgD8SoqNP#Jehhf-rlB)5v$$OC#{c6IN8d0Xv-owi;s)pSQ5^POwSuNfq&D z|4fY`2^y^Eh%;6&MXvtb`SvVtg)ON)oo8Hf^RALI%pUG5ZCr~ls%x6XP^ra+O(KJu zqC;W%OLCQLL|u2{*cbbsJOxc~|H=La4(?YkMmOKHcg47#=3izp}MZMQ-WoEx?Nl?NPl~32#6fd%b4`8aRFiUIwvg_68kwN)aK~!8L*00?Pq~Hv2 za?IZ>G~f--NZc7dQJ75FX~2aY?331K6)G{TWq-OMP`=S`DH4V5^vRy zfz!HMGfwF4&c%lFCmrA=q;D7nk)cde&}R0I&fi>LQ?yrOe~jUCdp#+Sn#ri>@!-8^ zonBKEW3J`sI(<-z3+L=58(A;yFJBBu!icfAJSPb<6=5+FOiSX($Ux`VuU0RxR0`U? zolEr(vms&iDQPWPFuN(jmCc#mC`| z*XFD5%fFj4RR=S7GHJz`l=|4mIy>jPa@vCo7jK~b-90)%_#O=W$ZOsETK%XTv!UYV z5cw%|^o=YYZSb&?vX@l!Io_iQqfJkj$C6F?%&M!}24mIb-Yc=MjXw@s1!?dni?(qQmK5Y>I`rH=!j3et8R1?R$)+SH_*Yfh(%RzF!c)!3Xhu`_l~3I(-Dzm~3~AeD=dmY6`}>5w3rA2r zdUm;lxi|fblG9#M-f1fDFT%ZqsjE13H|ww8m$brf);vFsTW4(+ryd?dqo%aqJ+=5A zQ8wakPwMc!T4V9YK+Jv|BnY(k2xb!9!h#eq*4F7FXN9;wR9bf`vw{Nvax@x8Vct^L}Ck%7g^ zb5o=z5(~}D%5hrVYYRht@k#m)iv)6p00_zsrFXTQN^XxA%uQ%4d>#n1NCNU_$VBqmfOZ74cM|qkrqCla!gqa<$^U08`hV1 z2zKhaKLQrS#6jN4LL6&)qy1)=_ag7-i)D-8dV_kR>kEI>Ge@ij&hO*q@sq;+_ zY_-=rIm>BQl#HPUsqJz?LS3p=f-Fg{3KweBr(rp2f@4DtPLCE@ zOH)D25W!5#4wE-zAD(x{J3(1t~eutNT(T);Sb~7ZMDA)?>Uz zhI;J&@o!ZgoJYO6^!&FonH6fPZ>rIjXO~Jzx=b$y=9*Ywu8~ z$1Xijq`-J@s7;ZfZZbajebj8~>@CkZ$YuICc)Z|jHkn5($)qUF(5V^`_yb41HVU;v zkpBbc^`Wj%!69-elsO!9k3xL|hXKE0g>yqts2W&U6six54o=t;h4X(^JFQkqaGl80)lSM~pYy08Dy_p+^IqH9bo{$WxAE)%78O;fc<`Oee-1t`*y#Q*>R literal 0 HcmV?d00001 diff --git a/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Import-idt-file-1-chromium-linux.png b/ketcher-autotests/tests/Macromolecule-editor/Import-Saving-Files/import-saving-idt.spec.ts-snapshots/Import-Saving-idt-Files-Import-idt-file-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f93a34aa3112ee34a644656923bc39a0ca1beebc GIT binary patch literal 5061 zcmeHLeKeG56n}=M5i3Gyr!lNz3xk~2_oBm*YG_*<8={?XI?SL(2pMe24m0amGD_Ml zby_vp4dZ)IL#&TdnT*fgkeJaJX7bV4XX@<#{jull*>mQf=e_Uq-sj%?Joi5L{_dN7 z*wjfe+M~Bi{P}yLbBx0J>>Do*w>*SA`?Q zOCgas?nHu_E_wFpj$AzX%fKxc^z+m*uAiN`g_RL@2Wso-otpg}i}tV=`i5L$YY_aS zvvss@ZmoXaw=YERPL0n`#HjqQ?1{xE*>sy9yaaU#q7su9m%a#x_Nx+kLKc4BG4iNc z{v#^1fxDFwUyFeR%}W~^2zICi!%=4g0gjtg4B-5RbPWL9Gq`8~j6KFx0QlKB76rh5 zCA;!ultG}p9?DFh%#r_EIry=9#0UVkzX5>}H}SHIUqqNXS8hR?3%SB*67>QbgWAKO z=&_q$MNUPk%nIrA6Mo;dOG|F zazJ5yZv&->QE^_h##w5@9t^>N1C5y)z%KD^WYj^Xz?PRNFSS5gOOyK5L4-*xDvVAb z=ZHJ;2?QtnGBT97w8pT)fB+X*5QC_qHNyd1N>!v24w*qH&p_pOqGC|#MPE6#VA&hW zU*3xvKd|#t3*`witiiND=7;ThS`3DG(vK;AYDa36a1BG>@eCt-MbeX?pM)_0h2x{n z9h`NMEv0T|L5%n@;`&rcF0wX5d!u3D47lzyuENzxdD(tBQ@Y6N?!ecPb1rWcM6`UQ`+y1tcmcQD-?c_T8Wt)nxqXMR*6;*m24RBjkslg~2K4@E1_z z)M!1a8^zt~2W|dL)Ff$hcq^TGGFT@br>0EW85A~e2EW`rWR^cUR)#WuHN0%wEJK=* z*D=p|Gj{aUh@`O*OAmNU9AE z?`2)ZrX{b`Rn^x!QJko;b7L*d0#lTGA#`CNE#KUak%j+yp?<8yHJReF`j>~nsz}KhL3xUe(e?COHi8wo~1%VCoMgbAgq>kgosGpa0-hg6T3j5 znj+MI_ic1IetvnbZCZs^o(t8H`IKRb)A_lZP(E3Q18i=e znLZx0f0&|E2P$1*L{C+|=8RC+_>aV078QiWVh~#m;i=7y9!?YW6lvF>n{-a{1!RNB zHEd%yLqLQt5g$VG>~4yEb}%SXsIe-tr-UX>yn4s)&|-Sy-#-kVHAE$ij#$O142(K0R$5vY>sY?9}KbEjB|33BzZICR2M0~ zf~T7%A8?3&Q^x9Zi)~*bt*0-s`c!Grg^WZQSv9! znU@uDY@Vw*$i&7po?!T(#^2oE!#bqDsXrkO$cYm+LQb(6kpXTG6y^J@xs{ z7I7LtvIXuvE8L3>zbtQpn;ZDeG+I5?@c9p@BKZl zKHu--zVH9we%z0{Un*X&=kt1A*Lj`iaUREUJ^z!rDNecl@OBCc3QCDSZ~*z~K&CJ30AZYZF!1MYc*@JH|Mz z{)pKyG;H^d)eREsSl01E2 z@6pYB*Grr%5OVoB%ow2V_2bWq13mqD%Q1nu&VV037Jl-~sTM6SOzqf+F;EB}(q$Xj zK>kJXg=QN|Nj#IZ=VbI>RLex3g*+BHf@S<-bz6c5_sX@PWm`mW$n$E4^U9}(9E_9Y}6>l>aO2=4?hUGq+-k{GPZ`m*tl^$JAy{{d3sox zWj9mzdS=eY%7}%o6ca7qj6|s~n`AzgDSu`+EJf@{-c;J^*~>n>*KFOqn*Nik>scr$ z#%WC34l&VPD!*dA>$yB0saM@W1RMgPV2pYG^2`G(I}Bj^;tB6Sdg3Gz_bA zO1qgo=HCTRbUu+4A!A>gXBj@Qf4@)EYmB!0fE#`$-15uV)JSQtg41ty9R)LA?zTuw z*kcuZTK12zV=P;0FD66vm%h7LA~wrbw$9Y5^?7QgyR|8HZ8GfLg7J6S^G;uS{giE= z*}CRliEHdH3e(x>FW|FA4-c*mPn_)E+-i^EHt%Qa;o9xF4f{< zu`QG0xjFa#%_7g(MzokmRi{Bn(hv+I_!i@8+A#up_^`U+;CLgVc zLnczkn-}@M@AX+nvDGDiyZ&l6)9bLaLkS_Y-^oWpzO}@3OD#4EZIr`0zRVceWUG74 zMw?c=w|PglcF&@c1~N~toc?s@;`wI3*=hr^6+=eBb!qg6_uA z-XGV0q^D14o0^1Bx}LV3vs@$26o z+vZsUvt@5eY`TZUSulR`acgVI{qy$LM=-jGLT^JeV`EdbS2cQU>FsqPw0Z)GoyT$I zYZ5b^h(0?yBLT|q8?kj{6zq5dd=_4~4t1)Ty2aCYfmsbt=mH?)ugXuA>khH#-%+@KLwk*CMtkEGtg??7{Zdf*r^Vw)#<*EkfY>S-Z80wGv7JLVDih_^5 zMdbYs>67TUVrmz=dX-sFP@S4pL9X~YHT7Xhd5rxoI|qlf{~0yen>Sxoeh`Qm9v&7c zfAQp+^jPSS#BTNqbyZ~#;n!1&91(meM{*9Ec!-5X%g20r{P?kKa0s64=xg^UPgpKq zlza2$O|)#p^V+&P>&ZVqG%ernr_74)Jp4V#TA(KZVJ^(mS25xgXgs7h`T3(Kt9*2L zw)GGTKY#nkZ`3sAs-2r3?cKXqF3Uojj>qCE4TpLvo8^9s-mhl5(pOCMXMQc(K4+u2 zT*}a+;H9ahwJihpR^LiRrD$Yil+;I;R;+4V=j)p#wKY?Cx87$gmWdmG{r{(24dL zOUHAFZ(Q7tn~LOrz8W}_o1H=>-qeN7{zZsCZ&y=Ic4z7~wT`FU&*#)OFwZ&hEIi1Q ztfrxES(xfeGwI+R>Bv!}Iio7mTjtyFQFKR#O`Gxa=g%jzoupMW%`O`@#W#!4?LkYslLJ8asSYB=ke~#D+_(Wi{%=tzx=iC6u9KIrs{|F_v;n-P$7ry8shSw zQDY@TK6{XDO+`pIW~aDqu3366;~ukz7A4+y2L=SHmM18KmBhrJtgei?vK~J!V%u*1 z^w+OnR)2pUGVaV(a-17&@Rkl^yuIC{&0&c@kzx${=m!2OD;x%9W$w%=Q!7x(dAP9+6X&B;@vr|CylX6TDA** z>?#+n2jzPI{F%S+I(nUAuv|sN!Qo}+)~vn{j_T7A5)|Eqa??l&(Mlh*2EEBO5d)hW4t|U`*`F zsn^Q=*z3}b+k657qDnky%k?fA6uNEVwH*z#8Eubp-$7%rG&}PA*)y3q<+SH?ikSNR zm01-v$C0$>|NWQ5&p<;H=`b^R`plV|@3~DI-*FoH`1yS@Em%pZG1GqI07n zSV-e36@!AN=0|m>2~q2j)&|*<#hIZr<2J4|g9b^jRNX52iuc^oF^UO|qa8W&amt(| zco^2^pH5Cr`gnPLeEaqwoqz)-E>3o+F^*k3Z>o|n+iJjTurV%X(~blERYGg^nEyCD zV$AKxo8(stv3Ek5r2O=Xo>21I48O(7d>;wK-h1=<^={{hVw!BHh2(c!#>#pv+sv$=vdSkzj#%mb{MDDvm z1|=4Di}LWr#H?Hi?~`8PC&XV}^E#uJ9WEcE5T#r7!C}7VsddlSO=PaUe1d}$<~kjv zCnhE^p0|s$BQe3Qt4g$7Mu|Qd+T{m|OG}3WbU)l`OE*q4YB~SD>oX$aw)J3r4c}O9 zn6%)+RYbTvlJ3{9U+Yu#Z@WK!{8`HX3})fIa;jcvO_;b!`pR%hReh$pR+@fY$-qLe zptJH+UsV$&cYDaGU?o&J8plbMxOY6s03t0*>94pl^ib(O%J-qha;UhBc{ch7#;yQsX%orC+;=Q-LANItN>k13awluSNyyW$W4I{rp)^CA1uJPOIdzMQ@p3li}CL+i-K{iJ^BuLkc5p8UBpy z8u_XSi#>bxDCaq(W!sL8T4$#Ht^9WDq<56eQaBrc!{u-9tNRDiJKNWO*3q|1`mzjs zb>C4|Rh4nbfVz7w*i>D#R(vpF4L>5}Q2gb|gu3dDFF0e!VBXC0bfq{JyB? z*cg{5Bc=~|h~<>h9XRl57ai~CD^GWoRa7*rt}LaQ{}!wGAfOT^=8;Uh8=Gfnav_-4 zx@>QwHPcUgw7z%bMfB~+SG|38k<#V&&kxKrX>g>gJ2>!?rjQ|dSC*Gkt)-!kNz8uA zr1+b&e+I&3I8=uokWiP- zq0NsjV+B~4nPnbrro4Ff3&s1P{xa*lc9z4vTVjukh{EEX=1*OL!dStbM#~ zU#e-BU{2AKqOV_%_yzg<>n^mknJT`>KiSyS`0n~icX#)JG1oQ6q>;diS#&|Uzi%vk zKVYfrWZc0m&G`Dx(KHs-*KO+hOP$ZwfdZmC0f`6LXz zMS1yc1B2)e=aVN-4o>!#^SZ9)_ReG?TlK!v#@6EFvl*_&&#ixZa7SaSE2rpqq?>dM zdM9@T@U%2ZrgTW4#W`oWsn=vIE^p~ic9=$i3%Q6+WndJ_uKE@#`g#ODr&h^Ml#kES z!Gi9MYe)#GwqxoeT?HCD4zS6rEY2V|v8y@HG;H6tt;UN<%4)j*)<|cb3faRIN?t)( zf8QC(0fek{t*r#-FOBliT{06ET3b%(bX{{UE-7I-efmf8DDZ%9K!AQqAZj>*50_IU zbpv@sfw|gdxcOF&?O5aAiucyPzHKAZ?7F(38yZ@Iv_euZsoKNM=SEsm#0Lfjl=Gdk zikbwtxD=XHEjSy{o%Sy5jd$M#;>TOlb&DFAn(f}Uz^sX9+RS5 zMM~P@-}k0gf4=YGG;Wof>#z;(_+&Fe7z*`OghV%>(#cO1+BiPKHH;z|0a(?Ow z5G=^p*z9!(hK5+B3!|JiW=W3YvU7F^y;xN*hCI##wH`bX4Xh|`D zt;Wo-G34?F`Oh+!NwGy(%O$7_c+Qy*Hz$dB-)w#Npti>Np=zG?Yu1eYlMUw;5B{wR z)|l1gp?J@KXxFcbIM?Bs?$);S{rgp2H_0cl0J>@75-; z63_XLHSqrN>ow#963*=@`{v!4!8iRl?v2f8YEGGf_(swowNt+7{An> zHo0BZmpl4l`rG2K1DEl8GY@X#gxZ6jhK*_80G;1noj+OGDbSd^P_i4p9i0ll@%INE z4?oW?SJVaOZw$V#v%WHR^QVpGXiOFH=9$&*}j|ql`{tcNXoWZ`JODG2Z^f(Jrrp=aZPwoB*;^ihaWtwQhKq9rnjg#KJ_PT2z zD89_8>c40?{7E&{x$iUkK|Ru^jf*nfuBDbgsz^Gi!jEj}6S=1!fpe(eZGmAeNAjnq z;bT0v_fiM(&B@~;!UHV-rK?D|8>6lF_l+3h!1ua?lAC8SDl^{y2EaR}4@z_3iJ4gC~;`;Rm|`pmb4+amtDtjyjkA!O<<*tV%eoRj!0)cTNo zP4oeJwypeytzx+HxMZTjD}1q6Ny+&49&lZOdB@Iar+vg?Y~9=&>LG?+1Ahoh`#?l> zWph=X>7vsDWe>7H=^7%3f_N;&67pu>k<<>1*P_~oEmH5V;i7NP?>KAZLC2?nVpivK z`u6rXl#M&u+S>Zl{Wa=zYXKK@Q;~%wwX4BUfB`^ zH0d}yTw~p&rl_}2_-Kpu^1OMPUd`7@Rdw|b^!9)DAY~?0XQSK$$|#zc#DDzwF_(80 z*-Ia25ja&Pw9gie#h*X-f&Lp~CSN@F^lZX-(yRt#GtyZd_`wL!laX|rP9tc_J4}D^ z2dH9Oa{3f&*N@m?nJqu0Cbb)vZ<0)i<8&}vm-$Wg z;U-zp1AF&srfjjT`XF#V;5yg~KgQE1Pm1+b2GwO*_SGleyW)(x@%+V$+gJtE!6>cL zR|DBY@vK%Rc>3b6?dY8@8n<3l%eIn0%~8PoaGA7!#)DS`@hPH?dDrOGlY)eX=YPOA zyGlBs>F1k4yxD83OH2|33jnfOp?Q${o@dtM*6A?Bj^@-5CFy_Tc3(V7gp@xE+OJbL z17!eRInBC-pZ2!#(d(YSaDfwXLP^hm2Xo5hS=x4&^w}T&?aIyNYY(3j#@NF8nFXLP zr|YVdeC!?IQwdUZPk8blmync@xb>dP7(I&yTlX2&Oc~HCav3Ha_1V^js3%dbYpbnU zmXU`!4Z^3Vt(Z=olJbf#SalGX?|wwECxXs;s)9R4v-r7khDp%sgr_SrKffxTJjJK$ z(+yfR*Oi&W7j$0sW}zMMpchaEHmOEn=^i>CgvUbhKaHGDYBPCm5_w=@Y|1mN`FnbL zc4WQAsI2>EvITu6yp`A@Aan?=s)B1!eWqofcA#SLV7Bj$L`8hgyq3_Gi?-f1erP z1P~@tQ&W>|NW-#%6X5BVon7Xy-@mO_m+cSj+zeEzk6QxhGIQ;0rNgYFqwp%cD}$@d z03`6Tbu~_0ngR*J3ZRQW^bDu|5y}@2S26S#ZYtw(Rj_zfHe2jMdr?oO9|7yZY0`cv zPNP5_>!Oxp;~W3D7Qq*dGTxeI=ua}kfXJ31Qp^* zec!wZMX(3)+smSxNsOHuN+=-shpf;*T_k%Sw^hGPoKlJy_N_uwyqfh$T9boSJT{eI zr$Jba-nRDHvJ6}PS=D?eC4%Rss)WXBCe~3r`0^)K;BP`tNd%`)0GKeXh!x7ab)Rmi zDUTt8kpP}4WpMqhp63AeK}J&YIYyTT5bD7or0&n5;l~JsQFwm1`RD!fKfpQQQCqXE zV??f8@qPb3M#FVQ{>HnDx3Fgv;#H$?A=R3i8V5uZdmCwpJ^3e})z;QdqXkew%#$v% ztT%p8dMBefyWwr_OdDgg7@Z`yoWDSjE`TVfoHNIyJ zcTG2I_9N%MbOAqNh|+Uck2{B2`@uLvdV91&f0*Gov|U zgNPu~f_5hk$Ejo(bmrQV+*aVS!q%n!0ktA2DXFZoQUSCalLQ!pH;jZM0bWe!Z}fE> zcbWWg3VCd>I`mPM?$LC47a+S~dQV0sCZ+*ATH~i1@7eNlbwExe==^*eitwU2>}D)g zV}bB?b}#|x_~TRDsjRXSWCGP_%*%%sU(`RR&N$Wd9T7;MNtsy_&EO2UUYve9JAWZ* z;jpatk8nWG9H;m~Mj;^$_@32(_I8I!kf>kKu=z;cRNb2GCFx&bJA~HZJ%u`$Av9_^hX&oZFXLqin5e~Tg8o;F2J>i2NgmKl?U&ef4;Ts}nCN>-XANert z|1KYHHcTM;U)90|v%NZyIqYR*Q<%1>R1>N3kj7jy`60z>X>cg_omMrBO`WwolTFpud>b*z)$&zcoD>yR}gsox_ zK>xe|`CGFe(i53ZRn|)&;h&<~$4{Blxv@c*is)9m><@Ewj3hDDW7g~{y%UG@Jxz{M zDM6}AEbj`fJK`qA*X}pFim{HLt{7L89f=VhuE0$be{?mKL-1nEC5mCUByD*3nDJB4 zSQ=9lqW_ zzmSHsFSCfmE?s6m=O-M0Q?gfYK9SYm&;I!9D`Xn}vt(+9_{p}88dB$PW5+@zVH;bw z(<*HTcW#cnoWZ6lG_(T^Um#1|z3f>B-4$xRZAsWJ7kLa`H18-F?L6>V@6_d^?(JTk z92mhKi%?ZacJ?KCQ(O&v-vp~#@XIPJA^-XkM*{twZQ z|1kft-*>ITbA`@eg<5u70VZ4{{^s(Z8(EFU??2va@(%EdR@ZWC?&-((9D*7R6Iq$xI;KlJoKshi)#2W}N= zEAJ0i#8v>EnvAstIXgUmy%XUzDSFh>n(Mx9n@WZ|>fdvATU`Y$+o$|A9fGfk@bc|_ zr;4qkdYq%7+DKL!^^=agct6Kq2wRPb^q}q^M&IMlK2@_!i02D!a1fAw%J1l4Y$~zw zK6cy=jT?f!`rlJKD}(M1jU*Z(R9wgZc4owHylmvz$!i)QVsZ4c5bQ*X9r>Q|oo+nOUUQmg~< z#E=CV)@WG%dp3cmd3H9n|6fOm%xqsij zu)&6yAv9^ccH<#ZQ=yrb&hZ5z@daPck(xK`t|DIaEGUll(4naCa7NLqSLb`4VE}Ia zfSsUUsG-kvxh&m4C*-G{-g94W86GIMB(}!|Fp&ZiXfq(m>zJ< z*W>%yF#DcUqbuzzLm_4>WVeRA-l&oH+qZXgp5!3}Hl7EQkDehjHJ+o*_F*lt9CZ7H znNF()8I>ti#VxdbML!Ts$BJ37r`faT-kid#N|UPovgOkc_v#oQ!@QL#UJ-FJ&vVZ+ zGb~9X1WdkGNBSh=AKunRU+vM@zM;hH;7fX9wwH7mUJ|(yP)&z@s0hh~O(=)=>2r>a zB2^?|JY8;aRI!phtx_JlW;;WB6&E5RX^W8~wOZ*-cTak!H~=*Yo9_>AkX|4vyIQF8aAQ9qreg?;k+ z5yg-`U!`yFYT(;?>X$n<%DgwGWS)UWEG7-22lk~az@fMtD0gItA>(02)idR z*KX;q^GFaV-eqwha<354a4&fOU<{jBn=@3-xcxsu>2`K*p}x;MRfdff4-?iyi#6A; zWW~Zc6r!9#%}00X^69HU$iCj*VQ7>-YnS`^^<_Zl0o_>Vh$_DQ$IqW~AhwIF(cpDY z@!hy&5SF!1CMeF-&|bp*?*CCc^_#7^_={<-+;2DUuRccjdeZq3Jq5amK})i>!)R7t zs#%W+fTsjH(bqrj*TyQP)TbFLrkQrBdkQXoo*nBl&Dg1eWNeZ>aMHLnHL7|FlA!_` z>Ky|9X!y46JNZw`0;T%Fc~&VRGE&7a0gZ|C;`A*vjSU5^t`XtknW;vgH3{j-Yt>V3amUj81=#Cq_C1#bTOEHrF|!_C$g=f(`$gnLxw>mI3MBy5;{TM6&3~+ zuoIi9=wrc_w5sX$e03je%ScF0PUi3QjPZY##rv(fE9KZy^o?tX&-02b^eS_zQ^kKa z&ZdLJXPqX>M)GoPgcKyicbj(}3>k{gx#=~H?rKnIZNXFQ<-t%E`RINEt3zBwUo zP#MTWybk17?d_^L+RgYjjd6Qs&EzF+ZpF3?Q$?r=+vB*k%l6X=I^6+l{E2jUFJJCl znF?O>iQhN~(stFb<+o$rzzY@jBHk0kbh1(pt<8CH-GYUj(4HNflEc0b$ zf4J0L_=xn_SRMMjrO}*d)vVLUqTXx4`R)yQ3xD4i`?*fnh&w=+xTsfs6notvm%+AGV|FxP=w`q}w_|0( zJimT$n~ru)mbTm|bZ&86YBfw40KdUH9SEZ16&)X=1oZU7f=-#}Ep(M!p!=|^W>%kP z)BEAY~!#$&f%V;Glp1E>u8&OEb{|9J6c}TNY4&Ei<9{DT;ZLfnzejrDfUs)p2Y*cWqfI_pLAHN47;+xK)^vCY*QD8}0GtI;BAa^b8CPS}0B|Rz@I-z+Mf@%X% z4zNq3ZO1yv&S*_HjzL$(%EtDyCmEF1KZywnE|Im+*bY2pa7mn|XSie*Qk?_@RL;}e z+dJ_6%?ZMrT|`)x^9BS25E-Lx3MKYK(ypw~&``9PjnHX1jhfE}KUTS*J92I)-5ZM7 zwQJAnCRMjZMQ~2+huP$K=dQV#Ih%9`vpgOh#ghTVPZL^-qUk=%K^xkvck#gCLDkfq zj*#v@65Bz4b!cm{_6zi-3VQb7XRwwa8b4~biHVEj0j^^%>Y!4G`}pj49xvSTPS819 zaC!U+yaNrR$&fOK5?ohe$OF@w=HBA&ayReZa^sON={oO3qGu(Sx{K~taxZ8VKXva`Z z+!NBp6P*hB{p-TJ%m?y^8e$@$tRr{DKdbSDL7L7+G7Vi(mOd;G2@$D#zXK&vRCzvSW?s7S z_UvWxS4SrLtQV<4uoOVUY|Y&y z4P{mJjMkS2>l_fcFf2u4BMv>H5|n{ag)ntPm=zN`X*oF`lgysYd9$sCgUC=xrbm%j z<5f(uMAsIZ3Z@|@MuXBLX^)sM5);o#)V@4)VLv1*0FeJJ=NZ(0ezUqfC7n}V87!2* zQLrovVNwn>jUR_bJYjcS7s@q!{QV*;S z^z*%Ze{lU9pj!{Z%)cxX#D_If5~Q&keO1AV zP~K)5RZNxEN9K@#gf~dDsq3A`p$lRO`HRt{J`shCcwDeOm?VIN>bh2ExrxvY&j*4q zZ5r_>1&+__zO520C~1y!CWMMbzz=p66o|b#5(WA#2238&5Fvm?x~?sCIe_kL$gwrG z9;g)s%jp&Fva)#k#EC1U79f)9qvcr>)CoD>t{d$92^F&+>TF8tCPt##`^P)28(}99 zq2^A1GMkFGRLk}pod{|<0qwU!t}fj(tQ*W;PT&<2;{k4 z#Xt2@@t7?XLWl)mrhRMle6Ss63uc7WwxzuCYgug3Tkeui!0po77kN}X1t=R;ACctu z?rm9v%2sO1-w*9Z#1eU+9+$j46b7b~JT#=yENnExEOy9b%slq?_9P58Qy!LMYnQBj zeeB9bq#Snj+&ic%^kbz8@5|fTgdCFByh=d&xcrWFo3?p&UbPNImUypF6BQgBvH`IP z(qM*BDwT?o;(^5}xDYM>{=5YwKN5f8{`cK8BW+Czfejt&6ayqLX#Kk2G|`WkWsvfIw33-6RdDrL5R)q1zG)p9hIQq8_I7)b6l zv&Z&tb!9iXp0H!Rzu2nk8`{_TP0^Un!2wWqTAGzgyz6hvJ0>MAmOI1+E&Rj0{($Ah zgy$SOa%To?7zk<75`Cm%uE5$RK^?cYt5O$#oOR=`UPm${tuMNPGu4|dwb4=U)>Ach z+*HTR_fLq5Yi^IC*r5LlPxWB(D~<74*Hp@t|L}zqqPo8Pt> z0w1s0d%lcy=Y@3a&XZB3G;L04(y@$qDGY(@ZjWbKd5d#HS!;$HhM@h>nzmfY@u%YY zV_WxO623S2O549p#BYw?$>cltIbl|DuZWb9G{xOWwcohJ*-jeuU*J z8iV7+D4E-*n4#-Snn_D_pEmHdk8Zh>>W3`4I~N(ZD4XeEwj+;JeA0~{Hj2A#HUA>a z8rSdULzLT$Iow+*h_im4K9ZZ~C?-KnIA3UduS+P(Jybo1D{Xv{+*~sCX(zG&nk(?^ z`9FGMF+tY9tDgU?dFj+xwMpyWtbGnlE0X+GNyF5zN_514JX&`w)X{mL;&d|kMP=n0 z)JjU9k76Rrvc2@mH_7e>yEDFHJuFnh-8<5W4lDfM_H@bpAQae`IgHQZw!sz=lWZK+ zDAqaiIk{$H48SqksQ9U+%ZNp2+?<~WaI%HSpkcOn4)EW1KJ zg-8CUScV+g_ITT7w*guaOl0!$-K};^HM<}!GkaTDS`ux6ASxsp=oGa%WBDr4rPIi| zQT9`RBhuGkVk0n&%U>Hd!uj!@XtkVlf~ep-yYYcv2|R*VI5OZMJf6%wCsx-83WnjX zSrwHdVE|e_`-GMSu%Y>wHnTQw~WoK^0=bFYZ(?@>#G#L7nesZE_#r2g7ckTqh*!;+p ztZeL17Qu{=St6XTorzJ;%SO}9B!RsiBr7W`x%8UisguTzbz2XQx|Hjj4`}avdaCVO zE#N~OECYt4?O6o>5x?V8dWUQ1^~-9`P69XYm!-=6Iu zUJKxgP*_0>VE>A6{#@K{-xrjPqOQ-dx$GIzdKBavz-^}nxz7d&Jjae5Gcnb=nBBQWSw`mQqr&dOnguEWP>7nlaz1R9)mVhw z5rd`CM?;6o{KB9yHVXQRJ_^X|ynziu+e~t9uqwn>_Y^(#1z^QR^iVyBEeO=ZG#aKm=>*Kc$gHe&GMlH#jeZ=TRY?r7HBz9NF)>fqv zBeyXzGw25-ye6lnI4%BML+cPD`r?2C)`Ro@_t%KXFPkC0UaJ{>}?FVAxxZ#$eUin`Qo$9e6|vY`D|i|T^>A0hs)9kujSvD zj01q!#Iy`Oy*}Mo1r1_zvPWJQwRqc|r9a-%#PI3<^eF*Qtw~z2HlqU~u286M4Y2b# zT+v}!udU2UDGJiS4k!zuia@y2w?Fj*>-@8o78S9#{psyhqKCgNZ~oT{;xHzj zCDNRSgnXG?c+Y9*cl`MAi~6;U@D2TxEoslPglKC^%}1{?W?YjT8{mHAdckhO!1vpm#zv zN|N;s;L@Iqw*(>zGi$2)X?_5gCn)VxR1yi*9dk*PLlLOvwAh;JSRv zYZ~K>0U9J7GhA&(El-yVR3owz<+7|srS-`}jWx-E?r1dI->E{$a@o38?aTh-m*9>C0JkEFMerRabc zK{>}JPW$_4WUx!L<5->|((_1wV0ldmuf1X!EyN9(}X5sIfny;==<&;Op!o= z?bZ9+I?xeVk9BtJwF09Qf=MPOL}GSEC|ZL&B7l()F*x!ulK)9`WhTM30T`NCZVBqe zSex+Qh7?`tinr&kpewbuQ%9TMn&+7Die3Qms6(8eIgI+CQ_wQJcUkDA0g)gBH%RIN z?@sve(GKuh{CTGCFu+84u@W>&kaVa`s~q0A`h}V8Hoa`8+jB+j{2wt=92V$P|#@p_KBero> z95&WsheS#xF#Y=P&j77$=Q#4Fy%_a>efy74!k8vb=S3@liEsOg(+gk}C5U+7(EAIz zuNvdkVo3c$8X+BBV16)cHVwpr55qh{S09{~Uza;EJi;HXi~|?oE^qahKOp9Auxh8} z{PO0~^^`;*Q?tPBSg^L5LkK5v24}e~yN)oYR)QR=$3mdU-+Xa^osb(wjfE*X6}1Qo zUl<#I{=ELr)?N=g2eR;wzchZQq(8`EHpnRe7(t`4_U~}60pwo-LO~Ba-ma>OpXzzK ztAYG@B$N{$6vp00?XB@nB_OJe$tey#+tGSO4d)2htYw0oCjYBz>U0PQt4hgha>WWc zK*>%+cTDW8nER$c9!sM}%j~_;jx&Q1#43QY(-dUe8I|w6q}(Z`V*TVq`rsY$zMlRm zlXSR@m>3!RfpuB9Yh>kVlC}gq$KE%qTfg;6==nBxF$AiBXlD zmC~trclzA9TU}059##>Bym!A)7Q-ilnxxSr%ER|F4Il3ykX%||Sl--cX7Pek_*f14Y54*dXX^d? ziRI|fp+f{(kTpWj&5Fs#bIGDEMX=_Hr@JWPo>Vz)cUYO3tKppW2@GU=RCu=~lAJRl z3-&?4aS%LeaXL&bV>>99RFm)jM`+5EH{N{)Z1Cf_dPFJl?n834r6Ep5k=!3H8Pf%| zJiCdHpQMB1!CdseGmO6llZng9j3Tjc5i=aDa-qpb@-iB=seRFTlkmaN$cZNS8?^Ml zzbAzh$4UO3yMwPEN2<#GEgNB(jWUeS5+nAan>W*!E5Xz?MBNsLFE439@Fh|l@HT$a zIFiv7Pn^KVj$KBS$l+j)6I^mNe24m!IRu&dXLh3ws=DF(`6FdPcnE`MZISxR; zE-7RY|Mp&XSLaXx2|k1}Hu^18RZhc3Hew;Ssp(O& zhla#P^OsDB=^P`iD}F)K0L(@db*0B4{QYDekk$*cU0F^bYa0mSmwG57s|creFQbus8t>~qrCfc7TFY~p2_ zpP$$4bHW_FFJL8Apu;$p82XWD31)aHrWMMOM9QfLE%!~b{MWC)d_u*b9{Y3+x+Gya zdnb~#O6x!0I#K=`{LCe%8x?K*i~V7K9M5rni|qs}xx}p#ww?Bo3JL0QBnCiS!+6I| zN)VTjP{AD~QKf<>3obCnY4*a1mr^}`OC=%l1e}G;(>#JWN{LK9XmwI~$ncKm z5uT6Z<7SWrs^jLq*YpkfDyr8Y!At{G8DR2Bry9YUFaxfC`wU}1RZHhs84S)wwzP(Z zjj?FYoWlukT(CU(0@++w$)@|uI&$)f*JU}AoDTu~?9>?xv%bP|?p#u}qt+;s*P}Uf ze1poFW}&_FuFDhRd4SY@$#Lal=$kOwFq~m-US?}^G{p{k?kn#zv*ZZwS)`x|1>!KT z)o0=}#iW{&J=|7s;qTN$>MmO=6P?+?JTfDTbOInKwVAU6mn*ZBsakjir^ZslNPf(# zvINCDlD{fiWeh#jh9e-+IuN+?pHxyHpWYm!MYlp}Ic;z2pHg5s**z9Dqa{8Tbt>33 zGoEdBcJe<8nZFm&K5p2&Qw9dx)O$sngD#ni5RRKL!+TDM-FcFTLoQRW7gj^sjKV3_ zkIlQkeuS|$4*DQ*`VmQ#k(iJPzC>pE2zw#%$C46$NEqj&aq#ZWu;*nUC{EqVBhKgp zp)t6Dh#oLwjtR)=d*kDCe_K)`z0>$*WQakexN7v<{|@h{WZVQMkq%YoG_>t<&LA8u ziU=!gjTXkEsC5Ydg5-k4U05{47YAXZACASwkD@OK$^Y!xGm*TjV3W`IYDwWhB5B5m z*g&v0IXx1)jux?r6OOmn=1YahNmK$)Kn2O*992itCD07y+zmPYwm41LkC^6sG~$tj z3xRQzkTD>Wx*LsU$=MzJbO0n)11Uj7t?P6gvtG<*L$^27l%R;yS4ds)2)?Qj5|*sk z1mu{{{rlm_E%D&5n88>9HdU+Hc0{1_Vr6H)f$oVMZDrh2zzVX=CL_rYPlZ!YfRfC7 zd@ATy(|f1*&3|1bLTx?D4Ke98rS1eis zsUurRkrL1=kOLiJ26$|c7(UQAjAjp=dEaCpS&OX^OBz!gew4>yoel@nAbY5~WI|T@ zgw|>Re2o^|E-QH4m>QorbU}xio4e`nSpEsLPP-i6(3$tP4>vdxXEPFY>fOTisDA@w zM*^j?sT~TM!m$7pg#m(s|7GBTLET)_u6)1Fa^wtsXzXVSW_4x-tN!jb9hw=di}WPq z|44h*ZIVIICy;Y|KPty8v9n3Ykkh=-QJO%VL_@Ixi^9X7j`OSG&4yYDudJuJe>PO* zuv(|Gy7sj%I2yz_nReawVF0ogl$Y(A#u7_G^Qs5%B}L`mtgpy!Uk@*^gfJ`Oc04GxfK*PSINw zC*CWv!WaJ0Pq;1U*pRi-&Y-8+j&3xxD6PSpk6_d=7C zAKcdy8W0%3qu*L*Z|V0Y_bwsk%y9$~k+>NKrBa;8?)mlW_>urZl^f6a2xmy{K`ykz zzzmOE;Nm&}RjdeF-|l_;9zA}%(feMqpVd$!B@U+)qkq^#O})v~)bzK2Nsjf<6Noo0 znGbxb0pJNu8v?j)W^P`HKwn4Oc_OPx5IJbLtAGJm)ehqSIAZ=6g5@i~b|MTlfBO1P zoIk%8%g2kRc*C7}wKr|zdI$#Cldj&ma}dUjm&galxw&af^JWf^%pG{ieEq|R4-X1D zT~c=(;k+s;8Zg`iYRy~J4wrZYB`p*(_(1`ORP%GRY04fDS?|?`OWEK4j*EuI!=ZAqG@M)^jzZ+53xrW=<$;$H>0Ea ziduDll792Xjook?*{XpFvs zn&RNoy!xuW$`as6yI>7XVkwSsz8o<^o_sl%>}Sx&&(A-Owx|ahmGHG|TXBf=IXKcz zP0v5*-Oa%RcpF<7$7Xd&MF@?d>2em**IL-I^!D*m`o3a*9~0%aA7#CX~;u^b~V)DA#IVMY|OX4 zr-|Z;&?>pqH5uWr?j{y??$GSD8%3GszZ209UKJN_vO9C`+@2RS9DXBj(u(11e*iW3 zH!6Qx`9xV+S@-YXTIRcKjDedD64IunC#BxZ89MdWZQCw`x(tgEp=`IT64>G)wjoW~ zIM6UoA;x2EXVE03M%ZG}-Xg)xPZB7r4yA9K+v7(qbl`lTbncDkaYa=vkEE_1;3+@l z@F#E=J^wQrb-Q))^77v+D@!18zCaJbldb%R0;~zwtDT>vsHv&v!AU0JaK3j>kw-Ch z`8k}b5m$UzPOEq?tCx!}W-X~#C4*|Ue!04a_!H#c|pfdfxqwD^q|Ph7^y;;eRu0Ye3u_u>)^ENtY1)&$JehSo5RJ7z}R?YJU;R9{iUk`-?!Dz z?AGpaIr8y34wu%CH}v9vGFrQCodlbNKhYa@X5tt4^Jo7-v;V%|`}0I$ALQj*Bb>#C z?3-1|XAJhEN8t|Sx8Dn{33M*U5jDEw1`qJ@XNNOEFaOTt<2Gr3h7DiT)<#SAB5qRudkAP0Tz)KFDD56H3{WL6j0ZrZ*qJ*G1}!u4OE0A)X&3hmX?<1 zAT&LG@;-R&M2_z%1oB_5`D zpEUnN=x16;8ww2rZ^Y@N%;|fItB_O8Cw__kaAsv?J?AuU2D8FZY%IV8#X|pzXc4nxa|%isVhF=5bOV{0+&Ta7Vqwge-&5q<8>4LM1IQ z<5Mhu)0&r#-l6{(rul~-j17fg%ghF9nN+i_w&Bu#>`S0i!$3h^a$dYhbfOoEpJ1Ef ze}w32YR<>mpPh8P`x#v3?*%o5#-Fxle^PMes>eD^4<|1kxd=*_8SD=v5YZeK!(df| zlQ;7V3-{{<1;g& z*RSsc=knzF^X*znY08wYuCCs$Pd<1ns@rdZ%JmK4{Xa;RM~@$055jkM{@SWzE}EL} zKYrX=rq9gEYPjS%{;LmkUJ2^MnXECO&XA^|B)oRVYNVAK$GYrbSuw*#BcW4bp{}mZ zS$QwMX$)!U?b&(f~nF2Zv-I^4z~B)wq}d5F5`@jClKpCg3WIR z`W{|7iIT>@jC1}Bn|B@A%D}*|lR@wZ!u?LJ-8rBJ9X4AS&Im%_4caBNJiY>yh?`i6(35Zmf1WIJyOrZ2M;K6Ays(IeE<3L8{R9@Gcw|Vx8smd!dwPRNLxxu zZePD)!!1?Smv~DJn{w*bb?eqW`|rQYnwrPK9BdR45^9H*QPP=%8NB|Ui?Xw`v%fQs z4{uZ0DL2Q6cMwdWVu}F)bi%54ID^GI+PfJOJ`Vp&SZwT0q_BC&VY`nUc?sa%gFb-s zbWDQ*-f3dnjW-FL45NWc@e1G&5kV`?u3F$i2Xa(YSeT+U!_*T{yx~$tmd)i+-9G@} zNLi5u1&N3n&Ai#^zHdn*O@-tY7q1>N?`xVYR$s3zogHMar*hsY z5hSW&5GB{22+J`)Gw^j+5}JPFUSFZu8SE4!oyu^MCxg%{C{f*Ls!NgTlkftY9~MYuB6fC{ zEG#S%aWb4A8Xc(&uY-b&ch2GZ-vFsXYV=;ed9zMYQBgI=h7#MISR5x{QtF1P+6?V% zLer5H;l?=Hc-1U7++7O-6JEsg1$72~4A+BCy;spk7D98mn{@Nx!y7U>9bzVyWYpDP!SEL-@4{4Q z*Zpvdfm8K~rZeAH$SG{i_Du6k%%%Cvp!~Oz63NZF=Pa$?EVe|&#(sNyPHVhb%k$WU z3;WP26a&}kwhQ7dCgBkg_i)pa&M~CTwCaI##%`>;GLz+_P2MDR1vfG3!kHbETziVb@X z{fM{4UzaZTKb?w9IP^FH6H5=w)~|Ctb0UIoMf5cpq$#9ru)wkEbMOq1m^cW^MLwYz zPf4HXz_R{L*xByAx5EBcd*2<7_5c5SQzDx(v!yaC+*W81MJlpqLS)a#9Z4D4lu=|P zdn<06>_qm+ZDj9NLLuk*>iav_xz4$M|DWqz*KvLNT*d9a->>x?kLTm@d;zmE0PGHX zO-;>we-0B0cfc&3Jb5y?s)`L*FuIiwg&Bo(eV{z{4u%?c!CeHo0W+E&nCuC7;KoM9 z_5|r;nSVFsgoUZVtU^`i5(M^L`9>G^AWr}|#mBfHARvGgGyu1?wEUnDe;0iB`u27U zbOWGeVj{)tKv`t{`!kw%ki$a~Djg$Y^e_I`Jpi}}Eyc!UQ!~X^fIR!lb}&9*L5cfa zoWeQe$R#BuQDqKVDq*2#N06B1SLQDuFHKh}nETKvPocT(h#I{7*!>2G`e$QmY3LdA zAoQp0P~oSYs`&U5V0Ha~o5%?0*Qs6DM#txBIF`!ASMuF=6`v%zZN4E5fMQj0!$wi(es`; zLk3=7VgQII#3+UbXLcTTWLa6+cPLx$0P3|4zK~Z)h!X0H4KQQD03aCTzC=`NU}4Gw z&EOpHff2`IZ|qPV#56ayAegNOTrB|pFnN1>mjRlG;*-z6V>DKLM><=fOgAw%7XWsG z6%t%{mzoWC-LSNZYx~Q~1UwC7i*fQ^GLIiWUT+gDxC`eR#VzQ;z&AsXGYMy-4xD~O zRFp4hZc$cROr4*f@95^1S0u;9g#oWB2JH6@a2-5?f)rqc88awg__9A*c|D-A{C#Oj z&;YTtAo*^DgdQbBnf=yNok?+~9>vB5%KG}OKn$~a6}jsb%k!&d_*qYqy6POhls!U2 zR~M?rO36S!C%?H0xbcp&=w3B*C1t%M~za;E8ugQVb-;x8_ZDQI6tDRp{?y77)T~$SVjv) z(bQJJPzQX{f{+BWQj3{j~tl-vE_eh0!%vM1HsId9zv(Q_8hZX*kTOxLle@bzxS<FO@v@jo#Z>c6^Zc^V=LFka0ofCaWdP5T*?!4l-X zhCLEsp20}+3JQL)WrrMC=!g?Wx6F|nRhUpR0U6u{V0H+WpCf=J@rNxN!Y19byn!Mu zHfiU>3jUOrAUlORmsF{OqwI>#M;1Tih!4P-8PfvgI>Lr9qFL5R- zmp^xAM*TD(P+$87#{&UK@L(qb3Xe%&fMnTOABrmVz`-^F=fwqn0p_g%O4JcAUz)K+ z#mB_>fB$}0c6a&1wVOAaAyrw2WM>NO6FO>WXH|hl=FHi%Er8`X0?Xw_+&Lml7qrKO zs>>u`_{}b?BBj7|@Pi(FJszuoE}#Iu%ethsqoWC(eNYXc<5pbFa1SYYK98tCSc3w( zGXesl)Mwq?+_2?^p@D(tj+DW9`koptFS`0<|Bst2M8rc7#zAlp5fR}7S*hyRrjE8Y z(WAbwm#|-_R#uG6{w2jASCc~$f)NQoA|3%DtZ7w*jVUltKRd-6hy5d zZO3ca0qUv;Fwc668F&vcVfnBpp_9S}xNTl=X+V9Tf|NHHs7Pi*g{DIvENOsG6%HDy z`i_o{>_M)C%G|*vC&(>P;sG@>iQl)I))UWU-7x|ItuJ^P2&+TZenJ9@eB3~0l4d2> zwpdTGh3d;~NCDqGrg`oX(c9CLn;m@H(XsG)*_Y1F7Kp;az&oXYDQccV5eh6o6b0Xl z@YC3Bt$9cekV61czNM zu)DxD1GT0WuvpK)H`O)=gerawB8m-67yzzC5u~mV`f&5|9)b#o0%S*Epu20IJV}tl zFYrxVY50B*RY;xGgzIePONTv!QZG>$7)95HWO7lU- zL7v-&CV9^c=U(`*NO_S zW<<0pAVHe~a?K}TxHv)>hb$7HEo{Ing=q3ja>X{VwdL4ISco(K$K^ww-e}Jn1RJjXW z&HFkjNJm!$rBxJ)wZcK8KE??I7m3)oXaBa*Vvy8J&}04M-# zkcwP^4k*pQK?(+vA~GD{iLXNJg%VAa5@%&)q0NVO1_bJY*>~(RH3i_k2Xwnsz+O-R zC!`T&I#bP5$Q}ZpA!maq+z_1sdQQ%8i0~eRgKYisr2z_XA=Md>VoNzq9)`#@5+DIc zarCs9Qh-nc=J6gxDQ84PnnCII0w@#+kpr5gF5aFUDB*>`T11I2gh1DB-6}XwI-Cs1 zOmk8Zi0E<+@YDdCp0Yq#dlhsNz2s&vwYo|TU@Rctnp#?~m+^q(gTZG-i5VOuNKw#P zas_VSd&7qhB|yCsa_sa?u8S8r0mW_rxc&Runn@}LxNl`wS8+Jv5Y?IG#ug@wtX;@< z(D~@K`|!hB&WMfjFW*~G*20#?6O>zrf5zL8PJiW>CB=Anda{mJf|p}v^2u4T;kIr? zu;>HCX`F|O1~5qhmk);Sdv~E8fHEP}M3|SGn+Td#piF-3@lUn(H&_b%h%*I{73mix43Q z$;+T&FZ6J-d7qJC_WQ@o?JP~?pwN`SFoerC2@Qo;N?#!i6s8<NcP~iS>0j99Li-wI0G?x2rW z@q-Wg1iKY-9FlB@;A1Q-FMt|~9vdMpz?oZKY=xdR==7o-3AomfBQXa|lUD zhCx-{5A4LUiVD`+Bxm_Q^SowfzeDe{P;k0~C#6z6xka-O-qQ%dB3eK2&%S_6fovfa zxQiGch`r4KtFZ!QKG1r60NEYNt{{8l={X4t-v|K$f|{V}J^@7;l#-#$62=wEC^_EYVw-WkA9pqG&1T2_!m0^oTrgQ+{-`QYT-&n6}l zgj55BT9TSG=?cYIl*`ADlxC*H%i$zYx6u#y+3XJQFab%Rn*|GYQiNl@_dI0x)*GOZ zCyt5`03dOJm}~5-gQ_&&Tw#k%ivJq)$$qAih6)55&m5sPw3nfgm8_8!0)-(3olqq+ zQHGZFk_qXC!TOc@;>ngP_505W?}udA1LdHiQc?)U9eHky50rN&0Vlrs;Z*qu6fi_D%&oa<)|gVq)L6g*@F^&b4$w;&z>6Y8tcsA z(-NXw>Zl9+GP%uYL?VyfrOBUy6`KNlrV&scgpvZpH!L0y*%}Fyj!-zd-(jak7_|o5 z4l?5$7iQ}pgNWhUjT_>6DQ`22tg_|G_B{LpGa2p6XBd~qstMiwT-gj+1c}If$j@53 zwYW}zNj@8vPfYjCN8uIh5cq242Ydn|ayq)mJ9q2&P<@DpC!@|s^&=SIAIz z_Y9IY$S6(yzHp3od1-2XQJfV3i^=CyZ?b7qzg$kNpgx9Z@=LPpu(Kn)TbWY^wb72J;v)tK}-_WVx6 z*>j68v4K=a{R;vv_%|z>KDH&jv9o7$^6@&0ub0>PYWHnVuh7klFe1$Y);}Ge;Dof6 zi~roLD|vVCs>QCd|J3(rO~bYhQcUi}hvY^I`kz`xsRn~ox(;GW=jnUMn*f>Kt5iE9 zB-qj#*1faQ$1-w8FyLlE3%=#%J>A_*8E>rt8-c;Q|0&)oD&7>F^5m|M-xU-fj1VY( z^QASn%xLMq($?nbB2aLy$UPT$ORd^Wc{Lf&B!9v2aMJPx%8R#X+N*@Ax3}hrFN%9|jd>&wr1&IE4Q`>gP?@ z=;sZ*&z*SeU*H#BqAv^y33#^+$k_-Jm6u@hzjAquT~XFax!k6|SFAOYgjpCeP@c=)&HGaKzU^f@*_xY7%;$!(;?A>^o3i5v# zoLT&w`ay;#vOf=KZClo!eK5%>m#QEJ?n0Jk zHtTjLgQV}*o-<(UBBw}p|9l^Pk&4RB*FR&86>3(&G19#*?7NGdKJsrO7M0A(mCRu# z^xQ^oV_*5B&C$vN)COsANyQf|lL*MJ_Az7qY{b!bSmq{>6_uv3EGspu<8!7jmAF*$ zpv+d!d#o_;yhI$lSTQuT+@_$S>TN1-zS<|4v(no=>({)9&)`k;^j?oH!c{kleSM#e z46Yl6e{(jnT>1Iy1vRb|3%@*< zN6L>uUNPZlfwq?*oKHke0O8HYKQbzdZ#o?92D>~hqaB@GNdjAc!?re?vd%X>E}~Tc zkyP)3BT)Pdt34Tjl5RDS%d)q>4`8CPgWG8|a!Me@tKYuugGyh(O@KV~8IXU8x{PnmeLS@w5(4C4jq7OQ^n5R5-y9aC>9JFSKAndcs?SfMpGJ zici@dptYr%`Q<4GsOk0a{PmF-RyBVkn2~H@gH>@;{t?#t98=f=0OxtGLj^a$I6k@2L|6)0$-OY1gprG@t?CDdhGtt>e<#XuFzt?ra zT`j-*_I-V3O27cEy&r*#tj_t<;IOB@fMvMN=L%#G9`f~H5Tq`hR2u72wHXqjE{Pzk zn_ThVr;@9vU(uNJ<7(6=uS9!rKtps}i`mxC!jIs`t+OgkR-a!!r6O1A7G|%|hId<8h+}E7u2ydt<$O~JdSffu2f$o zV7ra#bc{@xhnBh1tpbmm`I_vFb05<2di*YPAAd2I-mBxYzBfJF_=dtwC5efeKZcdZ z*8Yj6WQ9M*c4zq9wl+MGi>(px1Ugmy?ld@Zn9>wI6_&%7<~F1C54~eVB3W+QI4O;v zw2L6Cs5kp26R!PuoG|Qvm(Rs}iTsd=`Z2Tct7$?VP1wQ0Y(@Ohs9lq)yRXiPQ{Wyp z%|QYa<#z0dk*N_nF^j=zzl-V#hcDCGH}Q^gkySX)O#h9QDTop+ff-Pg_|S50ra~sY zELNLMs)^#p(YapogEM4bE}i?RJCrJT)q~Q;^L6xH2MC(gr!3dF(x*#ho$)(#)LM)K zw*qT=3|4sUh#c7IO)* zW=fOE57fvQI~y1d&bmE5BvEj-=6zj9n z@IAe~;5~UsK+Cww$Rmeq;%7b0O4HoS3*jXSuV)g)wq@8LD`>sm-xOhHvvq8{KIl+R z*_<|;wV&WAg|535Wo2h5L}hhx}KXTWGJmCtEpG^uDI{qeW2b=Nbrr*z+1hmNIyAL-)^WM z$QVyAfA$x*ykbLCT3E*WL=|IYyDdB^*tgT#gK{MrglWcDUoP{uynLYqcR{uw+xhNj znMB9=;zE(h!kqUyXc02=&rp?2&P{u|HkoQ!%jZ9pI-^QrIPbPb#|m1`cQeqB3tZDRww5Xurm`~f zI`=OmN|X3`BhScOB|AYFwnT2ppej{Kz&{IDcq;cB{qi)UFTJ-g_B7KwCBg`;`Jo9} z;|b|Bd(M;cu~7ul>!w|3!Ot5syp591uWxbQu8qDBlQO8CudHirlErT}P&~V<9{UM- zzZV*;=5{Ne#qqS!hI)KIZQ)#|c=B1eRF^s{y!zB14Q42lT91GeJc;)$E}0n6@LFc+ zv$^xt7=eO3X+Q1K{5ijj(&#K6yQa{}Fs^bG3;wbJO=b?C*ls?z~ zQ@Q+9u`#p#Dsra{wesxNW_5@h)sVMdyjW5x0Pmwl)nyJJkaT zNu7aVS`woM zv$UTMelzc{6l+knz++Y!Hsaujfrx6wYSJuGHpQ&zGiZP50O0w9ro>#unuj^-{c zC7W6A%C(}nkG)E3GmydeP2O?dy`H6Z3C%|H$FA-!5 z9waJyxbwl$+|X`zS3p_^9ReO+J{P;RM7+g(KK3$`um4DwflXG}L@C?|25yx>p4}Wqg63hkk`QavE9)+ z$`1I{uMNg2T^w_7ECF3vus-4)QI%t1#gQfR~LK~wv$X#t~ex+6brI%prb{IpFe z{G`R|i^98H3)P(uE!RY&RV@0;?N-j)TTL*+Cz`)Vt9y`tdT_*hvbcVVS^Kuc?coN2 zL9%#4Ew@BFjBk3+dY7oOJUTK@+8-h%s&W_PKH5bO-%<^}_F2v{i%It}8`#$Tw5c}@ z++W}~%=7+`dCjg`*sT2S@M;)@dY9YMt-XD*{y)Lp7(4{JhXA~Mn3P){m$DI z6xF3MVc)tMgu#ej<2P;fyHTcD5ma0<=ciZ}eSs5af~;=CW_b6L}+S0;a4nY^0SIP*U2%R2HqVcJRfiK3SM2Q~yV!*OJv1ypoowR_?P zR~ce1#EksCqLCwQFx>LyCj#yCawIZG=NO&;-ZqPLkgg%*gh9hicwMN8U43?W@c^ZqeaPS?_;gLd znAwS-qz|QZjKwpISC_rOg}w97mT-^DT#=vkKQGyQ*9K*Y4^uXKFY*On=9deITGx+1 z@@66q7F#H5>6}%kUp8gR0HkVuXz=#0C>3HV0^amYd~t4}FSa~mw@f7q1ILPNm2DMT z@LAZjVO`O%-Bs2c1Su;^$3(8J#;FtrAS1Y_@AX{CKp}7BZzu~gSx0Sf7Q)zEH#()a zS?3`=dzao|yq)P5V{E_;$0qyE7OS^VzhFCuF08Th!!7a;Tk=XM>{t9%KaecwM#$g7=KCiwDmO+udRHWC{Bh@w+*V>*K7*Q?vtNmf4i5S~b1i zb{fyXBL%X)OJ}r3L(9BeIKzQQ>(WRw_n&Xv`;I(*RP!alaQHn|5*I4z21F&6KH;xR z_{XQq*rdTcJBPl-`pjk&@`iV(o;|sZ-ZvqBxSIh%vhY=mg06pG|1TibB4PO$y6%#y z69}P4LnDHxcP>kw?O-z^L8EXc{-4O<|4m%pkj;n)qTSnR{S!*+N6A&&ZtG>axw>T@ zb#m*kYx#1>do0n>savW-Mln=hU7Ze^ZutQv6xawd6*4!uK`a8dc7T-1FFZV4YnSm= z%tXe^3@2Iap+QyErQ9&rmq{6?EBs2E%S7IOUt5^?FR1-}Ae3&PsPuO{LhFHBYwPEL z*nkWA`1OEz!FZYMiwq1}XN33_lx`Bi_bglais9A`I?x0>2U2$kha6(ah2=-xfjaqB zpdL#&jD-LPUXZ$+B+Wv%3`_T$vh>%i=L7z~Qb{2%vsgSHO~0k4DF<+W`oKR3DkZH8 zBWDDj!Y2~%KW4Vi8Ux)7SJybHapG#3aU;cL9s}Tul7k3zez1VEA&;Hp$Pq-bM1@h1 zqa9z{?)}_LiKmV-(GTJbd+X|oWrf&-$63aY&tm=8&|f92j{cvikCH=g-mYI z9FLBXu3%LR)rNeNfQSzxo%adJAu4qgt8 zkB_IAdvdJ*3Me6P_Di?#-c8o}`NrYZ#-R(!liMZ;UgLQR@;)Ru$V@yyZGmzP%jrP` zavaE7=b-!V=JK~=n26V}UjWMk>9zaLZB$vi_$eqBJd1PUTR~=S?bHuQVm&Te%6J# zsHv$n0qK#g)Nh)61_lE!A?vcT*5h=MB*18b&zqEE1_@OhD2mPC0gz?{R0{#XKtW|& zpoNh_u`avGMVvOV`30I3SfAU|!WDFqc(U9>M^$#%{!rZ3cqc*0%O5 z)54KaohB+Z&%bMbTL1AQd%J>8T@5a9LUeH`SKl2O01_jx;rHOqA*8a<)@DQ&;vH-)QeFI|Vy58R2{BajPnG)+4ud0aI zsuF@uJJeFuCdxTH&R1}xU0vxWk*Veg5XpG6ESc+dfifgW(djBlSZnUEY>tV8_|Nsa zFAYabn^q64JG(dZaTKjTbXU-droQ-Ap0|8*edsHD;Y`xW(eUc zWaUNK6bQdy$?Uy&j$0$Rn#>!k!Z;X*T_92pDT7rR?l&I(h0Y>Uv?*3A|e*GvCfXQxl zDXed8DQU-S<{1+c6C++a5HXXRT|hU4*eB58{3)pK!Hp3^;}j&i0M&=jBF)^$=xC^^ z3~*3^nn(@T4RlGq6Q(w<3G#(`JtL^>@iU&{T(+jbjkQtsagGaqB!q|WGT#w%^t;Ph z%`63{oLBb{bCMj}v18K5{*0F0dJ@j29DOs`ul8@4Z?Q)E^09zXCXK@Hv2S;Nbg9es zou-ywO_wX?$QL1_Sa0a=dz12LJWa4n-I&_M-TlS_UGNN)mHx&k8VU+D2Zl*LDgEdv zch7*ttl>qkZmG>#k(pW3y1WUgm^Wb}+<74_L3X3$mLFVh>+8M9ax#kWSS2?8%|}<8 zSnY$uxe{SqsUG;<=UDZ4WW!@T_9k#C&BE%$cZZg>nyO|Gs{1HM;h{j{m&wU`f|fYZ zA$t3kz)0SW36N+c-1V3O!g1lf-=xga*2n*h%hxTR56t`vy%SVLeq?l8AsIvQqCpOr z0AA4_v#lZE>wtEX`u_c4AZsHk6VQP{RNM_Kfi$Kb3BVu1_{7FC0kK3K*oRYwNd5q> zfCvL-xC!hw5eC@v$Vq}A3k)jKHv>)P+h7kgwnH34=(c-`@bcwLM8XF88|D%;>I2CO zrHP3N>?0&G1R^KA*Ht||7Qm=Cig-QB%Tw%pIKSREIfP-WNC+Zi2k?{b?$oJG`S!k+ zyr?*o=-*u^j^O3UQ@!!b3N(o^nuM-kQL5C7T>QflM!Z^sfI?jPwX7_Sq4+M(9= zsG^LR(Z1x4u5p;FxtyqMIxWHDp4G8gR6Sun^OmyoA6hcp*X zG_V`V@z8_d4;xlY*R$YyMp)Pn)F@Ck{7l9Mx<3%&!0M%f;sYeI{`y`YI+cN!x=B`f zboPFm+HSeW1`lw{j^t@mR2w@8!Qz|%syQuOlHLsLTXdihPYQU1Q3XxFkObajGcd|R z8p71sC&3nOKyy_VJWKsU(7{22xJaPRBTh9VBcks^7f@&rlu9+;J-oy+a0DvD9+o2= zgUQ6V(|RX%r!pp1R)gp-pY=%74)~ERkSxO-tEtVLB$$<3>>*;}E_qx>GtO2pKl6Ek zRb&6JVo@tMnZq8Q+y;|#O@Ke=&G)1;Y~8H&1^y8n7s2Gb?D{w-GZy<7tjWOC zN`Q8S%|V~x9H2@RG~EdU(p$>MkHTr{|7_C&fMIb3rKiCP%m1*_G^y^o~zp3H8yPfB598ks-d}OK+5}} zkSx(xx^-1V#IeBJP(z)FCiZ};-)`3a(L_f54|0!S#=svBT^d52dlU8F8i%WvKbk+r z5u}!(#>9DIG)pclJ)L)GkW{Yz%KFzeoI2Pd`3ckJL`#>jG>h-6_HUsiPIi6JS>0I6 z@BZp)+*l>)*xm{aIJ9@=v8Nfs_QrRe#IfwkcX}tLR{dXlO*-N<4|`v5|Frz*T6sFd z+>6Yc(hVbF(9`}9^8G;!f=F0-2*Uvl2tL9!pWRxio)VtR%#<}#)FG^LtZ+meUEKn& zU4dDO0FFE;Nsd7a4u~Pj94CmOqwWg`B&Wvt^0b40&N+yCH$0P;R0T~; z#J7Klg9~z$6+Yy}bHynylUcu-%?v@2_&qpJ2J4Fts!_5f+pU z#2F@qG-CT&EWLF!c|PP2C6y$p7e?87j5Up)J{D_8XaB^KKQjcK4Acfd=%>a}3nF6e z6;2M0FhnFP*Y1l5Njf)%2uot1V08qF_IIGKHv(H4P7y6Lb0D-4W1j0Iz62y?5DuDB zhCy&glC5)gtlZ@^x*;T4=7xT6JOLC8ib_hTGlwsD6QH$6!YTt}lo1icfu4#i5wIM1 zrKFhQqSGReb|kGmasVxlPa;vqkwt zwW&b77E*|*Wo;42%WW)Qw%MueRw$h8JhZb{M|T4vLS7lARE?Yl%iV)3FRX?{F$uLX z&$MvV_ioHlGmoe7wh88}-x|PH{oFNvrKLU5+AqFIP1EE%@eCF=s3W7(RJ+!=EJyY9 zbad-@3lkJe%B@NFv?1RA9eT ztFDmpj5^kZqHy$A}bo!m2lDG6x-rP7=A}@EWC2{a> zXjTIP_?ELpv>QHXi*cTP^(vZo&65u2oHYhd#J%lFr=s#@Vs2_-evuZd57c9%Zvi%S zXQJT+=xx~qDo~{M1!bzhn8TI9uj@|k1-%uK;+*d8BmHW>aTeDV%CvJ-tJG*CUq)1_ zMfACpj-9$zruJBsi_HFjcdYaFONWX>;QoV}) z@H{-NsQV3@@}a8JbkckPCQAqzc-Evic4yMf&po?zap|weF*@~ziK(f7y>TGr4$CJe zTHoHRdxmcUOk$cVEbifb3g|at?YsCR(ekTI(leCZ7iBFi75jT|8bL_=-|%o=V_o=P zaiCWQT6b~`T7+)Mz}{)SJ~WK!PoHq^t3mMJ`x|DJ134>L9<=&u*Bi_pM9ZZ>4qDk4 zjDB&tATPIE{zLi=g~c+cB3TpX+PSt1FW9fS5M6R|D(c@w8#YqhAU|($>P;udu716b zYM<&W;7r}Lw8b*6){sjTDim)|;sTDDxp!{(_sElQowkE+e zBqlZp(A4c-R8RELqNTrgDDc{~Gh&tsp=@TAwy`;9SJz(BUUxV0l)&z{i0GguG8g|Q z?yh28N~UoXcb`%$vl>Mt|I+1tz7AsV_-smyV;vBo8K9qW>@rTQwsO>&m$c+0RE1KpD>PUk06-qX}ZAOemVj&CM+V}&`o6h@Se>;48 zd~B?qKrrxl^5kI00VlV&TM)BgleOu>%y$HnpY|(p&|_NsEkC|`>&Fjzk=QR!jKeMa znx3q(SFh*=%y1}skcbFP=hA&+nG4}9{rF_n_xInw93ru*61Q!bhN_2ZS|~&@g*Ez` zG4pnVqkbr9G?X!tk_?ImJ^q8wxLakdYJSEuoPS`@ zvjeFgOI)6tE0)eA4vBl<_wj|H4N~kYYT<-GV&uk{WE~r>t&rJS?W_5tpnf}=PqLAl z^q|@M1F^w(;>xG-C!#y5y-&XCoey2BraA~~v}c;}5SL=ANSjJ$`WlIIYdVXOEzq0L zmbuAqt01~qfoJZ|tnMBe=pHi&J3?XTAv(yKC+v4W@SYgHOq1$3X6-O;dpsun(43N^ zO^fu8M@l1qb|dOYLxW71gz%mth)o>ZA!BNj7qdlXD?ZIrB8Z`qzt-{N37E+f*c z^nmF5qYgvYtcSThnzJjvHurnT96S?yj?WJF%?@;q{P>F{Gt}+V+a50Ez#lJ7p>29l zHM{zO>U9gTpZOo>rB1^N3_e8u5N3Mw@vR|>)|jSL=K{Peai+T~-m=p8L%5*hQ<2n( zgy3OXqrRT2X+7JL<#W@`y)O+8N{U>=^LMhl!aI zZwqVS)>5dVJvxMWqAw`@ne%AdFz#wDn32aVSZ3|NJ5R-ena7$rr48&l_pYc0Yp!_Z zS2yM9hjkZsV5fAy6LWrz8!!y&8{lu_KKfNE-Ddl6%adE--9KIvVZQdrOyx3WpY?0` z`zrlRxS~zLm|5Zm%V80r<$2f1;oTJaMBGz78Sm8^g2%_wkAYgNJMkKZhcJeBI^U`B zni51y%1iC+Hn->)V~5EM@9I9tcK%YDHaD8Cexf$!rn|`7g3}LOb}<;X^P)zQOeN)Z zHiD<-!gS(msomwU*$T+y#Ev$yUnfkEu(i{gv-yi9F!ohk(nB~__ z2Mc3fAIg6zsMrK8H`#T{l~{(3B{FmpGo4{Iaujeqe9w+MJK}Yzp{KB<-J>;^<$Y25 za!g$!Z^}SrtL92cUv6~#_Ex1N%w%1w)l%ft_DJf9cNFVr`?id~N@s~RzUaKR(n_p_ zsdJHXnJyN8LlDjW^XHGg-2Kk|GP$t!?D*^7>t9+^eM{W6hT9*m+V5=p8U~NJs%MR< z6S{E@Ya1q~iF|h5PyX5Bk<5^^-wu<+E&hW2a(A#*bEa#9ZDa^C6R>`rt2*Sv9j!s1 ztC@^a%Q5R!_gnOZrEp4GXJb`+C$-A=JxkZV&4zdxkQsW=m(cac*x|wqa2NmLR`#Gy zVcl}WaAV zt9>~3e}CPxID(PQ7>FE>@p4|WI(Wc^m6hz010+Db-uA7I_IBJdRIS1Lb6b3<&AJYDPxR-$`>B+^8G>Ph%hp05Vaa>3>}9_y?ie(!{6XFmJU(Gh8l>eL2h{2@%-@9GJwp)mWw z;{Dc#Vn+=f5wo{RZIIhFdI@%HQ)t!IwPd>5 zrSFPFbznq9AM%Fj+ zHdW|GJV));cA}T1!^L=H7IO_pe(EMAE_7tATp1J9uiWHvR2Z4Ta}8 z%EL<~dpcpV)(kH=xpQ@PYn-#(ntY;Cmf{5Z$Ex=~MwDV($F^Z&fPJx1}ALi3jpPqa(9VFf3_C1;2P zQ)VglPJ+$wxV1T5whet*U4CjL?&R$z5zKn~{i}9yv>DqR_{-mk^CnxVNEO`74@S;A ze-id2@=?Z$-FIn`W-S%F*sFI~q)UjpjU}}_o>yJ}&((+v={vBnE3GOmsdKN-FXA?( z24TiT9!&c`OD(cgyI{XR!wv88!SDiEXWUoWDc!-7j!*5yl1$@QaVt1m&Y62umNLf~Ti$ChWsEdy4%&BlD|Nc^K$8{X1Yr0rili&>}CZ}?&5 zGqCmKV;L1OlTGGWSec!{KO7BgaCmea;y zcKDR6U=*V~Y`D&Hm60P)DH77Q{}Lh>T9or#&y!*j2j|`2Fw{~UHTtMYWD%mW}pH zzcCo?U+v?M;NML4MXkp%b>xZCR(IexRDGE+T(`Pn;6u3kM5bY&x}kyWypB%;EF<|b z-_^+mUEoI#cKnDjg{5EeE~5Lc+PNHwFc@8!LAc!YC@~Y = { sdf: 'getSdf', fasta: 'getFasta', seq: 'getSequence', + idt: 'getIdt', } as const; type KetcherApiFunction = (format?: string) => Promise; diff --git a/ketcher-autotests/tests/utils/formats/formats.ts b/ketcher-autotests/tests/utils/formats/formats.ts index 73990cbfa4..be72ad9e4c 100644 --- a/ketcher-autotests/tests/utils/formats/formats.ts +++ b/ketcher-autotests/tests/utils/formats/formats.ts @@ -9,6 +9,10 @@ export async function getFasta(page: Page): Promise { return await page.evaluate(() => window.ketcher.getFasta()); } +export async function getIdt(page: Page): Promise { + return await page.evaluate(() => window.ketcher.getIdt()); +} + export async function getSequence(page: Page): Promise { return await page.evaluate(() => window.ketcher.getSequence()); } diff --git a/ketcher-autotests/tests/utils/macromolecules/index.ts b/ketcher-autotests/tests/utils/macromolecules/index.ts index c1d8626757..b4d6ef23f4 100644 --- a/ketcher-autotests/tests/utils/macromolecules/index.ts +++ b/ketcher-autotests/tests/utils/macromolecules/index.ts @@ -44,7 +44,7 @@ export async function scrollDown(page: Page, scrollDelta: number) { export async function chooseFileFormat( page: Page, - fileFomat: 'Ket' | 'MDL Molfile V3000' | 'FASTA' | 'Sequence', + fileFomat: 'Ket' | 'MDL Molfile V3000' | 'FASTA' | 'Sequence' | 'IDT', ) { await page.getByTestId('dropdown-select').click(); await waitForSpinnerFinishedWork(page, async () => { diff --git a/packages/ketcher-core/src/application/formatters/constants.ts b/packages/ketcher-core/src/application/formatters/constants.ts index 0020225d38..d842127d64 100644 --- a/packages/ketcher-core/src/application/formatters/constants.ts +++ b/packages/ketcher-core/src/application/formatters/constants.ts @@ -11,4 +11,5 @@ export const macromoleculesFilesInputFormats = { dna: 'chemical/x-dna-fasta', peptide: 'chemical/x-peptide-fasta', }, + idt: 'chemical/x-idt', }; diff --git a/packages/ketcher-core/src/application/formatters/formatProperties.ts b/packages/ketcher-core/src/application/formatters/formatProperties.ts index 17ca6c2ca0..b1b09e7bde 100644 --- a/packages/ketcher-core/src/application/formatters/formatProperties.ts +++ b/packages/ketcher-core/src/application/formatters/formatProperties.ts @@ -132,6 +132,12 @@ const formatProperties: FormatPropertiesMap = { ['.fasta'], true, ), + idt: new SupportedFormatProperties( + 'IDT', + ChemicalMimeType.IDT, + ['.idt'], + false, + ), sequence: new SupportedFormatProperties( 'SEQUENCE', ChemicalMimeType.SEQUENCE, diff --git a/packages/ketcher-core/src/application/formatters/structFormatter.types.ts b/packages/ketcher-core/src/application/formatters/structFormatter.types.ts index bbdadb54b0..52e79160eb 100644 --- a/packages/ketcher-core/src/application/formatters/structFormatter.types.ts +++ b/packages/ketcher-core/src/application/formatters/structFormatter.types.ts @@ -51,6 +51,7 @@ export enum SupportedFormat { sdfV3000 = 'sdfV3000', fasta = 'fasta', sequence = 'sequence', + idt = 'idt', unknown = 'unknown', } diff --git a/packages/ketcher-core/src/application/ketcher.ts b/packages/ketcher-core/src/application/ketcher.ts index af8f854c03..57dc6f1ff0 100644 --- a/packages/ketcher-core/src/application/ketcher.ts +++ b/packages/ketcher-core/src/application/ketcher.ts @@ -162,6 +162,15 @@ export class Ketcher { return molfile; } + getIdt(): Promise { + return getStructure( + SupportedFormat.idt, + this.#formatterFactory, + this.#editor.struct(), + CoreEditor.provideEditorInstance()?.drawingEntitiesManager, + ); + } + async getRxn(molfileFormat: MolfileFormat = 'v2000'): Promise { if (window.isPolymerEditorTurnedOn) { throw new Error('RXN format is not available in macro mode'); diff --git a/packages/ketcher-core/src/domain/services/struct/structService.types.ts b/packages/ketcher-core/src/domain/services/struct/structService.types.ts index 4e652d2da5..617b1bdb0d 100644 --- a/packages/ketcher-core/src/domain/services/struct/structService.types.ts +++ b/packages/ketcher-core/src/domain/services/struct/structService.types.ts @@ -34,6 +34,7 @@ export enum ChemicalMimeType { RNA = 'chemical/x-rna-sequence', DNA = 'chemical/x-dna-sequence', PEPTIDE = 'chemical/x-peptide-sequence', + IDT = 'chemical/x-idt', } export interface WithStruct { diff --git a/packages/ketcher-macromolecules/src/components/modal/Open/Open.tsx b/packages/ketcher-macromolecules/src/components/modal/Open/Open.tsx index 6f9a5581b5..4280f476a1 100644 --- a/packages/ketcher-macromolecules/src/components/modal/Open/Open.tsx +++ b/packages/ketcher-macromolecules/src/components/modal/Open/Open.tsx @@ -95,6 +95,7 @@ const options: Array