summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python
AgeCommit message (Expand)AuthorFilesLines
2020-09-23perf script: Add min, max to futex-contention output, in addition to avgHagen Paul Pfeifer1-2/+2
2020-09-23perf script: Autopep8 futex-contentionHagen Paul Pfeifer1-23/+28
2020-07-03perf scripts python: exported-sql-viewer.py: Fix time chart call treeAdrian Hunter1-0/+4
2020-07-03perf scripts python: exported-sql-viewer.py: Fix zero id in call tree 'Find' ...Adrian Hunter1-1/+2
2020-07-03perf scripts python: exported-sql-viewer.py: Fix zero id in call graph 'Find'...Adrian Hunter1-1/+2
2020-07-03perf scripts python: exported-sql-viewer.py: Fix unexpanded 'Find' resultAdrian Hunter1-0/+1
2020-07-03perf scripts python: export-to-postgresql.py: Fix struct.pack() int argumentAdrian Hunter1-1/+1
2020-06-22perf flamegraph: Explicitly set utf-8 encodingAndreas Gerstmayr1-3/+5
2020-05-05perf flamegraph: Use /bin/bash for report and record scriptsArnaldo Carvalho de Melo2-2/+2
2020-04-16perf script: Add flamegraph.py scriptAndreas Gerstmayr3-0/+129
2019-11-13perf scripts python: exported-sql-viewer.py: Fix use of TRUE with SQLiteAdrian Hunter1-3/+9
2019-10-07perf scripts python: exported-sql-viewer.py: Add Time chart by CPUAdrian Hunter1-2/+1331
2019-10-07perf scripts python: exported-sql-viewer.py: Add ability for Call tree to ope...Adrian Hunter1-1/+43
2019-10-07perf scripts python: exported-sql-viewer.py: Tidy up Call tree call_timeAdrian Hunter1-7/+8
2019-10-07perf scripts python: exported-sql-viewer.py: Add global time range calculationsAdrian Hunter1-4/+109
2019-10-07perf scripts python: exported-sql-viewer.py: Add HBoxLayout and VBoxLayoutAdrian Hunter1-10/+31
2019-10-07perf scripts python: exported-sql-viewer.py: Add LookupModel()Adrian Hunter1-0/+9
2019-08-29perf tools: Remove perf.h from source files not needing itArnaldo Carvalho de Melo1-1/+0
2019-07-10perf scripts python: export-to-postgresql.py: Export switch eventsAdrian Hunter1-0/+51
2019-07-10perf scripts python: export-to-sqlite.py: Export switch eventsAdrian Hunter1-0/+41
2019-07-10perf scripts python: exported-sql-viewer.py: Use new 'has_calls' columnAdrian Hunter1-2/+8
2019-07-10perf scripts python: exported-sql-viewer.py: Remove redundant semi-colonsAdrian Hunter1-12/+12
2019-07-10perf scripts python: export-to-postgresql.py: Add has_calls column to comms t...Adrian Hunter1-0/+2
2019-07-10perf scripts python: export-to-sqlite.py: Add has_calls column to comms tableAdrian Hunter1-0/+2
2019-07-10perf scripts python: export-to-postgresql.py: Export comm detailsAdrian Hunter1-5/+10
2019-07-10perf scripts python: export-to-sqlite.py: Export comm detailsAdrian Hunter1-4/+7
2019-07-09perf scripts python: export-to-sqlite.py: Fix DROP VIEW power_events_viewAdrian Hunter1-1/+1
2019-07-09perf scripts python: export-to-postgresql.py: Fix DROP VIEW power_events_viewAdrian Hunter1-1/+1
2019-06-25perf scripts python: export-to-postgresql.py: Export Intel PT power and ptwri...Adrian Hunter1-0/+251
2019-06-25perf scripts python: export-to-sqlite.py: Export Intel PT power and ptwrite e...Adrian Hunter1-0/+239
2019-06-05perf scripts python: exported-sql-viewer.py: Select find text when find bar i...Adrian Hunter1-0/+1
2019-06-05perf scripts python: exported-sql-viewer.py: Add IPC information to Call TreeAdrian Hunter1-13/+56
2019-06-05perf scripts python: exported-sql-viewer.py: Add IPC information to Call Grap...Adrian Hunter1-13/+56
2019-06-05perf scripts python: exported-sql-viewer.py: Add CallGraphModelParamsAdrian Hunter1-32/+41
2019-06-05perf scripts python: exported-sql-viewer.py: Add IPC information to the Branc...Adrian Hunter1-19/+83
2019-06-05perf scripts python: export-to-postgresql.py: Export IPC informationAdrian Hunter1-12/+24
2019-06-05perf scripts python: export-to-sqlite.py: Export IPC informationAdrian Hunter1-12/+24
2019-06-03Merge tag 'v5.2-rc3' into perf/core, to pick up fixesIngo Molnar1-15/+1
2019-05-30treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156Thomas Gleixner1-15/+1
2019-05-28perf scripts python: export-to-postgresql.py: Add support for pyside2Adrian Hunter1-9/+34
2019-05-28perf scripts python: export-to-sqlite.py: Add support for pyside2Adrian Hunter1-6/+38
2019-05-28perf scripts python: exported-sql-viewer.py: Add support for pyside2Adrian Hunter1-7/+21
2019-05-28perf scripts python: exported-sql-viewer.py: Use argparse module for argument...Adrian Hunter1-6/+15
2019-05-28perf scripts python: exported-sql-viewer.py: Change python2 to pythonAdrian Hunter1-1/+1
2019-05-15perf scripts python: exported-sql-viewer.py: Add 'About' dialog boxAdrian Hunter1-0/+59
2019-05-15perf scripts python: exported-sql-viewer.py: Add context menuAdrian Hunter1-0/+41
2019-05-15perf scripts python: exported-sql-viewer.py: Add copy to clipboardAdrian Hunter1-0/+217
2019-05-15perf scripts python: exported-sql-viewer.py: Add tree levelAdrian Hunter1-0/+4
2019-05-15perf scripts python: exported-sql-viewer.py: Fix error when shrinking / enlar...Adrian Hunter1-4/+10
2019-05-15perf scripts python: exported-sql-viewer.py: Move view creationAdrian Hunter1-3/+2
iыj!pn@=刿QMDC4;ǔ(PPU(nD`*"W5ڤ#wO9;0*0.:26H_m2hHNѓmѲlf삈w*ˏlH!He< oۑ?m `_4CItQLtO WӸ{9܃ lO܋՟`e߂"4oit˾x' }nna⚇հh`zebn<6ҽy ?ΡwMm`0e:̀@'+Tފi9Www@ ՜9uV[:oH}](yL/Ke[l ٞ_p,˨;11w;pl˝<\8{un{9h[{bnJ4q_/:aKb{򷋻~e1`QJ Hva(G.a+Cy\;#r8w~ >]_*@sP2UW  k$ WB ?\c0Nˤ-p"!V$-ᵟajKk2GD;WJ eWbP-|s{> `Wu͜Οkj'i;y|˷]:B=o\J ".w,C.4Wk>o[dOkӝ(?R7Z==}Xha yJm\]#m~%90 @)@#?VRds>}ai2`lg-qAw RB}Qwꈡ R̯¶DTkpm^%s-^RbE/Ye6H^٤\:-vJ Kɗ-g&n+(9lu4夦(e9VG53i[QzNWrޠ3UNYYbaǧ.2$0m,W2#D:bkj8 0P)KtZ _A^ I'nn{m3 :9{=KE0/d>z6d1O`}f5Kk ;:^mDȗ e&o/#@ f- #Ih#$Ϥf{!za۝7"6=_ 4\V+k`0Tܪ-j=ظuzn/k8>JJa;z{(iw{1b(#`G5rp.'0; D=Hct[e=rtFu }#ȁ8,싵NRFQim ͩQ0(azyh|4R G%@z)].[_ԈCJjՂa"5nՋ{+UR >F_*([sXuakXcN89Z.(PV+,jY4ab[ˇ}p9 DE@Fww#A rJg:sUUӏ-xQKZ ;==DdמŸuoz /Rɹ3<sĒnQ-Gb2O1wr4LoEicܶ <5|<*Nb:U91><0{D |=> ɔZUTӣ*c8L$@=w,098&:]6ƶ;kT)8y%^N^Bh|w,.e]#yН1(nXX&ilyOZamӺ9 T+e }򵓵QDt\1ΈKbs(Gxr6n#Tv 8EOaߠ1zIu 68P??$*%z-Wd=qGTXI"Fd. ЦaK uESzQ.xb)rkWC|*Ǥo-w¸cHF3WՐs1y8x<=UQؘw\5x~{rDc5V@5Gk5p l9>1f'`cxMújLj71:o]aϣQmɷhsD:m\˼5f& Y2g0t  p'x8,I&ryUZW`X 'B,#cqg+]3@%s>YCBE.}ˍg !Dsՠ)rB2YV=A0&8`C Fxxq,sԿ'xW_c[+TuCYHz<`N um--F!S# /yK& u}å $x\3$bc庫^ HDGjw2n@kv{&aTB\*ab=NrJma d1«ü@ vMИ|aZpp)9t!5 1QoWjuv'%HAߗC\ }g P` AoqL.-:y."x+\^qB`s2/gQZ'lCͅZw/sV z{$KHj^2 ڎo0K1E Vu2'3hʖ ģ`."#o0?Eh/Xʹ 2)G) rʻ)ZSR0˚ g| z& Z ,n"b\..d vͱ(g(|uqtضñX8w0s<&=F]P:8V m.teMin"z Q E Y}l\Ԭ"D**1VdȄNN8${fÚNFd^#,6G1 . _JACfg[1{5r%q%D90HH{%f2Qa8He@d;Q?d8~tDMU<\._($At^<#$Oы[q웟yJU@b?tlɳL2]DAb'/W^[N`H VDesŗfDA. (gwf>o}/[lD<9 bT]p52;]6Ha$ގjmsizBj~>2Gqk39O'hBEO 2 ٓ|O# ^RɈ:q02Zngpఛ5hq惩⬣XN2vꄛ@+$aBuyzp-Q<q!Fn][g{꿃ܐdFځ,0$tLLD` +PCz v)l.7ЀI[=SpZ0\9a5Ǐ> g'ʌ]j>,"(n-eeh8, {ƾ$S@7%bt͹ۄ>M١Ʊ .uJ"u~ A"+f~U<wg7l"{c{̻ bS|+8oQr9UnYp8JYt;n}m+n۰k+bAg;].~>*|CUzȔE hmHǪ$H׫I)>m  G!Dq/瘓;<}< Kn}4NUkvWcQMqMiS"?%9QoHx$O%>;>臭%qaGKV8 )F)ks 0嗇q6ow: Nپht[L(bY}QrxCsTq`pH Xޡa@ޒ~S{vrLyt`~W7ɨuí4ٷ>2Epk"&zRoW݊:3#Hr*Hz ?ghd$H n74*4VqEMc)8SG? Oj">ERo=O/nHg@j4N |,G6mN#4./tDpu&-ܡ_Vw J}fpY==p=ϳC eP5q A9B`zǎAV?dscUN&÷bo]{? Ce+7FW|kQ%R*/iڰzZK*şsGEq* G/g3Vߏ?Pyn}`cS`/f˔4!ffO]| W 0x}vHgYΛg>7*yz?/A ú:/m.~uz60PQ/vvܯ sE^4 ){sI=E!1 |ÿ#rphf%+!_(N<&Y 2>T]Du1@%Fb>~}b''ðu߱ӇX%:o܏bSy܁(L(".݊f#D{ۀv\c*^QsiqN$Nk۵G<|wr7.*gyx%^ջ?g7W  M!}*ۙr5G&{we4u-y RJ$kSp[$CIT(?o' 5D^Y _q\qҊ9Z|XC4ӵ G@;/s BgLE9Ɗ=8kvj[&Y(``ˁgݛJ$T[,"ϷʶB zvO aL<7as[ ?Hym0R`VzW}.n0_M&p1ӧUqײ6T|ݮ#ttU~ p:4ƻ.ZE:xx"֙R='k_֪׬:>QQ{"8 j\"k%YOq~8^94;FNu2g%Fć.KgXLT̮#,8ak:R+}'w!J7lkY>o~;q@C{Q(q$-4.7a|Gnp.DYTn鏏BW4l͕Y1``r:zc-+3|FsՆN VZj/_Nl+{:V فL-y:7Йj[# RAsڠ~Aܝ9}f>;1'c$NV 6{]V 9f,f2)8!3d* T5Ш`kqGΗ !dIJjQUjw02 jɭfl͑lfĪ͇JC 7YR$ ~8DJJs>ϑjojȽ?S>[m$ba-M6 JwhC;($DO[iTdŃmg;3yra&v~Ԡ}iH=~d˝eR q`T0gCUm|ʴ/R?b! rm/R٘?|?8ԏ# !4Ob)eze"5"?ǕlÔEZ N/pvL#p0?-{?Gŭ>U9rV  XI>jk/r{>xjzU]%f[Nt`ү~%$:]Ct*>Y|9pĴvI{*u4KHXaСFE\Dk?Z^cUX]]S}>glll`{2 wiȈK'7_7êGm fR=8?8O)m(a-|'xBۀWtƬg"82,k=cz[or/1rC~2Wѳʶ#J5nڗ]ɼ,֖ñ|#<Ke@9BᅗDۋM3~N,"N$3Ӎq/}UB 8>^7k.t]/BPȶ.}hbU~w<~hry7ɞtTM|" ,@=}l4hq@ X!!,d2s![P^'nWmI74[OWQQ}*d3}s>8ќ #Tg DXnIXFqߣ<7xE7^Ȇ i0E]jn0 w xUҀpZu䵑xzɢ/u^X)mDPs6@t ϫ۴0$A (p÷?_ Q2x8\^6S=j%胮!K)XڦȲFV1#Vm#w: r81$bjQGQ - Z(DtYA@IIc}E iOD:dSJ{-)b2XA;B ҕ4Go. 7a:\dg `Dh0cJnKzHbG\r+}敶ȝ".ATa,0Xz` nMHQ6}Co#ؿ^pA`AP@H1 9E|pb> sg 5!s=.D"[zًBtI"oŲr;H-[nrU7;b)lUX+oeybL8ex`x|,X>xւR꼒>.sိK# D"8/%p|z!nz*bܤ :%i\o6u|}2r(rY {{B׍8u]R*(X¾5[*Rmg@-sCL[ezd L̫٪|`!G1֙3YJ"u^ AdvuAH4- 'p8B2YV\84@}? /a)7:B.,TR JE_Vw3=:l`/>E;?E|1^j\><4(R,:VGӄ*`~Yf!?TAPcb̤vg>N;!=O4j&K0U0(h ђ>ܴ'q r0SU}(+ES<?\>+j>sׂ͚\]mXn+U M0E"T9[#V}ô3D,z:YN&B8e;i!}9rDPY:ߛJE2dD $R3|~%P: _N4֢WE E-8n@vV|֟DYOe _/(zή(,lfK%[EքE9p ,:A#r>#PcQp*R5B"":v-=5)`s|a:hl VOrP&Mp*UyEf VD{Ե{1$Z繵kLh! +F P$0_Fq9 }mt-X ŖhX|,6Sr` ig}<,^+e.?۪Ï@Ҭ /.zja8}NT7&gV Djpܝ$N] 5< XI1 j+㦭ޚx"[VZnņ[ob5=v[< uKlI}k +juc|Jde~=WgF,u2^<}V=GH3OWgG|q=zꭗVNHZ=$k{^ s{ύc! n[>=],~b),z{`.OfKpG~?A'4 9˰ y{&e&@P);7^4ӷˏU嶙xhY߇[ۆ}+)A2CQfl9ڼ!(Dz*G6 VEHѝD;-H bz{!iD5Vڔ ]! y,;,&Ƒ*"Ecx߭"Q\"< GVZ_{[Qop2Zq $, cL vnk\T[o~cvN,e7i;\؇9_&Ң8VkNM/>Ny]X%7 hgO^6'"~>D"m߬C}o :kKy(vPd⛙DBk(VlI<>Mt@LmA3]΢)Ү܀IBL'Z"]ru銀]b[cql6uRSgw{cO懎r.'7Ylmh a歱94Nt1QP@R߫MJ<ʘ{΂QM؍ ~96ǶeUDtʹ&IAF0ʘ !6EcGj3$QYP`)X9''zg? Yp]5d! ;mF( A)2|N;3@)Lg;eAH~h:c1A.hX&H|FPmqV~",f?k+n%#Œ3ш$ l3+akבDTa'5: A , QYYrrŎZ.}P cjI+"`_`1#y[F/ :ד'{exdt?L:hnڳϛF녓ef$G`(=< t[Aeӈ=(B>PdQ#YE(Is"!T rS(шi9 3Sphuޢ<&.'b!*BeD9(O! 4ӷ},bD"%Uh[d=*ql?B,T९9uls}r_eܽ"ae3 &1Q((kЎě \ݖLyN,ޛ|tƎ$׿T"]hs'(ÌA,?,~L4>:cly}ug.;ȋt8;b"*ԉ/3:%onR}q'nk~pō3oǑ\7$ 8;:e]NwIb6HF@SzqGlbG<%7.K'P޹T]ܑW,K\T\H[𶌜, [mO&cx@i1 Vx `Ӡ9PVG/n=di+mc-w;XX>E.8fIF۠Dqs",p̐ׯt9Zn]=59oJoSVI-ҋ7\(({ٝ7a֑/~fco88]dqxQ c*σz2묷(!M! ]:͂ŴT;@#Bo`p~^grL -@D:l(ڑu :uӷ0J0,v8TUIs=,/gk,2`:ɝe4:4͂(ItcVh#oTp)tϛ^U犈Ռ>W(eyyiB79q.*dOa HK&uf 3l9F^,HӣYA! tGX0)*Z5kHx+T() 5MP?/u#nGIM@A}\ܮxhW;Ai\Vu//H[斧}>NN=@;cs'X|҆~gۭ}^gV?MR),4+ I`0Wq`N Q1bi+*BR2C&iֿC{9^`E~> "0 [SJ#&.F}0P" onrF1UHQ V D|/<ߖySZza&N&BLYI.IKyݮ8X)J-rI&u@ E}翿V-$;Č`b|zjz<\vq`^ض5>``oo ȣ4ߙ"AB_*#Y~[8)SSI HHuSzؑ֔k䅨pGj'Bz#'8ȶFÌDPeׁ8sxO? ZPӼHvs;7q/nJz~QyxWjs0'=T> ܀ $B9Rsv,>M a8CTUXQg"5,12)3*=A9 0?>\G)qHCmu>mٸ ~Q#s&cO1:}{-f;)xZc:_j42&Z!fOf]D1 Ҍ:P##N'3/ 9Ķkk*ڥ?>{. TiW4AcݍCR_'p:զ}ygv[3&F(ibU+?~V&u\hqՙ8*×gp 4獥UGxqL:wi5Hyܽ)~QMW >ֺ,瀲eQV;#Ng2MVJ)jf/Z5߂!D/~6aU}Ҫ)<ŸG:(cj.ଔ/_^]dlߏ#bЊ?{ ՙ2ߛ>.!oh QL<.He+o; TYG@\|a 7KJ qĉΟT,<`9E~e )AlX-뱨LcNsd\;pB.b*(qep&~F6G` vO=l}NRĹ(_—r6 Q=P#HQGY(~m( @OuNPgs yl.ף%%]8'"%+RxE2b?(5:ZAY{h>V<}P3ФW0uegW^O^NJ{yA lKYx!&0,%fݶ"ok@Gק*(%5EM2߷kxfdaHjFLzpT*ZYk/wҢ(7 p"#j쓆q^Uwz (]``6] q;κ ,S>Z=O j]9cZ>:. [rp>8W"g"+*Iz;ݛb}fW;Ww5|(ph9ȢQ򻘦 *ԭ:<>7zw» }Ci  JCllSq@?YzIWrꀬHKb4,LU V,[G 压VUI>YMXBCL^GD#y~=reK2YUEAW5M(%[i[Vk^MI q%eiE^yoG"W3GoòCn˜6ZO|醼A] 71ZT;B2nQFQfV>,-Cõ m V=5LaIW]+^EGPOoHމJVjW X9Nb5Qgms,@T>|". B>g1|zZzYMu&tB~#H76 Cg`3(Lszkza||>}3ġ C](ցBQ_h94KZ ~Pf#'Y3VD%8瀎WN$ ,!?f0dH[OTP$r,C=zU0--^^9 ~5ڨ&֦QsU;S9C{xMA*Mu;0Om&0JCte6xگW+9i,'ZsgS^;s@AD4S bi/?"x'CC2*9 #XWs"n 4Qd_}@fnLr8oǪB5E I#H@D>egGE6ςZww7*xzؽb6Y;cx,5g>@n[UpaJ/}ew=A`^[  @<$s6Cx$/ם\8UΉ7 "bu}BDR9ŁCC'd+M?Huq{AR9#Zܡbq3"zya)\S{jYhFp*Z<n l v(-殩ws1[oo[]ZZ=ae-d\%.k,m痥vnQA{Kg!o#σR"@W9XL6dqA0zåjG1TԮX`rV()mO#Eg `B $fyktfc짨~֏kCC%Y |ٙ!8:E.yK3!CeZ=%H*lrfZ~}"+hu! Jlޓ31mu Xyl\MF*< ^[%̈́"OT dUs,V$kV`#p(ks<2@W WqŨplT(Ul|8x(:wqnw( mſ:фīE*w?串_K24cFM@a`D ;E*D]?voGK9/7 Nm*%A] ]bNv^+prpn}*ٽ.(-AK]Iǣ¼F50wvamlΒ7VԿxX"mw1xV94X` }%49,(8s%cU}2W+ʮam5־>6ni^o g0cWE^ecH>9AcG{;PhVeܙ,'"CF0^px|`9O`O CÇ觙Vܾ79 ?)=浪f=Tv"%诟V;D4rCj+> 5G$cvĂ5/PW] h/Gxgk擸FY&i{N /+!F`2.eEG]7ടTUn>\.f#̓sbd԰(yVzJezA}pgɍ <xk6ϿI:WQhۃWiշߣflNWW6a4:ࢷ lXO>rOYW/\g^Ƭ\d(#hc`fB5$sDk=12&I3>g0>;3>8:̈{EߥA!k `͢1%}N,QCc+@%цI0nu y,$e:2H.?\?brgC^fyZ1XX>gr~.#(6NdIU85Bc9WVH@W̿.';ᄃ+hz FWƂp^zK[1]Pԧ%™XP/񑸃`i)V&g4F-TmIEA 4h4滶좂ڨ̣N /lxnT<"r즜C=D'd` 8Ȉ !dS nz_Co{lnbcofgqPCPԾBC[s w u'*%ǧ4rH+[ 33(%'Eny %IlؘflUynDG%BM t ,l.aCDqRcNC;n׼ ?ggxzh lI 04_ԆEdzaS3Ƥ2R}o?z#DvYY/ !G |a>ę_6?CIO\] ʖ`,@:pqyg >y Hz :3\>VOh$Y%^npcO&PD”#/y'vD5ɫeH*W腉6( IEKpV(tj~VDwuTA5]N   >؞y9a$LqwvėQB!_E=Fգ:K>yV*>MkwR͹e.>s!;͐$$<xuCw9&K2I+ a> "H#遦/w#WXJ)$K1f$e?o0~oX(DHX_Lӑ=YNl7 RzoRxO Maku\'!0 vX`%D?I* hQ=qo7پDO"IE (t "Xgc\U\$ W\ə)#Q\(P3 Q跴8! J9cJJd7 5eDVRT`K3F~\-hPNKu]$?/ >"Ɯ&"2c7FRH)˳a=o|QS6W_ebyd ^!G;L+$WeR:Q*epnGl0r)mz:aelNJ }QogTd1&/s``&G稏여VmA0x_q:ۭpm41˩/1-%8p=LF; '>$_77B x(xb^D/ܳ^yЩh= J}a'XJ339x[a֟b9N(iVΩt5oXo1bwTT>' \-%}P,I*yuG$9f,YOp\S_Z8dQ Rt#5"ww7:ր=:^#Bkdݒu(CEKk=)}.vV[f˕<|xy@>Ur<8)gʀ;kF80RF(UI˝\rMWc?Iq|'O+N[.扴D=H ҵDIft}YLޘMrg@>[ԆOYb!GG?#?fcO!Y4f4FiܔI}}{N w`Y l8pӥiOc.FtK-)2y}~Jmmg͍lG0}v9gժb Eix3γ©Ad^̣ܽQ_* ]Izf%dEZ gGN$(by(q1kd \9^_wtvn֢t4nKUW 8 L0VU YCƱ͇m5 -쒢F7EUl,lSgP'Ʀ-xq4"|Mtg5Yuxĺ#Dx_4@0(*>*r`Ynxq9j%b突\maGr|=KX: t ڬ4~_I]L"R>Y㺟N| _E{@=zub$!iNf *ur\'lQvҰ*+AB< |ծK$Se\?WR(BAa7t\.$ i6p Jчh?$qr+f+Sw TJq+..rKP+) sX 7`);vCFJ݀6c2(wy>(ySrی/Ң4XVdHv$2a/ztnV4nG ڵن7sol!d}pƻUzl[㹓#W ĩE"V%y hx醏Q]jsCT6l/i]hsGۅ! 7+lƅYrkWW^O[Bks^Қz^zqHP#- Cf+8qeuہ˝#5:X/ƁRǩRdfo{Maj wqnfX<'2Aqyurn3r>n9F)[~[e~ RI?H8&\>+ɻCֈD>N?=|5dؠs:I _^&0Tt5-϶!#-lrp>m@@Zc҈bH}YcAVќygp芄LG-"A>l7>y[1YͿoOx¥z.s-U\!m&-O0\Q0n\W`A>4K>9XA(bDL?D_>x& #mׇ9`Mr5nz%Hەۥe!gHOC[^#cxOvW+ TjZݹ}0Qַ *=c# w4IuDfCYMKe`(cu6g4cT  7H$|Dkf.i"%<4PϺN&މ(G!+CC.kֳdj_R6C+e7#9.,K "(E0[V,5v*8?gdžg _D.t?98p}AUޯ'P\5R,O(WwBu͵ߑ}iϫ wF$?70aYe)-Da 3P i&D%qЌ_--af5H:1^0C;ad@l֐7$RkoTԵN3) Zj:Ȃ[k`X^N7N?Z[9^O[nyA6ȀS)dErƲ Ц1)lt"bmhh;͇ggMW#Ab0~ϊL#DJGc }%ALw *g38^Nu.= ܎cq*NkbK4m=8P{1]=ȻaނPG7{.E$Z cm-Lg<9=cENI=gno!]r*d [\PRX_`f} b?0vB.̳4m(x$ʞБ4r.uus"`zu4!^R1V|}"}Uo&Ua>VfZm48zd<}rc3X/:9c(y"TP0{~x+u-K%D(..gqd]V|0u0=1⛷nOKt<Y%OA귋j#uo8@trP:Z`Ym+z~*nDa ^ bͣXBm`Y6Hg!|U9SݳcbE=^p{"샭ìA~)̠ 9$^G0ӆ-|)qÙu޺Gq8_1%PӊKkb5uzj cah\)1 W (y߶2׷o5v1{('e )h+qq ͚j1ʼاoo_ vGr⫰!'>eOkL\k@?ÿC\I#ԛZZkQmWh8bP8Pv dt_sǭ E@!p z~m4DZ`rf(6l\ +{r7b/y`C`L)SF9F? Vk}]Cc ;+A+ gnw{)IeP*XH.\н\R Ecw4HXX'@^)M8C*`wM.9CGȆ."^ 6#dIXpqK vui e4o>5X ^}8i8̚T^𿇆/x}CP4)|Y(dC/v{<FXORy 瀣<Ś@~HL2,>~R]H7FY npqEo;jywYK01`Q\'Ja=iZ3ڡbF[7Ll|.Ώ<~84Z`?o1 )gc ?SmTEއ=rz.l9^^8̄jMmGwˌvڝ0dAJ{V1sa07ϓ> Vh]h-n$lZb(WI]h&D_cm&o7oz:-ISrfhvj, /4(]k6-f}cbk .Ej]ynp+KsN\Q#@!`G1?#)' #蘬$5E73g5G%!>e 9,꫑bFу0y U1b L=s;γ^w\𯈵dKCgx(_X]kht "op現-#tŭ]҃>6IkQxwdgi}ַ(VbjOvpj̅( nǴȠK&HPqobKzF6EAk֩8$;k[n޸PAП+go?z狼Fs`Fĝҹ"Z޶gV ARNkmɨC^#˫F(YYCe[s}.;s'>u̎6qC.lV1<P§Z@!r^)B]04ߑ>c4kHn#5$BfZƆ ~5灧bt0X]GOUgb#V|M,x10 .ܪ߈lLftn9#zUGIi`U{G.`Iֹ7s=3ԝn:q} =/ݬq:NpYB<":/󜝞D'LL4LuEr;Q^ DNJzKp0~5sތiWN13È⸩QYK~⨸$^ l?[qtqc0& 0NC0ђ 0>Aί;;z*߶j6Y1{"#pg& Ď#=PhGnFc\cn8r,@֞3AT'J*Hi7B8PY;ڃuVֽƵ8{~FOoݗ,Nj:C/u?M`fn:sw)w3xCxc[u(aBa9)w{UPCŖc7N#I- qMlN\a P1Iru.T? za{D $0K)ԗMPýPJdi/A mg^2182)%n5rrVFU. K J2/#P62BH Qǫ#\_\&2yz`Ǝ360=f)xbxRYG8,"C;@:Ͳ0F Η/%NEsW\ b2>z"ӅEc[_uYgKEHh+#5e+8UCWėxpM(23:u K~jEj:뻱'FMjN17¾#ԁcN汄 q"Y]Uk ]N5@auYq`G.7 6r }@ qہEB,N'/2< ˶8Y=s_ndr ´zq @#8vُlT]m`<e9lۓ`徿NxՇ|u8=]z7a7vc;XH=s r3+Ke\E'>7bCofsp^PNA׶vs8LyiwN^ F2xHőDVi`ZfÅ$FO t?uB\cƦT5Q<\&4Eg'<[Mu|vt\=.]sU{EVơYaqP}AMc5^z&|~֠2y+MӚWY9 c7S1ublPzT< PZ5fBy_o[=wC^w3[716aJd%QH`DX}|l>Hʼnz22I*֟s(%I Gә=>A?LH}=gScbO3? <@hEY|dY$5ӆVwvmȝd<p3 ` a ^}/a4qU'@y\ozC#s1):3W:HXb2Ԏ5AZ ! qFgq-4݋q߃mxO&(LxFx7i?\#!/ > Zrn5ʗ܁/Z`}GW,Q9%Gps~ fga_:3ה:#QOй_-8_AIz>/ܸ4H:)I9Jxz֤穯gg 賣R'9EwX?7uj) EG /V*ٸ18W4rma2 . A:Uu |S(='(ae9Č*1ªp(38F"%e8H,WAM@rO"'Cl ^6#u*|[*s(8 O0ݤR,p!h.Ό 5\Ă+Z9P*˅B C64ͤsLՈos ꧌v)9>Z?FNBK.Z'bS`bd+9bYu&rKѬ(_co֧ʁ}(RPm|`cgyeK ĐybHļr?a $uyR'$^ZB^339gtnAQ#pU?}8[KF%K䙉V P I(Af%3B(8SrvsctRKA$#4ȉ>!҆U?ӷu?#Y^{oYe8@""!B~{_)x0&o爉R'_G9_S(5YsW$Z5,n>̟LF-G1|RjxK{}bxEX_Dhxϼ>4U_j'# #FI>/سJDhy~x1v(* &CO|o,GuA'qU q>AI4ȟإ!{K_*+D/ {Y._J Z\~ُJa+L&L{*}B˚b8G0fbO o[v Dpxrbw*`^np=D"$0O݀6[Q>rh8T<<\AUQb;u 9+N`iA_Hx_K=suP_ p#9 #V8 A/coSo/J? V(d7Z%ћw!,mDdyp`ufvcQH86JiY)6EJ6d–a <{<Z)psUЫě l߫%r$~ˍuLq]98(PA q +_3.I40@d2 o(U`m+7UX8/~0v$^cx].%7_XO|X$" c&bSR0Rj$~)F Yl7H/fME}]{Ov,|=Gұfܵυ}k; b{;'jvH;{[+ӦH|W.ɀUcW'kh:Y{f B;9ifH8\0:Tb21O.+By:P/!2BDpG7CnFKZW jh9p[޵ r\#P3=zѺ[587o Oq Ă$a: o:Kj,e(A`zVM΃^E9^ 셢CTK`Iٚ9<9IXױ>~Gx?On G unp3J D_c7nEu g L8SԸ}b!^#.W\37zūAhҧp!rt\T"0x=LAA.6,=sir|.ZH(mu;.]g&,H2$t2RZʊV%V6VC?xTa2eOJkbj,&QsY>̼R FA)$QUd0h:h#zԊǶc 3Jho:>wcg[a{ 7sv(^6;ywkE]mb0X?j-c\mgb%o0B17OWʱ`FTY SbDw! BbO9zy{%Lfعߠb87RTgOQWF|T{Wm965غnC"an~9t F1ViY15 @&iq"=iȞpbZQ/v $bLx/ڼPK'Jib5y63 sgi8n\5blTo5G 80DBts9@8,Lw4e}G(`y5&ǰ2-C@<|D& E2 O}85]-~Ye3&pPE[Ht cC`'9Ӎbak6IJ uIBg*j/Tj,7n"auB=nT[lI]l%O6dm`zȏD0X|yIRdß~#`w9,*3ff| 37u%@N`O5:>KlbV6@cVbJ.q9#ױ6=W~u UN<%?w:gq>?0C%k62 uH'|{Nc-xu6 .](i{|B x0Tk׍т WwsdzOKB"GƯ&*փvR w躳{2욼<%dh|mPP%(R3Uk</W)_z O㖁= .G1 !es8L$7zqBrW]2|"!\(9u54÷澞*Xu;^xD'(q6*mfhLM158cǿWWӁyw{=e$Dn:/CmzeG Cq,󊊰Trb1l0FT24|Js[c+?ܣ_KC+C>M䤌ʗ-l]&@kb3Ph!BʇW5_!gQ[Bq`D8p0ΑI*|-&: 2]l!O̓`vaYu](wUoa:q!~&LʉrbNC?@'wN>a0摖/hu}uſBYhue8Uz`;wjnjr0UvXeHdLg8wI3Z9!PIi0~kS`՜t %B%МB39QA\z-[L$AG@z! "rsGUmU1*015!iVID| 0Ymf?{ྗOFfH18"ShuoF!S[nO/ǂ:{N%:}c\3^jx--zz\&:-2"In=8&G*きpP`0{ȑqOP3#P8>ևL/?FОj&;>GeIo8w?1k,)?VObf= Q`ExVV D rrDGBAQן/GF={I?;:Ko/nsJ[^GwYcJVR $A#P S uhѳfp|P~%IwWFm =OⳈX3"7^Jף個{z6,%al\==j0;,,ib0,A{cIZ T#p18 @,=Z)t\UscdpDEǃ8Mzy0gg[1w]s^u02tw O@I@PaQt;tB8a~NW()T~KׯFl==M0"{-4 +=< M[IW:m^3¿ Y|r+J (4 LH;ߟF%miv_'u4PBhlQb ZC8pp h( 4HE^y+î;W$MdjQ4Դ*Lm*6K'@%ruLp٠(љY=r^+;t $ 0\,eR =Bmy­jb E [+Ly:3O(@`oH[z-|?/mD?(gCqOP܁X!+Tykp1!:V!c}ZX"T ލ#-vXH7KфC@4v1'0qvyM%LAc{1H^$%I40!HL3CV2l+BۧIA#nCp"tqgBz,a5 T, Yۣ٣ƒfr\h;wes.TϘ䋊ć : )nW >1 ЏWHڅwnGx?ׯ<pzNZ៿ s %9vwUXmM˕ǹ`dL_vhJKBP/DFu,ޓև$/Ff%F 1zu#Y ,8o<ҚBZ4B^53agWzo Pk%_& {_JIz."nO.뤫?I( C*\~O LgS5Ò=p˴Gnnڇmv]C.Pr{*CWigS Dwp A*D1JܺT H 2 !ih~ɫ<8JDa}=޳Co1rr҇S0mrvOgTl`ƶROJ;7&K(o`d9!p?݄@UDQ.,?~W5BiyBT>?}#OPnFHzb>_d>#٨5mi8KOst|u}ٜ v~[t"G?Z,懵:԰L/%0O` l>ێB;y\[-׹= ZSh= >/ϊތ.!.U=dO6e=(֝3O,\-rp!9(?2%)f$~9t>3!+GTl7hαoU>G7Z98^t37vJ)Ss um Ùlp5N(G:o09|ۻbjë]+OgS=Î'Z!UzN}}CxnW?4u={ި:PYwR]Ua.yS&a/[ӱ.ߐ(Av|Wu a' al׻l0y:smZou {58LnTG@POYDO7ef[lGE!y{Akj#iɷ[Ytcto41γرy/̾z#B{ǭ`:W./jȋnA'zɿ(Q6i~~; 3"$X8 ǻڽ08 jJ["+q][|8|:[PPD }Zd~0RH$P!5N{GccVe $C> :#3 dc7K/e*IS#?*F۲x9R2Wmt0VNL}JE?˔N֩QU$m;]鳗}#qU$X[%脤z-{m@{̧:QYWI,7~Lq3ܮzU/TS) =VN .'ۻ{6x_ѳ8]NB⻑~o{QgW^%gnS&n/vO56gu*5spč\uCG]w?LVXBhqZb!T.=DkZ9{'xN@4ZMXԺSsuA+1Y6h$^sɻ6Pk6xS@z5A[-rUw⼽8`_Ku˯.BKˎk=)n??,vX&{&HsG+t),c}V[>'K4P.n~6Ƈ ᕷlp$jKνPp/{iO.{[{=k_/(8ww|bQj~&Fqt%0YY˰<4dש5 N %ZDNyGIj攟ˠe.|)޷_?9֫Iނ5~fQY=4.jV 6zg\ee4g?Dc!!6WW97IhFAϋq?1CԴMbG_/$f,s?Kj'eJ{#d!xÒ0tWKDgz^HMÿ (ZQđQ8EY6TE@t8D`\,Uh4/CuϷM7ho{e ] QVfJd!?D Dȡg!sNGT/ 9^Bbj(k>|3:þ_S79{ӾW-3b3[tLZl+!cn ޤÛqWy@9wt∑ (8.3W=Cn}Ո{&h]PIӛ/c}6nLaيVvXͽbP|]E]&Ofb..<'d{VꇏJKZ |KlCA^X