package keyboard; # $Id$ use diagnostics; use strict; #-###################################################################################### #- misc imports #-###################################################################################### use common; use detect_devices; use run_program; use log; use c; #-###################################################################################### #- Globals #-###################################################################################### my $KMAP_MAGIC = 0x8B39C07F; #- a best guess of the keyboard layout, based on the choosen locale #- beware only the first 5 characters of the locale are used my %lang2keyboard = ( 'af' => 'us_intl', #-'ar' => 'ar:80 ar_d:70 ar_azerty:60 ar_azerty_d:50', 'az' => 'az:80 tr_q:10 us_intl:5', 'be' => 'by:80 ru:50 ru_yawerty:40', 'bg' => 'bg_phonetic:60 bg:50', 'bn' => 'ben:80 dev:20 us_intl:5', 'br' => 'fr:90', 'bs' => 'bs:90', 'ca' => 'es:89 fr:15', 'cs' => 'cz_qwerty:70 cz:50', 'cy' => 'uk:90', 'da' => 'dk:90', 'de' => 'de_nodeadkeys:70 de:50', 'de_AT' => 'de_nodeadkeys:70 de:50', 'de_BE' => 'be:70 de_nodeadkeys:60 de:50', 'de_CH' => 'ch_de:70 ch_fr:25 de_nodeadkeys:20 de:15', 'de_DE' => 'de_nodeadkeys:70 de:50', 'de_LU' => 'de_nodeadkeys:70 de:50 fr:40 be:35', 'el' => 'gr:90', 'en' => 'us:90 us_intl:50', 'en_US' => 'us:90 us_intl:50', 'en_AU' => 'uk:70 us:60 us_intl:50', 'en_CA' => 'qc:60 us:50 uk:40 us_intl:30', 'en_GB' => 'uk:89 us:60 us_intl:50', 'en_IE' => 'uk:89 us:60 us_intl:50', 'en_NZ' => 'uk:70 us:60 us_intl:50', 'en_ZA' => 'us:80 uk:50 us_intl:40', 'eo' => 'us_intl:89 dvorak:20', 'es' => 'es:85 la:80 us_intl:50', 'es@tr' => 'es:85 la:80 us_intl:50', 'es_AR' => 'la:80 us_intl:50 es:20', 'es_ES' => 'es:90', 'es_MX' => 'la:80 us_intl:50 es:20', 'et' => 'ee:90', 'eu' => 'es:89 fr:15', 'fa' => 'ir:90', 'fi' => 'fi:90', 'fr' => 'fr:90', 'fr_BE' => 'be:85 fr:5', 'fr_CA' => 'qc:85 fr:5', 'fr_CH' => 'ch_fr:70 ch_de:15 fr:10', 'fr_FR' => 'fr:90', 'fr_LU' => 'fr:70 de_nodeadkeys:50 de:40 be:35', 'ga' => 'uk:90', 'gd' => 'uk:90', 'gl' => 'es:90', 'gu' => 'guj:90', 'gv' => 'uk:90', 'he' => 'il:89 il_phonetic:10', 'hi' => 'dev:90', 'hr' => 'hr:80 si:50', 'hu' => 'hu:90', 'hy' => 'am:80 am_old:10 am_phonetic:5', 'id' => 'us:90 us_intl:20', 'is' => 'is:90', 'iu' => 'iu:90', 'it' => 'it:90', 'it_CH' => 'ch_fr:80 ch_de:60 it:50', 'it_IT' => 'it:90', 'ja' => 'jp:80 us:50 us_intl:20', 'ka' => 'ge_la:80 ge_ru:50', 'kl' => 'dk:80 us_intl:30', 'ko' => 'kr:80 us:60', 'kw' => 'uk:90', 'lo' => 'lao:90', 'lt' => 'lt:80 lt_new:70 lt_b:60 lt_p:50', 'lv' => 'lv:80 lt:40 lt_new:30 lt_b:20 lt_p:10 ee:5', 'mi' => 'us_intl:60 uk:20 us:10', 'mk' => 'mk:80', 'ml' => 'mal:80', 'mn' => 'mng:75 ru:20 ru_yawerty:5', 'mr' => 'dev:90', 'ms' => 'us:90 us_intl:20', 'mt' => 'mt:55 mt_us:35 us_intl:10', 'my' => 'mm:90', 'nb' => 'no:85 dvorak_no:10', 'nl_BE' => 'be:80 nl:10 us_intl:5', 'nl_NL' => 'us_intl:80 nl:15 us:10 uk:5', 'nn' => 'no:85 dvorak_no:10', 'no' => 'no:85 dvorak_no:10', 'oc' => 'fr:90', 'pa' => 'gur:90', 'ph' => 'us:90 us_intl:20', 'pl' => 'pl:80 pl2:60', 'pp' => 'br:80 la:20 pt:10 us_intl:30', 'pt_BR' => 'br:80 la:20 pt:10 us_intl:30', 'pt_PT' => 'pt:80', 'ro' => 'ro2:80 ro:40 us_intl:10', 'ru' => 'ru:85 ru_yawerty:80', 'ru_RU' => 'ru:85 ru_yawerty:80', 'ru_UA' => 'ua:50 ru:40 ru_yawerty:30', 'sk' => 'sk_qwerty:80 sk:70', 'sl' => 'si:80 hr:50', 'sp' => 'sr:80', 'sp_YU' => 'sr:80', 'sq' => 'al:80', 'sr' => 'yu:80', 'sr_YU' => 'yu:80', 'sv' => 'se:85 fi:30 dvorak_se:10', 'sv_FI' => 'fi:85 sv:20', 'sv_SE' => 'se:85 fi:20', 'ta' => 'tscii:80 tml:20', 'tg' => 'tj:80 ru_yawerty:40', 'th' => 'th:90', 'tr' => 'tr_q:85 tr_q:30', 'tt' => 'ru:50 ru_yawerty:40', 'uk' => 'ua:85 ru:50 ru_yawerty:40', 'uz' => 'us:80', 'vi' => 'vn:80 us:60 us_intl:50', 'wa' => 'be:85 fr:5', 'zh_CN' => 'us:60', 'zh_HK' => 'us:60', 'zh_TW' => 'us:60', ); # USB kbd table # The numeric values are the bCountryCode field (5th byte) of HID descriptor my @usb2keyboard = ( qw(SKIP ar_SKIP be ca_SKIP qc cz dk fi fr de gr il hu us_intl it jp), #- 0x10 qw(kr la nl no ir pl pt ru sk es se ch_de ch_de ch_de tw_SKIP tr_q), #- 0x20 qw(uk us yu tr_f), #- higher codes not attribued as of 2002-02 ); #- key = extension for Xmodmap file, [0] = description of the keyboard, #- [1] = name for loadkeys, [2] = name for XKB, [3] = "1" if it is #- a multigroup layout (eg: one with latin/non-latin letters) my %keyboards = ( arch() =~ /^sparc/ ? ( "cz" => [ N_("Czech (QWERTZ)"), "sunt5-cz-us", "cz", 0 ], "de" => [ N_("German"), "sunt5-de-latin1", "de", 0 ], "dvorak" => [ N_("Dvorak"), "sundvorak", "dvorak",0 ], "es" => [ N_("Spanish"), "sunt5-es", "es", 0 ], "fi" => [ N_("Finnish"), "sunt5-fi-latin1", "fi", 0 ], "fr" => [ N_("French"), "sunt5-fr-latin1", "fr", 0 ], "no" => [ N_("Norwegian"), "sunt4-no-latin1", "no", 0 ], "pl" => [ N_("Polish"), "sun-pl-altgraph", "pl", 0 ], "ru" => [ N_("Russian"), "sunt5-ru", "ru", 1 ], # TODO: check the console map "se" => [ N_("Swedish"), "sunt5-fi-latin1", "se", 0 ], "uk" => [ N_("UK keyboard"), "sunt5-uk", "gb", 0 ], "us" => [ N_("US keyboard"), "sunkeymap", "us", 0 ], ) : ( "al" => [ N_("Albanian"), "al", "al", 0 ], "am_old" => [ N_("Armenian (old)"), "am_old", "am(old)", 1 ], "am" => [ N_("Armenian (typewriter)"), "am-armscii8", "am", 1 ], "am_phonetic" => [ N_("Armenian (phonetic)"), "am_phonetic", "am(phonetic)",1 ], #-"ar_azerty" => [ N_("Arabic (AZERTY)"),"ar-8859_6","ar(azerty)",1 ], #-"ar_azerty_d" => [ N_("Arabic (AZERTY, arabic digits)"),"ar-8859_6","ar(azerty_digits)",1 ], #-"ar" => [ N_("Arabic (QWERTY)"),"ar-8859_6", "ar", 1 ], #-"ar_d" => [ N_("Arabic (QWERTY, arabic digits)"),"ar-8859_6","ar(digits)",1 ], "az" => [ N_("Azerbaidjani (latin)"), "az", "az", 0 ], #"a3" => [ N_("Azerbaidjani (cyrillic)"), "az-koi8k","az(cyrillic)",1 ], "be" => [ N_("Belgian"), "be2-latin1", "be", 0 ], "ben" => [ N_("Bengali"), "us", "ben", 1 ], "bg_phonetic" => [ N_("Bulgarian (phonetic)"), "bg", "bg(phonetic)", 1 ], "bg" => [ N_("Bulgarian (BDS)"), "bg", "bg", 1 ], "br" => [ N_("Brazilian (ABNT-2)"), "br-abnt2", "br", 0 ], #- Bosnia and Croatia use the same layout, but people are confused if there #- isn't an antry for their country "bs" => [ N_("Bosnian"), "croat", "hr", 0 ], "by" => [ N_("Belarusian"), "by-cp1251", "by", 1 ], "ch_de" => [ N_("Swiss (German layout)"), "sg-latin1", "de_CH", 0 ], "ch_fr" => [ N_("Swiss (French layout)"), "fr_CH-latin1", "fr_CH", 0 ], "cz" => [ N_("Czech (QWERTZ)"), "cz-latin2", "cz", 0 ], "cz_qwerty" => [ N_("Czech (QWERTY)"), "cz-lat2", "cz_qwerty", 0 ], "de" => [ N_("German"), "de-latin1", "de", 0 ], "de_nodeadkeys" => [ N_("German (no dead keys)"), "de-latin1-nodeadkeys", "de(nodeadkeys)", 0 ], "dev" => [ N_("Devanagari"), "us", "dev", 0 ], "dk" => [ N_("Danish"), "dk-latin1", "dk", 0 ], "dvorak" => [ N_("Dvorak (US)"), "pc-dvorak-latin1", "dvorak", 0 ], "dvorak_no" => [ N_("Dvorak (Norwegian)"), "no-dvorak", "dvorak(no)", 0 ], "dvorak_se" => [ N_("Dvorak (Swedish)"), "se-dvorak", "dvorak(se)", 0 ], "ee" => [ N_("Estonian"), "ee-latin9", "ee", 0 ], "es" => [ N_("Spanish"), "es-latin1", "es", 0 ], "fi" => [ N_("Finnish"), "fi-latin1", "fi", 0 ], "fr" => [ N_("French"), "fr-latin1", "fr", 0 ], "ge_ru" => [N_("Georgian (\"Russian\" layout)"), "ge_ru-georgian_academy", "ge_ru",1], "ge_la" => [N_("Georgian (\"Latin\" layout)"), "ge_la-georgian_academy", "ge_la",1], "gr" => [ N_("Greek"), "gr-8859_7", "el", 1 ], "guj" => [ N_("Gujarati"), "us", "guj", 1 ], "gur" => [ N_("Gurmukhi"), "us", "gur", 1 ], "hu" => [ N_("Hungarian"), "hu-latin2", "hu", 0 ], "hr" => [ N_("Croatian"), "croat", "hr", 0 ], "il" => [ N_("Israeli"), "il-8859_8", "il", 1 ], "il_phonetic" => [ N_("Israeli (Phonetic)"), "hebrew", "il_phonetic", 1 ], "ir" => [ N_("Iranian"), "ir-isiri_3342", "ir", 1 ], "is" => [ N_("Icelandic"), "is-latin1", "is", 0 ], "it" => [ N_("Italian"), "it-latin1", "it", 0 ], "iu" => [ N_("Inuktitut"), "us", "iu", 1 ], "jp" => [ N_("Japanese 106 keys"), "jp106", "jp", 1 ], #There is no XKB korean file yet; but using xmodmap one disables #�some functioanlity; "us" used for XKB until this is fixed "kr" => [ N_("Korean keyboard"), "us", "us", 1 ], "la" => [ N_("Latin American"), "la-latin1", "la", 0 ], "lao" => [ N_("Laotian"), "us", "lao", 1 ], "lt" => [ N_("Lithuanian AZERTY (old)"), "lt-latin7", "lt_a", 0 ], #- TODO: write a console kbd map for lt_new "lt_new" => [ N_("Lithuanian AZERTY (new)"), "lt-latin7", "lt_std", 0 ], "lt_b" => [ N_("Lithuanian \"number row\" QWERTY"), "ltb-latin7", "lt", 1 ], "lt_p" => [ N_("Lithuanian \"phonetic\" QWERTY"), "ltp-latin7", "lt_p", 0 ], "lv" => [ N_("Latvian"), "lv-latin7", "lv", 0 ], "mal" => [ N_("Malayalam"), "us", "ml(mlplusnum)", 1 ], "mk" => [ N_("Macedonian"), "mk", "mk", 1 ], "mm" => [ N_("Myanmar (Burmese)"), "us", "mm", 1 ], "mng" => [ N_("Mongolian (cyrillic)"), "us", "mng", 1 ], "mt" => [ N_("Maltese (UK)"), "uk", "mt", 0 ], "mt_us" => [ N_("Maltese (US)"), "us", "mt_us", 0 ], "nl" => [ N_("Dutch"), "nl-latin1", "nl", 0 ], "no" => [ N_("Norwegian"), "no-latin1", "no", 0 ], "pl" => [ N_("Polish (qwerty layout)"), "pl", "pl", 0 ], "pl2" => [ N_("Polish (qwertz layout)"), "pl-latin2", "pl2", 0 ], "pt" => [ N_("Portuguese"), "pt-latin1", "pt", 0 ], "qc" => [ N_("Canadian (Quebec)"), "qc-latin1", "ca_enhanced", 0 ], #- TODO: write a console kbd map for ro2 "ro2" => [ N_("Romanian (qwertz)"), "ro2", "ro2", 0 ], "ro" => [ N_("Romanian (qwerty)"), "ro", "ro", 0 ], "ru" => [ N_("Russian"), "ru4", "ru(winkeys)", 1 ], "ru_yawerty" => [ N_("Russian (Yawerty)"), "ru-yawerty", "ru_yawerty", 1 ], "se" => [ N_("Swedish"), "se-latin1", "se", 0 ], "si" => [ N_("Slovenian"), "slovene", "si", 0 ], "sk" => [ N_("Slovakian (QWERTZ)"), "sk-qwertz", "sk", 0 ], "sk_qwerty" => [ N_("Slovakian (QWERTY)"), "sk-qwerty", "sk_qwerty", 0 ], # TODO: console map "sr" => [ N_("Serbian (cyrillic)"), "sr", "sr", 0 ], # no console kbd that I'm aware of "tml" => [ N_("Tamil (ISCII-layout)"), "us", "tml", 1 ], "tscii" => [ N_("Tamil (Typewriter-layout)"), "us", "ta(UNI)", 1 ], "th" => [ N_("Thai keyboard"), "th", "th", 1 ], # TODO: console map "tj" => [ N_("Tajik keyboard"), "ru4", "tj", 1 ], "tr_f" => [ N_("Turkish (traditional \"F\" model)"), "trf", "tr_f", 0 ], "tr_q" => [ N_("Turkish (modern \"Q\" model)"), "tr_q-latin5", "tr", 0 ], #-"tw => [ N_("Chineses bopomofo"), "tw", "tw", 1 ], "ua" => [ N_("Ukrainian"), "ua", "ua", 1 ], "uk" => [ N_("UK keyboard"), "uk", "gb", 0 ], "us" => [ N_("US keyboard"), "us", "us", 0 ], "us_intl" => [ N_("US keyboard (international)"), "us-latin1", "us_intl", 0 ], "vn" => [ N_("Vietnamese \"numeric row\" QWERTY"), "vn-tcvn", "vn(toggle)", 0 ], "yu" => [ N_("Yugoslavian (latin)"), "sr", "yu", 0 ], ), ); #- list of possible choices for the key combinations to toggle XKB groups #- (eg in X86Config file: XkbOptions "grp:toggle") my %grp_toggles = ( toggle => N("Right Alt key"), shift_toggle => N("Both Shift keys simultaneously"), ctrl_shift_toggle => N("Control and Shift keys simultaneously"), caps_toggle => N("CapsLock key"), ctrl_alt_toggle => N("Ctrl and Alt keys simultaneously"), alt_shift_toggle => N("Alt and Shift keys simultaneously"), menu_toggle => N("\"Menu\" key"), lwin_toggle => N("Left \"Windows\" key"), rwin_toggle => N("Right \"Windows\" key"), ); #-###################################################################################### #- Functions #-###################################################################################### sub KEYBOARDs { keys %keyboards } sub KEYBOARD2text { $keyboards{$_[0]} && $keyboards{$_[0]}[0] } sub keyboards { map { { KEYBOARD => $_ } } keys %keyboards } sub keyboard2one { my ($keyboard, $nb) = @_; ref $keyboard or internal_error(); my $l = $keyboards{$keyboard->{KEYBOARD}} or return; $l->[$nb]; } sub keyboard2text { keyboard2one($_[0], 0) } sub keyboard2kmap { keyboard2one($_[0], 1) } sub keyboard2xkb { keyboard2one($_[0], 2) } sub grp_toggles { my ($keyboard) = @_; keyboard2one($keyboard, 3) or return; \%grp_toggles; } sub group_toggle_choose { my ($in, $keyboard) = @_; if (my $grp_toggles = keyboard::grp_toggles($keyboard)) { my $GRP_TOGGLE = $keyboard->{GRP_TOGGLE} || 'caps_toggle'; $GRP_TOGGLE = $in->ask_from_listf('', N("Here you can choose the key or key combination that will allow switching between the different keyboard layouts (eg: latin and non latin)"), sub { $grp_toggles->{$_[0]} }, [ sort keys %$grp_toggles ], $GRP_TOGGLE) or return; log::l("GRP_TOGGLE: $GRP_TOGGLE"); $keyboard->{GRP_TOGGLE} = $GRP_TOGGLE; } else { $keyboard->{GRP_TOGGLE} = ''; } 1; } sub loadkeys_files { my ($err) = @_; my $archkbd = arch() =~ /^sparc/ ? "sun" : arch() =~ /i.86/ ? "i386" : arch() =~ /ppc/ ? "mac" : arch(); my $p = "/usr/lib/kbd/keymaps/$archkbd"; my $post = ".kmap.gz"; my %trans = ("cz-latin2" => "cz-lat2"); my %find_file; foreach my $dir (all($p)) { $find_file{$dir} = ''; foreach (all("$p/$dir")) { $find_file{$_} and $err->("file $_ is both in $find_file{$_} and $dir") if $err; $find_file{$_} = "$p/$dir/$_"; } } my (@l, %l); foreach (values %keyboards) { local $_ = $trans{$_->[1]} || $_->[1]; my $l = $find_file{"$_$post"} || $find_file{first(/(..)/) . $post}; if ($l) { push @l, $l; foreach (`zgrep include $l | grep "^include"`) { /include\s+"(.*)"/ or die "bad line $_"; @l{grep { -e $_ } ("$p/$1.inc.gz")} = (); } } else { $err->("invalid loadkeys keytable $_") if $err; } } uniq(@l, keys %l, grep { -e $_ } map { "$p/$_.inc.gz" } qw(compose euro windowkeys linux-keys-bare)); } sub unpack_keyboards { my ($k) = @_; $k or return; [ grep { my $b = $keyboards{$_->[0]}; $b or log::l("bad keyboard $_->[0] in %keyboard::lang2keyboard"); $b; } map { [ split ':' ] } split ' ', $k ]; } sub lang2keyboards { my @li = sort { $b->[1] <=> $a->[1] } map { @$_ } map { #- first try with the 5 first chars of LANG; if it fails then try with #- with the 2 first chars of LANG before resorting to default. unpack_keyboards($lang2keyboard{substr($_, 0, 5)}) || unpack_keyboards($lang2keyboard{substr($_, 0, 2)}) || [ [ ($keyboards{$_} ? $_ : "us") => 100 ] ]; } @_; \@li; } sub lang2keyboard { my ($l) = @_; my $kb = lang2keyboards($l)->[0][0]; { KEYBOARD => $keyboards{$kb} ? $kb : 'us' }; #- handle incorrect keyboard mapping to us. } sub from_usb { return if $::noauto; my ($usb_kbd) = detect_devices::usbKeyboards() or return; my $country_code = detect_devices::usbKeyboard2country_code($usb_kbd) or return; my $keyboard = $usb2keyboard[$country_code]; $keyboard !~ /SKIP/ && { KEYBOARD => $keyboard }; } sub load { my ($keymap) = @_; return if $::testing; my ($magic, @keymaps) = unpack "I i" . c::MAX_NR_KEYMAPS() . "a*", $keymap; $keymap = pop @keymaps; $magic != $KMAP_MAGIC and die "failed to read kmap magic"; sysopen(my $F, "/dev/console", 2) or die "failed to open /dev/console: $!"; my $count = 0; foreach (0 .. c::MAX_NR_KEYMAPS() - 1) { $keymaps[$_] or next; my @keymap = unpack "s" . c::NR_KEYS() . "a*", $keymap; $keymap = pop @keymap; my $key = -1; foreach my $value (@keymap) { $key++; c::KTYP($value) != c::KT_SPEC() or next; ioctl($F, c::KDSKBENT(), pack("CCS", $_, $key, $value)) or die "keymap ioctl failed ($_ $key $value): $!"; } $count++; } #- log::l("loaded $count keymap tables"); } sub keyboard2full_xkb { my ($keyboard) = @_; my $XkbLayout = keyboard2xkb($keyboard); my $XkbModel = arch() =~ /sparc/ ? 'sun' : $XkbLayout eq 'jp' ? 'jp106' : $XkbLayout eq 'br' ? 'abnt2' : 'pc105'; $XkbLayout ? { XkbLayout => $XkbLayout, XkbModel => $XkbModel, XkbOptions => $keyboard->{GRP_TOGGLE} ? "grp:$keyboard->{GRP_TOGGLE}" : '', XkbCompat => $keyboard->{GRP_TOGGLE} ? "group_led" : '', } : { XkbDisable => '' }; } sub xmodmap_file { my ($keyboard) = @_; my $KEYBOARD = $keyboard->{KEYBOARD}; my $f = "$ENV{SHARE_PATH}/xmodmap/xmodmap.$KEYBOARD"; if (! -e $f) { eval { require packdrake; my $packer = new packdrake("$ENV{SHARE_PATH}/xmodmap.cz2", quiet => 1); $packer->extract_archive("/tmp", "xmodmap.$KEYBOARD"); }; $f = "/tmp/xmodmap.$KEYBOARD"; } -e $f && $f; } sub setup { my ($keyboard) = @_; return if arch() =~ /^sparc/; #- Xpmac doesn't map keys quite right if (arch() =~ /ppc/ && !$::testing && $ENV{DISPLAY}) { log::l("Fixing Mac keyboard"); run_program::run('xmodmap', "-e", "keycode 59 = BackSpace"); run_program::run('xmodmap', "-e", "keycode 131 = Shift_R"); run_program::run('xmodmap', "-e", "add shift = Shift_R"); return; } my $kmap = keyboard2kmap($keyboard) or return; log::l("loading keymap $kmap"); if (-e (my $f = "$ENV{SHARE_PATH}/keymaps/$kmap.bkmap")) { load(scalar cat_($f)); } else { my $F; if (my $pid = open $F, "-|") { local $/ = undef; eval { load(join('', <$F>)) }; waitpid $pid, 0; } else { eval { require packdrake; my $packer = new packdrake("$ENV{SHARE_PATH}/keymaps.cz2", quiet => 1); $packer->extract_archive(undef, "$kmap.bkmap"); }; c::_exit(0); } } my $f = xmodmap_file($keyboard); eval { run_program::run('xmodmap', $f) } if $f && !$::testing && $ENV{DISPLAY}; } sub write { my ($keyboard) = @_; log::l("keyboard::write $keyboard->{KEYBOARD}"); $keyboard = { %$keyboard }; delete $keyboard->{unsafe}; $keyboard->{KEYTABLE} = keyboard2kmap($keyboard); setVarsInSh("$::prefix/etc/sysconfig/keyboard", $keyboard); run_program::rooted($::prefix, "dumpkeys > /etc/sysconfig/console/default.kmap") or log::l("dumpkeys failed"); if (arch() =~ /ppc/) { my $s = "dev.mac_hid.keyboard_sends_linux_keycodes = 1\n"; substInFile { $_ = '' if /^\Qdev.mac_hid.keyboard_sends_linux_keycodes/; $_ .= $s if eof; } "$::prefix/etc/sysctl.conf"; } } sub read { my %keyboard = getVarsFromSh("$::prefix/etc/sysconfig/keyboard") or return; if (!$keyboard{KEYBOARD}) { add2hash(\%keyboard, grep { keyboard2kmap($_) eq $keyboard{KEYTABLE} } keyboards()); } $keyboard{DISABLE_WINDOWS_KEY} = bool2yesno(detect_devices::isLaptop()); keyboard2text(\%keyboard) ? \%keyboard : {}; } sub check { require lang; $^W = 0; my $not_ok = 0; my $warn = sub { print STDERR "$_[0]\n"; }; my $err = sub { &$warn; $not_ok = 1; }; if (my @l = grep { is_empty_array_ref(lang2keyboards($_)) } lang::list()) { $warn->("no keyboard for langs " . join(" ", @l)); } foreach my $lang (lang::list()) { my $l = lang2keyboards($lang); foreach (@$l) { 0 <= $_->[1] && $_->[1] <= 100 or $err->("invalid value $_->[1] in $lang2keyboard{$lang} for $lang in \%lang2keyboard keyboard.pm"); $keyboards{$_->[0]} or $err->("invalid keyboard $_->[0] in $lang2keyboard{$lang} for $lang in \%lang2keyboard keyboard.pm"); } } /SKIP/ || $keyboards{$_} or $err->("invalid keyboard $_ in \@usb2keyboard keyboard.pm") foreach @usb2keyboard; $usb2keyboard[0x21] eq 'us' or $err->("\@usb2keyboard is badly modified, 0x21 is not us keyboard"); my @xkb_groups = map { if_(/grp:(\S+)/, $1) } cat_('/usr/lib/X11/xkb/rules/xfree86.lst'); $err->("invalid xkb group toggle '$_' in \%grp_toggles") foreach difference2([ keys %grp_toggles ], \@xkb_groups); $warn->("unused xkb group toggle '$_'") foreach grep { !/switch/ } difference2(\@xkb_groups, [ keys %grp_toggles ]); my @xkb_layouts = (#- (map { (split)[0] } grep { /^! layout/ .. /^\s*$/ } cat_('/usr/lib/X11/xkb/rules/xfree86.lst')), all('/usr/lib/X11/xkb/symbols'), (map { (split)[2] } cat_('/usr/lib/X11/xkb/symbols.dir'))); $err->("invalid xkb layout $_") foreach difference2([ map { keyboard2xkb($_) } keyboards() ], \@xkb_layouts); my @kmaps_available = map { if_(m|.*/(.*)\.bkmap|, $1) } `tar tfj share/keymaps.tar.bz2`; my @kmaps_wanted = map { keyboard2kmap($_) } keyboards(); $err->("missing KEYTABLE $_ (either share/keymaps.tar.bz2 need updating or $_ is bad)") foreach difference2(\@kmaps_wanted, \@kmaps_available); $err->("unused KEYTABLE $_ (update share/keymaps.tar.bz2 using share/keymaps_generate)") foreach difference2(\@kmaps_available, \@kmaps_wanted); loadkeys_files($err); exit($not_ok); } 1; }�#���� ]���Nr�"�S�Qfv��mTΝ���� �|�ˡz��nu%��x�V�Rsw���P���k�P���+���.M��D��̋!PK@�-m½���ܖ��.�R���h�+��_�wO�c�����8#?�x~R�?l�j��]�x���l�1EfpOײf��0dF� : �%l�쁌�����b��#<�� �h�(OL1���=�s>&_&)4m�E`��N��Q@��N���on�1d�=�M�� KJ�\ܼ�X�Z�A��p�(�fT4c��W��u�v�o�T0�y���Q�2h�����֝�̨�!P&q�֧W��/�ZX@�[X��h{��)�,fU�%Vq�6���&�`|Q��G����]#����oU��2P|�"�7ݖ(`��Wμ/�a�ǧ�6�����KFNi�<��W� �RA�^���K����ɛ�w_�Z�M%]ud-���T1�I$�~� ��4hu�H1�@�읧�����<Pƶ~Ǵz?�ᮅ��o�F�9F��YXK�rSʵ���9T`0??�KI2����,��֦�p_���.�;�Pj�a�ɊK� c~��{�{�W9�����m����}�G�h�S2;H�p�1܄ �r��ڿU8 ����!s�r����b���՛�"7�I��!��6]܄����R��� ����~�4�g������b�@QRO���^� Sk������&j�V.S�gI��=H�(����jL�ƚL w_�����驼�$. �d&�0V�4�����HT��IK ��E���y_�O�9_x ��*n�5�tF[��!��Z�����H����*|�J�zjn00g�-���G�ȹ�jd��Baэ��:=��Z���i�n ��c�*p����M(h���ۖ���e����K�پ���/lh5nԄ�����~=� ����J�����x�W�ѻ��r o��~F]��б�_�y���J�_��l�=�s��4�O�J���R�~��:���#��w��"!kA�W8��!5�[�(��T�o���Б��0�`������{�/Z_�Ǐ��o�0��G�+�T��ދe�ĺ��6Jf��� 6jD�Wu:h�C4Z1<��4,��b�K%&ؚwo�7��iQJ��M����/��WE���K���L%S�A0Uܤfю���C�뀢u��UrB��+�<��QF�_����e����:�MvA�Z�,�T��?� ���LO�� =�}��uDm��ߎy@�����{�j1��y���ظ�h�k����TuQ,�Q*35�bW�ά��N?� S�_9�hZ��[�N�lJ� �$RH�R, ����cu%TC�k+o���I�G�]�u�Q��M���RL5��y�X7ѵ|�wnV쐔:��?/�3U����m�2B�{)�k�_����m��w-�3�S�H�h��q�;>D� �S��$�ڸ��a^G�t`�K�^��:&��r�Ҵ��5� ��B�E�m��g�#^ M��SЖ:���,�صy��84`R c�w�N���dк[&�G�įOR��6�-Wd��eۗj�&�Yق�$]_�1���Q��/O�T s��XCn\&@cȣʩ�!qR�7�K��C- ����x>��t<�Gz)�u�������*Ƥ뼞yW��ч)�F�>���oP�SO�������z&$�RB�ζe�>��0����!��H|���%�<-��*�s9�;'s�'�!�)o\b?.d<I�M�o��0�ܫh T�$N���y���;�J4��d����7�r�[P�@�����{ �a��%@���V�O�l�>�3�X?g�7�d�=���r����j�\X���푇�="K�&W�,�y/�Oa�Z��W�(\`אY4�}Δ\�,�[k�\�ޗo����d�\�o��]��W'����/М�)\��UJ�E!����*������d�4Wˠ�o�J����T���!N�tU����Mrw�&)�������v�xpʣ�� �*Z�7��U4<Q�;������j���S��r����������-��/A٩�R�7�$�"��U�&��&1=��?E��|a�aR41hy4�gB����y�R(*��@����Rz�8y7sMɖ>��ߙ`�i}�����w��}k��N�I7��%�P�D�q�L_Z%!{�I�$�J0��ɢ#�֫���C)yV��9�ُF�\F �&�a���Ի���b{a��]�''��}�p���ʵ�1_���x���C�/w�aa`�r��Sxoi*��?Y�6m����|S�>��Oo�8�'��I.�V���3J~2\R�oTW�[ɻ�� ������ֈ�B��������4�~;̕�Ł��(=OU�N���d�$9��3Yk*,r�k��ܧ�����SLj�סAD����L}��WD�����+V^K�_U3 �^J�'���]ª9%J�����Ӛ�4��(N�,��}T����J�����-��&gd�J�2��x�$ɒ�6�~�U'dU�P��J6�#�e$$�z�-?��@p�}d��$xR�&I�HB4-���,6o� =����o;MۻM���K/�㞤UI���AC;�O��juȷ��F�����q���G�Dj~%����?<���{pӛ����wj�,�Tu�1P�� ��Ð��R<$�^��(Q��L���P��g�����g���;�OQx�T��5����2�ȭZeK �[OY�(�1�8��~W�<���9���s��,�<�"�)�v5����_��纓Z�[u3,0�ca|aCn��Op{�"q�����X��,=�ń�Z�dH���MP��bY�WlX�E4Ш�χ��L�_x���D� <,����_��٪:�§6���.G T&T���^kT°��ԁ��y�1��=b��=�ևr�����e���f�"`ҽ���k�-�I��ўf���+�}\���<1i�!^l�������B�/�rt�$�����K����]�Ѱ��W���Z�����6\�OX ,�t��g�� I���?@���/�u"�.����E���T�?W)���a�A�T��NAb�Z�'��@� y��A������?�¬��x�2_��ghh̲�K<!�2�-�1f���$�nO�:Սt���w�_)� �(��H��L�y֑Cd��L6�� ���:������N���������|�YXF9y�7�k��](v$Q����a���}�X8TV9&��i�ꖄ� �9��Β�ݿ���v���`��c��#6���Bk�!S�+[ß���^Ao�L�y�� 5'2ԷDa�<H�G$q�����m���z�9�2��<���q_�hd�S�K]�[�\g�\&�4*� ;%���K+R۹K�z��$_�w��.t�����/$1�=���_�"s����O$��Y�Z�M"ţ�{ �2l!��-��,����p�lI����������d\ٚl)��0��/�a��.nTs!Π8�矘:w~�rprzp�_|~J���/�\���g�}}J���2ؘY 䎯�cb�T?�&�N�\N�ON���Y684iL�2z�5���Lc�S����#~?��U�M��p�������^��33&�T�딿Ir��zEL=��ykw�S]����{��;:!��G}��.R}�(����-@�k3^rnY����� �y�z�z��!�Z�% �<��k��5�n��+;,İ"�d��dI��U-�?``��d���b�"���� ��7� ��=�=�����P�Gs��z���_����O�蔬O�� j6 k�S����:��(#����1��`�x#��y�i6`g^g��������{R��(�|)=�՟f_HW���"�UW}c��+�n�b�h�_L%�c�:w ŔhQ��ŋ��mtg:�a��yq�A6[N���X�MzE�nS� L{��ALr,�n�1�p�':���� �hyH�m㐿 -�4[ ����eA�<��*�[X!5��|ʳ.�C�?3[�Fģ� �[�r�i��y'���{����ݱ�� �T�Q0!�>��x��[��;�p������^ε�>�]A�w�4.�bY�W�#ӻn*'�;�ߑ]��`���2*�x��� Ȍ�C .��K�I`.��9�R�k'��}�����������¶�рVY��#�k),���;Ye͢ H�_��!s��I��(|�`�`� �o��f�+k��ɰ�������m����H��Yv��Q��h˫�zʼn���F�7M�w��F$ ����/��'���(��"t� ���� ���PR����,�_I)c��@J)5�Bp�����ћ����f�GY�b����ڃ�.����Qȇ*rz��׀up&mü�֑wu � ���{ ��'��x�}����e���������I���l��ƺ�5���2G=T�M�i�Łl3O}�Q��c.;:��Z�� <o,��D����;�@�4B�E�ۻ�5k��jm��R�_�+>T]�.p�[JR��~z�w�Q���0< �pY�JY���է{U��F��HM�5��|eJ�s2�Kc�Ӧ"�ʾ ��ʕ��9Z[sT̶�`�e���"z��D�V+�Jr���,'�U�H���X��������5B~S�q��r����$��y����+&�����S���R��/�q�@��r}�̆�� o��4B��� |�$���`�@�ѐg��W��d*� l�!Zظ����3�X���Y���D=���J��C��� �(�9i��ۏ7�d%{��:6�r�l�NijY���&�r�5��?3+�9Ɂ��S۴�-Ɋ��q'^�Ѻ���2��MC� ����{�!IvNW�l�p�G�Vd斂�h�Y]L�L��G]8�q{�b ��k�XuƊ4����<�-7^�:pgy˼QX�ǂ3Zv� G��xL.�At��1 2�=�Pӫ�Y����;5,tw5IA��gR�{߶��H�CS�꣬F��C���%�����e���BZ�;2i����[�V�E��%hc��Y��B?i~���gr�o"�l���"��M�;�4��?�/��?�_ߪ����ϛ��[ߋ3�d)U0*��ߣ�)%UMj�YK<�'>#��x�����`L���R��88Ξ�����ybt�x�',��9o:yY����X�G"d��3\#�{/ex&��؏G�.��}*���4��oq����%�+������A�3�$X�u���U�X=� ��y��&���:�U�ռ���)yӰ nX��Cõʉ,��7�H���P���l$v��~�K��zcFAS7�"��'b+6��!@�XAY�it^eVL��o$U7�n�@�T�t��-LL�x�s~� ���&H�7H2ٕ9%����&^�ȍl�7�z�K������t!��������$t�W3EK�f,.�Ԣ�"j�ٺ\������ɺ�83T�����Kv� L �+-�f�w��M��q�a_�n�i5����ĺ�}��z2�!~%�� ��!�2�{��nL�/��CŔAL����VẠj��qgO3�H�V,T��� kh�Yy������^�k���[����;'�Q���6[9qe:�m���.����N�X��]��~�J\��1k�4�XEذ�� ����nЋ$cS����J�G1G��G�Kp��f�GL�Y�����x�$a0�e���B3�'x��~��V��rF}=��5�z0��\=; G˻��O�S�ȋ߉J�ҵ�o-����M�>��~���rLq�A@�m��'i��g�9SS�w�D 6U�|�#"�6> �Pn��k)����j{h>����fإa����J^`�|$s�;�Ɖ�m.B�q��O]�\��P�l���(�]�Ũ�R�t �2���>L�W}��y3h�\���y�KK�M`xt�N��k��1��?��Uk@!*�:ɺ?Y����W�bvk�1�>�&�x�-�U0�M���D-�h�Ѽ�P���mһ[��t�*�A�z��`�����R���#O�^�y�R۹s�8H��ϒ�4��rL��>`*Ӟl�V��Ƙ9KE�6���_r��MA�_�4M�c����-�@��lqTE5�x`&@N�һ�=��E�X�, �?���"��x�}�`(�L���4� �0Dëhns����{�5Z���B(�\`l$��������Kg�I���~+ �(cأhڒ��jO���Us�d�j}s<V*b��3g��O�e>S:�P�}� Ǡ���ӥ�"�ϔ˅���O���MR�C�]��"X��Z�'x"0�Ѓ���"ʑ�Dѕm���t�~25���I7�J�����{ u{��we{^�SY�8F�Gȯf�zj�����~G�:Н&Ov�Zw�;g�B��O0��������j(Ot��E��X�Q��%#&X���y!a�b�_��V�/s�0�g������C���ÿ@�f^!e���wV&�2��.I������e�6�:�;���',$y�ߗ�B�k?�j#�kTp����wi���~S�]#�2vx=� ��VbFr����zkv3Mxjq�^���P�AS����p�A��~b���q%;�Z��YA�+ *�*�Tsh�V�H���/#��ɨN{\>0/�L��1(�}2Կ@jp �h̖�MW�v��92�54$�ډ��6�j�,���]=���PyS�i���FB��� ��N �+Gkk��Rr�Ӏ� ��@+|s�JX���e��Ղ�-�a�#�����2}�u���ŗ�>�ķ?�RYD��gI8�4�%eۓ6!D��k��Q��}�,�s��+�Qw��(!��|�+O�e ]���G qO��c �m@�Kٿ���d�D�7B���u��zdd{��Lc�P����@3;����b�G4Z9�cK�ꁶ�zs4��b�S`�oMm%�=Kw��dt��p|M���O�g��+�䆳j��P���'_�����K���Q���MNGaF������^��� BѫD��^�i�o'�$��j��U yL�c���"uv�^��@��}[���F,\�Ѳit@�=6��s�ߌ6�̢�B�����L%�3����l1�>ltZ�h+��1$�GÇnB���_@���+�J�:;E�B(��\.x�����.�"'�"�:H�|��+;�,��X�ŗK�v��Ѻ��|�_X��W�f���*�n��#Sӄ�>�"|�P�&t�T��RX�k�E* ������WiAI����L�4^ ��X��ѽH�4��T��?���'����r�T�hŦN��LlJ�YB�r��j��̦��n�q"��8�Ϊ��0���r�� ��GS{)�/���m�=�M��7W'҅� $A��S��$$ �ia> �_f<s|G7Ҹ��< �cQ���3����)T�D�hB^�Љ_3D���m!�y�P�U������]�Od�龨�ۻb��'w����@��.ok��� ���*��d���x�ȻQ�B�; �����ߚ��h��ȑ2�s�\W����ՙ����g@e��d�����*�wL�A�Z�����F�O��&Z��N��jۚ���SU�0(U���xJ���=��d���N]�9�>���[ R6�ok��Ւ[�BrF�%��в�E�O�fW�A�D��*�ȅ��1�Y-���7����C�:�9�q[k(><��-`YI�#%{s�!��x�m_���Ƞ���rOEo���Ht��D �75��։��v�(}[�>��p���Ŗ�֠��s����v+ f���T�g�86�`�3����Db���g��1�Z�#� _E}Bq�2@���+��h�rʺ'uX$ �8L���ý�OT����^�tj9 C����HV�����qI#�����K�2tr����G-��ܒ��"<(e� ��"{.��c6�dШ�$����<�[��KuR��@�����M�������+���|����I���벀.�����eP�T�� �<X�t���a^�ꐳZ��v�?�J�\ٮ��AD���B�~��r70�{�;���j�zQ�*���*�7[a5EW!�&��%7oO�ز��̹c���9z)�2�c�v�e}��(�M��'?�'6O9rLt�=!��b�zZTl�]���ܚ����d �O�z��;�^r5?|������U�s��O��P���r�K�!ϊx�.1$�Ɩ���1<�M�l���fh���M� �� t}lj�����~&����=ܸ���ڲQ(u2�j�7wb^���f�z�<�i��۱���.��N%�g��td|��]��g���>�+,``��S�.T�����9��+YDp���ت�Tx���g��4��� �DE�R+���a �eSڏK�Ü��Ԓ���m���k"!\��c~=Jɣ)�Ī���,��ݳ��\1�%A�����A�m�؏Q�-F ��|��3ّ����&���;O�QjK8E�D�jP��}>�&f����qg�J7<�&�Oޔ7�8�{����Na��I1]n���4wm=]��#�WO7|�6���i}OӦJ�Q'��^8^t^���}9�!��:�����d����� �#���N�����v[Kĥ�iq�$,m��eP��Q��.Ԭ��,��"-����~���gZwٸ����H Tl�t҃��.6�%���|��x�ID�s�p��?�|��,����1@�d��l"c6���囐�'�8q���ʌԡ4юX��\q��& ����U�Zs����X[�@�á9��=N�ʲ��t��Bt@R�aDF���D�4��7F�n3�U��X��x�:� ����d@�$Q � �tU����`�������}�<��$�=�ri*�ʺ��+�r��^�É��}��azBv��1�)��.�邢C��++H97�gn�N5+�k�@��ӫ�>4�`>�����~��~��G/Q��5���7Dݑ!#���ۺhgE�~+_��������j�6G�oxx>��U���W��zqO�����/aq���5��fR�>��G�9q���f�ׄq�ޫ�bp�#N�FT7l�,2{�4�� �� k^xtA�V ��M��)$�W���I��(�`�A�H+x�O�^u��~<� �W����;f�,�o?�5e��]�#��ֈ�ԧ��)�Ǝ݊#��O��(5i{Q�� �A�1bK;�h��(v��y�[EzQkm�![�����^ ���:�tJ��zE����j "�%n֯F���{�Ѻ�ZV]Y�,띑 {m�q�d ��C�9=�2y�E/�y<��w���"f`�t��W��e�7�����~��OG��m$`G�G�]͐8hMl[������֔:�"��$���F���0ؘ���Y��_�s��-�1�>�lft�{�h�h��m=��%�C*J��l5�Dzԛx\�+�ss#�!�܃���8�� ���CD�� �x��`�Q_]�V�\�S�ڤ\yñ��1��Nt�5��t<�.L�:����$ډ^N�,�=�4 u�^���q���n���+�Bj8CDM��%-�a`P>���˺�Y���ʽ�I�EL������ lh�P֬�?v�Eww^�+&�'UlI_O���Ǩw�@�k�Ip�?\�`���ĺ��*r���~;�oQ�O�K2��e��S;�r{��ܩz��i���7��l��L���y���o��R�%��n�[O�ݿ? @#=���ڀ���9W��O��y��'UR�D~W�*@���"� y�PϯG1�2Z�T�6�M�W6�`K)�t�s�h8�V���ZHKO'�/�n@�^����?���Ka.W�?��}x��wt��:ߏ��;8���ydq�&� E�i(�G� j�A�|O�|��,P��Ԕ42G����;��y}������E[��!�P��o�kŅR�^�e������;�c��$�1���G����,jU���7)+���J��P��"X2#x?�E������0;G5zj���\W��77Ƕ��N�P���(rh2��,�E*n/�$r��#O$��?�+m�,��PgЋ�6#����WU��V�;8��������j��N&��i\]�u۬i����s����f��pw�������^�� ��R" ��n�6�0��h|�8O( �]�$`�jj�d,����w�9��+�I�~��U/� ���<Xd�6��}:��OjcF��n8�*�5 �������S���w�@,�Vq0�;(�t%�ܜ� 'E��D���# A��~�F��V-� D�������)k��/e^)�u�L��Kkq�}Z�\�xY�rퟬ�:_�Z�J?:2J���Qn � ��ɳ����kXOἥ�?4ֱ����N��o��Q+�P`S�%JpV��Gx��>4��o�����]y�lV��uƖ���*C�R{w?҅YdG3m����ƃ��Qhh9��z����FF�ս�6��q�DM�] t�U/8�`z�T<�Y*��z���ݠ�+B]˲��D�t�NsKz]���U��q;H4����s2���C�����bR�A�$��r-�?*�KP�Y@�m�G��a��`�Q.�����C�����+��o�^F�L��X��AA��� D�[|~z���)��즵��@�D��a~<ǎ������'�@��N�l �NP_<�ҥ?�1�B<��I��nh�5m�)�eC�E'���������j�6�.߇��@��F�c��J�)�����zY�,�L�G�c��l=~�'ݼu���7���Φ��b����.�� ZE�������� M�B���Ra��t)8s�N�����U��,S����r%��s!���n��~���؟�9K����z�g|��{�S��S���[�G����3<(��\g���NB��#��4K¾H����\x��]��^&l�L�42��4�4����5�b�����b�2�t�#�{���㋒���7Ap���s�+�K��f��E��� +�Vin[ܷr�ß�����e��FWӆ�y�S%�}��^�uQZ �Oտ��V��������*i�Y�e�;���Xж�¥=DO&��$��>�d��w�O<������b�mH��ث!��>6 ��?�ۗA-�i�Hv$$�H1�x4SP[���&�m)��m=SW+�"�v�UQ/Һ���`̩�7m�N��(�yӎ5�&��t����^��"�;G�ơJ}�ꢤT��O�\�Y�ݞY�DN6�`�[U)'W�P����ǻn�ƈot�J���@���~l��;�"����JU����$��b$A���u�h(/\����hQ��x�9� ���]�GYMM)��sn2�{�p,v�foc��v�+����[����k�bri3 D*+��0hdqȑ�搹0�n�+��U�͌2)��hi��:L�46������q)��%xh��'P�ٜ�A�}ב8m��b�p}�Qi��Eۥ|�e�螽����Ǯ��_b>��YV50�x�����-um��m���r{;sGh�M����Ù��P�+1UM���wa�X"�۶���<��6���F���K����&��'�#�k�r|��A��-� �Ѕ\���쒾�����j��+�b�+y��/ϛ,.��v�;�$�dA�/�h�u��������Ǖ�d�IV��`6A�6�� [I� E�u�Ho�~����D�w:$�St�v����\�NU���]R?@��s>���F���T�m��"RkUy�~�e�9{]�+�c3%h�`��`�%mtz�_��&W�g#e[Q��P���jD!)�9)]������]���jÅ1��0aU!i5�h!φQPPi�����s�zr��wQ= ������Nr �>��zO6����k�-� �`}=0�y�*��N�"��y˥+I�@A�pb��i�U)(z����c�_���n�sD���s_Z����<D8�}�RV�9$�Id���%�$)O�I����H��η�u0����'<����ԧc�0�j!�8[8���?��}#���b( j��ʀVv����V>6�����Hn��)�Z�xN�_U��4�(5MZ���Z�����i2γe�w��d��"�m!��\�Z�ˊ����N��K�8.J ��e� %۸��qR 1(qES.���h$oݨ��V(F���"�u�����8�1�.eJn���g���?����-�x7(�c���/&�)/s�i�v=b�>E�Ş#�d@�W�)��ȏ��1-r��X���=`�KDMsn�7c9|(�> ����u�':UC3����� Ǐ��#�o�Iq�:�NcK?�l���yc��hS)nY��t�B]�~Ht��S ڝ~IW��u B�#-��N: ��t��L&�!9T'�6�� �߷�w���R �>V��E'���i痒�W �������� �i\Z�v�J5�I�qx�e� ���؊�5���ʞ�B�V� �4Ӡ煵���s~��/��@�w]J����o�~��F�]Wf�Y����j)_sW0�I��v�2H��8%vq�)kz�a�H]W�UN�F�Ǭ��>2�a��̺R����G_�*F�O� D�)ɶ���=H{Q ǚ��\sx���0R��0�>�"|�zNC�ό�bB?�Z��#�^���q9���P�Q>{ y���Q�j��j����o�o�S��Sz;qWsd,9����6�o��*`b�0���~ډ@R杄�O�F�繨TK���wf�#�c�p�W�QW�q��A4��pP{��/�=J�'�b�1�'�(��gi������o+z�#� �v���E��θ�y��r̎����u�t��`�Ü�ʽ�DxpR�oGu�d|��qehj$��:nӥ��cu�hjD������V��M� w?�C�h"b-�w�["����L�O��[8�ZԴ�*�ˢ�OꡪdE��k�{�=K_�x,O���r���q=�6|�~�P��(�p��� ,�\�h7��Kמ������3�\��܍�-T[-��5dnJE��co�OFr�s��iU0/���������Cw������Muu�[ (�-&П���+3Xg�e��6�HdG�$�E*���>�͋K8���K����;�"�<��$z��g Zjy����QE��HS&<C��j 0�ro���Y?��$$�uK���R�L�w��\� �w<����GĽ�Y���l�'���G{�f�2����{%%�TAj��P�@�Y - ��O��8� Eu0�O���ε��,�ctx�:�D�:X�h[:]h�}���2;j���< ;[(��6��(-�K�XE�:}`�K@�F�.��w;������K�Q�2�d>|O�l?�/�[�&]��L1���<�+�E<�a?��*,j�k{�H�XlB�U;U��UD �� ������ �?㍰_Th���u9RZ �!ѰfS�p�c�xw���.-�4��?���Gw�%����D^�y�ߍ��ra�rD�+W��k'��{Ϥ�(��mI�䥞����51S�ޢ�-V�ɩ|�n��0�L�Җ�Ӎ���.}��3-��L����O'�8�1Y�P�@����T�?�|���$���y�L�4�R��*�4~@R�� ���C}o�C9q;0��Q��TN3���GcZ����.5>�VZ"{`��r��eO�)S����zI��� t��v4������߹��]Ep3�,�Ќ�2u?��ws6��Q+9H�-�Y �DX��V@y�� 9�ߪ�g���L�N˦�_��a����1}��F�f�& q��}�����B�2������b��`��Y�DPG>-M��QFp�~��/����"u{��tBk>�A��m;�n�y��T������_���O�`�F?�2��3���e����r�(�t��[O�=�cY+�aP+̲�G0S.Mw1��s�b��Ux�6����T�T��R��BS��n�zk�J��|����3H���*wݩq؊}�m|1� �a�&T�Z<-�:�@��YE����\fȋ�B+-!�s�O*�FU`�8�YJ��J��ǭ�A���L�/��o���&�������+F�%�!w�5Y�Vjw�����Nkl<��*r�[V�~�s��x�<�UX?6h!^�4�|5~�XMhP��7W' �q&d���0ZE�h�ur��"W�F��n!���0,�I�(G%������v[�*��sr,g�S�ܴ=��E0�)�ΆQ� ��U �Ü{ə�齣=��.f�j�#�b���|(HWzw�kD�T]��_U�����궩{@"-�W�le�$�X��j�R)�nO[��l& �c�Rf7J��l�Ώ�N'� �,QL�m��Z��L�.H�z��`�����̃�����x� ��#Ę� J�bgAϩ���s�\-<Y�=R���Xm�T�F��(~��pC�𩗩�9ּ��V�K����>�6?.��ӡP0a<��7�`P�*���盿��Urx&�,�P��5��t�%�� ;�,^z)������80q�Y<-�]�^;4�Օ!�x��2��f��6{��N^^ވ�%C;����v��`�����k���"�;�-����e�K:����NԶ���$$ �K�!�#���J��VR��>�UĀ�(yr�a�;�<�]��d��E���}����Ά �d́Me��O�A���*�G"W��):�K| �,���ȹt�\3~CM����Y���2��w/��$�H�IsOg�IY�L>�l�\)Y&7[|�Sβo����u��� �\� D��R��.�$� ���P��/@V��:,{����f�t��T�� 8<�I�ο�1�BIh�ь�m�[N�i2�1GJa~�YԐ����7��n��d|�� fD�X+A�8��<$�c��snJK$��*�/oi���BV��ts�l�@��P��i��W����A�e9`�]���Q7?��,A֟����<vj�<d�,�ɫ��m�U%�6�cB�#V_S�g�\�5���b�H�<�k�<���#�_?��$|ܬ�f�c�� �TI^2�\m��Z���`-8v?� ���<E���b(r�] ����8s��Q<R�����F��������M��<�~�X!���*�Q��ȀҊGj��*}0��)k.Й\��[�`��`�����:��#�jFf��d�G�SW��<���B�{��х�5݂��(5����X��C?�G���ւ��2"���D��vS��Gv9�x*m��~��������/�#H����g�QLg7�O�L�\�̂�&Uέ��K ��b�Ã������vչ/3!L�l�вx� �HTY�z0�k��Yꂡ����S�yM�E�}jSL�ﯺa��2�$��ё��_��(ڂ�7ո{6��7�JV}��g�D���+E�JU��M���hf�%� ɘ��.�7� :�C�2�m(t��l�NFY�>=(<�[1��+ZT� �^04��d��j���w�z����)Tˋ�'vrJiߗ�M� ̚(R��N�-B��-<>�"X!��Zn{Ϡ{�.�iy��-�h��^N���ΏzFR�u�@,J&���<j��}Vm�Ј"�m����'��Oe�� 3.\P���b���VJ��Ƣc�'A����ΑF�HU���F���"鼍o5G �k�|�/�a�a�������H{6� ��N��r|S�',�w� 7�J�F%ȂO�g�/ h!H�3C�{Q��U<� �Cļ�CL��gp��EnK�=/z�O'�n;ѐ�I�r�˘��eh��B���'c/�/��;.�B�1�)��"���mj�mK�����;�-�?�}�����7�6��&��)�?�Z�J>�`���Z�F �Njf�"r�T�od3T�*�iR��_+��TE)H��(0��2UQ9�!7��2��v��1���� ����R���U�|�#'p�Yg� �n��Q�غh��<��3���\���[�, g#��_>2i=��s��/���N��$�h�[Y�z2�i���f1o��ܛ!��M��[�A;W�G^����u��~���u���~^�%tަ�"�G~���U5�������I�H8Cz���L<���%��R61뻦�X�Y��Q�����YlpI��z�^>�3�� @H���1 q�W��&s]a����}���)�����A#w�y�I-hL{�{.�qf����ĺ�d%B6�]r�*w} ����A��� ��q�I-o`�����p�@�<眒*�"����&mc���n����}�S;�mE�{�S���>��Ժ��m6���� ��bH$��*���Z�|�P����6�%Cxj�ٻ��;���dٻ�.s��is�8í����:��n2���[�)J������g��v�hkq�]2��h���NZ�!fs�D掕�7Ҋ�9c�,�tX2�e�?�O��P+i�;�U�kY��w��L�9���Xj{�Nk>?L��kI���J)��+� �>z��o��j�Ўd���e#�������8SC���L��4l��!�ކml�����\��;d"8�:��'8�گz����^��Z,{�A���j�~�N�S��D�������;�g�<ɾ��� >�'��iP.�S3��[o���-�m�'�}��XC��;FѦK���W0/Q�_�!h�!�dCr�<�o'[C����OB��A�"�F�&����������3�ٍ ,؛ͷ���!i�`�Ϳ�8�Њ�_0Kڶ���:��/o��!ü:ƯS��84b��d��3�k3����H����A����Uob�T-h�#x@)#tf =�"HK�Y��6��p��xv���i�Pe�@��&�E|(]�`�&���<͘��IPvd�|��������Z(��3���)ˡ,�x:f+�8V�F��7�7�{z�ls��r�c ">���ß8\��ʿ�9��x��i�i�x�udu�.aTP��_����Mw�Ŭ_�����,U˻k��ύ"� �>�X��wÿ�-!W�����b�sQb��WYz���,K�];6j�u rp��`Kd�jz�^È�~�n�*m$�-Qt{�쪃"���p@��QC�E��lz&%���n�zӠi��ֻ�j���D|s��� �/�R">0��T�h ^��F�'.r���ƈ(k���(�垇q�wx�* @1�I�}b���L��i��o*�����ޘ�d�k�y�~�% ���[)숙J(��G�k����dN(�<s)���4eWU��]��V��,&��Nel���g��ʔn�]�s<� ��'��&�pbH�(����D"��MM@L �2��!��7M��rn�J1 �j�/��"�i��^ީv]e4���X2�v���[d�^/�q3ǵ1u�N<��:kn=vQ]���kܰ�2����#y/&�X� C���O��5��'%���r}�uu%^��f8�s^�.@I2�&�ٜ����5��<��k��M��L��/"� ]�-�R!,�ɂ � �eL����������zO�Ov�(�no�Ƃh*�A�͊mK�@�X w��܅/���o�K8�Br+��Y�&e���?�k�_u]����9�19,�60���C�I0��B���*���X�l�?�a���u��،1ڶ�E7�#g�Y�k�9�TB�����8X�x�l6Y�'��0��}��q�>}�KA���7�?9��+P�=��.�JV��!2�r�n#��y�/B"x1+����ݍ6���G<������B�<�_r/7��C��F�+_@�YEre��X ������?��[B�u,���ؘ��R�d�GŦxc2���j�pܗ�$g�j2��>'����9��x�\6�����G���u<8 C;~5�����w�0[ m�n���To�f���>�}�9�<�t���gd4p�d�-F���P��G����4�UD����?�͡�SB�xq��H 4C3D�4��9e���y�q��� �*D���\��7�8�������k��ś1���̠�8 bD��wƍ�<q�'���d�6�������� ��k��ADu?�Q������/������(���|l2u$G�Y��Ò��-$R�,��_|o߬Ȋ�B4�1��8�xڰ�1*��o������d���_f�}�o�A�[�۹��!]��g�F������>�J/S�L�*6I��]��6�z�p��}�EJ*\�$\(� ���)���YDž��\P�sS��S�e�MN�d�F%l�-@�!�͒iU�k����ɚJzۆ�zƂR6a�����k�uhvw/�ȟn�2��UfIRS��y��A5���e>�V�M��?8����&UU�m?�����0���7�w��S���F��,t�4Ƕ���f��O�}�sGY��yY���K�>�;�;��qB���� �rg���T�PK�z����ut�՟d��7�R�ΐS:��N�,~|�j�d������D��]r�ĢR�&������'�Z8�R�� ;`������������V� ��J��P�M�����*�Щ+=�y��F��� ��.���-�Q� ��T�n4PxJ-�r�����[:�V��ש��<G�(��=����A�y#n�Ǜ�%�%{Q�n��l�2d�<�:���4���D>��nf���52DM���ȫ퍍Aw��x��)���KU�Q� B0�d���"j3�E�Z��ntp�x�����KXp���+��㔢,�Gv"�5�3�K�x��ߙ͔����1�D-�S�y�}�`m�/�P�0F�!�z��+�5��;}��7IjEϯ߲^@���������Z*��9 ��I�H�O����VC#H�b���gb�������R�7��)�Fj?�3���d�܁0��c�R��fa ��^�,�8",>�h�w���*7�V�MD[��Ϣ��gΧPp�䶗��%B���T>� �a�Gz�X�����ۭ��p+sU�u��x7�e%eQ6�0�ؾ�i�>��oP3���3�����:$�K��5Sk���ԃy�<l�N���_��c�+Nq�p��*��k�P�W�:ڜ56F��9�¨�d��6᭺�"�z`�k9��I��w�bc�f�n̔�=ٞ�<��X;8S�Y����:� [�PGq4y8UL<i���v<hߘ��[�q;�HX���VGy�'�t�F&�ՎY�l�?���|D�X��s��cD�s��t�a�W���]o=�.m��ӃT��aT�1�՜��f0�J���'�ej��m��n�GV�:% `� �XQ�~�YL����D������=o�K��,i� ]�Pt�N��+D�yu#�x�[��������4���k���d� *VqVL�q�դ�A=W��=�-D�T�W(�=#�=����q����=}'���O�3#��G���Kl��ڛ�*���i�%�Ks��$�����z��{ d�o�Ҟ��c�\}H�gX` ��1�)��9��L�6̧�B�v9^m�&i[tӣ\Ȼ�ٟ谰�|�������(g@�r:3��ć�lҰ~M6�2i���Jlj�����#����7<Kl$RX� �)S��]���Iw#��`Ȋ�:Q���B }B��J:�Mן�lJB���|���l>;ct�kSyǿ��9�~� ��w�o�M��f2$Z�% �ק&�p��S����$CXK"`b�/�Ǿ�p�b�&��bhc�+<-���P<�/��?�G��0lJ�?�c��d�R���%1|�����A?��¯�Ai@1B(1A.�@,*��B��c?e ����)�LT�#�c�� �?�������@��%&�xDH�Nj�Q'R�~O���j��o��V��N������Ph@�)�%�cP������[����A����lҸX�:�ј���V��'�M�d���{��9KD��J��W^���'�1!�@�0�F�Nob����+b�͆/E )���0�h� -㒉錽(�S��*%��������k�����0e��JyUN�S ~K��l�Oy���ׁ�X��Ջ�܂�C��P�Hg���$�Ԕ��A�Z�|�M~ˑ60q����T�_(�u�DD�>���ڛ$��k���[�D��) �����Ң}!��t�㞻�3����s$�����G � ��=n���/�u�}�Ȥ����ܢ�.�D�Dn�/�"�8[Pf��bAp���_�⅕��|�~����H�):��ju�z7��@�^ �.�r�Q�ŪL�b�d��;p�:�g����mn��DϿ��\]դa�5%aR9w�ֈx(�S+���V���������^P�Q��:��;�2{��̆Hօ��.)P s�m�5|�ߡ��)JV�h���%���� �(T�J������+�D�]`C�!lLş-&��d�n��,�Y�tF$\�,�?al�+�� e�lQ\~�{��'4c#����at��.�K~�,T��Q?�y]{���7�4� ��� 4���ZhIS���y&/h[��C[F7/��h=4_���E ҡ����웪�5�7���2�=(�zIib��Ǩ�0p��?�3f�[�16�ꋴ��?�ǚG���Ob/�c�{��7�,�l�����îs�USOo}K�M ��0�j�=���|���<�kP�)�T���x�[� �M�'�\X��-���7����{W�{�=�E��;·���V)�����kX,���n�~w�@���c�_��J(��0i��K��+l����zm�!LJg�z�Am˵��g6Q{���˒'�:Jrd8���E�A�]f��J��Q����E���8����K|ۍeA��x�pR�b���o��Ng����V��2U;N��IrM:�I�/�?P��<b ��.(~��$��aY� ��c+�w=�|��d�O�$�� pp(|�'���x�����(��ϊ��O��W*��-�>���21�W7�n_��8:�~����j!����\V۔Rz�h � V@;ō�`�5z��/��i���)=�H�O{E%�Ja!"Cn��RL4��i(�� ��5��]t�NH?Z�H.���o/E3�3�SŃ6=M�-��V�0��w}'��?rR+Ƈ���&�t� ��j�(\K����\�!�YZ���\/�ROs��x�^]���idUISăd(����;t��|�r�<��F�D�����8�:);L��]����x⡩�p��.#��rj���_�J�f��M��6���8Yt-��y�.GfP7��#k^`jB҅Y������N�\�9��\����xG��dJ��%F���7�+�$� Z�=7�����7v^� �ZDC{f�8�W��l�s�tCWT�c��Ď�q����@��͂�ĺ!�m�Ӯ�za+g@%tLj]���[ ��*�~[x���Yd`�qg�z�B]��P( ���ޣ���S�D4�; ��p��}�\����P0���'�~c���.̩G�XTj�3�6ms�Y����0��R��0���M��"�y��3�)�H�O�O3U��5�Q ����v��'���2f�Yh7?�GsԻL:V�!�[x��6l�Z�{��@���&�&R���P�cD�����:$����S'3���ݳ��Y�'���$Q�z=j&��A}$�՟��φz� ��+36��>v|�v����:��1�[�%�b��o�4FA�Z�<�CjL�%{�2Z��B�|�a�Bb�k�'�-��,s�ok�K%���Mv�R�>4~�6yH�!�L�'"~3n�ͻ��o-hNS'��TG14���15�v���ə���i�����Vr ^�SXj��=N��~�X��*DX�R2�����u���/����>L���w�: ��H���Y���.�6�)eļT�=� E���eiaき}��n}����@>��I=�[\���h��$���~"���٨�>�R�'!�%�X�J�JU�R��{ֵP���S)�4�.Tvt?�dE1�9Im�:8��c�r���8f}@��6B�k��J[�=����������kF�1^��ף6��@:�K����&���dWj� �h[:���� +�D2S5�-�^�轟2& �'#3�WB�u�q���z�k��� ��R�ogl29�֚�v�6��+�[�'��d� /U?9h�f�4�ڈhM^F��Y��k��5��1ʯ�p�j_��j� �;Qa�^�'g��A�5�a���a�KF҈O����FP��V���� � \l��d1C��_����A����K���3����gP����L3��"L��&����Im�7r�V�yI*�m��4k\�G ���F*��Z�a���8JKԎ�+�$\���4w$��G�&��M5�=ߴ`���NPŹ�%D^��f�03�I�۔��nB���|�6�8��\<�]I��z��|�2��j�Ex������%��y��h��!�,�B{��{J.�R������F��9_g0�4|~��zD��P��M�����5/ɹ����J�H�7W9��@�m��������L�䑗����i�M��:��,��T��Y)�W�L��F�o� e� �+R ��ꕹ���L� (���O4릥q�+��4��w"Q�e����Θ6�}^���s�*fjZ��fK�TL�d--6�p��@��m3폡����TS���&f ��s��H����k՟q��OUĽ�b��Yu0ے�p<��`�s3�96C�E�����ŕ�'C�I۞�r<����N]�z����m��bP�.J-��-E�tpvƼ������Nj�5���B�z�t�kV�y 7OX��6'�G��D��G������/{�=��ߒe'z�$>��-1`�G�̈�Qhp}���A��$�)�َ���S�m`@��yk5m<���F���=7!l����� -���9�P�#�L�'��%��?��4rF���E���O����V�z1�Vf���s�Yb=�������okT�@� 5���j6�a?���+����Dj��0�y��W�̟�k�-��k�yI��W�9����Y녗� �3c���̐i戤��UϏ�Wz T�����P;�wTZS�ӭ��&pul|Z���l�f�y�Km3��N��N����:Ʌ.0,��[q�,��n��hKBb�_t�]-��V�zy5i����"�r<��)Z�&m8Y!fGgk�B �+�OЀ��f;Va��kA8��ؔ5��S�\ �(����.�#OHX�4� 8]� ��)�^~�l�3��K���2����i�>�ll���6�.�\��K�N�THDOŹl�-����$�����'0/�I�~���������S���V��Mr.�X�XSt��)_�����&3w\2���d-�tO�-�T ��焈J}��� I,�o��z��9��O�B�Z�Q�8�WeԐ���.�8|(��{�:W�R(��R_�n�>Ύ�=�H讗Ј��5`��hi�� �%�jG3˴��kVd6��G A�Eo�˄nDi�u���uG�1���,�n,'F���e4fJ�K�{/T�����نaz=��Zx?��; �t��-�㌱��*�SBV�xn=<e����<�#�Ⅲ�9�L܋���_��������)��inn��y���Cj��:�!��4�&[�-���B�KF4j�W�\@F�ٖ+�-�?�h�8^X�KT��+�I�aGD�C&�A)�З�� �1����1�?Z��F�A�:r]{]x���`N?�,7���sB�h�������).�S��Q�����Ȗ��k�b�l�Ӣ��tWʢ���ڮZ!�d��DL�^��!8�c�m߽w�_�6ДZrZnZP�%�8����.i!T\�F�ދ7���z�:�'�,Ȭ�;����~�,[��uѵ�����hs=���ć����^��`J�`�"2+4t��g,��.D@��=��|�&�ۃ�30ð�� �onX��X�k�.U��u��S�����A]z�C�����W���3�tGAÏE.��e}H~�X"�.�:����n�5�^�_)q�!,�9����q |.-�Ų;���B��:H\�JX�4�Z��;j�[Ԍ����O_L�c�,nzk��Ϙ��� @!@�2�hN����}D=���5�]F*"]d�v�I7*������9��9��<_"6H�p�}�+��ϑ�ԚvT~�`����͈����0B�3��Fyl���#5�LR�����G|u7�E�j���q�jJ����x�Ų7�y��g�;�+��&��ޯ@�pFC�'�=�� �Ğ�� Fƚ�������d{�룎f�W �-����:�K+ �2 pER��j�iA֛x�G���$4AN ���0ń�TN�)���3V;��fnކ"�K����3�i��9�z��˾��ڨ$o�w_P�"������Y�r:~9��2���۱й#�\���l���O����~.�XO���XB�e�Aq��+�@Q1�lEИ�^�����,< $�{�(��dk�z��� �9 �T�~����Ř sx?�; �p�ZnKg_q��/3x�&_�,�=����.����1S �'�+�e�s��7e����&z���)�CyVP3¤Αk�19���ipG;V��cY�,I�۾ԋ��ЩN���s1p�O�d_,nʱ|-�^�E�n���%Mq�u[�w������ۈ�@E ��\��� ��T��\�:ٶ%�J�~�j�:8t��,u���D����:W� q_��wf�Y�9� %�n�����[-O���rE�C���ʒ��2$��+�N �xD�A~��[�GuO��t�peN~U�!�vM[�A�u1ȯ5�*��|��n���r�Q(�u�,�ˋ��>����#�v��]כ��2J��X�%� ����4�Πx��[�4B��t�:l�L� ���p����6{�.Mm�(�M�dkڜ��l�9"#Q�@��[���;i5CG-����+m�"J4��\6#�%|�P�M��T�d�t\�=X��:���E6�`ͻ���ڊ����H���j�Ek�����rqN���͌�0�F�LVw��y�;%hUc�y��.�v�6�l����h��d�ոe��la�TW�3�`��h�xs��C�+��B5�K�x�`�G���Hs���;��8�#��_�8������;�D�~ #��z�������+R+�E�25��ة{�t:�y�%K`^���.&3JoQ֛?� pTA:�,v�i�A$z�Df�����s �e��C�\��^�_�W�Q����fD��v/+�j-fO�p"�!3(Cn9K�g����hk���JHcX�CR�%v%K� ����4eC���~��R)b��m*�;Rr�?�Bz~�l�j]�>��*T�T���R��In�a� �u> rd�����j:V?�<_�.ݭx���x��\���JB��7��?QL����6I�}13<S�u~��T�]�;F���_�e��B��̃��z�S��[�I���Z�j;R�ad�%�y��jn�qk\�Z��m��o���?�- �2�Q�P=��Q]V�]'��a�-:���c��u'�I�?�]��NO��A0�� H�bJLB�T�$M�ܚ�.W�HxA�O��$��S��a��(�}��J%��a�y�Bs���!���QEˣ��&ԯs��.I}��ݧ��s$�s&�iV�ɴu�?��A}*R'�LNj�b)�[�G�-(���f:���w�������u��0�H�F4����)F�+C���s,�X�0�d2�Uh�FgB�2��sЩ�%p�M��ޝ�@���u��y���c�]��CA� �h�z6M[��M�����������1��?G�d7����x�Yn,C��w�w�r2��]��ңhnY�0p|��^5�h}��b/K�@���T:���g���E�LV^p����c�o-a4�WN�����@��Wi c�(M x��>��f3A����z.�!� ����]E��Ϲ$��*G�ʗ'�O�����M|z/pC�����yسd��m�Y�&�zz�r&g\�W��9�� �h�5J��T��#U�L��֝ѭ����v�R�M��PV��c;��,�{}W����_,N�o�5I}�t��7�K��6?���z�����b�[��y\)�G�I��㍯�L��/W�O[q��u��r�_ܴ͚�L��ߺ���u�ץ�(E8�Q1j^L�pM�P¼�j8� f�O�VU�K�en}W�+�wq|17��{Ї- [f74:�%����9N@N�ԁ���X%�S Y������Q� Ų�H�n�`��`�yY1>* �p%A��u߇����S {p����ĕՕO����x��As�����R��?�$�N�����9����Ù�M2��Qӌ�8RV�-ں�̼�uGTu��P�W�ti7�M+��YFH0,�ʐ��?\Q��4FH���Ɉ$�v�]x,V��w����?Z�6E�쁪��������|��^3Ձ]���X�^�WI�ud�4H�Oݴ#R�����u�Ŋ ��'3Et���/T� �[BYH豢`�0p��Μ�^Ocu��1�WO6�zM6�V�,=]74k)s�*MG�������U����\?n���{�ٶ�.rC�JՖ�� "�N��ٔ# ����N�q�Ő�ޞ��t��� Kx�Ý�Len�#�<7��m����~t!kTa-�+��#hˣ��<W��v�Q��Z:%�L�EP�ǨZ��z��W��@����t��ӵY[�U��\E���(����3d�6o5�m�Զ�B��+Ӿ��K�:k�"c���(o��F"Q�^��|�I����F��ⓛ�ր�X.vS��k�ك��ߞNa�@ "�% ]5��1i�[2^�M3Ι.3h�__x�*�sۛ�K)��D������ $!���eq[9(�DL<J�r���x"a(ݯ�ޥ�"�K7a|����������� �J�`i賞�n��@�-� ��!��N��f����y&k�7��%eiב!*U��.��_�*��S8s�s�*��Hu��VL�@e|�~�"�G�ՍTaY�o����������x�"EI�qλ��JE#w]n'4f��hi��'�Ì��7�߽h!�����t�˷:g�b��r�{֚�_m�X��ˎ��`RgO�=�'P/��\�.\��93�H~� ��V����lRjLH{�y=����.(�$��Yb��nX���|��V�8-�1n�\iS/�/�H̿H:�3ϴ�����{+!�m�M�ޱ}N&����4܍�P�����w- f0G*�3�v�qFӹ��2�'c�ºA��������ʘ���Hk�v�v"�G����_�4���J�0u}�Jp2��j�$��������Z *�N`\eM;��MќE�Ǭ>3�8�゛`X�v����x�H�EmƦ���?A+e�s������|ݳ��x'�h����ŐN���J�1?묗d� �`���De=��@�dM*��a j�4���� ���]�6pm@�Kc���V���Mڰ1wr�%�������H �^#�P�̶=��J EO1�)7�6[:�u�w`�$��bX����=2�rE����^[�����.u��LCa*�\�@i���.�:��v퍉�8���e��.K�;��Ͱg���* ���L�.�*�я����1~C2.�q�c(��Ng:������@��W�����3p��%U��欌ʌ'�04Z�/L+q'��Gآ<�젌��=oY���$)��3U�l���@�P3����m6���t�Q�?���}� �LeW����C~��~3z�t�P�;V��A*�j�b�5�F��M��"���37K���ZR��0�2c҉Li�p��࣌��1���E^�n�r=z��&%#����f�bs�ɏ:�G�@���.w�z_#`Ʀ�t��<�"���w����S��)Xoy��yE�fѭ��?-�4.E�O�i{���S����5�?�K�j���-e��Ki���I�[�EO�~�^�0[o�`n���Had^�����R���6�Fu�)m�px�P+�j��ca�b?<ثe�vHisF1�X��M���=/����)N\*�w{����Z��t�$�;RSj^�[� t5��"�Bw`��9�!�< ����5�������<��@,h7�K��yw3)7z���Mq�v�6W��;�ҲSV±�� x��x�k�/X̫��O%"Gb�U��G9g��6Χ�� ��-�5m�w��V�l���o��*���ka�O�ju�O�̈́W�$�F�~r���c�L�Mf�(w%��s�����$�v�Z���>²F�>�4�T�\7��dž�� ���\C��/v�"��i�_�^�m���]5_]H�c�&��$?��t=���;yc� ��V�P���f�'G��F�����vf9?!S9�����@�ïF�.s���W��3z/i����֒�õ��m��"��Z��x�f��+�~����k�ݰP4�D�9W8�����.KF%�e������W���Hi��t��u��8�)7#�uO�ӭHSE~��=���%�?�R}'h��X�D`SM1i��W)�h�`����/����F��$?B���6};>�Ř�B�jKn'd�������l?/�4���_ި";�T����n���G���=-��mQ��2��֑LI&���|[�n0��y� u0sy_��z�#5%��4��^�r�˷��*�l�� ��S�^q�Jb��������7�����L��+��ɫꁔ���m��`' �2�D���2�h`���Q��8�E$�B���c�I�D�_k�!�7ũ�����$m�+��4��h�gkp~��,:�A��4v#�i�� &Ӯ�jXP���C���'>%���{��6�r��l�x���`�5�}���"ƥ��M�1w/�7p�hPq#� ��GCjK�g����FY�(TP=j���G�w1 ݔ`A�(��puZ���#�b�;?�u�N:8�N�"����4Gȍ��$��D������,O'I�WyQA�����o+a�~GU��L�L�7M�^+�o7�}x��s�[�!<lt���y���v�?��p�f�c�9-ig�eڸOg��n�&�AU���Y�%Y,�l*fpw�U��A�e��?�Z����Lx�L��]��ddh��>��\�Lio�]�kO�w�����\C�����h�������w a�Ax�g@:�T�}�6I�؟�eh��������_���H�H��JM�=�Ʌ���F]ʒ�)���]���5�X��Vu~��5ϛg{sج�(�5����s2kD/%^fa�*HZ6N?�4d" ��A����D��1���@�^|_��+��X�Z�=u��*��&�<���ݹ �F��)��������2)s�8��zZf_�FJ ��ktu�+cE���uX�&�Ay[l��Kf��mg��j��\�Τ(0͎�8�n���G��4F�nmd!�?�AxE�\h.�e�L��|�|#��h��y�u����$MF��Sv�[��1����U�9ɬ���~����N� ���A�K��&H-��~��ǽN�V�*�M���ڰg�X..��zQ�yXO�B|Ú�u�<Ct ��_-����ծ��~�������x�W�K�d*�� ]��P�ER`�;.�A�r+D�d>�F�y�-�Zހhy�=d��\���6�䫘#�R�B ��n�h� /ATB�M513A�}*Ɖ�=NC�i�t8C�3��RhtJ3v�: ��b�bMfK���P�ar<�~lB�K��v�ˣq����:?�`cDB�b߮��'���'�¶B�j���_�3]ʈ>d6ꐐ�I8�8�_+T('r~"g���ծ��">�1~���?rcfiK���ʑ��v�ae�>12��#��4�4l]1R���8��8��C]Qӟ����a�f�?���.g�?����ۃ`��:�YP&�+z�����̅�����hf��cCu��2�w�=h��6�:"d:�,�z z� �2%M��������/�"���c������&�����ktK������ Q�Sn�T��y�Ou�F��'�e.�gI��eQCS�R~�����!�����wA���5%e&�>?�����'=m���8�RLZ��S����e�찅2V}�>.cE%��0,[���b�� 3��&����[$u��Mybd��� �`�[���Lg��L��f)h`l�c(֊�0���?q�8�1�|�8d��|d�.��T���_ɴ�~��'��RK�1�%;'��TC^�'���F��fM���/���o��*g�C}jSLx�e�7���$m<V��P�fʚ9$�������4�j�|��=��@�u�#zZ'Z�R�OЎ(�HO��xm�L� |�WP �,����3!f�3�dɟ Fs��$\���P��� �� dC���@�60�oR� ���ٙm�<�f<�����4.�v�?xptu����h������P�H��8U�@U={&-Lu����e��{��� ʻ蓇P��k�����@�*"�4o�����x�c�m����i��&�*� ZNΠK�߆��.��/����ˁ����j#8�l�5^�/~�Q���0�������͝�i�wɨP�kǛf�!�=Oo*�O��H��X��)����, ��`��8Э�w.�H�|��1A������I�YN�!�2"R�I�-�8��D��d��b�*Ǫ� �l���/Ė^���&c�'r=gP��G�q��H�.?���J��/�W�AG�+�"|"��F���6�H8U�olmX���0q��|3Tݭ��Bs��m��V^���3����ڇ�.;>*� i�������[yj��9Z����f�$��w���ro'�0��~���LP/� �#�l4�ؙ�~��+>� ��T.s�b8���vP먎�L�B!}�v����e�����H�S\�T�Y�T�8ܞ�V�S8QO���g.w'eWK6 ���G�`ʛ����5��k����4�h�|�����K��b*�g��A�#�`���y7 ���>U�)ˋ6D��<�A���G|��l�"��kjf�z]cf3-�ܔ�⇦�g���H@����q1��N�N����t��������+=��x�{jF9ú�����;�����h�����tZ�������]��l�&!|��$������-MkT����u[�`���tJ�rH��&۾w�L�!.�k���ڝ,u��Qny���?k�����8��>��v�!p�`�:���1�E���Gw��d68[v�&r�� ��G#�� �.3��2I&oG?&ǁ����W/�}36�FX��T��f���KL�0��"�`��:I�ع`r�/`���KD��'J]=�6����nZ��p��.G�d�*oG>ր;���p��*���6�Z��`�3Qm�&�ulD�i��B,u^��L��$��O�.| � ���T: ��R�I�B>�ȕm� �6�љ��S���3���'J�ys<+�� �)�{�&/)������b��ǵqft�A���>�/�ikHF, 2��y�p����U�L���%a_���u�P��f�*����_���=15��묏�L��Z������=)�4^���7��6LHLK}pvi�˹�\^E�"U�!�1�lS3��k��hHz0F�^��$rX~g'=c���s[���f�V<��@b^>S�`רh0g�9H�xO��|c�j��5<�ߊ��"��WcCcl�(��}YP���~�jB���r�Z�t2ƓR(�X����_�;��R����^��x_l^����ȃ}[���]Qް�j�Ys�;�F���@�)���F����C��'������89��`H�i]��������E�[��������g��$ɨ��:�g��e��\�����,� ����������dM�W�UQ��%s�%��kd�$ի"�6�Z��T�ρ�6EP*9����}!?{7�X��n��u�\�ʊ����T~&3�kbK$EƮ�q����p\$���;ݰ�(w&}�-�"g�0ۻk�$�����c�F��v�R�"�2y�e���)6l�C���(>oqt���c�=)o��$k�K���}hYjث���_e�Y�D[��L��1R%�������$�at�F4¿���ί9ʹ�'��G%\����ń�y����9��#�l[��*+��Q{�β�����-2O��ӵ�˅���:(�X�I���˕�}d�O�'�n+'@Y��5�ܷ����������h5m�rz���bEVr��D�hs�}��xK`9���h�Ac"^�� ��ɴa7ѿ�������\���2O���O���`���o}6Y�2�_Y���O��PX��M�w<�^�ԝ���]5�u�!hz�աҫ���+w��y��xA?�j;���e) g"/���=�����+����J� ?6n�22E��X�Fv) [,M�pu�%q��"�,�&�l�u�G��9�m5�p)|<������sl9AKF����r��������T�����s0���)`x�ɤ���SB�*����x��E엷�v�T�M4�h��R�;�q0 t���m��2������E��T�t)����W��x�O룽(Ɇ��M�I�l�C-Ʀc����P�74CzA}�Q���'���s̶��t�6���jAnI׆`���U%�� *_gi�妖���G�c�b5��V���͵��tiRC�&��eTM����[s�Qɪ��$7 &���<I����W�D`@�p6�[�g�3fO]�_lzx��U��.�Ƿ�\�����ۜ?|�Γ6#��Q)�;�N._�~t��1r,䥪�x-Y����|,�"��M���y��3��'��Ͻ�w���LN�w��y����1:3T���0��M��\o3�]�eX��2���'�m\���Ѡ��+&���m5M� �s�����*���x@�J ɉ5E���O,������4��}�=��.L��J����X�?��],�> 3J���i�d{П7SoZ���U"]�O���k,C(����}�n�9���z����K�������8�>F`�<��gpe�}�Κ�=a�cL�pœs�W�J�Y|K��\�L���F���_}��IhuM�Q�3���t������|�7>�t�8���GC! \ ��4ѻ�2� ��[0��34�=�����X� c��J�My�rGC������ �P%��W��F`> %Ҥƫb�+/�z�;� �,"�W����r�ދ�F��Ax�-��C�r��N�� <od|�)�� ��g;��P:0�y;d,rOL��X��ƕG @Ʉ�.ڎ(Σ������Jx��v��zuH��-���i�1 ��/�"=o��U!�Өv�^=�1E��Jw3�7+�� �J�HCL|)R�Z5�H�����OP5���#�6\�$M1���D2)�,��X�(ߙԔQ?�J��n�('r��h��\A�M�� �!��9�JI�S⠝l����L7_�]��5�<� g������x����G(E�y�ecrx����ֲ��[�[`c�� O�h���^� A��Ћéѵ[�T����E�n������H\�7��5P�k�l̾�[՚��鋎�}��k�O ~!�CZe_���aa���G��f]z;<���t ͺ�m��)�0..���(�^���)^���X��3�D���B�ʔ �1�8��Mث6�? ��� SkB��f1��6 "�Fp�B-+�㢅=f�����+m�B�r��GA�r� ���'����������s�iR���!�xY� |� ��p�4�{�We���$g���G��m��`�9^S ���`�7�@Sr"m�W�����' �$o�T�۴i�I��ĩ��tG�^+���r# r�C5(�5E�W�����x|Z8��o Y���|t��0�K�X�,�R�G���i���k�7���X�x�Q�V]0����~Mz�M{f�Bv�q���Y J��̸w�r�Z��%�Ϛ�z���ȑ>Ҁyf�.1��7���9�,7V���2��.y�0X��?o]̓�#d2�U]��r�F��M��u!���{�� >��n@2|c Y��8���5N�����;r�ç-0��)fg��W1��=�s�tX��;ܘ�n��e��ޟ`�ȑ��N�҇n 0������Z�n������V�L�&WO��L@��@����\e>�0I��0u%1Xƿ��>�Kz&���Cj��$��u�6���6yya�tRh���g�6��7�He �@Xs5Y-"�����PnJ�LU�E�v-��AȱWy���=ՠ$�E��h^UQ ��P}GJa w�zf��I]�ZWB���i<�12Fq&M1��"�&^���i^�'�x�a�1���p��x�ADn�!,�J��Nڭ�X�QL�b���C��J�Q�U�qt/*,k��m6^q��( ��P>|�ߗm�αEl�p�^x!�ݦ��D��[�+�XT*_U�0_$�eE�07*j�w�� H�!V��#L�|��C� `K��,s��- m�i��0�3�M����?@���Cv