From a5cf036f8f1a817ab3dd783f4a9624ddbedb4a6e Mon Sep 17 00:00:00 2001 From: Markus Rosenstihl Date: Thu, 20 Mar 2014 00:37:04 +0100 Subject: [PATCH] added new custom widgets --- PowerLawGroupBox.py | 131 +++++++++++++++++++++++++++ PowerLawGroupBox.ui | 193 ++++++++++++++++++++++++++++++++++++++++ StaticGroupBox.py | 100 +++++++++++++++++++++ StaticGroupBox.ui | 147 ++++++++++++++++++++++++++++++ icons/add_eps_infty.png | Bin 0 -> 23447 bytes 5 files changed, 571 insertions(+) create mode 100644 PowerLawGroupBox.py create mode 100644 PowerLawGroupBox.ui create mode 100644 StaticGroupBox.py create mode 100644 StaticGroupBox.ui create mode 100644 icons/add_eps_infty.png diff --git a/PowerLawGroupBox.py b/PowerLawGroupBox.py new file mode 100644 index 0000000..724a414 --- /dev/null +++ b/PowerLawGroupBox.py @@ -0,0 +1,131 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'PowerLawGroupBox.ui' +# +# Created: Thu Mar 20 00:32:53 2014 +# by: PyQt4 UI code generator 4.10.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_PowerLawGroupBox(object): + def setupUi(self, PowerLawGroupBox): + PowerLawGroupBox.setObjectName(_fromUtf8("PowerLawGroupBox")) + PowerLawGroupBox.resize(206, 129) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(PowerLawGroupBox.sizePolicy().hasHeightForWidth()) + PowerLawGroupBox.setSizePolicy(sizePolicy) + PowerLawGroupBox.setMinimumSize(QtCore.QSize(0, 0)) + self.gridLayout_2 = QtGui.QGridLayout(PowerLawGroupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.gridLayout = QtGui.QGridLayout() + self.gridLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.gridLayout.setSpacing(1) + self.gridLayout.setContentsMargins(0, 0, -1, -1) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.label = QtGui.QLabel(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) + self.label.setSizePolicy(sizePolicy) + self.label.setAlignment(QtCore.Qt.AlignCenter) + self.label.setObjectName(_fromUtf8("label")) + self.gridLayout.addWidget(self.label, 0, 3, 1, 1) + self.removeButton = QtGui.QPushButton(PowerLawGroupBox) + self.removeButton.setObjectName(_fromUtf8("removeButton")) + self.gridLayout.addWidget(self.removeButton, 0, 1, 1, 1) + self.checkBox_3 = QtGui.QCheckBox(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.checkBox_3.sizePolicy().hasHeightForWidth()) + self.checkBox_3.setSizePolicy(sizePolicy) + self.checkBox_3.setText(_fromUtf8("")) + self.checkBox_3.setChecked(True) + self.checkBox_3.setObjectName(_fromUtf8("checkBox_3")) + self.gridLayout.addWidget(self.checkBox_3, 2, 3, 1, 1, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + self.label_6 = QtGui.QLabel(PowerLawGroupBox) + self.label_6.setObjectName(_fromUtf8("label_6")) + self.gridLayout.addWidget(self.label_6, 2, 2, 1, 1) + self.doubleSpinBox_3 = QtGui.QDoubleSpinBox(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.doubleSpinBox_3.sizePolicy().hasHeightForWidth()) + self.doubleSpinBox_3.setSizePolicy(sizePolicy) + self.doubleSpinBox_3.setSingleStep(0.05) + self.doubleSpinBox_3.setProperty("value", 1.0) + self.doubleSpinBox_3.setObjectName(_fromUtf8("doubleSpinBox_3")) + self.gridLayout.addWidget(self.doubleSpinBox_3, 2, 1, 1, 1) + self.label_5 = QtGui.QLabel(PowerLawGroupBox) + self.label_5.setObjectName(_fromUtf8("label_5")) + self.gridLayout.addWidget(self.label_5, 1, 2, 1, 1) + self.doubleSpinBox_2 = QtGui.QDoubleSpinBox(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.doubleSpinBox_2.sizePolicy().hasHeightForWidth()) + self.doubleSpinBox_2.setSizePolicy(sizePolicy) + self.doubleSpinBox_2.setObjectName(_fromUtf8("doubleSpinBox_2")) + self.gridLayout.addWidget(self.doubleSpinBox_2, 1, 1, 1, 1) + self.label_3 = QtGui.QLabel(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth()) + self.label_3.setSizePolicy(sizePolicy) + self.label_3.setAlignment(QtCore.Qt.AlignCenter) + self.label_3.setObjectName(_fromUtf8("label_3")) + self.gridLayout.addWidget(self.label_3, 2, 0, 1, 1) + self.label_2 = QtGui.QLabel(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) + self.label_2.setSizePolicy(sizePolicy) + self.label_2.setAlignment(QtCore.Qt.AlignCenter) + self.label_2.setObjectName(_fromUtf8("label_2")) + self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) + self.checkBox_2 = QtGui.QCheckBox(PowerLawGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.checkBox_2.sizePolicy().hasHeightForWidth()) + self.checkBox_2.setSizePolicy(sizePolicy) + self.checkBox_2.setText(_fromUtf8("")) + self.checkBox_2.setObjectName(_fromUtf8("checkBox_2")) + self.gridLayout.addWidget(self.checkBox_2, 1, 3, 1, 1, QtCore.Qt.AlignHCenter) + self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) + + self.retranslateUi(PowerLawGroupBox) + QtCore.QObject.connect(self.removeButton, QtCore.SIGNAL(_fromUtf8("clicked()")), PowerLawGroupBox.hide) + QtCore.QMetaObject.connectSlotsByName(PowerLawGroupBox) + + def retranslateUi(self, PowerLawGroupBox): + PowerLawGroupBox.setWindowTitle(_translate("PowerLawGroupBox", "GroupBox", None)) + PowerLawGroupBox.setTitle(_translate("PowerLawGroupBox", "Power Law", None)) + self.label.setText(_translate("PowerLawGroupBox", "Fix", None)) + self.removeButton.setText(_translate("PowerLawGroupBox", "Remove", None)) + self.label_6.setText(_translate("PowerLawGroupBox", "TextLabel", None)) + self.label_5.setText(_translate("PowerLawGroupBox", "TextLabel", None)) + self.label_3.setText(_translate("PowerLawGroupBox", "n", None)) + self.label_2.setText(_translate("PowerLawGroupBox", "U", None)) + diff --git a/PowerLawGroupBox.ui b/PowerLawGroupBox.ui new file mode 100644 index 0000000..6856cd1 --- /dev/null +++ b/PowerLawGroupBox.ui @@ -0,0 +1,193 @@ + + + PowerLawGroupBox + + + + 0 + 0 + 206 + 129 + + + + + 0 + 0 + + + + + 0 + 0 + + + + GroupBox + + + Power Law + + + + + + QLayout::SetFixedSize + + + 0 + + + 0 + + + 1 + + + + + + 0 + 0 + + + + Fix + + + Qt::AlignCenter + + + + + + + Remove + + + + + + + + 0 + 0 + + + + + + + true + + + + + + + TextLabel + + + + + + + + 0 + 0 + + + + 0.050000000000000 + + + 1.000000000000000 + + + + + + + TextLabel + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + n + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + U + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + removeButton + clicked() + PowerLawGroupBox + hide() + + + 95 + 48 + + + 144 + 80 + + + + + diff --git a/StaticGroupBox.py b/StaticGroupBox.py new file mode 100644 index 0000000..40c1d34 --- /dev/null +++ b/StaticGroupBox.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- + +# Form implementation generated from reading ui file 'StaticGroupBox.ui' +# +# Created: Thu Mar 20 00:32:53 2014 +# by: PyQt4 UI code generator 4.10.3 +# +# WARNING! All changes made in this file will be lost! + +from PyQt4 import QtCore, QtGui + +try: + _fromUtf8 = QtCore.QString.fromUtf8 +except AttributeError: + def _fromUtf8(s): + return s + +try: + _encoding = QtGui.QApplication.UnicodeUTF8 + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig, _encoding) +except AttributeError: + def _translate(context, text, disambig): + return QtGui.QApplication.translate(context, text, disambig) + +class Ui_StaticGroupBox(object): + def setupUi(self, StaticGroupBox): + StaticGroupBox.setObjectName(_fromUtf8("StaticGroupBox")) + StaticGroupBox.resize(218, 102) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(StaticGroupBox.sizePolicy().hasHeightForWidth()) + StaticGroupBox.setSizePolicy(sizePolicy) + StaticGroupBox.setMinimumSize(QtCore.QSize(0, 0)) + self.gridLayout_2 = QtGui.QGridLayout(StaticGroupBox) + self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) + self.gridLayout = QtGui.QGridLayout() + self.gridLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) + self.gridLayout.setSpacing(1) + self.gridLayout.setContentsMargins(0, 0, -1, -1) + self.gridLayout.setObjectName(_fromUtf8("gridLayout")) + self.label = QtGui.QLabel(StaticGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) + self.label.setSizePolicy(sizePolicy) + self.label.setAlignment(QtCore.Qt.AlignCenter) + self.label.setObjectName(_fromUtf8("label")) + self.gridLayout.addWidget(self.label, 0, 3, 1, 1) + self.removeButton = QtGui.QPushButton(StaticGroupBox) + self.removeButton.setObjectName(_fromUtf8("removeButton")) + self.gridLayout.addWidget(self.removeButton, 0, 1, 1, 1) + self.label_4 = QtGui.QLabel(StaticGroupBox) + self.label_4.setObjectName(_fromUtf8("label_4")) + self.gridLayout.addWidget(self.label_4, 1, 2, 1, 1) + self.doubleSpinBox_1 = QtGui.QDoubleSpinBox(StaticGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.doubleSpinBox_1.sizePolicy().hasHeightForWidth()) + self.doubleSpinBox_1.setSizePolicy(sizePolicy) + self.doubleSpinBox_1.setSingleStep(0.05) + self.doubleSpinBox_1.setObjectName(_fromUtf8("doubleSpinBox_1")) + self.gridLayout.addWidget(self.doubleSpinBox_1, 1, 1, 1, 1) + self.label_1 = QtGui.QLabel(StaticGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.label_1.sizePolicy().hasHeightForWidth()) + self.label_1.setSizePolicy(sizePolicy) + self.label_1.setAlignment(QtCore.Qt.AlignCenter) + self.label_1.setObjectName(_fromUtf8("label_1")) + self.gridLayout.addWidget(self.label_1, 1, 0, 1, 1) + self.checkBox_1 = QtGui.QCheckBox(StaticGroupBox) + sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.checkBox_1.sizePolicy().hasHeightForWidth()) + self.checkBox_1.setSizePolicy(sizePolicy) + self.checkBox_1.setLayoutDirection(QtCore.Qt.LeftToRight) + self.checkBox_1.setText(_fromUtf8("")) + self.checkBox_1.setChecked(True) + self.checkBox_1.setObjectName(_fromUtf8("checkBox_1")) + self.gridLayout.addWidget(self.checkBox_1, 1, 3, 1, 1, QtCore.Qt.AlignHCenter|QtCore.Qt.AlignVCenter) + self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1) + + self.retranslateUi(StaticGroupBox) + QtCore.QObject.connect(self.removeButton, QtCore.SIGNAL(_fromUtf8("clicked()")), StaticGroupBox.hide) + QtCore.QMetaObject.connectSlotsByName(StaticGroupBox) + + def retranslateUi(self, StaticGroupBox): + StaticGroupBox.setWindowTitle(_translate("StaticGroupBox", "GroupBox", None)) + StaticGroupBox.setTitle(_translate("StaticGroupBox", "Static", None)) + self.label.setText(_translate("StaticGroupBox", "Fix", None)) + self.removeButton.setText(_translate("StaticGroupBox", "Remove", None)) + self.label_4.setText(_translate("StaticGroupBox", "TextLabel", None)) + self.label_1.setText(_translate("StaticGroupBox", "

