summaryrefslogtreecommitdiff
path: root/Documentation/ABI/stable
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2020-01-27 10:55:50 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2020-01-27 10:55:50 -0800
commita5b871c91d470326eed3ae0ebd2fc07f3aee9050 (patch)
tree95b46574591a6eb56e2d7e62219c2629cf064f03 /Documentation/ABI/stable
parent715d1285695382b5074e49a0fe475b9ba56a1101 (diff)
parent71723a96b8b1367fefc18f60025dae792477d602 (diff)
downloadlinux-a5b871c91d470326eed3ae0ebd2fc07f3aee9050.tar.gz
linux-a5b871c91d470326eed3ae0ebd2fc07f3aee9050.tar.bz2
linux-a5b871c91d470326eed3ae0ebd2fc07f3aee9050.zip
Merge tag 'dmaengine-5.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma
Pull dmaengine updates from Vinod Koul: "This time we have a bunch of core changes to support dynamic channels, hotplug of controllers, new apis for metadata ops etc along with new drivers for Intel data accelerators, TI K3 UDMA, PLX DMA engine and hisilicon Kunpeng DMA engine. Also usual assorted updates to drivers. Core: - Support for dynamic channels - Removal of various slave wrappers - Make few slave request APIs as private to dmaengine - Symlinks between channels and slaves - Support for hotplug of controllers - Support for metadata_ops for dma_async_tx_descriptor - Reporting DMA cached data amount - Virtual dma channel locking updates New drivers/device/feature support support: - Driver for Intel data accelerators - Driver for TI K3 UDMA - Driver for PLX DMA engine - Driver for hisilicon Kunpeng DMA engine - Support for eDMA support for QorIQ LS1028A in fsl edma driver - Support for cyclic dma in sun4i driver - Support for X1830 in JZ4780 driver" * tag 'dmaengine-5.6-rc1' of git://git.infradead.org/users/vkoul/slave-dma: (62 commits) dmaengine: Create symlinks between DMA channels and slaves dmaengine: hisilicon: Add Kunpeng DMA engine support dmaengine: idxd: add char driver to expose submission portal to userland dmaengine: idxd: connect idxd to dmaengine subsystem dmaengine: idxd: add descriptor manipulation routines dmaengine: idxd: add sysfs ABI for idxd driver dmaengine: idxd: add configuration component of driver dmaengine: idxd: Init and probe for Intel data accelerators dmaengine: add support to dynamic register/unregister of channels dmaengine: break out channel registration x86/asm: add iosubmit_cmds512() based on MOVDIR64B CPU instruction dmaengine: ti: k3-udma: fix spelling mistake "limted" -> "limited" dmaengine: s3c24xx-dma: fix spelling mistake "to" -> "too" dmaengine: Move dma_get_{,any_}slave_channel() to private dmaengine.h dmaengine: Remove dma_request_slave_channel_compat() wrapper dmaengine: Remove dma_device_satisfies_mask() wrapper dt-bindings: fsl-imx-sdma: Add i.MX8MM/i.MX8MN/i.MX8MP compatible string dmaengine: zynqmp_dma: fix burst length configuration dmaengine: sun4i: Add support for cyclic requests with dedicated DMA dmaengine: fsl-qdma: fix duplicated argument to && ...
Diffstat (limited to 'Documentation/ABI/stable')
-rw-r--r--Documentation/ABI/stable/sysfs-driver-dma-idxd171
1 files changed, 171 insertions, 0 deletions
diff --git a/Documentation/ABI/stable/sysfs-driver-dma-idxd b/Documentation/ABI/stable/sysfs-driver-dma-idxd
new file mode 100644
index 000000000000..f4be46cc6cb6
--- /dev/null
+++ b/Documentation/ABI/stable/sysfs-driver-dma-idxd
@@ -0,0 +1,171 @@
+What: sys/bus/dsa/devices/dsa<m>/cdev_major
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The major number that the character device driver assigned to
+ this device.
+
+What: sys/bus/dsa/devices/dsa<m>/errors
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The error information for this device.
+
+What: sys/bus/dsa/devices/dsa<m>/max_batch_size
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The largest number of work descriptors in a batch.
+
+What: sys/bus/dsa/devices/dsa<m>/max_work_queues_size
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The maximum work queue size supported by this device.
+
+What: sys/bus/dsa/devices/dsa<m>/max_engines
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The maximum number of engines supported by this device.
+
+What: sys/bus/dsa/devices/dsa<m>/max_groups
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The maximum number of groups can be created under this device.
+
+What: sys/bus/dsa/devices/dsa<m>/max_tokens
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The total number of bandwidth tokens supported by this device.
+ The bandwidth tokens represent resources within the DSA
+ implementation, and these resources are allocated by engines to
+ support operations.
+
+What: sys/bus/dsa/devices/dsa<m>/max_transfer_size
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The number of bytes to be read from the source address to
+ perform the operation. The maximum transfer size is dependent on
+ the workqueue the descriptor was submitted to.
+
+What: sys/bus/dsa/devices/dsa<m>/max_work_queues
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The maximum work queue number that this device supports.
+
+What: sys/bus/dsa/devices/dsa<m>/numa_node
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The numa node number for this device.
+
+What: sys/bus/dsa/devices/dsa<m>/op_cap
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The operation capability bit mask specify the operation types
+ supported by the this device.
+
+What: sys/bus/dsa/devices/dsa<m>/state
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The state information of this device. It can be either enabled
+ or disabled.
+
+What: sys/bus/dsa/devices/dsa<m>/group<m>.<n>
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The assigned group under this device.
+
+What: sys/bus/dsa/devices/dsa<m>/engine<m>.<n>
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The assigned engine under this device.
+
+What: sys/bus/dsa/devices/dsa<m>/wq<m>.<n>
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The assigned work queue under this device.
+
+What: sys/bus/dsa/devices/dsa<m>/configurable
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: To indicate if this device is configurable or not.
+
+What: sys/bus/dsa/devices/dsa<m>/token_limit
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The maximum number of bandwidth tokens that may be in use at
+ one time by operations that access low bandwidth memory in the
+ device.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/group_id
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The group id that this work queue belongs to.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/size
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The work queue size for this work queue.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/type
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The type of this work queue, it can be "kernel" type for work
+ queue usages in the kernel space or "user" type for work queue
+ usages by applications in user space.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/cdev_minor
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The minor number assigned to this work queue by the character
+ device driver.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/mode
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The work queue mode type for this work queue.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/priority
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The priority value of this work queue, it is a vlue relative to
+ other work queue in the same group to control quality of service
+ for dispatching work from multiple workqueues in the same group.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/state
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The current state of the work queue.
+
+What: sys/bus/dsa/devices/wq<m>.<n>/threshold
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The number of entries in this work queue that may be filled
+ via a limited portal.
+
+What: sys/bus/dsa/devices/engine<m>.<n>/group_id
+Date: Oct 25, 2019
+KernelVersion: 5.6.0
+Contact: dmaengine@vger.kernel.org
+Description: The group that this engine belongs to.
qaryM_%imHm")Q+ҳRcwOw\^!yb-[9YHOBpOނ/y"y[I]VqܲD8m0|M<(Ϫ#~-3˻1bhkCQNb< JSWfE* ;=7t>^Qr7nu(/L@-CP>xX>f;~N} FV1撁Q lnժ$Á]Ԟ@{y< hDrbL4)/ExڙI) taAX/N R‚Su݁z7@d}7iWM i#k\WAH,ʆM-9 5-D8݀6`H(AnJ,3@5Z=Ѝ1pg;Rl S! u[(6u}b TK*1wT漺^jD0ܚrj_ }_GdsȈ*qP5U5gy6^8ȼ:苬Ǟ*U"!~7Nu^vjlI/h#S?N?[O_ea0c]/_u\|Mk`$L%R -ц'/ucNrw -0 $~tGw07빙8O"潷.o7es?5AA@~#>8뇛4BT>}']($ ;\5hWw.ưm;+A>G)l5yܶ.b_j.`Aæ|϶7qn8N&,=*<;~{#@}@>\4g~YQ -h ceKIG%Tkiw*G!i2~a#m%U}BnXߋ:՜t/D(96esI+糓OJDHJ@RDp9RZOwZ-}`cR0&AR}o~r5K7zsvv*S@Qy bBrl\b:,g8rxnJ0-9닗#1hᘁBB1KaO~L1lEףwhBjI&(1K0xcm G{^qv;sv6D-s*&wt5"H"h7: "* ũ1ɅQ7QaI1lDg)z=Ώ~*gPuT*nQoX |^"vF*[ ߬,\aˣoeSӺ0;R =Z:ŋZRG&"4sx@"8@M;&{0K  [G-ҵDT~" %J ͸h8K;ףQh2s%yo(mG=%^&w]r틍?_Q#ŬۄމzΗixUߪ3F`m׹Lm]@E KyBP'o2ƈ6o< T:r?0!1T>›'NۇÆw+<`|'*%q"~} . J|;߿%$>Ap` 4nOp Ҥ{J |9g/'T=a zǖI#V! iılڅU̍?`לiPL8}'$ޚދ>'Im(sy9}Zx?t-kJ]u}R:6v1At%t[-ӨrCgЛJkwPVs}lXp#>ljlu\-wwӰ8O8zbZWKROa<!cfXC sS]c3`s& پ58˃+q;uX#mNk8{94tT;3 ,4syë48|!F28?S 5"#∌Fq)Z)4QE lΆ嵌&ư84?kSvƀcy⹁@CƆC@sz :1R{1c Xm\>@pp3oyþMiq7JC˚.Ce3CUE۴0"d$!4@:i!3``d`1 N9"'HF+CIA[Zʙn7X\dK`mKh^ꥆ731g}61,d5{إ7?5j{LTGq庉d>\#p$0xqcNk%H*C<\W[g[e#F ^Ava};"XZj*jvޯUZ:;"d'Wɑg1֌5T:XZHD1aA 07˯Jwx^xZ؈KlD(C`a;{u*B[nY6Np_( c#а"v ܊v}!Ϭr 4=Ou=F&\BB<i=羣#f~..ȪB ¸ 0E \>!/xV xg +yNmD($;He4EGt"$ȔZ(ma]\)ɃWz<9vJVGFjywHP"رCC{iH"M9>/uKn éoㇺJM!>zDǙrʠEQ]2 +e~ Dlj}R5}42DwZ2dh@sS.YvpH@{rsojGkr0D64R7:@b_ #>t7vͶ9z>0\>kUh7_}_p_X-CٮY GySit}| #="s?ߥk>1"_6$z8=p t b!\Ѓt }[&0 \֤l@ wq}'s^ %{C🍩ЗCE@?j90!j0 Pğn?χlFK\Z9  ,(=ն,*hFt G9sækq%4QJܿ;?1@ι(tBkm )`[kk8#ө4 ywT!y.uͶ, ` j`8p Dt? ..ai3cl:jV?]Z (#HI B@>_'c( }K[ 鍻SSu%~Iq`ʎ0Wp@3Uݲ:+uvrs?z A~6q'׉CYt jit(ҙYbW!59/[~NߤN&3LX&l| XՔ)1lT=VaQW2c.5LunzǾsW^N:zm5˸OϷʗ8Eom0q =g> FFvqwtjB7mZ\aklcA8/EOE խF3Ʈ޳f챇}~L. {@Uh5bovIVSL U(@\$!Jk#z!#1qEdQ2VjaaV$$#>W߰칶 3c;$)o&`?Riz˄,-//?qpo:OD'q7*e;1x6NNj`'KtSMh/9c;y,$$ΚKbE16$DޯmIKxxYTLG{:M*pQrͰ %G`k"vAٗ3n>9t$Ex$uz~w\^C*4h6Fɀh=%WW&QəS2*a/aJ  ^zմes2{WskhbjQsaHጞHywn- z<?`5sC'Vr9KÜg4MU`sAmW9h[4Vȃu|Bty4)W $'ORK2f"}G>~9e&O(5FA"x혤5 ܍AYxkMbfePkT6jZ5"8Ē6x Ie{,xӲ2ZjqY*n]fQ rW bǖIkEaH<Xf]fRNFܮK YheɗOY.L֌ۛ+fq5Q6]7/ܴÃ`kZDǞNl̥-F.d\= NҦeѭh+i4nM;Od&jV@ ^ع[Q mRY13۾{p?ZQB*,ܔ ]6L#M)-_ۇ%ΡM ݒ JNE:u0YQ0 ܲT*Žmz X[ZʮZbMpuw)__O[C.'@@jbt? =UV{UgVJ_K[>TqُʐGX獜F CXBCxr:^`|HAt 6rcsJ %dya*L5\48ԡC~BFrn6a}RRl??Z/Qdn*V f FMpb 1W;2ȱ!6$w@,XlTC$YLD.Cet%Ǯ-{AK's y!;Rq=ACm$Br7-!)8NIFIs!O>汾;P)*AyĠhMLFx\XzníE%7WGdfI'!Ui'Mm &$(_~(mԪX6@oԙlfvk L~*`YI8fKK#UCfqus2 䜿~gNxi6~.\XcxHhUt/!^l|0:-`V̎qYŋ0A\_vM  7{iZaATm&oRꆹQ ~0ϪPGX/"Dѐ NZ}om"1D^=Кjz} ]Jl K1]F[S`v]U nUkss ?'?C@"JPhɃ=?릯Vx9G@{,qxo'lu6u iV%ٜ[dm:ג DOoH<}487R]aJZڗw}DSs=T5Q"jo} Ž֍50wPҨ tΟm8\kA-)gACbAwʯ{u1 Tx:J~:Qг瘬 -u%Kg2G~[|45GMăE@^ႊh.ŗ j4 'bZ!{яf֫NW p~u2::Ͼ$c'3βA^ED [Y 6zĺw/ z~4*<_탅&k7-ӄ#ʾn-UYUN$)s@ hUٗި Hfu qá?*~k͐ 0GrmgG'k6J"ׁCGM,Klж|erD^ݨ`J"B${e˒$ĈM]b|-^BkɁ/`;pd P8MUR 3 M~`uJxpc*fR@5 5X/kQQh3?<(_# ݶ>8n7ޖfv}_P2k5EuRC)蟵LvpijG֧E~ԟq׸vnW܇]G5q"',Fy>ʒ/. <P *PsDA]P`T"{\clԎySڶ8FYxv$oRx CB ~e1қi|;ڧQ3,n7PgοW#\w iپ֨r cux=ˍ5!6]O3$ah@@x4PgøIIS:XAm,h|=N~[Օ^TO>;x?LOǡ~*dmB6aP|vqW{qV7Qm擜C ͸v:ټß] )u݈nC0ˡ6`]7a>PᘎشSRVyvkhq9GPQ`W O_-8DS#\?shUܳDI5%Sm?o \<Ֆ+F}W b5 P4@6 {Q6[2|OZ=npRj-vG!Nw Y壠bIuc&^!\o;\Xy[@j-r$*0zVD&0*hҵʹ"n{#0QZiwմwL-rmEȉ(QFq5y*_uFI WN.P<(Yqn߬an:-v hA%((7&~^ 5/oLI8Htr- 4Sb]&^`{@QuP%Z8,rEJ~ׇAr/T\pbKsdrUEGJ"/{M7 nE6BQ@f0 b11rN"s*B)LTM [0yWK^ܛ!볋ub`I\VzPbCȱh7$_ƶ0b3`PE-Uw[S СN ]]2fOVxRr[9v,+{wUSJ]dW-U9Vhej3bTSuu +^e~ ~[YTh2#ѱdvgܠi! シ%65F!AC8]x:\^ΓTKaF({҂P []^X5(U\қ *){i€(-| #x% l31>)_ ^+'v@AǯԲm PY8~X?A*z!F@ mѐ|b(;>>-Cp5^& D9{C?#@hqXT{0(}^"s[%s Jot1,?7q_ ns-C7sƃ$"k2Ldjʒa|YS |(,د:K#ɜTDy/ar; lG\`A[ 泼UC5ηOpsƻ0 yH4G@sC">Kk˼a{ʞM?<-vU+/:Šغu1oFp*߯O j{WcCY{<}vZ"3/YAs٣zy^- MPݷC]f9T#s<@}yTmu'U;)ـa8@<[~{FdLq5wu/?_V:*ֻ xrnfܑ*}«*evu Ttbdj6V;iT}.'|u qE&hqMFA &м܆'Z#ku[XZ21)x{=\ 05`'enA߷Ce^Qp1*]^\ !Qs|Jxq j#H;Ɔf  w~UvQ<=K(IziA %g{?]\9_7sq8hmF?(IC'W BŴf!-.˓l!*"A796ij X *_)Y{;=_T7D!n0  VfGKNQo;g)8F1wKx{.](iMhꮓIt4ԊGKþZ*qwt1\0q:ܬ ˡZ3 y@J ұG ,sɈʗq#CYoU ivbT AfB}iskd3 bQ K\pJE Av"l"dqr˖:EwI|ϫp sZ=׻!fE0F:}{MҎ56Npȑa~I" P+=V9hg@6/Ff/2$IgV1bt}lr'8mF,Lj Y|FOv*Iyhz^Egӷw'$Uu{wz]7Uc3ᮃ9շ7DQ jF `pyۋ`vvd<~\rGRz%G?1~^S_2wE BL;pƽsC6Ի1燂լT">cN5x<2TqR\f>r<Ԡa5:mE+blm/MSI_UPsH8DܨD}WAEP` V}9KB`%_v}>Y ޭ521QM>S0?. .&ބAWעN99;m zџvLD%A &հ$".IY&gAD+[s iJH!r&ΫE)M6K%"hmM٪X)BL^bڮa 7krH@cCbd-Np2b~^0 nZ5ao=n_1L#~jT$q}مF PA ד`Şg>> }sgˏG'oH TXTNhIeن| A5ɓə =G3%P|9 x'4F-8CaIPN|nJz`dQ&P*F(KL/ }M,AcHxG9 y,~ վX,X=b5~{&Pydpsy%Uh <"fxc 5io iez]T@8y%bʍrPT1es10$]Ҕ?'5CS[/xȣӁ#[M<ȵ(")zhekp0X>Kc%kuB8O@Qdv^wA@0ƒ{>&_A#{@_!|E7IeP#W#sM5=X5ͪi|>DFZE3?1#_ WЫ5N 2D*`\<'XbP8~ba qBЄ;w @ xu#SQkJ xqdFy%Bꦾe0f`C~OAE`Dsn ՃͰͨOX*+מ=)ۈb:-2ip92!\8Sv@$uN͂;}€ϾJʹ!כce*Yz, -r#LZ4ukٝn:0'sa&Ýk1|/B7cp- RwLo6˥(j5_"YD}'7d/ x0߅ଜF0&TErY"ޭ|S 0YrinH|O@iʣ XR訕tOU*uz8Ckִq\#_fih]Į QC5Wi|9ʢ{ԁp>wVDLL 4g,Cr"ˤ`"#,!>I $Z?˦fzTJ.' nz¼v0ŎJL1NuN2mDAs>,|{">tnp> /l|R9Xe3aRRrF4jXNPF^̤c P!a_+\.DDV*"*_ٵEL|һ DU7Ds= T8:g%;yKt VG{f÷oPދgQdFrB$XPAl <1ҁ'fXg倿ι̤>.S%p)uci$gIWXS8uя}5ް s@~X-"ٻ&H.OF Po`յeP3t!_v~8xӆlu$/ܤw $RiP ThrP46#Im~G"gk/['Ĩ@&NrUau?ީm[J5`:p ]*R+ j }AV l~i#Q@|^W_a1t9G_V ?1.{U*(Үz״5JN?;x,H%l8tGw ]~Ͽ ^A?YeaٺM[cj XԡQXFxF\ ه!N'`t "3qr} !y>Π۠܇;ҩ%)Dn쭤8 GzWNp?k:'${/ISd\`lT+t0\,TQFX{[r`~\j阔gsW4u4 J%AQNG%[9q;Xlz ,s,YJR_"O,գ#)"D@l[>,'Mf:1_6 MB͝63g&ғ*KA?b!0Föc?0$ڡY}3|Y}r+7ΜNJ/jp֯Q^8a:V/r*361(x;p3:j|W8#퉣HoYaacjN67?avbB"t5(@@nic41 ` jM'uoօr"l,B[[z CmtrA)-z$NCTi\?m/RLa g0^ 'Y ܼnXY7ܷ""Fc=xEEΏO޿jXh<u|%9E١ 2ẋ@]Kbg2L4㻗1J\E(_KcnvoW59p̀R5'*UT*>}Ϣ$jƕEcK5P= e-&rfEw`/׈<,'o,ܖg:" 2gnx>v@T<&`%ٽ!{I>?2#-R:zʏOvaFzY/eXӚm G$2Űk kID,|y|Xfl3gJ˲$}灪;Ol#S=rȋĢIXD{55 1ܘ&gKM*&A錣in^Ϫbq4X7(8k ۦ, zkBokğ Bzr:u}[CR@>,;q,Nd\c* 6(fՠOzPWP(%^ ,ogArMtr*-w[\bpXxێEUA9؎tCN> FCߴD/Lt1Be)S@|pj֩( h?G?Hk|`U;2HBaP+;.:`$5زxEdS];MmYEP@{{-k~NȢ YAFͨyJWyLÆ+@gh"u?q-}7"j(, v<$@fm69@tޭ>nG<+Cܣy2MV#3" ԃJκ!T3=htm 'ŗ*Ov2[B  a ˭ۃR Ao7-4lP3b]QG;"%@TY8A2^U#k/M«$9'e^OGpAЀCKtX50j_o\ô* Kp hc:JWn/=^F昛ꎲq[ld{߰;bSJU^{R[>Apgɢ̘Q$I^@og-5R}[.%tךӚ M칮x@b+}̯͈GYwGmrtIٹSnrL{1]ۖC6aT/ܧ RWٔNʨ U42?CMeBF(B b˦LzE\"Hߜ0}"csڝTϯCrE:-fbuPVM^R2+-;>mN𼱱cwT0k7"WUA?]W"ߪQ%4Z`:o]̈́-.a;τ R?Aq?^G߿_1L5BQꈖg&508ؽ4@Y4ȖQz(#9yMo_P@|ӏ$:;6@í ~GHK%v{(Axdh7+TU ['](8sD "~`H o, n[n}6__% *sb0IwFvs$4e?*Y°F$)  VİazX(H7npz@|F2'D񮧍~Sl&O.@Y!m*`1#] ~t+˺#o\>pD ^jRisr:OgO9(Sn\k8(0V.GpE9;q.h!i>zבCt25 w &>t6\ljجfWX`fY8z(֪`_{k+ -bYy-0NgE@=j _5;~W|MǙ1"9d+i,`on.x'\5wL(P;q׎D#qm/b1 ZgRCksx/ưPFeghhani>UK27vπ;oiڸԓLrrCCfN<8ZQNHq@݇L\zفE)~o|uve[m' JJ!ҦkX #{5 v_Bܖp{f")})WoC֖ gb2Cqnb3r~Ͽ(Fk};؇YaА$bZ" Se/f9b. ǧjvrU(<LYnJf%Rӈ0P$IO @rW ˉ#Uxy%+q8xbƲo:e,!aMBh;;2pH%')Vwf6cM DU3! 3 rI?#PV!j38p0p8A]2>L}EVw-+yf(5\P,|y4.t'3 OfTk 6#+ |5]0P-ӶuT( D8y8G58gF Ϝ՘TٍR}.wþ"fPp=†|IGjm^oZ{(]}=wgB=#"8zBK9(X#]U ɔbct/q e+o?F,F|o:7WL!{Do?/9>6?F>sp#}B9J?F;/[V^a5I,pNRqEɑW,$̋Y9l'Z0gyȜy(%0voAxѼmwl|ПƎ/WC>~wJ8"H'%3kLm!uV3wkokuƢ;qԊ^(&COTB14b8und}t=\_*?1RtC56"u\ne }l*q5:uA͛tV3 b%TXf/זּE~:wCXL@EAPx\f==7x-.r10v᥀{# ?(,Ӷi&A,׿]qZ'fLCqhD.Ġxă>5otse eX!fWA~@C;GNH\~b)o ?Pza^uOSRP㖾hᯗOS0ʣo[AWH A-r,Lm=}x *mTh%8Y4`jbW ((,R/CR:0E[Z. =u@v o1s\zLiD}s3Ϡ}>ܵ/idjIkJo]DPh6;sUEhktl HStl8$u"UqV3 Z,Ջw租G$\ϓ$?i>Y 9H~A6S7K1]|(=wXטdRHO1aVlrEj X֖"c銸B#꘣7'w&00Qs)UUٲ DN [*cʨKT8`B]f_xn3MmʽnN^Zz=^ط5 t@R۹ HQ A T`Tֽ_ڣ⎪A if ~ =gzGhAF~DYw  91 F+xAmɑMFUp7b݌-\+3?v}>B /{g%ʺ@@ީ&a=Cd[kc4HG:۶p9Zվdi"jBIOZ(83נb)Vx/^ ^GVŖ؈!ǠK^? B~Tu'yԝGyi;]h \P&d2&5ŷqkqnޛ`ZAZ#}L9XaL>D8&. /!|NDYo! phCM[T+'@BCNN.MSM"6LCW(p;~}fm;Tۃ A:)9Aq;al60}lOgs#d`=8\ uіğd8x'gU|N]EN]BlHn?d}{le ić;|en?ltьbGugwh<2V-}>H HU<, v0kQ3\csv8a#< &X@>p+@/a|T!(QUO;&PF @l^lg9=YB=$õbQ\q -ށZo̙ݚNS l8g4\j,`Y|-P479"IAL\;!0֊ 0^̠ 1?l9o)E`#&@1Tbv>Vo+??sĘ ޺̵Q@QgJA߳({/I᫳RWp( e fXե1jbuyna{B @$"x.E ^g`\trib*98se$sSlɷ#o}qhCn1=,=.z^XYiZ?+v /&}tl`#HST`ȹϓ5L3Z'(TC{e$2p9G|8`vQBx ZhZR8c M7zqb ͒ ifss?[?<akG?HWs_b;>?Æ3֊qY VNѫ'>U-2u =LI g>&9Qt#j 3. ZR>h|$_ܨne͌ z8A'ǙހDyax<$NEjYU)+U=}}htl?^ Є֛ QֺGb\4pɲdp+[ر l4p5ȜaF~^եLpsYEY"u1^Ћ??Q=?4uw^-uI> Zr=ABa=JB]/uAFuˏZ C0) Ps ȡL0|R@H!xs}c9¦5"|>抅yuls{ (MfsaT"R=9:i&<>Y ?kWf3 elp;?7bu=2Z1yQO~DO:$畑_F{iM*I9{~ᮙqƎ7R8۪03!(fG}l6(:^EǀFvRV7N6CԽ%/oF@|!9(ޭՔFѬ +Qǻ`9|w|(U)"Tѽ 6/y P~GWd˜>WRuv#R#٫\y2;=z܉EYP{C2JWCNS[V_,@BAx93PL"r%$nIz- OD7HPܠS ;{0;"u9uayB^VUחiڜ~ш0!Ƌq1V%""g܈M H|rCQv:nZ HP5JJpq\ )lLjǐ9"'c Mk̎1m| B 98y91vxCr#1ԁʓGK.gd@S>x\dy$qw>Ոt  'c[`G9!kah6:%B뇰]vz/hN dOҞk0pl4bKa'; fy^ԐQ;y`,kW-Ksm}xCmVvY@SpN"mdD;fr:oVc8&X'<^a=+H3ag`nв˅퉜P1_RG2cx&ٲ;ƃ@01}vGHXYa`E:MFAT$Ъ}M$/%\#/K( n0y]5X7Qe< r#c`sN˾3J r-='& M`dD Ab1AKK\s n2B[qOlrOc\>Lt7niVČ@s@9p,/*m+Q.4s]/ݳ`K[DS#=HڶAHHxJׂZOS'3!q-%|.q)T;uU#;^ǍN :UySSݏ=cf҄lQp^L p<7 ՑkY@ :[sgsv*C耈a 0\ U":_sDwl7 ʻƵ ,$r6:ˑMk#- RtMiLύU0d(CW"} ܄@pW}8Fhn'# kK qrCX1Li:!8\f̮9c%HYVNްg1tx]ኁxPI 2:E;^ 4rYs-M7Ŏ\[dF:L6.VOȰFk}0*j9,]H(w`i֌u`&sK6x3MF%vfP]URa X1b<=ŪQ]D ܳ ,\K!XS6F*x-.F Kg Nb:yev2!a b+vX9?"bܬ=Utef;.0Oq5.FW!@x &}ĩ0F\덉DxMVޤox"3G;n3ah=uL樲c薿R[_.] gb <F ł3^ih#_.Yk WL $iKTBXW*&9(֟>"frΛ|wze>NrN-cuV2Ld%6 +AA*fp ;"\2 X}X Ö0 iuAe-X釞 dKtdi,t-`"]p rU 5.\u]rkXg$w)P !%A_QN&z9yrL[b};8@rgu96|! ܰ7 \ۇ񞡡E!Pk0RRkBQ g:_;QiN@ߊVnSKKƥ&0jа+j4xIBN%(PĨJ*1=uEp!@C9F}}n3 Qec.$#-m7s)X=l f,oV%W${β;TRafq 'S]!R&H J-7tWmMC1js^za@~?qе9K\C3~(OC1SRrDy.1 Ԧ3-.?5NX RKJ^FF#hq|O,ۗB6oj ,}pAQ#pY!%2=&pW򷩧CvɰF>Yz,ŶPh,]8tRA^wU`PEF]7t@y,ph}Oq هZ GD9h4t3:-(KԳl9!rDL| *Z g^D &CM!9t"M!:sn†)w ړ__58{phkRVXd͹\0Ҋ!5[P0j- @oXhv B]}G|*ϢSCd7FΈSF '<+?i~:ܬw犸$w!$ 4m{5pm'g石@2 7=+-:}\8^D(H(oQRVQ^M gkhy i8 l(}. ?T.!nRDX]Uo;ioCLP+ۏF0Zy!r$ꔘ̩=;^cL%C)½ a-%"D;_82l   ]+]D E?{s3w[}}β61 USӳ4 (zy$I"E #Ԣa /o<$r3O9AcᏌ@냊$ù~-e4RP e;J,bH6H*rh~^_1a%J~Q CUJIm֣dlJjgb}A%_oS y3P>j`T`Ɉ#eV<ߎ'վ=1؏Wx4'AJLf`2-hY}@ )s n?|ء Xlϭr-?Ѽ<:rdG f&N>IL Ẉ 1+xZVu"F}0pvU\fܳ;|7Lj'䶆l$d GK/VdEHs_¤D`U8[ߤ"Z-0(r5eea?;zzHgkބ1FNJS<8n0umZPf:bt6%HƺhХd50xB#V#m[ldj~CeH{ 6QT(ƚ=>y :Y_:Y6MacK_X*s({wspae 8)tPw4%ݶErF1EqFퟄd@oCE⣮bKi4ucX|C"AM]Tr14 ]/PkG# 91S:94 pp'=]wI}H6lT9.E2ZQuM}ʁUbxRR avLp3ċ(]6JKg/ `%=u},5imtW=K?!`f,eD4pdߩӌު+ʇgrj$JRnp&kU6lsRSk0EVz;[ó߶#oԁ)8 3N׸"zIrz F7@sБ}@$9ayLq!{|ov%h9~ u*sUhcuC?|Hq^5~,iEPw(4(;pH"H&D@$ȞyJu/qB.Ϟ@&31 E!{A JQQ1]sW+ 0l^B$,d|j>w|s{]ѴQWhո蚿ؿ͸YM i me&_qa6 ӌZNsП88I %؁q^Guw lD?}#fz.6(A@ S~wzr|Ȓ8@q;iybW:6'>tI,a,: E` B-xR,~%ɑ[X\3ryVPH\w932H9/UU^M. <@DX²ym_0{8t>Pps`og&XMsF>,{۾һ~A/v_Cu)FL%*7O0š QLX&-n9].{})Un=סּ8ͱ 223X;dxDB&6n3 9f>A#b4!͋V{OTX|H*GLDUJ*l/?/;,?xguUK>9 EE)Ps"t$#-gX !J*=|;/r ͪbuFR &&vۗ4фPWx7hO qg2,e[PK#%!YaL!Ch b;-@SAIQ'y'M&?}s:bj#BU O(~Zx{xw7usy}^HNq؛1o^TvzIb@G=XtջH~qb@fZ)lrJX }-i#vYo;+1r|1;Oy{ ֭eM1&~w >]:<F(AE'oӃt,z J^h k?{0HHPYeXT[3rӏ6G:50dWtd~6"Dy=ޑ7OmYuR2Mk|-해Ԟ[ {[ ?Zc\> ҼGvT4#Ox.QQ@"> T=&GwwzoXrM)QĺHP d40-P3> \hQ9 Ed2.F"H4l&C|'>տkKųo?gԾ_ahnJ'87s3c(u=CxT!!?d0_m*9!睓2[)X{~F%p ? :5k=6,;pc(~U#}{,7soeho5.a1P^MޙV8|q3l#֩\62mBV?:v2No֡+?^9;y:['^Kc])Euk]o?=CHKWäh?|=Xe[mV35;8ckXݭ?-kc; JN5$~P_? hW~9e.8 [U,]Zh5WOTV˪{@6rZ-v;A&cmws;__+/*!u_Jo%qj)#GjSRyfЏt\cMDKu~ːCV@gW@A.֟gMg/]Z:~lߍzXʺq~ʼ>hӦ<~ljJB}(6Ⴘ)nyQHjW%PVT~mhɥ{]ª W*mlvm~DzƧ?K)#xW!S y;ˏrj?ZzpiVh=]|c@nրfMc=8MDwS$or -a➝o>+j 5riӮ=pn!;Z]Æ3k./H>/%\ bZ$7Z*|>v$#?\i0_<>>7."[`*TW߻'_*췸x_:HK_b@5|I _ۍ׻`ѾeSB_6|>^;}lZv &)TbLs]ʚGh @*|Q9y4UV &ZݎdA~knM 3ҿhHQ>oIypwǕu1M'e^8ON4A />IRup5Kx流VuCTVGb2@'Y^Ick۶\rt\2!3߾ָ `[ͯtE/cQ"[ Nv֭7(3/b P7YS~}]D,T 8|f|H~lT}O#^h!rDM?REQ6{` h$ lo̠T i +(JfpLA`7K6 (C ؞Yu&Bj좰 MvBB4RP6:Xv)[oIUes=C.\̜yP@J D:GjU'f gA T1E!=ux~ :nrN&yQ {?_I@gZ|B;"rڮ#xAcN|p5著le-ZVA.!]?0b2i eHXa-G H' MPvlkCjyNYtτQjXJ4^5H5u|55h ܵV$0X1g^g&XZw]E 53@ F'D]AMW; zZYT[ִv|+ kY$mwnRnM FqUzʯ-a9Oɝ|\(P-Y /6{+;o;?!"~=dR6mH΂d$5;0:c #1|r^/x3c,=K'4 ^:ȎXёР R"sT$+h1:58[]|GC<."F5˚U\ԯ2Ҫ(,;(U H@/mG:v^`A}wa9U4~bnV!uŶՐyav-r$Ú a-w<ɍZY35D^u QW A|K_]T$,UEeCKyt){ 2𵫛E.(@={{xOyx<_xσa ί9VVQk5Pa=^l2%x4-'k)Smu2:dV7eXG*q} [ֺN0 wzŚcxϥ$CNWu=|^s켑{PIn' خϘѹn$GiP#W*$ 2e ~ls\G#m~]qQjw'Wii.x ӍRZQ8Yma ѝf`A/Pske,d(p|*ŀuzsݸ,$d݈z Bx].6K",G  7Tg9CԒo h`‹u xz'9rmFIǻyPIK0R@29hej7#T՚,Åh0SFoHE-fjooYCݾ{+#p+|^ >O>*< )81(ز.GF=>ƓR| \קEq' w{GNۍ&"Jk  A=i*ZX1Quc\]jCRUniImklO?]&l)rAC\ <%+By|a24 &΍::?g {|1`~[4G"}&oXCy*~-X^:uG1}Dh߾ߴ瓤ru2ڞ_Xߺ}x_/jf0];n>xg=GEɁcv>Tycc I"rnߗtaUSnxϝ M1]#AX7=D3g=w) {"Q* |bmHy+All,~tQy+bpY(P3+ABbU-q@xΈC&!w0!r+qM]drzsup8CTpA[*X Ob 1c=kniA8U?t<žL `&^ >.gRŎk*ٸR2b$Hiř+V࢈TsB6qϓTJ!OeXC]4$za3,ʼt}WCpݞxgӏZC>q4+>%xVkPcfK-O/ڰ('J}+̎nƎX\[j_s?`Ӗ$Z_5nE_ fij߈,>IOD=uULQkgT,1\|L<^|׷Wş{o{Y榥̴U!z3@xCD}rp0^c1p箟ohMkM@x\C+(*<ճɅ9wJ|G5G<<;Yٕ'ۇ'm'R{bB%>}#-+zt?9gx؜D`DDVj lHQ3_^FΊAR.7GYY?>|@2ů:>VtD4}Ռ7z 3±OW` _G/z8.6ZWuk_ PkT*$Wer1Pר, e"s P5JYS Nan'@GPF Gݑ8:+跖+?sjÕ|`$#kpkD"Oz1BtB^ŴN3ο_sG# ^-uy}V[j2Sg˂#O??_uO%yc}AO6u_ ]2Fa@ Agj/c>6@6Y$?ACsd.:p qWBM;s&x TA4(33T<vc`ZÚ 1 j暉g^j\.y1f!zj ?W\vs:ql 0F`d ́ZFzMy:tx5M`b>quÇ'߷}/_7/{O8U*W/ >t Kֻ3v`ۀ֘ۧ=|р"5H#-GwE? '`ģp<5Bz '?LR$խV̕ fk]U! %c # 6, "DMѐf޸xܿdz'iqwbBuص\UЍӭ>xvY2?qτ哌g`THl/6_VC%p 1-cax> kU=9ut|zǬXi{nFfT2/]׎_ٛ=;4!lS B" E$KҴdZMmн;49ki!꧳(Y%ҁH^C-;Y96"msYt$#ߴ &r@8GPuٮk{i 5G,fvQEA@ <`q޷^`|Aㄣ("$XSzx 쀓 1r0_Ħ%}4>a t-TT"tV9x9|#1uiDZa/ȡ7z#&%1l_sx Ѡ"u7e$F_uPix3،H,;oמ. -[ܚ8ga` VkV[mM|;M~D 12zaQ$>Ͻ߸S馑`9,-lm(L=ɀD8TEp@ $GኖQni|ߎ ӖDw5D+Nq "8Y -C^C:k|B\#sZbkZ=^[f:CF8;8;]wYwn鿯uB]vXN,! 1z~ 8>8ULgDAԲp}WpzjTfDj:׌'K,R<6ߝW=oms\9p`rHsF!v_sWǷU^>nG|_Z==X0PBLF>0qE49MD(u7DA*hԨ-l; _*MODqc]W?nc9 #:Ue|}\Wei?Un &f D^B =bHzkbPTc8F>[yzRy()|i5Ts a77 C6ֵzs2a,HB}wx<{]4 AaLiAg]{=umŒheXA۬۲ʀwNT MJy:4(>Q{ {8Gh-K9 };|5GnlzSv|H4yÖg m9a}d#6Vt7w=z55e臨VX`)rgZ[M˟B{.;cl)`JV!486;@U&LuFkp}.o9?gr8 m3%v1 ᷾ǀ۳YIʚ;΋V |^/Wc ]u>[uԿy_?`?ϟ֭Ve 4xY:Ųʭ.lnv;K6<;U=z72 ~Pvmn * jo7k3f!gM^FgTͧsG+]3Zh >=ZƋRu[M˥έj[ŪnM\:YE*{A\/#~_&fc=m<QwG.i(( B#RIȍl nG4phKrԴ %.E=8A;G9>qHwB@')sT; C)Kmr/eŔT)nyw@>S?LI1&< oE&v,ӶfbfC,ba'l6 Fr<$>zy<%0?n{?Es_݅h ƕ'-qҝhm#CU'cPP'ɇ9Q%9DZ-RwM6~j޽jbkΘLQP̕zM4K|ۏh{P^JcV3{Sa@ՋM!@ꞩ5:ʛ <>{S3OB$@ATDzr5vppSy@N.B-w1 Sz2uX_ grP$J"6p}ciP,E-/$5 zn x4-D$%|32$-$*Bgp"!4`p\:""$~UR}!L}Vݼd_mliQ<"Ugve__,M~yd3ܔ,9Fd)x6c[ј7ś4B' Ɖ4)YO5Seq`("0".`i=}?`]N\MZpkEAgm4 "Y(kD쪪445 eYRV`OfBk<X4ڀTXg\27oK]BP`QDTQDTQHQE QE QEUPPR5M5E5M5EQE-RUUP*e5t*r ʁ3w޸fN;w0 3SϚJHx[RN'8{$ }yxdǶ߻d3jFۇ JHq" O87 it$&Nƾ2هNLēp~C2m$(k\ȩ۔ I¡P UH$M%LUJBAAQAAJBQq8TDI00I0RDJ,4E$@RHD,DDCDHRKE22TLDM@"( ""_ ;3|APLA|֩h~,u0r%bxGa@v, ^{!JT|6w1 4<҃];aa"u7FcР5$Fkkx v%ծ5  zv{X6>_Zc&oɰRS~@BB.=~:w.S1qFyIQHzAu7l;}~BAL~^X=|2Qp .ņR[(i&&i}u=0_)(y(@@@JIR+뺦TD:i!5@CmW?|pPTfq/HP J@+*J4 G-]VP&AȚ0U(*?]YQ"(8PPc2UUUR EP1) LL5UUUBUUTUR!IUSZQjPhj H!)bJ*EnB)Z)N~ۘ**yR*b))(Jh&PP $Q p(z0zBmaφ ͒B38Сjrμg@pTl#4A$!` IUfܫjvL\ J dy{ͱE4f}} ǦqE iػξ[8Uz <1&3)kJk[j;ዝЂyF,zdzP?(q=z3ߎ&PCGcZ8[{؃(e:*$c]{6 %vLy~c;">%:.yAh͙e0Q&&S Yː t3͂>~? ?±E7v\\Z*"5 @˂Q (i @KwjHӼE#5j2 CU +!L^ i>Mr#{O17>30}6\/vUau7C@z!NEp{''`>kX\T7@.Z*XY$>0"=VhyE4RIo0 ?2wxiVyx{$TUyítXV BO{Lrx!8Ic/2𸓾c!TAqpݧ'Kv^:l38=guL4kdv.OSЩ@H.XzUE G?n8Y@9 `^u&l~qo\4nK1~O30{4V(&9tn.AC*w# >?%"v/;2}3hgtZ' i=/u0dP Ey00TЈtw׸?;w^gsVѫN觘(Hf-bwVa[3bh}Gs}h/2FB PQP.Oa <&{r Q:l:ZH)%%x:)V[