From fe217d6c9fc263db7c35d767d9fc5448bae67171 Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Mon, 24 Mar 2025 15:34:40 +0100 Subject: [PATCH 1/6] chore(dep): add pinia v2 as a dependency Signed-off-by: Elizabeth Danzberger --- package-lock.json | 81 +++++++++++++++++++++++++++++++++++++++++++++-- package.json | 1 + 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index cf6dbed876..78ae46806d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "@nextcloud/viewer": "^1.0.0", "@nextcloud/vue": "^8.33.0", "jquery": "^4.0.0", + "pinia": "^2.3.1", "vue": "^2.7.16", "vue-material-design-icons": "^5.3.1" }, @@ -5964,6 +5965,12 @@ "dev": true, "peer": true }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, "node_modules/@vue/eslint-config-typescript": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", @@ -16673,6 +16680,54 @@ "node": ">=0.10.0" } }, + "node_modules/pinia": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.4.4", + "vue": "^2.7.0 || ^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -21025,7 +21080,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -26557,6 +26612,11 @@ } } }, + "@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + }, "@vue/eslint-config-typescript": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", @@ -33934,6 +33994,23 @@ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, + "pinia": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", + "requires": { + "@vue/devtools-api": "^6.6.3", + "vue-demi": "^0.14.10" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "requires": {} + } + } + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -36929,7 +37006,7 @@ "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true + "devOptional": true }, "typescript-event-target": { "version": "1.1.2", diff --git a/package.json b/package.json index 375172351b..3f03a563f8 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,7 @@ "@nextcloud/viewer": "^1.0.0", "@nextcloud/vue": "^8.33.0", "jquery": "^4.0.0", + "pinia": "^2.3.1", "vue": "^2.7.16", "vue-material-design-icons": "^5.3.1" }, From a33ff76141c0ea22623501ce58a3df76e81fc883 Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Tue, 11 Feb 2025 12:20:13 +0100 Subject: [PATCH 2/6] refactor: move custom fonts into separate component Signed-off-by: Elizabeth Danzberger --- cypress/e2e/settings.spec.js | 46 +++- cypress/e2e/templates.spec.js | 12 +- cypress/fixtures/fonts/AmaticSC-Regular.ttf | Bin 0 -> 151624 bytes cypress/support/commands.js | 23 +- lib/Service/FontService.php | 8 +- src/admin.js | 20 +- src/components/AdminSettings.vue | 35 +-- src/components/AdminSettings/CustomFonts.vue | 199 ++++++++++++++++++ .../AdminSettings/GlobalTemplates.vue | 1 + src/stores/adminSettings.js | 12 ++ 10 files changed, 310 insertions(+), 46 deletions(-) create mode 100644 cypress/fixtures/fonts/AmaticSC-Regular.ttf create mode 100644 src/components/AdminSettings/CustomFonts.vue create mode 100644 src/stores/adminSettings.js diff --git a/cypress/e2e/settings.spec.js b/cypress/e2e/settings.spec.js index 5aff132b20..2b7301e804 100644 --- a/cypress/e2e/settings.spec.js +++ b/cypress/e2e/settings.spec.js @@ -6,7 +6,6 @@ import { User } from '@nextcloud/e2e-test-server/cypress' const usesHttps = Cypress.config('baseUrl').startsWith('https') const collaboraUrl = Cypress.env('collaboraUrl') -const defaultFonts = ['AmaticSC-Regular.ttf'] describe('Office admin settings', function() { @@ -65,16 +64,51 @@ describe('Office admin settings', function() { .scrollIntoView() .should('be.visible') - cy.get('#font-settings') + cy.get('.settings-section__name') + .contains('Global Templates') .scrollIntoView() .should('be.visible') - defaultFonts.forEach(font => { - cy.get('.settings-entry.font-list-settings').contains(font) - }) + }) +}) + +describe('Custom Fonts', function() { + const defaultFonts = ['AmaticSC-Regular.ttf'] + + beforeEach(function() { + cy.login(new User('admin', 'admin')) + cy.visit('/settings/admin/richdocuments') cy.get('.settings-section__name') - .contains('Global Templates') + .contains('Custom Fonts') .scrollIntoView() .should('be.visible') }) + + it('Can delete a font', function() { + cy.intercept({ + method: 'DELETE', + url: `**/richdocuments/settings/fonts/${defaultFonts[0]}`, + }).as('deleteFontRequest') + + cy.get(`button[aria-label="Delete ${defaultFonts[0]}"]`) + .click({ force: true }) + + cy.wait('@deleteFontRequest').its('response.statusCode').should('eq', 200) + }) + + it('Can upload a font file', function() { + cy.intercept({ + method: 'POST', + url: '**/richdocuments/settings/fonts', + }).as('uploadFontRequest') + + cy.uploadInputFile({ + identifier: 'newFontInput', + fixturePath: `fonts/${defaultFonts[0]}`, + fileName: defaultFonts[0], + mimeType: 'font/ttf', + }) + + cy.wait('@uploadFontRequest').its('response.statusCode').should('eq', 200) + }) }) diff --git a/cypress/e2e/templates.spec.js b/cypress/e2e/templates.spec.js index d375250094..da0d8b9c13 100644 --- a/cypress/e2e/templates.spec.js +++ b/cypress/e2e/templates.spec.js @@ -19,8 +19,12 @@ describe('Global templates', function() { }) it('Can be uploaded', function() { + cy.login(new User('admin', 'admin')) + cy.visit('/settings/admin/richdocuments') + cy.intercept('POST', '**/richdocuments/template').as('templateUploadRequest') - cy.uploadSystemTemplate({ + cy.uploadInputFile({ + identifier: 'newTemplateInput', fixturePath: 'templates/presentation.otp', fileName: 'systemtemplate.otp', mimeType: 'application/vnd.oasis.opendocument.presentation-template', @@ -34,7 +38,11 @@ describe('Global templates', function() { }) it('Can prevent uploading a duplicate', function() { - cy.uploadSystemTemplate({ + cy.login(new User('admin', 'admin')) + cy.visit('/settings/admin/richdocuments') + + cy.uploadInputFile({ + identifier: 'newTemplateInput', fixturePath: 'templates/presentation.otp', fileName: 'systemtemplate.otp', mimeType: 'application/vnd.oasis.opendocument.presentation-template', diff --git a/cypress/fixtures/fonts/AmaticSC-Regular.ttf b/cypress/fixtures/fonts/AmaticSC-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..fc4c36261a275277319a548a8f395ccc3b79f004 GIT binary patch literal 151624 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 rU9^mD>=m~=FYK_tp9`2s;n{Rku*I#tq z+3Wjz4r(vDQCH_k&+fJKx3T8~qTgP;aOTv>HjcOcT2-1lVhX~-jO|q&-p@azn4w2g z58Qw5?8uPREM!PKP}(hxJzEk7yotI*tX?Cp8xD6yFyuxOJ8-~eFFp1zb-RHYX2gPN z3tf$7tKDOT*seQPgs=Y_ooqPSpDzA}P^3Q|JvO{KaX6Lp8I1(Z6!yAQHx=@XrW`Kj>{Y;oaEn*IzV zI-~7gxo>t_xRcej6WYL0dLk%R&+h{?Ae`t0hyWS-P1qZ!AewVMtp{pppeU65Kj%y` z!{-I~8ac!H)b)_e$JVWXKa2V%Z10^@L*>B`U{tj6tntH24}msB57B??I{X%U&ZU_# zy8GVXmj`E;$kVPGZ`bnVw#{{BCdWtn8#QUAxZmq!mTCf&gZ&PA1x+g~7nX(wxF&~m zR!#DvuGb=i6(LDZz|w`L%i-jt@K!d(V}Ywuh2O*j$w5soZF%i#C6P#_06DE4?My6+ zGe1EA1M*<9K88Ll_k&L&im*)RkJj~!$#A%O(1LI_nq_ejy8er%1t<=kI)Ulm&$SI^ShpS8XH_r4})Yf5abw|}G?Tl>WuVrzVlimgdcre17K z?*A@RVr#u?Gu_zQPpH@$*QnSU-?txIbDvpaYrSiDW_0s0X7)*Jt^4dM&$Aa>`xAAK zGd(!rv$uf57d@}v&E#Y9Qr)%W zG=AtSJ^R4DM*KW#Uv#MP8+E8I&Q#6a-oEad?!Ld~=DWU+{Upcg*RJi$89`Gn97M6^ zjP~~udE-9EAki-I4FQ+^7@m7iLbC!x@eTFjBVW>YjQ8(ftLZP<`_pdrr%EpF?!VK+ zZ}3U20bVst@Lb^kGkdaDZdM_@y5`N-_T9gxd(SVpfA{|P*IMMo%5&Vfzj~nkd+I$; z@1DBP^@97~yjI~4eCx*jRba8Z|2xgueYgxUIsPXErpAYU;@Wu#9aMX3@T;9tel_5} zAOBQvSN<~>7X)v_f5w{q_~#P(#s0a9|E%tDS9s)`Oz8Oy_#bVceOkLud$yC!A;gj- z_%S;j6;-?SDhU1dP_ zmeFYAcAEd+e&6l)9^2vuR+koXCECb$TlxwE7B`UM(kK*^A&3u%HbcU#70<@S3`_1x zK@o(sr{nK9rO48w!@?XuOA#krS}HHGyG&NOz3E6BGCj$4iyqmgW!s);Kr~0PH}E1` zSb22trL9jm60c&yN1SGsesttTc#8;$N2$b##LBkEN~E6(m!_slzM$iI>0d1WqKA-y zH9ZrtSLYdzM-{Zk3FaDlW_&d7H7A;9`zzU6BAN5saqBgD`>*e>PA3E8Fh%~=8jM%g zR{I|Pv9qte?OgfZtABiFIGaqX9y{GLqVJ*pt*#6p|4-udki<>Aq>G2p5By8XO>kj9 zp6$}tr zD0cP{3b#FoURqtz#1ONZrYffQ0avdK1XN5|PM%EYi)2E#cNpF6*q4I3Z775vF3(+>I3Enfe7;~LJF%5djR#!+0ne-a2WZ*K zf8e`O_5qW7>C0goU(_nvh<3E&gs^)@Xk(1A>sJ3K;7mZpydO!mU)$YDkYOa2(6x`~ zHU80DDUC-lJKP37q7A}|z!=|js_TQ10UF|8hzqw7xYT+5q@RR{NS=s7b2S`VTP7pK zaaP9YfSIn5Mc@quE`01iA9;InD;KNyjro!0!1A5B^sSv5o$$(=BmK=-EM0hR=cJ;& z5o#yirA^@PJlyGQ9+qrF&`&}YI37%D5O73!={ik525(EpH<#Kx_@lOt9$K26=Hl_u z;aG3N?My3)r-Ym3d1j+?X_ZdFUCVRHY0I%H5|c-jE^b8N)wy%x>SGemqtjm<^pOcz z>fHU=(kPt!L>uF|K-0nDr*~SwSYZ* z_0Ksq!TZ10{>^x&HiZ7)?o2OL$;FF>#f^tY1IL{73F8Z;PZ+5-R8Ppr0J_@DOb-pV z(rsyY)J+PntF(C%AL}gxhlcBD6Q_nnBL?@BRp&N!zAn<^IQo3B81zSIVVCxMy#BC1 zN&-M&dL?~1Vt)O1e#{B`tf}#1iB2Im zef3}b7X zAJo?9E;Q4bEa-*~Bjf}S2NcipTjFRO2MVI{=KHHw#J)o3o5s{r@}YLO)wM} zgmQh7>Y#Xzi=NVRgtJlS;|c>%vu-8m$heiniAMHzx@L!m@kKQH%#_G-CzmSGUr8iMC`!iT zmg7zNMsunDe6Bn(G?k>;<9CX4lXK$v;U1&F=q=rIO3*!4!RVbmoo+;6WInRLrm^=q zw^yG2p)d5-Oq2I0a8&z9-Xkq6y8CnO-TT)z(E&c|?*G|q*A8BHt;7ZX_PT4SIdks~ zd%(~>=wAClSI+BNuix6H^bE_B{o#6B6+4+Cmq+;pxs^?gT%bXj29w_Rs;U?Ytqz5a z2$$$O{$0kQPEsA^bbH#3mMWslq>vvBsFf_T-R4lWIyU9?#}@tmP%trQhU0cWttWBI z7~W(n8cB~KJq-9u_*+j8Z9n+r(lcj|v@evicduodWBK_K*(QuxsN$9Ot}Iul95ak1 zj=TTLz`{WD0op<}fA-^a|I@Vq^Mx$@4#V10oiNWSfsO$`UB+Yxv#MZF(M?@?rBQ<* zkxs=(@agm_7_KeohC=rjbaK}|yXoR{=ROvzugw&_WY();IT95B&0Ao$L^$y(&~Qzp zNsT->*V8Yr-Xv~k4+A_`Qb}*Pya1A?;vqYk9`@)#hY6AWQ5r(V1L4CT{m`oEbsXdY zlM9h}X7uh){?<7w$f5Dv8$5T8=U$K;zAAnTbAVFenOMNoEOWc8<7jet9e5K4XAJAGFUq z^ZoRdc7mV1mnVe|)%lvj3%^g%VT0U_o8#dD`Y8zxs5L@kU0xf&R=V~+^rPc9+TT-b zZndZJ6*`kkjnaM&Ebu)_-=-?I?u_=XPGo4HSubQGB&`HMBQy_b&JgSIKjV^+(}L}7y+XRs-1LDO!@+xEatXT1_Pj?r&$&*BcNjQZE+*sd$aSGd z!MnLMljcQ#Aw6d**yWUh(Vw=<^VMl!clj6j_q z!=!alBo&Uo|DkN~`LVD$bM;?}Cyq2;`st*ec!qOze1Y6<-WMti(3vKiwj!5~oL%k+ zY!%#;e0x`yZ%!%sc6|<|yGC-#-8FUUIB(9Obl1qayK5SIUp;W{?i%q!xoaeU?4}&b zz2B8{RQWh+4f61g1Nk`aKH}SP_i63@@_~GuqvG>Yz7N(QZ<*wwaA{KQukT+wsP*0G zzu$+6*mCMx{3%U!t$goeU|;WhHT`YqKnf3sdNM$*>A_R^J6MA~Sfg9;TipC|Su3)8 z-+w6gy1(!KHQjr@X@9x@$5gJ6+?)7D-2L6>P`UNJ{rCMt?mhLMr+1C`Q+TeM_McVz z-@I1r*+0deyoVSaAV5aVse==EGw8c`-)F;R}N&XB+S z%t?}r^h+Y0L&#ZC^qiIXzR3aFc-o#Y&6Sb%2~WVbO)p8I$#6KIwnHAv_QfI$i>409 z4@36(vjh>%u6EVyH zC|7w`v8e@BDToT+<%~CeI;TFJQ=di-T z@oLxl$}pfutsNJ&7=sjRRNhvyRsPN}w2adgOOE~LS}AJ$8R|wM zo$a?}%3DBkQ4Ff(NG7u_G6(nv_9T|1O|V)Dhtf%+t5S6*nPw!so1Qomtp+fy(4T`* z#yKRZ3nCcdhL|q_={u7U~qKc>|DFQ zLLzwIY$;dtXFQEi>Zjg!#f~Sf2g9}5=|iJi*<2Gd2)EH2e!hRSnh(}=|K0JW$&&4l zdi=$RZ+O~f2$#>7@YKK3S4ah`B`PhS?CRbMuN2Sw>8=d9`~o%-xTj(e?izZ_9f)nX z`v_lm*R=Nj?tstUT_gP4T{B4S<_-RE#Bht;JYo-4*ICMl|ts%}gTOCnYrBLl@xz zRK9{BUnD{a?1cQj1nyEljo8sZqp=y>D$6&eHhWl^1qftap+J8$8 z%i4d%0toY?3-i^A+h5KtFPQ66QM%M501~QFeh`Up;{|yG4I5-Yr7s(7 z(4rT(OcGtA_-f=)bkz8PbyIQ046Ti9#Th2qtclX*sbS=Se^s#+;?%spQXx2!)hg@U1 z|BO0IsmD^+62}@oAU{K_`Ew=v-2KP)K6+DpSLo*|`MTeS?EB9jZPnmMz2wM#5C)Bd z$|_NFkq~Z`xc3qh4ZPDkQhP~H=&qf1V6j_nesHm9)CU&7@Xnoj?+);-@}-OjmL}re zd+C0^NP{TvGB~xbRvS;p%c?OoL<%YLBYzl74E?!ganIk1wk@CWauZS^+!E zOqWn7mCZ(~m8j3(XtXTm>EyCz(puH6bkMegrA#zbrk|lb^ z*2XF|ect-^Za8{0`@8o*o1u_+LO3&E&E#Lvi$2lCxsd}nr_RH?yuYSF-P_GJmAgi4 zB()DdhQf_D65l0tnb*|`>Wm&&ctZ`E{>RkO)#%X+KJmBfx8Qx_GyCt?-S_!?PXD*w zb;cjPz~{GI`<$GF^a2Ph^AdZX znP(wC?J^r{Cuwt_X*=8OxIR7E^afJHaZwXyY0?EQ5dM-Mg*fzyQ|JUT&8i$h>g`qL z4gP!aBVj65AHm^>{tB;upbRbID0gBRJi64X7>1J`rN|;1N=1F?WInG4Y&>KUGAm0} zf5ggNN`4#a;Dc|z_`Rz^(R~9=KtR%mhu8aqW~>%7;dVw31d#q^v+1z!9xbTGg~Ta#g(0)r|y# zfDOQnn<~Krx^q=0Vf{#i^z`X^rl9+BfneC{pfwp3M8!QMfdr(ii~sa|GECDo{*6bU z9JP@CySkbt4h!D`uLhGLym+#aby>T1$<3%xu*TX6^n!-if3G!E|$o zfvDhP4azIYtOLAI0;5%4dzha-OM)%4d~zJg_U2kMM0K4ZmFI@?PUUx4T+nta%8mA zw;zd}E1KjldKkEsA!iTUA)0^X!V+1b>D2gkU-i&pt)3iel*Xs>_4aa_{KM>-SJr&_ zl64$ zNU}U<2G^7vzjEaZ1o$5!;cs94F<4^2XObq!p^{Lz7V+5BVr0f?rwB^Yica^0nCR-K zRY9nEa%tsl$660&A{;4?=AnIv;e@jdr|A6b#pJl%c-5>O5}wCR{gd<#)j!kauaKOZ zlkLu5QO{;*zk$!;xOmPhJll3ULK8=3UntI>8*aZUoG*g^2Z1CVO-FWR3O>*L1$=7QIrw0lwdBXhhafT_s`xmEqo!aUunk zyx@^Czk(VMUWQ@yU0a83=ytU|uuzKjD(Yj#3O#V`3TX$mzh4JmNcXE{_zmOKUU;Es z7s=zhcb?mQ==ejMhu2oeM=LaAg8GxQu0vJ`UXWe1`x)sYjy};&i&`Od5Q6k_+;Bzc zA7W672<)(_YV&IF0H2Rg3~9n@2f-=%gjlEKr+1kKED=i~77c`?(18Q70{!EbL#Q{9 zkfSBq>*QilGVDpMAfMXsg`%lw`PTVTp47w8v$ONi7#g%;mQ#g1q(we0oWU0k-x3bw zT1EozeW+TveDY7;u%;J0*aWZ;k0%j2Qn+WLJo`)2eWytx@Hy2yA?I))KI8LX*k-F$ z@8iCzQ;xs?w%a~FopU1gbawE=1NrdLQeS;~o`LYfTbLWBeb)E~c+0eUotD?;i{Ui9 zhU$X)kpsPxo2>b-<{kTM0$|7Eu3zVI<=25sBYR)fe~v!-pTh3D=R4o<$_FlWR+cbo zKk>6a`HmN#ZBs_;`>7xQ(TX(X_;rHj21yfA8H^E)E=emZk*=>+{p7(q%PI)!sQ^q( z+x^H-KlA#RzwEwyZ#h0hMMf^eLg5sBrY^4bZd(lo1= zekJfeGm60(p_`iF_oid@5Mz@3Digy9c>G8Me;^&9Ft0%GATJGi1X=tPap~BrgO1fi z6EVHkC2<-4V3+bLY0U${e>uFqML!m%(ft63t|if(USFKyyPJJ zNSh6KvjHl4$RVfGx)qK;b)md$c_M{uZehAQIuLPUiI@{9k9vaEjt_{J>?QRy)&K8R;Jywk#Qq#4sd==y1v~8ig&&^@Tp763M62-~f0cVhU~| zs9=Q+(7^5fklE)&!kR#cl#SUMfT*ll`fBeZZQY%Q18t@T}7B^Q`f8 zRQp0Fd+}svq*96#cML$&8i~fcbF+GvN(JSG5d#6Jihn6Jq^HljGzz(N`#>iE;PjNh z2nH>_2wZks6?V0Tnhq0LOV}axC=9|!w{uscS=9>Pn;>+&)@MU>l@#VMQ$d}a_d=1s( zA9?>==S+j<6AN>qYD5gbMk@mg7K`h~Yx-WR`HA-UY1io^m{`(E->%?gwVVMtzlr+N$P#wz>K>-ir zMm=b#fdUFTib6e{4hO^sU}%O@VX-tZ5(lY8g=3D@q2Y4G zKbTwzR4b9jW_~G<%?=noCPN^qM7FL{ca&86?w_eMt7(-3`fd_A*<{}0dC_;*mfH{; z79a=j))p$2tDxoqR3(v#b>}wMC&r3d)N}}n#&oXC>1w?sW(iFR08w#VVp2y0T%j{% z6Sc@x7rIkq=qfaI6d@P-BF;pZk$Pm=p=8BQLphcnOY|q2iL4NbsNZNgS-{V+a1OkK z-dv87;3@ECMLx+GKabZAnciA<<*s@y(F!E~8e`0igJe{RP88Qy7xT^JV(Co$*;o!4 zQ(PR@*PKi_P)Zi-fpVTRZ-y@Pk6%a)tW>M{q|-WDtOCi3z~he*Tr>j0{uegy4Nh~Da3i) z5*X-@@|Sj5{Oy$;A7a?R-0FI)adY%e?z+!9-{e9x*aSC<5wpCsIN$2eaj-BtEH;&A zB}9edDu;zRBgzHGsD6~T;GU-xpwWdwLfNxW6&+4kLS7JDRI*U&FD7V#H-q>F&Immi z9XRYX*xX=oBs_X0HqfQcTcI>T@pxA##?Kkc_ zaq^Dai)qI1MB??W$Y?n|vVMAXH953Wg%t0symWBv^xD*Vqe`10+j7s!oy%+B4U^Z> z?{fi)xzBL(O@U{1i?5dwfc}TB(!o%*_r5y@(TKhbWnHXsMVd0eW~EQ6Ruk zKVu?F`Eh&aC{Se5ErA6;?iyLBhy*GDMAxK-&w3F}HT(=6rdy5|95K=rUlPU0pid1^ zB7CYrL~AMTr<&PBcOlD{U=d9T2p@Uls2Uz$A`vkdY8bC0P?LuS)4^iddf-i|WhYz; zQfcRj8GXrqJ&}9t^bi6f7i*3ckH(J8dr_$n+WzR!d;2%%i{lTzbTZ-rMhXVzTjBfo z0pa@{-H#fqe9)I%U0Y_je^I|+hVYS`pcd<;oopt_>7Kv+MG+T+5(lmp)M|>VEXlPTlMlS75womR>N;1#%la9k-}?IW zP`==Jk?B{QXeB-K)??!r`WwS$-KnM*pSbsji;=W9RD4VI^FNrFZw{^Irq7(MO{SSQ zDR^GPUiyOKQGcj-(lC8zzr@^{quOL=Y^;)^7F*w3>kwm*O4zjMP$^}R7B%C_iE;%WKM#&#Q;9xT3gX#2wk3(`Q~mhVD07}o6E*O)a9*jnv6{uG zgdR_)9D865#+F!qpe6qU3Rm+0!ytdb$t0XnU*nnmr9g3EA;SQ8QXGk03F=|jz!W`^ zm%|M)e;5~KV3m38U?CpE=|_*qS38#X97WEA2XmkP=}WKhEu<5IlBq;%@>Q9>&U3$+ zm<*Idul!o4da{Mwi;tw<`|dY<5^qK%TAcUfB$z4i;IG#sukO`mJ5yUrg9D8`6RO0c zN9R!SYUX#;L0u%fS$r+LbFX&S$>S@_ zEzFKj0gd`w(N!CTfzNILpu0x&3$!})gUht_1|7f_Tzes@{f3-;da)GE`W>4b2h2py z8&H@=2v1j9yrRTdFhHfX78W8w{N}ZI8=^=9%)bKc9+II zPYgXwe==Qv^tVHAap04N8FEq;Co~zK|K#ppvUTFIop+o+eE2?3$_vj8TFwW)we(%P zvsdh_BviY&^@#ra=u)rMPIPu2>P+IlJky3RyiBJ%?KWP7yefqRvHUPm5#R;bp5%$U z|Hj2oHFh6=?7;`_Ja=MuVQzS+cH4+;WrjThhuNf16wTcQCN)dcSD`(Ty5N|gSq}pN zej<%8QBk3c$mKKY@kLBSl@iYaJHga8I68I6fPMu*sp&xrMqpQrZv0iq8C3i^k6&is z8j*M~op!1#fyqSNh|@+6omMKq!w4v;#mLe8DILk9hoOQoJXDlaD}yi(=uXieC`z0I zA2dE%?Am%F&9Qi_=K{fiLof1#=+B&RA@TK%+e3rp$=Bt@vkfnuxU~?vIvdIQb1bPw zTLaBxQ9t`49}Q}umdxD4_r2o})5EY1UwQe}t9tV2Hi;Ir23h<16OYc`9gBGU14~KE z4sb+@{=W~B`X^#MmpjpuyN4DB`|_4)+>Wv#WeJi4NTMO<@hz^Qt!$ER=%XefBm7pn z_RI@@c&_7Y9G;$P^=GQWCem_JO2Xi>>pH-d$tjwzAicm`j)S8Rs=(VL-WU;Nv%)y} zcv?s$lN8-pkqzeqZE?0q1k{I#7J=QKR6Lo1tc6U)VUF7$$O&VB3cOFsJ1`LN45lGo z7HYFu>J7F5nc;b{CBtDdGIT4Jtt1+aM5Y$pSb1f&GBgvf*?!0^yX%jZh9i~5U;eUx zV{*OxXG5toVOU~#m6>H>O^9A z(P%_ux(T09xTaOL-Oa-zL;dwyUz!1wqNWJF;&%{9GAph>NYaM{>EZ#;MJxPt$siXS z(v-*a$zzIN#s!Gbed0SUrUme%95{bWz1r|PIXqF8Kk0FbcC^fhs&U^~GGna7hRgne zdH}angIn0&t(vdqaPDkQ) zBcc?<;QCCysb75?_Q&ep9(iN`s8z_QIV1YR$=$D#Y7U9=}vU2*41yULQlE1^ad5a=#so z%nXUq5eiOII!+6g;6{3M<$I2=y(=qiPR(KOT4f@o;;2s2BOwthK%N70NLku~r?jt%~P<8PS7@?z~}op@dMYA3ma z`%!Al?F$4~mo1ypceym;}&7hk-y zwJ=ATOM?~@#hz!nXPpQ|3EYLtD4>dnn48LQ1{{GnKU}0kNv?BDKwZ(GKpUZB!H5Lp zJ^J%mjUHmQL|4W?N~2BE-s^aakm4*b55uMzcE3RX<_EQCv;NPCQOS4r-%{l3x7`P*u-+19a6H8q}R>Pt`zN8p$~ z`{wbmo=+dTFf+DZFtb5Dl*x>2^vxDd&fKwB8aT;qG@~m|BnFnI@^>6jY!baNqP>M?8=lUQdGw5ba5I>&f}1n8g9`&W?}_aV zlZh}+tCePL?nKhlN(au~-b_uKM&I2l4<`eLH*5}CjqOTnYIL+7{PrK%Ww0&w#^l}? zwJ*c|4eiI3%$=fVaoPBL`UvfGwnS2|%ugbRur-uFhZG`!X?kC+L9t$%{dFTPun(C+ zN$9QW+dX^x@tq@^b8XPNoJxp?q76#AxGab&fO6e-0w>ES3`Aflh8%yCU7*T^OiR*7P8k#rJ^;mZDr&iK8;`>iAPaW zPo(UsmnOJD|7-y}Ivn@o=)*{CL>VuV%nTi>4(HmHW->j}H*$K7G&rDa#Hg1bCDe$U z*>=4Voyx_>h{Ne2694cj?wlH_6;tqY9|{esFFnkFs;*VZr+=Q<)}~-;M?wQcriCjI zxN`d@UIB8d^{HaP?j%ou$Z3$OI6TmrtvCD@U4UC-qU(t!4iIEEGC=Dpi5baR0Kx)8 zfo1P)VG+WErB8=~^Go{(Mq9p;w;D`Vtk||M?hVC*a6_&?}jOFr) zd=}f4H0gwg`W6S9iRZ5D z=7NpMT7?Gz&z2y^&mfBojnZ{qPw@H+DlW)td=&xx!5ia(tV!;@SNkBaGw@Wfh^o6U z>wU(Tw7YfN_0J^+o8;wQsN_C{L5n?CBi&;>n@-8ij=VQc1VNn7OG zZ0!LYb`roLzGhmNlt~~mawkXxwe0lVc*CNZNmApr>o6HSml!`nW}_=s_b=&;_P#`8 zs0S*y`J$V@?fS34;YWs!cDHu<%R0L7ueV%aM6K)V(5R)|Uc=9l~iKWLv`PiImhWMF7AFBz*>qt2gR zXu9LCBz@5eVJ&f}!;qrrAt18hYow*iCR!>zWaGhn-i{=Ep`;Zef-MDAq1jrEFh@mWP#WPQAKmOTiQ=b@K&98@tPZE#-J67l`@WkaNcvLn1+GB4TBDG zfLbj{ha3rR9m#^MaI{`;RoVxuOa)w8n)c9xRMa!q_12Sz*MPL8*DVqu)Uafp;)k@B}jzzwMBr&fG{N6LAW`bT*s`It~T~XjtjX zpfv`7h@SXFI25#EMv?78L*ZC5l8gX%J!XXyVLO)fH&gZTT5PJ_p2*gYJW#a4o~Vb| zUM=>8=%D}9E2bve^m)r9lgV&7vWUAYJd+sv*%dOfB88FWx}9$f6qdQQbJgX?oT3#- z#-sL9@{`|jsQ${iSTesnRon??#~wIdKfHxk!=Sd|i}1&Prc(R7)Z(AtMXgwx8I6X> zqc^s(ROtXNj8X)TD66k_Pf+Qq=kB=W_|!zXqfps}AIAu>{2qWa6fI5FT zlRBpdA64QXk%Q2YzkC*D0wRp$4KclGh%gI}F?{JT!qDUCD{ZE;dafD>Ib$@=3X3t# zf3QzK)3W_c@C03r)TA#iXO;3sLvOVR01k&z9;-6c@1#RM4#KJz?i@YeoVBy{!L_O5 z6>9PvJ&c)VSB5fMt@rF6{_ccH#61>RO15V5cbqh`(f)zb(%FR}Ql^dUpzj?uNp9&62rYUqN&+wh zVHmajvbt}+&W&G4>hCvSC;N5E?pI2RB+Wv+q~>(L-2FmH$;lYnJ(rJctjm=1nf^v9 zp*?Cmswl2^pmUre2jwz2bwv1o$-xjWC5Na8k-u2dnsYraiYygrW^i=6BnWY}6at7s zfm^dJlq=+gfzA(S{~0eKL#LFK!4H%((iXSwH7MA@nTFj?+5}iF8t`Z~9-%{tZU&Oo zT9Uaw=Lp|hfk>b)um#9PM~;qEV?`hCE^ycwkLDjIC=l{Qhx?Du&&3;KgQ0LP=i+N}?e_A{;mpW-?GD(bnoG~O;hiD54h<5QiPs*#XQ$X6v_ihh=t3-# z9B33bBO~eij~8Hr$V)Y|)p#$b{8vzkLB7t{wZAcb1X;VL{Xi#5JWX#g(!p3;f~0zA zkrfXz9)D?ep)$9MVi1!#(@h6|;m=W~`CQQ8g+G_;sTk^Q4d%g^g!}S=9D874zEaMl zRQ9DZwM9yap(*C3^0p|MluEV`Yn(U7t<-R_I7QR$qJyfrOlIyfLn0-BJZKge8M6Z! zdxD`^sH~&?1d7YMW3fWms^blmv&AL-@r(JHslr60QVt{&%n!tK?btC)%Ro9bx?DaN za>gg;re{vX+x3OT)<`mE^pB=Dx7^-Ny;+8+g*=h2auq*gyqhG-Tqiv;)atJkLxf%= zo1v)fCSsD!pi)f5@j9zGlK6|zZk6^ca=OK1@rP<9Ffs!hx{JAg!by0lK(IJiCc>=S z1mS}75U==2Y4eB0W}Cr4y#EJw+INljA0e414AN1vgbErco-h1|W-5@*zh)^=Kx%L| z;E3c^e$}jMHPTf?@2XK}Cv#5s>qdE=V|!oIB$l?N4R;16N-0iJ-=3ZlAEJ6D;TLX_ zpRqeKRI3(p;tP^fQNqzZ9nnG6NxFo{ry?q0s-kG1qqbV|#EL1)n}9<2EsVLfjhvFR zga~keqn(e_V!%uw-z?%ZK?-aN8J~1xBVosx zp@~C&tiWjRSl;T713-^CZ2ypxk(#VvF3BwAqBA%&u@nwtAqveT_kNh!HQ%irX0GYe zoy-KV?#Bl(2dtOzfqAwGz(~ovpneluh*V4l)qn^dO57wjLS~p2yRKq(6hi4V4lE>9 zlJ5PIlI?aLVHx4F&5hemZk*dZw>UpGT*&uZqTeYYwJ(oEgpnJB4${t~f$1E~Q9P5p z(`-`+4<{12h5ZV&g;?Nh;@EUKsF(@$I&aDQ`YaPYYPI2e0k1)t7Ts?nbWOFA-hd=8 z%b!s6v0#K`FppV}2O}ODE_vdw7$<8HRSZWYJE1X$B4?s`Chyr^e@Kt}K}oFBp%fWY zjD^{5p1XHFcH3wm8TChlW;pn%%TqIl7kBUyFfnu18}+=*{MdbWuUE$V!tmYGKlrZv zp_Ku_Q~D~q^C$>;^SUXo(Ew^Xuff|vEq$QA<`8TC-VE%oY3+UF#`+y_JB_aR9Q8Z@ zMSFSY@y8yx_vqpEPQ8?+-u#uf&d*MJZS7ZnGG_Yh-+9Mdq=eJ=^B)E6yk2?&Ndr*L zeywJMd%jm|Smi$NtKsju4##BH8Z!hrn;k6>CGBh3cJJ;A$o{-&zda>ZK9os^AY+H9+Bop2qS~tmw}>)o=OQL zhOuOOiH^wSY7h6f5^J2iyN8gVoVOgg&=pO%YD zP$#z}pK+r&_-4hBU_YT{!6eLtT8pfq5ZQ=&G6bJMZuyBFNGI<|1md(qDJ$V5LS?W@ z{_`+C4g7GtaX~a#vdmT_3?yBG6W(wT$Ec7#359V_+=+T@-6r5BMVCg*CS1$TctRaW z-^j%y86-C-sYe27mT(J(OkUv)zwOUUunCuo?V;C0u(A-7p%xh{T+ar}i6ix+x&BD9 z|Hx*foXCU|nKlU^NJ3X!iE4m!D1p)WB~jZ~=sC`6;4$qf7}YLBH8@t{*m zloqPd$y^y7e6$vrxo6Ue`g}0hfzos_ob_iSrGa+L2}zM7I6Oy;_<8Dq zx3$xqz}o6q!SG@=cGbKz|5VnElH+dw3F5*cjSqfMGhsV2#$sDLwm3gLG~!hedWCyf zfn_`nf?P`4wm?roRe4RwLtZvPEY~+F?+daD%MsH?89nu<21HC*eh&p9;XsKzt3W2< zgiSMKCCO^XGv-M|<0RupX@=$Zr5edjn2BF~15r8?7w3JYluU5Y$z2WDX*!%W%Y`}% zgE(w`rF1d8T^K2c2~L+{l3_$Bp+qL-AiyHO%TB2C(#5aJ~VSx4;<30FO);spn za3U@^0l1{tC<;`76p1;a_9$*mQ!9wwfSs$4)Vop+IS@686iEV!Awv^=0jt2w1Cj#A==@iPllWXsBF>`>a;%;4fq0J3FA3QYX;M~ zN!`SXrpGewE#2BYKTTh*Ki)|+Ly>&_9rKfiuUrls`(my-P>BzeCJ7b^Ma2eVL#-3J znRvaOzjb25z*Kbn+wUwN|CFKs($&{=bpZV}=CoEb1ffi`qd(r$4R{|OEAJ~Fd+&`r zR$xhNB}6}@mq-rUX<#rK4-$%fQ4%FmoP+{QASMu1HZ`dC$U|4|SzpU#x+w{QFfOwb zmQBx`#B|MEk$&})gxNu!8ge85H z`W^IUBa#$hX2G^8<_4y)21#&2a(n45OEpC>YOG| zGD6csYyzuc2WgIDQ)Qx;GR1}AYBXO62aWPTA~Vu=KH#8`*-p_r(9W&gHdr3NZGMOp zV&*vog0Fb2NIYv~^|h%QBX&#An%j(kmMv5^GJIJUn)q5AjCW22&#ak^lXZGHIg|HYwf zCtix?@)ARE%k6{ucG%s$poX$zi0-^YJFT7XgpM=|*{EabnD9MbnNg~(unei|Dej=2 zD?d!3lfp$q_B(!BQGR>xpHo%%r?pe_P$eDY5)yHlLQ#drMTG^4_-DIK(6A*TZ@l+%zNtO_H9;+4`NKv!Cf7!9zG&j_O9izljL-k+ubK`aP~qZ^3;nb$@j zQVf>@%|ak#;<9Ef_l@dJ*-So|u}dYp5gWauv>e~r3OV#})ib3l>Bh0K)Ql4@rtZxm zvTynR#g~677=o#RMqY1XY<#+$_7`x16~hthwy6z2vlIP6U;|ux{Ur_QYR+plOC0({ z7^>I3URs7uUnJn(V$Elbw_-3ZcbqwTs8OyUCYRfJ5t9`=Qi&+>smM!1dm2FFiaFP@ zH#cUcs}*H{2}FfewpG>_BFg>YmwY0O5zz9Jk@7aRkWqI6cg0K@Oaihh zC)&qMZ-7NmAVkU%{|w4-Ko2b~5K(3z5T>CPL&<_+Pu%N|kj6vTxPi`KFv)ak%abM3 zIglTjxt}Nu^&2oYdoVtfx_@eBBp%H?HahCW!-g;HiuK)hBepa9;wlYnbalf$?l2DteX+#ZF_&2O^2 z7X)a)5Dfh#6q0rOM3O6@5#^GR)t(p8VL>Y^&qoy1q3o^|#}FTj1LfvbQovRc7W4Es zT-2$n&%gN>ipPW+y}K`OA3L<%?C+~+i^ihF)l}NbOt*`sO6w9^Pmn+o7sSUPUQKoC zN;8u)7F(Mae5RIl`F<+_xxv?6$tt=FIZ2uH-0yj4gu)!>Md(I+P`+xzPjEQw$D8CC z%k<%qpsR_u)dXKcmMF*7(|5q-2l8 zPYn!>gyDdRrsX6Y|B#W$^&P2ieNS#GT`vZFWWiE4`$WhY9B)nDIzKm1BC{b>-hB6q zXHS~3cy+2h5YES&^DB*}sc^>aA42bIMOP!}$^QU9+tTjn#MhVFGt+}bTxrJU2L3L| zAQHD|5&{(0@&k%>!9XO7vhV_L@9WAkmUW)t)ID993{>C><&2@(X!Eel{9;^fn=l|gCJ-{V7 z&pO`<-BsOH)j8+W;dJ-ulXIHTnjFp~P0~mjjlxJHE6hl?EZMRGmgI!xpv49Ud@PU}#d3LiCHpVEpl>xkuHC3j^~d*YnHy6!@;04j7h=<~ z{K@p5=1@%JeS4us?bXT{?vj8)f-f=#3;-HYECc1qiU+9@OBquZ6aVJLMaVEhL@P+6 zs4pd#vbhvOiFk!Y&co{H4PrZob|GKz2!Sc^N5;g#SW_vCOxdo+2#z7ZxheT$V=e)< z4p=S9IDlrJcSH3VX(WKBX=g|BGq+A{JKH#$pNkQJxOkwl60MYDa!m>(llB*G+IM!Y zk#LK2ObG@re)&H?V7l>cs)_?U7#jxY?Qlyzr2U{TZ=72W?`%YA!G5_YVEBrv2pImt z+e5ih@J$QLQrc0H=9rVdzcJ{bDWK`=--JF%*(5JbCx9oWLvChHGaEJ4o?W7)`E6jJ(i}w|mTAapTcpmLXH}!5j zSKCurGf14+EB%j;eW_O#=4iv*HhS)!TbCNeZnPU<*1d4_Sa0Tzd**jEXA2edEcW6( z`tK0GeXX7!?wu`Gn!rj}jLm$!mx2 zBF~5(4+NAlXRev?%a~=N=|Zwq*YHr_ow`dRgM;Jf$9(O9qE_g2>}Q>?J>f;i_PZPg z-qwEVC2r!H&leR_V7b3md*q?>58i+Jmi>D-txt?sO7jqV1EcoQE_hySbJmusomJ~W z7MJ({3S+k7<1t4S>;k&|dBG48PZSe2ZIh!7T+rQDpL&YSw@ z4WmAtbpqj;JE~PQfz&!<`BJtj)6Vub^jlMs`Sk;t>7; zAWqrfGg2Q&JPkSnWfqVA)8xi{p?zW)a03Rm9fUw`m$MM)%wwJ~s3G^+8gmLw#< z)!QOuhVQ80&r6)bqZuv+TNZ2*9bKQ#DFMH zPK0Cjv4>VJ{&Wm+bY3nF>QPkg+Ed@@N)a55c1uW?`w+ zs5eU!xe2#AONJa)-t6-Et;6=Jre41=lDZOjFIu#tHO#WCQ}iLayM<8%Zn^fIjWo z*v@1%7@TR_fq;`(j!xg6pVRAO!f639qK6HrTcCy9EgzG>+~n3fwuAv1#76Q-b98#w zjkRvAZLU1NdP;mI?0WK2`W$hkidbt>->_UtczpbcBd$ZW2cadl3uc?7DOt!W#H5_h z!w0u)?sc0&~aO)J?L7#02RR=2h@Bj$&X7MqC}O=1kKd+E>NOn5hyjCX10`_49^S>(-v zV%3TsY2gDwbWduE+X)y?AS@L5jZ!Hp5+r_1zwzS3*bk@$apQ*v5g)$o^s%FxS7&EZ z$ssh_7Z3irK>%zuBvvd5c@`BQUm0ru7a43UJ(2ba+|1^j7{g3MhT}NImi34VP*SI} zz@YPfHn&+3%Cw47{}pmyLxC;@M!4PqV|uLVhNjcKQqWcvyLzYCfO3fmkiWV)8Xf!F zU^Kdf%Tk>wP{Evc12oLeY+HKh{?gK?y)YsOF%+_JID3V&v&~Q;+Z(NItmUf#J(elV zSJzJJ2e{ax9t*$I^O(wb%*kvyb-IzhA-c4b3^xlCMeo4EgD|f6Ire{n1NQ%59?oeX zCTUFDCMiMMFmQ&n;kgr;gv;hJRXsIxBnXv_HrJ z#!VzF0TSd15hjU<$kJw%Se)`d^l%P`)8*I;S*I5+ zuhbu2biu_^IQmR~#7;PciMf3K?oy^yfF#kJi{+{hg&??2rj4hP3(?JqgoBSa=&auz|%J zCemr*kK9l|0{+AU|6cnGdRcAP_Vjly@c~<_X-Wi??3L*yAtI>}AXq~6BiLVsco)qH zj7~*Mw`e}l^$YT=H*e<$oLzbEC^$?l+B?~88{>@i`$nHGIkt{HRz9= zWj{IM1PMk;Yj! z#-?X1GO_mVNO5e%Gdw`Qj0YI=+0qo2UC6dg%4gO`CvJLU=fI{=K2h#wanD$9d8XXY zL&IG+{9WakRqu84rFzN_`=lE<&oZuIFx3@g^$Fee?Lbe`o7-*}Cuw!rvEViB%4_{= z4jCGLW7MvIE49zDdIvFB7PL>J$db0K(*7`Xup=P>=Lj#{#P9@011;-^ZPm}i6yde! zh-cAe?Q6!#mpb#BPw01848+!2J-863a=BoQMVaSy2Pr8XaNLqMe?zrpx25{BJ@HLI~Hx;I=yQuyLkIE z#M?cg*$EO%meh88%Tj4(M$fx(H#%FG-oI`-*Az>qS z=U?eRY66;y{p1t|@N4cowr59{(%CS-45CniqVl)cKrMhu9mX0(l3n*cKm-4M zgcA7-`q1j;vxv9h>x{W`-@S|T#XP0JneiZ6SXqJ#9oZ@PX~-Uw!(iJ2EK8ooX(fpqw*53OBA8qktq|2r$Szs034NF)@RElScP!# z14gTlnJ+d5Thc}iV>Zc?GhMa2y)EbS;@QIMxyij z{9U-kqyqrHP??(lzB#adwzDgHqBL1a!`V-nWTUtG{Hq_mvEB}Li`GOceb@NpJ;xsc z2%XCG+M^rOcjlwrOs)ebbAWlST>1y?tJneinQ0x zlt{wC`2Q9WEXFk)j6q0EnYt&jv;s*^a1jpq#R#GLs5dggk`Hcbj3y%lw8X0p*;^u1 z1*MYYJ7LpnI!^dtd*yvx3--EDsGN%|FE@9K@}vX+UDO$y+uDM;AwSi?11^ORPUPds z?xr*Sk*SHP%*<_o8cfh^`s*=ep(!32FLw*xxQGOV*QK}WCF8wd|9`e0pCwFk|GlT% zCE_lkcYJ9%CQV`iu7*XF>gQD5WZ<*{=Ogskzk{C@gRMxg7oC9BZVZo6T(^PS{F6E1 z#m9b=i?gGE+TMQV#IYlXH}>z_zU>B}_zTIn_8R>)0_@2t4JH${#7Q?COKOK!GuY}=b%K$3|{iFA1*ICo<*N(dj4C~DI~@iU3WQt|%#y>eSs zdlQ4D6vO{RI)JKSqZGUK-twk&)(BLy?PRx^YUhjDYP~v3%8_T3apTw64*%T&lP_k}X_jaF>^C*(v@k z48~0Mi0BQg*<=G5bnH?pIA;jg{25>1X65nB)Q;h>%KYvf$nG{4Q@F6+1oxge)6VqYPCX>&Pn~p&+1;# z?p=8A{(nl4bY;E6eS7J@>$ezxg%x@y+_%SWtO{0%;zE*tOk&_Xtz@X+en<<4v``p% zp=r-(>>8l{#1b&pji3p+^YJhR`GI#OJgVN~ zKNa3roU4w(gAU^17a*}f{M$i#*|?#g+ZhD{5SmU{MCNl~5Q9$aKU69c@W&C^fiEDA zGl#21LD$!_F2Aeyo9#LKiZWE!w_wL^xsyf`&6J~rCSq$n@hY3vBG!j{wuTbR!wgNJs$pHLOXK5@4s zbjkQM#gt(ovd!a404OmnG9cZ2V__;3*)mgZNu4E~G2yRE3y@7W8iiIb6kSh+otmB= zeJ}xEY`~l->v_<;0C@I(^;CB;+t^TV!XgvOc;a6b*SHR}BI}6{|s-kz&Y0OUHi{#c0N% zEt{7YoArD)z;jC+N%&e8Wz8%PTHi?T8$B1mq2s1~x5l zf*YA!*hUE@P)0-qMKBwIbapP*!jiYcUv|7oZ~b(4dgGUVsj8acl=knKcVy91_6ga;C`Oo~2tp;W78e|RC8tp_lUg7I#C{?FdA<2GvbPyO=6 zKTO3U&%9s15w&WDg3u@GUex@?KTm9i76`C_PA$H{9KN5JSgl{a>BP}P8~e9yS)cDU zv&pE${y1O*BG6EJd^By#+LMV=e^pwN5LOoC8O2}heWC;EJ$_V97BP7-<+3>-7)m%u z&JJK3O%E(M2?@eW?pU8D*9My+nV3*4!QQtUS!gu%B-X`Lf`S((ZKq(TW#eNdgBq9% z1=*scF{q7^y`@J}E=eN(IC-O8jjLMA`tIV?T0RiU-E;c0YqgMFmVMCvyIt#JL8G># zSd9T>58I(gGT40qL#t>_6=%z}OdVIxgTdX7cvWzewp06~^+#UCILSVD;J#nbe!*`7 z6`ex+5!ukm;t?CeA(9p+@~U~&tLlZT4iir+%5jq0N0B|GYzN_S99K@RcH3aY{i}_V zUBRZMHVK1~qlvO9kN8Cgf2*ruSqQjcL0f1x^4%R|EykB5R>|_SWjg0oCO;=OI=>=S zMB7PjPJ(V}TLNjK;=WcU*u8mq1};!WI~Fb+v(lMjE|dhzkn*bOZc{RJW}t+GBzJ|~ zO?)hD?fj+lkM52ps5b!p>h6ExLoikKQrXlR}tS^NM++ADLV3EOiLQ96tE+UZ0kq^IiB zC?E?A-}m2t{L7u%!-9domM?; zN2m`n?lxm*zVx|!$$o~@(RM4KzwS}f#dw4Mju3>)CmPx|_!j@p_%4kutdgh5BBfUs z+oVWIK|*N0M~(aNj=SoP$AtBXR9(4L%p~MifoL<}NbL?BxBSeSv9U36BFMpumO^3K zc*|mzHhrgpgOrou%LPFuP?-2z;D3aLgq>@$A|~NisISwCQ%I=waPD1{#S!?yWW>Ce z<&=foH4`tpuWKAi6(Wh1O_>8!z!AF*N1Z);_dd9=X6py5yTM`JdCTKBMBF4S1lV2a z_Mrn4dtNP-t|IS3+UJaS&}Z-+{csZOIM6&nLWS9sKsC@$)LF=`?1}>{!q10sraa?()YzkWbNkhd`!2$`&8k0SKC;anVy8dgdnRG%8t`_le_8++`zPK zO4)X@`9!Trlz4gh^6Dj4sn+j*jXL32Jc*TA6UuS1!?E3DEhmF3aXSVKn^rC(vY3t6 z)89yc|MK>B`uq!-AdLS`HW+9|Cr&jI^%ISF@mO~7NCfcJ^UU-8uUXf7w8?&N`=%u- zn8!ydXbEJAOy{`pkBrHjPG}oa<=ko{)wugez*L9A0~WLBFNp~ad|x6EzJ!tWtNtxZ zijHq8s;a~cLGm1(dj6cwxJVL-7U*_7UM&&^!;qK6ycC7;hxQFo2NhQygEkaT=)zey zp3+NmrSjdiY#wMC#tMxdfjZWG+{=Zhv&v&pfh>HTBH?Y)&YFv#PC3_r`;voY-B=mF(S)+OY{XBugtR zhL`988v&~%tMV0@Xo~ucH1V9rGC6@;85|IWR%fIN<#in%@2M-msmKC&;nHQgEC_>X_yq2dB$z8A{sjaax_OOK`U;m{9#avRUl)BaHV zY36W7qb{t?>X42@2DCcn9$72?_7jK2G{?=2LSu@ZlOIp2or83d2|~)KG>`ZhWZ@Q; zMGMFi@^sv|ddi=UIXNByyMfw~sF_P7%`VI#B#p(Il;R_BX6eP?Sh63PT6819;9OQG zFA1m`khc?cHmY047hOo4;VhK#pSbjd_BX^|X9cs~O5y`dQF%|)Mu^jx1df5mMc2EE zJGG~X(`L1q#+|Ji-P?w!U+#Rfft|#>D4{R6jk~UFDe*2P8lyac=6|Kdqb#U*#9)S` zh(6XH4N_ngcZkEl>|{UdhIhT{(S@FExk3BE_cef|NU@)s;^L=AU2oIVAN+%R$7m_4 z?!OJ5IgDL9E%)ES3r79&jpq<)r=q%QDFsMg2Lco7{%PpY8n35@_mAXPNw&>Uf41Ar zfdL_duPi`ukChX{3fhtl9!0;&gcI0d z8;L@cLN+7Z7-@ZQdUUc>$?R{Z%Is#CQ0wVt&~oZ&+BBp$qr&0k*XwiTM16TG?|pG= z)Q&`TEEt(X;VAff@>JigjWCP1_2WWDJl-IVi45Y|QEs} zBzdUc=q*=Bnn2JVwu@8yu=M#83g=JxBr`^&70P$^DHww80^P^SX)|73CtdWPdq}t}m*po+~7c$nn5M8PKlhNGLcr(Ym2k575rdF2v&x?9AKP zqoC651oe_i9gKbIJA9n|`lZLTyV%c3@#zLVSwtI%1n4Oy?WC5-i9tOmIFQFey5NUe z%?-E$ijei=`oC?u^YEYi%G&|Te(1@IfA&kZ1V~%pTz-aYPil0(l-ZDG97qSlm@qab zC(6ZS!jv`AmiVI#qn}U~n}*RPfh@v!D9Q%o-W&_+c4!gu5A3~qia;4?sZfo$W00!8 zN;X?IC~{%5Bpb)u%Q(0{wM!x8iTwl|*KD1B^u9CoavrFkB@O~tvq3~Xp%%8$O(xpi}1qP zz`9Yf)lSFa$J~6*KwO}AFoF{R4-nGX`9Ec1nYEGHCe#>zg79G^%l7$b&emP;W+LV3 zqVasGb0n7>hq>?*KfLXUhgVi=kHo|E5w>(rmcutbwCS-2|8x`@rHfxRnj`!6P1YFy z6=b!CuGytM<$IFej+J^jPD4<1<}9{vzTi7 zwmNg)U=)~psUulpsmMZ6YCNkb8V5Qm5fs^?nLY&``weY4i=k1Tga0HzMTYBsD|@JL6Hd0o?A&IX)5wvM>k})VHIU2w!D7gc&y7`jdFh`~YNe(obh9;9i%8E3!q35AJQkzq z5Il91h{~+-whNDbX!K-mZ9W2H582U3=-vm$s*m4!66>)zl^m_El_;U4?MK!OjLdG& zy|)sK-|;vud)#aDx?Ro4o8 z@NHU=ShBpF=w_lRbFPgQLca+;nT+XkZKR~qo65|R++0c=Ql&m;Wgj*_ng_UM7-Mt-tCZcM zl?#XK0V^I3y1ChPTx8u`#AJx*CD(ejAkzTK0#>0g*pBd%GM9oWm}n~HR?cz)w|xJ} zl`h&g5c6m+jc|(OLM3lg_ya%UCGtzNx)V&;Ph{$={UcvVwx^wOIP1dkXzb#LLJdgg zN880z#P%qf)U`J0)V~Gm)6v@fW}JnB7l%W1)pQ|Gi7a*6&H9+gQ-VrT_TA%BQJmZ?$>Om1z^Zc#X-XigN@;yFBwJN z|D(RneLWzS!Rh^57pGdy8f^ObM@QMu#=cPrg5d@tglQ?Q0tbSQXW`&Ayz1VYPHf+{ zvOE=3az=9G7`RfS;EPUGp@Y$*Bwvca&H!rqVKrx7SF-X;@s z*dJgqDi>3trm)4KD%DHCP*qK!VO)UWYB6onD|s^(F?=BD#kbnV^O@|$FTLj(({fYC ze)-YHljV;*_n#M2ZHhLXEo_YcEqwCGFu`8=Yvb>=hH;p?x6RGm>gGXDz|GR&;3baP zqLsh-F!UiuQ(`wWF-x?K3h*S+c-|N1X|PVdrhsN79M`koRL zTDm9ZGwsCuYxXXE_ciY?zxaKee98R`&tHG-kNZ!1>Br@1)tC(P9t~qfjmbLx<=g#F zdAmA@dmm-5|Ejvq>fo3O?Th{~U%YaRA0KZRYlCCvuDi}KHr+7R2gf|5jxqF4U-emj z{I+38X5VIPW7l1$J&0{KjLm~%;@2HBjF~kIVZE2@yzaVVhViI|(H|U>*Z#_XuD=>S z*D&_eFm4zevt4_mf6N<)#|+~u4P)Ejn4Q;s)-aCIFt!hlISms{Sk{W3k_$1;v-AWO zzqeuR931n;OCKK0*oOzlj1K&>hEOS~=jvSdSwsJ*fu!?~d0ZWH^*D=NoK&AhEJ$7F zwbwoS(8g>S#JJQkPiz0|Kl?uqpIvO9KgRZH7za4UGS_FnG`M5g0sa~r+7=Dt;NUvX z>0OSJ?a>`PS7)G48V1=^^;vtbd#<5uAMRhZ@2>td#&9T?8pe^qb>4H`b^IK`Uvba= z8e7rUuifL=L+fBJZF&_}wZ24MF)5Uem{S=O3 zi}9><|4`*)tMYr>V%+rD+X*0 zEQuS+#FP0v@nzzI>2NJc9DVe?yT0?j!>x%z!gZaK0US(}VT^92fDPTzLt+O`{aG`dWVPC2HD9{)??Y$y70T1=RrK!~^CsM8|DFCfo} z_EAwnd3wORr=csF#}JcF%lxVZ@3?XVz2B)ppP!x1qzXH%a9$;oB-t&#hN&z7j3XPW z12sG z4Hm$T{DppUWF$_bSU60ugdD3@+j=JRx@Y>4mG8ZZ%*XDm;U%@K(f`wa?I z@vG)B2K=Ym8(myq*%C>>VC0xNFEO^r*y@wDN;YAc*3!0Uc=s}#fZ@l#_AK7b1EqIm~!!NJ6F z=YDv1UWIpIrI?-WK@|XHqzV&Zt*`{=#4cfBN^B3pcBW{sV*SM`k0>NQ@`UnyV#|s% zqZaSrSF8E1u5IIohd1y>z%W4K>d^<$tauQ#M!ZNO21PiXB=tnM63K_mZqkf|!rd5b z0g9a7iX|ZI?-6dt2c&NW|aCv63-K2LZP1SBbv4hzqKT7oUf&1@! z)xCEKJr{JLm?xvk&rG%CSxc09-UC^Js&X_b&*;P9;# z`;0Pely@x#9yXv#A~9mJ)n%v@2!;ryG6a|A)gAzc>2Cn5)8+ul;d3~Zvi6VRT(h(t zH<_j*oW-QmPC$;$gmY4kq=7PV`WiJ5=dArBbG@tYU!+l z-%CLc?z(9zRxBYLtCR{H<2*Cc<RHRIR)+P=BX?Xf1r zj1XT-R5zDZmbc6o4hZRNp&*mR+$Qm-rjg7HqQ`F99lN8XG2_m{=C8l7WvMsKMtb(i z6d=@KtQd+qD)}V@xJQr)gJm)k{i{7m*bA+<54a?!?_d zpjBFG?7nMxtRs^{Iw>586^ix!+u9Co8yPA+)f^2hJc36Tj@-B0>vb!w(RA7K9OHY~ z@Y+G@`MyrCxmhBGAk*-^fT|E*xw<5AMFl_olEfurV{T5<=622PTwCR=nUN}70YjZ7 zqoS;F(NO+^<#{bzYOB=tW)wtJGX|(Je-x$Giq$!TBw%#kUxDctpDM;+SlM(l5YEz< zyFe*QxREV{cn<_dI2TDy1_H@YB}I*G5b}?7G?S<-6bgm&_XZ{=r#Ds?rlkfBisC1? z+!m^KTC1JHOeT@3*0V*&N*`KTJ+iaaO*Lare-}N@9EZu)wZp>gM?cVpXzE;?9DmJW zTMyk)VN_&EndXwYQJG7W18Ak3I2yuYg6Kva34BR}8rzNV39O)2^N4FFa#8eaBN3^@ zLQA;{9l*eU9Sqab(MVNud%o|DKQOgEF1m(dN{%kag9pCxdz9PMSk_xF{WtA@m`UPT zn~=>v-;XaLkN57_w9u+D*_7}4{bwX&qYR4`m9f#OxYhM#6|fZ;(M!I)s@|4;^pbD; zXP0?f%8dZ380RDzbmh{0n%-P~osD|(^4q3m?c%K_0mZ)R0KqQ zmz5z?-3}Nr=wIZEK~wrp{Q&5z>2n~fP_c-yY%VElhDAo+UF2YP{w-xYR)@aL4NXNN zb)aAnPNdS&P+%LoDc-6kJgPknAZ@u+Av|6o(B&p!P}Y-?b}2W}eBV=vJe)7B?7P-R za^Q-Qe!ZQmckiI&RR7A`ZQ4cDOUA7y=36xRN={`SJZ)V}_nLRUwKkqA{QS{W!%RqH zy8NZT(0FL>+`3lmhx32&?+u&-E=7CxbIyr z*28pm{>1*YG0zS){s)em^29s>61-y~g`6iP`cIyMuF3$d-6J9ce^Ag{p1*tts1?9h*C zU&3x&(B9W~0K02ajWet=$Py+MJ2 zU?ix65_G~z)|~=%80Mi;zv5r^`U3=dE4#JtE?{j>j8Eo+4$)=UR1jp zk?k7+DEK`d)XK#JY&AU{b|;@`SM5@bA%-n8#$3Wn#hUmWw&@YU4`&$oeF!_1d+}jd zOgE94fY?^bO5J9Nfqg_fJT=*Ftz<3#d4wK9%{_aeL%>F7OGRT|K3$>vbJ$7;ykL{GaD9(h!bIjJJCbyh zRldc%bUcIQfMkKgG8^(Yo%${{S(zd05J?T$i4&YDm{#H9 zdihf*-k<`U&G~J75F57e6QBE@_rCGz`|dq^$FU;^5A5H&wmdrnxi6CcGnTgFn=Jt2 z+YyDjI4ZvGUZB2?-GcQCdatRvXY+9=8`(=r(F}Bp5Thd|@X1A35VXcq!Bm#?z7Hg$ z?nAa41nZ?MV$=!&iDrj_j8>Q}Tzmu+xe$qcQ%xD6 zjfceVZ8OP+pzW$0PdhVtjfM-~bU)~aU#Z}~_({lsol24dVJ{;BfUTZ{HY*%Vw(>Rl zSb@lb!rE~>fIsov^jI1h0yC={&^set*?l--odo?CIoYQBkC)v6+YlAgQeMJd>!`gZ zGV+4^3&TScH#%S3;7x;+L$!f%Z`Lvc5DCzB~1 z8-g~)A=F)mv;e=_!81~a6dZ23`KvAflsTx{8ok_^RBNhJ```Y@$_CW5-}t{j`|0of zz?+_Z`iU$0#>J_Z4Tui?*VQ?g!!Ik+ga3w`^It{x9e&vzuFw8!?cRSS{d)29-&6`% z|G#c+G)O@|tv^j4gp=B>dfeBbh1muYjFJ+JL0db#OQVNVVBbkSJlwt6%Lg3Zg>4ij z3aj4jzxnQbL-<+e9Qop5D5h1yvbB&kgz5Vb-fr7BQH ztEi|;E}O%W9Vi)P{YVUFS!Gq562oaIpHuRP7={GYRj}1wUL-_w$7maM@Gzp7O4c2f zw&8822?}h?rWcGm!AK?)gAI_7A(fd>=TydRFSk0HrbR)gjp+cXbEy;vbudaI=XCu6 zZ}0vrUMZkCBlirP{!M^N#VEl=R;l-1WsbU%q|rf8V8_ z(%ucMD5vG93*m)lC5Q0{1CZ0Q({kfkF^pzefu!p%j|CyIeRO-loHx8!4jgkeXYHhu zfalT}fbfJ9jc23ztttF9Q#(pO&|f5%JHJ$8}CpC9di2$s~9VjlOu=xmeiX9^nz924R09YIxqNM{MNVIdRz| z^VT|hR@2Tta`ur2@8^#1y!obs2lnjV0YrMNwUlcl({r5^qE}GCOUn}fCWeAcC0-yY zxeftvTuva5Krh7n&#E^?1gl?x!g5Nd113g7ZFHDSq4QSrmSy-cpsZ*uN@v-C($ioosPSvKI_a zB&+$dn*Y0uyS2ZhzR)Golj$c#@lrFSX)F3hFO8zijT6h2OqCL9S&C9*OQ{=HuiRyj z+s}m`g5nmGC!`Xz@w+!XA3C0kl~3tVEf8UGQ$Dj~m*2e@2`+mg`fJDtLzL56uPwq?iqA78-87 zT$CATNlN)@)hti)5{mRLe~~p_tWU3K?3I_+tnz&SCUG-9XBM8s+u6IGHX^>cCe0SW($b6BdWf-gmw$6s_I+9;)BKuc;V%2ixluwwGZ%`w#LA z>zBT&eG&g)O?y?}t6>_BNBpuf-&dgXEgMJ+sB%>mO-5gfNDv_Gs^Bla=@H986oOY*N&BvN3XroMs zIAR8x6|W>smqNiNJgMP^YkEc`;LqlhPYEsRz=FnOnCnEN^jz;Lo_@4cSDy zSPqBEMF<}syn_z5C`88itJ-H6hh^=)zKd~UP7tZT99XZBk!K)OW$pmXzzk^D48u1$ zLJfm(1ubh!(^DhWQofP0nK6I1a48hTAAKlB-ZF*{f>itw=22o_erAgjSj4E>i2Div zFv2a;obfo%)PnReQc)vQ5hSjROd$li;f^<#{)`@`Gun^#!`)63pt`DAmMoMI36QiPRX#`*s!XO2P)~#5nbam08YM&^!=ofP)^ywOQ6A*2l(Vbkx-zMh zq3Vy>?o6UiJIgE~McXNtgLx;`OI6arAoVTI!R9ywW#ZE3WBLy~lj`Ki@*5!P?Z7+ z|1+ISuhTxtXV$cMKLREk^r7}ht*Sg+wYdaMB*qF7XIVar4W&GLtC{==pOQoW3rK~I3@Z!OH{@*)3`Bb^X^e-Iw)Sl@1Hyu5&G&ZW9wV~gx{{g<6 zr{!NxK8rf44`g$Fn)Jv!L$TVcF8)9I?Z{@=f=Y@plj|J$*4Mc#GSxz}=uSxsOBxKHD_$EUo%Xnry7Cc}Z@qA*AHB62^m0Kv; zmh=jNQ?66U*WZ?)XI~&;C(~v!k~`Vx7dp1Rb0$AuKJMrX(R8VtZ$Fkj7;5~SOC!GafI&F6&h9n47t!7`pg1TA+&jVti&8pZ$zaS39WH`_(1! ziLV=;uGUG@lu~dHvX9XZ!$FdfK^bJPK;UE%HyM`YB|^O%r^=C7-?GFn9~BEe9~)md zq+6xXWHcOwKF~;pQ*AHpq{_+0Vm6e3iq$+BW_P}MB%kjFBUX&^ouFL`*PR?JwtYB{XWk&B)gpX1KRo{&0{XDUx|X*cbA#!L&4}@4h@Me@;&qW<^*0-46HA;vORE9$soV z=>VWa23hO?K%8*qP4#@CLpMm$K1@O>S+dq^|CMne8W5~T;^D(KjlM|Oe zk}(-4<@62XEqrE6+3N-FLo<#mLk16q-wvhc>Tw~K5Su+EAfxz-Nt0PiAZDzE&6oaAUu7*cSfQH!7UM6pw`swxKNo!OKi$9e=X^|j&`+Qnc)vk? zgdS6SiLD;%A2~SH$OECmXTgVBngt(vm=f0Ff(E!#CzyawxNYJqwEXT`uM(B{#v5(Gg(aD6yBhl!}tKK)^WNIS;E8VIBq6yJ|+3^U# zLkMJSeew-`@}{9sX(Sn`q>FBJdM5On^+U$L_+!rQe1SHl zmhr;&KkyL?m;OKvxS_3R_v_CZZ)3bKXrJjf7700=Se@wr+<4&J-KWbr;(*cz3dBMH zrbJ8M>$mQl0&W8okJP0FeUcS=ipnA__#Dv~Am;Wtht_paO@x5u1Of|U_$>(*hspUC zXK7mKBqxVdZo-iS5BJR#W{Aztn3f@!H>`R^NI<@)UqR+!qF!7IF}+J(iT_@Zk)Oyq%Pl9Pxm==@3Wh7;$dh9coSAGi z3?e-pox``YN!O+*N{h{m-k%zsE2h0f3I`~g3wy0-uD-J2$OaKsi#VaI99@Sy=zlT${|4!FFORvT7h$!^{8)!XgD? zsqmndH80@e=1U#NAt2U_;5m4xISN1e@S)X}DF{WHjnU%3eT3Jr!8XL_N62Q0or>zm zw)Hn8Vp2Ay+LOKmZHd{`?)Ygdu?z&?Z6lr4#zq6If-INCOMl%`VZ zN6Xx18hIE>!}wv%-`;SNsq{>-Q7yMpg-ke7q|5PWHV?=fHn%9yxoiU3!H>lf-SeAs z70*j~n{-(u$wajGr`qUvwwsKi~Kx`N7mb9r9(Tu4Uk0yp277qjt1^c%4Q& zBua_0Y#1PV_Yoo`2PfbFwkB|W$Wh=9r&R(wlyIrzxMw`wbyr=nZ*SC&AYr#P0Dewn zka!Ul`Ib@kHyKkk+-u|EA~h@4 z=T?_I&+<0GMjCOm6WMC26Q8IhGM;R!(|s%cxqx~5PH0QLv^Q0n%77#TOfw~0 z*#A%?2EFHN#F&pugt;}s*lnh*uDOS33WHZg`|L%e2M}@CeGDu8N@-7Mg32J;tgv^- zwPU-sZCaZgD-~dG7UNe*AsHDNoFqZXrbPg0S@4*Qi0}OmeizG3*0TUrGool@0LKk7 z2KE97Hve}C$d+P?YKfVR#^;4R18|)c&jMhlsZFAnf;ZJ^mFpqU9HAFP(v1HfjYDu~@r4H5YB_De_f> zXw8;&@#11F-^eYb9PwLOvk7YI{uBAAhO&fh<3pGJ`qE8@ z-8&%eVF87>u*xB{Q7vuz4HFhUYrJGILhm(7wr#p}*Eoj>@#3~U*>tfpOUYQg7X=rj z*CrB+T|Hf?2E|#mF)LDCqG4_<>?NR7Vl|j(<8MTb>{U5jbmfo#0 z(>fWUhS+eZNAIZ5AT>3AKcirV|97F*Qi&^xq1w9WHik(=-4PK zu!5rAWOplt)RE|wsI>VGBFQZE?qa3{E9pqi zg8U^j(oAr~`i$kppw|h8z4{i2X2V`?j(f^XLGH#CXfF!KDD0Dlx4YFkyn+V7iyWt& zb2K+Ioo|;2K&EWFUC2ir6lkG0l3!?zKO{0N9*&FvSpygxnm*f2*NY9h5y(8TK2`~> z9DtGQmeJ-2rRpowlhq93YWrGR@+JGQ7!k05+LYM~5|vG^Q}1M(y8Q(B91KmY64OL` zS(Xa5u4EcvA?DQe%x1$r~_*;%(lu)q=$r(F2?kv>3eE7jr^i?`_-$^f>uJh(}W+r7rmTnsja^m>W2BIK%DxYDDhh|`#6r;3g*U6%Y zEnz&tK&#X$fpo)|mr}DOK>DzMh&;ajXjP7Ou^E`-aAQhCOfTh`AmuwIHb zNpJIxQk6%M@|7;heUN3;UdrLFg0 ze=B88p~OP#qgL~4N4MK=d170ve#Zeu%+%tS{t5f;U%)V}qc#83&sb%c0Auq))wE1X ziLD!?3$-GQ5o~pG@MexO2=$J%Qhw<(hKRNfhoUM?@YonGmTVmCdFlnlj2ELtW^Z1V zSjZ>T<#6gr4(z|uOA^kHZQZiIMr+!s-dJ%$Y<@*Ngt@M?pM(uMK0U7JUD=Q< z01=i0S(uZJ*Jie5*Mf&&3ugFjX?bQ@w@1xNp*o7cjUkRjYedqa2#vC&VvyKCu(_J7 z8&NyyN)&e@%Q5Yr#{tFd5@9idU)g{9kf#ACF>x%o(Ia`tif+^q0aYkd^` z#!??CFKlzICms#y3zLP)#s77q6*%7or;C1O%mSC^?*_!pQSElU<~3`gvmq}Ca6CFDqM`&mpiS$c=Z{t_~V%W_{kGTZ%n2$ zxlA=zoOUs{l4vbk45F7`1B112?Mm=vF!Mj(&WW;AD}uGKfDF%Gy)gb)?4=immkdSb zu38+R;2_i;3r62>6g`-I0xS`0TPLu2{OnZ=Wsgg*r_SNVi`L2mo7GyG;Ja;a>kijT zvJCB*Wf#(K-X+L-TJlzYAf(62w)yVER^Wlli-)B^U+h0-@2?_>clUR+*mC_v$o+!L zWUt5@Le43*$%69`;d|At9n7o0YbByJF`jRYQ5OnfIYX;R`23AE7)NBMGBqT=b7GksWGtoQzeFf+-xDIg@9XUU{p+k^_;Qsbd}AD zSLoUfxUJbW&h<1f{z$q>DvBrl-E7&wfGN-Du1iN(d%DJ|*HL*ijxw)H9 z-FTSFnmzq3YpctkgBl}gx^EFVMNTu8V$V(+-oeo)7s7q{zF|zRF4Pa32o4jY+-56B^#Sp`9=1!AZ)LD_~sYGdb1lW z8piou^8HoZCSU-^$b{B{Xorz1m6kb#8@f9@kT(gvqq(m-K|XwV=rC~p{Jyt8_2jD`y6cWJr~Tl0V?_3{ z6r}SPn@eb%ML%4oW5bHhiMPX0qYuRX76Wa-wgye4CAHKfaRukZtN{HP971s^rz|r` z1Uasve;31@*<&IJ74oSaupAQUl5j0#FIMxn;cSz(;FxqotbEQkBLqELs-e*07ca*^DjhoiLt z>AYjaLkA}F<(v2HUvgVFJ$Yd=TSzg##BqeOKIcApn<5ksXbt?gA2q{-C+;Km@doYd z{o1L+hZe^1d+%9WHLc)c7ih|BA1!FkB8^4YVG zyyn7rLM8W|z3=uj$Bypbx9x^rshR6Wkz|^kiBTpkyIEAU)ifojA+%4p;_}+SAsBGw zR7|WsxF(il1qwD5AgC!YyEcdl(@qh=<7oXyXVM|2 z)1}7P(DT*2*CMHsq@B4F%7-Gobc_NQDnxSBS>x>Shok`;(FiAR2jod>AjBtQpGV>U zoasV}_(IZcXL@1tg>4xb^1M|2Y^`~JT+EX!dGg34Rp)MaTfh! z0D|?4e|fW^KVV+`Xyuv8)8dN|^QRfvd(20)NA+iYFQj#N1C|{s{Yp3rw-7wND`t55 zBd@-|1tVH;UmZVY@4y>*(XqN5t6g_&|3!zr^d*N5$~-lT1Ze3@Zl5QkBu)JWAb!m` zNyt|Bjzga5N~BIZ7u8jSmfI1GGc8tMd@5seuTX?|t|2GfedPr4rsl3Xfp@gXbAwMD zp2i3rm(z9av|NF3Q>nlFawlE6O>R)#>D@x}sh#0wX-+06HR+S`sP@_i?mKt)ok-N1 zZ#sVL=#iZ}w$+=>ahm>MB4HjWW)w+pb*QsIh7z&^=+D|Ef<&zq5>S3Y@9`HADBt;# zK(l3D0!&LlfC zmfK#~myOs?q8h;R48S9WIST}u6jmV<4*>~q(#2vV4zuM_D+vw#uEV;10Z$JmWtL^o zx&V4j&xJhef%yJTbG}UKAP|cL(nT_8Ng~#%;Lh9LkcE_TVK@43vP}&u|O$n2icW&GN0&1-Cs8|W|Hne$w-ZINtnV&@kd~@HEJ{kg2!S@ zA~2G0f>yR*#loSyTaJXIJjRChCwf-@TWSh&T2tHK-(w>pG(z$JA9HU47-v!UkI&4r z_kHgsn`}0_NjAqO*)vC*rn%dup+|ZprO>2lnx>>lNmEL(+)!#kL_k0;5s^!fEyy7v zuOI@pfQW#2p|2t$^7aJKy=vcfRvIU{L}G zVPK_%g&<5=A;TEPB9XVAw;G}$G~4Inb_u?)F9g@gUJw+Euujm=S|{)ZakChq(Fw1E zVXo^ZPsf_@qc)q)Ytfx%+H{Ia>#RR*z0Czbbv8ZyF6wB>*P4eR_tqkE)m~VFAUqe3 zR|4Hj^iVN$NV(2atfiXMUandQrVvZ0VXXg|v;b+DsEYYIfbo5 zKpO5T%8ad`ZaRg?I+$-X7B%e105+&ruXdWS(@4hv$O?3APXwC^t|};3i1CYm|4;N2 z(VzeC^)nfK9_iq3t{;BC8%QPWAS*HUXg7HG#i$@S6fQ_O1)~$}NqGc*qZ-QVB_8*b zYjN^57)VP!I0TSdkC1NhuGNZvoV9=oGABdxnHPEm!1XSuxj1)u5(Tgq&>LXzlpl53 z9MqyK&S!<(;9TPiASkrQU|OZOVgB6?O6+@BW2_x%DArNC1I(@=*;KpWm6pUSO46k%-XLzWp0m_O7z~N? zJF@ybw5z!Cv*xI#d>@FZ%_}U1F0$S3iWb4~hu&y579`xe99+eDhtiN<18>MU)kUhS z&0e+JW6)RjFEBa~s6bcTFj8&SJnVxx)SO0OUSXt#Y@@B1$D4p9zg1@PP;oF1K;lz5 zw#Mho7+HTMK6SMPiocVtA-O9)FfsW-o4V!Z)9fJI!-?pCj>)969Ct^DCfWGH1$%;V_@_ z)hd(zWb=7dI?K7$$D8^S#db0E!$aN7+;8=VR9bxpS90Ko=&N-!Ml0#ZBm$o!BQ2Y` z#aAI*wvi=>r@1H&jrkNDHmJKngt5cMxgoAC32RKsbrA`oZezzEYIg$i+Kpx-*U4O7 z4nMx-E6Z2(bhj>Sn#X0GD8H<%AUOS-wY^0|ggTT=ibg8_eeXO^FdM)zol@0~hOt;sWqN2A|QwovUe$rl8vftww~aR-Ok7U3m!n zs=;o)NuSF?zXBPuTjhi&Qv)^U7eEQr>~K2Z&-nytY|5kwpy^J>U% zH7=_w2vCB`tfPOTm0$xZ$wHy$n+gG%K@Lqe7l4>{xy2~m2xk{q`EmybuzRQoha(;? zl9b)O%(fiv_5W$pVgDvKJy-}u6VWsY#yCpr>7Qnr2D^AvKLB_847!rJ)(Lw4Ct3zO zz;cpqNtA}6AOIer5OE2FS=DR2%jPD@%%(aKoY!NVqSTDA*O_k1tkt^c}TVaBgu%upW zhtCXG#MM}Qg|oQ4y|~^H1{v0{XF6QvhUsUFh4y)6vFl6hu+5uauqi*<-ki=a_+k*^ z4n#~*tLs}3iW19-Vw;OT)Lb6V_trGlR~kK$LBq;{isN4$`MOT3k0_v7U09Z}9gfG}R zBc;M#Be%r!Bp2nGEf<&MIdm$M!Bu2ZYY@=aU{dKEc_kNHOnF7&C3Rh0bxUAiw6x%& zf?dm|PrbBo^U9T>Qd-Jw!&S{_1h)1NWd=V6pe$4lG|eiTPXn!AuNRs-6{TK7H4T}9 zRW8K_EvJvzND!yY12IrgrGT4GsHhI4g9~*G~~E|_CZtt ze*-60CPbAmW{%Pzgmvl()dt&7pe;D>XeB}JWA+2s$Z%Uj_%f`_M+gqMd*JIYj1cT} zV&tkW02&a%-HTx>iD8Q#TofrT*PsWnxZtja8JrlRtF$hs*CE7)LWs>fR`B_pJL2n- z4>eF8(;%YzJTpA{8En{>cbNP&OJIb~z0V=4G4$D1GuJvQbx!}HXL>r%YKh<5^s6@^ zN6~7&^Y-FL16Z2@$c$8He@Rb<-o{~0q3^K+TX2}M zVP{LAxk%MI+6NMZ?Hq(H-3s=OFU+ZKdEeTOwiX0fomZbq)FKFLWx3q|kp?{H)H1$Y zf#gW;xB4)KGZ$NO_K&wwP^m;cUytLq%;aMcE=U+hUM<&06l-zb+d`g%+#m#yuSTHz z*0nHhgjOe1zl`}_z1pn~Q=`hPb3*e|t=;Q%xz*;K)zs~BA#NNr$MW+{29Muvv-xa# z6Z+?~c9YWsUHbUJ>U8t+ILkxsZK;mq$9xg15 z8njqqz}1IjgJ}^co20hA>oMY@L1p?ITu@-ufH+cm_9|DdV5C3$8(PoK6fvx@+K11H z9O46vQ&p7}3;^?T11n{gEn*yM^_+6^6^-~6C*gXn_oi|R(hTS4@P}^EhDwSx(8dRE zp>fz$ZWC%RLAedi(J?+9H|UF;em6o8T6O9C{ZHRrd`%j(NAi~VmvpT57-KV$s+U`M`=jFZoj&$ZZAE^lqIq6^r?7eaQr6s?z-cBIAOObsrMkF)LAWFUd zkl8%_Wuq$@!~B%m_q)VBEQLkcT~>&LJMXqc620#)xvW3IJ3n{S73B#SAih7V4j%A1)EkwA@=GpLZJEVK`2CB zrOKzVI1y9FYerxab$J=O&O0v}uKGL}a(BpAwaVcs)HFj=QH$^l@#0Mov4(5>T3bA_ za6bDCWq<$1?fLz-Xj`IiV`}yMnyCN!D?zz94^Wr=F@06)#P0a5)Y{@cfAgk|{p;dd zcohU2y$gI5l*46lO)VxN1i^q36qbPqK|W%{(uymrL%m-o6y~4;34)ACLkoQpz9r7x z(0`)W8pUgTa{5HC@vlL)d&2r*^^U$6nyIHwxWOpe3m;Z{Z{7Q)YpzD~&)PA*a(VaS z=BBEOl8_UA{lV=EcNp@@4?T=OWoqHG1|}E`UcNaKK__EHBYrW zWtg)#M(`bZEoU6XRyxlhiW5p8u)-5K!z1%S6p0xt;=&Q(%nJSl-O%s|=6ET2eVtB? zi9=^KnZy1-Fxcp_hYUIgbQ$5etlMhA-bH-?YVA%V90$Pj9YQkMToJ@n*4eOIBlwq>;juf3*K$`^qTUR+ncY`VjCl!?^@#175HppzONV!s-jAVB`;Z;G8N{P zS67y~d|F+hrnvgtb=7cDe)+9e&ri5)WkuDMR)+@5Kc_b0GHJB2P|f`6n$kd|v$WEw z_aQix^$#T}=Tf)JjgV4BdW!WLVo@3mkiNQYmTG6@yy6OP3b+6tW>^c|#txJ9WE(k~ ztZZ4fYj|)`d$g*kP%mk=ubvP73J8s*t^`pG)Il^7_NEwt1&3w?9$I*ic0Nd;xP97b zr=5M;-fg4n)-3C3Sr{oTE7mI}D7@E|{zun~zE?CT1TQkf#K1u{{}nyw66BQF$%!%XRq+&MdJ zGAm2{&CuuxB>Acl_M_(NLaogNgJ_>UR#H-29Vjxm^k#LyueOIZ(h7qvvju(TD4gHVQ&K}fw0%OK5RMuOSv838rUXrWlpZ#iTz%}qmK}*U34;GLzLNJ)FZi+le46tOFTS6gy%*O zV4hotNHLP;gxR^)L?vX?7=2JSJMn9|546N*YBcAiatsS-2~REy7Xa!D|il-Y9Vqk%$+yTH#DsLo0hHuJEa1IfUk!oG&a34=j6 zXmv-t0Ryb~ZKXv8T5m}}(%P|TMUY>u*=={3u+0S%cDP*9LWf61^;IP;rM13>3L4*b z<9FJtTNanXk}5wh**G=Un(WqDnv#*?Q~Vm}Im zjNu^^Bpz>JOR|6AqR*bY&Rbjx7h7z;&Q!FnGj6fys~4B83|JwI5dJjD)9g#oJLn;& zv^awpOFbQ_kOwiIIT^&Bgp8P;oDT3ju6-%uVMvW|UM#K5z{HzVPJKLv(>Gb`&9wc>YL4Ji^1Fd@Q+P z8V_+-enHq`_gEZ;pwooA@Kew4`u!n`!)xVt7hs!PgIG@v#5yZ1a2RxwYUX^tuIiTmvXqh6@2VU*ma}K zCXK>-;7Q~va)yw3pSBe;xVDxMcbg7TxEf+1wGOt0@MWOI6wIBbfr-EZ6Z&sZtu|3T zO#LyeFeypvkVw!jz$sm^Y*_$WLCdaMcID-l?caC$#MrjYn*t{Vdg@a6UI7RZCT%V% zuam_%G6)44i;0_0wQd_<57x=C&%kX%93;(5t$aWLr?DbMPWdlc7r|pbD8yzC-sQid zI8L?EGji9!#7TIkz+13v!+$ZKBO`KY!iP>SgA-(?hW98Kn4;q&9r<+yMMmTMYvR5l z6ZFsZhTs@?52IrmW3bLy;)MMtG*UPVZZQ@6^MgjO%BXQiAkt)TNa1jV?C?k7gb~fgxA}WW^5v>oEIVGzR0rrf{=dlzxxGm3$?0u|E zx&wQ&E6EMyezH$s$EN@z2r1j(c=pP*5E(+Cqcy@Iw(cCn7sDk;G8gqR_&IXuJUbj~%R)w(u3|Zfd0&uL{xnBg z@ggPZXc5%CAg}my*@}ECxG_Jrb|~VSSj!@?DRo^Th`|BgbYp) zKvj#`Z$PnizJoPV6fPY;DU5o7^!RVP{N;N zu=jxH2MS^{!=HyuKWuWZ3>D6gE{&~lRJ9eB(x($;Du+{_ch$mW;h?*(u%@fFx4b-D zSX7vfw$?7TmD8fH>GCkp42FU{Uq?yn>Zmu|xv=7uUbv-JYgPM<`bG16-eTu>iWbDG z^NV26>Mtm%3LfGJ*M-Riwo9(K1LkTp`j>u)ODcQ?vLcT z3p^e;bo3XLuPhEJyoDNG#qO8fWPn^t>tqsMW(NCk@mV|~{lsZ&S9D?t09NYStFPL! zd1yU&VO94oMURtfn}p=tySR?V39>_6_OBJ0V?}Be5vGPf2bk-p0^=npseGoZ?HxoYyddKpD=-<%jooo?m#N)gXoi)>E>S^k4l1HnibF_`oIS zpSNc>fVFY?Nwqbh;(WcV709ttrh_7asGyf#zUmQDbunq>xC1PW1apA_k>=4^IR4`q zw1&lrSU>^0`3$C5B)}$>yOrgL&kwHX&R+wQf&zr0b`j$YGwvw^g$od0f>P;-zhhVTJMvETO z>+qtklG0RDV38Vb$;+JHSj<}lpWLAWA0mswK$e*e9*1pVfyUEbSGe_y3-k~Ra*413 z>mD@>FA-3-D6b*qEv$kLkU`?+I`9qv-vX-QVEKyW75kPv_H~|VigUPJHL-yBg*!+EnPw4C z=0l-|?t)SkdKG#kFp$>hu>okWVw&o{b=8Y9nI%wg#G3b%Z@s*DqS_ZS2$*P*kN+FS&q$H%YZ87%+Q;n#LQa)@N8eQnU zW-}V!2F)IIceJu3sFD_UcIePj-6F130Si$cpauFABQVRrN*a~}ILU3pwl2gDY+X7T zuPJdQ8}-l%QQ8jsq=*QwjTUpg=YItVe7^|uKtyaA$dYO z>^tT_W3bF)6l!b$!aoL(q&6B=KI3NqCWcrXAJLuc9#V?++et0mH4qVLiZRNtrr~JL zqsu@x0G}st`vgU2h+~H5c*q0UhKsxiNMkBdHa{{S#gy1fN^2or5hh|nbO@TOtS`jo zIzrci@+P*F&s@-30@-R(HU9$7emeRrscU7KQCk>7i^sLIS>mRK|{w8{oT7rzZq_8m5+fiS& zJf$jX5_^yF?4Q|2__PQK=e%M1eV9u_FPGg&_hw(fE~G>s$-W?VArV7>WJs3X1;JSz zDHn55VYm=OEVsMNMk=3h5NHjgY8;euyy-q*FY}q}m z9XeW(>4m5}8lN3z$?Uak3o(!~(aICWsS)vIcpEtt7u4GozFc-H&yu;g1o*~NES4RC z;}1!ynEpEdL^hj^vOxB6b|vnGrhg#cn;xcr%YKI)z`e@pw308MzL>p@U5a~U)6X1p zuVm()mHsaKW!8s$;hAsLF;(^swj1}Vr+=z^<3;)&@&U1>n(00K9--6ku<`7@Y#*_c zsAz97w({jZ#XP}tK(Q7#xZ@2wu|#-`7SU?avs`%{UFU|Utq-+W+_p4?Z3q(G+~{QE z+*39b)FGsYE*H%%WY=dOkR<55o+iFyvRN>v@R25VANdpuN8%7Rz}+|~HIcT@p|+eE z67fi9GawScEHxI-VUK}IhDj*wspJ8A{ zDOyzoH#UGCR67@;(d0rgDr`1eu`QVI%Z&=gVaF#6jy4{z7U#7R27|Ji3=iaa%mvL5 zVrhDpQPl-@ha;~pg(_;}&Uj42Qcj!3l|=MVV{;q!p^Z>f^cU)Eg{IO{EkF%eTbT>} zd?9>cCq=Ewq1pi}07Mrq;uXUQCU4AQynned0Ab5ZqhTHgg2PM_+z19GmcD6jv%-M} zlVQlR1)u*%tE1d)Q(GZTm!LQ5pdM46(XNxUtgs{)GDsd~bwTM6MjG&?W-ZZ~QWn9_ z(&<04j_k?oZP?r?W6K8oIGTXCiK{e+WrX)00K@q~vBD5EV)~DB!R+}JPaoR0d6_mlOfy3cK)}Q@3dlrbhUcdngvfybj?eqO^j&WY}5uxL=z!(5F z61IX%`jGX)V;;Z*4@$NZTNw{Bo)aX#%r;ey ziXdhQ(3k9`*=w_p|LgQca}0gil_M{x-t;rs)3STAH={gHZUj4F3k;}=#*%eN5Htpy z5*RohyNX93=iNM~+}Tr2_%0J1CY$p=1E*-*u;gYafMQWKq0Up7he3=5y4RO-wb~hu{XyfjDJ0uhj#eLU8rx_`Y7{ zabp8R=QEidh0yG^&+~W?H#XavEzLdxt0hS)&C$th3+_E6?nUK$9N)96vtQ1B2lJS+ zO7bG0E_xa}KtiK_Zbt$V9N$sb5GnRlB2U|(QxV^7KDUa?SW54UYF^2vY*f1 zo4xmw(pl7tQ;HMP+0%|7vw)e8_F(t-EQlIzoJODz{Ln0Hsj@r%%{lGCqvte^bL@W1 zo4*k_cj|)(+5>Ep2NZXOipwLA4yy($#u~Uz)CHgz;U|1=neZ6X$9to{{~>{?@RK}e zcKruf${w0UQ@t>i67y_sE|;Y8tRO+?hZotk*-`k9aT3HPfEvJJREn|z=5_EL?=U~+ z^(4kl)$}bK4S*ZDIhdjSod3zqUyS`-JkQM=aIGq?bMzAu2XURFU6`}Q`#IW!kszMu z=mHj};`(12zo=Jk{9-3Zl$#qXkVxXglmu8WIfwlPV@HXDW5yaTH*fH+b5-Wz;5Y?u znIk%U+6aK)_+)Yub=ui_5F6N_3sN&b4Yfm*-^2XW3|M_a9tc{|M~=;{NAW=ZBL*iW zC$j+gFYtY4_?g#nKl41A0++5O__o~^V?od#k~~ss2}3k8$(s-Dc&p8~K)~Q+`a9@L z_Wj?`IMnx_(YU?;h{n<1g@PsjfXIn@uA(oJpMz)3%k`BN5oJ`fAwcqokIQ`c4CKHj zOg-l^Jl?wcdcH#T;uou<@Xh5R>a^<&PPJEUf%1cn8XZ>pV%KV`*{jPhXfUl?2q7Rf zsI8ikSh1V;;f`!6`7P#!Lee4Tq((aotYIX8=oivrP(!R~LH9AEi_xx9(RDx^)c|yJ zscHpkj=d(YC+y@V4!mx2Ht@Kh68rj?73yJ7F1CIy^~39^NoDs~%?P}%D^x9UmpFfF zH9;GDs^lfx&#l8DaZ`l)a$5Qf=6E_QN6@b~p#H-J?#@rHn9B^Hd>!Vc(7 zhJerRgg8B2ATgIi#kV0%FoMUS5?Q|8|bOFh0&*R+X{~kS>z?k8lnTknDw6?-!H%R}0V=5-WLOv4ddxij@K^Ks1JY+fVaLZQhu(+^kcX1I2DT zER>Aq0yWHNtiaoou|9teYggE-=QujvKPQlTo3QLN`AlAi4KEl(063Yt$O|kkRp9zI zW!P)uTMNlOffA3iBwVO3v|3DFof_s-#V)A+x%@CtGP(-$%r1CX<^8aZz9;OwigR{e z7OEmxLaBm~K1$st(2gaXnSlpD_^}2u3B2U24V9L=OG?5ptj^ha$y~4pz)8=Vvk46| zsGqyN+Rf%rUY=bSvgYTkxv=A)b7-v|Y<|3F)D)GutiBS(N{yR&Nj9UKFLMAdPxcJb zko^Ig?u$|7`{X%{MeZdhfw>|MY_xsVq9TAxgM(|q;=Sr^@Wozhv22v&=o zK}lzJBG|Q6%UE&TltAzCuA1q&AXk5c1P4DblK?Cda<^%*qJ*#iTz^$zr)Z79RoFq| z0Yp+&5h%JrXMy{bL)QV4CSa)DNXxIN`M*a4jrweBfx{bX>FH zXe6yN=<~T90-j;q^Bn_|#9zXuD9~J>E9jXA>ra_Z`~%r0r=iku8ju?}GvLk9o_on2 zW!xtO6eCA)7qHgjLgIgg>>O{H&Qp4P=Bv43$n}yu*}XI04wE+V^?H0AR!LA{;N5ks zTMkZSjv*|^>#(`CnM+J^aLCoH0;WCO!^JT*jOU0107Z#2`vjTFz6RbxfxWW!RHUqk z$I77;cLMgZ7|v5)C(r~;7#|K!2(B%DINmpTitG#GHtd!OZHyR(;&UD=<2hgEt2 z;VB^ffE04EKMyDkksq>ghF8RW1=Hk7&wl3!#5@`;=P4*y<#px|5GHHVq+XwouXB6@ zsgcpm=CXm*^ZIz`rHCziAIAE>h-Z#D$X^89=J2GK9s$4q`7$~FjFNpbbJk*kKUi&H zLtaK6;n4=hRnWr#HJ$6+R*41K(h z|8>~b9S62QM&bN}V(z9SkM1TH)61~_Rr(9GQeIvk5p8zT!v!RQw*qZWcwkLAL#^`= z6j-+$3wAS9xLtNFJx5R?v!K2*PJA9X!KHcsH#qV6ITh!4_CH^yIeQ^l3mu32+=?k5 zOuq#>Bu4-QI-nS>Rh2n_ctO-<;?B4A_^N=Dbn(BO!O%>ji6YbyOx}3J2+STM7B@6! z`3!>518CETL&NtJXttXDIQumziS@I$#f8-xq0UzUB4V_uQk*M5MldpBE;N2bD1J*LGyv5`14#1uq~2;V7z@fk3k%>b!sshAI=Fs8DBDS{ zK>G@LBx`u!gVq_SB3=np{rcQOJ1`JOn+@gmRLbMk1huljA+u#0lek;|!pJgkvDfO5)a>eGV}C-M}FJk!r& zpZ5{iwB+(!B31nT0J*Pz?3d`I`Y}20eY53-*cWH=qFxg>D)qWish1w*{fzx>CJ(RI z{p6rr&Ox4u%V*z$dfdx^%ooXbXd2I$ za0HK&b6+*8E+j^+@j}>3{FB#P{+*9v;eut$cfa$kZ{BzBop;>!1TOi|@Cb(tGSQ`TeA3^*mI1eL+K>+D&dktE`kd&k8}w#f!Bp?ZuRh2z-`cDCI}MTU7v}Fo!L_B;qS@>AWM}nAroR zyMV@@A5n)&xbYG^Lv_T?YEqj#e!Um!?K&*!YgaFvKYcG$HZYTM|0_)8bVK|BJ$LTk z2vI>`Oa}6*!&C-eR9dWN;CK-dN}oq55h#IzTkp+G6m4TC*9^a8;4{!B!AXzF$G+XTON$`Yl-Zb9K2e8K&GG zBqBkGjd>3gh!}Cl!Gq3G3B!*o)=-NW&%~F#n7$zeNr=|-cQN1pm;5gI3%OiSufHSO zrw#9BE|*`;e43A7K2<>WbN-_E6QPA0txbQ%s^=}-A+Nf=1??V@?w=mcdQ?GGCoZ*E zyvsj$Px>$mNuz2U&%dS$ijtIvJdt|oc2Fq(^HuqvgQ(xXePloWMDJcld^C5o!9Nv0 zy2*m$9%qw)xrf%tf#I4op7{Qw6~k2tbl!gXxUy`XYlhcu#` z7m~NY3gMvhQJ!)DM>^;)P}jeZ793V_U59(W#i7AM<`7`_3mkh%oNXp?o*r{N0XgU1 z?3-*%dA0*>I^lun)$+4A-I0Ct1o;||b3b>l?wDuI_#QuY5dN%=RpH!)Hu9qx?KmCR zew@oknVe$O_(?vkMV(J{43IwhIBBK}5w>Rl{lL??#}vMI%#nTgn0uEY-?2yXn0#_s zN!p3A^89fQALzr!;6G;%r*bYSsR1cLABN^0q7M(D{k$(5fe)YT(9h=2zCC;XFO+i? z#$oR8qaXNDh`x}I`E$+}&<%Lj13cP*HQw2zlV3CCm>DaCwBo#B&b2&-NcN}7y$~Yb zJ%;o2oIC;LoWC1Y&O_+eZfXNO_^}G(=|smO)N7P1#rW&s2WYGB_(%4hqwZUB*YxK{ zyyGD6f|kxXK$kjZj!VEM{1tHm!9~!Vmf!;xY5%EmAsjK6`H+ zeJ=Yu_L!1qJ=%A|1GIJKS@!3%=l|%PfAXvZ&-sxn_fec{QD=U%ks;cL>k!W6qf}0_ zcOk7oB=e+lMCY7~dl-X#v;xtV1^_Rf&OOG-BB)^-m`H z^9QH7{h(!>Ci1zE(=jh#$d4Ov4cY?!p^C1?^TRlv#BmaiJREJXm_La0apIugL@LwE z1m=+3JQEZ1%93oB{#ww>Qs_9#bOSr#eB6`&mJez`ea=R`mEe z-OfPzV^U5(i@E^MfNu+En9R?OQ$8j^d-e1;$X7)QxymZN1U``upig-JUqaTPT^hi# z0^cqr@8g~oM=fc?c?BF_)S(?oz@?7-nN*_eD4vzk6xvn`xGcu5*3J0d$D{<;VbIbB z^i2Xs9bHKpsU6>00RDr&Glu(E<%yJ^=Z=1qn>&uJLn-P|cHHkThW_=(qOReYZ_a)% zlKY-$M=Rj$B!1e9vobv%V zB7%?VAuX`@jgya%_aKgENH+_E#!bVEf*n5RuOLzJ{Ex`D~3*UnA-?ioW2uc?s!9nd?BeDp>(m4OZ0s z60(75(Vi#Je@_uBd5=WdDWrjY3h#W3I%xoR?ice5$kT{-*J50hqK=ps*|}(A4Dcmf zKRi2(^eLp+r<%rj7V0SCz}9iL4)Q+;$2<_q-5Dv94$Eb zbDkfLC$r5s&wT^se3Ebclk)EcO)LdmYstxg&B`e6w7ZRqQmfPXFe zr4;!9XK+w3aukOPDU^d|uK9iEaqjW^d2{l?VkujVBM7<}Czogcf;1!!elFmaML8UP zSuYNF&YXT$PO}I&jAhw;;OF1LH*k-y^6x|BS@IL|J~hx1+D!ZCHoBKyL+_!7=o@sJ z*;t6BSPScAo7ov`Kf9jY!=7fZNiRyjlHOO1tIkvXK~2;SbwC|cx2f+|Kcs$6bDri( z&GnjlG>>Rr&^BnhwHvhK+OxEmX>Zp)ru~WbeVs)Y)FpHsx)r)jx+&d0-F3RVb&u(T z`h@-igU*m|h#Hy=D-4?qFB)GmzG3{pw9RyeX}{@u(>&p0am2f{w== z&pLkM+~6E{p69&Md7JZb=gZFbTqakUtHIUn+Uz>Rb%pCj*VkO%cD>|!$IaXY?mG7h z_a^t0d!PF{&z+t}J`J3{m{WgEdpYnJ4`~2Jd zlLfkhwFR#gyj}1?AuDthUS4=h;r)eA6~0>dR^dkhO~4nZ3^WDS2F3#W0=EPn4Llck zJ@9Ve<04B@u;_wdZ*X()jNty@^~F8K-!6Ws_>JNZLM-G8m4zBY-JwkA$MoJEK$4ebFnUcUGsWyQ=%D zw^g4}y}$a_>PM)m)Bfhb5G4B;b&U_rTR(5h zyff$h0SN7wUoyXL{)+iq=3g}b=J}7zKQ#Ym^FL_PHHDgLnp&EAnoeyxv+44tJDVPF zdadd0rjHj`76cZ&+sv9>%{9#*FPvJqZ{a&FXSV#Im9#oq1Ff;vw$>+GUv7P~^}RM# zo2@O>c1^pZeP8=^?YFgO+Mnz=wPQ!e1szv++}`m>$Dxi_JKpMezf;p0?5yit(YdAb zyv{2-Z|i)h^XbmlI^XVEz399}S1!73(L;-#U3}`|Hx_@eM7Jb=N!gNyB^^uFF4@{0 z=#F)_b+7Io=pO6d+kIL0b=|jhXSyF-x_0R=m%i1rt!J|5g`QuYv~}5a%WheA|FWl6 z-Zd|-?OQv&?!~_S zeed+|Sg%|Evy(44`M`$6hKDvhzTw3UubuM7sZVa)GO%@E$6&!=$>3Romu)g^dSTP6 zo8H>=(dG@C-yhyPynp!mExlVdZ+T&Y|bo$=o89lPH;v-iw5 z_guN>gR{ENI`pY!pL%F-YVUP>-#>fx+4rAQcg{WMHl4fe+{ezVJnyCRo6o=d0@Vdu zEQM(Q6mIebL7kdoGS$+;Z`Xi#J_7b@9H7ueJN8|$@9KTG?|Wq5p?yEw_lHY1UGlU2ZTnyP^koN{4?K0L<+Jcb)IL;B~isq2vqSzJA&D`>%iM`nPT{+)#N#&kaAjar2G0-}uIj@7|=lDR@)t zrk0z=Zo1;8LpObJ(+4-3ZqD5N)E6JR<-jd>e`)cT-uTi7x0-H!_sirqa@&o!J@S=v zZa?*oy>}Y!+;`XNyI#F}{HuHKx$SGZuT_5S)cZX5HQblU7&1MX4-Tddo^kN?``aGy zJ@EL~3%)-2pyt6V9{k{;)eoB<9(eeThd=m+?a?d0X?bk#xB4Ex{y*xz-SNb}C*S){ z(|0a=D)7{8-*tTVwx>f+H#~jo)Av06^3$(B{npd(J^k@BnrCd!cF1(dbEx^ym4|LTbm-8_hh9JQ)}i+feSBDR*mgMo zaOiO5;l$y2huaQ!AMQQ8;qaEj_9RBdRp6B*I_uBK0=X;)?dj9U`|L{WS zh4B~e|Gwt?i@*Qui?{qB{|6mExZnq`y`*_**-K}>bn8nW|FG#p@}IRhxfU%D(8AqA{8m; zMv{!$VWS)?HIuCnk3W%ePKV?btc5wsvH6YU{2|HA55IYeyy~M#hG>OpH(Mtd-wf z)m|}EMDOs(uCc+%L`^!Dp1*8(-Rk+dJk`phnXEzO#@gY@oud=uLGjMfx$$ru&ssMR zZr^#*uCb}n9b?16j^Ul7Bjb3DR}Zz@y?b}f&cX4W6KC!j86M}gJmG`YTSs>WyHNSy zs);RAy9XzSgSas^Iy5}Kb9i%b*ZAh)$>0=#vT8|BaQTkmaXE93oFN*_RW@D|uL1C8 z-{r*&o-sH&Hn<5j+zogI2ZLR$D}#em^MXosb`DLB?wHzHvvYK;W@2)rc6nFNiJy>m zGC_8bJqRo~ibc#;n8gMW(1tV9X`HRbonfS{WIGwevr#gHt5tX_NLJvT39=2(hs0a0 zWEaw{xHn05;(56!Z3?CD#8S5wzaw~`=h#IyL2xpJoZH3S37n0PF_g3gXXD7T6ZhwS zlYg<|h&ysEdhyN(${R!NCQ9F|12-+`yjrRqIo(#L) zg#Xqc&meN_M2Tmj*G7jxnS|;(I&s ze>3jy!nZf$d=lrpUwPhD5DE1lU5=Xby3H-Q=ZF%bcy=^o<7f*%WXwC>cXPEFBxj(0 zqoU_GDKOlPYhI5ap78Is!a);1p8^bnxIY)3JJA-7^E+^Nr+_Ojs|IbK1XOEL|1PxS z-+2cV8H;@WlYJ1Va-1Kj7n2DzB0w=q$oIIO2*vuAYGL7^C(mHLWTYl)rWR@?o2ZT2 z$-UHpeKi+#V-4sbUn5r_-jolrkvz;=f5)t_ndV~+AE5=1GX0JQXb}z4Vn~b1u`d_K z>Z_DIOUr14meUGa3F*io8l~0bFs-4rh>;Sf3CMzykkh2dhcr#=5IL;@lC?%U50Zl@ zBq`5PzF+Y?WCJgdk7x_xqP5aC+D2|rfcY0x(>3`Er804v>(#3AJCKO26_rTm2SkEc7zVnO>~HECO@RZbPFA! zTj?lPji=Eux}A>G3Gz8e1@FV|NCq;iNl3v`kelzMQ*;+S1NvNbkgL2w{zmuEv*@R= z);t?htaIqO^gMb#BoYneWqKj3fM1~(ldW_gd6iy5_tQ_)1N2gQ8T|~soPL&GK|e>Y z#123sWLj6#&ttWEEeJ>x`8{^$zDd78uctTA8|h7uxZF(Mq+g`B&@a(jF?2`im+5Wv zEA)1H2fY)s@oDsK`cS&^jWf#eh+fe)9GRQ z9DSa?051kFLgMuUNT6OKf2BX9FVk1(tJnkh5q%Bv!yfV@GDUwve+oa8KO?*8&*|%A z7ySkOCH+tOEBb5t204lThQ5g%v}N=y`aAkISx$dX-=Y6S|3Lqn{2KC?cgafnM_2~@ ziM~(&Oh2H1p&!z}f&lfBJ@g~`H}Wa^G5tH8rZ72VlXt5`5_(pG)yZCS%4L> zAS)()u!;+@FgcHvkn>q7IhU2O2rFk5tddo+D63{Qtd_-CoFzy|Th3Onm5^7gVyoF2wwA49eXO6YXD71_>=bq?+sFpkAlt--Aki3RTi6KO%0}5X zb{ZRF+uV%h_ky73_2DN_G{ynth&K!>(o5u`fVwas#`O-NbHYUu3tiFR@$M zm)ULXE9`c52fLHq#qK6Iu&+Y4axeQDyN_kqL3TfTfPI}k$R1)3vq#uB*rV*5>@oH& z_Bi_w_HFhAdy;*JJ;lBYY0NY1S@u14h#h9nvFF(f?ECCR_5=13`yqRoy~18)KVq-3 zAG4pZpR%8^pR?E5FW4{Hf3jae;^cx9%0s-62jxMp&`%23uh|>yH|$OF7$mlThBVuZ zed_PPM|&Y;eP0E~{bdA}w?pQ1E4Xn334kMR13!8y89-dU7U)o#$OG`TXJc=XyU5*; zhW-cnF8MlnkUT^lCQq^7vA5ap**omN$VKcAkeh1Rf3tVV?c^`)kL*46C-y!=Gy(P( z_96Q#`v`hM7qgGq-`O%dCQk4{y zs-+sKR*Fe+DIq1Ll$4h0qBAkPN*wJX=kd#w%1 zb*spqh>3DyiA3(XQf{j#HCMU+VtrH^?-xM+S#>O$}>XJLOb- zx>Ko2EMaUP8l4>4wSCLj@R^48%@b3DLtwwB#24dTaXD>IX*z}mQ81Fpi9zu+-WikY z74MS2A8$`x9yZHU%o}O6}W~+P5oJX_ujrh@}jjM^q!;*_JCJ2Z%at zr_#_)xuN`1$fp1>E}TmQ9|y61nmFB zr`wgjY421o$8vUDzT2U|E{BgDO0EtCSvq6p%N+)Gk*bEMs%4 zarw@%!JS)YF+7n_N=nyhdS$5e%24S&3M#QgTn1nwp3tlkS&ge^JIb``sQmHHI;BaC z3Ys-^sa6AbG^@o2WT@83V9Ns%oPSD@ILOY78YW}(xmz`RTOU}p|m zO4~X+&1;T@PP|ULMuE;68UNI4I2q8a5m=~MC%19kY#a6KHjfTZVjaIzvuGh<74P6bI^`cnA`k4V`IH_jS1kiqbcr#9iCdP+`cT6SpC)G^t z9v(bxc(Z131|Xn)Vo+fS*UKMhQ_!zX01Efh0$}lW1u zcgY`$x7TTgMSC^FGr2HYlUp4`&5ToJhz*K3EB z77ZUk9OZGINGti{G8v0^r8Og>M#hoZR+&cTV7*~v=98+evqZAXxOMgg&FD;L#^N%~ z03~eHkJgM$42`YsT`E_$T~rdZQd9yt+Suqe?Wj`UQH5NN3PhDVE-4@ak`*&9 zBaNoh=G4=4+Q{Va@c7u^_~y|e&6wyq&6sGLX>3kD)fn0%mmt>zgfXremxsmp;Esu% zQvG_253cx_XPY}ZW8g+-2DDm~hvfWJfO*$xGfJLDo0 zF{PUlN_Qrd*(RC82nFHWyVMi2l%hj{YYs;{lw2JOUUkOJ6US1DSeJG}0liE|+l&*( z&{3r%xHy=UAv!5TW%4MffR2hPB28*`%D~(?+heAkN96|{jjN_O-JB8y%FwHmhf5-^ zG^nmkvuiFi1)anv6sUFP(t7o-S!i@BFqYYucxPu0I!aqQyUe?eg+?4bkb{OoH+KoT zxl5*-yX7|Ro^6wU_YB?KEz`|CvkzrV!RXpEmu@P(oK$+ht5I{7DAsV+%ovk~Hx5f% zHf~Yl*f=Wwk4a-2$E58Ww+kSplnE=P06Z0!Q7;vjftLbNItHBk?FY^3D59?!-6h*YUpELVT! zeoQGhmivxU-o$Cjs-AU!U zNu?fX1up5_bEO^%%}XVf_9m5fq?P(6mG-0+xF?l*CUe)hdLpJ(u~a%&?_B$H-%;wDR@$Fd z`XQ}+C#{r|%GFQ#URthyvN5GzH9E3=Q1nVtW&vVJc{LDAE3;8r=4f#(zm=9LFs|iV zq-9EsYq=I_g(9bA&KLLP)~02i71wgD(lXDAYq=F^nRmstT+4K)+{@`s8R}`7*NvrR zT8&iszD&z-t$e>zhC*8A0&!pYzRU%7waM6yRMZ2hfId=D52ONGNJTxm+GK1+D(Zn$ zzyYb~eWaouNJZ};74<+WdI72UK2p((NR{u(Schxndoq@FwaHk9R4HG^DqJh&%27a0ew8I)9e`DiE?-ya9aQyspu4>0*FXOqmf+z4XIL$jJ%12OnQ-~ zb;H|tOzlC53JgT=V6IK-hj&habDA37EIt)isCZJLUddR!Ud%k0cQ@(9B*V`{DM^L0 zB^64RR495 zXEQ709actiB^2_WRLFW#A+t$^oWfd3&X;a5adL}>)eH^p99Ays#f4?2iSp%4JLhI? zn|qO%d(l4kqHgX*tGKYtKw<8)l(=vl0gt)QyXIWP<8v?Mn%L*UX3pb;T(I20#N6s6 zlUFHxHU`r_UFQM?-={AK9$tW31E2AhaFR^f)8y+&))3W#q_Z2!M zqb#l!IwWI0t`$0%qqp)}CYF}hFh~`8+g@)JoE%4pp*^-a=c3XY4$h%Hnkj7C4(&0> zS2crUQ%2>Kx6CL%6)zZNq^JX8#OIvH=A1XqIZrC*i8=ZCc`iRc&*kUmN#m9Y>_AWM z8O737yQEuSmUeWTNU<>m%i%0!vY+Iq7&6lUeAc~>t*C3Rv!EYeWG8q~QZ}Jxx zXGnjBw1+$HM?2dG+Nv`&nh6eUsm`!yaC0#8?G+hS+4}p-sj?_VlrTx7p z_Z7oC`hmV+X2lBJYU%d}GY$N#p}#+PP|iKLIa7{X%2hBEld(J$AT|IergI)^e+WicMM2M+`f-~$I^>QaDZW#7OG|6p%_U%0=xKbUD* z)rV((4h-e{)fsg(qiwIcA3K`@wi;Z9+rsFhaNA&pZQ7EdL#RbYU0I#cMuWVnCbUIG zHX#ct+cMD4vkY{Is_LTmYfYrRv#qjtrnmIbBYV#vmqM#hg?6-iAlP{zJji=eK$!S> zFJyv#R5Djf^k;amL;i&E1g~dG@D^U4Y1-VEOdRRLZTA}u641jRF7B@^uFjaF2N~&DNfwgKZgW z6~}U5Q`Y7d?mw!_}F5 z`1IzfKYCEh(}L(h9Zw6R2lYIyhyn^S+%uX1KsX$%$v6z#^-?NM0pa?U|Q5XiPGe9I*%m|pgG5_ zEx%7Z!reUSXbv|VOi(v(YYOl{1CIO700zlmLvwqT81UPcve%jFJc1~@HgS=sjh3ra!%1FTHS?{DMuRR>ay@1q9cE{tsS z_L0LBG=)~l6A)`3*c{GC?Sq>^;#m8jALj%8pbJO8Gl;5z>W8}q8~kB>p$qLqBEEw1 zj`I;zgcD*FhzB}D4TQtIaa2uE;vilw6_vn$%xj#2&VCEXGA{>IQ@qmJs%`wgl+jbcHVL zP{INJ7Kca(aX=jVUzOkQJ!0jMZ=Sz-^E9zCwq$Ff9(?6EivyVMM}t^=YqK>R@Pv+X znC6k-0`D3EMgb0CEVytak_Sj+oX!9a73dHq=ny995T=4EuHm17ra_L-Oi;z6MvTpZ zG&V=iVeADxp?P{j3-p8*Ip%X{OB|E1%rOZo9Fy>p&LH3w9l|OdLXi$(P3j6k>rxkK zL+T>Embyr9q%P81sf+YZ>LR_Dx=0@|$G!0n_)%KXQyloD*bgjm(y2ujtU$m#!OsbU(!OOs2R$1ZjRLBl5Vb=L3l+uW80*S`-H%#ioQ z>rAv_A4Y_d;Z3uBV3W4-*0XrvrxCHH@W$BqBQd-`TuC|Qaoie|XDf+fw$jGdwZDf) w&~14Y*T+zB=Y)+=3MTZrz4pXI*G+a@IscEN`ZKK4*{WN_E4^7%k2BwxI}oW7{{R30 literal 0 HcmV?d00001 diff --git a/cypress/support/commands.js b/cypress/support/commands.js index b088575281..586042b63b 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -376,11 +376,28 @@ Cypress.Commands.add('uploadSystemTemplate', ({ fixturePath, fileName, mimeType cy.login(new User('admin', 'admin')) cy.visit('/settings/admin/richdocuments') - cy.get('.settings-section__name') - .contains('Global Templates') + cy.get('.settings-section') + .find('input[data-cy="newTemplateInput"') + .as('newTemplateInput') + + cy.get('@newTemplateInput') .scrollIntoView() - cy.get('.settings-section input[type="file"]').selectFile({ + cy.get('@newTemplateInput').selectFile({ + contents: `cypress/fixtures/${fixturePath}`, + fileName, + mimeType, + }, { force: true }) +}) + +Cypress.Commands.add('uploadInputFile', ({ identifier, fixturePath, fileName, mimeType }) => { + cy.get('.settings-section') + .find(`input[data-cy="${identifier}"]`) + .as('fileInputElement') + + cy.get('@fileInputElement').scrollIntoView() + + cy.get('@fileInputElement').selectFile({ contents: `cypress/fixtures/${fixturePath}`, fileName, mimeType, diff --git a/lib/Service/FontService.php b/lib/Service/FontService.php index ce21fe1d30..38f3ae2a9e 100644 --- a/lib/Service/FontService.php +++ b/lib/Service/FontService.php @@ -188,9 +188,13 @@ private function generateFontOverview(ISimpleFile $fontFile): void { fflush($tmpFontFile); $im = imagecreatetruecolor(250, 30); - $bg_color = imagecolorallocate($im, 255, 255, 255); + imagealphablending($im, false); + + $bg_color = imagecolorallocatealpha($im, 255, 255, 255, 127); $font_color = imagecolorallocate($im, $color[0], $color[1], $color[2]); - imagefilledrectangle($im, 0, 0, 399, 29, $bg_color); + imagefill($im, 0, 0, $bg_color); + imagesavealpha($im, true); + $ttfResult = imagettftext($im, 20, 0, 0, 22, $font_color, $tmpFontFilePath, $text); // this happens with invalid ttf fonts if ($ttfResult === false) { diff --git a/src/admin.js b/src/admin.js index 1bea381dba..3477026c16 100644 --- a/src/admin.js +++ b/src/admin.js @@ -5,6 +5,7 @@ import './init-shared.js' import Vue from 'vue' import AdminSettings from './components/AdminSettings.vue' +import { createPinia, PiniaVuePlugin } from 'pinia' import '../css/admin.scss' // CSP config for webpack dynamic chunk loading @@ -21,9 +22,26 @@ Vue.prototype.n = n Vue.prototype.OC = OC Vue.prototype.OCA = OCA +Vue.use(PiniaVuePlugin) + +const pinia = createPinia() const element = document.getElementById('admin-vue') +const initialSettings = JSON.parse(element.dataset.initial) + +// Hydrate the adminSettings store with the initial settings +// provided by the initial state +pinia.state.value = { + adminSettings: { + fonts: initialSettings.fonts, + }, +} /* eslint-disable-next-line no-new */ new Vue({ - render: h => h(AdminSettings, { props: { initial: JSON.parse(element.dataset.initial) } }), + pinia, + render: h => h( + AdminSettings, + { + props: { initial: JSON.parse(element.dataset.initial) }, + }), }).$mount('#admin-vue') diff --git a/src/components/AdminSettings.vue b/src/components/AdminSettings.vue index 1d610eb5af..66debf251e 100644 --- a/src/components/AdminSettings.vue +++ b/src/components/AdminSettings.vue @@ -285,28 +285,7 @@ @update="updateWopiAllowlist" /> - +

