From 895d30ccebe729a713710c23a9de650b1489c03c Mon Sep 17 00:00:00 2001 From: Loredana Perazzo Date: Wed, 6 Sep 2023 11:06:57 +0200 Subject: [PATCH] [IMP] POS: add info for iOS devices task-3388561 closes odoo/documentation#5761 Signed-off-by: Xavier Platteau (xpl) --- .../point_of_sale/configuration/epos_ssc.rst | 99 +++++++++++++++++- .../epos_ssc/ssl-ios-verified.png | Bin 0 -> 15223 bytes 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 content/applications/sales/point_of_sale/configuration/epos_ssc/ssl-ios-verified.png diff --git a/content/applications/sales/point_of_sale/configuration/epos_ssc.rst b/content/applications/sales/point_of_sale/configuration/epos_ssc.rst index b2df96b9eb..fec926c78a 100644 --- a/content/applications/sales/point_of_sale/configuration/epos_ssc.rst +++ b/content/applications/sales/point_of_sale/configuration/epos_ssc.rst @@ -176,13 +176,83 @@ it into your browser. .. tab:: Mac OS - To secure the connection on a Mac: + On Mac OS, you can secure the connection for all browsers by following these steps: #. open Safari and navigate to your printer's IP address. Doing so leads to a warning page; #. on the warning page, go to :menuselection:`Show Details --> visit this website --> Visit Website`, validate; #. reboot the printer so you can use it with any other browser. + To generate and export an SSL certificate and send it to IOS devices, open **Google Chrome** + or **Mozilla Firefox**. Then, + + .. tabs:: + + .. tab:: Generate a self-signed certificate + + Navigate to the ePOS' IP address (e.g., `https://192.168.1.25`) and force the + connection by clicking :guilabel:`Advanced` and :guilabel:`Proceed to [IP address] + (unsafe)`. + + .. figure:: epos_ssc/browser-https-insecure.png + :scale: 75% + :alt: Warning page about the connection privacy on Google Chrome + + Warning page on Google Chrome, Windows 10 + + Then, sign in using your printer credentials to access the ePOS printer settings. To + sign in, enter `epson` in the :guilabel:`ID` field and your printer serial number in the + :guilabel:`Password` field. + + Click :guilabel:`Certificate List` in the :guilabel:`Authentication` section, and click + :guilabel:`create` to generate a new **Self-Signed Certificate**. The :guilabel:`Common + Name` should be automatically filled out. If not, fill it in with the printer IP address + number. Select the years the certificate will be valid in the :guilabel:`Validity + Period` field, click :guilabel:`Create`, and :guilabel:`Reset` or manually restart the + printer. + + The self-signed certificate is generated. Reload the page and click :guilabel:`SSL/TLS` + in the :guilabel:`Security` section to ensure **Selfsigned Certificate** is correctly + selected in the :guilabel:`Server Certificate` section. + + .. tab:: Export a self-signed certificate + + The export process is heavily dependent on the :abbr:`OS (Operating System)` and the + browser. Start by accessing your ePOS printer settings on your web browser by navigating + to its IP address (e.g., `https://192.168.1.25`). Then, force the connection as + explained in the **Generate a self-signed certificate tab**. + + If you are using **Google Chrome**, + + #. click :guilabel:`Not secure` next to the search bar, and :guilabel:`Certificate is + not valid`; + + .. image:: epos_ssc/browser-warning.png + :alt: Connection to the printer not secure button in Google Chrome + + #. go to the :guilabel:`Details` tab and click :guilabel:`Export`; + #. add `.crt` at the end of the file name to ensure it has the correct extension; + #. select :guilabel:`Base64-encoded ASCII, single certificate`, at the bottom of the + pop-up window; + #. save, and the certificate is exported. + + .. warning:: + Make sure that the certificate ends with the extension `.crt`. Otherwise, some + browsers might not find the file during the import process. + + If you are using **Mozilla Firefox**, + + #. click the **lock-shaped** icon on the left of the address bar; + #. go to :menuselection:`Connection not secure --> More information --> Security tab + --> View certificate`; + + .. image:: epos_ssc/mozilla-not-secure.png + :alt: Connection is not secure button in Mozilla Firefox + + #. scroll down to the :guilabel:`Miscellaneous` section; + #. click :guilabel:`PEM (cert)` in the :guilabel:`Download` section; + #. save, and the certificate is exported. + .. tab:: Android OS To import an SSL certificate into an Android device, first create and export it from a @@ -197,8 +267,33 @@ it into your browser. The specific steps for installing a certificate may vary depending on the version of Android and the device manufacturer. -.. important:: + .. tab:: iOS + + To import an SSL certificate into an iOS device, first create and export it from a computer. + Then, transfer the `.crt` file to the device using email, Bluetooth, or any file-sharing + service. + + Downloading this file triggers a warning pop-up window. Click :guilabel:`Allow` to download + the configuration profile, and close the second pop-up window. Then, + + #. go to the **Settings App** on the iOS device; + #. click :guilabel:`Profile Downloaded` under the user's details box; + #. locate the downloaded `.crt` file and select it; + #. click :guilabel:`Install` on the top right of the screen; + #. if a passcode is set on the device, enter the passcode; + #. click :guilabel:`Install` on the top right of the certificate warning screen and the pop-up + window; + #. click :guilabel:`Done`. + .. image:: epos_ssc/ssl-ios-verified.png + + The certificate is installed, but it still needs to be authenticated. To do so, + + #. go to :menuselection:`Settings --> General --> About > Certificate Trust Settings`; + #. enable the installed certificate using the **slide button**; + #. click :guilabel:`Continue` on the pop-up window. + +.. important:: - If you need to export SSL certificates from an operating system or web browser that has not been mentioned, search for `export SSL certificate` + `the name of your browser or operating system` in your preferred search engine. diff --git a/content/applications/sales/point_of_sale/configuration/epos_ssc/ssl-ios-verified.png b/content/applications/sales/point_of_sale/configuration/epos_ssc/ssl-ios-verified.png new file mode 100644 index 0000000000000000000000000000000000000000..15710fa1ecf334b03d691ec1d4e4396545cfe455 GIT binary patch literal 15223 zcmeHuWmKEpwr-H(P~0`R1b26r;4Xm#cS3QBI~0l+XmKf4+}+&^rFbdDr9h#y&`bM$ zXP>?AJ%9EX_x#%#c_nK-^Oa5rPHPRbb8wXao^|v9X&s;vKtllyZVh)in7xCtzb8!BUsKP<-^oS<3Y3z>5cd^* zByfSjA+)|O&aPgfz7oJcyrPfyzni&$w0|IQCkddD2AEdP%@an;&&kip4N~xRc*YBq z#Gn=TgxZSg$SeL$@%TvsXb*?Gi*j-K`1o-8@Nv3%+HvuSh=_1;^K$X>f*uhdFF#i} z#24i1MgN=PFAjN_myM@`JKVv|mG(C$#M;dpE&&8S_S61Xd@k-98vmeo_4-?dM?JWF zA?{o}oZMV4E?oa?;RRQC_DJ$~K>wqKm!6+Hj7taR<>u{a15PtAB~-Sa1% ze-7l){2#pkg8r}E|9~G+8XBVVZZ_V(!&8x$0RHwb3U#w_fQtUP73Af!;S;bH0NDtN z2!Qxuk0)Up8$l4C5QN8;SBP7H2P*VWR4T4saEPl7>^IdTIj6%TkFYRQ03yN<0SWLz zghBi^Jk}rxOpp%*gTkOfyw)NRh=}z+QD}KOJXR&d`JbcuO$B|VvJrytK?V3=AVC<6 z2gJ_@5d>M=@bH89ta)ujtRVt?d^X&FsGv5Yif*1RkjLS4aDmvtxZGXs{&f5nTvP_E zA_3&({0sW01?&ug+ddjd0M#8_y?y^1s^{PW(}hERtH~oM!Y9JZBPb-q&(A9)DDvMR z1DL1RVbbc&O8|cdK>OSB zPkGad|1~Je4qlH4zuy)Acg^d!X!lo_ zjXlKG4)*wb|6Nf3)$Z^=43@1epAZj>+Xf^eC@cixhe8EF)@Ntzn|*=%2=H1|ItMJ58$7sfk(T)+8(Eu$JvVOAJf&}n*EmXfARJA zSo|+~c%=T1lYdL!|H$;{aXtBTj2jx*Z()UF#dbP19N>`1^GN~ zXL`rgE&%|7YyZbxk`Ba&*4@+1*1;J@3x8bR)53fmYykk@)uvYto)jHKk-uz+j1f!Y zAtI!e_2C>+n+`g0)nD|CgJYrbgdYaoqxtebPxn0dtxMhVzR8&|Fg+;o?e?6JzyCV8X6y3u^1JAldyCue-piLi5=YfyN3QOg(r>P5YNKZmES`qjeH)N=>DtVa>bc;N zakfP9*Gg+F98JBiE4-0r?cP8;Ll|~4?Y=U2zSbY;c5?sSko5NK$|kte@hraQ=WF)4 zkHg}u!>O`gf2tpJg%tl9E9pyp_{qXHSVzgN~AlyT>tK>cU?%>Y#IEu3z09ihQf0N5eD-QkW}AyVBv!K}5hSg#7Jh!2pT zbw_0pKZGM6sK9q*0V6&B+>7_rA-FtEby>-y0OKNdS@iB^5T=^nj+c&1`}=dmvpH$6cH2G#pT9|m^2qF_hY#o2ez50i2FPVZgP^gQcy zR6&SC+PYIUCZMMG1_4x{rnRbc15>B2MCt%U{_0GNfTOM#eYxQ&sBfsvxQ7$?ro^YF zc#oVLX6jhpq-R#wA39dn)_u~X__+dGUVpavDMF4lFYq``S4-?ZL9Jqa*R}iEM0Lx0 z@QB^}4Tt-Q8=-pQ4dZyNQaI#(lDzi)9gjS2ZkDHFf8j)Ef?-KWSkid58{L=kNmjdV zq~})D@%*2iQDF&Kdjy5+=P6<&mSp;S4+a}%Q&OKn4-R{|IyY03_X2J`h-PRcpdI9kwFGXY-nVaK)3H6-yAqseUCDkE?DZS+2A5I2c~DDJMX0s4BAbjfks z*HV4KDYBV-wQR5GgMD$#Jox5I!KLZpKn6KM(WTE7CjINKdCmst%Z_%yPtjMm=?yv~ z(^MT@uxRmE)bl`3X3}&uMI%!A^P4lKM2b}HMQiF05#!Qlk{@XObA~4 z#3+{^BE_#zEpaNUW_!RKeM+FZ$lH+6{kCFAPdPJ8Wgvy*$&Z?{_hJz>{C7*}J;Tn` zMyRih{7NGbz0C`VU`=eqk=XLSqbHsC9T2?T*mGR~Qh_y5!EE{F#QU?jXV!>lKnZMv z6@E}Xc)+iEi|-L;gqKA4Eh(02Lm9@9-7`efzRdByv!Mb5ePrTmr9GK` ze|AH3*fCOkj^sBYM7yBcP~mF3fW=dm<6Y(vrxADaO%SQ-qH&b*b>`CEx+;VYt&W_9 ztbQKlTH`u^%?&?BkpNL9H6icUqd;Wai(%tlovB*!ZnwPE6KgYT(tm~7EF?XZBvfxMMsKpaS4Ao-Q$FAT zIbl;?Azzh?NSxo#f>; zw-cyI7ppR=Q}+ma6WS8!)2MpP{R)vU#c6cDA>@Zj;sW| zIjmhz!y9Vd%`u!OiY*f&g@|fNyIl}NP#PYJ8A8XUL(uI)6A+8mFK0>h^tsquV$c^> zYLk12{N3T&+ia_nAnqu#HY!!r9kD~U#u$1?ilCskh8^jl<<7%l}4}5`bL+9 zoN-4uI97Ctgo{h?JjqTGwrQRj4jS;D?VB!vvv#m557Eq5$ZBeFMJQbRxsl7{#Uvo3RrXXqC z%sp=_mzmfXs`^;40}$bM?#pjA^@6*zgg*-ybh;^^w*W^)wH*Q^z4-&Kvv=ZlUnp{h zdiGf(z&eiJZ~3U!4sp9iahnXe1iANDs4MPXXaY; zGD22EdUB=Qh*@&KOy|~>ApiprKYu`cA9O`F>r?VUrzW%#GndzWoOLuHi_3KlA)cd{ zFi84C4RTA^+7&f%V+m_lNU|J<7Ns8s$p_4%FJB1r)0OXulc!5;B;%Cpg{~7&zd+7# zuvZW(mI@8#1>1`41C*%k37 zob68?XvLYu{kOfUy99|SmoDdMa9I+rcanlZSVXtC0Ke8r3(@yT+{*nQ)EO>~Omm7Z zz+p|d)AP@KDnanO?zaj4N=jQmXOsgMPwjot;1C)TA0u#4#{{18Yg%pHW1b>GM@JmX zXM7Ot@wuzWHR6{zpfdOhzb4gla&W^U5RoX2ql1MCsmSl$E@(JO+yZ4Cj7T*kDTI%S zhwWXboLp{!A)=xdrslVZTht{s zbpfiB3{`}_2KMwLFp0bCa2zCv)nip9iDY1Cgr%wxh6fDXE2*c~juK%qIW^v6tRU66 zCJ$XT62^$mWh%x{P%b%X$HUAj9!12h!>b>zJ`N#B67?tqli|ue;X}g0QIwo-BN4#e z*2vGspQ+1#0#QJ|S((IAO3Yqm@{z>XDU@zmv~ci>Rb``a3IUrDhOC0z7|bojzg+8x zCDJquX!pTV)d>x zzL5z!E6t!TPFBbPJf`RQ+IGO!Mm7FoY@q+$ydbQ!oJ~nP)Rve*oW>2j2-MS(c|wQu z?iRPSh=_Hd8jXvCTL-HlCXa?iMw~>nn2u2}Ey>neQO>d837i(GM@rqoX%R9|OVcO~? zGjGURz7lutIHy&_P_x|GF}if(J4OnXOHbjzxH_iZ1ocly=ld%XrR}0=^V@TRKbP5J z3!}NkyI%Y{u+NmxXS50bzE|#!xTYyB_tJAFpVuGxDlB-^%h^%#wkzsd#ida;;$v~T zyC6Y&LR$?I*Vh~4U)Q(sp#Uj7z&_AlzM+@v*8Zmmi_+NboQ-{-T_fLhk{FX1H;9CaxezCQ5@ohEPi7^BEEu{He!u;fz3X_(%7Edt&CLj6K1kjz_V$Saz~81@Q7n^j)?$06>WKpSfRmSRMT(c zHQU_!0g*|J{Mpt+_pUBY>lK&2t1g|>ZjF?P3o;0K5xJ+CnyYk6QPye%h)I}OjG`ot ztRX~Si@tOSCfADg3Ws&61#xUVuQ3NFv=e;r+B8MY zV6(hhDqHpWRiwMWYvucLL64!BKw$yjTA~R{h##4FJdPG}>|l4Lh#Upq7ujl7mPzSU z!eB%t@-0@4+|Zi;E{lAtnE5i+D`j8d+q30&Ct8f(x<{#IibdhST^m?8o9t zUwhkm$25Xj6dS^6 zt#jzQz%JW;)Yz+$qcaSaTRc*{lvNE2lv15-@>}D$Q$4PGyr)ayc5VwAc{{q@-1@X| zTu@4K^toq2Vjbh=<6i{U8)qV`uW8gCWOXla+e*vkBmcJC$j zC-@PT(~QVpCUDAr){Tv~qW^Rd0DfA*U+KyQtm|Nq%!=(Vg^KYaKrQk?iizh(#BzPV zp5ljRZwiR?D2BFQScV4XB*jQ1l0o(Aaw2et#OP8!h8VE5=!hR!hbt~u;~nNzIJygr z(a&BK8z~{r)JQV|&e{;3h&YS`m!fBT#o2gL!bTV{ckxnu#jPVIQYb}g8354+->knz z`fmW1`}%9F4jkW4M=ZqR7=tS5TZX(EwE>b9RmQ60AO`J z1qM1M20CU&Aahz;4m~X+2P+pnEmKjhUSj#7jy{o{^rLn)-^Cih+up znvsTyhLY}ON>)g41PcQz83`pl9RmZ9m5qgyn2?O|(O2p#N-|n{Aj`|-3?Ma-g^Bg# z@Qjv*;n)2yIyxW|9kYm#gqw>OEj$iV`lr)N%xdl?=Y z{W`ZOJL`>?htJ*34FMgjdrCMwIC^<;Raj6) z0i^xBvv+%a_dF=aNeAwCEvpE00wyLhLXAlPy zPgY7HDz0_sonS4K?uW^c*QI6)^=_ zX>sMo+NLhpu)VdjrLmQfjuF6vx3aWqZDsH06Yvb~OUX#@?BGt!MD6PA=4kJdl#u-E z;a5vj2l5jXPdE6**(EBF(B9UWf`*2v$t3+{1^|eRCPslvMv4n0OMm%FPuHZRu#7j? z7>$`k+FpZ!f&Iy#GJpfk4r(V{Vht!@Mx`VKycHysWZ_j4Ls`<|;}mA4VMq7i!mO47 zmg&;Q$^#To0Uc7N146Z7R*JF2OOl{wVE}~CNm?p%wp!9Ti*kz!Fuc}Q z@-hZAhyfrtwCX|>a6#o%8*&?dKms1X0FPOk6DLoGlb(~LQud-7n-KsY{-z=?qvyMN zoO7f_F+x6Uw>)vXZhmY|;Yju#k{BP0-9%8MluwEa+UD$ykjBSARt36>6eGx}(q-zp zhRWkA>oAbx&pm#7n!$?$=>m^NE|v1g0yIJZ)o>GbyU(c5lj+r!o*>%|zfH0PusY8W z;li(`z|PP4^4ih4q;y_|%uCvyg|~yjFk4?U%1SO1MSf-ybKk~Ayh+b9U4!$S*sCei ztcCOu>%)_{d^R+c@IGJZVioR;JT+(?r?Q4cZLCTcF=4-Z*oE#~4tVh;@0-=&T(r*}{$MB87U6MHMea^9Znrw>5%9?~+z|^2HAl+t zBGdALtHQ}>Zi*)Lp(2tVqJA`ZZ}3WkJmO?X)4!cOcJ|{<(!=f#o}}()q;NeyiJ(_) zr_w^9PG;fSE*SU`UsXcJ))OZD_ZDXEB43a=JR7?ld*;{DZVhGCAf`8Fre{{Jnsl%e zpNV=i^cC_wW`OuYuMotx_8OkZB<(?w7plFF4_wgkV-`n4Ng5vV)HnekTo`l0i=XaB zeiTj-YiYdFi<>lckm7(5S?oRTZdcuxs*(MnH05ur8GD*qa8+40ZmW-p2Na(gx*RYy zh6jf#R-#l3@|G8;CFEA-i5jn_8tr!P@fl1j!z|l zO#&Cjb^?tGwE7+RR#%KizdbA>Y3!OW6h^aSrTDnkV`!E=rz%|^2IHt;6#pppyF)XJ zs_@OlG-of+{(!TYPxyDVqm^+&6_jBaL)&>F0ovJnI2Gu&dYpGYWyOh5JW>!i$Ypa|=mx3ka zwyAX_*(I+vE$UQ?40TwxDE1u;C|ljSLV9Dktn&F1;wR&*Q%gFyt=Jn*;~F1M~1N!%e` z{XN$5r!-;A%LsW+ikzNriUW*waS#xr#>~8UBG`&PuMp|&uKo61b+OQ!k|d1FuJfAc zT%(F%e@Myp{-`tLvZHfN{3raSe8G)-xbUcCBsOY6_mdn!v7NL2?2_iWW{iY72^cZw zMtp0$Q33%)zKP@#h8GTW+%+U=l4bkObe~d83u)1a{;GYmHllx&_L(BIW9w{a`-z=1rm`0 zL=sVcri<>IcpU8BnL9~O47Q4z?;>qHBu>C-;jPEqHTR&QA;GX5hcD-Zy_e1#0_Z~} zQ)jF7UgaIDxI<&rgJvmOM^UFrJ=f0$0vP=-UB#s1rHgds7{ z=%cCdBbNo2;%>8A>0&L59?_>d0M2=J>?0UA%Z@_Dm(O)+` z89Au6&6l>7l>zxoYu{04tdy6K$@-C?vxOssOTQHJRxctVj$LRleBna^8~xDJYtMMA zHRhfCOa57PUpl+{M(TG$woRjAhgM#UF0bYV>#pS-uTr0a*DV5lLzBQP^b<|11N`0& zngSjkjHQ&a88TyWW%zPPxJaee;E2>Wu8P0&*a6}{8FKBe`s z&szrPBpNrGRV%-=tFNYbrpL9fH9$lkWbG-xeCX^g++FoZA}bf(##FNZ(fjjwT8=Y=JQSP$_k>lFjDHw z3!*iU8N81_DA*t1FIEB?bTzmuZM#l=f;$Ope(i`zY<2SkF-w`wnPO2hD8h$YaeYHBM{4^lM`tUYX;>SSqd7@10!q5ui9&$> z>fIQYc#hB@>C9{Fn;{U%mCZMqU?6#3We^mb;f{Il7(2uP9G-ktxPb2yW%(Rp7Ma;%#Wg^3Su7huL! zvE23=1~~<7ee7O8-JobhTynJ&4KJOLN*!Cv3DBDM={d{2{KfoBLnWPOOBj|%-% zrd-TMeu)ba-Qs29hS6Pc74$-htRzRbZFKM;yO{N@d?n#n*IRas&V#Gb$*cY8toESXF~T@5 z2M|WGo9Awto*H({;vKEDlmycbC?&P~A_rt`SyR^4CKw3PLra9w%UpJ~Sj-mN-txSh z{`8Ef+tC4UHxD(yo1Z0sIPbFBH4gTzXw&sRk2w={b1OgRFE z!_tA2Z%#*Ffdy=uMG#D?eemBz7WO}(L0jK6 zewS3|PQATbH^ff}sS>C|?p4-W*-k1vH1 z*DOc9JocO`1Q;Apas_`7ZPj*?{vd?n_0ir#&*5H#pEKfa5Ojt(1hE#ZtUp*&i9S_}~W%t=^8Q>w{eQeWBc zyYWHBq(x|jv7wE2OiW^uXHisGErip!ufM)grU8TJ`Ps2UAK!$!^?OCF>`%6#<7xU$ zlXFDZmF8?a12=NSlRm@YJ|;0cx~Z96Q#(NyDwIytF03w*$T36H(L}> zWZlZ$$De<{TOmD=j!4JI#zL22b^~2{BKG18;5uzGcE515)15L$zopbY8{AdMSPezr zB#iTfR4j=LV=R<0OnWfUsv4j|tP|XsM$*>eJ^^ShUJLIoMWj0!B;N?XASik7jR)k3 zrd*XL?ai{r>jPjM3a0o%r${j5%duk0ClrT~zmn%(?9{8^waxFX3sucAC!JrSa&gh1 zb6Yk%@8m&LedmEgITlYZm;dFH!iVPxMz{~d)Hpw-`tDB}2tHx{{7fRv&d!&&7;<$% zF1`OL-|ABVpjz%hcvd)gwXvAACFFpH&jKBYgg$1q*j%H|cKi+`X*Ud+= z-YdDCE@Y9I?bntnn*VAqTQdP-vl`@g(=nC|IAV1QUbA#Y6nOP^Y5dpCuU9utjNqfb(SH!u5;eT+1^Wu~r+%HX!k zj6N`NXWbtkj~(Xt_u*8Im8$09p&eb_CqJB~uJ2C#@-501mMTw)(^QiPTQW>?W7f4PDjRrP;r{Zr}+iU$*b&| zDP2VakCGAOa3AU#e%$QMnWNk#31wNnL|fdv?W?~&U%m^yHw?(B(R*fbTY57g0UEG0 z7t{9H8tvZpvh(M9<47z>CFOBE{m``tZE*3~1m)dLj_C%VUwZN8J58q~1q4JrU%hP7 z6q+qM?zAOLao6o$-7IC=wg_%Dv=bKbJ%%={Ic_D($f3yW*EIx52?|~38RXcYB$w6) zoO`~w?@6+7baU$&J38K0QR<^w_3G)mcRwpio%$K)_LNK=KHe=7P*8SeJ8<^Q%o43@ z7*)zlyt=}k{Mg><6#UY?L%G$P!R$G{>z9JPW)$7VVrk`T2F_<`1j*mR{w_mE$zNR99n$0RHq^#o#}kf~Y{cMiP`@PE6MFd~B- z^37_V$>m?(76tixEWipRbW^ZaaA`S8;I$f&~!om!yz-vvtxB$)1Le-wzps z&*z_fz2fBJ+R1FXYb!+KNC>RS)s~r4edBQFsvVlp^slwqCV-ti&wWi+QW4-%!(uGD0M;*Qy$d2v1W-?{xMyF&X7V zBMnKMfQFruXJg$~zuUV7C8lL8JX0|YvSy}lqPH1^3J3^qxwpP)P!ZThzU(>4+tm7K zKse&U-fEjg%1jqel`1e?EKHjHlZ8P$8av{gehdv44Sft>6|8Sx5Xl={4%;?72+5aG zE0|}ICnQX_4`I6C^_AYKd%lPvD{bhos(blz=F@doeRuZ_WnNK05NEP-v|6%>*4^i= z@%(&Leg0Tu41Gm<6@w*vo%^pp7XmFpP4R~&wG`~sgUxho-^RLDQXWE`y$LUJYitNoA54?DR#9x1Gc-{GTylXdKM3Sx*zkn1&61!syOfVw~q@+W9S>iOq^Q$ic&O2 zOqif_V8^jNBK!GM=X#%ULzExvKJ?JB%?B-e&n5@D6^7W(5kr_w-6Eh}k`$A)%5ZOl z<7PHPHa=xGchFFjV)`B7{0`Afa<;TUzxb)c8(R_~@$}JM|Jmd3q&`|VI59^t9b+WV z_ma}$Z(DrE1p=c9qBw}-b+{-NYO$9J9?*k9?-TY~D33}!3-c>sD;3zwdjy?M4+;F=k?jJM z4AJKq{8Pqx7MwR*d{)~49s!+L(-qpgwb&T@4wH3z%NOHW>J?2i%X-)!d-ynBnCc|@ z7^LQlHY)c&Uw_-cT3bbO>Z@czt6V~yGN64q@7BFY@&2<%a|#m%UE((ATZ5VC#>>bs zrt$VJsG?>&Kz_8IZcn?x4@lKQ!HNR6*C6`lar>j4PETZ!?&b(BNd4K{CZVtoeaUNf zq$BjMf!?)xQdji48mWcH2TRrlLO=v>L8DF8#wpxa_vJrjPd~L}y^o2-s7Yz2RMnq)#{AK&dfm&{A8VZE3VR52sZZ#9S@D*A10my}7x#TX_mApEhtm z+<)Qs>y{{?bxABhHAs2*c@_)q@k8Z64(`Pdvr*9x@8qId?1=r72rH;Fu46{sIWV;u z`c0{yv7LGXH+V+w?>{Kf34P6vP!vV_=^X79Bu`#BUfZI}h}I^5<2` z0(cQ)HLcEqK3KSv!;5{%8$T0-rerf$>f}iCiyg26&M<*gu6)Fv$@sdOg^TR=Y zSB^aS!ZU>7ut)@JPuWNg0N4ws1CrktCb$V=$A9qw!%~q)qyc^Al;2)2_g><2zYUey zKT|7P2 Xu8s;Dv@ZSq*H{$=P5ByGtFZqAp%dd# literal 0 HcmV?d00001