summaryrefslogtreecommitdiff
path: root/recipes/python/python-pyqt/01_configure.dpatch
blob: d7c45b9a44e342f0f7a07e200ba2cdf95064f3cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
#! /bin/sh /usr/share/dpatch/dpatch-run
## 01_configure.dpatch by Torsten Marek <shlomme@debian.org>
##
## DP: Make PyQt4 objectdir-buildable

@DPATCH@
diff -urNad python-qt4-4.2+snapshot20070727~/configure.py python-qt4-4.2+snapshot20070727/configure.py
--- python-qt4-4.2+snapshot20070727~/configure.py	2007-07-29 23:58:48.000000000 +0200
+++ python-qt4-4.2+snapshot20070727/configure.py	2007-07-30 00:00:17.000000000 +0200
@@ -20,6 +20,8 @@
 # Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 
+# Modified for Debian by Torsten Marek <shlomme@gmx.net>
+
 import sys
 import os
 import string
@@ -29,6 +31,23 @@
 
 import sipconfig
 
+topsrcdir = os.path.dirname(os.path.abspath(__file__))
+has_objdir = topsrcdir != os.path.abspath(os.path.curdir)
+if not has_objdir:
+    topsrcdir = None
+
+
+def makeDir(dirname):
+    try:
+        os.mkdir(dirname)
+    except OSError, e:
+        if e.errno != 17:
+            raise
+        
+def srcPath(filename):
+    if topsrcdir is not None:
+        return os.path.join(topsrcdir, filename)
+    return filename
 
 # Initialise the globals.
 pyqt_version = 0x040200
@@ -134,6 +153,8 @@
     p.add_option("-g", "--consolidate", action="store_true", default=False,
             dest="bigqt", help="create a single module which links against "
             "all the Qt libraries")
