From d0a5f19cc56ee4bd7bced22f35f3fe50fcfba44b Mon Sep 17 00:00:00 2001 From: Michael Lemaire Date: Thu, 28 Aug 2014 15:09:47 +0200 Subject: [PATCH] Added daytime control to QtQuick UI --- graphics/icons.png | Bin 12060 -> 43833 bytes graphics/icons.svg | 109 +++++++++++++++++- src/definition/AtmosphereDefinition.cpp | 16 +++ src/definition/AtmosphereDefinition.h | 5 + .../modeler/quickapp/AtmosphereModeler.cpp | 26 +++++ .../modeler/quickapp/AtmosphereModeler.h | 27 +++++ .../modeler/quickapp/MainModelerWindow.cpp | 13 +++ .../modeler/quickapp/MainModelerWindow.h | 6 + .../modeler/quickapp/WaterModeler.cpp | 19 +++ src/interface/modeler/quickapp/WaterModeler.h | 27 +++++ .../modeler/quickapp/modeler_global.h | 3 + .../modeler/quickapp/qml/BaseChoice.qml | 29 +++++ .../modeler/quickapp/qml/BaseChoiceItem.qml | 50 ++++++++ .../modeler/quickapp/qml/BasePanel.qml | 10 +- .../modeler/quickapp/qml/BaseSlider.qml | 7 ++ .../quickapp/qml/PanelAtmosphereDaytime.qml | 46 ++++++++ .../modeler/quickapp/qml/PanelWaterLevel.qml | 4 +- .../modeler/quickapp/qml/Toolbar.qml | 10 ++ src/interface/modeler/quickapp/qml/app.qrc | 8 ++ .../quickapp/qml/images/icon_atmosphere.png | Bin 0 -> 1322 bytes .../qml/images/icon_atmosphere_day.png | Bin 0 -> 927 bytes .../qml/images/icon_atmosphere_daytime.png | Bin 0 -> 1238 bytes .../qml/images/icon_atmosphere_night.png | Bin 0 -> 871 bytes src/interface/modeler/quickapp/qml/main.qml | 29 ++++- src/interface/modeler/quickapp/quickapp.pro | 14 ++- src/render/opengl/OpenGLRenderer.h | 4 + src/tests/AtmosphereDefinition_Test.cpp | 36 ++++++ src/tests/tests.pro | 3 +- 28 files changed, 486 insertions(+), 15 deletions(-) create mode 100644 src/interface/modeler/quickapp/AtmosphereModeler.cpp create mode 100644 src/interface/modeler/quickapp/AtmosphereModeler.h create mode 100644 src/interface/modeler/quickapp/WaterModeler.cpp create mode 100644 src/interface/modeler/quickapp/WaterModeler.h create mode 100644 src/interface/modeler/quickapp/qml/BaseChoice.qml create mode 100644 src/interface/modeler/quickapp/qml/BaseChoiceItem.qml create mode 100644 src/interface/modeler/quickapp/qml/BaseSlider.qml create mode 100644 src/interface/modeler/quickapp/qml/PanelAtmosphereDaytime.qml create mode 100644 src/interface/modeler/quickapp/qml/images/icon_atmosphere.png create mode 100644 src/interface/modeler/quickapp/qml/images/icon_atmosphere_day.png create mode 100644 src/interface/modeler/quickapp/qml/images/icon_atmosphere_daytime.png create mode 100644 src/interface/modeler/quickapp/qml/images/icon_atmosphere_night.png create mode 100644 src/tests/AtmosphereDefinition_Test.cpp diff --git a/graphics/icons.png b/graphics/icons.png index 77dbd8967a040a47d6d5efc661f6f7e4c18c44f7..b3e56b06a8e6f9b7bfd35afeda059b9ab6038dae 100644 GIT binary patch literal 43833 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 MN50eZm(6#xJL literal 12060 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 SxBw+PNLSN9 + showguides="true" + inkscape:snap-object-midpoints="false"> @@ -51,7 +53,7 @@ image/svg+xml - + @@ -95,5 +97,100 @@ id="path3807" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" /> + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/definition/AtmosphereDefinition.cpp b/src/definition/AtmosphereDefinition.cpp index 0cbb27f..7e74e9c 100644 --- a/src/definition/AtmosphereDefinition.cpp +++ b/src/definition/AtmosphereDefinition.cpp @@ -105,6 +105,22 @@ void AtmosphereDefinition::validate() _daytime = (double)hour / 24.0 + (double)minute / 1440.0; } +void AtmosphereDefinition::setDaytime(double value) +{ + if (value >= 0.0) + { + value = fmod(value, 1.0); + } + else + { + value = 1.0 - fmod(-value, 1.0); + } + value *= 1440.0; + hour = value / 60.0; + minute = value - 60.0 * hour; + validate(); +} + void AtmosphereDefinition::applyPreset(AtmospherePreset preset) { sun_color.r = 1.0; diff --git a/src/definition/AtmosphereDefinition.h b/src/definition/AtmosphereDefinition.h index 0067ecf..0fbfa92 100644 --- a/src/definition/AtmosphereDefinition.h +++ b/src/definition/AtmosphereDefinition.h @@ -46,6 +46,11 @@ public: virtual void copy(BaseDefinition* destination) const override; virtual void validate() override; + /** + * Set the daytime from a 0.0-1.0 value. + */ + void setDaytime(double value); + void applyPreset(AtmospherePreset preset); void generateStars(int count); diff --git a/src/interface/modeler/quickapp/AtmosphereModeler.cpp b/src/interface/modeler/quickapp/AtmosphereModeler.cpp new file mode 100644 index 0000000..5dcf86d --- /dev/null +++ b/src/interface/modeler/quickapp/AtmosphereModeler.cpp @@ -0,0 +1,26 @@ +#include "AtmosphereModeler.h" + +#include "MainModelerWindow.h" +#include "Scenery.h" +#include "AtmosphereDefinition.h" +#include "OpenGLRenderer.h" +#include "OpenGLSkybox.h" + +AtmosphereModeler::AtmosphereModeler(MainModelerWindow *main): + main(main) +{ + QObject *item = main->findQmlObject("atmosphere_daytime"); + if (item) + { + connect(item, SIGNAL(changed(double)), this, SLOT(daytimeChanged(double))); + } +} + +void AtmosphereModeler::daytimeChanged(double value) +{ + main->getScenery()->getAtmosphere()->setDaytime(value); + + main->getRenderer()->getScenery()->setAtmosphere(main->getScenery()->getAtmosphere()); + + main->getRenderer()->getSkybox()->update(); +} diff --git a/src/interface/modeler/quickapp/AtmosphereModeler.h b/src/interface/modeler/quickapp/AtmosphereModeler.h new file mode 100644 index 0000000..1a5b32d --- /dev/null +++ b/src/interface/modeler/quickapp/AtmosphereModeler.h @@ -0,0 +1,27 @@ +#ifndef ATMOSPHEREMODELER_H +#define ATMOSPHEREMODELER_H + +#include "modeler_global.h" + +#include + +namespace paysages { +namespace modeler { + +class AtmosphereModeler : public QObject +{ + Q_OBJECT +public: + AtmosphereModeler(MainModelerWindow *main); + +public slots: + void daytimeChanged(double value); + +private: + MainModelerWindow *main; +}; + +} +} + +#endif // ATMOSPHEREMODELER_H diff --git a/src/interface/modeler/quickapp/MainModelerWindow.cpp b/src/interface/modeler/quickapp/MainModelerWindow.cpp index f8cca47..9148218 100644 --- a/src/interface/modeler/quickapp/MainModelerWindow.cpp +++ b/src/interface/modeler/quickapp/MainModelerWindow.cpp @@ -3,6 +3,8 @@ #include "OpenGLView.h" #include "Scenery.h" #include "OpenGLRenderer.h" +#include "AtmosphereModeler.h" +#include "WaterModeler.h" MainModelerWindow::MainModelerWindow() { @@ -15,10 +17,21 @@ MainModelerWindow::MainModelerWindow() setTitle(QObject::tr("Paysages 3D")); setResizeMode(QQuickView::SizeRootObjectToView); setSource(QUrl("qrc:///main.qml")); + + atmosphere = new AtmosphereModeler(this); + water = new WaterModeler(this); } MainModelerWindow::~MainModelerWindow() { + delete atmosphere; + delete water; + delete renderer; delete scenery; } + +QObject *MainModelerWindow::findQmlObject(const QString &objectName) +{ + return rootObject()->findChild(objectName); +} diff --git a/src/interface/modeler/quickapp/MainModelerWindow.h b/src/interface/modeler/quickapp/MainModelerWindow.h index f599381..5d7b5f2 100644 --- a/src/interface/modeler/quickapp/MainModelerWindow.h +++ b/src/interface/modeler/quickapp/MainModelerWindow.h @@ -15,11 +15,17 @@ public: MainModelerWindow(); virtual ~MainModelerWindow(); + QObject *findQmlObject(const QString& objectName); + + inline Scenery *getScenery() const {return scenery;} inline OpenGLRenderer *getRenderer() const {return renderer;} private: OpenGLRenderer *renderer; Scenery *scenery; + + AtmosphereModeler *atmosphere; + WaterModeler *water; }; } diff --git a/src/interface/modeler/quickapp/WaterModeler.cpp b/src/interface/modeler/quickapp/WaterModeler.cpp new file mode 100644 index 0000000..a0057db --- /dev/null +++ b/src/interface/modeler/quickapp/WaterModeler.cpp @@ -0,0 +1,19 @@ +#include "WaterModeler.h" + +#include "MainModelerWindow.h" + +WaterModeler::WaterModeler(MainModelerWindow *main): + main(main) +{ + QObject *item = main->findQmlObject("water_level"); + if (item) + { + connect(item, SIGNAL(changed(double)), this, SLOT(waterLevelChanged(double))); + } +} + +void WaterModeler::waterLevelChanged(double value) +{ + // TODO + //qDebug() << "water level : " << value; +} diff --git a/src/interface/modeler/quickapp/WaterModeler.h b/src/interface/modeler/quickapp/WaterModeler.h new file mode 100644 index 0000000..fac513e --- /dev/null +++ b/src/interface/modeler/quickapp/WaterModeler.h @@ -0,0 +1,27 @@ +#ifndef WATERMODELER_H +#define WATERMODELER_H + +#include "modeler_global.h" + +#include + +namespace paysages { +namespace modeler { + +class WaterModeler: public QObject +{ + Q_OBJECT +public: + WaterModeler(MainModelerWindow *main); + +public slots: + void waterLevelChanged(double value); + +private: + MainModelerWindow *main; +}; + +} +} + +#endif // WATERMODELER_H diff --git a/src/interface/modeler/quickapp/modeler_global.h b/src/interface/modeler/quickapp/modeler_global.h index f8088b8..d2be172 100644 --- a/src/interface/modeler/quickapp/modeler_global.h +++ b/src/interface/modeler/quickapp/modeler_global.h @@ -9,6 +9,9 @@ namespace paysages { namespace modeler { class MainModelerWindow; class OpenGLView; + + class AtmosphereModeler; + class WaterModeler; } } diff --git a/src/interface/modeler/quickapp/qml/BaseChoice.qml b/src/interface/modeler/quickapp/qml/BaseChoice.qml new file mode 100644 index 0000000..165164d --- /dev/null +++ b/src/interface/modeler/quickapp/qml/BaseChoice.qml @@ -0,0 +1,29 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.1 + +Item { + default property alias children : inner_layout.children + property int value + width: 100 + height: 32 + + ExclusiveGroup { + id: choice_group + + onCurrentChanged: value = current.value + } + + Row { + id: inner_layout + spacing: 5 + anchors.fill: parent + } + + onChildrenChanged: { + for (var i = 0; i < children.length; i++) + { + children[i].exclusiveGroup = choice_group; + } + } +} diff --git a/src/interface/modeler/quickapp/qml/BaseChoiceItem.qml b/src/interface/modeler/quickapp/qml/BaseChoiceItem.qml new file mode 100644 index 0000000..7e87197 --- /dev/null +++ b/src/interface/modeler/quickapp/qml/BaseChoiceItem.qml @@ -0,0 +1,50 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.1 + +Rectangle { + id: choice_item + property string icon + property bool checked: false + property ExclusiveGroup exclusiveGroup: null + property int value + + color: "#333333" + + signal toggled(bool value) + + width: 20 + height: 20 + + Image { + anchors.fill: parent + source: parent.icon + antialiasing: true + } + + MouseArea { + anchors.fill: parent + cursorShape: Qt.PointingHandCursor + onClicked: checked = true + } + + onExclusiveGroupChanged: { + if (exclusiveGroup) { + exclusiveGroup.bindCheckable(choice_item); + } + } + + onCheckedChanged: choice_item.toggled(checked) + + states: [ + State { + name: "Checked" + when: checked + + PropertyChanges { + target: choice_item + color: "#999999" + } + } + + ] +} diff --git a/src/interface/modeler/quickapp/qml/BasePanel.qml b/src/interface/modeler/quickapp/qml/BasePanel.qml index 82872d6..14ce20d 100644 --- a/src/interface/modeler/quickapp/qml/BasePanel.qml +++ b/src/interface/modeler/quickapp/qml/BasePanel.qml @@ -4,14 +4,21 @@ Rectangle { property ToolbarButton tool id: panel + opacity: 0 width: 200 height: parent.height - 100 - color: "red" + color: "#a0909090" enabled: visible anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter + Behavior on opacity { + PropertyAnimation { + duration: 200 + } + } + states: [ State { name: "Active" @@ -20,6 +27,7 @@ Rectangle { PropertyChanges { target: panel visible: true + opacity: 1 } } diff --git a/src/interface/modeler/quickapp/qml/BaseSlider.qml b/src/interface/modeler/quickapp/qml/BaseSlider.qml new file mode 100644 index 0000000..58cc14e --- /dev/null +++ b/src/interface/modeler/quickapp/qml/BaseSlider.qml @@ -0,0 +1,7 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.2 + +Slider { + signal changed(real value) + onValueChanged: changed(value) +} diff --git a/src/interface/modeler/quickapp/qml/PanelAtmosphereDaytime.qml b/src/interface/modeler/quickapp/qml/PanelAtmosphereDaytime.qml new file mode 100644 index 0000000..08dab9f --- /dev/null +++ b/src/interface/modeler/quickapp/qml/PanelAtmosphereDaytime.qml @@ -0,0 +1,46 @@ +import QtQuick 2.0 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.1 + +BasePanel { + width: 70 + + objectName: "atmosphere_daytime" + default property real value: day_night.value == 2 ? 1.0 : slider.value * 0.54 + 0.23; + signal changed(real value) + + onValueChanged: changed(value) + + ColumnLayout + { + anchors.fill: parent + anchors.margins: 10 + spacing: 20 + + BaseChoice { + id: day_night + width: parent.width + + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter + + BaseChoiceItem { + icon: "images/icon_atmosphere_day.png" + value: 1 + checked: true + } + BaseChoiceItem { + icon: "images/icon_atmosphere_night.png" + value: 2 + } + } + + BaseSlider { + id: slider + orientation: Qt.Vertical + Layout.maximumWidth: 15 + Layout.fillHeight: true + Layout.alignment: Qt.AlignHCenter + visible: day_night.value == 1 + } + } +} diff --git a/src/interface/modeler/quickapp/qml/PanelWaterLevel.qml b/src/interface/modeler/quickapp/qml/PanelWaterLevel.qml index e84bd6e..444ae97 100644 --- a/src/interface/modeler/quickapp/qml/PanelWaterLevel.qml +++ b/src/interface/modeler/quickapp/qml/PanelWaterLevel.qml @@ -1,10 +1,10 @@ import QtQuick 2.2 -import QtQuick.Controls 1.2 BasePanel { width: 20 - Slider { + BaseSlider { + objectName: "water_level" orientation: Qt.Vertical anchors.fill: parent } diff --git a/src/interface/modeler/quickapp/qml/Toolbar.qml b/src/interface/modeler/quickapp/qml/Toolbar.qml index b8a1424..9abfbc2 100644 --- a/src/interface/modeler/quickapp/qml/Toolbar.qml +++ b/src/interface/modeler/quickapp/qml/Toolbar.qml @@ -19,4 +19,14 @@ Rectangle { duration: 200 } } + + onEnabledChanged: { + if (!enabled) + { + for (var i = 0; i < children.length; i++) + { + children[i].selected = false; + } + } + } } diff --git a/src/interface/modeler/quickapp/qml/app.qrc b/src/interface/modeler/quickapp/qml/app.qrc index a216b39..3c32d54 100644 --- a/src/interface/modeler/quickapp/qml/app.qrc +++ b/src/interface/modeler/quickapp/qml/app.qrc @@ -17,5 +17,13 @@ images/icon_water_level.png BasePanel.qml PanelWaterLevel.qml + images/icon_atmosphere.png + images/icon_atmosphere_daytime.png + BaseSlider.qml + PanelAtmosphereDaytime.qml + images/icon_atmosphere_day.png + images/icon_atmosphere_night.png + BaseChoice.qml + BaseChoiceItem.qml diff --git a/src/interface/modeler/quickapp/qml/images/icon_atmosphere.png b/src/interface/modeler/quickapp/qml/images/icon_atmosphere.png new file mode 100644 index 0000000000000000000000000000000000000000..5514dfb6bdb9491b23c3ccd9b8214760320982ab GIT binary patch literal 1322 zcmV+_1=aeAP)^#lPvpdi8{9)L==bpKD{%7w!_nb4cP(>A0Bt#7` zuu{nn1bzTssbm8j1is8Ofr>`e096Ad$ACN=GK~k{4SZI~t7t$u5V#6xjj4YsFauZ* z90ELD2Y|J}6ku?Saq56+z_7kHz$rkt$ZP>ljL>~p=f2m=wNFM3!xg~K(p}LXRzWN9 zp&sZk@F;Mc>8}M|jX^wkJsy~+1$b9|-9Sfw+d>xszZn7}B!A<7koT|U8e^f6ZH~E3 z`UHc41;8%geEsevxDEs70_{32Cg;gP4oOJfzjo#|4w#zKJWasmc{IRHDb96W33*Ke zW~DLE?+=lApXng`mD=+i`h$RL^|Ry#*pk8a{X}DT zNVZ(<9Uf;v2oUUVYneC`IDeyYrtcZtb0ltqxetpC^HOdIP0_k!ThO74Iucik5 zp*-N4mT25bd30V{!VMU1o9)EuHpc6;>j3nW{u_L`7; zo&_Fpj5A-WFg4Ve<&{-w{CSbxWXfqC@Q+qP5Psq1n^F~2H#$mRX<@V>d%8K&_JyR^ z^}rvhZ?=}g09n5ry;}yjKcZN(#K?9@_Hrrf30c1#ZVs8(_X~?9J45Y~zNzl3*W*uy zq}U_n?E#*a&X965KodR1*5(MEL-GeFCn<>);|#OHBw&tt)+WUOZNPUS(c!1kUk2>Y zdIfZ*Sng^t;Wr9cx>cHMjA?McDDqLMmgMkaN=y+rM#k(?{toc9$gB*x=R${UsiMZA zM*Y#zb$;Ce!n9f6UM* z!+50krAnV-4u#s@B1hj)mjjP%g(>ErqYnT$$qrj;{UrMUT32kM`~n*&hS@ ze2l5)_yN!Oaw9)V1rLv&vUd=pjqey$ZU&gZk(J%3W3!zK#C;t38BFTv@BiuH`+$qJ gRjR0>iYijYf0u(9JEWRBPyhe`07*qoM6N<$f=SeF%K!iX literal 0 HcmV?d00001 diff --git a/src/interface/modeler/quickapp/qml/images/icon_atmosphere_day.png b/src/interface/modeler/quickapp/qml/images/icon_atmosphere_day.png new file mode 100644 index 0000000000000000000000000000000000000000..90721c203f4c63d42cdc1ace8bb976577731fd14 GIT binary patch literal 927 zcmV;Q17Q4#P)WQK>l1lh+SA);GR(X}8tbtn%(L{JcT%DNO~ViKiEAD1Xd zq?FR6(tI7>EDXyo?YjH+Kd|$MfqDCO{vW@Y`R~l^f}AV@-U7qGVp1r_ft)JGq?{-g z1W>NktI`O-2(bVx01LnZumCIo87cCqrv|`)Rv$|12;2>{V8x7in1oaT&A>)rmHJ%* zOaUXnAn-u#62)X4&<&gd%3{!02J8d+wB6tT$^>v4SP_H$jEbcjXb94v-{nl>97jqq zus=l5e&r@mImgkx!=>wGkcPKBoEQn&8yR3MhTxs@2iP9M{&L`phn}vWY;d4L2{%n zf#98T#nn-tJnnf0)WrF8*a}R#jI?XLFrFZQ9I!>%ZgpM%32ZCm(z!z!`mSB?O*nWb zF;*!16YAR0q?Y$3+T5!V2;M2zG@s^4Eu4k~0px&XlDomIN`8`ZK+^b0;oi>yUnK#& zG5|m>%HuBT6sR|3SG!XJz*>X0_4N_}Y77FfR06;Pg8)=W0GKuiz>EZdaf1L%N&px( z2*3vk0HX#07?3i2*N}x!k;Di9xNbo2KU5Gzq|$)iZ<6kT^Mb+8AoOB&p*j?S{MTO7 zLI8FtA4;PvhQdfGa6xmxk%I!kf7a~Js%saOj|GvvdRp3%~-f04x9*`KHw;(+Izs{6T6jA&;!$lz$ZZ7oGDzw?_Z~002ovPDHLkV1fq$ BrZNBk literal 0 HcmV?d00001 diff --git a/src/interface/modeler/quickapp/qml/images/icon_atmosphere_daytime.png b/src/interface/modeler/quickapp/qml/images/icon_atmosphere_daytime.png new file mode 100644 index 0000000000000000000000000000000000000000..97bed429a4a473c81324f533d041400f35143adc GIT binary patch literal 1238 zcmV;{1S$K8P)}Hxz!G$oJ==u$uo~~w$_ci|qCa7CPDuC~pJE$M z!`Qe#4s&pE$htO-fK#y?J41bvumE@BX3W5BT!pFl6@R6STZ;3sF^H=NcE@SIi|^2l zb4s3%!@|(`50fT11K;2)tiVZSUjNasr~ZU%KR&??WhONTFX3lAn9cV2Y7#qKR z5Q3Lp+k?0luoCATW8ZLH!XA6^%#j9;4He#6B?0|G-mC_ze5DY%Az_c3!F}~7ufHPV{|?+*@@#Gt8b=cTRZNO8lkiH|+WSFDqf_C_L)A<7Scvref4DF< z`$TkA$}tg7N2OQ@4|*sj-4rQvlFDC-^>}L_^J)+lM0HwzNIjv|iRc)_#GRNQ8ge71 z*Rl0hZI^0f9Nx+Z!=-}vh48a$vDoM+losX4(_auJdryMO@5M)zD!^(nJ?!Y=oCx2J zFXEK)=0Hi=mlFaG;HL0n6XMi+@Z~_VQxDs0IYR2$7Rgk9gJS)b zXuxEum$Q_Z2P>qyr{iwLK4ZOca)j@xN7FE<7JuMP#pYurm7FD8*SQ)j3ZK++tn4ps z;du`4%GPV$Q4#uD_@He6AQdFySX+ZEs0 ztx>xkVMhqQI_A$k+Jfkg8q75lXV-FbjVM)nqbPddC~JZ_>hP|iQMLLmTq|3feE?%3 zhSLm(yG*XxUvzOX*3Foo!OPRKjlC3@p$-*A&C~nm#^Ct zKVK=ww5TZC4PlIkim|nfn68qDF)YxHtK;_)#XeqFqZZG@E9~)jQnBSe1Fvb|XSjK2 zBy>cw(}&mNP7Q} AO8@`> literal 0 HcmV?d00001 diff --git a/src/interface/modeler/quickapp/qml/images/icon_atmosphere_night.png b/src/interface/modeler/quickapp/qml/images/icon_atmosphere_night.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0aaee86b33cbe46f8f59b7a69a62cdcb7caee9 GIT binary patch literal 871 zcmV-t1DO1YP)#S2l?(Px&H%qNZ{V&|GUp~?>P~EmI89XLLd#)x$ph}Wmk&8r28&7 zixSq`4DyQ6LZWxzDn;4XAjQ0&v8QoJb8op8f1AU%o9_wL}i^E@R-0PYsa$J&$ZY9Rr*?^(b4IwcFh!nx^G1~6>UMw>E# zX@fQzl>y+qLmz8W2jKfsTu}y4F>uZ%lmRR{9N1U-6@=;?vlK&-ADQ*l#fR-viBx;+ui52EBhwwfBbMM?_g4(WPazUdJlCwk z<&G+fziK4@mYVQ-;F6K}2WsNi5C<<fM2Q__6Q@EI8v!eUJ-~V5NG;2hnYXh%yx`L676W&HZ^penyVsjS9_r`jLG+~a z3_BF&`aMJ8W5m(p8n`+f< xoS!^#NZd>)y=g%|