{{ t('richdocuments', 'Secure View') }}

@@ -433,9 +412,8 @@ import SettingsCheckbox from './SettingsCheckbox.vue' import SettingsInputText from './SettingsInputText.vue' import SettingsSelectGroup from './SettingsSelectGroup.vue' import SettingsExternalApps from './SettingsExternalApps.vue' -import SettingsInputFile from './SettingsInputFile.vue' -import SettingsFontList from './SettingsFontList.vue' import GlobalTemplates from './AdminSettings/GlobalTemplates.vue' +import CustomFonts from './AdminSettings/CustomFonts.vue' import { getCurrentUser } from '@nextcloud/auth' import { isPublicShare, getSharingToken } from '@nextcloud/sharing/public' @@ -468,9 +446,8 @@ export default { NcSelect, NcSelectTags, SettingsExternalApps, - SettingsInputFile, - SettingsFontList, GlobalTemplates, + CustomFonts, NcModal, NcNoteCard, CoolFrame, @@ -892,12 +869,6 @@ export default { this.uploadingFont = false }) }, - onFontDeleted(name) { - const index = this.settings.fonts.indexOf(name) - if (index !== -1) { - this.settings.fonts.splice(index, 1) - } - }, }, } diff --git a/src/components/AdminSettings/CustomFonts.vue b/src/components/AdminSettings/CustomFonts.vue new file mode 100644 index 0000000000..56dccfcdeb --- /dev/null +++ b/src/components/AdminSettings/CustomFonts.vue @@ -0,0 +1,199 @@ + + + + + + + diff --git a/src/components/AdminSettings/GlobalTemplates.vue b/src/components/AdminSettings/GlobalTemplates.vue index 5b1a82c7b3..8e0f3df888 100644 --- a/src/components/AdminSettings/GlobalTemplates.vue +++ b/src/components/AdminSettings/GlobalTemplates.vue @@ -11,6 +11,7 @@ type="file" class="hidden-visually" :accept="acceptedFileExtensions" + data-cy="newTemplateInput" @change="selectFile">
diff --git a/src/stores/adminSettings.js b/src/stores/adminSettings.js new file mode 100644 index 0000000000..8bdb32f198 --- /dev/null +++ b/src/stores/adminSettings.js @@ -0,0 +1,12 @@ +/** + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { defineStore } from 'pinia' + +export const useAdminSettingsStore = defineStore('adminSettings', { + state: () => ({ + fonts: [], + }), +}) From 36e0afe641d390b92ebddbac451e23dc39bf1ec3 Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Wed, 7 Oct 2026 18:15:48 -0400 Subject: [PATCH 3/6] refactor(settings): complete component extraction Move the remote font config hint and the documentation link into CustomFonts.vue, drop the font code left behind in AdminSettings.vue, and remove the now unused SettingsFont, SettingsFontList and SettingsInputFile components. Assisted-by: ClaudeCode:claude-opus-5[1m] Signed-off-by: Elizabeth Danzberger --- src/components/AdminSettings.vue | 59 +------------ src/components/AdminSettings/CustomFonts.vue | 39 ++++++++- src/components/SettingsFont.vue | 87 ------------------- src/components/SettingsFontList.vue | 64 -------------- src/components/SettingsInputFile.vue | 91 -------------------- 5 files changed, 39 insertions(+), 301 deletions(-) delete mode 100644 src/components/SettingsFont.vue delete mode 100644 src/components/SettingsFontList.vue delete mode 100644 src/components/SettingsInputFile.vue diff --git a/src/components/AdminSettings.vue b/src/components/AdminSettings.vue index 66debf251e..ffdff01114 100644 --- a/src/components/AdminSettings.vue +++ b/src/components/AdminSettings.vue @@ -285,7 +285,7 @@ @update="updateWopiAllowlist" />
- +

{{ t('richdocuments', 'Secure View') }}

@@ -429,14 +429,6 @@ const SERVER_STATE_CONNECTION_ERROR = 2 const PROTOCOL_MISMATCH = 3 const SERVER_STATE_BROWSER_CONNECTION_ERROR = 4 -const fontMimes = [ - 'font/ttf', - 'font/otf', - 'application/font-sfnt', - 'font/opentype', - 'application/vnd.oasis.opendocument.formula-template', -] - export default { name: 'AdminSettings', components: { @@ -475,10 +467,6 @@ export default { appUrl: generateUrl('/settings/apps/app-bundles/richdocumentscode'), approvedDemoModal: false, updating: false, - uploadingFont: false, - fontMimes, - fontHintUrl: window.location.protocol + '//' + window.location.host + generateUrl('/apps/richdocuments/settings/fonts.json'), - fontCustomDocumentUrl: 'https://docs.nextcloud.com/server/latest/admin_manual/office/configuration.html#custom-fonts', groups: [], tags: [], uiVisible: { @@ -506,7 +494,6 @@ export default { allTagsList: [], text: '', }, - fonts: [], hasSettingIframeSupport: false, setting_iframe_url: '', doc_format: null, @@ -531,24 +518,12 @@ export default { hasHostErrors() { return this.hostErrors.some(x => x) }, - fontHint() { - return t('richdocuments', 'Make sure to set this URL: {url} in the coolwsd.xml file of your Collabora Online server to ensure the added fonts get loaded automatically. Please note that http:// will only work for debug builds of Collabora Online. In production you must use https:// for remote font config.', - { url: this.fontHintUrl }, - ) - }, showFontConfigHint() { return this.serverMode !== 'builtin' }, shareToken() { return getSharingToken() }, - fontXmlHint() { - return ` - - ${this.fontHintUrl} - - ` - }, callbackUrl() { return this.settings.wopi_callback_url ? this.settings.wopi_callback_url : getCallbackBaseUrl() }, @@ -595,7 +570,6 @@ export default { } Vue.set(this.settings, 'edit_groups', this.settings.edit_groups ? this.settings.edit_groups.split('|') : null) Vue.set(this.settings, 'use_groups', this.settings.use_groups ? this.settings.use_groups.split('|') : null) - Vue.set(this.settings, 'fonts', this.initial.fonts ? this.initial.fonts : []) Vue.set(this.settings, 'hasSettingIframeSupport', this.initial.hasSettingIframeSupport ?? false) Vue.set(this.settings, 'setting_iframe_url', this.initial.setting_iframe_url ?? '') @@ -838,37 +812,6 @@ export default { return url.protocol }, - uploadFont(event) { - // TODO define font format list - const files = event.target.files - const file = files[0] - if (file.type !== '' && !fontMimes.includes(file.type)) { - showError(t('richdocuments', 'Font format not supported ({mime})', { mime: file.type })) - return - } - this.uploadingFont = true - - // Clear input to ensure that the change event will be emitted if - // the same file is picked again. - event.target.value = '' - - const formData = new FormData() - formData.append('fontfile', file) - const url = generateUrl('/apps/richdocuments/settings/fonts') - axios.post(url, formData, { - headers: { - 'Content-Type': 'multipart/form-data', - }, - }).then((response) => { - // TODO reload font list - this.settings.fonts.push(file.name) - }).catch((error) => { - console.error(error) - showError(error?.response?.data?.error) - }).then(() => { - this.uploadingFont = false - }) - }, }, } diff --git a/src/components/AdminSettings/CustomFonts.vue b/src/components/AdminSettings/CustomFonts.vue index 56dccfcdeb..a76b107d72 100644 --- a/src/components/AdminSettings/CustomFonts.vue +++ b/src/components/AdminSettings/CustomFonts.vue @@ -49,6 +49,18 @@ + + + {{ fontHint }} + + +
+				{{ fontXmlHint }}
+			
+
+ + {{ t('richdocuments', 'For ideal document compatibility we recommend you to install commonly used fonts. If your users are working with Microsoft Office, installing their proprietary fonts can be done following the documentation.') }} {{ t('richdocuments', 'Custom fonts documentation') }} + @@ -81,8 +93,18 @@ export default { TrashCanIcon, }, + props: { + /** Whether to show the coolwsd.xml remote font config hint, hidden for built-in CODE. */ + showConfigHint: { + type: Boolean, + default: false, + }, + }, + data() { - return {} + return { + fontCustomDocumentUrl: 'https://docs.nextcloud.com/server/latest/admin_manual/office/configuration.html#custom-fonts', + } }, computed: { @@ -92,6 +114,21 @@ export default { This setting allows the uploading of custom fonts which can be used in office files. `) }, + fontHintUrl() { + return window.location.protocol + '//' + window.location.host + generateUrl('/apps/richdocuments/settings/fonts.json') + }, + fontHint() { + return t('richdocuments', 'Make sure to set this URL: {url} in the coolwsd.xml file of your Collabora Online server to ensure the added fonts get loaded automatically. Please note that http:// will only work for debug builds of Collabora Online. In production you must use https:// for remote font config.', + { url: this.fontHintUrl }, + ) + }, + fontXmlHint() { + return ` + + ${this.fontHintUrl} + + ` + }, }, methods: { diff --git a/src/components/SettingsFont.vue b/src/components/SettingsFont.vue deleted file mode 100644 index 80a4ff9bb1..0000000000 --- a/src/components/SettingsFont.vue +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - diff --git a/src/components/SettingsFontList.vue b/src/components/SettingsFontList.vue deleted file mode 100644 index 3452b6c5f2..0000000000 --- a/src/components/SettingsFontList.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - diff --git a/src/components/SettingsInputFile.vue b/src/components/SettingsInputFile.vue deleted file mode 100644 index cf54621823..0000000000 --- a/src/components/SettingsInputFile.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - From c472c9788e0989347e51f91f7b536e85e0c15b92 Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Wed, 7 Oct 2026 18:16:04 -0400 Subject: [PATCH 4/6] fix(settings): allow fonts with an empty mimetype Browsers report an empty type for some valid font files, notably .ttf. Restore the guard that skips the mimetype check in that case. Assisted-by: ClaudeCode:claude-opus-5[1m] Signed-off-by: Elizabeth Danzberger --- src/components/AdminSettings/CustomFonts.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/AdminSettings/CustomFonts.vue b/src/components/AdminSettings/CustomFonts.vue index a76b107d72..56957b65e2 100644 --- a/src/components/AdminSettings/CustomFonts.vue +++ b/src/components/AdminSettings/CustomFonts.vue @@ -141,7 +141,8 @@ export default { async selectFile() { const selectedFile = this.$refs.newFontInput?.files[0] - if (!fontMimes.includes(selectedFile.type)) { + // browsers report an empty type for some valid font files, notably .ttf + if (selectedFile.type !== '' && !fontMimes.includes(selectedFile.type)) { showError(t('richdocuments', 'Invalid font file selected')) return } From 3dacb56bc97262b9f75150e589f77ffd9c4b5c9d Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Wed, 7 Oct 2026 18:16:13 -0400 Subject: [PATCH 5/6] fix(cypress): close attribute selector The selector was missing its closing bracket. Assisted-by: ClaudeCode:claude-opus-5[1m] Signed-off-by: Elizabeth Danzberger --- cypress/support/commands.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cypress/support/commands.js b/cypress/support/commands.js index 586042b63b..b092b70e50 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -377,7 +377,7 @@ Cypress.Commands.add('uploadSystemTemplate', ({ fixturePath, fileName, mimeType cy.visit('/settings/admin/richdocuments') cy.get('.settings-section') - .find('input[data-cy="newTemplateInput"') + .find('input[data-cy="newTemplateInput"]') .as('newTemplateInput') cy.get('@newTemplateInput') @@ -396,7 +396,7 @@ Cypress.Commands.add('uploadInputFile', ({ identifier, fixturePath, fileName, mi .as('fileInputElement') cy.get('@fileInputElement').scrollIntoView() - + cy.get('@fileInputElement').selectFile({ contents: `cypress/fixtures/${fixturePath}`, fileName, From 507120c34a94df1b9eef88abc08b35387c337591 Mon Sep 17 00:00:00 2001 From: Elizabeth Danzberger Date: Wed, 7 Oct 2026 18:16:13 -0400 Subject: [PATCH 6/6] chore(reuse): correct license/reuse for font file REUSE.toml annotates cypress/fixtures/** as AGPL-3.0-or-later, which mislabels the bundled Amatic SC font. Assisted-by: ClaudeCode:claude-opus-5[1m] Signed-off-by: Elizabeth Danzberger --- cypress/fixtures/fonts/AmaticSC-Regular.ttf.license | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 cypress/fixtures/fonts/AmaticSC-Regular.ttf.license diff --git a/cypress/fixtures/fonts/AmaticSC-Regular.ttf.license b/cypress/fixtures/fonts/AmaticSC-Regular.ttf.license new file mode 100644 index 0000000000..2061c9529c --- /dev/null +++ b/cypress/fixtures/fonts/AmaticSC-Regular.ttf.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2015 The Amatic SC Project Authors (https://github.com/googlefonts/AmaticSC) +SPDX-License-Identifier: OFL-1.1