+    p.add_option("--disable-designer-plugin", action="store_true", default=False,
+                 help="do not build the Qt Designer plugin")
 
     # These are internal options used to build the mega Windows GPL package.
     p.add_option("--mwg-openssl", action="callback", default=None,
@@ -282,6 +303,7 @@
         check_module("QAxContainer", "qaxobject.h", "new QAxObject()",
                 extra_libs=["QAxContainer"])
 
+        makeDir("dbus")
         if os.path.isdir("dbus"):
             check_dbus()
 
@@ -354,7 +376,7 @@
             generate_code("QtAssistant")
 
         if "QtDesigner" in pyqt_modules:
-            qpy_dir = os.path.abspath(os.path.join("qpy", "QtDesigner"))
+            qpy_dir = os.path.abspath(srcPath(os.path.join("qpy", "QtDesigner")))
 
             if sys.platform == "win32":
                 if opts.debug:
@@ -380,10 +402,10 @@
 
         # Generate the composite module.
         qtmod_sipdir = os.path.join("sip", "Qt")
-        mk_clean_dir(qtmod_sipdir)
+        mk_clean_dir(srcPath(qtmod_sipdir))
 
         qtmod_sipfile = os.path.join(qtmod_sipdir, "Qtmod.sip")
-        f = open(qtmod_sipfile, "w")
+        f = open(srcPath(qtmod_sipfile), "w")
 
         f.write("""%CompositeModule PyQt4.Qt
 
@@ -555,7 +577,7 @@
         return libs, libdirs
 
     def module_installs(self):
-        return ["__init__.py", "pyqtconfig.py"]
+        return [srcPath("__init__.py"), "pyqtconfig.py"]
 
     def qpylibs(self):
         # See which QPy libraries to build.
@@ -571,8 +593,8 @@
         for qpy, pro in qpylibs.iteritems():
             sipconfig.inform("Creating QPy library for %s Makefile..." % qpy)
 
-            os.chdir(os.path.join("qpy", qpy))
-
+            os.chdir(srcPath(os.path.join("qpy", qpy)))
+            
             if sipcfg.universal:
                 upro = "u_" + pro
 
@@ -596,6 +618,8 @@
 
         sipconfig.inform("Creating QPy libraries Makefile...")
 
+        makeDir("qpy")
+        os.system("ln -s %s qpy/QtDesigner" % (srcPath("qpy/QtDesigner"),))
         sipconfig.ParentMakefile(
             configuration=sipcfg,
             dir="qpy",
@@ -617,6 +641,7 @@
                 install_dir=pydbusmoddir,
                 qt=["QtCore"],
                 debug=opts.debug,
+                topsrcdir=topsrcdir,
                 universal=sipcfg.universal
             )
 
@@ -625,18 +650,19 @@
             makefile.generate()
             tool.append("dbus")
 
-        # Only include ElementTree for older versions of Python.
-        if sipcfg.py_version < 0x020500:
-            sipconfig.inform("Creating elementtree Makefile...")
+        # Don't include elementtree on Debian
+##         # Only include ElementTree for older versions of Python.
+##         if sipcfg.py_version < 0x020500:
+##             sipconfig.inform("Creating elementtree Makefile...")
 
-            makefile = sipconfig.PythonModuleMakefile(
-                configuration=sipcfg,
-                dstdir=os.path.join(pyqt_modroot, "elementtree"),
-                dir="elementtree"
-            )
+##             makefile = sipconfig.PythonModuleMakefile(
+##                 configuration=sipcfg,
+##                 dstdir=os.path.join(pyqt_modroot, "elementtree"),
+##                 dir="elementtree"
+##             )
 
-            makefile.generate()
-            tool.append("elementtree")
+##             makefile.generate()
+##             tool.append("elementtree")
 
         # Create the pyuic4 wrapper.  Use the GUI version on MacOS (so that
         # previews work properly and normal console use will work anyway), but
@@ -644,16 +670,18 @@
         sipconfig.inform("Creating pyuic4 wrapper...")
 
         uicdir=os.path.join(pyqt_modroot, "uic")
-        wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), (sys.platform == "darwin"))
+        makeDir("pyuic")
+        # Wrapper script is not needed on Debian
+        #wrapper = sipconfig.create_wrapper(os.path.join(uicdir, "pyuic.py"), os.path.join("pyuic", "pyuic4"), (sys.platform == "darwin"))
 
         sipconfig.inform("Creating pyuic4 Makefile...")
 
         makefile = sipconfig.PythonModuleMakefile(
             configuration=sipcfg,
             dstdir=uicdir,
-            srcdir="uic",
+            srcdir=srcPath(os.path.join("pyuic", "uic")),
             dir="pyuic",
-            installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
+            #installs=[[os.path.basename(wrapper), opts.pyqtbindir]]
         )
 
         makefile.generate()
@@ -661,7 +689,7 @@
 
         if "QtXml" in pyqt_modules:
             sipconfig.inform("Creating pylupdate4 Makefile...")
-
+            makeDir("pylupdate")
             makefile = sipconfig.ProgramMakefile(
                 configuration=sipcfg,
                 build_file="pylupdate.sbf",
@@ -671,14 +699,15 @@
                 qt=["QtCore", "QtGui", "QtXml"],
                 debug=opts.debug,
                 warnings=1,
+                topsrcdir=topsrcdir,
                 universal=sipcfg.universal
             )
-
+            makefile.extra_include_dirs.append(srcPath("pylupdate"))
             makefile.generate()
             tool.append("pylupdate")
 
             sipconfig.inform("Creating pyrcc4 Makefile...")
-
+            makeDir("pyrcc")
             makefile = sipconfig.ProgramMakefile(
                 configuration=sipcfg,
                 build_file="pyrcc.sbf",
@@ -688,6 +717,7 @@
                 qt=["QtCore", "QtXml"],
                 debug=opts.debug,
                 warnings=1,
+                topsrcdir=topsrcdir,
                 universal=sipcfg.universal
             )
 
@@ -697,7 +727,7 @@
             sipconfig.inform("pylupdate4 and pyrcc4 will not be built because the Qt XML module is missing.")
 
         if "QtDesigner" in pyqt_modules:
-            enabled = True
+            enabled = not opts.disable_designer_plugin
 
             py_major = sipcfg.py_version >> 16
             py_minor = (sipcfg.py_version >> 8) & 0x0ff
@@ -731,7 +761,7 @@
                 # Run qmake to generate the Makefile.
                 qmake_args = fix_qmake_args()
                 cwd = os.getcwd()
-                os.chdir("designer")
+                os.chdir(srcPath("designer"))
 
                 # Create the qmake project file.
                 fin = open("python.pro-in")
@@ -755,7 +785,7 @@
                 run_command("%s %s" % (opts.qmake, qmake_args))
                 os.chdir(cwd)
 
-                tool.append("designer")
+                tool.append(srcPath("designer"))
 
         return tool
 
@@ -899,7 +929,6 @@
     add_makefile_extras(makefile, extra_include_dirs, extra_lib_dirs, extra_libs)
 
     exe, build = makefile.build_command(name)
-
     # Make sure the executable file doesn't exist.
     remove_file(exe)
     run_command(build)
@@ -1025,7 +1054,7 @@
         return
 
     # Check the module's main .sip file exists.
-    if os.access(os.path.join("sip", mname, mname + "mod.sip"), os.F_OK):
+    if os.access(srcPath(os.path.join("sip", mname, mname + "mod.sip")), os.F_OK):
         sipconfig.inform("Checking to see if the %s module should be built..." % mname)
 
         if check_api(incfile, test, mname, extra_include_dirs=extra_include_dirs, extra_lib_dirs=extra_lib_dirs, extra_libs=extra_libs):
@@ -1226,10 +1255,14 @@
     argv.append(buildfile)
 
     argv.append("-I")
-    argv.append("sip")
+    argv.append(srcPath("sip"))
 
     # SIP assumes POSIX style path separators.
-    argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
+    if topsrcdir is not None:
+        argv.append(string.join([topsrcdir, "sip", mname, mname + "mod.sip"], "/"))
+    else:
+        argv.append(string.join(["sip", mname, mname + "mod.sip"], "/"))
+
 
     cmd = string.join(argv)
 
@@ -1251,7 +1284,11 @@
         sipfiles = []
 
         for s in glob.glob("sip/" + mname + "/*.sip"):
-            sipfiles.append(os.path.join("..", "sip", mname, os.path.basename(s)))
+            if has_objdir:
+                topdir = topsrcdir
+            else:
+                topdir = ".."
+            sipfiles.append(os.path.join(topdir, "sip", mname, os.path.basename(s)))
 
         installs.append([sipfiles, os.path.join(opts.pyqtsipdir, mname)])
 
@@ -1835,7 +1872,7 @@
     ).generate()
 
     # Install the configuration module.
-    create_config("pyqtconfig.py", "pyqtconfig.py.in", macros)
+    create_config("pyqtconfig.py", srcPath("pyqtconfig.py.in"), macros)
 
 
 ###############################################################################
A&oAݼȻ,arQyܕ}l9,6h͢&YU <8("^D;ҴaE-\辉cBTftR)mE>{ulwonbiG#3LtdŃ%֙6{rUG'ثu0də5QO_}fDt0us&+}7YT̔l0z_3Ӈk|ܑF̏lsV(ܺY*ڤ㳳Uȳ2Yؠ`ebZSV'/60/9FQm #$]stωVn3ѣgEQtrnfV- ބ5PX#Un7:L謰r`c-SfMpD:hI2a\Ʊ^NIVlr0sYUzS(KV֌Bf | 6N'yذ&sEx,nK Uu-4ѱIK+lZJĮ衪Zl&>P ]QϯnWF׎zEBBr<>Q͓6ow.䫗&' (l]K#Bx׼A6,Xˇ@8?d,#N։\8'Oe(]޴t|c1 6[ӓ{KoO=wVCAPQunvqJpyZhQNk0 ڳZ0u4Ko#L8c"빼7YrG'Ԏfͥw1]lz0sܦS^l,NQd~Ԕ0?}j|Ru/8±s[&5^`&'.n *Jʞ?‹64KSE%dw75+=9Ն (}ZCf'igCG۞0漷c(=B#T7h ICudn p*yIg-ͬoX=!\5}nZ%b5x+0J&?5[dϱn$h'Gf6bxL\x`n÷N;wHpK<QrW/7bxde9oCNPG{شYM+&c5dJVJK'OgŎb(&0DCSX &< ;䣆`-Y`zf+k+Ḽ] ,Eφt,lC2 gEA=2+*S \L~=ɿ,^'g,{d[NAڔQVX;(hTѩGatYa-U?B0pԭpi:ecLqǃ_՛U#*[KNغ<\>V>")TVʱ3%Gj{/J6Ad,UͩD1J0S$Qs4}2Yb1z]U0z0Jb(]V3Zw 'hO]˔^ "n8AigaDg/(,XЅvjh'lkpBJz=;ykǶ5b߉eۡ*Mݥh+v3Q#\YS&6C46 zyG{{wx$(}Y%p#8骼?D617i˫=@$tYuPw+bfӜGƻR0$#dq1Uj%`hOQW{n *l/k Ѳa_y**TI::RgYe1^SZSD=pYcZWU]m%kHl6b1N8Q.)< lvSq5[(ɛYWs/yVf&vw 9_7'Ef %,cj\ZUfݎMT`*PU*Q=9?gyd6!=/_g-ӂcL#qz U//#\^Wvegl` hס*٣\6Y:ޔ2J$f Kf1IuU=.jafhl82ˤ ـlΆ9xXjj<:plQOY.\wz&󌮣w6W- ;yeKjQp@HS̭QrUے:1{]Mj]W{[ۥj5L,qE ~G6mWV)FԫcCk ϣXω EG0au9=߱\CzӑԱ XB%.Nk*b|KT"rP cKǚ=X0iQό豃i2 sڽ 7 $t+vZُķ ]J謆o|}g'휯ґhcž7iC].,ic͸N4 1&R4bJ(dq x!tLaVa3*<ޭ7F v["=;6If_0R鏴P$#0ZT.䡄Lwon]䯴3 t| %3v6Kͣ3ohIjޣc1tnzR}LQYR0.T`*m*YwftaWz{R8Sb gi٪2k8KOM81tjcvÇ㻃uvlĚq4|6USa̭UF4,~ul⮳ ?{|Jйܫr~Td(cGPWGbÿ<&(j#XP4!XÆ7A*/4's1l;6mM3qΛZ!~NGyl蘾2ϾgHR?uUwJtc'tR*r=̝^Ud\ǂE&%E"qE%CBbZG IY&z4w,yi2ّaRSlF/f _$ A*¬ʯޢfo/h٪ge 3CB +hpmp84mߛYm0Ζ<t40w$K%2 l9ɴR赥;! AYLX $9o#6IZ!'Y8D'YLP˱,X $ëp,E|wpCkd^Z4: $b]iMp!c/G+vza͍璸WZMF8Ѻ@X006ulcgW ji٘F㥃XTa)_ۦп.Q #J1ݻ׬x[=J(J(nw+۹];*Ho乬t. VH1 R@+0ČxGdۇIysYLcN&!2Rx$ca[NH:tgM,r0T9щ8i76j%uU6L/)BF;e$a<5A3&9oZ0JF2s^XtsK2nvsgFjF1ŚQ*z|X;*QX=Z IAߤ畏4?Z&!rHݍlۛ6jDK>#4,\a$ܬQGFPflJ4C8{#'rF+zʼ4b3b8%cB%#Ha&DeuVͳgߢiիsWdca]ʶhv8n1 %-QԾVpW`ៃ'<ջ'ϺX#,LeOǪ\5\.Q6v3X͚c4Yg%!Tl^d$F[C2ai^%)`r9UZ׎PhlYX8/U-\E^1T/.p9 5jEѺ6-RkZI033D$^1[ל veB\>Wst]fyEܢ5MQ:b^LѼَbtJu >d:a7tJ'epy1fީFg|{:96NkFYrXifldz]9Ɍ>Cʰ-/t1gbE$AH1-cD6vFV8Cnl1QJѧ ,8jXe:Jv(ᆯw\f"MXe# 0ư00 ࡪL>2[O*qfCe1|4,0z,%FpPP<}F4R *: 0) ɠhDQehQRlS3RlzlbNR6bhݍұR2U^'G ]=roঙʏRpGvUwqʛD(ߪ9?Fg4s7J7yz8;kJ>±^rǛ9щ&IdO?3m4I9J߱sG[sҖ+)E1wVKN v+\lV+'cmI~%_{zÄ;#T3246B=m9YgXqyS(xdfB%tv)D}u-bWKZ_XY/>2s>l^t)'JU82Cy]kn/-O2v`%%# u? _r̄BcfQ,Kr>5 ,Ԭ,ƽbK5J(ٳ̈́#f_ʺ076^5sɉšwDn865xo(كq(CE*UTJ4N6Si1ʲm7{\#u)Ѧ(2i1,,,.]-ܚ%Q]-ozPN4%h?QA]Yfpl;&`ʮ*0;lnN=e{KP?8J:0 EdIiD!H.VKKgcqŚdXCW3}ގSN;f# J~tR / hRN#ǎ&,qߑcZU7v#;oZ'a5p֧-I+2p 34+mg[hCG$7C>)Jʥ*LiC[7twcCf:nsrCf2 4{{)$4Py]^ M93>.Gу%rУfvɵԵ)eVlŮGG𺅅w~uZڣ`翷:X7QFA#JyaLea5;g9,z23tJTi1hƦw/=/*TQ dݙ888lA(x2{ ׈|€. n`}5:g5QuT5jQ)Qg;Hs2"p4`҃΢}-ʷbj*he[6MUgs,  32N̜)enc'X!AY+!+a4<(_od2!2it{'+0y{ǶW캡]{MNi-,/h!Q\X< zLdLk*x4{/ gw.$㞮C!4/.?>FfY v2ӯeIu*4զձE%TU-1H5(2DY  4@:a$s.d]np i]|Wrvd Ke-Z%9Jx^/a1ɴat7*JaZ}uz5YUܧ:NfNpj9[e6 ,$ˣAFAߡ$uGN$y[:luytȔ˫1GdMc읦{ p1o[o>- ŖZ`>i}AMUj bp|\qЕy%INEbQ~l8)ؒ˻B>%; ˖ON.T x7+iu_ ,1.DQ4o'{ j *8UǨ0ZccLJ`a^:Wܳ1B(bYgý! V1+*DUE jd;x]Wc tw`ēhРI'X@yVKfuWFUӌ[2><>y+|bXu6G7۲3{dIê;<%U`s00b'"%o ~mi`7؏;W cJc6Vhꭍ+4'Wg2MʮՂ/V%բ%l<&rjY Tٻ,`X2s9ΛTQthfL"*WF$\d`M\9(gvGqٮC#^t'sE0r)yNJ}nknv3GIj6yUV2:54ť{ v";ҫ5ObZ.&k.ĕcqkɻꡫg;#i<xw Lp*eEN&lUVuXkۧ; l7)N_y H Nnk%WkE>ۂ;Rb}x>u[׿Őg,qGP{ αT9;;7=һ[9b-ZYټb'%&ԼSJE%mػ'&X6VK%F^1uJ`[>pccv3[&&6 pQ2MqW?dzꏭUhIب:Mթ8`<&L1CYl8ATHMepRᛧvé AߕБpnDK^M{>*}f["uQdnj ж]}'zk >eK[+M;q$Nj'Vq5zƣf1w2|Ea(>#s>f7ѭs1VŌXYʴDA\3V.76|*zgSۮa[d}=ۿ/m!:;XVct8<`ɀRJ)`8(t5kfI,bب!/b yHAxLAgn?MOT,顼N/okwwCks+Os*VS R$)Pg$E'Fq79'!{˥n:[E&rd/Dhz׵,#BbGg~l'SɩQ,8c,] z9Vsdsg6\#ahvsyv7r}Obhvudn۹e][4|x!Gf~8rf/3 6+r?|cnZlwB]xQIb~OzޗCG[%7*fm?Qdk)OrQ DB Ur;?WS(c(C1VgM3h$ϚܲO*ClUZx.FB%Pc1Qb7bsR9zPS=i& >O W+7aPn0BC|CbMŧ̧Rz,AOQ<{MztiLo]{XOu`?gPU_CY=+JV}VV^i|8c{߻RCl"m3 y~|i*%#J%OadKGHĩTخ}*X,md-yu7iʾCJJ]Tz*t*?:{2`e.R1$[6٩~׉BLY'S6NಷcJvƦՏcV,xuF1&$yd*;XX$dT0܋X$bx`݉R[[\\bEYG$1žj>GC5}/iʿ#t<\߰sRUR&ӃM4$݇)c ~߼z ߚ<}0zƄ_f}=~9xë_Mc_c܇i~'Kdj#l^gJ?}U.mduhy~:CFlg?읉C5z_B "B" -$dBMd%2,ؒ[e%, a%[$I%JFɭB'8ic!"o6IJV"_qGqyY(sHƪQJu.Bzڑ"erOGU#V-)Xű<w6iɧviY[A$I?b$M%I""z7M4Sioܛ7$YSIaJ}3RLCniCuR#BuJ RjR1IL󓱅*TTnzpT:MQ|yX.ALQFTWUV%xS,0uJ*5d.F.qq|Xu~NKq6[80_~v6ߟEWpr"УeV9OBQ-nk p^ 7SLRnҊ墩`%d_ʡw̗:~7dA|6A+*̳zS:/G (*UQ)K+(zmQW/{%+7^#J]*<ϑF+(>.q?c7s7'Wܟ+_{#Wrpýz.^ "cSh5*IW^,,UKŹ~7ljg6?|3UؗyͿ5Q,d)S_QҺ,>^2qUڐWy=jV=MN6ie[{LH:ٮo(ޢ͜ZP'կq>dݭ'(u ӃE}?pXl`]Spn[NvM}#hDձ/hQ,R.@VJP9dR)c^= Q޷T{`p|U?O{\#ѩY,`sUV̘<4%$ŃR۟+bxK;LLGC)%,_"PHfG %^ӡSG'yQ2L)JKI3&"O)gpƓ[;<[q'6n:k(k=Ӊ$ q$IIG;9'?xKtjlۚwI(nHvgd$4vK̍*;VuV巳+mkI3٧4IcެSeTOc~/0= KUdWXdObʖ3_/Pu~u)dӒ*98x͹̲e5P>Y)?rߒfpҒUԾ9rks?[94ɧC~H՚Qd aM,L'H 4d1aɛrh97o$g =OVSi"G0iL+L ESw蜍N[=OIsmrz)1iiUnJ;)8F뉥*iٸ>N܉8OSr7T8T&*g-wVꜥ•8Y2U*lM<\q3x盒F t lR4&MJG#Ol|-#o9W $ĸwH빻8,&lYn71`*pѶ+XҬ#Z,1ZNєAPJ;NC5t8<;tHSx3XҪV$0zoU֤ da?@ rR EM&"[#xr:drJ9094;wi;f;On@he$ێ1a[;Cc9R~rF6,HWM}1fceQNr[nژ,%-K%MR·YmCݫ8,=& p+JRu6fcLiѻ %Ake'bk,|`P`C8A%p 484C0f fo}H8}o}&Y4p>ȑc}w" m&"SuTU$h٨o]e*qrKUҪ66f#88laz٦BrFI)uJf 8̽#?x~j Oq  0o\ G]"Qג}Ү}H1Ώݵ]ߌ7JUn¼&1MmNtS.'ԟ_$}+Iz&@Ҏ)?TwWby FyG8!ئ+8.?Mi)O-͊ ?\WWĭ ;eяb}Ue4$T! yiw=3"/?{ڔ=LU'G4^>,?o锜#4KћWbIsc2Q4cF&_c6%/7%GDUYKhUMgQQnC& _9=C\B,Yn{4bɤ* ¬z&ޯSiߊ$?Ki?C`,(EFOT=OѪ=؊}.OMXU}^+(>CQשݯA5>|X{wMFͲPnj.Z_g'C>ԸW+Cb˻GkCϵxWneЩx (>IdqF#YL#W7JZ0}ʻ  YAx;ICg{Fhsڢ}o͓jv?)DwcWW}-ʜj:lՊ1 SXL2Um#ssL8Nr۱ 3M9dNnrmU*?1%1ug8q97#rd2rrsmÛ1)?fw~&ZcXi yg-㝟Xiϫx;Gi\+tݹTb0Ҿ5='Qlaat]ǐǘqt<)RO`ll<===xvG8ivvc\枉Mlcc4;ߩEJ|],7( &IYZݳʹᳳ>-I adic+F P,?UŋU<hQY.YdfzX0fb8у̚5d٣7ٲ싚hAZ5CRUiS4/b/YWe8(qe4DpT%&J$F!U5S͘5H$cR83+{49hզڝۏRΉV(R{du %5R䢦KQUeLK$qIճbDRM=UM,wc= 1ppӂM%zC1M#2+ahHIE%HJdKbI:6i$)wlMVUQET(LeE˸2QFj?~gZŲD;nz<'Jm|ձgC mtSɥȄ.663o6EuQGó?aZjgX4&b@`A3t%`-N ct9f@ȼ {,= rUa*WAc@;(ي6] Re%KhӐNYɠb.Jeh s.z]1J[7{)]f5m%֮+9,[Wrb,%1XdV8@4is\-x[ æduңg 2ZTqc1N6M/v?O"%C¤~cQ5ٱUXbRj0Uzj=kR..ge˄ƣ ŏ_ɴ*EQfXu9%Gc ;*pO/%79>L0^6JLVFtpͰcc:0Q.Ϧof$IkkK-4*JUlvl ͝\>%1_m_JTR>Q)JlT%'}HSDX(RXG5%.*Ks!%0wؗ޻kDoy]8tḅj}Fř5"P(,j}UK&$J$%u\U((VU):nݒtSLӅ5[8&: ]EGF hV+>C8$n0Q)% ;la-JXN&2ZdpKx3y.,Дq-[S5LJ,oPӁR3Y{Td~4IUTTx+iU̙UEXǓ+0г1R< >:2m+$Oj'N3>F+U]ZJyJ4ag91)sc͗WpVK*"QW'UKnگE/U~%~'Ώ'_l>Lfɫ6S X>yٻ4dI)($d 2o76Qږ)zRfޖEiD8%YcỤw'. %F`J^rtUJJVT#g_4>i9VVScgkH(Jc 06.%B[ҔϵM{wt(|9kx„[I8Մ{1dL4`WsFE>tsV/sBi+2Vg]q`EXٹF7Z1h梨EY (<sF00m(~E#cGC8KKoV/fv*V)b㺌ĶzU#zjܻSs k3J5( 9b^_4AteI%e|Yb I%,&<!$~ qf4]qPBQDn3h]1Hɪr(4Qwvx$MP1#߬3K:QW+\;TqCHɳ{6Ճ08ƆL毇Z 2BJcR֙{ܖN4%3pj40?x3`̡Bi)Y$rJ2]нk/$s,t;'cԞ - #N} IV":&IHVT8^т*m``GE]犍|VT]zUۤ_Uhyh`\s`ɳvrfdV{9(sofË5߂2(5bG y>v]|%GFrb=56̃hLad z6Y̍#ppx]}j66Z+};ճzL_e0kiE`vRVqB%.۳eL 4il](G$,ɂRU}X1:VË~[KFiK/z]hrWnQG o`}˻rT~%Z0ꎼrnw-$5{tU%=Y.Vɏ{)E*;8y*lf읙6afZ8$a&x'4l't9F٧E`w= ptsF J87,JqUw,hϒ6oJ,ԻG{\Lⓛ:;JWϮbߏۓnn{ Ww<}bɞ\]m8.L{.Ւ:\,D៪ c;`KMN wDd"3ʦ)c饚WY୽I۷},bNV \lɽD _m5ً%C8.U჋Vݷ4tdw5aͦ'yUUD[f,GV8(JNTxT%+%ժREU8[{V xF%nf&[93L7͋eV]wF#-QGZ.U+dO1њ3q]sQ.(6nĪ4jbV#5c'xsaʰ-ٻ.%4[#&*Tʩ,8i;Csvf;y;[3cͶX9L;4F6ooqQJTV껸]]GF*ix' 6ui4I9?;CsfKd*+E5*ŹF-%%f4uxz1r4We}[ٱ1l޺J1Uֻ+]c,PX:urb'%Mf+2K%_Ss~,iؖ7hYں70  rsK"*,q>fDp)lvIA "ˢjKHPVTU- r]fW٣.nLRʷm\0U71h]л2Y֍d̓7{L7XGbѳTZQ63wq- 84Ssޣ6. ٬e]ԌOe"Db|jIF*6S̺ͅb3Ygc6n !v+>XIoJ|9z/Mlt!r> ^zegslT tYWޞZ.EDqQׂ dYl{s%eF.o+-uY˻[XOjcv6raN X5nĚUwDJVky 1]†n͛%n T{ц%r▛6RV#*9»gѽ uw sobWxpUi'͛z̮bݧ{%%x:zPRWx)f> ղ0Q{/GT_kȖ ?fIC#xR'hN1jfIDv(:Rcq-nK c#i bݻ+Y/Bƣdi2d]ٺJ6LMshS9%j`vv`brdlXعEMWv^8ag);^TفUom4Z7%YGjT2wc324G/էg,E(PI~K=l˰z9)'Dsuv<7vbm֬8[,a-,/\WтeOF&Jęe,\wVǭ5z` ɎtmNnYw~k;lPE~a_!]t>U[?{OcjWJ0dةGPDLhp(2\+Oupwp*/E$i4L1%!>6ٹoc ,eyJUVT1&?y0ZMUE; =m.h Osس&NkWjzZjމIgՉKlܳJKe]!!Cm|ȁ ͆qoQwv{[G_Zn?-u2y+-w?aIO +GJ %M_kٌ}X_e*_&Me[<]cʐE+B䨢UKQ͑dVi[SQ.p5luV[TTMln47CdL~=[1)?BTIqW&KgbJ$ӢihU$rL{,޼-Ye#.+eY'c,ق*Emś9_` #;/:^mFew(2saU\w WH |AfYӮo}͚4Ks{r^W< ]X3N-Kђb{`&Vဪ'a97)eI)Af cUJQUVt\E"]bI|,]#m*دtVx-ՙe%M,6W\`]xzս,8xF ٸoohJ^U+u#v| \FnNUhf䵈`ٛvʻYz9=*yvqxXY5Y. !+`YUxfgs6 خŶw]V,ʘCdh(+8bQd-ɒMVf:0w0MKK[1?r_HGًSU asYc?wXO>o5n$ST7ϗ7kܬ} 1䬭>iU]Opfzd(.LtLKWKQwo,֣qb.Jx~Nߤ^,rԪ$SVև,T>;GuJ<fW$ rBo`OSg{"?}V |;ybFP)@(?U'EDUG~ƏGqToыCS43(>WaȪO֋T|߰-~كQ%F[:^#OjYIq0$r\k.un,]آ0i;(a!-2(oW\T}\8+=S1vz37CɌ i5g' *644Yrn"b#{hM%jK%&8SuiL-8f@a 9&O qQc'Z%F,ɪnh͚KVF~)J %u`EYࢄ9 ,\{TlX\ `UbUrXn*aTXv&F Ub| %AIJ[- R} xRS$UcR6Y#Ź=[gv 㹉fU/`D $w95ZFZP%jI.?'/fkWUENJ= =iC%/R=I?1dH1eQޱنbU|`*J)TqWc ǧ|\t&yӾ[(!ᰳ>Vޜk9Զ|gkd#h좟 =ES'6,񊠇8]G- >)]>=f0NHGMSɫsķ :oj/ħ8lc,\&^J%> /M2%I&#M429șr)4G$e;o0lz?¯gG.qǢƎl`02y43喡F(FLI*]e)Ō&'Trkʊ ")4K6`,t=kV$bVhLކ SɃin+>,tVɤv}́tQv :9dh^$$2bɋ&LU)u55U`]rԬV檘M)3(]E:,љv)7+Hۭ/a1ti.FrٽHiO;>CTYIEx5ǹ0K0zl*(JX:R{cqх bca#+AITPުgGfǥa%U ɆjM)3V18%ul՛,$խa 0K4䷗bq:(ّgR(lDv#:,NW *\rޢDTҕJ#10t7x̔4-D8{)g%g~rd98CJE#hz0]4bd8ou0"7pRDd¼2[z8*&ֺ-]ĤTC_:8\v< 䙊{xƓxw/E^q YWZޗV(YY"iґ[EX7Z0E#bUJL,Y7t=-Ng6>.v;}XQVn~\z=]vS4=f٩HCp,hzdG$6%.Fh]ƍAdziH@ by/y qrceᙕycQ|k>_C͘oc`IReC&7~4tulc4*;?[L, >4WȐ.<1󩺒{_0}W oʓ[s޶?ulɮ#:uxne&<8USLOjWF846<ޭ1m|zGk⾅zUWv^v`|<'bZLR5(ikOEO|}x[-Uv:-Յ;DiLx>,ԉLQw55hrpҚ=yhs3<[ {YGT,*FMLov_';9-?ZK0!|t yEI _KUb%GLGAԎNGf̫q#+ЙO>=Lt!QY*L*0}_ae1ߩYh&4{`2`C@nv~P@lZf1C%/i%9MYTq1I-E?rgl|(^9cZ'V7k8S88djX? MAOI᳆&~ȗj.!edv4DDEW`b;?QNKG0(Fr>cbnxȓ$#dB% A h!SfPujRnZR7<܌^FlkddĽk|y;٨Z-Od-z(Uryt֜NlqݸN'Fȑl$bTI &n~{UQ)GX>ҚUS^R#NI't٣FlI+~¾jcdRV 1 xXcC`۹05zuj5\ٻfdhMܳLJ=[l%)CՁqB[a{S [>/^oDa9RQEeBGZmc~]V(Z%:In䰤:c!AXU?kdNJC4Br4.OzBT+>~qiSW]TR,*X"$ɤI5QS%Ubi,o韹_zQDr+_%.z1;-ƤE?>NLIB3뙬MOippal$ѓGI&5[d ,%*J%d6}8ٴlbNawkV,*w2&NQ ffDGg}6UJvEw$L sv!'w/XAURʨ&⾯ñ1Kƨnfn W8bF YBbԊE{{ đS[ ȃ KeTr`"KvRlI'v:EcfhWX<22D+щU{Q^nhžf+IJmbIXO!az<Q+ȊK6?,vǡX{`C8{cWc>VΛF'9%'.VH͹& JJ;9IӋ2Y1X4l-&E jJij+to}~>.:af쏣e ?(~ đV1ETO7tZѥ<`蔾Go03!:)RӦՕ*TlkoODw`Ue](z[P~<]1SM1j>F٥Ew֪#wkV 8%l+MxQ"#.rL}i㛉-rnML6&AWkz#qL❕_CAyЬ;3D"?7JY_(c~Qd+ Gƫs0v!}ch8?zRm|=]tܸ9AVCCmo[chWisЂV)6<N;xW]UUJUUUUUUUUUUVof?-;c1ެVO+ޢ#$z;=S< ۗ뒵rpdj;!Cz7њ zG0/².ӊ,V 9fcޤ~hg9l]^6BrӬs=@.OG&,O\w[.E '֑#죻*bTUHeR7jO?7록Qt4ń$ѐ>S>͞f4~bZa4LΘ=$9wrCdk&bjHUZ@ ƃF!0H}s4cBS|p%ճD̺JE)8֜Y޹Mu(`xع{KT?w?W?-5GfZ_>=}~W^3ssu?> t3ϻxNN]}WK? 9r (,AXU +C邧I~?J m߻-PW}Pkfz0*#Գ5KKƼ3ڧa9?F1 p?\rb9haf4告 1qQGSJ%h/ Ch 4Lr|W9d*-q_NWz?YhS>g.M*t*{/WUUsOMȩ &$=џ> 5E4LӮ7iՍ.ӢҺ*:dF)gv>4LPRa-{PhQD RM|y2VoЩ? &0dztS#}~8Ftޢ7|?v+7"7b4\ygX2GD>>~9ؒ߃׃I(i9.ș77?3ÑB[ԣ|*D(| ^{=4Ŏ{WDReR{_+bUczX2 Kç\f"3{RLI?3k/7/cFJ!';R"b^ǩVyeNivB[w(<Ңca̳˞{MI_(`E!.,l.qб7zhcgXlgܒu-kTabJ}`g>"#Wuɠ8T (?W+xֳ\w>=P}t@WE>lެX?v<+ѾÎZ oOkN*u %~+?aԞéSbd 4>ޢR0(%x;G-9e9  )E|)2]ux]%V:7 Jumڳ4dlv\b  6N=摒 |VkO[Fb6тDhë3C-70=~9<=(bw@l#̑3f$'WLm.IzM\`0~\?c ټrgAzIV|_5}\S?oqu7 ncϣϓ ke{-U-XbIxQ&#) k.os(xerʶk`\~WX|<nƼ}<ÞNS̆9}*9Y#V${1QU8P6rGi'W=$z졥Q:ݱ8!A@܎[QWf 26eƎR3J*(<R<7*R'MKsV̔i[3cm8X-j5 (bEb&O;CSqg 85[)~\ĮRPY-UIun,ɃHI&GWj7(h[*٣Ūܪ6JЖ+ CF 'K5ZucUE Qd^X0Id^ '{5N-Yw-DRؗUgu%T3fA[6đuz:8M}̎OW7-g cTdoG풻łbRbFN;80Q*Q,Ftܫ,͓ (ȪVKeTlQa:Y,ӹe6,%)uKe)[T8.ֺKZc*գ%Jʪ(%,NM"iZt0UM"i1, уzX%t֭*,K-`:PUgBUBMҶf˳6kσNVR+BTw4Qj6hɉ:2Q$g5GMUx:QBXyUDSg:LohdYk%eEL]eWd3i]9MKI]L蔥)sfZoUTꨫv}'*if-ZQ~:%x (ծI,)uJ(bfɛ'̙QZn`{fN S{&XrXWbDPl_Ex1!g%-/ II2"b>g, 1t,~jT:w`n14v*]U`GK5[U-<$ԣz( fLY/nҌ7 0?ADAZ%QBLbVU1Vm)]2ydpgfDdಮ*Z2BTb"m2EۖdY%I`REnVOBX3%d+& #g+.W ڽݸY. #$,>h6,{=;, ֈ3xP!2dIN5|s+vvAqoP*\#'G&J=idTjɪ^wZ6(ܣ& ,K8EҔF fҕρi+u[{{f+2Q\[^H41 ɍ:6,#l<5MӭJ]0G2Wb3Qvr\-Y%uku8JlxrѿIU4 [0zӃUg˄#+LaosH6 rᏭ0An6I]lfM=J?xS;x!hJe)Ekv }UqQ曵8Ǧ?0P]3gH+[bO>^o IhbajE-F,;]<]'i^M>Mϲ=27x|54TdFRl4'm&97C9pi<{De|!ZmȒ֚MY#mq͉4K!I6!7.'XH|vEMϷmIZm7e0Ljzɳ[ollgFlolnI4cbOSgnxoՎX]ۑvEN0z,,nof&ŞnܙS{$MyP'ͤz,TR$Ml6IFm ܤViE"=xʟc%#O?QWTZgS."f1!|}I_F+#<*ゑL4qWDJ][PʼnQ<'U5?!*=)*#?JOHX` x8]Ė/)jHa\=OS(z{5>T]`8%13$QWkz:|Cx&=/S\PGV/ߝ^>Xі,L0t1Mu{M7hpz|< `mNs=8 h I79 %E;_:u3!Gq8+P%QX8e`\4(Cs_T ; c|BDԓU(yzRG|ݐPHRT[6?i4DL*DRBI3wcV<&udYRN)C"dh R"DaL!G" t bb=aȯTv2o,fieXoŘG!چ{ oB!ٮbY0z .Q(< Co&݇XQŋ*k3<EYk%,XcGqd?(wBD揑ΏsWy(6mCΆp $GM0A>MT=؟ xP(.O؉_sa*)*=9;xÙyp4BsncO1??|ǡ#'QI܍N|LIq0芏7H1}G@^Cz ̀RA)q ۽(%3 ,dDMYy\w.kwa1j?%1w*'R_dLP֘9abb6n?anx:1S\!AW+SJC0|cbn_w [2t]5 ui\M mbbG/HM{c! MpWFhl#Pn,8-%-/\| PA`A>+lb1Fcd?B>֞5; %&:EXKTrƌbUcLc]5uUJSQ%hՄٮT[Jڕda4xT?iTظNF+ATO~/wA0ĜaC<1FnޔP }1GeƄ&`΍}?@{vx8ŵܤeP #@F28ßQIzE+LߥŊ2)6Oh/~GhXGb(?'h_xY^I+G3GGCQ.0$w?"X4O|i,AXኘOcdMYɥ8$}Y'T\uTJTq2 !ʧ8b7N݊%keI6ʲ'EXs}]RS@IyX3̤97qԥY31?n_XLL7-enY0|Us&W8؛=:KtL 'ԤBA?X%hoH䭼[&KSL6,+M~a|"1~XӠFf`Vp動QE(7(C o;d4{?&t{J|*dTl9oiYWȸ9ha@I.dZ $HUzIַ(J! rl29ȳ/]BO LD 0fV5*il>ɻ$?Ѣ (f(*!StvK؇_o fQZ$NLN3[C'ꪪVrg~O[V5Y>1nU4lRM2?J%\6IVI m&6ٴBhCM13;"$Q_i| p38-!brj'Ud!|g)kf) /fdfTt?@|ᣵٍ65~v͘,sЧy hDJX쥢nٹAc as Onƈ QKĢս5 48,]"Cwaf%9ve[;m1ɻMOKa; &I>F%{8o1nE \ݏN!L!{{>/r~ 9L=a-yQ8rW((,lkM6V?O?T,VzD^,&ϩDub>s>|;?:DW0Ӊ=?yaw"/`Lec֤l8!GX!_t(KB^b;=e>^6+6ҝUǺ>=ܝe$HhhOk6Lp+IXCj|2k`r,.!5(-+=G/';7o'޴/34Џb zS08Fc{[Xo4fĤk{nſcw8rs/KMk;ټclFN.IL)RڲbTWzATui>PiT۰N;7):S dT"Y(NPUb g!3)(+(tEX/~~e7W.2dՉ?eb!hD}#J;#l$Ilùɇ?qo8:9iOXRQs*.hNŅqagK ~)|ߣҩEu7h#TGӒ}-W?LϦPYsd=%TL1MxwyG<&šq9)ň |_W# ;MLXs"֎&Bs3;:r}{9 -قF' *OQ.HND>iGrC,b5{I׈REcAZ`&H`O!2Jw#`t?Qܗ`}>2 YB"D]K`Z49:N-ct\6S4pLw)ؐfh=|fϼڽ#5p<0GDwgCיj)CD9f hy=0ׁ_:d\BPKml=[?"nѼ1:a'w+iJ6}>1f1c1c#(Oqi;.Ϡ,ZH8li[ 2 c5пg_T-;sErCɏC#2W&h G:U%Itb{ 918B"!Ȫooe (WCEG}}ix2y+ԙ1ftJ7.rJL rVq*^5!')Zq:w7,g?&^[L܂Irm" a &nF! qmc=}APwÿ`!+8wB9 ]v(,c}"88}%|S^RFAetncՊc<\\ak6tjv#iѣMVtܰBuꊞ()=iꊒq0d`D'W'! yGw>Wɉ$1_<[''Xl~hGWO઩bD xSj]cp|Xba|𛔥8G]O !.4*>-;2sU&2=47kcЪcx)>)rU)ᢖ>92߼x-@4IhjRr;P_1u}G֙tCL0Um8|I2T4eV Wј! y8;DrDن,?+kQ*3,Bti;pj0444Qk#~ 'kI1Izr EJR]Hbu=hi;Ǽz۝F|Uwum}(Ҧ%$|c4~UUQ(Hi!8ֻ؇%>kgΛdϜJ֋?Tsqy3-Eo7n; g޹xDŽҬ+ O&Ը# ׈|蛈>n]ֈjذj~;Ch7k68:(:8z=p5ux7?8h t PS<A}IPcDnbP+&_9SD{O }ޓ})A*  Q["CR鴰Ba}onATH~^J> b° ,SM1_d`[a_Ȧ4U?ZZ-H&Dsz岟boݒ*YqJZƙW|#za[53;/{^jhqOw3M2fhoܙ#{xp6tѳ妧bV"XvIJi,hT}:맣FgXJ?zR񌣎 ЪQ)Osѩsfr$JIS 8c#(Q+g"i} Sıh489w: c ؈zr= pߧz < CPF%P/3*!A8' +?-LDlJ,J`%/ܢ*2hUCC"%KJ>]紊*IthGd]tDCv_G!llDlur.{!ԠC'd aQuDB 5[Nm2Z,(aүf2cMwxp6%6[lbS"YV9fLo?-`IZ{࢑B N Q8繧q.[9 UQRDlȢ9Gi+S/#~:0#Wbj<