summaryrefslogtreecommitdiffstats
path: root/move/move.pm
blob: 51ad2b953d69ed971fd3ec7d1c74ceb8c00635a5 (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
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
package move; # $Id$ $

#- Copyright (c) 2003 MandrakeSoft
#-
#- This program is free software; you can redistribute it and/or modify
#- it under the terms of the GNU General Public License as published by
#- the Free Software Foundation; either version 2, or (at your option)
#- any later version.
#-
#- This program is distributed in the hope that it will be useful,
#- but WITHOUT ANY WARRANTY; without even the implied warranty of
#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#- GNU General Public License for more details.
#-
#- You should have received a copy of the GNU General Public License
#- along with this program; if not, write to the Free Software
#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

use diagnostics;
use strict;

use modules;
use common;
use fs;
use fsedit;
use run_program;
use partition_table qw(:types);
use swap;
use log;
use lang;
use Digest::MD5 qw(md5_hex);

my @ALLOWED_LANGS = qw(en_US fr es it de nl);
my $key_disabled;

my ($using_existing_user_config, $using_existing_host_config);
my $key_sysconf = '/home/.sysconf';
my $virtual_key_part;
my $key_mountopts = 'umask=077,uid=501,gid=501,shortname=mixed,nobadchars';

sub symlinkf_short {
    my ($dest, $file) = @_;
    if (my $l = readlink $dest) {
	$dest = $l if $l =~ m!^/!;
    }
    -d $file and log::l("$file already exists and is a directory! writing in directory may be needed, not overwriting"), return;
    symlinkf($dest, $file);
}

sub handle_etcfiles {
    my (@allowed_modes) = @_;
    #- non-trivial files listed from tools/scan-etc.pl
    foreach (chomp_(cat_('/image/move/etcfiles'))) {
        my $mode if 0;
        m|^# (\S+)| and $mode = $1;
        m|^/| && member($mode, @allowed_modes) and do {
            $mode eq 'READ' && !-e $_ and symlinkf_short("/image$_", $_);
            if ($mode eq 'OVERWRITE') {
                mkdir_p(dirname($_));
                run_program::run('cp', "/image$_", $_);  #- need copy contents
            }
            $mode eq 'DIR' and mkdir_p $_;
        }
    }

}

sub handle_virtual_key {
    return if $key_disabled;
    if (my ($device, $file, $options) = cat_('/proc/cmdline') =~ /\bvirtual_key=([^,\s]+),([^,\s]+)(,\S+)?/) {
        log::l("using device=$device file=$file as a virtual key with options $options");
        my $dir = '/virtual_key_mount';
        mkdir $dir;
        run_program::run('mount', $device, $dir);
        $options =~ /format/ and run_program::run('mkdosfs', "$dir$file");
        require devices;
        my $loop = devices::find_free_loop();
        run_program::run('losetup', $loop, "$dir$file");
        run_program::run('mount', $loop, '/home', '-o', $key_mountopts);
	$virtual_key_part = { device => $loop, mntpoint => '/home', type => 0xc, isMounted => 1 };
    }
}

sub setup_userconf {
    my ($o) = @_;
    if (!@{$o->{users}} && `getent passwd 501` =~ /([^:]+):/) {
        log::l("passwd/501 is $1");
        $o->{users} = [ { name => $1 } ];
	$ENV{HOME} = "/home/$1"; #- used by lang::read()  :-/
        print "using existing user configuration\n";
        $using_existing_user_config = 1;
    }
}

#- run very soon at stage2 start, setup things on tmpfs rw / that
#- were not necessary to start stage2 itself (there were setup
#- by stage1 of course)
sub init {
    my ($o) = @_;

    $::testing and goto drakx_stuff;

    #- rw things
    mkdir "/$_" foreach qw(home mnt root root/tmp etc var);

    mkdir "/etc/$_" foreach qw(X11);
    touch '/etc/modules.conf';
    symlinkf "/proc/mounts", "/etc/mtab";

    #- these files need be writable but we need a sensible first contents
    run_program::run('cp', "/image/etc/$_", '/etc') foreach qw(passwd passwd- group sudoers fstab);

    #- these files are typically opened in read-write mode, we need them copied
    mkdir_p("/etc/$_"), run_program::run('cp', '-R', glob_("/image/etc/$_/*"), "/etc/$_")
      foreach qw(cups profile.d sysconfig devfs/conf.d);

    #- directories we badly need as non-links because files will be written in
    handle_etcfiles('DIR');
 
    #- for /etc/sysconfig/networking/ifcfg-lo
    mkdir "/etc/sysconfig/networking";

    #- ro things
    symlinkf_short("/image/etc/$_", "/etc/$_")
      foreach qw(alternatives man.config services shells pam.d security inputrc ld.so.conf 
                 DIR_COLORS bashrc profile init.d devfsd.conf gtk-2.0 pango fonts modules.devfs 
                 dynamic hotplug gnome-vfs-2.0 gnome-vfs-mime-magic gtk gconf menu menu-methods nsswitch.conf default login.defs 
                 skel ld.so.cache openoffice xinetd.d xinetd.conf syslog.conf sysctl.conf sysconfig/networking/ifcfg-lo
                 ifplugd);
    symlinkf_short("/image/etc/X11/$_", "/etc/X11/$_")
      foreach qw(encodings.dir app-defaults applnk fs lbxproxy proxymngr rstart wmsession.d xinit xkb xserver xsm);
    symlinkf_short("/image/root/$_", "/root/$_") foreach qw(.bashrc);

    mkdir_p(dirname("/var/$_")), symlinkf_short("/image/var/$_", "/var/$_") foreach qw(lib/samba lib/rpm cache/gstreamer-0.6);

    #- non-trivial files/directories that need be readable, files that will be overwritten
    handle_etcfiles('READ', 'OVERWRITE');

    #- create remaining /etc and /var subdirectories if not already copied or symlinked,
    #- because programs most often won't try to create the missing subdir before trying
    #- to write a file, leading to obscure unexpected failures
    -d $_ or mkdir_p $_ foreach chomp_(cat_('/image/move/directories-to-create'));

    chmod 01777, '/tmp', '/var/tmp';  #- /var/tmp -> badly needed for printing from OOo

    #- remaining non existent /etc files are symlinked from the RO volume,
    #- better to have them RO than non existent.
    #- PB: problems arise when programs try to open then in O_WRONLY
    #- or O_RDWR -> in that case, they should be handled in the
    #- OVERWRITE section of data/etcfiles)
    foreach (chomp_(cat_('/image/move/all-etcfiles'))) {
        -f or symlinkf_short("/image$_", $_);
    }

    #- free up stage1 memory
    eval { fs::umount('/stage1/proc/bus/usb') };
    fs::umount($_) foreach qw(/stage1/proc /stage1);

    #- devfsd needed for devices accessed by old names
    fs::mount("none", "/dev", "devfs", 0);
    run_program::run('/sbin/devfsd', '/dev');

    -d '/lib/modules/' . c::kernel_version() or warn("ERROR: kernel package " . c::kernel_version() . " not installed\n"), c::_exit(1);

    $key_disabled = !-e '/cdrom/live_tree_nvidia.clp' && cat_('/proc/mounts') !~ /nfs/;

    run_program::run('/sbin/service', 'syslog', 'start');
    run_program::run('sysctl', '-w', 'kernel.hotplug="/bin/true"');
    modules::load_category('bus/usb'); 
    eval { modules::load('usb-storage', 'sd_mod') };
    handle_virtual_key();
    $o->{pcmcia} ||= !$::noauto && c::pcmcia_probe();
    install_steps::setupSCSI($o);
    run_program::run('sysctl', '-w', 'kernel.hotplug="/sbin/hotplug"');

    key_mount($o);
    cat_('/proc/cmdline') =~ /\bcleankey\b/ and eval { rm_rf $key_sysconf, glob_('/home/.mdkmove*') };
    key_installfiles('simple');
    setup_userconf($o);
    if (-f '/etc/X11/X') {
        print "using existing host configuration\n";
        $using_existing_host_config = 1;
    }
    if (-s '/etc/sysconfig/i18n') {
        lang::set($o->{locale} = lang::read('', 0)); #- read ~/.i18n first if it exists
	install2::handleI18NClp();
    }

    touch '/var/run/rebootctl';

drakx_stuff:
    $o->{steps}{$_} = { reachable => 1, text => $_ }
      foreach qw(initGraphical autoSelectLanguage handleI18NClp verifyKey configMove startMove);
    $o->{orderedSteps_orig} = $o->{orderedSteps};
    $o->{orderedSteps} = [ $using_existing_host_config ?
                           qw(initGraphical verifyKey startMove)
                         : $using_existing_user_config ?
                           qw(initGraphical autoSelectLanguage verifyKey selectMouse selectKeyboard configMove startMove)
                         : qw(initGraphical selectLanguage handleI18NClp acceptLicense verifyKey selectMouse selectKeyboard configMove startMove) ];
    $o->{steps}{first} = $o->{orderedSteps}[0];

    #- don't use shadow passwords since pwconv overwrites /etc/shadow hence contents will be lost for usb key
    delete $o->{authentication}{shadow};

    member($_, @ALLOWED_LANGS) or delete $lang::langs{$_} foreach keys %lang::langs;
}

sub lomount_clp {
    my ($name, $needed_file) = @_;
    my ($clp, $dir) = ("/cdrom/live_tree_$name.clp", "/image_$name");

    -e "$dir$needed_file" and return;

    if (! -e $clp || cat_('/proc/cmdline') =~ /\blive\b/) {
	symlink "/cdrom/live_tree_$name", $dir;
	return;
    }

    log::l("lomount_clp: lomounting $name");

    mkdir_p($dir);
    my $dev = devices::find_free_chloop();
    run_program::run('losetup', '-r', '-e', 'gz', $dev, $clp);
    run_program::run('mount', '-r', $dev, $dir);
}

sub install2::autoSelectLanguage {
    my $o = $::o;

    install_steps::selectLanguage($o);
}

sub install2::handleI18NClp {
    my $o = $::o;

    lomount_clp("always_i18n_$o->{locale}{lang}", '/usr');
}

sub key_parts {
    my ($o) = @_;

    return () if $key_disabled;

    my @keys = grep { detect_devices::isKeyUsb($_) } @{$o->{all_hds}{hds}};
    map_index { 
	$_->{mntpoint} = $::i ? "/mnt/key$::i" : '/home';
	$_->{options} = $key_mountopts;
        $_;
    } (fsedit::get_fstab(@keys), grep { detect_devices::isKeyUsb($_) } @{$o->{all_hds}{raw_hds}});
}
    
sub key_mount {
    my ($o, $o_reread) = @_;

    if ($o_reread) {
        $o->{all_hds} = fsedit::empty_all_hds();
        install_any::getHds($o, $o);
    }
    if ($virtual_key_part) {
        #- :/ merge_from_mtab didn't got my virtual key, need to add it manually
        push @{$o->{fstab}}, $virtual_key_part;
    }

    require fs;
    eval { fs::mount_part($_) } foreach key_parts($o);
}

sub key_umount {
    my ($o) = @_;
    eval { fs::umount_part($_) foreach key_parts($o); 1 };
}

sub machine_ident {
    #- , c::get_hw_address('eth0');       before detect of network :(
    md5_hex(join '', (map { (split)[1] } cat_('/proc/bus/pci/devices')));
}

sub key_installfiles {
    my ($mode) = @_;

    my $done if 0;
    $done and return;

    mkdir $key_sysconf;
    my $sysconf = "$key_sysconf/" . machine_ident();

    my $copy_userinfo = sub {
        my (@files) = @_;
        my @etcpasswords = glob("$key_sysconf/*/etc/passwd");
        if (@etcpasswords > 1) {
            print "inconsistency: more than one /etc/passwd on key! can't proceed, please clean the key\n";
            exit 1;
        }
        return if !@etcpasswords;
        my ($path) = $etcpasswords[0] =~ m|(.*)/etc/passwd|;
        run_program::run('cp', '-f', "$path$_", $_) foreach @files;
        run_program::run('rm', '-f', $etcpasswords[0]);
    };

    if (!-d $sysconf) {
        if ($mode eq 'full') {
            log::l("key_installfiles: installing config files in $sysconf");
            mkdir $sysconf;
            foreach (chomp_(cat_('/image/move/keyfiles'))) {
                my $target_dir = $sysconf . dirname($_);
                mkdir_p($target_dir);
                if (/\*$/) {
                    run_program::run('cp', glob_($_), $target_dir);
                    symlinkf("$sysconf$_", $_) foreach glob($_);
                } else {
                    run_program::run('cp', $_, "$sysconf$_");
                    symlinkf("$sysconf$_", $_);
                }
            }
            run_program::run('cp', '/image/move/README.adding.more.files', $key_sysconf);
            $done = 1;
        } else {
            #- not in full mode and no host directory, grab user config from first existing host directory if possible
            log::l("key_installfiles: only looking for user config files");
            $copy_userinfo->(qw(/etc/passwd /etc/group /etc/sysconfig/i18n));
        }
    } else {
        log::l("key_installfiles: installing symlinks to key");
        if (!-e "$sysconf/etc/passwd") {
            log::l("key_installfiles: /etc/passwd not here, trying to copy from previous host boot");
            $copy_userinfo->(qw(/etc/passwd /etc/group));
        }
        foreach (chomp_(`find $sysconf -type f`)) {
            my ($path) = /^\Q$sysconf\E(.*)/;
            mkdir_p(dirname($path));
            symlinkf($_, $path);
        }
        $done = 1;
        $::o->{steps}{configMove}{done} = 1;
    }

    #- /etc/sudoers can't be a link
    unlink($_), run_program::run('cp', "/image$_", $_) foreach qw(/etc/sudoers);
}

sub reboot {
    output('/var/run/rebootctl', "reboot");  #- tell X_move to not respawn
    run_program::run('killall', 'X');  #- kill it ourselves to be sure that it won't lock console when killed by our init
    exit 0;
}

sub install2::verifyKey {
    my ($o) = $::o;

    log::l("automatic transparent key support is disabled"), return if $key_disabled;

    while (cat_('/proc/mounts') !~ m|\s/home\s|) {

	my $message = key_parts($o) ? 
N("Your USB key doesn't have any valid Windows (FAT) partitions.
We need one to continue (beside, it's more standard so that you
will be able to move and access your files from machines
running Windows). Please plug in an USB key containing a
Windows partition instead.


You may also proceed without an USB key - you'll still be
able to use Mandrake Move as a normal live Mandrake
Operating System.") :
N("We didn't detect any USB key on your system. If you
plug in an USB key now, Mandrake Move will have the ability
to transparently save the data in your home directory and
system wide configuration, for next boot on this computer
or another one. Note: if you plug in a key now, wait several
seconds before detecting again.


You may also proceed without an USB key - you'll still be
able to use Mandrake Move as a normal live Mandrake
Operating System.");
        $o->ask_okcancel_({ title => N("Need a key to save your data"), 
                            messages => formatAlaTeX($message),
                            ok => N("Detect USB key again"),
                            cancel => N("Continue without USB key") }) or return;

        key_mount($o, 'reread');
    }

    local *F;
    while (!open F, '>/home/.touched') {

        if (!key_umount($o)) {
            #- this case happens when the user boots with a write-protected key containing
            #- all user and host data, /etc/X11/X which is on key busyfies it
            $o->ask_okcancel_({ title => N("Key isn't writable"), 
                                messages => formatAlaTeX(
N("The USB key seems to have write protection enabled, but we can't safely
unplug it now.


Click the button to reboot the machine, unplug it, remove write protection,
plug the key again, and launch Mandrake Move again.")),
                            ok => N("Reboot") });
            reboot();
        }

        modules::unload('usb-storage');  #- it won't notice change on write protection otherwise :/

        $o->ask_okcancel_({ title => N("Key isn't writable"), 
                            messages => formatAlaTeX(
N("The USB key seems to have write protection enabled. Please
unplug it, remove write protection, and then plug it again.")),
                            ok => N("Retry"),
                            cancel => N("Continue without USB key") }) or return;

        modules::load('usb-storage');
        sleep 2;
        key_mount($o, 'reread');
    }
    close F;
    unlink '/home/.touched';

    my $wait = $using_existing_host_config
               || $o->wait_message(N("Setting up USB key"), N("Please wait, setting up system configuration files on USB key..."));
    key_installfiles('full');

    setup_userconf($o);
}

sub enable_service {
    run_program::run('/sbin/chkconfig', '--level', 5, $_[0], 'on');
}

sub install2::configMove {
    my $o = $::o;

    #- just in case
    lomount_clp("always_i18n_$o->{locale}{lang}", '/usr');

    if (!$using_existing_user_config) {
        if (cat_('/proc/cmdline') =~ /\buser=(\w+)/) {
            $o->{users} = [ { name => $1 } ];
        } else {
            require any;
            any::ask_user_one($o, $o->{users} ||= [], $o->{security},
                              additional_msg => N("Enter your user information, password will be used for screensaver"), noaccept => 1, needauser => 1, noicons => 1);
        }
        #- force uid/gid to 501 as it was used when mounting key, addUser may choose 502 when key already holds user data
        put_in_hash($o->{users}[0], { uid => 501, gid => 501 });
        require install_steps;
        install_steps::addUser($o);
    }

    $::noauto and goto after_autoconf;

    my $wait = $o->wait_message(N("Auto configuration"), N("Please wait, detecting and configuring devices..."));

    #- automatic printer, timezone, network configs
    require install_steps_interactive;
    if (cat_('/proc/mounts') !~ /nfs/) {
        install_steps_interactive::configureNetwork($o);
        enable_service('network');
    }
    install_steps_interactive::summaryBefore($o);

    modules::load_category('multimedia/sound');
    enable_service('sound');

    detect_devices::isLaptop() or enable_service('numlock');

after_autoconf:
    require timezone;
    timezone::write($o->{prefix}, $o->{timezone});

    $o->{useSupermount} = 1;
    fs::set_removable_mntpoints($o->{all_hds});    
    fs::set_all_default_options($o->{all_hds}, %$o, lang::fs_options($o->{locale}));

    require install_any;
    install_any::write_fstab($o);

    modules::write_conf('');
    require mouse;
    mouse::write_conf($o, $o->{mouse}, 1);  #- write xfree mouse conf
    detect_devices::install_addons('');

    {
	my $user = $o->{users}[0]{name};
	my $confdir = "/home/$user/.kde/share/config";
	mkdir_p($confdir);
	output("$confdir/kdeglobals", cat_("/usr/share/config/kdeglobals"));
	lang::configure_kdeglobals($o->{locale}, $confdir);

        run_program::run('chown', '-R', "$user.$user", "/home/$user/.kde");
    }

    foreach my $step (@{$o->{orderedSteps_orig}}) {
        next if member($step, @{$o->{orderedSteps}});
        while (my $f = shift @{$o->{steps}{$step}{toBeDone} || []}) {
            log::l("doing remaining toBeDone for undone step $step");
            eval { &$f() };
            $o->ask_warn(N("Error"), [
N("An error occurred, but I don't know how to handle it nicely.
Continue at your own risk."), formatError($@) ]) if $@;
        }
    }
}

sub install_TrueFS_in_home {
    my ($o) = @_;

    require fsedit;
    my $home = fsedit::mntpoint2part('/home', $o->{fstab}) or return;

    my %loopbacks = map {
	my $part = { 
		type => 0x83, 
		device => "/home/.mdkmove-$_",
	        loopback_file => "/.mdkmove-$_", loopback_device => $home,
		mntpoint => "/home/$_/.mdkmove-truefs", size => 6 << 11,
		toFormat => ! -e "/home/.mdkmove-$_",
	};
	$_ => $part;
    } list_users();
    $home->{loopback} = [ values %loopbacks ];
    fsedit::recompute_loopbacks($o->{all_hds});
    fs::formatMount_all([], $home->{loopback}, $o->{prefix});

    foreach my $user (keys %loopbacks) {
	my $dir = $loopbacks{$user}{mntpoint};

	foreach (qw(.kde .openoffice)) {
	    if (-d "/home/$user/$_" && ! -d "$dir/$_") {
		run_program::run('mv', "/home/$user/$_", "$dir/$_");
	    }
	    mkdir $_ foreach "/home/$user/$_", "$dir/$_";

	    run_program::run('mount', '-o', 'bind', "$dir/$_", "/home/$user/$_");
	}

	my $cache = "/tmp/.$user-cache";
	foreach (qw(.kde/share/cache)) {
	    mkdir_p("$cache/$_");
	    mkdir_p("/home/$user/" . dirname($_));
	    symlink "$cache/$_", "/home/$user/$_";
	}
        run_program::run('chown', '-R', "$user.$user", $dir);
        run_program::run('chown', '-R', "$user.$user", $cache);

	$ENV{XAUTHORITY} = "$dir/.Xauthority";
	$ENV{ICEAUTHORITY} = "$dir/.ICEauthority";
    }
}

sub errorInStep {
    my ($o, $err) = @_;

    if (!fsedit::mntpoint2part('/home', $o->{fstab})) {
        $o->ask_warn(N("Error"), [ N("An error occurred"), formatError($err) ]);
        return;
    }

    $o->ask_okcancel_({ title => N("Error"), 
                        messages => formatAlaTeX(
N("An error occurred:


%s

This may come from corrupted system configuration files
on the USB key, in this case removing them and then
rebooting Mandrake Move would fix the problem. To do
so, click on the corresponding button.


You may also want to reboot and remove the USB key, or
examine its contents under another OS, or even have
a look at log files in console #3 and #4 to try to
guess what's happening.", formatError($err))),
                            ok => N("Remove system config files"),
                            cancel => N("Simply reboot") }) or goto reboot;
    eval { rm_rf $key_sysconf };
reboot:
    reboot();
}

sub install2::initGraphical {
    my $xdim = $::rootwidth;
    $xdim < 800 and $xdim = 800;
    $xdim > 1600 and $xdim = 1600;
    run_program::run('qiv', '--root', "/image/move/BOOT-$xdim-MOVE.jpg");
    
    *install_steps_interactive::errorInStep = \&errorInStep;
}

sub install2::startMove {
    my $o = $::o;

    $::WizardWindow->destroy if $::WizardWindow;
    require ugtk2;
    ugtk2::flush();

    #- get info from existing fstab. This won't do anything if we already wrote fstab in configMove
    fs::get_info_from_fstab($o->{all_hds}, '');
    foreach (fsedit::get_really_all_fstab($o->{all_hds})) {
	if (isSwap($_)) {
	    eval { swap::swapon($_->{device}) };
	} elsif ($_->{mntpoint} && !$_->{isMounted} && !$::noauto) {
	    mkdir_p($_->{mntpoint});
	    run_program::run('mount', $_->{mntpoint});
	}
    }

    symlinkf("/usr/share/services/ksycoca-$o->{locale}{lang}", '/etc/X11/ksycoca');
    
    install_TrueFS_in_home($o);

    my $username = $o->{users}[0]{name};
    output('/var/run/console.lock', $username);
    output("/var/run/console/$username", 1);
    run_program::run('pam_console_apply');

    run_program::run('chown', "$username.root", '/var/run/rebootctl');

    touch '/var/run/utmp';
    run_program::run('runlevel_set', '5');
    member($_, qw(xfs dm devfsd syslog)) or run_program::run($_, 'start') foreach glob('/etc/rc.d/rc5.d/*');

    #- allow user customisation of startup through /etc/rc.d/rc.local
    run_program::run('/etc/rc.d/rc.local');

    if (cat_('/proc/mounts') =~ m|\s/home\s|) {
        output '/var/lib/machine_ident', machine_ident();
        run_program::run('/usr/bin/etc-monitorer.pl', uniq map { dirname($_) } (chomp_(`find /etc -type f`),
                                                                                grep { readlink !~ m|^/| } chomp_(`find /etc -type l`)));
        run_program::raw({ detach => 1 }, '/usr/bin/dnotify', '-MCRD', '/etc', '-r', '-e', '/usr/bin/etc-monitorer.pl', '{}') or die "dnotify not found!";
    }

    #- password in screensaver doesn't make sense if we keep the shell
    if (cat_('/proc/cmdline') !~ /\bshell\b/) {
        kill 9, cat_('/var/run/drakx_shell.pid');
        output('/dev/tty2', "Killed\n");
    }

    if (fork()) {
	sleep 1;
        log::l("DrakX waves bye-bye");

        open STDOUT, ">/dev/tty10";  #- don't display startkde shit on first console
        open STDERR, ">/dev/tty10";
        
	my (undef, undef, $uid, $gid, undef, undef, undef, $home, $shell) = getpwnam($username);
	$( = $) = "$gid $gid";
	$< = $> = $uid;
	$ENV{LOGNAME} = $ENV{USER} = $username;
	$ENV{HOME} = $home;
	$ENV{SHELL} = $shell;
        $ENV{XDM_MANAGED} = '/var/run/rebootctl,maysd,mayfn,sched';  #- for reboot/halt availability of "logout" by kde
        $ENV{GDMSESSION} = 1;  #- disable ~/.xsession-errors in Xsession (waste of usb key writes)
        chdir;
	exec '/etc/X11/Xsession', 'KDE';  #- call it with KDE parameter to keep background
    } else {
	exec 'xwait', '-permanent' or c::_exit(0);
    }
}

sub automatic_xconf {
    my ($o) = @_;

    if (!$using_existing_host_config) {
    
	log::l('automatic XFree configuration');
        
	any::devfssymlinkf($o->{mouse}, 'mouse');
	local $o->{mouse}{device} = 'mouse';

	require Xconfig::default;
	$o->{raw_X} = Xconfig::default::configure({ KEYBOARD => 'uk' }, $o->{mouse}); #- using uk instead of us for now to have less warnings
    
	require Xconfig::main;
	require class_discard;
	Xconfig::main::configure_everything_auto_install($o->{raw_X}, class_discard->new, {},
                                                         { allowNVIDIA_rpms => [], allowATI_rpms => [], allowFB => $o->{allowFB} });
    
	my $card = Xconfig::card::from_raw_X($o->{raw_X});
    }

    my ($Driver) = cat_('/etc/X11/XF86Config-4') =~ /Section "Device".*Driver\s*"(.*?)"/s;
    if ($Driver eq 'nvidia') {
        modules::load('nvidia');
	lomount_clp('nvidia', '/usr/lib/libGLcore.so.1');
    }
    my $lib = 'libGL.so.1';
    symlinkf("/usr/lib/$lib.$Driver", "/etc/X11/$lib") if -e "/usr/lib/$lib.$Driver";
}


1;
F@)NKs,C.:R^CΤ=vMpx<C` `{qDo"\F,zhRF HVWZEk  icRU*ك#,kД6tNEѩO!6U:#Xv.u0ltO%>؋ukR(4RJ$ !2ߏ7zi$!2s;|\"1 hR'` N?vjsP r.e,Qj|kPL{pZ!o5tVPv0&zMW>ݩC6>VLWue&k! جx݊ {X%%)B #KtGwz%Bu v{}(A. -no#jHC-@v86H+`X珣pr[P($8t9=ΐCeL8ҬzǒxqÕ @H@+ $ lrm8 AGNcMn uPxJDPN80@^^^zRPCwY gn CR\BS"Ud)6 *qiB9"K (CR(H 5DNO ~F$IQHB$j $bII*fe"H WS58!!0B@7:^0WW.  Fep`*\uzY "'zn8!sD$ъɚdmsQ܄?xMȑs\|yM OG#`hTx3";w_p{^_^$p1ˌMe,gwO לoe=7eOJAU) _8R邱E?oQk)R@lը<*0Nϒ!P8tRF g=?6Fo5 hju_ aiz<7D!ZH\ _Lߏ81Ж7!ӯs/FTЏOo!!eSDRfbU5M<0^) ?k.yRlxB,ՃOfy3[{ޖN3gF` ġ$`iO"<}4ͅ;`>Jp*`) !KeAB{#(n PV*+|T)Ee!O@JE,QWTR?zR??g! i~_׿ֵp75v2ҿU3p$SQüA``iGrhW@GTז#?~V25^1N\|'f"7'COпsv "}~2okۏ7r!Ł\5D_a W;l7g!6A?Od%c۔?/V=;EWg,l3[6Q({⩆p2y*LhRt ey+OPN.Føhr`Waj6,K#YP ׉L ϰKo[9\6)( b4likƌm0 $ } &O5ZPגhg !{z8$8!ݍ Z%WÀX`.lXFĥ pOIDňQrT{9q@zcKYbr HP5*z,+Jhrpe`b5kc) *8i #cBZG#Ë*H :* ȧ`tfp:t2W%S{b 0avx;2(NnuϿ!%QK!TGz6BdC, ,=瑥)׊ &+lP+5 *aBN Kyz ɻ|g95QtVJXD=1$8f:o`sϨРN0Џ4 M@C{߷g#a&&h.2!vJ>98) qpC7quI&ߎSesHie0&:dY8=kj ݆SS[5(6j5kv Џq2o\Vc唺3DI!z] WM@<&6RU2rD:^M EOƆ6cSgPnh:BxDIHl0:~ 4/@*Y <^ˤQA52450`3Ě({ω`P2)5P`m=ajTT)H! LhN.V/) O^0έ\JBztcy8ˬSЍ(e4) \yߟ\209ts. M\e!\9nr !ס&wRGKw :M]P$K~0bA!wqSw_(h@ HuaE7Yy0L`c HI k2NMwXWyqQPu!eZ+A-@ ܂- R0 DqCI쉋9KIHO(j@<(q:0@ӱO]`2 ds(lQIiFZt`6A$b`q.`t;Z3,?HX\M\2y4SI/8;C&1ѠTGBvBu7d2c317Y4 1RPܯ(BC9ΈEE!v$2CFA;;g'f fg@@-]]g1{ǒ5od;58|;^ X\Ҕf>L/s 5ϻtcn\"zPB\qą,TkJ5*=~(;^KhZ(yzD4Jba & ޚn'fi>,±zN`~ I6(r{QHV ƫsA ҽX%+e(VzcN9=ÒӔnPNn٠YO:Su?Tj)g(B@/Ġ[8"@8g|{k#~aSD  j{٪_u"ӬCX! R2l 6!qiLa,i1/tpe~2ç90- YY C+- OтL%R!"&y}n)l!YԸMEO!>&ҼYOl=)ݱDaЁńQ f?8yhxoАWYCo^yf7nGoc@t8H19Ji:n8R rlo\&9\^IZzHHl `3*&TrDkJA%ctnZWA"k )EV\dz;I#? E;5ZX?8eϧ98P)Qb"n"wAWb싑uY |@#U"Ű;O X/{ ! QPKC083LfP(CHM]*O k:Fu<q#XS1i5F-|wsǫ6P =l:%!?f|ب^p@Gu jǓ8+XJ˚ŠҺ* S>!khCSXC[$`OIe2=/]_ܬ˃ gZL:PIO|5b1%c^KU;m&gP7,Y%&˨~WIy3hbaoi@PD &cR;XG0ݰ=ע~KIҗwSzn)e0R-zX O+DCM. e λa (B-öhu3s?Bi2kێs!<40TpqQ =ɱeLpJi8q`w$GB>8 4Z( ]_G C\9?wWsB<31X}ҍK~OCs&f"h4Pzp !! pv4& on숙*f4"52$@pG1 a []fT~!%ĬF0!NhC1 !AQԇU?߻??_o18-{< ~f:7?oZn۳2Dx`"Q>b1* m$d]pfb堣lV%乨vY fMm \qD1 G1'?)GOh aIzqo Vk~I.I`iіX9@Y$pC"cBoW6W L`(yOa D|um| $DZОi9I8aeAa'rq) 30һG&v=M2L-IŖd*"_q }S[ a UIP:(p3M''/'DbyH!܊@D}! %D:>PC P%Ṁ\PBOAɏRhC 6 ^1,@֦Ά1#(6/^jL5Hln!9%Yn ݶ==L'İ7?(! u3]_=]y?5^[(=j~}J%wMas./E^ l  d-wv̱s-cx>'oM!ȴE:hx~Gf\y5株Tt1ҺiFn <8l)$$>}́ ݡW<#taϓF .IhEXeDXbgL895jw Gu\uRg(pxwJU;]ۓrz8BңL@MM8PǛJ,1бtIƂ |~K(4.j+0ɂ@rD(^,Ӣ2ƃj:vzo^|i/J-*3BE E_:uËĄ:^w |eeAA@A*`JB6驃t lI!Z=+N\~?}h3*L1kt{4ɇhyt; =ﳿ|鰸l|@S@:⧄Ki%ym3 V=7Uܺ3t "݊wHH# PkCNc|@p@.S0.8kfW`LK$ 螕>3fv {AaR]EѬ~C=/7ĠJKoH{DY2!1vHk<(:@hHt" P%9"Hg*%3Eozf>z檊h |EE }?\>u!yMU1A!Gb%! 7}h qc\8NCSiK!8S3L[ *w:2*D 5 &$3~nHLdŘ nZOɳ#x 4Fӹx:sHk$:E=XqbtzO,C08b=oad$nuQ5٢ dͶ>b m^z!]1 E@!ΚdHd 덳SݥDSNܲ&U%)xUJPo >RYD;2jH,u EYZ,61qQn8HÉ0b.(NO)v^^|r]l"ao)+ OnhJ0H-)HӇ'9'kvf*pa&c"N!sQ7;)&=28@;xF[amdl"‰zgM98J|r郈xOٝ8z"N.tn_}l4qTf=*Uے/.ƨْSH (;~7+WǞ a%EξԸ*;1]|'v-LB\x|!4 ɆTS5`;8xͷF8p }nןz !ax):gMv|LӃWبu1W`Yy:BIt: P@ayIvKO'j:x q%a jxsp8Ψވ&ù|f2_,ch8Y)5IT] +Lʘ mzJ0fcw`F:MpuCtss0l˭_CK ~y3%>7CqqŚ(B@8$óE7@pz`'#O?x)?Pn0ƷpgV9uPi&H))bm p61 KТd(w޿jץeF& 1GC~&Gs1fݚo'/` 8 MF΋FAPӨ' h*̦XYA&{5(`ijhbe6j5N vB0f"&E C?5FBˑ0Cc_6 '3 `h\@a mh7|tƼFx(5P) @]z |I$ڃx4. ;Oax?wȗ.L2PS"cߘZ~7q_ó ߈yy룸cF84Z{t0昘7S~sОK咋ׇ#1\PY-MA Ӧ0W)UJ`=Z:.ˎp2nPIJT Mބg;jw4@֟Ga;/^ r(AiɝGU$+\N* `o _*ꉆ~ a5?P?0ynb rpVYEFY0 ;a O1hp0}_1C` Tݟ0G3T7toqdiкŃBBxt6t+7>z8XQpUR2DD9::;X/gaUDjCWݰǰ`>M[ʼvĐKP Jdw=U$>HAp[ `9iH8r`<WAy0>#Y #h=#y[9~x ih>4ә?!iT׸?׃8N$S0h{jT"% }K bi`sKd 4?쬁7Qq|uHSXϢ·: x3DTCý:7D|fq62CE}}Fl(Zӏ{=gI>;U}7օ)S{r$UUv:!gg>[*w5rW3G݉)wz 6{uN^ϊ;҃ogbm׏>nz;x{nxS`O-ݎ_SAm;GWݤ):-bm]ݚ!{6/I݇UbP րڞtޜl]ﳝ J@`ǻ>g]>\Gs}kwc{WjiZa=O {@)2M8mkWj-2'q `ټ}w͗v USsoMp>} wspwul=҅_|㺏}p>=}pz#<};)^|oa{Ͼݧ/UO{>SoouT]Z*K^Vmym{]nm뛷^w՞Vӓ{΍;wvy}۹7ZNunݼS7wxW ZފNۻ;^3޺7k꫽.Ֆavfj\ j}6+`ՏwZzz5-v_0sݹgº5g{{006|sv \=voc]yG}Y۽z}"Svu k>yンe·\|@mG^۬t>Dj_mg[o|wo]纾nݶ˝_}or*iU}uNiMdmc+YUVS.Kkovwf_5wde=몋_Ujwnk}&Ͷس̩C o*HznZ2kk= kZuM-yz9r-UOm)}\R(C{W^ݾ}9m{{zMv==[ifg;_|{k;x(}w_wG{ݻ}>׃^w{ienws{=.e]{dzc}QJϞo|wzv}}w}^ǽ:*oc= o>vϧ:ʞ}=hvzbzy$ &b0!M0&)44j=@4ɣƊ 4M )lSSzjzzOJ ~zjԘF4 Ijj~M)驄M2zF@2z&iF) @!lMTڧ$6S=1z4zh@$DA4h)OBEO2SS6 SFGM2= @=F=AB I MOI'MJy⧧?&z =@?P2>b >9`kYtǚ?yJ>H`$Ko~ZD¿>T6LD>FS-:yVzx Hmr=M@" x,{=j1N5U"0ytRL!T5S*j@`4jR:e5JSU(7l&*vpuPmLn5AT@r&M tW@l`rҔ`Ar S L9*n0n8r6 uA7LPrE0 uPtJS*` C(oD)M ȃDb46-0A2%(nj H AYo&vnIi^ADh4X#Xa#po #6Tɼ )Xws:")Vbe !hj&P"[ m닫47H^33q ?0(H8)J!pCTeK ` Cd@ `} ;@`D` 0?`0x0(*WA @00   `W@JH$ RC`) ৈ4TpB ) Q(UB$EJ%*$2ҡT4 U!RBXuTC  BP=t"RwNʚC366@J؀f!5Kn$C,da&50SJuSBuҙKBfPX@r$KЎ1Ս)vBDw#= uLh ()N ޯӅ+q"6 4]AI J(e!)hV衑z!i ʝrHlțHl` $.Юd]; NTTʒ)")) E7q"š›}T . ই:3A8Sb4Spv6R X) 8)<M A7"Ubb@bZHy6  (PT*aM™(TI$MЩ7 mh  RA Fe)H)T8w36 eL*`Kr @2܃Se7SU:)wSr @ B xhh[TtT l@8 ʛ@``A7JPz9 0+ʁ܍(&KPDAB|z( F) *{ʙ Ѹ]#oI)) җxְDՎWef5f86 g:h) l9\#WYS!3iVBFdutVNֶ Qx- kͬtH  $lk\I *HlJJsBnoB״vX)܇H3!k_& *Iz@ =Blz2ZE3N3<`ɤ$nwsw|hI5 c ^R94NBfӖd6ɄF,Jɍk+K-Z-TZ^Ε9)ؑp:3Or4ͳ7wN_+(EאƆU1i/-#ĜdDqpEk#ع ѝACH$ӄk*bֺe)BBȭsop`@?迏ݾ+w-#< ;Bn| $b$Eu 0;kF41o8yYǙNZ&H/}pZC޾{>hz̒I$<rf&3pkRV> fuu#P ϫp Uegvہc٠)൬TLAgM} ˨?ewcm4e)gWK/M@vWK鉕Uff x3O+8~t':V+ nuNSlayJ[am~4۸entꌶLgMaW?rnX뻔9}pXZw{.}9ev>gU<|g=a ,~-5ڌx1LADzkx oT j|rc\VP 48CqQe2KZq䧛\0[nqn 2r66DHgXWNAjL1{FM .Iq1Qfs9"gQ2]N M8#yݾ*^qoQV^1>c9`{7.p:2,]o-S4< HI jڟyvyy)H5۞֌Ns7]#<}qׇO d:2ٻTW-IR#)D|,?%9.w]n O">W?q|=N=ޑ4":ϒ޵ "1CJ?&֚JXi= >Wrn|ݿ;n]xkϿ/4|J*Lڗe;$]_N>uD#HH({|}?Q?ans9L|mF/$Dᾆ47F %4NS^w |1$^@P%vb LH%$cո.][^dOGש\"qSM&鿪 ` vy  7X}N3DZ}PP "Ҳ !BFE +8`Oyk~GVG>ŋ?%C|)bm/ewoeaׯ&$0IR`:LҚP dxRH@lxˠpS{ǰtkR HPYp#n*hT@AM ¥VR qpRLu4kУIqp(?AR !>)XhT>={rG'ʑVy{0tTOH XW6Oݭ> RڨEM>He~.U6ɺ:mFdAlx5>)@eNJR5"y0 s$F (SmD Qu0 "@PiMDPlD\ؾ7SԻ9XeH|*9K+0ZR x !Pp` `XhAA:4v `;@6`4D@h wA4h @4 ``jBCPr )`*l  !`9@h @1MQ @C`wRʛ)jd7R)4R#bR)AMMMHDE2*@aM)"@e0@5S ХM4P8aLtpuXʘRMG`tE4vpn S`r Mԥ5R)BE)Mʛ.)b5SU0SR $0dutTO @}KOyČ}R?>4醍&Ic'bEYJV9hݏB"$b~=KGt}_0ڷЩmHo$xf( TdQf 2vO˲[6GЬ˺=znlRvm㈔`ǧ}^=\2h 157~$ /=jor e-%L3 `a?n\O|ϯ<@`E?hђ:\mkꇫkBL; ם6dVۡm%#̃[x$x$.ę/>LGwOqH\Ĝ?Uψ5M2Z1c\WoӉLmn|.0xiDgW)3DwoDI^ PǃO۔%S탛^&6n[)$f0@Xݗ ,WNԨ`'$ P& (|AGF[7ʛC4q_iOo2T4pS{Yu6. Q E懿?˜|?ýrcw_8ŝsc_)1ú]]]Zۃ6?La| ]-~dߞ}ZuQQx+'_?W3>^ǸGz'SYqR𘴕opn\";8Zxn8ֹFLɗ Z/x8p  J`b,T]5aiZ , {t؈GC0as[~aўgÞP'eefig8f?-gxR}F-fh1k= )F-=0up01%InP9a۞g\{]uFNsS}5ZMndiv􉯗^246~l.LkGV0BHc%+Xܥ2UAEimǏ[AbiVVBLkVm<ȍ-KH"[ +Swc4+ "f(`(| 2٘iVt]KaS<4/zsys'գg;ㅒ3 %DPQߏ= N>Fv(u3x|xh@k_j'bьRE/lvtboexk)O@O ,T_b(cP ۔/}OofJZB*2~~GVrӚcWϨ- \`T ;??9p*ġɮ-1M{@w6޾1FW[RA yW*JEiOVeOP9H'M)) 0DpX BԥDuR eKA(Lߝ[Wk2Hၘi vƳ/{Zَ{bDxV1mR3A|zO Յc8]/g̖H3&Y.YG 7$z@%P [?UsǏfYgNQ>[+"tF]oJ6t,ҋUi.gwW73`<ԲH>b4 R:Đ uum8>Ҷ2~ D\ L G0Wfr6춹)iiŎR-s+ezGE8)O)*E7)`캃@ڜ=[4oнʗ C-}cɯ) x8=/~̩W)M bh %r}j;@P(8AN2#bxLcDoqeoXm,NA|tQ$Q kBlAT,$sx( E9Wi=ʿOt9Rœ)Jv im'TJS;PS_V˧NZ }P+qZ6EZm bj'W)j%k慉tgfׁ^_EA2H]fo)Xl$2H@,h!*|] ~^@a6Cm)D, !٣Y+P4[HFW,D'\5MzygROeݤe#Ʌ~f]-w&9R}k%5CbUytI ؞zSK`gSa3D%l( ;Bw<0~ךxjje#E0m^J&?utF;c|/>@٥ EŭӼALxM^\7!8R_$6^LOtXB}6ҹt\ܮQ_A툭JSW~Ac2AuC>H<H 2?׆r ohNn][ C´`-ND Brsd.aM,gA<]K_l8'[U_tx5~W񒄰W߶*&g'\V@%2$z{&w@R>xΘ0̕iqWA&3xN㊖~G}hӘW9f }?p8)vCe߲D@h+wM1_ɶ|<@yyH6k誢#ll&<̗-{d4{_]=1U.'1>سd3F;3'vb\[]|\ nAϹ]ɓ@kB/9 _ hX].0dp~EM6g4vjSZ a-)"}G@rVCdidٙǖQ$mKi^۞|?g@z Nf8JWo@ ܦjnx &@B*BBU;r=M084Ɇh!pbKS6GCFF /(x-[9+!8`ѺpBϸ.mXP}(1^A35Ìo?29Eg-rM5L=RGH'p>Ꞡ# >*duS]uR)jxwyyr{vy؏8ܶh/Ck*xip+?|բL3sC$OyB6BdeFf}-6^\Ѽ"M3qՍ !wϰu|*;1z͍ikz=p+_1 *@;$ xDALP5n+@3W9bgesbA>3gU@o|ui#kc&lpw*Gc򠟍xeKA SZ)ӳǮB+ Z2ųeנ^ӷ$ݝ}lJg ^vfhpѻ={h;4ߝwwI%TIwNyKͳ[&rcwT:c&7A$@x!BHBHB=[x|̀-r!ڤ`В8tMȒk͠Ӯtd_WXQkkgMk;e65ɅKQJ1{ b3SXNg:|AUo|+iF0@; @P$H"+K^pdxTf\4'zX#OqRD$ ]5lXߜCYʺ{yڅ*($c'ZLC@{-?=EI2IRr#BMK 6S1ЈM)G+ yOl $:vʝ+Hip,d<6Yg9v5 ;WxB| 9Y͊7d%+,AA,#ؑj,ex(wyTA߱F"~K /r4 4$ ,@r `iL:6L|V)se6 RSDgfP#Ȳ3 S$TRDIDr\n']gbcmZe^3L G6|1va(j'?ez߻3ף[.3º{Yc1tLw\o"ł[ J'hQlmm|eq6fvb3ߎMvrm{rMv!xIo/sE}e3e < DOڬšKV q \,nE9^>P=uݵ<6Y9o7cv穄4" ;Cr+XoF9R rakЮ HP/6I=G߁n=vChAd$TBS6滎}WpgXZLB|AՕNxEJe鏷˾KJ3X2G]y5'.m^Kp^3'%Yg\zEҕ |g9gCfj4 Kӧ\F$3zSmX0)CS hoAMUQEI!'A=RҔ`ՕA5ح@MDbeIt3K{'CPaK1EA] AmH( Y{)z5%NX˴QBn2%k .# #3` [i Tz8e߲ 'x_0Po <5Sԍ)E<Ūf W[Oܰ/mq1X4 ATG3&e笇ޡYlm:41PL6k 3q tGڤ)96LAULE8;*"g@1κ)(UA-ZCJGa=gE";v8fϻ wP;VdX `/ Lf-8&,R,œSSaF*u]aۤS3+$vk6 h7黽o{ѭLfplH+ \1r ??]\٢ŌZ +EÕdgEH! g{ vh7P2q=^Mr]-e `)$x,Whlܜ=̱lGТZtxЛĂ΋ @i_61HW TIs nrB*巌Ҟ`/nHH!n87fwOrE=Bouoݺ2.OGx3oWd<+f 6>#+T>Vicij;??1Jyd!J;&̜N5Ԧ4_WLl}\i'n;Y)1H]MJJ}ׯl Iž4^F1yo9fd0λ8\< ɎI 33σxf,}k#Z Dh Y6+ KbD c}^'K\նY[ 3 עp*=',\ FI@G@aٲ1}Np([MB+ˈ{fuGW_:d;ߡ`:. &mFՐ)$J}k HL)y3:J=+}Ϟ]AbTJ@r 42 bu Nj0yN/r̀M۳{R%nRP[s =wleߩt.Ý ^Rs k8K]D2qZ­B;7:#Ɗc3+e」@a-A7N32ctrǥIz f('>(*.mL8)BjXM rDSuSn 4!HiLX#W<8zOd\&HzCS1g.y)(s 9Sڧ"R@›)6L=MK_}mMAʁ7 RU"ާLŠCGk8i2mq@ } AOdYtGprA@AT _x=E U" wy&*E9O/Ȑ]0@qĦ)SAKS@b `p |NTSz t2'3*30W 9RrTxR/I.Їy'_C-t{&~5=K_ycP'$!֯-r?Λ\ jȻSo8}Í.ɞlpIg(]5!!U$A)1€j?.ǯߔ_.f/-.4&Qlb}5D[~S{= R}js^9)o׼7b[ oF!TC Z%c@:s߷8#5[|x tK&cS/O)j$K!wt]0W$Y쏋)r{XisFr+u:d_xC%x:Mtbh5bӹVdT1"9w1wj hA0Qcܯ/n. {W1Fqѥ,e/8tɠ9!mq ̉'K 6[wL,l9~:`jm˙^<7tf/<6;Ns;QW iNeŌiGEC|YBU0HXp\ iηR]e?VB*2 lD kT/LMAkH" l$bսvB>:*aGwi0anH9¾F6 NČLu析 h+#+Ԩ>sdXEqUy'tvK=YvÓκN\[؞#d74GXOwf]^xv ȐT$/x63YK{dJcSf%uW+!wxH@:97zyː= N@>`Ҕ` )@5SM=~xVdZ)^\ @[Z=#9[,Ӣc}jw*d;j@^ 1H]U䦹=j)Jw)S)O 2R")5%G.34₮HSH ZG=먧r겚)OzL6|ηɯՆ27 P 1aUқr]RAiѳ("?S6WoWߔwgfa͈4t3X$Z-/}#4KsىGO~~/-\ Sȧt.STnAzL^LaZ2;va'_gfgWnzajzR>(; 0o4W>]̨ҿx֪9`䧎=cXA ~,ϣn@?S088EC_z? [OAT/Ѐ!T (#uo*oP )#5La>Efu^md|[|a&fL$uItR.=p_,Ȣ33,24)œ)4pvCCk-̋20G:u͹S4xq?@{9SqR!w^J,R:Ouo"4c|<#q9uaawW0DAREFq)Ïmy=ϰfi)G!%Kã;AI5c"v6$STpc>E ԽЫPe՛,wo ܺ 3׏@  ƀ'#[I~Q۲ո rE9vGxoRH|,M=i5N|RO>@i$M5MW,SE>=9$v& FmUH`)E~@!NKfC^Y)K,*x9tmxC6LM`AH8*÷mtoHd*+mY6աoHŋrjvS=h)xYȲaKRo!(YZZ\1\N_y/%mI'%Mg _56]_gd^ !HPPFEX@w:r R>Ry >U ڐv60m~%-L^8r q@1BA Țb$z6y-=)$c^&ehoS=-ބWzo$L!`~{TAœ)0Tj)Lnjx)ҦS`=0efT>:)^Sڧz;) JophP U2+MA%5ԥ;ĀzU"F@{JQ|ʮ:|vO,n(7aj뺚za|w*Dy&S(b@Ё7ҁH%t @JSmCH T.K< @())LjR 4FZ)5KMԵ2 Se)S #=JRpE,|;+cG5$G5Ӆ\s7i*LBIE2W#$X/s@ڂKwseIuKS@뤸P;:a5E90LnHԊ{E")K,%y9Lު} t*Z Ǯx[sSz:Ku%gTnQjyogasS2-7QQ,^!]σp!Gg>+$qDKl N'jTcMASuJ W&Vѭd$!6фg ?H!xiC CeXziuy ݟ qMAô .itl|lE TS))Shҽu8~m5Jڟ'9Cܫ_׷r \nR6 v<50EC䏑 \1f]"lt2\0:* p?yI |.,84hTZ&bySg$bF W AI,.] 3 oeۿ 7"0 bJ$6[Ε0*/J3}󱌔1/&ݸ_,J,a(@^۬d`2Ң2Gng!y&r5ºז|;*N04_ NqsiIgTnkˆPh\s8qheAX,8Fd"7@#a 8e_|oAoYَ£ ]ZdIo`iWCN~qyDBλKK%=(MM?%#:Qݱ(jOevLgqzjz%uaYK6'刼}M }&Vp[sθh hN.oc/U|F#|ŭO@D%sft<9fW}3&loEqVqq< *!5 c_QB∢`&^MI6)CYwK0qR`~i5vLx8b dBN>a6qޟiaj<#ı5c¬KD ՋzK{ P{9VwO`CD?SgG)9tB4IvFIɱay6-7k{q[};~וOݏG業I wkBs\~睃HiU#4g饰W3Rb1N͇b[)π<]ma(B/sS1p>Y=ֵa~2 I({^?hó q۰jWHJ׷ 6Oe8,9c҆<;Q^VFv:Y#ǐZ1[V^suD3FESKGu30 ]%{|]<&ǻXUEm;Ǻqsuo{Fqnm)񍪷qa9wYN8frݏlռȹzůZtckCAD)>Cdg`p$aU5⦸9..lԎ*hfCIe۩$y숤Ziw+*eXu~˔=sbAcnEgmc`֟~m7^ȩF}4Ċ{,V62`q0k]>lc#8g /saA=^64.<: dAΙEVENEWXn۴Za8rٳ充cGlV~r?pۮRy߻ۡn ̞[V\y,ܬC]\xpԙ.>nyLrIrJ60c|E͛ѡ8F{>s_>'J25X%'tvw&x;*vHτ{#%|uێn %'[|G~ylf%sieX;bAb=TJewn@٣fL3 62~}0Ŭ3+Kx3ǖ{TncAa?HE!:>_r`<3 σXǙ$Ryb_6D TܑD v_K/K_ &Bm1kB$}sOz!c{ r:HgU.t!_Vۺ[= ŸsK5O0‘Y .3sP+W<{K+>?1xHd+y(ț$0#< eL屶um\dMDeFHlⅾRfx%l5twd*? ux-L o.VS붙8{ eENm gkm=Rj{|fp 0k,s.O^%7ם.dw㾍ˏ<>⥷tߚG6ÿ#s!!!>]4YT#^ rc&[\';%|>;PIHqFc/佾"V Vؑp0MRݖoV]}ݰ%Z $Qp"I/@]bU4Z-q1رkh,nA8`?lmIZ_g%9BD7㯩 E=p~ 91Unnu׿lNZk2߷ϝtZ]f )}!Æëe3x.r<"4 |՗٥N\s9<6u-e^; ׎gyQ^լ\jݷoϋka-)\7±ﻣ^,d.7K^nC}47?j̎6v2ffRF͍;-ٸۧ\}~S>Vc9<*54|gA.M4 uɰ)ݨ=#9:X0GC,O NyJd|PQx$׼0FLM5lxl%ga6&JIE#H%)48KHPR/^@IZXtJHh) =c( (J"H$D!oWs0 !P吔% B%oݙ˿ݻYʮx81جI ) ()iXJJIOQ>? "2?Q3$B Jh6LS !dV4Aέ 2L2L20@,$&`IZ "l BG%%JThaJB!j!t>L%Fd0sNĠk y- :I1̰ dh2\fLUtvHhM :4 G $B#f*Ɉ1>i!`aĭLN%,AdcQcDcaa#%f9YFcG~1>HyEE@rA)ě0 jQYXB!rR332,&ij3",Ȱ n$={fy [ $}bgw1=zYL Mo eL5q\= KFc!(X[ qhkTN⢥"&>ړ8x ZCIqcq)HSr :hMh 'Z xc%rx\ɜʯ,je3Ü4.9L˃G 57|jI5iLI -U֪haR~r 7TîHq٬v( xw3m8Ӿ"ᬼXH᢮,)kf ^ϗF3!`\lmfZ6`܍Z|uKǓ8ʢ}<_ ;ׇ~ysGߎk{9ވzn;n қ~09ѯ.xyLj*񲳋K7WC%ĴF=1 Ӯpl Nҙ1V;aT$1Y}r<9֯/ݩc"ǭ/M9:g o\CM&V9X3 Z gIy^{@O=7cY#m;(rz_/1+:㧵~Odx6W{Mo0D>cn}gGjVuÚ-x: % nǼ8 ,3qLM9jd%lv99 eݟ81WYֳ-p NH~NQ -zݤ3r^Yhdyts${= bt*CM{*A**TvрmQ=-b$u sni͘I"zKfx} Q8Zf=Zb O gs[\CpZ03Y[,HyY0]f,j0W.r[3rV֢3C{\͜TTRL2:s_MͽF;oo Nn0wj&2ۉla9aP TM՜;|F domY.S#ˡdf:˙7G eكm˗6627pĪ4c(OWE`N}ZdupEG|hx5>u'V8|F9Ɨ>>Yq4o3#լI.:;Z]]Ɯ=h*!cǬ/{G=]1 VFޱUBqǗQ<(EAC[_4yUcvzW*gQ;+9,mMETƺx3=ۍ1 /XDn;KOyL1 DVͫ+ RRIHS)Q$T D )-M HJR1AEQADUФE$D-P (2M Q H*4+T!@+ QKKAP%4RJ(JQP"(RKJKUH5,L5@ LL DE Ĕ QH%,(@"²ċ0@4 MJUBDHČJIH5  $"$г$E+L)(H#414 %-5)R T"R*UR(R SP$T+24P ES%`%&"LɐpGMBºRP DEQ S C! +2500 ,( !"9 B 0 !DJ1 N րM*"a5DHT#H0 (! 0T$1$TT@@ 45DR)) DD0CL (@T$JQS4,RTRME E R Đ5S$I"RQ BIRTLM)P, DB%"ʳ,!U#%Pң(T03ADQQ"JJJJ," 0K4 Q@,BRDDC0003A)-#ʌB02!@ERD!M4Ĕ``*L0I1D@@TD,I@33PBJ"3TULRDKDRE(@DM%U+4"CU4`a"@b $2HE T1 Q@4PвAAQLH%P Љ@ "  (AE4QBЫQCAM@@A0Q2RT"JJ)(4bTRE@ %%5B@-22+*P%A22TUH4SH@2+ "#A@Q25EQAQP@%#A04APRC$MAQ)KE41QTILEQ@RP1,ԕL@UKDDQRPRRTDT KDE$Q-,2A+JRP D!KDATT4TUTM$Q!CQ4KA-SHD@RUUB (#_g?9,2 PM&) )"adX'U4ᘉ);0vJX ed)QpJ)UR+APPP_ɂ`C4@ B’P$Bk02A'%1JBAw`B8QBª(#C, $L1 ,,I-0U8@B-QDHCq9e?a-MRǜģoF:t S{ۏNu&>8?T8N"LR<8aS*8jqHgC9/`(]b}Idq{Lln%ŃZԚd動4R |=67NWAOMMc" KB (JR)((1)U2 kػI[fVO o6kmO@O۩+kX:$D5I~Ʀ1#NDSpjmL @ )h hP(V AZi"h!dadi"!JRB! FZ(Z()*PJTThhT(F"BJ`e)JT(R !gSfl dA" #y4*iWI 6RHHR؛]/Xmri1>lLpH`wʂAa7w, Y(1g3Nc׊""** ,(b \qQLaoLO[p5ؾTk s! ݐ<+D$YaG(bEӶ/td(pwG/|E:UwK n`އ;@v@?qBQ0z|dAUiJSI䦊A7˦ ]ЦG\)Ee[pW WbT,RA`j R}4A}~ #BЩ˧z4;hP'7h! ) O~xޟ9w @(D:w݁= 4MJ b.`YS@΁HH ̨œH1;R?1*` '|F$_BZP,B#"S OkMAx:,pD;(jzԵA QLC)f|vl?jDZ7[ ͆O8~cQo>逺@~0=%>?p?x`_-? (/ķyP#N `{A1*F2+ 7$F2oJ~Z$B7~:PFt}$u.'mϙ.Y~ݳ{uHWI4YT haydTC)Wڤ W|u~p/)x3˥þVq <4"FPJM&/8Z.mp]VVN~K8onr_˫Y2YH][v[m~[^ :h J0}?HuQݘ/VF62gpN1s u[kKpd+em6;ialcmosYƺt ZΞ yԙGЄsX`|? I=JeHd@l.fsej*g^N-6ŋ8g~_ R->N>phghɰuLk(r,g-{Nz_!\/|6sϦpf/(uM/Ũ'D -lL]}R?םI9IF/3Z~yQ9tmvzi]/}My}x| X|3ƾJ{{kV6eUn9xrwc(wSm|#ғu5<20cJ;ɟ]Y,a]ۜu):gKcnwrJa6g ZOf̶+> 5n8.<:>Zmvc;ߖ~E%e\syR~ٳwl.BV}U`|o7uѩ|6Z΍KHGH"5u&MXVf/Ҵ 6R/ۗ&ό|~k݄veo'-igm]%[]9ƭ-ڕ#m͡6GaF :^LpFC[( ֳ8fpEQp'TPz7M:G wNCu7`LfsQJz͈D:Z]cH2DQG%;C&ZeY; 9 `V@ )0!0 02t``g@````000"N4 , یۇ\^Y=d޻e$ 49zT p?jP #oQcFY0.#de}.U@2]$=MT{̯`("_GQ>@=P@G_Go)?|ߥ Ŀu"HGeK lU0KUHARQ64Q@MD1CZaKL)SPM XeJCR J@ru7TP6 :@ԀE8oqVD0D v #B# ~??<ѐLP0twyZr;>qLK.A K™E5F&6`lc`7 Mƀ.܁l7@Дu`r8@ 3L= C*NK;@R2"uAh,FcP R4-0&h0`MKE,;4r`;Su5Ro G?"J*j8aRM1E_J _cpwS* E4@Jx;MQuHl& @U@ 4)@2 E %8*@,A0tB! qj  E5M)Mx,7@;0b:"rPlFyHfѴɛsa"`ZMD7 75p0w`R*`ঁJ@=AtŃ6(JB plL!jE2 `5l - 9@ cS8C@؍(Jb3}VE4|` bpb*uHP;)`<*P1MhMTDt,KphH' L75L"hptJX;)@;;9 68"Su,:);&,MT2` 1N28DlRSjbS@"r؆A8d{ IM) $M)cu@4:)7Q@{@9G>@w<(Pxjsh:jT510 Se-L)hjZSa)M")4 :;:b)8PmMTMڔ nU(t) ԨMS8Rص:J` iR)uTeMC@ X=A NʘblR`pޏv?JEm>oxW?s_>/&V:zv*C_=>ddyW]πGˣpY}< &o~lBkYcx|? `}W$9;eCP`T&.I30.z>2W Ȱm!@D@^>Sm/6`AkФLŝH?0bQ0#+$@O~6S S4*@b@)r h%" )4ЙB`)JbG%%6%8SRC`!l e?S e e:P&qHqLPT``TB`@udRt @ @t *mL0 HR0+2#$ !(.ژ`v&@@mN:)W aS`lФ8QE -KRHR S*P6L7KR”)Jd0b!6 *Z@m;r9<+/lNeC`fa&In\%%̸̹s9#w:;>9%WXp/֝ކk8S(eFeOKi݄J 1`CAZO5 j!D:/2PQI$`8=P|Ϡ)Uc €CDTJjT?Sa@; MWZA 6Uθ$ iY?͗DN@ԌhTRlDϊphsG9J< EL %?sa5XRӤMㇻ>EM@! I qӬZ# vzy%2J˙s >}ou2궊l L+ɩI&C" ,1cDIMo} CF܁Z(IeLH}BxRF @yl?F5hX $b@h!I4.t @RV"vJl= UyNE ILRhGDC9EW)I @0H~r$@|Ńw}*~HR(ȁI!T> @>u^0d!%2! /]ĜAGEn\H#DU *$TAhOsXYn) +&a* >lukDP& Q%?DŽ (=u'Z++hhca%"P2lD_-P>̚$Re)CdAu$1>Sk[rg8d(#H@ɥ(P۵4vQ0!wDR>ˀ~RI E%HE(Dc @OFbS(BDPR( V!"I`!Fȉ(DgKw]__}=i_˟YAl67?A,bEERI%g ̫VGgp-72 =9O`~&~ou҆jwOKJXkF5 v$3"t-œXl6 [*enMy]1K{BR|gp3$k|/]q>i2 b Mb>)w'ig}T;:G?!yzE<tH>chDR%'Q":=df˵#a##\ᇽRoy$mrC$mȉæͼ{_G3s߾OAN #P @ PS>S>G/ԗK"ꃔ? \RBH%Aࢉ vUϳLf2@\# rJ!le $(i(JlpA'mID';rOI|"^[ę F4{wqġ:Stԉ-)*&:0C>4CExLҍ'0( G.۹7htF -OVy]]^}:z%iސ%3>D !2 1`| :c$:RN!/x%W@tB>u05sTUQW\D>S+I$I$q!ȚIZW$ sQBUUUUK(( ڢ(xeUEU[,uh0ISEW~lmãBHI ㄘ珟831:UUR33$I$I$ cCbI!|93VA Ǧ_8鏞{yщe${)7ReKH'2%sH A.:Nj]4! w(ȧ 4eppGR'3h!0A@Ln.\Ct]jΎՍhSO:9R&mvrۘ{,bc \+m':qjh5fg.b1`%o?qHi LQu?=>pf/**&x?8 m쁘1b@CCm8>|pC"> +^>IN  b0`8.5=O犬 5_O/?'w4Iwr|^ɰFBs(wWNohɇڙIQXntNvLD StUQ0h/=ÒH&:LK[*D@]*Μcg}$i(=&gn+%ɱ萬d,  @jWdYd&ܨ :H&d;+HG$w3 g+/ cH}"b i7\aT7Bx(5aq𶠴+-wԮUCD i*@5t2-a:%MsxH}EQVHv#fUW0Ӣ/-2jd׉rinyt<=hfQTG]TCZܒԤ֛FnozLY7%IZ RC|)&<^@k*z0XP$wW}ї8(kkSkfBH∫Wǫb.( %P;)4'fTK`zyE:/57w `edoF[KVA1 ~里KU*rA G5#6Y\lhن32A~i]|P!l۩MYY(vς$N?I<+bNtWq#Ew:g/UaB@6qⶏioQ9?~\nːg%Tv,`=b:}Y^8PU*p0 H* б6M|uA:8Wl^#3 fנL_FăMu0dRi * j  PS"Y$"[̥D|6]S$|{ק>~Aǜ{L<* >3Y/cH'U}VTAn_kC#E2- |iPDx"9}Cm@H+B|9a"MBV#BdJc^oDk.ܵ^id`|B1LW4M8|GW=CME^}٫C;?4[_/*zl;\':P`x0!0m,4~4sGASVsP^v _}>p>Utslů$>$×8lf%J= t>U#;%)>0[;U9'! \ EAW! SBm#):Ȥ $B# sHgҧw^7_@RSU RHO.n!2W %čb ExDQ5,RnD} Z{cx}iS E /Cѵ`,0@D4oGCMMD":\ D Iʼn L:K-ZJ!(ǃ]'0g xEi#su|ve^پy͕lˮ_xϥS7%fT<XsbH-/0\.s{  "0RT "*#j)DO|8`qN%!H ܼ{|i`58z:}h=^S~pgPIBHwKPʑ@J308tRIIP0]0=AҒ=%WKQ6`D և94|M_kXy%8 7 o6MMtU oJ 돫0T6s ƃ 3w1;S[$MyfǣJMSYhPz@=ybb X~Cz-6#`QoT*a!<3z\pVm6Fd> >WEB' r'l% d'`q ł\`MN_X0]׃F󆣯(2S$6?e$%q=5=Q|屿jRfQF~NQ2A M-GH[:Mƀ!5Q@_jH=8 $_O{?pP^[[]C :MN *u\@0@Ckݏe+vk v ȴ4(R 幛=0T*4Ȁ2`bb^l̸%whʌ78'pmJAס5K`7NK~Z1`-Z3TW(5'H@#ڤhYQ:&4v=Ǯ%1`о؁悚ل0@#"`!j@0Aመ)! @~:ٓ"E&ۚ^N44F6g?GJ<#DrȻn<[)'Kk1i>h<6KO⏁5G)blaʄAPTpRH]$I+7(PA2@(<#IjDDSi< cQ SlEdӺLjx"*(=}a'E j1$@@l)KGDx뙘* R!'\(l#@]U (ABȡGI9ْ\|+9/QJI=T©O?#vh 8RnԵn*fX1SJsIIjhL+RCz)?d4­ 贤T%@?S'^Yil!lK.5q MQ&m0y:)`TA#Q,ƌuIJMFcfr1a@G)r>X30E>1LIʣSО p#M"ٴp-jtn"J9†GSUESAvx!"!A1 !4iI}طJH~WU@f HDTYrUƇ*@^ ) ĪUvi϶:"˱_ Ù~S")4 R%POR%ZU%"(r8qMw>gna TZAcp|>,MMa+>o~}aCŸ E{Ɗ MhԢ` "FFgacV]>) T8 8lNA.A!.n xHeR@\nZhTE*nE p n77R)(`G903c\>sѭn jaR#`iORV'i4B[pov \(duɛҩa/QJ™%&2h1Ava($4Z ~qP8ci`be5یs:<,,lʐ=`v tڤ))"[R4 I ,`s9Lڕ""aK@M/@m2Pl.&hR*qHSjd㻜 b-*iژJ`p8Z (c`۹8Ԣ  FT@ i:9xΌJ8ژt%J)(($ihQ5BII@%PR{@~䦹CjJs s*EUE;r#kf~d܁BO:5ypB?cԯ $/wyWkCVi!q7GO RkKKQrP(>ݔ]xbB`@.H&1LFR<>CU9 !7Ad*:V拄;ԊH:78\GtR2x p7QTJaY+v ;lCmuZ4.nXQb: 8iR(@#IƅPt蒉Llpϯ q;0KJ/t[o/r (aۛ"Nr<@HG|. g'EӕP QB#$B~.KjtH c`imd ^%`=p5RswC&BXeO|d@'s"+ uF-l˗\oP6u=hV=5M@-at]Kx(P Mӌ54MIFFL1U $'S*!H@I]4K!'1ud,tQA@R80n q eLBkS H.dAM$ƬY $"P.rEئm`շd:= *1沉K8¶0aK'{ROߑ Tp<%$qXwm‹Գ ¼]~ ) :YW@CY@dPnhA8PV#)3)1JI+xyS"L^E "`9MbTSdBrΕAp 0mR$IZ2}[U" 9" CNq)HF[ MXQGnqe 7Q7'ȀXT L亸-]xRrF bN]yMm竄sQv|ge(g0zPq( KTU2W"$iL231^ igq;&YcT1Tr`=T1`ՀI^cn &a#` ~) >LR`4k;4U4;w)`HT.ͨlDNd0 F4, F ΍RDMel=Jy)Jd;ΔwC%9aM: nk$I#cKH,Qo29bOtnBM oL, fRQOA,i""% 1h-3I! xtbb;fGcW(@jMPH٥)!K1@VVav z<.rkpp@pnt Ie@\ # 3 SE2 ?zD,JE0]@9/18lv{zx%*X: wnZc}G$[fnIm ٮy2r @y) Duߟ&<(lt4mJ@@{zw`zNXthYjW*j":@W(1e;g>Ő6 ƀ'si,@ƶ^Prs{`v5e(RANEDUhL^+B;qfEסh$)#L>u&BʝhAtSWqՈCt/e=ՀmA`$ILV:bN.!CW?&)=]N^b"Jl8ʝ.*P 6i~>7mlTVrNfTǔIl,/R6–R[sc\>(v9L'phQ $pPg@#8'cR6٥8& y*W.U@mME)M-&%Pl%s[Hp+b$pl5I¬[|k^dA.`/'M|1Uil "yNZ,~X$`ֽp<ԋR#ǷT<JE04E,ߡ@puA6RM D2tR)6Lmӆ8cE; ifխ4ONW] Wn<]lNeHpY Et@+XW AQ<ǥTIa PBtH{e;\t9rTߚ@D8-[˫juҁp׌Z+>tX#eN^'#&=(ge{V{=f׶cz\9RRS@Ys8$6Dڐ|R44 qXWq;yxѲDL! i.(9䣐l0, B 'nQQEM<)l\M`99  ]PUH @ 1HQ! ``BRdJ8m87Ql ʼQK9 ($*mgaG1צXxxd͌U mU%4ZCyZS6 'QQ|X0P*Tj} @4 'aG!#BҁAAErħ>R"bJiO@pMFDr@fK:)֋Tj(P)LR]w nM !t .xù0c*`4}4JqNu*>=T DL)MJ<5R{; ! +D!֌Fm FEX`kj1PVEhij2YQ&ͤv`zfjdCoTՉ5e4Op ZS`Q9VP`e"ALc ` "Z**RGz?Ap@4.j hZ !R;E19|:"@ȣJ`:Q;e=!ԧ}=PDl/>@5`P<+bF " dc=yOʉ=熑uiK #>1LPioܠK/vjnq2vy:j U*pr~m#̸R#9蚫MԊpA*@Րd:gIdլL9Yj + /x%jm:{_6uii9$C[.}n0B{O<[}cAwefl|g!l`) C 42 dqq")3'WϼcpGDT{Ҏ7<ƜmM4a7''U.8FM00_Mth4mwSR#{(p 0H9216fdюu]trQ;f#Eق1 Ӥ9ޡ؊Z$K: nw_:)Grso8S\@Ч.pX9<^Gd`{PFsPɮЧ~לE`Hb=xc GVڥ`Bg܉䕾!H0|r 'pX!R_(|SRWxx:o#,^@k`d[9x|;.Pl/UzNQ tpQ#$>-UNWR>b`!G'hT+B%H/(+:rl@ IR&Kܵ(@98\JMΠn_&CPMCEO#ԸaN}.{z8%T]!DGl⠎_.Okr  y\g0qS09fkq8 c}o\`& Bc_xFY sWu%ϖ h2 犹v )iIӯ$*`ǀW#ȃ!G>C(JH},GFH棦(dDW=Y|F;v`Ӣ`;zo5rWX榨yc8nI.f-腧cwF3{t + fC}/lK|^!vOq1E=mw 8!՞Z<; 5Wg)>v<<=cI#TL&ghHJAN~5SU,FӦ_f rrX\ RTU-W@MHGSx_`| /-HJ;0="f2b'^:0B!Jq' >@o(Bt;Y8Dì@ EPo3ŦmG Qy _kl"Ɩִ5+T<# A>CB &]8R f@#|ߏ)7*cG4qKUξMG0{HcL!v7R0>_@̒:ϸ@=o}πw0Z3mcĞR<'<\zIkiH jTBEFD_* R ?+{<"ɕ'u6Jm-?[z-Gh7q&\5I24زbIM0q FrĴC^H j |2&$&Tq$`LohYHRȾ3UXN31B|_SG<ءw4 I s;J-sDz"T5 2 \)p Sph)=PXu0EFǢE|k(i#)@]2&].BT^(E we/! 8"y$@`YcGw=<_ Bp7fc&! ) C;Gxj%y)SP\X1EA6ng3hod#{ "p=Gcګd8)C&v- TD)X.YtW79^g[pp]T~(N&=q"<**{դuL멡"@ 8)TLMP[2Jy>8v%;.QMnR K#܊@(@ RSᆊ,@"#+b~]p>Vbj rz~ hA!iR X1H,AL(5x6 Y4)K(MB$`rSB9b)r Ԋn(n)MM2n/X6W %UPQF2 l\ʊošu5b^}8[YkcD J s1߼x `{H^9(BJE`w%g-@HXQF3E8BB UA {m=(Sdqyf<}`JcmޭON@p \ qب0 Aw6 >6ǃW*@ऀ},͑ I &|bl )Jb W&BII0z)) UOR j'OK-j0_O|- <K&(q (nws xI'6bBs#Qx{<FlSn0$`(RF.paH@pK`%2q\Sr@56RB," V`Ҩ22 dB esPq i0e P%TSu ?@F̅W8 @Bh9?!C( ô!nmvuw]C>{ y6;\KX,Ow ` 0A(VzNT^3O3@ bZ EnUxLȨ KW@'PeOƤIٳlYT&&+ގ ?+(v,7-6j@2oQAI@g,*J{4 B>J@HmtB,:`:Ft9D P01H0DG k2B '%b@!a)ϙqa#\SYZ(MvU_dGS/G/qaCFXE|@,Je`( (]Rf7:U:fU:T166݈-TPR;&PCsҚ :q xP9lHE[5H#f*J p&Srtnu"P0bD`w1N1☎3 ȶ(KѪB$!|3͕U Z8 E23j n;T,CSD|lL@_"{;'2$N#W46!f5nA@rRRi7rT")4PEk*-R )HUrAK#Y :zzq+pATe kஜB\FAtGADzA-+e0EEg6[h-6? I 8xHM݈*f  g_J@FD iLsjTz@E +Z((3Zb9s)56DG(@2XLQMcQ ]aq>e1Q8Hʍ lzHI@k#!d~hÛO,P8y;Ck DGDiU;0n HXQ` Te dEž ~=9|)sHJڕ)Nhs0'::M W(i ` E`YzTDJyL\ f" 8T ZmØm{ B61G$mٷW&C%~~OCD\P$\  B@Q(Dy t,BԦv"1 @E$~%4) B*8 @␤`ҋ d!$´c3 OGl:0(HHF'O{߈PY 7J=Q:DU 1V|uʼnH/7`v↞Ǥ{=%].1u(q(p@Gt?y\?|Z6dbXNX4p(߈-(a3"ɹvcsH!i? %P?(ϪӀ!C|"&~Ow jgSP=`-@cF!yv]S7V$Ejaʋin5# NMw^(ԀҐ6D Z.bo +hh,m\KJ Qw"p=9Hʿ1=_hx@aICQRMPB`6HBE@ʨ>GP>0z)l@!SkŔcFM2RiJH)CșdNqt'+deMY}ܸJ$Z'TRU mVxaR /zrFNRW`pPxDD\w¤=>0=:PE1`:*(08 YTQEéB#8TT5@P t )<ٜ›0;wު@O=A!oTP:JP!ASwϒ *p RGt;0x#D+D\ *{Az3QTF)TJ u$DUUT !IN C :Ħ`iS#i=' Cu"zH…t]Mȟ^ǜ»0=3KD{xTb5cƃyT ʬltǴAx#DW&0(ëd -ĨgHїx!n# eX8 0D` O3h&SńEF!Ee4 DP&)J)JT৐!?8&.0,B dߙ ~&kO6k/B{k c䍝_Y]gq8!1*&ecdZ}»?Z σsEAz"& U+4C¾2> }ƁP=LA3,)CpP|q޳ c)vb0* U8@lB,ְk pޠS 6Oꔀ%0ր-\UVF%pGPݡBOjo$:V!ݔ{! `jFOE·>23`wف,E!&B-r0Ua@M^`qX< !"o_|2ñiЮ76!~podQ(ƙ}Lk! @}U|} TDAU5MUAHM2Q}^ 5S#P!$EFrFv|ІQHuv993}+fX4lB6E#kAKݦ2(!uEvSC.TEokQ =K$$hhog">f RJ h5"M VK2n #cn"r@Wc58K#S{ߩ h;; ዼq*BdxǢ_z`^#➍^ҡ%NYA=WCbV@I:ɉP:bj\mIZ5@jͶc yG _aPaL;8as: s:MSzBPT%D-HJ.:qCMW1t2E2S7?c) hp1'f(<\—U~Sޤg/,`30 'A S% ^ˇ[C Cvj ;'AVϤw}zp R,T~ݘ0#@AP} :hp2qRKrzurO;S[)s@S̒-&΃?.26>I|wa#ICPMI@H@$`E=@y$u:GQͨv*DH^# f7BM8[@}Yk SU4xf|b$n5*)jDGUqa{IF!7 Q( 'I𩴃a:*F(JX4axwʋQ`82#n;D 0 ov(!!ɠw).l) JHh7*|vI JP(n  X A:mlxK<0K4 Rg#(7RNd_MGXF&X AffdvHMEJD4{t6t~FxƠjX>٩0P$p^`4f(}KњM `Ӏ ˃"IT//IDE :$`dRz'֐A6!~'՝SϙPiTa".IԁMF%`h^ C43̰$Pr嘉 ~[7뉰a\en6\ ;*xڍRyLdouudO[=[y S/(czŎƹQQr϶uT@**0" !"NkID10tS=zM, >=8ޓ]L5f29]B )J0 -HA4F7h]:|SR)|b ME2A,T& ) h+`BSx@`Ah@ڗ6a\RVR>L@ˆFb'Sj (] JpٚB%(:␬@DOd@пWuq>§  BRMD1%4y*@$LB zao_RAHB?/QO+R30FIȄRd5 z"1' AG"sJ!JGpSgHz|_qMݯ46C(P J.)@:RRԊ@ }9L !p HRy~F++LNJq $p>6^?!בnh͒K(;߃FqN6 @ '1LMx ǂ@CȒ!<'7KF .-S3.FzTr솧Gɽ@bNR~`%M!(J'Ja`G`ާc"=D'=Q (SR bCU@"SM5TPQIE UUTEDQUUठ@d.( HAT.ٽ UULUIpc gp* 24EZO")Y- B)xBϿk1ʛ)hB`( qP'-RU/Ѱ/óNz`\w?-U֯!o{1}'PqĥJ P 8*`0 )" `b(eA%IIOjbxI:u5]OQ 0B"v^8na98J6X ~[xT Pܨ xG`vL  Yd#|18wf߇j"t D 07U:ɕs VMoctʊ;v v\TΈbBOZAK vʑ~D.[e&llDX|m 䆍EC1PjD4h/@!F211"!UMsxˡ#"&a)Q8`GF--#c0>lqBFD%P+J}248DŽ<2g^])a$jHRPIx)),Fs|Ee]X+UFQhZXt򴲨xQ4 1 mDj sٓ{"(yd'2rAb8|7[cKo܈"f$^:o{`?koTG1yؔ h΢d\hvɥ4@RmFP Ѐ/ZRU1 '\K^Dۄ1R|^p* g8̂Fl"y<|dv9)bs7%D# IN1!adt )9gG>p3fÊ(PԮEcty\CzA|RP;E1G0`‹Bv 렠぀I8:7@0MA+lL3{~TuV"@FN0tLZ9(+6-⑸ Iah4P2HdDP P"DOhL`SQOkGoH!M@B0H) q`ܤ !H%%%%H%%HSpby|!L_N (<80! QSRfhũ/Nrདྷ! 0uta{^64]_Z4RuՠBT?m|j T yTDpMEj yn,z9bO!B韜 50jQѥ$FD~rb ("mӤύEUN:i!~ i 7}}/ "vFHw6O:= H'8]@u` !@qCb(R"HB+)B@H-@,K*@H"+, €B РBH#H@ȩ!" !J*( QUET1UUT$0SSU+CM4RIBI "5T*TMUSUTH4M1QMPUUQJ B+MR@"!)HЕJAH4%(%5BҩM+HH JHR4P LBJ҃JKH"DJR"R%*RPPBH("P-)@PCC@#J KCB`ut|s.FXa Ot\%pP\#A! }vWEy4^Y?]7GxU}˶nF~x`%lm|irrf>JA`fHiRj jzhYDŽm5]:+J  .0Z'3p%dfN%BB6(# مթa~;{5z S ;t12oX#5KHaP6ěD :8c3C"!hJpqgzFd )bE *@?W6 \ sL̜jPQ=Nl{ "0YT \ʹh$j4 EH0*(ĬPY(h cM99a]Zt뷘kE8GH@fCaY32ABEʆna0Y,jD\`rp [+Ό`ԎZ&( oZ) *T. MG9e vk@}8ƃb7N3xbo%$e 4 hX-wadv⫇1s: 0ȹNf6ڪrRV9. 5]li!Dp#f`9a;c*ez,JU36ԱSjDښ$ξfK*P1;ۡnsl.kEHM!NHbtw k㘯=tjGFb":] &і%;%oRC\E"A`_dWZp~7ડ0c~fHҠ%qjXXE3Zhb1mINzBʿPJ VI ʀeKR)JS?@\ MfsCǙ*jN6_MkZ !8J )*o +C@Af_ waN4D=^B56W#ddwzüI_Z0N()HaLD$O JRB wz) KP4@)`66aHbYCp0 pS4)))JH]6@VZRQEh 22JC 7HV0 8AB=l4h'Gț ?Hzqs٪J@1{`!zQS]nd{Wir=9N0|´ "H9tЧٰD1Qz'v*H ΁ @Du 8y/:BptTѥp(tm#gNIzGOn$7POGγmHir,&B,&-!&l c_%7?H=n ?cI`+O"ϳR| %c ԅ$ )be(`yDPEMU"! D D T1!sL`aaADQc@4 .@?.bJ BŠ#PC@"( BUБ(4|R2G% ##9`\x:1 vȒ/VRLl %oRXޯ =+5~/3Eʯ0^~ш 5#7slbh!"Ʊ*.n&>[μ$W'kY;}(= @"n|فq,5`9S i%"):QӾ{˄e,\L JIB,WLgYɳqۄ0>@{JKR uwP އe\ m7~X4B_]ˆH$@9(a-#:p'-m 1`H&@hL%XX|T@ ( OܔkZEt  P!7v.j04KFgZ< Dg@)%dHP'nb[;!9p9oxBRQgM07WQB(<皝aH"E%HPHPt,|1mj!uoC(y|A "O JLh1PcRᴲ 4_ VhA\Z?@D$P$ B0R$%(4ȤB "ELT* @MEJ @1T%4$C$R >=(A4 4,= (H Y3Jf<瘜TPRGJ`k(h flF3hJM H+)NC56$352S+$"C0#+6a 72JV1"M$KnhRJHFGCq܃,,F%$DJ 6D_@Ȧ(J@uiL#˓y?(N{R&z]97NrM&T\'3Gj&xL$ɓ$:|@ Ṛ=E(5wb1a聳66,`co@g#n{y9x''$ܥRE{-nwn) )k]Ԋ/6n_R)u Π9S]=)ϻBۥTU Q:ڪztkg^y^=`GJ?H$rj Id[~s5 :*@ԅ`~")R`v\"$shwt vu7^m .%9H';.K\nh) f j= #@؄qʟ0! w%ѯH U_)GUp`8E܁|I2K_J!ѣ 6FC)[4ըNsA'.:69 j"lf  ra54 Pp!O[\8} 6@'0N2am)c`6G dLZbF*{ e+ ȔL.3Tâ[L40c}vԑ(m7gl&}O6vk r:YŋWr8 г8I#ֆ4.Hl~qXEQ{DŽ6QpC<{Ym+<!`ćKJP#ݡExIL8/ģM !:۫} }`x{%ݘ6)L-w Yjz1#镑H+æTa X,)l,3f"PĨ#̀@b[<|p",F#Rb8R(HZgJ Hs#ʉH.oMt<8d  l^2ƷlnM\DwS0*b 7OOMҚj@_X4 dֺh \A]+ E.=%x@j~҇$(U^Xtޞ, /HD _3sENu3HYT$PP`@;1T'oͰARSt ܹ; D  X6@e-h֊&==G BP a:S ^`7FEdFIv_)"SyQZ`M>o%v[Q|bW+ 9¢>GdFA sA4k8@3";OPw6M71"?x\$hp& m+9>aST`!S"b:?Dрh*P(&Ə WOM`>)tA##U>h@z/`b/pĜ:y("s[m7M1"h.DR0 >D4ѪD) ٽ洨S4T? ( eN#=/x,~&$jta4oݳ *8|دR`,q_0#Xh[H-lK,DB$J@N|jmj^/E KAQDE# )>E;?X08 By( @TEUUUU*;@/;B%di"%5&ɧP l`9hHN )^ ='i 0RhP$$Q6>rLP<A)⛋EB TOFx[E8{H`#QFEuiRPjNH!WKqh?XGŕ @RvG@l${iӤ}kKX)ͱa5fjrApu~ )/cm !kmFL3)"1*˔ Ho6fyl4CӍ0**`"gAY{"!P>^ٚ ]p @,RtPZ^##s`TAa3SfϧPu1FՈ/khQ񘗉4j1E3I9JCFrWQ"i5K|H͐rx0 P90$K綔!:˸J]/} b /@aѨng( @+{KjmSw>yh(QM@Ejqt#Kpl( fpHO5 r )dnqG< PE3ҋG qCBk6k4U 5)DfDiHM18*̻,kC-n V:!Ycvp=KX \:SfXLFT V\^ƛ#u0WAJ7H9fL{nD 7\o:(SkJ[h\B%,4h3l%9ot KՀlť)c8Q-XNl攝%\]T\?C .(  dfqrqh.r$gGD*t!0'>xfyaDKrUlj>4fwf]Ji)AP:9lX)I0+c# |j {e ` {mS Ts_su]Bѥ3=Y@&MpOb|7OC؅W }9,ѐ+QhrEf6&BdV~ PluZ( D2#J !  !$(_a(.p 0 qW.DR#jDb9C4C `@Z CV\(8+aM*t%4hl4yU8R޻5T mmׅմS m:"P,( թ z{ߘT=0E0 G٢t[u N][@80% !yx;wGݢ|0>p, _#T%9<ݤ2Hws@(G,R1 C6b@XH`Aڑ `|!+yB=e,Bx]I'>?Y1piM 0@4j' !=ϴaᤫlxM,)6=ׇpǢSpP 1aTeʆ0R<t *2(wq4RC 'CuR:"jS#QU!Sd dWy(fv vR';]|.߄ dKrÐm2O1;EuΩ 焲VЛST!kXSplED @ !窗  \ P47: " i'PR!ui ʔaUb0T #!yZ¼(= n3U2X4 PԦGph0AX=NP1v8"' K95&#%haa#N` ]J ºk8*B i5M2+>d}4xx"`X%O0SXYX?&p*H0D?< ax芼^Qm4bD| =΄b슈LOl]x0x^MǵC@;3rS>Tn##H$AJJEG" Dd h0Lゲ;AE.8b#L܊ Ћӳ|Q!Dz(]PdhFJ M# )KJ@R lEyׂ8W.avZ_0e3`78JiILRe% S %_d#+GFaA P $61Ґ9(p凄! IEa.E"6وC~GLȂeÖG$ai2hbS%)14w&4 q/HH8i"H2 J ȑrHn4K]: " B;)3֤p tvKjD=4FTfht?sS6)R~u(ZR)d3kd`i&|Riqx 9iN_ ~CJ}}+1*TӒMO[l^abrse e#jž-HǑz+ C'+> Gٌ9*j ŠF ( o9 Dg V!KZQ9/KC\:HFՑ!|d%()9 JI1dDQ5QU$5PATdXDJS@6XF(d+TRPD#SKf8BK*d P~brGd83 bc 0Od%$)`;h7zAArjAK45 *Ѻ@6Rz̮B@ra=X`6v4/hb*D( 0o;w @XV{O=/T:5ghXH(ftTAA],b쩸!XQWXjh D`x9T@G?5!g퀉]&PS =b Aha@`aTGPvKj`xAa\!BEN2ʠ~{u Nb2 @ )/B ޘ_AЁ@B/9(P4fJf}p#@64qx=;ngUbDf,&DlH$!#>'hC5QAD@Pn :DiaP`>wJ~zqNbE0^p)E1 0o3x1&)|DS $BE6֏}~RvL&|2m$9CB&Jmx6`BBI*lꦿNt4 GI oZ`] (5#AA)1@R(@i"P(":2"| kVP{g?,-m 鲸`t*j.uToߺdinR</4P*79:Ԏcs"R˞ef09V ` fבhjqSE : P-60 uLU2 GRc (k *4FE( yaV .i:X#%sqP܏aN?8SRc Yh@мcsRGOY" "  @r uػ objF4ư$QhIJ!P""-їYxd#bz0ReM14)hǴlE ݝysmqEeh%Vf"YۡG= IK(*GF,QCX\@%X\v"2ȊYPl!mdJ2A@"
  • 9yvį0JA?F NJ]8q%  )XH3OMY?kJOCF7@2SJBP*8U20`6H78DCP!DARB3Or]r xCת4n5bjD@4Cz54@Ȋ` 5oSzoRFXZ(t Q sT~@MAk-Bt/Δ##u0λJ_^K*#*> &B|ظA*+`Q ɊM&8D(} _A TѴo,*aIvlS: XHdʦ *&&m+V.( \9OLmU )"ۣe3Չk$Ye_ʰH}ͭ}awDJ \({%SQ-8} J@"!Fr0Gq V;.5fg2!Q@D;^FSaT~qS˾$$?D{<T _F>?."|pˆA~=3SIk7?st1Qj UcQŰ8f㤺/π 33/*30nۅFd @.ʸU԰P%+KtpHPqiO'C2qf@Jl78A/,72q^3Aek䡏^f8c}X~ւ}MM,p11ҕeQ*2E*@hXH2|7HWfҀ1TRy]+aa8 <"d zjTͳc2½ JkCno5f, n!e'%^H70ؐ%}glJ߫\v%klپty1:/ug#M0)m=AT`y˽u1#m;]H]"]6s٩ΟUf\z}|jZǦ[58۴9;O>Q5ip0tFE7αcdR㧸pWx#|&-ϩ$Ȁc΄}hdFCPCisjUUI!.68y {W&?QfI0LJ(8KW&#')ER=A2ojd=\ѼId#4@y4F`>}tjʨsD<=@선&+L4`+y"Q HY#D`c8J#=$6x0hx"X3'KN^JhIQ`0@`1`S8ȫpC`qsVKOĬT0abfB}rU>YHG0I @)\w#x,h9Aۻʸa{ "H;sHIQ`!H3 V`48b \sU-Euvh udC %?2&,q֔Bv2@s1vVo&@X ʌB?u.M8!'CrW :p'矻p!; b#y?7/$vFJV ehBjw({wo )GH`pAB2BFR2FFOh F$O_?}_R"('D V DX@@2 `2 00ȩ* 22dJQ'=J?/ϿSRN͆^4dXܨ y/?k!$SRZ+$`P0?rD;N=CI'!Id $0p YHSaNӟ wP4DX?s#;_[[ y @zSq_'g yl?F0zdK7D F!+"P״>(rB͞=6/⦥{*@ wiXp)@+IE܌4T(n -upmdMn,)ɢa b$?{yyb!6P9[P ,E bQoMI?jG r69=\Iq]ė EC6dR (;"6TeJ5wJYh{ځhMF`w˳`l(0g b&#b *X4Չ @ yB$Ũ:bxHVBHoQ|Pr A ?“QH$ =V@_=6Ē.i}հ+bM#5Itdg<Bd= iƅkW 1vhlr Cp܀V $HRVOTRRuNfk F%RO'_>:= jLHb*NlEJd>M/q0^mkG:U*k2AuVmb%u?k 4G8Jb" t״8j*e=]=z'Rk78NRRD``y|OwƲ$0 CgzHv #u 4Sxso^0~KQE ^mS^sP0H9\8a 8u8y0$]MzP彟FzւDh_"PQ+,}TJSR$UCt8>G %5AP'X@{ H]wVKj3wM5v@q\ l id%E>`mࠕ9>bp>g]j/P7|z`?Z=Php pP1TP |  PCnQ Gh 2I흁 |O;@%"#h?kاƦOL9hEc;m MeCM= 7SW֝)u8: 5SubsyuN@\ )ʑ*D-MԪP50c7'[q mW?TƊ\')}457@6Pu" R"&)œ)!uœeS hF*2;nٝyW=TOo@b.a@IL`ئ@8S"պs"n49s7!GBV 2y@lR%bFuHtSaE QAd /3\0i#n n4,8#QB$H0•-o8x]5q2Z9^8 b60p{^]LZ@+k=*i u&Q%P2CTQV^ȯ.>U 0A 0iPn8$Iѧf%{04v^`{6 $LAiTf0=_6y(EiVbiSF̤g$@'.`Yt!FM$LdpB*X@S^9x:v;à/Pܔm FxH $#+w\$1$ ^O~X,LLπ}@<) i^5}{~= 6a|Y ?~cL7SqPT/PXT0o6{qя A:9uxa%N(p?h9^ b]9YVsXEK摣o6FspQ 6]/us'B #y'&0x! WRURi0(x2$f (.qOdr !슥mG5etLpS0)ttɹQu iߐ塚%{b7N$@K%'Ԩml;.h`[puCw>ɼcwdPmQT!V_izp@A b%NE] (t{<3I{橿" Q,D] H1Zh(Pv?D&E!C !Q!DŌZRJi"AMʚ $6"LqQpQ[P-RF)hWԥ& K:JJ IZB"P Xhh jM/( +JC#*DJ13*Ĕ4 AT\'N\" ސ] `S:(8tT G*'+T׻Hfo%ED`!"@L!AiE]( *"2!)B;v!SIJ# 2 0`lۀuD@ӣHL ȞRI:A:"&aP" (\5ӒJX"'"!OB `:q$h I"bgfٜrx TĔ2Rb* %@,,5%BKTH$D JI "/Q LC 9Wk6I0D]cV0FQJ@ R dMP,h(E() `pPJA\b*ҡStDʊwٙ+DiDچ܍)`m@EHQ0D4"Y؅ P h^F b"M`jTExmؠ%pAtUVBiѤLu*4"th&BD <$453r T7b$lCA8M"= )))B!fZ!)TT)$b'\x t" @jSHURc S a bF` ֲ0J2#$(jru`H"A@ HD4F+j0[ *ZtPW5`JE0ADҊ(3UU@QCSQJAKBPpj6 a] 4!$a@DT"@1$!Q0B@Dڪ"7Vb(`fV 7PТl]b.6 Jhi4 `@c@L`!E%ILB7M #PHF7`e9!(IDZk)KҁfR"LP\!!b "Q0D$0'C3 }YqA0T@0z   }>|\Ћ< rrqQ)fC'dABE2/x~%iL̫\j\q3P|2Q!Fb4Dj85$A  |Sp60f~E{0?36jN1@kR !3Mi!?T᫺pk mj ir-wtxJO`KƬ46bKQaX@M;ܦ$haa7W,pöH dWu]Su'!bfEtN :"ĒBtSPz0)WXXtf Y&W.AowBb'z"ڿ?.aJkĨRzc(;!ƪ/Zgm/m&ˈi٪c!I9#f! CALd'!&ayezځ/72?(\ #N,}އ7ys4 0;& ڪdjuFNm%N+`'s1e"8j#-]3, $Y 0N4h!@.?;ltSi[gJ oF*ew%.IVA}D ۃ,$5X5.4n], u`v?SN&  ( b5ѨZ+emC˝ ‚mH/?i< cWBJzBorrtZ}𘣜0?F$I}{y(o ?xjLa|}yx PK㾦My7[4$O(!AaXFQiG\ϩ%8 PL]|zo(vY̩羋rQ/ ѭEa΍_\asC*LT,&d:Wz BH9Umw2h<"F\aJ7$)<]I%|^/p&Bt'2bx8uqiU`Ldn+ Y =LѣTu000F(=6 +YSQٛdQ:" V K=)a:jkeךjt[^b)^5Grx$Ɛp}b*k=K3H@.h8}HH q 8FL9+?I^ t٦&udI JdȐt{3EKQN@2(WeO&\rpxhlIIT`'_T;x0C\h'm9N*N\U<IH1\E:#M'%aD}TR2 K9_! GgU|G\$p7=:͟%AGG.I1{_L=x,rv9Q*q_9DK4Hc`m *8Q:fq&Փن6ްʺIb>$@=t5 ΢Kj,r6_1 P`aXX,4dhNa _[1`MSB*7 %_Js2K0J 2˜^v T韱Tg:G6%` 4#:_1Ǻm|O>X+w$x'p$N+wv%J5zkij)RIa1\ᏓWfWi` Y%P{hgnO?q+/vS,n:݌_6vFSᮣl-S=DG8ֽEK-,eυa;5㛑>Ӯ={Zqs00~0J9jKn9=}*z}.EaRĢ5UH֘tlfBhZdEӒ$t ;&8,5M O%2Gc*|qj[//0vz'FK)0Okl 0!3R'vb&\Z.? }B3;,6D#@I*(syl]$wfAle3=K;p) 0G|VXM͹q@S^/)JOVts0툈 ,%0 1 $=CE䓈?NI.f2gLaZ J>`{>0kVP)'v06O~qЏdSCVWaPE .LN3}]x~z u剔HDF'+8Kѻ}#!+p~.ꃤ#uy#/ O(8߯$ iH/3d/v06eBݬ`Lb#` 6)X1C:J{n̔t<ޖU ?̃›tc $-c]WeeXko؈ɫ~qB(5]MBdLMW1Rs7yy! "F`53\t5bS#'#TlR5"&5KYIeLa"J#m\ܫRIuk8q8WF=d82XCganb ' ٲ)Kk.bT(#;r kT_FMDN*0g8Maul7OH D?zȡ@:K:'b(I>q'CF F'j, M Du/l.5 I#@o@ܳlLY~JJcΈB z4DS>yf :;$td㎰bݘs)<oA:ecK^ Fa ,`x(F?gh; PJ!ӨwA e!{ӰR 4P3&q-☽F$`{v86]_ 5sh8qRv}.H s`m@&@6oe!墏EIc 2=ҋ MKh'T9‹䣽Xטƨ(hpk~`C$gI\lmwu5JPrPMK 1j[ >`^̸l \ p̝,`!بu`=z!P1KDtƆ/C. CwjX:t߬ *IwAbK 2f;nG  q񙋡S(%m,6CWM#r߮!="F*չ4CuLtfhx16{ w* ),3Ѡן(dV  nڐhO(ۤyh6T6pc%GxوBOQO!b n(LDO|D.P~0~(!I% xrL1($kM"kϪ4M@01uT\"l% /k.`tOc}k4x8h7ܘ>-)*h!t#^R{qw~odU-JbĖC=d>K& "J)GGӘzt4o?H:C%ǎe, a=gOLހauty[;AAξNAPU\{nCfzQ҅ƅԼ83{4W(Hhn1hzkF$4sg6&`}H}D'c|@ݩ)waG:;vWr4䝬 -03O4XM#'0:W!9PaCRBX 2).wH8.>{h)KC2v!j́w҉^)wN^ul7%]T*lIq8j~B< 5q}_(Y$@lCho'fUL-Lha,y% n:0txX`b)~[k#x٧AACS)RRmfQGDh/'Y2Pmz:[mFĄeP`$ 99h1DyD/8`_$Vo8ԓ'#&9EDH/(P CهGRO@MɅ0\бɐxQkzxH3Uj`ejl Q`D7<1oBdr6!镠EjZ^V=tzp2›TB-Eջ{0m! UaaY }a`CH$̼$8>@`G>ٻ퇑6p"d]= -9H|RAr$DnQ%$.7#/(|BRCOmN|JM/f5ǩDAKR HGb4>pИ:H;%%'$- !rH4NLyK@'diN>=.tv/cxZC@C#amfLrrN͸OHH &׃7Q%c0'#>A .l$C;2&V}(ФpS34QmP$cS,jHve<06S"G3YbTs@rFShBaj@9X712xdC{͙yqh t!:Y\ Y#t/cm`xCwi}s`j aE߆;1%Ng LzRwߡD5(4,jEq4ֲ5~@+tbR5ƶRi\b)J>Ԥu^b_:'; Av=6*c! ,B-4N<Y )$Ęvf I$(f.mC2%#$ t<uQt@¬kIJW.`e{od w/ؖ]o6jGΑt'x 9fTeFͭY(HQaX'g)DԊjY _t!gݩLR"şӚ6L65}O`aK #Ϡ8<; 3^;[7oO3z@gvɩ0 ANƾѐ}Y݄3rE%K}ՍeT]>2S;OYDCr?#{hzAc0v43c3rE' %A2i" j}}2J6zCADeI$n9 "e@4q#IKKץSb1-E05QAK1S|w {lVx9ʞ|-xŐJ:-{$ΛS)9 }PCi_M9fq'TS-I<]…g#*0bA/ IDGljv_ԑѓH[h«g#M3jm:ձhtzp7J9d I_ 2p9/<. ƵA8s cgeVQ)̑Me}[>G"Q<,,k 6EC'@co*N"b eFJGX/g>]|5 :(HЮ"HUa !}$a]y6Gydn$KJJ@H @*Q2q`5fOޢCԕOa)y. ɣQQ挪M]1e|v'Tj8)r g#Kf(٭y3I`xp@{U >*Z5K_%e)sP^Bq]X$A qd k kl{3I2q2P|8>[b0ѱ]Sa뤪P`C@!øGq)!Mmz&ހ㴤;\4A[ !oZ]nh']oFnŒq"VpN\3%Svӿ+rf0 1 WN':[ Ǥ@U=gP|oOb좐uv"@rКzz o#칐1X&7d_ΫEcҮt;/XVBIYdCjͶ 4/ zNd~ hDՄByN '>1i\ XS ̈́SCX HuyBEDy祁}qPCMc#:{.g=fam%fd49,ӄPԐUU`12P1>mv/47pa(}Sn"K9V.*gk69Š#"(;VwbH={$]ou#cCIC~ k ja"c23R^M{sme]߫0Y 4'm=x !14vsݽ$WtPSȳˆh qWd!Gh_Cz/sq!;5I- a؏XUaLkAI4U 05&+ԆYz#3 7ByXŜCArNb^ t/Nc74LGc& $ D uOKXZI)S[ +ÿ_w;@8nױ!R :wHUQ7  bi8"JXGZ-:u߁(騍C`vL_$3g|p@/D|f,X)1˩qSTN&j/u1 TIv>z9bllx tڻ^qۅ/hH^[w0HNihh@_Pu6+: KN`qBЁ~OeA5 &KkJ@@l!67ebCnBjBqE JJ QD^IX,