Microsoft.Linux.RHEL.7.Kit.ppc (DeployableResource)
Element properties:
Source Code:
<DeployableResource ID="Microsoft.Linux.RHEL.7.Kit.ppc" Accessibility="Internal" FileName="scx-1.6.3-793.rhel.7.ppc.sh" HasNullStream="false"/>
File Content: scx-1.6.3-793.rhel.7.ppc.sh
#!/bin/sh
#
# Shell Bundle installer package for the SCX project
#
PATH=/usr/bin:/usr/sbin:/bin:/sbin
umask 022
# Can't use something like 'readlink -e $0' because that doesn't work everywhere
# And HP doesn't define $PWD in a sudo environment, so we define our own
case $0 in
/*|~*)
SCRIPT_INDIRECT="`dirname $0`"
;;
*)
PWD="`pwd`"
SCRIPT_INDIRECT="`dirname $PWD/$0`"
;;
esac
SCRIPT_DIR="`(cd \"$SCRIPT_INDIRECT\"; pwd -P)`"
SCRIPT="$SCRIPT_DIR/`basename $0`"
EXTRACT_DIR="`pwd -P`/scxbundle.$$"
# These symbols will get replaced during the bundle creation process.
#
# The OM_PKG symbol should contain something like:
# scx-1.5.1-115.rhel.6.ppc (script adds .rpm)
# Note that for non-Linux platforms, this symbol should contain full filename.
#
TAR_FILE=scx-1.6.3-793.rhel.7.ppc.tar
OM_PKG=scx-1.6.3-793.rhel.7.ppc
OMI_PKG=omi-1.6.0-0.rhel.7.ppc
SCRIPT_LEN=529
SCRIPT_LEN_PLUS_ONE=530
# Packages to be installed are collected in this variable and are installed together
ADD_PKG_QUEUE=
# Packages to be updated are collected in this variable and are updated together
UPD_PKG_QUEUE=
usage()
{
echo "usage: $1 [OPTIONS]"
echo "Options:"
echo " --extract Extract contents and exit."
echo " --force Force upgrade (override version checks)."
echo " --install Install the package from the system."
echo " --purge Uninstall the package and remove all related data."
echo " --remove Uninstall the package from the system."
echo " --restart-deps Reconfigure and restart dependent service"
echo " --source-references Show source code reference hashes."
echo " --upgrade Upgrade the package in the system."
echo " --enable-opsmgr Enable port 1270 for usage with opsmgr."
echo " --version Version of this shell bundle."
echo " --version-check Check versions already installed to see if upgradable"
echo " (Linux platforms only)."
echo " --debug use shell debug mode."
echo " -? | --help shows this usage text."
}
source_references()
{
cat <<EOF
superproject: 17b69eeaad97e406078f056a096e2cea5629710e
omi: 6e3c51f46d9704e4f5d57d7697c9895540cfe779
omi-kits: 00e3c28ba2d659b09200d831e475a820956c9137
opsmgr: 12ccf3c85b0d41b872b7a202b14fb6499dbc4d02
opsmgr-kits: 329545760488b3f919cd6a8dbae6d253e39bc33d
pal: 9e7123176280e5c2c99cf915e2bdd4fc0771ab25
EOF
}
cleanup_and_exit()
{
# $1: Exit status
# $2: Non-blank (if we're not to delete bundles), otherwise empty
if [ -z "$2" -a -d "$EXTRACT_DIR" ]; then
cd $EXTRACT_DIR/..
rm -rf $EXTRACT_DIR
fi
if [ -n "$1" ]; then
exit $1
else
exit 0
fi
}
check_version_installable() {
# POSIX Semantic Version <= Test
# Exit code 0 is true (i.e. installable).
# Exit code non-zero means existing version is >= version to install.
#
# Parameter:
# Installed: "x.y.z.b" (like "4.2.2.135"), for major.minor.patch.build versions
# Available: "x.y.z.b" (like "4.2.2.135"), for major.minor.patch.build versions
if [ $# -ne 2 ]; then
echo "INTERNAL ERROR: Incorrect number of parameters passed to check_version_installable" >&2
cleanup_and_exit 1
fi
# Current version installed
local INS_MAJOR=`echo $1 | cut -d. -f1`
local INS_MINOR=`echo $1 | cut -d. -f2`
local INS_PATCH=`echo $1 | cut -d. -f3`
local INS_BUILD=`echo $1 | cut -d. -f4`
# Available version number
local AVA_MAJOR=`echo $2 | cut -d. -f1`
local AVA_MINOR=`echo $2 | cut -d. -f2`
local AVA_PATCH=`echo $2 | cut -d. -f3`
local AVA_BUILD=`echo $2 | cut -d. -f4`
# Check bounds on MAJOR
if [ $INS_MAJOR -lt $AVA_MAJOR ]; then
return 0
elif [ $INS_MAJOR -gt $AVA_MAJOR ]; then
return 1
fi
# MAJOR matched, so check bounds on MINOR
if [ $INS_MINOR -lt $AVA_MINOR ]; then
return 0
elif [ $INS_MINOR -gt $AVA_MINOR ]; then
return 1
fi
# MINOR matched, so check bounds on PATCH
if [ $INS_PATCH -lt $AVA_PATCH ]; then
return 0
elif [ $INS_PATCH -gt $AVA_PATCH ]; then
return 1
fi
# PATCH matched, so check bounds on BUILD
if [ $INS_BUILD -lt $AVA_BUILD ]; then
return 0
elif [ $INS_BUILD -gt $AVA_BUILD ]; then
return 1
fi
# Version available is idential to installed version, so don't install
return 1
}
getVersionNumber()
{
# Parse a version number from a string.
#
# Parameter 1: string to parse version number string from
# (should contain something like mumble-4.2.2.135.rhel.ppc.tar)
# Parameter 2: prefix to remove ("mumble-" in above example)
if [ $# -ne 2 ]; then
echo "INTERNAL ERROR: Incorrect number of parameters passed to getVersionNumber" >&2
cleanup_and_exit 1
fi
echo $1 | sed -e "s/$2//" -e 's/\.rhel\..*//' -e 's/\.ppc.*//' -e 's/-/./'
}
verifyNoInstallationOption()
{
if [ -n "${installMode}" ]; then
echo "$0: Conflicting qualifiers, exiting" >&2
cleanup_and_exit 1
fi
return;
}
# $1 - The name of the package to check as to whether it's installed
check_if_pkg_is_installed() {
rpm -q $1 2> /dev/null 1> /dev/null
}
# $1 - The filename of the package to be installed
# $2 - The package name of the package to be installed
# Enqueues the package to the queue of packages to be added
pkg_add_list() {
pkg_filename=$1
pkg_name=$2
echo "----- Queuing package: $pkg_name ($pkg_filename) for installation -----"
pkg_filename=$pkg_filename
ADD_PKG_QUEUE="${ADD_PKG_QUEUE} ${pkg_filename}.rpm"
}
# $1.. : The paths of the packages to be installed
pkg_add() {
pkg_list=
while [ $# -ne 0 ]
do
pkg_list="${pkg_list} $1"
shift 1
done
if [ "${pkg_list}" = "" ]
then
# Nothing to add
return 0
fi
echo "----- Installing packages: ${pkg_list} -----"
rpm --install ${pkg_list}
}
# $1 - The package name of the package to be uninstalled
# $2 - Optional parameter. Only used when forcibly removing omi on SunOS
pkg_rm() {
echo "----- Removing package: $1 -----"
rpm --erase ${1}
}
# $1 - The filename of the package to be installed
# $2 - The package name of the package to be installed
# $3 - Okay to upgrade the package? (Optional)
pkg_upd_list() {
pkg_filename=$1
pkg_name=$2
pkg_allowed=$3
echo "----- Queuing package for upgrade: $pkg_name ($pkg_filename) -----"
if [ -z "${forceFlag}" -a -n "$pkg_allowed" ]; then
if [ $pkg_allowed -ne 0 ]; then
echo "Skipping package since existing version >= version available"
return 0
fi
fi
pkg_filename=$pkg_filename
UPD_PKG_QUEUE="${UPD_PKG_QUEUE} ${pkg_filename}.rpm"
}
# $* - The list of packages to be updated
pkg_upd() {
pkg_list=
while [ $# -ne 0 ]
do
pkg_list="${pkg_list} $1"
shift 1
done
if [ "${pkg_list}" = "" ]
then
# Nothing to update
return 0
fi
echo "----- Updating packages: ($pkg_list) -----"
[ -n "${forceFlag}" ] && FORCE="--force" || FORCE=""
rpm --upgrade $FORCE ${pkg_list}
}
getInstalledVersion()
{
# Parameter: Package to check if installed
# Returns: Printable string (version installed or "None")
if check_if_pkg_is_installed $1; then
local version=`rpm -q $1 2> /dev/null`
getVersionNumber $version ${1}-
else
echo "None"
fi
}
shouldInstall_omi()
{
local versionInstalled=`getInstalledVersion omi`
[ "$versionInstalled" = "None" ] && return 0
local versionAvailable=`getVersionNumber $OMI_PKG omi-`
check_version_installable $versionInstalled $versionAvailable
}
shouldInstall_scx()
{
local versionInstalled=`getInstalledVersion scx`
[ "$versionInstalled" = "None" ] && return 0
local versionAvailable=`getVersionNumber $OM_PKG scx-`
check_version_installable $versionInstalled $versionAvailable
}
#
# Main script follows
#
set +e
while [ $# -ne 0 ]
do
case "$1" in
--extract-script)
# hidden option, not part of usage
# echo " --extract-script FILE extract the script to FILE."
head -${SCRIPT_LEN} "${SCRIPT}" > "$2"
local shouldexit=true
shift 2
;;
--extract-binary)
# hidden option, not part of usage
# echo " --extract-binary FILE extract the binary to FILE."
tail -n +${SCRIPT_LEN_PLUS_ONE} "${SCRIPT}" > "$2"
local shouldexit=true
shift 2
;;
--extract)
verifyNoInstallationOption
installMode=E
shift 1
;;
--force)
forceFlag=true
shift 1
;;
--install)
verifyNoInstallationOption
installMode=I
shift 1
;;
--purge)
verifyNoInstallationOption
installMode=P
shouldexit=true
shift 1
;;
--remove)
verifyNoInstallationOption
installMode=R
shouldexit=true
shift 1
;;
--restart-deps)
restartDependencies=--restart-deps
shift 1
;;
--source-references)
source_references
cleanup_and_exit 0
;;
--upgrade)
verifyNoInstallationOption
installMode=U
shift 1
;;
--enable-opsmgr)
if [ ! -f /etc/scxagent-enable-port ]; then
touch /etc/scxagent-enable-port
fi
shift 1
;;
--version)
echo "Version: `getVersionNumber $OM_PKG scx-`"
exit 0
;;
--version-check)
printf '%-15s%-15s%-15s%-15s\n\n' Package Installed Available Install?
# omi
versionInstalled=`getInstalledVersion omi`
versionAvailable=`getVersionNumber $OMI_PKG omi-`
if shouldInstall_omi; then shouldInstall="Yes"; else shouldInstall="No"; fi
printf '%-15s%-15s%-15s%-15s\n' omi $versionInstalled $versionAvailable $shouldInstall
# scx
versionInstalled=`getInstalledVersion scx`
versionAvailable=`getVersionNumber $OM_PKG scx`
if shouldInstall_scx; then shouldInstall="Yes"; else shouldInstall="No"; fi
printf '%-15s%-15s%-15s%-15s\n' scx $versionInstalled $versionAvailable $shouldInstall
exit 0
;;
--debug)
echo "Starting shell debug mode." >&2
echo "" >&2
echo "SCRIPT_INDIRECT: $SCRIPT_INDIRECT" >&2
echo "SCRIPT_DIR: $SCRIPT_DIR" >&2
echo "EXTRACT DIR: $EXTRACT_DIR" >&2
echo "SCRIPT: $SCRIPT" >&2
echo >&2
set -x
shift 1
;;
-? | --help)
usage `basename $0` >&2
cleanup_and_exit 0
;;
*)
usage `basename $0` >&2
cleanup_and_exit 1
;;
esac
done
if [ -z "${installMode}" ]; then
echo "$0: No options specified, specify --help for help" >&2
cleanup_and_exit 3
fi
#
# Note: From this point, we're in a temporary directory. This aids in cleanup
# from bundled packages in our package (we just remove the diretory when done).
#
mkdir -p $EXTRACT_DIR
cd $EXTRACT_DIR
# Do we need to remove the package?
if [ "$installMode" = "R" -o "$installMode" = "P" ]
then
if [ -f /opt/microsoft/scx/bin/uninstall ]; then
/opt/microsoft/scx/bin/uninstall $installMode
fi
if [ "$installMode" = "P" ]
then
echo "Purging all files in cross-platform agent ..."
rmdir /etc/opt/microsoft /opt/microsoft /var/opt/microsoft 1>/dev/null 2>/dev/null
# If OMI is not installed, purge its directories as well.
check_if_pkg_is_installed omi
if [ $? -ne 0 ]; then
rm -rf /etc/opt/omi /opt/omi /var/opt/omi
fi
fi
fi
if [ -n "${shouldexit}" ]
then
# when extracting script/tarball don't also install
cleanup_and_exit 0
fi
#
# Do stuff before extracting the binary here, for example test [ `id -u` -eq 0 ],
# validate space, platform, uninstall a previous version, backup config data, etc...
#
#
# Extract the binary here.
#
echo "Extracting..."
tail -n +${SCRIPT_LEN_PLUS_ONE} "${SCRIPT}" | tar xzf -
STATUS=$?
if [ ${STATUS} -ne 0 ]
then
echo "Failed: could not extract the install bundle."
cleanup_and_exit ${STATUS}
fi
#
# Do stuff after extracting the binary here, such as actually installing the package.
#
EXIT_STATUS=0
SCX_OMI_EXIT_STATUS=0
case "$installMode" in
E)
# Files are extracted, so just exit
cleanup_and_exit 0 "SAVE"
;;
I)
echo "Installing cross-platform agent ..."
check_if_pkg_is_installed omi
if [ $? -eq 0 ]; then
pkg_upd_list $OMI_PKG omi
pkg_upd ${UPD_PKG_QUEUE}
else
pkg_add_list $OMI_PKG omi
fi
pkg_add_list $OM_PKG scx
pkg_add ${ADD_PKG_QUEUE}
SCX_OMI_EXIT_STATUS=$?
;;
U)
echo "Updating cross-platform agent ..."
shouldInstall_omi
pkg_upd_list $OMI_PKG omi $?
shouldInstall_scx
pkg_upd_list $OM_PKG scx $?
pkg_upd ${UPD_PKG_QUEUE}
SCX_OMI_EXIT_STATUS=$?
;;
*)
echo "$0: Invalid setting of variable \$installMode, exiting" >&2
cleanup_and_exit 2
esac
# Remove temporary files (now part of cleanup_and_exit) and exit
cleanup_and_exit 0
#####>>- This must be the last line of this script, followed by a single empty line. -<<#####
/[ scx-1.6.3-793.rhel.7.ppc.tar <[WVdބM]z8z?^8#?qIƷޚ)RUI|HDZZ/c-A,B $DdC 9uoWWwWO}O{9s9ܪʂݦֲ[FV;-$A+MGtpئWͱTyՊm*a8*eZBԏ~Ӕ%(zʿO~ x,j½!;_ɟXvp~H=
ׇJʃ߂a8OHd}UCY,5c6|*6\Ωoݢb_|o=vݻwW$9|Dap><7 #~@/H۲)eߖId%+ G[ ,W #>$~P!$W$|X#TMH.ᆨ}Fվ&G>%GE}($̚?#;(hYYc?.. Qe RSB%|X˂S?,SOK>#'% 7%EߒEϩA{^O_@eY'~ES'We?K|3.|8e{&0%;P5A<CgJagW 8^.9{9Oj:Qڣp?Sڗ^^\OAg +qڊ36:ZSZp+3V'ϴ;;;BQڋ{\9$(ۂAF@i,mQm54
/Ï4$=ٽE"a䵓5q{Y!E3rНmVF^[)OHdu;k-T (;C=NTLJx`+&K/~ilpؑqIfl)C9I8UF9
0. u5;ꈾ^mS^?{wm`.2Rad8%Yp8(Q#E"ʢyP͌y|+Nv.yG`Cl@TxIyO{Dmݘd Vr)YZ.`Xn)հ 01RvPdG^;d5P\HnlAÂ$*94YnZtNJ0fV[s̐ŢjoEA5)28yF9'>u]ゑ Nf+#ʻIc&d@NOi1Xic`txj'[9 #0Qy0e|LY^Su 9rPuഷo}$GI'yhgP8$"^aqYqvw<:Vnt8/ߤF1gXCi0<''ٍ'oW<ipZFr`PNYfԃB,ECS&Oco}MH
%yw2(&47S.&g;xg-J o{}04:\tSzD]ln4в9| &FhTXc=wx2⧦;j3'{dtrUpKKމ :ܡ9ve>"afC$Ewo@Ug!1vVhRA١QddJ
Ɠ`fH,Q.J_|ybN#D!mF m64݆s0,Gո5Q"Lr+lѬ. B00\IӴgm5QW6L[t$C@>m\@(6BE(EIլP猪
5Cf?ҝJb,h51'HӆumњmX}q1y3#;27G1"UdoϘPL~s+-&XgRSL܃^;s4)B#%L0txƿi\,l;YTouV#+J5vtg 9IR~;Ytt3Y.a(++65o|7G(WS&PY#)Ċ,~,!?ƻm>1REp().Vqܳ&1u)I4! pGXET.TkL)D0
)+%@4YEQBP5]GfJcJ=[4aRX$ckVf +qn+ 0&,k̰g%qw7<BcPKHTxGfA;.Y_q~uyonl={6Sl#3#ǩ5Ӹ+NLy4S;Cg٫,(yav%LqX,3 SL;͏6Ūa2:&q08kKۀ8$3jp,.ҖzqVolxSKGLB*5g "
dҬ(kxEBn`Z.rRn7dbz+B0 (}N9Nȱ+VibbW$6Urm_"!%VO&slBr
|>wx
cr& i..XΛ`Qok
\CƋ>(#_ʎ,T:=C-DN`A7,Qj% N*<ԭ;4Gό*PL,l2Y86@Nehg^dt09N}E~,πrka$-N4u\H]=cLb BFu @vt
_Sh0IU j4c_icKg/^zcʸ8u*UmLq@;
]4O$::֗ˡ셵kk+}>UZX$υn
J3,Rp7o kXX6Y-d!ѠC;T&̢@줓IS1}yPvF 0+>glU_h82P=תE8igr7
9_㵛pVNpc}].,w2l~5$;| "@ŎH ,F+bB{{\8+PZ<,Y$rb} U:sQUqesO?tmqs[ᕹ/:VS/ç>N$ʜի.٩[I0ҼrDs{kmX/+H3̠]1u]{liN[>Kvy+V7kЦgt@ng s7rݺ3'++
9jM52=TVZ,I{cݓwexVTCo('o|?JW<%P6{p~?U'e?.hn?yݻg?w\;V܁/˫){ݻE_MFoڳ
|Z9l8߉ ZD^᫁iZ
\ϳCMݡԸif@M<w\K]R<Cӵ}tl̳45O
{n\54o0q J=GA*F&mtM2T
-C٪i,]]SuU}shkTfڡARzAcjas=;P``]שA652u,p3ԀQMU;Ū*3xP5'd
}3t=r}
.q)hYNi^Bx<P9pa{R}rt4]nXZx[Ta! +N4%juTӴܐcu6]܇ڞPl!P 6o;0k03 jZ(YzہCUǠB_7<+0z6-ϴ` w31ugLt:}4|7UC
|sn9j#ktX1=n;4kqyViq7T
U0|S6
˲خaFhzDI
L1\UӃ|P7@8C[3B
8@
$ Щ.
qAB= }6W d4S`|B̎W}s2(#\ `2\jBg:`#Abw@eKr<L <
-ׅ8:0(!(jmp3j`&8ZD6sm0B`CC0jNSj0tZer;`|ٱUPp_kfq(LycB85R=i]ki<W
_8\0 gKG>^:\9^)"V+V,~h]=p^=tF>7~qw<HV2Rk+>Soye6(_Hzy|%q< +DEf^At@rsfMu+"\Oy<xQ*Ko(۴M77ĄқZQ@6xҴ6Hl<,dw>)YoNJkOÉwN :o@^?O<
M\}%ג:v|~<,/)A85_c<Y<2|XY5^?5XV8r;C{?LGч{aJ-S&00V7GA&Vࣴ0O.$9ěBS%y?AVZnUVFwRJ#uJT壞hgU?%;v+I伮$c
DHbӂ}66uitV@;]]Ww"**%W*fQjv.LydYh^Is4(">|19<ܵϽ? TOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mcpu=power7 -mtune=power8 cpio xz 2 ppc64le-redhat-linux-gnu ? P 7zXZ
! #,f ]
b2uB0Rœ[RО ! x5j8
L;gb;aA.턇s_$8"i ۅu/D#؞5ꯋwi(kV~u"{Xaf:J%l·sďSꅺJ:R=%)V$|*hG])_xJԬ撞Yhr,(2Bg{qAs}X50('i6gWxTU{Dn=T{ f}UDZm)dtCG
]@VkyAY/,4H[m[lT֔y 4Ɋk`*3NoU)
R)T[_>kGUrNVY&[X9o+uY7>5|0va5S!TGH sƸtSe{8\eYE䯠{}x&v4g
-؆:ޖUf@lJ٧~{<2rHbp3(5Ӎ*hC:8x;oYGeԮyK@$&fˌ><JH%@h|bp
Cȋs)Bؚ Gp:x.[i2sg?lVmLfF9jvH{W8i%2G#g!A~yRR7&ž_;H*HZUT}2ˉZwh]0b6s7a]qFGFa`heb[}GBPϘI{QӢ\t/ԊD;%H!ҚkeV
= ǛE`áZIRCw/>zw#3̍Qq vBTG9ZeŒ?ٝ3y32XzգJ`4X{I6~pzbF_dpfoQr8{ZEff=7fL]i/qn}-ZIؘ2z{['.^̺gy`[o}/V*
Ħ˞wh31ӵ7rݹ!CĠ>Kҥic>ѩxm>rN15ʶ[_Uȃ+Oʂn4ĩɕ0ǘZZk42CFpR!hj8/HM]][hճK]e-!Cd}/ZVP|nn͒844T?
3L625ևѣv/w|Dq:bj+S ;#J $!;eQL1LfoKWX;wk
V+\Jڈ>
^Dqc^u5MM'5
{lg='#d-eXlBkH4ԝIxJNg\>^DbD8S¡g
MLJ{ SO]xg76ҶN.^jtj'RsN6Byy\d. A3
:bV9wٴ| WX^0Z&Wze2|VTi~B䜏}3sЈĈgؐQx"$0ݍk4y4
cpYd^,k
F
4RWe=-=gS_iY@_fъnL
VUpo6f7Bͭ?<Ƽ
%5Eq:I'"?1OvK^<q7̌쥬+v}{ɥlDMs2HL [e̡?ubamϏgR|rz?z:oLuJ)2s[PL9{ 5n<PI{ 7cp$nKmg8dpV屄f]Chy nT}sƊn^H>^P1f\)+\jh!JvȺ&/xTVWE/'p*041k)R2(
M4
͘fHٞBfw^UfNT1gN/$-uV˔G~xgD1ko6dY0{L{Af?1?ּ;Fc̵
)[
D>gcyD @hH$ΓE<HoZ@{2eS8 Nho;}q%^^Tt3YJќ
gd %1wR&Lz](bb'Ҷ}VLe!0m|Q92ے6h%Ϋ2b\ڭyzsK4tڢ;2]Q,kiPёffܹ켿@Mf@ERPc5BJS&!)C 0;-)?e
^/@f#o@O$s.Mbo#eȕs/Gt2@),."/;=ܥFBMEx鼤Nf=ŏty
Zb&Ww{2/))_$(Gxd9vC
r3_~!hhGskSff0벽'%XlK*
3(7͖wL?M5Qս& D~6
ZF#-aEO=pGߣqܣ߄G+\P@(D~jΝyc /VV6,8p>W&OAX) a{#qlec@Lj1ݨ3>"F4BSބMcukdz:a-{
iuF&&|" RJ3X*Xj*Ӑ:r `܄N[[i-h̉~y/^(}WW7z' Wʂ⎨`Lʮ;{$bHƠJa <C
KOA|_o:c_/, 3OϺ/(|~Qm8YHBUbz5i%#I״dO MhWeP=MЊaCJLsF5C.'fWeה`Q4&6ҷ!(d_S\!B7]a
oи
p?bׇyYY@#6f|ʔ,U&\=441/8IIK}ɼ.jֻb(Esv;d,h#tAܸvU}Tv8~;/|!"ۑ@iz=~O 9_);aՋsB_,p̮>?uIǧko!Fۉ)S$R Gs9Mp {V֛r[' qI#4̍CnIMs7Lb96Hf*-m}~OydKChQYB0g7xucbfʪ/;4؞!v4m(}ȸ3o f!N]2I]Gg EP5EΗ5HOwg'6M
տֿLu@mґ1"idLY'C$!
[,J3 fr$sQ <'#گWEz;ʷ U28/KKN[͑\9v}A*_2#Br+0qq(;E''~wIRj6yEo|l\1Pք )YyD>p@Ёv<ESp?yp1C
I\ѩiR-KՄTO+&)#,?]}bE`c(%NG3gg2o(sCվYX@AHْ8 Q <o5yȟlF @TMY p=.7/@t0ХC(dݱԖ-~ZcR?xF/!zDQ \szW<aȷR롺EYkS~oT6#igD hF
9>OWFhSi9m - R$7Y^1,0eZLqT2vmp0zGrͿ
_#L/M?jSp?DmWS.wxRs"J]JW^6(\x05>+૯*dMEwD1V4D ˵;D*=JWJ|0< N&GvYKqyL,b*騀ckY9mtK(7Ȁ5q473BoÛO
0pFJRSh
<YMw-{_[|l{U(&Bя{P|7-&&{C(t,8"ۣ_N|T|#\.v"c@oOkpyCfڱ1uo3DSOL~ |pH"9_hxğ ipߩT9vgd&# K-z%LLi%-V):zPlDeTG'wt˓ZkUiK{2_\[9v _˽HrFێi-/"ﲉf*aƥJtB"״C_үq@HUX.lZJ #=wU`m]Dpej5"FڬU7t^~,^3{w<ݺ>0in6;(&8o0xPk,Ak)k++dVN &57vRz1(vc6HmYּ<bdAOb_Hs4VO(;N-W6g]sa@ur#4Pn>,h]O01l2G~`gH{q`rYr0Ծq`!j3#cc+#&YW{
;Xl-!&Bk4_El^6|p*HI SP@<䩿Zd@sljiv^bIqy|v;B0
^>ЮAPvZKȚ!bNȘQgo*愺Ktusv0!!7έݍjxe5i4S/z.F*鲨ԩ[&A5]kB;WXa}~Ba@aYUnkc/J~CK˳
v
m~mΒsfgu)Y BYܢA>gF=*w9!0kmRZʤM7&VFyj>ol =]*9ˍP٥w4`A`@EyژPD~$px/aE2zĊ{cY-CSa+"m7O&{U%?(Uǡ>k|Rq2;lN 'M@XsBhS{CiKk8MM#yJvG5rgU2_XUCfp'udhV!\YsMZ
ۨzYpTolg݆hfTrx'QkAfæD+~=%ń(lv?:Ad}%P
@ګIMY\p*+v3u
JZcI6bVY#X#p~vqcT$n6w6:8ZbI@-Y(4LP %W%?QN"L!Ow|A~{LƞSKolU.{MncDÜ,6\<uXݭ~ ^;i#t{tcoF"IQ]7jL0Ew%zb <{hsR<;-Snغ|xb7k!П2Ev(k|_YDF7r
žxJ3N192| RXEFX#ˡ9ʽg}̹oaE;SdS
8<}t#P&W'_rDFf*L{k_O`qoEeh
wͤ%-'z-]~>S>]jXE (*jSNեjV2K.+}eD{My.a ~bS$:2="1mHYAe/_(7'9FK
ښ8b[詠i&+SqxWH_"R^jwxF#^F0O U'R|bzbLj@F,udZvlTY`zꪶEϰ7}[+Ajm|1Ke*X1sId&@Z)i,;iE#A z!61fZyg}LeM_tޚM1WP%CP}. Y&RcB6fvX&YyU&j2%@\mylФk0OTujoDaj %öuٶa{g,')5́k|"Cs:S$ipGR:lB:^Tsľv'>*or 45K≜/Us0T_\hT}~\\:s{`dž?#*`v&[.pۣsǪ+cIJ|/[xo=vGMy/&{T g|,(Z2]`%-a@{Q˦
t&s^:*-Kz|>5#Nޓ^tV1"mQJy&ș 22 ֳS[C_2NӳമcEwPH)Kܛޥ6Ȇ[Ao0ZVI<Y&ӭ>Q> E!E2.lNs(Y<gW2!ܚaD^ٍam
?
jݷ-`(cJhWp%ƞ2>-?a+V'b،W` c,z4ƺ#Kr=ڭ)u' cԈvXԘͱhnus :64s҇79s̲-4ut7'Q0ˠf%fо 1PUm'i$*>~r):aFQV8SۣXG͗.`ԙ_OudɲW+<ژ!ȭy2˚ű'
CT'l.iʊvOD$WI&/F
*P4%HCXnD刚[email protected]"T$^xvDAڔ.6*٩b8_=dMk8L!>"D &2u2\XȄ
`n^*\:7
Isbи]e(8x6](c5!>.%f_ͽ*/̷laoqϚofZx6n^uE L|$˼J\}NF%AϫM3`t_]YHDnd\־9P%
!?m<24w^~2 )Ѡd[d8(?NtyϮ1vڒoӜv6GcggX4>O/drb}y!y!lZJgCB#{#'sZEkSsuopȠ̱H\+)DSv{x"WtG˿I|&okvU~ޝs{fkt}&q]LBofb5(7Y?^U~`q *mo}T9t0hBYnD,
xY6Cg[]2i_ǎ+$[iE_צjJc),WwhFn#ә&uA~~sgdέZX+DS+l_
ZIGܚdԉԩxy~,ʏy$T]Ԉ"L'iD`pK(^ka%^g{T@/blňrECk]xD\ MVe*mۉ9%J `RiI*P\2 b
6]v^>8}r_j<&;<-Ta|Tai\_,GV挾NYӍ+7RA-ox2ڃ^&0<TfQJ;_nH}]K)ʆy.RDv&#@Ad+e͟a/ѣt 6!dp2/1NJ|2`R9na8PFc, =F<IW4'
&L 6]ianA>$6$p YzEy8_c[
"}-QɌpQ?Dv~k``UϹH(Qb\Eۍtz'7($b5llHimKcrxRxSF[ϟin-*$A&RF`
aSCH̀NfXWDxa9JMne$=4*\Tq:IwSQ[4Z<pNj(Lr߷@͟엻RMbh;*&6\n0tIIUjD}#gI*Ls9>/@\5띲Dž2^n>KAq*REa+([8u:nGy3|<H\$ﶅEU_ԋ0/<2g=D..1_NIU:T"Zȩ?SP63xp˖>יe˷7J3Gs}96<ļB55d BxDwh(j4%:o:u"X]+J,m;p(`-dШ;;I|U$=9yPR\H:Z;BUoizk
pM=R@`XPiE[OYV'~5ݪy[n]\0;kʹx
!v1>n`Bs3TT Qczc5зn+><F95
.{Y`_Nĺnit^d<zgIV5ɡV,tRMW5T&k_2!pFB6/&s i0>/h@EO'S8/0u
Cdwz癈n%cL#KD]k$d1m;tx~3<8v }iu?KFMRx
u4ٌ|{vv^Ȼyb׳7ٷPpӣ=!l1|MAJq+#L=4͡'i4bnhv*oi)Qw擧J=:*'QBZxyRhոB ,>@S9Ji=<VZa>Iȶ)b- lGjPi"E샸λQ2J-}d ρ&4l@vT>CJ HxI bˉ*&ʀ貮HRק {Pɬu<+CyOrt}IBY@M ٱ5\~zw9ԓڨIk13}r`sk!t6ܯK gf[WGjH7!l1l20?A0<̌)<͠1O3T?0'ߤn_-@OJx?L_։?JW)2Ss"FT_k xN(RG%I[Zttaw@¡Kf>MTп GV퐍}2'PJ0$hgep/3
ܛ:
G: 9
+yه2$QNͅ?Y} o7M|~Ä09:jXU8/6!L
d<W^=I0@RCR`
=؊ϖ ME Ew B RA?~s`"$ŵiQ03L3/ T_hAYΥWj⒪m=ܬĪ]&;y{4w%=A[ݗ!9+_ `K#O)f_G^aw̃,P֤5Ƅrp̕!1m&W!qIu~ø<HSt;
L̜1bʑ~yϪALZ$f]
ŀchzD52G$Ԝ.fޓS>u¶XE|2szZ:.ٍᨛees)2\bkkxrE2HY
lȿ^r=Lc3ǜmToS9,e^u5Zekdo˝r'i>i^vkŮ^as6MQԑITiNG}tʼ e]pDkɳ}=E/D9&/%ͅrGhe*|t`pd)ULus9N Ԗ)H=JCգ&
/Ԡ98u&|{H&{[a2к oBƓٷޝ3]IُsnNTa`ɇfCؗ⣸f\lo{0(n?QP~K^ofnݙ
k%XOt*ܰ8L',
`"iJmx-iO`NPakBGMOW#|-LR\-@;rj
|&RޒPls2mJnX[.xaVQI#h^ B*%6%gM$jUw
tJaRNGG0%Tpmm(2/\
ߡw7MZ;yeo#{ fu8@>mVBPrtUCe4?,qFv+N_U.<