summaryrefslogtreecommitdiff
path: root/Documentation/networking/caif
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-07-26 09:51:34 -0300
committerJonathan Corbet <corbet@lwn.net>2019-07-31 13:31:56 -0600
commite15d5a53ea3239e537d3a0c4bdfce8a4ea4e0da6 (patch)
tree0da73aa162c80b866bda4d67506ae37f09985889 /Documentation/networking/caif
parent47359e5734f1df0301ee3f0c46da9954f15b7bd9 (diff)
downloadlinux-e15d5a53ea3239e537d3a0c4bdfce8a4ea4e0da6.tar.gz
linux-e15d5a53ea3239e537d3a0c4bdfce8a4ea4e0da6.tar.bz2
linux-e15d5a53ea3239e537d3a0c4bdfce8a4ea4e0da6.zip
docs: net: convert two README files to ReST format
There are two README files there with doesn't have a .txt extension nor are at ReST format. In order to help with the docs conversion to ReST, rename those and manually convert them to ReST format. As there are lot more to be done for networking to be part of the documentation body, for now mark those two files with :orphan:, in order to supress a build warning. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'Documentation/networking/caif')
-rw-r--r--Documentation/networking/caif/caif.rst (renamed from Documentation/networking/caif/README)88
1 files changed, 60 insertions, 28 deletions
diff --git a/Documentation/networking/caif/README b/Documentation/networking/caif/caif.rst
index 757ccfaa1385..07afc8063d4d 100644
--- a/Documentation/networking/caif/README
+++ b/Documentation/networking/caif/caif.rst
@@ -1,18 +1,31 @@
-Copyright (C) ST-Ericsson AB 2010
-Author: Sjur Brendeland/ sjur.brandeland@stericsson.com
-License terms: GNU General Public License (GPL) version 2
----------------------------------------------------------
+:orphan:
-=== Start ===
-If you have compiled CAIF for modules do:
+.. SPDX-License-Identifier: GPL-2.0
+.. include:: <isonum.txt>
-$modprobe crc_ccitt
-$modprobe caif
-$modprobe caif_socket
-$modprobe chnl_net
+================
+Using Linux CAIF
+================
-=== Preparing the setup with a STE modem ===
+
+:Copyright: |copy| ST-Ericsson AB 2010
+
+:Author: Sjur Brendeland/ sjur.brandeland@stericsson.com
+
+Start
+=====
+
+If you have compiled CAIF for modules do::
+
+ $modprobe crc_ccitt
+ $modprobe caif
+ $modprobe caif_socket
+ $modprobe chnl_net
+
+
+Preparing the setup with a STE modem
+====================================
If you are working on integration of CAIF you should make sure
that the kernel is built with module support.
@@ -32,24 +45,30 @@ module parameter "ser_use_stx".
Normally Frame Checksum is always used on UART, but this is also provided as a
module parameter "ser_use_fcs".
-$ modprobe caif_serial ser_ttyname=/dev/ttyS0 ser_use_stx=yes
-$ ifconfig caif_ttyS0 up
+::
+
+ $ modprobe caif_serial ser_ttyname=/dev/ttyS0 ser_use_stx=yes
+ $ ifconfig caif_ttyS0 up
-PLEASE NOTE: There is a limitation in Android shell.
+PLEASE NOTE:
+ There is a limitation in Android shell.
It only accepts one argument to insmod/modprobe!
-=== Trouble shooting ===
+Trouble shooting
+================
There are debugfs parameters provided for serial communication.
/sys/kernel/debug/caif_serial/<tty-name>/
* ser_state: Prints the bit-mask status where
+
- 0x02 means SENDING, this is a transient state.
- 0x10 means FLOW_OFF_SENT, i.e. the previous frame has not been sent
- and is blocking further send operation. Flow OFF has been propagated
- to all CAIF Channels using this TTY.
+ and is blocking further send operation. Flow OFF has been propagated
+ to all CAIF Channels using this TTY.
* tty_status: Prints the bit-mask tty status information
+
- 0x01 - tty->warned is on.
- 0x02 - tty->low_latency is on.
- 0x04 - tty->packed is on.
@@ -58,13 +77,17 @@ There are debugfs parameters provided for serial communication.
- 0x20 - tty->stopped is on.
* last_tx_msg: Binary blob Prints the last transmitted frame.
- This can be printed with
+
+ This can be printed with::
+
$od --format=x1 /sys/kernel/debug/caif_serial/<tty>/last_rx_msg.
- The first two tx messages sent look like this. Note: The initial
- byte 02 is start of frame extension (STX) used for re-syncing
- upon errors.
- - Enumeration:
+ The first two tx messages sent look like this. Note: The initial
+ byte 02 is start of frame extension (STX) used for re-syncing
+ upon errors.
+
+ - Enumeration::
+
0000000 02 05 00 00 03 01 d2 02
| | | | | |
STX(1) | | | |
@@ -73,7 +96,9 @@ There are debugfs parameters provided for serial communication.
Command:Enumeration(1)
Link-ID(1)
Checksum(2)
- - Channel Setup:
+
+ - Channel Setup::
+
0000000 02 07 00 00 00 21 a1 00 48 df
| | | | | | | |
STX(1) | | | | | |
@@ -86,13 +111,18 @@ There are debugfs parameters provided for serial communication.
Checksum(2)
* last_rx_msg: Prints the last transmitted frame.
- The RX messages for LinkSetup look almost identical but they have the
- bit 0x20 set in the command bit, and Channel Setup has added one byte
- before Checksum containing Channel ID.
- NOTE: Several CAIF Messages might be concatenated. The maximum debug
+
+ The RX messages for LinkSetup look almost identical but they have the
+ bit 0x20 set in the command bit, and Channel Setup has added one byte
+ before Checksum containing Channel ID.
+
+ NOTE:
+ Several CAIF Messages might be concatenated. The maximum debug
buffer size is 128 bytes.
-== Error Scenarios:
+Error Scenarios
+===============
+
- last_tx_msg contains channel setup message and last_rx_msg is empty ->
The host seems to be able to send over the UART, at least the CAIF ldisc get
notified that sending is completed.
@@ -103,7 +133,9 @@ There are debugfs parameters provided for serial communication.
- if /sys/kernel/debug/caif_serial/<tty>/tty_status is non-zero there
might be problems transmitting over UART.
+
E.g. host and modem wiring is not correct you will typically see
tty_status = 0x10 (hw_stopped) and ser_state = 0x10 (FLOW_OFF_SENT).
+
You will probably see the enumeration message in last_tx_message
and empty last_rx_message.
5 !56ݘk.`- ؉oƯRݾ F) =_-/OPZ]/½h:c/lhב5Sɶ?]"B m'ܫ{(*)O(9墿YB*̈va3@0+_bjfMV8S4ܾ {~t;~h6aCP5ֱf`E![vhjLi UsN!1>}+ a !Ͳ(2DX{)vNi*̘ZX 1kS*5! bv"*i!:ܶ ՋKx֤0x2( :ZA&S"040i J%/+hЩ8 KC3v̔)in&2=$6AKыPk&N[\Qe pcYa'kVaX?Xzo G "E e;<dD9J|tuShgWyϋٍ;zISzW >Ŗ%,y4{͞AUXM!v䁷H;nM' 5<~YV7 p/P,VP&fCcڛ0w:] c|_Pf6ėOL&3+Y] gpsu]Ѕ"%9Fj7I!|S$vMESXfZ?<'-NOu\HXUR4ܯU6A=_K31JuhongRۅqO[~j>JM@逛kW91@yT5Eyz|Qoǜ{v>-QW}oFNX] ma+{ffBw&QρvJNk9,R@t(O?+ˮ[썱 Fwg $w[f 782\,'ΰK3:5h N\l7D~3x XL7f΁#}B7~:z A1*z5pt곢qV$^'Z1겼&5F@Q!hZfʉ$<KՉUͯ B=7 o?}#"'YZ J' 9ݟHPxƋum(Nѵ&& ] *Q(PP= U"Ku寘%c=Rv^PHU7bڭ`Q~Y,1* 4dP!DJw[arv=*Z餸7x|G~0AVжA.[Ǻ"`@ a<w*4fӇoD x|kjWpD F坂#~.ekz<vb;Aˣ. ڽZǧXۦåLy]ރK`!O O |N :]{"3" Q[)|P[ԄaבK*B@i` Ꜹlc4w*m'7@ .eIm|D `ذrv6ާ&$F*!)HPk)jG8XڂZw|pN'X"|a׃ F궹Id>q˘?e(jk<<.M'c$;5NE q>z,M4AyzB xVSUazғåy"0`[rT~>8΢שŬtv<1enKz}[&^v=/cWK^+?s?Rq-7dfWma8:Bv\ڮ޻_^n\ǫ+^OGN0=de A;Bi F4R>뽒 I0aKď~'8_^*vt`W;P~Z #Q- ݺ?4,m, >]) ^t@bZ+{Xt;`(+atb$~|"4NE5^qf<l0E-ɨmk(gOc]~i~WXr˶f瞀}7+NŜ,G֔Cʋ!/stF3g?pίtӡYN @$G"xv5'Yv38?^FQp+iь9qtpqpϹcT>"؃vrW-9[ytItccsڅ>>S\M-@1V^|=9~^o+_Z1o!n#EFuɌwtApQ9Xr2a&TCLi5g~75L)&Ѹk򎆨 /ů'kO p3ERcr׷naV^ay%{*8Dzer0 $Bv\EzA@q8g'_<5Qf:-َ+~BTHdjR*xD '#21{ýkoւ! =-z8+QRNk㐭r <; |9DU5)e;'a@1W?gm'RCpqΫ,j pw3'K0qeFi/uꬓ7S@k=%zMtͥuFX+G,"u Mه IvIn" 'ԕSz՗b(W'\wnѐpTddlN[1)7_F$BI2{j(".pZѦ9(sg0щmaK_8;ͳo઄ Fx4#z >P=pfdELnģl#SPlkD0#N cƪSmR̎ng{!˟,ָ!4;9vGùupF llch5ݨs e{ ;gy1.ɀTf c-L&yЀ _n$B0OFlBj }6v(N?5}4䡭ߏSǕˡ["ZcK_AC^߫2c:H;Y-`V=jVݨC`r3V;~k7٠x[DP>AGӹz:lƷ?pK<`'+mG!n iy8NPfTUU鴿/Df | YfX |? Iy4pָ[ 7Xc<##dM/W=4vdYF-tAV*_^+P .ݘnXME!bxEb:mbw ͭ.(0PD@ZWtORNo>>keʈW|e W75i^.Q;'ߖQi OxudT?<_HpGToEk>LJ!~P|4o7P}nSu}4qs!wrFqR$Y (@ %eQ'yAq@nR}8[/`6T?0kI}$ao G|| Q9YO-J̚+;UU=ӂa-@qMBòѷэô8q<4dn͑8wOhi>k0Kv3CTje%zg[#uR$*ڕRS8=W<5K}Y-cxu<#;#|xǎ.; *2Hh#ĄtX/@^̴6N=[\(kR(Nl&f}d[$A̟?>@qtWWeK8_wX)׋ct"V`-FbH+ 0Z[3E;aZ Jc_v*!bs .A"&?qv#'јr1Aי/"2)_zBTA!4gQ3>K=3s /^DB!Ww,8 Ƃu5޸;H{2~jmsk |-` ꨥAX!NYi.:N|P6 pY>eDz-ܐ(mەp\`/eF}  Xv2QǭkM- A @[">A@ȡ qn|wtLv{⛺U(&SHqp `3#>=19 /)R a1J % zRʢV H/ fLSx#_oI*5,IpK %N_kW/6HA+Gg3z4{FXȆ*L7&̾NMzCXRXR y@X@ l.쳺o 9ODL T82~ksEO膰" ;|(SDB"ŪS>CwY6p&zғȅZg2Z"+SϽ}+5nz l͠/ag5k=m'^7?,3#\z4#na}t;M@L;5 =Fj?~5G8v0"uA]1MfSF7[ۃhA7*tf};l]3w({54(J Ru".|ҹxF0.Cr7ȏʹ=v>քugk էUuOb^y:u1>L@CfݠnJ0oiAં9pƪw`#Ï@Nw #0V:pmO᭶2p7nԁtޮn_.`5)kR9UȤ*Ȏd9(Ty|M!}6Fn:RcwnW ;ѫ;facPlՆ{ۇC'uꐪfhPB4Vļz꾐٬dc$6-[G"YseqMK㞾˩z &dI#:agNPCű@9@& im|oGa}<@(h5Srlʤo340.W(4gQDt&k]3: Z:@urJ4U9uF#tMFO<֊ I v lĞ T2$!Q1)&|Y sKzza5;=m&X"4L7h>-@ߣLbыScǓE BOH]Nj}cQNr/]c\v b]s;{Uu1= HǫgZB50H4EFVKt]nr<8nWs4_T t f9`/91\중0!c.W?R] w@5P'ns@TTF7";k6W"ʀ 9mx ૫P> Q#dFQvцhq \trGxZmB1{Uw"cӴ`FC~[9Eqۿ5>^5[.n-8F< =:r8gtd}5i2܏1,kdSQn fߣ4rZl&V2Vti= IQ,я4|+u d '[UI5SV^%'@V B '"AAD6ߚ 6%/lbq]NV;axzUegQ=^ף<*j}Bc4#8>&F;kWnXMDktk#ri8K~vSFi*k]$(HEb,"/: tb7f9:X7#HTԴ'ˍ;S,FM&pD;I0xV;ǂu^\aV&{N9QҎQl9l4Q=c7WHxekJУI(R:cG :VPo>e46fj5Kyy8aFbF(I `*0؟OĚĄiHwhEyY [@FA3ybXZFODR^{AӘM(c豧hy:)2/UbѶ<K#YBO'0 >j/_>av:V}!-]wÙdO ?|ٵϾݶ/?p3uwWQ8e5ȁIjy}c8҃cjvp[/3+bi*V[bhAu<¯F.z*pj {DVMAm1!҃> 3m5ɄrT򛓌iқgv.y2śwŐ/צHT܊D]x#A' XKmi7TTTk;ϝi%&K$sb;`))Pt_tB;U"t n 1ˮC{wnXRBZHi؁}_'~"Ӌ*#3[_`%p<\|ar.\򏞫";zA;:JW~۲fszC@i3() `0+{T9p15_~Z,Lj$0͈eQcx9;T+2&(3Ly2ؤMBT!ݨoZ*ݕܔI< ;v>^!bAO2C^s[Aã*wbZlZwZ KD=%Yk#-*42@̎ ʒ-a;Th V`<454b=<&0&d(Ta-jDTԍ"F.UraLW0ؙWxcՈikhE2kVa]FGf9rJhhfhpLlmfvs#7+ƴu8 SLxH%ua3Vu8"1=k2­2 m/yۉ;؆-ߒhn+Ɠ$)0;(F)Ry>}Gor9+b]#ފ :V #Uᐕ|$^g!xwo}n5a$m\2!R[X5#;o}@062x6T۞\}vJ NPj2l0v 6 ϿUq|VnK!VKݚ7ē0W/VH] @o׽M5(aҫYCdǼ? |>j $;i#bs"KX`[WV]5Psm:ov#:( EM?#p陪Fc+2Gc_ OV6mN?›pch]ҁˊ+1Wϖ2Ъ-L$PtGr~p{k<)$=jTK2 6 +ѭ͖>Tڛ92`uuܱm#hM-s#āٝ] -e:-4㤐@7Q%*a"ֆ;!iϴ{W17z{z 0P^Ķ9ER,UyS`},eSE@CO !mT^|~I{ߩ6{(iN'*Xv\ElbemQfJm޼1 1N\r~fkCtp`J(M0iG ֡&3cb1OIN~_T28]a]~3'eu}8U<?_0noǨX>%X.H{[&Rh;)c8i `r_fY r !"C ÷?FH}{Ǽӽi=un8 @"=!X%np5<~^cVSK, ^0$, ࢃJ2 LiW}8xs?0nhS@P=?\2.X*r}Jt}'{pq. PsgfƫWgJFr tag|ovq 3X/̮w.$+V^xG_ V|{7}&fML|DzQ\zicn#}XF^F`pFhp>mVL‡DsP- fQOz2 U8bgو'b&tx>H%IL.E'qD2S1q㓑|WޱҰ?ݏT!.Y1ߪT?3 _{yUӒ X򌀁tGjQ=l[ NϛACiς]z QÞ-ݥ<舭8㐈א{%'Sy.zoC8Yuñ4HA8럙Ȥ[]CcƸw ra;`?wfk~:,1ǛJD<$! jw ϕ +QqEFCtSrTX;ȱz` G AG'ǷE1[2Hbh.ȟI$(ejw2b.u,cJbq ڟKr 9"[4q?V8:Ή߷])(r) Ⱥs}G,΃A.r=oWJos f:+mM֏,jT M!owXi|51D8X^D5E"gݪA`{kfy frtO7Vi>.)!" 0 LȼOJ^g `oxO<5Q7j Bm (1!B9HHjH@D>m#Th1/̳,bDƒX!߿O:.sNQb=o(q @E`D@h1~8p_G#hK>iMDo.aFOq^P{ySp4+56050024gqS}o`{u fՄJChtÒ@ɑs[ 4_ M0l &Ap7}.qwdyE &k5#hxA ) "PHC#c`V6CGep⣪zX/ux׷<7b{Ta5gHᢁWl=7{=r'ct|j{=#7Г\ K[Jg>t d% Ɓo ^w̖F?&Atnw&`Jc2# W3(b_v=^ X:oG*Wr'e޿#ɨ2KSJK$} paĝN.1nhК>߳san .rp$֚JQx\|}_l=9{cQ0bċyX3 Pxj_$|[u&K]A _U+|]Z.^cX MX6}\BʐJS ,dɾ~|ǟ9g4Xk.sel젭4Wk޼u1ZZVw}+fۣSiۯInt_etɡDh}pR::S_xGFZ,v9=oNcP(.!B1g9œR\\Z>ݒOO;aC緟BO2A?>dׯeu٫mv}G&4ȕN˛GCNT - l͉<ʜTɛE58Fj#U{{݉`}Q/tjA~K~{tLQ'$ Kǘ^uu"7EMG*o;yěr2C$RliA<~mESd2Ї^3,%F5 >X/ipPXi;Xsy h>02zf9K[ahk-OV=h^@@C ǀtJWö Rԡ>pjt]Ws)R?>.G߂̓B~^ۻĦ2 AgTRwS,- d C"W#0sQg֭sV/go.:-n"> $<1 ڪ∴(T4ϳ2R&j}C!6 b0RF淌kO; ld@0" ^~IF1@u*=) nOr'ľʃ-Nrt|S0攒0Gxrj?Ț΢ Y:SO0jd|̞a] K>C&GOˉg//b>R( s`=v0s*yQ_sFܕG>Zt/Ǯ>X0& \nq""e 2wp=af+%%&}.1.d "d36x99*A9Q.,1hzK'M "(6jkq?=%EB?b4SLlND&ib6J3a u3K#"i7Rs bĺ )!51RͥlClh8D!{]opM:_+ -vd! ALcA:d/KVzG+Մ")uX6]0MioVaCA7ݯ<|^$9pX4;2Q%KJp#/Y؊7aL~P1qײusK8 /W*0f=M9m|פMFD"{Aj/k`Db2OծU )E.]Jewh3E$4})_rn}*U0EI!'lt Ds.NӒ9>R"՞xl 2f49lJL˒K0]j Ŝ E#HfB' a\E+tu b-T}.#cBzz:MTԉ-@)/-f*<}E5u:XWr0,Te sM?5%3@TYښB,r5Z >osDuDJ?4GllUYgj@ uEL!j:F=N-}o_afpT1oǻ|tJ|8CRl+) 99o]}݌9aw=0( 1Tư i=gCǼc?oo(돷"ċ.=5D=C%K2dgHv}UZ{ J+2q&B <Īж #~*1|ڬ3VTj0AB6]~Xr<* [oN9BMW^N}t9< )c#7(V-0˞]O|)g/l8r\&ګ:y7yf|5l.W@ -yHQ" S`œzP g{`u, N?N81lEIeD pt)mk2.QʕTD4ܴ.42,z;go; e4`j,"(ѽZ OԣG,ses1@߷ҒSS~0aL#UN?iM|z6հO/׈1Py wh>$Bb%@ox{ަ/#^T]617>3;$鯓UpX5S;J@)>G6].$9&A=Iݾ)nuUm,COk5 $NM+2Ku]D%D&=W)hfOnO pGk=C3]wu팬ֺ+h#?冯ЇDޠ1JI uDWT#Z-a )XnN!ٕ?/+0ěK2 >^})^qƁz-Fh>qzM 1 Be甄' S4pKF>(:{vJ89B|!bvJ;BO;[t1G~8")ėiǪkOKGOchE7R-M)j>bX1LC,{VTu+SAX u [UöYBਧ:\AEO|)&Z@lNCa)t1xp('ČLжbNʏe @Ev{55e6S*=-l5gwy5#i:+Js-FÜ>o]aJ$((+s2rD]"0\Y"|\s>27]e;:1:ßv,eF#)k[2ƚok]Ԩ|QaWaL09K4JN ZC7yt>(*B.Ua2K`POb@~<ވCE^.d=sk @j甬d .e^,UH ס~Q?{;~y>Ouĝˎ_+2NYsvI=k]&4@O>"e{OY9V2 ZQg~v>O%#''(^"@ \^{H 7] 0`'bg4PH?wzDċ ֪gk&OQ?=B,Q)7CW՜ԩ8N5-h+aSS֊!^)v΂.U3ggN_ә/RDoB06\gF,7{p -*-IYS hLNd+aeruLGֺO͌$fG>Kmvg_ >p&,2]Ufz Sp#)DF$2n|ȘXX5c"5bGRXV@[A`?|܎u(=KCGo–S^1=ԈM~:uQYh'I&A Uy:[ )Nje+xd6\BUM`=+%AG9"l~H (% <8y1fLJjXiK|VY(8:h݃󰋊q|=m!.HhSK~1W -!֯r+hMʵ6zE_Cŕx M? I p>ߓ, 4o);Wi#(_^iB㍴-Q:@}O?l,Hlra73Pco_ѫ-xf ΋.sA*3Z%Oictdth?qWyEF\,NE?;8?Ui)sÛ 7t{t胾n!&GM3ưvUtDTFYWrt͈U 񛷸Nb}"tU[*m#ABbb+ <*YQ>2G;m>N*_ׯG D `@AM+Hl>P\Q: 97W8hB#wo0E B ]0뢄ÇNIOw7=9Y>e|}/ifJ.ⰿO"nۖT8u ,QEL0 G(<pt$ n1BQ̥HF0 q]Y@ɝo/`WE=bn)%:8 (1$k,H{b]꠳y+!t5ծ*UB <^z^',gx]a$G3e /2<1`/'uϟw",QWW˭f#|]ٚw=_»7ә[ unO@ Tyd#!θ0eC!6nEFۤ+]b6}i jnZ6έѝWl5G;k}W aBD3g\_83y -qvF| hJdODplNbӪ*CY ѳ5([u8#~Fo(KCS!9X;ػfi R㤍i[=?̃YC=a!R瀖(p*? M׭qי:\dQJWQ`Td̗`6[`h08 N#0#NBNBY7M) YJU`"ZփvQöB9рV۟ߠU{U~4`kv3?R <,`9=N oeVS[&eE%,-d[¤6o^ĢX{['ϿVspBdۧ =@ #,Sc[((#agϱMdF5GDXIXL#l>",lBXZ(n-~R&&mzE<n xVOG9Ų²x . eY<6FRZ @6Mx;}Q{^'o}aʃ$8k ٬b=U"e!"+#q 4+M'`W(V/xD5R-]aݐ"nK%vK o5̺1vid}>y/l@ۮcE~)%{[Cݓ?/kARvmlP_SrY..^u^էtNqȎmXK.Kt+$VqL{<^sOd9 F S Ŕ+GPN7`q?j2 OPT\ج;$$„W4QRCs}rǨ珛{@e&,#sˬ^l~\$ w Š5!hxO.ο9ۢl[db4IZ.eDK! "1i7jf1e xa) yG/V~;6\y }yCI_Q<& SHQbU?8*Ttmѽj9&L)Xjq4ZCvR z5ti/KNq98?)|'OS7ML9Tj5c gFdA)+gP<4㮑wUN72$ZG?ִ`a5Pw<*R F (%Z(Bjp2" ^d&BtzV=0ȡwj_l쥙E.PD HltIʴV!4'1#fqr-'K_"rd2 wntbOG  <*|8RUzP:gPXȺ Lӳ֮ x-N-\2 pSo:Q *N)i6U:N10a7}YrK訧@EU8)%h>ǥVVb4ӱp:0'kA|s7a(Sύq֌$ޒcO:"G R?YN`sɜxruN AS+ktN&zg8gqdaZ!u^kjS@%0A9rN|c~m[STZ:ɠ9oPELSFQ;P[]蜪S8_"""j .IUН|</\LLos&{e/V-YhaE4L;Kkqy/quFغ3 ƹ]O_72$jIza1@peĮ2-{[g4e?uzE-׿ZI<=w-%QMhEοM0[ X. zHJS],DA@)˓ >ky/+~xշKgqfKo+ЏfAӦ1=5l#y{Ȉ]9 Ήw9=sI[˯Z%J(Ԩ t\*ae\J y88,v˞0oKU`!<Ά* @PJ h?'P>>[/;܁!|͍)g4Z6*P(sQ@Ӟ>X ]sa>/ڭ{=ce65 Z[O* g'%(|mYm[Y|7mZ99hE)٭9C]_01W͛\!5EK!\U.U9CV(7oc+`慻͜HS;i-X9<кv0=V NWؠ ``-RWڨ?aRPxdZ<ҦD~|壍z,qg:~ ͱ;}G:}+=w-IRu nmL)D{UQHw!>szzT9ÚE`[y2|p0t ދrɺX#D" U&TZ]niz޵$zBsP Hd\\=CWxF//t@v|@bq*H<(hEHH~E`[ "L>4>> \;;GkA،)>?cZ"H^tv(ۓCX#L'(̅K8:1ѵ}E|VS)JI-#)ӗqnpr)*AP*ǨNo*[]=Ĝ}\#!6PGzz^=))GG\yCgkro#[j>Dž/Q}PB0g]/t`ci EEC.$!gN}LnhLq܇SqTZ[kz+я sߍgU>\bLZr\MA@9V^* K1e71' )>o>H-o$n69,촰qIZH3;u qyz('eyl9B)k_)y<) ?HDAdTGgpVϪKS /:Q ^h͗/AV_mݘlP(yhk$f"°Dyx(`w.QGFe`<!Hܢ-G@,ޢS %K 8< ?1eф2Mg(ΊzaՀ1V@:`!<z 3vƾrm%@@ut8+ѧx6qCsAzr[P@ecU Fj8uteʥ o42!'%.q ||3@@?Z\*!O38֠J\j3=bȈWb<*"OiN" 1P(*zX<*(b$WJ6ט.F1h~Y=ÃEڍ~W\@@2([ nIHv7Io;ZT73@BQsf"%@?xAJ wu8yoߪ?&uxO&&, Z9oG6$Ge|eX{MK["(I4poƾpA+jؼ+XkɳP>v-AM1! +@8p|\sj[83%MT*) @wC1!ciU]?e8 xHNY}{%g>0ed+МgْoA65-[\:3aSd0z.mABog[IiɃ"b{oNG$j`m &Q!H;zG36QzZpdG@.q *ׯSۋ#JWSJ-bn>Z%5a_`4pKb/[iq@HAܪUk,0 ML/"osG'oABx}K'1IW8F |s"&٭g2fFc|FKXQ=&C~SSD: SS&90enrTrKuHs?Zbk+zCX~dXа*nI8a Z?7ȾzϑEC\; W=th,64?^FġC,˷rt{\f/zp&4GςHrsN )v׏<[,P$AqPr8v MNC _W X;{Bv@]ݸaыgi>[gK47!OpB:[O\%a gZu~h*j`FLxC}}+[@Rl @8A ()9,0)V*3aEu tIX{kDvt_ň(9a$(9홌P@}`tb~'ozڷ666I]Ȁ,Ysk"Cn6@/@qanYXO.=7_B >?Q{1@D^~_ɿiMExZwɟ[ WjHZ0!~g.Zd3@8xscfV.亪ץPnKr$/ޠ34b9w6C<6nF̱8yP8DJ g%66 1Vv"-Z@:v١]ٌ%T>7'U-5釫Jp;7ژgDﱈ96cjCwNy)mphy&1#" wfN._^$͟|gSc1IDL%zʑn2É = su6q9E R{C*3˜rޘ|ET.d~6=Qj~l-n k!W>nQ|&:'1}QFӸ֔5XmZ3M(/wP+9oI< ܞccI!<㱙+0I[1cߜ?. 7Gg3}x^ؚs.{h$jj|1ʎ-ܓI*-LД"1(c<w{-Y\%}^$G>+0Gnq jìuO5MwVW9yPHF[Z ٬ᭅ x ק=;İGHW (d&(YԷ0Nq3i7*jfDaܚM>hɷ:Gb88m 6W e[WyݶExcMl}kzN!h;v:^2߂پG.GX1bDuwה9^u2/QY?8vui<$}iTo*f-f`i~lNj+ZC] &cB4$2==X%?{ô%^Dlb92pm"@NRHֻ *"#M9 &"W<q(娤v 5ok~w;8FQJ&DsF0ql9+ 23;bΎM'X sֲk:{>8HٞX񇌗W$OyEY(G\-Y\i 320é?y;aH1o+;]{5$]:#~9GaaYYu8/AV(S.kl׈?P[H~FˣoZ^"0Y1F֏}D; ,&S3L묎[F;hm[IZ&(jX|Xnpwz\EiXE-Qink þU$b[ ($wPT:},&^]Y+>Sm1o7u@iɱo&keX$%!o$@Lf:ry)};s8G7")L~}`+|^Ntĕc2w.`u9FgQ"圵I桉{Oys08- 9k*åU_dtT=?ܰQu%;S IMB?Vl7՘+wݕ,+N90#Qsy1"+;贴:Vsv׸ԟܵ#AݠmVy)7cc"ീ *b2*+;bqCqٓ}vg?>xZӊ"9*J. UPV+F"~'?=χ̶w]N 2Ɨ~ 8*pS I;@%/\(PtR챀Ǟ0eWڶzaӗ%RS97[ q.~߼N$|2dWlس=^#s ?u?iPI/,GpVe:Zx 3f߰WcM$|@oV< ̀ıa? 24B6 fuI=PWGEsn"6uFi ՅYܴIv8(y*.[ޡG(}  ϟTp!(PXS1%񼰔GKb(QQ1mu[X`EDvY. F[l".QAWovz]pPpX>Yl/a(pi cG剂+T4~d2 ҂h!m}nU`Fl{߿zoҜZyxO۴͚x]rP6S֗f7";2 nGge :!;9rB{SPhIFл:eQtP߁A(>df&hcSA+Yϋ#ŲiRПAE~b1"zJ2Oo:ywmh)(SZ.h7H>5}J 0JP.0~=&?k(r .w;:r190# [?r?6Gwxh.4z=K5w!16CcM}d1Ր{f*{̔6koF^}b Qj!{7Ԉ\ϽJ.Hpaji 0lc 0K#b k!(j(N1&5RL\wַeѝaVkm^Œ>q.‥^(N>+x۬O >D`2[e-7GEB๠B$`j*Hزy$LFDv| M uP#Hհ=A2tO/7q,Ci!}ܮW6֒(~3vHh/g>ޣJ0h:MWMgr(f\%t5\c̣ZlQH+$ XME\)> f0 '}僶>͑D0ɞ C (-# eU-W;/{GsFj 4__iEve(dQ-H'7T슦{Sh~bJ 0- $a{_G0fM+F~–XB\0vEnL/,Yc2$|rux1a&T:ePju׽=ҿ0ށL!28GIIR5pQdGFq~H#PHwKo6x,Na DIBA|C]qԘ 7;'x(.+\ߜɛ !$n]ryBo|'Ϣ`톑"Pz?QFȠ$oI7wǓzHXh޾lCjAeH:`XF%‹ R,z:*rHF,Y@-YFX<w ]h~tx~όIS~LxRr|"MLaڔjiYֱf\S`QEvCXbGc Tz)*Q?um}h[ش)aZ|lv-\IibKBI2ނA?BvVf.oh .ՆwPvpQgtx.p@ڱMW/skhT時?CV}ݻV-&oBr$8H9/ @AIbIsֆfv6SU21:g?EZoI4\54xi9WLdHVTb!Xng0IyOcFX2s SK4jGk1-{fҼA=tݜ屨ϾE޼j`n.@_Tp`Bl'(! C=Y'V}W5`L:-];% W/u]۵EgRxY㎺MG:`6`ނY gAnrw1c|lMbZV*\Gx8)ܫTptSD ilEDy(j|E^^ M^nNu (/_OFC7}P`P@_ANn,K|nZ}1 (W(RjL_KNHxVóB^@;S')Nd#ɬBR:4DD<44DdB݁_pW'e5TF RnDhUJpă?$mtUЈ29^ӕdIy֞trVWDv⒳|AY]V{w$ۅs(d P&=lP//ڈ=d]?M m+̽Wn3)"oA #K/r2bi*aܣj%þ4{IKlUJ=r5n<b=rU3qb=:UIK\Q#MvP m9 F9m);z%TR]nVQ]uzz3 y|/}sd&gG8ل滓r1oc"*9x5+ar~!1OםvNAet>R`1uv?ѓܥR|{a7lM;s:_Yk=W#`h΅C'PM)0-舽0r yc 68ZPhSgAF(El_HV]1AM\{=@)ע+~|. :[MC:'27}gР{v{%V|n?}ԍ&6/H><?cl߫nKrd1WU+;|>,7xyxm[&өΨϽ,_ޟW|q֏)n2lǔ5l" hi"H&g|0Y^9R YaPt ؏Of_m6OMQ17t`B^]| zGsxgKü ,vn#ͳp7-xw˝G1_-@_:vF4J۸Avݮ1NZ/B:M3!8~_oӾBѻ1fB4sl>/eܾn|>jN6i}M=NDo}p { ."W޶o=#cfՀ[(U =[[t@J)ہFհ](sǠw(K56=,K*s-`B&䥂bBoe:[~}Ym5kͷiV-cӥqݛ~>3!Fc#5 ;$c?u8 t45i$HDӧ։~ ^#&cD$OoLnh*PvQN`=ˀ?Fii2xQ+rWO&7ݒmwwXq@nvP=WEҢ?pp|HV)cuQk$ABA\8^ >XY~Y|.='7R>x9P97Ԭt\$!VX}E_]zj,bADAe$s5" 3oËG?V+sY l`?)/~unu SYx*l=~߅/2:?ɼ:np4fﵗ'XEU?Wmi[yx۝n8A~G£/,7~maigT_V9;釋]kEݞEw>͵K_V6JN`^uj z\vnge=>7U5wdI]| _'d Xv>x>;kz]O!۩>ҍXA{כz6a:p,ܮw6"35aݲ»Iйe9_Ɍ|Ra9K"KTu7j"%-[f ?0`  }ߧPjG >&ޣ1jxsZ46y8M~?}~t CT|0?!Q?*BqvH9pᣣ^ 0Rٔmu|<Ӓ> LGtNEQ~DuqIg Q|H n|w'RŤif}[Cu !+P$_, B!}:qAg@|w~ݼoxF0 ]z@ 06Î6uj@ i,Mw+fPq/@/i}|~} 6Żw,/n|Kߑ$ײ;߮P+gtECIDC^h$4 %_^}Mq^[ށ`f$V5'ZFРؒ}J!*LwFADy4LK\لt J!ѓ=f>&9ig÷c9<~C0!& hLhdzI!K"Ib0`w qI Y70qDL?)j 4d"}}G~KM H+eF]G_ H&Li~`o:ad,3h>ٮD_LPk8vm`.5Ef*ed#PtS?VFtdGm9r/WM̓R;EK܃h er(\٭7 ):V4/_G;4Mz1 P}k[$ֶYJ|\ޣ M[`wFn{.e_MdHWjWɭzȼAI1#CQ Fߍ\\]X???Z9lFUg-ױ}o ÷ 9_iZI>Wn4=2Q9 sNv=44[J)u_r9y[@ (TLܯfU,B-1J0:བྷ>fUBIx3-uO74F2~jU B':$%UqЭhLPN?(KU?vrVk M{,TaōoȏeubU[a5luUlsɧfrOYY4QFz4PI0.sԢDFH2V/7wLmXOvAΏe FjDUm͓p}T?sjGu a&TYW]=-!$v4f@?i/6Dh HINcP]bwS:?ҤL ދ:, )%)5(ÚC-¦&T%m7BcLlIcm14mC+|W(s[t:>m쀁Y˶7IN-Uᮧr]wk jh^,r> oII"0LuXeH5*H'Dg*$_-/WquO9p:ʅc{CpnG3k(YS5ꪗ^ƒjع\T VB=8Vq$97\~}³,af>'􎌛>Ic`eg)y^ms@ Aag-w3 @^/ʨbca#C|S;+uGoW-cpӾh !46NO0U"A&VGxGX0*o#Y·>y ~VReV'g\ m9E$ Ώ[9lD,4&  -hŊF,JH꽜:}-_~5]Ossn9y}@&^L||F6.W~x>ۇ8i DxH>F;,ǛVBbWI!Ā:8HY}Tۖ1HYk` r3p~`"_[M`6ې@ovtx;7^>JuϠ$RW uz9$ȽFPKwNᮣK-~׵]'5oO3Lq9,~}14e. ,/V~,\T#qCԉȔ>XD<.7eL!%甗HplֵhKWBj{:\c%eϾ}*[S#bVBe+-J#mN ºarjȥ7NV쐶ǣ(~uOG=./߬`s!qxv&+/jL,s^Қ?GǬ㎵(f5}7L^i<)r*=mMut{[ピL"pAPݡP./)H*!=LAs'5%44ɖ  J72c3PS PDz<:?{˜NUU;wqoqAxz~K\>u{zO4|{{YvneCA~|-rx+kmXhl8~VtѲ׭xN1t@-f|E]GP>J=q)i5HS㌹t0[V$vNm!,VX')ԍm2[1{V  ,J$w CR{-aiUOwy!3 Ļ3~~;WQ>,kqvVNTce8IЀ7ם 7\sfwDQoE%sRV:Ź= 5T)N330%"v#i4چ`ق/F,C.VR:![9nf*I.N32' bU#!.,F2COt6whsݞGxG/DDPI@&N0D;AEDu(̘v$.\# Dٶc׿\Y Ή YMOz3_1 Qr'uewJzNJgwFYMx)(X~%;Z3gM`XsGzwu^n?*ge w*2NYHɤmbøo-F 6$/J1[L3Y&1 7 w.e!gVe["!6|Y B!6e K o0 SGF G AʖEx ݷ4l$Nj9DH .H R&f9ʖRUJ/'c1:8{d + j][?YǬ٧7ܟU^g*Yl[iR U%#z܁mudZ,t~Tm N~bP\&AHKvLlꎜKpC~`4Ar"]T6@0IY nwz!DJE=pa:EO?MT]g~NV4;$G'\wx̟#ջTIĊj`IckDCA$ppprI$nB%ƘBA4=)(|⩱"lhw7}jY`F^:hOHPW1سA?oKss;h"9pwO͌?_Qdma!mQ[SJA97JFn[ru)EsWt)ҤXc;0M*o N;pv5?1:WxhmI`rl{ƙți`WrWRƖ/ֻlX# /7{#Δ ɶ [#;;;sf yNt:.v:'ٵ?o٭'3O/}kuY=Z ˒BHEQ<ڵ݆.(q4Wg6iMRx6eBi[18#f$oM Dz:60RT= 0~G/x}>EH`8lyڐWJhԭB4ykZ&q/ ,AtA 9 4eF}wnYs&./D@ vO㹂7xvMFm]z jlÏN:[د<;Q4$Z}ub!-A%QEUQ2URTQCTQCTQIEUPPR5M5E5M5EQE-RUTI$r%*ݧSM}E/Ȑ6%$&|>dp.u 9/ްGѰf1Fa-vpU-@ 8IWbM,30otw`鄽3 Ҟ 0aYs xݳ* + sÈ:M!$ JDPRPA$PfrHۣ!i̖#W_yϧЪ1rH$(-DT2L$TUQTRR4MBA!L%PPRB>"Y1` ڄPfxlG,mZV6+V%fl2)$ʫmXNU)uZU)}2slmY65:Vh ]Vh [jr8QUbI#qH$n)#7 h!" n=]˦Ea]Z{B%O {D<߲{$|K!i_hɫ%`eՅ={mbULmdh>_`b(cje0X"$<ڒ J6_&D^^e°H7:#ԠL];DFzS#g{өΣ9a^ 4H 'E?}?pHBzq}:nSlj$BH^9<7rKImڀ%bKXZ) _UtJ՘&cjc=b1@s+'hA )1X oh7S K@E40\]yZg3LZ-6x;'H1uʓض` #ѥ) P"2 TOsjjh(5 1 $.%Ww"U Cah 2k5TB/> &]✁"J( \&.j}wt;cjOw!,+iUm$}:q KBSx"D҂SW=_WJKKo|DMF$!oq$r33V9ň@_`-+tdߖJwڐЫݝR#nj?B.mb'o& 1YN 4u-82FQ@i5ڑWމX,p@^zԇ ^ Jg*xt<~3FsÜ\+uܺ]_zhvk։[ݹ&qƸ8޲U_څKv:?SIO= O?Y!#hD L\&pGX1bSM?7W$`@d0k8(!-^#-ދѥ/Fˡ/bX? J0Lyv<]m:~>k(\!E`J-BcICVwy\n|Nkp {Hbq"ٚ#v b#O4Tpuc\UHtLCo4: @a%198aiB@I FZE!o@n 0<5b?xC;TW]fZ]zao@6XD ,0HNT e(Վ6at4hum^f4iqk<ȵ+} @tp|:-z 3 P"_[z @ uG'NR+TIPR'(oOTlhxge߱^eulV7Z&[chwrbZlFry\ła;qQM70; 355%Xcԯ=y-TNcq.2nn_]~W왦0;^9m]g#Ho5!OInug4`&Ms]{z%?10S󑳫ݽҷͶlmÉ}=_?|RQ>(EPRFQ%DxJ K3?%o#sw_ 7n[(:*'HrD'\"bH6Q:@Kӈ!e kl݇kEęB5Gg}0khAעF5iFpIXh+C5OP!tl qfUt*3J{8Z(ljx{]qmٍ3z=Nr70sq_'!bdc7ታ=3kiGȖ'J<x+yFcr?x,rnƈ @L<}6 m*GX44I *40?F*Ls= }]*\+ :?A?1]JUP*xm:ݾul 7;us1sdf.gDЃ)t/._<<$(2=ʿ]A&Du@VP㢱6cq)NH ThWJ0mαXfB`e ѵ_>"+U ƨ`a_S/S_diKm$mP#Al% }nV(Ffjv*ct׍g쮉i֖4R-`xvo [֎}/fxߍ@cgDjߴ_<\@ ̵WRtL44oh+Wb-Os𡎞Aq@lR@(Bjxpw Q*GkAe 5c@8KSr@>18U5 3 ӸMqɷIb448B(<3ƗDf$LH}EVao1pr0ͬ(q/ 7A,j(!2J[4zĘKJD@"@F-ˡm͏Ff"}}gh/#9 5@. }P{Tw+; /kC+̵OYfqLѵUAQ>_s;m`V9^BD@PmPLq{oNd9Q-_(NεOtNl ǟQؽ|hm2#a7mp⾾]s69b:3}j R!5ɀDP./Au$ ޿s8.3hē2"{8ZRO2AMsE pA7Q~ i$-0"u:Kɸi| e|~0Rfl*HVWd?8j:UT UR6Ds #RXkݭ.$VOR?8݀|Hq(qLJas0@c!ɔ)@cwF( =4d9T6+"|g?;,k "fkt|8!HCOd^ {z|ZҾL̖deL{oF+WF vN90:ER@ @4&1 thH#禿6lth"HhhQ ORmUT."=/~Bg, %=|)L _ɡc ZTR/A/7`3͛{ڬz:w{啇ك|(!}6Q2^m꣘^#s`$-߸]_n,zIm؂ktrп ϥm/CE"PDzWe>%&c[y)ٺAma<3ltI6 ɐn*-)EZPJqR}9nKyA,0Dbpɭ & Hg(P0hL4r4~|o gQDDJH>WM1 lf0E^xw@5 |aoQ[$P&d{sV={_ s EzsbPaP"$As ) 0J0@߿~]YOEN^{%[9V x@fْ?"켵[%XQ$PH8sy⽽"!$.Y޿P& SOٸR^>\+1U C._xD =e]ox-/+m/*m) E/ t*̦1XCEr9" =|a!}`iGMP>m篤w`dazC^'m*&XStq'[7X ;D@efߛHxŲ͞tҧstu2!W;'c0>qvk~9p7|ȃOly x7HgD_4lN R|W][au}~= :\i[4PG,HR*@w#ⶆ (̀p = :` ОsΈ Gp3G|9g#ٌlpfb&:meGWZWM*Xib.+D;^>I?z:BO #!ㆀJun<ڟƷ&4-cwlӂ|֣nG~gx7oE峭ׅ{!.o?Ul>һ!z,;T݄BvFϺR6VW+ UT gm8CtMyxb X#0(^QFjh|>&1JDD(`IelX8Vd' % _f;w |L,m@R[E;,tcmuŇ[ѯ=DL"۪Q.ņSSj~>),Q21Dp8VN+!&~3~۬6a q/ Gձ2| #',  0\ҳK2Cܢu~\,6T!@Ȇ$HM]W~OUNӬE]Vv\/om)k;" I3y@~';.}b) ,R,ξ8rx }%)$d#B+ot`+ %MQ&bj Qg$>%Oj&L @wPvؽr.1] T!X+q,\B#аhW._gJ#^@_c}gѸQG4w;"l8':!q,,=# |KW~vю|7:SL8p}Yό"Q!` A~7ڥJ( q 1)Ga s3 tOfD@QuXh#wq7RT~=Tx{M e<`y¯+:Ybg> VWFWBZ.uV5_ QY\1/r bgw݇ES ~󝱔'HX`=߆ޚV+ !yp^=>L@٬ƨPϴݛD3"Ʊ)|k& rywË