εinfty

", None)) + diff --git a/StaticGroupBox.ui b/StaticGroupBox.ui new file mode 100644 index 0000000..7a55c1e --- /dev/null +++ b/StaticGroupBox.ui @@ -0,0 +1,147 @@ + + + StaticGroupBox + + + + 0 + 0 + 218 + 102 + + + + + 0 + 0 + + + + + 0 + 0 + + + + GroupBox + + + Static + + + + + + QLayout::SetFixedSize + + + 0 + + + 0 + + + 1 + + + + + + 0 + 0 + + + + Fix + + + Qt::AlignCenter + + + + + + + Remove + + + + + + + TextLabel + + + + + + + + 0 + 0 + + + + 0.050000000000000 + + + + + + + + 0 + 0 + + + + <html><head/><body><p>ε<span style=" vertical-align:sub;">infty</span></p></body></html> + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Qt::LeftToRight + + + + + + true + + + + + + + + + + + removeButton + clicked() + StaticGroupBox + hide() + + + 95 + 48 + + + 144 + 80 + + + + + diff --git a/icons/add_eps_infty.png b/icons/add_eps_infty.png new file mode 100644 index 0000000000000000000000000000000000000000..c27f4055cfe518efcda675884c8eec7d97b80d63 GIT binary patch literal 23447 zcmd3MV|%2}6Yj*x#oW zccGt&R8o*c{D$`p001CLONprf0ASLfk2owe=!uaO@d5yVqhu*6sw6EcN}}XsZ)Ry@ z3IJ%q)o6QisT)3TAIFVYw;y>DsUB5K-6wcTjl0ONTx5mHlpxTeiC~~fr%a%rWhEdK zD2HJv&xJ&6_u}<#ANy`S_ig*;InNwd_dN0Bw=4^I=l3uHx)Jh>jD%^-070T;v~E;y zB3*iJ@VldcZ#Muu5_pHa;)w73`1rCng8ti*01;b)q@uOAe5Q$H*(*EBF-kv;C;N~yVWvW+i5nM&`#Z@!{0-0fZlC-FlprRR<-En3W?%oIKnQ+ETZh3Fv(d3>+)r zVFZ+wP!DZw(W!5a@VH(N_|LDBnLHwLOT^UTIQ?4SND+Nr-gr7fQ!s!iCc3}M*PLlL z#X`*$@$=M@S==8Z3Moom+fT}1q{14Dw_umQ(LQ{qfIBw%u;kt};RH%xy(Y$N5k|F2 zskcC+85GgH@)3*1WXvJRh%Pel%L;;WH|YIO#PU0NLYWl8)Fzyi*%y_V3IP#9c2NgN zvFxWgGK$%0b4TG0r{ca~+LXaw3t4+&QSyjg=eaH)5d!~v;rDRyGu2C_$Nj+|j#18o z$eAZN)`AIf5~lcw)~|(U1B&55x^PF)cu0>d)lvF`7(ZexOVL=k)LGVgNa%hP*gzT& zk3c09z?knn;{DB)W;DwUB*qSmPr!!#cs|igHY4ec4f5U}7!+_n&I;BkVWz=tvNI~H$1?humkXv1s(x<`}cVO!bNfyo3hv_IoD z4q&&knkryvC3Lr(ZQL4!YXz{nwgo!7EZgzkd0VSlT__=5Af=Q;Pk$a9P* z&?F(fv36q5g}N0loaXz}CoiAAS(|2J5CzBwf;@LicTIQJ{#U@aGdM~$=tYA5TjEo6 ze7I5K@34r`MG2oDV}kSR!kk;!?^6!nlC59EByYo#@RYy;ui6pd^+ad;kyb z44B>5ShoWBUj~@tku!f2v<|>`Xuw}`iKs%cug35KgZcoZ?|(Rh@nHeVBv8I8kd;4q z|3XRh6KFxe?0|3lT>KRNZbArw)-Rj@KL1DB0S_YpO$nM#7_l81PYAvp;wq5nFLKx) zcrK38KLlEU?LTxuBpxBCq+}ZrBxG@8WKj`3g|RrKX%U2bK^`Q2Qm|;D6eQsZE)@8* zLNny*W9r3l9l?BJ&5xL@| zMovhk7BUst6<+=JQW`9GTqHQd$NPOcM_^&pOrS$(8_+6oE%9DRdqUxY$AhgO)f;3N z)&6aaBm22>|Wl5f7e_DaS+szs=?Q#@JxU<Oc6$%L zJbdQpl>yy-{@cVCj1Sxo(+}GZ5E?LLGE2=plj>g= zCIrTMR48z|aAuJ91AZc;yHrLAH;IvH(mB%cZ8iO<+yb&S=i0 z&gl0v_ncT{(csZPWWUQoPg16ZGq6>AXuxTZYuGOjR-0DmR;!A!E2mfpQJ^BDPDZ*% zF4%B!NOQ2Y0$N>K@md91q1-gwOx>uTw4OwsG@cxh*ux>iaV1ek;o__b$O#0wUb!E+ ze7RJ)>l~1rm>h4NPMuyIN*tG*5S>4Fu=Y6ikPc?{>~{QygLe~m8xA9PX^%Q4*=8q4 zx^mNpvPZmQpSg*n6vJlY?1>F=4Vkw&{lNUtf!~2_AGsg*-~`~E;9%g~;I`mRL1MzT z!i_)Uc5MGVi(H6!i3p3lis*~L5BLm}4k!;ChrWksic^Rah$o3#i5o=DM^;9^MIA-B zMKDFcMO|XZqEumdGbzy5GF>s}QTrMCNQ_}= zs8mqTb6L8c3Y|91f3nixV&eK|ie!#9(rBw|H(qG31~UF*#M2dNO|ipGHBMMaj!vse z%lDr;_(=&NA1oH^CfZyOX_RG@k6M*jq#QVx z(Gby)@7Qu16d5%xknE;fT@h-Tc3O_xhdW+9Ve?0Cns2UqGU(61R$>3Id6ki*U#s2d zEek%!6}ikcLp37Rc-4U|nUA#RnjA?SyBuvcj;$Q6p{@3p7#C<4SL^7Po0rV1{_cO> zxpr>`lqXmw8U`cB$CoN5EXP;>a<6;(thDM!c6sS}=#4SOcHMU6x@lejTSqNsPx%*W z>1t_f$-OC`N3MKNM)t7|md|Dmu1*cE10Nlp+7B9zEHAasUZ*Fgs>ZAXO@t=Mr#;WT zjy-1IEM86CyYH9ork`?e7w&iuInV3%^UnnpIY_V*up#6iWWdwFYap1R?I5{fmY^3P zy&*Y6>%$5J)ONi(}jZL(<+3(<#p*xdW6l->K zF?w){QI+#$khPJrvComyv)btL*nfe4|NbuZ&Vv?$jzlF#aYmV^D3a8j#Pbw=CD`r% z7BC(-5$pm3fh-`CrZ}Sj^cs6rx;Fw2!XPOUvT&>9ibxd{#}IA$H6P#{;k;@YR;rw3 zE46E;B{l+p6b{>O(x|iZFiz@ax0BDb-VAkUqNM18ClQX@o+-)eyUrlzPgpV zdio1fZn=cIr24FZThE4}vDSiz_|?R#PTbl9j}o@}Gq7@WDbX5hh39PPyiO0h&%huU%D;&%ufo{cONaH5%a`@-wZXOH z>zB>UGly%BxsIxP>2zDoZT;vj7dRI9i@4ovCR{Gpk*mphMpe6ksH2HxMYToyiaq%=eDGea zFMMyWXVDPM4a^G$EPWG%`}p*}jGvuudam8B0}h4m^L}^37?xI7@N}QRQ;->mqXcApyMfZrs@DUxp{L>#dn3m&%o~PGe(J!r z+v%hAf6qJDRkD_o8l$0=_cUM6B<31dlXu`-#y zSR?u(2I1WCpw(c?s7LmONZX*`K-Ku@0sTR?QR-=85+&+(1{)eD6&Dpf;l1($dP~gA zj^3Ej!o8v1rR4*L7@p-QAGdP@_lnd|R!JY}DvD+<>^z^H;y<-psRipEuedk$HX zvRd_S*WBq8!swo~;I@6#GUu7cF1s$5E4%H51D&q6fts<;V#!AH_H_L5dEIHrq4YWT zar=S3Y#+woB;UCs2yD;`(I#*^F*q;`PPa0>Dw zV{)XaF!BEj_8I(Z+$KB&iH+Du+DKr+BZdPrxihgf3CL}H^}7L=8V`LH=bU-MR!p19*X8O{>Qs8F_}C9c#&pIur`uMO*UPFjs5a{O zrIf9<;_&#`a(MoNKa?GW$Qny0&ogb-cA?v?W4wN6zipX++V6ta<#F|GGr6PgN$9J< zuTAZ_EU($%YU@7Ug=qSDiLdm*8i52N9y&UFARh`U%(b>#jD`<6M? zV5YAUH`=4en1EA&OPT$Yx8!@v+tHTGjBdVr7F#vjwfXv%`4smo{Oqh>`x^@|83_J4 zaPw>Wc#nCdkIDC0->bLqo!s2@qio)5W@N++D4xiZ0-uHX2}llV>2KIK*gdyowFo{T zI7P%w!6|{;lT(>m*HY7pja0B9y$I)?;Oc5W^3d{Vc^&(J0`CdJA2=gREYuv@k{y$I zlU0|Q9iOl*7~A~UNmf_npmf{I+7ne`Rk{`ct-N67eH3SBn-dpj*KAM%gctQ9mp5ik zR$H)YBD&X>T~tt@m$s(Fm)Di&rSxWj2^!=aJyy7!IqaI(6LDL=R(3vg-TcRUx_oG` zo49v+St7ef&ghB!qV`U7>wK?C&X#NrZU=J&6$*(TdK2OU+e4U!+nY@$k{Meb9TPbp z^M<>L)g-9FiG==40(=q3hWs_)@XKJHh^vW-;Dk>r$>&6AY1 za<(7a{>H6wW(vBuqK?_ANmb5T7P+eqMLKglTmB(}K3M6`nj7o6jn&(|xuihn&*N}e z!}RG?X3gKsXmlM_LrmkE*X=fX#=gTP%VkV&RwFGFZ?)&foLKk?5=T_KW+l2KjNUqf zYbtiwt(uz^r!?1mtC*fEyLo%QY46d{(mMp9Cop$d_C zLV|-g2@QElQ!Y8LD6)Lk>@0DNar}woq4$t0+E+SxOj~6>#85a;!yyl${9;IvX_1?l z`Kc6Av{Jki7s-sP^OT%jvEl~uMs0fnCBF{W>5MDS&${vOvfS3kd6SwOnNksjbZNLqCM;9OX+^9ManDb z0ji}-ciw)tpF2P88fQr#2SWxIBz07s;-HBZWDn&&6WplzsRy6ib*S`@ULr@5SG7}Y z-c{+iH@MHswh!EnmyYsz(Dipz%C(0eG$(iW@F_!&-X)B zb8DBoVxP~hSNPgr>Wkmy6y5Acic)$-L|zv7+xB2K;*f*0M|cuAejh-yq%_euv{6$VOqPb|~n6h7IOBl8J~P zXb}YBOeDEu6yHM8#Bu-R8t_zNJwiT0Tpi2J?Vff2ucl#7|S|GnPsG9FXy%fJ(1_~Y?5~Rd4av5ytzShgaN{M zW4dElVg@1A2XF_VlZh8dnuwhFqY-4Gswk`(9eEqlr*kjq-yM-~lg0lmR3gIYy=M2JJW#3sZRhWCbpDZ42*OE!x6O?*s(+lIzV>=?I}83ZeD z3~r0&@eir#aw|EPYRe7h%jdhBd+a2OG}50EW}2^}1d;=r3mOvh9XrR>7qE{!;KgN+ zb1|w!m#J-{Z1FD)xc>53@ecPtUftUr@;B7FZ{Td|^H=g6OMh(f2+Z{U@f-c9OB95x zgermVLsCcN#Ra0)+OHI@8j~4!?Q=hOP^wYcT|5hZPrUFvc|=W5*)?XWus&tW%+xk_ z_HdfMAN+O~jTiksBcI~eC)7@(Z>mhFyP!wyQ1cLGBkH&y5pBI*!z+?&>8?ri;*QL( z;+G@v{n6xDYMU({o8H(H{YMV)?1_#vUK-3$!g5V$EzC(o4B2kGPCIm+Y;HGikL=Ows zlr&lQb5>AlQF zhJK5d4Y!Wq%@Ynj>O6zNWLn#{5z2?uJ=GoT^ZH=`z783b_@yH+(*xLfUM_MU)M$XH-peO~1**EjO> zAFOG$#h$g-vdv=9;Jl@I?NS2bpXDLDKHsLnq~uEHi`wPQfBYP^l-`0}+1@GMK#J7? z&$FKVB!99F>I6X=z83=;e=V06r4T0*gGHSfZyQ~{mEMF9Z|TDK1tbP)7y>WXA*z!5 z3>_=^PALgts^iEchUp7r?${2`*Kw#_@vGsZ;}lt_NjPi{Ccj!Q-OuJDVcW^2(l=gC zBF=8Btge=Mi4~^Bg4LFDgN@*UtD`MoFZQP*jCX!>jGmv@ljrhek@5TJK9%v-Q12!u z`n%sX-)MN0Vh;SlaO3QtVOp=FpQcWucAOUX{r(&tu z0oLg!;;BFeBtEQQBg87avp-P>OdqSZauyBR8CNChk65b0$DfC#2>d|>q3XjlQ>Ihw z8Yo>b+3|#dnAqleV0H-1QONx(`zw}HmUotBKZg&vE-|J&kv745e)tkXB$CD%CCx=O zq>?DM_fw3i4KeiVA)RCCS6_)?OtrD`=6zyGQk3x>gRi(=i4n0GFl~AEG69{z-=U;M z(gyIzSPKV!1?>%>%_mi=n9X0YIyQRhW*t(sHB4mF7t^@W8LQi=PiQf7 z33BN>FT=UR{gK_CJ(u04l~hx|eA?R2vzo?OU8S)Xm9P(?ojj?Ny_M+^hy0( z8^;1G5-#2u{u{h|k+L?Hs|?R#zBlzu3KuI~{CN(;hU`elB%jE;mUWiUn&U{xc2F$0 z{I?OzBaE8xzp$$$$W@q zo-MA0wQb!g%_UuX`aMb2yV!MP?*nj1xQ+U5a9g5|AKs7j^X~FrsN=SDX2tMnn!BVK z;x_XP@%znd@~X(lufbzY!=t`hpX@iF1Fg5`=-qniAU(aHh@V`|l}=C3NUMZ__51i! z@<)?xuGyv;zyIfB*nz}}1jLUo)LxmW#U%(5gtz(+uGWTIad3bS2SBiigF{1>lfy6V z&-92aU@h41GhbA_6sYKeBrA^mT85-l_XYeUzNbA%2%8|b0RV&m(qh7D9$=Tba31PQ z9Y8@kQ6UIus2_{alMcZ$DaGvN*zA9F%G3U0S;PMcx|A<}WL>Nb)wN)LApP~F8PU=M zS*3(aAS8PdpiYWqBVQXPQw}a;RZodo^!qPf0?pT_-Nzme?{Q9!?~K5GSDyK??){Cf zd7rlT6{w{Zkp!m@0;kwX@2CD4VNHUR3V@XArxHp$Ko0!xdl1TRDd@mK3N#WhwBJ&9 zoS>;f;KHy<6v6#QXmAMtI3q5oT*1QsmH1cghE>_4g6il~72;^Ov_ zi2?rL6-;43NyelHGF+(}fsdO(A>-D4h*Wr;h)9YAGe|ijgyvbFJ#^sgTBd0-uI_wf zv2$TiXyTFF%J?1jHM7F~LXr><$_=#*aIarv-&MG9S15-^7FmsH>sFdN>6;vsd=0Ms zNT%PxT)hsXd13(jfzCRvg_P*hva_hh=pX$dey6o=vzCv2=?W>h5(d-u zBi07;&N}jClz}ePKfjTEm}#wA5DcOET`1NoG>GNc%`^rM;N`<|>}n>JCj7Av!~8vB zjkl*x@B`7&tTPO?3_XTxf%`t&5~Pm~rQd!#pKV`W@XkuBCQVZ78P`1P$~p~&#)2Y-OD)=`vu>|2JMY80O(!}LtG^wRw* zWjE{!g9bwNs_b1EL%T~#FBBvSdV<`=dw4U8Q5<-w4SwNC_ zae?!?oFw$@mQS5}JzdbI8~Sy~WwA@wc3trZzceo>G>M~mlKRnQbY`hpmsUyf)HL;I zg`ulZr~~Ay!WZfz?5(YnC5e62h&*<{D(dR&&BH{4m5U_C|1}sN&dV~V!ZUX(K_lXs zC~A3Ad4U{tfC})(=k+lCuq53eNf3A&f48WrDDCX*?Csm*{hY?^dn)U6Kg~IrKq~43 zIZvBXierUG$GX2xAD2wcL}pnF&0?pDkn0ygy0@cr1yXW1Mjk)bXgX;EV!xYDo89KY znsr@jg=*QvvA{F;_|#PM{%bgh9vqM)S@HZ&8Pz&1GQhW$zO~q2l-x!GkR6Z9x~3<8 z3!X&8HRI_b@WMhD>QyOnjd-17fD|!OA^`co#rj%;#8%&TH~e-Ym3@@AuIEB>G9zPpl8^UYosaa^&I_&4uO zZYD9nAu$S9%9B|#1x{FU4%i~vBra@Lf1uC%4W8Z%|FhmJ@VSrK)YSB;BOa&W7aNG= zOt9?i>|+C=@RyiWQIFT#+erIL1OpY>v@u-zrA8^jL<>CP3korJ`R!4~-wL9Nql$Ef z1iwD+?`rIQCwpUI`g=bw?I-t!qoI!ZPe4XM%LiO>{PBzKlHZ|H%wxdB#GJ3vta}=? z#*{0Q`V|US_AAqg3@$O4jqw9TGFB3&uzVnb-3In+54$gc`13^aNgPkl$Md8h+~i;^ z(M=mj3Wg>{1b*H3)%)=>D%i?-ao_HH())gu{3jS@9lShzy&gpjQ#J-=07tPQ=1gWD zLlObY$c8Sd9+p=e4cpr9Wsq1#T^%!OJcGsf;C7Tay=jJL66qcpRf@;Iyr$wR!%D*{;>tC(MCvr8aWC<~(JbdHb#4Ao z?KDk3uTG~Rb~yp*{#k?KEipKA?@OWY(!0I?d$#Xb>@bR*R5*$VgXVce zs^XyUefDYnFg*L$tz#0Xq5&HfXcU^;Njb|N1EN?YrOp z0=nxWPl;nRi)dyZ-Jr%ZuFWi@7Q1QHd@Iz^7akx(o)P?Y%L>5-3Q6PBEd<7&4^#S*q?#K*NFt^Th33dL<#+Q3=F+HI zuOsPM*z0>ibr57yD!@RA&3FVs_rO6cGJQ3N%dt?Oq=1kvp>&z+(;$8uJ<-KYWe^7i zy3`27&J2$%=u;0E!mTY)P*zXag1l)bGtdhzlC5T#7EiSbKa1)>QH_m+=2sM(UuC(h z*HQN;B!KR6J=b_QpyliHeBN~Dt@@b(iV}!$JLssDFeu|~+kWfjMo@D@W>!&x4Ixh+ zhkU5gE>gVTs%F&uhRy+~@nse}H#@uv8~>d;0RX!Lh2x=y8qc)Hp5r-oxrm`3Q4tF* ztSF|!TT1vt9NiB=4hE*cXEzl4LY=}6Czs7U4y%k3R0)7(0}Nte!{5tpsa%#&7+QB$ z#4~H@)VmE$v!C9)4I@mBsS4_~f-GXzW?xo`Vw=J~x@b~$!aC&m3& zujD{FsB+c141S(z_B9goITE>%SHm+Os3NKaszo4}j=hRvZmi{?~z;vx&~SzB3M zgs(BT?|{F9xgV5)I6(qN9a!i8dH#fW^nyoc@DE;CO+GN~B&^+{GXiw!QybQFt{On-DV3vs2a@KcQjUpnUyAWM8$$yk+!r5vD3 zfZcB(Z?~@P7%_Al`JXH=7+)oVrmn7aG{wV^p0JgctK<(!5KNt__VqFKSeFTIN=t;x z8xFx1va-=VAxsPmG4<+L)FA4*g1;q<|ChmQ+O`@Ei^`dM`~Nirg)DHU@9UMGp;m__ zQg5UidNd|2Din~HI*;t1TRM2`OG-$DWv2T5R|B310SqMwL8-pS>*GHEYa_1~o>ff9 ze9FO_DxS|MvN$SV=d!%RDrBH&|K9_jh^lJxrY%C&|3DTYy~&*Q8JT%HtEy|=){3KF z_j1MWEYc~)D=w_SI^FGzKyGVsJ^_53r0~2zOBCuv>$fbsTyGmSeev}4 zeB#C5pZCa!HSoC|c9Ujk{7vokui7j4`<^2XQ6vuZnZZA@)l4oj{W`9SPGT;H{wo*( zWLZh@Q<)u*S}gv`s2>pBO{mOmmkVWz)!9g0J<&{^V@&U$RJ>Xx30s&KtrpF7f{^o# zb_jg{w*p?5;`2xK0O(ybdn>tQ+`r+QG-Mt$DNS$`+V;If-xBi?OP0a<*Hx_dMQoyb zS*paT@$m*+LLQfLeE?}hXQ3F`!*EAZ2$JWnUUac4096B3t%_b!egTv6%06hYYV}l# zWD}0>X4^9ZKyx>F-s@x0iazt-{`-c5hZyQHX#xFToQT3&ira$kC-I&qHDpmA ziS1)6g?>7cWgoWf0T7aj4-m1+AR73=?UXukS$qqbU&LYz;EE_dTHwnfij0+_n2syo zZtg5x#H0ek_wRPYf=Vg?T!;vO_)BHFpO&|pXd02H2oK^jF!&L>?6jb{%2SWn&RV#I zE(+FqlzsYw?_<|R>AVocQz=7muaoKlm@2PAyyCZ_TbW7R}LKA`iyhRE8FP6Sf#f*^9Zunp_XQgBy(?R);Rc`KT1X3Gsm7chot@&%F!han8 z16vLl5YgO`>$8e2g{q=oY>v=KT7%^=aZ~%OKRPlUZL!q>^$QQAKhNMkyoM?v<9;5mMKSj~s(_=`sBFmvv?(w&*zf>VRrZ+9MP%!57F?GZrl26%B(hMK z%dvj~q8&+~16)Q{;ji*4S@~e~GDke5Q7@*XKpu;c@CD^GP)R}ph7yo=BBLBxj>A(^ zD*1~XO&Ubve%vbtgN6UfY$*~9@Jbd1e3?~;dohY6vm&!H)cAUyg*wM(5Ofp?2#|ao znH$_nm~!TPga182fdlhDCRVqf8rJ&V?y&Y`Ly4=f&mj6A&~~sHdu4u%*9g`=#c5=? zw8Cki9Y)}Tm3`+KJjv+e;v_7U>MR)U22F)iBvDazK}sMyr5N}Qf^`5*2~4eu&^7GG z7QAfYLlD_H=n^g{SRO% z4sc~p29{Nl`o2@y-wh4Qt@hhQs(_j6#-V1%s)on&mC04}e8MKP`@1^|K|w*YOV3Rd z@pSQr`Nc(ybOHD4Wy;b^w`;eoW}+`4yROUDjMnucNn~!1o8J$o3!_bL z#-1rMi4QhwTFR_wTrVSn7k1eGPd2Bk`^_1MMhD_Ohuwa-EY`?~o1Z-ecQ0va8Lb_! ztHDkmFOHtax$dBp-WIH+jCia;8da>jHkF?QN%S%|oRqxDMmbs<+-bS@8pN1ZtGRn! zvveM=Y^^e^i2r@?EIf8d++~+4DNH-N+v5p-7E}Q$*ARk9)ow~eiJiqKEqCg@DbaBRNp1*jpo9At+Gcg@` zN-mw*`Ys1PE)+nPiO^*7&~SNTw7UHe)!l5}cJVRktYY|HskX9+!>#9WKT-U2nlEi6 z2t?3RGG1mU@9!bsrS6v3dAd$Jw&Iwy=d4Y|TteJ>Y&Qy>@-5eEotb*BRah1Srv(9< z`5WD<*))Ff!>xy}-X+kZA{vfI&n+4fEe&Ltg3?m?r|XwoHAa0ZOzQ!@5I63;Le%3f zhCde+2?ijT;aIod&pF2SI#wp5GAxYqQc_})_Ok5~vn8KpQNV96N8ZYSq~`gn{ARgh z_*t~CgKtCC{OpS_ZT{m=gyF_(X6rE2#%l)bctuhY!IjZG@mF=prcDzj!Z@Rgp5i5} zmV14Zl-P!JqRum^O>a-BQ+b=k)+@D7M;8*hy4i%GE}g27o$l96HKTEpwzAJ77}D`} z`3b?g(Itvz;kqb=%kfo{h6$xd&xIQP^-+JgwF#fo+NU>+JooahCttMb^&Wqh+Z1f* z@hI1JyJS2}x^VhpjK-B;w<_530blkB(F<{!Jnzl8{q{sXk1cfN#P4?2M=zBzv9V=m z^Z1LnM7Ap>;|OR$bjY(eK?~iuG?iwr7rQ!}8>zYL`C~jB%Qs_Sz}V*Vh=-dp?2X@( zvz~3&DP2E2|9G}E*;&@|BTfFT`LQ1YSxP}6PLTj25bh>2yWgfTsnL3n@AOiHME0mQ z)mKtsV*U;eW2}4%mYyMiB z0Bk!wa`*pFJBkaN9n-(UVhe80^Ddzm3 ztJD2IC?>0H`c$9Q8hC>#8SqK^%*hid8@Z8$iwR1hc- z-IDIr3Fn*LHH9W6a?DeAzfCoSL21SowB-o6wy`gT{KLw$2`I{>(@IFTWB}YyG>9r9 zchiat>AWJoRQR@sjEQx}&X~BQZdlZT8K5X75z?uB)i*djjF;H>YKYpqLQQtUAP3Gu zDU=ukaKB%EHx0~IFHVs<{U?mtJXZK$UI1N7B4oc9t=<^BS4q(_rY7>uBV}{JCkgR^ zPCi(?wcIXl7V5X%zB#c$n|^;g_}#M!=l||R?haA0&QZHjOy*mYewvXRC{lW$@2CzM zO$$ZyeL7XE(cg)1f7H zY;DftLS@f)kK8OazuuZ}^A{XHK=2M<+Rs`Rd_?AcpSmJi!E5hqMOJ`TFp&`g-v|XS zyv=ubxMmLjcpOyyaWI}S2~QdB{`CTr71prX<(|I0tkGe6y44;-bh!`;@*`XxdfwxL zm8UKSWd_l=E{1^%TKS!;uIsc>VsEtrlWI*jeG`*iQ>QJ@;}UkmIvB}B7wLyFK?66< z!UMEZ#fhto5|69@(SD8+2F#${kz4V)+j~eovT%>Dmve*^j@lJ=TV2OEk{u9^WIpu~n21@gJd1!XdFrXBt$W$~#AX_5(0 zKvstGiOX4Kt3<4K0!h<=!hi(2gLE&#RD>BsbvB52YoJMU6c<+_9_-!&ouHKlC_t*A zm{h-wq=y*{9E#`tr8iRm$!ekQ*v`yR_#U)3i#Gu&>bh!b)(+7I`k?Nb3KJy^W$bSv(}C;LN^`dwxZwPy&(NiFJlp`DZHZ$2yz*SFxL$oZ?CClXUM;j8L5so(%=f zmE}g+$|JdyywC9QM<&R5!8&MdRTkM1Y=pEteX0rl^H$kOmM?B&>~*TxbxtWyN9M`}$IIyW&2{vLP!8sO0TU7i^ z>1=WiZ2zME&YRZi$8@2u_zA!@?rAP8{EXHWrjzQbTAyyL^y!w1AJ1NAWXTj*UXw97 zO#4c-91aeW3*nR=%{o7z=8R8*Vrt$Nc(%wjBy_R!Ki%#M-%Q+>+)DYZyG&ZE37nmj z8Dz!fb;wk+vrNhy=H5aGXbBMq83j*QbNv0Ig=`XB&-MFx)fTzE4t;L32k%P*KWm*s z#^dZDBnrHLiyW~oqpU3bVWPL0jGbDozgE@0D}3=!8F5&MiR4w;qp|clB1UY(403JZ zI9#0QgTQ*sC*c%64gvwPY&2SF`r>brj z5~R^!qZrykGL*4AQrKcw$6rQ=I;-6^25#5u)bjH0Cfiq=Du!M1l`Bl?9j25*-|f^Tm(yMU{6!Gf=E`a?5s>3FOpn6Z7k3;}+-Ost$pCOLnEMZ>1i0 za@sxjA?!<+(yyKRxh^T=b0BgfgxmBbIvHEiK;fI1@9!$HQrYLVN@#~* znk1m6FzL}F!XS;0*HoDTr^Z?BTzU_X@F=*sgH4p|Y7emE(%_OOO&ymcxL3WT@LH=M z>9K^fUT7+W&0=tARIgX*@^Yqm^{AaY5mRu56^VBo{M&N=X;UUghf6vv{#AFnqn27) z)~L|u?iy6m)Dq#gS2YgzkPyoUMG%IOOckfeqy(Ae4@X6**Ce(DWo=I1dWIY4jELKV zRCSrb?3zX|pb2gs;hv*|L>dBfo=xPiv}L6}GwCO@Q@<{ob@c;-Aths+2j`#GPsOpJ z-XgK?3p)r3^%b$Mc;c)!d#iWTl+L`&oAp9@8|Wi>Yo61$(~ivwc0F6$JXLC~1Qw~8 z`%e64hG`hH)k&QA%V8cw|14U~0uh*UsO@gre%PlnBQU`EsCt|_Sz75cq8B=cj-7N% zNnBBQwi=Zv=C}?k*?qnuNfHFlfud|ofZbEOu8592Q;iqZVczZ*u+N#dw)qZg!cJBw zs%g-WA37_}Z;*O&S@e;WH)N?xkq{A+l|ik5uUoVf83$j9L^jPPae3)5Y5()ar_%d)N0#*WT~l_dR_HHt!soKTU}#>GKbgYE9L@=vul2fH|^Bt1JG@$a?htos`K; z2vp+*F~M6J-- z4V#mx<7RJy#*NNU>#}8hU~(n6-c$pVkgxgAet0F6v6ro~4ANx3?%`t>(P_dja@X## zeYWAbZ%P#8RN1u2*H52d?^TTjzpAU@kLiN?CiZaMZPGV*C!Z6OlP0_}*=e$5rA7nT zpvONPG*Xt>4$eHYd2-(VDZ4hwy}sDu3B;x{)x|am`7P%94c~3UPiNCq9c~$x-Q}VS zETF7_Dn0m*Wn_=(w9wpT_QOfR$k|l8b0w#x?#THPS?mrItKUm%Wt(km?1J|R`w7i* zSgD8M8viEsw3G$bNeHiL5VoX5#UtemA8%t_EnVNbU-F!37;Cah# zd)K=(XfpBj@l#|Wa3*6HPkgYzYK%UX{hUyU>#7m$y>;dodO&2J=H(b0vV$=78m?F} z9L&PK`y1yFzYsT`zx=kvVbJOphY-I@HgDd^8a_EM+ERO6qQ}Osc=e~jYMm)l`}<(o z#FNk*+G@8)Q24W8>k2_H^*ddreO`96pQ67^Xi@S_w<=^h$S$JS7WRG z!s}F@Xf<|*(E1X`dCE(DmH%*<_4m#jl4gPT4&}~nyK&uwsz7wDO2^@3$L`{RerC0Z zw&%~L+1E}by8IuNZ7!#2$6A=y<7gGW7jEOrKL`FH;Cd%thYpmTAyLR(tF(}Vx-oMO zf1T6|gKO_eiEt{1qI=4F6G_?n$r?hLP>jIzjapsyC9innys5iqqPo?kyV%`bU-*xI zf%+rS4mH$PSPJpmbo0OGet74&IzQ`>Q?c5cUizxw>_LbmwjA`jEK~0LYRu3BZ&bpa ztFNq0BY%Rbn?ENZnQ6S14Fu)-MBUAV75*K=maTMlbh%~&z`FlGn#|id&ru{%x=i}@thljx%c4Onsl`{jduxd$N~goWLppYk z_`Y2i2KXN?;Vb~bt&T<~poQRVBt|N&=e~TZkM@?8d@-=Zz_7D)D*?@1Ouq@<^mK;& zZnzSP)h(<~@A=>r>M($v zqnFITL7@0?9n<>5@8^X1gJ(&j(`kJ1q8F*{0lKeR-nQ4-Ui_xSoQL%H*ygTO-dFR+ zSLV8jmv6_@R{|y<&>B~H^xS@`X!LhMiNhMO=)F(We%-8+X;(Sr%yQb zCa~>OmN}oLA16Xp_MYZC72dTeoNKVxmN~VrZ8zH0s5}`GW{&P95aoC3gr1T!tImfn z1Kr1$mW!fi0;xo~Ho7pAjBMckN=BK)P?HXNp+AOL-kTOZQk`)=FX;w#h)u{$QPYZC zD=DAaROo3lKE5N3MJDT-Hav=~f8_kjq3$Lz4}b~3DTrTkotg5f*l63*XF2a3gmdN* zNZhYQJ5u-o&bJY_9^;nk7kp<5-fGz3J{zy1t!tI2{ag__x4+Vvbx=%xmXw zWw?o19;x}mCH*nNSlaz8zvP>lsr293GBHm*$t_>z2}Usk-;v+aPxvm-X)jv<;_9O? zQ_8#C#I6!6r=06Agk|Z{;S^A+FKrKIU;d%`W@;P_)cgv1AUi0|qBckwY{QngENLQj zFHVl(M#q};lBK9yIVZ?Hki3hc9i$L^PDnW(HB%=NNzb5+gY;-8lzbUqb}2Ndgqyjo z@3v(e+w8=JGEA(QwzC^|S{HeFjqkayRc@D($WdhB4Dh%rk@AXTSErv!k!9w*nyvEG zFpv$xuD#ZN_RZV{+L2hJS({u0tn2kG@oBL2oo7k<6s+yNC?S&pMaaRf7@<$`?iY-i7`J`}>wYFNM z6CdJC@fK4^HTACF@!InRU-U#`-%s*f(QbOj8e3Gjaoe;^$1j&21*-Oxpc~A*0;g8% zsZ*+z$D0PdR3?uVO1o*Dw2`j&qQBV`sYDfn1#iv39q6%*OX^u+X%QF8q|9dPY)>)a za!~e@RM&B9C;(ry-OeL(-m9sdHi$iulRdNXAevE!EzaRnx9_#Zqf(~7q9|@;Hw$6O zTh&!5j3;?tbtlKtb$#O0t4yzaU2ln3c6l=KZn9TBRW=`zkqn)O(76>?G&--m#m9eY zW2hGJ(N*=He-O1lYP_5$?f-#T2|%v~dFmf33fxXru1^>N`uZ&12@_SmS@~9*^a@`| zs27aju_Rl?$q+zz$>%q7nT4a!+6LzO5LOL(8J}s#H@t18G_{f2b&+0u=~onS*26Nc zZxGGBNF9sE_oav`tOaCD_J6rM&66>niP4ov%CVPkoFTa4k3GvoWB);-oll4Sv$zYv$4!+(v~ zH*B_SNGIxTTKd@0j>KgpWwKD`WpN`@*UCfHZB$|s)gYfdF#54rw!wFeX_E85@6$5^ zduAdQ&vgm6!S54`;`k$U&-+ud%jysTm9OIEH~HcKS{3$oGWSTc|g@dq)AsI>#iNwItJbH_uH1d&_Ih z!^axb=6OQ9Kj3TA1ADrpU-i#TR)8p)X`?#DcB-jz7xTIj^4cinRu#?6LbtY9U|{03 zf$oJ8a5igd*@^Vg@r#q|J@7ug|8Py=uLI*5ME zSgC{rxEi}H6?mO4wF%{Hhv>0XiD^us(Prw?vXvRolQT^vR{yM1vu_ee_5Lk=_VrR+ z{W;8_jeb%Y6It7=;`ZfJdf?^DLQXC@QROy~YS<}hha*Veoo>pmHpyyZ=CA*jZey9W z9{u`KAZwFnS|;Tc#yU+uF_B(U^M24>hnU9u!4OlK{(m|-??IS8O0`VT_IHpk-vo&( z#P`LnUgvt$)1Q*5Tk+BY-tcKx{fGQlaX;r5KwG{i?d1EasIFT235d$SeWjjAlCg&_ z?#Grtx-oWzT_%5_T=Zsb?&OifJ8s^wUE}rjPyLT>eN*g>8xwB&tRdZhG-=lsAN_37Q@j<$>U_ZgC_xv<&rH^%x>wm69NeJ{V4oKB@L!wcQAV}8GlQce4> z`DS`tMna*?J)s1hhHA>#SBGU!KE3&`p*QJU-1TFf7Q%awu=q@=DK#ozC}QaNZSK!n zpojl^qU*YwrW9WPn$x*7b?M@CAn8=YEq?op_NVofN?vwFSH!bCT7M9iU9Ov^Zi#70`BIs* z-FR+viNhwPX*oL?rFtw_QWw|2al%>k6Ass(;m^On$bTrEcQ@>|>iq=oT)|J7F*!#u zZ#jjtWJhL17!>--DrNNo?u4#Cb4p!*>zZ&WD6}@~nS?MqKSipo0AJ;mgy$C{^;;p( zGiu2KFO%r|*NoiB=mw7N|IRrX+Lv!s4LMrET1i(|+xzm?dvc9`DxEhBj-1-cBCQ8? z#)Luep=hpNUFQU~%x0jaFI**mm<{y5T+n9n_n%PuCkulD+EdC2HPA;BNQDBsyM)I; zsNDkMbIe~_LICI!2HFO{R`2-QF}(FZJ#Ji zrh|5FQDi0{MQ{pW9c*?C-T)#wQWmr|jTlrwF&gR)q;%geBvV98;{j-gWpVicZh~h9 zJoNwn1@zV``Q;T9`m(M*U5r(jN%;FC=tov@vY=7D(Q8y|t0MEDZ=FNNic#t=1M0-M z$!q0#?i8k{oF(z>=Tc=87kvfBO_I8{ zuC5ns;Sq!yhkj{O)4n$>qP>90_!vgRB$QCHH?{Nt7S;y17Lg$EIIseRnJ0W=+SPe^ znl^q*@INb6I-tznj=r2xWMGlHjW`5q^)-MlmJV?Dpvh=7aw;k?gu=Y*eu*d3e*y)| z%gaj?pKvnKAelo}S69PU)8Yz zE@cJV@q@olJI%ARoot3IUVSq&8)WNdxP%@ks3m*(Pq-49G{@|K`WOxcaV6!o>QrHg zq=2Jc{S{sO?E!_FWOZ}u&)Fzj!1nGIk6!+B4g8+e_xJb4ebKCWx;GnuFNU$90-H~1 zpNPcK-Me-%vCE>t_WbDU{_&=%H$q7qhNB9}%R~49wrYtfTknpr{&b>Jpp@?op&9N& zBDIs)!9$Y}e2a{ooqeBiGTBHit-9e%D7ltVpZ4Hn=SxGj#OabmkkgC8!=Dc+Gy#=0 zn+>Y-@tjJgEaJBxv`RW`&3_oKb6IV5mD)DI)VNrEA@%HMtHvp}sJfJ!kW=xP~F1LAaY0n@2AE08`5qL(8B+5^;5nP6s> zgK0nFf28CK({m$x$IhYM9xw^XgST?8A>Ef%rD$vqNTFbwu z|C_p};65{dlgcCl$zi;S?!&uiJFfx6ltkl*+_Wq7HAHa&L8Y>=cns(Q>V%kijF; zUcR(v@Bxf+E&}w{t~D}eFqnM{N?J`-&%lsY;BSJ2Y4w% zeOC%o*A;(JiJz7JDj6diAav_G=OX~=@)Ypg6Q|P+?zRP|4t^kn%JOceww`?85>~6r zo1E{~i53?iYLi*uYuJLxd9|ERd zgV+e3k&Kh=N~5ETddkMk{0D9*G zrCaOIoTM?7DHo3%V_{*L{6>s~&Qkvfng@cLz#Q=L^zRS%NMfk1=QdqvE?C70$6cZ- z+rnD}JtY?h03UKyH^0g0>7+(1!~M$U?Q89P(ca$Pre0|wmLJMc%)MT*yf0j1Uq*9xSX->(KbkwrW;@Bn-&%{(qjVl!&sot8 zq~#)icC=Eoq|kb3m?OeQT+1CGKl|SZ{%JX`n5B9DLZW5DF}E;sYLMwpa0!J#(SUCV zk^5A+e>CLuZ~#-by3nfL8h8qcob~{#2dw4ZuueM)nJ^CVxZrlUy(AwBaOnXXJ&o(; zoZc2CH}keil?Zs2_Dalx9A_y2=*Z=s4;1Sm;%gRgT3GLtat=o5^LoNayao?FJ$Y|mAJgr5s)FHRQvfvG&2eTY4pbf_a5I$q zV`bo;=q(NbOvZzY{JR>Nz(n$Ml!a(vIn-P4c~4!%5_DOeQyCZX`b~Fmd?@d))pInQ#FzUU5g%KeZ2F@Q^P~YbHWoWd5WZgZU;0 z7P5?y{n_H!xxz^ZN5x~Yr1neFDy5}yC!24aa9Y+>(M!82!e)@jA74=C&CixZZ4;RU zF+3bZm&XMr-`|bPi}*Kg)w+uJKSGb~#CJ7WE%kyeizA919%SSVd5y7)6|E#r5C9Kc z!jfrDg_6IcR640eyQdo3-Hza%Q6>`jljrcj^Wz_VbPC^j0IL4=pH&3}29ToMO8GZn9ch~XxJ#3saN%)*LBZ9AL-7RSXKi04ulG&eFQ@izH6 z%F)kCr%s%kAHQKQQ@>TZdmv|M6-W3PM19I2{cu9^5coUX&RKyu$MOE|uc2+gsOsEX z|3`z+Lw>*iYjeCR=XTics%8t&WPTZ$nourvKCeCM)RU%YG^p~hm&24K4M@T~-obNnb2YYic9s%#xjZeu5K%rDW7|T6wba>i z&{+{ktY})ygKv>|dUi7_j**X)I<#pj$QmxdwUBnj-iqapfbO)K(_$kxsr!0P_S28D z&C|{L4uU>%=Eu=^!(wvwNdXZCPN@voaFO=gzJJ(*I-BDp|3?C1W~+L*lIJ=j`xfF+ zZfj&&^_@&|*3^6J-)inq%_?*blI=7XREYQIn~kws|B83B;oZ_k*2zpNSv+yHrZA&0 zKj%;^$1gZ>;`nUJBbvDUfAJp2^1OWc@_F)mFOW1v8Q%T-dwRbvTt8W$muMh3rcpWY z^eXnBWmcU&w_r`ENGB_6%ClTh*IXF=Ly;*y{$9JNW&g5{t5EbtCj+W>gNpmv-LGV% zTB>df8k`lTd`2!VW$!-+{(1j*Qf!+Cl{KxSHVxIeA+~e0RyifnImm#c1E4>E2jzuD zMQhG?!iEA^0K!R zCr#a%<=M?%k5&sap=a4^OV^AhTqqJwpQD$vOVsX!ssqCbR1L1*rL{Rae;d+4fL;ei zAI+#Ek4LPQeI#nX3%hs~zu$1ow6B!+Jced{&n0dw7)YBN9Z!$;wr4{bKJ9NzO{s*q z&=OrzyBkwqS!Av*;aSM2=EA}i(-Bbwyw(X%I#fLct-6h%y{Hjp3tS@;M9{s2PK$&$ z8me~Z27;ap7)|uy%5_cGM#uQx3a3DI?|3`2zg0GoP_sT;MxB3KX2~V`W+eKB#Km8g zRWyBKG2Y-41Bqe-gy4Q}sM>pNe4p-Ek~7R{Fh^s5l`-38XpF0imaK@3rfj|lvBHcl zSo;JM)x+^vlO z;plSk!LAdm+ec)48|5Li9n>13a=?*eie|KAXz;X-t@eLi9{F|R39tVp9ri`7(=%<@ z={2FmE)f_mZ*Iw(Cm zAPjJTK~PVjR{yp6===Km!{az+95T$<>Ing#QzDseS0ak;TER9{Fprf!=+NBtq9{c~ z`H)53FVOmP$%#TJegGS4U4mAnj90YA2~dW4;Vx%%)RK>L!*9^>q2_Cwqb25NKkp|{ zoxk6d(}5d)PYtJAzQ$7uwWXGj2YFq{AobmBkpFO4K7F?XS!VNIid2P)m~kd@AM-=# zwg@*PqYI-ihcO@jcR^%3H)cFUb~M~@YDga2FIH<3p4A6jCGwH;=(;8_h8vLk0xgexqDj%*V?l9y>l%S(nFBtTcS)5l}0C-Fzv6%Z3KjDrEzA9@y_ z2e58AS5@-H1VAk*48t+uP;8K9)Cn#U%|(|VSWfOqy@q#nLP0C(JtvwU5i_NaPD7qu zX&vE;a2Z<8m7DaT!-O03;MUPd2t9T*-;!Y?k!pn?5+j0h9*XxxP*hQLai07*>1gbd^!xF|u|9 zs;fw=O<_ny>De(mmw@LncpWC=QWu9t|r~K%bm$r`xILf21QN| zw+jM|(9*_^ULH{45e7C7s3;tDK+4WS!t+Qde>RcZQ_qT2`@IKF%f=eVe`Qtf1Ec4} zXc|_A2%7UuQ{Uwt?&nn5*X`dcWVUNrcTJ+t(cW# zzBXWL$HX>)MQpi5&sleDHQ4+Y38~YB`2=(Ha|=moK86m$N2i(TgjY--~ zjd|ME;V>S?al=l5yZ_7`jDx3^J>|!x-7aj$$P?!(BLwXW#X6BV@NVEzSNdhwcO2Nf zdAZ*@Q(ei3=vQ-UeP5pyT~PCwEqI0biZ*p1t$8>!5H1cEhRfrw$hSQo@wIkj^E0+t z(@_emquq8&GL3I(<55q_^ax6Rl!`8TEyWSQ43VM!N{FE?&B1icMS(j9Y$i z%(Vb(wiSwI8;FtV^g)~_s9%B&23Uzfi+Qj=ynxO3Ii-oV&2*{-aH3*QU7Nn-XN-qD zyP4`#CxNe1fqy`mF!l}{m4!y=Vabu!U7ZY!W~dGil42G=Z-lJGygBV$WN0|Sxw)J7 zZJ@QxG-j3?rgx7FLn__5O2q}2UeBK(7$K%(bTfXJ;cffc@?s+D0_!eSj)WXos~FjM zFcy#Ct$7(bL~avAEJf}&`HxBtd%7`V?+B-}tfX5lFz$b)+_oE0Yg5i_RorNhk?2Gw ztV2#{Fgc2`k>L~VC2hPhzHnVQ`s(L#$>F&kha(dfzkcOfw{oTpr=}yri$S%wZ(Am@ z(NfYvp#nfm`WZrK=e6a@)$&s;$fvKt-~=*WMSj40)-UIyF1dFf_AMJYzJ?^llI$m| z52Qs9+=TMU@SY;~p{TC3JY4go%0M$7#v+bS9Zr`o>2Pj$^`U_;D%5mKO6&w5%uAa% z@-p{A-pr?k+q|n|5Bq`h-*LPg+m*&~gvT009Ld=nW3H2}Xtpu)AIQCB(X{V&u`Z9! z9kF{^+)?6(Wh^3lLFmqn zC9rOJWJVQa_8x^wuY#j3hLY4pmVvoaxg6^~}p#^uX zfT&qJ;GPO8JvgYrziyAG8@SEe5pTGF^)8G8vFDI+++X&x{jAkRl)y)W1}0$m9Zn$G zr%BMg|St z8Zg}HT#Zn@Q(pa`IRpyMN7KrU)J?HfL71}pjLaauqP*Hsf7&TS-OZ;2!UFZ1IF z@;zRzEzdjptHIuTKbfV7PIrjO46O@So!*lp#-ag(5k=xo_Iw%n^2G%X2*Utv8MmcX zq=QbR532~iMX>cYyBhg{P{vr^r93RGt%!XBW|qJPc)7pp~|FijUsPxYjb3s zgG}pDB4umDm~)zTHH}0Pev>pK!jMtBnO%pgf4TOfi?X2taQuMd0H6l7vi-H2_iUeg zM+?k*$uuG`nJZu4X;;yRCSCX_YwIY+4{wPdUU# zATYgR{Kh}|>j^{?j&f9cQjWy@E@167HZetN@qc&*h+*|oob9GbV21yyPEma4E)Xq& z48;b4t*Ytg+h#o-*=WsPCb_{&Qy@%QfgJIgS9msL2Nk7&!lj-LPL05?bUmK