From 3a0798959cd2999cadc2194c260d5c2bde045025 Mon Sep 17 00:00:00 2001 From: Apress Date: Tue, 11 Oct 2016 04:24:39 +0100 Subject: [PATCH] First commit --- 3643.pdf | Bin 0 -> 283577 bytes 3645.pdf | Bin 0 -> 297274 bytes 9781590598313.jpg | Bin 0 -> 9054 bytes Chapter01/README.txt | 69 + .../cpp-with-qobject/cpp-with-qobject.cpp | 74 + Chapter01/cpp-with-qobject/example.pro | 13 + .../cpp-with-qstring/cpp-with-qstring.cpp | 73 + Chapter01/cpp-with-qstring/example.pro | 13 + Chapter01/gui-connection/example.pro | 13 + Chapter01/gui-connection/gui-connection.cpp | 65 + Chapter01/gui-connection/myclass.cpp | 56 + Chapter01/gui-connection/myclass.h | 58 + Chapter01/hello-world/anything.cpp | 39 + Chapter01/hello-world/testing.pro | 12 + Chapter01/map-hash-set/example.pro | 12 + Chapter01/map-hash-set/map-examples.cpp | 207 ++ Chapter01/plain-cpp/plain-cpp.cpp | 75 + Chapter01/qlist/example.pro | 12 + Chapter01/qlist/qlist.cpp | 121 + Chapter01/signals-and-slots/example.pro | 13 + Chapter01/signals-and-slots/myclass.cpp | 56 + Chapter01/signals-and-slots/myclass.h | 58 + Chapter01/signals-and-slots/sig-slot.cpp | 69 + Chapter01/stringlist-stack-queue/example.pro | 12 + .../stringlist-stack-queue/special-lists.cpp | 105 + Chapter02/README.txt | 8 + Chapter02/addressbook/addressbook.pro | 36 + Chapter02/addressbook/editdialog.cpp | 59 + Chapter02/addressbook/editdialog.h | 53 + Chapter02/addressbook/editdialog.ui | 145 + Chapter02/addressbook/listdialog.cpp | 72 + Chapter02/addressbook/listdialog.h | 54 + Chapter02/addressbook/listdialog.ui | 133 + Chapter02/addressbook/main.cpp | 44 + Chapter03/README.txt | 127 + Chapter03/buttonbox/buttonbox.cpp | 96 + Chapter03/buttonbox/buttonbox.h | 52 + Chapter03/buttonbox/buttonbox.pro | 12 + Chapter03/buttonbox/main.cpp | 48 + Chapter03/colorandfont/colorandfont.pro | 12 + Chapter03/colorandfont/main.cpp | 76 + .../designer-and-code/designer-dialog.ui | 136 + Chapter03/designer-and-code/example.pro | 32 + Chapter03/designer-and-code/main.cpp | 74 + Chapter03/filedialog/filedialog.pro | 12 + Chapter03/filedialog/main.cpp | 105 + Chapter03/gridlayout/gridlayout.pro | 11 + Chapter03/gridlayout/main.cpp | 52 + Chapter03/groupbox/groupbox.ui | 189 + Chapter03/label/label.pro | 11 + Chapter03/label/main.cpp | 61 + Chapter03/lineedit/lineedit.ui | 216 ++ Chapter03/listwidget/listwidget.pro | 13 + Chapter03/listwidget/listwidgetdialog.cpp | 77 + Chapter03/listwidget/listwidgetdialog.h | 55 + Chapter03/listwidget/main.cpp | 44 + Chapter03/messagebox/cut.png | Bin 0 -> 1437 bytes Chapter03/messagebox/main.cpp | 143 + Chapter03/messagebox/messagebox.pro | 12 + Chapter03/progressbar/progressbar.ui | 349 ++ Chapter03/pushbutton/buttondialog.cpp | 60 + Chapter03/pushbutton/buttondialog.h | 55 + Chapter03/pushbutton/main.cpp | 44 + Chapter03/pushbutton/pushbutton.pro | 12 + Chapter03/radiobutton/main.cpp | 68 + Chapter03/radiobutton/radiobutton.pro | 11 + Chapter03/regexp/main.cpp | 58 + Chapter03/regexp/regexp.pro | 12 + Chapter03/revalidator/main.cpp | 75 + Chapter03/revalidator/revalidator.pro | 11 + Chapter03/spinbox/spinbox.ui | 120 + Chapter03/validator/main.cpp | 80 + Chapter03/validator/validator.pro | 11 + Chapter04/README.txt | 32 + Chapter04/dock/dock.pro | 15 + Chapter04/dock/images.qrc | 8 + Chapter04/dock/images/copy.png | Bin 0 -> 1391 bytes Chapter04/dock/images/cut.png | Bin 0 -> 1437 bytes Chapter04/dock/images/new.png | Bin 0 -> 791 bytes Chapter04/dock/images/paste.png | Bin 0 -> 1552 bytes Chapter04/dock/infowidget.cpp | 56 + Chapter04/dock/infowidget.h | 48 + Chapter04/dock/main.cpp | 43 + Chapter04/dock/sdiwindow.cpp | 192 + Chapter04/dock/sdiwindow.h | 79 + Chapter04/mdi/documentwindow.cpp | 76 + Chapter04/mdi/documentwindow.h | 51 + Chapter04/mdi/images.qrc | 8 + Chapter04/mdi/images/copy.png | Bin 0 -> 1391 bytes Chapter04/mdi/images/cut.png | Bin 0 -> 1437 bytes Chapter04/mdi/images/new.png | Bin 0 -> 791 bytes Chapter04/mdi/images/paste.png | Bin 0 -> 1552 bytes Chapter04/mdi/main.cpp | 44 + Chapter04/mdi/mdi.pro | 14 + Chapter04/mdi/mdiwindow.cpp | 256 ++ Chapter04/mdi/mdiwindow.h | 96 + Chapter04/resources/alias.qrc | 6 + Chapter04/resources/direct.qrc | 8 + Chapter04/resources/prefix.qrc | 10 + Chapter04/sdi/images.qrc | 8 + Chapter04/sdi/images/copy.png | Bin 0 -> 1391 bytes Chapter04/sdi/images/cut.png | Bin 0 -> 1437 bytes Chapter04/sdi/images/new.png | Bin 0 -> 791 bytes Chapter04/sdi/images/paste.png | Bin 0 -> 1552 bytes Chapter04/sdi/main.cpp | 43 + Chapter04/sdi/sdi.pro | 13 + Chapter04/sdi/sdiwindow.cpp | 175 + Chapter04/sdi/sdiwindow.h | 75 + Chapter05/README.txt | 74 + Chapter05/bardelegate/bardelegate.cpp | 66 + Chapter05/bardelegate/bardelegate.h | 46 + Chapter05/bardelegate/bardelegate.pro | 12 + Chapter05/bardelegate/main.cpp | 61 + Chapter05/editdelegate/bardelegate.cpp | 95 + Chapter05/editdelegate/bardelegate.h | 51 + Chapter05/editdelegate/editdelegate.pro | 12 + Chapter05/editdelegate/main.cpp | 62 + Chapter05/editmodel/editmodel.pro | 12 + Chapter05/editmodel/intmodel.cpp | 73 + Chapter05/editmodel/intmodel.h | 53 + Chapter05/editmodel/main.cpp | 49 + Chapter05/mulmodel/main.cpp | 50 + Chapter05/mulmodel/mulmodel.cpp | 76 + Chapter05/mulmodel/mulmodel.h | 52 + Chapter05/mulmodel/mulmodel.pro | 12 + Chapter05/readonlyview/main.cpp | 88 + Chapter05/readonlyview/readonlyview.pro | 11 + Chapter05/singleitemview/main.cpp | 67 + Chapter05/singleitemview/singleitemview.cpp | 142 + Chapter05/singleitemview/singleitemview.h | 68 + Chapter05/singleitemview/singleitemview.pro | 12 + Chapter05/sorting/main.cpp | 57 + Chapter05/sorting/sorting.pro | 12 + Chapter05/sorting/sortonsecondmodel.cpp | 54 + Chapter05/sorting/sortonsecondmodel.h | 46 + Chapter05/splitterview/main.cpp | 78 + Chapter05/splitterview/splitterview.pro | 11 + Chapter05/stringlist/main.cpp | 53 + Chapter05/stringlist/stringlist.pro | 11 + Chapter05/treemodel/main.cpp | 83 + Chapter05/treemodel/objecttreemodel.cpp | 147 + Chapter05/treemodel/objecttreemodel.h | 55 + Chapter05/treemodel/treemodel.pro | 12 + Chapter06/README.txt | 58 + Chapter06/circlebar/circlebar.cpp | 96 + Chapter06/circlebar/circlebar.h | 62 + Chapter06/circlebar/circlebar.pro | 13 + Chapter06/circlebar/main.cpp | 56 + Chapter06/clocklabel/clocklabel.cpp | 50 + Chapter06/clocklabel/clocklabel.h | 47 + Chapter06/clocklabel/clocklabel.pro | 13 + Chapter06/clocklabel/main.cpp | 44 + Chapter06/composed/composed.pro | 12 + Chapter06/composed/main.cpp | 58 + Chapter06/composed/numerickeypad.cpp | 126 + Chapter06/composed/numerickeypad.h | 61 + Chapter06/designerplugin/circlebar.cpp | 106 + Chapter06/designerplugin/circlebar.h | 64 + Chapter06/designerplugin/circlebarplugin.cpp | 109 + Chapter06/designerplugin/circlebarplugin.h | 64 + Chapter06/designerplugin/plugin.pro | 11 + Chapter06/designerpromotion/promote-dialog.ui | 116 + Chapter06/eventfilter/eventfilter.pro | 11 + Chapter06/eventfilter/main.cpp | 66 + Chapter06/eventlister/eventlister.pro | 12 + Chapter06/eventlister/eventwidget.cpp | 216 ++ Chapter06/eventlister/eventwidget.h | 79 + Chapter06/eventlister/main.cpp | 49 + Chapter07/README.txt | 124 + Chapter07/brushgradients/Thumbs.db | Bin 0 -> 22528 bytes Chapter07/brushgradients/brushgradients.pro | 11 + Chapter07/brushgradients/main.cpp | 92 + Chapter07/brushgradients/texture.png | Bin 0 -> 10673 bytes Chapter07/circles/circles.pro | 11 + Chapter07/circles/main.cpp | 59 + Chapter07/drawlines/drawlines.pro | 11 + Chapter07/drawlines/main.cpp | 59 + .../graphicsview/interaction/handleitem.cpp | 149 + .../graphicsview/interaction/handleitem.h | 71 + .../graphicsview/interaction/interaction.pro | 13 + Chapter07/graphicsview/interaction/main.cpp | 73 + Chapter07/graphicsview/opengl/main.cpp | 92 + Chapter07/graphicsview/opengl/opengl.pro | 12 + Chapter07/graphicsview/standarditems/main.cpp | 64 + .../standarditems/standarditems.pro | 11 + .../graphicsview/transformations/main.cpp | 90 + .../transformations/transformations.pro | 11 + Chapter07/paths/main.cpp | 70 + Chapter07/paths/paths.pro | 11 + Chapter07/penbrush/main.cpp | 46 + Chapter07/penbrush/penbrush.pro | 11 + Chapter07/penpatterns/main.cpp | 62 + Chapter07/penpatterns/penpatterns.pro | 11 + .../printing/graphicsview/graphicsview.pro | 11 + Chapter07/printing/graphicsview/main.cpp | 74 + Chapter07/printing/painter/main.cpp | 73 + Chapter07/printing/painter/painter.pro | 11 + Chapter07/rects/main.cpp | 56 + Chapter07/rects/rects.pro | 11 + Chapter07/text/main.cpp | 99 + Chapter07/text/text.pro | 11 + .../widgets/custombutton/custombutton.pro | 13 + Chapter07/widgets/custombutton/dialog.cpp | 46 + Chapter07/widgets/custombutton/dialog.h | 53 + Chapter07/widgets/custombutton/dialog.ui | 184 + Chapter07/widgets/custombutton/main.cpp | 44 + Chapter07/widgets/custombutton/mybutton.cpp | 70 + Chapter07/widgets/custombutton/mybutton.h | 50 + Chapter07/widgets/events/circlewidget.cpp | 105 + Chapter07/widgets/events/circlewidget.h | 67 + Chapter07/widgets/events/events.pro | 12 + Chapter07/widgets/events/main.cpp | 44 + Chapter08/README.txt | 67 + Chapter08/datastream/datastream.pro | 13 + Chapter08/datastream/main.cpp | 121 + Chapter08/datastream/test.dat | Bin 0 -> 100 bytes Chapter08/fileexist/fileexist.pro | 12 + Chapter08/fileexist/main.cpp | 57 + Chapter08/fileexist/testfile.txt | 0 Chapter08/readwriteapplication/images.qrc | 8 + .../readwriteapplication/images/copy.png | Bin 0 -> 1391 bytes Chapter08/readwriteapplication/images/cut.png | Bin 0 -> 1437 bytes Chapter08/readwriteapplication/images/new.png | Bin 0 -> 791 bytes .../readwriteapplication/images/paste.png | Bin 0 -> 1552 bytes Chapter08/readwriteapplication/main.cpp | 44 + Chapter08/readwriteapplication/sdi.pro | 13 + Chapter08/readwriteapplication/sdiwindow.cpp | 271 ++ Chapter08/readwriteapplication/sdiwindow.h | 86 + Chapter08/rootlist/main.cpp | 51 + Chapter08/rootlist/rootlist.pro | 12 + Chapter08/textstream/main.cpp | 64 + Chapter08/textstream/textstream.pro | 12 + Chapter08/xmldommodify/main.cpp | 88 + Chapter08/xmldommodify/simple-modified.xml | 6 + Chapter08/xmldommodify/simple.xml | 5 + Chapter08/xmldommodify/xmldommodify.pro | 13 + Chapter08/xmldomread/main.cpp | 82 + Chapter08/xmldomread/simple.xml | 2 + Chapter08/xmldomread/xmldomread.pro | 13 + Chapter08/xmldomwrite/main.cpp | 68 + Chapter08/xmldomwrite/simple.xml | 2 + Chapter08/xmldomwrite/xmldomwrite.pro | 13 + Chapter08/xmlsaxread/main.cpp | 106 + Chapter08/xmlsaxread/simple.xml | 2 + Chapter08/xmlsaxread/xmlsaxread.pro | 13 + Chapter09/README.txt | 53 + Chapter09/assistant/assistant.pro | 13 + Chapter09/assistant/documentation/about.txt | 4 + Chapter09/assistant/documentation/adv1.html | 8 + Chapter09/assistant/documentation/adv2.html | 8 + .../assistant/documentation/advanced.html | 8 + .../assistant/documentation/appendix.html | 8 + Chapter09/assistant/documentation/basics.html | 8 + .../assistant/documentation/easystuff.html | 8 + Chapter09/assistant/documentation/faq.html | 13 + .../assistant/documentation/images/qt.png | Bin 0 -> 2134 bytes Chapter09/assistant/documentation/index.html | 14 + .../assistant/documentation/qtbookexample.adp | 37 + Chapter09/assistant/main.cpp | 56 + Chapter09/statusbar/main.cpp | 95 + Chapter09/statusbar/statusbar.pro | 11 + Chapter09/tooltips/images.qrc | 5 + Chapter09/tooltips/images/qt.png | Bin 0 -> 2134 bytes Chapter09/tooltips/main.cpp | 44 + Chapter09/tooltips/tooltipdialog.cpp | 76 + Chapter09/tooltips/tooltipdialog.h | 44 + Chapter09/tooltips/tooltips.pro | 13 + Chapter09/tooltipzones/main.cpp | 44 + Chapter09/tooltipzones/tipzones.cpp | 94 + Chapter09/tooltipzones/tipzones.h | 47 + Chapter09/tooltipzones/tooltipzones.pro | 12 + Chapter09/whatsthis/images.qrc | 5 + Chapter09/whatsthis/images/qt.png | Bin 0 -> 2134 bytes Chapter09/whatsthis/main.cpp | 44 + Chapter09/whatsthis/whatsthis.pro | 13 + Chapter09/whatsthis/whatsthisdialog.cpp | 81 + Chapter09/whatsthis/whatsthisdialog.h | 44 + Chapter09/whatsthislink/linkdialog.cpp | 57 + Chapter09/whatsthislink/linkdialog.h | 48 + Chapter09/whatsthislink/linkfilter.cpp | 54 + Chapter09/whatsthislink/linkfilter.h | 51 + Chapter09/whatsthislink/main.cpp | 44 + Chapter09/whatsthislink/whatsthislink.pro | 12 + Chapter09/wizard/main.cpp | 44 + Chapter09/wizard/wizard.cpp | 185 + Chapter09/wizard/wizard.h | 66 + Chapter09/wizard/wizard.pro | 13 + Chapter10/README.txt | 31 + Chapter10/dynamic/dynamic.pro | 14 + Chapter10/dynamic/dyndialog.cpp | 91 + Chapter10/dynamic/dyndialog.h | 62 + Chapter10/dynamic/english.ts | 21 + Chapter10/dynamic/main.cpp | 49 + Chapter10/dynamic/swedish.qm | Bin 0 -> 329 bytes Chapter10/dynamic/swedish.ts | 21 + Chapter10/locales/locales.pro | 12 + Chapter10/locales/main.cpp | 124 + Chapter10/noop/main.cpp | 56 + Chapter10/noop/noop.pro | 13 + Chapter10/noop/noop_sv_SE.qm | Bin 0 -> 437 bytes Chapter10/noop/noop_sv_SE.ts | 34 + Chapter10/sdi/images.qrc | 8 + Chapter10/sdi/images/copy.png | Bin 0 -> 1391 bytes Chapter10/sdi/images/cut.png | Bin 0 -> 1437 bytes Chapter10/sdi/images/new.png | Bin 0 -> 791 bytes Chapter10/sdi/images/paste.png | Bin 0 -> 1552 bytes Chapter10/sdi/main.cpp | 57 + Chapter10/sdi/qt_sv_SE.qm | Bin 0 -> 66767 bytes Chapter10/sdi/qt_sv_SE.ts | 3124 +++++++++++++++++ Chapter10/sdi/sdi.pro | 16 + Chapter10/sdi/sdi_sv_SE.qm | Bin 0 -> 3394 bytes Chapter10/sdi/sdi_sv_SE.ts | 233 ++ Chapter10/sdi/sdiwindow.cpp | 271 ++ Chapter10/sdi/sdiwindow.h | 86 + Chapter11/README.txt | 43 + Chapter11/customlib/customlib.pro | 8 + Chapter11/customlib/lib/Makefile | 11 + Chapter11/customlib/lib/sum.c | 41 + Chapter11/customlib/main.cpp | 54 + Chapter11/customplugin/customplugin.pro | 14 + Chapter11/customplugin/filterdialog.cpp | 82 + Chapter11/customplugin/filterdialog.h | 59 + Chapter11/customplugin/filterdialog.ui | 86 + Chapter11/customplugin/filterinterface.h | 47 + Chapter11/customplugin/filters/blur/blur.cpp | 98 + Chapter11/customplugin/filters/blur/blur.h | 53 + Chapter11/customplugin/filters/blur/blur.pro | 42 + .../customplugin/filters/darken/darken.cpp | 56 + .../customplugin/filters/darken/darken.h | 50 + .../customplugin/filters/darken/darken.pro | 42 + Chapter11/customplugin/filters/flip/flip.cpp | 52 + Chapter11/customplugin/filters/flip/flip.h | 50 + Chapter11/customplugin/filters/flip/flip.pro | 42 + Chapter11/customplugin/main.cpp | 44 + Chapter11/customplugin/source.jpeg | Bin 0 -> 49121 bytes Chapter11/factoryplugin/customplugin.pro | 14 + Chapter11/factoryplugin/filterdialog.cpp | 98 + Chapter11/factoryplugin/filterdialog.h | 59 + Chapter11/factoryplugin/filterdialog.ui | 86 + Chapter11/factoryplugin/filterinterface.h | 47 + Chapter11/factoryplugin/filters/blur/blur.cpp | 98 + Chapter11/factoryplugin/filters/blur/blur.h | 54 + Chapter11/factoryplugin/filters/blur/blur.pro | 42 + .../factoryplugin/filters/darken/darken.cpp | 56 + .../factoryplugin/filters/darken/darken.h | 51 + .../factoryplugin/filters/darken/darken.pro | 42 + Chapter11/factoryplugin/filters/flip/flip.cpp | 54 + Chapter11/factoryplugin/filters/flip/flip.h | 51 + Chapter11/factoryplugin/filters/flip/flip.pro | 42 + Chapter11/factoryplugin/main.cpp | 44 + Chapter11/factoryplugin/source.jpeg | Bin 0 -> 49121 bytes Chapter11/imageplugin/imageplugin.pro | 40 + Chapter11/imageplugin/testread/Thumbs.db | Bin 0 -> 3584 bytes Chapter11/imageplugin/testread/input.ti | 86 + Chapter11/imageplugin/testread/main.cpp | 55 + Chapter11/imageplugin/testread/test.png | Bin 0 -> 2033 bytes Chapter11/imageplugin/testread/testread.pro | 12 + Chapter11/imageplugin/testwrite/Thumbs.db | Bin 0 -> 3584 bytes Chapter11/imageplugin/testwrite/input.png | Bin 0 -> 23742 bytes Chapter11/imageplugin/testwrite/main.cpp | 55 + Chapter11/imageplugin/testwrite/test.ti | 86 + Chapter11/imageplugin/testwrite/testwrite.pro | 12 + Chapter11/imageplugin/textimagehandler.cpp | 162 + Chapter11/imageplugin/textimagehandler.h | 50 + Chapter11/imageplugin/textimageplugin.cpp | 80 + Chapter11/imageplugin/textimageplugin.h | 48 + Chapter11/staticplugin/customplugin.pro | 15 + Chapter11/staticplugin/filterdialog.cpp | 93 + Chapter11/staticplugin/filterdialog.h | 59 + Chapter11/staticplugin/filterdialog.ui | 86 + Chapter11/staticplugin/filterinterface.h | 47 + Chapter11/staticplugin/filters/blur/blur.cpp | 98 + Chapter11/staticplugin/filters/blur/blur.h | 53 + Chapter11/staticplugin/filters/blur/blur.pro | 42 + .../staticplugin/filters/darken/darken.cpp | 56 + .../staticplugin/filters/darken/darken.h | 50 + .../staticplugin/filters/darken/darken.pro | 44 + Chapter11/staticplugin/filters/flip/flip.cpp | 52 + Chapter11/staticplugin/filters/flip/flip.h | 50 + Chapter11/staticplugin/filters/flip/flip.pro | 42 + Chapter11/staticplugin/main.cpp | 47 + Chapter11/staticplugin/source.jpeg | Bin 0 -> 49121 bytes Chapter12/README.txt | 83 + Chapter12/basicsemaphore/basicsemaphore.pro | 11 + Chapter12/basicsemaphore/main.cpp | 46 + .../competingsemaphore/competingsemaphore.pro | 12 + Chapter12/competingsemaphore/main.cpp | 121 + Chapter12/customsignals/customsignals.pro | 13 + Chapter12/customsignals/main.cpp | 65 + Chapter12/customsignals/textandnumber.cpp | 45 + Chapter12/customsignals/textandnumber.h | 50 + Chapter12/customsignals/textdevice.cpp | 58 + Chapter12/customsignals/textdevice.h | 58 + Chapter12/customsignals/textthread.cpp | 53 + Chapter12/customsignals/textthread.h | 58 + Chapter12/inorderthreads/inorderthreads.pro | 12 + Chapter12/inorderthreads/main.cpp | 90 + Chapter12/orderedthreads/main.cpp | 109 + Chapter12/orderedthreads/orderedthreads.pro | 12 + Chapter12/processes/main.cpp | 44 + Chapter12/processes/processdialog.cpp | 149 + Chapter12/processes/processdialog.h | 63 + Chapter12/processes/processdialog.ui | 75 + Chapter12/processes/processes.pro | 14 + Chapter12/readwritethreads/main.cpp | 144 + .../readwritethreads/readwritethreads.pro | 12 + Chapter12/semaphorethreads/main.cpp | 111 + .../semaphorethreads/semaphorethreads.pro | 12 + Chapter12/signallingthreads/main.cpp | 63 + .../signallingthreads/signallingthreads.pro | 13 + Chapter12/signallingthreads/textdevice.cpp | 56 + Chapter12/signallingthreads/textdevice.h | 57 + Chapter12/signallingthreads/textthread.cpp | 52 + Chapter12/signallingthreads/textthread.h | 56 + Chapter12/simplethreads/main.cpp | 82 + Chapter12/simplethreads/simplethreads.pro | 12 + Chapter12/uithread/main.cpp | 63 + Chapter12/uithread/textandnumber.cpp | 45 + Chapter12/uithread/textandnumber.h | 50 + Chapter12/uithread/textdialog.cpp | 56 + Chapter12/uithread/textdialog.h | 62 + Chapter12/uithread/textdialog.ui | 85 + Chapter12/uithread/textthread.cpp | 53 + Chapter12/uithread/textthread.h | 58 + Chapter12/uithread/uithread.pro | 14 + Chapter13/README.txt | 42 + Chapter13/imagebook/Thumbs.db | Bin 0 -> 8704 bytes Chapter13/imagebook/imagebook.pro | 15 + Chapter13/imagebook/imagecollection.cpp | 150 + Chapter13/imagebook/imagecollection.h | 55 + Chapter13/imagebook/imagedialog.cpp | 171 + Chapter13/imagebook/imagedialog.h | 72 + Chapter13/imagebook/imagedialog.ui | 166 + Chapter13/imagebook/main.cpp | 44 + Chapter13/imagebook/test.png | Bin 0 -> 327442 bytes Chapter13/modelview/main.cpp | 161 + Chapter13/modelview/modelview.pro | 12 + Chapter13/sqltest/mysql/main.cpp | 371 ++ Chapter13/sqltest/mysql/mysql.pro | 13 + Chapter13/sqltest/sqlite-mem/main.cpp | 376 ++ Chapter13/sqltest/sqlite-mem/sqlite-mem.pro | 13 + Chapter13/sqltest/sqlite/main.cpp | 222 ++ Chapter13/sqltest/sqlite/sqlite.pro | 13 + Chapter13/sqltest/sqlite/testdatabase.db | Bin 0 -> 3072 bytes Chapter14/README.txt | 45 + Chapter14/ftp/ftp.pro | 15 + Chapter14/ftp/ftpdialog.cpp | 263 ++ Chapter14/ftp/ftpdialog.h | 72 + Chapter14/ftp/ftpdialog.ui | 144 + Chapter14/ftp/main.cpp | 44 + Chapter14/http/http.pro | 15 + Chapter14/http/httpdialog.cpp | 205 ++ Chapter14/http/httpdialog.h | 65 + Chapter14/http/httpdialog.ui | 231 ++ Chapter14/http/main.cpp | 44 + Chapter14/tcpclient/clientdialog.cpp | 105 + Chapter14/tcpclient/clientdialog.h | 60 + Chapter14/tcpclient/clientdialog.ui | 120 + Chapter14/tcpclient/main.cpp | 44 + Chapter14/tcpclient/tcpclient.pro | 15 + Chapter14/tcpserver/images/Thumbs.db | Bin 0 -> 5632 bytes Chapter14/tcpserver/images/test-green.png | Bin 0 -> 298820 bytes Chapter14/tcpserver/images/test.png | Bin 0 -> 327442 bytes Chapter14/tcpserver/main.cpp | 48 + Chapter14/tcpserver/server.cpp | 48 + Chapter14/tcpserver/server.h | 46 + Chapter14/tcpserver/serverthread.cpp | 87 + Chapter14/tcpserver/serverthread.h | 51 + Chapter14/tcpserver/tcpserver.pro | 15 + Chapter14/udpclient/listener.cpp | 84 + Chapter14/udpclient/listener.h | 55 + Chapter14/udpclient/main.cpp | 44 + Chapter14/udpclient/udpclient.pro | 14 + Chapter14/udpserver/main.cpp | 46 + Chapter14/udpserver/sender.cpp | 75 + Chapter14/udpserver/sender.h | 55 + Chapter14/udpserver/test.png | Bin 0 -> 384731 bytes Chapter14/udpserver/udpserver.pro | 14 + Chapter15/README.txt | 31 + Chapter15/cmake/basics/CMakeLists.txt | 48 + Chapter15/cmake/basics/main.cpp | 44 + Chapter15/cmake/basics/mainwindow.cpp | 88 + Chapter15/cmake/basics/mainwindow.h | 49 + Chapter15/cmake/basics/otherdialog.cpp | 37 + Chapter15/cmake/basics/otherdialog.h | 47 + Chapter15/cmake/basics/otherdialog.ui | 96 + Chapter15/cmake/basics/preferencedialog.cpp | 37 + Chapter15/cmake/basics/preferencedialog.h | 47 + Chapter15/cmake/basics/preferencedialog.ui | 113 + Chapter15/cmake/complex/CMakeLists.txt | 37 + Chapter15/cmake/complex/app/CMakeLists.txt | 44 + Chapter15/cmake/complex/app/appwindow.cpp | 67 + Chapter15/cmake/complex/app/appwindow.h | 56 + Chapter15/cmake/complex/app/main.cpp | 44 + Chapter15/cmake/complex/include/base.h | 51 + Chapter15/cmake/complex/src/CMakeLists.txt | 43 + Chapter15/cmake/complex/src/base.cpp | 41 + Chapter15/qmake/basics/basics.pro | 13 + Chapter15/qmake/basics/main.cpp | 44 + Chapter15/qmake/basics/mainwindow.cpp | 88 + Chapter15/qmake/basics/mainwindow.h | 49 + Chapter15/qmake/basics/otherdialog.cpp | 37 + Chapter15/qmake/basics/otherdialog.h | 47 + Chapter15/qmake/basics/otherdialog.ui | 96 + Chapter15/qmake/basics/preferencedialog.cpp | 37 + Chapter15/qmake/basics/preferencedialog.h | 47 + Chapter15/qmake/basics/preferencedialog.ui | 113 + Chapter15/qmake/complex/Makefile | 179 + Chapter15/qmake/complex/app/app.pro | 41 + Chapter15/qmake/complex/app/appwindow.cpp | 67 + Chapter15/qmake/complex/app/appwindow.h | 56 + Chapter15/qmake/complex/app/main.cpp | 44 + Chapter15/qmake/complex/complex.pro | 3 + Chapter15/qmake/complex/complex.pro.quote | 5 + Chapter15/qmake/complex/files.txt | 19 + Chapter15/qmake/complex/include/base.h | 51 + Chapter15/qmake/complex/src/base.cpp | 41 + Chapter15/qmake/complex/src/src.pro | 42 + Chapter16/README.txt | 52 + Chapter16/basic/main.cpp | 39 + Chapter16/classdata/classdata.pro | 13 + Chapter16/classdata/datetest.cpp | 92 + Chapter16/classdata/datetest.h | 49 + Chapter16/classdata/main.cpp | 36 + Chapter16/classtest/classtest.pro | 13 + Chapter16/classtest/datetest.cpp | 107 + Chapter16/classtest/datetest.h | 48 + Chapter16/classtest/main.cpp | 36 + .../imagecollectiontest/imagecollection.cpp | 150 + .../imagecollectiontest/imagecollection.h | 55 + .../imagecollectiontest.cpp | 158 + .../imagecollectiontest/imagecollectiontest.h | 50 + .../imagecollectiontest.pro | 14 + Chapter16/imagecollectiontest/main.cpp | 36 + Chapter16/imagecollectiontest/test.png | Bin 0 -> 327442 bytes Chapter16/signaltest/main.cpp | 36 + Chapter16/signaltest/signaltest.pro | 13 + Chapter16/signaltest/spinboxtest.cpp | 163 + Chapter16/signaltest/spinboxtest.h | 51 + Chapter16/widgetdata/main.cpp | 36 + Chapter16/widgetdata/spinboxtest.cpp | 120 + Chapter16/widgetdata/spinboxtest.h | 51 + Chapter16/widgetdata/widgetdata.pro | 13 + Chapter16/widgettest/main.cpp | 36 + Chapter16/widgettest/spinboxtest.cpp | 100 + Chapter16/widgettest/spinboxtest.h | 47 + Chapter16/widgettest/widgettest.pro | 13 + GPL-COPYING.txt | 361 ++ LICENSE.txt | 27 + README.md | 15 + README.txt | 47 + contributing.md | 14 + 552 files changed, 32552 insertions(+) create mode 100644 3643.pdf create mode 100644 3645.pdf create mode 100644 9781590598313.jpg create mode 100644 Chapter01/README.txt create mode 100644 Chapter01/cpp-with-qobject/cpp-with-qobject.cpp create mode 100644 Chapter01/cpp-with-qobject/example.pro create mode 100644 Chapter01/cpp-with-qstring/cpp-with-qstring.cpp create mode 100644 Chapter01/cpp-with-qstring/example.pro create mode 100644 Chapter01/gui-connection/example.pro create mode 100644 Chapter01/gui-connection/gui-connection.cpp create mode 100644 Chapter01/gui-connection/myclass.cpp create mode 100644 Chapter01/gui-connection/myclass.h create mode 100644 Chapter01/hello-world/anything.cpp create mode 100644 Chapter01/hello-world/testing.pro create mode 100644 Chapter01/map-hash-set/example.pro create mode 100644 Chapter01/map-hash-set/map-examples.cpp create mode 100644 Chapter01/plain-cpp/plain-cpp.cpp create mode 100644 Chapter01/qlist/example.pro create mode 100644 Chapter01/qlist/qlist.cpp create mode 100644 Chapter01/signals-and-slots/example.pro create mode 100644 Chapter01/signals-and-slots/myclass.cpp create mode 100644 Chapter01/signals-and-slots/myclass.h create mode 100644 Chapter01/signals-and-slots/sig-slot.cpp create mode 100644 Chapter01/stringlist-stack-queue/example.pro create mode 100644 Chapter01/stringlist-stack-queue/special-lists.cpp create mode 100644 Chapter02/README.txt create mode 100644 Chapter02/addressbook/addressbook.pro create mode 100644 Chapter02/addressbook/editdialog.cpp create mode 100644 Chapter02/addressbook/editdialog.h create mode 100644 Chapter02/addressbook/editdialog.ui create mode 100644 Chapter02/addressbook/listdialog.cpp create mode 100644 Chapter02/addressbook/listdialog.h create mode 100644 Chapter02/addressbook/listdialog.ui create mode 100644 Chapter02/addressbook/main.cpp create mode 100644 Chapter03/README.txt create mode 100644 Chapter03/buttonbox/buttonbox.cpp create mode 100644 Chapter03/buttonbox/buttonbox.h create mode 100644 Chapter03/buttonbox/buttonbox.pro create mode 100644 Chapter03/buttonbox/main.cpp create mode 100644 Chapter03/colorandfont/colorandfont.pro create mode 100644 Chapter03/colorandfont/main.cpp create mode 100644 Chapter03/designer-and-code/designer-dialog.ui create mode 100644 Chapter03/designer-and-code/example.pro create mode 100644 Chapter03/designer-and-code/main.cpp create mode 100644 Chapter03/filedialog/filedialog.pro create mode 100644 Chapter03/filedialog/main.cpp create mode 100644 Chapter03/gridlayout/gridlayout.pro create mode 100644 Chapter03/gridlayout/main.cpp create mode 100644 Chapter03/groupbox/groupbox.ui create mode 100644 Chapter03/label/label.pro create mode 100644 Chapter03/label/main.cpp create mode 100644 Chapter03/lineedit/lineedit.ui create mode 100644 Chapter03/listwidget/listwidget.pro create mode 100644 Chapter03/listwidget/listwidgetdialog.cpp create mode 100644 Chapter03/listwidget/listwidgetdialog.h create mode 100644 Chapter03/listwidget/main.cpp create mode 100644 Chapter03/messagebox/cut.png create mode 100644 Chapter03/messagebox/main.cpp create mode 100644 Chapter03/messagebox/messagebox.pro create mode 100644 Chapter03/progressbar/progressbar.ui create mode 100644 Chapter03/pushbutton/buttondialog.cpp create mode 100644 Chapter03/pushbutton/buttondialog.h create mode 100644 Chapter03/pushbutton/main.cpp create mode 100644 Chapter03/pushbutton/pushbutton.pro create mode 100644 Chapter03/radiobutton/main.cpp create mode 100644 Chapter03/radiobutton/radiobutton.pro create mode 100644 Chapter03/regexp/main.cpp create mode 100644 Chapter03/regexp/regexp.pro create mode 100644 Chapter03/revalidator/main.cpp create mode 100644 Chapter03/revalidator/revalidator.pro create mode 100644 Chapter03/spinbox/spinbox.ui create mode 100644 Chapter03/validator/main.cpp create mode 100644 Chapter03/validator/validator.pro create mode 100644 Chapter04/README.txt create mode 100644 Chapter04/dock/dock.pro create mode 100644 Chapter04/dock/images.qrc create mode 100644 Chapter04/dock/images/copy.png create mode 100644 Chapter04/dock/images/cut.png create mode 100644 Chapter04/dock/images/new.png create mode 100644 Chapter04/dock/images/paste.png create mode 100644 Chapter04/dock/infowidget.cpp create mode 100644 Chapter04/dock/infowidget.h create mode 100644 Chapter04/dock/main.cpp create mode 100644 Chapter04/dock/sdiwindow.cpp create mode 100644 Chapter04/dock/sdiwindow.h create mode 100644 Chapter04/mdi/documentwindow.cpp create mode 100644 Chapter04/mdi/documentwindow.h create mode 100644 Chapter04/mdi/images.qrc create mode 100644 Chapter04/mdi/images/copy.png create mode 100644 Chapter04/mdi/images/cut.png create mode 100644 Chapter04/mdi/images/new.png create mode 100644 Chapter04/mdi/images/paste.png create mode 100644 Chapter04/mdi/main.cpp create mode 100644 Chapter04/mdi/mdi.pro create mode 100644 Chapter04/mdi/mdiwindow.cpp create mode 100644 Chapter04/mdi/mdiwindow.h create mode 100644 Chapter04/resources/alias.qrc create mode 100644 Chapter04/resources/direct.qrc create mode 100644 Chapter04/resources/prefix.qrc create mode 100644 Chapter04/sdi/images.qrc create mode 100644 Chapter04/sdi/images/copy.png create mode 100644 Chapter04/sdi/images/cut.png create mode 100644 Chapter04/sdi/images/new.png create mode 100644 Chapter04/sdi/images/paste.png create mode 100644 Chapter04/sdi/main.cpp create mode 100644 Chapter04/sdi/sdi.pro create mode 100644 Chapter04/sdi/sdiwindow.cpp create mode 100644 Chapter04/sdi/sdiwindow.h create mode 100644 Chapter05/README.txt create mode 100644 Chapter05/bardelegate/bardelegate.cpp create mode 100644 Chapter05/bardelegate/bardelegate.h create mode 100644 Chapter05/bardelegate/bardelegate.pro create mode 100644 Chapter05/bardelegate/main.cpp create mode 100644 Chapter05/editdelegate/bardelegate.cpp create mode 100644 Chapter05/editdelegate/bardelegate.h create mode 100644 Chapter05/editdelegate/editdelegate.pro create mode 100644 Chapter05/editdelegate/main.cpp create mode 100644 Chapter05/editmodel/editmodel.pro create mode 100644 Chapter05/editmodel/intmodel.cpp create mode 100644 Chapter05/editmodel/intmodel.h create mode 100644 Chapter05/editmodel/main.cpp create mode 100644 Chapter05/mulmodel/main.cpp create mode 100644 Chapter05/mulmodel/mulmodel.cpp create mode 100644 Chapter05/mulmodel/mulmodel.h create mode 100644 Chapter05/mulmodel/mulmodel.pro create mode 100644 Chapter05/readonlyview/main.cpp create mode 100644 Chapter05/readonlyview/readonlyview.pro create mode 100644 Chapter05/singleitemview/main.cpp create mode 100644 Chapter05/singleitemview/singleitemview.cpp create mode 100644 Chapter05/singleitemview/singleitemview.h create mode 100644 Chapter05/singleitemview/singleitemview.pro create mode 100644 Chapter05/sorting/main.cpp create mode 100644 Chapter05/sorting/sorting.pro create mode 100644 Chapter05/sorting/sortonsecondmodel.cpp create mode 100644 Chapter05/sorting/sortonsecondmodel.h create mode 100644 Chapter05/splitterview/main.cpp create mode 100644 Chapter05/splitterview/splitterview.pro create mode 100644 Chapter05/stringlist/main.cpp create mode 100644 Chapter05/stringlist/stringlist.pro create mode 100644 Chapter05/treemodel/main.cpp create mode 100644 Chapter05/treemodel/objecttreemodel.cpp create mode 100644 Chapter05/treemodel/objecttreemodel.h create mode 100644 Chapter05/treemodel/treemodel.pro create mode 100644 Chapter06/README.txt create mode 100644 Chapter06/circlebar/circlebar.cpp create mode 100644 Chapter06/circlebar/circlebar.h create mode 100644 Chapter06/circlebar/circlebar.pro create mode 100644 Chapter06/circlebar/main.cpp create mode 100644 Chapter06/clocklabel/clocklabel.cpp create mode 100644 Chapter06/clocklabel/clocklabel.h create mode 100644 Chapter06/clocklabel/clocklabel.pro create mode 100644 Chapter06/clocklabel/main.cpp create mode 100644 Chapter06/composed/composed.pro create mode 100644 Chapter06/composed/main.cpp create mode 100644 Chapter06/composed/numerickeypad.cpp create mode 100644 Chapter06/composed/numerickeypad.h create mode 100644 Chapter06/designerplugin/circlebar.cpp create mode 100644 Chapter06/designerplugin/circlebar.h create mode 100644 Chapter06/designerplugin/circlebarplugin.cpp create mode 100644 Chapter06/designerplugin/circlebarplugin.h create mode 100644 Chapter06/designerplugin/plugin.pro create mode 100644 Chapter06/designerpromotion/promote-dialog.ui create mode 100644 Chapter06/eventfilter/eventfilter.pro create mode 100644 Chapter06/eventfilter/main.cpp create mode 100644 Chapter06/eventlister/eventlister.pro create mode 100644 Chapter06/eventlister/eventwidget.cpp create mode 100644 Chapter06/eventlister/eventwidget.h create mode 100644 Chapter06/eventlister/main.cpp create mode 100644 Chapter07/README.txt create mode 100644 Chapter07/brushgradients/Thumbs.db create mode 100644 Chapter07/brushgradients/brushgradients.pro create mode 100644 Chapter07/brushgradients/main.cpp create mode 100644 Chapter07/brushgradients/texture.png create mode 100644 Chapter07/circles/circles.pro create mode 100644 Chapter07/circles/main.cpp create mode 100644 Chapter07/drawlines/drawlines.pro create mode 100644 Chapter07/drawlines/main.cpp create mode 100644 Chapter07/graphicsview/interaction/handleitem.cpp create mode 100644 Chapter07/graphicsview/interaction/handleitem.h create mode 100644 Chapter07/graphicsview/interaction/interaction.pro create mode 100644 Chapter07/graphicsview/interaction/main.cpp create mode 100644 Chapter07/graphicsview/opengl/main.cpp create mode 100644 Chapter07/graphicsview/opengl/opengl.pro create mode 100644 Chapter07/graphicsview/standarditems/main.cpp create mode 100644 Chapter07/graphicsview/standarditems/standarditems.pro create mode 100644 Chapter07/graphicsview/transformations/main.cpp create mode 100644 Chapter07/graphicsview/transformations/transformations.pro create mode 100644 Chapter07/paths/main.cpp create mode 100644 Chapter07/paths/paths.pro create mode 100644 Chapter07/penbrush/main.cpp create mode 100644 Chapter07/penbrush/penbrush.pro create mode 100644 Chapter07/penpatterns/main.cpp create mode 100644 Chapter07/penpatterns/penpatterns.pro create mode 100644 Chapter07/printing/graphicsview/graphicsview.pro create mode 100644 Chapter07/printing/graphicsview/main.cpp create mode 100644 Chapter07/printing/painter/main.cpp create mode 100644 Chapter07/printing/painter/painter.pro create mode 100644 Chapter07/rects/main.cpp create mode 100644 Chapter07/rects/rects.pro create mode 100644 Chapter07/text/main.cpp create mode 100644 Chapter07/text/text.pro create mode 100644 Chapter07/widgets/custombutton/custombutton.pro create mode 100644 Chapter07/widgets/custombutton/dialog.cpp create mode 100644 Chapter07/widgets/custombutton/dialog.h create mode 100644 Chapter07/widgets/custombutton/dialog.ui create mode 100644 Chapter07/widgets/custombutton/main.cpp create mode 100644 Chapter07/widgets/custombutton/mybutton.cpp create mode 100644 Chapter07/widgets/custombutton/mybutton.h create mode 100644 Chapter07/widgets/events/circlewidget.cpp create mode 100644 Chapter07/widgets/events/circlewidget.h create mode 100644 Chapter07/widgets/events/events.pro create mode 100644 Chapter07/widgets/events/main.cpp create mode 100644 Chapter08/README.txt create mode 100644 Chapter08/datastream/datastream.pro create mode 100644 Chapter08/datastream/main.cpp create mode 100644 Chapter08/datastream/test.dat create mode 100644 Chapter08/fileexist/fileexist.pro create mode 100644 Chapter08/fileexist/main.cpp create mode 100644 Chapter08/fileexist/testfile.txt create mode 100644 Chapter08/readwriteapplication/images.qrc create mode 100644 Chapter08/readwriteapplication/images/copy.png create mode 100644 Chapter08/readwriteapplication/images/cut.png create mode 100644 Chapter08/readwriteapplication/images/new.png create mode 100644 Chapter08/readwriteapplication/images/paste.png create mode 100644 Chapter08/readwriteapplication/main.cpp create mode 100644 Chapter08/readwriteapplication/sdi.pro create mode 100644 Chapter08/readwriteapplication/sdiwindow.cpp create mode 100644 Chapter08/readwriteapplication/sdiwindow.h create mode 100644 Chapter08/rootlist/main.cpp create mode 100644 Chapter08/rootlist/rootlist.pro create mode 100644 Chapter08/textstream/main.cpp create mode 100644 Chapter08/textstream/textstream.pro create mode 100644 Chapter08/xmldommodify/main.cpp create mode 100644 Chapter08/xmldommodify/simple-modified.xml create mode 100644 Chapter08/xmldommodify/simple.xml create mode 100644 Chapter08/xmldommodify/xmldommodify.pro create mode 100644 Chapter08/xmldomread/main.cpp create mode 100644 Chapter08/xmldomread/simple.xml create mode 100644 Chapter08/xmldomread/xmldomread.pro create mode 100644 Chapter08/xmldomwrite/main.cpp create mode 100644 Chapter08/xmldomwrite/simple.xml create mode 100644 Chapter08/xmldomwrite/xmldomwrite.pro create mode 100644 Chapter08/xmlsaxread/main.cpp create mode 100644 Chapter08/xmlsaxread/simple.xml create mode 100644 Chapter08/xmlsaxread/xmlsaxread.pro create mode 100644 Chapter09/README.txt create mode 100644 Chapter09/assistant/assistant.pro create mode 100644 Chapter09/assistant/documentation/about.txt create mode 100644 Chapter09/assistant/documentation/adv1.html create mode 100644 Chapter09/assistant/documentation/adv2.html create mode 100644 Chapter09/assistant/documentation/advanced.html create mode 100644 Chapter09/assistant/documentation/appendix.html create mode 100644 Chapter09/assistant/documentation/basics.html create mode 100644 Chapter09/assistant/documentation/easystuff.html create mode 100644 Chapter09/assistant/documentation/faq.html create mode 100644 Chapter09/assistant/documentation/images/qt.png create mode 100644 Chapter09/assistant/documentation/index.html create mode 100644 Chapter09/assistant/documentation/qtbookexample.adp create mode 100644 Chapter09/assistant/main.cpp create mode 100644 Chapter09/statusbar/main.cpp create mode 100644 Chapter09/statusbar/statusbar.pro create mode 100644 Chapter09/tooltips/images.qrc create mode 100644 Chapter09/tooltips/images/qt.png create mode 100644 Chapter09/tooltips/main.cpp create mode 100644 Chapter09/tooltips/tooltipdialog.cpp create mode 100644 Chapter09/tooltips/tooltipdialog.h create mode 100644 Chapter09/tooltips/tooltips.pro create mode 100644 Chapter09/tooltipzones/main.cpp create mode 100644 Chapter09/tooltipzones/tipzones.cpp create mode 100644 Chapter09/tooltipzones/tipzones.h create mode 100644 Chapter09/tooltipzones/tooltipzones.pro create mode 100644 Chapter09/whatsthis/images.qrc create mode 100644 Chapter09/whatsthis/images/qt.png create mode 100644 Chapter09/whatsthis/main.cpp create mode 100644 Chapter09/whatsthis/whatsthis.pro create mode 100644 Chapter09/whatsthis/whatsthisdialog.cpp create mode 100644 Chapter09/whatsthis/whatsthisdialog.h create mode 100644 Chapter09/whatsthislink/linkdialog.cpp create mode 100644 Chapter09/whatsthislink/linkdialog.h create mode 100644 Chapter09/whatsthislink/linkfilter.cpp create mode 100644 Chapter09/whatsthislink/linkfilter.h create mode 100644 Chapter09/whatsthislink/main.cpp create mode 100644 Chapter09/whatsthislink/whatsthislink.pro create mode 100644 Chapter09/wizard/main.cpp create mode 100644 Chapter09/wizard/wizard.cpp create mode 100644 Chapter09/wizard/wizard.h create mode 100644 Chapter09/wizard/wizard.pro create mode 100644 Chapter10/README.txt create mode 100644 Chapter10/dynamic/dynamic.pro create mode 100644 Chapter10/dynamic/dyndialog.cpp create mode 100644 Chapter10/dynamic/dyndialog.h create mode 100644 Chapter10/dynamic/english.ts create mode 100644 Chapter10/dynamic/main.cpp create mode 100644 Chapter10/dynamic/swedish.qm create mode 100644 Chapter10/dynamic/swedish.ts create mode 100644 Chapter10/locales/locales.pro create mode 100644 Chapter10/locales/main.cpp create mode 100644 Chapter10/noop/main.cpp create mode 100644 Chapter10/noop/noop.pro create mode 100644 Chapter10/noop/noop_sv_SE.qm create mode 100644 Chapter10/noop/noop_sv_SE.ts create mode 100644 Chapter10/sdi/images.qrc create mode 100644 Chapter10/sdi/images/copy.png create mode 100644 Chapter10/sdi/images/cut.png create mode 100644 Chapter10/sdi/images/new.png create mode 100644 Chapter10/sdi/images/paste.png create mode 100644 Chapter10/sdi/main.cpp create mode 100644 Chapter10/sdi/qt_sv_SE.qm create mode 100644 Chapter10/sdi/qt_sv_SE.ts create mode 100644 Chapter10/sdi/sdi.pro create mode 100644 Chapter10/sdi/sdi_sv_SE.qm create mode 100644 Chapter10/sdi/sdi_sv_SE.ts create mode 100644 Chapter10/sdi/sdiwindow.cpp create mode 100644 Chapter10/sdi/sdiwindow.h create mode 100644 Chapter11/README.txt create mode 100644 Chapter11/customlib/customlib.pro create mode 100644 Chapter11/customlib/lib/Makefile create mode 100644 Chapter11/customlib/lib/sum.c create mode 100644 Chapter11/customlib/main.cpp create mode 100644 Chapter11/customplugin/customplugin.pro create mode 100644 Chapter11/customplugin/filterdialog.cpp create mode 100644 Chapter11/customplugin/filterdialog.h create mode 100644 Chapter11/customplugin/filterdialog.ui create mode 100644 Chapter11/customplugin/filterinterface.h create mode 100644 Chapter11/customplugin/filters/blur/blur.cpp create mode 100644 Chapter11/customplugin/filters/blur/blur.h create mode 100644 Chapter11/customplugin/filters/blur/blur.pro create mode 100644 Chapter11/customplugin/filters/darken/darken.cpp create mode 100644 Chapter11/customplugin/filters/darken/darken.h create mode 100644 Chapter11/customplugin/filters/darken/darken.pro create mode 100644 Chapter11/customplugin/filters/flip/flip.cpp create mode 100644 Chapter11/customplugin/filters/flip/flip.h create mode 100644 Chapter11/customplugin/filters/flip/flip.pro create mode 100644 Chapter11/customplugin/main.cpp create mode 100644 Chapter11/customplugin/source.jpeg create mode 100644 Chapter11/factoryplugin/customplugin.pro create mode 100644 Chapter11/factoryplugin/filterdialog.cpp create mode 100644 Chapter11/factoryplugin/filterdialog.h create mode 100644 Chapter11/factoryplugin/filterdialog.ui create mode 100644 Chapter11/factoryplugin/filterinterface.h create mode 100644 Chapter11/factoryplugin/filters/blur/blur.cpp create mode 100644 Chapter11/factoryplugin/filters/blur/blur.h create mode 100644 Chapter11/factoryplugin/filters/blur/blur.pro create mode 100644 Chapter11/factoryplugin/filters/darken/darken.cpp create mode 100644 Chapter11/factoryplugin/filters/darken/darken.h create mode 100644 Chapter11/factoryplugin/filters/darken/darken.pro create mode 100644 Chapter11/factoryplugin/filters/flip/flip.cpp create mode 100644 Chapter11/factoryplugin/filters/flip/flip.h create mode 100644 Chapter11/factoryplugin/filters/flip/flip.pro create mode 100644 Chapter11/factoryplugin/main.cpp create mode 100644 Chapter11/factoryplugin/source.jpeg create mode 100644 Chapter11/imageplugin/imageplugin.pro create mode 100644 Chapter11/imageplugin/testread/Thumbs.db create mode 100644 Chapter11/imageplugin/testread/input.ti create mode 100644 Chapter11/imageplugin/testread/main.cpp create mode 100644 Chapter11/imageplugin/testread/test.png create mode 100644 Chapter11/imageplugin/testread/testread.pro create mode 100644 Chapter11/imageplugin/testwrite/Thumbs.db create mode 100644 Chapter11/imageplugin/testwrite/input.png create mode 100644 Chapter11/imageplugin/testwrite/main.cpp create mode 100644 Chapter11/imageplugin/testwrite/test.ti create mode 100644 Chapter11/imageplugin/testwrite/testwrite.pro create mode 100644 Chapter11/imageplugin/textimagehandler.cpp create mode 100644 Chapter11/imageplugin/textimagehandler.h create mode 100644 Chapter11/imageplugin/textimageplugin.cpp create mode 100644 Chapter11/imageplugin/textimageplugin.h create mode 100644 Chapter11/staticplugin/customplugin.pro create mode 100644 Chapter11/staticplugin/filterdialog.cpp create mode 100644 Chapter11/staticplugin/filterdialog.h create mode 100644 Chapter11/staticplugin/filterdialog.ui create mode 100644 Chapter11/staticplugin/filterinterface.h create mode 100644 Chapter11/staticplugin/filters/blur/blur.cpp create mode 100644 Chapter11/staticplugin/filters/blur/blur.h create mode 100644 Chapter11/staticplugin/filters/blur/blur.pro create mode 100644 Chapter11/staticplugin/filters/darken/darken.cpp create mode 100644 Chapter11/staticplugin/filters/darken/darken.h create mode 100644 Chapter11/staticplugin/filters/darken/darken.pro create mode 100644 Chapter11/staticplugin/filters/flip/flip.cpp create mode 100644 Chapter11/staticplugin/filters/flip/flip.h create mode 100644 Chapter11/staticplugin/filters/flip/flip.pro create mode 100644 Chapter11/staticplugin/main.cpp create mode 100644 Chapter11/staticplugin/source.jpeg create mode 100644 Chapter12/README.txt create mode 100644 Chapter12/basicsemaphore/basicsemaphore.pro create mode 100644 Chapter12/basicsemaphore/main.cpp create mode 100644 Chapter12/competingsemaphore/competingsemaphore.pro create mode 100644 Chapter12/competingsemaphore/main.cpp create mode 100644 Chapter12/customsignals/customsignals.pro create mode 100644 Chapter12/customsignals/main.cpp create mode 100644 Chapter12/customsignals/textandnumber.cpp create mode 100644 Chapter12/customsignals/textandnumber.h create mode 100644 Chapter12/customsignals/textdevice.cpp create mode 100644 Chapter12/customsignals/textdevice.h create mode 100644 Chapter12/customsignals/textthread.cpp create mode 100644 Chapter12/customsignals/textthread.h create mode 100644 Chapter12/inorderthreads/inorderthreads.pro create mode 100644 Chapter12/inorderthreads/main.cpp create mode 100644 Chapter12/orderedthreads/main.cpp create mode 100644 Chapter12/orderedthreads/orderedthreads.pro create mode 100644 Chapter12/processes/main.cpp create mode 100644 Chapter12/processes/processdialog.cpp create mode 100644 Chapter12/processes/processdialog.h create mode 100644 Chapter12/processes/processdialog.ui create mode 100644 Chapter12/processes/processes.pro create mode 100644 Chapter12/readwritethreads/main.cpp create mode 100644 Chapter12/readwritethreads/readwritethreads.pro create mode 100644 Chapter12/semaphorethreads/main.cpp create mode 100644 Chapter12/semaphorethreads/semaphorethreads.pro create mode 100644 Chapter12/signallingthreads/main.cpp create mode 100644 Chapter12/signallingthreads/signallingthreads.pro create mode 100644 Chapter12/signallingthreads/textdevice.cpp create mode 100644 Chapter12/signallingthreads/textdevice.h create mode 100644 Chapter12/signallingthreads/textthread.cpp create mode 100644 Chapter12/signallingthreads/textthread.h create mode 100644 Chapter12/simplethreads/main.cpp create mode 100644 Chapter12/simplethreads/simplethreads.pro create mode 100644 Chapter12/uithread/main.cpp create mode 100644 Chapter12/uithread/textandnumber.cpp create mode 100644 Chapter12/uithread/textandnumber.h create mode 100644 Chapter12/uithread/textdialog.cpp create mode 100644 Chapter12/uithread/textdialog.h create mode 100644 Chapter12/uithread/textdialog.ui create mode 100644 Chapter12/uithread/textthread.cpp create mode 100644 Chapter12/uithread/textthread.h create mode 100644 Chapter12/uithread/uithread.pro create mode 100644 Chapter13/README.txt create mode 100644 Chapter13/imagebook/Thumbs.db create mode 100644 Chapter13/imagebook/imagebook.pro create mode 100644 Chapter13/imagebook/imagecollection.cpp create mode 100644 Chapter13/imagebook/imagecollection.h create mode 100644 Chapter13/imagebook/imagedialog.cpp create mode 100644 Chapter13/imagebook/imagedialog.h create mode 100644 Chapter13/imagebook/imagedialog.ui create mode 100644 Chapter13/imagebook/main.cpp create mode 100644 Chapter13/imagebook/test.png create mode 100644 Chapter13/modelview/main.cpp create mode 100644 Chapter13/modelview/modelview.pro create mode 100644 Chapter13/sqltest/mysql/main.cpp create mode 100644 Chapter13/sqltest/mysql/mysql.pro create mode 100644 Chapter13/sqltest/sqlite-mem/main.cpp create mode 100644 Chapter13/sqltest/sqlite-mem/sqlite-mem.pro create mode 100644 Chapter13/sqltest/sqlite/main.cpp create mode 100644 Chapter13/sqltest/sqlite/sqlite.pro create mode 100644 Chapter13/sqltest/sqlite/testdatabase.db create mode 100644 Chapter14/README.txt create mode 100644 Chapter14/ftp/ftp.pro create mode 100644 Chapter14/ftp/ftpdialog.cpp create mode 100644 Chapter14/ftp/ftpdialog.h create mode 100644 Chapter14/ftp/ftpdialog.ui create mode 100644 Chapter14/ftp/main.cpp create mode 100644 Chapter14/http/http.pro create mode 100644 Chapter14/http/httpdialog.cpp create mode 100644 Chapter14/http/httpdialog.h create mode 100644 Chapter14/http/httpdialog.ui create mode 100644 Chapter14/http/main.cpp create mode 100644 Chapter14/tcpclient/clientdialog.cpp create mode 100644 Chapter14/tcpclient/clientdialog.h create mode 100644 Chapter14/tcpclient/clientdialog.ui create mode 100644 Chapter14/tcpclient/main.cpp create mode 100644 Chapter14/tcpclient/tcpclient.pro create mode 100644 Chapter14/tcpserver/images/Thumbs.db create mode 100644 Chapter14/tcpserver/images/test-green.png create mode 100644 Chapter14/tcpserver/images/test.png create mode 100644 Chapter14/tcpserver/main.cpp create mode 100644 Chapter14/tcpserver/server.cpp create mode 100644 Chapter14/tcpserver/server.h create mode 100644 Chapter14/tcpserver/serverthread.cpp create mode 100644 Chapter14/tcpserver/serverthread.h create mode 100644 Chapter14/tcpserver/tcpserver.pro create mode 100644 Chapter14/udpclient/listener.cpp create mode 100644 Chapter14/udpclient/listener.h create mode 100644 Chapter14/udpclient/main.cpp create mode 100644 Chapter14/udpclient/udpclient.pro create mode 100644 Chapter14/udpserver/main.cpp create mode 100644 Chapter14/udpserver/sender.cpp create mode 100644 Chapter14/udpserver/sender.h create mode 100644 Chapter14/udpserver/test.png create mode 100644 Chapter14/udpserver/udpserver.pro create mode 100644 Chapter15/README.txt create mode 100644 Chapter15/cmake/basics/CMakeLists.txt create mode 100644 Chapter15/cmake/basics/main.cpp create mode 100644 Chapter15/cmake/basics/mainwindow.cpp create mode 100644 Chapter15/cmake/basics/mainwindow.h create mode 100644 Chapter15/cmake/basics/otherdialog.cpp create mode 100644 Chapter15/cmake/basics/otherdialog.h create mode 100644 Chapter15/cmake/basics/otherdialog.ui create mode 100644 Chapter15/cmake/basics/preferencedialog.cpp create mode 100644 Chapter15/cmake/basics/preferencedialog.h create mode 100644 Chapter15/cmake/basics/preferencedialog.ui create mode 100644 Chapter15/cmake/complex/CMakeLists.txt create mode 100644 Chapter15/cmake/complex/app/CMakeLists.txt create mode 100644 Chapter15/cmake/complex/app/appwindow.cpp create mode 100644 Chapter15/cmake/complex/app/appwindow.h create mode 100644 Chapter15/cmake/complex/app/main.cpp create mode 100644 Chapter15/cmake/complex/include/base.h create mode 100644 Chapter15/cmake/complex/src/CMakeLists.txt create mode 100644 Chapter15/cmake/complex/src/base.cpp create mode 100644 Chapter15/qmake/basics/basics.pro create mode 100644 Chapter15/qmake/basics/main.cpp create mode 100644 Chapter15/qmake/basics/mainwindow.cpp create mode 100644 Chapter15/qmake/basics/mainwindow.h create mode 100644 Chapter15/qmake/basics/otherdialog.cpp create mode 100644 Chapter15/qmake/basics/otherdialog.h create mode 100644 Chapter15/qmake/basics/otherdialog.ui create mode 100644 Chapter15/qmake/basics/preferencedialog.cpp create mode 100644 Chapter15/qmake/basics/preferencedialog.h create mode 100644 Chapter15/qmake/basics/preferencedialog.ui create mode 100644 Chapter15/qmake/complex/Makefile create mode 100644 Chapter15/qmake/complex/app/app.pro create mode 100644 Chapter15/qmake/complex/app/appwindow.cpp create mode 100644 Chapter15/qmake/complex/app/appwindow.h create mode 100644 Chapter15/qmake/complex/app/main.cpp create mode 100644 Chapter15/qmake/complex/complex.pro create mode 100644 Chapter15/qmake/complex/complex.pro.quote create mode 100644 Chapter15/qmake/complex/files.txt create mode 100644 Chapter15/qmake/complex/include/base.h create mode 100644 Chapter15/qmake/complex/src/base.cpp create mode 100644 Chapter15/qmake/complex/src/src.pro create mode 100644 Chapter16/README.txt create mode 100644 Chapter16/basic/main.cpp create mode 100644 Chapter16/classdata/classdata.pro create mode 100644 Chapter16/classdata/datetest.cpp create mode 100644 Chapter16/classdata/datetest.h create mode 100644 Chapter16/classdata/main.cpp create mode 100644 Chapter16/classtest/classtest.pro create mode 100644 Chapter16/classtest/datetest.cpp create mode 100644 Chapter16/classtest/datetest.h create mode 100644 Chapter16/classtest/main.cpp create mode 100644 Chapter16/imagecollectiontest/imagecollection.cpp create mode 100644 Chapter16/imagecollectiontest/imagecollection.h create mode 100644 Chapter16/imagecollectiontest/imagecollectiontest.cpp create mode 100644 Chapter16/imagecollectiontest/imagecollectiontest.h create mode 100644 Chapter16/imagecollectiontest/imagecollectiontest.pro create mode 100644 Chapter16/imagecollectiontest/main.cpp create mode 100644 Chapter16/imagecollectiontest/test.png create mode 100644 Chapter16/signaltest/main.cpp create mode 100644 Chapter16/signaltest/signaltest.pro create mode 100644 Chapter16/signaltest/spinboxtest.cpp create mode 100644 Chapter16/signaltest/spinboxtest.h create mode 100644 Chapter16/widgetdata/main.cpp create mode 100644 Chapter16/widgetdata/spinboxtest.cpp create mode 100644 Chapter16/widgetdata/spinboxtest.h create mode 100644 Chapter16/widgetdata/widgetdata.pro create mode 100644 Chapter16/widgettest/main.cpp create mode 100644 Chapter16/widgettest/spinboxtest.cpp create mode 100644 Chapter16/widgettest/spinboxtest.h create mode 100644 Chapter16/widgettest/widgettest.pro create mode 100644 GPL-COPYING.txt create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 README.txt create mode 100644 contributing.md diff --git a/3643.pdf b/3643.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e7abc738c3fd0c2f804768623a638ffd3f362d83 GIT binary patch literal 283577 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

ZK)S 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�VFcvWt$2yAjJQgD3 zb4av6jCQ&?cE^!HYR+kr7|kPlgdL(v@4#A5znQ=@Iox~&;SD);jD+drsc*g1Mn9>^ zv(x-8i)AAthJ?v1(*cfWn_!W+i*#$79v_2xIn!szh4@L6U)p5)UPU4-x!_^~*^TT7 z%0VerLj&8%l+;G(ip|bM%#mAWh__lU<^99q=uaxF>mW%RzWScs1{@9m%o_+h48rqU zBG1F)BqQvfuS(^zeMF4QttW|dR9Fr%w1DUhdLIZlgChcBey6+Bt>uLh-w39QKoy!S zS^Y4+PCNG-G5hoEO|cLU`SG8())hB1OENzwh)sb*iwzbvT^@7_ zE^m~A9^-`vH-qmI4T)z=XoS__%kNyTVZOHG;cq8-d1-Mg&6DZ|W}b>}&5_CrwtI1i zzh=1SVfx0v=!ARxMDUF})?!Y&&py)^N7j#>Pq?leT`e{qH%YG@s{QljC<7&2duF&G zH41$-iWj`#FMnqMOmhcQlyj83ocELG)PvxR+k`pDg?st6kUoRMkb$Wu)IaIS+J;o- zzS>7g&q`$qv~oedXNhhA5cA9SCQs^?0wp+)=VD4#-Kd!ibqW=L=T@_G%l-Nat9my z2;}7RrVdp_ROL+cx+d=;;zD<{59$YnRc=Pg1(YKV=@+toLrR&x)3}j3M#SL(Q^7Y^ z2)9)gh3`N7D?KDZQEFGa+Mmg>bype>;tYd=6+GjggL?~k z>;@PSGWCc!`)!#vIAXvfs!Q6mF5jt z;6ASI9dasX4-Rv%vSu5IIIXrY)&^@`62@vjrLP0Rs)z%pUINO03z*8g zV#;+Fxk3FuMIsmel>l&x^nzzIyN8L#)?KWK?eX>3;Y4yA9QmnSKHDvC^JB1FJ@mSD z=@kUjGJ_8P?#4=jhoPETGzbI!i-;K`{(SPb9urP!Dw)m-$|A>9Vpq?OQxb4!4m~z$ z7(zEzb}II!4z3x1xPk7ut4e-stKKDXn=zd?eYyh>`z+#|f;j~jy#TDbdFEK=^jci4 zFJbC6kBT|SWBk=tNoaOUtdyZ0vqZ7zi%{iio8$?UnI(@smbfF->_vcB*a*-~ua7&n zdLe?^KEzINB$n2De;$arfFwUH^{UTkzIWg%KhQvZYFHuI!wAL>79cXed^R*RJalJh zonZipjG;Tg7{(HXG@MMsbvc9}N@RO89PMKL0>_r65jeOukK&F(C>j`o?*}+!0^qfF}{u=5kNy zQN*>WW_C&RNY)&JTjFL2vpX}C^Me{XP%?h}tu5_3PH|=!$Ity>tz7sI6rU`CGm!FA zQxy34zV`))ltyn2-wo4bs7F*4?uz=h82c?Fn?XK!)ZmoU}3q8&Sl&u1mVc4fd5;JJoSNdD;^7$U1=elgjSD+W(wQ zFh$KTyqmsIdL@Vefyr@C2498JQ~7x_@eW@H9LgAkhj^fRfbo25-qEVro?@^p;rc@C zf|k4i$rrjyi?wm~G=y)f)SNE2{s+`DW?bu5!t~kXK2K?|HRx*>Z%Ts!9hqPRtx=Mx zr`XY}zhGbYylliHt8-p?)gGVS>+-(MKjj=f{d<=nBtWLnLgDK6)1X=p0|lRyfnZp_ z4?WCxO~Ibt_(YLP)*MF6Tijo4ud?xy4;VqQ<&SrDE}wU!+#=<&Pn$QwJ7sV?und@A zuyX`16`Q*1d6YDzwt2(pF&>yo90|89Yx3DVPz1`TGOEpJ^2MuewQd-%q!#dCaI7=; z;^i8(_aRQUPmG6*R3FKF(o!dL1L}ZrT<}RHJ8B2hg)E^j_M_6w-ssF~9{$RPK9bmQ z@Mi+$%DevNf%k;22C+U3fcZ2gd|W=_J{C>sCV>t+^NQ+Y^aimz)GPjqDcA==E&9>W zW4|l}RP&wr{Nlc#Yb~PAh+kW<9X!PAoTA2>7@EiGwdaxC&r@s3UUD=MVzb?~UiPS| za=0hIL9A7Gm6uX-D{FOrt$0=GclOThfTn~4&$QE^ps*eDfHhQ<*?t5B;QNR%FFs`e z=c8GX1m1{Vdzx4w@DLN!7yxMlj)6!w5ay?F0$u9|4|dZ7;#8Q#kiaQNcfw_~wbt;@ z6dV&E97G2k)y4&STpNiH=21A{dZpy{di_!5`P_)XSJCeNmK|$8rY0h(IKBGC<^CS|XiM@s|&>Ga7w9biVS}bLT7Gu|0)L<9KcXUX)A+zx2`O7n| z!bps&Wy+-JfzCh4@_EjqO}aN19Y!5Q7a`U;tBcS*AE#P!C82o{NgVOnAUf8o{OZ4W z{h5SYtr1+H$S=<9Z$ga36RGlyEPe&Aoud8JfA`rZsB*r6FbBif#4#|lnJSkwH8sme z-GU@V4xoCU7e|+soxFg2!gJc078W*Nlh?4nh2Jig&L7{a@`wJ^9RpVe5sCQri7%uO z4nsR2yms6l9h=BaZzJn=tfs=M=bc(3Nn{_H-c6Tf^^5&7$wv6}+4gS|Jxk7S-L@C% zSxnATB?i?4^G2VdeHju|ZmW}>)HRLIn z(AT!9a4Cerhr*MDavp0TXM4K;gwP;T+bedE_47TjJg8N!3#WCJ&t`nj=i~#%i~q7h z@F}sn!WY%^e_)3XCWQmh<7sV|RS1r4k)f zro!+bi_4{W%~8_)UK)otzqE^YPw!U(-gF6u;a%*D1a*T?%?}U`=9-_X)bNU;#Osn< zaw?mApt(f~S^V7B#k_nO*eu{W5&lcVd|dsUd*--Ow=Z~T4x|HJSZmxIK^c>9? zf~nLQWfQ;M_gn|MW$gQ#VnI6cCRpzButhljyTsgkUb35pe>l;Urn(p+EH!fxDJ zVgFUOgzE%7-`wg-1IiOmK%@hn_tN+&R!co0)5tK{gER}=gE6qvXe_742)@MUzj==S zKU??sUJhL^`)W?gte&w$?eWVLL2=Zi!7l&$hF2HGJyQiB`4FUZm;eV2bHc$+ zS&|cM@B?88=@|X}+E$IB8ScQEYR1w?7t_QPtE}?dJ7V&5|G@QCxD$2FAX)?Dffz4&1lpi!x zLGU^#=aP^F6R%dy5*jWU?H zxkz++2^)C0me@nWXJeXBLUvc!a39A8mm4Z9Pe>SFe|rYljJTourgYTr=3id812Mao zk7_NZ*^FaYC#&X*+5tzHWYF~wY*xMd;}ct?RMu-$s3j#{V`?s+-epr>d7ShmpV%ps zTPO0zjQr1Pp;6I7RXEO&;*rEjwFqY0{m#UAzx;KfbSm@uqHAYi0@&3H>fIk0P2hi+ z?dpDZ+x~O5i)ul=y>VFx>7Fh**)O&BDw)|WcWkG;@k z7%3`8Pj=ykYX)~^nK)`317pKgvyzh8>x{08BbihzkDY@BMv}#eYK(09 zSJ2S2qL3-xNU}9;gT0P8=E$e5}%{A(G zN@tc}j)M8q!}d58L5q|eZDQ~Gwgn4qmy%wWe_DOf%$YeMatLNLKFO0Hl>e7C!g5V( zVR~G+??@mbHOwh(YoV0oLwQ_mQ9TnrFVxv*ulHr=FEKzbN zYW>23ECHiJ?`?yo7EpU-yJCC(zkePf+`w&)t%cA&U5{26eRxj0USm-pZT=x)AzZ?9 z9>0v*xLnF>XPr~(pki1NT7^FGJUcWwQ(+gyI~tD+13O4%irpWPM(p26Y;2oHK>i-n zd>M0d9P*O>fa7zBKm#C}U{VImtln5%xhiIQ!({_Csfn^C6uWzcm~%rY-{BgUlR$`D z!m0t%8?3CK_3P=t0G?Ik`FeaU^1%^%|JKD=q_&6rrt5>-P1Zf4L(OX+5-<-0tRsvw zF$bz+JzSkl1BQTZ1?phHoyTid<+)jNn^gPF?3$R>+^R;x@Irei+Q{5JA(pltMha z%Cgy`CQq3i{>!OoV+ljlJiW$u-F@#(DYWH`!n+!;3A3@&eO8#b$f&@GQL~H8z5F?+ z4hHpOG@Dr1$8?8Iz9W5S1^@#uoL!LQ-BVh2^n-aghj8~Ah$aWj|F*EcWIavRx<2 zCE?_u%C`0y|u)Y2yizym_>wbith+ft)9G zw$xtAbCB8KYyN8$dd-ik6hSRHo2M1sRGRvL!>qwnCed_~Z}ZxpA5>^tIfQPb-3GOpWhT_eV5|H^Py?84GAn+C)ghH7=- z%_wzIT_cS>wPH6#i+^JqUEE^<4?0e+>**V7g4B~vQ@K3zEV?H9sbHYMSMq&G9G<-@ zI)V=Vr~(F}jR_-Y0AL+R9sjXe7-Yg;f$+F8o+JNGr5(}wjt8&LqH z9e9&Dgm%n*kQ5bMsJU zdI!3)))f&?KgXX#S?6!J&ZXiK!G{R5r@{Rv17|nh|L+VOe1I;x&xsC_GZPj`EZQSl zQlCOC{Qo5b*JyXG>}X4~8(T99ql}67O57~v4~~n$(;}P6D#XV1)PdhcxGRP# zSVIoM9OExXP`5S6?kAogdVl?V4lkgIjEzg!NXmLES)BiB(59q>sXnD|h-uVc%7`2Z zDW2lAQxf{)V{sH4bdc<4ioRgK?Q+i=Bc_2+z(R#?bu>B+eo3Xg9_tC4UvTGri4zdf zu`gj-FA*THyhlcgL~CVP6Z9P#sEj}8p2voda~bcBu|V(Nn8478RA?FHZ`XS@wSn7R z&!0nN<|6k4ccO#by|jf;v*$|i`m4!Vms9iWiaKf(kM7+slY~lnEk4l8vOS zAKAL-OnF#=fBp46m|gZrE_!@V`O_Rd*PIfiCf?zdY=M0;0(ulj;B*)BFBpq#?&sYI znCiqMwwpum1BJQd(4n%ud=geC3&$f`2=YHe5qLIPvOYgJH)!Wx28srY!*TT_zn}9; zupWVg&qOb5Dbg}Bvnel}+^y=WTEFVUcT?o9Ue2#+tx?aO(xP>xoQ9lZY~$nX*YdN{ zbl5nv=4xmeD_dr#ijIPQwISSSrU4BWN{!n+)q+kD#%O*C6EV4Fm36GWj1yWiNf;Le zBV&r3_K1*j2?)2+6nUJ?{ogrvoY@VQ!nThU-&|SOcyI|TLo_~X|Nt?&iJWKD_pXYCzep6 zCnKqw0=soy75*kKnRpsH_D$ABL+HC9cL)Dc=pYrx*g393C^`2gJFCwmS(9hExGezd zo8U(Pz-}Ys1^NAfdVyt@S$7+HjyY8PQLnJgeM?-~4lSnHqrD5yJpZDf;74G7zFzJ~&bfQ%Nv`Wquh;~EFGAXvuOo!{XUc08 z^P18AIs{nu&0Nb@3Q`>&w3MqN5#%P#q z@I8R82iC@zNCSNILiswbkd!p}pP-H8g?0NgE2nl-;fKOXjHWYj6bS+b$wb()XY=1! zN@UcgFWC**qY#lA*wJn0_uW9 z#^UUSnKz7!f5Z9K9Ow5tbjiJ3?IJ|6gw0A&vHWb*Xk1K`GS|Cii_E(@&ju3JaAO40 zp$YbekwQ|W{JZEw5=?X~{R_1EeyIWBS?t)@E4VxV0~^Okc8}YMWb|Z5aC%Wk1xK+2 zyYNT~YWQE`pi3NH?EMW+$3}~}FsJS@@@}%v%$DP#q+McX(h-&Ciy^y<6Kv}Luk1&r zkY@mU+0NnH`VB0Y_<6rL-W=B*%9djYb8vmSXbss_A9il2S=+(Nfjq;Y2eKz9>&z*h+Zw z2rj*_z^VNE+vn>y|1aQcNijAwXS){cvznJDFh;y}sFE|rjr@ha3^R1b$SssV+u;+b zBVcoL|CBL3a}Q$*WfOFnHI#1SKPjwDc`fM{T211s9m7>ka8uFz z&sRYH+&y{I?CWG_Im#IC)>@_)Smc9z&=B2wN^Zkt`*`wa#{O$PV;DMMJ&^(-pI)m? zN|VjSXj4IAH_W&Ljdp=Ov}OF~`yG}XMRqF-IU6~Ld8VsJ$OiEqZjX|Y3jZx)R@^3v z!9BdkNW=Mo%B#wsemy2Vrq=X=`t|-l)zWyn*K= z=;NdD6Hffks9A~b)%?QLc)JN+da0pSBS%w0KkeP2TnTF+H2K165sDW!9aX17&!y7% zm}4$~%tl;7UyM8G^1jqYbf+Om%^w5-kXwOk0w@-G1YMN+wOFgiH`%#*Iz9WK7^JzM zn0FcE7O{IT5FiK$sUwmdBX^kY&?!n0Vo+<&1ljtcFS)aj-q8sGPM>Pf=>>1&Xx;aW zTs7^^`K68&rL0qQ&lFl3%6S=$?m+>99(jXPCj=TE?M#Bb*65OPY5tZ=b0(i@p>a?g zQ|UR@&9G@7!7cJE58<<6va7RycQ#~``qROdAIS^yCBhsI1s0&|nar)GrJ{<`<^(^q zDVuv|i^IH6BkE0dK(Pa8L>6zLJpXkk`~T}SKTD$R{pkdWybD1_0|X~m;q4MXg9B$?=dwF$rN7Q+9iAT-w^FjPLKwFy{qP| zO+|aLEymt`ulRYUtMhU(kheP3t941*5_=XqaD+?Qw6ziLd@ja_ zSV7VeCkCp9UUNDDdZES&x_qNJEIY^UEzBP{CUt5acvN>PdK|90W}0~e33JU}9PQ2h z{2yHa_fh|I0u}@S1P%$#C8XdUco5)nrlg;LT4noWPUu2y()ewutxQlB>ugTgEc=D7 z_(Lw@xvMyrkbA-b8qmrBt^+|Z*q~d0W?au^pDr8PqIxJ(W?$wju8B?C)>O5KU+mIE zDU_K^FI}7a&B|G=caY0S0e=7yywaiKRq1@d8+iAxP6hDv(BZ)WXySQB$srQ;qge}OL^#!GMwR0VP7z`XjJLN@7YB%JV&JQS4Ae6Vf7IEk!Km)c*&O}I}Cg16}Jxb zbDRI$6ctA~HEqrRZH#I?GCJ)MOa^_Yp|}9=tihNFQd~8{ee2MV0w@wf83_GTxD}oM zH(Tq{2=1CdUt#zNiiv|l+LTyDDLM$Js=>>U*jqrGMyHFTfb<0Z0z$KnZ$rs$=Tht% zT_TO(QtqqF)!qErDV=n8DRgGLk8JI4`pwoFB^9;Hb>(=GXKg*jo%$ozkI~^(w#1U# z$!db^nLIpKmmKB<$$=P3vePJ2GxGdwmy}~IintgMnvFQ*m;X~;|2;r;8p&2^0<>_V zd#h=d{BUvd1DCJaU%lmf3dC+>`#|HUSMNK|4iQ%xX+5mx*%ZrTqoB4$mg!`|*cq=)P==7Q_>1$VrQZz5I=lB zO(vHl@P+~}5_!2Zn8?c4jNekLdT-lcA^Lzcprs8Mv@c%jC!n$cP@UlWggRoy*?`PY zM;!#|8)nyPVS=Yw2tzzN|Ct?@DpNOn)Pw94xJy7mO!+(a(y!Qc9Ig^Cy#|W){0c4& z)MJAe6x-K?$e+KR7LL-JuFqu?VV6O2)oZx}KC&Z>Ip%$?aq_hc_GxV~zLYdoKG*I` zcIkVYrlIjWryc?gB1Vz>xO&k>2agsPi)ol+4e9R?2Tfe(xUL~JSs<8R@aReH8%I!%YtoH;uKaHK9Y=duv2UwR==HUl z|B*jWc*iR)noJS>E3B`&IwZyJaTFEW2hTGz>C9?2?&^pEIf8d%&VgVU_dkj0!?hv4C!gh{qRZV$uCgtl`Kvbx2=8t91CDZ4lSdXM)ww?AYhW**q>)ZQ1@uj7hoF&5ilgFHc;Ou`m2i zenlF)l(&%X4m}wkyW1SqlsfPKt8CDwv2W^z=c=e3)P%pcRqsbOVL&tC>}BEQ)YQ^Y ztz?ubbx*HShj^vmEG{ox1r1?8SN3T%k`^%~S=C6YDpki%EJo2yikr)SIc2Y>!j7J|(bG)zi=@2^MY zHd(~<9W9tj#l_?$;Td*1bblYfzc+RsO%%UfX;1+7{}RVGY5j*WV+`2c7--R^Gvi=K zd{O&q1g_mBw3E;%;!b>8E=LuqX}tZbm&+bkP${*$0`J~#bqXs>xbE3ax^(e7yOMfi#CPp*538f{dM+oU!mWOVA6eN7aDN zN|tGp(Dc7w;K2hC`>*{S{Hj~Svup6=4z|~Q_pY*DxIq$;%S*$>?1Fiw%$v&pw!d=_ zC8f9s?^!^wATS>~-;+4vwj36kWZwN8je5XqlBQpVGgO}CyxwR1Kg<-PG>I0}V-$7WaJVs$?7Z__o%AwdiOcnA(| z-m4AkVKz8`zulUFWwGL(d`_aWAx(#duF6Znxd*fx$~AJa)8lGMui*HmrYfW}`5-1e zS)(YQeh6*wI-iAkm8wb;OOVX+0l$iNaaIag@Ib96KcB1&z?3aZSgh-;S(;VqDF`@M z5AI$8kw^^p&OeQ8){Cbebdh=_fk?t%EhSMpV=xHDOyqtA^)Q$`7L zw?h%5Ht{3YZQY=wn^~pKNFMo|AcMK{K>udA7Qv1-69sDREvqS~W>Y&RJtV^ll7UpH z3hr0}8H^xb&ml_Q%++s#{P>2L1nIJegEqA@adLJvHME8Mxw1F1f@5T4B4i-^x#HoW zmoc?7ceWs8WaQvrrx&xdaW-|N7qc;RHWe{7wl^{TukRTN895ml+3A&CjGR3Hrt~U5 zAB@6$eE;>k&>F#0K5#lwr|Yi99oLqPA(yVHWLI8ccmE)W6shkN*$RYS!<3Lt-%;YP zneOJ^##4~v2amXY>@>`oO>V+F!S4>~88;&=>vETh_y`&;-zh|!a-ru`t?5#Ye>a^u{p z5%-8g>2OP3@!5( z7%S})qtnR5J!fyr^NkJ-De`f#aQ&9KO2y7aZ27Hsg~rOyMMuU($3aB1s7FVDhei2} zwiTQD9x@a?N29~B0jI1&sN3LYvF zGPYkhfRYfn-+!>1CMBceY_azdRt9z#6l_@H=r>8iPx{$9V)ek3b8m_^96;1nc?HQ1>uu`HWn@R{kp||=FVQ~ zdBihw90D$-wOz^YRl&S{#M(TSn-jsocmGry!LO4WOB|Afq%btV4+lpw>LThRN-q2; zEXQ^91kf}f?0|5q;?TvR?X96h*JEa5%d^_{Ck_cEjMqebK9GmrAwed-Nb*T?TDph% zmd)dFYv;M8`?=dve?hWDvBZrF8L!jj;Vf;+9~T?ODC2_WWR>ylX-B)N5XF zUgH$WvhYFGd}3NIyVP0kBx|m{DbgwRg07Vx^P?{VfsggvoNdOYc$Kq}-0V9axXk9v zZrML?CGN-)xNfQX?SUDiQG&4L2v6_fgqC4%XX^~%Zho`taVCQTYP=L zW&7cBfxYv3*~jnnc*S1$yYEvS_Jpn1w|Do~HtYko`||XdUF9aqyTem5d>|ejrxcz! z7dj^&-fsd_28)Tjw?6p5XD&rKoU9ijoRE284ESmsGfo;Sjo`*|ryYRNi)LyV5;{qS z7`_wUnP>0RJnh8gG6EjI&du%?LTwB-|5=)s+q2Abt~fo;XD;I}<7v+{uR%{8f^#O< z?kzp44`=lcpuOK;0u8I|TrgBe;%PF}WAZN`K_HU0K4>OY?|uGB1#n=JA3URM)_XZl z=!>6ZzW7suEf|uz!SNKGhdL2_G!g*@@E4qEnKV=fBawgEjz@_h$@CKHDbg%BzhiLZ zuE4ws!ktJEdUg6EqlBHpbL_JaZmfuv<9HcI&+%U&jZRWSDszBAOh8G16Ed(Eax-ky z@?8G;_-U0s_6E$zgz5s~)yUMuVp0?#7Di^$c`bQSU}sJ&!H7up$LI)neNT-;*3xU3 z#Dvv{3SzdH7Wc;zLKR`xNb;YGw69kH?;(@ngF$gFuK>)tm_D~lIq5Rd(^yh|oA-9` zw~0Jf?6qDfD2+=7U%Ewc%K{%?2rHg_NyZ8$ecPX$k zng+}^x(aR7esPoj@T=D|TQ0w!Z)0wxbVx3N^gp|0x6<19*;!nwJXOzF*L=y@A=njeq_zk%E9EUZpV}G7V2evTDmnYc`w)w7{l^oqHi9Y;At}SS#md9|Kv?iLS|#5o)u%-a^7+@1TnVGpf4{m zt0)zd-}0UUJ@grq&Ppm;pNiEy>+$m2`a=yHz%+?Ob2*TF2k_y@PwQuQ0VtWZ@A3fa z>a8ZS@W|y`@SNnI>pYsyVk9BuQ-TiyCis6s2+6Uqbs|G}#aNUjW5CbBW^qEsdh;BWU2&d!Mw!~NWZm~x=6S(tZI zoMCEn6mrCY#T2X}Z`J*Hu^bbNm<`pR%MQXU? z>0j!@g8UYC+Tc9>kuYtAyKf48&*NB`gv8E!vEK}-y~C;%svi97%@B+0^J?^VBP}uW z=$GPDG@bs$26c4wEs^@%c%pn%2u&?likLUoX;2@LS6Du9wioWrmZKEUWOVp^s=glo zRHzZ7Q?TGZ-a3geiAm>dz=DR^;XPzrp!3bRkukfJoCnPXqLyWn(%UOS#5kTOdmz7oyK zgIJ0A_M1qSHU0?ITsEClAG}-OM^W^i0Y!2efy*a|*q$|hA7bH6ChSg&4DLY58Cy8x zLKSb!kSVBW%<&g$XY`Iho-xJMCTbh;LKcRz7^~j|M^WUmi1$!29#(Ubw7)HeFa(6R z*YZYr6}==4Uv29nGe?+AY^+nC%A#C|eIgNIYG$8-!+w?v?q?seSh-ycQ4`Z$AjQQ- zl?p4XGqzRz>CIhbU=+0ws=hi6^;j@oSed*x(PWDPQx4fnE*4bQ;JIf%9qtN^y*-b;2am?b;~xz#b}xMijkcNK zIsaF%@2!99peH|I>-a&azix2e-d&&&isqPDdSG|r1l*Ancycjuk07_0wlVu``>#7I z@Gwg=eMuT7@irCgQ5kD8?{bD11pr*yXmEG({)!QbXH-VM92uL{Nebe~6B-qN>rO8c z!^L#$i7NcbLgV?B`AaE z;RHQye&gGuxhSVi3PHO8Ep}*KcFqe8mz)34mt&%1yaBzAVSD zlK`5pg-R-uK2x`bxbOmi7++^RF8*@P3j!7^d+pn>E*rYyZuEee+mR5rjv@^?C z5_;yBvjZHASUeu3ezSNYZG@tnCSc{bKuEDb@_tPa(EFz{^AcXcdo)3e{UnZFEt(^bz5LhUF@KEqmvGz}z%9ktuh66ip% zLYgMXUkFXhkGIjH3F3#&B;xGTyb)G4@_R)&2EB-90!M$MB#R_~57>@B|3)}osZ~DE zl20Pg9i5E;7Hp-rbwulm`h$5j((xqNqgWgY z%_qPyc1Ir&R?hG(!a3N7hR<9TODHeJaRI+A-Y!XLS-S6m<4ZC;e=U{ov{i@-(@zIf z>@B=(I_Gcz-{ zU1nycHZwCbGcz+YGeeu1nVG5WHZwn;?`THv&bylTZ+=Xvv=tSl%$=FqRa%iNR%C@- z6@-K`zpTTqg;8LUElzNLMFzZ#(@wvEiCPAQ1*PopJU{ug*p1uRZqT?qc@kF_^n5?c zsIY9)s<}5zLPlWF3TS?2U{+lblzGMR_E>>8HfEq0HVjF9kf(QCZ8zYi(no|wNtnBdlC@q@Qc zg{Wyp$L@x6TEvY|yut*+VnnhU<^e4-cn>3a)AOvAv{4u1FmORPX~QxbV)}FM_l5_u zEPdMTU0z3?WsLy%CpmsbMUMnOMODHlk`G6=uP`BUk5zA4nF7QRCJfnByc3R{B!e9= zQ61_#0EipIp8(p3CraQIDq%0{paGU(yPmzJ38%%0=Mg%&mq*96j-Mw?{M4xjiIxbH zgNnS~%m8LHa~yaR{8#21(gqAnLUxfG+>-(9ql3>FcYDQhV5Qu}yU0zVaV2Q=JcE*C zr5{VF3q}e+k*{zemAod>dxTyi*jbB@*dF`5IEy2?S0|XPvnHS#yi|sPeHlhz{CqaP z==rwY`J-XYT0E;6;Q5+!ltMpNv_*5v=G6sXw8g5Wp~ghD0m^k1X?u&XtvKO_8L5a7 zm;!ayNqD6^i5HsYAA$83k*J`_%{F{l8KPVRVe*)jFPgrfkJxcuwX6f}HbN9#ht?V7 z!awvn2N;Z@ummi|u*?>z>$4AUIb0Z|GNga>WVRew3-b*8Ffa7f8*EbFCYxt%RIZf; z!gQB3$O|CXUM8|zh&GUaOvmh2@!(?v*i*)^mO@0D)r|HpLsK0P#9ni#(Sy6S+z~_w z**PuRp{$S2F<~PuI19F;iZ7swIPr39piD%-2<+g%Ox#_=6=shUudzk z{%XVU70X)LBvljMyJ*jOs-Wa?mN|C5uA(-BJlcq}NOyYlRmk^?MaZZ1~ zjU{f}#U3%DCFDb$lSd`M&FxV^OB|F?@7W_e?M_BCUt(X+s>zx5MzIyQN%e!*0y9u>7J%tSrP0av0E=;LuniS1@SP=J~G) zT7F0fA$Iw6^b$i_m*5Sj?!!@dz&z_E-uZyAM3c_FJd}7!APb$-cEZ{*rJ7HSaZc_f zcS9?1`=%iv=lYO--%lz0(rnOmlI5Kk?_`!g<><(3JWEc7T#ObLzt5w?y_~_3Ac_Z| zeDgssJv6~_feF_V2ll`+cx&GzP!3-%gqN-AS2mVMA?1z0i*XuH`tT4WJ@)5*jiPiP zT$NJi^AW291Z;mv;Gyr9o7EB*tJ|2JvA=j`v#v`SN6i#@%)w73NyA_M01R^;+3uOW zFRQ=CAnJxi*h(0Wxh0MW*I1#Gf>dfBaNGkE`Aut_z z;zi56W=|?xV*Dnj{upAw@UYtAa{Ce2 zd0)En0&dVtC1^3IBCA=i_H+H|dUk~cpseI~)7RkAN=1A^E1f3u#UDNzD;I7@bMxm< z2^FUI0#ovabW-P5{UU&TE!7Ila)0^-!o|`8Afb=M7Dv>;>&B2nz8<~5dEX#Pjd_>7 z0SKawPv0*6hrXUak}*L<-~kYL>4><;>Aa~PFuD88CEsMT2>B@Kl1m-Hc$5e#r2KiW z+5u9>V`aCPaI4Upw5^=VAVIq>v->^WerPEfT*Wxv@i9eAS>wkWl~-6|`2sB=B8&6m z`^%pI7g_c|7h44z=h_ZC1jUwL7aZbt)Zo$#pZFK{{rN^+{8$LqIXnu2TMy$&Syn%Y zSzwSxq1L=2to*8J>3Lf*JkwD>0%S0Jtg}qA5jAMb46Hb2<9B?V-|zeIuyFWH%C??J zm2Og4Xc|*AUTAYL5a~yq|HLq*SO)gFe8-7}EC4|!^w{nx6fe_u{R2*bV2sM6O`}!( zv*h@ZaLVhW199u75Ua&}1ZL`DWGa^FJRgjD-=HbmnZMf~Wp;al=@y;0P8XI@8|p>` zopG34LiTe`w4GEYH)>tU?}zt+l%qyZV4>byv%!T?l?+FB z@RmWikX@)Mi!{%lzzm2}qFqJ@nVI@voGOGO`$3y@8=B+3ipRIiA{VhrvGZ!T4=W<| zJRSB}nv9hHtOR{sawY0=Ub&Cftf|azH z01#ia*aoK2%|;QEq(ZryEoEZL#c4d(<3S7yU2PfIqI=ZpN@-bnLKF-h<;!BNqSuFE3T+v(!Vg|4W?q9 zD+{SuLqnU!cNFnqbkPTnC6SuAi9Dt5;q2iAnlS#*Ss9zLl=MLj(c*GAqcx=5r4Xc_ zbNBiEOeI}_aE!<0I$cpkOWm9lUA~_AQoeMg$YKiL*mqRU0CO@auND%Daq`muVOn}j zLyv`ll+X<-a^r4Pz-(G5lwh*E&vLx7t^79Nktp>K!tS3w0fy04eZOC)SjH4LAc=Zf z4W|W<(|>C1^rUNwweMI3Q)`U?1%Efw@uEIsZvMQHin}Ctby5tZ>3(Y-1NKHFEmTf^ z!XcZ*YK-paWiZsuv-Vrl z0WC%8Gx!#92(6{PAnzF!$7hI-(RhkD*w{((aipAF^e<-pVAU;dLBr zXeH%sSILhBMvYJ9ZQeXQWh(WMP|A-%5%8E7e5@v*iJza}bxEJ4)a7e*y zipU$_kBYcg*jWmy-GDWT&W&V}X<1jQzq>&lU#-w!NbrLvsSE__Lx7^n*t1}xjB9fk zMygJX6WICMAOA2$xF2He)vtQ?OVE(RCm30fV@`orrxW$}0+zcc+p#83WyPlty=SOv zFWfJO(gc2DhuBw?sYl0X=n0+ zDfaE0?z9mb%%UbcTui({K?d6t>q{}HOw@;~(m26Y(Q+bb=<277PUJc6-!3!TPm-l7 zg(5J|JdFR8S4=c;eNs^57+EFfzX`!pPiv&0XLpav#Zt@Cr4Jiea_5miqoZcWDd%uI z0dn&*@&EzJS z>8NI;&5b7V;%UjtqkG$!H}^NZYT4YBS{+p_l$t7|`(}9llDAfG{;Q>gr6|vEHTic9 z27YP`PDyP#tC5yED_fhvR%ht%>2CN3Wb$d8UtF_EWi}^$I zWka9y;#{h`-z@2C&i8En2GW%4UUJpT&!NnY}Qq96;$=$<;}s!vtJO+ z8OPbl@;1mHOKf6kA+4p)(^g$zzBZ9U9X%O#3H*()t?iQBAZDXJ}NRj~PeURJ^&!?{PXaEkd-oD;|8MtjK(d4go|z(dBuQKm>{fPWui1LFgExtUcVl)GD|R!WOPagVS8mDMmmSio{nvhi)HLIk z?AfQC_yEwop@#SA_u%o|32TZDd;Jp<+Cbvt?d{{E7U8*kcQ}!Z9A?-VuKW(!+k9gK zBuEJW(CM0Nzx|SyLhYtXbDApvTu{$O@z8Gd&>4SxTt#`kJx-<B<0HL|4nGk|@P?o1chC>m_w_!Qr|7$>Gub23T`A9ho(vwW58lzSq~C zNVXB<>qPF`W*PQxTm_V%?v>9O1d}o5J&PQbmh~{5Ko9aB#~Gg=6m&IRYB}C@*8m|N zDsC-ZT{n}f(g^4w36xe;hq3j#wxP+hdny#wYAxIh>^w-h(H`s{S2TVqUZ1e7`_g4p zqggw`T(Gmv=mI^vEWM0&X!MpkQU|abk#Y$Kc^Ec=ojz)j1k1NQvy#ZRLl4BST?}-% zl7oBC@fn>(U5CPD5}NP*q19+I5CAkVfnZD%=F-`6oaK>0jcW0=dY<&H_^c+LA&b{{ zEX7q$M%%lXKoPKJ{nBb)`fjD@RMdXCbIv*BQ8aq|FdDVRpaIPrX420LTT#wsV4F-vueORpSYNS3L_MpZ+ZW}wP0k`kbX z(~2Q~CAJ#epHhH>k3RdGf(DzC;*15j*o>RXW?)L-g5LIf*{VM=A3Q9f0fuwv$(Uu< z_hEIr=?lh<5vf{qbUPYuVG=wkX*uoGD*9NNDXynxHs*>0I6=W2fzECXTccyY5}Si? zUSMTkt&u%71f(|KpB#v6K0SY*tsDvJ%0z#JqGX)lQ!};I4rQv@HLhiC=d+1?NE}8& zo8h^G07G8$|L}rfq4vM1Q;%j%#B6}7Q>`Wl37n&u)b`?RLuRCz;yr#(;-?HopF__n zjiv5BH7BTFjh43|a;2uG!=KWvCl!dtPnniOGfV)PPe|E)=xdsvrH>()`uQ0&Mohwr zRzuq`J~Ou76kKeRlVUZw8TWhHqMX>2O-lJ0x7ZL}ls-&NT}`RU`z;4gdXHjB{pE$+ zmbGPtpKwYUk#b;mCqxNK8X`qbV%BL8InR0iDZy=uT%%)dZp$XOJ;X>H8>z$57CLZnG_59*{;?v3aGuSH$j?=VQtMFv)#z=-7~^8Sz)B|PiA!)gQ<`SEsOsE7 zQ=m&KqcVAL)+-y9*PNo57gNb;GA|{}Sy4j`Dr^M*@w=g9cPn%WGWUU=rBlBk&STKW zChc2sVd6&Po`;gDUa!bNxM`}|Aa`UFiF+sr0y~2`8~D7p!QZf0PQ6FEd>C7vtEjHE z7?IOh5GB6lopqJ@XN}q0iry+d%z??r*sroT5_$$^py=je2O6qyiFK2%^X?LwOlO&v zo+Hpxl#45FKJ9nnTtcl-5itpRX3}dA&!S+(jOj)%;~YZ=RdN)*n-7L8ni8AhUUoiw zHl#JOTAdLB1VKoPUH9Q*dkb5}Aau`OZx3sVxfuFRq_%V}Aciz`oDp0av>quEBQ*p7 zJ&*l0>X3?GwJ%0r`FNAte{&IxPtuHvTUi1$GU@vT2kl@g5}(7ZT}6r-{N<#)I-ypt zqVAD%V97>?xsp0nXf@kxAZl?iNO#RF$0Uo8nnp*509ZSxTR)BL~Np9cgqD{ zeYqeV0o5X0D@rYQGi|EjkPoQ*&|9OItzM7E>j!nP`a~2L5!(SUhz7QM#aAE3PV%_q zig}%<=U-+-YJi$HchsbX>XOX;*6#=M#bEAze@>+=H$OY%6<3TW&v(FdgqN?kW?PFH zH*BTFo_wc?FWhHapb);CClprq6`7Miv@`Xo={Ju&#PQ|N*JyVkl;CcEL9mBhx?Mu# z6^#s>8hP=H>x9mGpZw3h&I2SHq#sPd#Ujtjtzw7(P75#?2VO40oOR7i%;g! zP(16aQWkS;dy`A>+>T|nEU!eg^PEG3Gb8qRB%<6*TmxIKNp(*1mhAi;@=Ub$&TsX= zbA5UAz^gT}BvnF-N|tk7aJ*%LuC@p+3EdS^-gYHba0^P5pf83bw?~{7AbE_Fkc(CC z0&*m4KLJTGx&yigmO2UJ@LHKuSuZj4tCmaY8RQ4rX z|M?aN7c$%R;V$LZ*VSIP-<4Zf2ha4~h(Ee& zR0u2-99QWv=|?lYtoL87TzI+Fz)zml`QIs{D1&8aQxl+N^}Fa?j*T=~o+!xnO-u1? z{QdiolAQ{AdQ$N7o~WUQl6sWQNnKj+_6B*`kSD#NkzS3L^DbQj%VX7*E0HXpm|*FO zme)sAC4F_a!`5vVGpfJe`eZuwXowanT9+|0pP1*M{vwE9z9L9UQoh^IlL2=?e*elJ z>$Q|>FAuq$%2zHTf&+8VpACYiuF)0@d}eL%oU}8R92qyf-47vE`>uSy|`G1`2vG1Nq)3=EVXGc7V_w8-S$~&|MUda~2aA z$n^;+#`gXv#!eBzH>eQD64IVQ>zsGn^1it!Uq6d@tx8Q?STHPV4`U9&(Gwm(N-RY1 z`OnW@UGv$m+dd+1JT?R)6d#rWsr{`(0lBqAgXm3e5$o-b-@$2g$!8K3|NRSw=Y`Sg zpSiy9mz$S*uoMCj0!dm)TIo7muG~2AWzw7Ov4V}x+B8{q>0FNJ&fe>ES8VtFSPVCC zh(HWRuU`jD*MsJYX_W<>b!Y(NM+uw)+A`nLKq!KTQoSFd4_|obd|3Kwkc#Ch{UpVr zX%cuN5W9zV$ZUzFr8AKD*2Zi{%LgMEwmddfa5>$H$_ad>94q%jn(_k>#56_^Q~al& zg~yG)M|H2~XTDbO^1fBxe$Y9*d_TG-m#;hI@!FtSTT9Aon&0Vre%{UP=~88QG!1Ks z`GEfbEsA5I^qY+z?coUHFFAC_;f#ET=OK&hsq@ynW>xQkmDEXu`|?f>DfmLa2{{2@ zN6yc%Aj^4eFJcVTXANOedb14u3f>*GeRM0O6{-A8nSBvdHw8S%_N&v_SMq6|7aOSUJgJW5sxAY6gRPLygPOep5lVINO8B#o{Z0=AlbF1x zA{+DCZ7uwI+o5mt1ud1YWnHPfHdz%&k^gn9ar(}nrokDv_?rl8!um)>yd8Gk0-Q=p z*-Mq#M;N`5M4(&$md9v8#i#8;45gPxV)b0HNd?fqsWYnr&9qU8S9F4X{1CwL<&T{m zcoA1B>K+Fqw&WqG*3%_JCJf{PlYH&shj)8orcbInOO9=~DOibzn+w=|mW@b$&vdxz zXWi=wFM49J0@586w&+8HThQ=pW;l9o@h<`nmU4?;#67%UM%0=ujMWGY`r5`OXlA>_ z$;V45pBk)y8CXZXf~!Tl`bp_ij^{GbyHu0B!6n(=IWz|En)&QLt8EtmvwkF3j~j~( zv&_8oRLkL?xeLk$Q2#VRhbn)~1a<1iy^m#-NSfv&Mhs6cE(e?;=-p5|YuHV#beTM~ zz*&Mq+44&`l73*9=M;}3)NTXAHFLPp0rR1bdh8}|Q$VKPRfBzSwfRPFiBhhu4%2nw zF@K*=m#)Gy!hHuYyIW6dVe(`PTI=|nq0T_4S!d0;+V?!+t1!YEmM*qoQL3^re0Bxg z^y^jOw+ z(c8HQz*?${6K%<&Q44%uZ=DU?W8?h8CTUezx&{|s=0T(-xlR5XRZ?L?Jfs!msI5mD z6C%UH8a?E^gth;ow|N_ArHAes-L7j})OC$3&g!OvPs~YD(+#9{8B#is<--Pc+aSzt zHxLF!sUlbbO8RI71)g-<+p52^o4ga_EdyNzcknC)aYL{IuPYK(;L$hlq)_he!GdT2 z^$aMVA2V#_Ly9Qjs_L%DNR432*_QBxfHDxh_Wn9Gp@QImJFzUxZ4 z4OXJQejPNCVz%`09__x7B08FgHRXc2+-A!{wTd*P>#9Yrrrb{Ah$M;g%PJ)Q1P=&Sk{|% zjerwUd&6&y*S(T3!+DB9dnEmbHIa~F@_x2F+kS}A`@t&Kck4L3Hp_Tbji_r+v|BI6GBT(Aji)w*<_cUR4yea#32vHONYaxQ%-%^BT#${mOOJi(VCViwDYz{Fx zxc}YtA+GmN!u)$HPv$bxUK{?c1s2lwFOJ1+008ZbC|ER~71pvA7a4X9pG^y%qY2>I zitQ1JblXR=PbaMmRijgz4vzM@IyY4h_LY(A>XR&}NcNCMEm1*_N7vK5#uPM{h}|7o zBya?vs;cK)#2USPcZ+HwHL7GYoeoPE6G2dL{sS!w_o z+68kYwLT>ckl1c~LvXZ?56|xi!zi)64fjh3Q{mn7Jp}&(WfStzj=AaSOxEODFzNkz z@Re>x+tt_^uhQQALa}H*4A3hx``#4(5+#1#8LQ8iIRMF+!>k}vWHDqx|6=?K3^48b z#K_+zdY*O~7XPA#bA4bEC;lCa?K`oC1)YF|WzWAMw=)~DW&#^{mtp0A zM%&R|3R_}FAS3ugi@!I!NoTVFx~aq27dl@TC5&_51xfFgCs;{Vmtq=bd72`ek+OiB z6!`9#=L!!cvL>_k`Wj1?RbE0;b+JA<`-Q-$bXoD=<+T6LjCLVg8z*BMCr846lH3*k zld4WHr*CTfeR25q6S6Y=$FE@P^qu8S2%wiS{;pglXzQj4`1Z4~u@bT|v1`){IoR6$ z<78r`0}%e_!om#rHrW7-bO3F7K`Ucpqkq0A{vN14g(#ee4ieH$^w@3H^elb9j{A=|$<5>sUUUWotnCH6fywtp8> zOp)n(p8t4x|MU7Eih}=-o`8`R!0_M53I5-TfeUR-+f7z-TTQZ^jI zDRvnc3h}=`8vHgO+(iv(uq=@!5@8}fuHNtx93Mp1gR80P@VH1KI7#_(xMDNz$LLM7 zw3k8p=peF&^!wR;D!c%AUihPFd#Vy+PRQ~no+|L$Z~*W_7Hy&SZ81y^L8e`JLGG0M z=aaeJF{v?792to6zIa9=)CGM^Va}MfQ*2BzwC+=}y6;k@_}tz#InlhZF=8%bp(Ci5 zdI|D06Xj^n6Nzj)^YeWd_Cq()8@c0<(bO%bWKXvy@-Ly`s*GQ;bG9G#tcQ$YVVx+ZnHKR+Q|a+{cbF2yX2Ms0S`(lj#-c`It9(2dTLwlZ`@&A^!}B3YjAKfq0f>^8``P zP2M|lW3D&Pd>;~Mky066Aq{9rW<~`N*)V-@C|LfRiw5#^v%15sc8sb0>Jb*XIklsE(No-{7Ti9!m4i3>U z1ZbGuCJ{>ll?<6J>=3XW=W?7SgS`*wyug=i>^j(HuSw*mC;-_=U1hWP#CY&(F}u~b z&B6#kLay-~eaUJsH2o3MO$tYh6wsaNJ%x9wMj<{?o_n>r^4m4Cqh`R43`rGd^KBb}StF>?tKX9~p9K<(R4%uOq!qf^CK$AQ_OlJg95s6h1#c>!Z^3FSd zXUMLy)2KIR53I_GBWs2ViZM-O>_^siX0bSu^xYIR6d4bA`O5@ucCf@~{2s3RODg)@ zXuy*Hy7}gjyuqNpRhthTy-5^9IL&T;Ghs=vS!)fw1(%O<-a>0TW4T&d_1nNXajmMD zl74Lkm?w{g2hslU2=Vvh@g2DxIu$V1Ev3oZv=%D7Fnb*(vGwTZMXufPPqL~OiCdn zQbFgHo+stGzk!kA7DK<&?^>1?J&YYF*{3nyb#T@VZf{y~o5S(fXj}RXAS=&;p7ae2 zF)fpZ4BGDL{;owww-SgO1rRIZ_SM=N*Q^bB&D9NO8_PYrb1KaQ?dnXOky}ddQQF1p zVMsY@F2;XCY)On{eYXKKmZjBihh$UArh0n5@Xpdott*L)gO%P7ThaAyT4&Z;PvoO6kPP1GNLh z=o(n@`nX*Uw3c*U(^1(hc*|eULA%Q)=4_Pr-G9r{q-Ztwd*^*;-Y1C;L~NvRZBaMY z>Vje=4wD$YXV7G%R;+Bnb*?0F6u+Wj$x>*qhI${!*yvrn*@QiayI!&Hx6m)#kJ*a>2o+(OlWM#|DZaRZL#> zXj^LC-<1@azLra{DR?eJd&-n1S62ZuP1ZUgA7sc7&Gv=Z7L8$)@U%oHuAhPaYx&Sv zX2edq4o}UDld8-uQ?JjU8-N0LZE#UT_1I9rHq;XlBVjRNCwkU)xbq!#MDVK99lX1t6?g+sGQ9Ah z$e|Wkka+^WWwl!sup8$QelCsx7Tl}~2;qkhTy)Xm*um!j`6`E}f?64Rgd&HmNKgy%?f)rLL+Sm!R%OS*4!9cW?^B zq#?NZyix6wxzBaut#Dg1<)9voo22R8&$=C9rj_Z^>T;$U%6i8Xga9Om*O(91{2uAe z--dh7;%POFHCYikx+T8%{;`0ZW{?58(OSp;%nf<2d>DFf5) z^Bi-o5_U!|=EX1ZyXIdY=|!jAPChzIimcVN}U%FAsNe| zuL2^Yl&ZOv*Ju!ek^Oh&T}5*|>3w-Pc<+QR@t!HcinrHJ@1I}JnRH7^#H6lXGKt<+ z&J%qKl=oc%?wP=*-&h-#!LiOXEl4K*0(G#$^=A0<4l^8k_!$CNOhC}`CuY-9hy(@qN0Sm_ z;F;{WkV59U&C<>7nj2>g+cQp>gY)ySV8^hsD`6Q2x-d-jCf6d_d^w_MjwPZW$aoOI zRQN4TUhND!uDNh_X{3ej=T5Q_L9KEue!* zew}m+lq^9fc$J3v#Xd&_-(lAV92}@-kQ;*C9$_EvZPQ^cH1XqD6bIX)*yY)SpYnpc zEx?3@$2l`N6$BSQ1HxxO98o(&YEj(fT0kUilHa0;f)3!(x!6xe{?oThjV!P#1%vqUG;>51_m> zci7&C`$ZX;T5xvm11`8n+m7cAy3d}A{jFU-R5j?#{|4*-155u^ul`T0|1W6$N0$13 zCDvyl;TVXpA2BYn9Hd;sr*}^yOk9$5=0*&tM@c=ZL;dPR>q!=mDuw&U2bn3` zlz3exl4-pp=EzI~ri_?xl+omMWwDVwvcgGi6}C5~K70t@#@Rr5&!H0(tgL&4fY~!C3w8iRc z=u&(S4K1T<6;zd(`hTQPi=7B>nsm_Dj99B+CrJJ9pBcMJ@a?7U+6jI*&bCKAZFfSo zszS#GuvK@zVU>zdBSF77nQr~viNKh>ft7zlq!|aZ6pIr4ATs4M7!@OD_nfKmIiMYR z_FR@ZlC%55Eap!f^p_;ljOu6C=9>~rrFR~j#g`B3J(bGpZ-SIe`pZd%P^9CS=b`=@ z$LSd1$siH2+fdb^_5;A*8|-11A@?y6f~#95W@+(KUIg62!y;fQCE zrbUg#uJ3l!?6Do4&N6wY8UOe ziYY9kn-V{0J&s?3yt75sdtl*%o&Y3z?mR#5lSs^&%(}ng;=Or5g?D9ww`C!&nqYR~ z_(ClG#tvay!e?lrimt!t(w^95 z`_3#ruY-~gXIYt9{N%%=bIewN22}8hh!^E&ln*F8(~;~Qo=HoE@@=`|7|v1#`hMl5 zviie934yt}NgUI}1ZR6R3uqp;?Hg5wbZyyDv8)imC}L1N4sdM-_+PaNlZN+>KoOXa z5Y=W0qmmPn)*N#235!aK67{bMx6jutBq);9=o1=jL$#~YTLH0~0b(XC#-9{d1L<46 z2>0RX3aLdPiIJe%k=i0b;jrQdkmBd@yhj=f-1S2*?xYD|PuXbN1^ZkR$B_<)`!%C| zETe@%##XJt+nyq{Yoka2PAVV?#3aa;6lbym?~ztF{S7zjxYp_#4Ha#eCPxu5F%Q73_*sg?r~<^OWr!m1S=5=0 z{#|-Mv?N6U@xOo?sR>qp%7~AVS7K8{RU_yTSxy2AA$CYn zDgWm@=brZY7KQ)cMLkoN$&DDZl&s>Ms}(Gn@_5Q~P-I>LVuBlC!pf!n4D>96E~@&R zlqwC@dKmekgl;CtqF-IUZ&X)8EmqsJ4{BPe$|#aC{6hQ!PjQc8r|=eF73 z|ImhB%pf=@pDcc?i^-yz1htkfbEYgEG*@_T%YRjvwDUIxuOh3mCkee*x)*nyxXzWb zk`ejNlt=4u9VE3h;Ik)B0vRN@>AVJ$-nK%Q8p=Z-`69u%`DLgVqnT4)ur_-)IfcY$ zM3Nrs^<&T=5@F;SRlJ=f`uC1lcq_4y9XuodPAU4k?I~T*=|d`->a$aDxkJi_#R2U^ z-lq!_35uHt_XPvGh|{pgM+dY_DH?aEHjUj~3DFfQ3}qt@(k~g`?FabTo(dKYReX2) zpr4=?Tf1SqQaYz^OZtP!gKgf!d|!#4DsE9M@iSV~aHFmWt7vxU&n7~LIvQR-2s_2j z%m`LZ_q`*mD)zcytZO5X-EI2rX@cc3pCs6)hhy z+|=ve)H%}C5fY=IZau0T4>%$2Zf=($|K6^_6G}4Ls}f;6sBh&caq!-F0@){s(_DbO zbMKRaz4t-xAByIV%r8#&sxC55SlMKISLl$SA43DN;`jBA9fQLERJzf5h0|nG$rptW z7K;g*uJF=p7eUpR5_9Y89gGY{X-hr+L)V4;JF_hD2$^uft(p1)_IP{-C%LFk;Bg$N}Kvo1>T3Mfx82rQudYkQ2J5Oo198K zE|o=LS1?@%x(Zh9_P%Q8RtbY94X9kxj>8|=tT^$*sfm`4fVN;0mC2tb zKA(jDuoz+~gGg+dL`JK2au=#eZoi;ymn*0_eq4RxywNuhHcTmuHo~{1lhbo z<(P4ybj3vOjujcy(<7ZITU`)VPh2du%@)qn4P>%xl_y9!#hv%vszA)r5vd{o@imMb zZ7Kd8g!7>OT_~M<%~6tD*LeIBkfS-3Dek(3X4>d4{sAT4a=9F44h55i^HJ5~(+ynX zS3>2eXqrx>Z??!Eq2W0qs2ni;2*x=WOa9Q@Z+^Uv{v+XZT!Vy~>s4=)v($QgFZr#J zYe|As)~v0$J5A{_3#m&}M1SSW;^Rvq`gIf_2F~Q8p)XqfELR?&3{TD-U-&!u79Z9? z?tjGh;(_*W)gBxxcFe5BiR5>%Ag)$gF#Bs zv=A3&>Q~nu-G>_kl-K&%N3H9PrmA$N91k!KqN@JDn^#ELBSt{lwW>69pl*_C|u$HVK*CZ;;J-TeO;-dvIN)Ys1 z0fNja`^D&W)aVf}`ickZi1Z~ze;o1|$tQsWg{S7iDEI#GnF?DV_~nD&^8%Kri*CM3 zByw-rryw+ho3*PuIAJbVOJ1Qb5#ErvxLd+RRoi*jdbO?f3Jt!@mtcOT9pmfnc>6h@ zT4tU{k+3~Bg!Q)a=1N~>Ja|xOMu#YE|FKkPMJia~7Aknj=H~4&wpP^FWTFsl=e*A= zsh9_L3dXMp0}>lcnPFhnzO9)C*77KmB>u~HSK@l4G^_r(dAHVmGHrK++JNE;>y4v> zY84#Ml#g+mm$7fn)8zrjl;cpO(KDpDhd>{m8CWw7TyKhj_ZS&ZJVDWrcb=$y5_5qu z&?#!qByG6?N36YnvL*0FYXWv4cCz za$^+qLDr=T%$3K&=IvIe{hS?pov#p#ZxNJ{GK9HdtWhFcU|}Gur*RCr2n@e5#MNnz zz+RjTOLx{FS3WbzR%T>zlRwiWH~fou$Ozh-PALjMYauG6%0S0#XTye5j<1hf*aWs& zfyj2BS_->SC#QXC_#+4&p*pZ`&h9%jm0T3h*#$`jOvhZc6wv*~4enG zrRTr|I4{i^ws-1wQ3j`$!pV(Xx3kW7JCg5e=!=PRQ~<=&k<)eAGXS{$FBLMmFaEe?H3Ec0&~TvqrZ*736ZX z*PzYTOCk{19JiGUx3vcB5dIh6EUGa>ys${oKIqWLlcz~alX0>A^WG$A+j>m1*7PMW zmn|3526LB{3PiCEwam(2MRu;vKKsm zQaUP@1uF35<>atrIyk#)El<^HSSIvRZ=oFjR-GEG(n2)=!*i=vZkx>Tg5NdBW-+oq z7}Q)U*bdlH|M|W{!G|zng;yeAQS@i*HdLTn2cfe2TK^aZXha_|B%e4zuYFSx36(i17(RpFIVyf3cSp~wrtd|wbC(%LK9<_`f$jJe0foLVrAI}RD zDDCf5_eqLBlJHHg=JjV@XnWD^D|OPXmLjR8>-d1}lH4r?{*&G*qL1;^a8>JVg|NX6 zu7c=orehv?L<36C*wf1$pNKdEnp-Qf7H5WQ4g_a-h3pI;v#x~!hf`RDXX2lp`<9eO z0lI1R76_L_Nhtyuy+Zeg$4GkJYEvN($keRAP)Mg_K78_y4%{R)YXv7_PBUm^o z(p~(|oVVm*M)?z25Apyhono7aW|$D;2rX@?#w(Q;TyQqW!QX1s6Pea6YF?;I?P_?C zty&>L4(c)!Yho$p-T5q$ReNojh;l$5bFrf_$7`NDKt#vHjuyv4nMuD$gdv#0*Jl-> zz?Fdt`+LtIS$80If2Yznw3BnN_wX%aQ|TJiG-5yNARpS#Ju|vHnDwN_K_JhQJ0_q- zRv4H@1)1wzr3?!o4`G5Fy`hWb$0ePivd+Qm{&wA?Irm0==^RZjGzuCKXDiQ+Qnn0{ zd$H=$NpfFKS{j!>$jilmi>hJ~9hIZW-b^6E%1@Io*I#8MnLiw)))x{#pP=h5!|BIl zCIF|~Af+T6L^pih<$j7lK#Xd{x#@4+j?&t1I@?6M@lcgiLR72C%)rHX;VmfX{ECP! zBSl)^MmjbxyO(PZGsyy977rS!Ce*Bj#?X+j-iHQ(c9WG>Nu6MMx9Bdj$ckPmn5JuV zKnp94gyt0PQe6|{W8e>Cu%yNJJc6#%o1SVxpD3tloG1u!BrC>Q&WZj764nQqxQ<_O zds)}Essn$niBx+pcnU3JXhkWEMbb^yt>RCPINaHpMSopNRbt>D;rw$PP0D;u!<)y| z;rJJ1#p?CisSdo?wLa6hIN-<8h3(wN8Kg+{sOSe!!LL?wn-F{)Gn^A#d9mN+nSqul z7M9-Ti0J@@{T3nzXGG<$cE2&sxudiy{mSiQIAH4WvfZ|yFz@a26Ht9%z?85~Ez7V3 z9&o5VZQ1&#}tKpUowrPZyE!F^f81_E9hRm$?&8B1y4m$Y1YOm~99G9y_F4 zIGG{fPzQ3RLsQAjM;ldJ$sI-ZZxGKk!#e*NV#-`Z(L*E(=RiaI%VE$PGonR%`BOiU z+Xy#_kmD1%h>C9!1D*(j4c^`MxTTxc<{p2mUjFwXvAU7LYV-}@QnROITcy=2m;Q0h z{!di*^>>R=)yBiarOeH1E~)lHrdiZ-VZ?E357Y@(Eg%$G$j?zFlZ^=73B;Q!hh!W5 zYMMb3HxCT^4apvvCt;$d8#P*T(jW!hKkZV`-pq$^I`{mM~)Sf8k-h4^Q5Hv^6!bNh{?W{YI07sg^@v1GD(UykbCbiWTDj?}P*%loR~ zyWaE!au;`Px_D0Bt2b#&sp&TN%t|f^-PDGi2}5GUZr`K%RH|s9ovpb0*g_GD z`sLjOW?q*Rf)&BgKh9p4D5yJ>BFy-B{Q9>>0os%fNl?5H+JYWWqmI+HOU{dgs!|>7T1Im;GtyVFQ^MJW@i8ejOoCS zw;HDC*3ozb=C~lyB$@GrNZj8JDTlu$K;seo`mu0V6FoeY!1oc34TQLc(IWFj$#)|# zBGZk$-xZ__YE-u)rhkkfj1IR;YdQkeqvppY#M6qAhbS2_G=l0#57Ce|GK^MZMP(NkzzVpZoATt9cWedn56B*s|Z~+<3=H_@iq1R=U5mwio_oS)= z)PTGm47ePaF$~h>SU$-Qsb``x*G6e=mn9bO0JOP-{Q$@sN~`-4ti2=?1MQ`wd_~+C z6J-jg_xTZOw>_dofnvLPgrsG4ynJkm$1ZP7Mr(%`Pxab26xtL5jHRa#6_UfIDV6Xj-ij^97reE^zxS;M# zJT6OvYe1UZ?`AMBbX{*#|I)^spY#G1d}00r0{O@E_3sGe-~3|#n-U1ej|uN*N&d0b z{TFb@KTG{Ta|Z|ef6g5mPCwl7qm8AD^AnRZ0sw^m zqPa5o`{}#GgfB3Wm@WxiVo5Y{s6WrNv*h-=KG9SsSJG}RDybb?EG|t++{-p%&imn0 zj1-V3ZiP@rAd?$m`O|yP^2_dgY5vT|zX0eM#O>E%OX-@PjOd&$R>80_?__$cG&x4p zdayudg|f72zC+^x-G}NSn`ic7T~z{`UaAN^%~k3Bm*0Dm9s|#+Ky;n3v~Fy-%z`aj zO8l2?^{_ffXz$yJpT**H{w<)JWD^Dq3&r~OuHsB%AH`>0&2|PspBq$hLj5oE!0rq`Hr*-(S{E)=_OL9z5l@<}P#1Z3f@9a?;M;JNb$W(hP*WSdHI&q#RnkHY!!a0{8)M>#zMx4#-eag*B8{16MVGw2QZSR0NW2c z&EFx2SH#3Y*Qvp?JrlbLa!{!DUG-572wcXFi)bL**O!J8wSO!(XsH`Jsjc?J?;>?r zfZD*m+leMT?t%7hPL?bdn2!?=%BUEqHoY|-HS%`p!XEx;F017yv8?l9srwKwpWzbL zeDqu4mdh2}R?S7!DaOgohj&xEmF^Hi&ONe{MI@pF;9tJ$7S6+$sbgHAwE8+`gj~jH zd>c2_lzMR0mzhrWg{^W?|7|_i{n;qgY?~@H`^e^|(VFzKCUiCblA|N4iEFKrcxb?3 z6`DnkIJHH*bDO*$=1viAU}S!7taA&aIplUFxBOuD>GC zc+bI?KpUPrOktD%_IDtzI}iwB_>@~7n}4~XL#6NCsD_B{$H=B*zCvjy(yQx)8nA~P zpZ_a+9exwF-0-f^d;~Lcp$6g3qJy0Gw8}+{_{f(fxi_6Xq(ek9{rbBRwz3gJQ%gD% zL~&pfk1$r5w3VQ=b~q!?W6IL>cem)5^3%4fI*XAU*%$FE&r;fO|!>KGY>u?Kg1zHGRK`dSMf5hUTP233#dU69w;* zuP>P7!QWsew2{AzVja|~3U!v7_`R)^0F#J6Trt-)mm&|5dpAr6Xaj_JAq!tLMmxl6 z>=}v8ESGLfhit+sO^)^>6}w+x48KL~<#0j=|LBPnV5`K)(7$X!TeBsM4$L%sU2#m{ zUB1v1^OR=`8O0W@LgA*-4kH&vNfG9=R0lkQ!{&OK@g~9;yCuA0X)v?p%KF%pOYWC` zPwv7%TX1u76(aL%ne3usImkdZ00MJ)^)%fHih7@mG;#h-g8r z5d*Ea9^6)$yM~1&9Los71-P#%2F>oI>?2N+ZoK49uwK_%>OyLW1?;Bze8xncc9c`4 znYfiuEP7ggwOcU%B&7*f@rzy(t|nH@!ziYNKG^6jrjUWxDA=8J zyr#sVt~}q$j{kU{v&hY?*0iPplR^~S<)d@mct&~0>I!6^UEQ9IGdQ$5QO%{yS;swo zx9&2NQ-nSFDy5bw90M{rEsbRY($*A1boH3G*n3U~Ou8iR zXd4+O?P2O+itIV&eIY#?Y;dyi*jNsve8`sA2rSo;$;~GnbD=t!Yi`aQ%wpC$9z6F& zF~>Yc*&uAq*~>s z2x5q(Xnf78+;5lG>UiK9l3iU7`39u|J#j{k7?8=zbUOog5vKOvv!gdeeCS1_8V zX;6du{%xNcDI9VGgCXKM;A>e|MBBYJ?4m#lrJ$ zv`l=l=nC+{Xw4U$K_Vm9#wAPwOgsSXWLo5xMvc3cwyjSF{AReANMcY5Ip4E%CW|F> zI=k7Qr}RQ{Xo9?6G(eZSi%qgIQ0?bsHxUN&Rrur_dh}^xYnxbSAIvdIzh#ugV(5~3 z5<7{RqOHJB1AJwgr$Zqv2tS&B5#Srh@~3ri`^g@gnTShL<1=_TQpDtx1TsFAriOvu zs7rQRq=G2_y}43fEe+A}0aVTXs_Xapr%GwDVa|ah!({j3xJ-@APFBLkoOE?}0*-E^ zZ_oShxUM1&E=eL}4FblFS8|W2dD1h-O}#64ZV!8k;ikR@Q;n#3DlvRQD!mAhuD>3> zx$Q*%5r7y|zbV&tB-{CcOpK(SH__7mYaA0nqM0ObQUtstFIxk<2hnicyGcOSRV*h( zFOuRHWiqne@H?I2bUs}|JL3As6~ZcU`Gp$yFAb7?qzZ-rSzwq+1!TiW1NUKm1weby zD8ifl`k-bk1B#m<1iK))E~uVTIbS&~df=OW{IYrEnPi4n-RwYyGCJS4t%Y`@+}HrU zC9fiXfTF~+d;PL|rP%u^V^Ah$aH36Ade=xX?y?2iX0m;RJb%&rAz2AAyH$kj1zBk{ z84X2?*fk~<&ZZ}WSTWApp`vNpJv#c$ z+aS6A>((+0(QO+0r+MCr6GRz?G;@EfbD$4=l70>Mu*lLUSa>1oR^y6r)BpnSqK>WZb zz5mY(vrM=f6gJP&j|UO2>uv1cJc#Fhmdl3b{{d(HW5@e2HpLs1|uR%{5i z)0hVUQQGG_4LTWIK) zD{l!;^ymCbP&si0aq8b)ASaZkM+l8gAonBigtEZ+@nvy)*M=ZAjS!n)SIAQ$CqR4= zt3><+KRLAi3$}20PM@wU9Zz$rGhJ15!jI>}O*Q0Vo@y}@A};Kj@<_*+qR#x_*0%w( zG5Hi1a`JmzS}RMN+Frx2QK?!08IyKlV%{%kT2*#yFD09&s!^Uz6cCuusv6-vR8vQ^ zx9L8#yjcPsT(Bz)qMv_HO(|qpA)Z_@%Y;&174C-5C`;9ipB6W35N#fIK959MoYSbA zz{NZc5la|4lzR*58M+2n+%(o3sE;b-8r#=ygUIP!n3jQ zmxn0YE~8uG4?c8}0sCCH+R}IzH6<$7Ftf^HS8L%SLDVFL*m1IvHkjyF>>yp%dZlH= z5N1wOhY?>!4jDaRoKI&Mx za5H**%))qap+4DHh?^w>_bdJlpl-k177d8|xl0=kG?kskn3vV%oD+DkHQ(U6b=+)M zE*m!D?@&JO2RGI}zS38p)d#JfX#iHmIa#8j9poEVC5Vl>rnuL=B2S6PQ__^bDGXrP z(-OJ9;BMyOe}DOkER<{1&?B9_R?R0^!Q*q^TQ@=Laz*fv}7b4GP6mDtU!zUX7ec!hLg-(+&5Dt^XG3BxXzwED7t z5Ud8IA%sLAQv@CcrXsbM4Fn~i3IU;m-?->z+t3K>s!C}S0!ni2oNTufoD(P2u{8%a z$T^0fU7av<41~|uXIQoxNwz3!qr9gcDsQqgpfsJ&B%O=9%2gt&R5ToQe>J)lYWGmN zBjz`YtPqy8m2z6HLpDFfD2t+-f7aKte85nFBkh?(>IBgzRv7`jkuDIN*(b9$xPZ2+ zUm#!lE^*rE_Wo?i3MB|E+Atf#p97p>ZNRJi`W!+rgKy6%vKnr+R4akv%_>Dvn^J+w zbIUlvj)s!+^rS#VTAA%Ysf#|vNKNBFW)IXQ9F4IlHi!BE3*FU4RY z4(mFM8s~WE)^2eYs2VAs6&bldpdaLVc!9?0pcZ8#pR5OMND7=Rzh3eWIYj#!#P`+{ zLUSqpI))7oTTD|l#5}(KZLPVb>wh(?5!OZGy#YGH}8I;z-vNP=9)mJk=@yEEDv<}P3~*=;mbnV zF!s+R9f3nC6|}p-i=GBklneHi)H~EpDuykt?uVuD%jG{fyhVt_aOeH_ORYe)_!AU$ zl7>6aOEf2yu2dufg@9c8Gg?fry#zu6DLOX153@FM=$Ip*e#{TNob?s4)46c$Lfwap zXWqxxQljYrL_0WgY1%nor4|*EKUC14wTXCE19@`ir+mPD!bP2S)^{c897FTPgfp{7cUs{rKjJ02w%s|50%00gT~{O0V3}qQ{wJpWL{g+{^Ij*N3WeF( zKRCn@&~U?JhxWz_26B+CN0UiLz)Ke8DeeXHMtf5Rwq?rj_!w*>B$dH4i9i?BlHN}< z71wIXJ#jdOlJ!1Xh(6cjs!(Uu{5 z2$q;YV^1Jww61qyVqh`hex4e0xEv*J>Z#qe3)`wgHuzN>$!g$gpH(?}Z*3MTLLWuD zFv_PUiT(O#@F&NnKweSDE8Z+mo}E^(Usi5Q&y3~8O=Xlx&P>Pm?rQmD9l*6bNj!It zXsu&yYkxI_R0wmi#(@v?7Udy!BvsCU=6UnXi=!P`C~XkEBZ37U(-;GUimV~56f84x zD!={sp>$^1`1iQQxH6uN1HOm=yJ*DNK>vDzmg#9>x@w!+IU$}IZ#*ic>W&uCE*b_m zV9sWqY1%b6Uel}wL>_%)5&JiDv+uPmc@Y+wagpJJQVWFF5^@DEopP5uTMyD{J6aa~ zAcGMwLM07!V;>T>lQ9tU;#-6AIZp86$0!h`)3KBmQ}iEx5Q1S5$9UD64(3FHyOQZn zm%=&tb?ayJkHmaj=PKTn+SOU7+r$NV`2vNqC*JBho?Epvx*CT^C=BbN-|*xHBYFcT znc>!J#p0HI*=$dXxNXDaLVAObx4~zC2bGqZ`%fbbZ$3Ktz~1IO7^POo=rUydS>D^_ zaC+6e>uH(mq%gLWU=^WLJua2nqu#42S$s|ooaZbBTW3j$kL?F4ht`;OP${^Gx@#M2 z;SZ)V7`V=I=C9rq#MHlJ6+|L~7X!&9FH}G}`9h-8QE&A5J|8aVnvU4g zUHi}nL`To96gB#bLm}@+IhgZ;s3J<4J}i}SE9KuML5DCrPI>$s9KAVN=vyxeWR>om zUrygHrj!~vFC&^?pU#LL=F-THkQor&62(6$?0qlrxoqYGw#}NhnzX(Tnv^IWL6b25F+S|+&4q;HQNGKM3X;E% z3m;xc5%^BfLKb*AD}E6dyHh3qXhR!ziqi$u1?`CHA7K!u_%ldWw!c&%KGZFp`!g#P zWCwr!OBsSZ*rw4yw-gIQDb@j3vcPF}$MD`%F;D09$WGOV)C`c2Eg;KGV0g{V`N5Sr z-|r=Z>x?p@>$pT%RAED*n#9k0{jPf@+54$tP@ZLQK}}TV)_NG5?s;*aGkf zOAAyj%kD_gZPtFYp^uY_EVf%xcJ5}_FHk9XooNzF;LYKrP|k%u5N-P)icp7aM- zC<@{2lCF&kWj7m%TDQ)qu}=RPn(9F4EJ??##_Q zr4L0LGxpZ+vlY16n=Ph?sc|n z+RdklS2BREbJ1*_Xu#A^45<4i<)YsUV+rCIzD5M|M? zpqUVE(8E>&b$vOpx!z+KW=p>nZ0(P!Q>)GguR*{dDI=zy%l%b5#J{E60^tJL(krsIcQ?p?0ST*PW( zfFRIEx(#~@lhKRq_EW;!yW!$pkTMKWP5ZF& zHw0y+2iaG1n+k16LE)DFE`I`tPc{aqRzcrySkh+U9GZ3w>sXJA$GSWs$(WecZyKasRr2>;mcJrt39 zE8rUDlBMoG)=8m`n_7oaoNM~&Q#zv7HZzjH4HL9H2ZVqddbdo)77;iD3Rzq{BF&1H zh1@B`UA&guTt0fLK=@QdAMM1tF%gc|vh0&;heXfxWqQb6ax6&jK!;%ELZwE@&wIS+ zmv)MeZdG1XBjXmveGMdHm)tF%xi3T2jbrClfceXDM? z6>{C=w1R9SF~z0UuCqZ;H4WdP)ti#4w~uWo8~3$5}oI1$PSs-x6W>33t|QW=VFJ4;UWM4US8T2zEFY zV~B%2!PD`8o9bnL_|5YRFTn?6nq>C9;JOKI4rp%?oNo*00U;`o`x!)K3(k0-O9i^h z4*@X18LpoT@$k(F;$eP8C;=Dw_OG_i?1|w%rs3&W*a6q`xqpH6W%Qy_mf+-OX+KG9 zc}avAohi7oWW|Xp^yQtgwYU;W2yIrsP+Qm2d9LQBRLje@j`YVv%>Buvj$+#p{rxIT z;D(ApEbm05N*TflELI^n?wbU%fLIdG3Guy&%DI7%60zfFzXlK@8#H+bPKNG{?gd@+ zwghBerQ>~nyx}c$o1<3;?|lt+C7&-U{`oH0bwZ`HK{TRDYo1-4qYXA`0-jT*D|qJ) zm5djUwUd!H(olpp+9oOBSvYu7{EhHBvYbL-iVR{XC5H{m!x8(Gv}P!P73H6wt@v?5 zzHy=C3b+X$8F3z!G@ve&gf|E|`WyUs99ZC=pM1HbbgkW7&-)N6FZuLj(K+NM3>%G& zTfwF+z*=S;%7&VhKw8+i6_$cZrwY64F?%=)r^ndsL>z52h4=jB!P3>(P>)}b*o34K z5}qp_EF+}8#sHr=5B@zSWqqL4#@RI)TUPsH*LOwSBLe;(Y?D*J6_OVl^z$wkCWIhJ z8U+u?NferaTC-5|@4uQ36#XkFN9kDMsu;Y1Y=dY_x$)1O(7M0r0Z*)u@>I*=%XSX~ z;?VS&AaCav+0gu<-F)%3wL-9jC2ltEB9+}HBq6Q?%1BhKaNU9AXSKNC%f%j^Y<=2Q z;B_+DrBmRlF!K&t!V&o(8@*JFvev|oBESW=jq5uS+wta^#w?FSvwNvCSI5H!rI?|r{mT8A{P zT_zwm49L+Nl=0M75-)|e#K!|TiPxTcviR#Mj-=H<_9;8r1%~mgTub4bvL>QJV&18n z{71;ALKEcE#^HkSWA}{!vtl!_h$Z+>Xqi?YBO&#Wa*1o#JEqu!(<+(Q2@MmKB<06% za61i4e@1V`>gB+tR#ebpB!ssq_0HQo()-VXw>fTSh&*n)o>EE=8i6x2<4ZkDIO{O$ zhd>bsEK`yB^_mR1By_gWxuzDGw;&sNY#Iry0#sMBxu-jn-D-+r69p%iuo)m1pl^%v zY!||qHOV0uiQ}2oys|)M)5bHU(=K`XTRf~|2Lce4WXFUZ!;##1MoEZth*d}5nmdIp zz5*5mZ@J79_{ZdpUEz)AgiC@--#r4U7zQ>1sB^IFD6^@?5zKYD| zOqDC#Q^nZmHaAmDT}Q`I6f(KS?YG4YXelmn?ic`EY=vN?=2FwNR%XSNyO0sEWEF6A8se4@dynf77Avv}nvz~Og zG5Wk-zHcQp_*WK@A?*In({1$Y_4z$7F@CFRxE&~}0l(LkVig0Auy@+5)uOjQ5tZbR zf>Y`u!X&7fDkvO|U{ej^3ozdi5-^4ndy1ZAw|W}dzuKuW-h{>nobmUe(U{t2Fo;ZG z5*;o#6vFE}wIS~$L@;u(2+DRW1zDP~@%Z`^;k4KwR6h~ZU&Y8f^6}C;_&5;rnLKvh zWHdb$1G&i9JZz-F{)nHTKA1k`Jl|w|e@n4o?a5{r34$q*Je`1S9@!usnUug-5^)Ip4ZS4{`kiMy7_c4;Cj#|3Jjg0SP+7#AZ^Sr>Y9;yfh10L11mjs?XTHy z&;=OAb_Z}K{NLhHyn`f<|A|MD+HaQ@Bz0u>jdfI_te0c@iAV8p&OYq9DTR4Pniet~ zm8WW3sv`>?TpVBvekR8yUQZf3(S^a2yIIZV|9eX2xM;ut41KXWQ}=L54v$ z%4@ZDxP+tR<(N%tqce#GGB{|NQ}pNN!y`94K# zjqHpqY|ZEd4V+B=`;Cl&k)oZAf$e{PAZ%f3YVs43_>)km#lc2r@J}WooiUxs&zXhJ z;^)XtXN}Lmz)a^z=Y-F|$Vlg@!^`{MG5{I=mtYVE26m4B2xaM{O>E7a%^C0+I2ah1 z=#*Rxo&O1L`R7d;g#O3akQpBcZKSmqJ_ch!g(4Gd@`%}C71p#;w1O1$&SF6vD z_b)%X%#7)6uhvhVvu&qaD=KU)_M~dDU zZL8D${pKn6`S;cLm15G?mfFYJ9T1LL8$QQ>bhNQghz1P>hfaJe9v}{&4o`F!nv4z& zjSdA72Zydt9uX829QAy?ySLf6dAVsJ_-s;?aWUxN63B)_fN05>RzD7eekQ4z4C$NV1ueHS?J6t_TM7!$G|GO7$y*xUf=2WSEs`gh~S z;BVDQ!=b~^m5s)?&c(O7os!32fJareODeo$>R0!pCr7fgfZ4llpSzQ-G9>$AdPYXi z@z1t~gz@oJ^TY*&0q21v*Q%`>D>prJ3T(P)gj%Fq#8jw0##D?rhFwxdBp9?4ctJyS z1(H@2ugIejt&y@}H)+w#ug8QLF)Q9qGs!H^^w11l29X<*o3OSxi@r`DozF6yP#5uQ z`?jO=STHW#>o-0`s|oB0*@?A8Jx-U)<+7!8+25Qr7s|^UwN9pIQg~b5*&hxK7)Gok z)CiFd(${GN7HRtd~NWW!0N{u*?)#FlSbum zH9OT&CC8+&irI`6H>fu#H+(mK*TU+Ex#`Tev|qi~^0_sgv$ks)wju54E~!4zN#iFC zTN}sH&mI5t?Y`S%$Fxr6x!x`MIKOi2EOq5wFqDc(!quLA<$8I|oTF@6dELGAIC=K9 zUK+71TIQr|cBZ*BJgZ15O zUBV}iG|wQ3Hmc>XDnA~j@KRYhXr6TKKmr@=A%GGPPGmX8PL z7wwAC;IMn|L1b(v|R$Q-_?Oj+Id4UiAR z!}}>%3C=dVn$OE$A-6EnO%<<-x1!zf-FYzKo7uy@ye!X2|Ka*@V|tc@@bPWAUShyN zHxeQB2$o0+-Q!AFLI+5ORK+9Gml)fB)2SYrlk$>!Cwygh%B*aTA%Pi4%3g=8d$y-o zb{MHCjciUw7%bur&F1U0^eG@ny|7JaR-!M13@X+tn7)D{{W5GCXrBL=SOn;Det#^y zuqqs3-U;?8a6r+XJV3y$Khc*94m_qF){#qK;3~;(wEu+F`O`LYel&HyW~LN(ejBH{>DP~xdg<#n!wz7Fs*$h>j18^B541cSJS8fSO)mq4*OS0A9n#M@*}{su2D{g7UUJqQphb!*fsgfc;b4ItW{YChxL^q|%O9oCUoA z-iG7jnah3vR~1C$hM!#ZJWHy6@3K`TD}mkdUvlkoImFFkWv~J`q}17y@hKQWXM64A z>@;MBt@#D}P&#zHz?T~QH}yBpt?Aqb&OCqRk5n$&66g|O8t-ueISm0WS$F)NW@;&p z%pXe^$~}^HETlb6rG8=69u6`X$C?Mr&*~I5F4!DPK+hFu8z5oU1{}1h47J;vbsKl5 z%Q-YFLB(1U2vBi@VP2kMitHwILP1X5Noj9$FUB{t=zJ78jz-+mh(fmq&TzmFlFg3^ zE%|uLUv8UoQhCwEM#R^MrfD(v6#?q4Ugx70w%}?)B_4^|gH<#-pNDG8k25CwgA!e7 zGeZEHKazMq&PbhurXKn6=WLtGXr#{?=MYRf=_98v5|>d!<&N*C^a<$9`MsgT`DO3< z4Tryd%R*0ZjPP~OGS@Zf(y&i&fWtX?LfRr2eSB($J!NkYVYX-yvU!MF2knaG|CWHy zc6T}bPS8xU^2|crk!!3^XQ5j2v@ihtZp8Pa4Xa5017Qp(yYCDrjr)iF^J~9{`Tfaq z;#-NWgg@FKfq@bCC?x#g(@Z<2bRrLIY&v&cPLekyBOCA8WrA6*?!13)bY!_c?L}43 zcswsboiE{|w))|Ahw+X;=+vXDecI|Pc8u)wt}2kLyMWtWNh4m)Y9JvqEvhpBD%d&{ z7#&*m0{y!?XP(T+E8lkfkxJ~mnAf+HJ#FHJ=(Jk62%&XJDbJ&9mSJ7bR{pjE==$Ei zYx&M@d;Pg5l_1a34aVNA9#8Ous_BY-Zn|^!xzOE>80z^d2FCaO<)o*zCo3ByWkv|7 zjRbwPu_0x$=Aq?)+^pboysz$FOCnZsLv(sEJN{Ds90@8A7{BL%h3iKe*Rf&%PP zd5z(a;*5|bkEpZE;qiqHkG1pWwb)8(-Mwm9kH4yZpIFR5(DQ8rQHSg*niHsd+0 zvI9X+Yg^N#5lCQ)Gvw>E9z_Kc=zYm^o0_v05%Kq$4(b?_2nGDM_kR`6^@_)vHXaw- zcgN%mx`xVrLZQ4(l(d(C>fj_`XUER9?Zzn%0mFlaFR3EU z2~weCueMyBk7~iM>TtHjQt5SNanFxeMfsYVS5NPcPq}PjL35?w0PZNKn~E4QX3;zs zh)5}SmL6T?N1YXYaBtcVmMx@azj)$Qhms?J z;#oOVzSK%zMxKT{3bBQB9ZV!GuFCWzfpWFfC(gB)o*SNBHM>|gKthVmExO7kiv&~g zfxH>;?1L4@4x&%pUG!%eenz9m;6dRbnn$$77Z#`~hYLVHCsRQE8fF4lDbM0;i#{W^ zbndQT^3{&3K<7gyZ_(zfk&g&rm?hQkw=zmV)ys?)*{F+Y@E;H5=Xs7Pr1n0*6nP`l z)ulf%6;RV%;|_w}hT&#W@e=~ZX^{L7bGHY56%PjIUiW7ZNP(54N0rPfELYu6HrNLi z)W>);_~kwe^wSOFjvi#pm3SC^lo(2fr;e?)38U2s;1v>ihFiy^o(}*F?A+~!Lrnn8 zK{3i?uFbTKmkieaoW=c{sT2&Am`vgU^p*tunydq)sr-@?u2r$+L~Ud)l?Jg{Tr7!# z25=R3OI2A?j#I{jT2i~^9;nY8Vb$Szet04}&2iHh;f0d=Kn2Cy)_xN?$f)PIq#N=E zB9Tj@uTl=S2?3(%>{R;QvEhV@&|)hwkY%qHaDvQ=cDe>9&nPhG^~4Rt>$b84A2S3A zEoRZ(MHkVH$}CpYnQuhd6dz9^v!_k@sxnBq2F%ncDr*`=Nk4(*8*5o5wA(N~1Wicy z$KoRNCLR!YagYQgwsia&uIcla^+-71cO^)F9qL>if|l6>#&JPtSpb0PJc}$=w`@Wy zlSjz`Qjiy&JZA;)egV?JPRR_Cd&QHF4gIsTsg)!A{=8;@e;LwBpEjggL+u>mk!nwf zEmP~NSdXeTHp7~YzVUq89C%{pN9BMx=2fN$7bqmdm17qV*TS8;zoc7p|a zRd>FLQ&h--pNcEN-g7@;PC(Bgg!6#dd)OnWzd%O&Xt^CAl>Ddi{ytz*>)cEEjc~~d z<1`Id}DnMrJ;*RyFvlesB{A2=nUs&?Pnn zZQmk5ebluwRXbSKQ0KvOwxyTx1ha_ ztBH=2UcJFw5HdzMfw0k0dhx5`R&h&-ch2fkvhrnq12}`(bVy;uSL0w7=8Bb3(&037 zMFXQTByunZdO2c_JeR<1+2qnV_{f~ZTBITQZ!*5$Uh>d$N=Jy-+zJ?mZ= z-0?O%3bX{P)qFp6cS$)Y1+rq_ai3>7t-XLwJn_avjo+n{xmZ$^jsk&87Jk)+^}{ty zO4Hm#z7vhQKMi`>U|IR=vHv*+g*0llJ*%)Ts;@L40o8gPh+a&5QAb>P-Jv~;-)=ZRSWtSynSc;?bTp}k^{T1T7QscdH{_IOisQ3e93<8 zhk@^Fu6X16#4gP{t#iQv{h1U;5sJoeMY4b51*36RB(KQmcnxHPKew94(>W?H0L@G1 zPB$d{d+!4mP zS$o`7DS({2MRYm$hqDI$a^NCBI4f4@W`Gh-0gA~J{pTMX=@cJ&$$K7x%2ipBQcSB2s}Q9%hSS~P;V>CN6V8bB!90W zG7zWU1ube1CbJb}RNFF_mv+=&ji0bpA{@T@vRZBK_<6d^bNd)5 z4A(w1R`@b3A!bkqb}z9<>y@)5W4T)$OuvM^T-v5f9A&gYGcokGD^%wTLm_AyK!{Q| z@ZPSmfD z#9AZ-yDM>n)`d)@Yl(AbV-ay~gmPU{>zl7_Z(Zzfv^E@#OE3lViE)rVkx@6*2)h5=~S%M0TCTnFuh~l z!GxeI(UvwIzoR2K%5a3%d}N`M~a>0A9(sHQ7&0J1?8jB?fTwWt-LWE-F*bj?K8X? zL`0VsM}RqkVR+(>3!}{kG!HRoGZ?skkdYRb__D4O}K!3vI@2^+!Bgt)?TvTXR;CJ4kE}I4es!7@x^cl>2z}p!iFj zPc~SIDq@TaLFhh?+VGdJfe<_9E!cqd&Ju5scFiD?zM3p z8vTC1&S=v$G^3kcD#i(=vbI{vuSn-XB5iaK3t-KnJA%i+Ps(O(Xetg(XOJCaHZyJa zl3=w^UI3t7{Fbv`8ezt0aVxlcW5L%b^ID5x;)|wUx7hPiaKaotgX)GxwNve%4 z3$&_GPhu5=`mM)*k+RaW3JC)T*tQkWD} zm!97xfl8~eG@2-M2)Chesa$WY@D0Y5^dA=!3Jq$6N+c^Ne$4#iQ{C?YqO?LLDC;iQgdiubshQ96G9y!*RpXv?aqOmgBPGn-sRcJK!sG+>y`AV|v}eE+Eg7`_uDD1OO)ZcLA&)A7B;)~K68 ze0o8Z;EFaeWnBx}%uGF31rx_q(}XZX|1Htz9%W=az#rMwT6R&f`%p{bzXC}HV=g# z;WY`#0Zu%W`yqxbh~Ii)`)l*g4@w-}i+s)T+${o9K%$!j>Sy;45ycKxbq~=Pq`kE z&!v7cnKdPx=*=Bbf7VH8Q{>p;ui=3cOXe9ZjX2%6r^T zrWKXXob6oq;dO8u_NV3DvWjOjq+6~(a*#ucY*JP|hOG!(EODAR;W+!H3qWdR2bdq4|YNB9al{!wld=s(J zUC}RN2m9F~19rG~<=#w558!_8eNPJ3=vlpA4*CK|*udp;27&2LA=5g+wD?W!JK5cy+ z4J|DVjShNBbAqqtmc*lwLzNP$Me>Pm#DEGr@5wRz?~o z2NGU>q_~5j#60+Mx7}_!CANyKrd)ab)^c(l0tOxuW*XPAwsGSJj?D%?TRHUSss+4! z+$$PDW9sD`M4;9f zR@oVFCL(2*nGRnMJ#w9~L0F!H%-B1$iFj#wSuJ~zD){F6Z%P_zIspCS~&Z&6}P=p2RE{6u7kI79g) zM>xcVnI7W2MC8Gu%9|?aF!-`(H!=~&@x|olW+Du3U%@a5j6@u<{Z29t1v4U{VHt1N zb9wx{(3mVGwWh`rv>Re5iQcJ0(x#8a?c{S9;jN1IedYv{#uS?H+O*iHLL^9qtyPgV z?^^eOWfH1n%|k+qbT>|rG|OoJ;YN`tAL72i7xhhP;8Zw}hM6?2kRiUjTTub!?-9~r zVw-1~DCdZg09ie`6%sfh5JoAFwKP`XI~Z6M_TrAir7&HR9%oculB|4MbD?5fR=V1bjMM4`aO$-*2<`b;$~O5TlLqKpQ7<5$Gih%eqp&VY85zsRN5?& zLyTLK+x?Z5C0AAF=mX7pu~9eY&`0{t!8%CDc=+AZ$#rnoQLwUw^`Qw;CW(>BxzV33 zM?;3FncEtnyN4L0h5dxB@bWY*i1X zzVfW$^9Fb}26{eTRMOyz zx8nA?KDRc0dEF(zcQ?c`+0}kSI!>8DHcwgg+Kv^e&cSII^KnwmSi)({zgjQYRA*z3 zzQQE`Ic;kS3#HI9JF7K&F%PnBR8`vBv?`&sKFpglvRdwj1T-|Bj?^8?GGZ8dKEbtU z6<0gt`T9nCdNe70%Pt3?4vzOR8td{~?$1`tBx*uqnH6}ICk^OKG0R6Rw*mfXB*F`@ zPUI`GUU^Z#GIU!_2cEMZWB9>(F~UC4?}`yBFQfg+6S@9)e(rlPs_ofpFscibO%uHN z>Zjd~u*IrrkF01eEzPXxB>_wZb(sAA{jA7!|8YWfoUPk!uaecbCN-cKTgH=I5Z!oEb{(+udrt@{65Az%E)aT@Dc{$o70bx-rF% zpWCAuDExp_75x)GLPa{&k6~)5!-F<;&_ilL+^xndO>Wc+`)#S&)IftM;ZiM}qxsVM z%!2qHFrk5fI5*p2Z6*)TA=bMRxWYz?HJG0QnA*xAYcjOpSS5~dyB6A^#?tg+iH&XN zY#V}|>2(sL29ZpUMMuGd!$-oQu~ei7P2PX1^c` zCGqH8*~s{W|`SuY9?Vd(wmXbFzx(+elZ=T9eak`Bl+7FHEvLl=Em zeKq)&y8z7>O~t{ad;n(W)s~HAhtF2K-88<5!yVWMP2B7<@OpR4ZJ-5q?^^+sL7&Jz$YEL|SrC zQ0~hhTX?asKj6m48C8KilFz~~!W88CxqMKY)Q)|VpB&S!6NB0$Il!1?20!L8JeM<9 zg~BzHpNeto3*)GIc6snUZ{29D4g+>@@%HC||RCB<<7^93BlXw#D3jLyH zi*Zj~+E|PYh1Py1d#S!;SiEL%x=0P>cEisjwv;RRv9-399{=oC2E7uJE4wUb1()xl z@rp#|U-I-Pl}fCSN;HrdwI7X|y5XJL*v7!lK*9f@WQ9;d&kFGhU`l;8 z`K$_RIiFf|BR_s{3V;8swyy+L3gG0)xsBrVDMepgd)ItFN^0bHpqig{xku4zxF#6` zSis%D&s4qYZOENZDaBeXV?z_W)UtOpYVD1uQ`NLkCZ+P2QaEn!g5~rAOiqRcaWmID zG_YuemYB_HG>)bJbpSVD7;MbM3AArPx-Ozpc@VNj%Z$37@SMOaA_dx4eZgUc@~4hx zmES#EUwbOe0k3?9Vj1McJQ41PEq^82&0F(RY2aTZFbcR`@ z-yRVd_LoF${1)XCfhE#sg1EbG-_4bqbOEf^j9w+^Ju@lJ7F%p!u`S?LT)KbOW`;kM z`@Q;DV(6CUUVYP{*HE)iU4y!sleb3sZs&H?Zl~)2T|*BojMjxli&sv;m`CP!f+{Qn zRNIY=y;vJMDdMI=VLE}(>N6dww*A zFMy}3T1}`z3(Xag2EW0iFY>ulv{VybFe`7WIaZY`%s=j`U+N-I-O6jDcS4>vFJej5 zL#d^+G$Er0mC#?X#-AQ`@>?pviRRi)67rb&58aF_*NhM5Es5{VasqRU*17ncMQ*n7YY?)K&#Gb#b8W<4~>EcO8i=p>x{K?$%d;v z;WkXID-*mcmpP5=HoAvTQ{Lrn-iXlz%*?4qLRoXLpHhD8@hjy|4BBchNw&bWu%d6j zE`e?WRH55GHF1X1g{I>qfpW;En9Tf<}P#wAJ?;ZICAomRLuR1NNK3 z#oN~20`^3F3r1DJ4m>@CUz09_>5PC8c=X9V%9nS5G3V_=K0*9u^7T!1tdOkw>mtDY zu@E_2$7fMQvdt<-+L&RowiS)6I-81sF6<>H;g;>?;UpEXF8&m(Sp^1-B3EpG*6OOX zIP|qeMJi^t8at^3Tju83k^wvIGKHHAV>qRSuemd4!)Yo|AMlY3Z?PTNdKp>oWOKjT z&OBt!GA6JZWq}s*+Wd+#1A`yy-Bp23{ng-)f91rTy!^o@e!iL9 zf9a!R@bt%YPuP~mjp!ys2j$&ouxp6&nTLnYhSVozo!TyB&c|Kp>ed}v1ULDsmQrlr zs-#Z-vsjsf@GGHgn@BQ%5Kx}uF>2>aqZg@DHusZ{R?2?|{Tv>OkJK-gWvv<%Y5{TG z@Plpn^I4T3Qn8Qoj)u+y;VOTkFYbr@yoz_?Z&6e;BfrS{Rny zDyG6YFeZ726rI(~!6Q@5zO@NaE1?0*!CT%Ey>~UHCF=c9TF}F5i2PGp@Js{;o{eoT zq$BroV;cfh&k2BfYIZU>*^Lf#i}4Gm9iAMHRU%#R z^6m3)73LpWRGO|$7`UGnB$}{BxXsAIz$~bccUucW+{I9mcg-fOG)#oHJo^jWM0rv6 zC6#7+qf0`NQG!;fiz*!bSamekE!g&^#*g|e_qas+0Ve%f83nuAodQf4lpnSE8HP}w zEPPk@oI!+ASoF&N^190|w}-SQ4|tX zvH70GA1c?I^R@GKE0=yWAoJ+-1q8pW8}_T2i$OL**l3M= z?n(l*!N>+2W7~9vwQ8|KwMqRmLaLg(+g4U($TG=)V!|0A#?IUvw&sZ2j23OHk6eIY z8r2mt40TyPZO>4#Z#skGs6;I>Wd%7Y^4U5~mEyab3C{5vOxIsgTEtUvJ}a#B1!snO z6!fo>^#4@4{GFs1wXt>-HgYhuH?wuLv8Vg%t*Du$5flF3@pr|)cL)mFxN6cc(sSU` zFn+J^W?TYX_rWat4-kqL%t5 z4)`3bbV`m!Rx0@H%ztl)D!7MnVFb6;5oq&U(k+mZ}+jlbm zuVedbn}&gnl}^G@-_p!bz}m#p=z9m_|CH7Lry%7&6sin=p`#W51-|UR2?~G#pZ%|E z`F)8P@!9`jd`WgEPMnc{M?VE@Bfp5{OL!vRFZnyUg`?Ph1p}5-2UhA8E0HC^dqd0H-Y|GA+ ziNQKChewvF%|g^uC7L-P(97PX>duVUi8qqEBPKDDM_e$urN+{Rt`9wo^$LA_Cl#nK zWeV;Y3|~#s`MKtJe-Azak})Y(IuKX)y}%j%Re}KfB6)LOSa5=4wt?^hgQ(-sexeo(~Bl^v6%p zvMu+Hh@-R-Qsct<1J~C_Kz&>Yt)e(QO4wH&`m?cSPB!XtW8!IWPhC$_e}fUh#k~$@Bh~{?R$Ja`oy#u`qC!rc-xhaX!dE$(6Wk;8%mWBlP1? zJoSMfNG}4Ql9oi>`fvwOjKQ2M;QBS>-%$a>8MNWSJ44jWRFuGOh7N}qBOZWX4qVY4 z?i0ypgEeOhYHkng+nXTbxlkB_tKIu_~rV^^f*+iT{| zrRvV=tDRQs^CBv!UqErBXiEYh4F^u8DQ%2t6x%?6&x{uLk?T8c6lGLJe5g^mgEg3l zW%Eah{6ZjCxdcN)0hC~{SV^QjwsCH-r{{qXJ7U7Fbi7ylzvSb7l)k4@&B)o-6i%#Y zRp;!1yH{}65xx6?c6ThlH3layCQZqX6&X*q(mdQMR-2wXrK$JLSth4NCSqMI%DfUv z^o3q%su*HNSW2wJfU&M13i!jo8|#H{W{AYmarX5==bRZ&8duQQ6ujd=cyYyXr|y_U zX5gh?L}}*rI0Eq3LI9jg^}2&MU%F57>Ul1X2Ay}>v3^eRLlVy8G1b}Z2IluNlFXi- zmQZgt0M`t2WX?Q(5XCcn3mN0(MxJ;r-1^tkSsOoa4a&^7CEW;S*Zf(a~PNV zbwXs7Nu&y%y-uR$VYmb7!lB1=m9z#3F&+kfl9Ov+ql` zI5txdATWJONqe}r-cu{wId^$jq^xxKh-olkd}0)2?~aXnUPKR-sX8(3W}WzK2fq&Y+LLwX$841OTIgvdKUbgU&%HKCl|F z6fD2_r&RO&q0#NUzrr#wFn0?HVT-G_6KX8=;C`)(Z}n*RqZlh_9apy&>%lVtr`|>) zop@x=Fy^Au^!x~kz8Zcc%ZW;FYm%H0_bT`0oKYOJ|Kd4yhJFh^4UsiV6SYQij<(}?$$Jp2Q>m;~TW1xZJM#5)j9hBd1qAY6^ zpA*39)Y~J`05J8*RW8*9pNu9 zyXKjCvWj_Q>iE5*Q(=fpf)kMrTEwfzDoWV8Rzw1wn|@bDTR`O2WghyNmMM-D)QYQ2$=A&f-0cDy6u?-s0vcx$7;*Mt~0mNqcAr%)t_L_#Q8hDy8mpfos{KZRbT?B6t z#{!hE7K>I5U@a9%M?`@hecb~x|CBMGio%Sg<_g(sZsjS~)S022^4<&TuGKk35q59$ z@+o+i#Uc#rECEHa`Ye@$Ekx=|0ko(~7-DC3%I8VyGHJ6|kX>KQyy|1S!}5&0xr+=W zpXEDa5$T2_qrts_;&f8l*dd~ytM_+qp~`DsEVl#zsQ_nzuua!IJh1PRzvaS*WjFsE z7()-|0}J<63NUwLMJ>!CYhR^UYfPFNtNqFDWyvtS%NbfczTL{MPB^qe&0honh_q2fzkGU9=MIq0b3%Q_y_*GKR2 zY_CVIXvsIYPPX0D#e6P;h8W_#{T?zv!t3;;@cXSWtKcAxR`hiz^A{e(p{%;z^f0x^ z2=`$b+44{;NgP4%5OZMgBak|Jr)6*w;gEF*IqU;hu}c|{^U{;lD6Qz$qKHY_$Yq(1 zHB_sQ(N@P|z0IXTJ&mvbX)m`&(=3zJ(MI{VRI->u zYPcyMf)~M{Ln@qCE+0qv{p5b>F>GsaeWtY_XEW)J2K{1x_iRO+1*@9Lanrw9C7EI>eLFKP8a$iB)6F=B7r9O zBpuDKau{2Lb_469^JPAs4BKQj^u_%Ja(U{(Pw{ArDgY)3D3eS6Z96m&bIe+4HV3FN zJ(Eph_>mPk?wc*2Oa@dwly{0445W9Ay!g44$d7bwGkZN6&Pi|m%uXZ!`jqpDtIUZU z>hKNvnoqkxh7z{gLaV>14Q-m#1P50I#YbZ9 zzdQ%G zhA?_V@y;?jdfdZF!{UgtC!bdE^o`h?hpB;!E6i0n4YmOXA%D|&k2hsKFI|&ehcUf@ z$9slp4>+z<%mcFyc)He4;XgWFD=m?-hM+)eP*N0{!H1|I8t5@CmT>;ISIVp)w4XS% zv#CVm+Zr^$EY#KQGjL9mjsgg2z~A%d*+^{A?h|j^FaHik*M@Oa56F{6#wc|7F2{i9UwmpH%68D+?GnSeX8| zFfh$;ZzbxtKZgB5NQ#!woxP)7z_;S!FRF2L;02JgLS)Ie4w4Wj&V29V;Vlb8F&>9( zhSofn--2t`)|GZEb1hTfI%F#fbV8FXrL=F` ztSkTKEzADd5k!9WG`*)kd<+TS=TSe0CxRk>0u>n>yZxw=Wbg3QEq?w85ImWb=d}y} zlBXtn)z#bPK29=yytjXKA}QJXvC9yTkAg~i)%DJ-K=In-@6t=(4x2QAY4U5KPXn;# z4*L@-(uWKz?RLk{+lR2vO6vQWnW?e5x$3jiWbRvc?X?Q2jmqRk1kN_7J{~@WEKC=v zO4RxE2r1qABsu_jCOA<^EM8Mh~k`||Z`>vHqTCc@O zV+oOkhSf&PVx+SSzD>8=syl!DB629cGoHO-sHX~r`nqhTCl#ggludF6DdnWE8${J9 z(;`k0C1ow8mDzUXwK#K$^2g-rwSDTmb5BeUfy?9wEY}J(cf}SBr*z~A$F-!!Q$4k- zlo7Z|ao9t)=nmVA6E1DXc`XcLmFssav5kwU&*V|eIbZn_mHK(I26Gk+iQ*XJc@GSN zz44e^@?3J5E=%>Ncj(&d`li0x{jg@8jtX<^B zox1Cjd8myx?Uf&)Dp^0mJsh!tz9*0`6A{`OU0@5ov+)dn2H3Zks{qh07ZA@ZQCU%P z2CwVV3HTndZ3yr8@QcYMT_BoGrXDf%7(?ILfu>}SV>j6_!BDDB(+km#AlUap@vlV) z1y6Bimi$w6Vq014fND?b6&?evSJkiA zd{%W4G2Z6{0mR<1+FYX7IS$D#zT%p*Vs01ET2;IH;K*XqV-?U}6IZuI{zK?QOn{Oi z{&)4$ z5xY1uxNsMPIx>{`<8Z>HE+Apa-ZPgA;eNjDbLU^jtE@O5o!MV-oZB5U=8xMigV~aw zKaVm@G#6d3Jq<~%tQ^g(gwji8d1_DYrZKlNyiR62@1H>i`n`uNTR2)A;iS8ASI|={ zB)~`g8=s|k9AKV$kfdUcHrZqWXa!7-H)vL06#Kxz#Jjv;1)lbca zyRX>IJ&w<7u$T-+7d*XY#US@k3DZpsQRkR}CF8tx+yr_W2?`@5n{oI$dp81wGvHM$nXLl@+O)oob0;qy3H3_SpU#xl0wrME`vq*g5c7I_uC)x zUfc}fc7Z?(Tr?aD5Kc`GMo7C;xIAV;;b=O)s~w<3GR?}-rzxNG%r3yYJ;EsWg06jH z5H;MuQeTz<$jEPxEt$Uu4FJ zC%j)bfk>`=A$}FQlGL{EW5Vw%g_eYZqB~869+d(9eTE(MbQ(2{A{RNdg|>0Xt|B@rc#0NwFa)qDa#OSBq+{E~BMq2ERfV|e` z3+e&Dpeq~0vN=QYB?ZLL!!h&$XGY?Qyl&?*596JtNtr4Lb< z6hLLVxa+n`j*ITjO-)v>vP)q|g8S>~x<@Lf{=SnkJKjPNy2nyK7X<(bnl;v7iNU)PmJ9x2|Dn&JQV}& z7>oFpm>H&_^R-u0^h*8A8CDGUA$*s3!?$iel2W!GOcmRPrgsy4g&ULE8XaI@m;r!o z*DW2T8pEA?fDGyJs^c40{<-RAclnNXU_@B{FQ!?He~BXg7Z5AsUvSp{#?!3-dl2h? zt-0^-@&8Xk2_^=ne+94kpZPQw+L{h)O^Du0)!p~GLJ!N#v>mw##)DxSYZ9|@hzElVQ{xPCX>-f9{O~Do?GYPr5n8fc?fd6NX%Nm#JJc#a z_MTVw69)FD!Xh!cgecS#L4Lkam6M_&-3#0W^P+fpm+5a~ro+N9_ghF*>yDF>ZAp?Y zTQbamg&1=h$3eaeM+8o&__D8UgM0mWjK)2>|6blPaaJZ1QKo;vXfn5gmvEORa{VWy z1ePG2|BW&{z>j~Ft%D6Z1ky4M}0m&Ty11p4j0gE+-tIxuq0dVxCJkeGVIzt`5}cKYb{V2 z{!IZs2v{U@;qHR6S~Qt{96y|66^?DUNQP~0uipa8S+hZk(bTYgNb;2%);|>oN_U2i zl`F&bfwMaNG+1FNPFwtZOrHN!5jOU#UKVg_$cc#a+6cQh3R+MCm$ILCH%O5ao?M93I|)Px=WBze5cszH!MX;q)37wpP(*!~ZA1|X zmU#375*?v&$YMG3x)nN47xG!I+=XI1KwpNrw+)Hv=9}66fi1nDhf4*8${C}{pHA-q zR1vd}@fS5PSZ)V2_+q~3Pnn)bsXI4-{Ny$dpQ4=15 zKLTLp^QCSm$&G#jj-gNQ{wj%e0rX{+*08>-r6^F$#S2IG@QMB6E1xJrUwN|l4Zdq< zbro>dLckpMuC~exe0|Y5P@)K(=!#tEbbIR?OvV}iWcHl&)b|riXDmFp^6YS#L5%)D z7+>_BXCr9|dCB$@%5`jhI-}{*ErCnLN_FWacp*Y)XjZz>B`_dqTmBd(XkZ{1dp2Cz z3G|OfeVzug^30};)A5V*lK5d!la6~6_FD(kEwhee#IGnlRrt%6V~#hl`KVv9EPh)>!zc9^BRs%UQIrTVRRV5EpFfkE1DB zE&cTz9CKYbz;-Te+ef0)FFpVIrSnslNk-;2qbi;!p~tHqsV2UL5wr1?qyo}yO>zhO zx2344%RxUZ9Wogq+9(hbxAR*8)pT1-r1CSf0L(&YenFr^Fv9hm<;8OdsVliDHOpah z0FJ7K1W5cAB=v?5{O!N;lu=K@O$_w2Q@xNK#IBm=G`z#O9b|zCJRbx+pHVI&d1FCS z<-j(_YGPBl(adLT_RM{4Hf=;q1UXG_F)L@;J%Md`_qcwXjRQt&p)#VktIh32p%3?A{}! zV^z`bL6}jrDUvzTCxldRgXGU&JTWW&fNaU1;?-6a(XQlo+ z(;FJ+(T$+d^oI_09fue5CUoR6zE;d4gajro{Q%A9q~LY5K4~Um+Fm|LGtjIYa`lMg zn;L2}HH~L-<+-G2&R@2N-D;4nW%V?VYs1ut4Vpxl6oD^8LPsKRYh~C=!M5*#UWh-eABP?G(xzl&l(`>u%M+5tY-%*5dVTz=Hf(!E}OH_Y360)3uo>Jy4t3 zP{*%?+Nz&^2yWWLTOJq(p>j~kNLhpSgWS9{OUlC;l6U3^&#cB4uAK6A=P9FvP-7(4 zr`J4uyOxIUQOHNlb3VJAeLQYEll}3>98H}4wdC>e7p~;;Ay9epfpOW`N7`j;!$g z74>H=-zb*1?un{m#z3pd$`2fBQ-SnGkkTNGOh1kBu?DkP)VdW=6nCcm;1=+x;;U`L zWK#?2@?iqJ=ye3Aj?%f=>C0E5M~4G_b0iuK%$(+tbR(Xm)pk&$>gDpyMrhI|>GjtZ zx6STdtYnm{h%C@1sdjv3Nw#E8FPVr2rdARRc1J1xjG@dE5@^K!^XfzQhL~*Pk4df0 zho%iHLncTSw*(|z=fjwO9Bx*a{)vxq;DB_Bb^#ieqLfiI#fShvZmBdl;RV81Mu&2t z1WDa(%&@06bZ3vqxrFEzSk4zQl}{$Zz=0wH&XnpCVS8O!XQRW4S?&VVo+o!dJav8m zX0UE;n+V2y(IulO!%3dD6YD0Lk2Q5|v@%6j+LO6jyj}i4r^9|e`()vl z7D=QSK}W8wfkN%`T$z~|o|Vak80mT2v5^4ylpLW&{e3T;!~6&?2t9;2ux9~!ZGg+r zG}yvrD>jQ0V@)DEbTh)mZ^G{=12J4NY*g&B&w?uY28g22wqznVx*@;@TNeqAiz>m_ z8JU)tbl`7T716Q!b)CiN=6oP{r9$~Ph>ouCG>0j`6kD|9I6TwqX+S)4c&cCOt3?}j zo^%Mp0m5YQP;MW;!rY}e21AEc9(P@XNuGa8$vUC-l-yzt@H9S)4btmO?b!S_{ z%?VGkx;W0Z!nrTB^>$Sd6+}5+_XQsp@dI+`jM+@s-bcoyCJ$lSSnkY$!jXme;)&9! z2>rqSQgj&N1Es$1D0-#2+I+S^t#9vt||83?_E{dW^6HN?moamKrb4K@D z^P5f@6c~XHkmG{gn{vH5UCa_x*j+!1y90fHLy zmohuK)+j&I#>M!`qL`P!2QpKyE>kKoIx$MDLrRZS_)2!`m$&qlb9JYSGPabA3KnwC zeb<7kyFytM5`2<`1F;G{57h7W)U~p6m`&l{eqJ`^W&+yackpSfKWCfXx&q>zu|4x9 ztX<1kkz8=FaWTQY`%K}LMJ0cVU+x4XPfs?vC@CbZvj`(((NF`9QsZ}PEA?YB$;=K3 zCovl>Ez9z;wK3QW15=4AL2Squaa5(3NYkLSvH#V2cafjyeWgO4_m{?zY(YU!jKV6wS(^d zxc(`Fbj8WeeFx5V&iA(a+w115la7}33(yfp?C@XJgny-M{@0rDFN)`Xp%XxX#y8&On@IcbsON-bXIM(2|v?EF2A$L6dH<@ana(+ zGv}8+TUXezZG+LA^(tI*tI-ht;NW9)SMF0oeM(W)xi^o!?NT9rKuNiBjL>8~uZ1s;8OI84a@+SuJoZ5CG}B{G4EHKfb~ckD^0RN9PI|NE%(kVft_|ZHBG-ZZCzc-pv7(5FSz4V6#~Er zl)ycMSib#dU*oZMI5!nlVipkJ>7`mAS9s?_vci7z`e=vV(;I*GFk~JaM^_`+PpFu? zZ&9uY|L$)z+ev#~?6??O5ze$wPz93gc+wv<3zc)-#QM|z>gW-6JcuaN28Cx}*(R!a zh;rbR5Y1@w&D)WiKvfueX1@m%gCeT|z0WF~x^oN4Osv_Q57l{WkmaK!mr^G4mQ@t& zd+&#$Xu70pbcp=PIq~y~9qcRe+x)JEvTb&+`2*dslp)n9IG)Ijgd{tD^R`EfmXG3CHuJ=|%?`8V&`xL_e!Nj>GU5Zp@u zGOE{db{QgU6sg+OEtf0-fA+1ZCp;t~;ly$UjG436Q?@@o6kx628>witbr_y?PC_}H zvY0$}aS<|GIoTuIiW>!l9%v6w52Sqdu;f)VEBN|{7hYhkY>0u@4~y!|V6}>j>2^$o zUQ@IFqD31VVGY>9M8G05g?%QrL~+MztqU&OWsb-{8VUHuO3+(joAV-gmbNm+6}Opt zu2H#9hVx-8W*#S)i~$W8LXRz!I;-7)gOtw6*o31|<1!Mx9*4fUkCNY~o#(fdv3a+a zcn=QP>9pAff7!8FdVFRd8XGsI5vASHYOJ0A+^oTAu5dNfQ++LMLnRA`OEuhFG8 zmC`B3Vl=dsQ}hr3Y_36TMn=J?pnL?ke{UOycw9?(%UA_dnkVN^ddjP)B${E@uFua4 z3% zjV9%cii{;%5o}(}yY$l$ONZ@(nd4FzLQ{yrq14>7<|fyl0RMJl1t?#qj|ekyD=C#B z3r5rM=S(o^^8&;WLM;zo6VlSe_~(U7|`!143|-aU(?q5@H2}9kGH8S@?x*>Z=HFBXSjIm zS+!ygo5d&laYT7HA2F~_78zif)uuUOZrzXd{L^2T3mFmbDR#+!JYR6_N4Ag?j2x`> zG2_3kKX|?H+!AqF+Qp8(0u;p3LOR5RFKb2io z8(A-*elT%2X2L|o2$veCxcC#fwX*Jp!#V07B-kG%+{cbrcp@WQ znt~BBRkE1_kHNWiI}6#MBK$wzL~3Y;qz~`bl}ANm06ES<5wYK?D=m z7m8^b&}0lG;M<$wrYspUT?au@ttq) z3nNXFmbaoXEvK?QDtmrrMRvyg1``x6mdqX%hak~?&1G*#-L>Kzw-a8^OW5@w7y!>L zXhCh}lVI@eM6ZR{`>+BxJchYX#PVgyRh?DL7Xn{Tb(GfIQk1ib2$Ke}CuI_4bKJ(K zA%Z61HD$okqCs<)R`r&pPW5M}mw-#o!@!Wb>HzP#pS1CIL09daBRCWz01Ad=%3;~z zU0(w-&#LDP0g;>`8j$VwR9X$H0w*I<(+WBr`TQ%Q#`O zz=$%gTphtKU6B4InAk%@E+tbU9ctwoF_uH92DgoMC{yV?_yEAK&kJokk=Rd4lHiI)JxEx9Ri=PH!-z{I90H|AfZ>N8*I>A2IE}lGJ(=W#t?MUFc0bnOT;+tZ!am02zFv;zBLxnL- z2z!4gVP(Sb!a7o3TQs1uN}1mNHeg`K)Pw1!dW}ALW9=>g+y`X?*ljFY`a*}n?j^$@X~^o^`B{|0P&s*PqGzJZc8dD9uU+D zW>u>i=-~dnm`Z_mRp_dq;?&BHwjw`}mrg5`1&)?PZp_5b&Y&ZkNe-yp;gVF6vb(;J z2jPSD!OV{R67g|mgRA?;EgQ1ju&t%@WVc6w-JLD803j~&I^Y338?&d!-n$07`p8-V zX?&+szjKTZX-s^md6)N>Wi2$D8Y`Q)Rr2M!LErM6i?vonJ<5$8Eu@{wq*lo-fB2rf zm;lEYeLM0PoOMq}e)FznD+Lg9#+eW2r+qP}nw(ZPHXVsJao2!ogcJy;G(J>P}|G|m(#rdqY_kOKa z`SP8J>lR+u&I-NaJn%r8*7-)I?B)ScqI}svFWX-rK{9DLK0r9^1T~0NeilL6zih?G z4vU_ArY3R7nm97#*L&zF*sa;AdyaqlEW6aDZY63zYh{>l>?&1;Q=;7f&cC!->^C@GXXC<3OynDmSVJ_B2s zh%6}3=;xlE2=6kRp{}>`m6;&Fa_vR2?nL(J#g%nqr6D@V{OK(8MCuOlfg$)kw=x`r zfmIE|yWFTmE+2z2N`PfCOQ*Xcv_3FRqA+!&+iNR>)w;8(->9`YVPCL{bFh#$xFHn)v)x_g-sja?7Ohl zDn0_Me3y5sxjh#0#@Q!^hBtVE!@Z)|%}lLks*}lMP(;o6FM8Tx>R|Tv-|ecog#(J? z_QL8{eIxB!yK9VJf`jPlsx>YY_(IJXe`Cm?Snh3{70!Q&q#_JobX<;T(@f0RK(W4G z66)K=noUlCt0l6>PoO+l6}=l~4({-jG86y6Gt#3_4>Vxhp7KzWz;9A;e29m#LIUI> z6Q=9Igf`?k=L(_twNwL_)i1`hqLt>$BC=Q0FyjK9@gl|;oZqy-(`|(200F~l{@Rj^ zW<`B-6?z79kmc2pEpkVv#!Jc_Al(CMS!1-19l$wasVUbUp|}&X#%@vzq5=MRJ%mj_+r2q+-8ngu?3_x2?FL(^ga%k1c46c@r3-%e~mV9OmJ&1AI{Vbmn!dTJo5ws~Me zY-8+5y8HFXj5qTdFa zj5uat(HK#h^=>jJ}3IFsT+_NnXB(@nWMn00w?%>p=+EeB0S#L&K@s`SfJPZ~=# z!I|_XAEQ_IJd-p%%6cWar%taM88Jua6z>41WVbB5<-_UB!5hbO2c*x}uh&{Bj{B0w zE?~#T>Dekx47iIfSg%<){N50TK~K-up0pLVg6#*JBqnym($El^anY~{bUGiPc|E4* zo!-F@Yz5niqB5YtGi{7ULb1F-+YPlOH145F>Qhsd^w1}?nzBX=wZ(Oy9-x)k#}XyO zn9+gu!I_}@Cx-!ti5$sn^U6pC4czO%88AP}1`aM&Bcby8wense3jJM&Bf|Jp!z=hy zhcgTDNXF~}qfN2u(=mJOYvas3yZ2|!EVoILLzkZ8(x6wG*MCQN7Z=&ekfv$;Z zbG{;K>#b02yjE_|3;r8|yx zFK|i8CGp@Q)!{5=E~uIp@Kq;L4*#CPOiD2d1fN@5)?abrtR+CBC39`ItPB_`*D%PY zI5q{do)OY1?`uQBhT64}CA;NH=>;Km7W?j}nu)Q#grLGQ#+g`TV@TVUT;&+ctsusl zB}nVZ+;N*NG?dD6+Yy=Yij_r7bbHFzHIlWwsStA=OV}o_wl9SJySeBz;xSrys4nxh z5NTj&)9_>O%GPDoP4)gG)|1YKcyfc7N4oXuoh_;}$-&(}5DE$JyA+bav1s*7kzE|< zTVRiU*fSOE1eTS}x5=`B8fyK#Zf)696+m8X#edkQrbDchU`cPuF275Jfq3YAxPog# z;7Tlxy|z6Qc|((VmOZIc2&{luTyI{vk>$2Q=@APc2e6)=Va^JCcJfY0worJQYFV44 z0Jm(i)zkz23}U;_U0Qp|%8-=F-}l^qI{yYB?5FqeGxAfSfhVgmO+dmjIhYN5sz%Cf z{nq1_BrSHwrv`&G?3}GX$xlvRGTW^Da;N7aA<&5JsQ$`Y5M|6HR z29ML&yU2w4Yj87c79|f>;;0pTFem7EP7?h!z^la46%>u{TM%+cc1x?ZR?t+&;v2won zcs>0MAIUc2Oox<2KvCoXW#sX#A@+P6BxxK@+8c~sJZ$R1qKJf>prH5f-fVZ=0)tKr zcm;K+7%@Be+%6t?ml+mSNI6}+u0Mhi*h1>}yQOZODez_oV zg7PzkB$)hy(Xq$eF4Tk5gRTDb)-{m>3Z!s1A(4Y(jyF1F6sSlf3=l1T9DP8CkKqhx z9vi4PwuSUr5M-mj1miH{ci>InO+MteL$TL3-HWbEdhQQv?Qh);)?H-pEv3T@aMh19 z8Vfg_O7r{}C7indQ^}7TgL7aJ`N-BCizeG=KH}tlr}UZ)xI;Q+GBuCG+(2jajS&0Z z##gli$G$?ag5dj7Ti#7;1vzbm-xpBDQcvG|j!2&3^H1GFLGU*&!30pLQhFC*zZjd3 zQLp4r{k;8R)hW~ILr5_&Px?4kgEa&jkLo2)n|@}UhHQn!_BJP21Dp_+q)D=lx!!@M z0-f$>7Me@i0Wl33#-<2y6_>rw2T)@lrdi`qWE7ET>Hqpn^B8mn^P?a^m}5Ms#^fpX zB=TQe#e7cRod=EY0sgIxiEx)~`AZx&Z6LyksmETolSJmA2)%{V_lm4=zsig|oFqCU zFiHfxSY$#NMHS-s2%tM+tuw%Xx5H{F*QE)h>`owhXX%wu63G7j`$pKQuW~)_OLaeg zT@KIh@n1qf?ERBj`3Gv2`9Gs(|Ca>+zrH~G|EL-Lf23wP8UO3^`0uXl5u`sedJcsM zSal@*ZG&Ei&Lb^pL*>OINZb};Gmua`5p{xoN!k?d)b{b9~%R!Y55hhmXfl>T{tGcCC0bV)|$qGpGW^zT?Jh=xjCp3)X; zE8`!Z+jM0myO&gGn!Y|om48cj+VC>r&AeXTKkfuPo4b#o4|b2-4Ddvc@d6q%n-C1E?TWZ<>&pn#S-tl=43Hl0(t1mf)PS90EvJ=vH%n87{|y!B0JsjbQY*0!lNUVbLY08_h=UBAVm}L+0K4v#oM}^a5;} zS%=|EhqI~S-yDt?vf3ul_Pt@Jeb&d2;^#&X7oqIP+& zaDZBkJ_>4$3V5pu)hYfR72;cVQ7@TIqo8b#^SQrJP%d*>Y;^YqkiX1I=jkJ(!OuYv&NNG zc^U!*83UW~C>)`=fy25%ZX|QBYc5#;jCm4f&h)tnllJ2+BZ$u93*K0Jeym}}lobr( zDg*vU7ev+NjibRF&lgJ3mvqqe^nPIYLjqWAS5^HL9OOfv(aGQzTVr{{L(BQuYCff= zea|ANO8n)0ykb5}6qD4*hfT7@a-p5BZfqh@RxP?n4`FjHx<=$$z2yPS$*0ooB zfP*o$@3lSfpi}(Y@aKx`qy@&&OGe338i3fjkWt3tCT?DZ{*(f_TTmL<-;+J!Cws4l<}Cx;rv=mmjC zgp*dGGlZM`6g-@NtMji#30_e+#*^x0-xzJT??67o;q>K(HKMxw(RyigBYT7XG09j3 zDKa%+JG7vBanseXrK$S{f?5W6DYTh&PO0iL|F>X*=oK?8Z)1D9hmy&+1?uzLm@99W+ob z=8>?yDFCspj^lotW4)raAKDBzfEf5#qbc?pg9Qe5Ma-}gIqi^W%2=n9QNi$+JTz$0 zwz_95m06$Pp)$!1r?Ie&pUtD_L%(kIg%}5ed(YqFh+JZ!>*W?-Y@+KJ{UZiNhvA%; zE!N))fDpBfENE?p?V7OXjF{N4F0W<|M`<+vEF-R7(13Erdq3SyhnwxS5;O-y2`{eh zvrg~Xo9xca2bW$dulf!&tm!|EZby?tPG20p_AA_)mYuSCx^gyjU>5R=5v^vFN&~mZ- zsij4K)IyV-5Ije`M6~uu9Ql}2b=nx`I8Xu-ZL8e8TxVF6`K}xYU5&6vh25T+Ko7%f zAxE@_&pAR14xsN;l$WL^3|q`jiKAUn!c|J^;0fT4yCU!e+sThi6jmrzEdN!LwNv53QUUm~Z1l7($=s}y3G$B2cMCvB?~LOAhqwP;mn z>~*U$T}#`B$zr)<8c(4Vkt$p>(}W@C;c)FjGlU&%W=e3wtQ}62=H*3fD6r9z1UJ`= zgl1Dt#zHa-(wdaE$R8w-nTM$2L(yL?w7i0T`y3N#+U{SXV(3(gfRljKeel}%<59xG zhOiGzlFF?mO^1+Uw$tiZp&s=sN~?LbR= zt+odr>Gx#uMlF@YnR5OopoGV*$LGt`@yD~nsGn32tIJFYzl?5HmO^>9C-HF?2X9H- z`w&$ft}NM89SN!K>z;B;Sl_t8>Vm2z!`^x&i`)?)gw2C(pay&JTZ(%g52Dv$pl0B( z-Eq{J!)!Q{XfX%kwTCk#s_lA(f80MxhrOmhVB5 ziUhG{)ykGn!UV1ISTe-Qq7EciMw=oCC*wv2Z@+83K&}9*hx({7my78Gjm!BOT|Be%nj=lV4>k4`t^CK@JuD7 z8!Ay;62@}Y!e-amt;G;ASsX#pJWYrHg%3*-2v;FL36!)JjljM^<<>I`c?u=Ln=|qe z)}D%I$1N>t-nR>e{H}7~?vK}0mB$>`Du!dTKoi|jt!3Ow5Ax98S-K#zg%m(L8HBN2 zS7L|WfvbBzdZAzAUl}I2JoxLS(}nkiLzlm+`%mWRAJ}2$|BM~}A7zdhME{#nmj6Hz zGqbb)*C@-j)1o-?uNOV0(ZTGgVMD$r=wV?f0|To;`Zbl*3S$CP4_sL5adk(K$?dqrJ*JSU#v+74L4K{>xsla!sA|bH+G6%@=J~UbLFj& z$be=3NF{Z%^X>t4mBA=>iWq6l+ zFLdknM+QB{c}Ffh<-O%+Jzv+b`S^Qg!4DQa-*$?Y=oGti_Povo(yWK^OP|S8M6pm! zE_WeOvyj@?nqUUY*$-f&@O7o%auT*|BqnNnP+o^OUUhH0Ygb{!zTX}#&NSy6RQn2h zMOMc>{`$6H8hvd)99Y~b4ZIkVhZnv4u^T9enuV>~|W||l+TM{TQd7CQ~{>bN>^Yn}0 zYYV4nb93s`y1wrC)m(FG1mD#&R5ey?2KVpFGYkrum&(X`5t0RMz?}E4{%lvP4;^o2 zG|>+S&xc6&`PFc>DQmi#NK@*N(62e}u1EbeY+VzlkCCRG@yu~c&W+nCBkMJ!3b2Q!R~GVpC|d){>I?4t4w0SPjJj#cJ_mK zR?@*>xT3{KA-PempnRwSjpR^P+}9`Bv&VgT)qgeY(sDhv>!rCZ?^MppKEX3k2Qj3P zq4>-1+GDZKpy^nBs)EM~sxV-f$?YV=Tw-1uSGoRW7L2} z%mnfVtF<9952eq#7_f?ii78N)*V}KJHHHp*BKjd&`LoqZS%VMFgUwC@@TH8iOoiWJ z8meBO#d80-n#d+xP$tM^r4HpzpXCW|fhKTQ++ayqR_W`vUIJ1oyB^LENVsgMwc1FH z6R52K;%IxynC&mA&q^qt++N)5GonYr1s<)LxI(v>d7|6y7OsrMEli<<$@IoCNen2y zQFit8n{Hx;iL$^OYeX+eS!QcVY8HY?AYIbCSmX*2KXI^++{?h~q?{^L2dd!GuKm#!%=U`CkLi0iK zEG&=Q9Q{~8rzUEY!g>)lLT83?j9HIgW(OzdLHS3J_>rjkqr z*>|NhBG-_8>u!hWYOax8ucej_SO9OgRSWJSoLn!(2EqDps2aq>Ix<9j?wZ{bKEW-+ zn|=#DMnEfsG4a|7S5rg!$bu$TZWVN-L5h0DKLns5CDknQcUCn=eX4_+vFjpnF)J`w z>l!y6AgKKkm8^&+{(?DG=`2d@;)cB9l|36nke9fk|0GZ#9v(p`-cY&HerP={CIl>* z(!01&X7Wdr&Go&rJDs1MgzaQ|)T{A*Vjkk)iEh&2N+NvuujIFuy>orXj&-8eW$at4 zRMVHn;QMOgR=;IIddWxC{^I^AS~&9E|xqf{OxJHkZ&`ZuTGw^f>Pg zSBJ@tiPYp-z1)n;s8pDQI<|_5D{P#Oe!P6Q*lp+1gmO?pz_`4~PR-b`RFB+H61*yk zT(X=%8P3>IS@Z;iL^^J`Vu0|=kGaqZ&3}eTmn`bQHWm_;q6UjQLl*9GKsqQLM>@$L z;)<-rYV71)x@^1fJbR_df%3~HuPgka$kqJ=RFBid01!I1mCk7gn#?A~=+b>|zHgv` z;bOzKSs`Ovg%Gl;>~cmzEhj$-nQ;yDYCeNpx((D5(77FRVP+B&i+guVbUC#9+pds_ z2q1dMHcp+0KrqmaSurND#j_t81a(mO#?5!QVI7PE@ZQ{rZUks4V+G8%Vp)Ar#kcHj z$gmZ`T{vJj^2_Q)dba%PNZXtg=v!?bRqU~?GLy>QOe$nx6a9;9KB}n04r-r{e{6Yk zD>2BD#2#ml^pnti}hIj7^t}9 zY)lNX*xcahVb7+%7aOeJa2G6tDiL)sUP8Epc zDv*%g%SxorVbCOUuTusiVpqIzjdw8H?E>JVabme~6wE=ax4c_wf=`mfu7Ts}7#>06 zzbAa|uZRe01KajH7tz1|Y=Bc_&kuw3^4#~KmH!!iyAt#YJ-yL(fZo*2{u52;)8Xat z{eMod?e%!Ediq>3c6~T%N3^5oKr%FBj`8$oH}j-+uj zxEXs^6pP!t-%kFdt+{tOP2A!3)!=-$8)MOIXN2phPEw6pf9B`qBf20ovr~CdU@TiK zu=0B0U?SGjImqwY#)Bk)GixkpboB#m4V4|A6v_XD#u^bFh)MD#)FVpr{fOt_K{{x? zT8O~8DSFiqzn3K($_i`TEyf&F7jmGhdy?bb+gp*D@&IZv^@}YY0lU$$V7v?lF2M{D zgF_twGOJ@;qQlJ{cPGkQ;KICTes!*#v-;N5O<=-vFmTL4+2$uv#cr%Y`XOSqf1P=1 zf=fx}R-bk#<^Q#%u~&Lc|9zGe31T)ANLXY7d|2W>7l!;-E<>(4K_zt$DJroX9=l%_IxJ z1tH|d-hR5R#4-Vjkedm!*(OaHE|wHdMG8`sQDUCOz0Y4C!1p9&+?yv_5Y(h z$bV0)>A&9k-(Qn4v;F_LCbQcd`8SAO{fQ_KCUQq-XR+s%!#0r^K0_Rm0#cU1+|r~x zUtFx{08HfX$D3)&Qt-V9aLhVT^;Ov9{?*i#wySB1h3Ds^dPJpV-q5l@#8_nT(Ch@9 zX&?e99`q-KW+dY?^ece^oGt<*~<4LKZiN^gRQF+oFj;7~nfo z_Vn9XgVX6OcO1I=k|l6Qv(2f@2IE)yZI|Tde&aIu9zfvVfkJ!veB2jo6G9~n77d3e z6X_MPQAC%cbtdxEc%))`F1)p+VGqrCwtv!cgvMU!mg;xQi{zVEjlO*hXbdPRNlK!b z6tm8zk1s4eI&Rp1Nf)ga41unx4bMy$Fdvj?pDKy>&xc1=CN&{t~(C3==_Suu9c=^9y2XDaD-C(nBu6+Pl=(Ew>??AuS^JwyA{+c z8Jl1`m?M^{hANDP>+)2+4}RP=Ahz&lr#h;c3~4Q!rl2iMi{R?6aKG!(2kff5vi)om zr4oj#^{|_OGp@c!D$Hwfl4c5qFLDCAH;0)NT$b+Kv(!zv1-Gqo7J?rzZQlnIrLBVK zKm$A9cBAB@T5i@H(PvpZ!lY3$%T)`7?oO#q#vlnHbQbAw)qHW+$Ngbq7FIHviG|Y=ax2m#Tuhc6_ETeDM zyUOz$=JK|+Cq}!xJ5qL4Ef^@oXG?6Q=3TM#A#T8+R@Fya zM{IlPyj=nH6%vNaKZ8K6$JP>|7$;wWQ@ZQX7dtryzWFC`)hB4Q&wi9#Nd2QL|KxA{ zXI;l%O2_K;d1A9GAs-U}>^-Fph3V0`72-T13CK}`Oi5Kl$osU;n z(Fi=he!c4u_nA|$iEGzbDcxtVzq==_xRC8MTb_^*A$BZs$-m`1XQ&=#&h4np>0e)W zx>kZFH}M_W@zQ0MRP^emm%1KR<0-&4VcM;zDn|MnVo4k?6yS&S-*@qaEZB zCvG0CJ3#-rw8Tu;hEwbWWGP+--)M7r{2nowHWLj#NE1?m3&gYK#G^bLyUf(}06VZh_` zDj0Ci)|&rlD=termkK$voDs{*H5028hw~ImKKpUYt!zK$`siqf@hbHm;|11j^LT$) zCNa)EY5pURb2+sM*UQqdwOjWQi3(rAd(L9CMChW4UM}}WReF0Pe~m7z1L097+o&?q z7J5tYGyx)c%cgjYz$>{m`_F!QyS5&u@cm)zK_|=A?y)o`&6yjRkte^i?%Hx?bFh!X z6;F+c_;H=|)JCjB0>Oca;!z}{w6;v=72R_`v|HQnip5ikUfG!){f9%z2uytm9T|9F z1B*S81r@~|s#?;bmEs6r6)Y5|-)I$G_P(C?57yF~XGppjq~R>zIZxc21PCqzaq`?0 zwK?IfrwkwKl!vBN{>ttMWPx6(4ZoqTDLON3+gjjaZ(MnV_nC?K3`hRM^+g=G` z%wd3KXfWA#md=B-L!=b}K55W++;hm@M9L^Zo{g&2;M*7k5>u}>@#y;^zR zP}%oUnqk_~LiN4@>FFK-3xQ_Q`qA3chKa!~x@VfI^^xcTM-zsEkBjaUp>YsN(qi~m zm4O|;(I(4QdHdaqcN*Xp@DEtTmdZc>G+(3p;f?m_{jn8bA$See1C13b8lK&gy=Nf> zskUc5hLVQWih}JCCTrdNlW+wYa1i5NhkQrtI~XD085l-Hu2p}h3Y(Z$hmK~Ex<1s& zj1;HdGM3^q(qh01(q9n|DJUE^Rh$QD_{DUm5mIdld2X~0Fh zm%`&8es3y7BIjz>_Xh>z@6hlrH@z;xA4u6I8KHj?r2jzmvivXM`5*Cy|0hWQx8n`} zdh35DNLiRTe*D*X!@mMGS8F-WgavJEOikV87QnSfZ@?Wklr>plTh-@|))a-}BgEI4 zBED|FX5h-TY`xVR!CP940HIEACtI`WMLtj0Kj&n46P#I)Q9YQTy=$M&JfB>PhzI2I zP=o7dvwP(^Jvj$(;cDL&4`<~7Pn-Ux17Z*d%?GQy(qgeQXc8H^vB-fWL{y+Kyt~mT zSc}fUQHyB4_pL?jpK15Co$)N$7T9unu`?yEr+;}_Z-FvOw-_Zn2P!k2m$T43^CwRX z4Db~hW46T&WErwjXN1@rsrd^$RikI&fmIhPmTe@qs*KI9x^UWz3FVjymS@I z>f|vcRhqQ0Uo*vz^{6x6D(qrQQ>^Dg1hKy||1ff;3?zp?k>N?L9x`O`vET#{GyA^N zzLpM6WlT8dd&C}FdgF3GHq5`F=vJ^^qWK9evlYu2?dnzIME6_hT;h_b9?q4ou(L=? zF@NL$$Pjgp+Ix`sf+c^)g{9V_4@1KnATX9mzv^DS^Kr~0Sh)PwGy|v)5XN?o$#kiE zcvv12Z>8fIW(y{|ELyRB)}~bJMAIAg<+v#TXwlJq z3b|9(%4YnPTZt6F?c<#006Q962PIrQ9n+$A?OocBBD>L^LP1R|?w9GPV7v}@$ey4X z9A8PRh1>5eRYng4X|FfF>p?!(o3|KPH-Z$D`Fz3WElQZY;%+}#NQ5IG8p*u;Tz__b zI5z=7GNOU2g?9z}{OD-PzWa?ar;d9&>xRv;D7pK-fIDFB{YkmS*NO@lh~h1vuf;Cj zh2bwZdyimUUf-_CU_Ct7Uv~lw6dXiFA5!r6mnIqKzrH@d=JzKHCKe9BMRC)`MGa$D z4&ScsvjX?+rsr(qyT5O>rEw5nR_k@jv_?2&Pu*^K&b&UP^{VZ%n0S38^`u{+reJJh z@4;U(wsY>3>tkV_cl{@W8UAYWFizekeS6uiP5O)iS zuq2Z1`rnwsvp?#a@@u3RMyMUQnky9S1*iHC3{3ahWwdIV(nDLPrIoT(qySn5EONmc zNd%!yr+0`3t3d*L(a>_rFAH4QgQ{7F7Q38f!m!x;WsZTU4o5 zb7oWZcan3WkE+jPPY02ajjQi2NRKufAv*P-XeJXo63v$%$LFNa?x>i!uOBcRW6{Ll zDu#lpvr|phaYW`8Jpcso*eJ$eF#pH0}LS1o{_DQ(PN*#n=TP=T}W^(ifA3*xAs~+~*p7bPuxD zGY@>Tz-9!}i3y=p@6x6dDfXiH3cj=@*E7l-2&Ayg5g;R73^gQiEsLjYPG_SAaVln`10|3o)mbVk9cu z-Ie=ECA!wzSX)po&L-toYKzI++;4Dt&$4Fr%!V$+mBiv|s;9!S*Y>VPFLtz)^7sU7 zjDZke4Tp~LodZ+fO)?3_7n;Sgl#y39wB_?_%$mL@-9gC5AUZ8&aGKIuWp@16vfkzDl0lN>R}ICDDJ)=&JB@y1(=)e{mff0eyBs2!%o$&iJD z5nrC4B<2-W-CMbAuDh|u^x5O;Z!`4UfchLe7#B%gmmJPOoQmdR=O0p&IM&VLPEJev zEb0sgPK19Hbr*ycDc(L)_jN)M5O70tRuM=8vO(0slB~Qpa1vD&yZcm#k@>E<9Zf5x zj2KwaLa++JoyaPjsO_-=FBq*vanJ=ZZIa9b`MhGo=f>JrWy7DroNx%NgGM3_omZfN zD#a*3Xs@HgD<|0W-e@h~=f!akvIrmQL-d6S1qeramcri1je_*naQY9|z)ayvE{z2! za4h%;DBvsE8G1RLaQZ53AtM{mu4P3x!FLL)706I@S4t3Fr}LK^RD$1`ibGJF6|{t# zW?<4$1~}G`;pwmJPn!Yimjyyu<}NyJk!xPaMunQltHNsD`dPfetYYN3RKFUOvjUd} zSG3<3*A@Y!rpQb84Z@Ufis; zJ7DUN#Z=;B+!sBD9sR8H5fZ+ix>}twnALlnq@L6*c#r^wnKb(xZxa*=(f@o330m zA|59LxHR7`g=#aNZxgBTxCWq%RwIqdyw@nuZ)~GO4sCHedyEs;A$N<7mLOMYY@op~ zrs)bdF+p`v)#5TS2UU6HC53~-0xjX1=xtDNc8iHYzx1DdUAaTr16$*f=VO#&vfs>qZ$+JNQ+U@Q26SdY;qtD1@W5RDs`#}yg>gLDj99k)+3rOOvRv#x8byx@B91$#b{#q`*_ICpOr03@SNujg1dwc zECXPKLs8o=BB%i-uH3BXbEDvwne`oM3LS<@X2n!sYG!OF^6`JqdSPk{7`3KyYBW(h8Kt_@*pF{qsDf}$LgH_;#q6O(dDS6;EO)raYq36%3)tu za=cIWg9z>#QS~|{Chy9)trU!OP9V0xq1VWCJ4K*bcajhoZW?7cLpI^(`XfjV1C@6>hjo#CPEE)(`O+gz+2 zOfEw|vO){6YeiFzo5;3l5?*Nw!8_2z9z4tTxad19qNrn;4*xdh*w_3sFcQ(YucDCOLmw6bJ&R(Q)NNQmbL)>Q^e=~s_AOm(Q7aPrb|q}&Exh=_8n>S zdt(BXwcg(ccHOUkS0Ymj`GL-`2YLR``W z6K5?3`JbW;$|mm4I{*89`Wa0rEk>u_Kk?&MGR@BDKNC2ZXPcn+M_f6 z9N{#;RC~|)LkS$Oj9)M+@6`Y1`6ak|SX`UWnf zg1L2sLVgq1qVpEczx>9y80mXsO1Hbv3Vl7^iZo40xILN~AwT~6mJ#;DN+`l_ zOPp67m79@0Y=E=iK63i07Jz9$hURQZz9Y>kIoAz4heKQ|S_;ylcE*KshQHNJ!+#}yx%^xnyYj4&an81z)k1Ez z;&TNKA=i~U<~dyBQOHG`gA-Yn#Bnt(;__6dRnlgha`>Kz3rf-B*)Qgjjg=8 z{WLeyHPNQ~v1*B~rOnlovf9k8bFIaCCZWWx00CRZ9cf)S_oP$%^oYE7=KU09RLW*p z>YY^Q@4dUudTC%^4nk60J+l3xxt*ir)Vq*G^1X+MM2gF5$=mrLR=XGKV9};BF6(m*2A9JbG4%5Q$Mj|< z7dJ7jX!6dT3-Awa|G98t{+L$7@3?s9J89_{j*Dp-Ui)AlEr+vRXQs#yNv5AE1w$FNsm+L}E7GZoSly#fhofZM{(yLbJ z#q>EPY~9Tr_+xjSr+*L>VLCbO*T=*;49=t?=3wywPV-$lNuIktbx<@*Nam+-&X z;_eu!Nd;v{Wo9m4khUFqHLZjF=SDtjqR+*^zE798A%r+I(}nF?!+3NDQ~eo&CZaE-84wK-KZs z3-5~)-3-&DmFvM*mV&okOFrQoPxkIl(0qI@XEq|)@x|29gd2IW{yD!oGGvt>W0eOn z$?fuy<=5--IH-!tRJsrTsQ~r2zr2bWq*3?9*{qq}-a7&^*#fklyqb2k6p=^~gnf

CykPKqZeX-hWvI#kWy0+sNLj8H)59ftf0_sc9o!g4%}C zw`yffO#8bl`)$cs6hi~WRaOk&CFGM(+n;$WY64*hCiS*fW+2Oao9BYA1`J5#avn(S zB7G_(6$CHmX(!;Tm;O&}4^;IJ6G} zdx~Enw`0zXwmW~&OYf$IaiH9nX%9OwNt}j{9f%Mw2+_)z;7GKye&olKx0YCu9)dcA z61_=AF^1uf&$XeL(4TnlpdZuDD^*3XX2Lw4?#FgF=Ibv1^* zJMFWC|K%YV#a-cG@=80>W3%2;4OMP{#I@--I5xVt?=IzGCo}rPQAuQE0}ie_ulRg( z#9y3(_M_)eYa%s<=6%8OObSkpDdCA#ldd_SQ8DUq-cm4HLpzL?VK|j^e2Dd!s-9Ex zgLr17iCuNw9NkQ51JR_~**Q@j1<}}K1}J2guYVdDqa^fNjW4)lnp@8iBT(z;&^ZD5 zue$Mg$7VIUKNrl)nsK1RJLmMsTgRdfdG^>tQX|Ef70Gl2^NeU!f4r)&wor7@r6Ys^ ze}Q3qO3IGe1WXc+r`F~aN6zfsPom6_}?nhN5cU8w5s7??E1L0{$74bWZc7)uvSp_iP|19Zd?yDM zxv^!WBS(nqX`*+99Fy^~Ab11ArOe$p6#Qh19GBZu<)6e%#=G|5%Hr1#sV!Kkdvq=@-L4ced=CZhYu_~fPJc3q1G-I>7BL!4M*!wB54U36 zvs_LGWA%7y*Zc7yjC;0)d4btjLei4mFiU4kwvcpD*P z(xYZ%7;h04abnRAOkFMb9sLn_(}T?Vh}8ncv?Gm1kirw~ai)o@7!DfbkvLT_Qqxq} zNh+cvuGs3XWvI#dn6Kh*dDNi}`JK3{^R{L9KtB3?Kly)aQC%Nf1(Tgopq<%KZ~F5 zAT2M;S=dxZxj+RM#3r%dHe?zUOKrBbXmR8qwA!Gfc3mDvOvOKQ$ch8v&|1n!|NpV~ zmcfy1O_pGZp~TEsVn{JFQ`o*5B-ulqSi639GOzpQe<`MsT8eg*PXUEPXm`uMe6u=(XN@C@zTnbUj;@z94!fqwdo z=(4P?YFOcJnm;O-a%qwEfjoNOzoWtWWR67wd*sDhmWZwXKskX_TQ*hxmK_h69_K-h znDF}>%t&2{@ zId5J1ky_35Re<>N6^Gt&>53i|j`=^`6 z%~1L4z*9$!J*{08xwzIWAGN9BXzo^c&fVput-y&yzRBKKG1i6B-&}cO4)=Q8aSeD* zgDv#EE!dJPL2>|FWp=fbyOKg+@dHz55<>lZV@;nf|#d?Y*r!vh-63N zZ2Y1yxq`>X&TOj}K3S~NC-xIIC0y}En&Gqau=Swo6EEFnKeV{YtL_JYdL7AYeprMv zvV~JDfGT`U^u`PI!gJyV4 zu2`Cm)eaf8o;ZQsXe?lHaMiMCr20o0a74-7!!IA)5s{bii0@&U+$eZcsrH0c4wzp1 zydE5}{sd-C1i-I2>wh5-U6S%uy6Ch&B}|2#m(e$hA@QbVK8Yk*{w9)yO^}NW)41Hq zxyaV>vrcrW#iIPAlB`i-oS2_ zZtB42ev(PTw+*fIK+*YrpH(R@mS+76f*3@`iz6~GE;^C`y%b<6Gbc%Ft~c)0*P_cg zqlO$Fi>u9w9=Br<_sJ)zBLVRjpCo$8LJzc>A1dW|J~`Z0KO+|AWtnmQcbigEntReu z^^bA0`dOz>a;Kpie|SnDu$X6aW9zzYf#eo`5?GPCWAr8ak_XP_b8M(PMgoDxx5eG> zf9sbLuF_Y!eSkPZ+?xGU>iQ2DMCShtgZMAH#Q#gs^8X{7iTBA z%7*&B?%iL}1!)$d^y~S1BZyj@1%9g6802+_&5J+vXsGh)2yL@z&BNQ~!zU)cA!&f1 zni8y`ub%Qa%EQH(XCtHG{t6LH5>rWbT2xkkxBuH!>yUfgMinnUGN11P+5n$(=4{(T z3lu?&ipSlf8)nWX5>C)0(ss@M;3lGbv@EYYOZx3!4Hsm>e>Ys9&)Psn^g?tzs!Y3g zj6a^VQ2gH0i=8}~)k~e6Rr|gbcqQ{$v37v;lXkt|aBK7mR?p!4V`yLIKtNSL(Po13}scO2+)TY%&FmiT;I;3X23 zMo%xoUDd9i+I>|k9_63olHIWqaP580gRSoRb_Y7I0jdN7A$QH`dtX3P04~0ODoo1G zKF1WKX4Bc{zvGzmb6-(gD?v%_fMxV#)J|rvFXUu*1EbE6SpBJzkOt^nK0<_{(3+{^ zNtY`#STvKS$Ueg&|DVM5K%Q06u9F%lKVZ z+f>E-5Gg$Po$~rP%vsAb1@o)lXzK1)aWYT~#iIF_5jlChOa0O+=~UVS>}X}q4m4{X zd{wwIHEJ+OKC5qqhEJJ%9KKyXp6KDSis-d^sr2bY$n>1rltEbN>SNbssbOKC&vqM^ z;P?ecK4D`mdDn!=@i-W3z_?DS2OpbO#b|+p6VCu3$=`lp@-cf}7C0*4( zi537mGj3vRBYI6$stLGh|8dJXSAkyEb>}3Y)wu1COJjAv-2$RecaB9%4U6(p+7lOd`vfBDsbRUJ@Mqt95yg;9~T1sBfa zO<~a|GipV4JnBMGcQ-W@6yIh`(%x<>!l?Gd%XZ>wiqP7D*~A3fV>3E!jq{RPx|G5n zUy5|yOf5x(_^EGhtztp4XC+LD=zGNX8bXa@}Uj` z{REK9*=6b3w%Zn{q=5QsMkS6di{;8BOWfqXYJ9_M=e#1~{Eo`{Efo7a=wnz6$IOXe z6Czgxav`AoCqwgSPTZNejVbA_F(CQ|Q8bZ|AQOOe-<~eZpArg;v6Of>_I>sB3h@ae zv^AQHw$NEeS!wNvdQe|f(^fhXefNC2y1eAl8Y3nKA*Cz@i-Sev7_T3nMf-|f3#>MX zL|YTLglr=VfM{*z#HP4@g2R^iY|uwlqiv(74DIb5(F{;pxW{vXmKNId=)GStdUt#> z3rmg@N1>^_lRU2~yi8I?Yxu!_y({b>ovysGj)~_`t&+|Zz^!HxKuL}$StPAG1<`O~;33aYOqG z5}d~;JNmr&%Wun(jti-?v(R7mE~E#?Gll%CC2f<#4m#ytTSU_hzC`#+ionrS4#X-p z)T?Et)_l_|K6Y65P;r%~HS(XnW%Yzr=`OgMdPIvy=J+ATQTL+bIE^swjcF3yLUN9m zHEA(GidHl@ijimDz|5cdpYqT+!MdjuX8gr8boP%5?d-XM5t!sMQl^P^qiDnJ%@tf z0l2p;-P_@mAaT>@zKW$c`4YPGEyKyCN^Q6`JPaGTBlDaBUy}vz>S3(MDzy*;YpN>v zK5NA!-mOH}e(i#4nAr9Oj*HxkbCs}YV;bjiMGjdjB^)AVP$g#&Hs7+R#*~=w zH1lV#dyetRq)j#wtCDq?M}unNKaeaPGRKQ|t#OShD|IhHnlJ|v%-ev%i%FUK%>R4*gO0ACxM|W4)zPl5qcb({;f$M z2-$ZJY?>a&w{w3C(DugH%Z}S*ieH!D4Ffjtr^;2O4UQ^kT3q+0m74*xVH&tzgrf2&MO;u$T~QM3qwygIXn`Bg z((Th?N8zlDK1Dsa99%-01R-ILVeus|aXqcA=Y}c+{Qz|u$MtWrJ*+cR`WMZ60=ACj#*)I- zETQ4)`?IYK8n5y-Beg*OZVu+mH1;%2yqO%b*|g+y=(jf^sTu6Z4Jn*nZO|5SxHn-$ zo>l&{HE z`<#fnlrG@HOg;rB{$mmsM_>G~c|5Ngdz(-)5g0r74>Eh;On^W_D+^4%S%QwXK4C<5 z8!vs;sU`YZCQq)YH1y=ePp)^LUZ-J5>lx7RF5mpaTWJ-~nO`9jzSHvEreKuz+aAV# z-|9f`d6Ll22*PQA<(ngZY(CqEsE6ApXJJ{BqJ4q)FFNCB@-t%PaZU@>2!ce6M%AFQ zO^QWfM>4eB@=p{nK1wTTlCFZD2Coea)ccZ5RGk?A6^jSh78T0vI+D2bJqvpsi_@`3m3yv*sMP0&L*-hBcE(n5p=9cr^89)yibPClG)RUE^qo% z_X`?x6o?BmkMm6*P0%OZ`!f8? zMaQG_&)3?A{*#RhrXlB@e@M_-{sExJ@}B|p{*Ow~0b>7aE8Kra{eMc;8UJ5E^>#x+ zEsQ=Z+^!rF_(ecDOdwe{RQ0n!98EZ@XbXuFnaQL#|K`}Q_}#}``x^PJIj8cy)6>&6 zXQO47s?JOa+u4ZtCTvM$*P2g~kd$eU+Y^aTxg*~Nk_b=G_iv@s!N?0=+H+*1`Lcv= zxka=up-Bo^f!?h6?Oq2kWQ8|!Js#hLKBd(%F9t%x`W;{hifCSQt;wv87;!oKJ@zAt zIwM%JXFYbu!eJLmJ2jv7n-m z&w4`ICKjX>>cNW+g4P1Qp_-Cbj<;z?);o-i&6f7FxK2MF95v?6E-8gxL&;t*$61YQ z(S#ijDbL21c~poXfy)l+e)eY(owU;9MVUACIrkbj@g!8n%QIKe+fr!pe;2Zx?Wt7T zj21SYfFw=%>_Ht0vj2?>&QZ4mWgeBbVRMJ>Mk-dD^QD3=wxz%<%26#h4XFfK!T{&dMO(Rwrk+6sx zJNudt7bRPdpo+{Eqs#ug@IE7vEkDv>+hPmZrFaqV8C$b_0$%jaS#%Z!^{NCxb3@`H z_~SO5%p&3S3H6?s2jRZav@sAqrjaJ!vUp*DvzPLn(rwl*a!Q++;iP~8qFPxTK?w03 z9}30wj0l%SOU_Oa*Twd9K#`kZKp!5TU^cuRyx?a#-pI!5=r^X#2gIEj&Oaox;p;zW zQf{gAG`h7po12-HzBlJr_8G|;e61OGAF_UWV+us1bm;_gV*GcbfA6-e?dSc?asd^oaEB9@G_$i}HxZ6zkfxFfnJ-2l+`;Wl-#bglmFvVv=)3)MQ{+}KHu)BAX7AvG>FCFQ7*tf1QzZJxs8jZiL3HLCUH&YDzB%_ha0D5-S?;jp(l8C#e24&|Xu2e&%$_ee(j&)jS8ez>7G^9)z@_>+#@ zFk$Z>-4?Gs?NQHb_`D5Hb~fA?UO7&uL}G+igTDiZtwKE&Gdxi091lW{ez*|uBX&`J zj6znJI8loq)Y6Z0tzJMmn2PF4YCG*c>R(L85NBG0;EE_TBy;Lj#Rw>gup)Jx<(hoI z1U1}mOKtP~2xIC6Q*`lac@Z-76*JP3V^4Yz&EZZ{s)XcpH^(tL#jZQ;@ z+*GQVW#WphnXDV<6YHjFzEZDIfuEA6fZJEkXRshJCsBd_e&&ZQwh9p7d_Yi|%rTn_?m5=mHjh=!K) zlHgvfsy*X8Y+1evZ(;G?*B;y-{EjUlOp>v%_SIG;(L+a>)}<7cp%J{8Un{$^*0 zVpYKPu|JMD8%|hrYUp~)O`rvAfJ|fg(cuu+2e@6pd+3PjO2SPL$)c;qjsTx^vySqxlKL{?;@u({-TWXVESQ^f{RRe&ne*dac5o+~2Vc({c$3+KfRzB(>ksj#2=7l)l8et&7h=eNhb!8y zNp_JY`iO1y`WXyb&oHMWk?n^IBr5q`x$R3)B=UE;1T0qC9_DaoKAH$?f{eD1w;i)>xviB6EunEgm>)CiWJ!3ZWBt#Ne-S4PF=-41v$ToCorvqWOxB`LStxrF#poW&&gV zr}X?E;EF8&8C>!Ifb{%-O|$9W5&n;<0`zX()yg%@@I&X#RjhYo1G0#f;cH!AL<88cX4auO$(h9ycOQv#T z{Yn*X2Yc0CVm!J$$((`gg;GH^uAliD)v`Pf=U(lxwHWe~P#vo^@b@45uU9qu(flcs znI1T?xleY=&{2NzQk0R~L;%I_H|Pu#?2rAMVcIvVzr5Ec+Df%kExEmRC%tttJj;g)kK}ZD&eZay8)FzsM2*+mG|fyfYHHo2msK&VzE-V z@o0JoaT{92bP+Yup}{6(ZfKh#hfwlt*9uC<#L-iChQFTdi{ZG=XvTka9OiY2(eYit zfV+u%TC9tK^2cciW~!6MSAvk~o>01UvKW`QFo6u^JC|7%F#4x~==P3!ir1~IX?(zn z9{``O0jLq1qrtq8R)2b)6d<^Lr>_+S+{~CBX)|INml!u&M-;9#F~@NiWcUD!qFW^> zhibNLY#lytXoR=182njN@G!|*seZ?D>!s-8JLP`g9WSFs<}VdWvZrW(R`kSOPYcc3 z#D%?g=Ty&xYwW5kXVTCiT^7EvE;;UROYzLOaHYbJz$=$;I4kt@5>;x{TwWn1$ab<2 zF}eY3=rf^KuQ^|cy9K8T(-7WpU&BSjFV)U@TXQtxRnMkhTT4}o%$;M{8Mu76USpTeyfZHfCp-Zd`m*ISgJEa8>Q$Ryms8B4 zCgsK`);m0L;hrja`6}u2w$;ouB6XP-`Aib7I?RnIkEzr9@&{b-Ju>1C@|z8;3lKI8C5Sn>7O|)$kO`*R9)DqVk$B#iZ+kav zBVgBAmh7)md(}nj#QfviuU=A|A9Ck^)bkS9BjyHHur-G9P*m_u28Gm|d5%z__S-VT zx=fr%>!TCVWLy}kUqqPru1|>8)aHjTi&8pNXwZiz-dJ${lTH-)O@WaP_Iiyc;*ceo zzf2E{k^;g^a>G+_bgJx_*8vztp$E`;JD*)KWqL}HpDuNxi?bN7L!HI95&Rb7plj84 zw7JmTvOUP}_df9iR}{QaH!EV=6HcHaJ7|wDfa~B_`34+i6$ete33eKb|Xq+IMJ*vA6@HC z%XoherTnnm^(*1hg5_+(Z7G4NA@em_QK0(UXY~ZBXjdXG`da5taI2L+9|T9unw{j> zue!Zq2>9afx*bK4rHo9c-^5EXKG93(cOJ!qoy+0rEe0YcZV~u)83P?Q4Axk>D3lc_ z2d4<*wt!MvE)*rh^B*SkFok{VXbZ0BZn@UJ^;j%UGYq-$*^38cJ z<*Cw~2=mnm+$B;O?Ic~%rxm&&KfVf+O>i^(JRgwRt3c)l(X)`+?0lT@UEXt8(5V#D zC>E7VE-Udk8T0e^HF1f+N&tDAc;OC9`q{~mx0+VirmKOLCtv(e~1bW#_qxF{PMIG9(J*3>%21r{MNiA?Nxo; z38pC~===*Q&ciWDC6?%BSJr3hk6FWO%mN|n?31rVkC}zvGCXTyIw{&NtZXQB?a+uq zCAN34;LAN?EE$R^`Jn%3MMj}-wwLxbOHg^w_*90|4xt^}Yvo77oY+6_WE~|bxv#+S zB7pVX9>x-N|0udPOz&TVpL5kkD#@uqitojsm z=4MIfVepcO)P(`+8YYf)TyINIEcRN`(7=(lqPC<*;cCAay|!-Fn6SFupr``hTB*Bv z8erY(hYa6dr&rOaH;Q9D#*qSB?gPe>^1B@BipxTW^@XIy(2BKoSzQ77%wnMN=vMkd z0TR(WXdoTy$$;9w8C^+>)nv#HVS3JRJj(glm=N4eMEs*#w&Mgo>98$`zD0_5&%LvK zmX0yW)~8?wv%%QcaxYTNo;ZSyvCV+_{1@Y*=Elw!ie$-PCREqP28EBr#0H8_%0S30 zNJ8a#HTRt32JZAcEFc)VF=K%#vdQ7|sz#rLx6|?a?M=A#{$xl0K4LhFlf?9SosKKg zXZ=|05BF7%O`KNfVn$*DCt>9~yt2?qmiN2`m8)wD{tOlf;~ z6+H~X77HT0opZvs0E!V|o?-VbYWK(~NxLCa=VOPixFQ!lHH0O$_;p$-O8*cR%uZw% z5U=50X=kLjeC2PbyB}Y^zatG&O!iM@KetL86esFh7ltF!+AZ-0B;#3&{hDz>Ut;)(_sK zBjp!fM5~w?_vR;si9xt;5Kz?PIs!uQJ$bb#Wq{X^)dBrQ@1;3o|0@u87f5aHqPTSS z0w3Gpa2dwRea%A$C5wwkP#C8{e-&>N3iZV65reX@e0NTnInx@5rB@qRfU*G|1eA{L z9%6hVCePd@E$Y92ls6#t=mQ-U!_KZE&o^)lf{Ac744^{*@6=srEl`HtgR8=(IN>l* zPbT|~4dAfO9g5>HRX>RWR2Xp#tJlJ|1cR~Wnup>foG#us|-kOH#GN4+6H!1d~+J+byTqV zCOROzXuN1r7DUxx9DMm%o6A~Ku&}oT*`fHhoT(Z3^aX8%X=NEjz5Nhe9I|A}*Pj!E z=5}sw`T%3SLQQv&&RPFf+aZv*-x0>4se|f;c(>kuerwEUa zhdq>%4#h=;-3W-G<_b}S%qtl(#lCBkpcF=n|83u)?^w9LdOnrBet!~v)5H?Zd|aCz z4T6q@kKWry#1oAW%ppRAaw}=j%_u?I-?Y#G8tDLm(j6?=@q};G>rYt%@Et4FNv*1M zVesx^*`{B_3k{y?NBW9XuCUys9J{#c>Tf7$@Av(;-8URsPhf}z7go30F2q8Qz0eIQ z*L=&j7$-@;=Oq496qf<(0`Tp?5Ts!vns1Uqy+&p+Scb>;vY=AKDHeMa>$qp6&+e$W-G2GWmCrW~~gI5rGv$GPII$jM*FIltk3yYsy}~Y4Xm>En79CQ0j%K zlIG)U`jtk!?h-5VXAYv%xn@cRbc@zgvl|Tk2Z7Z+2s{eV7+1Wb?o9NmReL5zi``@=2nHT{Ij(QHRHim$|On;Wh zK5dH_+Uwhy+BjI-5wZNMzfi^0z`?{`gXwQU<-e+&|MX&F`|G~%zxh@KKFdu;$-^E7CS355gX%QcTTp?`YP)u=MfvjU!F1$ zaejLIm!1FljI5t_Sy?%WSU#(OtQ_n_ET0yb8CgGl;r#qA`{(vw@nrox6Z5AfPR7rX zFn*RNKT$xeoPXJ3VPGO+=HUDs3**0zFn*4LgO!Mtk?k|c9RJTB=HELqWely19ZZNA zIsOW%n5l(>p&dZX;#106#PIX4X9)P$aYiC0c6Mgg{}^*&K0bQ~J40Pdcv#iI@pdQy z1(g^6?-9-U75yV;37RweGiLKGCmY*hW!nNaG_b!Ppt*HX=}BSSWtYKiXef(`tkzo3 z+toGhnvZg=XGj)q~Y*?XmmO^;Ly@)?$rqDV6r_;kv=`iYeu! zWqN#eeSCIhb-}1ObeP51IF77EPMciXqTPb`v+p3IO9rn^rX0v)d4_i>Agh6kYAtJy ztAS}QOM%)5B)>?mGj};?;o{e6dT=;7sVu5u7YArwh-;fR*1sY?)jkToKA*F#FQ2=& z{ycqG*P(<)t3weE#eep^ofpcnX}|1t$K9myxCnkYdZ6gAetUmIoN@D*%X{s8;8Vnw zfMas^TCq2uypP84zRh2J)ds*P1ObM-q5}!p<=&`%9=C2Zv}fUOlH@=0My#>OQWoy4nP1A(s)%2xJg5xtFYmE{Q3Ec(9I{ z#vGEzt225l5!vz1`Ce~TetMAM>+)|ONx1Ev#{MCljCyra?3B9^6OCBm55wg(tUEaz znWod98Ni8%#9lOCTe#}EqC+i)nLs_4fy-cVm+#4+8Lll1DVmdYOind>E;$-D%>t(J z(dj)0GrLV(rZ*cEE{=JR;josO-lr}D4lLNxteuQ2%{F>mA3BsL*ndu$3-@*~x7UH%BX^`>6hWs2lkk?PN!qrSY+GTP9hfSeeynSXUW$_I5XW{`NiRQ-o}9 zdXd*=#kwSxHy2e4YFZU##5l7DF91)rnVoI?U4TIw3He?ZyYjo)z`gmxh+D(?0si|_ zCTj#p*yzJNq=YNO$=&p#hgFIbTY+Sfp+>l+KiH{07WQ@5tOo>v_0z(ayP=1`E;okK zV4(blS7kh+;19_&NK%lH5LW2UTP;z;g|E*jEf-!ym#csf`)WxYK^fsRaEZAqUDLtf z$xt69za;#;=fjP60T}^bKcj6N@MEJ{PmZN4kZ@6+L)_C*v!-Ai@k1kO)&SYco^1`W zT|ATBX9b!teD+4HxSv^@od+$u;0}3gCKn(ELzhgB|ikr2dhy<vqD zh8|B@*uL+d&Tx=d8tykpn*BMvKc6FRyoTQ&F!-?D9~C2)fYT`~$HN&Z*hA9F(9kAg z^>BjO*QTE4#g0t?uDsiXu2g9rwGDhtfmg$s{xSUnqV}BWv8c%o7QR~OO?rbvpwQU9bwyKFoM!2G&$h5!>`ytKLgDx3ofj0EwqN~GR(wv9>-hOdJo*J-R50$E4g$`otEUAjqXp=)O@d=*cxM?7-8=TUjd$=QH>Bbn&3wX^( zR%?aylFdi(wVIBvB3FlSKYiM8b<0uqJll9Z7viMmdrHF-63~1DB_?*MrBi zb|v%3NqWt#T1iHwrmmCTX`jL+%RB0l5X2;kkKYgnU6;Ks-_BXL z!M%UPGpSa+cmDOf)vs$+mp*<}5y2d%I303dSnrkm9f%aMRba1qJJid?l`c_4jykj8 z4=^4Whbm5+hlodqiQG^GCWEbz7DkD!riMw?nn2*XGu)DWisB}={WCy+A;L-g;(<}j zjXQ?G z1!RRPyycrKeO|qVp5yeG2rOwqGLX_!TYRHNO|swN(H##VD;EUA24a|ByI)f#_C~hc zkDbl~SWPa6lzswKwOr?uhQr}x;nCb%pExSHbYZjnp@(J}PUizM!sC*`J+J?W&O5LA z8pB<9Dsv(`67pJ?*h~I!60?)H`n9Wim1z0WuQJ=&fL&{I-^UtNQqGTxLJl887GT7< z>wLsYb?UUARXRKR>*Q>IU&1vZ9V#mv(w^F|aZ7rek6oN0Sb+S{UL-FzL?|!rP2`7^ zOD=(2CNZ*a&23$=jS7eX>hW)Mn3<+xG(%)9I9~8#D|Sby4R7!ZesA z8a(Rcr~*7^9AU&zaJ4pfIxKuvlok3g%c?U5Yt8MGR(No3G^ z>7VmG14laq2_5J*#Pw_dbWxVjMTOS>h0!GC_Je%Qzs40P9IuHSBp=Z4v`Z>0V!J?$7Y5G3P~@*=@!*)sC6e; zz^7%Fm(vFMww|ZAl72HM^x4{-CTDi#?fpr zwIqvuvr5akG6eCK|Du_qetrd@9)9oc;7#Klg4pNqASEoD^(FPJEyziQ)Vh z_3%ljyW=hez1?cu!wKE|=dm+6HKsem$!LqD z8n@F~%@dK%MYVY813tG`1!MsAA!z`}Rk(JJpx!OW$v{nCjr6R_}e_bzw`$V z_phaZ^hpi!^pJz_`0IQ8ZTqy<;`yQ@z)ylS_$@!LsTwRq5iVtTULISYZOgC* zWg|iszi2&P=OEwvh@~6ko`)A%+t9&}jC_}r0vaG-#Lu&bH12U&CR;P>U&;r0aJlET zubb^aytLmdTThNr$A}n>>ItL0)1DosH|N#lJiDOVn~w601NE=>AZ`YHQA9dec>_BH zHFN~l5eHW(U-PmlJm7;EP#1LU<_NFB=jO|jFXkK=Za+wt^%z zlhCE%ql6)o;nJ8U!=}rONLGIc!hhoxQ!Jkl&2~T$6})6LVI+xq2<7Wh#d;BNw1VC|-nc3Y(20dgc zV2sb>J>4|zoaR_#pf${M7okcV_KidfQ51t(@wW{WPWz@d)*s3w*ZwJKQV7TrL7a-v zAm=^S1I390uYf>B@9;f)Iax-OsMasS7w90J@6`7C7YT`rdWZG;$lIcfdm`{~n)1xw z+%c4S-i>x+`Xl;7VsvXGV-GoSKx~ay_mPXWLY1hMb}#w<6o|X z)EyX^cV>5yb3vuZun^GUcRHmS4E>t^It5J z`A2Ol!!XslV9kWJW8ckDvOQn-N+mD^AO-=R619k}RQv-{oMYw?Y@JJ3xD5^eL~}vc zN7(U4j%_8w?ztr!NtsT}LPVI2WhA{~u_4#|tqB0Z89L4pfw;YfxLH$=a15;psrcZ! z{#})hM&(<60E3`uO-hOTy>A+HLT&`qFhUB@uptkoVcwNj10D;xMbM_IFqD?><0#GeL+N2r*7(a36q_@bd zau-D!wmnaaJbYwJf0q$2AC`ep6F zC9J~^&q(Buw7RoJcxhnV@4>KXq`pQh#_$yGg}d6=fwwYpmdXTLeuwdwoX0ix<)?AD zW^=@HV5zd9(cmmMD#R|UQpy)YD5i!fRWs+df^S7{!EiIXqdyAEj3jWFi44#1>deIstLt z(F6Y=iX1D-2^EiEkbU}RSXy?7A%WgysfR4(dBPf-@>zwt-Gcq_@S;H@Vi2IS z2)y@%3r!me9@)?W{XLJ4?>~=DrRI%yO8936guX|zvQ{Bj2doa!^G9xE`4(_r{)wTb zcMw4ool21yd4grTe)R>;HtXV4ikrh4S{s?{b}kwSj0B=z@Fl3XBrGcwaH>AiwGGyg z(4y?{#!!AX94!?y0q}W*3mUpY9D;K)X5XyK-MGgVQcj*3ubhB#G(4=YtOl@Rip>?WZ; zM=17%-wPjFC+IR1l6JvFM40yvHAQT6Mq>FsHX?(0(Eo^6O!%dSx4BY7uUMi$7NzEB z(?kkfa8h02Q{1RQ06D6hr9j)Zi9JMd``N4w0eBu{&>TLjpskg(k%E@^UYw0us_1A6 zL~Ihwbpds&+r*4V!5d%4{H6nU=4#C$TJxQbx;zoi(XdEC(V0s$7h%k<$L=w=3Ijp3 z_D2q7kSgrnjQb2Xh_k6diGL`m0=}OvLboBlbaTa6Y$E4VaO(iaU`Vb52Sf%(J)uL} zWtTYx;j`n)k)<$Lk5)^NU;1OO9f7T|C`=z|-MQePmP@+Nxu%J_f|-^&dWLdJhGOQA zSR#47IXjXOM`;H`2Pee{Qv4k(Q<_@5=y&2Uaxs6-j%Wz`obCrLmXBYxp2G)tb$OJB zPHqIx7LvP7@L7!HxchLT?fnwg``9{G2E1!;@vdzzW6dhtCh&n`@K~JCH!o9L#P*TX zkK)Bp<$h|77ySH0%OA8){TTYyVub60J7kbf7G!;)qcqR`+!vbwMs@dAqk)U~q z(L}zDV=h=v21DXpEU;VcqTag1vo?_Mi>qdE`ixSLxV!n;-#Ekg(=PkhrfIi=D^`E$#8p~@{a=)8AjP68tm?NRA z`Ah0gY2vWTd*h`|K53g!_}H5pTP)miHF)+NWSZNX?fvq=JHH@Qv@64!zQLV_2>vl1n^~=7A0&^V zPHZ3CwCp2}=8C#9c1<%;-*FS!h}u7#9KJh*`8Zyla$F*MH{L;O{m3XVlTy@ca2(Y2 zAfgt}iHLWf?J!q~#0h`S;iJ^fCpsloaiX|&dURBe#Z5{?^_D64>H%gl^kCTSV;)mV z4R8H+s4G&)e>gFlwYKSVslOYC*Y< z29sZuGjuZN$jqcd`Cmu!u&xyGa|+6&j<}M`=_SX3!`T4P4~^^x!ph~;LaTG1v*>9S zv4cVKpE9{EmCF5Webs%b~?CiBKlH$k)woupXKCHt$JRLEB9_ zqtvnTxx}Y6b(upI!X-?^eMauV^L(J$(b7C{;<5f_rKo3c$b|#{T4H_J5;CMK=Mdj& z<)m87yJma2N08pjx_pujzrfOn`bt?Bp9V-4%HBJ>fxxU0(g7a~&N=g-btO8kPa3pi z^q?PzH;Y#5?ni>ecibhCI1s$h@EDpMDe0%7pu^HX{bgJfniP+TVL1^Z5iX@q!b~!| zbAw_&dR$r-07+^PxuytgnycRCOAi zmCkCv*#J%Nrq{X*dt%}Mx-vQQZl#JQp>MZMirAk~HMSn6BgqotMuemXoF+%StW@2o zFu9Mt30C)$8(F0WiOTa9o0E_xwpD!?e@J_9^a2t4Hj?%<(lC7#(jE&FCg{75P_#KD z17T6=s5`z!qr{*GEA5WiuG987N9Uv~*TDf(1*kExtnaau)sYs4@M{k6)(`f44^(gk z3mmkmrsSCfb8e7sKYfNj>6r8PsR#J^)DlVQSJYMOt<^H9QX^aRKX8KKCYCe#ylYWz zWf>uF47uQ)x(?>~pt86GKGx8QtWRV4fU+#Z#Qa&A`kmM8>NC(q{oKX8Ya_ zj_0+DIqaXRDSchgmKT&{_mSusCo6Y&euP)e9SkArmW^X$iaeu@cVWMP5em!?==vK}rWYzWb`>v2SD7tif zr4DwJ`zfWu!bEyj_h@C0k7VD6c*Tan|Hj!pM#<7F>Y|=)+qP|Y&$eybwr#t6wr$(C z&Dof3+djR%Z>_V|-skRf@3=pzDl#%7E2}EUsF9IxJTZQsY`|9^eQESBK(W4~5if?;TfrWGPqv?rbKTN2g1A2pcBwiDwv7R=ajg z$)FbZZG3i^RuyeSdB@KaqNItJ)0FkCimAYdkD+BjLdOV~oL54Z))zL=Hj-*Vi)|D= z0V~$xbvN)i3`0A-ZA9nrx6P!jI5lJ4||C2$R3GlAuEQgT7Qy-uq} zPJTrB+~5aNYf zB@-@#l6shmvIj>(0K$q0bg#5rdQq?!8tM8ntJ?uE(k0W*NQf-?)#z<|oxq$`EsMwN zoQHU}?s>5utV4Ypx4I|Z>lVDKacd2n{%HA}S?pH;cSqMb9(d8h zC`u}R1N_?@d&;N9GrQ1~UVeCI!GUa{bc345>g?R89qS`C;~lxxBE~*>`WY!c6=4^w z;cv=-fvn^13qfE|8Q&o5YkUMQ9|q|DUky*Tyb7LY5ceI!7OO^NZP9VmSkW$Ew9+lZ zm~Gc8dPAwsy+&li4fnacIeAZ$&h!bfffcYKOs|*&9V zYiv(gf%_Bd5QspI`#Vqo={fGkx7*c}*KG*yu=P+BSWk;uc%&a{Cz0)m4{X!g)+Uy# z*l5cMS&iTax%QRtF#MFKKZN!}&H6EKNQ>AZrqFC{*O{!x{Z2|}lr}A5*aEX`SX{Z1 zJgOa8B7SPq3;^3YfDUlcAG6}>Y&!Ca63IfESQ-Or8hotx8ok{wxgmvLg(}RI6u5A) zX!+V>@N&)&!vn3GLe7fCi1KuR)Y0eF(<^0D+z7m$z0zjrGZ>zRp>u~!^mOV zOhNmw?5xl5;k~fLz{uM3M31tgFLS-QT{cys60qjWPi<*B8`QT6T#TtO4uL2eONndQ zH7B~AoWF?KVie$ywrbP!xBN0PI$dr`_ybPnp%$vm$aw+iVQQnjD@cGQ>8;P}8lXIt zE@EjCI&kRBI$WW>QORaqZU&jOFA`D&8m8^FvAKd*>jCXCBJ1tg>lnHQFx<(nqimt2 zuBEKmv}WquEmSN8IfHzZY@(vHdWqqWaRN@dwd3501$S*SLsOz~1{_9Qz5|rz@h2%R zIRFB9E2J7px5*W%Kd&{ls0NqIUY}|&@xr=cV=}GCd#&F9#W8i^EsO80bn5yNXw_{b zZ1OO_6@L67@~32M@Y!p$z&-nNI1Js)phmezKLjU-rA{iKL12H@$r|}@SA+S^3hIyj z11k7t7pvQ#9QE}OQmM|Wl4(oy8mY2@b_^RFaLNR9#y1u=bgHR+IDFhq0G6%K>dieT zAs^y$_ywx!J6a)>`JH5}4E5LLiwZc|9f)<@MIgFM@Qxu*N%pg$_TaaW!tZ~9dX=4H zMWH!(T53KGF+=*L*D4hGBwqhp+eLaL7khKNo;uvBVR$sez&tj6?48@aS%V+u#qmd%{a z$6f7qx=%m`%&HMRDUP5KEviyGiZWK|IVsk1T*!=#Ky_m7j3j+yQG zeS9DUr)#cd92>McEXul!HnIH!R>2bqk>;LJAau}@IP6bL7g?NOUi+<=UQaSAJJmRu zndLEt;{ucO2q*vyVt>HVg+w{h+^(%R7hUYLjx8evxDlEK%w6xkaX?--cUO@jGLtNATuoRCr6&u5A+)|I}?gM-_!WrZVI=DuKI$jBs zN-N;uh(HiUK&Tgnw+fO2C5x;NT|Y7FL(M)wf75sg%>w^sRol}LJacZ)R$9bZVGxUM zf*2-*M?}zll4s-Zzr$;VkChKOYQnTi$&x{{QI=D#L}qN>*##%=mGSs|fq+NXb5|c^ zujom8&8RyuKW)jx#L5t3{&<25@eB{;1rG>-*Bg4x%WD&CsuzhPjECl!^Xh<96tayw zWx+&<=YZ5?qV&VR`~Eo4LxeE`;-&xr0qK$ekkDk$tmH%>!BO+LhtamJ=Z)l21~MVRk%RlV{BZ{ zRV=@Pmzc$#pl#C6rVn&xuo6+xJMX4}2pIk6v2!AkeOLHC02I@!F2+%Dv8_e{ua>dx zH%Ov~xwp%k27@^KAPrGR2L_18X5N-Mz3M%{>MLFJJ3yAEbOcN z=LhL2r;~9_=F>7|w7VxUlB#YDzq#*P4h~o9?hhr}DiK|650aPa8SNWP&UO?w8gU|I z{qO|naKZchbp5qTi|-RKNgVw$i0p{s#NY1YqAPy`sJO;$imkb|YIf{!rOjZ$+R|J)dRPOYLxyI0?N+#;z{t~O7B;1|zRxALhZ z4XlddVlJ{V@fxO>3u(<&H}g=^Wu^dy$ww)@f;uyVq$?y_7eV&l8fuMX@uZvMZ9{FK z@kXs}1UT)>25I4BFJcHkcAGght4EGo0OixG%z4hfmAK zDhh5u*amwB2ZIk7`_f3vrwJlTu{5qG`b~c=cG$M37&-BY&+0fuh1!W5x#0i#=tOF z{CmEXst=8y%bZD#svkxno6TTvj;689lGUn?C7>=Tche3fFF(yf6%nd2g=H$&WluzN zgu($AGr*gWdQ*k|hyh@(-uTe(gz!c@LP0=96-^a5IVV^ND4WD^73+(Kw>d$05&JO+ zIYj@6Cb_)=*K-^34Cx(@rLLZyp$;#&+fyWzX+Cz1Q&tEDz|nRl3-xPN}%-W z`a2SB?6X|6R4Miqj^<{Y8t#Q!3hN4X-MA@-+lVLd$CixN03zELT+;GOCOxyz8wO{ZDI|Swm?g!>LRwR<1Dm^WoN%3y4%9ORCh2%F$6eD6MI) zOMq-e@`cZf)u1dxom&&?co#m@j6{Sq=&^b^Lu()FmZzw)>jdB%vpcgUv8`=*(R^iB z5x{ya14^Vj?@aSfsPQmc0~a-@+CE5!y(4wYa@Hj!JSFzLsXCim!_Jq3s&&mf8I8TC zFvFuG8&dmQ)FjZv9hcgQNHm2Wo1$;EceSI-(lv?)Nmppt^2uXqrxo|P(AJV7EnG^@ z&FF2wH}zXI>x(+`$$7V#VjsuvBCj1CTM*1y)r+c8G+lbUoz_!zr*l{>7T@n?vT=BP zu|!|by>zXAnAC;WyvXHdNt@3buPqz={`2DvT_l9tE_UR{(1!vXWB0=a4KK3!fo~BZ zuwwm}!VWkM=kA1fVJFp-&eonFB3r0H;@rlyop3E>R0!N`XTKB_I$joPYPn32Zm$}^ z++ijI&( z)(`ot-g4O-(-Xl1%c=y7dwWlx>jYP9sZh(YKStUNh@z3AP;}9fhiLpHB$`pO$3hyC zM|7Dd=7Ov33(ezjXpc7in2V8|(0Nnz^4b~oWDcH_kG6zQK}oghR_PMTq{MKkWdh3n z2CfxxqYP4;XY-2XQ{gZ1X;^E~mDJ?xXk>8lxaa3~i4f(=Czn?ERFP3m(N5CglLo>2 zQwhaROEAML>l2(#&V$A9%yXc@2BJ8@HxM#Er^A1g?VwI0SbGLfWcoEOCwY7Qlxvg? zl68)e&QB47h|k zMBC1U(CSQ?GWKxdvKJP`Qq6Lba?{=PqY0^)>V9fZ>qvognGA*J=Ety5N-B}K`B$QG z5t)VOzlKg4I7{C)AK$hX2naKEi)AJkQ_3@tjMGRZip4350N zyzG^pfTi`Uuf|U_jDY8@3D5Ts-!Y*-$k%jZklm^LbORZBKU}il3Su{R9M|xqVOl)C zimsqrdFma^$Wv1Uot$ml{THv-NPc;i2|YC`KN$%f!hJEI(aOIiQ)R8V5i}4;5@Awe zmg_BRgMJ~a%H#p4lztt%vp9B#`gi1gv7uGL!42`TG(Fk5zvUM5;Rv1RzcnC5G5`t$&ziFPjo#k-vU z9>l`O+t1&Ta^38Yka7#F-~a`>#Ei#|>Mvt(vgK&0nxtX+jv8y>PEkMDYd0x$_VqaY zo})3v!!sI9Eoru}ctpojS843;<0PLI&4(0=l#HFxKPivMeNdsoIpknev`YCM%RtJp zpi)tSh~H!@U5-?HW$oX_ja`!MRn6rZ)_-`pqks^H*gMa!v!$>-1#sXG4c*WBbu<+7 zY;b+lEJuGV;=X)n#hNpHM+prH4({v{p9?1!TOH}z>x5ez(B(B9%Ow*1gOZwtS$cZD z9^PFHK9D$U{2Jr~%3S=!f<=;yOf;y3o=v&~G{^G6JUSk;zvPF=zW%g2S8%;+;@IY3 z_a()c4YYd7?q$k3$>+NDjR-{|mO}2>bh*JvKz;2jV@M~miVCU*zRjxEiq>+|q-dyH zEi~q{Ude^z3mxK5ka)*Z$>kd&>+j(ma{Zwh8}^XArMzC0kvI5-4l~L`gG49~?l)0r z2ngsGSVo<-yt!>u7P10txa7Kb`h2bl^T;VmXm4n3>>h6GZ6=ab9fR5P+J>*MTwcjw zuBWl8{?b=`7;Pnxyk)z6{fB5%UT(!W;x8iU>d(){E69a-Hsqrab}6~>kBjpcv~PH5 zcvZIAnsxa#Uv6N~Gyot1elZ-T zZhnm9#%$sMu1b)>V3!BZb9zSa#CA@J6tZC-dMMN)NPtKf@KU10DVH{NktHiNi=E)% zCC10g;&nQ{`~3DMkRnDcShNeJPfHEZ!KA>?BGLxYqOF7D%xIcec`eA^O{PLr5crkb zxH`GW^VTa3EHan{yzM?G#ZiZ4bramcv+qwdG#X|W;$|E#kroZtf`_PwZup^$-dzey z3b`(es9#M+!4VQFc)oC+gp9J#tMqW{N{HFhdOAs8yrqV(5w?tZUOCPv;) z;%tyTmg6}lZHo@C+yF8BJV!lDnoctHW~-&9A_S2%)T4dV@MHW?5n5T=0z3u%ufhc) zQ<`89l#nv53WSr9=sup+B=6GgS)N*gGD?yL_G}wzrBnzx5`-NO@^ZO6SXkFWwEWJQ zsQ_yJt0cdTCd{><-=X7mtTcomg*h@AW430B*CDJ}eY!^1-f<$9`8(R~V{6^}1E6lP zkmX^ezsv(5Q%=Qmwg&t;CI=iA+6hh|hTbFQvj6LE z11z~4k{93F2zR_EWQk#_a@@G==ChCt7GhDo%R&< zy)%mzo%276t$WWhaa#J&ehDmyYU)%ST`B?gNbhFZ_E@B)QAo}_@_4CZlo%vKN6mRD>Q*2mv^6!I z&Li%Tp79t`SH3S-$C2-XWW*Ize|h45_vWu0dah0Bu%k%NTU+@alVj?%g)*I$WS(uC zlcYE|A;Qc`s~0rK-WMi4O=Ax_;y+&n%MN9-dT9v?q>X(Z#FrV@L8u|ULm z{C%iE$l$lb80`(jrfs--ozxLh)qaMj>~sXBI(mwM!-tt??I`E zY*UV9H|vvi2~7xh@3ZnLEH?BS=LeUEMTiS(=EQRm|}yr3+t z>}W9g7;*<2hlfsM7iK#6)e*@Mkt%9u39wwwSJ>dEfK)u8tbDHu$%DLK6O0Q$fg zo+nS{7v?!LdjFb-W!ngeFnd-J-dCAAUdS@y;R(KVT9M-_+aEkWW0aK4d|zIQC0<%K zEQ_$7(G5^GKe+S1ds&Ya4fupem5<1@hUQF>vI3<@F=JC=bh)G%jmC~a%mP*o5Y+oL3ieeW7Pzh(_v}$iAYP+rq_X(?UF*ZUJb- z_cX737nHP)EktGM8N3$0SF>_tQfvcZi}|nC)(5UF*mJd}s|9DSaHe1lDuBrV2eR<8-<`-KJPn9#y!v%f+=a`IDzdBcy#s#b}=bBP+yr8R_K5uZf59pITb( zsF2R>KIPgrLfwa_e-z74?mv;h;2@O;J&Xv#>wMb-VuuOVmqR)+b6(hp&Y)lDPTxZ2f$J_ zX#2oI-~p~MyuFap{R$`}CCh)cKCe2=AX-U*!MT!+OkFNPx6ggd_=E=>D5X-Y^Nl|( z#U#5pmtCKrdT)bnpUu3S@D`U`9sN;=qAkIbgEM*HM)!gr#@Tl)ey(-X|CC=SyF1Dl z7B9wCx4Y?|BSIqyYZJZLFlg8qA9nfR{M{~MqI;e~!!-!%7#~UpY}Q&9&38uPVvkL= zNkEf=>A*V^J<1iQA-2|9a`;MrG9sb7m{r+he`&#_IdIron{r+#Ob!-p7;FZvAPNUpHn6U&A;V24l~EFi^PnUv+R3JJk**CE)}8s<)nV? z>FKMb;rOT|YzHb8Kb(9h2D5YfaF7};R#oP*5BK$TzM=L|+!M!_-YhFp&;dQe;;f#% zn7%O^lP6NGbpfA*^DC=JLPD8giGu^>_nKw1HsSHGP||ngQ^%c4M)) zu?1^r8C6oX+Ht+f3u(?fPM?&Cl9EN-D$^`kum01zrrzwVM-+i>+VbmFS`KOW3Yl&i zw*2MtIomLx=CU;w3B&QmC~V)00&ZsebSRYEdk!g}8hRsC>0~Y-x&kDSWS?H@&WB;` zHM^G+W(W=wAy!6f6Me$?f~)v_Y^;n)gZZ&~m2N!NVMc!(TYAC=;G$MdLN{# z31VM3!T5Dy++=NLY5jFpUejS(zuQOP*l$W$^efj5PPu@|LLp%%7byYuGts><`7)oM zQfhtzyVx{wr-AS`3Tffx*3Q2LP&HQHXj4}aVJ`3#YC(tl&D3Bj5PXC!udS&uqg4u) z{B-qU3UIb@Nd3VX%uu^ebjWrxz|nsN+qSQWOO3c(&h=aFywe}K%V{GlC4-8H={GgX zd;GL$J)%(JVIj12Dl`s-#5t7tp5z6ag)Hw)J~Jg8BWft*wps{}u5MvfX$@_z86ZIH z!(s(;1d)tjElem9GOM?>X}-9ZcP%t#j?9)gB#3l$klcYF0A}V*A=RldkroMCu6drPC^`?Q1S_cCx^e zHut&MW;K5bGAZ_+V@>PLBGU)=k#SkYU|1RhfOi=1R6*WX9glfiM%tn+h=M_JPT&H! zy>99Vo9&90k6oAELp?GmMoWhL7si|C`+S}^;Y!6`RAJ|kM&)tNHLgj#V zKbW|*%Cjl*&-H<`0(r_p3wJ;>k9;V@NNuyB0Tf`a#zv)kjwjFDJ@vUky+MD(Jn8O- ze$3(NWhER+!k}4_?cMMA{)q8{sQBY(!S0l38dN;4#wmo0yC0hckcRKmj=aT{Sv{>p zwgaheA*6=sXdC|r&QJEZ+{(G8$Md5{?$AK5v`1ycGqR2Biw=G(W)Y8kR*0K3YkM;oTrDL7Q z>t2!fA;URt#?-;|Ea8lD&5*fTxcYpLZ>x`D!CW#97)BK2Yk2)LchInkx9UsrXajuC zHYGc!xU=B?o$LT=5_Ru`IFO$Ql!LWhQXzkjt5zwhSyf*;W z2k}G+Ns#%L{4Pn2Gpc)qOZehoT65C4VN@Su^KEKilw&Y~t8D{`CDvijog;bDbB_{=prZuX)$bT@)uzBj4#w>VF({%@=6ZV z64te=Ae$h$$H%56iw=MAyDoK~>Zh*aOV_5a5xqkBlM3RS@3`u4rZ-w$9%{3|n-7TW z7{#;Pnx=9y`5YB5rKUE&AY8Sac6`FaAp-n>>WgTr6E*-*=6)Xzhy{)+vIS77>$6d6 zCTJELB?pwY{n2)u2=6|1LjbUyw6Lmv0||0R!0uo2*IYXh08uvJIF4gGde{Cz=qm{SEa&CeAP zU{i9GHJ?1IS=WmEyjfl+_AmFXUPcHh=5;g*`YEG03sNMVr#ljg|xNTZF%J1Odc$}!ezK2nk5e=U;h+r zR^xHz2u<5&{DgP%wf3?#cI*)u+r3R&LW`bZ#_jwlT&}N?3gF&BamI6&gpr9asdMtM zP%wc7BJG766TG5<4hN3_H$9*i0-=@|2+zz&#m1`2a+D zgPvQ6nXXn{wtzb|Ti(!lLg_eJbH5;rhBR+eT87WQ(uVwfOhf9!s@~f&T+yii&R0f_ zuA`x=7oN?LHxX`zRO8C|yD67uF#5qn+%^d(3dP&#JH-CNK)@OKRS;BeRStR8ep0T` z4og}gso#A)Xw^Ui&>^u^5iNdLrnK9Ncw`c5rxw9 zl8%`F`9glW+5Tg5+xg7gXWM9Nj z$v7O17_C{z{Y-Si-F2TSU7D4*0tAD`7<@~8h}9j^U??AUs4+$PlYmEF`ZHU(IdF9% zHf1DQmP$8R*eAP6N6FTqq%Y>Dj^(%K^(9=Mt80+0S$$A)v#3(HbQp)2J;8ms_7~b zRW_e*Rd;Gw)-B`{8iDRh3&GWeoY~ev&vEeA%J{{CNFH2nsHE^ui64?+?(UM_Y+y-X zjPz!ee^l+zD*hx=;`H-Qoje(2M336uxAuVFVRiXp9r3z{N`SBzdJ#=+RkG*(N4Mb! zN->J}#|W30&(H^;sR%<)`6K!h8Ux;23xVwt0c?=4t%=mgRx*P&v?q~a{nAp{A)DO- zOXudy%SH)(lEz-GS#g@1huj&)u{QuIUnzB5dIkE|vypmCtC^+#Qn#^lu^H=W42LE5 zsr~w)615@A#inuYG@+b!!LiusSbJdXH#-|#DR@|Y1pgj3^AOCxXwhM8QoO6)U8S02 zWsr%PT3In;y;-MRAg@|iWR>`keRHmQ-pGRLNPW~6WiV1dy5Fq|Q`a>E#SsPyN zYr(ha_%=toBmV)1)%mrGyk?mE|`0;Z})WVj>-)BV)CgYsA z1tB5hL8M^QUvid4`{#)Y<;PCsb&lfx-AfgyW-vKtRgHyBe zos+bcZ62J`f-+yx&!m>tgPfaLU#q#2t%F2ugK1X}gHU>++x{M+m`*su-gD`i_G{V_ zkI!ORW2b7Y`{|AL!B7F(l-GW*OW=xhmgwb4*wCpnt0>iuR(0ETr8#8sv1n*X82FCo z){YuJy$AIBn4H%`za!WNpeXmi&ho|9`quJhi-ws~uW+d}wKp*cX;Z@X z1W9LT{wcUnD-T$~$M%&-SUTBjgv1ruc7WQ)+Jbi*oCUP3VBq*EQ^^RhbK zfcjK20oVvTrYX&N5RQ^(Wp|jvREnpyHlQ)qy3MtO;RFr3j)5SfH`)ldUq5<{N6LC| z)qQ&_h(0>tV!Eo^_M#1`MXzS`RnMGvK1Hs!L9?l@?{!<&L==?kY?#x9nfjy7mC)}I(K zh+CIUTRnVfY{O-{j2qnNO6ST=pB(7-!j1l6aKVLotz0ys}sU} zMkKfvUzi_(j~<#AEw}vrahB9pu&k*Kv^~bw{u?&~Vb2#|uQ>1KO{!y%`@fSv)%^_c zzd2X8*ZNIe>a-RW(v<5&p_w3r@?+!Sx9{azdVB5gSmR*iL5vzOtdi5GP%jr{mCFb>yyiASMR@fKRNJI_5ar&sF(sTLYi6^#o#j8Sdc7yxuRhcaJg=crh zkpKT=GX2B%`P=^b--^+{rJ=vzp>H?Gm&OM2}u7b^Nx==oFodtySIB+;nULz>f4DKo12R0zqqXb9}*ayv74clzBQe_ zv#pb{k%84W5=EzP{cVFe>f0E7t5I}z`rme#m9dG_-zA5CoNjdA)Yi8i=4kmJju;C& zouRFjtqq-{v9xYX`bPC3}RHS{y+it1UT1Lf-ht{!6}SD4$cAr=0c4CC)fTt7!rZ#NhcqrjesJT z=oaF7^F3MYuhjj6gSVWq)GIVsm&56vH)W7p<5Q(Ls(vaC~t2sX>adL zZ7)FWOlN7Yu1p9-S^Q!Mp6_@aGBg*&9Jy!bR-6*2IBd2H5*o? zMXJUH#v1141SUqN+O|fCUj!^K zgD48I3(UWWFz6o8Dg=)vwhPIxMH*H?Y@diW0uqqvAPP`)p z&js$#fZ2y6M9F`N5B_e!#4iLN#KUhzHkt*zBM^r{yu%M~Del0=p9C+2!M}(o1j%nj z0InM#MhNa208SEy0h}iTp9b6(il2=n#KX^y5QN3=CIRl708Sci7eG!J1{pw3940|w zA4U9xI4B;#E{$jkK^TpnzZB-iA|MQZ0$dl3f8FgVMi`0jz=`0FxQoo6Nfc%avFjP& zCIU|fzS}^aZ87N7pAJqsF2*yT)JR-4CRE?5SR-SO=qz4bC~&J{otvJek*^WIZr&tn zfmeuB_&5)wL}vkzEbLlbGKX?n+1~aF`ylbab$Z1md-C2IDU(`B8?8O!+H``s@?f#z z>$GrbvPILZDbn(Isn|i);Y-Jqe39UNI@dCik6Xv1^KicHXgo8;1NTsQ^^&ies`K$Z z6;o5eO6b;}2ic>~oT**Tgm=e1%UQu@XqeS2W_+shFO2hWJkLIiPB6ihD zwR-uBkPUGT(M-~IDxVy+0`|)MVtR@5eFnp})mhCJUwcn4B}Yuf;$<~X;m3y`2#^g7 zF=!0#F=MU8Y%V`RAT10or`u5+t{`>jKJ*LwqR;ViUW*g7Gh+xvNHo?V^ZD-`sL*X( z2DiaygioSzQ7_CBp4+}s+5%`1^;k;G2RLm_Z5>(d86`Two`z3}kM}twQPmg`Ly;H; ztUZpy*Hs9^i;-Ky3TR?b3(yG|T8wGt4X*01*1A2D*x$UDP4aXF;UZ^Il+mG>WEfYt z+s^N`Hzs?@dvwyrTzzfGxjs%SN$d9b{kh#$(Ji=FSTz zCz2($89FQ-g9j%<%nYTuW+?Ux-2b;ejZjmjGz06~&}1T;Ydsdd|Bfkx7H&3mz9A(7T0 z(Vsj=9VU4l?d60}LK5{hDg8UFo1rl!4jQjgniWzGqXI)i0}bOvm5t@)jgv*=3&cd_ zeAk{800FG$pigCtb8+TVk=6QQbaRZ-^5~xs(D_1c^7d`|gb7!BwGQJcvH*tXukbSD zxb!=fQX>TRia2qeJd}vLbBw%@VlgDiVtS;53)<#MEzl;1+=Sj8Z12Mm(9rkz)nDM) zuC_mk5xDzO04)0RcHY$0ex{P945Eo#S=;QS#|0caiK0*W#B*wMuZM^#=Aw``-YujXkw z%rLt^m>x{wB>n8K#}!Qd&NYIpIu6iS6yX?<4_Rn!x5H~XwpO_$m7LBCE-a5<61YF+*fyB%b?Ho7QiPlTv|8%X+RR1pE$juMIvQtNZXn{SHQ9TCC@M|JZW8B)@Ip9QhHKI_I1%1T%z!>A? zfI6YtkwGCM+rF^hE>H0WW}v^sMhx1R`M14lvjE!{;;T<~D0-Vkaxvypm4GLI(BPC& zQvqvj`wNpppc2Y=^(MQAk_Lhh#)G6Y176iZim3@t{0vZGpl^MiB8sEBT-VL8-sM|r z_M39t=-ATP*=g_)`auQQ@D*+qVu+Z>x5~tqX9#o*OXG;|ADSH179IUkkD1Zlz`|mB zW@V9LUysyJAFj8=8iSz|bIMm^tAlL#Uu9$vrEHO5K2;t<)j|AMNFj?k3r7>4Ludnlcn9t<*ss2zg z22b_U5*kl4BOMv{Lwy|`-&yM+165I>yzI;!@G@GO1?ynHBfW>1APZ{5e(E?Tmh53sp@=O$w{Js^EJSaKy_g*O81vCi7Vq`$t*DYyn?d*Nv$QHs*r)^ zyCZdVSqI1M`hid=OfS35ooB&L>S_~dE`a_vA^Jk0{|F{=h7d= zHJyv%0!RU2kSK^hdRwJ;5|{1hv1P=Q(TCvT7J&o(iFNghCHMsisYB$UozkCyA7Wz< zlIy6U0Zj4dVD7_Z#;7G|<~_8|*uC2yBI>$rGFo08^?@P`C0VftkE4K2$z~7fJMil; z?lZjm$=p3zOP6%r`mT-|5?qLjn=MF1-%14< zXMu@DyX1K5Te+}b`CD3S`9lRaR~VVNsZ(ff%6i<}kAJr}1hW?B+d;(View{o$AeRW zkSuI`!YCB*!w^#{W3Zt}GYURd#8+{e$%Xdrva<8|zns>OiV)m^sKa3X0)?Ezozb`P zSe9n*)2X0gcNU&A@<5qTIvPs^o#d?Djli)qIH@-%Hn`?NI)qAVP>k+{OueoVe7M+*TPO5hWEN1q~;Vbwtbj=fkaMF?VV% zkY(=<3hAy%kI`-xYn)^8iMwImuS;{Zi zZg+rpnq$Yn4bP5S*wxJ>@IHKcdP~}{D0BvB%~2fkQwB_kz*xNP?vey;&jF%&lIi4B zqHvCsljPc0$YbxOa`eU``cO)Nbp^>VlUcn}>Pp#(H79%)&FXxG0M?g6 zka9zIaogSpj!HAanE=k?Fw#*F>|bv#4^WS_rcY>Eou$u43bC&=>G4TMQ$DQuSJ@J~ z6CCKiJs{w)F#ZFRoh;L&@eJItU0obiFArdN;ANFodXo<()X?WMvOg_7c-1~qKB9)OMQ%T zl=!`j;6E+IzxI&)+U#P@;Y7Scp|sQGb*Trux0_ut#3yz&g22xmVIylr8ZnrT`@rq2 zQx*2Gc~m(&Y{%}6Hk~E{WQH<(SvB7dv5sj8=S;9AmLsY9S!OMse@OoEN3KK045gLW z*_|d)lt93SE;V97?! zTj(W77sogJlbNuTp3px}YUvDlA%vzA|4rDRtfWleep{StCGCx?D(P6M+_Q~Nnas(ZI0S;{W zV+W`$I`RaPs!M0F4V`&%b2h)uJ$Me0g8$Z->}aB?J)m(%K^g&X*G~dg1#KkV6dgdL zQzq4@$1#E`N#<&yU~1G;Q)F_9E7jy?@=0E*EVWa<4niJ^b!|q7Y{urx=>1ri z#S2Umi(sYxJ|(M4skJG(9_{O5&Z>5;>pF*VG<}(?wPfj+g}lk>->s;F#TV%ux+Rkw zy+)1|<}P3*=(dtw6RFCg!S*C}@6dWtr*0MVB1g7P=R|Wr}R2z4iA3N!~MDkwMNj@mMl zlJ9m53DFq!Ma=#o<}-%H%uAr{5d&5Oeb{`l)$Tb#8-`SD(QSjr3J-l;uaHcc8VL~r z8w2}O|Du3pL~p3Y(u&GcIDix$(Oxf=koUIp5dXs~d>**Q3x@IrI+Vb)-GNO>$on$XeuYTmWt zecZzWa+jqW;eCm}ECY=4J$GHi)dK==&~Gqw6#!S4auO4%eHOXw#_cvwt4G2=gi!1aOcOJm20oWPDJF6Tq}1(Ja5#V zk8TH2W+Z{uOZ+MFC;#JFh;Wb3z8wUh9mmM?E=Rbaj$0_rh>NHRn_BQC3h_4+JC*bIZ8cA zQ`m*0|A&)^!E8wTtFD@h)f=i!SpRL1NFA2D-aZ-Dp+&?Umuu1WfLPtd3?b6nk`RPC_WouTxy#Qf_Y=PKUjqOx`7@pe?Y6VMB<+ zQ0kIU01N9SuHXm2(KFCKVM?XE@(AMCTQ1q$0g92VLnG0!Uj2b2s*u@Sy>(}ifw%*cx0?)C=>D@E8-3Lhi3Q z!J7auS3NE8=*@F3x8brlBU@2-E^It;EvES z&M(VsSN75|C#xVFYMbOD+H6Ace}2yVKtPE^=+Z-JZC9^yr0sHTDyVzB=T9Cy&voWD zJ}6^$NM1h7W=nCxGXX1K??{xLH_wqV1mkp8Yn;6r;h>@qB2Y{+<)i%QyJ@S4P z4%D-@+E35ms-s9WGCJ+`0h`vs>C)MOaM?oQt4vuV>9WZopIxdzL0Q~a z-_k<>v7(sg{HuzNbI^n){F159{Z$aad;gnLAGg!qjN;CFJldlo@>b-MzbPep#(MI3 z_=#Dax-3MQ`L<8)^B)5~&IngD7c%HFoWREsPRfS}y_)XarLvJEbb}x`sxJ^{p&zzb z?r=4?$?{=wtGg5$q7!f$GU6fSVSFvCOt89SgtJ#mP%9wcg6#wG2Je#BD(Q=;%xP1j z-9m!Xz5LMt4lc3|)93%xwD9#6eV1991udEk-?Z+uyo02!UKlAEjlgm%iFv^14}35b%p&4BJnnkE~+9Mp;ZZrX3$nZ6JjHdY@RqLmI&8e%?i$ z{f54MB`@2r>CO7~=zy_ea@fNFv=B$-+Z5`OooV;H4et{lNA3Z^NO_}8^-v{P53<$? zzpQ-!Comu!U-_8Ma8|P#G6po8%HTvvL1VKQcOR7+u$ z7d#jE6z>yDRRPQij2jAvulstR7cm>lw#9b!-HL*c7=x;b)w~54WljJCdB28OppO-c z4oOdkbS%dp9ny0X9Mc1xyO`HU^hHFwDOy#)avn|@F|7f?$P`IN$wY`xwCUl`i=%oe zNg+E1;YT2Cb(#P!C6Wm|FYUo%RA?9;D`aXer|~RqSOk%_K-+SG)WOl`!F|pHCYXox zP$ZH|PN*j#N=1)AoNH$qkJOdB>3gDSNI^j%VQr-tLdk8*MVlodGAZmEnkN!;IJjMrx#Uu*+n-;0H>k_ z6Q*L>Gb9b25TnFx?GP-3}L_))_sY0_#VP??Se6>6)n{ZeSrFZy?5aZ1G6jbMQ!)(|5h3vTa=#4)4A`$Wym@u8V(2JM z!Hz^?bqcJWjG6)3d0Dc){lXvkB%(4r$06`osI>IG-*O4?iG1U){`d}JA^P&gJGDY) z3(eriV~Ta^F@RNal*9A5bhim2t+3v~d;hkzj3telht6ta!`ckASy%`HCL!qs+hV6% zy>sY440*i_z;zfo?A?3(s(9-Yi$UFoHuR$JTH_PIOREF#l%UhYUIB3fy)$-nv7X+_ zn4X-ysXwW+6Q#1BboddbbaGR)w@;gQqo}D3-4gTS`&X29QlIrOMydEb?K8!SRw zbmKz~(hl_X99i|T#?rmi*jjRJBmVxmH01zG^W`h^;lL?h{CSBT>rZz}i5%(!q3?JB zxqy3M3piW!gsJ^*e0$ZZ8$`W%rTPW7eVrTm4AkdHMswtaNH+EV$HJ#)G~-HHDEs&ru^zHkYS=u-~x1&DC@Nx6fXOX)+5{H}Rj zf!g*FYZ#s*T#J%hPw@7M;Yc-@r8Bx0MO{n#e8A-sHQadd@d*jD)Jb^uNv<^ST~1bm zV&NZi{fB+s=EsM2HS`w)k={LSsj8sIN47tyWlu&0(AbaH4PS3i0^R(k&j_)nty=&G zNx}VTo0ma>fum0!W7dkYscCUrQ>6COsR@US3&UP2as@ecaGw*5-!#a6Em)2^uNh;$ zZ}>gpgP>PmZjdU`qm-3&Mal$H2vKyEpcY)OZ?cmeHK^PU z5!VG#L<8q*@qCP`oLF_CqVzF%$8mnT%VCN}g0?IRY%ioXXK98u%FIh0JSqI4 zmxh>D5wj8C6H;o4J*}%u4^`DD+ukd{-M1RVRj&-yVZ(-5P)!Gzbry_$$oop2Iho=lm|! zsXs=@2R3c2iPTR>EFUvGYBA|BfGq+OahxzsIA8DB+8el?glL(EOn1Hsjzx%-vCC2r zhZgLlQgSkbj2<3UZ#6W%(Ft|5BAvBrVZF^(kpLL77Wx<(#AyNb0VkqAC)f1YV*&kD zpc*%a654o@Nv=5602#6V3@vuxkWgu-Ah)cv5zSVA`$}1IN#>7sE%bA*r9Hq9p-26$EAO};h2Bg@b)twAi4gU z;Q|>GB(+Eq?F?Q#R9A4^6w$2{Uu3~2jXy7~)-oFO z!d)MWP|(&Sin{#5tBC}-uylD=H#5u(OzJ06JI}Y}tgD$fjQe7GMUB75dwE_?Ww7Qq zDx8O}Y-j$-Yn#tXSDw!$DBuaJ3{n^TbVWP5IJSCXFp8f}G_?$&k0pu zSLaCu$(}mODb`0ah9MTZ4Y@Lb$%JxBKFFCrfz^`7cznsSUrOIGAfZ}SsJo(Wghrtl3k)bm zzVCC{&(lb{Z5)hiwT>||bV%?(r%1r6@+`pGIcafV2N-;Sk9kyf5Y(mmJla>Rur18_ z;pdJ5Efry5>owHOYNvCtl>^IK_=B z=7*TjZUbXWH?yA5n((`6?GjKAIIL(ed|ouNKOV+aCCn*X9b6o0)0|cDEc4L}(gVj; zTUD93N-B80s%G4I9+4&mMlh*P^NIQ>B8?NI{n-n42pm(85H=ea_sG;j5Mn`AX|P4d z5w83WjE?P3Mt@oITyAvPHy`=}v+$$b<=pNz*5f?PxA>M^usG&b@yQNxQ}m?61ktD~ z-LTl;S~Dj&r=-T3Le#nXf_|wp5^8<{$Xa=L6WwTY6Zg$D$xK}0_Rqa53b?(* zv>J~&!?T}RXDbLQtg8{*goOjGcWQIbt z(_aYadGFP7UQKPaOY&IyWl4Xx`f2GwJ}Y?hLV@1H1S|TZR%@W{P8_BkUXib84~|wVUtm3Pvr-VvX}A^b-q{0TCeO1c_{`*vIq0eA))t**7|aL$9Q2D#g9U zY)E;nTs{k4Tj1F=`1N{(>Jkt!%(y)=3qhyq28l17Exw~1-){pr8Y9j~LZ1SGCc?_5 zhE{Dlj|<3TTa}QNuq7LHg71AwEx%_>JO}7V5(xwhF3eH0-W z5FiGEd@Clz%KZ4%XJ>FFmb130tl`W;Z?R`jJvW|8*x`GUmWTH&)n+y zGB_SwE^{$-09tM(YS}ekR<#}{KOxNZGsHRk>FD4ND7stTPFI}Rq_nOM=@mVK#fg@^ zy-lv%HG0pGc#794bp=0M%a70@{HKY^R{x0zVTY?Q4ln|s5aJ$0DfE49J8N+W_qD!t zQuJrrJ{fWnZov%Z?;(Q5xSOSQw(1>K0Z7eelFL)NBB1OKa051>Ax5BzB!7>%^xrjo(RT_iI>7r zQI|MTu!A^>iG#w*mQHW-pbzPaLF{IU-M}ceViK8r1~CSJ3@Ugh>2`4IJE5!eNHyk( zJs-S&2ydwdeE}N^*c2UJ%}Nm{0b3oh*AB}QPFX1uXRLy!F zNM?~BFci?pq{lB6cH0L#zUg!Qt=q9H5MT)QbfaxLRsKe6t-or1K@w``;47_`Hw3o^ zGIwxsIv98+9lu?5n;}R?RSDGu3`b06;`w~p@@iYR9&*|ARW{t+-tUwZn;0EkarcbV z9#Zdo4_k%|LJZbw*brCSd31#ecQHMF1nfO7yH|1E$?erjIA3S~7+ybpNV{`oH*9_j z3B``SMX(M#NV-A>kH9>$&SF50A%s6aJ*4ow-j_oMSc&D4 zJybSIhuscAr$3}}ir4Nk(o}0sfF@ytI#9}a$w-Tx-Xn?2b&rjcgRbEC1D&20OS9J- zc=?!n?g!`w<`{mM-EO^HV)-AQ8%hQ9S^Vky=%@l2g?krJcHAcMGiAKzc zz_X5ZELLzmbe-o34-A%xgwLfP6?Et7H7_9KknNrlP;fW$3WE&Xzsd#|~ikN<)m&b_%vP=kjM##Img3tEBidrZH2M2NMr zGlx$Aqenl{&=BdMsr0o~U@Ton-N|bc)4@>Xvly)|5sQcH$USOGMBd8T`Gfq@(4dDC zuqLK;wncFvs}8QTV7&Pd3vM+TM{TfX?NQ7$NM%`FB_|YnHz~e60EF73>T8ze;E)wg zV%+G}r~=xhQII05B4hNv1@gIFif?3kE4%-K-%9aW?&_scuOnnAJy4K|En z{*$O75+$s$@-Ipg`QJl6X#_y0Ccn$=F1GV5A|E<(+*sb0u|L}hxRA2&qv|tP%8=Q> z*x2UJsMgEliY``t@4;n$1MLb*(j zoE0b|la(bS6PSgJ9H`d(Tewt8^6goVDIrI`yTj%Ewkt020@f-WLBbmGomhZ~%Or-p zBk{Wign_@h2f8y6P!QYS1Ue4y=K{JwP5n*6n4G;u`j$;xv`*TnH+<6Ucg@N760$xc zySAbw$@JTtRMXG2o^dBrwAW*bW30UxJdv>^<<=?CA~rdpm| z>lZt)yq{4)c+v~OeuEeFg=9Ew0)UZ4;8!Wt7H$`C9Yg|Z>4c1RWu0qB!!}qq?274n zx{ORraR({**f*EEd?I4S&6>1p9Rg4%Cl-W?OuH4c!%)SPQ$`Lgr@QgT{T}1}$MCS$ z^BI;+mv(yoUJ*$5&k z_T!EpFdW+4790Tt5{V|!mjzf77=eXR3>N-X1&{yE7OC~PRXVuSV+q`vb~JqkVkiWD z8uI(yM0^$T_{hpxYRLS|k&~LqcF3_{ICW~iJ7ROk?P`-H%2R^3lEX2#f`Xemvm@0!9S#pm?ZlIfiYOQWB#W?+*M1{2$hua}JRPYB{H0DM6 z%-OEG0={dHjmdh4Bj7aO4Th`bXWv%U9O5FK3j8Jj&)MUj?2(bR>~2C+a;WyTP7V>T z{F~#djt{q8GKrbz=GyMwXg?e+{h4P{)AeOPqnRr}G88c*Ps)nV=*nkRtCg>&YoDlT zs`I6%e^v)|@5=jA_i`WK@H2t>L`)VoU8PpfzgBZ-Drth=SvdMSjQ!QR93Bbeu!A#? z6Y&a*+QyXMB|vxYwYF(Q1mo4a%j)Vg=!e_$xOK7_u@o9?)kFGmrQ!{SuH&&#%_kUo z^Z8JK4FL1P8o+3pMt7y^{%)mf5m@*o!Zh#&E}WcuW^`;9th5p3bxWaM=-1jzoN6_m z8j?fS?WFA@#nfzkzEW>h-$shYkQ}Qrw3t!Zu5b`VM~Sz}h&Lb#>n)gyMfbFPSaGjK zJI#OCu4w=AE7TS1mr0FmqOPI(J0btGhxO&0Andu2dv$->Lts3Y!E{dS9HWw$x%vo1 z<=#Q+N_xw@(n55GSmg1YC;L_)m z9E@jjCZ*KKFqzGz&LvGZx7ce5V^-_LOwkazvw6z1Uz?~fPD9oIncZ~IfCsXhJxsXXmi zvs9BCm~{q>i{*qMWBPG($`BM3%!w;vq{O$L4C!U7VwB2U)%uDj(wHd&LI;ZrL{7w+ z2@}Jlq~)Zf3}Z?>>WO7lc?p;=M1Mpc5|Bhn_Y)-&+Y|~VWQO<#iWjZ@m6*H_2E z9qTZnhZ8y^*6~wMQlh+QvJ*-aRA*fyB}U1W#}beV-R-&Z3zS@c7PbUKUgfTrd_F;J zN>EL8myN!<7}A&c!^|M`A}gTjLFTO;&4f7CX0uX1uM?`!iJo4lFr9iMIROIAc)y}e zs3p)Eev~2lzyt-xeAz%=qt>GP*S(y1j?Mx}&dbpCqe`@v1 zX|24c0D}lg1jq<5-k}L&gwJ-_oPaY%##&2_HJhFxDlT_nrq~)l&cai zUDfY)*ys^J#Ovk(XEl+hU@S3UVydcQrZX(1rPbA?MUg8Hr$@!-C@v|H`ev`99ae1Q z79K9bQcjd-PW{0y=a@{hcn%DDeF-!^JTMB&mgB_|m;jOibfHQGP^xvy7(`f#Z%Ugv zPxxd~MkOzg?p;~L$J#CHuF-}RDTzLQ575jd zit1RnamJ`5!_qny4cv)7dX>!mQJOz~FEqU|lx$x}mOONhD5LvW88o%KpB&=P_4?~z zRa9|(aMUd58YZkro;1C4Pe)lyo(;p#Ee#p)=>~)KmYN70aJwMdnXrgoI3}Uhl3-J~>sf@)~0tW1|KXObid{od@(|^e7m0G`<#KeLxlT zZ+ff!6#AVB0P?XM5Ddz*ypG4NY{cm|@xapb)ZvCq&g}iMM3u#bOWr=*#HIE>QufYa z5Kl%=GHdk)vhFCfTg{Z~!<6guLt&b&O6IHZxy}~8)HdGG#MQfmXrXqwP!04s%qKh; zI0!>`^5@ZFANBO!E14>n>q91{y){KHIg`28Hxtjwi}iVZ%4JSemU+sYk0s7#++>Ye zW1|$8`V)G+_0>I|yT1;r7=a03Fq{PGN1+OJnVwFN$F6A*cP2;!ZJ%_}P|~jD5YBbP zw^L@);TJ@j%V(>3TnvC$j-An|1p#v5{(Lu_r~K4M$GPi;e`KW7Uy1L9Qe~rtF-|O# z22+f>4&HB}=le+J&O(+XH9nUfTkyk=%T z_&q@F0~gURqFf6o=pmC^c)!%T--1=8=f0WjZpvXC(Flqz)h*xMM;`}0nl7aKjrPwY zj`^0hYf{(sU)wW1-aC*k`D49v<;hRr&)Wh$SdFbm4iBh@&1vmpe%ws#>XgvGs+v2B z&{Igk^k)eg(vCwrJw5)aw?}53l;Wrr?D^0b;hZ6Yhwh0s4FD%1p z&S2tO%m+4v=D>Axc})iUu6&a*qhDB|dh%Ys3TI{Xwc%6R{sq-?M*n!Yb0ApN z4dl#`@m#fY5@~M?ej_Cp)Jak8j(wYVd|lWb^lS!oYeR7hzdO+aH8T#sF{%M)zHAjQkSvuHDMHd zU~His#bh#t9gZnQPU^-z^@q?kaU(Cnl5|n9n&jDhf?X>1uf|+keUQL)a@Y5&QYdwY zlx{iE*c;rP5;cv9SD&rT!1v^B+W&frWvdmE~Vd zm7e~eOaIBKvNHd>Q)OXe`8TJ^^1b>0=~U_drc{}}6Z@ZX^)IE${x_w{{EsaCyHfoZ zr&auhiTeM8O{Hi5kNWSw*i@E(oc3Qfm4W`RtNiaK7RJ9+FdZH%>tAzbwtueu^PJ3V zba?Cxe{Er9`Rl@Tc;7b(kNNxa&+pk8S@2jG|GFRlabjlr>j(Ybn~njGnf|XMnZNg9 zVPM2#q+|VSjfDx1ft?+Xor(VYc>3?F{$+ZR;^qWsJ(c05G&^mrEvD3QzJjie?J0$<@oQ906h!yzijq*f&K>9 zOn-X_{!3x{zeWGwgf=}R{r@k~W~BQMMEmbW|F1;;GdKSxT3K1YcmE$mD+3D)<9{mC z|3S1)dV%R8sxDRqR-p5T#JQqbijPJh;yEU1qtFd1&BGM6=PCv zSnm|y+c#!+tc>k%niKiaux= zp6(xQzQ4cs_Ra_UvVR%ilO=;ALQY7d==Af{`i0~@w1+i>DVxsfvPtyLWs`P;AbLPU zx;M$+BLHB`=xoxr0lf$PCbI!rz^B)Ps3Iq6jI89ABhndu35T^yZ@-u{ZQhWW)-K9iJ-8vMydwVOy? zjfHK^-f{PbzFI{rNF0Hfx0~gI`D65)3j!B8y{J~i?`2F2=N1DgJI5o z-y{eMdIM$;`U!KB>3t}K**s>fplVLEF0#(pZ7%)QhNIi+6q&6Qm!rRGl;5dVRAcfhWh5o(0^y(5DlkG9s?$2Iwqzkr>uAgC_ zAH*dhjl3Sa+$p%J7LIwl!&ddp`fq7OFUnwYk>S@0>Tq^Mou159{aSr@B%89; z(c{B^(6@w&!%Rrxr?XbQW79isIbQkQB23KK(N?R z>@q<>l*Dbk)y81=oF%}bdQotjr&}Vlp-wu9gU&E?d4fW$(}tPR7HR|HK6W#_a$D>1 z6OSzx&T4Js6%}b(9_SDn$|yawK{CD6Y}CLI-6@-r=RjK(mo>N484Cmx(p764O5iX+7y) zul1r@#AF{6*kQa2(PgNGZ)v%{i+Gx2(YGMDnRDf)Q=yNWz5HzSo67Fuc&3IEV4IPh zfw_U{QnsiEv^NNA<<>I6DL!bxl*Ok|e(!w@B$^A)u7l_#Nq3mowE%Iz6AMrf-%@%* zD5lMmTv(x)N_MzE%wSuJ0-@uS;d2GYr%KJ8o2zbh#Ff4&f@?z;BUW2eWXoVg>q!3vhS*CfdWpP#|)AL;Bo) z|66x^%3IZ2_=}{S<7Z=T!AU;8fJV#u71J2Q^DoQkJ_GyfmN`7_L_$g?)UM& zI@**1s5>{k6a9Czn}GM>S-cXnd2@@5nC)M<>6x5fZ8-Ewtr%S*OQuZkE$AV9Uu;=m z{j8b7uVM`l)vRo~@DYVie|S=j!;5`$nxw}itVJ_6mBzpFnAv_1T6zPnJU#JSin%?u zC(J$ymv7devwJ>IR7OCRMyicIXqP&}OKh$GK}V#TkgBR^t@(IPOoDoAiEg2lik3MT z5YugQT~Fc|cNa~P*gEF1IRi##5PP*I?x6YFmvFk0PqO!!zBRnA3>YHH2jKmL^D6l6 z?ohe7;+Y>@nNPZx^KimOmOpm|Gcb22HNA0GKAUi^_p|EDbSOEzBcUm`DMO7xR}H17 z8sa;KXfJ*WKCoFg;l**aql2lu9UGZvrgJ-8qW7?ewbq`sglucWiox_|bVS+PQ;9@5 zOxIgqOdI&qW)UfqC72>zynLnZB2>{&%#;B02Er)_VTTc+FsW5Jrt=UFmS&9~P+f3I zkFv$MZBGP>h9rW_3O#cHxm*ey<1Gq) z;>i|y9+OC}hTqJ&4XUCVgS;FY=c_uS31BNo{0tD#Cuz#zbvr}K%A1(!ux^q*u>98E zPEz}5MKKjrd(-6NG!%EV8;E@gPQw><4ahbV;{bL5=b8$hLdsTTKtkf@P4hKi1bokV zwtSXzZA$im4lwmGm4_Z+Xc>_7B~LliqgeyBi6CGF3{x)KqeK@hjj4yB5vgJ$q!`P- z`izqXTdr35IRU2zEuyOg9M1dE08T9;GC~GSoi!>kWN-CBSUVy?hva8VsG)P@bQK`{G`?{R6fZMweeE<4f%KW#7-o_gTCbAcEH zCBrapTRtXMaKH*|I>yZ(REi(dc`WTLUArVMTj!THca|;Hz!kf@z?snUm(rb!>dlA_ zoQSTR?_3z@_yku)a+i!N)%Rwwl{DhgHRF1<$g7ud;<72#EG^2jYHgD>aZm>oo&XK{ z-kn}wm2Dz4u2egP8aKtg(HGYNT%|{*FR~?~NksB%^JjI6b4P`>MPhiPt`$VVi0RAs zgdmS+Vpz=h$>r6xBJX$dROay?`yw5#d zgC1MGLr81ZtDl_okq{^M?l-hGL{P{;x&bo_ILHb`MoslE_G4~#K+|ZPi$k~gYk`x# zqR!;2UTT>Qb5ud4nNbO@(GX%J_2iZ3fK>x9KHQcN4N%L0Wsf; z7XLFl$OubKge@06vX;HjP5CA8jedcFU~Y8W@{{u}X0xcdH8dlUq%6{6H?1zNosEtR zi2n+Pp83H5ZN;u>w|JOlZVBK;!=FSK&NtJ59Bp?i0-qVeyjE?*_7HaD(O1Y+LoV75XuV*RE{<`*};La}-u&Dm_G`(45EFr*n(y{M<+poTR?AU^5-1 z-}?H+0cS^g^>f|w*b0FC)-N8|s!kHRFsp#}dx_#F8?UNX$3uZVDWZF6$VeCiWWDxI z?EMstny`2!KLa|jc&NkL;*49&aXKLJ=}9-x(MZ)^E*Ya4fT9rKT>Qq4P(Q)R2|VVHe&g_Bw%VO{d>XS-S_ye0QONndR{(N2MkO23JlJJ(DX(Q1BNz%Y zdJ&7gN7&5jM`cpIRCT4D^km#P9Lihrs$@2m&g%@~&yu8N&dV};FCkaL;;W9@Ji^PE zqzsjn1l085NH;E27OP4vdDMoRlCu{Iw8T9P>u^u(^eK2>QG<^dSgF7-K>DqZtyN6= zYWhJle_HQ6>vjDuJ%TQ^`Sb37=a@5jO2^24s|LjQ`}ZGRaGyY@YnBj`{8aJt_Y2eG z+l|>m7{?4RIVZn3uS|UFSkZ4%4U{+w9k0OEZC}IWp6Z4)5 zarTU51uw%AZxT}>y;*EgQuUs@{ay%#ntSv&P8MR}2_X$LG!5}zQzI#Sug7U;z^Dbq zOo^cCq9RrjNPGRoAyXFYKrF41yGpyT6sY19Y>@&`!;Nw|%BIk|WX5Egu9)JwdH4rg zTnN?(Kc|pc&DE_G#iu#ve=IP4{z`)sm*!5HY&v$*ibp=FYm7=ySG z@(}8kTjGVTW2EaMO#f!hD2ztLW2?KRr8)ErvBob`GGn}iSJIVD}Kb^ihwGutKA;; zd)Sf(si|udAcp*L4#RB#fm?f-?J!TO%xph3c$`uV5>Wwgf>Q>Dv(#vau+LH@`ldK5 z-vgjT;KX-Q(>SLL(A9SSJ4*{$XvlyWT z6XOMXRtR&zO%pBTPxlqRlRG86R^+n42;*n|@Doc&EkI+^&A=-k%#M@IiH3Z1DaKQK z;;RAUp{p4Dr28m&ut7R{{!fVZgONF0f~!8tH(f@Vyb>=wt`1v$=5k+Rp^u`}7pQ&H z+kLBXYBh)X9J6{O)AQQUr6zjLDsOZzWf@|vkD`J@E|y~?Dia;B1yf*u1!o|_{q}81 z3}P<+lHWWqW^pL#?rKA%vB8WAHU;z;3r|W2`$28J7t`6i@z*YQ_yF~~*u^KfdGI}S z9f*c^IDZ<=Oce7K8N7WeDs^#6$6HWhR0t*JiY-IJEVkCwX7u(OX%IpyMQ9zSXi zhz}LPU|>*A%%%DcGd=ZbOwnQexPAICk2-}r$C7xcErDz?g9Fma+eJn$jEzC2+_q}9 z)pdX^gu#EEjW3b(GYHZBTptb8`J98`CzTKlFoHXo-4L0}XQsiOb{jL#Vx`^d35L?E z%@i=qy1@Y~`;dvhk{T;Q9`nGWqmj7~zd$^bcKoupIOtcrgurzVj65v>#b*$i6JD$< z#Vh_~wlp?BLAdV^c>>?2TL1#2YP>A9PgQ&MID-yK#48l|)AVfw8={v>@mqF7*2QbQ zu)*N~=8y7Ylg-;=cF2gBcaMOlIWe@*rXKJHbg~BZcV-(&Eg5TB3*))8TS!Vp&AA9B zG7Wy5sB-BMC`qUIB60<+^%r3IaN?McE6@=?c!rP|V};##hrc)(YS~ zA(VacKQ$;tqk0<58sYooR17lrB9yaCtwczoN*yRX-a}Z<*EA%sBfD=WtLNti%`)eF zd7~_n!&cf6=KY>z}LB%92jCH)P*G4DzZ)C6~H!k-d+29(tcc9Q&+uB>+BAlv?~{1X%v5DhdnEC=VBJD zpBI9QwM-*Jz+2JvWa8Hf>mhDVBJ^uOj&(-}1DOlid@yhwJ>}Ct;k>n&O<8|ZZG_=X zjvyLVAZrgu1PT+T0_0|}Y`z|ax=nq9ZYS2{FFMRvvG>ZCr726dgb;T}dAFWTrKTDC zrCqmintoeV5&r%B!Oo^9fhh-t8Zn*^pyScs89tWwn0v7%DxC#^9y;z-`F9M0m2ER7 z{`ZvXp|@tHY-JA(pdL&uD8@Zn25kB?9oz_)W+5;qG^KVgTImVA>(V?F3K5I+FJ-=K zrinq%U2S4_Vw>EyDYjuyF59 za-Kqbb+QC^Le^6ZhEuXYuR|M!3t{Npty)hdf3lL7lksD$?@YvmWxS6ML@-fv_4O4a?`KdF|WecYGTPw z_`5pwlc=GqlSY!uj+Tp^NVCr6ID@#6(bG1KkSy(a?WY|PB=K>A89blI@kRP#oX2cT z%LFN514jS@0El>YkOh+I+}QHTS&|H8d&2N8^v9&pLU9xbgE`E-IpX;t?T0Sk4kXmL z@|tCs)P#}}ED}tSW#zzvW%va9kX~oFa{2B9HKr_-l=2rB^*`kf>s!p%jVri2#+cL9 z6B!O3Tv6#LF?Jb8s39S%b`C_18D4+s~3It6#`jXeSvKP*^?R7S{ zRqZ0d*C$)Z*!r#V^0!f=kftUx?Vl<+C5cW~If#K5$rQtGaCtjy@zXo0%*$su6Df0n zw=s6H(Gx3F#<^QMFPqws$PmT+ND@sbI!r7OZp&)ZuZ2q#vF&JFUrGS|iOeStkZ7P!cay$%fOF_T=?Lzf~cXAE-~Pt5|m z0%*OmcQWB$40VLYhfXJ`BBG}z7*jnpXo82S&n)Q2^G`bF9(^e!S1{k3g^mp>xXi@? zu_ME0Ez&nBWrQ2)R*S`qLGO79okhb6xl!Cj4@IU}2m0Lv{ki1vC|ef-n?! z;Fhy@P39XK0pZPH$`WGMe_&T1SLfSq0u)tFsv2x zlgWp-`pC5cbp0^E?}!qasi{a+OD>d>CfhzO{2&~CUGQ5~I#fz3L8tCV7u6Es>#moW z0Wt}cLznQ8!Q1jSnRVQCp%lN7xa0^K*9ujfZG6io6 zI{5VrnjE&-XRs~oBi`fs3?Pz^E2M*9%GhmWI|*?d2?Q7=3rDlK)k})i^TGD(%VFH+ zV>;tc9N!C)~KgiCAoDRtGVCAvQyTj`ocq6qA)%P5>;qMg8^v2X5;WV*q8^Zv zuc-Aj!`E&pZwKNk;WfO^g?k1sl<9y~=}`Q6Ba!9=z?mVWdzMGR2v=Cuatl)zB-5TI=f*MbKH zC6Im@b7W$W`e9?}|1y`-D6aUTW;nbu%7dO+BT|mPILo@E$Tm5&uo+%mrkE@momsZH z0_^;fTlplM*t!>t7uXX(7Y;D_-ROBUMS0DEhRfk&q~r7(m1j|)g^%~U(s!3@*|BGW zzxO(H6w=KiMa<@Q{h&c13K-|f$1pd;lx)hJ0|j(1cB2C(YZ11>-zf%N#$qU=e>B33 z0ccl|)S9*Kn29P!_R`JuPGV|3bCaH)XIXE`9>d!nmCXX=saH;o6G4M{z;9uBfd>7) zKjwRYDNFFqF>FI7@j&9i+qgcsJ9ic;M$un1)n+sn=5}m!o9l~PEB?w9eNE{jTq>(t zd>;i?mhWxA9W7{sW_owBidWk60(px$0N;_bJfJ!u1$CLxECIO%&4V!naAuP5JtWFb z@1PV`2I9E2s<49It#~`~gs(w1!IwV}2Ivz*#UX_#$KAsi=j2o#iM_qVFTy-IyGTtf{JDmNj13T4lpB^n4 z4A(nuXlh0uQ?LRRG^0G4vd}SQ#(sNhmC~uG8AO-e+Qr%z^|2?IvAjv!FqT}r>QqS9 zR7n`#g>du0m}}ohpsi?e0sVMmqyvVk=$MO*smAwI=upV3Ye69w`mQr0Uhzn2%PTsS zantEsyER0yE0A<-V2HgDA2`pd#$Wo$0ly!+MRdV-Q{@?1_*NB3mGPV}E9@XM=j%Mj zLgL*iQ~5LwczyU-X8wmdWvmq1JO@i1=y3|0jW)U$pCs>m*1gc$Su1pkFtgye#F~XA z3~-Ej-(b3MSLIrwtysREH+ADGYK`j>lCvFDn3j-#D{lip%jzr1M6*QqCk9B{cd(4K z%i{@}Q(a!0vQIcM^eg{f9+P2jdyN4NA662%QfMc+@KQFl`D{sEn|AdK&;+-dMw~gY zM)LP_#aCHVJ#WZXmzC61>UNC_&3;+i-8H8Gig8|@m73SE715+6jI`G%Cgp|1ru}A< zu(MeF6HKf#)B%muD>dVGiHwnUczPe)B7}RO;*+gMS6Mlp=uFVnuL@QOM_cOmHPpmL zP&Q-TkGBXRq?4W32iIgRGs@3!^j4`0Nh_N(qt>*9WqsR20yu<@gn$8S&V`47gd z>O}aNVLPN2h@4@0phpmvp2!!zR zZ`iG!Pa-jf1y$dO$ICbNN6zL?E=DmyqW5@WQgR&SoTiw?B2uPGvFL2KuTG1kl_={u znnJ-YVs2w}kz-Lkmv~P%O_=gcK9f=^{y*(~1yogS^RJT9B7$^DNS|{!#37{{luqfA z?vPF?B_yO%8Wd5wq(SNK?rx;+M&FY6{l|Cj{ol3jTHmJjo;}aZ?0I56GiUg1mwWRU z^2mK%lb@Q{tN>iI0wztjKe*=3r)nen(!vFDK6vjl7cPnNhdQF6)@5V zW9A#^+3oA0ExbVexNkR_=u;Z0r}it(GG4W{rz&l_S^i(U8pp@%TSw*G2vjH^ zgjw2D-5Y9^5U{44rp7p3wlc|}Ix~X-bq>QE56k8~w_LQw zZf7^%Tr4EzCO89fbwfMCNg5ihqm9)KhT?TSN;4llxVa0?+>nwbIJC)BIY}Pm*Uw2v z2;EQv-iu^on|XAJYf@vsR_c}`&CH=Goeg>~m)M_#E`AV(VLZ`z{~7z9Mb|g7_iwN# z2#Gb1kA3^CO`S#$FUDK3-jwPb_7J0AD7_abJYLsv!09yepW)i$+ocm8d{)e@l^KC& zYRh_*J##Q3D&W|HOZzTw-X}9cHceSz{97+i27(@gbTFL*0P7nB{Y*ujPi1IT8G)2V zCvGA5OxoM*lUj3phmsyjbytJg3|!O%8xr{a+Z5E#0Ry@wM5lN7aI>&e1Nm@y$)^JE zpjU3_jkcc;eR;JJ3ZJWoQKA&i>%6?MgHZj^A4e~GJJ^QJ4x6m8E|>;qJ6&4@1!0g2 z8M7rO%Wzh>hEFL|zy{UUO7NLmvQ+z$`RmBAlvMeLD6WD1=kz%}LEP$v#&;2!O=z36 z;Lu7*c`$OrBu30DkCbHH-Y)a)zhaxrZ&Hk&$6VgT97<-+Q|;vZ0H+DfRB$zs)RT3L zI3TR{S^uE1GB`0)o--qyYwRO_TZGWoSkn5PO8%kRdIyrDY32!u zX%!S0qP$@`LN);f0}*(g&05w!$nDJLi^oGkBp zpFrzz$k9VeCWuH<0iMFzLMnn%D19G;AZ}YO%)wPPIZpmQl32EXM-5M+7Oo5*39ajz z&R2>f-Z(pgudcc)$u%$$hg?HC)j%2vb&vF-($&6b_H$HK@z?uGu7sTtqyjQESQ)kc zy{~mj<0@aSM|(?{D5KdJ%L()goh~;yLtTjp*^t6InsK{nD6yoi1?-5!OnkhJ@J%3` zcC1JHBHAmKuR|ObUqVd>Cd^~hV_0E!E|C}7)VAB^?%0i)}|yc$Q&rio-0?l9uX~ zBBbP_;pA8Lgx-C5xks(s{*>euS)J;E%Z5y-K1;x?sK@OvnFA$8kz*&ZRGV4S zF@&-EN=K~{{N$kk=t6^L91CaHi#r0h>{gS5_d4)g6x^Mi9}*4q5Kqz6^$t0`i}_Tr zJAsW~Fq4^Fg|;_20>?4zrgCa-+|N{7U@)Up%9}cUTf4S_n4&EL*_|z8)(vXb$eM29 zcX$h@hJNybi&kdKDb>ljT%G!ZGDa|bjZAzpX_=9fD1@DLrWfo{c~mLcg9O31eR3xr z^nK>xoZwz|{LqMKkLM0fD~w z4CQEi8BSmF4Js6lEal#g(l5g#Y3eCi)tfZ1#dP|%G(Ee+y~qzOWrNKXUVgMVtdR(e zq_0>gM+M_M+>ghYC8m3Up|=2=GHj&EgQ%iQ5rzan(4pNUn{BBfjd z@uz!+-4U`1937MU6h8bs98;O5-W)Nw3I`zrBUhZ)V^$nP!o8Ti6IEJ*aiJpewIB|{BiGiU|~t+9eXC>EQ-|%g}+bgQXbaKkeIq+XdSe}Ec-(v z)CLZF;yKbbl4A=V)gmr!NG`VPq-nZxWPE<$94i}5D^9~T%;h}Jpy`BD~nKZ0m&B1ikPx3FV4dHggVCaxD@eiH(_g77PDr5!jqZCY14uIU^u8hu`~-bEH6rw=q0-H}C(#9jo! z&ZGsD2xyr)u*NmJ0*n?!-*m1+spF|Wf2(})U0&)qsfxf~X(c{qvzJ{o^6krkBV-ed zquSveaOf5EidSf@wdNe;D#~4iBtt-dJ7=(YsLG&f!hKT9=|Qp*s5v4+t-%(n`wW}rhc(~Yf^Da@oD`)LDh_XlFfdoE&sewKs!ZKy9+<}6Gb8JJasFJNq0=l+FW+6tTs@RfeIM(f z!?p3nq{iE#n2yNM=f(87RuvHTk?z5voGAyhOWBIe&(>Io>th7+Xq3jZ932F{j*wi3A!CQtDN=)yYh=JS{|@ir8gG1TH;s&aR%f_HbtnL7$~?-*4(5 z=;tWX1bNQ;ck^@G%;I6XHJ04+0NbN7H>?ZxEI;VqY~tJbwuZ@2Hj}CG<=nhP4MqJ> zW8a@_5AyASHU4RLC2OZF!VasFPYusQKNAncO|9T1ihXehd1p(%`#YU$eTX{u5>gUl zlOOsMsvgW?N8a9R_tBx=@a8?3x2e<>ts`^7!E=cXz680lOkL1G+V98(zYKZ9{5T{} z35504&Nga)&_&))JDAG5&I-fJzlhhX`)LB&im7+8moi2LIopxVM;&^#6oOA7BHOFA zT4#a5L04!5DMk>{XR|j zbyqZW@7~j`7uB0~jvc)kQA6plf@4V{c^{fLh+gYTw*#we+~78{knhFppq!+#GNa8H zyXoE15b$|+`ySccld!4OeI0iUPRGt8ky5`cVKPMC|May_Rp~Jj7K{`;+3d6{$166ABdtx_34u@e(Uj zvoN=rKS%9E*UNQGDV+UaWPa41{!m>_EQh@$Hi-8H=lQWvr2FT9=C>czT08ko-YEG$ zP@{#g)6G)wLFivNjegmXk**vaf+K@Ds3F4#PBExPB7)?srJa@_@4fhLRy*17>+DvY zeJ?zA9U`z7Tv(LD$R$c`XcwmPHc(hf?|oUzOR}(QF0alWOB1-tBQTt0jGGM^D7UMi zTr(h1Kk8KOV`XLpd4q%Qx_l9p_aWY`Wxs8$P0e{r8x5=e^+6L+NNugte9N%*+le@c zO+>o^(mq_|`H)5Q7xb}S?bW58^tlbS7uwmA%+guYyU9euFqo`+wOB3LeR{jTWJG1SN3SfpBZTe6N^-H8*M=7&3aTD;XBPXF<& z0_=lyF>h?+2y*LJ%X}@I@U_SKM*))RxqCuwq1^Dpy91w1j|aIZ8mjo%xz*f`un=~Q zS8q4eCtVbs2VcrKI$T!yR)0xnipn(MnI(#On`V@I=$f^)g{ZM0ZopS=ltR!&Cqmo( z#X1JkvmTTiLT9`~zQF$qNkAq+S!3V8H_2HlfL>)E25-vpSf$8=nG0o4XdIrCiG>%1 zK3aevR4~ICb<@WQosPr0>GTmkEm>7BMgQ0vXO}?H@2%i{-*X<`MN0uDnIE$?oL`4_J{$_@2;)=>6B7bl4vQ(J>_Hwrw% zzok!=+^R*m??c>nUyxE;Fm?bamko}YnRqNqIJ3C5tU)$H{8E>n{?j%M9_=_O~&S`-V_r>Z}t-Z*Y&b{~r%VHkjerhu#eE4vEv@PI!o8)O$ z3oGwpK}pXrjPYx9)c4Be1?Ts$tu5Hpo=8>f=z1#6ya->Fw-Y}-PY-`IyEg#EL12B- zUyFr+98X??;%O<9fcGtsWA@t@IcAWhpSE7lk01zJu_}t*i8Sx76LDz7z#B@pKD4xxH`y ztoqe4NpXdPokHO$jol&~Qd@|@7@i)ZSy1;s`4S5`nunmH4L z`K7!;n?;+PV zm3ygVvJ$$J^KwO8mXIJhnxrc|EoJp&sU3E1mvi@MjpY<}Ku_oWL^h*G(28T>aKtQW z3|+ZVy2t1Kk57OrBYk|Tpux0d%`FK{tZ(ww8@8$UbrQq{$laY5nW37N>u(chyO9ip zW1ZUS;r$jC6YFtL3y{w5HwEvA4?HwKY0z zyUz1oFAka3{y= zC~sb>8d64EOb+QmN2Ws;=Ci_CL;ul=7m&CMe%84X9#bGh9BT5EtO=AQWN;o z>9rFkdAMYPy@tKOnbjvw&Su{q1x*1tT8D+%(1F+e_!wM;Gj3PAjaqOQ@=gh3XA7c9XsVhl%?ZoMaA=Zq}_d|o32u*2Ymt~5h>b{t9UvNOp zcc+zy=2eT;Vo!$`qJ!E-hzf=KIqkaA`tp@F28CXv1XsMZ2O}`c^TJBg!_yGI~ z^&z#%nPgxzW!}euAxft(;?-^&jk33F+S_1UY>4o{^+%iwfq4E8ayMfMHkBMT*D*QM z`5Gkz4s7~!`95zOOlpxEIMaREFFKW=DF9`XbE+`T8cw7Z<6`;vRn_zCe)LXh6kX!& z&V?X1pDoJ{UL?rj>f(l>P1eR~mAda!9ef5h{4zC_zN3!w9td|9%C`D2t1>>PlHi^6 zxD$yw>3f!OKYL&in8Bd93}XuKr8M!QAoryZwD!>>oZ__KN;n(uO5^Au8dsJ}v^HU@ zZtzjA%O7wRfN=9m7+O3mLs_YH_*hUC5?!D9GCMYuggh`81gCtP!LNIU$rX2@{_q zt}1dsKYQV{165`oG&_|s>f(J~mh;Y#3r5u;R$14?+!QWWMgN5NP>U`2WVe5X0k-e> zy-E1A#DvGD@+3i{G6A$DF@Ma5Pbgp5T~x=Me%RsZctI_oZ5w}SLEoUF^T@BWn(1hl zPD-Rls>L9ce+rI5Q>OsOg2pQO9z_*@F#@tgd$9TB(^^F$RlOce+dJ?T6pLM*Hc83r z@s?#W@2VQ&*5{NI$=VPO`krF!p1B$T$-l#hcU)hq;?hLV?PDEtCu%T`t@jyA9L!}WvUBbB-T_)+#^eG;)Qq(4psU@7UAp_ndBqc{P!xZQ&-^A56!^8y86S{ zin6m!Z!R=Bauydp^NV0?5?5U#k3YO!o8)q(_^sBlrFQk@aUj=xN{<#}iZ|jx?i_L% z^K#eZDiO|NtGM99Qc{@<&t5_|q=2%=iO7*jpr-J>vklA|R(20};(4TInT78MBc+%G zSIj6@P&e0o;j^Pb4-`x9TJ-2rt~T9q!qJwa%?FN<2afEI3Ji`q?(%EbeR0&Lp=IY{ zklxzHnVGjAnCC)=4IeMI=D#S6R|`~6c=t@Lduqu}4V~>{DNp`qS;vuM+EVu}dN~cT zmR@$fZ*Jztn#540y0vy2R*k!PLkcK52Tos((}Dy1==F?UbtLU+x(sKek{*6N#5s-N z?L`b4!G_Ds@j3{5g(7X>*b+oVv;!F~x^rUTo^Rm?luF;{`EcLcUXuZDv}~VR;k`tZ zj`dDn-VAGfi_vO4NKUU7T1%B9(Jjl}Y+x4o;Pr-R3l;7y`jTAe1>x6PuREo9iA$GRDdRHb{I1G21CmJnkc*QZmQR_g@5j1Ylu4Zc)))1{p5Sx(j^qI4{oCvN;Bkp%=S-n>4b)}flb|bS8=a5A4 zhwVsPs0iBFkH3>pOotL+s5JzunIM)x5E)A6Fbja!!yv9>A;j-_`%y*qdwsw=GSz)4 zdQ0fT7}Km4g@HGnyPsFY2(`|UNH=M|`sX26izE5dM0kWQI?JC$N}cc$as?S)9|>(8 z)y>y*30Q`TyW7`ZT$Nu`DQq&*j0G4DgSl{rH7Bt8XeHkbxRMF1;!wZ-{)%j$$uctM z)KzCSrr*L?11m_OhhC3F&(yk*lBZu#K@U<6F&(eC$WODztQZCGr%OD{lT)z2+EK!# z>o?vb2y}jGadlvPL{RKuo-*!P@_HxNy=A2)oNcdRWiC2I$KX~2sL#5|Vr5pygq8)% z-!4o{!_2~+At5nwprF91rR7Zhip&ig*{WZ4Tt&RSz8pvl!SWi2-d@6>-!C!UQumzT>RjnmP+Esc#vJ_PAw`c8_S+Vf*8xI95eT*WAJNMdpUN&vM zRo*!?=AupZf-zTSoH}+SRR^P>cTbT2q!25p%<6=sT81ul16|9tp#Y0mV>VT+$7*Obk^RQ7x8?G_Kt! zuWxhDY1uW#k94UCnIY(9Y0kjN!OlcZ$;evUt2pI-K^s&Ts_eqm_Z#oWr)_Ds?}*^7PC6g=qjLahv?##e-N4&R2vGHH%0 z%A5yYP_!#&&_4iem>uLCF&@UyQ2S*Izw@(^FSTz#s9ye>fTM%LSmA<|L7B*>c0?gH zdHCGg!a5HpBNx6{?=c3M`-x2w@Y3)B_bKhGwM%SqaQ(&Y>Q9o^Z>K5!NLMm?^;9dr z5li>z`H=;FuGgzxp)6h4d1~OJJ>NRSr`flznOTl_nHPcre}^~}Stt+Z^8w3AY|Z7q z=iuu480neYa%w045mk-RN#Q!71%)T%?IQ^wb? z`RXR^H(Q$5Ho0v_>|C&z8e+Iy?=jVLu=AAa+Za7W&kTvL-k7)B)}d4g$WO%IQi zIQD9rgDun2In<9FLpOOTD)LRjQ|fR0%3~_FqUc9WHU{yFIAmKl!^z5 zqiqUupKgbS?vCB8-Bn2Oy%)Sv9mA>u~P6u&H^($m2a$w2~5-silX#G#^^A#iKj{ z`EbAGzy-Yrm{=j`jWuP{^_%`24w9YzU?<(Lw$>b(wcoelvP9GG@C9Akp~+k%;*DKB z92eCYUm8vueO#{OXNW{CQ4^*3ie9Zm&St^;?k? zL%-MWdQE!`gGj)M(F0R-O+LHiI5ztqg^MoOw?9hdqw@BTj9tV=ZsU=fhc7j9X;q1K z4;nEOGK(ef)MGb!nl*Ks%|vgx^mnRZFjB5D(Ja1gkFZbQkH^>u7)(}(5DyRz^Mq9; z!%8mR?LDnlool~HE5-j_KzF}~Cvux=PbXnz+7d0-gI+1Lkk}ke>E0VrflDn>bb^cg zXW~qrw~pt1ryKVN&+1x@Q!nA`6>In(x_z2HT5Mm!vUYIGXbcI!f^;nj4Df|q!RLfs zd2y|F=g>ubf9lyH1?j$0K)$tci)DsPvDNf@;7p$xK1i@_sV-ex@!6rNcvQn4>gsHM z$b-|tD2H8_!{VaEo~y3Tv&JY3`{cV=`sZG|zTkj?_SorH@j-iMOv(CfZOfBi&R=xw zHB`EKqtwoO3=;XS_fk|1y2cB*`ct%?G`FJXVwt_)O+LKmK^;pCYpH_lT4JZwqA>4@ zqP`po*XWPV#YRMt>2sFRJEJC;kb0;~H3s*v$0)VOXm_}p$p%)zTliMOtb?II+CqZ0 zFVzImg|mpAf`xHVCjOncjV7~Dw1FFhQkTNxtJwGVkJqMl#EwXgDUaAXPI=FK@XOYK zo}~?Q{aL?y;*_*c>%OnBWS0;w{wjIcL)&QshodLf?64PVrHaxL#Mq{g=aA$Elg<}4 zi{SAWX$hLT!*Q{wd_knW0#tCh@6LE)<3Ki@JY3{FeBPtJfCRiuB4AZVpTQhhyyBC8 zes63*dneNTsLpBv(|qDVQ#a0Ihsrh=N4A66D=-ch(qKNKfa$YdQeS? z+*=c$pkbs$VCg0uw;Fo>}X+xJ_JoS5Nk#6cZr_}3Q0?ZNN_Xywi`Hz z+E~K+_h)#?kF|=n7~8lan1@n9Kt<=T<%U#1kt4c#`Z3jV>^t$?FfmqP!pO=%*ZWOr zeiL!QNm*Tw$*=T8EFT-)TBa4%-^nHBr%v`ZyrLrWKvy)D4Rt^X6|lmX3-bXNakYsJ zviQHvj9EzoAqrS1Ug4~C9+2wS6&!arD9j(GYjdsI&y}9P9!s4&LPj!Hx0bX=LVLwt z8vZy2It))8=!9Yrs=3oh5GL3K^A-*0lQR!RZHe>2H;tdL7|w3&)2&x7F_&)6lvt>PQ zR0*}FNsSRRdnFS-d(umd&%e!&KVx+qC$oIftT^)@SNVBbqwpfmnW(zeRbC-Czt-y~3&xAqeTmg8;?e>_ z#xW|CbkZ0MsGV5LnYy#s4VA--s?6xq=%lj_WKT`LxgNK=V#a5+Qx$D@?Y?l^Tz`v709>j7o`@G(xoO=at z9h-ZF!Pa@$Bbl7JeC$H9&Hc=7ed(S0zRXewB6|1(Q?2E;4wlEOtJ*{T3eS{}xv`lw zohp*^zspQUU)?@8yTstY@^`JorG3J*7vIv><{Fd!kjNwUG46M+KwgPdTWdJB15>z9 z(y@=z>Qdvl$V>P*TVD^OTJv9axl?S!$!3eh(l`j)4asw7_Y{WGzEyn_tH?NgY_XNJ zZx%AyH&R(-w#uPF=owjwTUls-pxG+1yitxS@0@)$GJ8}qnGmd|BwAD{|7=<*lb2VB z+hdB$YFw+JCai80jv)TBK{J)|LuUtNm#+-+SKekWN)cvN~lu zNrz(T!|}1C=NTvH7kw|@czsR|D=0>s1~<9Ck;z{R5%P#o^3=seZF(7x4J{iR_u zb}{;@D1!1sgybc*+Qc%nx<=BP4BbCz%wG3){TpJ%~OhEge^0)qrMf{i9S( zp(3fU296Bz6zx;WD*k7s>WDa=pn3)(c?Y?nmaK+O#+0wz7ih}vmE&R~IhG(A1azl$ zSBA6X&C%m~FXSO_y3MqQbgp8Ch~M{JMv%bm`fO_|4)Ia&RD)Dk?mN{uQZ1O>Nx5$b zWC@1p{qK}OvZ(UIO&>ka+lnMJv)AaNd}aUY)vlyLHI4}CBj-vIpn`AX_X05K>jE<` zGcNsRe-4K;%_p_R>>lB#5ZA(QLd?)$mTwL#xDKF@6~PL_OL7#ov? zecH$wvQ?vyk`dvpjzgl0SI3Veds;8CkG6+~rdl6xTr4PL>?bB7EN0u+wo|ZSjfZg| zO|=_ZZgLr?jLz5GP>yH~Qs1`|^{EI@y@~_JpR`k9o@2a*uRD-{7 zouakhDo)|?EP0JJ2`%F^9o?^vcHya+&|OJbNzWVao?wK&dYUpj`W>0a*F;$Ho7Amz zQFOt3Pi0s{l^VqA+`gV8$%{4NFU%i!ETt|Dbo;7jdC(QO%GE2c*4$+}3?_ZPTwHCC zc(FZpTs%^JwR4C4v5mGIoY18~z5vt{U(F|rVzJq2Zx&jjcsI$$UxHvwHG04}8HZAH z3YYd?*EAQe{foOAUlyY?OS1_~pLqM2zZ#DU$BD>(LnrMN@VjBt`1Z<5aC@99N z$LRU(b=R$=ay*{8orrl}EM$~(h-8I)KR$oty!X8s61uXJd=jU|gRATX7vRMccy*aj z#aFKN=rMI0bXJj>i?nlH!sA#-T1@4v4aHvm2b|hj*&m2kXJ0kC;~z4GdLU#p4`57K z;>YLYb|cU=}5wD)Cg z5bhgeE-Xci>FS)I;u~RlvbmJ|5xnE4Wz{=*GQyjll6HkPoz5=yPq0hZfIT-bXMO`H z0)zfUC<3$oK%Dslp-9}&+|kh9R9{!t(7}*N$jZ{d(9+J(Ku*sbz<05=vllYawY`SJ zk=Fg~91MZ{=U_!Y(23+(egi9lLVp4ULD^XWke}Z{gCL-vXTSgb2_yu8v6Dl8Kn4B0 zzW&Y13HvLs4(yMIly$JM(*W`Cuqdzyvnbe;Ls;4P`2NDme%<<~KZL9tECB`xi zod)|g>X1BuOZ4;44}XvY&_n=Hi$&4J+K}amuCbxrpU_V~8vIof`%gg}*Ba!>e~SAl z<_G)}`43PZ@@rFnkqF4OH3SU#VVV42Cz5Awl3CI3KD0@PghuRJ;Ar&0hR>&MmK z%>ECRTpRcgN+8!zMS$3!(pi5>XZa z4DHGF42?}Kd1<$+>S)PL4R~o)*knL5)MJ};$^ytF7KKOZ31nakP2+5*r`?rdRhX~*TvOZ%e@7jS+} zW}zkj!D4U5ORFmLgxucB%G}Hp7=+9)W-t?&m66=YR@cJN$;#G@9L&s4do9z}z=%s; zSoAlEz!fj8iM_ow7YmD%lM}NOE3=iYF$)+5gRy`hED#72z`wSbnpxU0|1gSK-^zl;RFwtH3}X31)9;XMrdF2Z*P3wq~kNYz^(~9@$&ak+UI_laR@=;R@Tj@Jk05cbO27SP4AuDq$TRSdtL33be(L8h(;Qo_E z$idFu%Hns9M}p=KhIGHN2+62P{pB_nIWr7c@0ek~p`QK1D`IINWMy%!(~gJbA8h&` z_ZBep|Jhlg-3nE&U874UpAGXJ@&EG({9 zgKIvn-$#;!@NYAX1H=i{V`qmk>4VtWn4l1S5R=EpN#o~H60@D?^ zX>V$8Zpimz*%C0f|9N6=dc6#Bnd@2_^U^vq85kPrI+)wj@^P|)IrU9IoIeMyx#@2m z^P?ThpR)dG5%@s^*2QZlu>7&^0$1e!4~~B;`InshZ+HFMUH_5?{w3yrkFI~a>tFJ~ zzr_6S(e?kAyZ#c~8Cn7nof8nc{X<^l2ZZs@m=xGxUT+v533FZVRY3rTEf@;n{IRp7 z1$LHnEI+ohz#iupE-(lH0A>d^vve$q*E^m^zwc#!@YUS z-)ZaskoB)^Il+8#GqV8@2#bi}gCg^;f>@ z=?37s-=G0WoWIjx&>OZuKW)?AI{!zv_SiPke(020>sq`M?m+HSqW^ZNU)e z&G82T2KjYX>{mWE2>6Cy0Gw`4&<&qLz?^>@f54~*7;ngffWd$B3xpNuk(+!_fciJu z-^M8f!Unp|R{ml$fT(|+sr-coWo3um^Is%*{?H`zsO_bWdB=R zHcl7_$Q=I42jI%z><>2Bb#C}39}pAYpaHP(H|I2jgM;I5eFV@rZrTUH+~1soK-+5| z`d{?|J#=&2LpV6W(3|#ga6+zArN2BICz$iEYofiauBo}9EfBN)OCmMNx4^7AAJ|r%TI2W9TSgFbjYgU~6Q-%L|m$ z;bI2^*f`nsfU@Q`P(ufE4=4n{0u%#quye43fU*D(7YB%g4JZ#_VFfAxz+iTuDgeaE z#>@=n=SPRyKw#sb1OD+rM{#q2n*5~1%8HJ{{Ktm{47f`HZ2l}`VPk_$=JxY<8T0Lw z{!zxl&d&8)8JLsfpJgBxmfyw$v4YrsYsdaOT@Y-+|7^#~%*Fa!84KI*?N~T}qX8rP z+gw;doWHG&m6etGHyRuqzpah!U-pU(%*pxBzU&~*-^OF-;AH=2J1{HrZ+*d>%)jk3 z2Q%|;>*WBk{5C%rpZrFb1I+px4H${vXmEmmr_0I3^-sF&EUdrHg`I_s{hwGOxQUfUW)^l9V?!2xJ(vKYI64_RIQ^6sW^|ONPsJ3((NX>sr&|evvELuE zDhstSbut66a|j=)3V@BB4X6%a=iuV! zcXV=q8d}3da@xqizyNl$7#YCF4WPY1Ljv@)qToOcztT!_mcOt*%Sjn3IOfwx>+P-c z^IvR1fDiBptVYTdX%cXZU#bnHCvkkTRxF`6)A$MwmsY)kJl_0p3oV6&b6GvBS2a>< zN7;rI9*^uuEmFE)Hi>p={PJ-@uAMl5t!Gk?%XtPTvb{IMkkx-lJ5gr4vxzH0OVr;( zVRk_83)5&%Zsp;WYRq{_Mt)z=n2i*U2NKEQ>mO zLkv+Meqw%kS)%X*@#f~Fg6`sN7|Hh}MG$pCi~&?padFCK1i@(U%S{ao&>#lq#PF&N zh@C_R*00g-qb)|9pji@tnM;kv4Zj)~JP0diW@eQ)?la}=&Kq>|KX|-M7)*$^P2ff_ zN0`K{4@J|V>sQRG)4X9*yuqg?%Qp&kj<7jDi8!^#B*0_74B`%9dF}6hjs~!9Z7m;o znEaxVP}8dH-qU1%eoVh0I2CgE@G2BZu16*J9}wJ=w9C*zM}aBLKQQ@2eg0&!p9)#g z&=l$j0N-*njMEgHovdJL*%83X1`{_}fvUS56ewcoWN2k;3cPJAYiIPVC`WoU_u8_{#$APZ1Iz-xH;4c;;5qs6jg?agP0ABqs(ng zVM&^wyv#1GNoBjbNEOiQ$KRfTBXQKU**Z zR83$_Oaae+rGLA|pY%mwqd{$)9Cg6AY7d|c0CT|9#@+L7)&Q7Z`kCjvBL&OD)aY&f ztqHh$-nG~Jxk0xZ1KS-3*pRUK+_i*>vlC2M0L(x+D8$@Q*w#(wc0_g#Fo1)VQx7QO zU~6|<$O>j+2HbtIvoXVx9LyjlW<8*=6%-1&t%sQs*bh5wksK^+Fmev&)<3(!Issr^ zes+LaFEEQ9P#NlI>+E0*b%gDdh^>{agNmJ@G4wX0!VH`G9YTNar8uk%HXYb5lzwp%;ZZ8atTV zIoZOL5G)JRM^G5KTYY^ydsvC^?XEDgz_^eR1T*_A%&aT`E_T?S+*ZmPT0`#`1L|aM zY$y+PhBDrw;%p7$1IVpbGlg+H2&m!&wN{69<-AKt!mtxDw3CFIo0`F3g=uKbKhhi^ zPN0yZ@h#dgP=L2{yG=8)aDahQFi|l#7P2w5f?@ybqHg)-mqq=_;y__TN9bP}IYVP* zTWdp`zY0XnO-!ILzJg(@1Dm1aEuH{2R-m1gvm?;h*4o+-Xy$Hb2DO3l9Z(1;3={#1 z0>yyhKnb8EPzrXa0?GhofpS23paM`4s0367ssL4iYCv_M22c~g#Q`(~8Uc-g5Fiw2 z0yG7h0nLFHKue$%&>Cn1v<2D$SYQiu06GGlfX+Y{pexV~=nnL_wIqM(l3PLeWnupV zT0fcKH?%;oEr*@QxL85|6|GyGpf--s-@xKz`~L!~TOIJrlKw*D|0S$|c2Ea%TL|nJ z4D^6H*aB^Bpg<>ATcDGf0~Ce>OoV|Z<}Og6qq!T<5$Xc90p9T-&<3WOVW3;t!q8>~ z+B-uXoy>33|AIVF8USO)|B5_N>;C|Ip#AU213)ayFv_-0urr9271YG(uZ+W;n1EoX z_Pgr4?5})sC-%Q?>YsW9s3He|X+GE?Ll(gD3uE2sjDPK*peXmBEpOGpe`yJDa&U(J zR}z08cJ4IIU%Cybpa?KAv~q<0I-grT_dikjwe8=g<}VcnywgJBFkj~na|g4TKaK1y zTir^<|DdAG9UPrR%nTiF)s(E^A88g4OlLV8Io;amTQaaMgpKmIs)P~vsopirAx>tF zFk5n~dVjybFzLIkW4$w_zt{g>0y}*I*jYIMch5VAjs?I5J38K#!SW!`EhM+KFed`Q z0n4$&%mh2Eh8;%h?)gXWKYOvk3@r!Df4Qyy=XKlWw*GdkyC*CUf*I_)G_3rV+Uom*^g?^|4NcOF)Ahbs&* z5Hkz`*q*`0zr_`nyTkGi4!BF-_JoachwCl=Fo)(A|DSl=a>cLL9iq21ZgKd776^85 zyi4Dr38QdF6GrX!c{kD@?fz=R1?$TUo76n3$xy_QYS1vZQ@#^=J&UXpFNT=3#$m{wi>hi195glQgpJ zbt@*E$fZTr;Tox#fZZr3^1*;gvjLKqoOIysXq+jt6{US#N2c?Um&7F+LiezZdHZ7> zMBjpu!%-{kANkz7GZg~Ev){=U@DugfHub7k`ee@g9%I5iyobHK2mf#G%H7%gr{?`* z+3YaQ_q$K}>$08V<)X1!(1Q2RaJg(SiAiQccQ5W^afm*}2!W^5dvBs+fO_e@<786X z|I&kCHRa3xwySQ>%=68yse|sttERDn-P#}M-=mQt9%!pA4d=8yf)M& zEi$m^adFyxW0aU9^<$Pbj*=R53(Fg{tH+)^sLa`X46<&jlRo4rZiB~WqiX;vh z4AdH0+FC^X#>uqfjvrvM{a~cNk#@YF3pgD2@FeH_c{N^bPCKO*_7Ibx?Jy9H&2^kv zuxxL~Dl5hF5GdB3i;nYP9CgWGRg_#5RrxvpLrZeP6t&~wS%pNhXD;7x?q^NKgoVd8 zBhH%gY{kK;=9sWFGjt`JeeceZ-CSL_X(x8q6I%MRRA%>yV3~VKJ86>5D|(afkB;_ z{=3h78s7)5Um_4@HRvGzAP{|wXTG<-7-h>I`_OKC7p~qIn=toXj{sjlcbn?#RxT$4 zqES65jdGc@x_j{V29*{r{*|BpKHvSpPq66C|H4mJ@iK!m%xHn%xq=h`-{cN>;lg}l z=Y3}$lg`jht1V%AVMv&;#d(nx<@Ovizg3D7Fc&d32`KNQ^hUBI-JcYGr-Ztg#M9-z zb-${eff7&q;D=Snk86PDi6L=6M51wSM zyo$s${DepHx2r~_QQD%CB zp*>PRA6>S&_9L^Kl$99RT;TpVide;#_ZAgz`o17Gj`$H$p(ETl3$ZX)9YK#Q)=;7? zGh+5gUjtGt3b*4II6Fpq-CC*eHy-Dd*?E85`0$o3v zeOd-83Z8t$@90mtYQC?TtabX>zi+fI8Bd~#Fv-^7lP=#PGesG z2K=2<{~wBkjh*#>2R>>=5J~jAGfE}^fokC>fo)6d`&AvbK~jl0pG=1TgD0ib{a=nl zTB^5x_!M@5-dqXfgn#i;d{@0BE^8tYP>HN|iD4ZZPd?O*5T`Er<#RS%*=}V4fP?6M zVJO-c@u_n??bD?>olKnq~E1ovS?a}9vt~w zaAoXpVsB?L@v$UOB*okMWs?k<`>fmx+}+Td+9k~`YFt%25@u+RUoPI)BKj&b|Mkps ze!m-^`+!cvmi9?iAS%Y>sBWQW!bq5%Fib6Yp6)eT|*ZGSaqo@}eXcloAxO z7G)U7Tj)>J!#=gxeo``YiKv!^|r!qZl|b$o!V$ z6zZI!+65QOH^_#vqgg(9a|tJO{lFXhx~r`dVml0vSPQx6v8UaekF47?$L@c1)cE75 zj%k_mCA>$Lb}aMA(4$L?Sw#5Fk61n~7j`NJt7DCI%a?I$gDf~Bns(brXsx`~i9_y8 zqtq+*B&CsK99g@(nCXPf2)k8<<%PPQi!@_??_ByqpR)?wW1Afp>wXTiDJR{NY5&R! zx5vW&WChlLi*x>JQ*`5`qUM;<5We5w@cRP>SKRMIJ~!Neqetr)kEO*^0wfc=NKA?} zHikDHiYC9(HVWGX-|tM`y7m(wcP4&gAGjfDWNt86d(Rv`ZK=Wml3=dCC^B|@e&&?$ zY8;rb_c?Uc$+;j|SFa(zuMu5k8otrtei1oKsCtHFz9f$y`mj(JgeoGU zIsU`bZoAewR{5*a=TDBKWVL4)c(goXe14-D_H=hELlXn9 z+X5)a!=RDB{WzdIy6|DnD)A3pXyPk)4k6n&`VYfI?b(t?_anub&8*o9cJf-Wh?o)Q zvB<#{ItHmJh<*tm*S<)bqJ3m?0Q|FKw+nE*S5jE)ntad#zSBj_LNsXPA-wI!M;%t+-3hyg55}NWuqo0podf z4kZ4(_mpHsN+Ji6(PbMYq3_GaCVgR`>%E-q{8!Nb;VAy6yL9J0{SjHZJ2U=gWQi5P z$i@PTx5190oE+d^LKPw~hu!>Vbo@4s^fMx%4vQY$#*_Xtip0Xf#rjtmiTTeU(p~9a zQ6$*gfd3jr;{2z>`iCp||0s$C{v!?nbhI*bH2W(Q0XzKv5{ZBv@c(NJ0v30G`2aw1 z0PGMd2jFA|D&9pEZo@gZ5vAK89MBZ@%?>n&#gSlv0oXSu&;`H(Vg|bXdak{TOu~dw z2dDzIGjuS#4Ql{}tgK+6H5YSZsEC}F3@iY5dxTfk`z!Et7q9#&!Tl-A?U)cFH(!c}V$Br|i~s{_odq?XUOWx!XR!*8FpvU-Q4F|Lphc^S{&o zN#oD9Kgap?``4boQu(XRe}MG2Q~W=^8TwUYTE*+w%rc{i-L#;*6@2{sNy7^te7*Lp z-h1iSR2PWSd<>S{{^$g}kAUvaUe}li%Lb?D0V*uSjcxq|8{mPj&?-|j8%b%DhAbX# zjv$A21kYneq1BGQd3qJeDJ@y^xJpU``TJUIUA0t8 z;gDn1`hdkUhmX6my>BGvROQQYUvF$di*-L;o0`?51<{V=Ke3sE;MfDUxn%F% zzxX5#oiZ*&8gr$Q(`QCUu6{^Y{N2WhDS&e-MWrRWitdLNAzY^7mq$Ayc#Le16Ep{H zhch@!-^cZDUP<+btO>g5TEL6wgigldHCcW);dOQK8y;<_!Z$J`xPEGr4L1oFIDl7g z-6DJJW?ps`EU@f;aS%S%J*lMZ3z9x}tf!_5&0rQX-(TP7#Mo%))CYW~K|2l`6M$(# zqV;jtf7OJ)d6H~wFiHOHHQ%pb4k)+DcQB*1T+n+3%A|72E!zbk$HW8+?xNcZl8VR@ zW9{6_jNZ+g>BP4y%GA%ue4h4h@$vLb+wu$;vMDCwRiq&zSenBy-+w#8XlfvX%#Z zX((oaBFL@R`*z2XQAu?oGx#t@_CLaH_Yw{>GIMvp-jV zEj|NLA-J~7y*Obq7$y7_<*Kg~Xy#`i`x(=06eho}gtT(~ zHQyR-VubbfJzy6tS4A{;4?@nPrV}wS44YsOTl*9xeW;|E|JKH9ynZ>A*w75%?s z_J4{pOg;b4=#Q(&*n9+_%{roFe#J#2s2Y5)oJa{tt=l`<#)LbzQGABd(P@m?Rip|~ zdFfinNYsc}3^eLfENXG+lOveJ(J51WcJ7)>Z+m~nDN<=%aTQHwxOhEQ?TB|XaiU#? z`BHZg?H~x(hr)~0G;lfa!TJHIVkH~ZK?XKaV`O}!%Hgb#euJqYPD1he*p@gU2qPt1 z>T_ML>cf{%MWql_vEu5M`<1NU7I2zOJ zUOJm}kHjLM)xed^vNP3p)$i-*#?aos4~G-uy=_Be_UMsnj4;5@Z>JJfG?M74!Gk2x zT=7Vg@eu}b>}3Lp^o^CGHS@F^ms~TD`@%u`%Fux6Q?<|E=RNiuGcS18wQTSRSvEx> zpp?z#7`r!_b#Xo1j|sI3FHlG35;uJ|@-DKg_A-#?t(t5YeIcLvR=n_y;&^3nGWnV+ zuaGwN=H~2xn?n2EP(Id+$68{0^p)WcwfUq3K!IOkidN*71m~&usQd!s%;JPcrI3rB z)IbEzV!ULTVk}qi8YHgeGkRp9d{FgDib|Hs-pZ89v&vNv%@lWv@+-g$b$^mt&uI^T z3~7>Hg7>o~nlaZn*R6@rZMM94xdIOEPkYsQ@gg*n^4r`&E@3-33(p!<W#6TG86O59_we+8TJc^9SSjnJ={N07>eJ|(ThTvMbg%X*;T6%RUU+I7 zLmul(cT;uAa|VB=;K0`bB4PC-9Bgi5Fn9&BWzC2n&o#vxZ#J(q zf4%84c7M!aEFiyIZYbq?>X>-!A|F%E7i2up_`1cP$c6*0w7wQ6EH&^&PelhHu! z>lWkMj?w|E=qaVDc$1`ocd6dCry5nYOzBO>JELX&SxjI(YL}E5s6BoGlZ{?;;|~|) zy_`*~1*l5W4pWd`ansJWLr(v?-uqpLvhexlcz2B>jZci9E>fe}$SwIld)1yPAF;3P zt_1p?0C)sIAh`tIM}BZSoGMuN%gFVR-)|^i56h6}TiDwiV=Xro z9g5^z*i2b)G#zTpxbPs`JF_1`L=c}uwI-p*8{uL$nd_R!c?rp4v zL3f^QF;9<&bBx}^2zR$ir@2K z%Rpq8P?$X{z2V+6$}6IMAN}zfw~|ZMuIERY@wZLh7yU$_KE?w9Ci zm3Sa*x+>)g%H;ASY3 zv5Ryyeu2;HF7UMG>*kR=2WcrdhB+iFpgk>$x5ay>hvNJN4)8rW^*|%dfs$v1xNhx35GdbT}^SXGYkbHO1`6G=2H`s z;nag?%bRP)>7LC2a-XU&e8Wf{6EZ$w?GyL8%q(-_-+j|+kXN^Xz~2!$7Uaqd`BBq& zbzKFvIB1)Pb8=CW%*xcLr;FJW59!h&tOtjIT_UX4pLG5}79;TRt-6}081uugy9xS^ zE08%(OPz^-zD}Tpd2=ReIYaIbjIy-VJ{68nvfph3Ru6bGC1Zqj5l+^Y9f_%;AF9xa zBsfmaT426)-TG`Fhlq zNo~K)L)v+BdV-mq|5kT+zH#DWGb?KIGBOap8J^vzjbb+-Ls$^NP6FgMvi=%|KZDPQ zuhLC2u27?}Y@IhTV&kNZ8e#2E${Jj)a^$|3H@!RQ_WZc{r06XZtIyt%mwKiP!hww| zs)A=`ly?*<>U1yPZdTLdoSa&st?d@KIqg-F0IfQB$%`DX%=qUsBlw5o0lfPi3*4a{NBM%fxw}TfGp<^ z$r-h!JA%8WjQtr(Zf(xbB6BmQzE#Eg?>4;ye>*6({WwIDe^62oL6C2&k)7$CWh1e< zo<``oPAKuPCO+GvV)jSAN8fZGMvdCod)yB{Ts~JZ_YBRjN=q$V@~-pxp1An(&t4@t z5}P951SRZbj_O>6yJR{)90}%MU)`)1+uiNL4J_dSo3}Vvmlx=DZ+z}jD#`r*@`wVd=f5uyy;+C>GgGmBk+Dv<#lbw$TT$}7e(`dOFDBJ5e8vMi~?;qwG zJjuWg0og3SKKp_it+6V_$<&7@O;ykKe8BJ#3!4b;zRl1H+*xV_a0k9ncg3Y zDYtx2u}0pv?K*&*>U|cc=a1!mqQpN7# z`ZGe3XS~YSA7ArK99zcM9$BY(d^(yy=z7>~O3v+slp7#Ae$+;^{Pnc{U9RuvAzu$7 zU+xcnJ*0X^)1T%fR~mF|F?)DwSJyMEyQPM>*DrS_wU^5;}P5C`cxax9Ter_ zVfcCI&CS59uaNW=Dh|hn^M%W`uv&Vib0N>M_nxEB&8UP^L-;zvu|MSjTq}p z8cjP`Euw21yxiR79zFBf zcQ)afv4ld(sBcuZ{+O@6q$2IpH#;{b@iKCDX%2*dW=1K-eJK0~O{^ilqlRq{j&K_uvP5iS=*?ILNItr&P z65&H=o}{=m^0RHxV(xf6Vg4s8R20v#9O7eaL#?_6xOdIAsz0zMGEf8{5lZ)1cDCBE z#=eP>FOj67N~f1v9}4NcXM`oaG9kJrymBV$6WCLR-SvXm5=lkqi+v!Uq^#-VF_6(I z9gB{_z+N1aO`Z(i<{>;wrqBR;=Ox=Fcal?!U?U@7E($xGurueCQytYDM=Y716lUx( zr-Fz4Q$Apf#(BKPX`FtCWSQOQHi|oYh+R6;ce2g7=wo^6mJgKPFQhVQ@@xT{7YItn zRACLGkA-l^u|B%z3}g3e8lAZs)nsUT%a!6|Z|mhPxQ&**I39aEANq|W#6T?YD({AQ z^ts%*z!Ug!NGk$pI1{Z|^r0MO0I1g>18rU|*bXB3i13h-&_XykKR%m0-Y^5=rU1I6 zb^jC@QT~LovbSflr$-=G=>T$kA9M~^;hq_ROkwN}I^_e|@DqNIiCB>ATA;>$6@y&R z)A<;(RJU?c*Snq6OZ6PIX?ZA4kYXiFy&n4vwI_idLMM^`j!NYN<(Nh9F%pO`QuZcd zKruc=rDxzJWI_uhBVmF`QPtm@h5#8P1x+RmT!jn}3$4A0Kdb7w+=lqWYkecs;(W?6j+zI{M_El@rH-4FN97$TEdlVzLsz1c(nf#as{cp zrahRF^tu-J!o*&n?;HyKF$B1F?!3XqdL($CDZce7l^Gs#qxg$4DM=*cU0GonsV^j0 zE>X1UA%|ckDE7&{oO!YKr1)?BqE*47!vNk!h@5XRNnWBLcAm=u-yr z;ARCQR>>WBEPSb@RVw}$oePx2{Zj2_ao^abNMx{VW98f-ReV#klC_+1dGb_6F;qj8 zy#lds(W#(tQtpzSKBBt9owiaI2vesRQb&}VyizxTkj_|FlQ`GCn1OVvBjdO;%(xT$ zI6c`~AjQm$ki&UQ+A2qP{F=_$sn4dAO5PvQmb`&7WhRj0QOv| zPf3tTipp(I<(Z^$eSq_}j9t&HP1Y*C*<*w0oh9U5Px zrHBs>P?^4`GA-#X2dP&`)D%Zw7EAv;ro^)+^JT1n0ANx*ejC2`guDm;<4S+S3O&M^G}ZGV zN)CNW4wo3)*`7~AD<&un?D4Y}PZq@E_PJyCU-ww^9C|Apdc!xc`p6Xf?EkTA!6P?<- zfEkl%gd|J-RXQtCax%mQXpT<(77=OsF|W+AamakqhHHH7+q~Te?v<~3-6gMMg|0`a zDB+ArVuw#-2T2#z14zDN{P2Dj-Dfw09sJ zs)ygx=mXq#(K3l;+~${L=Vo)tQKQ8_PP$!}80 zk5Ku(1M02Ni=z*cVNF?8O8Ly4l1No`8h7HUHnFcm_(8Dih8Ei==EODuU6X;BQxI(T z(rTD(Dk~ZqkP8(F?hmf+2`+|;e27Qap(o~72VeT_)KFATzE6mhd=;rnPs}b4-lCi` zbDi1%Lcx2LEculznLS-}&}A#=az;-V`762MK5F?_a?O;U-YHhf3R6^XcOnleIrtOh z2IJ(eORW0jr^eeVix&Fx^bae#$~3r9(Jn87U=Rb`1xpW6Y@ID74lry!IrifvQ)x zsZVzdVvCv7;w`e4pU}Y5!zRB3jMrwIfQk2ey@gW?D9vI{SZ^n-UE2r-6qr5&{ zb!Yyt2Pff+m@+qbo$jSinT|Z*8PYfE(AkjIf$9>fWF~o1i4-QT9O~BcHv*E$+a5?r zT%g)pz17cHOu*Lw(tRtKA9}cFL0+E?h#~KNVB-d6o-==Gm=%Nr_-wZz6ijkI**=+~ z``*LJErC^o%IdD+V3A|vc&s|=5FMOt*Jqfo@OKM)*9_ybkG$6ewR-1UiqkXh=YzzF z%m=OyD_cBOq1C;q{)?kuj!Uhzj9%r;f3QgB22oS_clVyN2WuG=vVj>XPe@rLDmd!f zMQ~dvI5WDXf(PRxl9X$Fyi?Zv?tR?V#bwPXwwuNgN^K`3c}Jd_mVB8|B(jRYW8qNf z^)PK+FdgxJatE&r0pB7&cgEVt^}sjog5@RLk8?ViexF-Pt})cSre9Te9{*T!PJHcA zAyit3g_$bsdJ0*Q=TL(*)4gy7IzMw7^j!B?(5+R{T3jQ;v&ihE`6Rqx=7qo$&Z*b(QB&=B$b{sh`HHAqm&c!QA!qi@ByQpW#E;~|)+fbwjD({`1sbG?2=&+dVEUk*X zWISI1M-w~w%Yc4M_fup`F1!>$W$(uokjx|M=fhlS*MP3P(`{zcnTw?MP&F8GE! z*&gFGN}8wS@z@71r<0bk$tWf3wq*y@O@8+Du*?*BJ=kAS34|d>OguyazK#moqqL0Y zeP)%TUzbXa>H+gYMyVda{AGYvXTzb~2Cf6;B`f^Z2?} zY{R+I%gL&meN!W;@O)v1Q82zp%-N5%>t)yHcD$^1+CRcJJ}S(iOYrI`;1**wbND_O%5laN*Qb&h82%%-+=r^ig%nzga=Jta+U;W zqfBMBph?i3Y5ysFXfBR|uF?^7RE0qBu!xyNrOK#|1`--JP??vZ2BvihW^M;QD0dCweV9n z@PL}FL{eRw{Kj;B{e3|ns&JKX?$7WW3+Lu0w%-HS1B$~6>KWu-^y=PN9<`wjynBAR zSwM)t>60p-%G&d#2x-;HWa98?N`pBMnk25`_GWIV=EhK6ie??yHcWmR&_&<81^<2T z89l#-@nzoUX{x9ImW3sqAMEo4(e(CcQDlhpix0i7NShII5iF0H{hgBUX^onhv&s9( z$`(wz4Gc$*L?fIBI<*P*HJ?yo>=3OeG~3gKuPKdSFsT*e2{ratt0r>Ph~j27_+je| zv0UWRC$LoL#2dL?+P#)Y(|-1lw%H;95yYx8hT@J&yZ4s3Z9Gw(L=wO9UD)Q#VW-o_ z*kNtg@58N$I&N1pXihJgYHD82-)t1#e*!>SVMaXHe1R|jQi>qhd!*0)kV?NuHp0Fl zO*hY``0ezRVw>rDOMH69$d7|0&kuP1*dK@~mH_sgm7H+7EM_gXl9~{Ro#b;b+)qjJ z2j#j-jOR6flhb8$Dpqjbm?t9mA^8BCta0wOUrR7B znU7ZcOAJYkTGeMCl|t=fEWTp3?s&`ES2XxfMKn&G=6w|d_+}Q20lOU`O6=NEZTW@t*v9SrzL`R|P#;D_jfgltENwQa zZ$X>SSuYM<*`TOeh@+0mRUdW5BJ&y8o(yWBt))8^$;#>4Lx=?O09?)`$!W!sbM?>I zd+DCoSNY~;Wlpcf#w9dAeJ1sou$hHw+<{_S3rl}UhM$vEj;=~+POHxvo!ZDa5lj^?*}KKQpyTV| z8V8EmFMchUz&?99{|p}$XTQ?38bRM{#xkNn zx{6=w3nvp)rq6^$eX)|YIlH2C&50WbWj^;&cpYzKUi!E!gdwDC2?z?373<=0<`OqH zSR_N7z}#yE5L_Ctp>P`Hp<{F#Qtr3i^J#K=8Ne^#g?W{=z(?H3_AzAS3+7viS^xK5 zd_Jv)3u;xHeQz0``6-AIe~~RSXC@Lh943j${>(yFI_Px>k5>7>GYu}6`F^fF2t!0+ z=V;Tim2nllyZlc$h^nCT|E^NA?1rAkurYRmxZ3(O3b`Bq2QESx=#_H zGJPObcRG0>b(7tD#6znE6B&N;Vgi!%*}MG3WeACM0G+n&Kw!v49Ak-!7HN@c-+Jb*An`j z;-FgQdd51xqS2;VZs+818LcmH*@?!dNorvB;u78<8WQ+A*@>b=ra@>Qej{C^9^PAr zK4~4K`C9aBgY}YcrARZ+6=M@Wq$(`r&rnv()I#%2@}Kd)E1pub)grI96vO@Sl+j$r z!D5C?YNF1rg`2g#Po?PakWnQA<*^fmn~DvEbFj~BV1K{h!*rnU;clIyJOz5oI#Xt= z2u%@>X?LSq5EwkZ$KCndG<)SbTA&>wqZyuS_^7z>wXBaN(+$zK;;!e$)uA2@>ksR* znOa*JU};0kb`%nPXOk^Kx%pP=QAPCIGB6vM&QQ#tKALlAT==`sHiU`AAvKxytM*Dc zPvh5ZUopIMGV@t|d)aSq=_Bc@xa)0ivfDe`zqY(!3k$N9=y-J8Maqd4elqWYE88yY zMqYaDvSKCIDgVZ!zOMd7_q_!FOg1^A{Qz=V#CTQ_yM`>IlM>k+zDw-S>ey-WynbXF z?}Wd{l_n&Rz}c2Rj3j;vb^HoY6Y_g6{f_(-No+A^^N}b;G$cRBl5|(5hT{RP!5%I? z84s2^n-D>p7d*0qMeBEFA)5|aRdKED%o34`o zKFbe_=85?V>LpaTU}Xh?2M_Jy&^yZk^P1-6TNSp3jegSN)6gd=f^?|HHVoNeUmVj& z-$Mr&=WS9uy*paV9T7Z-PyjrR=Z~GL0^3k+m%o}^&rp)xKL$5A6xGV+B;pc(;ORI&#rXzA_(Xe0FsEHZaY}CQE@^FT3nbZHk2!0Zsxrh+P z1OE+msAguAk9II+=lv@x^$|rp24XV4N3>B@rN<8U1HA(^KTpE$p_Yb|N zSkC(L^IxyR z`d;)xkn>2iB7v|p(j`j;j2syu6z`MQ-_elZVaUvy11K%Z&N?Q+OxZaobihp7D1Yol zpfaI)+(sSQA zSbEX%GRO5C<@_w-D42leyU`~fIAs?9cVA|+y0D)n`sA?kJPCX)osAcAFJquX*n++| z$6VN{BqyywRey9gkHPivEP<2ZFoU+`ezlCF7-ux*37y-QR^GyAHe7gmUly`9$!_}J z1v9&bqePQpJWF9>$TuP|d{mdO21m3eB(=!0jPowyI@T~X!6{XG6YRehdY^s3K!jP# ze3o|e@ew7oOiYJavwRp@t8Ra;j>j=T;NM?>Uw|gQk;b?eYZ=`dr%WC+LW|Gi>dvx0W6FxSiy2qt+f_dLXpqO| zIRRy3Ogfj;JKr;Sr;*4;Taj}{D(NoVDYxTsY(y%BJljE-*&oVk5k>*;X&{g2#a;6+8 zmdvL2w0d@#%H(8e%MWYHFrZN!M|q zXfBoqEX|mXLv1EgH;_fYV*J2i669Qw0_opm@W06QzA`{23BqQh(i8O@AI41js^meK zVbKN{PgGSfM1a?iHvMWw!ed75fm$zoXw-TU`a;C^2htjg9cjMG1BGBn7)r~x;;iqG zh^$HxRFig7CseL3Ez-Sd3_9Y799xuUdcvk|p2YZsMal>dfi>vguyREgzBgNR@;-j3 z>jBWmF+5F8`lz!MfV~7~|6H==0|CXL&Ifrm=PnImF&@MA>SRCjc75VF$CQL zdlQrsW8ZGg!q#}V`^yz1hksm&c%a|YLCPja7u30Ygt;uJ z8%2>oUoyc*@`I)P_(IGqC~PF$F32xq)NZX;5W5!*XJ^v0edO}>y;CRejCLS2V%`3r7Mw2lpzmLR>> z2gVi%X__yLrPsZv_*I7sYmXS+t`0t(gkv5|5!YH)iiD+?BsP7du4t6DVw)SZxwp?~ znp-;)ic+`1Sq52b{Yv=J@hvmF#uDdo>*rx>q;WT7X5RZAVi`J5FjNhIJ0J{G;~ODH zSKTwYv(Pu8?9={eaN^h}}UW-?_6U6h^fnr`OIGXqN%C_AHZ}!#i#?ZXHa=Nkh zSySit7bSlZa?T&%Nxg~RI4`$3hW{sE6X2$ zz@k)XR{_)O_9aBp9HEls9pIG*T9^}e7_kquHYnbEX}~P|qNMrw6UM29n7vGV<=k|8 zGV=KJPDyoiAl?<>!zvoeHZ>6%Ht)qgM3U&MN5MMM=!jFEpFc8oR|iR&<^8}JCyj{m z-+RH8E)8-Axz4N=pLu#=hK6Ae%(u@XB0djk+e4L8qqRgf zi>`C5MR|^41;o4+3hrQ}sgPFHHQ92k+NvtT+rkr8oVnD!X^yPPS$d*U;eFxn1oyDE zOEEY~b;s%pzBV?)S6ma9`ib5e?j;=d2WvI8d>gcL(KFadyJBko2eb84l=7`p=S?^* z>cj)raX!fN6Q0xgfyH7RL7sAw@R%RjCKznY)$w3&S8+jK_hTY`lgf;#m0UL!N!*3} zl=HLm&xhNF(_J?2^Cw(>jbpp1)>NV+QzBStH-5N`g|oDGt=~hKoiH_Mzw>;RWgg?Y@ib!m~K62qaK^z~N z#mRfLX0pk;&TzuEbKoTITd}KfJvcI7-M3usdxflT+Q*iJOD>P=(rRxnVWDIZyaaK3 zQ)QX_eE`BA8rh-Ag}}d=zvpu{-|SH#Zr@(z!d>=3a2>-{>akIU_}<5Nv}&X_Oh9Wo z$xjN5D|G?*pF-ZZst#&1wK};xhknfPE(QVNTtVCSUreG-yrtMVZ~O|+y8}5*)YzH9 zHrYrU)ZBQFw2JrnmH2MObW@4Ta~}{oVIa7n#!J2xK`!(|q2@Y%JwHDqKdX3FV$DQ= z18RCsO=y+P)x(0SjJ|It`m253!JoJ_b*ePVUw!DkkfQge+;z`i;;E~vstSxWgxTIRC`&I5~`)+C?+Nb)nZ?z zVUcJha$~3~2cKyJmrE;nTq?k4#7@~xm^D7FYPB03SvE4$YvYVL!o;NHk7<6)Jf#^4 z6MG>XkE_!hniMvoZX-m0U*oBc1;LJF+DlNH|4u?xo%!1AHmH=(mtX&cD>G=lfnkOr z8s$WP3$cr^U*=PByV8rQ>R^BLFX)YiB;t!Jt7GXU-rq_6DxQZ&yAe3rlSScyE8fJL zS`}z@A#!3jWn(hkL(uj^)f8EHbpgmd=fHb_kz`D+*oxwD;{U!p?fenK=rrg1Ad*ud z9=M?`PWdpyk{b66-Y6py5j7?Zwb;6#C7LNBlTz;KM^zlC`XwW83rF?Uzx(FS&cEqwyNYpqf={9ZvFg(%_^fTx3QYQLvlT+Pusq*Mi$Lw;R3=tb$|8zz}qn9pqb zaF=iH*0|EvUK?20$iy)2b0Z^J$_)Vz2;9q%ixxf+x_`RES zaEBZ&Wx(bPs*WAQjsgWHrt2LErU$wv8Xu0Or`vKs6x`Vj8*jvh!3HgD|81p6?f6g= z`$g)HghziCggXb9G9^3|XRx%Rv%6w(Fe;JBhotJ?L0mInbfx9fz4$8#$BIKu{&tLD zX7jz9xJNK^{piPy2;M(hSmfXyi;vUERFEKYP#Sa8zC2BDybV!LZS-6mUYZ;Y+C+o$Ge2 z7;_mfm> z#A&ELNq3Z&qj!zc#M0QQ+Q#2UGF`3L-N8t=<;KpMsV4;vHQ^trbHxDdS$9p{dS&;l zS+|to{+}lJVb?kjWN^v+z4U8^p_1 zrt3wG<(m%DO}(&C*(M!~L2ScdknJQBX`6=~0C0=^WVg{Z6P#yK9Je}gCDnP~tWYkw z`|08vWeRLLMHw547d0NCePKg#wNt`V$`Zc}T}|Ybei4r1x=f=SqLe6h8{N0c5l*iK z-Wm?|TYZT2tCqU-ZsLV$JDUg#K6C%v zCK{xiye{KQ6k|3PCdSjLK%kJCNSiMj3e^VR9F>F5Ob&HGh2R2v>QnaQ;7yr5d>rDi z^wK|5NXGdM&P<9C8+cSPgQ1SuH_vE5<-+cBQhT_9!|9%|TxUy?w^Y7z{z*CLj!kF=?ll6*!)ByFvmv#+j!;qeLp{&XHYgWx zpH&0?Nm!oX5z0N`j!v$;z}EJ1GAOsMT_F;Nji{ft6nMl5LT5e;U?>l^Q9D2+z$d{9 zW3&o{fSlr0nDV4=U}oJgSW-=a>NZ&7uqf@g`DG5+UDi}j(O(~ZAMm#~s?qEthcz~< z#k{C}=V+x->FtCMYpw5iSz8&fvc8B;{la?mY6BlM!mMxrsI@Jk7dssKug`s zqtYp)ZeQ|qMKRnRK zgV0tZ`^V`|Bp*t``S^TRordxuQ!reSClus<9!k3K$-sHX)j-7uvAPy^S6G;mxPlXB zqe;X~vmLz?3H5S>gn(I+^yNXj$~>*0z$Ygp1S^3on$JVNK%aAgJ)Sk^=UY8psjsWp z1&k7~o%s9S6Qp|%Vk{~ZfcJHbVy14ASm47(x1DWr^T|##Ij=SL%)CA4T*_5%k?j9? z>7az>5mo=KIlhw{w^igW71A!H%6d)9t4t}_YPa9kxJQhA$zegggatYt60Z&Q4tx3B zFI1e_NA>2lqLN<9RYC29j23HEr4sF*>B}^od^ILugs5&mL5niZ3`>1Zn?VwJbgS9V z8A7#*J3$-^w+b)X1d&8fKhGKwnS9qz;sNTQ98M&h2riN&14s2cfa*?dlDbFHEv5Y? z3e=quX&e@S9Y~WE90UIa?Pe&zI#H4K_k0`?C!Yf3KGj2LH@3QiEhR)b)UFW;(m#$j zs_jNkY+$#y-XoOO!KC!xPRD#!UK((5Yr7aQB-_eteh2-QuxF z+DSS>ILst_IA^zNjn)1gGa?Kt0gdmR4kC!~0Cu{WK;epq{!BI9)@eO(ex4eSFYN_l zUXOT~CpQ8s)0Zef98&iN_jcdhjH9+NvU&;EIVt03YZ?wtrm(Ipa+q5#M2I=xa$Xf%| zG6_3xZP|2kJgL<)8sZ0b2q$#;E+Eu^Mo2K1#{#7S>0JomzS+#a3s-BGVef|u?y!;O zK5gyY9$jwS1KP0`rk)1qMb6;*N6XLW_Lr(3u$Z3rcfPik{@7`4d+vsy!+s(J79l|t z)5Yv8XL0=Z0jid0Eu}-d8$(D)`rHj~CwpX1PZRDwX4hg8c+>he+}@{^#uIyFG?wdr z{#+Lf9*&Ke6cSvD?+{#FrP9XcC$ff~KgQ$vJs7vgb-7+|5C1AurSh#`RjoE$@V8F_ zP9_7nB&EYNPu>Tvz4TZgcK$81#J+TU=o?gL5mdg2G(Z$w$73LQMp~OKAojOG~Vg0A4roYu-`I3^vqgq`C0K)9MST~H4{(p}g+J^Vr_IRzA4iWc09aa>66U+wP9 z3di4(h8{xV@_CxMqcR>8Tv^ZGoYkb<5;WA!Hquh^zaFG3696CP<%@sPnt0PinwMDC zX$BI?B{UM{bSlSVswf3~^*%HyE2N|=QT!1$G8`NxK$Jj^W=_{x4sq@h%hjU9c!bc> zvkw_GKdRa6Ya5emyrhBx$g2DlSCzOw=hQ1Zs8=0d2xyW{J^`2d+LvDgo!zV4k44ss z--hZ;6_4al*9CHB%EL>tN=nL#ipdFyS*cV82;i1ZB=y8%Vuh|MHl((_xr1_mUxV%; z#f0sw6m)EKL1AD9_c{8aElU;O_7+TQni-CH__1;&NXcOjt>pu@*?PuTeu0*c-?#Fjv zO#IY?X@3Bm{dMy|<=>xq_t?So1${IJ1rwrB#NJ?*?6o0#xz6A{)7vOx?hl|n(ZuBVi4mK}^FkJuqo{~arj`j3V zc)F%Hu{b~O34(j$Fpsn5`>a=5CD3iQVl zy5_9&EunvJIX}K0k58gMGC=JZ=NYA%70t*ED^r;v)gIHNWpJ+`C z!{t>}S?@hJA_}Ogsou~fP{g6t?1f)h&>r4=pI;=n(#z&D8oWp=5TESwj2ltv0x}^u zL-l3|<~(S_M*#`p2gM$+MQg+s@>-hhc5utpQR&9U!2WihUg){RH*}DX)1<|T*uw+D zz<~APLa-11-JB4aye|ltbP7gYuK(x|YWlUDVGKb`&ZD3yjXjqkeA8D?GDJ*jBL;ko z0`LykCQrVckm4(*WV+i5#KrsFB3%5N~Z^PaSdRY%eMIBuxhO zYjmXa?A!;}aH z-+gB1%S&)-OnU21DFTyGCZ_hGF8xwCArDZ9m#iPW#Ay!4HONyc^OwtH0y zm{un>Z-dcpbp32om7jXH??E?08#m-r-YItYMpC&8ij#~_;7f1jr4JvlJe=bwK+aC{ zgqB1=d32tIvw2M)q^vXd9H}w@xJo{6q~<`V`4$yO4pP8`hDe}cWOlQbQqFStzR6<| z&;$i`NA~04N1c+V>pAh#WUJ|LDjBx-Qn*Z$eWP&yemCflDPJjUGL zCtRtzZ_zcu$}E?Q+6m)orNc7ix@et>yZ2ZLX*RIE--QL%8I=WXGvc=hGL#23;h%qc z^Llt^xcrUd5_KCCt0SY8c_FY zn)!*z1?5&48IDL$7;tO)@!-e}uhHXRkEonTt&&bEJSceqJg=8^WRBcy>DIMd(Nhh`%;@Mv_y0_e{^@nBx$h0%UOXKKcx!%u~8_@iV& zg+c!z$;_CIvv^nU(h+e0uJvkizqX`W)qY#T8*!0FJ%SEk$q zB6OUC&QN>4d-)ti+9p|1$Fs!II!us(w|8IhWyTzuMn(FxUJJP41(x$3kZivq;^vWR z5&x%js&|(RJj%48R)i>4M;4Kw!eK{*iH zbxsChw^n6ldyc~4g$&gI*;}Yam@?qpA?u5}|NMcva2W&gua&Lxi8*nn-dbJDr1 zIgNAQvI8?@9#W@x)Kn~MHm>8nO;`B_1#(9xeJn=p$T^ZBsqELi{_bJ}h4+S2u-kWN zS$$-|NcIil?+S@vQ zm==^8Y|3S2zkikV?_Cxd<>gOb`uN$Jc#Fa-G_9*tfBWCgQ0ivNBtbz~(g!6tG~vo% zwT%9|1V--ofWjLOBg}}~M5B_Rfe=(y6sStyd8EQ*JD##O)N~ftQPnT#&eRwh{HjbI zAUf)ujvPQJw_*UHn4fRW4!ut}om29N_@Z26!hd)Xi-OG`Lo-T%(Yzk`1~|%+0n{O=;t{D1f?4Ts)t1$3!2E zrG&P$qNL;-5h3>?&Ns@EaXw+>hYpj{EvrXl&i=)koWyqbdw`t=p#(f_vR<-^ud0^= z4!zwC(7^S%Zj0sGvd|)iS>?a~4^tufIH*JDHh2G!Soe{4TsFl zFz6~Zx(G5H&lJ>Ar!37YCXAR`>JQ;T0wQhUA1FVOG>qSCNwG{;-q#k2ze@i zo~I7wQ5cFbTyN8@A1awhxqzGpFJ!0z0yk%9*LgjpVHgmj3xo>o^}qM)x?hZ6Y(1%Wz~e+b zn)Lj1y08qnp9PmNU=0;^%lt843igg#yz$Fnt3aSCa9SNzr=w3(F@WGHq>K}!10mbr z*w%6dXJfqCb)OL;J*{|$o8$S1p9X#gkmmeq|M*l1Lz2UchW#Jx_KC>4aFHKq7mC_k z*Zs6Z^sQShjI;cNU$UP%{H7a*__mCRjp>&2L*cnSmmCbJ33?5z{tCb!hSa5YviRHa zj`X%X7f=RY`KQ@&j-qx?d38F=C@7!5aE^xCM#lTcb~Co|WmBI}eu|N9+gV}ga@8;b z+iemcQf%m}JdzJ#m*+SM=1su>tEt+c)`vUdSg$82kUqw;oW;R7l{6-PdRFS81h{I{ zq)g{Y&0CQO1sgf<^nAw+wQ>WL5-V!euVXM-E*I{e0x{xqBAGW93kg$hny#Sz2-N;9 zzYp6kmx8cm4GuA`exwZC%J#{Fkb(I4{R(3?VMyjwN9uRIRU1eK>Ih$Jz`$Toor2c# zA6ve3%WoLt&=E@w?qmrcvPMSDJhuV7KN%l{_abUQnW$p-c7LU4oc&T|p85N@nqZ^Q zv*<3|Fh-fg+4HVQBLYOGoKIz|G2*!rYoS^R*BSI-5U5rT`OlA*Wl1cAi(fN=~DZ}df zKu()rk6!(dSpk?CEWK~s$Xz^{l>pdUA+%|c_1TFJYaeSk!x=hcXrzK3?AQsgKb?Ce z%7UDra8-vBoTtL;VQ)CL=FN6_e(Y3d zBc_^5Y?`i;b=5A88g*I?RPkj9_8UOUDVz(D<0e$<6go|L;dfTnS z67zkMwuV}_ep89TthN>1wK<*J{u8tQYymT@%XC@Zx@gP|seeSIq|_=gXL-Nwh1*;f zuR&E*tWmLLBO?9b8F^kjh{TbrrP4(F%-(8X1zUsGTSV-QDS4C)uV#LfR5aGo%XCiPmt#+05@}ilftfM7s<>}ZKsiA0g*?2Qb#cYPKC7-_aJdAZ9BU?Ltd#EA*Eh1>+C|#85v|Gbz2q)IR1|SVr&kuli7&NjIUP1m^xnG*u)lNEOuhg34eITZqh@XxZs5O(Y^ zpcqwNFO1`aD~zg30ZfIpXrICe<1JIT1ZO@SMh(}!_jkn%3c6N5zK(*-kogVeTQ1Ml z5Jycugu8(sH4?5Zm0nJawlVP=b#-o0`-{0;=wDS7}xAal47sG}e zt_%KBqiZXE?kKYM973pmsdW~YB^l#*0L?msWU}@hXxx};mE$D#sl6gn%P1W`DS-$l zz7nqI5Hhuy0LCAk)jH5_Jb%wo9$_3eb;_dOuk6gsh7p-0lu&eVeqpq5@n;ioIlhbx zlq=Fx-;hEo)_W;^ZPhZo!PUgb%5MBJhlaNbvUY4XKRCGa>vHp3^*I|Yv&sh1cL;sX zjXN$FYoYWlIz4itSPh+#)@bQ9;PB;+A{&50>K{vPMHk;EJlo+jycjvc(IsU7#xku+rh}2Qqg>B`$uqeFx{C*dm5KPLKFmO*Uof{~paL84W@CxQ&f#sr*ObtU(U6|A_ zsgL9y1g8C=bO7YE91ZSBAo1@lFFnY`tyk{(tt77td#egvzkaun89cGPAyS#=8 z>vlDscP3Ov?ln|dNl9O+j)#TJNd<&%P%sPk>fwtEM*pA1DQr{{FnE=dP@5ajuN_NY zM^9yFjaw!9rcQZ2F5@`iSOy4tc7mP1AL13eI@${c#g`cPTB#4`Z7PLUEcf1TAuAk# z%kA~#+B*G|`NiXw_=QBeC%yRkE!)3`I@)?#VpF5b=XAEVSY&QCt=;ZSUc4eb+-2vcjiG3Rb;B5#jN?3;``h`A}f)GvtkRA^f=GnQX59(E0=|?Al zZTXe{d#vA^# z32Mfl)YSYs;pZ>L`03YK1x9>cmZ;`Pt$r@WnM6B-;CF8ji8WavfNaZP)iRJM8f%(I z|1%2GOjC+~GH;w3yKu1qVH}pj%UGTlg+WS1=*2_cn>XJv%PHE7_c}6g0g66vO5k|V z(|%Z(Bd1+&EV3<0q{|-PHAKpS!|JUa=03z8V|r7d4>qgx*c%S#hU6r&VyDW>kN@El z%W(46`YNvK-l>alK}$-yOPhm)j)dcJ9|Rq_rU(g)+4UveM5y%X|HRbDYcUM%%EK<@Ba81>6l=xZVz1 ztIi6Q0bN~x++T7J^a`0|DHKL;@$;?vNu z4o?(OUb|}J`mlXal4a!Xx+Yuxfml=VVhs?LEZHOTBzb_qg|;aaid`};NTygrYK)P& z(fPo}WXo!LdtP*9PT?Da-gRx?Ou&P35!a@vNS^_vj>%4}v##DvlxJ^v>xmlTVSGw3 z7<}-me6;~JBV`w}j)_sIkl&ybTAwWD!>*4(8TToIQaIT{iD}WHa>mx@oRZ|z(gtayOmgT? z;Xl4%Kl_EBXVwlFIjShnhNnJs4ElKU4b}!J5fJwbR}=O#hNqN*2F^Q9W;EkpSO@fQ8nsAJB@+edSPdlcV9PWlRmhl<2qWPhtO zO{pEq$w5k^D<=tkuASzTmvL@X(x#K{h)RDi{_Xyeu=cmf2tnUr2d_@k-%g>PDu+g7 zz;E~%SuQ?nrUxzUDFne7l%ku&6ZVDd2`}O{5e1@yRCWJCr-GNx-@s&uDDjVbK+^C` z7L8@3)jW6ffLyL2w($9K6&#H7p;8cxji5t#PtENpi;#T;Othb5YR`9duJ#*_G1l@~ zFBnw06^=)Eh@8!3weDjh_X)!e`PeUZrpLvkj`N@juoK~uv&ptE4t+oPgJA?hfiB;I z@7{=nw|jJD{K^B!lMynNlLF6Q9emXWaNqIVU3lZLcg+~eya*+VO93TJyxmfHHVGP_ zAvx={>7cJO2XuR8<*aq<#`jb|tsMW%E5i$BXQ^e{{%}k&*SGf$^W|Iq5!?+ExKP9K z$r=)9FC9rt#$+nPEH!JP!{1)^hSEXxe&A?K38!?qsh=giCIf7+s) z_m}h6o*#QWaBrLNnU4=VRO)a3);MuPvK--o1&Cdf2X&lCiEWD zv%Vs30SUj{KlxJs^5s|z&E&xec(BI@^l35TwYxEnDnlZm)H&yWi`I@w+B@CwubGgW z+DxIMkwHM1a!IX5q=7C8{$}SOrcqWEwc;2OpM!*#-e@EX@HCJUa<-J$w$g?~g6jRp zEH`(#9H)w)h3*+ZdXZU`By_P`F~%i4u+71aKAVml&}5{;!V=sVOl-wb0bORxk8TlD zk+!ASIK$b3O{YRkG2Fw=Gt?ICyw|ygV}SXD3b!8tf^l-m%t1~6)Cn|dktv0ATe_aF z^|r75B0khB-8FYp6YtDHi+yv&Re95x5 z-+d{J(l0(kp!QlBneLXR{$y2ZI{yVn8>NJ&iwSQ`E^2Xk`TqdYvfgtQ(}@z#NH*yP zoJQ=sq^i8B}I>({{;LAi>iTb~KQ@LB0DC1yuR)%K_ zwqh5AG*+^?OX14~axCaN7S|5ux9QQdI+~O&9Mk;*J*dc}8VZIt_;uh3ro6*N3~d zhGe=NKChv&3f}a`VGu$IF6ajnarqjM83La9M5mvKz0)f&P%{S`v{3;6X<4(QW?L>{ zZ6!Oa;>FXh0C`uCJ{fbvXA+~vpSW#8wn!xEO3eSaL$5)<_DONe*3na2Uz`EpcT$_~ zq=pHF?e?Fc4m_F3h^cTiG?jBAJD$ntWXz_;EC|@`(I% zvWVnApt>xXfVd7TI21DzH@IOavorhwEf#801Dun~%aSCTltHHN)Q)h2%wo0)hh~!afaOQGdocOYd&=(`-Zg1GrecsKlmPG@&m^2L!g(Ui0FGj*H8 zzR%4aKR~_eMG)-TH%^KHQ)!{pB3X|zPlW50)NWd6cwEtEOGKv>^4DP9RE z%pWX|^H|P(zW9AO1(v&Ht-@MaDt}azCq#OBM(GL_D&^`qKRq%h+r`Cdo~hSn2qmqK z6oGwPUGWfCpz_NIM&)~sBE}pgg`{_>dyV`+kxI;bXxfOitep6C>6mtXvLfRxujeMx zy2ztugVmexVRG=5I0Jav+CuzEq(=9k62`FoobgJ$mYZ8}GbQ)N3a7HCKnEECuE@0F zCGNSIhuWFmUUx{yRLKOQq%K9Jg@sb8R2l zCP&iTBEJUQQGW;p?8Ojg#lI&L!m)#LB~V92@^o&SmOMX_>vXPY`&E=ob}Ct4j74x2WSDGi-Q;f~!$ zoxMfxumOh5df=!yek_uaftdBex0Ex%898u9E+uetO*xfQ|( zTEy+_vobe4KLYP@H0cEKAIIEPn@};ODKuBRxW=o1FTsRJB&`uhUFm`LHF=8 za`u9(u(9@LAe#AsT(z%{!9amag;aba3HQI+4&fd#{a)_YuXFD4jx_pe`P5dz%xWI< zzxzJ-#lsuKoVF)$B3KZlcWLR$%Yn{9WyIw9ltgy>iJ0C+S*Wa~4`P-Rh4DH;P@Tr* z_Gy(FTP)mv)Ea!kdBMNxT6RKST@J%Zn=U<(nxF>Z#S+}nZw1~@#Sv#RtJ5$sMt5a9ylU#u2;s|mQ z!c&JBc;cE9{I?fwW0z7?C8Y}lu2G_fgO(rjt zm!7sJ4kh&l-vHZMPA2_~4?*LC8VZicx!QRC&D=*|bf>oV@6Wf^iMp0pI^~_6W>3WJ z;bj9#&RJ_rpZ0lcP6%oV9g%C1nSmWK7XT-1=-x@-4K6l^$Lm{l+)6e50<2>AP-?^~ z6BCY_vkadb#3jR4nu=nt2)l_eGCI12%&!U2q3$=gXAC>qMRZtA=%GfIj$8vTtVg)_ z&vU+}vzXagUNht74PlK%?(p}I9WM%j7I2ls?SDsP##nD3DM2y_CdPN|&Pjcqy>64D ziW<4hS~4;!GOi(dB^K10{ChcG2;UlW1`SBVuCzsVIS9R~|ag`&vsDbbLVJ_ncs8Wi)m=-;qArRP7a>Mt>Qt=X_)p zbPfFo8TfjnaL=Ne*HQQ8R9gWV8Nw?QE5nLR*iD+QHr!%KcqL^=G(PlH5N|K*(C_A` z(W_L-ys6BZK4(xAAJA0})~t;8s-uxs3(J_0$$(Y9SAl!I+#w4?m;>~Pgtz`rp;$}^ zGu4v+Ur;Q>WN)5`13!Ie9!ah+=WuVM3V(r(P4e!K$XT9C=oGp zr2_OzSs)P&T{C;c+vRz}(+BcDuytFT|NIcm^auP-AyT26LiUP_=0*wU@m)1SO^va* zC*>tX<`{Qk7&{&fEriNfIO^~j!^z+EHRa4ZrIr5$;3%wkUbZb{AOb(RDhLm^7n8(^ z8y4dOHxHr8JV%c*2Cl4y>0}I(Zu}SM`jYIw1>d>J9`PO;V0aAsl#M3ndh|eYVg?h0 zu{GQ`_0b~1-}nu$!z!M$Sf42aB)wSN@1; z5V0jqg+^0Ajh}RulK=&=oa9SSBlzdjQcN0Vp4_H?so8A_kX6)%Fc%mOm*?YURxFGJ z7r@gRULBy}mK;7<2G+2~gIL$Pi`uKFY%yl;$v&8xmp8>$+!feE{~Xq-p|-SxrPHNt zmA1x&9=OWwZGl>^#N!DR*v__&Hql8lHB6j38(kL$;z)q?EzRlg9|(}5TWedsnA>Rw z6&7TE*}DEy^Wl&-Q-|;Fip}J9O^DWNrysQ9fKR0!diIrjJ+RH2_Qq^JVx?JK4xC&> zBb%@iEg5<)2Y7jFQ4+Frea&o647;xhAk z&`<+8V!~i^!M7nrD0zQiQDm%wcD|Xs*Vvi}he^+-Hvkt)EQemjLe8F`-@0-Y8~O|I zF5sF<5JUjw;~8I2A%B)?FIQ~PgH0sxDhcCgE1!s4VMd5?}}*V)Fy~T zhZq9h!uVjc$>YmybX*(%%etSrB)XA$<(tlF7=*l|<}-)og(A{#e07TP?VBuN-sSCj zxq6A|dsi;WuHdtWwh8+so?M#xQ`Fp5G<<1R(VrO9of)ZYjz9@b4kaIeb~st&c&3_& zdbNpJ7;cYV)#SET)JB{+66T4o5{Z(+Q^E{ zLNpejp)JAMfD$2kU$;6WjV2uRk#zUnS!#n{AQ$Wppepl>lSEumP9Fc~D-y>+EU%j~wd@1=N)U zEbK=H*i+BEsW&&yuJ?kjmci2&r|)Skwezrcq&BEEW-lnyV4j@8Y(ZD|MMWB3|A1C} zw^`T}I_}mu$mOQ=VpPDqK70-@=NIr|A~ zK^c%Iht?~m30FG`Su01`xR?u6`ST6 zk>IULY&1F~qH&Bl^_mzK`F{$EEXohS$1+m~3SAaTOvb6AX*WUyK{$W&DdxJY_(4(u zz6U=e=T$$ek4}nv9vO_o{Jb){Dgi8C9x%$OYzYtg__d^89ZS`3K7IAARTDLEwdXQ0 zH*t=-W387h#&6eE=HCIRaRVS5pw4Drbc9eSPXZ8ZkG5vGj&IQia%E#i(Zt*o)vN*E zw6qjdbY!}!s2E2{CUA;$x}&4=6KE`GZFQ^2yrGQeMkt$m-zqPZX|tVQJ@oCbYC%o^ zS1$>(YNTC5)OS*Zs|s9$6<?OqVY8@?5!^HD{beKDI4yE=;d1>>`LEehQpEdE z=nON(Eb2s>nh-;2>e&FgRf;#2Q6@sA0EAsq^!C&&gCV;pUrlWIuy0iLE#lq33K zxrNuU;}j59%{>9eM5%7GY&?lz>th}p)B5pqpx*3+M5m%^)n(LCf2R5|`$Rx+(2n=X ziCfkOb|X>GI8Gyl4Igo~Bbzw85{_)R}Qd|q3?=aurlM~Tl|JLAIV6zv2T;qmd? z3)ZWhEda2v=Ww+b7RHdJ<>P$&%j?~=lfU6PzX0)=fgP{gd8y9y_D@pdCAn&MC+GKQ zs{yI}3&MCg&%zss#%exNP&=JvhDu8~tgW-RXy%T6N@ilcmaL*hy-^g$tuoWvI9;Jo zRf=Bs(=AUSI!mP-{`c29*ngY(lH@>5YBlm*xmT?VAn!S)^hv7xz4cvXyX(u!a&JHs z8k*jj$g1hJ7kRfp?ss|0Aff7l;0j{dFp_n5h_Y?f)jDo%kKwJYo{f>#nmlXS*BrJC zG~?+vw7=GRdYhXy4DKiH{X961@8&OW2r6?C(FYh62LLM&vW&&*y%A)b#m>_bdm<1H zGq32KUoS^*Lt!r$22~HE{?Ew`O6!-RApqx0jd}-zo9MkZ z_0#|wAnwq^|5qdarnS_9o{lSxYQ|}(bvrk=_P=`XeXpW8P!2Y3*H;Uu!xZtiKDtQ~ zeDUaHILrEd>1T^9OD1q`ijwDm5VgE8ljdP??sd3B`plwb-1s;Qt2uza4gBUa7b431 z*9L3)>u9eSQ-UFGpnyDbcM`!T2>Em?4EeBYFwXD($WL1vI5y)$C{KyJ1}@GaR{pIk zxBk?Fm`?7Gr}6p+@xPn%zwc{V=_r4!`nnKP| zrJTx2ONsSO%Cs1JyA_E8XUY^xv&F`l{cO`?{o)_e(XucKtCbE^D(u;l4DP>&gO(Gp zddMW-?W5fb<8CJWu)uk=GgLn(`bDkJH~lJ_LH$^%wI<}g@x&Xd0AzN3_GO?S%R2+# zW8Ggri;GrmiF&&7-z6%P;bY(N5DW6F$RIf*k^>LV92@Bx$L<9@vk87JvfjWb??wv z8$p-FYy2)t^YO#nh~uFTB3BU30mS-b-I2fqRL^$v)7rFJNtqoAQ5g;Vq~hRhb`rTP za)3tx^-j`EyLBmk*yTU-M6>W8lA5#NhT!)Iq@zXfNBHEUwy6>0loap8XB2sXZHn3! zlq7#q8l$($7XkCQx{N82=X{X*G0ST_OQPOHy^6*1%v>dtWha{3h5j_$v#P^A2W|OFp_K0A^U&av^x@Q zT=Lc^EKrQPI2AEpb#$bqVet&&ipe?HO6qJJy}0`xjP4R3RS0u!1}0z%j$MhpdJS}+ zFm$prGXZ5XF)N_U5UR&kv*Qycz8|+fO`k>bc+@&scHpLO@E>lySznW9*paTfy`_#f zmu%#}T>+t+bdR>k;xs#)ntj610vAg|^kSeZqm?Pn$VsI(RHwHMa9L64zYe)r zD$l>gzyvtq za1^;)C+st5NWNb`&?;jdd{z`53rxMFFCqCsA>DktJd^!U($QKbpQ~YvCXX#kE#`UL zV7da}##j&9>da7rfPzQt#M*4yAP`f-<_W??5wb?j2!n|OAp)QSBOqAk?HCO86>|g8P`pev^iP6x^Jt#TzqB>H(f?_dd#E|8ESMgs zL)Pgw-D3m~{yBX_EL>D-lZwTIg?2LNyjCq2(X!E~Nf`ykB0*I6{g<#GS7ff{V4No^ zf9N(zxX9VK#cn=EvXlS=SkFAYR~NIl$KgJt3}4%UQ-PC#n<=`m=vUpKE1e_y{Exs- z^BmfAexKWn`4YOXQoWN|t#E+#IPOsz+>3a>A(3n!)^8Y7#vj82XhLsh7;Zzo*hyqQ zngy_g###lAv@@GUYRpMRdqo zy=rv$zdt-NVSAwR-kwagzksfMvUNi}sqtYXwrozedTY-^A_}=TTbj%ilpC9D8g2o; zGz!op312Swi_6mKKW;Z5MAS{i9FE{4Zyn-3N~AQA=1HcnE~Yl|%MN&C;J)efj{L%w zx1u8AOsRe)p>|nUC|1iv%KdDK8gI-RJH1v(CDF3?6Cl#s$dldr@GbQJ4F68HJugU8 zxs5K|AwzH@C!W&n%^PG=Jik)?>6vgeE)QO?qtyuc9a?oZ{lC%njxoB0 z%i8X2+qP!gJ=?Zz+qP}nwr$(CZF{zHdab?oIs1Ib{`lifp1c{!s2?M#danDfDji?F z!gjiz`f(l;T(1$v08Kav2LxLfweq?4)*IOB;@fb}bbO%<09N>rnOAHQsL465McA!8 z160bj)Orn-T1)S2; z)7w-SX!@?_x5Vq232qZ)c9Rt~pqmG3X+YnDJ1uPRPd$uIpn%oZ)dVePXulo36@2W_ z8+kL9&Eq^|uU(vvM6HWi9JpNo)sUOs5?j#adQv#>d+UWaXV!8N;rB*oTjAhFuq8#u z3uMZ;t0hR0ZVa?)2T8L%wzgEC$FF4!Fh|LbM4q?gMP-e`49){(zS;=6T%LST1tZEf zsK8yCmx1r5GT>KV?EZ$FF2ILf;D<9Mx{yynsG40)&OVxnisW(>hpOA2I)Y7KE>Av6 zFPO7*v6%s^TfnDY@=JF=@&}gL?6do8I*?)kxLN=YiYaT&p^Rk{yB##c6~&hmHaTIw zPNz8U#q5rsyxsc?W%vNm6G?#%t^IbakeUSEDU4i#E&rCHf*msedgLsX!H}w-}6f}r$rN~tW zssBRRyHGAFDk#vgWfj#_L61A-xlTtO0^DnR_;$ME+#(mpUztCod=wa1hLmJC0*b4L z2dfdS-K7#>O^K&YGO4;7^agC7N^;&%$}#VBNac}UL~)JbOW1hsQfF9+y7BRW1l6<_ zXf~1TSedz&X5rH&#_+g@q7(KE1wcIl5>o{S&0<;E5zq{$tX1j(Opm1O5$n3G>KMCp z2}PqKC#t+1O&8!6cj&}9xOIrbfnKExkoL36mr6V%qEocLnRaf%?B(V%+2|sq;lX#$ zb66Y@LkgjbT1yR^RNSJV92bz%h!7q761npdKKft>rqId_@rACGNgqUtZ=n|SVdC>m8mxoNjK+c*rQ|TZ=E7Z<6 zbVD9xx3Jv{Exsg(2a2UXJstW-F7g0x#7OPQEy{riHv}hR8?z8krtM!4um_5-cW%f` z-cBZO-0BV>I0Z5yI@}*E$|k`muh07WwHvI=F}+vuaU6VXyAUmjcmy`Z&}Mx3Xm-v= z!54?klulVO=-5?ul9&~DTVC|f=$xj2l2L76!uSZdG+0e&=4=*K%CdWBhja>NC0vn= z=it5(?yD)ucY@Y4e?uJ(O4oR2PRP%|DIXp%rBZBeFtoZ+(Eu?89?CK-vbLIMu)Ha> z#HQ%_z}2fd4*f*yA>#Bd3fWCG$&n_tg){a3!cS7aA^;ENlUinvM`qOlTMb#(Z7c`z z(o`9Gpf@G;d1HTeRsW>xSS>}bBf1;(ga{N#@3XpARK>emHZU2Ow2$NnTHE&F zqu>hTX@&`@0$_j@4DUJJ^JUbI?GZ1q$s4aKh!MnfU^j0J$)Pdx_TJUYsRLtF zw8dfgB_*Z3aR72GY#^{*TeC-X?FM4pl8%LbwgJ4=uA6&pg8<~WnoH${%(_O?865hB zwmtM(W9CA+*#FrCBTpz*?p)UgLtoyD<`e30pYM*xNWQhNR6m!^TwXC zr{q_xhJw{X;iIp!i!1Wgc|)T&9`+ffHGvAhT=rwCit~umNYE&1!F-pnxtom#XPi;i zxH^tYK{6;%D;FXgaIv1;qWYlMHJN;B#mQ&T$jMIN&y#JBO|9pWl9VqNDh>oc6-gGc zz6-4n9I{L_en_#~Z7IbL!Ws!T2%;bLq5)lKYKN~m(`5nG?uJ0v31c~P(ftfg6_9vj z15*pE{2KUUaKrO(_5CafHx|56BW3lOzC{TdQ6~S;uxq> zhO(92olH~{#B)0(30v(1%A?dw|D80#?6H9pv1zMV6>3IOSbRXDQWlv)lgdrSnRw@y zT2l$WID?$NO^o~Xb&XtOd!4D_&1+<3Ors$deuhqZf%UoVF*8EsnN_M_KJNvo0y*zD zY$|ks7Ax%?J!(tOZAZ3N!rzklnX*8lB_{tZ7G{X{gI$`>iHBFB1+G4!fRQ&EoE60RA%o zD$!T_1&|XcT82esG+rFBGtV3@2YL{-2^T4_2-t8`Z zTY=&WjPQ@#sB{gfVaJiWtAwtj?wxjA(vwra!<-Y4?^sR4(NIq1`D{)x^Sc_0P&3&G z3@;x(CIjM&ud3GVd|t|3s;c%FkNDCcxpd5evwP0xFCtul%n7Z3= z`9LST&FfZ40`>EHkYph(EeNc*jwmd_3s`Z%1#B~$h{b}EAahqUkSYr{~zHjUPvtXkZw!kykF9hr7Q+8Tb}EKR4} zqr!wyf7vXeg|a2ZH;D;Qw~;^vM8gAtuwLOj5fL=LeK5Et{s%YIRtvK<9)6N_x|#i| zxP(s9nIavUG$nSypc?&eIR&qKK*(o+SGkX5X2r=ty~PZueiK%z!5vru7i<`0>sWIbsQ{}H?D`mtlq9bl{U)!sj@Bb{ed zCg9_m#G^@rV>xGZT|yyZ<-)Z701Kpf4bQdEcPp?y-dxZ@I{~s@?+h2WmURl2ceKYm z-zkXwxRM*ToZS&Xc|24BF1qlmexx0j=uO@sS^=qv-YMc8er8|tkA5z<3eHsqBhJ6z zdf7d}xP$)GCUd#*#)7Cl(_z4RA7^+#pNRO}SvzS8Is@fh%CeRL>3lTc>Equd4O&7@POjJO|6-@yzWvM2>I9 zSs!SIDf7R{>$CgS+n#RVNZzNM0+V!TYqV!B^3c2TA z%wdDUFtvf};a+vf=_pQb!DMw-bHC!?^v6TSfp2lC>OVs>V(DxNBGs#uLmYDwiu*RV zX?6}wW^utE?GO7Sj5FvBMS*}P3hl3_%>&R3mb+^=(}y;qaEnw~lr+Vd-#B9yYQ5H6 z5Mhu;S;S?w#p-iiIQ^@4Zlr%1Z)`#!EJdCr$QL&ogjSX7s`@YiA9`{EC=_9H0wT!V z#r}&@6B)aXion_9G8(-|!!FFY1`_$%1npm?=G)M}N=>>v`~SgG(^60moT}s&r!9U& z7`dBG;S9T8=@Y&=t#L9w6*4&$@?MWZVlwI#vz$Oxr13YM{Ka{z!ZQH~h=e4F-S#AZ zPW4#HEAaW~9kQ3z)UhNQq_r_IZ3f%sE|=k9zsvOY2L9lskBv^66@|*H_M68U|JQQq zqivG$!!QCei~R#4(LGR*kW-U)i4xr|(kTd@oI=eX&7`A+0$fjb`u9g)vZu4MWEqt> z+~NZ|jVje%2{cTe#2S`tHyf;XlqzV=hB=;9XSMF@c-?5CBabIV`PT6yhb3qzY@+_u zpsei|5Kgqk{It%4YvvUc-tx+;f3Yykdih#rD%` zoJ9AKyTem;$lk{Wr>DoCKrZtZI%41uyYH%*+wT`(^GE#=Hd0>!!esaBaF8bEgedhb#mUdS0_g$R5-(Y7Nb@ zz_*RiDPixeMS$I2JNixOidjc*$&Bt-Uj8-&<@@t$gB47tmeMqLlM)Er*Cd_?sJB8Z z8`t87L;G}2wL?znfHg&9b}6l0(c0Gp&x3N1W%T2~PA{-0=!fYKPMQZ7rH3;^h~01q zRv`5H6vblvC)l!@0PX^FycMl(QP;C<_|>azt^jZIZ3C*-QM{G2sJ!z4#_X$26RERK66XLvvgu~H0WFxJ!bakn+Gk5+!2wDNQuw)rIRk*UG#!9qF58L`7Dea-0eSak$bmjrDLc>XSXJn`@)-yoqt-()0k=5xzx1voZWY z9%-XEVM)EQ{5LT~D0Am03SYQ$CSY<|qkH)raCq2=8!tueDI9?^q|&q}n86Hu02a+R zUGb`}d-CqSu-Hj1rsZwh;FKvzU?A*f;0J)EPREZPcvN+K9{B%W0XaU8l)?Fyd*j_a zO-$wDDaislsNpx=l5m45qsvWlvw(>lci+XW<^tokdqdT1b=28gr^VJ2FtHBNZZy%^ z=BSdRqK2X@mu-To)?Hbup6knWLk9rmTS#f zZ8%yM8+!iL;PHa}U*Tb_rufr?ZFHvK=%&X$?XXAUN4H@rbjT++^kf&5WvZ5KHIqOtn+co1(`(+p`D zLV?j&4>fIfd%2|%rz8E1DMAi6%^K4~o%Qf#e6*hVSS6ywgBU?m1-mShs|PGlbhdCl z$F6fu&Gmdwqt90v&Km$WB)*S`y?-f>?wNc|VkYPq^m@!S+$O7Vg}JY>n`67{pW?5qgnpV z;K8TAPGe(QgyP@X;g-r(Q1T2oNy(aGF$393&_3IrcrbjAD}d2+>I(m|LlLHMs}D}}Ew9_5>&pw96%Oy;*ERLr&`ny*^OZBYs+W!K@ zJw1YwWB|T2?|*~IZjOUHu>yFcN(P!L;O0P{L9z~>+XDlof}l?8>i#0~5*&vKhD=tK zC}ZhEFeb((EKBX)qWRM)tcc5Us5IQwA~IPbXG>izo^e4)fh9FaOt#9DY~636Z>lM~ zsa&L?tvgf}ImxjBViqViWsreDfh}|U^u3HY>0IpbA$ACg1}(p*_t=-D8YonYtI~@w z%MU&45#kj!0kjfW^;Fo$zBN2b{Zw587L70`BnVInZcWJAa47HB0?xcYRb)~tan`vR z`nhj6rwdKm~y z%pj?BS2hpA#c>L*+F&V?B@`}XTrmaEMbGvxt<3=0(ldS%G?>qb;xLq{t8zb&-muE zqo|)rCq#fqF#+wB*11rrF2jXJVej_c0KKGt7SB|f2=BgkeQZTpVU)zA{;}yfDl18z zxUKg4ejRKDlJO&!_^JS#Irf zPLo!08NhZNtr5ph7o*_O$g7$Y8?t7RL|YULqznTU@5yB%ntM<`*t3fgQX*Tld00+c z4q<|4a*A6g71_>${xHW&aBJP8_KGNStTly|7rx1WbN1K?h~&Zvs?jAEjVAb~!Qrdb zGHZgzZ<1%GluR^A5(RLhh1P32r0hh}SvIqtr1kMlO^!?aMeU#wjzu5&mH?I6S=>?R z0`6mz%hdyglJahw@~_5D?$b+V3+zu*HSf59e8bfKMP6U(51kv;UOP6KZ4ToXZ*9yO z9f^q#1co`#;e8DvQa71wi5^Xc3dc}LouRLS;Fy1%)I*X-(X98aEY z>F)dCa$jB#$ufTj9#F$3t!9l}Z`O7n#9{5d?7`G_t3l}TqhR4ZCCa;|Qf0{=j*{Ba z-z7r6;6X4@N+O7p)ROlGyxkG4{7rK@B6!_)BzT34N8Sw)yBJ*^g^9LaOAk5jzX&QD6VHDA`-g-&T**N9KxJ z)z`CUK4;}BmpTA)9DIYOi(W=ESyOpGlP0o5KZUX0_f(X@fdp^6yue}^T*Yo{f@za zR$z0jEa*HH42Ag1rDMt~-50GtXKt=Q+P%1}L0YuBE}lSFbznrl6?EAje__>@%wG;G zb((phK6~*wO9lC4BN?e3R7E@%JZ++Mf(&47;W~BO$(cz)-19rX~#A)crUry(J zKd#(a-5_A>Q}k_l9NoX3eCVQ2hNzU=tSsEe{6o)E#?|NU=Lx@nK>V3z?qfZuNhC4zuB?+FoTfe4`JzrvGLBeu9zb^E2_Y`85)-(7|af zP047lLq)-j#BK|IubztI1wP1iQ}Q-{y*$$ga^{=#;c$7wbH)++^h=F<9Tq7!Cy#dK zS7d^FoR^x~`%}nKt-}S#TJAHk00Yn$Pd+@IDmX6}b`q>wD8I3)mfKg2Am2bJzXHoX z!f3IJT05wFyB*;`cM}0Yg|bP|RRO&3roWHhqtrL_8CN0kF(57~!fiJTNXS9ymx3M0 zkWf5}ABvRtPmUGQmD#0`G!`dE)wjcZ?59+Ga=#7haGZ_$suK(2v|9pg<9P{$d1f;D zL7)}6ZRf^J!eIR`9q=PO^2aWlh*9R)OR(fi^slsQqdpc@J>RJb7c=G+^U`2&eZ_t; ztU8yoaS8`EdKMK1D|Su4cEsyEKZ#%vI0{Axy#jQaOjn&G^|$GteHMF*d78rt4z082 z_&pDQHNAq`eBT6k?o`ZMZfoGl#{(_rMC?GY5a>s`CiG9}K5KmvXicx{9&W>r%+|Hu zY1knP5yN70MD;^d_;?v#*35Xm_wX#lb>&LSKUmp-WYr@tD!(Pqq(|*vX0TZ}G^cm= zPqdjoSW7Zehp*ygc1bG=TSi4h6}Q^ftqjXnwJM+KJ+gHYk#l>Oz~{i@;nnzGgY5|( zl&np6Fb(C`vr=9t;wF_Zh070-7SetA{l+R1imgk>N<&apODpRk@&$6?ARO6}Dyc)uqyzf;jp4(TUjEk& z4LEeaocg2gE|VC7NnK?Gdkbe=vgXy$mu7QpDz~fWHY6`8{R~RxDN|mdbpon1-!d<0df;CynUi8li~fkZL2+ zN$6^aYt|{j+esL0ya$%-K@Sa%h($7wWz=OMYL}`)_8GeCq#t$f0 zG|&hWq0_SlnM(MmA^kSj`fqMefyQe9=1W)Nied~14JhMl9W4?HnRt1x^{fG8!v|;~ z%r@Q8vg%oMPO@wwg{C~|YT+w0NO6B1mhqPWG3DNdLrFbtB`Mn{!*HiT{_rdqf)i8r zIB(Mw<~hFby-G7@QUbpDDAW}Hi`|9g^Ndeahu<@qDm`1V#JDQTz{hNmWbtNsdehRv z#(vnpO%o~Ub;=bJ<8M^mltb#f!-)^ScH8kEH7J~{9{cZH#r!V99DIkT*jOGJleU{K zEAy9ScmmxKT?MK{-OOP(9!b1s8dyHKD2DeMOby;U8en;NRcg&y)3B4;>5az#=j3cv z9d7qq@U(-`u4i$J-6N0~z-bU)_}a&X$5b#(N?{h@@>zp{V+pVZQrM3|wDUtCu47FO zn9Z8?Y1{fN=fR8+hIxn6{GdBdD3*|3guem+YYup==`!p%j!&&+$6_`|msXZf8Ng&O z^OPNJLR7iAg|VqLm_&Tpe=lGg&1b3*0Z8=F6n{!$$0`J|p^P-WVIbGQ<3;7H)N`$y zrwi+VX?V6^;Tws|LS4r&*j;;vli%M~I2JrJZ1QJGJvs}{f zoZ37Vxu!|N&9}9p1$*-AF}gL`@vuv@uw3t??oSoR4O%QH&qN`YOtc`&RyUh_jGXRz zzPG&|ct*Y&Onc>fXPCJ}C?4p+HzPq})S7=ua*TUhgFz5b>KR=`HF(Gq!gU$7T)Kf; z6_r+QSMf}ny2qL=v|X*KK}U`Uz)XNl5;q7qNk@ZjJwK9-k+RBtL3oHC_|KT%ZweMQ zD4!tm#ig9=JD!mai5!~h@yp{*Nlb1k=xgA_8`0{*+ChLn+D=226_5k>W3HS`PeD~9 zCo#Rg9h@P%j>*)mJ-Ty99zMBA%Rvczn!kZYs+6?UgG!C^jc}y37A=gu3rb!rB!>D4PdKTT>rG*bS{Df=%Q)& z{zvN#kftxbXi7H1A&@=zjQ11dWB`)nWrZ&6dl;&ApPQ?{RqsEE5)o7zwidak*$LyL_I9Un-p zJc+LF&ItZDVK3F{<<{Zc2|a$+5i;$@VC&7c+%8;g>uvqOT9_n}Apm3~yIJ1MFbBO^ zc)D42zyxkJCdXxoLbKU*IqBUxvw63UDrmVe(}TXd{JKTG`)QGq$0 zHZxwZRrLhvhwRu`8J?qJ20@8$Xa8!rUTsGuIZOm5!j$!qd#_ao`MnQ{*VXb?)=D2S z_l8@U49KHJh{xPUZPz{C`jW5xQKb4UVf)`>Jy8pF|0(OiDadVOD~Tuj5jm%vE-jms zPkmX{29`U*`0G{+OU8u$XQwLUl7#J(G2Gl znHCGbNu~a>@wFUd_?!?7yDGBpK$Nt}t0|ldr19M*66dNTEJ*67hN!N3)~Z4D9ZJJa z6!48V%Ffm-gjBlk_99X-LpW;PpC z8Xp4lItMwcIo!zqP(ao`G53eu#Bt&qg_yo)wr+MazxcCF#zh@K1l5(Zu{p-WrC}PY z=($0?JPlM`Sz~*&uULrs#14&{bpOvD8BIClB)k?`t z$t~wbVH#86(HmY?#}D0tK!j3{ruPuG@mh4|AyjZ*sB&k>*Ug*B#Aj{Ch!_QFV=Y%* zT+YtZ!tjTiNSn6MzXg!BOv7RAo)Pu|bDhX0JD)wy3zwh55%n;|Iqh$i&f`LAFq{ij zfutL!=TfWpjibP!n4H^s?A@9+p5thQZ%}enliG z%HPB|BJQOP7qOX%#TnXr8=D|fIP8axKU$Gh&V-{Qs8A^i##Jv1`-J0%(D6H?LNYTd zyZI6$k)B20r_ZHa! z9ElphO#Gi9Hzhd4f@oJ@&~^?i{^>bKLbb9fpPR#Oa2t8%mi|v1dO*$!WjgEG<9b(U zXaRPDwPt~H7iBP|bgS->13mOMD-X#JR5=W6)atEH1BG#BNa4qc&_$amq@*^ro05w) zmR?#mJCX9#{K+MwAmJgpPPAL_=%3w#XGbMFgj|Knm!6t=bQ@{cccgJxnslN;A#-3V z`Ut3f?wSB1yioMKH#kpBG;o?o&FcxE7mip&Evp^fxU9m0Xb2#=gsow_lfrlux2S!> zoo$cM&g5AsSamv_G?>u(NlZX*9POMUCB3mml0*j(FIX{Fn-U^Wk4>_lI&_{`hSQc; zG`mdXMQw%{HO=dTcsPvgE|riy{i>6~gFOO_*MT*w-0j}C7^-vsN6AOj$eu8Vp_GU8 z`40zMkL-^9CBYsRZg0bRe@IOxI%51fqX4pEXFin3yqxwAjq-(z1^Ma@Bh!C#uz>}` z^RYa{WhN(P-jn3_fgAT4!P-JDwNV>W`Xch7%D<_UkIX+i+i=*p9MU_x$d`B;$A5?@0}mdbW8uA0VV#j9UXBv8GpL2T3dR4PsU? zkXmUP+0lV9yE5Mqy!6CySq5^^lgreK4rzjfk3s0*0{}IHGx&QLOJ&ipL(8ORa2s~vi_J`%Lwg+q+G;sTQ2?uG`tR7W0 zr?X0jsZBSD)#vQ|ev1@IFYyXwhTj(6GEvyG<#US)4ux<{)D2N$`$mux;H!bhRL;vU zv46o^hgO%BO3h$8cL)Iz*~ex_ zm-)Xmz&LSSGUs1MyfR_Thy0`Uep*U?iw8M^V4KVDgV!fh%?7u&V*yT-JtB~^pi@vV zwf%2%QTU8zW)TPWMY}IGDim~D=C_*5D-KoFktr30KrHFDq@M1 z7g`5Oh<4Gwgw3&qmBjaJySxnWFX)zCctuLcF%x1prGK!~v;*GD6)?7r8>s4%w!kZE zl?oeev%pp`@a>!7-AHZ`lDx-+S$8E3hKG32xHP{k+T6o7Oau}%?)M+O%i6}>@dtza#= zm54#T7*sfT`45M9WFxW{0|?LA6%IKB`9AE?^yr}|fJtmqMsxM1B=KI6_x)~bYO9r{ z+ohaWqbyeaACkU%)8py)nCfqz7~#*iQ{#yOu3c&e0JxMxH&=xx`_PA#pNh^%xW^u# zUM;<0Pc_&3_h0;2aGwC=j|_b_jG84j4xn)Xp6`);DTERXulbhvfmk=oi(|g{X4tjYg)MJye=!9u?cmG z<#FxJ%Kk3J(Ow(a?}MOa^B3kq->9!s3lKgqS8`h4Fmy!kyOqio-cDfXF7m$$TS_~A z7WJC_#zyT&&ICx41qIUO)I=z>akf)|USmq~d$nGS(*1>jmG9vApL7QdQWPqejL;;% z87@Tg3Twhdwi+XzHLicGNMCL>36OItf;uv&hCr5W7$gToc}e1CZD~#gsWF7!IsOiaTqKl ze&N4ZvXTMCoi`-ZvHb9?vUq{C%bGu%9Z&EdOIJKGQW;v%k|n(kp9z;y%!XV)ILEEk zH?M>ruo@H%x)dtJD*hiYD)!qktbTq-}iWUF?yOXaV621LtBtv7jhB7PsqQE;O0o^iX(`KEJNr zh|{XOa844F4BK=!rt-vM52)jFuITl77WAi>T9wu7EnlV@eD#X>a^jvJ0C|l&GSF(x zWk(R#<3K;$M2eGE$o5|(&BP}PE5V7y%vnL44x$Fpi$PCiLG+!*=!NMYh~T}}BY z=ZCB8%R)5CR@vpDPs8E5&!Ep9geGN|RV$zsmve(0ts(Z1RcK)N;>mQ@zrv%=w4qw= zmRT4#(q=F4p=$cbe#+k$!FZ}>$*7iK+Nzc&LvwVZsG|Nm0gR8uf2-dqnntKE<;=}8 zmT6X2`Wiir7joq}uM)(Ko9^l6qJYE*J*{wwt--P){|NYFw2I2hDoJPBkUhm$>ER%M zS}+Sl;jLh}*(4+$LzVhRKnK2xjdW6^WM&fS4Cd9r4N!xFC2_I;kskg`XN|gy0gX+a zKfwm+E)N8Z`O<;vc`zn5`iuV5)l?c5j%h%qF|Y|p&hsTzS(*Qrxga)j(SMfM0zR$j)PwSBwwVcu*GQ;8zpFwWziUCl1!vO> zwF*>HdjWD8ZIjD&0lcLLDH(#R3-qLzzSSDeQZ=*RZSrRr@|%-1Tp+B4Wbg-;*Fe(?IC7TKN|;GG2|3e5cztktVt-jD91H~=C3U|>_I}#Oi-joQ_02Z)nhkp9 z-3R0kpqV7?R=7gG0<-4MW(BppPQ83k3&vqj2SG3 z<9B0>-wM7&Jg$)JpvK(X$!eTwQp$Ilggil>88AhgAwWgWyKXZ^8^Y(Bt^I`$*xrrA z+r`j~x>gMn=|xFlcxZ-$-t<9Dd`#H)&ktxWx`@)=M)&6u0);;fqV4^&i!Owe#{!20 z*B{ZMmkdeL`|$bGj$l;?TrIv|5SgNo&V6K(M=2&QF1jk#Vp23jS|*+H)=H&)!r_C- z?V|}@(w&FZ7)@tLE{lHq*G-mjRp+$iAtvf?k?v4a#XGSKGsvw~7V4Y6#qFC3V~ zcjH=hN766SX9656zDPNQmUCrE>d1Z6}04=GgMqU!5<*}A;uo~V@glcb2@r; zLjk-zEN2SB{h`A56{K^#GA!h19}((1f?sM?4^s;w3M@Lf`p&$+J3k7p@|uPwK1-;e zwTP)Q*y&BnAzAj&ZG9P>qYP{0dcUobv;3@g8j0*hMBe}lWYSbAjn9S_^aY_G5%OA8 z@rqqgxCV1aN0kDiqo;8w_g4t52e$GzhcI~ph|yt;CV+$CViLpuVt>V`BP_oK^bF}+ zyoDx2O4VGuxY~@U$+}hSKc3f}QRVmq*t<4W6F(OODo{T5gG00P_{q#;Kzn`cpv4KY;{6zVl zC)Bol7ZGnqHMKZ{0DKsQJ4c`F*5VHSK05{Ne-&aA?ja{r5XQ@dWSi zPZM`vk(4-d}X0TMC@Bthq zCR8dMIynlH7784$J}NXhXupo$&W}EiFArcYuaBOYAqS+dK6mytuMR*@Ppn>dlAerJ zw3$_R+kf^}SIyCuSC&^-wU&y6@HaC7KD#Qaf0>}L2=LGp6ig0ngciId)k7aAKj1OQ z$Y?+R$r;S=h^Sa%p}{+bDUXuh-5c%c%)?dY!Ndat8ZY|}laVGk7}z)&gBQ;TC zLl+e)&0_hXr>S3W8WBM8hO1-@oHXpMVo|%fU-hl%UmNIHgd_}9_+dS&*a*m&h~qhX z84vx0u2r??tG#>l1buUJFAM~X&U}KJmD<(2gQKUrspyhK1ni8=%&eNI@L^{oV1Z4d z;eQ94-yDvI4F_JZ_yFnv@G>@4XRc|}Jx_h%`gA`=OwpId1#kHc%H8GE(}H;X7`O($ zE#Gs$m+n>XPJd3zRNr}yK9wzXmc6`c5tM(EV4P#yx*eR;x(4t=;Ih3RZ$G!hSozV> z(K!!4H)eS)b**--Y{ls`ZabySGl;BkAv+*TzzqU1`UU#s_ml)A2E>Bf2*XS}Pbu@M z_rx=iHX?o?(0E91@q%tJw9t(gJ~z$mkYsyqDMWnV7UE z`Yem~{>I72w6pKnZbMMFl7(1l9p`q*H93Ms?(_V#yfwN8BjZ=&sN<_CpeeXioomaL zSN9V%)N0hA__KJ4c#nD9`Jnl!c|r%Me=QCUoenQ&8L(NPVi-|8Tj$)ry;ScrS1ap17>&+!Y^;X1Q}7Q2dII7& zk=Vs>D6rIanLLr0&Ni-b30(@=4Q&mZYApT6g14cS2q_}b7;1-vc4{~GHF9D1a%k>L@FP#2NK?OZnMjFzg2fX3SEsJf)({VqTfTzVOPT{A z)N`<?A>*5~e~00SUjksw0WGJk!Z`?D3o@n?oj>)t@jQbG64oQY*!Do7dD!~ZMwtx>K*{Nn&zXaan#m#F8 z=zpkAR+=^Cla@^0rwWn$(ZZ$%WWa_r{?m-V)sZos#nCdhF-O0&kwIY5eAX_j0#RxM zjSxjF`uDTNxvHz^0%!=iajVShPCp2>NytiNRbB0>F{l~3?D#D=N8QI*KdTZt%;vH` z{d$E;#jmJb(MTFMNGTJq$xugA?t}hSFG2wfN;(A_5-ziiOkWNiM*lGq5)wxHlA2g1 zCQI>YSJ>=oMFd?4BdMq5UeT!RqkO1Aj1+YCa8A#98`k^v;r@i)<0N8qVIiRS1*~mC zL`{-4no9Sv>JJE$6C;Ms9*H~uDxlM@DM4e(iYhD81*h_qM7B*J{VFguUx4yzZ&&{G zApC@FZz;9iRUjaA1AfMjY@aB3j_qo}=YE0089uUx(umY8S`6h@kqxb0Ne!-%# zR;-wu(0g{Jm{3eKxaLT}YPM3~U98l^94IUxf_X$$75s_c@=ui%xUcAfBKy-5fI_p& z3YPmRSa5NbzwA{B4pZyk!)oBa>_y_p=5YuiD$75bw51x9lMd7P)5T?>%6`@-7T_xd z$@5?rc|~c-nIt0YwEpI+MJx}ZOdwD8HHwm`J{CYftCG#V z4WuuIuVyB#(L9DEJ1wDlN=Xs#$~an1~^LAOaIx zFpZj7DTc$^UmX>~x%?Pt99RrI`DDJyczhUzY#Z>dNS?>W=0#@CLT=73kX!<-;dp>( z&=U^6;TPJ zJC*@zfGX{jM}NjPrDs_f4>erNmWRqu?~*1i(h`S7&k$hmZ)IADDZH%=d*Y9CTX?6> zJwPu*%v$EB8g-7wA&#=PkYWr`?mU zT!B95>Yv{xcn`IHX6Ytb; zZeG`4Vde!F?b}oBDfP9HOw`M*7P^RE45U8f!Doq67>2-4x;~(hxLj#2dZT>lp3YUf zwrf%l@CT}fq0l33MEZw&Yb*U`_bCJj4P^<2uhbn0ZA$7 z_h`SDrHZ}D%6mLoMh#A9gK(pxp)P!O@4{X^$oF7v$W*o!j}IHnYYR|~^Q(8k0X7Iw zgL!KVp?$WcOCMgYODXGLhGE%DrE{ic4ClMTUM*%-1Fs$@9rV`RK;I`|#)-{xnY_2y z&qlCVo<2+UMorSafV9xNNcmqa7CXX@~xs+ii2Qi5C`z7p$)vpE=l=q7f+6Pef z*DevTFATa?AoC6b?%-+Ja$jixa@($_0l+~oijNBb8ahOLb}1fWbmAIu^=8`Z(y^9C zJvtLMikku2MMTs^Mc@f7NJX1g|B|u#KGjP&eq5<=HzBp3C+4TnXe#SUggB`;|BTQm z7#u?iB|%CMa?zO^jG)EHUYa*Z*Dk`}@KzWaNrD<{Illk19i4Fux0?v>%q!M5Gu}cwhQcc7q|02fEc!6K&vOZ=8argF<={n$Bh!ex!xKQJoV8 zR$9-DESWgDln{{Mwh@a!4*Pmn{^2;dfJFz?^q72Aq_2F?h8XU_ap3mLa}YPo2h`2H zkVLZY2l~|=(9?jWvn5ob1=$v3g@(heg?W)+yJ`nrDEg16Gd$1&`^Xs4wg(!3!V1sB z?#UfeX#m*KhN?i19bH)V`85ieSHM@PQ(`yIBcv$?7{HE327{j&EO!7D3=v7GDl>!H zWVjmamM1e=$*H=`ZPCRf zIWxTuM>yW@>u-fQ-quZ|Op;S$`H(@q|1x67vmQtoo1Zruzuk;CQp_&0!6y#~(})Y| zG;r5|AxjX&ls>Z>^3C5Mmlc^89fNAmzy&c@pg$5N;C|9d2j_c&2Rf;lj2=C6p`dYZ zt{`pK4XeTuK%-*U^@&&X4`7y|Fy7P_N(Ljuh7~=ug=q>dWecWtdMRP^J3JEmM3!U3 zbac#xF0;unfVhJo$SrIl3VGKgT_O2#g?f_;gZgR3GYN&FLo=d7;|x}y@1Pp(yaXB` zd6@iarvtS=7;VQ68n+__aE&@r@%tD%+E|*~oN`~FN#}XTsM`l}BO=ay>4Rtr{%T5B zFr5n_Zx^6^a=j98oxzZGr z+G_o7%BYjb=qohRQlF;PO}^(&H>>sism*xW{k0c#7KtUk;%V@i;Ji~O4P3;;={j#g zRX;qW@DBG$%@*nRJ(#=*0?OZge` zD2NUs0~eIYeksHv!n3=T^vjjryM^7_^H^mCLB?-U!-~c>K%*;;MY#gYBj00t#PZIW>XP&_D@_1m z?g5mzzTbnhP^Y@AYNVwZKFIa4$V+iP*w-FA|CD$teHrq;H#i9Q3^49 z8xwFE#mW%s10jIN9}SZc8T8n1k3hKjagWg0G`89X9r4d14IqU3 zLFPY7?8j%aetK6>_5hR~G$UZC4b6F3eA1J9>cAWsw4zzKjwNb6YNNZ}w?HFZJ~nd# zM<<<`dD>20UQV~mm&7C?ZC~GQe5$21B#e3|DxHe2N`}n-A@#lAVx52Jw{180OPB`pWrN# z%E$_6k%w!(O)5erO_2G_`g|*-9z}8$CWm^O0ZGyq#L3b<3UR7j2h|!ci$1=j%y-v^ z#;XS4{=6J=j38h6TiC3;>4ITvF#lcC4Jm#|%}xV&_mXhj5r1)S9fb-Jp;H*;?m zC7-;o%|W>mrofJK)=vS^&J|A~dqbZ}De{xD0A&`PL6ZbMc)d%eaKC}F$b7#n(+Uto z2X72AhLauCya4@iP~7fb8Wvctu#6el+lNjEzrFrT{4c_28 zop_{=cnl=>C4dQ2wb!C=v8y=4wAR@2DdpsP#_$*Bh{Eb1GRE9GxM>(2=xPGV5sURG88PQ9ub zl^w(oK`mX@6@FFzF}x|UdfIs+2z3!obAOTi?mQPY%1Z2YrMjXxF4j{2$h@iCVs(SJ zSx+&#oRr&XTN@5A2B%9vYTX0?L);uEUzn0&lseA9+kgJuk=IocAxMcGl$OcTsBkn> z<9IXqlGdl%N_n($*!7>{aV4TTf2^uxxZ-g<%(V)6DV`*k>w2An%|jD0&_!;tFLLR0 zABy25k0rcbLO7;4!#m{O(&lXbEbQq#m00jNp!<}JVX%Xxp_~(p5Z4SqihjeBI5LD` zr+A=WWWbzaDzXW3aJZ1zf4~%n)4v0b>8E@j?g`gYAA`gq(}FuFhg}^RL?q*A(SqNS zxjyMZmF->N-P>HkoQH~Aku&&~=Gi@yhND@GT=kY7q$%mg4MyV3T$=?&A}*iG;$R3} zzQU?rz7m<3zH)`QGM-42+62Fm7Yk+@*)FcXaHP~4RT&Y%F^9uQcHdYWqR0-AoDn59 zjrYP6=?SQ$q@!F9?wJDZ0hGaXaI5#EA8bXwM9(rWO0 zjCvqbo)vTUHSy@6-*W4Bs$E{6aq06)!49h&-I;IWL|P84+HOFHO~_pu@hn3_)|c-_ z9Ze9>k1|Q`kQSHM#Xrq(*+sq-d?_KJlJ#)xffudcyeGdHUj64=|32e24ktDe7`;lg z?`f`Aec;vXrEnNUY3`mHM>ujc_esvh^S~P0Q%c=I2g_BFT zGLyOM+O?{ZL;WMOzO8X7cGPd(6Ti3QlKaBN=fkkEXGIQLy5PD^$PP%pGuZ@1lCLH8 z+s?y`Vpxa>d=auAkoV`u%)h7NQoEK8s>P)PwdRy1qH)2De+NVF7J_-cI99YsUB$rClOs&l)YCL15=N7qn%&1 zXaweZt>({sXf^;h&z z{2LLxBjUXY$y?==)ls*~Thsum7pV#04}N*>7yHuLd1LN3_II#+X6_Bx57-4GXFm-p ze^B&H@M*q@+0xO`Lm3H0tApY)<6)ulY%x3|V4-9Ttl4~$PFNVa34>rZMDYv;6$peZf` zY|6eV)zoA39Ajbn_Ykr=eaf~7$*C9SNFoU{Qo8YoB=HbB9sJ>vQkp9I{B(c&M*HdB zR4!H*4MbCRY-v$72KAi86ufqaZ~eegO5Ro|&Y5s>$T>y3Rzx_sVpLF$UM97JaU4nb z!n~+1=sEI?0opATqqIzHZ*1`1RA4Qtq4npef@dCjgZ~#-@29-Sn_1Oyk1&9Av-1q>6d;{GomIGEo7>^A_FK2z4(L1NGME% zTd331YAlq45Sx_|wVG3+)_ibr%P{M*)4}y$SKzKrpVAh=VUiGVdGqd1Usx1HjxP6E z1nmwjL&av|dX#WQjpaqs=o9AJqV)O9*cxbd(Gv{J@FD9+SP!qK;cMw=GF8C$mUr4> z^OX}aN$dO+6gefes6y|+2xGIFsE6sg1>+KE6c`G>8`!Q?3Onxa6(p(U@p%(Ok`W4~ zUy_-IVGh60Re}dm)aUZbMdhYdl0u_v2qmCWr3=yZ6%ke@-LISMg26kwxVSqF`~>5L z?Np@%Jv|*oSCgna#MHFZ0Ze7aW>Vu*Q9&kJzwfA{CrW?s4!d~1ZY(yNO$%`HOe)wh znLI7rAeyPaZgdx+r~;2edgoF2NXVKkY7&MjX5HcDq0N67WKEM|QTqu?9k` zhXMywMpR?t`!LE7$gxqP=-z<38cm?1qq7fkqaha^9eS}@Za^t#Ukyl8=>2xwgsgUj zsVqxfZazxYV1Xm-{j?T+VZFKzh+V*#>{O~`FflA9O0PPY#5@S8?4%-M6#B*D_>ehn zTbK|{(|%G{-EqECBubAs<~({$mExcVrJ}PnW#@&WXUjdMJXli(q>&A;a?3g8On?d9 z3nsGL=8z4&PN1jR?(c78^zhZtaB{-9HiX^fcdZRn(#W7mWFBqG*&-kW1e)}S6FEgo zz!?Np3}cF;&|{%)q|WOA1x)53OvbA0Ylqb5kvzgQhfr=YstzSO*8 z_Tce5gTTp_2d{wtoSTTw=$F*PfL^;=>h)+8j$SK5cw*0m-HHpz|JvE*0-3=?YZJc9 z0jLiCdlpe5yi;`gtMHSd_5S6quxfzm2L6j=HFDPLOF>)Jp_t`Jc#SB>Kgpx2k?!s_ z%jDVdQIhCP+~^_a@IdUPHgNz&qd^NTeV6(^@p~IC*v+Znz@V=`mXpMZnR%aG`Ojy| zG}#-D^)@obb(Fm}GU@W^Z2rtjvL+5& zfrNY=6kX!a&K+YkeZ?CQI%}|KBANE~`J|v4?UcV$ciYfHHef5NkR~|EmHj^(QN0`P z->6%Ja8SCu{(d`!#yN(s^W+R*kJLuK#ZaYQryH~}<1&k+soKBgw`8n(xBU7uCZyZN0!3N5kuf^kN#k+(`02T~8O{kzO<3&}mwCu*<@HdrC>Fl2dfW!9}n{QxyJ^zhFi_i)J*%dS-^HfE0-nx&Dq+pO~S- zq-|7oAKm``k^N-KxBiIxU)2?V&0g25D%MbM?Cwx74(#cQOKy{&Mxs7t`U3JYKm)XH zEZw?TIJ5zdy>gBmScDz@slr9Xfzd0v14agzny_}@LFS(h5HZ*`;o6kr64EQjrj0NL z*J9N45WMGWC<)gj#^{7fkcvfPA|I!% zn=L)+hY-T}x01+7CpX9}1_`cmxC zj@|!hYi2^5~sboK~vaSihVk`&SLhWg?i!4 z$T(u!)n2m+eIWrq*izvb)H{5Wa>r8YF?AW%pte2(_yojzLi=rp-jAPl+4nlz#b_)a zJR2gqvzdvAOtYd(wmoMF`UITM&V6FyLgc_^3@O1*kv3+H=b~Aut@Qf*7WZaU7fjWp zAFq5N+7`W;{rEBxEmQIq7Qn6SdTwBlKItl=j>%g#&=8}%5~VLriGqCLB`Kahgb!%d zeJ1S<{8o?yz3K>BX*`qWOuB4j33I&$vq<^|CW@*r?phhtzfL2yuKlN}sO^|N6y5GQaADUx$DL zd+bBwNC;E?wdow+g6S?kwMU_0MC@sf1-UK! zgnBr4gKm{NW4Aa-TAl-6GwtiG9zP3Pn{&5QCYZv>>UW1bkgnii&ktqPwX9^Yey;Mp zWz|qK)VU<1xBX2pXZqM$BjvY$H1qs>tSZD&^zDfc$6az&B@d)K?ZMrstX-clpeAs3 zi}7F+gXQ|Ud~w*c)oD4gdRtnMwWvxUDHK*1kBQiSAXy0q!Dd(%F;E~;E3)dG(ZehVlkY55uc@-Ok-%)(89-ssh zvQlYxd^1Mbo);^gSyCBd*ScL!A!lJ{wx^N~+!(^*%JjZ>?yEf0b*|chr0F>I^$9r) z8Yi(JYxI|STt-`+hcO!#1!E`^L4V&{A|bFd+M^gv<)8_`Ro9HmMnR19YMMhK)O7RzOZ4nC_p)Uh5ZC;?9yRFw&t?z$7P^QTA#! zW+p#8zFX6Bm{Y6CuFoD^-kmOsl$o#nnq!rkE@Qft0T*F30)WEG5uw3O^K8d6PbJ!>YcQZdNBVSv4;O zyPF-l*6mysfQyn=^|7tPh83PkkRPh6O=o+|7l0Jn=tQSEQ|Jt80C zCa6cYbUYe4cpaRSX1B6gu+GtdKl>nJiNN&Kpj^CHp$@1Lk$n(mC)qUtAkZf@9#x2_ z4U7R`2fMfLJNSe>}ukt^fc4%>SjB<;z8=y)<0l zV?J{}yj}8-C&o42Th_uHqI#a8c0UC%zo@tqOl7#%=G!SsVlT`$>-!_$2sD3rT|RPR zse~|e5IiXMZO>oiW|W6iVic+NiTWRFFO#6)h7z|^@`)tF@@UOw3eCbqRe5$1nSu3p>42tmN_EcWF z-(LNcm5&G6@dO6#ukD58hHLQRLLXTdikmq0qHve-C6aF<{wH_MZx?;cSetBr1=zzY z82)W(K+PKD1zeT=ps5P<9FJ@rWz%x(tLgXO{M--rNyG%T?2E|eKa)YEDBB&HCDg&< z34`#+P=~%M_brMSy)ggBk?qx}sVg$2j|BU{vl@2Pi_Xxw!I@?Bt5sE|$3j=q1ZvpB zLVjVEf7>eqC`M1)D8+9o?bo)DncYe5o=X4S*{n#JZ=2k3vmV=mF@kUEWh=&i)r)u& z+m-j}QAT>#{?XsvO-Dbo7W7+OPgFE|uPIgqZvkG+{h3|{Q_LH+rL*Yv7MDbn0@zxQWga%B*Ci-;fVHk?#f zJe=u(N_)hzWbD@y0UQ8~@2$vFa_qYHR?K?eZ)cszGK;l_TcAel7XL>67QcHBL&vBM zHK!)K!?&npUm~Z*u`MziM$dzSvtA4QaPp>t$xte>=Q|69^IqNoFZs}}1SO%Qizw(R zBlt=QJ5ae@f>_khY+O3#?NhTGx)wagspVSJ*JjX4f8bnk1yj67q)G?rZlsz+z}FVu z4hDep%2el3+J>|1)Z0<;4f;&bxc(~?M|&l-C1`~0n{sg?J;R(G+|~_dQQhpCTflqy zOH0hTUutpSUd8A7MIx1UB%^Y!F6d5;4)z<~?91CxaT^^3^@rNrDqPjO%@2J$}2RpJv=@Zc_8RG-a>|#0K_-}~Q9aZ7_Y|rupdS<|d8P*r_bhsm# zye;@&5T{0iAmb{ilu1FI{b|nIC{-LvKD$8z&IasA>}|Xv2n@B!IJY0!RKq`{j(#`M=q(c+NiOZkIooJ=ueNtn3=jZ)(K_WrUL)JP*}4tZ0Vot{w$kH62q zu7`SyL(w1#tEh(96RpIqeS8x>4Ng2K)O2&BW*I%#I4NU>Zdk0HBLD5Aj}BgY{jY3B z(tui4sej*Nqgcf-3k(~>6^j$Ba=I`V>opTF3SIBr6-KO35rb6{Uv}6>oop}~RjSUP9;>0B=Mjor}wdA9L)&2S?RtGDT)Ah5n1=TWz z*PQ``ZO{4ccnrujD{kG36(4~|iS&@gHZ5Lb?{@8OY6C>;;kG+0W`MX@{dX=*Xx_Cc zoF!Nh{tRff26lu`h|^;!JgVbZI0BjtJ&X6>H5VDR}4S>vyqy@w6+47?0vB+C*e~{?FPM6 zAIX4{;CtrApKdpDi(L7epqxy-56&$nl;W1qR1U$qU$+DIS@Rq2^ULc}$w6AQH+0qw zt*@8Pk+6&w?{v)?1b%DBo4xPoXD4^jlI>QGHA3k>B*t+KU(XUEzjjED(Pp9Si8KDd zSdNQx*!tnFkRs;X6#YRw@uI*O>S(&L9BmwZ}mBB;f;jKWe1uthR$Gr_3@5iz< zyZr>O9eo6N<@BLhUv;>LJO-NC^|MWuM97ZUSdXQsB+a3s^-iTD^wd<4IM*m##$t`~L6yP*WfAo_>3-`1`zu^9S4qpJS}ku2H% z2RLxY5}u!j@4Lz^KBWi~ET8vVdM?&H+708>VeIJNQcU;x0Sx0Psw^R*MqrK@rMIO( zi!U&q@y)b|NPOLq7-R(wP@qE#r+tLK#^Ao7?A|^)VfX#DSlZOfWsL*7mhrKWVjW9JpIdwacT^-x1tv6#lZT%(keS+PI)-FOIoCg_1V z@7Ua5Un;ZMzqUql<>Fay{t=`XVgGBFo%#RkvNJPru>Id%c6Mgg|Fg>urK=*b>~1`! zTZNu_4u|{zj-=>F6+sx)6aj5FjHe2!6-4}=Mi{a8L|wL0WdVlPP((}|MNAkG!P62Y z;~1^3LZesor{#$&UH;;J8g57ZVx3>XzweqZY2)`1?Kju)6qmUT4JxJ!GGwT*3WH~e za2_H$?n@!B62EB`FDWh40tq*@C?V-J*kFep@Qm!(n z)vAB9b*cn`{f5Tz!3Wk8UM76M0owD9^RDwE@h2Ijjz-bw6d4GR_!f2?P9?P+-jXf} z8$L%1FQA^L-LFFxJ16ZKC++>9o@0v6&d(8$_gEh<9`{&x9-cWtyuMULo|@gB1)jpX zh7r8XjPx74+)F;vnyM}X3z!`pUFDvJs$&rIjz>nOc0R_6KAMu6hPoNNeig4Z!%p`J z4Pr)6fk;R)(}y7@5xhe`5Abl*OxfU-$Hzp*L?z;gkB6621Roin7J*95Xg^69+G(f| zJA#Tn%$+tz!Y>R2+q*_Un6QPrT`95y_On+!{Q%eQ?)CbuLlzYmO;F>Hiq*c96JRWVG(4{JHz6FBT_NUJfCq(e z&x9B_{f;AXp2(=s=mX6Y6BlXPT1=JVm&9=R#Qxq`Ei1Yz{Af-kjn{ zC>iNk@f3&&q_3Fakc?Dh9%ywRI0q39KmZa-7SadhZpO>aAH|8HYdN;?zN;3{6CAn| zO0N1?{lip86ykj;vEbI-Zfm~5!Vi?RkSK8Cs(>x>8pzO7;MBbc=Md`Y}V~w1_2rAuhQIFZV{c>DJ^uo;pKr=^AY;wQK~*)u31*5G`F(vaI(bVwK;9L?~ld`Fax}VYwRkJzDE_oPBMcgm9V!VOoc~z zgSBF?FGG@z6%9ksP(LH>GJyyMF^NcW63TZrb}DY^SG&Z@_;|E0i8%6DFctXO^_pl{Nxxl!+peLf6(`fucnqMvEL*6gx>-2yuPlVE%W%d zB>AlH%iBDs+mF7NUIp(Yd}ug%i)LWy5cjyOBRszzL0qao&6cVC|_j%s@M^egs_u+;YT;BtU zwk_&VOr|O;@S8{_|#iQr)0V*Sr>Ps2+oCx>8@ARUGE_p4Fo=roYwE-= zZv{yqZErliaeveA!u9}`Z@`dtMG|m`s97mA(VGPxG1V1W&gkxM`AZ^$Hgp^X;P}8$ z1Eai;AAX~0Lo!Tnv@(H}Y}p6JDu80;qG2?4sul5Xh2^_-sYSo%gszI#_sV+*boZ^5?p&Q>b>P{}H z>VUD@^V8tcKEk4E*#X?zfC;(- zCpk2|#QcI;1?Da}6Na{sZ*JLuhR^EDc{LgIYjdpgv4P)z%LO;Mnxp!LEX^7Pn_sP7 zQLt>S9TD_XNby%1&M&wFt!;UlkPcY8 z%lcQd{oY4p?FGr7B#0+in}H`$g7r2n=ly1B?C^ zDUXDhTo6eY#1SOx4koA=qcMzwOfX21LJ0f@!$M-(B)QoaSbkIyGn6lUx_?Rnwd-Cj z9`>md50jfH;@o6$SbSVncP+FKFcDZc9y!Ya)oYvth_Vo-(;xsx0w*z8Ot0MG%|>@f zx8Z2VexeN=UadE-6MAjm)C*%X%kj`^)I8iZzFE()yym$OVFrnm=SF3eBqX9UO5&xG0p zyi>Lh7(+q^Z)HG0uY0WSAhloT-YT3`J>{%1tY_3U=|;b2p%mmzNph=EgDA8QbJF9S zi;62mao;~w^J&zNpHOH(Q^cm+_CgW}G3!;wbYs{8T)-{v>mkD{g-^<>8i+Wy5m{RzY_~ADl?x719jisp z+~ST;mY6PE3R7on0V0p$#xGud3BOmFuSldPb)daFwvl1NF(A_|-4U2qu$VwC*?Y$a zn3YS7Kp2=!-nzXjTA(SXI5ze)qIBsdWHSCu;Qj+90Ul)i zNKrV~m7!pAuGlkwq=x8@-$ZV^x7K5v;nfZT?NJh(Vb(rV5i z3+e>8=x_qfW}P6_wkytZ?J>_ zqzXXzayPm(y2E&T$!WMpM7$Jvz61goCjDHnE5;EL!qJ#&}&aUSndd$>lJ3VPGlHv z+nvS1+`@Fx#XBEU!mYY#cwURq)G$hhNoBJRs62u&)>g|3-bQ!gaEAK{bB0!h5SOAH z5kg3Ae(ZrS-KqJ~lb>~{d4$RGlAM+37!G~+40Z=p?c^uY6;SQ^ruChKL>O{dkhHFH z#&oZHSwmQz2@n8p+r2lLQxaKN3(vL-uR@0_co z|CaFWEh^xKtZ%|r1M`?kY?8|ZsP~v^!H*a191M!egat6VxMcWKVu_E+&H)K+KjQn* z_E)qAP!fB%E0RIz9>Qicy0Th!VNs^SArHiUl{p5jHdr`gDfKlPc4sHABg z7|jikn2a^9$!~MdH|Eq+9pxv3{nRGKBMqsbAWj9KM{Lc1)E0y-blRWpCo_2sOju2@ z`EURNh7HV5sl7jkVWwc|wsKpU`Z@Z4b}zzE&i!Edxb2#az+I0Q7tXh(g}AFa1)>Fn zh8*iz8ZMw*n<-cRl297b0+mcRMnAa1=2yTSrM{Ix8fThTeKT!fjRYUIJu?1WOU61M zteNy<@?CEwEV@a0P(SQVUWPeHUils1rWh*~@@7ig`rMCP9ktpA+U#yT^uUo%kxJ{B zJfn4R&ZMpX#nu(Qz(exfr4G3t5Fj8A9Py5q)5@JMv=j8;H-_WEh9oWzuA1DUQC@U2 z_P#X-;kDfdNunhmnn<7Aq=S0FWi;P7N}DcK5og(Y)w&^##3|hm9f(0dye-jQeg$ps zeeJCAqElSR#4gN% z%~%!*>F3KuRo(a@#=x71a}BWvG`h$p*Z|brazFniCob(>`WdwrnSl3+D^F%7)V8(HcCI`^ZkA6RW8xHQ!YE1S%Vp`f3(ue zvu|=iAUXbCg$?9g?s>pgXbuV_yb?cS91toKc1Uo$k+DVy##vY-8|1|fe&QVXbHzWB zKyOTk^J>@gM5V3szbQB%kY3Z%;)h&dp*kz~DZWk@5A(`J+Er^Ja2#j?9M~8^hLS8R z?Addv8-g>DuYkuf!!-IqbUziwB(~zL+H$*`bu6Y?27WrySiD5SGMdqm_o3Z7<;k_z zthaq{1&ju)2>GW~58BEJS_bp`vdboG)wfPIoPQamH7lt!#Wb~7EX9Mza(4>6x{fyQ zfB~B)!>8fP_n&eF+U`F8s8zp`rLIWPJm=O&`d`T`B;PwH@K#Ri{BK(p#yUTE6{E)p z5|VNV(P@o|1tT`}0<&BM5Lvf<4cD$?V;Y;3y}hG69~jEC_(iK3aRcE58*xJ^mv?yj zUivjFs+WLckWx9NMS1FZgaFA(kGz9)a5+G|M zyq;WrOWGPl!e3ADkKn&R|1O~vkY;So$FL*IK0oqFb~ofLMM?-e_Zk#2(XHcv3d(`n zbnyd1X|RTbg{W?J2ZVTZp^0thX2|2|of>e5l4{E|@?FKeW9(lU>Z-czZc#?Vve<2quNG;F@_Qm z9F)^(;;RS6>kp~l>du#nCsmY37qUdQ-~7TQ0)1W)q>dDI zZ=$b?r#@fD)?MI%I$==681nY}pVG1vAdw%*Mojtz34_I8 zyW*9p=`o^L!~QRJpw4((prx?J2UgD3hfUg4Z*9KZ9*`rZ5m6>%s-zxd7uJPO6lcF+ z0~c7>4(tq&VZ`NHPB2)Y=(V7Gv-l2uyTaMfyooY{2!Ws4Ed;c~l7mebtyg-lM(`-p zftf3KR=y6t>sHO}x|L%8Qpc=gn8L7j8pbupce8zY4OygJ0wlz8Ujb0i^OWuj@&`A*Fb*WWoBhxq_rPI| z%=W;-dLfD!hG~sfa^t|opkaqQFT+PE#9I^}QEQ^J4eM5Yt92OAv>WN&#u2G5f*FD< znQ-j8;k>4Rb-0MobCK3twgeK{@b))4?(QbA1Vkgvw`uf0{EhkaiBfMsLG)G`DqK`ZkV04%s4sWyZ zfK^?#ph3T#V2s{L{N4_W9r-?pNZT*6;i)q}+Bo+w;k^Gma|ohQ{kd|^wX_?A1cNqW zyl2b_nU?TbQyr(O*Q2Vyil8g;8nXJAV{z)hbWSZKxKw|J&4ww?D5}#^?7!>3#ls~! z#;UR-0IsBRv$h8mAp*Z0+nGe0X9Slx9~`94+h)))J%P#0{NEutj~sR%u|hh}9hy`d zV_cE!(gDKTgCEzoK1|)=4Q#le&MztEzvC%l0-%gHumWNIrQJqA_g)C7wS!VdblM9` zY+FNL_+aPN%D`(NqYdz?nDr9V5*vlZM>!QA5+7Kg1SIH`TLITeWgyTM`9QU>CYq*XT-)#2H~d34rs@X%?qWl$upX~N;kQD!4f`#t z@u&K=w0UldHlsex+%F}WLe`#ZgkYkK)Hm0z2r;0zr&lLQap&b%u zCZ5bcYic!?+VIh8!;RMVkH!X)L29n*1kr7L3Fk!jGBUiIw3Uovf?3mdf+^Yd}{E&ME3k zq)4?-O^wNQ-Rr*jtoJzcXl=R%-$_7n+jDu@vvk{AgpQQI&}q&%u`flY>Xd^?zFy@4 zckcORUQGYufPR*OAu0)%x@{;95z1%v)sbWoQS!hUz$VnQ^#N66hV(mxe)hKe5Q=oMa5$<9e?d9HFNrP4Gov=ip_`~?&za{BqPq9eWbbI&%~9iov3Bbp)sO)UwIM3!nue!~jMEy@rZiKFRv&x+o* zdZ_7am^GY(h9zwBgCib!VnIm6EVuAB_(ogO+EXSbDcmPg<7U^J?jIQbAS7I*{VT|+ zTfN3sij0C@^%No7@U-ZC5vmd4N zPMOzK{@*ISN`*4Vl}8zG7g+{~0|N)9WzBti z^>I6Ozus_va5&mbY+#(S_Zzirf6rFxQ~jihpgGvGilr`G8kgbt@vsr8av&KyiU`HT z*H`iT2glL%Y5oml47Z>8lDwoQSXxn)d!mOk<`gkZEFC~LhDRx0d@cTi%J<)T}C?JHvbO8ECD$=Az#%3AgM zwDL>^jJ5!h?;HNaHHGAUGrCoq$iN<;4Pw`mR^N7GF<@+p@{-)SfCEZ=bHt2wVFgpy z869#V=3qNeS1|kQweXl#v1}J*;t9Zmd2#g1uD#~bnm^HrzumF{C#BWz^+x3$H32-$ z*3iH>2qBDs$L(gP(PS4QICyX{_z|dEY>hCaRgTaK*>P(n$kNI)NI+PV-IP5|o7d%4 zt4zkuit3kAHn|`4PRamIf25rt42$CB$3vy|=R;+)*N&k1aUiK1ye$I>+22WS{!;0k z(QeiWUP*rq|994-*t=ZQt){E$gqcm>Q46P|5A%{QiyZ*~uE)Q|zexK8Kqq+UPy)$z zNlY%lp!2nTwGA^VAmudv+Y;g6?U4@M-1#z$W}B zagsT^Tx^wZwA&7UK&xG;8%$3vvv*Oz+sJ-#b2QzVhB2abi*7s3j`tqJr5P{Wdp@4g zdb+BApDni;&;=^bBi~5}&+t{XVsQLmx`;o(F@tk*n6T!eJIh6eX?05Eq%el@Bh~)nQ z#d0Yd$wD2g@BCgG&i3TosH5TyPL44Q{)Er|9Wxa{ggkF8@>=-26lAEV!z7u9P1CwO zX6KGpvu-eta7#(+VT<|PjtyHCntzjD#6q_vYvku=WaOtSDvJA^Z7?>IDqH=~+m+O2xA7(QXM$D0UQ1Z?CF^DAWI9{flnUUj zj;E(r#N6X^=5X0a7XJU}dI#Xh+OBPMV%yFn6Qg6>nb>wZw#|trw(W@~wr$(Ct&`_@ z>;1oj?{szTTKC$0YgKjazIxs3y55p0s^s*jXm}}nAdZYHTg`4x)#LZNZxFuf8ny}R zp*NDpe#58n%W>5+718VI+5X|}@Y0!i!JwY)4{H{G01|NP%)=gzChlOx{#qv&8U-1z z&VHA$iU>{Kr}B#~?W9BN)(qTCGWXRB{+*`0(kgRU&md>HY78H()dO5yZMs}>JMvf9#6)Zz5UTLvrCyN1aS_kw&$D(69PfJrNz*d)i<2~<&$n~0f zuhGi$;0l>Hq%V?4^sH|`xV~=}Xlj2uMOOd(;q%kL(vlIs3mS}-S%fEs%Tsx6!8TeI zmnfux?a?~w0FeoYlG%9n_q1Z0flH35^4Y=rPqq`t_$XCEJx@WpdG^0>50zmPM)q?N zA7dY*L6T(U5+(}^<;l|+Q~Vzk*>G0V)|I%b#1|3^DUKV_GWS7ltPH!||z(?WTXyxaCZg(^rlvgO4M(VUNn( zmdEjz;1P+B7QZSVvJYOmy$_hn3=i7@6Z_9@e-+T7*HRrT+F6-h27=wMYe32!^JNj0 zaArbejo><|0IyjTu3}@il3E>Z7^f+eMG?2!iOfAU>MM^@zRvHd!r7NbwLOnAAFKo$ zO6yIf0rbJDlwOJLaNO>@f74wH$c< z(YkyZ8?vV-8UK2cvQM5v$wy1F8P=TGnP}ox!q9R9Uf%T7hlE8gCEi+R9VAq}Q3FL6 z4=y7!&>MLTnW++1HTf2}GpOH<#n@M_$fpN%qS>Uq!knA^92bmah%nnA*>#d07zu~k z!lawOxnv7hSZ-mUb34LlC7`=I_~8(~X+F-MILLeyg8fa9dx-Wm5gY3AWVaE*!l^(% zqV6%cc&S*_(wR=g?7*S8+ zOWl(uzZBKO*VJdGU0YPb6n1DCbcZcb>3XhZ&P`{OU?DG%kG&%BoET64m3MhS|EPhX z-w@2QV!~H+=lp;X8KYHzVjtlHWRWjjJ?i4T7B8)ctY~~;dbH4dHPJOwIhauK92*&d zD|;AbBYD|NFxfD?f(!3p=d-i#vg+@!q!oAJ|4F2D-@FBd3$5IXgIdY&$NXy%?P$S| z$Rmz99uw;Am%>+dBwP<<6DXcQ5Vq^|a@n>GWWb|jzgv=5tRYiiMsq1kj-qgrm>UQ( zB}f>(1o2k%V0V*C+AV~LA~*);K`_0=8bnWLu`ahHTT7*dpK?$U;+b2u3w5OLoS)Dw z05p}Yf-%5cFU&79KI5zoWgO80?H|YA4L`p)og;$`&SJTz z=WX+Dj^dtyORR+`*bM|%HqNK@Kxg7gQnz9=G0O(a#V;nW7;!uPxro_a!sUoTZ?!76 zHB!&^9`BG#%O*K50#_z2b{tz1#GKhy!@XRoUQkS0z&fd;KyTTe9N~f*ZxgoHk}GMt z;It?NMta2PNMR!nl5Bl;%~Yy7@Z+I(Fuay@H$R>fv-|YS3c`H_0>5rEo?naVhlg_Hx;XQqTvw?X8NrukjiY*Elh|S z^sgn>kHoJ2h%237yM6LGx0&3xnfrV)i#K5S4sRjZA;rX$?0$QDgxV{HO45hA>Gky` zo>h>a*b=}F5*H+X#u4=yVsFL^0vkqhj{?);4$J)~7pI^MlPldS$v^jf?HD?b{9RgYgC+ztX~G1o45v z!_6(ahV2Y^WYxYTM`^^N#?EH#-gX=pgYde(D*rp`YHZ3zs9WdkpNq>YkvodStJCL+ErQm?uF4N-G%uFr{xf@AA90c zr)O%j+bu4G|JPw3@M8DS5WZsh8HSHLIp0CLqlK8KqF?WKMHpk7j4nI!&(&d9<*9A5 zPmJVpYH@GDht_bWD~Ydoh4mBHuDzcE&eA_uZ%`3RgMUYZ1%RA5|L8sf zANsZ6|7mBkxLM{5H`?a}2S5A=l=O&xe83EXm9gS-3+3iE27Z`~6)99{V>9KHOQ8jH z%B9R6VkxH1WJlVYx3&nk6UwFZ?V!-2{P)v7`LZBi=L#ml(*WDMh2FnOx7bV$r3hxp z{)DP|$){hJbWHK?L}p~Oxkyj%tQKuGXciqFT8r__J|Pu&?@=GYZXZ>3Ub97>AF0~b z_hX_$`AL5=K;-&X{0Ohe<%4;`%Ii`8NusqgMmQl}f&Sfiqg{=%OP!c(zYA%$@E#;X zktgx@AFKC50M~j${iRJ9$Ukww8J~q7+ZcI^M{U~PKcfN>&jIqg@&}>NNF+1|8VD#_ z+>AQ&onPlJX}lZJ^GyIaxb}b3TVBbUYB5oE3~Iy!OmQ*AHy_o>p>Ft7Ula?IaL0d4 zAISfNxN~;?>QOGL0Q;uJ(}m1kzxb+U6VpB?S;Xk3k-*L}2f4%g@(^$)!xtu>1`T+2 zGRq131aCz%UXKFP6diNLsJpH8vc86FGwFW!6^HkJ&sMPGb<^=rhV3xl5&nP~56{7y zq=20e>6YU29pqZ`J*?Q}PXbMEQ*MNo=NAx^KY=r2KsJCpQMf1(UOY)(3@1*KEP5g8 z%{1Uq_t8QM%!bUU;Tvl?!3Du}6Pl$pmK@mAu>v$|2a`3F1ePrTlh%dhWD z9x0;}x^LpW2wc8m8T=S6WtagfxJ-CXD-SaC6!01xwQC$_eYku$!5AIQ|2;sZMilSaIYRrIa;N2;Jd$=ji^C zYmQC^jm@^}(4*eZmxj`n)BSa_ZSDFe_yAmb@jvs+@BzZ;mDBr;Y-2ogcJXyElc?b@ zvfCh6Y3tIVKaU>4Z7n))`f-ElWp*JQWXF&y#UX3&rdh1E+4q6ASNO*WFa5e0b4hDyjSXRvUFXE|EX=8clj}YZEY99e~Ec z^WG+3xmn4Nun?LkYku{Val)~VCht$1UPQ7?$U>u4vhyh)-cMU-uZR?X-7SbdiZ(4W zHfhgs1>Fz`Aj4=rOhzT~x9Axy3BVP7WPp8nO!G~x{&pUHM#JfGr#2XN=atD({y`O$qTvTcI6mv8L@dXxD~-e4TNS0E9Gh@EF532QNA8^~ zb~fRcpn&Jk24caNzk5pr6Jiy%{<9XG(6s5#d40#1m}H_9Pk9Bi4RPG*IkmYMxQQH# zucR*0CtydQUTAt^pQ_ohtmc&ozgqvBBWkFZwDE0mF}JA{RnK_BjUhXn(=`&3>*}Ri|*h6`&ARY)s9y%IH8$)rSd?Zuj=g?NLPT1 z(4eq*gIlS)Qek`a8Jo$U5M^t+XkeH29PO}g1iy`2*L!*v(Qa=y#})=iJ*byCsWv=u zqjvf_iX}-bF>~X%sls^e=Q75TC_!Uo^k&k1hbb=21WA7v91@HKR`AMAIPrV;IsuvI zQx^GX9Lm23_aoyBqQ#}Hsf`U_!c&fh#>a*Z?H%>|?jbUbsJBww$-6z#=lgu0>1vNR zj2qo{bKKIc>OpN>^5dw`Otx3~<`Mq4;HAp(cXeb5KiBD24N^O-x3a)zOd>tXd-KEF zi_F(fQ`d6m!$hQisS(;25ObY=p7tO8kloMt#a9LOKiWm|r#-7Kl& zfiln7UH1?5l9R6TUR`Ne$jMS>V1jbz4Am6gFC|aXy&22XApo-mqB+L_rrd5P>ZmS6y)ikmdXTI{k;GP#%3%H z*#L+=!chz1c`UhDG|?p6>1g-(2XxBJHQ83-+RTUS+NnX@9wYi1l}$GC%kZsCHzNek z{)4W~g&*JAZdO^{nYB;zk2aOQgUC&Lm6*ZIpl$Xb^sjbDum?9@Mek5yS#5{oVCR)f zBdDWbc5*2LTS(|gje>sbN>60K&eZ;$tsN6c(9Lkff9d^pAq}7vLu>)rabiip6M#)h zZo6~49_!d%_4u{Q-Gw`Bbie7K^H0{`7*_#6q+IIl3N5^XeY34muuzTg#mtI@z|??#u=(()y%@v%Ig10Xqc1awne^-%=8}{D zzn=ML{y%5_|6!sBh`Kq6D>;1;>I1~2iJAHM{>#AsKQ#Bkwl+>c8z)ENf2su(|K+a- z$Qzgfzb+16equIOwtsIZ+Ws>PF#|vbXl!mEWb5`tzt2F-%Fag2&di|$5O%P&`^U-5 zM$bU}?}e3x;mc%aV4`Qx0SH+EfyV#bXJR4#db6@J5wkP0=m5Upfc1a6eRU%K>hhls z3=9lxU)=tRKu23=2P2^4mrj7Nt(C2VlAVDO@Slbf12G#1%RdX_;{%9&ZQ;u)#`NW5 z{dciq%*4#h9RD#{zD&;ln5DZ*f8U}OGY zYB2uqk^$#BT8^s&7(Rzp9JUZ#;J;o)XOBgatQKX@W9b^Qe#b!}tH*{4_(M zzBw1MFTf93BjUeR{pA#xfIb5onrMlKeMsyNcSwQilb> z+KQr9{e`f%t5&&+Vc&E?oV!7Je@2UYs3K}1NC43)&Oqa_?v%~NaDBFHX;vF&?;cWJ zr=CtlbUipY^4wE(`k~wdn?a>fxz4i%jM}UM+t>!Grat*N5wsvvOX;Tewy;Q8)|Mj*YsSo-rp**s4xf9$cL+fIisT8q8jeT;1%SU3t!^bwe z_c3*s+y0`zIXIz?YwsM9@J+1}mqr#}py98m3*g}#TEz{c(9TZi@WBYrX1#p20~_ouQ_q1zn(FxKSEdoy@uI1hpmm0=@+-Jz3;7{qznx3cTWMdRb?{*m4D9 zUC%S>l)av*I5pJXs?mjy%`y%N1HJ|Swn_sT=HL}MOIC$QC5FJua8jkSFpkaw*&$uD zr{sNrEpaGlu}|@Y8NrdWzEe&K(zPlQOTuEuqMgN2tReI`X}s;IJP~4e8$x*FIB54* zuz0fhZTUEWp~4kbiOPty%o2_z#;2wcNK$Kq>{go9TCeT#Qxc;+16lDttqFZ`+5{=8s5{**z6A?*G5*E?cJ#q1ZWQ5=YvzZN2SaC@8{I<;ojN!xC#BG+VFJ`G9H|z%OO*I8 zHuM`ZHS`UUAD{HkGH5m`fh33+yycb={PdIX8AEPz(>nj% zX2JlF)wPOyzY~7-y1dJv&3#2n;HzphQO_jaDiSb{kzZXOk)phxfp$J>1A4i#ED=HJ zH?sbL)(K+i5Mz6>Ww0Wp9$se4-tF1k|RXfnW>IG=e zZbr9_w%o4KEpoYq3@b(e`O-xj!$*R&jL0${J5}L^@H^c{lIw<0eYAy962myPYFE8c zuxwxEEKNuX5ShAf<51dX=U#p@tx*fp88PA=T>Q~4vo)n;6^$d zE(L-#CC5?wLWtcDB-tDcUA!`uGL`eyD7bENi;Y#TTfX+me@U1e5?$VQ;o$Ht9C

~SK3Z5`PQq3cgUY`#2WHoA&< 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�dW1OzEN^cRcjQNRs7`^ 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

tG^##o7xBu+e`f2P;MOj!qwJ;{=71v2y za6<2IHmp}G)5ey(dg^p^>1MdN@}){J+@D*W)~eV^vVuZUn(R(|NrGS({&kvUIuRH(;Uy8 zHUVAmt;teeK{#Qs8a%I~bvMb0FW3!ePp-K??i!9pjf9O&Y`|@5YHLk;KVA zh%n26#i0n-6mDM3GO4iN!uU#UeC>1)H=Vh8u*r~s;9D|xu(JNq+XQmN&EoMFX zvzxy(6s3NzC8im-AmVL%AZ|ZUh>%bar_jwa(?z@sW?3M)@457hkIhs6%~tRi;VZi_ zYhwbd*SH+5rUL=mod9EV#kEml#qm;aOZu48IfJnETzHfwv4#1z zn+SY#`KC~$&Tf&<=KOaPaQ|b=C!np~jKaLP7Jf^PvOh|X1UhC3u1Uowi{r?LO zQQht0jwQCrMy(NllmK;3nzD2gQV&lC%fvJqv!0T^-e3|Zfm+>{Voa)Gnt*YTHV|c# zP$DB~p(NWb)-&3DYnSxo+wY!K9_nShB{DCVe7>JFvEA zV=zzfGcW`Uiqval-Q?R}=R4lS+tSEus!=MZkiY&5nb|f*nrkM{{C)L9_$mV$nElak zjr$vMo%3yp;X9=35$&)%5;UyOlw;J@=N^8~XhdnmDb$CL!Gz(2{)iEYZpV~`J`

JMzaUj9~!XEXyFvOxsY~WJ`a`bj!fI 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

_T&Z@`LsEVvaXjh4^@0Tjy_| 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 A=Kufz literal 0 HcmV?d00001 diff --git a/9781590598313.jpg b/9781590598313.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddde2546fda973a9dbd8c0fd5e718cbdd5a0a3e1 GIT binary patch literal 9054 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 C#*r`p literal 0 HcmV?d00001 diff --git a/Chapter01/README.txt b/Chapter01/README.txt new file mode 100644 index 0000000..e686bd3 --- /dev/null +++ b/Chapter01/README.txt @@ -0,0 +1,69 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 1 - The Qt Way of C++ + +plain-cpp + + Listings 1-1, 1-3 + + The MyClass example class in pure C++. No Makefile or QMake project is + included, build the cpp file using your C++ compiler. + + +cpp-with-qobject + + Listings 1-2, 1-4 + + The MyClass example class inheriting QObject. + + +cpp-with-qstring + + Listing 1-5 + + The MyClass example class now uses QString instead of std::string. + + +hello-world + + Listings 1-6, 1-7 + + A simple hello world demostration to show how QMake and QMake project files + are used to build Qt applications. + + +signals-and-slots + + Listings 1-8, 1-9 + + The MyClass example class now emits signals and provides slots. + + +gui-connection + + Listings 1-10, 1-11, 1-12 + + The MyClass example class is used as a bridge to carry text from one widget to + another. + + +qlist + + Listings 1-13, 1-14, 1-15, 1-16 + + Demonstrations of the QList class. + + +stringlist-stack-queue + + Listings 1-17, 1-18 + + Demonstrations of the QStringList, QStack and QQueue classes. + + +map-hash-set + + Listings 1-19, 1-20, 1-21, 1-22, 1-23, 1-24, 1-25, 1-26, 1-27, 1-28, 1-29 + + Demonstrations of the QMap, QHash, QSet, QMultiMap and QMultiHash classes. diff --git a/Chapter01/cpp-with-qobject/cpp-with-qobject.cpp b/Chapter01/cpp-with-qobject/cpp-with-qobject.cpp new file mode 100644 index 0000000..296b7b6 --- /dev/null +++ b/Chapter01/cpp-with-qobject/cpp-with-qobject.cpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +using namespace std; + +#include +#include + +class MyClass : public QObject +{ +public: + MyClass( const string &text, QObject *parent = 0 ); + + const string &text(); + void setText( const string &text ); + + int getLengthOfText(); + +private: + string m_text; +}; + +MyClass::MyClass( const string &text, QObject *parent ) : QObject( parent ) +{ + m_text = text; +} +const string &MyClass::text() { return m_text; } +void MyClass::setText( const string &text ) { m_text = text; } +int MyClass::getLengthOfText() { return m_text.size(); } + +int main( int argc, char **argv ) +{ + QObject parent; + MyClass *a, *b, *c; + + a = new MyClass( "foo", &parent ); + b = new MyClass( "ba-a-ar", &parent ); + c = new MyClass( "baz", &parent ); + + qDebug() << QString::fromStdString(a->text()) << " (" << a->getLengthOfText() << ")"; + a->setText( b->text() ); + qDebug() << QString::fromStdString(a->text()) << " (" << a->getLengthOfText() << ")"; + + return a->getLengthOfText() - c->getLengthOfText(); +} diff --git a/Chapter01/cpp-with-qobject/example.pro b/Chapter01/cpp-with-qobject/example.pro new file mode 100644 index 0000000..ce4202e --- /dev/null +++ b/Chapter01/cpp-with-qobject/example.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.00a) ti 8. aug 18:09:23 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += cpp-with-qobject.cpp + +CONFIG += console \ No newline at end of file diff --git a/Chapter01/cpp-with-qstring/cpp-with-qstring.cpp b/Chapter01/cpp-with-qstring/cpp-with-qstring.cpp new file mode 100644 index 0000000..875847a --- /dev/null +++ b/Chapter01/cpp-with-qstring/cpp-with-qstring.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +class MyClass : public QObject +{ +public: + MyClass( const QString &text, QObject *parent = 0 ); + + const QString &text(); + void setText( const QString &text ); + + int getLengthOfText(); + +private: + QString m_text; +}; + +MyClass::MyClass( const QString &text, QObject *parent ) : QObject( parent ) +{ + m_text = text; +} +const QString &MyClass::text() { return m_text; } +void MyClass::setText( const QString &text ) { m_text = text; } +int MyClass::getLengthOfText() { return m_text.size(); } + +int main( int argc, char **argv ) +{ + QObject parent; + MyClass *a, *b, *c; + + a = new MyClass( "foo", &parent ); + b = new MyClass( "ba-a-ar", &parent ); + c = new MyClass( "baz", &parent ); + + qDebug() << a->text() << " (" << a->getLengthOfText() << ")"; + a->setText( b->text() ); + qDebug() << a->text() << " (" << a->getLengthOfText() << ")"; + + return a->getLengthOfText() - c->getLengthOfText(); +} diff --git a/Chapter01/cpp-with-qstring/example.pro b/Chapter01/cpp-with-qstring/example.pro new file mode 100644 index 0000000..3d00f28 --- /dev/null +++ b/Chapter01/cpp-with-qstring/example.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.00a) to 10. aug 14:07:53 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += cpp-with-qstring.cpp + +CONFIG += console \ No newline at end of file diff --git a/Chapter01/gui-connection/example.pro b/Chapter01/gui-connection/example.pro new file mode 100644 index 0000000..97ee035 --- /dev/null +++ b/Chapter01/gui-connection/example.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.00a) sö 13. aug 19:59:30 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += myclass.h +SOURCES += gui-connection.cpp myclass.cpp +CONFIG += console diff --git a/Chapter01/gui-connection/gui-connection.cpp b/Chapter01/gui-connection/gui-connection.cpp new file mode 100644 index 0000000..ba9845d --- /dev/null +++ b/Chapter01/gui-connection/gui-connection.cpp @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "myclass.h" + +#include +#include +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QWidget widget; + QLineEdit *lineEdit = new QLineEdit(); + QLabel *label = new QLabel(); + + QVBoxLayout *layout = new QVBoxLayout(); + layout->addWidget( lineEdit ); + layout->addWidget( label ); + widget.setLayout( layout ); + + MyClass *bridge = new MyClass( "", &app ); + + QObject::connect( + lineEdit, SIGNAL(textChanged(const QString&)), + bridge, SLOT(setText(const QString&)) ); + QObject::connect( + bridge, SIGNAL(textChanged(const QString&)), + label, SLOT(setText(const QString&)) ); + + widget.show(); + + return app.exec(); +} diff --git a/Chapter01/gui-connection/myclass.cpp b/Chapter01/gui-connection/myclass.cpp new file mode 100644 index 0000000..3828d49 --- /dev/null +++ b/Chapter01/gui-connection/myclass.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "myclass.h" + +MyClass::MyClass( const QString &text, QObject *parent ) : QObject( parent ) +{ + m_text = text; +} + +const QString &MyClass::text() const +{ + return m_text; +} + +void MyClass::setText( const QString &text ) +{ + if( m_text == text ) + return; + + m_text = text; + emit textChanged( m_text ); +} + +int MyClass::getLengthOfText() const +{ + return m_text.size(); +} diff --git a/Chapter01/gui-connection/myclass.h b/Chapter01/gui-connection/myclass.h new file mode 100644 index 0000000..6e1a96a --- /dev/null +++ b/Chapter01/gui-connection/myclass.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MYCLASS_H +#define MYCLASS_H + +#include +#include + +class MyClass : public QObject +{ + Q_OBJECT + +public: + MyClass( const QString &text, QObject *parent = 0 ); + + const QString& text() const; + int getLengthOfText() const; + +public slots: + void setText( const QString &text ); + +signals: + void textChanged( const QString& ); + +private: + QString m_text; +}; + +#endif // MYCLASS_H diff --git a/Chapter01/hello-world/anything.cpp b/Chapter01/hello-world/anything.cpp new file mode 100644 index 0000000..d126362 --- /dev/null +++ b/Chapter01/hello-world/anything.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +int main( int argc, char **argv ) +{ + qDebug() << "Hello Qt World!"; + + return 0; +} diff --git a/Chapter01/hello-world/testing.pro b/Chapter01/hello-world/testing.pro new file mode 100644 index 0000000..4b8f97b --- /dev/null +++ b/Chapter01/hello-world/testing.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.00a) to 10. aug 17:06:34 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += anything.cpp +CONFIG += console diff --git a/Chapter01/map-hash-set/example.pro b/Chapter01/map-hash-set/example.pro new file mode 100644 index 0000000..b482bd0 --- /dev/null +++ b/Chapter01/map-hash-set/example.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.00a) må 21. aug 15:57:33 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += map-examples.cpp +CONFIG += console diff --git a/Chapter01/map-hash-set/map-examples.cpp b/Chapter01/map-hash-set/map-examples.cpp new file mode 100644 index 0000000..1000d9f --- /dev/null +++ b/Chapter01/map-hash-set/map-examples.cpp @@ -0,0 +1,207 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include +#include + +#include + +#include + +void mapStringIntDemo() +{ + QMap map; + + map["foo"] = 42; + map["bar"] = 13; + map["baz"] = 9; + + QString key; + foreach( key, map.keys() ) + qDebug() << key << " = " << map[key]; + + QMap::ConstIterator ii; + for( ii = map.constBegin(); ii != map.constEnd(); ++ii ) + qDebug() << ii.key() << " = " << ii.value(); + + int sum; + sum = map["foo"] + map.value("ingenting"); + + foreach( key, map.keys() ) + qDebug() << key << " = " << map[key]; + + sum = map["foo"] + map["ingenting"]; + + foreach( key, map.keys() ) + qDebug() << key << " = " << map[key]; +} + +void hashStringIntDemo() +{ + QHash hash; + + hash["foo"] = 42; + hash["bar"] = 13; + hash["baz"] = 9; + + QString key; + foreach( key, hash.keys() ) + qDebug() << key << " = " << hash[key]; + + int sum; + sum = hash["foo"] + hash.value("ingenting"); + + foreach( key, hash.keys() ) + qDebug() << key << " = " << hash[key]; + + sum = hash["foo"] + hash["ingenting"]; + + foreach( key, hash.keys() ) + qDebug() << key << " = " << hash[key]; +} + +class Person +{ +public: + Person( QString name, QString number ); + + QString name() const; + QString number() const; + +private: + QString m_name, m_number; +}; + +Person::Person( QString name, QString number ) : m_name( name ), m_number( number ) {} +QString Person::name() const { return m_name; } +QString Person::number() const { return m_number; } + +bool operator==( const Person &a, const Person &b ) +{ + return (a.name() == b.name()) && (a.number() == b.number()); +} + +uint qHash( const Person &key ) +{ + return qHash( key.name() ) ^ qHash( key.number() ); +} + +void hashPersons() +{ + QHash hash; + + hash[ Person( "Anders", "8447070" ) ] = 10; + hash[ Person( "Micke", "7728433" ) ] = 20; + + qDebug() << hash.value( Person( "Anders", "8447070" ) ); // 10 + qDebug() << hash.value( Person( "Anders", "8447071" ) ); // 0 + qDebug() << hash.value( Person( "Micke", "7728433" ) ); // 20 + qDebug() << hash.value( Person( "Michael", "7728433" ) ); // 0 +} + +void setStringDemo() +{ + QSet set; + + set << "Ada" << "C++" << "Ruby"; + + for( QSet::ConstIterator ii = set.begin(); ii != set.end(); ++ii ) + qDebug() << *ii; + + if( set.contains( "FORTRAN" ) ) + qDebug() << "FORTRAN is in the set."; + else + qDebug() << "FORTRAN is out."; +} + +void multimapStringIntDemo() +{ + QMultiMap multi; + + multi.insert( "foo", 10 ); + multi.insert( "foo", 20 ); + multi.insert( "bar", 30 ); + + QSet keys; + foreach( QString key, multi.keys() ) + keys << key; + + foreach( QString key, keys ) + foreach( int value, multi.values(key) ) + qDebug() << key << ": " << value; + + QMultiMap::ConstIterator ii = multi.find( "foo" ); + while( ii != multi.end() && ii.key() == "foo" ) + { + qDebug() << ii.value(); + ++ii; + } +} + +void multihashStringIntDemo() +{ + QMultiHash multi; + + multi.insert( "foo", 10 ); + multi.insert( "foo", 20 ); + multi.insert( "bar", 30 ); + + QSet keys; + foreach( QString key, multi.keys() ) + keys << key; + + foreach( QString key, keys ) + foreach( int value, multi.values(key) ) + qDebug() << key << ": " << value; + + QMultiHash::ConstIterator ii = multi.find( "foo" ); + while( ii != multi.end() && ii.key() == "foo" ) + { + qDebug() << ii.value(); + ++ii; + } +} + +int main( void ) +{ + mapStringIntDemo(); + hashStringIntDemo(); + hashPersons(); + setStringDemo(); + multimapStringIntDemo(); + multihashStringIntDemo(); + + return 0; +} diff --git a/Chapter01/plain-cpp/plain-cpp.cpp b/Chapter01/plain-cpp/plain-cpp.cpp new file mode 100644 index 0000000..89f7650 --- /dev/null +++ b/Chapter01/plain-cpp/plain-cpp.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +using namespace std; + +class MyClass +{ +public: + MyClass( const string &text ); + + const string &text(); + void setText( const string &text ); + + int getLengthOfText(); + +private: + string m_text; +}; + +MyClass::MyClass( const string &text ) { m_text = text; } +const string &MyClass::text() { return m_text; } +void MyClass::setText( const string &text ) { m_text = text; } +int MyClass::getLengthOfText() { return m_text.size(); } + +int main( int argc, char **argv ) +{ + MyClass *a, *b, *c; + + a = new MyClass( "foo" ); + b = new MyClass( "ba-a-ar" ); + c = new MyClass( "baz" ); + + cout << a->text() << " (" << a->getLengthOfText() << ")" << endl; + a->setText( b->text() ); + cout << a->text() << " (" << a->getLengthOfText() << ")" << endl; + + int result = a->getLengthOfText() - c->getLengthOfText(); + + delete a; + delete b; + delete c; + + return result; +} diff --git a/Chapter01/qlist/example.pro b/Chapter01/qlist/example.pro new file mode 100644 index 0000000..e58c781 --- /dev/null +++ b/Chapter01/qlist/example.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.00a) må 21. aug 09:53:24 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += qlist.cpp +CONFIG += console diff --git a/Chapter01/qlist/qlist.cpp b/Chapter01/qlist/qlist.cpp new file mode 100644 index 0000000..cf8006c --- /dev/null +++ b/Chapter01/qlist/qlist.cpp @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +void fillAndPrint() +{ + QList list; + list << "foo" << "bar" << "baz"; + + QString s; + foreach( s, list ) + qDebug() << s; +} + +void constIterators() +{ + QList list; + list << 23 << 27 << 52 << 52; + + QListIterator javaIter( list ); + while( javaIter.hasNext() ) + qDebug() << javaIter.next(); + + QList::const_iterator stlIter; + for( stlIter = list.begin(); stlIter != list.end(); ++stlIter ) + qDebug() << (*stlIter); +} + +void mutableIterators() +{ + QList list; + list << 27 << 33 << 61 << 62; + + QMutableListIterator javaIter( list ); + while( javaIter.hasNext() ) + { + int value = javaIter.next() + 1; + javaIter.setValue( value ); + qDebug() << value; + } + + QList::Iterator stlIter; + for( stlIter = list.begin(); stlIter != list.end(); ++stlIter ) + { + (*stlIter) = (*stlIter)*2; + qDebug() << (*stlIter); + } +} + +void insertAndPrint() +{ + QList list; + + list << "first"; + list.append( "second" ); + list.prepend( "third" ); + list.insert( 1, "fourth" ); + list.insert( 4, "fifth" ); + + QString s; + foreach( s, list ) + qDebug() << s; +} + +void miscExamples() +{ + QList list; + for( int i=0; i<10; i++ ) + list << i; + + int sum = list[5] + list.at(7); +} + +int main( void ) +{ + qDebug() << "Fill and print"; + fillAndPrint(); + + qDebug() << "Const iterators"; + constIterators(); + + qDebug() << "Mutable iterators"; + mutableIterators(); + + qDebug() << "Insert and print"; + insertAndPrint(); + + return 0; +} diff --git a/Chapter01/signals-and-slots/example.pro b/Chapter01/signals-and-slots/example.pro new file mode 100644 index 0000000..28bbb80 --- /dev/null +++ b/Chapter01/signals-and-slots/example.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.00a) fr 11. aug 14:12:41 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += myclass.h +SOURCES += myclass.cpp sig-slot.cpp +CONFIG += console diff --git a/Chapter01/signals-and-slots/myclass.cpp b/Chapter01/signals-and-slots/myclass.cpp new file mode 100644 index 0000000..3828d49 --- /dev/null +++ b/Chapter01/signals-and-slots/myclass.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "myclass.h" + +MyClass::MyClass( const QString &text, QObject *parent ) : QObject( parent ) +{ + m_text = text; +} + +const QString &MyClass::text() const +{ + return m_text; +} + +void MyClass::setText( const QString &text ) +{ + if( m_text == text ) + return; + + m_text = text; + emit textChanged( m_text ); +} + +int MyClass::getLengthOfText() const +{ + return m_text.size(); +} diff --git a/Chapter01/signals-and-slots/myclass.h b/Chapter01/signals-and-slots/myclass.h new file mode 100644 index 0000000..6e1a96a --- /dev/null +++ b/Chapter01/signals-and-slots/myclass.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MYCLASS_H +#define MYCLASS_H + +#include +#include + +class MyClass : public QObject +{ + Q_OBJECT + +public: + MyClass( const QString &text, QObject *parent = 0 ); + + const QString& text() const; + int getLengthOfText() const; + +public slots: + void setText( const QString &text ); + +signals: + void textChanged( const QString& ); + +private: + QString m_text; +}; + +#endif // MYCLASS_H diff --git a/Chapter01/signals-and-slots/sig-slot.cpp b/Chapter01/signals-and-slots/sig-slot.cpp new file mode 100644 index 0000000..ae6f82c --- /dev/null +++ b/Chapter01/signals-and-slots/sig-slot.cpp @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "myclass.h" + +#include + +int main( int argc, char **argv ) +{ + QObject parent; + MyClass *a, *b, *c; + + a = new MyClass( "foo", &parent ); + b = new MyClass( "bar", &parent ); + c = new MyClass( "baz", &parent ); + + QObject::connect( + a, SIGNAL(textChanged(const QString&)), + b, SLOT(setText(const QString&)) ); + QObject::connect( + b, SIGNAL(textChanged(const QString&)), + c, SLOT(setText(const QString&)) ); + QObject::connect( + c, SIGNAL(textChanged(const QString&)), + b, SLOT(setText(const QString&)) ); + + qDebug() << "--- After creation ---"; + qDebug() << "a:" << a->text() << "\nb:" << b->text() << "\nc:" << c->text(); + + c->setText( "test" ); + + qDebug() << "--- After test ---"; + qDebug() << "a:" << a->text() << "\nb:" << b->text() << "\nc:" << c->text(); + + a->setText( "Qt" ); + + qDebug() << "--- After Qt ---"; + qDebug() << "a:" << a->text() << "\nb:" << b->text() << "\nc:" << c->text(); + + return a->getLengthOfText() - c->getLengthOfText(); +} diff --git a/Chapter01/stringlist-stack-queue/example.pro b/Chapter01/stringlist-stack-queue/example.pro new file mode 100644 index 0000000..406e747 --- /dev/null +++ b/Chapter01/stringlist-stack-queue/example.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.00a) må 21. aug 14:28:49 2006 +###################################################################### + +TEMPLATE = app +TARGET += +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += special-lists.cpp +CONFIG += console \ No newline at end of file diff --git a/Chapter01/stringlist-stack-queue/special-lists.cpp b/Chapter01/stringlist-stack-queue/special-lists.cpp new file mode 100644 index 0000000..a6b4703 --- /dev/null +++ b/Chapter01/stringlist-stack-queue/special-lists.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include + +void stringList() +{ + QString text; + + QStringList list; + list << "foo" << "bar" << "baz"; + foreach( text, list ) + qDebug() << text; + + qDebug() << "---"; + + QString all = list.join(","); + qDebug() << all; + + qDebug() << "---"; + + list.replaceInStrings( "a", "oo" ); + foreach( text, list ) + qDebug() << text; + + qDebug() << "---"; + + list << all.split(","); + foreach( text, list ) + qDebug() << text; +} + +void stackDemo() +{ + QStack stack; + + stack.push( "foo" ); + stack.push( "bar" ); + stack.push( "baz" ); + + QString result; + while( !stack.isEmpty() ) + result += stack.pop(); + qDebug() << result; +} + +void queueDemo() +{ + QQueue queue; + + queue.enqueue( "foo" ); + queue.enqueue( "bar" ); + queue.enqueue( "baz" ); + + QString result; + while( !queue.isEmpty() ) + result += queue.dequeue(); + qDebug() << result; +} + +int main( void ) +{ + qDebug() << "String list"; + stringList(); + + qDebug() << "Stack"; + stackDemo(); + + qDebug() << "Queue"; + queueDemo(); + + return 0; +} diff --git a/Chapter02/README.txt b/Chapter02/README.txt new file mode 100644 index 0000000..7569a7d --- /dev/null +++ b/Chapter02/README.txt @@ -0,0 +1,8 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 2 - Rapid Application Development Using Qt + +addressbook + + This is the only example of the chapter, covering all listings. diff --git a/Chapter02/addressbook/addressbook.pro b/Chapter02/addressbook/addressbook.pro new file mode 100644 index 0000000..de213bd --- /dev/null +++ b/Chapter02/addressbook/addressbook.pro @@ -0,0 +1,36 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = app +TARGET = addressbook + +SOURCES += main.cpp editdialog.cpp listdialog.cpp +HEADERS += editdialog.h listdialog.h +FORMS += editdialog.ui listdialog.ui diff --git a/Chapter02/addressbook/editdialog.cpp b/Chapter02/addressbook/editdialog.cpp new file mode 100644 index 0000000..94ad4ab --- /dev/null +++ b/Chapter02/addressbook/editdialog.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "editdialog.h" + +#include + +EditDialog::EditDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); +} + +const QString EditDialog::name() const +{ + return ui.nameEdit->text().replace("--","").trimmed(); +} + +void EditDialog::setName( const QString &name ) +{ + ui.nameEdit->setText( name ); +} + +const QString EditDialog::number() const +{ + return ui.numberEdit->text().replace("--","").trimmed(); +} + +void EditDialog::setNumber( const QString &number ) +{ + ui.numberEdit->setText( number ); +} diff --git a/Chapter02/addressbook/editdialog.h b/Chapter02/addressbook/editdialog.h new file mode 100644 index 0000000..319f1ce --- /dev/null +++ b/Chapter02/addressbook/editdialog.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef EDITDIALOG_H +#define EDITDIALOG_H + +#include +#include "ui_editdialog.h" + +class EditDialog : public QDialog +{ +public: + EditDialog( QWidget *parent=0 ); + + const QString name() const; + void setName( const QString& ); + + const QString number() const; + void setNumber( const QString& ); + +private: + Ui::EditDialog ui; +}; + +#endif // EDITDIALOG_H diff --git a/Chapter02/addressbook/editdialog.ui b/Chapter02/addressbook/editdialog.ui new file mode 100644 index 0000000..55a07ba --- /dev/null +++ b/Chapter02/addressbook/editdialog.ui @@ -0,0 +1,145 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + EditDialog + + + + 0 + 0 + 400 + 130 + + + + Phone Book Entry + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + + + + + + + Name: + + + + + + + Number: + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + nameEdit + numberEdit + + + + + buttonBox + accepted() + EditDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + EditDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter02/addressbook/listdialog.cpp b/Chapter02/addressbook/listdialog.cpp new file mode 100644 index 0000000..97bdfb3 --- /dev/null +++ b/Chapter02/addressbook/listdialog.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "listdialog.h" +#include "editdialog.h" + +ListDialog::ListDialog() : QDialog() +{ + ui.setupUi( this ); + + connect( ui.addButton, SIGNAL(clicked()), this, SLOT(addItem()) ); + connect( ui.editButton, SIGNAL(clicked()), this, SLOT(editItem()) ); + connect( ui.deleteButton, SIGNAL(clicked()), this, SLOT(deleteItem()) ); +} + +void ListDialog::addItem() +{ + EditDialog dlg( this ); + + if( dlg.exec() == Accepted ) + ui.list->addItem( dlg.name() + " -- " + dlg.number() ); +} + +void ListDialog::editItem() +{ + if( !ui.list->currentItem() ) + return; + + QStringList parts = ui.list->currentItem()->text().split( "--" ); + + EditDialog dlg( this ); + dlg.setName( parts[0].trimmed() ); + dlg.setNumber( parts[1].trimmed() ); + + if( dlg.exec() == Accepted ) + ui.list->currentItem()->setText( dlg.name() + " -- " + dlg.number() ); +} + +void ListDialog::deleteItem() +{ + delete ui.list->currentItem(); +} diff --git a/Chapter02/addressbook/listdialog.h b/Chapter02/addressbook/listdialog.h new file mode 100644 index 0000000..d60b8e8 --- /dev/null +++ b/Chapter02/addressbook/listdialog.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef LISTDIALOG_H +#define LISTDIALOG_H + +#include +#include "ui_listdialog.h" + +class ListDialog : public QDialog +{ + Q_OBJECT + +public: + ListDialog(); + +private slots: + void addItem(); + void editItem(); + void deleteItem(); + +private: + Ui::ListDialog ui; +}; + +#endif // LISTDIALOG_H diff --git a/Chapter02/addressbook/listdialog.ui b/Chapter02/addressbook/listdialog.ui new file mode 100644 index 0000000..d40ee11 --- /dev/null +++ b/Chapter02/addressbook/listdialog.ui @@ -0,0 +1,133 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ListDialog + + + + 0 + 0 + 400 + 300 + + + + Phone Book + + + + 9 + + + 6 + + + + + + + + 0 + + + 6 + + + + + Add new... + + + + + + + Edit... + + + + + + + Delete + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Clear all + + + + + + + + + list + addButton + editButton + deleteButton + clearButton + + + + + clearButton + clicked() + list + clear() + + + 343 + 285 + + + 220 + 170 + + + + + diff --git a/Chapter02/addressbook/main.cpp b/Chapter02/addressbook/main.cpp new file mode 100644 index 0000000..51641b2 --- /dev/null +++ b/Chapter02/addressbook/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "listdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + ListDialog dlg; + + dlg.show(); + + return app.exec(); +} diff --git a/Chapter03/README.txt b/Chapter03/README.txt new file mode 100644 index 0000000..3cd9d66 --- /dev/null +++ b/Chapter03/README.txt @@ -0,0 +1,127 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 3 - Widgets and Layouts + +designer-and-code + + Listings 3-1, 3-2, 3-3 + + A simple dialog with layouts and stretch factors created using source code as + well as using Designer. + + +gridlayout + + Listing 3-4 + + Shows buttons in a QGridLayout. + + +pushbutton + + Listing 3-5 + + Shows QPushButton widgets. + + +buttonbox + + Listing 3-6 + + Shows a QDialogButtonBox widget with buttons. + + +label + + Listings 3-7 + + Shows QLabel widgets. + + +lineedit + + Not shown in any Listings, but Figures 3-12 and 3-13. + + Shows QLineEdit widgets in different modes. + + +radiobutton + + Listings 3-8 + + Shows QRadioButton widgets in QButtonGroups. + + +groupbox + + Not shown in any Listings, but Figure 3-15. + + Shows QGroupBox widgets. + + +listwidget + + Listings 3-9, 3-10 + + Shows two QListWidget instances and QPushButton widgets used to move items + between the two lists. + + +spinbox + + Not shown in any Listings, but Figure 3-17. + + Shows a QSpinBox widget connected to a QLCDNumber widget. + + +progressbar + + Not shown in any Listings, but Figure 3-19. + + Shows QProgressBar widgets in different working modes. + + +filedialog + + Listings 3-11, 3-12, 3-13, 3-14 + + Shows the QFileDialog class and the getOpenFileName, getOpenFileNames, + getSaveFileName and getExistingDirectory methods. + + +messagebox + + Listings 3-15, 3-16, 3-17, 3-18, 3-19 + + Shows the QMessageBox class and the QInputDialog class. For the latter, the + getText, getItem and getInteger methods are used. + + +colorandfont + + Listings 3-20, 3-21 + + Shows the QColorDialog and QFontDialog classes. + + +validator + + Listing 3-22 + + Shows the QIntValidator and QDoubleValidator classes. + + +regexp + + Listings 3-23, 3-24 + + Shows how to use a regular expression and the QRegExp class. + + +revalidator + + Listing 3-25 + + Shows how to use the QRegExpValidator and a regular expression to validate + user input. diff --git a/Chapter03/buttonbox/buttonbox.cpp b/Chapter03/buttonbox/buttonbox.cpp new file mode 100644 index 0000000..9f40b76 --- /dev/null +++ b/Chapter03/buttonbox/buttonbox.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "ButtonBox.h" + +#include +#include +#include + +#include + +#include + +ButtonBoxDialog::ButtonBoxDialog() : QDialog(0) +{ + QVBoxLayout *layout = new QVBoxLayout( this ); + + QPushButton *button; + QDialogButtonBox *box = new QDialogButtonBox( Qt::Horizontal ); + + button = new QPushButton( "Ok" ); + connect( button, SIGNAL(clicked()), this, SLOT(okClicked()) ); + box->addButton( button, QDialogButtonBox::AcceptRole ); + + button = new QPushButton( "Cancel" ); + connect( button, SIGNAL(clicked()), this, SLOT(cancelClicked()) ); + box->addButton( button, QDialogButtonBox::RejectRole ); + + button = new QPushButton( "Apply" ); + connect( button, SIGNAL(clicked()), this, SLOT(applyClicked()) ); + box->addButton( button, QDialogButtonBox::ApplyRole ); + + button = new QPushButton( "Reset" ); + connect( button, SIGNAL(clicked()), this, SLOT(resetClicked()) ); + box->addButton( button, QDialogButtonBox::ResetRole ); + + button = new QPushButton( "Help" ); + connect( button, SIGNAL(clicked()), this, SLOT(helpClicked()) ); + box->addButton( button, QDialogButtonBox::HelpRole ); + + layout->addWidget( new QLabel( "Try out the buttons!" ) ); + layout->addWidget( box ); +} + +void ButtonBoxDialog::okClicked() +{ + QMessageBox::information( this, "Demo", "Ok Clicked" ); +} + +void ButtonBoxDialog::cancelClicked() +{ + QMessageBox::information( this, "Demo", "Cancel Clicked" ); +} + +void ButtonBoxDialog::applyClicked() +{ + QMessageBox::information( this, "Demo", "Apply Clicked" ); +} + +void ButtonBoxDialog::resetClicked() +{ + QMessageBox::information( this, "Demo", "Reset Clicked" ); +} + +void ButtonBoxDialog::helpClicked() +{ + QMessageBox::information( this, "Demo", "Help Clicked" ); +} diff --git a/Chapter03/buttonbox/buttonbox.h b/Chapter03/buttonbox/buttonbox.h new file mode 100644 index 0000000..759e886 --- /dev/null +++ b/Chapter03/buttonbox/buttonbox.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BUTTONBOX_H +#define BUTTONBOX_H + +#include + +class ButtonBoxDialog : public QDialog +{ + Q_OBJECT + +public: + ButtonBoxDialog(); + +public slots: + void okClicked(); + void cancelClicked(); + void applyClicked(); + void resetClicked(); + void helpClicked(); +}; + +#endif // BUTTONBOX_H diff --git a/Chapter03/buttonbox/buttonbox.pro b/Chapter03/buttonbox/buttonbox.pro new file mode 100644 index 0000000..8dc4396 --- /dev/null +++ b/Chapter03/buttonbox/buttonbox.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 12. sep 16:50:44 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += buttonbox.h +SOURCES += buttonbox.cpp main.cpp diff --git a/Chapter03/buttonbox/main.cpp b/Chapter03/buttonbox/main.cpp new file mode 100644 index 0000000..bb841a4 --- /dev/null +++ b/Chapter03/buttonbox/main.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "buttonbox.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + app.setStyle( new QCleanlooksStyle ); + + ButtonBoxDialog dlg; + dlg.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter03/colorandfont/colorandfont.pro b/Chapter03/colorandfont/colorandfont.pro new file mode 100644 index 0000000..cda1fb7 --- /dev/null +++ b/Chapter03/colorandfont/colorandfont.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) fr 19. jan 08:47:06 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter03/colorandfont/main.cpp b/Chapter03/colorandfont/main.cpp new file mode 100644 index 0000000..94cd84a --- /dev/null +++ b/Chapter03/colorandfont/main.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +class Tester : public QWidget +{ +public: + void doColor() + { + QColor color = QColorDialog::getColor( + Qt::yellow, + this ); + if( color.isValid() ) + { + + qDebug( "ok" ); + } + } + + void doFont() + { + bool ok; + QFont font = QFontDialog::getFont( + &ok, + QFont( "Arial", 18 ), + this, + tr("Pick a font") ); + if( ok ) + { + qDebug( "ok" ); + } + } +}; + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Tester t; + t.doColor(); + t.doFont(); + + return 0; +} diff --git a/Chapter03/designer-and-code/designer-dialog.ui b/Chapter03/designer-and-code/designer-dialog.ui new file mode 100644 index 0000000..25b1629 --- /dev/null +++ b/Chapter03/designer-and-code/designer-dialog.ui @@ -0,0 +1,136 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 457 + 169 + + + + Dialog + + + + 9 + + + 6 + + + + + GroupBox + + + + 9 + + + 6 + + + + + Supercalifrailisticexpialidocious + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter03/designer-and-code/example.pro b/Chapter03/designer-and-code/example.pro new file mode 100644 index 0000000..b5f1c79 --- /dev/null +++ b/Chapter03/designer-and-code/example.pro @@ -0,0 +1,32 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = app +SOURCES += main.cpp diff --git a/Chapter03/designer-and-code/main.cpp b/Chapter03/designer-and-code/main.cpp new file mode 100644 index 0000000..c6b98f7 --- /dev/null +++ b/Chapter03/designer-and-code/main.cpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include +#include +#include +#include + +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + QDialog dlg; + + QGroupBox *groupBox = new QGroupBox( "Groupbox" ); + QLabel *label = + new QLabel( "Supercalifragilisticexpialidocious" ); + QLineEdit *lineEdit = new QLineEdit(); + QDialogButtonBox *buttons = + new QDialogButtonBox( QDialogButtonBox::Ok | + QDialogButtonBox::Cancel ); + + QHBoxLayout *hLayout = new QHBoxLayout( groupBox ); + hLayout->addWidget( label ); + hLayout->addWidget( lineEdit ); + + QVBoxLayout *vLayout = new QVBoxLayout( &dlg ); + vLayout->addWidget( groupBox ); + vLayout->addStretch(); + vLayout->addWidget( buttons ); + + QSizePolicy policy = label->sizePolicy(); + policy.setHorizontalStretch( 3 ); + label->setSizePolicy( policy ); + policy.setHorizontalStretch( 1 ); + lineEdit->setSizePolicy( policy ); + + dlg.show(); + return app.exec(); +} diff --git a/Chapter03/filedialog/filedialog.pro b/Chapter03/filedialog/filedialog.pro new file mode 100644 index 0000000..24c2619 --- /dev/null +++ b/Chapter03/filedialog/filedialog.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 18. jan 13:28:11 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter03/filedialog/main.cpp b/Chapter03/filedialog/main.cpp new file mode 100644 index 0000000..20737c7 --- /dev/null +++ b/Chapter03/filedialog/main.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +class Tester : public QWidget +{ +public: + void openFile() + { + QFileDialog::getOpenFileName( this, tr("Open Document"), QDir::currentPath(), tr("Document files (*.doc *.rtf);;All files (*.*)"), 0, QFileDialog::DontUseNativeDialog ); + + QString filename = QFileDialog::getOpenFileName( + this, + tr("Open Document"), + QDir::currentPath(), + tr("Document files (*.doc *.rtf);;All files (*.*)") ); + if( !filename.isNull() ) + { + qDebug( filename.toAscii() ); + } + } + + void openFiles() + { + QStringList filenames = QFileDialog::getOpenFileNames( + this, + tr("Open Document"), + QDir::currentPath(), + tr("Documents (*.doc);;All files (*.*)") ); + if( !filenames.isEmpty() ) + { + qDebug( filenames.join(",").toAscii() ); + } + } + + void openDir() + { + QString dirname = QFileDialog::getExistingDirectory( + this, + tr("Select a Directory"), + QDir::currentPath() ); + if( !dirname.isNull() ) + { + qDebug( dirname.toAscii() ); + } + } + + void saveFile() + { + QString filename = QFileDialog::getSaveFileName( + this, + tr("Save Document"), + QDir::currentPath(), + tr("Documents (*.doc)") ); + if( !filename.isNull() ) + { + qDebug( filename.toAscii() ); + } + } +}; + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Tester t; + + t.openFile(); + t.openFiles(); + t.openDir(); + t.saveFile(); + + return 0; +} diff --git a/Chapter03/gridlayout/gridlayout.pro b/Chapter03/gridlayout/gridlayout.pro new file mode 100644 index 0000000..bf874f7 --- /dev/null +++ b/Chapter03/gridlayout/gridlayout.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 12. sep 09:05:32 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter03/gridlayout/main.cpp b/Chapter03/gridlayout/main.cpp new file mode 100644 index 0000000..ab19745 --- /dev/null +++ b/Chapter03/gridlayout/main.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QWidget widget; + + QGridLayout layout( &widget ); + layout.addWidget( new QPushButton( "foo" ), 0, 0, 1, 2 ); + layout.addWidget( new QPushButton( "bar" ), 1, 0 ); + layout.addWidget( new QPushButton( "baz" ), 1, 1 ); + + widget.show(); + + return app.exec(); +} diff --git a/Chapter03/groupbox/groupbox.ui b/Chapter03/groupbox/groupbox.ui new file mode 100644 index 0000000..8a0782f --- /dev/null +++ b/Chapter03/groupbox/groupbox.ui @@ -0,0 +1,189 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 416 + 149 + + + + Dialog + + + + 9 + + + 6 + + + + + Unchecked + + + true + + + false + + + + 9 + + + 6 + + + + + PushButton + + + + + + + + + + Checked + + + true + + + true + + + + 9 + + + 6 + + + + + PushButton + + + + + + + + + + Not Checkable + + + + 9 + + + 6 + + + + + PushButton + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter03/label/label.pro b/Chapter03/label/label.pro new file mode 100644 index 0000000..e3600be --- /dev/null +++ b/Chapter03/label/label.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 9. sep 14:30:16 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter03/label/main.cpp b/Chapter03/label/main.cpp new file mode 100644 index 0000000..3021252 --- /dev/null +++ b/Chapter03/label/main.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QDialog dlg; + + QLabel *fooLabel = new QLabel( "&Foo:" ); + QLabel *barLabel = new QLabel( "&Bar:" ); + QLineEdit *fooEdit = new QLineEdit(); + QLineEdit *barEdit = new QLineEdit(); + + fooLabel->setBuddy( fooEdit ); + barLabel->setBuddy( barEdit ); + + QGridLayout *layout = new QGridLayout( &dlg ); + layout->addWidget( fooLabel, 0, 0 ); + layout->addWidget( fooEdit, 0, 1 ); + layout->addWidget( barLabel, 1, 0 ); + layout->addWidget( barEdit, 1, 1 ); + + dlg.show(); + + return app.exec(); +} diff --git a/Chapter03/lineedit/lineedit.ui b/Chapter03/lineedit/lineedit.ui new file mode 100644 index 0000000..c17920b --- /dev/null +++ b/Chapter03/lineedit/lineedit.ui @@ -0,0 +1,216 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 503 + 188 + + + + Dialog + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + Contents + + + Qt::AlignCenter + + + + + + + Password echo mode: + + + + + + + + + + 20 + + + + + + + + + + QLineEdit::Password + + + + + + + Standard: + + + + + + + + + + Max length 20: + + + + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 223 + 152 + + + 153 + 187 + + + + + buttonBox + rejected() + Dialog + reject() + + + 291 + 152 + + + 282 + 187 + + + + + lineEdit + textChanged(QString) + lineEdit_4 + setText(QString) + + + 314 + 47 + + + 338 + 50 + + + + + lineEdit_2 + textChanged(QString) + lineEdit_5 + setText(QString) + + + 314 + 79 + + + 332 + 75 + + + + + lineEdit_3 + textChanged(QString) + lineEdit_6 + setText(QString) + + + 314 + 107 + + + 342 + 110 + + + + + diff --git a/Chapter03/listwidget/listwidget.pro b/Chapter03/listwidget/listwidget.pro new file mode 100644 index 0000000..da83b0c --- /dev/null +++ b/Chapter03/listwidget/listwidget.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 12. sep 15:15:04 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += listwidgetdialog.h +SOURCES += listwidgetdialog.cpp main.cpp +CONFIG += console diff --git a/Chapter03/listwidget/listwidgetdialog.cpp b/Chapter03/listwidget/listwidgetdialog.cpp new file mode 100644 index 0000000..f7c8f45 --- /dev/null +++ b/Chapter03/listwidget/listwidgetdialog.cpp @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "listwidgetdialog.h" + +#include +#include + +#include + +ListWidgetDialog::ListWidgetDialog() : QDialog(0) +{ + QPushButton *left, *right; + + QGridLayout *layout = new QGridLayout( this ); + layout->addWidget( left = new QPushButton( "<<" ), 0, 1 ); + layout->addWidget( right = new QPushButton( ">>" ), 1, 1 ); + layout->addWidget( leftList = new QListWidget(), 0, 0, 3, 1 ); + layout->addWidget( rightList = new QListWidget(), 0, 2, 3, 1 ); + + connect( left, SIGNAL(clicked()), this, SLOT(moveLeft()) ); + connect( right, SIGNAL(clicked()), this, SLOT(moveRight()) ); + + QStringList items; + items << "Argentine" << "Brazilian" << "South African" + << "USA West" << "Monaco" << "Belgian" << "Spanish" + << "Swedish" << "French" << "British" << "German" + << "Austrian" << "Dutch" << "Italian" << "USA East" + << "Canadian"; + leftList->addItems( items ); +} + +void ListWidgetDialog::moveLeft() +{ + if( rightList->selectedItems().count() != 1 ) + return; + + QListWidgetItem *item = rightList->takeItem( rightList->currentRow() ); + leftList->addItem( item ); +} + +void ListWidgetDialog::moveRight() +{ + if( leftList->selectedItems().count() != 1 ) + return; + + QListWidgetItem *item = leftList->takeItem( leftList->currentRow() ); + rightList->addItem( item ); +} diff --git a/Chapter03/listwidget/listwidgetdialog.h b/Chapter03/listwidget/listwidgetdialog.h new file mode 100644 index 0000000..c4df402 --- /dev/null +++ b/Chapter03/listwidget/listwidgetdialog.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef LISTWIDGETDIALOG_H +#define LISTWIDGETDIALOG_H + +#include + +class QListWidget; + +class ListWidgetDialog : public QDialog +{ + Q_OBJECT + +public: + ListWidgetDialog(); + +public slots: + void moveLeft(); + void moveRight(); + +private: + QListWidget *leftList; + QListWidget *rightList; +}; + +#endif // LISTWIDGETDIALOG_H diff --git a/Chapter03/listwidget/main.cpp b/Chapter03/listwidget/main.cpp new file mode 100644 index 0000000..a4c2f3e --- /dev/null +++ b/Chapter03/listwidget/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "listwidgetdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ListWidgetDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter03/messagebox/cut.png b/Chapter03/messagebox/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9a8069394e66f5cb474fd7653d9b9a788c57d6 GIT binary patch literal 1437 zcmV;O1!DS%P)^Qhgaiw*kwy1R!2diRfk;Ph6 z#Da=7ge{mTt3ZMkfdC2w9H}i!p`r7jxQzbsn>TacJKuNTx#ye{&u+MJ3 z9;?QtAk;QT_Nr>KIsyavvI!I5T{2<3sR3{6dYgPyT48e*+-s471}on|xh&)tS69Y) z77I+?)W9Qb=bYj`r5y(N4UxFI!ujg6(E6}a&?E3LNHsQo_461=+`w%*OVl9W*zvfW zk6&%~Et)tHqR+(5x~?rBhe82UY-9w^`qD)4X1WXz_Af91kt)rwLtAQ!?X@vlMX{*0 zp)B@(d*S46fjc9W%?8)!4Jgi(_+Uu@FFPc}uOK+sJ9o+ySgbEa?g0xxa$+x3bQM`^ z?+GB~C;ceb`* zO{v+E6%BP*KubA*y(JcXpKWl-8#xjdP{~@7@DfkYA!(Gp&e35T6%dxdW(dq#)|parzt~O%8Eu>5BqQ_Px^h_=T(gj)sLE6 zI+2ivMr|Y3RFytSj1pA)`>^^ej>_1N#K#hYUuvMM3TJ0ny?_6@O7*=?OiVn5u`$t@ za!!O&X?E`g@t)S;m8N;t)^MD|fi(<9e~vIlE>9zkuhqsI9L&9fTyE8+7>SwbIgoCmeP>mS_$A%7t z)%0BJ;m%I|?!dC^IkK}oSIf##QF5W(ccE1lnfU%EMLyo_%p2#pzxPQ8VPzsT9}EG7 zqa!5Q+e1upq*YZ{p%7K627mbbfW*WE)={uE!J#r7O{v-PN#KP1q!ZiQWwML-b4i*e zaJl0pT~W|GcE3URCS&=NbW4;(b5!HU!$}GZrw02rJ=VNdQ{aiMQtkuaxsXNcUz6|@ zo%l1oVn{Iy-V<`t!a`>#GsOw0kmvX8{L)+D?rxZBX$i)#djqTZf!F~ne{yQyx0NH` z7Q`+nPZ`;w&Y6ws0z2&&YoO4|3J#N)fG~Z22I&sg+#D<>O@h!R{+1V$j;`-K6~Fnn z`SZ9EGO!0`43l4X(VCoAe8tH#`vTo7B0*2e!!J={FU>D^yk_KJGuwk&Vf0h7n34_#+PwjivY3J-eSOa7Iv%(uy3e!9+84@%=700000NkvXXu0mjfYkscc literal 0 HcmV?d00001 diff --git a/Chapter03/messagebox/main.cpp b/Chapter03/messagebox/main.cpp new file mode 100644 index 0000000..b2cb2e9 --- /dev/null +++ b/Chapter03/messagebox/main.cpp @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include + +class Tester : public QWidget +{ +public: + void test() + { + QMessageBox::information( + this, + tr("Application Name"), + tr("An information message.") ); + + QMessageBox::warning( + this, + tr("Application Name"), + tr("A warning message.") ); + + QMessageBox::critical( + this, + tr("Application Name"), + tr("A critical message.") ); + + switch( QMessageBox::question( + this, + tr("Application Name"), + tr("An information message."), + + QMessageBox::Yes | + QMessageBox::No | + QMessageBox::Cancel, + + QMessageBox::Cancel ) ) + { + case QMessageBox::Yes: + qDebug( "yes" ); + break; + case QMessageBox::No: + qDebug( "no" ); + break; + case QMessageBox::Cancel: + qDebug( "cancel" ); + break; + default: + qDebug( "close" ); + break; + } + + setWindowIcon( QIcon("cut.png") ); + +{ + bool ok; + int value = QInputDialog::getInteger( + this, + tr("Integer"), + tr("Enter an angle:"), + 90, + 0, + 360, + 1, + &ok ); + if( ok ) + { + } +} + +{ + bool ok; + QStringList items; + items << tr("Foo") << tr("Bar") << tr("Baz"); + QString item = QInputDialog::getItem( + this, + tr("Item"), + tr("Pick an item:"), + items, + 0, + false, + &ok ); + if( ok && !item.isEmpty() ) + { + } +} + +{ + bool ok; + QString text = QInputDialog::getText( + this, + tr("String"), + tr("Enter a city name:"), + QLineEdit::Normal, + tr("Alingsås"), + &ok ); + if( ok && !text.isEmpty() ) + { + } +} + } +}; + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Tester t; + t.test(); + + return 0; +} diff --git a/Chapter03/messagebox/messagebox.pro b/Chapter03/messagebox/messagebox.pro new file mode 100644 index 0000000..030e6ec --- /dev/null +++ b/Chapter03/messagebox/messagebox.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 18. jan 17:50:47 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter03/progressbar/progressbar.ui b/Chapter03/progressbar/progressbar.ui new file mode 100644 index 0000000..0fd492b --- /dev/null +++ b/Chapter03/progressbar/progressbar.ui @@ -0,0 +1,349 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 444 + 304 + + + + Dialog + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + Progess: + + + + + + + 100 + + + Qt::Horizontal + + + + + + + Reset + + + + + + + + + GroupBox + + + + 9 + + + 6 + + + + + 0 + + + -1 + + + Qt::Horizontal + + + + + + + 24 + + + Qt::Horizontal + + + + + + + Custom text: + + + + + + + 24 + + + Qt::Horizontal + + + %v out of %m steps completed. + + + + + + + Hidden text: + + + + + + + Default: + + + + + + + Infinite range: + + + + + + + 24 + + + false + + + Qt::Horizontal + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + + + buttonBox + rejected() + Dialog + reject() + + + 291 + 268 + + + 286 + 274 + + + + + horizontalSlider + valueChanged(int) + progressBar + setValue(int) + + + 297 + 23 + + + 147 + 85 + + + + + horizontalSlider + valueChanged(int) + progressBar_2 + setValue(int) + + + 265 + 26 + + + 179 + 121 + + + + + horizontalSlider + valueChanged(int) + progressBar_3 + setValue(int) + + + 293 + 27 + + + 205 + 145 + + + + + horizontalSlider + valueChanged(int) + progressBar_4 + setValue(int) + + + 321 + 27 + + + 235 + 179 + + + + + pushButton + clicked() + progressBar + reset() + + + 370 + 18 + + + 328 + 86 + + + + + pushButton + clicked() + progressBar_2 + reset() + + + 412 + 27 + + + 342 + 113 + + + + + pushButton + clicked() + progressBar_3 + reset() + + + 414 + 19 + + + 358 + 156 + + + + + pushButton + clicked() + progressBar_4 + reset() + + + 416 + 29 + + + 377 + 173 + + + + + diff --git a/Chapter03/pushbutton/buttondialog.cpp b/Chapter03/pushbutton/buttondialog.cpp new file mode 100644 index 0000000..0c14785 --- /dev/null +++ b/Chapter03/pushbutton/buttondialog.cpp @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "buttondialog.h" + +ButtonDialog::ButtonDialog( QWidget *parent ) : QDialog( parent ) +{ + clickButton = new QPushButton( "Click me!", this ); + toggleButton = new QPushButton( "Toggle me!", this ); + toggleButton->setCheckable( true ); + + QHBoxLayout *layout = new QHBoxLayout( this ); + layout->addWidget( clickButton ); + layout->addWidget( toggleButton ); + + connect( clickButton, SIGNAL(clicked()), this, SLOT(buttonClicked()) ); + connect( toggleButton, SIGNAL(clicked()), this, SLOT(buttonToggled()) ); +} + +void ButtonDialog::buttonClicked() +{ + QMessageBox::information( this, "Clicked!", "The button was clicked!" ); +} + +void ButtonDialog::buttonToggled() +{ + QMessageBox::information( this, "Toggled!", QString("The button is %1!").arg(toggleButton->isChecked()?"pressed":"released") ); +} diff --git a/Chapter03/pushbutton/buttondialog.h b/Chapter03/pushbutton/buttondialog.h new file mode 100644 index 0000000..b5136da --- /dev/null +++ b/Chapter03/pushbutton/buttondialog.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BUTTONDIALOG_H +#define BUTTONDIALOG_H + +#include + +class QPushButton; + +class ButtonDialog : public QDialog +{ + Q_OBJECT + +public: + ButtonDialog( QWidget *parent=0 ); + +private slots: + void buttonClicked(); + void buttonToggled(); + +private: + QPushButton *clickButton; + QPushButton *toggleButton; +}; + +#endif // BUTTONDIALOG_H diff --git a/Chapter03/pushbutton/main.cpp b/Chapter03/pushbutton/main.cpp new file mode 100644 index 0000000..4ce03bc --- /dev/null +++ b/Chapter03/pushbutton/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "buttondialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ButtonDialog dlg; + dlg.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter03/pushbutton/pushbutton.pro b/Chapter03/pushbutton/pushbutton.pro new file mode 100644 index 0000000..04dcd40 --- /dev/null +++ b/Chapter03/pushbutton/pushbutton.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 9. sep 14:12:57 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += buttondialog.h +SOURCES += buttondialog.cpp main.cpp diff --git a/Chapter03/radiobutton/main.cpp b/Chapter03/radiobutton/main.cpp new file mode 100644 index 0000000..19752da --- /dev/null +++ b/Chapter03/radiobutton/main.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QGroupBox box( "Printing Options" ); + + QRadioButton *portrait = new QRadioButton( "Portrait" ); + QRadioButton *landscape = new QRadioButton( "Landscape" ); + QRadioButton *color = new QRadioButton( "Color" ); + QRadioButton *bw = new QRadioButton( "B&W" ); + + QButtonGroup *orientation = new QButtonGroup( &box ); + QButtonGroup *colorBw = new QButtonGroup( &box ); + + orientation->addButton( portrait ); + orientation->addButton( landscape ); + colorBw->addButton( color ); + colorBw->addButton( bw ); + + QGridLayout *grid = new QGridLayout( &box ); + grid->addWidget( portrait, 0, 0 ); + grid->addWidget( landscape, 0, 1 ); + grid->addWidget( color, 1, 0 ); + grid->addWidget( bw, 1, 1 ); + + box.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter03/radiobutton/radiobutton.pro b/Chapter03/radiobutton/radiobutton.pro new file mode 100644 index 0000000..6b59bf9 --- /dev/null +++ b/Chapter03/radiobutton/radiobutton.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 12. sep 13:45:17 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter03/regexp/main.cpp b/Chapter03/regexp/main.cpp new file mode 100644 index 0000000..9b625b0 --- /dev/null +++ b/Chapter03/regexp/main.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QRegExp re("^\\+\\d{1,2}\\([089]\\)\\d{2,5}\\-\\d+$"); + + qDebug() << re.indexIn("+46(0)31-445566"); // 0 + qDebug() << re.indexIn("Tel: +46(0)31-445566"); // -1 + qDebug() << re.indexIn("(0)31-445566"); // -1 + + QRegExp reCap("^\\+(\\d{1,2})\\(([089])\\)(\\d{2,5})\\-(\\d+)$"); + + qDebug() << reCap.indexIn("+46(0)31-445566"); // 0 + qDebug() << reCap.cap(0); // "+46(0)31-445566" + qDebug() << reCap.cap(1); // "46" + qDebug() << reCap.cap(2); // "0" + qDebug() << reCap.cap(3); // "31" + qDebug() << reCap.cap(4); // "445566" + + return 0; +} diff --git a/Chapter03/regexp/regexp.pro b/Chapter03/regexp/regexp.pro new file mode 100644 index 0000000..c7f95b2 --- /dev/null +++ b/Chapter03/regexp/regexp.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 20. jan 18:14:57 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter03/revalidator/main.cpp b/Chapter03/revalidator/main.cpp new file mode 100644 index 0000000..f4ce84c --- /dev/null +++ b/Chapter03/revalidator/main.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include + +#include +#include +#include + +#include + +class ValidationDialog : public QDialog +{ +public: + ValidationDialog() + { + QGridLayout *layout = new QGridLayout( this ); + + QLineEdit *reEdit = new QLineEdit( "+46(0)31-445566" ); + QPushButton *button = new QPushButton( "Close" ); + + layout->addWidget( new QLabel("Phone:"), 0, 0 ); + layout->addWidget( reEdit, 0, 1 ); + layout->addWidget( button, 1, 0, 1, 2 ); + + QRegExpValidator *reVal = new QRegExpValidator( + QRegExp("\\+\\d{1,2}\\([089]\\)\\d{2,5}\\-\\d+"), + this ); + reEdit->setValidator( reVal ); + + connect( button, SIGNAL(clicked()), this, SLOT(accept()) ); + } +}; + +int main( int argc, char** argv ) +{ + QApplication app( argc, argv ); + + ValidationDialog w; + w.show(); + + return app.exec(); +} diff --git a/Chapter03/revalidator/revalidator.pro b/Chapter03/revalidator/revalidator.pro new file mode 100644 index 0000000..6ac7239 --- /dev/null +++ b/Chapter03/revalidator/revalidator.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 20. jan 18:35:22 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter03/spinbox/spinbox.ui b/Chapter03/spinbox/spinbox.ui new file mode 100644 index 0000000..1bb705a --- /dev/null +++ b/Chapter03/spinbox/spinbox.ui @@ -0,0 +1,120 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 181 + 176 + + + + Dialog + + + + 9 + + + 6 + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 171 + 154 + + + 157 + 175 + + + + + buttonBox + rejected() + Dialog + reject() + + + 171 + 160 + + + 180 + 175 + + + + + spinBox + valueChanged(int) + lcdNumber + display(int) + + + 22 + 122 + + + 36 + 58 + + + + + diff --git a/Chapter03/validator/main.cpp b/Chapter03/validator/main.cpp new file mode 100644 index 0000000..acc0a32 --- /dev/null +++ b/Chapter03/validator/main.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include + +#include +#include +#include + +#include +#include + +class ValidationDialog : public QDialog +{ +public: + ValidationDialog() + { + QGridLayout *layout = new QGridLayout( this ); + + QLineEdit *intEdit = new QLineEdit( "42" ); + QLineEdit *doubleEdit = new QLineEdit( "3.14" ); + QPushButton *button = new QPushButton( "Close" ); + + layout->addWidget( new QLabel("Integer:"), 0, 0 ); + layout->addWidget( intEdit, 0, 1 ); + layout->addWidget( new QLabel("Double:"), 1, 0 ); + layout->addWidget( doubleEdit, 1, 1 ); + layout->addWidget( button, 2, 0, 1, 2 ); + + QIntValidator *intVal = new QIntValidator( 0, 100, this ); + intEdit->setValidator( intVal ); + + QDoubleValidator *doubleVal = new QDoubleValidator( -32.5, 99.0, 1, this ); + doubleEdit->setValidator( doubleVal ); + + connect( button, SIGNAL(clicked()), this, SLOT(accept()) ); + } +}; + +int main( int argc, char** argv ) +{ + QApplication app( argc, argv ); + + ValidationDialog w; + w.show(); + + return app.exec(); +} diff --git a/Chapter03/validator/validator.pro b/Chapter03/validator/validator.pro new file mode 100644 index 0000000..cf22d7d --- /dev/null +++ b/Chapter03/validator/validator.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) fr 19. jan 15:56:44 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter04/README.txt b/Chapter04/README.txt new file mode 100644 index 0000000..d2e3181 --- /dev/null +++ b/Chapter04/README.txt @@ -0,0 +1,32 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 4 - The Main Window + +sdi + + Listings 4-1, 4-2, 4-3, 4-4, 4-5 + + A simple text editor with a single document interface (SDI). + + +mdi + + Listings 4-6, 4-7, 4-8, 4-9, 4-10, 4-11, 4-12, 4-13, 4-14, 4-15 + + A simple text editor with a multiple document interface (MDI). + + +resources + + Listings 4-16, 4-17, 4-18 + + Example resource files. + + +dock + + Listings 4-19, 4-20, 4-21, 4-22, 4-23 + + Shows how a dock widgets can be added to a QMainWindow. + diff --git a/Chapter04/dock/dock.pro b/Chapter04/dock/dock.pro new file mode 100644 index 0000000..717d151 --- /dev/null +++ b/Chapter04/dock/dock.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 28. sep 16:43:38 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += sdiwindow.h infowidget.h +SOURCES += main.cpp sdiwindow.cpp infowidget.cpp +RESOURCES += images.qrc + +CONFIG += console diff --git a/Chapter04/dock/images.qrc b/Chapter04/dock/images.qrc new file mode 100644 index 0000000..44947aa --- /dev/null +++ b/Chapter04/dock/images.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/cut.png + images/copy.png + images/paste.png + + \ No newline at end of file diff --git a/Chapter04/dock/images/copy.png b/Chapter04/dock/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..7052fab3d28cca3a649532532ad08daeaa136d85 GIT binary patch literal 1391 zcmV-#1(5oQP)>a3aF~{+us;_NzZR zaL0XLR*$x|xdn2jD0KUau3uh#^voZgcoYesglE2)9=`j5?>^n1Th47gsaHO9&#WXN z=Jwy(om>7;Sx<(=-+%M4x|z8B)Avgn5m^Xr9g1?v+`;3z^9MZj?T>uzJ5OJH7E(m` z`Pb7+kN&#)d{J}(0919hy?xWlp@X)ruleg!pL6VE_qyXV59-e^$W3c|XW+zb4;c>D z)HmPo&g$>H|IS;FJ@kXKPZkhalj|{pm=FybVq!YHVeQ&w(@ACJ@NxHj<9W-6KIM&9 zes46IipXx>+_AB-Vdcmt#KLXve(-ye_&yYXh-fgSosg$A1M);fHXiM{@xi(Xj(zw} zNALQI_x}5`jm;f((VnU3NNIl)MQKZJ} z|9Q=svu7+U%sX;u&Scuy+S;|UJa1{=ynFBYsL8Z(izE*heX9+7DFM3f>?H;w6J zs;+Ahq0{M56sCJy2IDrM08o?^UD^%uF8au{yJ*Q{nhhk8vuHwH*Cvw*$T_R3N?lbV zlYq7a5Dm>uQlC`PtkaHw@&I{6Goafe7KD%zP1~xfN<^5Moz+H&gamR4Af}{(JfxT< zk7+mQEHk-CXFr`qVoEASB-3fFEW4C56v^!TKFce|EbLp-DT;)m1Rzk+yi3lMhw1D? z3)EN1Lwa`#Nzp0vXXh>KKWuh(UZ?De$&PmOvMU#_T0J*-2~mQC*rPg+l02lCp&2l} zK$@pBM|pr~6sf1%n{njuE#^~Y@b+0d@BL3b+Om3f?cC;Wd+v#o*M5dU2>{HIx9J^a zxJv2~4b2r|ncfLfD2hf*2d=&PTb+ZA=U%${!dq8H|9JO<$(c**(~B5j7!jiqK#YkY z%?3);lq*=I>C&B}*kyJ_XIk6d8V{a%{2!>4Y*%ZiUmWjkUi11Df4h34IvEjf0RR9%2_VhTJ4C(1{H^p4(c5Qy z<9dDJ)Qg*I=S~lIKDf~QLjiK0001#kdkiM$@C5~TCg{mPOrZ9^3M5J z{F-^ov^;|Mlmc-S^Ko zk3XA#ab?pftYZtqh-d)-0000WMTB2HlD<$?9uaOib;+gE?>P1Lb*~O87qAr(82|tP x0000WMFfD9(lX{S!cIhF000000001h{{wKVz40#)lwSY<002ovPDHLkV1m;CnR);K literal 0 HcmV?d00001 diff --git a/Chapter04/dock/images/cut.png b/Chapter04/dock/images/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9a8069394e66f5cb474fd7653d9b9a788c57d6 GIT binary patch literal 1437 zcmV;O1!DS%P)^Qhgaiw*kwy1R!2diRfk;Ph6 z#Da=7ge{mTt3ZMkfdC2w9H}i!p`r7jxQzbsn>TacJKuNTx#ye{&u+MJ3 z9;?QtAk;QT_Nr>KIsyavvI!I5T{2<3sR3{6dYgPyT48e*+-s471}on|xh&)tS69Y) z77I+?)W9Qb=bYj`r5y(N4UxFI!ujg6(E6}a&?E3LNHsQo_461=+`w%*OVl9W*zvfW zk6&%~Et)tHqR+(5x~?rBhe82UY-9w^`qD)4X1WXz_Af91kt)rwLtAQ!?X@vlMX{*0 zp)B@(d*S46fjc9W%?8)!4Jgi(_+Uu@FFPc}uOK+sJ9o+ySgbEa?g0xxa$+x3bQM`^ z?+GB~C;ceb`* zO{v+E6%BP*KubA*y(JcXpKWl-8#xjdP{~@7@DfkYA!(Gp&e35T6%dxdW(dq#)|parzt~O%8Eu>5BqQ_Px^h_=T(gj)sLE6 zI+2ivMr|Y3RFytSj1pA)`>^^ej>_1N#K#hYUuvMM3TJ0ny?_6@O7*=?OiVn5u`$t@ za!!O&X?E`g@t)S;m8N;t)^MD|fi(<9e~vIlE>9zkuhqsI9L&9fTyE8+7>SwbIgoCmeP>mS_$A%7t z)%0BJ;m%I|?!dC^IkK}oSIf##QF5W(ccE1lnfU%EMLyo_%p2#pzxPQ8VPzsT9}EG7 zqa!5Q+e1upq*YZ{p%7K627mbbfW*WE)={uE!J#r7O{v-PN#KP1q!ZiQWwML-b4i*e zaJl0pT~W|GcE3URCS&=NbW4;(b5!HU!$}GZrw02rJ=VNdQ{aiMQtkuaxsXNcUz6|@ zo%l1oVn{Iy-V<`t!a`>#GsOw0kmvX8{L)+D?rxZBX$i)#djqTZf!F~ne{yQyx0NH` z7Q`+nPZ`;w&Y6ws0z2&&YoO4|3J#N)fG~Z22I&sg+#D<>O@h!R{+1V$j;`-K6~Fnn z`SZ9EGO!0`43l4X(VCoAe8tH#`vTo7B0*2e!!J={FU>D^yk_KJGuwk&Vf0h7n34_#+PwjivY3J-eSOa7Iv%(uy3e!9+84@%=700000NkvXXu0mjfYkscc literal 0 HcmV?d00001 diff --git a/Chapter04/dock/images/new.png b/Chapter04/dock/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e8915229134d5533175440640e549cbf576ace GIT binary patch literal 791 zcmV+y1L*vTP)o0mb0jy0I>$cZ3Il$7x?n4o!{giMgxAQad1c{+80x_@qG|Br z^AvbE5=narB<2&s;LiHnn+M|NAntn!XkMOKmT5XG69Q?PQ-mxbPm$V%kx5HyckCKs z180Y686)iDt2?|7a$vBvgcJk(2!((lFSvHybf1_+@!qXhC01^Aq#tht32h4@>O+`^GZZ7 z@rpx8k4(p|v7;v05n%8Y%95@G<%@0i5gHNn1>Fy{Dm^e%71^YgOe&L|IYKz58sH+< z*SD${V6t>f<$|p( zR*Mcpb(emBC%c;3!i}X}{Gn~d>CqfviSX;7y4=U-b!85ANppzMTCUGmddL42U;yX{ VmVA^pr8@us002ovPDHLkV1mj1Wkvu1 literal 0 HcmV?d00001 diff --git a/Chapter04/dock/images/paste.png b/Chapter04/dock/images/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6558a5a4b371862cec2c827b6ff1e707087274 GIT binary patch literal 1552 zcmV+r2JiWaP)=TQQLKxvXfDUpy`C?HNt*sj;{YhU)x&dfc0*mWA`p&V&6 z(&*m#-T(QYb99x6FdxruQ(t34Wuj2D zwbd|wWDtc5%z|Gi1C*jv%rZSW21bNfZ6mfFq-M$T1YB$ahTl(-0j8yBNCf%9eJvCV zB}$%;VJO03i(@@@B`-cu1j7XJP)g%^4n3#e#Pv+#_05b9UUY%jf)pu*U>k%228Lx5 z2^oN3nTk-*BoZ<)Z39qX*=5tTfn^Gj5QsmAQ}pn?1jRWtU@kNnz))D0!i?A`WpJpy zpTBh^nVl^%lFaZz_a>B~iPuGWVB@`PxaTe`qeN{@gtnG?94|<;W)YD99-yyQ0EPlX zp=^WU)HKg`%<+{SZ*y`e%F^j9rVbF$!tE{NymaupZ20V*SOFngZ4(UCp;eS%xQS2z zU9N^J0G5ehzF&Y<5gX6RGnLQskC8ZMll7D)A?U#N&qo;=8UXSj9s$e8HbL1Y1gZ#F z=y?V6^-RD5Y$+p6sJkV~ceX9&;FBL?ZTKWcxV+j?;CUIMRbkK?r1BEV{s2m@)5*JE zWX)8fn+NY-LQ`vw(a{X&`_imfy@7NffrQF!r2x|^&oHzGt+_lfuNa&Q07|KccJF)2 zY*_IDe*D}|$)=BxXkJF^`mK!KznRzi!3#jF5v*CjHqcr?1nq0I)|HcM420{=qOpn8 z1#bJ|!!-Y_lXTi8<=J#jz~~qRL-4te!m9WFg%@1L%C=ULg%W5%i$+9O1nBE45Rt=M z?^Z(xPW+|i)0@7>_?=%PD>ktpERQ>^jSk|x{3FhsI!of#6%_3)-2KTli07kyAE{)= z6jlCZ#fk+Ud}0-oU;p99TQ+X}2`k^}V&iSAsE*c>Ne|H9{ZHOHc#P!0d4~Si$ChtD z$*=Z2hU@|K-i%>YV+P~+u444uTbbc^+OvaQf0}*ml$U(tzx)-LSpYCiy52qc z_D4=1Ba;X)bxVlSn`b#QG|9Q6=Q#5HjqJ1|4GD}IjG#ki^g{8%@nJq(|a-0VyL}X^)HubPOJMpR9M9S%X zbx(RM`S;?!*ZsrE5snN_(*wK*WJF}{$|_QFRdXn%YAOa5M8uu{e&7jpPqx4})6+<2 zFMVApj?cOzfwYL^Z*-}+25_^e9KZ&0BI4X^{r>?EzP1uo`V{Q|0000 literal 0 HcmV?d00001 diff --git a/Chapter04/dock/infowidget.cpp b/Chapter04/dock/infowidget.cpp new file mode 100644 index 0000000..66aae2a --- /dev/null +++ b/Chapter04/dock/infowidget.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "infowidget.h" + +InfoWidget::InfoWidget( QWidget *parent ) : QLabel( parent ) +{ + setAlignment( Qt::AlignCenter ); + setWordWrap( true ); + + setText( tr("Ready") ); +} + +void InfoWidget::documentChanged( int position, int charsRemoved, int charsAdded ) +{ + QString text; + + if( charsRemoved ) + text = tr("%1 removed").arg( charsRemoved ); + + if( charsRemoved && charsAdded ) + text += tr(", "); + + if( charsAdded ) + text += tr("%1 added").arg( charsAdded ); + + setText( text ); +} diff --git a/Chapter04/dock/infowidget.h b/Chapter04/dock/infowidget.h new file mode 100644 index 0000000..278c44e --- /dev/null +++ b/Chapter04/dock/infowidget.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef INFOWIDGET_H +#define INFOWIDGET_H + +#include + +class InfoWidget : public QLabel +{ + Q_OBJECT + +public: + InfoWidget( QWidget *parent=0 ); + +public slots: + void documentChanged( int position, int charsRemoved, int charsAdded ); +}; + +#endif // INFOWIDGET_H diff --git a/Chapter04/dock/main.cpp b/Chapter04/dock/main.cpp new file mode 100644 index 0000000..5dcbd81 --- /dev/null +++ b/Chapter04/dock/main.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "sdiwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + (new SdiWindow)->show(); + + return app.exec(); +} diff --git a/Chapter04/dock/sdiwindow.cpp b/Chapter04/dock/sdiwindow.cpp new file mode 100644 index 0000000..7229d9b --- /dev/null +++ b/Chapter04/dock/sdiwindow.cpp @@ -0,0 +1,192 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "infowidget.h" + +#include "sdiwindow.h" + +SdiWindow::SdiWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + setWindowTitle( tr("%1[*] - %2" ).arg(tr("unnamed")).arg(tr("SDI")) ); + + docWidget = new QTextEdit( this ); + setCentralWidget( docWidget ); + + connect( docWidget->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool)) ); + + createDocks(); + createActions(); + createMenus(); + createToolbars(); + statusBar()->showMessage( tr("Done") ); +} + +void SdiWindow::createDocks() +{ + dock = new QDockWidget( tr("Information"), this ); + InfoWidget *info = new InfoWidget( dock ); + dock->setWidget( info ); + addDockWidget( Qt::LeftDockWidgetArea, dock ); + + connect( docWidget->document(), SIGNAL(contentsChange(int, int, int)), info, SLOT(documentChanged(int, int, int)) ); +} + +void SdiWindow::closeEvent( QCloseEvent *event ) +{ + if( isSafeToClose() ) + event->accept(); + else + event->ignore(); +} + +bool SdiWindow::isSafeToClose() +{ + if( isWindowModified() ) + { + switch( QMessageBox::warning( this, tr("SDI"), + tr("The document has unsaved changes.\n" + "Do you want to save it before it is closed?"), + QMessageBox::Discard | QMessageBox::Cancel ) ) + { + case QMessageBox::Cancel: + return false; + default: + return true; + } + } + + return true; +} + +void SdiWindow::fileNew() +{ + (new SdiWindow())->show(); +} + +void SdiWindow::helpAbout() +{ + QMessageBox::about( this, tr("About SDI"), tr("A single document interface application.") ); +} + +void SdiWindow::createActions() +{ + newAction = new QAction( QIcon(":/images/new.png"), tr("&New"), this ); + newAction->setShortcut( tr("Ctrl+N") ); + newAction->setStatusTip( tr("Create a new document") ); + connect( newAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + closeAction = new QAction( tr("&Close"), this ); + closeAction->setShortcut( tr("Ctrl+W") ); + closeAction->setStatusTip( tr("Close this document") ); + connect( closeAction, SIGNAL(triggered()), this, SLOT(close()) ); + + exitAction = new QAction( tr("E&xit"), this ); + exitAction->setShortcut( tr("Ctrl+Q") ); + exitAction->setStatusTip( tr("Quit the application") ); + connect( exitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + + cutAction = new QAction( QIcon(":/images/cut.png"), tr("Cu&t"), this ); + cutAction->setShortcut( tr("Ctrl+X") ); + cutAction->setStatusTip( tr("Cut") ); + cutAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), cutAction, SLOT(setEnabled(bool)) ); + connect( cutAction, SIGNAL(triggered()), docWidget, SLOT(cut()) ); + + copyAction = new QAction( QIcon(":/images/copy.png"), tr("&Copy"), this ); + copyAction->setShortcut( tr("Ctrl+C") ); + copyAction->setStatusTip( tr("Copy") ); + copyAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), copyAction, SLOT(setEnabled(bool)) ); + connect( copyAction, SIGNAL(triggered()), docWidget, SLOT(copy()) ); + + pasteAction = new QAction( QIcon(":/images/paste.png"), tr("&Paste"), this ); + pasteAction->setShortcut( tr("Ctrl+V") ); + pasteAction->setStatusTip( tr("Paste") ); + connect( pasteAction, SIGNAL(triggered()), docWidget, SLOT(paste()) ); + + + aboutAction = new QAction( tr("&About"), this ); + aboutAction->setStatusTip( tr("About this application") ); + connect( aboutAction, SIGNAL(triggered()), this, SLOT(helpAbout()) ); + + aboutQtAction = new QAction( tr("About &Qt"), this ); + aboutQtAction->setStatusTip( tr("About the Qt toolkit") ); + connect( aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); +} + +void SdiWindow::createMenus() +{ + QMenu *menu; + + menu = menuBar()->addMenu( tr("&File") ); + menu->addAction( newAction ); + menu->addAction( closeAction ); + menu->addSeparator(); + menu->addAction( exitAction ); + + menu = menuBar()->addMenu( tr("&Edit") ); + menu->addAction( cutAction ); + menu->addAction( copyAction ); + menu->addAction( pasteAction ); + + menu = menuBar()->addMenu( tr("&View") ); + menu->addAction( dock->toggleViewAction() ); + + menu = menuBar()->addMenu( tr("&Help") ); + menu->addAction( aboutAction ); + menu->addAction( aboutQtAction ); +} + +void SdiWindow::createToolbars() +{ + QToolBar *toolbar; + + toolbar = addToolBar( tr("File") ); + toolbar->addAction( newAction ); + + toolbar = addToolBar( tr("Edit") ); + toolbar->addAction( cutAction ); + toolbar->addAction( copyAction ); + toolbar->addAction( pasteAction ); +} + diff --git a/Chapter04/dock/sdiwindow.h b/Chapter04/dock/sdiwindow.h new file mode 100644 index 0000000..21d24b1 --- /dev/null +++ b/Chapter04/dock/sdiwindow.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SDIWINDOW_H +#define SDIWINDOW_H + +#include + +class QAction; +class QTextEdit; +class QDockWidget; + +class SdiWindow : public QMainWindow +{ + Q_OBJECT + +public: + SdiWindow( QWidget *parent = 0 ); + +protected: + void closeEvent( QCloseEvent *event ); + +private slots: + void fileNew(); + void helpAbout(); + +private: + void createDocks(); + void createActions(); + void createMenus(); + void createToolbars(); + + bool isSafeToClose(); + + QTextEdit *docWidget; + + QAction *newAction; + QAction *closeAction; + QAction *exitAction; + + QAction *cutAction; + QAction *copyAction; + QAction *pasteAction; + + QAction *aboutAction; + QAction *aboutQtAction; + + QDockWidget *dock; +}; + +#endif // SDIWINDOW_H diff --git a/Chapter04/mdi/documentwindow.cpp b/Chapter04/mdi/documentwindow.cpp new file mode 100644 index 0000000..a5478be --- /dev/null +++ b/Chapter04/mdi/documentwindow.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "documentwindow.h" + +DocumentWindow::DocumentWindow( QWidget *parent ) : QTextEdit( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + setWindowTitle( tr("%1[*]" ).arg("unnamed") ); + + connect( document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool)) ); +} + +void DocumentWindow::closeEvent( QCloseEvent *event ) +{ + if( isSafeToClose() ) + event->accept(); + else + event->ignore(); +} + +bool DocumentWindow::isSafeToClose() +{ + if( document()->isModified() ) + { + switch( QMessageBox::warning( this, tr("MDI"), + tr("The document has unsaved changes.\n" + "Do you want to save it before it is closed?"), + QMessageBox::Discard | QMessageBox::Cancel ) ) + { + case QMessageBox::Cancel: + return false; + default: + return true; + } + } + + return true; +} diff --git a/Chapter04/mdi/documentwindow.h b/Chapter04/mdi/documentwindow.h new file mode 100644 index 0000000..d8deb9f --- /dev/null +++ b/Chapter04/mdi/documentwindow.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DOCUMENTWINDOW_H +#define DOCUMENTWINDOW_H + +#include + +class DocumentWindow : public QTextEdit +{ + Q_OBJECT + +public: + DocumentWindow( QWidget *parent = 0 ); + +protected: + void closeEvent( QCloseEvent *event ); + +private: + bool isSafeToClose(); +}; + +#endif // DOCUMENTWINDOW_H diff --git a/Chapter04/mdi/images.qrc b/Chapter04/mdi/images.qrc new file mode 100644 index 0000000..44947aa --- /dev/null +++ b/Chapter04/mdi/images.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/cut.png + images/copy.png + images/paste.png + + \ No newline at end of file diff --git a/Chapter04/mdi/images/copy.png b/Chapter04/mdi/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..7052fab3d28cca3a649532532ad08daeaa136d85 GIT binary patch literal 1391 zcmV-#1(5oQP)>a3aF~{+us;_NzZR zaL0XLR*$x|xdn2jD0KUau3uh#^voZgcoYesglE2)9=`j5?>^n1Th47gsaHO9&#WXN z=Jwy(om>7;Sx<(=-+%M4x|z8B)Avgn5m^Xr9g1?v+`;3z^9MZj?T>uzJ5OJH7E(m` z`Pb7+kN&#)d{J}(0919hy?xWlp@X)ruleg!pL6VE_qyXV59-e^$W3c|XW+zb4;c>D z)HmPo&g$>H|IS;FJ@kXKPZkhalj|{pm=FybVq!YHVeQ&w(@ACJ@NxHj<9W-6KIM&9 zes46IipXx>+_AB-Vdcmt#KLXve(-ye_&yYXh-fgSosg$A1M);fHXiM{@xi(Xj(zw} zNALQI_x}5`jm;f((VnU3NNIl)MQKZJ} z|9Q=svu7+U%sX;u&Scuy+S;|UJa1{=ynFBYsL8Z(izE*heX9+7DFM3f>?H;w6J zs;+Ahq0{M56sCJy2IDrM08o?^UD^%uF8au{yJ*Q{nhhk8vuHwH*Cvw*$T_R3N?lbV zlYq7a5Dm>uQlC`PtkaHw@&I{6Goafe7KD%zP1~xfN<^5Moz+H&gamR4Af}{(JfxT< zk7+mQEHk-CXFr`qVoEASB-3fFEW4C56v^!TKFce|EbLp-DT;)m1Rzk+yi3lMhw1D? z3)EN1Lwa`#Nzp0vXXh>KKWuh(UZ?De$&PmOvMU#_T0J*-2~mQC*rPg+l02lCp&2l} zK$@pBM|pr~6sf1%n{njuE#^~Y@b+0d@BL3b+Om3f?cC;Wd+v#o*M5dU2>{HIx9J^a zxJv2~4b2r|ncfLfD2hf*2d=&PTb+ZA=U%${!dq8H|9JO<$(c**(~B5j7!jiqK#YkY z%?3);lq*=I>C&B}*kyJ_XIk6d8V{a%{2!>4Y*%ZiUmWjkUi11Df4h34IvEjf0RR9%2_VhTJ4C(1{H^p4(c5Qy z<9dDJ)Qg*I=S~lIKDf~QLjiK0001#kdkiM$@C5~TCg{mPOrZ9^3M5J z{F-^ov^;|Mlmc-S^Ko zk3XA#ab?pftYZtqh-d)-0000WMTB2HlD<$?9uaOib;+gE?>P1Lb*~O87qAr(82|tP x0000WMFfD9(lX{S!cIhF000000001h{{wKVz40#)lwSY<002ovPDHLkV1m;CnR);K literal 0 HcmV?d00001 diff --git a/Chapter04/mdi/images/cut.png b/Chapter04/mdi/images/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9a8069394e66f5cb474fd7653d9b9a788c57d6 GIT binary patch literal 1437 zcmV;O1!DS%P)^Qhgaiw*kwy1R!2diRfk;Ph6 z#Da=7ge{mTt3ZMkfdC2w9H}i!p`r7jxQzbsn>TacJKuNTx#ye{&u+MJ3 z9;?QtAk;QT_Nr>KIsyavvI!I5T{2<3sR3{6dYgPyT48e*+-s471}on|xh&)tS69Y) z77I+?)W9Qb=bYj`r5y(N4UxFI!ujg6(E6}a&?E3LNHsQo_461=+`w%*OVl9W*zvfW zk6&%~Et)tHqR+(5x~?rBhe82UY-9w^`qD)4X1WXz_Af91kt)rwLtAQ!?X@vlMX{*0 zp)B@(d*S46fjc9W%?8)!4Jgi(_+Uu@FFPc}uOK+sJ9o+ySgbEa?g0xxa$+x3bQM`^ z?+GB~C;ceb`* zO{v+E6%BP*KubA*y(JcXpKWl-8#xjdP{~@7@DfkYA!(Gp&e35T6%dxdW(dq#)|parzt~O%8Eu>5BqQ_Px^h_=T(gj)sLE6 zI+2ivMr|Y3RFytSj1pA)`>^^ej>_1N#K#hYUuvMM3TJ0ny?_6@O7*=?OiVn5u`$t@ za!!O&X?E`g@t)S;m8N;t)^MD|fi(<9e~vIlE>9zkuhqsI9L&9fTyE8+7>SwbIgoCmeP>mS_$A%7t z)%0BJ;m%I|?!dC^IkK}oSIf##QF5W(ccE1lnfU%EMLyo_%p2#pzxPQ8VPzsT9}EG7 zqa!5Q+e1upq*YZ{p%7K627mbbfW*WE)={uE!J#r7O{v-PN#KP1q!ZiQWwML-b4i*e zaJl0pT~W|GcE3URCS&=NbW4;(b5!HU!$}GZrw02rJ=VNdQ{aiMQtkuaxsXNcUz6|@ zo%l1oVn{Iy-V<`t!a`>#GsOw0kmvX8{L)+D?rxZBX$i)#djqTZf!F~ne{yQyx0NH` z7Q`+nPZ`;w&Y6ws0z2&&YoO4|3J#N)fG~Z22I&sg+#D<>O@h!R{+1V$j;`-K6~Fnn z`SZ9EGO!0`43l4X(VCoAe8tH#`vTo7B0*2e!!J={FU>D^yk_KJGuwk&Vf0h7n34_#+PwjivY3J-eSOa7Iv%(uy3e!9+84@%=700000NkvXXu0mjfYkscc literal 0 HcmV?d00001 diff --git a/Chapter04/mdi/images/new.png b/Chapter04/mdi/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e8915229134d5533175440640e549cbf576ace GIT binary patch literal 791 zcmV+y1L*vTP)o0mb0jy0I>$cZ3Il$7x?n4o!{giMgxAQad1c{+80x_@qG|Br z^AvbE5=narB<2&s;LiHnn+M|NAntn!XkMOKmT5XG69Q?PQ-mxbPm$V%kx5HyckCKs z180Y686)iDt2?|7a$vBvgcJk(2!((lFSvHybf1_+@!qXhC01^Aq#tht32h4@>O+`^GZZ7 z@rpx8k4(p|v7;v05n%8Y%95@G<%@0i5gHNn1>Fy{Dm^e%71^YgOe&L|IYKz58sH+< z*SD${V6t>f<$|p( zR*Mcpb(emBC%c;3!i}X}{Gn~d>CqfviSX;7y4=U-b!85ANppzMTCUGmddL42U;yX{ VmVA^pr8@us002ovPDHLkV1mj1Wkvu1 literal 0 HcmV?d00001 diff --git a/Chapter04/mdi/images/paste.png b/Chapter04/mdi/images/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6558a5a4b371862cec2c827b6ff1e707087274 GIT binary patch literal 1552 zcmV+r2JiWaP)=TQQLKxvXfDUpy`C?HNt*sj;{YhU)x&dfc0*mWA`p&V&6 z(&*m#-T(QYb99x6FdxruQ(t34Wuj2D zwbd|wWDtc5%z|Gi1C*jv%rZSW21bNfZ6mfFq-M$T1YB$ahTl(-0j8yBNCf%9eJvCV zB}$%;VJO03i(@@@B`-cu1j7XJP)g%^4n3#e#Pv+#_05b9UUY%jf)pu*U>k%228Lx5 z2^oN3nTk-*BoZ<)Z39qX*=5tTfn^Gj5QsmAQ}pn?1jRWtU@kNnz))D0!i?A`WpJpy zpTBh^nVl^%lFaZz_a>B~iPuGWVB@`PxaTe`qeN{@gtnG?94|<;W)YD99-yyQ0EPlX zp=^WU)HKg`%<+{SZ*y`e%F^j9rVbF$!tE{NymaupZ20V*SOFngZ4(UCp;eS%xQS2z zU9N^J0G5ehzF&Y<5gX6RGnLQskC8ZMll7D)A?U#N&qo;=8UXSj9s$e8HbL1Y1gZ#F z=y?V6^-RD5Y$+p6sJkV~ceX9&;FBL?ZTKWcxV+j?;CUIMRbkK?r1BEV{s2m@)5*JE zWX)8fn+NY-LQ`vw(a{X&`_imfy@7NffrQF!r2x|^&oHzGt+_lfuNa&Q07|KccJF)2 zY*_IDe*D}|$)=BxXkJF^`mK!KznRzi!3#jF5v*CjHqcr?1nq0I)|HcM420{=qOpn8 z1#bJ|!!-Y_lXTi8<=J#jz~~qRL-4te!m9WFg%@1L%C=ULg%W5%i$+9O1nBE45Rt=M z?^Z(xPW+|i)0@7>_?=%PD>ktpERQ>^jSk|x{3FhsI!of#6%_3)-2KTli07kyAE{)= z6jlCZ#fk+Ud}0-oU;p99TQ+X}2`k^}V&iSAsE*c>Ne|H9{ZHOHc#P!0d4~Si$ChtD z$*=Z2hU@|K-i%>YV+P~+u444uTbbc^+OvaQf0}*ml$U(tzx)-LSpYCiy52qc z_D4=1Ba;X)bxVlSn`b#QG|9Q6=Q#5HjqJ1|4GD}IjG#ki^g{8%@nJq(|a-0VyL}X^)HubPOJMpR9M9S%X zbx(RM`S;?!*ZsrE5snN_(*wK*WJF}{$|_QFRdXn%YAOa5M8uu{e&7jpPqx4})6+<2 zFMVApj?cOzfwYL^Z*-}+25_^e9KZ&0BI4X^{r>?EzP1uo`V{Q|0000 literal 0 HcmV?d00001 diff --git a/Chapter04/mdi/main.cpp b/Chapter04/mdi/main.cpp new file mode 100644 index 0000000..fe4fb5f --- /dev/null +++ b/Chapter04/mdi/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "mdiwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + MdiWindow win; + win.show(); + + return app.exec(); +} diff --git a/Chapter04/mdi/mdi.pro b/Chapter04/mdi/mdi.pro new file mode 100644 index 0000000..323c7c3 --- /dev/null +++ b/Chapter04/mdi/mdi.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 28. sep 16:43:38 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += mdiwindow.h documentwindow.h +SOURCES += main.cpp mdiwindow.cpp documentwindow.cpp +RESOURCES += images.qrc +CONFIG+=console diff --git a/Chapter04/mdi/mdiwindow.cpp b/Chapter04/mdi/mdiwindow.cpp new file mode 100644 index 0000000..e2f9f1b --- /dev/null +++ b/Chapter04/mdi/mdiwindow.cpp @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include "mdiwindow.h" + +#include "documentwindow.h" + +MdiWindow::MdiWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setWindowTitle( tr( "MDI" ) ); + + workspace = new QWorkspace; + setCentralWidget( workspace ); + + connect( workspace, SIGNAL(windowActivated(QWidget *)), this, SLOT(enableActions())); + mapper = new QSignalMapper( this ); + connect( mapper, SIGNAL(mapped(QWidget*)), workspace, SLOT(setActiveWindow(QWidget*)) ); + + createActions(); + createMenus(); + createToolbars(); + statusBar()->showMessage( tr("Done") ); + + enableActions(); +} + +void MdiWindow::closeEvent( QCloseEvent *event ) +{ + workspace->closeAllWindows(); + + if( !activeDocument() ) + event->accept(); + else + event->ignore(); +} + +void MdiWindow::fileNew() +{ + DocumentWindow *document = new DocumentWindow; + workspace->addWindow( document ); + + connect( document, SIGNAL(copyAvailable(bool)), cutAction, SLOT(setEnabled(bool)) ); + connect( document, SIGNAL(copyAvailable(bool)), copyAction, SLOT(setEnabled(bool)) ); + + document->show(); +} + +void MdiWindow::helpAbout() +{ + QMessageBox::about( this, tr("About MDI"), tr("A multiple document interface application.") ); +} + +DocumentWindow *MdiWindow::activeDocument() +{ + return qobject_cast(workspace->activeWindow()); +} + +void MdiWindow::enableActions() +{ + bool hasDocuments = (activeDocument() != 0 ); + + closeAction->setEnabled( hasDocuments ); + pasteAction->setEnabled( hasDocuments ); + tileAction->setEnabled( hasDocuments ); + cascadeAction->setEnabled( hasDocuments ); + nextAction->setEnabled( hasDocuments ); + previousAction->setEnabled( hasDocuments ); + separatorAction->setVisible( hasDocuments ); + + bool hasSelection = hasDocuments && activeDocument()->textCursor().hasSelection(); + + cutAction->setEnabled( hasSelection ); + copyAction->setEnabled( hasSelection ); +} + +void MdiWindow::createActions() +{ + newAction = new QAction( QIcon(":/images/new.png"), tr("&New"), this ); + newAction->setShortcut( tr("Ctrl+N") ); + newAction->setStatusTip( tr("Create a new document") ); + connect( newAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + closeAction = new QAction( tr("&Close"), this ); + closeAction->setShortcut( tr("Ctrl+W") ); + closeAction->setStatusTip( tr("Close this document") ); + connect( closeAction, SIGNAL(triggered()), workspace, SLOT(closeActiveWindow()) ); + + exitAction = new QAction( tr("E&xit"), this ); + exitAction->setShortcut( tr("Ctrl+Q") ); + exitAction->setStatusTip( tr("Quit the application") ); + connect( exitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + + cutAction = new QAction( QIcon(":/images/cut.png"), tr("Cu&t"), this ); + cutAction->setShortcut( tr("Ctrl+X") ); + cutAction->setStatusTip( tr("Cut") ); + cutAction->setEnabled(false); + connect( cutAction, SIGNAL(triggered()), this, SLOT(editCut()) ); + + copyAction = new QAction( QIcon(":/images/copy.png"), tr("&Copy"), this ); + copyAction->setShortcut( tr("Ctrl+C") ); + copyAction->setStatusTip( tr("Copy") ); + copyAction->setEnabled(false); + connect( copyAction, SIGNAL(triggered()), this, SLOT(editCopy()) ); + + pasteAction = new QAction( QIcon(":/images/paste.png"), tr("&Paste"), this ); + pasteAction->setShortcut( tr("Ctrl+V") ); + pasteAction->setStatusTip( tr("Paste") ); + connect( pasteAction, SIGNAL(triggered()), this, SLOT(editPaste()) ); + + + tileAction = new QAction( tr("&Tile"), this ); + tileAction->setStatusTip( tr("Tile the windows") ); + connect( tileAction, SIGNAL(triggered()), workspace, SLOT(tile()) ); + + cascadeAction = new QAction( tr("&Cascade"), this ); + cascadeAction->setStatusTip( tr("Cascade the windows") ); + connect( cascadeAction, SIGNAL(triggered()), workspace, SLOT(cascade()) ); + + nextAction = new QAction( tr("&Next window"), this ); + nextAction->setStatusTip( tr("Move to the next window") ); + connect( nextAction, SIGNAL(triggered()), workspace, SLOT(activateNextWindow()) ); + + previousAction = new QAction( tr("&Previous window"), this ); + previousAction->setStatusTip( tr("Move to the previous window") ); + connect( previousAction, SIGNAL(triggered()), workspace, SLOT(activatePreviousWindow()) ); + + separatorAction = new QAction( this ); + separatorAction->setSeparator( true ); + + + aboutAction = new QAction( tr("&About"), this ); + aboutAction->setStatusTip( tr("About this application") ); + connect( aboutAction, SIGNAL(triggered()), this, SLOT(helpAbout()) ); + + aboutQtAction = new QAction( tr("About &Qt"), this ); + aboutQtAction->setStatusTip( tr("About the Qt toolkit") ); + connect( aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); +} + +void MdiWindow::createMenus() +{ + QMenu *menu; + + menu = menuBar()->addMenu( tr("&File") ); + menu->addAction( newAction ); + menu->addAction( closeAction ); + menu->addSeparator(); + menu->addAction( exitAction ); + + menu = menuBar()->addMenu( tr("&Edit") ); + menu->addAction( cutAction ); + menu->addAction( copyAction ); + menu->addAction( pasteAction ); + + windowMenu = menuBar()->addMenu( tr("&Window") ); + connect( windowMenu, SIGNAL(aboutToShow()), this, SLOT(updateWindowList()) ); + + menu = menuBar()->addMenu( tr("&Help") ); + menu->addAction( aboutAction ); + menu->addAction( aboutQtAction ); +} + +void MdiWindow::createToolbars() +{ + QToolBar *toolbar; + + toolbar = addToolBar( tr("File") ); + toolbar->addAction( newAction ); + + toolbar = addToolBar( tr("Edit") ); + toolbar->addAction( cutAction ); + toolbar->addAction( copyAction ); + toolbar->addAction( pasteAction ); +} + +void MdiWindow::editCut() +{ + activeDocument()->cut(); +} + +void MdiWindow::editCopy() +{ + activeDocument()->copy(); +} + +void MdiWindow::editPaste() +{ + activeDocument()->paste(); +} + +void MdiWindow::updateWindowList() +{ + windowMenu->clear(); + + windowMenu->addAction( tileAction ); + windowMenu->addAction( cascadeAction ); + windowMenu->addSeparator(); + windowMenu->addAction( nextAction ); + windowMenu->addAction( previousAction ); + windowMenu->addAction( separatorAction ); + + int i=1; + foreach( QWidget *w, workspace->windowList() ) + { + QString text; + if( i<10 ) + text = tr("&%1 %2").arg( i++ ).arg( w->windowTitle() ); + else + text = w->windowTitle(); + + QAction *action = windowMenu->addAction( text ); + action->setCheckable( true ); + action->setChecked( w == activeDocument() ); + connect( action, SIGNAL(triggered()), mapper, SLOT(map()) ); + mapper->setMapping( action, w ); + } +} diff --git a/Chapter04/mdi/mdiwindow.h b/Chapter04/mdi/mdiwindow.h new file mode 100644 index 0000000..85ec44f --- /dev/null +++ b/Chapter04/mdi/mdiwindow.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MDIWINDOW_H +#define MDIWINDOW_H + +#include + +class QAction; +class QWorkspace; +class QSignalMapper; +class QMenu; + +class DocumentWindow; + +class MdiWindow : public QMainWindow +{ + Q_OBJECT + +public: + MdiWindow( QWidget *parent = 0 ); + +protected: + void closeEvent( QCloseEvent *event ); + +private slots: + void fileNew(); + + void editCut(); + void editCopy(); + void editPaste(); + + void helpAbout(); + + void enableActions(); + void updateWindowList(); + +private: + void createActions(); + void createMenus(); + void createToolbars(); + + DocumentWindow *activeDocument(); + + QWorkspace *workspace; + QSignalMapper *mapper; + + QAction *newAction; + QAction *closeAction; + QAction *exitAction; + + QAction *cutAction; + QAction *copyAction; + QAction *pasteAction; + + QAction *tileAction; + QAction *cascadeAction; + QAction *nextAction; + QAction *previousAction; + QAction *separatorAction; + + QAction *aboutAction; + QAction *aboutQtAction; + + QMenu *windowMenu; +}; + +#endif // MDIWINDOW_H diff --git a/Chapter04/resources/alias.qrc b/Chapter04/resources/alias.qrc new file mode 100644 index 0000000..4fb9b8e --- /dev/null +++ b/Chapter04/resources/alias.qrc @@ -0,0 +1,6 @@ + + + images/new.png + images/new.png + + diff --git a/Chapter04/resources/direct.qrc b/Chapter04/resources/direct.qrc new file mode 100644 index 0000000..92c7a1d --- /dev/null +++ b/Chapter04/resources/direct.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/cut.png + images/copy.png + images/paste.png + + diff --git a/Chapter04/resources/prefix.qrc b/Chapter04/resources/prefix.qrc new file mode 100644 index 0000000..1759b8b --- /dev/null +++ b/Chapter04/resources/prefix.qrc @@ -0,0 +1,10 @@ + + + images/new.png + + + images/cut.png + images/copy.png + images/paste.png + + diff --git a/Chapter04/sdi/images.qrc b/Chapter04/sdi/images.qrc new file mode 100644 index 0000000..44947aa --- /dev/null +++ b/Chapter04/sdi/images.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/cut.png + images/copy.png + images/paste.png + + \ No newline at end of file diff --git a/Chapter04/sdi/images/copy.png b/Chapter04/sdi/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..7052fab3d28cca3a649532532ad08daeaa136d85 GIT binary patch literal 1391 zcmV-#1(5oQP)>a3aF~{+us;_NzZR zaL0XLR*$x|xdn2jD0KUau3uh#^voZgcoYesglE2)9=`j5?>^n1Th47gsaHO9&#WXN z=Jwy(om>7;Sx<(=-+%M4x|z8B)Avgn5m^Xr9g1?v+`;3z^9MZj?T>uzJ5OJH7E(m` z`Pb7+kN&#)d{J}(0919hy?xWlp@X)ruleg!pL6VE_qyXV59-e^$W3c|XW+zb4;c>D z)HmPo&g$>H|IS;FJ@kXKPZkhalj|{pm=FybVq!YHVeQ&w(@ACJ@NxHj<9W-6KIM&9 zes46IipXx>+_AB-Vdcmt#KLXve(-ye_&yYXh-fgSosg$A1M);fHXiM{@xi(Xj(zw} zNALQI_x}5`jm;f((VnU3NNIl)MQKZJ} z|9Q=svu7+U%sX;u&Scuy+S;|UJa1{=ynFBYsL8Z(izE*heX9+7DFM3f>?H;w6J zs;+Ahq0{M56sCJy2IDrM08o?^UD^%uF8au{yJ*Q{nhhk8vuHwH*Cvw*$T_R3N?lbV zlYq7a5Dm>uQlC`PtkaHw@&I{6Goafe7KD%zP1~xfN<^5Moz+H&gamR4Af}{(JfxT< zk7+mQEHk-CXFr`qVoEASB-3fFEW4C56v^!TKFce|EbLp-DT;)m1Rzk+yi3lMhw1D? z3)EN1Lwa`#Nzp0vXXh>KKWuh(UZ?De$&PmOvMU#_T0J*-2~mQC*rPg+l02lCp&2l} zK$@pBM|pr~6sf1%n{njuE#^~Y@b+0d@BL3b+Om3f?cC;Wd+v#o*M5dU2>{HIx9J^a zxJv2~4b2r|ncfLfD2hf*2d=&PTb+ZA=U%${!dq8H|9JO<$(c**(~B5j7!jiqK#YkY z%?3);lq*=I>C&B}*kyJ_XIk6d8V{a%{2!>4Y*%ZiUmWjkUi11Df4h34IvEjf0RR9%2_VhTJ4C(1{H^p4(c5Qy z<9dDJ)Qg*I=S~lIKDf~QLjiK0001#kdkiM$@C5~TCg{mPOrZ9^3M5J z{F-^ov^;|Mlmc-S^Ko zk3XA#ab?pftYZtqh-d)-0000WMTB2HlD<$?9uaOib;+gE?>P1Lb*~O87qAr(82|tP x0000WMFfD9(lX{S!cIhF000000001h{{wKVz40#)lwSY<002ovPDHLkV1m;CnR);K literal 0 HcmV?d00001 diff --git a/Chapter04/sdi/images/cut.png b/Chapter04/sdi/images/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9a8069394e66f5cb474fd7653d9b9a788c57d6 GIT binary patch literal 1437 zcmV;O1!DS%P)^Qhgaiw*kwy1R!2diRfk;Ph6 z#Da=7ge{mTt3ZMkfdC2w9H}i!p`r7jxQzbsn>TacJKuNTx#ye{&u+MJ3 z9;?QtAk;QT_Nr>KIsyavvI!I5T{2<3sR3{6dYgPyT48e*+-s471}on|xh&)tS69Y) z77I+?)W9Qb=bYj`r5y(N4UxFI!ujg6(E6}a&?E3LNHsQo_461=+`w%*OVl9W*zvfW zk6&%~Et)tHqR+(5x~?rBhe82UY-9w^`qD)4X1WXz_Af91kt)rwLtAQ!?X@vlMX{*0 zp)B@(d*S46fjc9W%?8)!4Jgi(_+Uu@FFPc}uOK+sJ9o+ySgbEa?g0xxa$+x3bQM`^ z?+GB~C;ceb`* zO{v+E6%BP*KubA*y(JcXpKWl-8#xjdP{~@7@DfkYA!(Gp&e35T6%dxdW(dq#)|parzt~O%8Eu>5BqQ_Px^h_=T(gj)sLE6 zI+2ivMr|Y3RFytSj1pA)`>^^ej>_1N#K#hYUuvMM3TJ0ny?_6@O7*=?OiVn5u`$t@ za!!O&X?E`g@t)S;m8N;t)^MD|fi(<9e~vIlE>9zkuhqsI9L&9fTyE8+7>SwbIgoCmeP>mS_$A%7t z)%0BJ;m%I|?!dC^IkK}oSIf##QF5W(ccE1lnfU%EMLyo_%p2#pzxPQ8VPzsT9}EG7 zqa!5Q+e1upq*YZ{p%7K627mbbfW*WE)={uE!J#r7O{v-PN#KP1q!ZiQWwML-b4i*e zaJl0pT~W|GcE3URCS&=NbW4;(b5!HU!$}GZrw02rJ=VNdQ{aiMQtkuaxsXNcUz6|@ zo%l1oVn{Iy-V<`t!a`>#GsOw0kmvX8{L)+D?rxZBX$i)#djqTZf!F~ne{yQyx0NH` z7Q`+nPZ`;w&Y6ws0z2&&YoO4|3J#N)fG~Z22I&sg+#D<>O@h!R{+1V$j;`-K6~Fnn z`SZ9EGO!0`43l4X(VCoAe8tH#`vTo7B0*2e!!J={FU>D^yk_KJGuwk&Vf0h7n34_#+PwjivY3J-eSOa7Iv%(uy3e!9+84@%=700000NkvXXu0mjfYkscc literal 0 HcmV?d00001 diff --git a/Chapter04/sdi/images/new.png b/Chapter04/sdi/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e8915229134d5533175440640e549cbf576ace GIT binary patch literal 791 zcmV+y1L*vTP)o0mb0jy0I>$cZ3Il$7x?n4o!{giMgxAQad1c{+80x_@qG|Br z^AvbE5=narB<2&s;LiHnn+M|NAntn!XkMOKmT5XG69Q?PQ-mxbPm$V%kx5HyckCKs z180Y686)iDt2?|7a$vBvgcJk(2!((lFSvHybf1_+@!qXhC01^Aq#tht32h4@>O+`^GZZ7 z@rpx8k4(p|v7;v05n%8Y%95@G<%@0i5gHNn1>Fy{Dm^e%71^YgOe&L|IYKz58sH+< z*SD${V6t>f<$|p( zR*Mcpb(emBC%c;3!i}X}{Gn~d>CqfviSX;7y4=U-b!85ANppzMTCUGmddL42U;yX{ VmVA^pr8@us002ovPDHLkV1mj1Wkvu1 literal 0 HcmV?d00001 diff --git a/Chapter04/sdi/images/paste.png b/Chapter04/sdi/images/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6558a5a4b371862cec2c827b6ff1e707087274 GIT binary patch literal 1552 zcmV+r2JiWaP)=TQQLKxvXfDUpy`C?HNt*sj;{YhU)x&dfc0*mWA`p&V&6 z(&*m#-T(QYb99x6FdxruQ(t34Wuj2D zwbd|wWDtc5%z|Gi1C*jv%rZSW21bNfZ6mfFq-M$T1YB$ahTl(-0j8yBNCf%9eJvCV zB}$%;VJO03i(@@@B`-cu1j7XJP)g%^4n3#e#Pv+#_05b9UUY%jf)pu*U>k%228Lx5 z2^oN3nTk-*BoZ<)Z39qX*=5tTfn^Gj5QsmAQ}pn?1jRWtU@kNnz))D0!i?A`WpJpy zpTBh^nVl^%lFaZz_a>B~iPuGWVB@`PxaTe`qeN{@gtnG?94|<;W)YD99-yyQ0EPlX zp=^WU)HKg`%<+{SZ*y`e%F^j9rVbF$!tE{NymaupZ20V*SOFngZ4(UCp;eS%xQS2z zU9N^J0G5ehzF&Y<5gX6RGnLQskC8ZMll7D)A?U#N&qo;=8UXSj9s$e8HbL1Y1gZ#F z=y?V6^-RD5Y$+p6sJkV~ceX9&;FBL?ZTKWcxV+j?;CUIMRbkK?r1BEV{s2m@)5*JE zWX)8fn+NY-LQ`vw(a{X&`_imfy@7NffrQF!r2x|^&oHzGt+_lfuNa&Q07|KccJF)2 zY*_IDe*D}|$)=BxXkJF^`mK!KznRzi!3#jF5v*CjHqcr?1nq0I)|HcM420{=qOpn8 z1#bJ|!!-Y_lXTi8<=J#jz~~qRL-4te!m9WFg%@1L%C=ULg%W5%i$+9O1nBE45Rt=M z?^Z(xPW+|i)0@7>_?=%PD>ktpERQ>^jSk|x{3FhsI!of#6%_3)-2KTli07kyAE{)= z6jlCZ#fk+Ud}0-oU;p99TQ+X}2`k^}V&iSAsE*c>Ne|H9{ZHOHc#P!0d4~Si$ChtD z$*=Z2hU@|K-i%>YV+P~+u444uTbbc^+OvaQf0}*ml$U(tzx)-LSpYCiy52qc z_D4=1Ba;X)bxVlSn`b#QG|9Q6=Q#5HjqJ1|4GD}IjG#ki^g{8%@nJq(|a-0VyL}X^)HubPOJMpR9M9S%X zbx(RM`S;?!*ZsrE5snN_(*wK*WJF}{$|_QFRdXn%YAOa5M8uu{e&7jpPqx4})6+<2 zFMVApj?cOzfwYL^Z*-}+25_^e9KZ&0BI4X^{r>?EzP1uo`V{Q|0000 literal 0 HcmV?d00001 diff --git a/Chapter04/sdi/main.cpp b/Chapter04/sdi/main.cpp new file mode 100644 index 0000000..5dcbd81 --- /dev/null +++ b/Chapter04/sdi/main.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "sdiwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + (new SdiWindow)->show(); + + return app.exec(); +} diff --git a/Chapter04/sdi/sdi.pro b/Chapter04/sdi/sdi.pro new file mode 100644 index 0000000..78585fc --- /dev/null +++ b/Chapter04/sdi/sdi.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 28. sep 16:43:38 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += sdiwindow.h +SOURCES += main.cpp sdiwindow.cpp +RESOURCES += images.qrc diff --git a/Chapter04/sdi/sdiwindow.cpp b/Chapter04/sdi/sdiwindow.cpp new file mode 100644 index 0000000..309ad69 --- /dev/null +++ b/Chapter04/sdi/sdiwindow.cpp @@ -0,0 +1,175 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include "sdiwindow.h" + +SdiWindow::SdiWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + setWindowTitle( tr("%1[*] - %2" ).arg(tr("unnamed")).arg(tr("SDI")) ); + + docWidget = new QTextEdit( this ); + setCentralWidget( docWidget ); + + connect( docWidget->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool)) ); + + createActions(); + createMenus(); + createToolbars(); + statusBar()->showMessage( tr("Done") ); +} + +void SdiWindow::closeEvent( QCloseEvent *event ) +{ + if( isSafeToClose() ) + event->accept(); + else + event->ignore(); +} + +bool SdiWindow::isSafeToClose() +{ + if( isWindowModified() ) + { + switch( QMessageBox::warning( this, tr("SDI"), + tr("The document has unsaved changes.\n" + "Do you want to save it before it is closed?"), + QMessageBox::Discard | QMessageBox::Cancel ) ) + { + case QMessageBox::Cancel: + return false; + default: + return true; + } + } + + return true; +} + +void SdiWindow::fileNew() +{ + (new SdiWindow())->show(); +} + +void SdiWindow::helpAbout() +{ + QMessageBox::about( this, tr("About SDI"), tr("A single document interface application.") ); +} + +void SdiWindow::createActions() +{ + newAction = new QAction( QIcon(":/images/new.png"), tr("&New"), this ); + newAction->setShortcut( tr("Ctrl+N") ); + newAction->setStatusTip( tr("Create a new document") ); + connect( newAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + closeAction = new QAction( tr("&Close"), this ); + closeAction->setShortcut( tr("Ctrl+W") ); + closeAction->setStatusTip( tr("Close this document") ); + connect( closeAction, SIGNAL(triggered()), this, SLOT(close()) ); + + exitAction = new QAction( tr("E&xit"), this ); + exitAction->setShortcut( tr("Ctrl+Q") ); + exitAction->setStatusTip( tr("Quit the application") ); + connect( exitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + + cutAction = new QAction( QIcon(":/images/cut.png"), tr("Cu&t"), this ); + cutAction->setShortcut( tr("Ctrl+X") ); + cutAction->setStatusTip( tr("Cut") ); + cutAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), cutAction, SLOT(setEnabled(bool)) ); + connect( cutAction, SIGNAL(triggered()), docWidget, SLOT(cut()) ); + + copyAction = new QAction( QIcon(":/images/copy.png"), tr("&Copy"), this ); + copyAction->setShortcut( tr("Ctrl+C") ); + copyAction->setStatusTip( tr("Copy") ); + copyAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), copyAction, SLOT(setEnabled(bool)) ); + connect( copyAction, SIGNAL(triggered()), docWidget, SLOT(copy()) ); + + pasteAction = new QAction( QIcon(":/images/paste.png"), tr("&Paste"), this ); + pasteAction->setShortcut( tr("Ctrl+V") ); + pasteAction->setStatusTip( tr("Paste") ); + connect( pasteAction, SIGNAL(triggered()), docWidget, SLOT(paste()) ); + + + aboutAction = new QAction( tr("&About"), this ); + aboutAction->setStatusTip( tr("About this application") ); + connect( aboutAction, SIGNAL(triggered()), this, SLOT(helpAbout()) ); + + aboutQtAction = new QAction( tr("About &Qt"), this ); + aboutQtAction->setStatusTip( tr("About the Qt toolkit") ); + connect( aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); +} + +void SdiWindow::createMenus() +{ + QMenu *menu; + + menu = menuBar()->addMenu( tr("&File") ); + menu->addAction( newAction ); + menu->addAction( closeAction ); + menu->addSeparator(); + menu->addAction( exitAction ); + + menu = menuBar()->addMenu( tr("&Edit") ); + menu->addAction( cutAction ); + menu->addAction( copyAction ); + menu->addAction( pasteAction ); + + menu = menuBar()->addMenu( tr("&Help") ); + menu->addAction( aboutAction ); + menu->addAction( aboutQtAction ); +} + +void SdiWindow::createToolbars() +{ + QToolBar *toolbar; + + toolbar = addToolBar( tr("File") ); + toolbar->addAction( newAction ); + + toolbar = addToolBar( tr("Edit") ); + toolbar->addAction( cutAction ); + toolbar->addAction( copyAction ); + toolbar->addAction( pasteAction ); +} + diff --git a/Chapter04/sdi/sdiwindow.h b/Chapter04/sdi/sdiwindow.h new file mode 100644 index 0000000..628b5f5 --- /dev/null +++ b/Chapter04/sdi/sdiwindow.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SDIWINDOW_H +#define SDIWINDOW_H + +#include + +class QAction; +class QTextEdit; + +class SdiWindow : public QMainWindow +{ + Q_OBJECT + +public: + SdiWindow( QWidget *parent = 0 ); + +protected: + void closeEvent( QCloseEvent *event ); + +private slots: + void fileNew(); + void helpAbout(); + +private: + void createActions(); + void createMenus(); + void createToolbars(); + + bool isSafeToClose(); + + QTextEdit *docWidget; + + QAction *newAction; + QAction *closeAction; + QAction *exitAction; + + QAction *cutAction; + QAction *copyAction; + QAction *pasteAction; + + QAction *aboutAction; + QAction *aboutQtAction; +}; + +#endif // SDIWINDOW_H diff --git a/Chapter05/README.txt b/Chapter05/README.txt new file mode 100644 index 0000000..5f40b94 --- /dev/null +++ b/Chapter05/README.txt @@ -0,0 +1,74 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 5 - The Model-View Framework + +splitterview + + Listings 5-1, 5-2, 5-3, 5-4, 5-5 + + Shows how to use QStandardItem items in QTreeView, QTableView and QListView. + + +readonlyview + + Listings 5-6, 5-7 + + Shows how to set a QStandardItem to read-only and limits the possible + selections. + + +stringlist + + Listings 5-8 + + Shows how to use a QStringListModel. + + +bardelegate + + Listings 5-9, 5-10, 5-11, 5-12 + + Shows how to implement a custom delegate for showing values as a bar. + + +editdelegate + + Listings 5-13, 5-14, 5-15, 5-16 + + Shows how to extend the delegate to support editing as well as viewing. + + +singleitemview + + Listings 5-17, 5-18, 5-19, 5-20, 5-21, 5-22, 5-23 + + Shows how to implement a custom view. + + +mulmodel + + Listings 5-24, 5-25, 5-26, 5-27, 5-28, 5-29 + + Shows how to implement a custom, read-only table model. + + +treemodel + + Listings 5-30, 5-31, 5-32, 5-33, 5-34, 5-35, 5-36 + + Shows how to implement a custom, read-only tree model based around QObjects. + + +editmodel + + Listings 5-37, 5-38, 5-39, 5-40, 5-41, 5-42, 5-43 + + Shows how to implement a custom, editable list model. + + +sorting + + Listings 5-44, 5-45, 5-46 + + Shows how to use the QSortFilterProxyModel to perform custom sorting. diff --git a/Chapter05/bardelegate/bardelegate.cpp b/Chapter05/bardelegate/bardelegate.cpp new file mode 100644 index 0000000..eecca9b --- /dev/null +++ b/Chapter05/bardelegate/bardelegate.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "bardelegate.h" + +BarDelegate::BarDelegate( QObject *parent ) : QAbstractItemDelegate( parent ) { } + +void BarDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const +{ + if( option.state & QStyle::State_Selected ) + painter->fillRect( option.rect, option.palette.highlight() ); + + int value = index.model()->data( index, Qt::DisplayRole ).toInt(); + double factor = double(value)/100.0; + + painter->save(); + + if( factor > 1 ) + { + painter->setBrush( Qt::red ); + factor = 1; + } + else + painter->setBrush( QColor( 0, int(factor*255), 255-int(factor*255) ) ); + + painter->setPen( Qt::black ); + painter->drawRect( option.rect.x()+2, option.rect.y()+2, int(factor*(option.rect.width()-5)), option.rect.height()-5 ); + painter->restore(); +} + +QSize BarDelegate::sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const +{ + return QSize( 45, 15 ); +} diff --git a/Chapter05/bardelegate/bardelegate.h b/Chapter05/bardelegate/bardelegate.h new file mode 100644 index 0000000..444c1d4 --- /dev/null +++ b/Chapter05/bardelegate/bardelegate.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BARDELEGATE_H +#define BARDELEGATE_H + +#include + +class BarDelegate : public QAbstractItemDelegate +{ +public: + BarDelegate( QObject *parent = 0 ); + + void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const; + QSize sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const; +}; + +#endif // BARDELEGATE_H diff --git a/Chapter05/bardelegate/bardelegate.pro b/Chapter05/bardelegate/bardelegate.pro new file mode 100644 index 0000000..4473438 --- /dev/null +++ b/Chapter05/bardelegate/bardelegate.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 18. okt 20:30:04 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += bardelegate.h +SOURCES += bardelegate.cpp main.cpp diff --git a/Chapter05/bardelegate/main.cpp b/Chapter05/bardelegate/main.cpp new file mode 100644 index 0000000..d98b479 --- /dev/null +++ b/Chapter05/bardelegate/main.cpp @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include "bardelegate.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTableView table; + + QStandardItemModel model( 10, 2 ); + for( int r=0; r<10; ++r ) + { + QStandardItem *item = new QStandardItem( QString("Row %1").arg(r+1) ); + item->setEditable( false ); + model.setItem( r, 0, item ); + + model.setItem( r, 1, new QStandardItem( QString::number((r*30)%100 )) ); + } + table.setModel( &model ); + + BarDelegate delegate; + table.setItemDelegateForColumn( 1, &delegate ); + table.show(); + + return app.exec(); +} diff --git a/Chapter05/editdelegate/bardelegate.cpp b/Chapter05/editdelegate/bardelegate.cpp new file mode 100644 index 0000000..a516d3a --- /dev/null +++ b/Chapter05/editdelegate/bardelegate.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "bardelegate.h" + +BarDelegate::BarDelegate( QObject *parent ) : QAbstractItemDelegate( parent ) { } + +void BarDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const +{ + if( option.state & QStyle::State_Selected ) + painter->fillRect( option.rect, option.palette.highlight() ); + + int value = index.model()->data( index, Qt::DisplayRole ).toInt(); + double factor = double(value)/100.0; + + painter->save(); + + if( factor > 1 ) + { + painter->setBrush( Qt::red ); + factor = 1; + } + else + painter->setBrush( QColor( 0, int(factor*255), 255-int(factor*255) ) ); + + painter->setPen( Qt::black ); + painter->drawRect( option.rect.x()+2, option.rect.y()+2, int(factor*(option.rect.width()-5)), option.rect.height()-5 ); + painter->restore(); +} + +QSize BarDelegate::sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const +{ + return QSize( 45, 15 ); +} + +QWidget *BarDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const +{ + QSlider *slider = new QSlider( parent ); + + slider->setAutoFillBackground( true ); + slider->setOrientation( Qt::Horizontal ); + slider->setRange( 0, 100 ); + slider->installEventFilter( const_cast(this) ); + + return slider; +} + +void BarDelegate::updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const +{ + editor->setGeometry( option.rect ); +} + +void BarDelegate::setEditorData( QWidget *editor, const QModelIndex &index ) const +{ + int value = index.model()->data( index, Qt::DisplayRole ).toInt(); + static_cast( editor )->setValue( value ); +} + +void BarDelegate::setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const +{ + model->setData( index, static_cast( editor )->value() ); +} + diff --git a/Chapter05/editdelegate/bardelegate.h b/Chapter05/editdelegate/bardelegate.h new file mode 100644 index 0000000..128cbda --- /dev/null +++ b/Chapter05/editdelegate/bardelegate.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BARDELEGATE_H +#define BARDELEGATE_H + +#include + +class BarDelegate : public QAbstractItemDelegate +{ +public: + BarDelegate( QObject *parent = 0 ); + + void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const; + QSize sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const; + + QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const; + void setEditorData( QWidget *editor, const QModelIndex &index ) const; + void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const; + void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const; +}; + +#endif // BARDELEGATE_H diff --git a/Chapter05/editdelegate/editdelegate.pro b/Chapter05/editdelegate/editdelegate.pro new file mode 100644 index 0000000..a39eceb --- /dev/null +++ b/Chapter05/editdelegate/editdelegate.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 19. okt 15:49:22 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += bardelegate.h +SOURCES += bardelegate.cpp main.cpp diff --git a/Chapter05/editdelegate/main.cpp b/Chapter05/editdelegate/main.cpp new file mode 100644 index 0000000..99ee462 --- /dev/null +++ b/Chapter05/editdelegate/main.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include "bardelegate.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTableView table; + + QStandardItemModel model( 10, 2 ); + for( int r=0; r<10; ++r ) + { + QStandardItem *item = new QStandardItem( QString("Row %1").arg(r+1) ); + item->setEditable( false ); + model.setItem( r, 0, item ); + + model.setItem( r, 1, new QStandardItem( QString::number((r*30)%100 )) ); + } + table.setModel( &model ); + + BarDelegate delegate; + table.setItemDelegateForColumn( 1, &delegate ); + + table.show(); + + return app.exec(); +} diff --git a/Chapter05/editmodel/editmodel.pro b/Chapter05/editmodel/editmodel.pro new file mode 100644 index 0000000..7fabdeb --- /dev/null +++ b/Chapter05/editmodel/editmodel.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 22. okt 16:45:01 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += intmodel.h +SOURCES += intmodel.cpp main.cpp diff --git a/Chapter05/editmodel/intmodel.cpp b/Chapter05/editmodel/intmodel.cpp new file mode 100644 index 0000000..fbdae40 --- /dev/null +++ b/Chapter05/editmodel/intmodel.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "intmodel.h" + +IntModel::IntModel( int count, QObject *parent ) +{ + for( int i=0; i= m_values.count() ) + return false; + + if( value.toInt() == m_values.at( index.row() ) ) + return false; + + m_values[ index.row() ] = value.toInt(); + + emit dataChanged( index, index ); + return true; +} diff --git a/Chapter05/editmodel/intmodel.h b/Chapter05/editmodel/intmodel.h new file mode 100644 index 0000000..28289a4 --- /dev/null +++ b/Chapter05/editmodel/intmodel.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef INTMODEL_H +#define INTMODEL_H + +#include +#include + +class IntModel : public QAbstractListModel +{ +public: + IntModel( int count, QObject *parent = 0 ); + + Qt::ItemFlags flags( const QModelIndex &index ) const; + QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; + int rowCount( const QModelIndex &parent = QModelIndex() ) const; + + bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ); + +private: + QList m_values; +}; + +#endif // INTMODEL_H diff --git a/Chapter05/editmodel/main.cpp b/Chapter05/editmodel/main.cpp new file mode 100644 index 0000000..5cd3613 --- /dev/null +++ b/Chapter05/editmodel/main.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "intmodel.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + IntModel model( 25 ); + + QListView list; + list.setModel( &model ); + list.show(); + + return app.exec(); +} diff --git a/Chapter05/mulmodel/main.cpp b/Chapter05/mulmodel/main.cpp new file mode 100644 index 0000000..13c0e74 --- /dev/null +++ b/Chapter05/mulmodel/main.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "mulmodel.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + MulModel model( 12, 12 ); + + QTableView table; + table.setModel( &model ); + + table.show(); + + return app.exec(); +} diff --git a/Chapter05/mulmodel/mulmodel.cpp b/Chapter05/mulmodel/mulmodel.cpp new file mode 100644 index 0000000..0568c37 --- /dev/null +++ b/Chapter05/mulmodel/mulmodel.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "mulmodel.h" + +MulModel::MulModel( int rows, int columns, QObject *parent ) : QAbstractTableModel( parent ) +{ + m_rows = rows; + m_columns = columns; +} + +int MulModel::rowCount( const QModelIndex &parent ) const +{ + return m_rows; +} + +int MulModel::columnCount( const QModelIndex &parent ) const +{ + return m_columns; +} + +Qt::ItemFlags MulModel::flags( const QModelIndex &index ) const +{ + return Qt::ItemIsSelectable | Qt::ItemIsEnabled; +} + +QVariant MulModel::data( const QModelIndex &index, int role ) const +{ + switch( role ) + { + case Qt::DisplayRole: + return (index.row()+1) * (index.column()+1); + + case Qt::ToolTipRole: + return QString( "%1 x %2" ).arg( index.row()+1 ).arg( index.column()+1 ); + + default: + return QVariant(); + } +} + +QVariant MulModel::headerData( int section, Qt::Orientation orientation, int role ) const +{ + if( role != Qt::DisplayRole ) + return QVariant(); + + return QString::number( section+1 ); +} diff --git a/Chapter05/mulmodel/mulmodel.h b/Chapter05/mulmodel/mulmodel.h new file mode 100644 index 0000000..b0450ba --- /dev/null +++ b/Chapter05/mulmodel/mulmodel.h @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MULMODEL_H +#define MULMODEL_H + +#include + +class MulModel : public QAbstractTableModel +{ +public: + MulModel( int rows, int columns, QObject *parent = 0 ); + + Qt::ItemFlags flags( const QModelIndex &index ) const; + QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const; + QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + int rowCount( const QModelIndex &parent = QModelIndex() ) const; + int columnCount( const QModelIndex &parent = QModelIndex() ) const; + +private: + int m_rows, m_columns; +}; + +#endif // MULMODEL_H diff --git a/Chapter05/mulmodel/mulmodel.pro b/Chapter05/mulmodel/mulmodel.pro new file mode 100644 index 0000000..c230edc --- /dev/null +++ b/Chapter05/mulmodel/mulmodel.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 21. okt 18:14:24 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += mulmodel.h +SOURCES += mulmodel.cpp main.cpp diff --git a/Chapter05/readonlyview/main.cpp b/Chapter05/readonlyview/main.cpp new file mode 100644 index 0000000..b357f47 --- /dev/null +++ b/Chapter05/readonlyview/main.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTreeView *tree = new QTreeView(); + QListView *list = new QListView(); + QTableView *table = new QTableView(); + + QSplitter splitter; + splitter.addWidget( tree ); + splitter.addWidget( list ); + splitter.addWidget( table ); + + QStandardItemModel model( 5, 2 ); + for( int r=0; r<5; r++ ) + for( int c=0; c<2; c++) + { + QStandardItem *item = new QStandardItem( QString("Row:%0, Column:%1").arg(r).arg(c) ); + + if( c == 0 ) + for( int i=0; i<3; i++ ) + { + QStandardItem *child = new QStandardItem( QString("Item %0").arg(i) ); + child->setEditable( false ); + item->appendRow( child ); + } + + model.setItem(r, c, item); + } + + model.setHorizontalHeaderItem( 0, new QStandardItem( "Foo" ) ); + model.setHorizontalHeaderItem( 1, new QStandardItem( "Bar-Baz" ) ); + + tree->setModel( &model ); + list->setModel( &model ); + table->setModel( &model ); + + list->setSelectionModel( tree->selectionModel() ); + table->setSelectionModel( tree->selectionModel() ); + + table->setSelectionBehavior( QAbstractItemView::SelectRows ); + table->setSelectionMode( QAbstractItemView::SingleSelection ); + + splitter.show(); + + return app.exec(); +} diff --git a/Chapter05/readonlyview/readonlyview.pro b/Chapter05/readonlyview/readonlyview.pro new file mode 100644 index 0000000..e1f0242 --- /dev/null +++ b/Chapter05/readonlyview/readonlyview.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 19. okt 13:22:05 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter05/singleitemview/main.cpp b/Chapter05/singleitemview/main.cpp new file mode 100644 index 0000000..368d66e --- /dev/null +++ b/Chapter05/singleitemview/main.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include +#include + +#include "singleitemview.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTableView *table = new QTableView(); + SingleItemView *selectionView = new SingleItemView(); + + QSplitter splitter; + splitter.addWidget( table ); + splitter.addWidget( selectionView ); + + QStandardItemModel model( 5, 2 ); + for( int r=0; r<5; r++ ) + for( int c=0; c<2; c++) + { + QStandardItem *item = new QStandardItem( QString("Row:%0, Column:%1").arg(r).arg(c) ); + model.setItem(r, c, item); + } + + table->setModel( &model ); + selectionView->setModel( &model ); + + selectionView->setSelectionModel( table->selectionModel() ); + + splitter.show(); + + return app.exec(); +} diff --git a/Chapter05/singleitemview/singleitemview.cpp b/Chapter05/singleitemview/singleitemview.cpp new file mode 100644 index 0000000..4d881cd --- /dev/null +++ b/Chapter05/singleitemview/singleitemview.cpp @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "singleitemview.h" + +SingleItemView::SingleItemView( QWidget *parent ) : QAbstractItemView( parent ) +{ + QGridLayout *layout = new QGridLayout( this->viewport() ); + label = new QLabel(); + + layout->addWidget( label, 0, 0 ); + + label->setAlignment( Qt::AlignCenter ); + label->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) ); + label->setText( tr("No data.") ); +} + +QRect SingleItemView::visualRect( const QModelIndex &index ) const +{ + if( selectionModel()->selection().indexes().count() != 1 ) + return QRect(); + + if( currentIndex() != index ) + return QRect(); + + return rect(); +} + +QRegion SingleItemView::visualRegionForSelection( const QItemSelection &selection ) const +{ + if( selection.indexes().count() != 1 ) + return QRect(); + + if( currentIndex() != selection.indexes()[0] ) + return QRect(); + + return rect(); +} + +bool SingleItemView::isIndexHidden( const QModelIndex &index ) const +{ + if( selectionModel()->selection().indexes().count() != 1 ) + return true; + + if( currentIndex() != index ) + return true; + + return false; +} + +QModelIndex SingleItemView::indexAt( const QPoint &point ) const +{ + if( selectionModel()->selection().indexes().count() != 1 ) + return QModelIndex(); + + return currentIndex(); +} + +int SingleItemView::horizontalOffset() const +{ + return horizontalScrollBar()->value(); +} + +int SingleItemView::verticalOffset() const +{ + return verticalScrollBar()->value(); +} + +QModelIndex SingleItemView::moveCursor( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) +{ + return currentIndex(); +} + +void SingleItemView::setSelection( const QRect &rect, QItemSelectionModel::SelectionFlags flags ) +{ + // do nothing +} + +void SingleItemView::scrollTo( const QModelIndex &index, ScrollHint hint ) +{ + // cannot scroll +} + +void SingleItemView::dataChanged( const QModelIndex &topLeft, const QModelIndex &bottomRight ) +{ + updateText(); +} + +void SingleItemView::selectionChanged( const QItemSelection &selected, const QItemSelection &deselected ) +{ + updateText(); +} + +void SingleItemView::updateText() +{ + switch( selectionModel()->selection().indexes().count() ) + { + case 0: + label->setText( tr("No data.") ); + break; + + case 1: + label->setText( model()->data( currentIndex() ).toString() ); + break; + + default: + label->setText( tr("Too many items selected.
Can only show one item at a time.
") ); + break; + } +} diff --git a/Chapter05/singleitemview/singleitemview.h b/Chapter05/singleitemview/singleitemview.h new file mode 100644 index 0000000..7ffb37a --- /dev/null +++ b/Chapter05/singleitemview/singleitemview.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SINGLEITEMVIEW_H +#define SINGLEITEMVIEW_H + +#include + +class QLabel; + +class SingleItemView : public QAbstractItemView +{ + Q_OBJECT + +public: + SingleItemView( QWidget *parent = 0 ); + + QModelIndex indexAt( const QPoint &point ) const; + void scrollTo( const QModelIndex &index, ScrollHint hint = EnsureVisible ); + QRect visualRect( const QModelIndex &index ) const; + +protected: + int horizontalOffset() const; + bool isIndexHidden( const QModelIndex &index ) const; + QModelIndex moveCursor( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ); + void setSelection( const QRect &rect, QItemSelectionModel::SelectionFlags flags ); + int verticalOffset() const; + QRegion visualRegionForSelection( const QItemSelection &selection ) const; + +protected slots: + void dataChanged( const QModelIndex &topLeft, const QModelIndex &bottomRight ); + void selectionChanged( const QItemSelection &selected, const QItemSelection &deselected ); + +private: + void updateText(); + + QLabel *label; +}; + +#endif // SINGLEITEMVIEW_H diff --git a/Chapter05/singleitemview/singleitemview.pro b/Chapter05/singleitemview/singleitemview.pro new file mode 100644 index 0000000..eb8e352 --- /dev/null +++ b/Chapter05/singleitemview/singleitemview.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 19. okt 09:18:10 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += singleitemview.h +SOURCES += main.cpp singleitemview.cpp diff --git a/Chapter05/sorting/main.cpp b/Chapter05/sorting/main.cpp new file mode 100644 index 0000000..9ca9b22 --- /dev/null +++ b/Chapter05/sorting/main.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include +#include "sortonsecondmodel.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QStringListModel model; + QStringList list; + list << "Totte" << "Alfons" << "Laban" << "Bamse" << "Skalman"; + model.setStringList( list ); + + SortOnSecondModel sorter; + sorter.setSourceModel( &model ); + + QTableView table; + table.setModel( &sorter ); + table.setSortingEnabled( true ); + table.show(); + + return app.exec(); +} diff --git a/Chapter05/sorting/sorting.pro b/Chapter05/sorting/sorting.pro new file mode 100644 index 0000000..95499c5 --- /dev/null +++ b/Chapter05/sorting/sorting.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 22. okt 17:26:05 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += sortonsecondmodel.h +SOURCES += main.cpp sortonsecondmodel.cpp diff --git a/Chapter05/sorting/sortonsecondmodel.cpp b/Chapter05/sorting/sortonsecondmodel.cpp new file mode 100644 index 0000000..0507737 --- /dev/null +++ b/Chapter05/sorting/sortonsecondmodel.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "sortonsecondmodel.h" + +SortOnSecondModel::SortOnSecondModel( QObject *parent ) : QSortFilterProxyModel( parent ) +{ +} + +bool SortOnSecondModel::lessThan( const QModelIndex &left, const QModelIndex &right ) const +{ + QString leftString = sourceModel()->data( left ).toString(); + QString rightString = sourceModel()->data( right ).toString(); + + if( leftString.length() > 1 ) + leftString = leftString.mid( 1 ); + else + leftString = ""; + + if( rightString.length() > 1 ) + rightString = rightString.mid( 1 ); + else + rightString = ""; + + return leftString < rightString; +} diff --git a/Chapter05/sorting/sortonsecondmodel.h b/Chapter05/sorting/sortonsecondmodel.h new file mode 100644 index 0000000..1fcb173 --- /dev/null +++ b/Chapter05/sorting/sortonsecondmodel.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SORTONSECONDMODEL_H +#define SORTONSECONDMODEL_H + +#include + +class SortOnSecondModel : public QSortFilterProxyModel +{ +public: + SortOnSecondModel( QObject *parent = 0 ); + +protected: + bool lessThan( const QModelIndex &left, const QModelIndex &right ) const; +}; + +#endif // SORTONSECONDMODEL_H diff --git a/Chapter05/splitterview/main.cpp b/Chapter05/splitterview/main.cpp new file mode 100644 index 0000000..114e3d5 --- /dev/null +++ b/Chapter05/splitterview/main.cpp @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTreeView *tree = new QTreeView(); + QListView *list = new QListView(); + QTableView *table = new QTableView(); + + QSplitter splitter; + splitter.addWidget( tree ); + splitter.addWidget( list ); + splitter.addWidget( table ); + + QStandardItemModel model( 5, 2 ); + for( int r=0; r<5; r++ ) + for( int c=0; c<2; c++) + { + QStandardItem *item = new QStandardItem( QString("Row:%0, Column:%1").arg(r).arg(c) ); + + if( c == 0 ) + for( int i=0; i<3; i++ ) + item->appendRow( new QStandardItem( QString("Item %0").arg(i) ) ); + + model.setItem(r, c, item); + } + + tree->setModel( &model ); + list->setModel( &model ); + table->setModel( &model ); + + list->setSelectionModel( tree->selectionModel() ); + table->setSelectionModel( tree->selectionModel() ); + + splitter.show(); + + return app.exec(); +} diff --git a/Chapter05/splitterview/splitterview.pro b/Chapter05/splitterview/splitterview.pro new file mode 100644 index 0000000..1628880 --- /dev/null +++ b/Chapter05/splitterview/splitterview.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 16. okt 15:40:21 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter05/stringlist/main.cpp b/Chapter05/stringlist/main.cpp new file mode 100644 index 0000000..3cdd9ce --- /dev/null +++ b/Chapter05/stringlist/main.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QListView list; + QStringListModel model; + QStringList strings; + + strings << "foo" << "bar" << "baz"; + + model.setStringList( strings ); + list.setModel( &model ); + + list.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter05/stringlist/stringlist.pro b/Chapter05/stringlist/stringlist.pro new file mode 100644 index 0000000..1fd89f2 --- /dev/null +++ b/Chapter05/stringlist/stringlist.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 18. okt 19:40:38 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter05/treemodel/main.cpp b/Chapter05/treemodel/main.cpp new file mode 100644 index 0000000..dc3a492 --- /dev/null +++ b/Chapter05/treemodel/main.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "objecttreemodel.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QObject root; + root.setObjectName( "root" ); + + QObject *child; + QObject *foo = new QObject( &root ); + foo->setObjectName( "foo" ); + child = new QObject( foo ); + child->setObjectName( "Mark" ); + child = new QObject( foo ); + child->setObjectName( "Bob" ); + child = new QObject( foo ); + child->setObjectName( "Kent" ); + + QObject *bar = new QObject( &root ); + bar->setObjectName( "bar" ); +//+. main + child = new QObject( bar ); + child->setObjectName( "Ole" ); + child = new QObject( bar ); + child->setObjectName( "Trond" ); + child = new QObject( bar ); + child->setObjectName( "Kjetil" ); + child = new QObject( bar ); + child->setObjectName( "Lasse" ); + + QObject *baz = new QObject( &root ); + baz->setObjectName( "baz" ); + child = new QObject( baz ); + child->setObjectName( "Bengt" ); + child = new QObject( baz ); + child->setObjectName( "Sven" ); +//-. main + + ObjectTreeModel model( &root ); + + QTreeView tree; + tree.setModel( &model ); + + tree.show(); + + return app.exec(); +} diff --git a/Chapter05/treemodel/objecttreemodel.cpp b/Chapter05/treemodel/objecttreemodel.cpp new file mode 100644 index 0000000..8083697 --- /dev/null +++ b/Chapter05/treemodel/objecttreemodel.cpp @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "objecttreemodel.h" + +ObjectTreeModel::ObjectTreeModel( QObject *root, QObject *parent ) : QAbstractItemModel( parent ) +{ + m_root = root; +} + +Qt::ItemFlags ObjectTreeModel::flags(const QModelIndex &index) const +{ + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; +} + +QVariant ObjectTreeModel::data( const QModelIndex &index, int role) const +{ + if( !index.isValid() ) + return QVariant(); + + if( role == Qt::DisplayRole ) + { + switch( index.column() ) + { + case 0: + return static_cast( index.internalPointer() )->objectName(); + + case 1: + return static_cast( index.internalPointer() )->metaObject()->className(); + + default: + break; + } + } + else if( role == Qt::ToolTipRole ) + { + switch( index.column() ) + { + case 0: + return QString( "The name of the object." ); + + case 1: + return QString( "The name of the class." ); + + default: + break; + } + } + + return QVariant(); +} + +QVariant ObjectTreeModel::headerData(int section, Qt::Orientation orientation, int role ) const +{ + if( role != Qt::DisplayRole || orientation != Qt::Horizontal ) + return QVariant(); + + switch( section ) + { + case 0: + return QString( "Object" ); + + case 1: + return QString( "Class" ); + + default: + return QVariant(); + } +} + +int ObjectTreeModel::rowCount(const QModelIndex &parent ) const +{ + QObject *parentObject; + + if( !parent.isValid() ) + parentObject = m_root; + else + parentObject = static_cast( parent.internalPointer() ); + + return parentObject->children().count(); +} + +int ObjectTreeModel::columnCount(const QModelIndex &parent ) const +{ + return 2; +} + +QModelIndex ObjectTreeModel::index(int row, int column, const QModelIndex &parent ) const +{ + QObject *parentObject; + + if( !parent.isValid() ) + parentObject = m_root; + else + parentObject = static_cast( parent.internalPointer() ); + + if( row < parentObject->children().count() ) + return createIndex( row, column, parentObject->children().at( row ) ); + else + return QModelIndex(); +} + +QModelIndex ObjectTreeModel::parent(const QModelIndex &index) const +{ + if( !index.isValid() ) + return QModelIndex(); + + QObject *indexObject = static_cast( index.internalPointer() ); + QObject *parentObject = indexObject->parent(); + + if( parentObject == m_root ) + return QModelIndex(); + + QObject *grandParentObject = parentObject->parent(); + + return createIndex( grandParentObject->children().indexOf( parentObject ), 0, parentObject ); +} diff --git a/Chapter05/treemodel/objecttreemodel.h b/Chapter05/treemodel/objecttreemodel.h new file mode 100644 index 0000000..a4c95ab --- /dev/null +++ b/Chapter05/treemodel/objecttreemodel.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef OBJECTTREEMODEL_H +#define OBJECTTREEMODEL_H + +#include + +class ObjectTreeModel : public QAbstractItemModel +{ +public: + ObjectTreeModel( QObject *root, QObject *parent = 0 ); + + Qt::ItemFlags flags( const QModelIndex &index ) const; + QVariant data( const QModelIndex &index, int role ) const; + QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; + int rowCount( const QModelIndex &parent = QModelIndex() ) const; + int columnCount( const QModelIndex &parent = QModelIndex() ) const; + + QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const; + QModelIndex parent( const QModelIndex &index ) const; + +private: + QObject *m_root; +}; + +#endif // OBJECTTREEMODEL_H diff --git a/Chapter05/treemodel/treemodel.pro b/Chapter05/treemodel/treemodel.pro new file mode 100644 index 0000000..64672fe --- /dev/null +++ b/Chapter05/treemodel/treemodel.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 22. okt 15:48:57 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += objecttreemodel.h +SOURCES += main.cpp objecttreemodel.cpp diff --git a/Chapter06/README.txt b/Chapter06/README.txt new file mode 100644 index 0000000..56365e6 --- /dev/null +++ b/Chapter06/README.txt @@ -0,0 +1,58 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 6 - Creating Widgets + +composed + + Listings 6-1, 6-2, 6-3, 6-4, 6-5, 6-6 + + Shows how to compose QPushButton widgets into a custom widget providing a + programming interface more adapted to the actual application. + + +clocklabel + + Listings 6-7, 6-8 + + Shows how to inherit an existing widget, a QLabel, and use it to provide new + functionality, i.e. showing the current time. + + +eventlister + + Listings 6-9, 6-10, 6-11, 6-12, 6-13, 6-14, 6-15 + + Implements an event filter that writes out all event information to a log. + You can use this to find the events that you are interested in and to learn + about the parameters passed with each event. + + +eventfilter + + Listings 6-16, 6-17 + + Shows a basic filter, stopping numeric key presses. + + +circlebar + + Listings 6-18, 6-19, 6-20, 6-21, 6-22, 6-23, 6-24 + + Shows custom widget implemented from scratch. It implements a circle + representing a value and allows the user to change the value using the mouse + wheel. + + +designerpromotion + + Not shown in any Listings, but Figure 6-7. + + A Designer file showing a promoted widget. + +designerplugin + + Listings 6-25, 6-26, 6-27, 6-28, 6-29, 6-30, 6-31, 6-32, 6-33 + + Shows how to implement a plug-in that makes the CircleBar widget available + from within Designer. diff --git a/Chapter06/circlebar/circlebar.cpp b/Chapter06/circlebar/circlebar.cpp new file mode 100644 index 0000000..7d993cf --- /dev/null +++ b/Chapter06/circlebar/circlebar.cpp @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +#include "circlebar.h" + +CircleBar::CircleBar( int value, QWidget *parent ) : QWidget( parent ) +{ + m_value = value; + + QSizePolicy policy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + policy.setHeightForWidth( true ); + setSizePolicy( policy ); +} + +int CircleBar::heightForWidth( int width ) const +{ + return width; +} + +QSize CircleBar::sizeHint() const +{ + return QSize( 100, 100 ); +} + +int CircleBar::value() const +{ + return m_value; +} + +void CircleBar::setValue( int value ) +{ + if( value < 0 ) + value = 0; + + if( value > 100 ) + value = 100; + + if( m_value == value ) + return; + + m_value = value; + + update(); + + emit valueChanged( m_value ); +} + +void CircleBar::paintEvent( QPaintEvent *event ) +{ + int radius = width()/2; + double factor = m_value/100.0; + + QPainter p( this ); + p.setPen( Qt::black ); + p.drawEllipse( 0, 0, width()-1, width()-1 ); + p.setBrush( Qt::black ); + p.drawEllipse( int(radius*(1.0-factor)), int(radius*(1.0-factor)), int((width()-1)*factor)+1, int((width()-1)*factor)+1 ); +} + +void CircleBar::wheelEvent( QWheelEvent *event ) +{ + event->accept(); + setValue( value() + event->delta()/20 ); +} diff --git a/Chapter06/circlebar/circlebar.h b/Chapter06/circlebar/circlebar.h new file mode 100644 index 0000000..7b84844 --- /dev/null +++ b/Chapter06/circlebar/circlebar.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CIRCLEBAR_H +#define CIRCLEBAR_H + +#include + +class CircleBar : public QWidget +{ + Q_OBJECT + +public: + CircleBar( int value = 0, QWidget *parent = 0 ); + + int value() const; + + int heightForWidth( int ) const; + QSize sizeHint() const; +public slots: + void setValue( int ); + +signals: + void valueChanged( int ); + +protected: + void paintEvent( QPaintEvent* ); + void wheelEvent( QWheelEvent* ); + +private: + int m_value; +}; + +#endif // CIRCLEBAR_H diff --git a/Chapter06/circlebar/circlebar.pro b/Chapter06/circlebar/circlebar.pro new file mode 100644 index 0000000..fcfa92c --- /dev/null +++ b/Chapter06/circlebar/circlebar.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 30. okt 07:22:22 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += circlebar.h +SOURCES += circlebar.cpp main.cpp +CONFIG += console diff --git a/Chapter06/circlebar/main.cpp b/Chapter06/circlebar/main.cpp new file mode 100644 index 0000000..91a73d6 --- /dev/null +++ b/Chapter06/circlebar/main.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +#include + +#include +#include + +#include "circlebar.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QWidget base; + QVBoxLayout layout( &base ); + + CircleBar bar; + QSlider slider( Qt::Horizontal ); + + layout.addWidget( &bar ); + layout.addWidget( &slider ); + + QObject::connect( &slider, SIGNAL(valueChanged(int)), &bar, SLOT(setValue(int)) ); + QObject::connect( &bar, SIGNAL(valueChanged(int)), &slider, SLOT(setValue(int)) ); + + base.show(); + + return app.exec(); +} diff --git a/Chapter06/clocklabel/clocklabel.cpp b/Chapter06/clocklabel/clocklabel.cpp new file mode 100644 index 0000000..e0af1a0 --- /dev/null +++ b/Chapter06/clocklabel/clocklabel.cpp @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "clocklabel.h" + +ClockLabel::ClockLabel( QWidget *parent ) : QLabel( parent ) +{ + QTimer *timer = new QTimer( this ); + timer->setInterval( 1000 ); + connect( timer, SIGNAL(timeout()), this, SLOT(updateTime()) ); + timer->start(); + + updateTime(); +} + +void ClockLabel::updateTime() +{ + setText( QTime::currentTime().toString( "hh:mm" ) ); +} diff --git a/Chapter06/clocklabel/clocklabel.h b/Chapter06/clocklabel/clocklabel.h new file mode 100644 index 0000000..81800a9 --- /dev/null +++ b/Chapter06/clocklabel/clocklabel.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CLOCKLABEL_H +#define CLOCKLABEL_H + +#include + +class ClockLabel : public QLabel +{ + Q_OBJECT +public: + ClockLabel( QWidget *parent = 0 ); + +private slots: + void updateTime(); +}; + +#endif // CLOCKLABEL_H diff --git a/Chapter06/clocklabel/clocklabel.pro b/Chapter06/clocklabel/clocklabel.pro new file mode 100644 index 0000000..a75c161 --- /dev/null +++ b/Chapter06/clocklabel/clocklabel.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 28. okt 16:45:10 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += clocklabel.h +SOURCES += clocklabel.cpp main.cpp +CONFIG += console diff --git a/Chapter06/clocklabel/main.cpp b/Chapter06/clocklabel/main.cpp new file mode 100644 index 0000000..07ae297 --- /dev/null +++ b/Chapter06/clocklabel/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "clocklabel.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ClockLabel clock; + clock.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter06/composed/composed.pro b/Chapter06/composed/composed.pro new file mode 100644 index 0000000..24ac6b8 --- /dev/null +++ b/Chapter06/composed/composed.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 25. okt 19:15:29 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += numerickeypad.h +SOURCES += main.cpp numerickeypad.cpp diff --git a/Chapter06/composed/main.cpp b/Chapter06/composed/main.cpp new file mode 100644 index 0000000..0d4ad30 --- /dev/null +++ b/Chapter06/composed/main.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "numerickeypad.h" + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QWidget widget; + QVBoxLayout layout( &widget ); + + NumericKeypad pad; + layout.addWidget( &pad ); + + QLabel label; + layout.addWidget( &label ); + + QObject::connect( &pad, SIGNAL(textChanged(QString)), &label, SLOT(setText(QString)) ); + + widget.show(); + + return app.exec(); +} diff --git a/Chapter06/composed/numerickeypad.cpp b/Chapter06/composed/numerickeypad.cpp new file mode 100644 index 0000000..111b39e --- /dev/null +++ b/Chapter06/composed/numerickeypad.cpp @@ -0,0 +1,126 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include "numerickeypad.h" + +NumericKeypad::NumericKeypad( QWidget *parent ) +{ + QGridLayout *layout = new QGridLayout( this ); + + m_lineEdit = new QLineEdit(); + m_lineEdit->setAlignment( Qt::AlignRight ); + + QPushButton *button0 = new QPushButton( tr("0") ); + QPushButton *button1 = new QPushButton( tr("1") ); + QPushButton *button2 = new QPushButton( tr("2") ); + QPushButton *button3 = new QPushButton( tr("3") ); + QPushButton *button4 = new QPushButton( tr("4") ); + QPushButton *button5 = new QPushButton( tr("5") ); + QPushButton *button6 = new QPushButton( tr("6") ); + QPushButton *button7 = new QPushButton( tr("7") ); + QPushButton *button8 = new QPushButton( tr("8") ); + QPushButton *button9 = new QPushButton( tr("9") ); + QPushButton *buttonDot = new QPushButton( tr(".") ); + QPushButton *buttonClear = new QPushButton( tr("C") ); + + layout->addWidget( m_lineEdit, 0, 0, 1, 3 ); + + layout->addWidget( button1, 1, 0 ); + layout->addWidget( button2, 1, 1 ); + layout->addWidget( button3, 1, 2 ); + layout->addWidget( button4, 2, 0 ); + layout->addWidget( button5, 2, 1 ); + layout->addWidget( button6, 2, 2 ); + layout->addWidget( button7, 3, 0 ); + layout->addWidget( button8, 3, 1 ); + layout->addWidget( button9, 3, 2 ); + layout->addWidget( button0, 4, 0 ); + layout->addWidget( buttonDot, 4, 1 ); + layout->addWidget( buttonClear, 4, 2 ); + + QSignalMapper *mapper = new QSignalMapper( this ); + + mapper->setMapping( button0, "0" ); + mapper->setMapping( button1, "1" ); + mapper->setMapping( button2, "2" ); + mapper->setMapping( button3, "3" ); + mapper->setMapping( button4, "4" ); + mapper->setMapping( button5, "5" ); + mapper->setMapping( button6, "6" ); + mapper->setMapping( button7, "7" ); + mapper->setMapping( button8, "8" ); + mapper->setMapping( button9, "9" ); + mapper->setMapping( buttonDot, "." ); + + connect( button0, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button1, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button2, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button3, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button4, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button5, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button6, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button7, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button8, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( button9, SIGNAL(clicked()), mapper, SLOT(map()) ); + connect( buttonDot, SIGNAL(clicked()), mapper, SLOT(map()) ); + + connect( mapper, SIGNAL(mapped(QString)), this, SLOT(buttonClicked(QString)) ); + + connect( buttonClear, SIGNAL(clicked()), m_lineEdit, SLOT(clear()) ); + connect( m_lineEdit, SIGNAL(textChanged(QString)), this, SLOT(setText(QString)) ); +} + +const QString NumericKeypad::text() const +{ + return m_text; +} + +void NumericKeypad::buttonClicked( const QString &newText ) +{ + setText( m_text + newText ); +} + +void NumericKeypad::setText( const QString &newText ) +{ + if( newText == m_text ) + return; + + m_text = newText; + m_lineEdit->setText( m_text ); + + emit textChanged( m_text ); +} + diff --git a/Chapter06/composed/numerickeypad.h b/Chapter06/composed/numerickeypad.h new file mode 100644 index 0000000..6577631 --- /dev/null +++ b/Chapter06/composed/numerickeypad.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef NUMERICKEYPAD_H +#define NUMERICKEYPAD_H + +#include +class QLineEdit; + +class NumericKeypad : public QWidget +{ + Q_OBJECT + +public: + NumericKeypad( QWidget *parent = 0 ); + + const QString text() const; + +public slots: + void setText( const QString &text ); + +signals: + void textChanged( const QString &text ); + +private slots: + void buttonClicked( const QString &text ); + +private: + QLineEdit *m_lineEdit; + QString m_text; +}; + +#endif // NUMERICKEYPAD_H diff --git a/Chapter06/designerplugin/circlebar.cpp b/Chapter06/designerplugin/circlebar.cpp new file mode 100644 index 0000000..e57d862 --- /dev/null +++ b/Chapter06/designerplugin/circlebar.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +#include "circlebar.h" + +CircleBar::CircleBar( QWidget *parent ) : QWidget( parent ) +{ + m_value = 0; + + QSizePolicy policy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + policy.setHeightForWidth( true ); + setSizePolicy( policy ); +} + +CircleBar::CircleBar( int value, QWidget *parent ) : QWidget( parent ) +{ + m_value = value; + + QSizePolicy policy( QSizePolicy::Preferred, QSizePolicy::Preferred ); + policy.setHeightForWidth( true ); + setSizePolicy( policy ); +} + +int CircleBar::heightForWidth( int width ) const +{ + return width; +} + +QSize CircleBar::sizeHint() const +{ + return QSize( 100, 100 ); +} + +int CircleBar::value() const +{ + return m_value; +} + +void CircleBar::setValue( int value ) +{ + if( value < 0 ) + value = 0; + + if( value > 100 ) + value = 100; + + if( m_value == value ) + return; + + m_value = value; + + update(); + + emit valueChanged( m_value ); +} + +void CircleBar::paintEvent( QPaintEvent *event ) +{ + int radius = width()/2; + double factor = m_value/100.0; + + QPainter p( this ); + p.setPen( Qt::black ); + p.drawEllipse( 0, 0, width()-1, width()-1 ); + p.setBrush( Qt::black ); + p.drawEllipse( int(radius*(1.0-factor)), int(radius*(1.0-factor)), int((width()-1)*factor)+1, int((width()-1)*factor)+1 ); +} + +void CircleBar::wheelEvent( QWheelEvent *event ) +{ + event->accept(); + setValue( value() + event->delta()/20 ); +} diff --git a/Chapter06/designerplugin/circlebar.h b/Chapter06/designerplugin/circlebar.h new file mode 100644 index 0000000..cb20341 --- /dev/null +++ b/Chapter06/designerplugin/circlebar.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CIRCLEBAR_H +#define CIRCLEBAR_H + +#include +#include + +class QDESIGNER_WIDGET_EXPORT CircleBar : public QWidget +{ + Q_OBJECT + +public: + CircleBar( QWidget *parent = 0 ); + CircleBar( int value = 0, QWidget *parent = 0 ); + + int value() const; + + int heightForWidth( int ) const; + QSize sizeHint() const; +public slots: + void setValue( int ); + +signals: + void valueChanged( int ); + +protected: + void paintEvent( QPaintEvent* ); + void wheelEvent( QWheelEvent* ); + +private: + int m_value; +}; + +#endif // CIRCLEBAR_H diff --git a/Chapter06/designerplugin/circlebarplugin.cpp b/Chapter06/designerplugin/circlebarplugin.cpp new file mode 100644 index 0000000..91bda73 --- /dev/null +++ b/Chapter06/designerplugin/circlebarplugin.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include "circlebar.h" +#include "circlebarplugin.h" + +CircleBarPlugin::CircleBarPlugin( QObject *parent ) +{ + m_initialized = false; +} + +bool CircleBarPlugin::isInitialized() const +{ + return m_initialized; +} + +void CircleBarPlugin::initialize( QDesignerFormEditorInterface *core ) +{ + if( m_initialized ) + return; + + m_initialized = true; +} + +bool CircleBarPlugin::isContainer() const +{ + return false; +} + +QIcon CircleBarPlugin::icon() const +{ + return QIcon(); +} + +QString CircleBarPlugin::toolTip() const +{ + return ""; +} + +QString CircleBarPlugin::whatsThis() const +{ + return ""; +} + +QString CircleBarPlugin::codeTemplate() const +{ + return ""; +} + +QString CircleBarPlugin::includeFile() const +{ + return "circlebar.h"; +} + +QString CircleBarPlugin::name() const +{ + return "CircleBar"; +} + +QString CircleBarPlugin::domXml() const +{ + return "\n" + "\n"; +} + +QString CircleBarPlugin::group() const +{ + return "Book Widgets"; +} + +QWidget *CircleBarPlugin::createWidget( QWidget *parent ) +{ + return new CircleBar( parent ); +} + +Q_EXPORT_PLUGIN2( circleBarPlugin, CircleBarPlugin ) diff --git a/Chapter06/designerplugin/circlebarplugin.h b/Chapter06/designerplugin/circlebarplugin.h new file mode 100644 index 0000000..bf11795 --- /dev/null +++ b/Chapter06/designerplugin/circlebarplugin.h @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CIRCLEBARPLUGIN_H +#define CIRCLEBARPLUGIN_H + +#include + +class QExtensionManager; + +class CircleBarPlugin : public QObject, public QDesignerCustomWidgetInterface +{ + Q_OBJECT + Q_INTERFACES(QDesignerCustomWidgetInterface) + +public: + CircleBarPlugin( QObject *parent = 0 ); + + bool isContainer() const; + bool isInitialized() const; + QIcon icon() const; + QString codeTemplate() const; + QString domXml() const; + QString group() const; + QString includeFile() const; + QString name() const; + QString toolTip() const; + QString whatsThis() const; + QWidget *createWidget( QWidget *parent ); + void initialize( QDesignerFormEditorInterface *core ); + +private: + bool m_initialized; +}; + +#endif /* CIRCLEBARPLUGIN_H */ diff --git a/Chapter06/designerplugin/plugin.pro b/Chapter06/designerplugin/plugin.pro new file mode 100644 index 0000000..80e1b64 --- /dev/null +++ b/Chapter06/designerplugin/plugin.pro @@ -0,0 +1,11 @@ +TEMPLATE = lib +CONFIG += designer plugin release + +DEPENDPATH += . + +TARGET = circlebarplugin + +HEADERS += circlebar.h circlebarplugin.h +SOURCES += circlebar.cpp circlebarplugin.cpp + +DESTDIR = $$[QT_INSTALL_DATA]/plugins/designer diff --git a/Chapter06/designerpromotion/promote-dialog.ui b/Chapter06/designerpromotion/promote-dialog.ui new file mode 100644 index 0000000..ad4664c --- /dev/null +++ b/Chapter06/designerpromotion/promote-dialog.ui @@ -0,0 +1,116 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 30 + 240 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + 150 + 60 + 53 + 17 + + + + TextLabel + + + + + + CustomWidget + QLabel +

customwidget.h
+ + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter06/eventfilter/eventfilter.pro b/Chapter06/eventfilter/eventfilter.pro new file mode 100644 index 0000000..ac900f2 --- /dev/null +++ b/Chapter06/eventfilter/eventfilter.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 28. okt 16:32:43 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter06/eventfilter/main.cpp b/Chapter06/eventfilter/main.cpp new file mode 100644 index 0000000..5d166e4 --- /dev/null +++ b/Chapter06/eventfilter/main.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +class KeyboardFilter : public QObject +{ +public: + KeyboardFilter( QObject *parent = 0 ) : QObject( parent ) {} + +protected: + bool eventFilter( QObject *dist, QEvent *event ) + { + if( event->type() == QEvent::KeyPress ) + { + QKeyEvent *keyEvent = static_cast( event ); + if( QString("1234567890").indexOf( keyEvent->text() ) != -1 ) + return true; + } + + return false; + } +}; + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QLineEdit lineEdit; + KeyboardFilter filter; + + lineEdit.installEventFilter( &filter ); + lineEdit.show(); + + return app.exec(); +} diff --git a/Chapter06/eventlister/eventlister.pro b/Chapter06/eventlister/eventlister.pro new file mode 100644 index 0000000..4e586b7 --- /dev/null +++ b/Chapter06/eventlister/eventlister.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 26. okt 19:29:55 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += eventwidget.h +SOURCES += eventwidget.cpp main.cpp diff --git a/Chapter06/eventlister/eventwidget.cpp b/Chapter06/eventlister/eventwidget.cpp new file mode 100644 index 0000000..ac0f12c --- /dev/null +++ b/Chapter06/eventlister/eventwidget.cpp @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "eventwidget.h" + +EventWidget::EventWidget( QWidget *parent ) : QWidget( parent ) +{ +} + +void EventWidget::closeEvent( QCloseEvent * event ) +{ + emit gotEvent( tr("closeEvent") ); +} + +void EventWidget::enterEvent( QEvent * event ) +{ + emit gotEvent( tr("enterEvent") ); +} + +void EventWidget::leaveEvent( QEvent * event ) +{ + emit gotEvent( tr("leaveEvent") ); +} + +void EventWidget::hideEvent( QHideEvent * event ) +{ + emit gotEvent( tr("hideEvent") ); +} + +void EventWidget::showEvent( QShowEvent * event ) +{ + emit gotEvent( tr("showEvent") ); +} + +void EventWidget::paintEvent( QPaintEvent * event ) +{ + emit gotEvent( tr("paintEvent") ); +} + +void EventWidget::contextMenuEvent( QContextMenuEvent * event ) +{ + emit gotEvent( tr("contextMenuEvent( x:%1, y:%2, reason:%3 )") + .arg(event->x()) + .arg(event->y()) + .arg(event->reason()==2?"Other": + event->reason()==1?"Keyboard": + "Mouse") ); +} + +void EventWidget::focusInEvent( QFocusEvent * event ) +{ + emit gotEvent( tr("focusInEvent( reason:%1 )") + .arg( event->reason()==0?"MouseFocusReason": + event->reason()==1?"TabFocusReason": + event->reason()==2?"BacktabFocusReason": + event->reason()==3?"ActiveWindowFocusReason": + event->reason()==4?"PopupFocusReason": + event->reason()==5?"ShortcutFocusReason": + event->reason()==6?"MenuBarFocusReason": + "OtherFocusReason" ) ); +} + +void EventWidget::focusOutEvent( QFocusEvent * event ) +{ + emit gotEvent( tr("focusOutEvent( reason:%1 )") + .arg( event->reason()==0?"MouseFocusReason": + event->reason()==1?"TabFocusReason": + event->reason()==2?"BacktabFocusReason": + event->reason()==3?"ActiveWindowFocusReason": + event->reason()==4?"PopupFocusReason": + event->reason()==5?"ShortcutFocusReason": + event->reason()==6?"MenuBarFocusReason": + "OtherFocusReason" ) ); +} + +void EventWidget::keyPressEvent( QKeyEvent * event ) +{ + emit gotEvent( tr("keyPressEvent( text:%1, modifiers:%2 )") + .arg( event->text() ) + .arg( event->modifiers()==0?tr("NoModifier"):( + (event->modifiers()&Qt::ShiftModifier ==0?tr(""): + tr("ShiftModifier "))+ + (event->modifiers()&Qt::ControlModifier ==0?tr(""): + tr("ControlModifier "))+ + (event->modifiers()&Qt::AltModifier ==0?tr(""): + tr("AltModifier "))+ + (event->modifiers()&Qt::MetaModifier ==0?tr(""): + tr("MetaModifier "))+ + (event->modifiers()&Qt::KeypadModifier ==0?tr(""): + tr("KeypadModifier "))+ + (event->modifiers()&Qt::GroupSwitchModifier==0?tr(""): + tr("GroupSwitchModifier")) ) ) ); +} + +void EventWidget::keyReleaseEvent( QKeyEvent * event ) +{ + emit gotEvent( tr("keyReleaseEvent( text:%1, modifiers:%2 )") + .arg( event->text() ) + .arg( event->modifiers()==0?tr("NoModifier"):( + (event->modifiers()&Qt::ShiftModifier ==0?tr(""): + tr("ShiftModifier "))+ + (event->modifiers()&Qt::ControlModifier ==0?tr(""): + tr("ControlModifier "))+ + (event->modifiers()&Qt::AltModifier ==0?tr(""): + tr("AltModifier "))+ + (event->modifiers()&Qt::MetaModifier ==0?tr(""): + tr("MetaModifier "))+ + (event->modifiers()&Qt::KeypadModifier ==0?tr(""): + tr("KeypadModifier "))+ + (event->modifiers()&Qt::GroupSwitchModifier==0?tr(""): + tr("GroupSwitchModifier")) ) ) ); +} + +void EventWidget::mouseDoubleClickEvent( QMouseEvent * event ) +{ + emit gotEvent( tr("mouseDoubleClickEvent( x:%1, y:%2, button:%3 )") + .arg( event->x() ) + .arg( event->y() ) + .arg( event->button()==Qt::LeftButton? "LeftButton": + event->button()==Qt::RightButton?"RightButton": + event->button()==Qt::MidButton? "MidButton": + event->button()==Qt::XButton1? "XButton1": + "XButton2" ) ); +} + +void EventWidget::mouseMoveEvent( QMouseEvent * event ) +{ + emit gotEvent( tr("mouseMoveEvent( x:%1, y:%2, button:%3 )") + .arg( event->x() ) + .arg( event->y() ) + .arg( event->button()==Qt::LeftButton? "LeftButton": + event->button()==Qt::RightButton?"RightButton": + event->button()==Qt::MidButton? "MidButton": + event->button()==Qt::XButton1? "XButton1": + "XButton2" ) ); +} + +void EventWidget::mousePressEvent( QMouseEvent * event ) +{ + emit gotEvent( tr("mousePressEvent( x:%1, y:%2, button:%3 )") + .arg( event->x() ) + .arg( event->y() ) + .arg( event->button()==Qt::LeftButton? "LeftButton": + event->button()==Qt::RightButton?"RightButton": + event->button()==Qt::MidButton? "MidButton": + event->button()==Qt::XButton1? "XButton1": + "XButton2" ) ); +} + +void EventWidget::mouseReleaseEvent( QMouseEvent * event ) +{ + emit gotEvent( tr("mouseReleaseEvent( x:%1, y:%2, button:%3 )") + .arg( event->x() ) + .arg( event->y() ) + .arg( event->button()==Qt::LeftButton? "LeftButton": + event->button()==Qt::RightButton?"RightButton": + event->button()==Qt::MidButton? "MidButton": + event->button()==Qt::XButton1? "XButton1": + "XButton2" ) ); +} + +void EventWidget::resizeEvent( QResizeEvent * event ) +{ + emit gotEvent( tr("resizeEvent( w:%1, h:%2 )") + .arg( event->size().width() ) + .arg( event->size().height() ) ); +} + +void EventWidget::wheelEvent( QWheelEvent * event ) +{ + emit gotEvent( tr("wheelEvent( x:%1, y:%2, delta:%3, orientation:%4 )") + .arg( event->x() ) + .arg( event->y() ) + .arg( event->delta() ).arg( event->orientation()==1? + "Horizontal":"Vertical" ) ); +} diff --git a/Chapter06/eventlister/eventwidget.h b/Chapter06/eventlister/eventwidget.h new file mode 100644 index 0000000..b4d587b --- /dev/null +++ b/Chapter06/eventlister/eventwidget.h @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef EVENTWIDGET_H +#define EVENTWIDGET_H + +#include + +class QCloseEvent; +class QContextMenuEvent; +class QEvent; +class QFocusEvent; +class QHideEvent; +class QKeyEvent; +class QMouseEvent; +class QPaintEvent; +class QResizeEvent; +class QShowEvent; +class QWheelEvent; + +class EventWidget : public QWidget +{ + Q_OBJECT + +public: + EventWidget( QWidget *parent = 0 ); + +signals: + void gotEvent( const QString ); + +protected: + void closeEvent( QCloseEvent * event ); + void contextMenuEvent( QContextMenuEvent * event ); + void enterEvent( QEvent * event ); + void focusInEvent( QFocusEvent * event ); + void focusOutEvent( QFocusEvent * event ); + void hideEvent( QHideEvent * event ); + void keyPressEvent( QKeyEvent * event ); + void keyReleaseEvent( QKeyEvent * event ); + void leaveEvent( QEvent * event ); + void mouseDoubleClickEvent( QMouseEvent * event ); + void mouseMoveEvent( QMouseEvent * event ); + void mousePressEvent( QMouseEvent * event ); + void mouseReleaseEvent( QMouseEvent * event ); + void paintEvent( QPaintEvent * event ); + void resizeEvent( QResizeEvent * event ); + void showEvent( QShowEvent * event ); + void wheelEvent( QWheelEvent * event ); +}; + +#endif // EVENTWIDGET_H diff --git a/Chapter06/eventlister/main.cpp b/Chapter06/eventlister/main.cpp new file mode 100644 index 0000000..c00d7d7 --- /dev/null +++ b/Chapter06/eventlister/main.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "eventwidget.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTextEdit log; + EventWidget widget; + + QObject::connect( &widget, SIGNAL(gotEvent(QString)), &log, SLOT(append(QString)) ); + + log.show(); + widget.show(); + + return app.exec(); +} diff --git a/Chapter07/README.txt b/Chapter07/README.txt new file mode 100644 index 0000000..8547397 --- /dev/null +++ b/Chapter07/README.txt @@ -0,0 +1,124 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 7 - Drawing and Printing + +Chapter06/circlebar + + Listing 7-1 + + Shows how a painter is created for painting to a widget. Notice that this + example is found among the chapter 6 examples. + +penbrush + + Listing 7-2 + + Shows how to setup a painter for drawing to a pixmap. + + +drawlines + + Listing 7-3 + + Shows different methods for drawing lines. + + +penpatterns + + Listing 7-4 + + Shows how to draw lines using different patterns. + + +rects + + Listing 7-5 + + Shows how to draw rectangles. + + +circles + + Listing 7-6 + + Shows how to draw ellipses, circles and arcs. + + +text + + Not shown in any Listings, but Figure 7-13. + + Shows different ways of drawing text. + + +paths + + Not shown in any Listings, but Figure 7-14. + + Shows how to draw paths. + + +brushgradients + + Listing 7-7 + + Shows how to setup brush gradients. + + +widgets/custombutton + + Listings 7-8, 7-9, 7-10, 7-11, 7-12 + + Shows how to customize the appearance of a button and how to use it. + +widgets/events + + Listings 7-13, 7-14, 7-15, 7-16, 7-17, 7-18 + + Shows how to implement a completely custom widget with custom painting and + custom event handling. + + +graphicsview/standarditems + + Listing 7-19 + + Shows how to use the standard items available for the QGraphicsScene. + + +graphicsview/transformations + + Listings 7-20, 7-21 + + Shows how to compose a QGraphicsItem from several items and how to apply + transformations. + + +graphicsview/interaction + + Listings 7-22, 7-23, 7-24, 7-25, 7-26, 7-27, 7-28, 7-29, 7-30, 7-31 + + Shows to to provide interactive QGraphicItems and how to use handles to + modify existing items. + + +printing/painter + + Listings 7-32 + + Shows how to print using the QPainter and QPrinter classes. + + +printing/graphicsview + + Listings 7-33 + + Shows how to print a graphics scene. + + +graphicsview/opengl + + Listings 7-34 + + Shows how to render a graphics scene using OpenGL. diff --git a/Chapter07/brushgradients/Thumbs.db b/Chapter07/brushgradients/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..0354ddf6d47b4daf81b29c3bda4772fac170446f GIT binary patch literal 22528 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 Mrsdb&{?i)xe~on{ga7~l literal 0 HcmV?d00001 diff --git a/Chapter07/brushgradients/brushgradients.pro b/Chapter07/brushgradients/brushgradients.pro new file mode 100644 index 0000000..aff85cf --- /dev/null +++ b/Chapter07/brushgradients/brushgradients.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Mon Jun 4 19:11:36 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/brushgradients/main.cpp b/Chapter07/brushgradients/main.cpp new file mode 100644 index 0000000..f863ae1 --- /dev/null +++ b/Chapter07/brushgradients/main.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +void createBrushShot( QBrush brush, QString name ) +{ + QPixmap pixmap( 200, 200 ); + pixmap.fill( Qt::white ); + + QPainter painter( &pixmap ); + + painter.setBrush( brush ); + painter.drawRect( pixmap.rect() ); + + pixmap.save( QString("%1.png").arg( name ) ); +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QLinearGradient linGrad( QPointF(80, 80), QPoint( 120, 120 ) ); + linGrad.setColorAt( 0, Qt::black ); + linGrad.setColorAt( 1, Qt::white ); + + linGrad.setSpread( QGradient::PadSpread ); + createBrushShot( QBrush( linGrad ), "LinearPad" ); + linGrad.setSpread( QGradient::RepeatSpread ); + createBrushShot( QBrush( linGrad ), "LinearRepeat" ); + linGrad.setSpread( QGradient::ReflectSpread ); + createBrushShot( QBrush( linGrad ), "LinearReflect" ); + + QRadialGradient radGrad( QPointF(100, 100), 30 ); + radGrad.setColorAt( 0, Qt::black ); + radGrad.setColorAt( 1, Qt::white ); + + radGrad.setSpread( QGradient::PadSpread ); + createBrushShot( QBrush( radGrad ), "RadialPad" ); + radGrad.setSpread( QGradient::RepeatSpread ); + createBrushShot( QBrush( radGrad ), "RadialRepeat" ); + radGrad.setSpread( QGradient::ReflectSpread ); + createBrushShot( QBrush( radGrad ), "RadialReflect" ); + + QConicalGradient conGrad( QPointF(100, 100), -45.0 ); + conGrad.setColorAt( 0, Qt::black ); + conGrad.setColorAt( 1, Qt::white ); + + conGrad.setSpread( QGradient::PadSpread ); + createBrushShot( QBrush( conGrad ), "ConicalPad" ); + conGrad.setSpread( QGradient::RepeatSpread ); + createBrushShot( QBrush( conGrad ), "ConicalRepeat" ); + conGrad.setSpread( QGradient::ReflectSpread ); + createBrushShot( QBrush( conGrad ), "ConicalReflect" ); + + QBrush textureBrush( QImage("texture.png") ); + createBrushShot( textureBrush, "TextureBrush" ); + + return 0; +} diff --git a/Chapter07/brushgradients/texture.png b/Chapter07/brushgradients/texture.png new file mode 100644 index 0000000000000000000000000000000000000000..5e7c79e36c1629de70c7cd24052465dacfd81f81 GIT binary patch literal 10673 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 XUQ05rC*9U700000NkvXXu0mjf +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + QPixmap pixmap( 200, 190 ); + pixmap.fill( Qt::white ); + + QPainter painter( &pixmap ); + painter.setRenderHint( QPainter::Antialiasing ); + painter.setPen( Qt::black ); + + painter.drawEllipse( 10, 10, 10, 80 ); + painter.drawEllipse( 30, 10, 20, 80 ); + painter.drawEllipse( 60, 10, 40, 80 ); + painter.drawEllipse( QRect( 110, 10, 80, 80 ) ); + + painter.drawArc( 10, 100, 10, 80, 30*16, 240*16 ); + painter.drawArc( 30, 100, 20, 80, 45*16, 200*16 ); + painter.drawArc( 60, 100, 40, 80, 60*16, 160*16 ); + painter.drawArc( QRect( 110, 100, 80, 80 ), 75*16, 120*16 ); + + pixmap.save( "circles.png" ); + + return 0; +} diff --git a/Chapter07/drawlines/drawlines.pro b/Chapter07/drawlines/drawlines.pro new file mode 100644 index 0000000..a3d73c4 --- /dev/null +++ b/Chapter07/drawlines/drawlines.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 8. apr 13:47:20 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/drawlines/main.cpp b/Chapter07/drawlines/main.cpp new file mode 100644 index 0000000..ab3ed22 --- /dev/null +++ b/Chapter07/drawlines/main.cpp @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + QPixmap pixmap( 200, 100 ); + pixmap.fill( Qt::white ); + + QPainter painter( &pixmap ); + painter.setPen( Qt::black ); + + QVector polyPoints; + polyPoints << QPoint( 60, 10 ) << QPoint( 80, 90 ) << QPoint( 75, 10 ) << QPoint( 110, 90 ); + + QVector linePoints; + foreach( QPoint point, polyPoints ) + linePoints << point + QPoint( 80, 0 ); + + painter.drawLine( QPoint( 10, 10 ), QPoint( 30, 90 ) ); + painter.drawPolyline( polyPoints ); + painter.drawLines( linePoints ); + + pixmap.save( "drawlines.png" ); + + return 0; +} \ No newline at end of file diff --git a/Chapter07/graphicsview/interaction/handleitem.cpp b/Chapter07/graphicsview/interaction/handleitem.cpp new file mode 100644 index 0000000..c7bb775 --- /dev/null +++ b/Chapter07/graphicsview/interaction/handleitem.cpp @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "handleitem.h" + +#include +#include + +HandleItem::HandleItem( QGraphicsItem *item, QGraphicsScene *scene, QColor color, HandleItem::HandleRole role, QList handles ) : QGraphicsItem( 0, scene ) +{ + m_role = role; + m_color = color; + + m_item = item; + m_handles = handles; + + m_pressed = false; + setZValue( 100 ); + + setFlag( ItemIsMovable ); +} + +void HandleItem::paint( QPainter *paint, const QStyleOptionGraphicsItem *option, QWidget *widget ) +{ + paint->setPen( m_color ); + paint->setBrush( m_color ); + + QRectF rect = boundingRect(); + QVector points; + + switch( m_role ) + { + case CenterHandle: + paint->drawEllipse( rect ); + break; + case RightHandle: + points << rect.center()+QPointF(3,0) << rect.center()+QPointF(-3,-5) << rect.center()+QPointF(-3,5); + paint->drawConvexPolygon( QPolygonF(points) ); + break; + case TopHandle: + points << rect.center()+QPointF(0,-3) << rect.center()+QPointF(-5,3) << rect.center()+QPointF(5,3); + paint->drawConvexPolygon( QPolygonF(points) ); + break; + } +} + +QRectF HandleItem::boundingRect() const +{ + QPointF point = m_item->boundingRect().center(); + + switch( m_role ) + { + case CenterHandle: + return QRectF( point-QPointF(5, 5), QSize( 10, 10 ) ); + case RightHandle: + point.setX( m_item->boundingRect().right() ); + return QRectF( point-QPointF(3, 5), QSize( 6, 10 ) ); + case TopHandle: + point.setY( m_item->boundingRect().top() ); + return QRectF( point-QPointF(5, 3), QSize( 10, 6 ) ); + } + + return QRectF(); +} + +QVariant HandleItem::itemChange( GraphicsItemChange change, const QVariant &data ) +{ + if( change == ItemPositionChange && m_pressed ) + { + QPointF movement = data.toPoint() - pos(); + QPointF center = m_item->boundingRect().center(); + + switch( m_role ) + { + case CenterHandle: + m_item->moveBy( movement.x(), movement.y() ); + + foreach( HandleItem *handle, m_handles ) + handle->translate( movement.x(), movement.y() ); + + break; + case RightHandle: + if( 2*movement.x() + m_item->sceneBoundingRect().width() <= 5 ) + return QGraphicsItem::itemChange( change, pos() ); + + movement.setY( 0 ); + + m_item->translate( center.x(), center.y() ); + m_item->scale( 1.0+2.0*movement.x()/(m_item->sceneBoundingRect().width()), 1 ); + m_item->translate( -center.x(), -center.y() ); + + break; + case TopHandle: + if( -2*movement.y() + m_item->sceneBoundingRect().height() <= 5 ) + return QGraphicsItem::itemChange( change, pos() ); + + movement.setX( 0 ); + + m_item->translate( center.x(), center.y() ); + m_item->scale( 1, 1.0-2.0*movement.y()/(m_item->sceneBoundingRect().height()) ); + m_item->translate( -center.x(), -center.y() ); + break; + } + + return QGraphicsItem::itemChange( change, pos()+movement ); + } + + return QGraphicsItem::itemChange( change, data ); +} + +void HandleItem::mousePressEvent( QGraphicsSceneMouseEvent *event ) +{ + m_pressed = true; + QGraphicsItem::mousePressEvent( event ); +} + +void HandleItem::mouseReleaseEvent( QGraphicsSceneMouseEvent *event ) +{ + m_pressed = false; + QGraphicsItem::mouseReleaseEvent( event ); +} diff --git a/Chapter07/graphicsview/interaction/handleitem.h b/Chapter07/graphicsview/interaction/handleitem.h new file mode 100644 index 0000000..0c5bc33 --- /dev/null +++ b/Chapter07/graphicsview/interaction/handleitem.h @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HANDLEITEM_H +#define HANDLEITEM_H + +#include + +class HandleItem; + +class HandleItem : public QGraphicsItem +{ +public: + enum HandleRole + { + CenterHandle, + RightHandle, + TopHandle + }; + + HandleItem( QGraphicsItem *item, QGraphicsScene *scene, QColor color, HandleRole role = CenterHandle, QList handles = QList() ); + + void paint( QPainter *paint, const QStyleOptionGraphicsItem *option, QWidget *widget ); + QRectF boundingRect() const; + +protected: + void mousePressEvent( QGraphicsSceneMouseEvent *event ); + void mouseReleaseEvent( QGraphicsSceneMouseEvent *event ); + + QVariant itemChange( GraphicsItemChange change, const QVariant &data ); + +private: + QGraphicsItem *m_item; + + HandleRole m_role; + QColor m_color; + + QList m_handles; + + bool m_pressed; +}; + +#endif // HANDLEITEM_H diff --git a/Chapter07/graphicsview/interaction/interaction.pro b/Chapter07/graphicsview/interaction/interaction.pro new file mode 100644 index 0000000..9f0ecd0 --- /dev/null +++ b/Chapter07/graphicsview/interaction/interaction.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Sat Jun 2 15:02:51 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += handleitem.h +SOURCES += handleitem.cpp main.cpp +CONFIG += console diff --git a/Chapter07/graphicsview/interaction/main.cpp b/Chapter07/graphicsview/interaction/main.cpp new file mode 100644 index 0000000..da03b16 --- /dev/null +++ b/Chapter07/graphicsview/interaction/main.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include +#include + +#include "handleitem.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QGraphicsScene scene( 0, 0, 200, 200 ); + + QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( 10, 10, 50, 100 ), 0, &scene ); + QGraphicsEllipseItem *elItem = new QGraphicsEllipseItem( QRect( 80, 40, 100, 80 ), 0, &scene ); + + HandleItem *trh = new HandleItem( rectItem, &scene, Qt::red, HandleItem::TopHandle ); + HandleItem *rrh = new HandleItem( rectItem, &scene, Qt::red, HandleItem::RightHandle ); + HandleItem *crh = new HandleItem( rectItem, &scene, Qt::red, HandleItem::CenterHandle, QList() << trh << rrh ); + + HandleItem *teh = new HandleItem( elItem, &scene, Qt::green, HandleItem::TopHandle ); + HandleItem *reh = new HandleItem( elItem, &scene, Qt::green, HandleItem::RightHandle ); + HandleItem *ceh = new HandleItem( elItem, &scene, Qt::green, HandleItem::CenterHandle, QList() << teh << reh ); + + QGraphicsView view; + view.setScene( &scene ); + view.show(); + + int res = app.exec(); + + delete crh; + delete trh; + delete rrh; + + delete ceh; + delete teh; + delete reh; + + return res; +} diff --git a/Chapter07/graphicsview/opengl/main.cpp b/Chapter07/graphicsview/opengl/main.cpp new file mode 100644 index 0000000..9a303d7 --- /dev/null +++ b/Chapter07/graphicsview/opengl/main.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include +#include + +QGraphicsItem *createItem( int x, QGraphicsScene *scene ) +{ + QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( x+40, 40, 120, 120 ), 0, scene ); + rectItem->setPen( QPen(Qt::black) ); + rectItem->setBrush( Qt::gray ); + + QGraphicsRectItem *innerRectItem = new QGraphicsRectItem( QRect( x+50, 50, 45, 100 ), rectItem, scene ); + innerRectItem->setPen( QPen(Qt::black) ); + innerRectItem->setBrush( Qt::white ); + + QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem( QRect( x+105, 50, 45, 100 ), rectItem, scene ); + ellipseItem->setPen( QPen(Qt::black) ); + ellipseItem->setBrush( Qt::white ); + + return rectItem; +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QGraphicsScene scene( QRect( 0, 00, 1000, 200 ) ); + + QGraphicsItem *item1 = createItem( 0, &scene ); + + QGraphicsItem *item2 = createItem( 200, &scene ); + item2->translate( 300, 100 ); + item2->rotate( 30 ); + item2->translate( -300, -100 ); + + QGraphicsItem *item3 = createItem( 400, &scene ); + item3->translate( 500, 100 ); + item3->scale( 0.5, 0.7 ); + item3->translate( -500, -100 ); + + QGraphicsItem *item4 = createItem( 600, &scene ); + item4->translate( 700, 100 ); + item4->shear( 0.1, 0.3 ); + item4->translate( -700, -100 ); + + QGraphicsItem *item5 = createItem( 800, &scene ); + item5->translate( 900, 100 ); + item5->scale( 0.5, 0.7 ); + item5->rotate( 30 ); + item5->shear( 0.1, 0.3 ); + item5->translate( -900, -100 ); + + QGraphicsView view; + view.setScene( &scene ); + view.setViewport( new QGLWidget() ); + view.show(); + + return app.exec(); +} diff --git a/Chapter07/graphicsview/opengl/opengl.pro b/Chapter07/graphicsview/opengl/opengl.pro new file mode 100644 index 0000000..4f57952 --- /dev/null +++ b/Chapter07/graphicsview/opengl/opengl.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Sun Apr 22 19:28:09 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +QT += opengl diff --git a/Chapter07/graphicsview/standarditems/main.cpp b/Chapter07/graphicsview/standarditems/main.cpp new file mode 100644 index 0000000..6beb81e --- /dev/null +++ b/Chapter07/graphicsview/standarditems/main.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QGraphicsScene scene( QRect( -50, -50, 400, 200 ) ); + + QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( -25, 25, 200, 40 ), 0, &scene ); + rectItem->setPen( QPen( Qt::red, 3, Qt::DashDotLine ) ); + rectItem->setBrush( Qt::gray ); + + QGraphicsSimpleTextItem *textItem = new QGraphicsSimpleTextItem( "Foundations of Qt", 0, &scene ); + textItem->setPos( 50, 0 ); + + QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem( QRect( 170, 20, 100, 75 ), 0, &scene ); + ellipseItem->setPen( QPen(Qt::darkBlue) ); + ellipseItem->setBrush( Qt::blue ); + + QGraphicsPolygonItem *polygonItem = new QGraphicsPolygonItem( QPolygonF( QVector() << QPointF( 10, 10 ) << QPointF( 0, 90 ) << QPointF( 40, 70 ) << QPointF( 80, 110 ) << QPointF( 70, 20 ) ), 0, &scene ); + polygonItem->setPen( QPen(Qt::darkGreen) ); + polygonItem->setBrush( Qt::yellow ); + + QGraphicsView view; + view.setScene( &scene ); + view.show(); + + return app.exec(); +} diff --git a/Chapter07/graphicsview/standarditems/standarditems.pro b/Chapter07/graphicsview/standarditems/standarditems.pro new file mode 100644 index 0000000..797c7f6 --- /dev/null +++ b/Chapter07/graphicsview/standarditems/standarditems.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 12. apr 20:00:42 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/graphicsview/transformations/main.cpp b/Chapter07/graphicsview/transformations/main.cpp new file mode 100644 index 0000000..1ed5220 --- /dev/null +++ b/Chapter07/graphicsview/transformations/main.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +QGraphicsItem *createItem( int x, QGraphicsScene *scene ) +{ + QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( x+40, 40, 120, 120 ), 0, scene ); + rectItem->setPen( QPen(Qt::black) ); + rectItem->setBrush( Qt::gray ); + + QGraphicsRectItem *innerRectItem = new QGraphicsRectItem( QRect( x+50, 50, 45, 100 ), rectItem, scene ); + innerRectItem->setPen( QPen(Qt::black) ); + innerRectItem->setBrush( Qt::white ); + + QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem( QRect( x+105, 50, 45, 100 ), rectItem, scene ); + ellipseItem->setPen( QPen(Qt::black) ); + ellipseItem->setBrush( Qt::white ); + + return rectItem; +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QGraphicsScene scene( QRect( 0, 00, 1000, 200 ) ); + + QGraphicsItem *item1 = createItem( 0, &scene ); + + QGraphicsItem *item2 = createItem( 200, &scene ); + item2->translate( 300, 100 ); + item2->rotate( 30 ); + item2->translate( -300, -100 ); + + QGraphicsItem *item3 = createItem( 400, &scene ); + item3->translate( 500, 100 ); + item3->scale( 0.5, 0.7 ); + item3->translate( -500, -100 ); + + QGraphicsItem *item4 = createItem( 600, &scene ); + item4->translate( 700, 100 ); + item4->shear( 0.1, 0.3 ); + item4->translate( -700, -100 ); + + QGraphicsItem *item5 = createItem( 800, &scene ); + item5->translate( 900, 100 ); + item5->scale( 0.5, 0.7 ); + item5->rotate( 30 ); + item5->shear( 0.1, 0.3 ); + item5->translate( -900, -100 ); + + QGraphicsView view; + view.setScene( &scene ); + view.show(); + + return app.exec(); +} diff --git a/Chapter07/graphicsview/transformations/transformations.pro b/Chapter07/graphicsview/transformations/transformations.pro new file mode 100644 index 0000000..29ffc15 --- /dev/null +++ b/Chapter07/graphicsview/transformations/transformations.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 15. apr 16:10:32 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/paths/main.cpp b/Chapter07/paths/main.cpp new file mode 100644 index 0000000..1a23ebc --- /dev/null +++ b/Chapter07/paths/main.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QPixmap pixmap( 200, 200 ); + pixmap.fill( Qt::white ); + + QPainterPath path; + + path.addEllipse( 80, 80, 80, 80 ); + + path.moveTo( 120, 120 ); + path.lineTo( 120, 40 ); + path.arcTo( 40, 40, 160, 160, 90, 90 ); + path.lineTo( 120, 120 ); + + QFont font = QApplication::font(); + font.setPixelSize( 40 ); + + path.addText( 20, 180, font, "Path" ); + + QPainter painter( &pixmap ); + painter.setRenderHint( QPainter::Antialiasing ); + + painter.setPen( Qt::black ); + painter.setBrush( Qt::gray ); + + painter.drawPath( path ); + + pixmap.save( "path.png" ); + + return 0; +} diff --git a/Chapter07/paths/paths.pro b/Chapter07/paths/paths.pro new file mode 100644 index 0000000..f00b963 --- /dev/null +++ b/Chapter07/paths/paths.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Mon Jun 4 17:45:40 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/penbrush/main.cpp b/Chapter07/penbrush/main.cpp new file mode 100644 index 0000000..aa66bf5 --- /dev/null +++ b/Chapter07/penbrush/main.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + QPixmap pixmap( 200, 100 ); + QPainter painter( &pixmap ); + + painter.setPen( Qt::red ); + painter.setBrush( Qt::yellow ); + + return 0; +} \ No newline at end of file diff --git a/Chapter07/penbrush/penbrush.pro b/Chapter07/penbrush/penbrush.pro new file mode 100644 index 0000000..911958e --- /dev/null +++ b/Chapter07/penbrush/penbrush.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 8. apr 13:12:42 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/penpatterns/main.cpp b/Chapter07/penpatterns/main.cpp new file mode 100644 index 0000000..0327e81 --- /dev/null +++ b/Chapter07/penpatterns/main.cpp @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + QPixmap pixmap( 200, 100 ); + pixmap.fill( Qt::white ); + + QPainter painter( &pixmap ); + + QPen pen( Qt::black ); + + pen.setStyle( Qt::SolidLine ); + painter.setPen( pen ); + painter.drawLine( QPoint( 10, 10 ), QPoint( 190, 10 ) ); + + pen.setStyle( Qt::DashDotLine ); + painter.setPen( pen ); + painter.drawLine( QPoint( 10, 50 ), QPoint( 190, 50 ) ); + + pen.setDashPattern( QVector() << 1 << 1 << 1 << 1 << 2 << 2 << 2 << 2 << 4 << 4 << 4 << 4 << 8 << 8 << 8 << 8 ); + pen.setStyle( Qt::CustomDashLine ); + painter.setPen( pen ); + painter.drawLine( QPoint( 10, 90 ), QPoint( 190, 90 ) ); + + pixmap.save( "penpatterns.png" ); + + return 0; +} \ No newline at end of file diff --git a/Chapter07/penpatterns/penpatterns.pro b/Chapter07/penpatterns/penpatterns.pro new file mode 100644 index 0000000..e020c10 --- /dev/null +++ b/Chapter07/penpatterns/penpatterns.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 8. apr 18:27:48 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/printing/graphicsview/graphicsview.pro b/Chapter07/printing/graphicsview/graphicsview.pro new file mode 100644 index 0000000..4ddcb61 --- /dev/null +++ b/Chapter07/printing/graphicsview/graphicsview.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Jun 5 09:41:01 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/printing/graphicsview/main.cpp b/Chapter07/printing/graphicsview/main.cpp new file mode 100644 index 0000000..afa6180 --- /dev/null +++ b/Chapter07/printing/graphicsview/main.cpp @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QGraphicsScene scene( QRect( -50, -50, 400, 200 ) ); + + QGraphicsRectItem *rectItem = new QGraphicsRectItem( QRect( -25, 25, 200, 40 ), 0, &scene ); + rectItem->setPen( QPen( Qt::red, 3, Qt::DashDotLine ) ); + rectItem->setBrush( Qt::gray ); + + QGraphicsSimpleTextItem *textItem = new QGraphicsSimpleTextItem( "Foundations of Qt", 0, &scene ); + textItem->setPos( 50, 0 ); + + QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem( QRect( 170, 20, 100, 75 ), 0, &scene ); + ellipseItem->setPen( QPen(Qt::darkBlue) ); + ellipseItem->setBrush( Qt::blue ); + + QGraphicsPolygonItem *polygonItem = new QGraphicsPolygonItem( QPolygonF( QVector() << QPointF( 10, 10 ) << QPointF( 0, 90 ) << QPointF( 40, 70 ) << QPointF( 80, 110 ) << QPointF( 70, 20 ) ), 0, &scene ); + polygonItem->setPen( QPen(Qt::darkGreen) ); + polygonItem->setBrush( Qt::yellow ); + + QPrinter printer; + QPrintDialog dlg( &printer ); + if( dlg.exec() == QDialog::Accepted ) + { + QPainter painter( &printer ); + + scene.render( &painter, printer.pageRect(), scene.sceneRect(), Qt::KeepAspectRatio ); + } + + return 0; +} diff --git a/Chapter07/printing/painter/main.cpp b/Chapter07/printing/painter/main.cpp new file mode 100644 index 0000000..4b9993d --- /dev/null +++ b/Chapter07/printing/painter/main.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QPrinter printer; + QPrintDialog dlg( &printer ); + if( dlg.exec() == QDialog::Accepted ) + { + QPainter painter( &printer ); + + painter.setPen( Qt::black ); + + for( int page=0; page<5; page++ ) + { + painter.drawRect( printer.pageRect() ); + painter.drawLine( printer.pageRect().topLeft(), printer.pageRect().bottomRight() ); + painter.drawLine( printer.pageRect().topRight(), printer.pageRect().bottomLeft() ); + + QRectF textArea( + printer.pageRect().left() +printer.resolution() * 0.5, + printer.pageRect().top() +printer.resolution() * 0.5, + printer.pageRect().width() -printer.resolution() * 1.0, + printer.pageRect().height()-printer.resolution() * 1.5 ); + + painter.drawRect( textArea ); + + painter.drawText( textArea, Qt::AlignTop | Qt::AlignLeft, QString( "Page %1" ).arg( page+1 ) ); + + if( page != 4 ) + printer.newPage(); + } + } + + return 0; +} diff --git a/Chapter07/printing/painter/painter.pro b/Chapter07/printing/painter/painter.pro new file mode 100644 index 0000000..f64b5f6 --- /dev/null +++ b/Chapter07/printing/painter/painter.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Tue Jun 5 09:31:35 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/rects/main.cpp b/Chapter07/rects/main.cpp new file mode 100644 index 0000000..f188ba5 --- /dev/null +++ b/Chapter07/rects/main.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + QPixmap pixmap( 200, 100 ); + pixmap.fill( Qt::white ); + + QPainter painter( &pixmap ); + painter.setPen( Qt::black ); + + painter.drawRect( 10, 10, 85, 35 ); + painter.drawRoundRect( 10, 55, 85, 35 ); + + QRect rect( 105, 10, 85, 35 ); + + painter.drawRoundRect( rect ); + painter.drawRect( rect.translated( 0, 45 ) ); + + pixmap.save( "rects.png" ); + + return 0; +} diff --git a/Chapter07/rects/rects.pro b/Chapter07/rects/rects.pro new file mode 100644 index 0000000..9840a7a --- /dev/null +++ b/Chapter07/rects/rects.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 9. apr 19:02:26 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/text/main.cpp b/Chapter07/text/main.cpp new file mode 100644 index 0000000..5efcb2c --- /dev/null +++ b/Chapter07/text/main.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QPixmap pixmap( 200, 330 ); + pixmap.fill( Qt::white ); + + QPainter painter( &pixmap ); + painter.setPen( Qt::black ); + + QPoint point = QPoint( 10, 20 ); + painter.drawText( point, "You can draw text from a point..." ); + painter.drawLine( point+QPoint(-5, 0), point+QPoint(5, 0) ); + painter.drawLine( point+QPoint(0, -5), point+QPoint(0, 5) ); + + QRect rect = QRect(10, 30, 180, 20); + painter.drawText( rect, Qt::AlignCenter, + "...or you can draw it inside a rectangle." ); + painter.drawRect( rect ); + + rect.translate( 0, 30 ); + + QFont font = QApplication::font(); + font.setPixelSize( rect.height() ); + painter.setFont( font ); + + painter.drawText( rect, Qt::AlignRight, "Right." ); + painter.drawText( rect, Qt::AlignLeft, "Left." ); + painter.drawRect( rect ); + + rect.translate( 0, rect.height()+10 ); + rect.setHeight( QFontMetrics( font ).height() ); + + painter.drawText( rect, Qt::AlignRight, "Right." ); + painter.drawText( rect, Qt::AlignLeft, "Left." ); + painter.drawRect( rect ); + + QTextDocument doc; + doc.setHtml( "

A QTextDocument can be used to present formatted text " + "in a nice way.

" + "

It can be formatted " + "in different ways.

" + "

The text can be really long and contain many " + "paragraphs. It is properly wrapped and such...

" ); + + rect.translate( 0, rect.height()+10 ); + rect.setHeight( 160 ); + doc.setTextWidth( rect.width() ); + painter.save(); + painter.translate( rect.topLeft() ); + doc.drawContents( &painter, rect.translated( -rect.topLeft() ) ); + painter.restore(); + painter.drawRect( rect ); + + rect.translate( 0, 160 ); + rect.setHeight( doc.size().height()-160 ); + painter.setBrush( Qt::gray ); + painter.drawRect( rect ); + + pixmap.save( "text.png" ); + + return 0; +} diff --git a/Chapter07/text/text.pro b/Chapter07/text/text.pro new file mode 100644 index 0000000..c3dad7c --- /dev/null +++ b/Chapter07/text/text.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) Thu Apr 26 20:03:14 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter07/widgets/custombutton/custombutton.pro b/Chapter07/widgets/custombutton/custombutton.pro new file mode 100644 index 0000000..eec385a --- /dev/null +++ b/Chapter07/widgets/custombutton/custombutton.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 17. apr 20:40:12 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += dialog.h mybutton.h +FORMS += dialog.ui +SOURCES += dialog.cpp main.cpp mybutton.cpp diff --git a/Chapter07/widgets/custombutton/dialog.cpp b/Chapter07/widgets/custombutton/dialog.cpp new file mode 100644 index 0000000..1a60016 --- /dev/null +++ b/Chapter07/widgets/custombutton/dialog.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "dialog.h" + +#include + +Dialog::Dialog() : QDialog() +{ + ui.setupUi( this ); + + connect( ui.clickButton, SIGNAL(clicked()), this, SLOT(buttonClicked()) ); +} + +void Dialog::buttonClicked() +{ + QMessageBox::information( this, tr("Wohoo!"), tr("You clicked the button!") ); +} diff --git a/Chapter07/widgets/custombutton/dialog.h b/Chapter07/widgets/custombutton/dialog.h new file mode 100644 index 0000000..3678975 --- /dev/null +++ b/Chapter07/widgets/custombutton/dialog.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DIALOG_H +#define DIALOG_H + +#include + +#include "ui_dialog.h" + +class Dialog : public QDialog +{ + Q_OBJECT + +public: + Dialog(); + +private slots: + void buttonClicked(); + +private: + Ui::Dialog ui; +}; + +#endif diff --git a/Chapter07/widgets/custombutton/dialog.ui b/Chapter07/widgets/custombutton/dialog.ui new file mode 100644 index 0000000..5b3493d --- /dev/null +++ b/Chapter07/widgets/custombutton/dialog.ui @@ -0,0 +1,184 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + Dialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + 9 + + + 6 + + + + + Click This! + + + + + + + Qt::Vertical + + + + 88 + 51 + + + + + + + + Qt::Vertical + + + + 88 + 41 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + This is Disabled + + + + + + + Toggle This! + + + true + + + + + + + + MyButton + QPushButton +
mybutton.h
+
+
+ + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/Chapter07/widgets/custombutton/main.cpp b/Chapter07/widgets/custombutton/main.cpp new file mode 100644 index 0000000..fe76ca5 --- /dev/null +++ b/Chapter07/widgets/custombutton/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "dialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Dialog dialog; + dialog.show(); + + return app.exec(); +} diff --git a/Chapter07/widgets/custombutton/mybutton.cpp b/Chapter07/widgets/custombutton/mybutton.cpp new file mode 100644 index 0000000..08a82ab --- /dev/null +++ b/Chapter07/widgets/custombutton/mybutton.cpp @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "mybutton.h" + +#include +#include +#include + +MyButton::MyButton( QWidget *parent ) : QAbstractButton( parent ) +{ +} + +QSize MyButton::sizeHint() const +{ + return QSize( fontMetrics().width( text() )+10, fontMetrics().height()+10 ); +} + +void MyButton::paintEvent( QPaintEvent* ) +{ + QPainter painter( this ); + + QStyleOptionButton option; + option.init( this ); + if( isDown() ) + option.state |= QStyle::State_Sunken; + else if( isChecked() ) + option.state |= QStyle::State_On; + + style()->drawControl( QStyle::CE_PushButtonBevel, &option, &painter, this ); + + painter.setFont( font() ); + + if( !isEnabled() ) + painter.setPen( Qt::darkGray ); + else if( isDown() ) + painter.setPen( Qt::red ); + else + painter.setPen( Qt::darkRed ); + + painter.drawText( rect(), Qt::AlignCenter, text() ); +} diff --git a/Chapter07/widgets/custombutton/mybutton.h b/Chapter07/widgets/custombutton/mybutton.h new file mode 100644 index 0000000..8910465 --- /dev/null +++ b/Chapter07/widgets/custombutton/mybutton.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MYBUTTON_H +#define MYBUTTON_H + +#include + +class MyButton : public QAbstractButton +{ + Q_OBJECT + +public: + MyButton( QWidget *parent=0 ); + + QSize sizeHint() const; + +protected: + void paintEvent( QPaintEvent* ); +}; + +#endif diff --git a/Chapter07/widgets/events/circlewidget.cpp b/Chapter07/widgets/events/circlewidget.cpp new file mode 100644 index 0000000..b5b089f --- /dev/null +++ b/Chapter07/widgets/events/circlewidget.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "circlewidget.h" + +#include +#include +#include + +CircleWidget::CircleWidget( QWidget *parent ) : QWidget( parent ) +{ + r = 0; + + timer = new QTimer( this ); + timer->setInterval( 50 ); + + connect( timer, SIGNAL(timeout()), this, SLOT(timeout()) ); +} + +QSize CircleWidget::sizeHint() const +{ + return QSize( 200, 200 ); +} + +void CircleWidget::timeout() +{ + if( r == 0 ) + { + x = mx; + y = my; + + color = QColor( qrand()%256, qrand()%256, qrand()%256 ); + } + + int dx = mx-x; + int dy = my-y; + + if( dx*dx+dy*dy <= r*r ) + r++; + else + r--; + + update(); +} + +void CircleWidget::paintEvent( QPaintEvent* ) +{ + if( r > 0 ) + { + QPainter painter( this ); + + painter.setRenderHint( QPainter::Antialiasing ); + + painter.setPen( color ); + painter.setBrush( color ); + painter.drawEllipse( x-r, y-r, 2*r, 2*r ); + } +} + +void CircleWidget::mousePressEvent( QMouseEvent *e ) +{ + mx = e->x(); + my = e->y(); + + timer->start(); +} + +void CircleWidget::mouseMoveEvent( QMouseEvent *e ) +{ + mx = e->x(); + my = e->y(); +} + +void CircleWidget::mouseReleaseEvent( QMouseEvent *e ) +{ + timer->stop(); +} diff --git a/Chapter07/widgets/events/circlewidget.h b/Chapter07/widgets/events/circlewidget.h new file mode 100644 index 0000000..caa42cb --- /dev/null +++ b/Chapter07/widgets/events/circlewidget.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CIRCLEWIDGET_H +#define CIRCLEWIDGET_H + +#include + +class QTimer; + +class CircleWidget : public QWidget +{ + Q_OBJECT + +public: + CircleWidget( QWidget *parent=0 ); + + QSize sizeHint() const; + +private slots: + void timeout(); + +protected: + void paintEvent( QPaintEvent* ); + + void mousePressEvent( QMouseEvent* ); + void mouseMoveEvent( QMouseEvent* ); + void mouseReleaseEvent( QMouseEvent* ); + +private: + int x, y, r; + QColor color; + + int mx, my; + + QTimer *timer; +}; + +#endif diff --git a/Chapter07/widgets/events/events.pro b/Chapter07/widgets/events/events.pro new file mode 100644 index 0000000..5ad199b --- /dev/null +++ b/Chapter07/widgets/events/events.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 17. apr 22:04:35 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += circlewidget.h +SOURCES += circlewidget.cpp main.cpp diff --git a/Chapter07/widgets/events/main.cpp b/Chapter07/widgets/events/main.cpp new file mode 100644 index 0000000..c4b1cb5 --- /dev/null +++ b/Chapter07/widgets/events/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "circlewidget.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + CircleWidget widget; + widget.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter08/README.txt b/Chapter08/README.txt new file mode 100644 index 0000000..6f1f056 --- /dev/null +++ b/Chapter08/README.txt @@ -0,0 +1,67 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 8 - Files, Streams, and XML + +rootlist + + Listing 8-1 + + Shows how to find the available drives. + + +fileexists + + Listing 8-2 + + Shows how to determine if a file exist and if it can be written to. + + +textstream + + Listings 8-3, 8-4, 8-5 + + Shows how to open a QTextStream and how to use it for reading and writing. + + +datastream + + Listings 8-6, 8-7, 8-8 + + Shows how to open a QDataStream and how to use it for reading and writing. + + +xmldomwrite + + Listings 8-10, 8-11, 8-12 + + Shows how to create an XML document using the DOM classes. + + +xmldomread + + Listings 8-13, 8-14 + + Shows how to read and XML document using the DOM classes. + + +xmldommodify + + Listings 8-15 + + Shows how to open, read, modify and write to an XML document using the DOM + classes. + + +xmlsaxread + + Listings 8-16, 8-17, 8-18, 8-19 + + Shows how to read an XML document using the SAX classes. + + +readwriteapplication + + Listings 8-20, 8-21, 8-22, 8-23, 8-24, 8-25, 8-26 + + The SDI application from chapter four gets proper file handling. \ No newline at end of file diff --git a/Chapter08/datastream/datastream.pro b/Chapter08/datastream/datastream.pro new file mode 100644 index 0000000..abac80d --- /dev/null +++ b/Chapter08/datastream/datastream.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 16. nov 19:41:56 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console +CONFIG += console diff --git a/Chapter08/datastream/main.cpp b/Chapter08/datastream/main.cpp new file mode 100644 index 0000000..7dcfb41 --- /dev/null +++ b/Chapter08/datastream/main.cpp @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +struct ColorText +{ + QString text; + QColor color; +}; + +QDataStream &operator<<( QDataStream &stream, const ColorText &data ) +{ + stream << data.text << data.color; + + return stream; +} + +QDataStream &operator>>( QDataStream &stream, ColorText &data ) +{ + stream >> data.text; + stream >> data.color; + + return stream; +} + +void saveList() +{ + QList list; + ColorText data; + + data.text = "Red"; + data.color = Qt::red; + list << data; + + data.text = "Blue"; + data.color = Qt::blue; + list << data; + + data.text = "Yellow"; + data.color = Qt::yellow; + list << data; + + data.text = "Green"; + data.color = Qt::green; + list << data; + + QFile file( "test.dat" ); + if( !file.open( QIODevice::WriteOnly ) ) + return; + + QDataStream stream( &file ); + stream.setVersion( QDataStream::Qt_4_2 ); + + stream << list; + + file.close(); +} + +void loadList() +{ + QList list; + + QFile file( "test.dat" ); + if( !file.open( QIODevice::ReadOnly ) ) + return; + + QDataStream stream( &file ); + stream.setVersion( QDataStream::Qt_4_2 ); + + stream >> list; + + file.close(); + + foreach( ColorText data, list ) + qDebug() << data.text << "(" + << data.color.red() << "," + << data.color.green() << "," + << data.color.blue() << ")"; +} + +int main( int argc, char **argv ) +{ + saveList(); + loadList(); + + return 0; +} diff --git a/Chapter08/datastream/test.dat b/Chapter08/datastream/test.dat new file mode 100644 index 0000000000000000000000000000000000000000..5ad6c9f1e9cbb1e3432978905c93ec15ee94b7fa GIT binary patch literal 100 zcmZQzU|?ZjU|?eiVn}63Vf+sSKrRGuFgP*fFqAT+0);^$P$?dUNTAvrAk1ed2kU_A S;bL%SC<02RGUS2vKqLTe{240% literal 0 HcmV?d00001 diff --git a/Chapter08/fileexist/fileexist.pro b/Chapter08/fileexist/fileexist.pro new file mode 100644 index 0000000..19f74f3 --- /dev/null +++ b/Chapter08/fileexist/fileexist.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 12. nov 11:38:54 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter08/fileexist/main.cpp b/Chapter08/fileexist/main.cpp new file mode 100644 index 0000000..7f6d209 --- /dev/null +++ b/Chapter08/fileexist/main.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +int main( int argc, char **argv ) +{ + QFile file( "testfile.txt" ); + + if( !file.exists() ) + { + qDebug() << "The file" << file.fileName() << "does not exist."; + return 0; + } + + if( !file.open( QIODevice::WriteOnly ) ) + { + qDebug() << "Could not open" << file.fileName() << "for writing."; + return 0; + } + + qDebug() << "The file opened."; + + file.close(); + + return 0; +} diff --git a/Chapter08/fileexist/testfile.txt b/Chapter08/fileexist/testfile.txt new file mode 100644 index 0000000..e69de29 diff --git a/Chapter08/readwriteapplication/images.qrc b/Chapter08/readwriteapplication/images.qrc new file mode 100644 index 0000000..44947aa --- /dev/null +++ b/Chapter08/readwriteapplication/images.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/cut.png + images/copy.png + images/paste.png + + \ No newline at end of file diff --git a/Chapter08/readwriteapplication/images/copy.png b/Chapter08/readwriteapplication/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..7052fab3d28cca3a649532532ad08daeaa136d85 GIT binary patch literal 1391 zcmV-#1(5oQP)>a3aF~{+us;_NzZR zaL0XLR*$x|xdn2jD0KUau3uh#^voZgcoYesglE2)9=`j5?>^n1Th47gsaHO9&#WXN z=Jwy(om>7;Sx<(=-+%M4x|z8B)Avgn5m^Xr9g1?v+`;3z^9MZj?T>uzJ5OJH7E(m` z`Pb7+kN&#)d{J}(0919hy?xWlp@X)ruleg!pL6VE_qyXV59-e^$W3c|XW+zb4;c>D z)HmPo&g$>H|IS;FJ@kXKPZkhalj|{pm=FybVq!YHVeQ&w(@ACJ@NxHj<9W-6KIM&9 zes46IipXx>+_AB-Vdcmt#KLXve(-ye_&yYXh-fgSosg$A1M);fHXiM{@xi(Xj(zw} zNALQI_x}5`jm;f((VnU3NNIl)MQKZJ} z|9Q=svu7+U%sX;u&Scuy+S;|UJa1{=ynFBYsL8Z(izE*heX9+7DFM3f>?H;w6J zs;+Ahq0{M56sCJy2IDrM08o?^UD^%uF8au{yJ*Q{nhhk8vuHwH*Cvw*$T_R3N?lbV zlYq7a5Dm>uQlC`PtkaHw@&I{6Goafe7KD%zP1~xfN<^5Moz+H&gamR4Af}{(JfxT< zk7+mQEHk-CXFr`qVoEASB-3fFEW4C56v^!TKFce|EbLp-DT;)m1Rzk+yi3lMhw1D? z3)EN1Lwa`#Nzp0vXXh>KKWuh(UZ?De$&PmOvMU#_T0J*-2~mQC*rPg+l02lCp&2l} zK$@pBM|pr~6sf1%n{njuE#^~Y@b+0d@BL3b+Om3f?cC;Wd+v#o*M5dU2>{HIx9J^a zxJv2~4b2r|ncfLfD2hf*2d=&PTb+ZA=U%${!dq8H|9JO<$(c**(~B5j7!jiqK#YkY z%?3);lq*=I>C&B}*kyJ_XIk6d8V{a%{2!>4Y*%ZiUmWjkUi11Df4h34IvEjf0RR9%2_VhTJ4C(1{H^p4(c5Qy z<9dDJ)Qg*I=S~lIKDf~QLjiK0001#kdkiM$@C5~TCg{mPOrZ9^3M5J z{F-^ov^;|Mlmc-S^Ko zk3XA#ab?pftYZtqh-d)-0000WMTB2HlD<$?9uaOib;+gE?>P1Lb*~O87qAr(82|tP x0000WMFfD9(lX{S!cIhF000000001h{{wKVz40#)lwSY<002ovPDHLkV1m;CnR);K literal 0 HcmV?d00001 diff --git a/Chapter08/readwriteapplication/images/cut.png b/Chapter08/readwriteapplication/images/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9a8069394e66f5cb474fd7653d9b9a788c57d6 GIT binary patch literal 1437 zcmV;O1!DS%P)^Qhgaiw*kwy1R!2diRfk;Ph6 z#Da=7ge{mTt3ZMkfdC2w9H}i!p`r7jxQzbsn>TacJKuNTx#ye{&u+MJ3 z9;?QtAk;QT_Nr>KIsyavvI!I5T{2<3sR3{6dYgPyT48e*+-s471}on|xh&)tS69Y) z77I+?)W9Qb=bYj`r5y(N4UxFI!ujg6(E6}a&?E3LNHsQo_461=+`w%*OVl9W*zvfW zk6&%~Et)tHqR+(5x~?rBhe82UY-9w^`qD)4X1WXz_Af91kt)rwLtAQ!?X@vlMX{*0 zp)B@(d*S46fjc9W%?8)!4Jgi(_+Uu@FFPc}uOK+sJ9o+ySgbEa?g0xxa$+x3bQM`^ z?+GB~C;ceb`* zO{v+E6%BP*KubA*y(JcXpKWl-8#xjdP{~@7@DfkYA!(Gp&e35T6%dxdW(dq#)|parzt~O%8Eu>5BqQ_Px^h_=T(gj)sLE6 zI+2ivMr|Y3RFytSj1pA)`>^^ej>_1N#K#hYUuvMM3TJ0ny?_6@O7*=?OiVn5u`$t@ za!!O&X?E`g@t)S;m8N;t)^MD|fi(<9e~vIlE>9zkuhqsI9L&9fTyE8+7>SwbIgoCmeP>mS_$A%7t z)%0BJ;m%I|?!dC^IkK}oSIf##QF5W(ccE1lnfU%EMLyo_%p2#pzxPQ8VPzsT9}EG7 zqa!5Q+e1upq*YZ{p%7K627mbbfW*WE)={uE!J#r7O{v-PN#KP1q!ZiQWwML-b4i*e zaJl0pT~W|GcE3URCS&=NbW4;(b5!HU!$}GZrw02rJ=VNdQ{aiMQtkuaxsXNcUz6|@ zo%l1oVn{Iy-V<`t!a`>#GsOw0kmvX8{L)+D?rxZBX$i)#djqTZf!F~ne{yQyx0NH` z7Q`+nPZ`;w&Y6ws0z2&&YoO4|3J#N)fG~Z22I&sg+#D<>O@h!R{+1V$j;`-K6~Fnn z`SZ9EGO!0`43l4X(VCoAe8tH#`vTo7B0*2e!!J={FU>D^yk_KJGuwk&Vf0h7n34_#+PwjivY3J-eSOa7Iv%(uy3e!9+84@%=700000NkvXXu0mjfYkscc literal 0 HcmV?d00001 diff --git a/Chapter08/readwriteapplication/images/new.png b/Chapter08/readwriteapplication/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e8915229134d5533175440640e549cbf576ace GIT binary patch literal 791 zcmV+y1L*vTP)o0mb0jy0I>$cZ3Il$7x?n4o!{giMgxAQad1c{+80x_@qG|Br z^AvbE5=narB<2&s;LiHnn+M|NAntn!XkMOKmT5XG69Q?PQ-mxbPm$V%kx5HyckCKs z180Y686)iDt2?|7a$vBvgcJk(2!((lFSvHybf1_+@!qXhC01^Aq#tht32h4@>O+`^GZZ7 z@rpx8k4(p|v7;v05n%8Y%95@G<%@0i5gHNn1>Fy{Dm^e%71^YgOe&L|IYKz58sH+< z*SD${V6t>f<$|p( zR*Mcpb(emBC%c;3!i}X}{Gn~d>CqfviSX;7y4=U-b!85ANppzMTCUGmddL42U;yX{ VmVA^pr8@us002ovPDHLkV1mj1Wkvu1 literal 0 HcmV?d00001 diff --git a/Chapter08/readwriteapplication/images/paste.png b/Chapter08/readwriteapplication/images/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6558a5a4b371862cec2c827b6ff1e707087274 GIT binary patch literal 1552 zcmV+r2JiWaP)=TQQLKxvXfDUpy`C?HNt*sj;{YhU)x&dfc0*mWA`p&V&6 z(&*m#-T(QYb99x6FdxruQ(t34Wuj2D zwbd|wWDtc5%z|Gi1C*jv%rZSW21bNfZ6mfFq-M$T1YB$ahTl(-0j8yBNCf%9eJvCV zB}$%;VJO03i(@@@B`-cu1j7XJP)g%^4n3#e#Pv+#_05b9UUY%jf)pu*U>k%228Lx5 z2^oN3nTk-*BoZ<)Z39qX*=5tTfn^Gj5QsmAQ}pn?1jRWtU@kNnz))D0!i?A`WpJpy zpTBh^nVl^%lFaZz_a>B~iPuGWVB@`PxaTe`qeN{@gtnG?94|<;W)YD99-yyQ0EPlX zp=^WU)HKg`%<+{SZ*y`e%F^j9rVbF$!tE{NymaupZ20V*SOFngZ4(UCp;eS%xQS2z zU9N^J0G5ehzF&Y<5gX6RGnLQskC8ZMll7D)A?U#N&qo;=8UXSj9s$e8HbL1Y1gZ#F z=y?V6^-RD5Y$+p6sJkV~ceX9&;FBL?ZTKWcxV+j?;CUIMRbkK?r1BEV{s2m@)5*JE zWX)8fn+NY-LQ`vw(a{X&`_imfy@7NffrQF!r2x|^&oHzGt+_lfuNa&Q07|KccJF)2 zY*_IDe*D}|$)=BxXkJF^`mK!KznRzi!3#jF5v*CjHqcr?1nq0I)|HcM420{=qOpn8 z1#bJ|!!-Y_lXTi8<=J#jz~~qRL-4te!m9WFg%@1L%C=ULg%W5%i$+9O1nBE45Rt=M z?^Z(xPW+|i)0@7>_?=%PD>ktpERQ>^jSk|x{3FhsI!of#6%_3)-2KTli07kyAE{)= z6jlCZ#fk+Ud}0-oU;p99TQ+X}2`k^}V&iSAsE*c>Ne|H9{ZHOHc#P!0d4~Si$ChtD z$*=Z2hU@|K-i%>YV+P~+u444uTbbc^+OvaQf0}*ml$U(tzx)-LSpYCiy52qc z_D4=1Ba;X)bxVlSn`b#QG|9Q6=Q#5HjqJ1|4GD}IjG#ki^g{8%@nJq(|a-0VyL}X^)HubPOJMpR9M9S%X zbx(RM`S;?!*ZsrE5snN_(*wK*WJF}{$|_QFRdXn%YAOa5M8uu{e&7jpPqx4})6+<2 zFMVApj?cOzfwYL^Z*-}+25_^e9KZ&0BI4X^{r>?EzP1uo`V{Q|0000 literal 0 HcmV?d00001 diff --git a/Chapter08/readwriteapplication/main.cpp b/Chapter08/readwriteapplication/main.cpp new file mode 100644 index 0000000..1ea4ed3 --- /dev/null +++ b/Chapter08/readwriteapplication/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "sdiwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + (new SdiWindow)->show(); + QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) ); + + return app.exec(); +} diff --git a/Chapter08/readwriteapplication/sdi.pro b/Chapter08/readwriteapplication/sdi.pro new file mode 100644 index 0000000..78585fc --- /dev/null +++ b/Chapter08/readwriteapplication/sdi.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 28. sep 16:43:38 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += sdiwindow.h +SOURCES += main.cpp sdiwindow.cpp +RESOURCES += images.qrc diff --git a/Chapter08/readwriteapplication/sdiwindow.cpp b/Chapter08/readwriteapplication/sdiwindow.cpp new file mode 100644 index 0000000..56cf147 --- /dev/null +++ b/Chapter08/readwriteapplication/sdiwindow.cpp @@ -0,0 +1,271 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include "sdiwindow.h" + +SdiWindow::SdiWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + setWindowTitle( tr("%1[*] - %2" ).arg(tr("unnamed")).arg(tr("SDI")) ); + + docWidget = new QTextEdit( this ); + setCentralWidget( docWidget ); + + connect( docWidget->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool)) ); + + createActions(); + createMenus(); + createToolbars(); + statusBar()->showMessage( tr("Done") ); +} + +void SdiWindow::closeEvent( QCloseEvent *event ) +{ + if( isSafeToClose() ) + event->accept(); + else + event->ignore(); +} + +void SdiWindow::fileNew() +{ + (new SdiWindow())->show(); +} + +void SdiWindow::helpAbout() +{ + QMessageBox::about( this, tr("About SDI"), tr("A single document interface application.") ); +} + +void SdiWindow::createActions() +{ + newAction = new QAction( QIcon(":/images/new.png"), tr("&New"), this ); + newAction->setShortcut( tr("Ctrl+N") ); + newAction->setStatusTip( tr("Create a new document") ); + connect( newAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + openAction = new QAction( tr("&Open"), this ); + openAction->setShortcut( tr("Ctrl+O") ); + openAction->setStatusTip( tr("Open a document") ); + connect( openAction, SIGNAL(triggered()), this, SLOT(fileOpen()) ); + + saveAction = new QAction( tr("&Save"), this ); + saveAction->setShortcut( tr("Ctrl+S") ); + saveAction->setStatusTip( tr("Save the document") ); + connect( saveAction, SIGNAL(triggered()), this, SLOT(fileSave()) ); + + saveAsAction = new QAction( tr("Save &As"), this ); + saveAsAction->setStatusTip( tr("Save the document as") ); + connect( saveAsAction, SIGNAL(triggered()), this, SLOT(fileSaveAs()) ); + + closeAction = new QAction( tr("&Close"), this ); + closeAction->setShortcut( tr("Ctrl+W") ); + closeAction->setStatusTip( tr("Close this document") ); + connect( closeAction, SIGNAL(triggered()), this, SLOT(close()) ); + + exitAction = new QAction( tr("E&xit"), this ); + exitAction->setShortcut( tr("Ctrl+Q") ); + exitAction->setStatusTip( tr("Quit the application") ); + connect( exitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + + cutAction = new QAction( QIcon(":/images/cut.png"), tr("Cu&t"), this ); + cutAction->setShortcut( tr("Ctrl+X") ); + cutAction->setStatusTip( tr("Cut") ); + cutAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), cutAction, SLOT(setEnabled(bool)) ); + connect( cutAction, SIGNAL(triggered()), docWidget, SLOT(cut()) ); + + copyAction = new QAction( QIcon(":/images/copy.png"), tr("&Copy"), this ); + copyAction->setShortcut( tr("Ctrl+C") ); + copyAction->setStatusTip( tr("Copy") ); + copyAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), copyAction, SLOT(setEnabled(bool)) ); + connect( copyAction, SIGNAL(triggered()), docWidget, SLOT(copy()) ); + + + pasteAction = new QAction( QIcon(":/images/paste.png"), tr("&Paste"), this ); + pasteAction->setShortcut( tr("Ctrl+V") ); + pasteAction->setStatusTip( tr("Paste") ); + connect( pasteAction, SIGNAL(triggered()), docWidget, SLOT(paste()) ); + + + aboutAction = new QAction( tr("&About"), this ); + aboutAction->setStatusTip( tr("About this application") ); + connect( aboutAction, SIGNAL(triggered()), this, SLOT(helpAbout()) ); + + aboutQtAction = new QAction( tr("About &Qt"), this ); + aboutQtAction->setStatusTip( tr("About the Qt toolkit") ); + connect( aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); +} + +void SdiWindow::createMenus() +{ + QMenu *menu; + + menu = menuBar()->addMenu( tr("&File") ); + menu->addAction( newAction ); + menu->addSeparator(); + menu->addAction( openAction ); + menu->addAction( saveAction ); + menu->addAction( saveAsAction ); + menu->addSeparator(); + menu->addAction( closeAction ); + menu->addSeparator(); + menu->addAction( exitAction ); + + menu = menuBar()->addMenu( tr("&Edit") ); + menu->addAction( cutAction ); + menu->addAction( copyAction ); + menu->addAction( pasteAction ); + + menu = menuBar()->addMenu( tr("&Help") ); + menu->addAction( aboutAction ); + menu->addAction( aboutQtAction ); +} + +void SdiWindow::createToolbars() +{ + QToolBar *toolbar; + + toolbar = addToolBar( tr("File") ); + toolbar->addAction( newAction ); + + toolbar = addToolBar( tr("Edit") ); + toolbar->addAction( cutAction ); + toolbar->addAction( copyAction ); + toolbar->addAction( pasteAction ); +} + + + +bool SdiWindow::isSafeToClose() +{ + if( isWindowModified() ) + { + switch( QMessageBox::warning( this, tr("SDI"), + tr("The document has unsaved changes.\n" + "Do you want to save it before it is closed?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel ) ) + { + case QMessageBox::Cancel: + return false; + case QMessageBox::Save: + return fileSave(); + default: + return true; + } + } + + return true; +} + +void SdiWindow::fileOpen() +{ + QString filename = QFileDialog::getOpenFileName( this ); + if( filename.isEmpty() ) + return; + + if( currentFilename.isEmpty() && !docWidget->document()->isModified() ) + loadFile( filename ); + else + { + SdiWindow *window = new SdiWindow(); + window->loadFile( filename ); + window->show(); + } +} + +bool SdiWindow::fileSave() +{ + if( currentFilename.isEmpty() ) + return fileSaveAs(); + else + return saveFile( currentFilename ); +} + +bool SdiWindow::fileSaveAs() +{ + QString filename = QFileDialog::getSaveFileName( this, tr("Save As"), currentFilename ); + if( filename.isEmpty() ) + return false; + + return saveFile( filename ); +} + +bool SdiWindow::saveFile( QString filename ) +{ + QFile file( filename ); + if( !file.open( QIODevice::WriteOnly | QIODevice::Text ) ) + { + QMessageBox::warning( this, tr("SDI"), tr("Failed to save file.") ); + return false; + } + + QTextStream stream( &file ); + stream << docWidget->toPlainText(); + + currentFilename = filename; + docWidget->document()->setModified( false ); + setWindowTitle( tr("%1[*] - %2" ).arg(filename).arg(tr("SDI")) ); + + return true; +} + +void SdiWindow::loadFile( QString filename ) +{ + QFile file( filename ); + if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + QMessageBox::warning( this, tr("SDI"), tr("Failed to open file.") ); + return; + } + + QTextStream stream( &file ); + docWidget->setPlainText( stream.readAll() ); + + currentFilename = filename; + docWidget->document()->setModified( false ); + setWindowTitle( tr("%1[*] - %2" ).arg(filename).arg(tr("SDI")) ); +} diff --git a/Chapter08/readwriteapplication/sdiwindow.h b/Chapter08/readwriteapplication/sdiwindow.h new file mode 100644 index 0000000..bb07eb6 --- /dev/null +++ b/Chapter08/readwriteapplication/sdiwindow.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SDIWINDOW_H +#define SDIWINDOW_H + +#include + +class QAction; +class QTextEdit; + +class SdiWindow : public QMainWindow +{ + Q_OBJECT + +public: + SdiWindow( QWidget *parent = 0 ); + +protected: + void closeEvent( QCloseEvent *event ); + +private slots: + void fileNew(); + void helpAbout(); + + void fileOpen(); + bool fileSave(); + bool fileSaveAs(); + +private: + void createActions(); + void createMenus(); + void createToolbars(); + + bool isSafeToClose(); + + bool saveFile( QString filename ); + void loadFile( QString filename ); + QString currentFilename; + + QTextEdit *docWidget; + + QAction *newAction; + QAction *openAction; + QAction *saveAction; + QAction *saveAsAction; + QAction *closeAction; + QAction *exitAction; + + QAction *cutAction; + QAction *copyAction; + QAction *pasteAction; + + QAction *aboutAction; + QAction *aboutQtAction; +}; + +#endif // SDIWINDOW_H diff --git a/Chapter08/rootlist/main.cpp b/Chapter08/rootlist/main.cpp new file mode 100644 index 0000000..b0d94cb --- /dev/null +++ b/Chapter08/rootlist/main.cpp @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +int main( int argc, char **argv ) +{ + foreach( QFileInfo drive, QDir::drives() ) + { + qDebug() << "Drive: " << drive.absolutePath(); + + QDir dir = drive.dir(); + dir.setFilter( QDir::Dirs ); + + foreach( QFileInfo rootDirs, dir.entryInfoList() ) + qDebug() << " " << rootDirs.fileName(); + } + + return 0; +} diff --git a/Chapter08/rootlist/rootlist.pro b/Chapter08/rootlist/rootlist.pro new file mode 100644 index 0000000..e3f6afe --- /dev/null +++ b/Chapter08/rootlist/rootlist.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) lö 11. nov 18:58:04 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter08/textstream/main.cpp b/Chapter08/textstream/main.cpp new file mode 100644 index 0000000..f3920bf --- /dev/null +++ b/Chapter08/textstream/main.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QFile file( "main.cpp" ); + if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + qFatal( "Could not open the file" ); + + QTextStream stream( &file ); + + while( !stream.atEnd() ) + { + QString text; + stream >> text; + qDebug() << text; + } + + stream.seek( 0 ); + + while( !stream.atEnd() ) + { + QString text; + text = stream.readLine(); + qDebug() << text; + } + + file.close(); + + return 0; +} diff --git a/Chapter08/textstream/textstream.pro b/Chapter08/textstream/textstream.pro new file mode 100644 index 0000000..831fa2f --- /dev/null +++ b/Chapter08/textstream/textstream.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) fr 17. nov 14:45:07 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter08/xmldommodify/main.cpp b/Chapter08/xmldommodify/main.cpp new file mode 100644 index 0000000..79efa2e --- /dev/null +++ b/Chapter08/xmldommodify/main.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QFile inFile( "simple.xml" ); + if( !inFile.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + qDebug( "Failed to open file for reading." ); + return 0; + } + + QDomDocument document; + if( !document.setContent( &inFile ) ) + { + qDebug( "Failed to parse the file into a DOM tree." ); + inFile.close(); + return 0; + } + + inFile.close(); + + QDomElement documentElement = document.documentElement(); + QDomNodeList elements = documentElement.elementsByTagName( "bar" ); + if( elements.size() == 0 ) + { + QDomElement bar = document.createElement( "bar" ); + documentElement.insertBefore( bar, QDomNode() ); + } + else if( elements.size() == 1 ) + { + QDomElement bar = elements.at(0).toElement(); + + QDomElement baz = document.createElement( "baz" ); + baz.setAttribute( "count", QString::number( bar.elementsByTagName( "baz" ).size() + 1 ) ); + + bar.appendChild( baz ); + } + + QFile outFile( "simple-modified.xml" ); + if( !outFile.open( QIODevice::WriteOnly | QIODevice::Text ) ) + { + qDebug( "Failed to open file for writing." ); + return 0; + } + + QTextStream stream( &outFile ); + stream << document.toString(); + + outFile.close(); + + return 0; +} diff --git a/Chapter08/xmldommodify/simple-modified.xml b/Chapter08/xmldommodify/simple-modified.xml new file mode 100644 index 0000000..c97b7c0 --- /dev/null +++ b/Chapter08/xmldommodify/simple-modified.xml @@ -0,0 +1,6 @@ + + + + + +Some text diff --git a/Chapter08/xmldommodify/simple.xml b/Chapter08/xmldommodify/simple.xml new file mode 100644 index 0000000..c3c0068 --- /dev/null +++ b/Chapter08/xmldommodify/simple.xml @@ -0,0 +1,5 @@ + + + + +Some text diff --git a/Chapter08/xmldommodify/xmldommodify.pro b/Chapter08/xmldommodify/xmldommodify.pro new file mode 100644 index 0000000..b36870f --- /dev/null +++ b/Chapter08/xmldommodify/xmldommodify.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 15. nov 19:10:54 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +QT += xml +CONFIG += console diff --git a/Chapter08/xmldomread/main.cpp b/Chapter08/xmldomread/main.cpp new file mode 100644 index 0000000..26216c5 --- /dev/null +++ b/Chapter08/xmldomread/main.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QFile file( "simple.xml" ); + if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + qDebug( "Failed to open file for reading." ); + return 0; + } + + QDomDocument document; + if( !document.setContent( &file ) ) + { + qDebug( "Failed to parse the file into a DOM tree." ); + file.close(); + return 0; + } + + file.close(); + + QDomElement documentElement = document.documentElement(); + + QDomNode node = documentElement.firstChild(); + while( !node.isNull() ) + { + if( node.isElement() ) + { + QDomElement element = node.toElement(); + qDebug() << "ELEMENT" << element.tagName(); + qDebug() << "ELEMENT ATTRIBUTE NAME" << element.attribute( "name", "not set" ); + } + + if( node.isText() ) + { + QDomText text = node.toText(); + qDebug() << text.data(); + } + + node = node.nextSibling(); + } + + return 0; +} diff --git a/Chapter08/xmldomread/simple.xml b/Chapter08/xmldomread/simple.xml new file mode 100644 index 0000000..df24d0f --- /dev/null +++ b/Chapter08/xmldomread/simple.xml @@ -0,0 +1,2 @@ + + Some text diff --git a/Chapter08/xmldomread/xmldomread.pro b/Chapter08/xmldomread/xmldomread.pro new file mode 100644 index 0000000..bcdd33b --- /dev/null +++ b/Chapter08/xmldomread/xmldomread.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 15. nov 18:25:39 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +QT += xml +CONFIG += console diff --git a/Chapter08/xmldomwrite/main.cpp b/Chapter08/xmldomwrite/main.cpp new file mode 100644 index 0000000..0a92558 --- /dev/null +++ b/Chapter08/xmldomwrite/main.cpp @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include +#include +#include + +int main( int argc, char **argv ) +{ + QDomDocument document; + + QDomElement foo = document.createElement( "foo" ); + foo.setAttribute( "name", "FooName" ); + + QDomElement bar = document.createElement( "bar" ); + bar.setAttribute( "name", "BarName" ); + + QDomText text = document.createTextNode( "Some text" ); + + document.appendChild( foo ); + foo.appendChild( bar ); + foo.appendChild( text ); + + QFile file( "simple.xml" ); + if( !file.open( QIODevice::WriteOnly | QIODevice::Text ) ) + { + qDebug( "Failed to open file for writing." ); + return 0; + } + + QTextStream stream( &file ); + stream << document.toString(); + + file.close(); + + return 0; +} diff --git a/Chapter08/xmldomwrite/simple.xml b/Chapter08/xmldomwrite/simple.xml new file mode 100644 index 0000000..df24d0f --- /dev/null +++ b/Chapter08/xmldomwrite/simple.xml @@ -0,0 +1,2 @@ + + Some text diff --git a/Chapter08/xmldomwrite/xmldomwrite.pro b/Chapter08/xmldomwrite/xmldomwrite.pro new file mode 100644 index 0000000..c997573 --- /dev/null +++ b/Chapter08/xmldomwrite/xmldomwrite.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 15. nov 16:40:53 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +QT += xml +CONFIG += console diff --git a/Chapter08/xmlsaxread/main.cpp b/Chapter08/xmlsaxread/main.cpp new file mode 100644 index 0000000..ac860d9 --- /dev/null +++ b/Chapter08/xmlsaxread/main.cpp @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +class MyHandler : public QXmlDefaultHandler +{ +public: + bool startDocument(); + bool endDocument(); + + bool startElement( const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts ); + bool endElement( const QString &namespaceURI, const QString &localName, const QString &qName ); + + bool characters( const QString &ch ); +}; + +bool MyHandler::startDocument() +{ + qDebug() << "Start of the document."; + return true; +} + +bool MyHandler::endDocument() +{ + qDebug() << "End of the document."; + return true; +} + +bool MyHandler::startElement( const QString &namespaceURI, const QString &localName, + const QString &qName, const QXmlAttributes &atts ) +{ + qDebug() << "Start of element" << qName; + for( int i=0; i + Some text diff --git a/Chapter08/xmlsaxread/xmlsaxread.pro b/Chapter08/xmlsaxread/xmlsaxread.pro new file mode 100644 index 0000000..3aa1d86 --- /dev/null +++ b/Chapter08/xmlsaxread/xmlsaxread.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 15. nov 19:58:15 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +QT += xml +CONFIG += console diff --git a/Chapter09/README.txt b/Chapter09/README.txt new file mode 100644 index 0000000..9578f2d --- /dev/null +++ b/Chapter09/README.txt @@ -0,0 +1,53 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 9 - Providing Help + +tooltips + + Listings 9-1, 9-2, 9-3, 9-4 + + Shows tooltips with different formatting and embedded images. + + +tooltipzones + + Listing 9-5 + + Shows how to provide different tooltips for different parts of a single + widget. + + +whatsthis + + Not shown in any Listings, but Figures 9-6 and 9-7. + + Shows what's this help with different formatting and embedded images. + + +whatsthislink + + Listings 9-6, 9-7, 9-8, 9-9 + + Shows how to provide clickable links in your what's this help boxes. + + +statusbar + + Listings 9-10 + + Shows how to add different widgets to a status bar. + + +wizard + + Listings 9-11, 9-12, 9-13, 9-14, 9-15 + + Shows how to implement a wizard dialog. + + +assistant + + Listings 9-16, 9-17 + + Shows how to use Qt Assistant as a help browser. \ No newline at end of file diff --git a/Chapter09/assistant/assistant.pro b/Chapter09/assistant/assistant.pro new file mode 100644 index 0000000..3ba9d69 --- /dev/null +++ b/Chapter09/assistant/assistant.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 28. nov 19:41:06 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += assistant +TARGET = assist-demo diff --git a/Chapter09/assistant/documentation/about.txt b/Chapter09/assistant/documentation/about.txt new file mode 100644 index 0000000..3c5d885 --- /dev/null +++ b/Chapter09/assistant/documentation/about.txt @@ -0,0 +1,4 @@ +The Qt Book Example + +This is an example of how to modify +the appearance of Qt Assistant's about box. \ No newline at end of file diff --git a/Chapter09/assistant/documentation/adv1.html b/Chapter09/assistant/documentation/adv1.html new file mode 100644 index 0000000..9c62987 --- /dev/null +++ b/Chapter09/assistant/documentation/adv1.html @@ -0,0 +1,8 @@ + +Advanced #1 + +

Advanced #1

+

Vivamus non mauris. Pellentesque scelerisque velit at nibh. Cras nec enim. Vivamus hendrerit leo non justo. Integer accumsan cursus sapien. Curabitur a dui. Aliquam enim. Proin viverra nibh in metus. Aenean quis dolor. Nunc augue ligula, hendrerit non, sollicitudin non, elementum sed, lacus. Donec dictum purus sed purus. In et libero at eros malesuada rhoncus. Morbi hendrerit.

+ + + diff --git a/Chapter09/assistant/documentation/adv2.html b/Chapter09/assistant/documentation/adv2.html new file mode 100644 index 0000000..7969aa2 --- /dev/null +++ b/Chapter09/assistant/documentation/adv2.html @@ -0,0 +1,8 @@ + +Advanced #2 + +

Advanced #2

+

Vivamus non mauris. Pellentesque scelerisque velit at nibh. Cras nec enim. Vivamus hendrerit leo non justo. Integer accumsan cursus sapien. Curabitur a dui. Aliquam enim. Proin viverra nibh in metus. Aenean quis dolor. Nunc augue ligula, hendrerit non, sollicitudin non, elementum sed, lacus. Donec dictum purus sed purus. In et libero at eros malesuada rhoncus. Morbi hendrerit.

+ + + diff --git a/Chapter09/assistant/documentation/advanced.html b/Chapter09/assistant/documentation/advanced.html new file mode 100644 index 0000000..25ff73b --- /dev/null +++ b/Chapter09/assistant/documentation/advanced.html @@ -0,0 +1,8 @@ + +Advanced Topics + +

Advanced Topics

+
+ + + diff --git a/Chapter09/assistant/documentation/appendix.html b/Chapter09/assistant/documentation/appendix.html new file mode 100644 index 0000000..412cfff --- /dev/null +++ b/Chapter09/assistant/documentation/appendix.html @@ -0,0 +1,8 @@ + +Appendix + +

Appendix

+

Curabitur sollicitudin nonummy augue. Nunc et elit id nibh egestas vestibulum. Proin pharetra. Morbi neque. Mauris non erat. Sed interdum tellus sit amet diam. Morbi rhoncus mattis ligula. Ut varius eleifend elit. Phasellus placerat imperdiet tellus. Donec at magna. Nullam eget lorem. Quisque augue augue, sollicitudin ut, pretium nec, placerat id, nisl. Aliquam erat volutpat. Proin nec diam. Duis ut lorem in libero dapibus semper.

+ + + diff --git a/Chapter09/assistant/documentation/basics.html b/Chapter09/assistant/documentation/basics.html new file mode 100644 index 0000000..44acb4b --- /dev/null +++ b/Chapter09/assistant/documentation/basics.html @@ -0,0 +1,8 @@ + +Some Basic Stuff + +

Some Basic Stuff

+

Vivamus non mauris. Pellentesque scelerisque velit at nibh. Cras nec enim. Vivamus hendrerit leo non justo. Integer accumsan cursus sapien. Curabitur a dui. Aliquam enim. Proin viverra nibh in metus. Aenean quis dolor. Nunc augue ligula, hendrerit non, sollicitudin non, elementum sed, lacus. Donec dictum purus sed purus. In et libero at eros malesuada rhoncus. Morbi hendrerit.

+ + + diff --git a/Chapter09/assistant/documentation/easystuff.html b/Chapter09/assistant/documentation/easystuff.html new file mode 100644 index 0000000..285396d --- /dev/null +++ b/Chapter09/assistant/documentation/easystuff.html @@ -0,0 +1,8 @@ + +Another Very Easy Thingie + +

Another Very Easy Thingie

+

Vivamus non mauris. Pellentesque scelerisque velit at nibh. Cras nec enim. Vivamus hendrerit leo non justo. Integer accumsan cursus sapien. Curabitur a dui. Aliquam enim. Proin viverra nibh in metus. Aenean quis dolor. Nunc augue ligula, hendrerit non, sollicitudin non, elementum sed, lacus. Donec dictum purus sed purus. In et libero at eros malesuada rhoncus. Morbi hendrerit.

+ + + diff --git a/Chapter09/assistant/documentation/faq.html b/Chapter09/assistant/documentation/faq.html new file mode 100644 index 0000000..01b3798 --- /dev/null +++ b/Chapter09/assistant/documentation/faq.html @@ -0,0 +1,13 @@ + +F.A.Q. + +

Frequently Asked Questions

+ +

What is foo?

+

Pellentesque eget mi. Phasellus tincidunt pretium massa. Curabitur aliquet arcu vitae neque. Pellentesque mollis tristique enim. Curabitur sed sapien eu justo rhoncus adipiscing. Morbi lectus mauris, accumsan non, eleifend nec, consequat ut, diam. Duis consectetuer libero quis augue. Fusce quis est. Curabitur tempus. Quisque tincidunt aliquam arcu. Nam pellentesque dolor vitae ipsum. Nunc sed lacus. Aliquam in turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aliquam pellentesque quam a eros.

+ +

Why do bar?

+

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam sollicitudin. Duis nisl lacus, malesuada vitae, semper a, lacinia a, erat. Etiam scelerisque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas convallis commodo nulla. Nam ultrices porttitor sem. Donec rutrum. Aliquam dictum, nunc eu euismod molestie, augue nunc vulputate magna, ut imperdiet quam enim vel eros. Pellentesque pede tortor, luctus vel, pretium eu, porttitor at, est. Nunc tortor mauris, ullamcorper eget, vulputate eu, elementum vel, pede. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer blandit rhoncus augue. Suspendisse vestibulum, dolor pulvinar porta porttitor, erat nunc ornare arcu, a rhoncus turpis justo at erat. In hac habitasse platea dictumst. Aenean in urna.

+ + + diff --git a/Chapter09/assistant/documentation/images/qt.png b/Chapter09/assistant/documentation/images/qt.png new file mode 100644 index 0000000000000000000000000000000000000000..a616ea0959af1ca770de7e765f7ef2360957fa09 GIT binary patch literal 2134 zcmV-c2&wmpP)T1xknlwkl*Ggk z4PVp{L*j!Epv0h&VpJ4cUM+Ukl==n_l=DF2B92q9XXsQ6~bN_!)~x=o4B-u01AfSnJwQp|>>-0`q9 zH6Z8Td)>Hn*t7lzggA)}=fc3o{q~Z>)9}sFqtt&{EHu&kypAFZ3 z{yWXcx{=wDAU{1Q^T+mkc_BpUTp(cTKXID_>}cz?H!WR=+bu+dLu*0X1(6MFf)%CD_$zMtMo6eMOKux`%gax_6O%N$>qM;f*xqIFZ ztIjfjP&o(z0uTZ$A+Ri)C=QiE$jnTQsvCf%iN^%Jy$QN{S_qVfCIl3{t<98cdTGj? z-RVmq)(%PoD=Gr9Dq(TuQ(8TN}fbO=I?r(LZR$ab%-92pIb_0cS1v?sQfdMeqGJp_5 z1xj0BETUG7eJ^>;97_^2U06XYVKs(wBZSo^EI&gvm*I_r- zr70E1D8cwpz{p{nc&wGfuNS%I<_J^c1%CgNEE`wd(Atw;pS=6_2iSY$IflpH;HK+t z!O5egs%s!zW`RHjgi4}~LQBoqp*YP=ok$N_dx~6nBlxyU$*WQGJz@#N)%}Xlb8vIr zEMyID?a7i@+(LVDZSvM_chcUSVgKP5>1ppHnYL-~NXPoR)+c~f%K<_UseFu)Ob*qt zbt^(gsQY;~-=rwj%eaAyAmrVb6|es}ic|ra-Xh6pJJZ89xonm3@#74S9ip$Vm)4FL zPdxH8-@W${M9gE$m0Nr6yX(;_fE~*Kys%23>L}w;UI+;#EaZ!{tjtsK%J`v+ZAo5x z-X%ZYO~gua@YOPHYYG(R%M`OVmt2)3o^kP1-LI)^vEWWri^Ul{vp`eY!52k$^u${W zz{oOyx~veWDxt1%6+!@rWdKS`q%s7d#p=yANB1lMFg4`jx{7ChWa#V5 zaC~|aOE|>iP3(R$&yIUsq)d?PTtw=CMxmpDVrV?iqJAPfe@wl4Kyh&JwfR8$8c@qq zF`zL>tw^K|#bS|ED#f9HhCK9(7P{6haB}J-yB>6y9QHW2FGDPr;a88HBGYC_byrbZ zpPkPbEri$=P~7;tmmk~uyO+_xU}G^_4siM@kO9jpOTGoXCv@uAf2yI3G9jC1Tu +A Qt Book Example + +

A Qt Book Example

+

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque consequat ipsum in est. Donec tincidunt sem ac ipsum. Praesent tempus lacus non massa. Nullam consectetuer dictum massa. Nunc ac nibh eu lectus ultrices malesuada. Quisque a sapien eget ante fringilla elementum. Sed facilisis justo sit amet magna eleifend tempus. Nullam vel magna. Pellentesque euismod mauris et dolor. Nullam nisl quam, eleifend a, lacinia id, lacinia vitae, justo. Morbi congue consectetuer mi. Morbi aliquet felis eget ipsum. Sed eu velit pretium ligula consequat vehicula. Aliquam aliquet nunc ut metus. Donec sem mi, pretium nec, facilisis imperdiet, rutrum ac, arcu. Ut mauris quam, iaculis ac, congue ut, scelerisque quis, pede. Ut est risus, pulvinar id, condimentum eu, tempus sit amet, augue. Praesent eget metus sit amet lacus cursus vulputate. Fusce lacinia elementum nulla. Pellentesque dictum vehicula diam.

+ +

Easy Thingie #1

+

Pellentesque eget mi. Phasellus tincidunt pretium massa. Curabitur aliquet arcu vitae neque. Pellentesque mollis tristique enim. Curabitur sed sapien eu justo rhoncus adipiscing. Morbi lectus mauris, accumsan non, eleifend nec, consequat ut, diam. Duis consectetuer libero quis augue. Fusce quis est. Curabitur tempus. Quisque tincidunt aliquam arcu. Nam pellentesque dolor vitae ipsum. Nunc sed lacus. Aliquam in turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Aliquam pellentesque quam a eros.

+ +

Easy Thingie #2

+

Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam sollicitudin. Duis nisl lacus, malesuada vitae, semper a, lacinia a, erat. Etiam scelerisque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Maecenas convallis commodo nulla. Nam ultrices porttitor sem. Donec rutrum. Aliquam dictum, nunc eu euismod molestie, augue nunc vulputate magna, ut imperdiet quam enim vel eros. Pellentesque pede tortor, luctus vel, pretium eu, porttitor at, est. Nunc tortor mauris, ullamcorper eget, vulputate eu, elementum vel, pede. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer blandit rhoncus augue. Suspendisse vestibulum, dolor pulvinar porta porttitor, erat nunc ornare arcu, a rhoncus turpis justo at erat. In hac habitasse platea dictumst. Aenean in urna.

+ + + diff --git a/Chapter09/assistant/documentation/qtbookexample.adp b/Chapter09/assistant/documentation/qtbookexample.adp new file mode 100644 index 0000000..8951d40 --- /dev/null +++ b/Chapter09/assistant/documentation/qtbookexample.adp @@ -0,0 +1,37 @@ + + + + + + qtbookexample + Qt Book Example + images/qt.png + index.html + About The Qt Book Example + about.txt + . + + + +
+
+
+
+ + Basic Thing One + Basic Thing Two + Another Basic Thing +
+
+
+
+ + Advanced Topic One + Advanced Topic Two +
+ +
+
+ + + \ No newline at end of file diff --git a/Chapter09/assistant/main.cpp b/Chapter09/assistant/main.cpp new file mode 100644 index 0000000..70bb51f --- /dev/null +++ b/Chapter09/assistant/main.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QAssistantClient *assistantClient = new QAssistantClient( QApplication::applicationDirPath(), qApp ); + QStringList arguments; + arguments << "-profile" << "./documentation/qtbookexample.adp"; + assistantClient->setArguments( arguments ); + + assistantClient->openAssistant(); + + QLabel label( "Close me" ); + label.show(); + + int res = app.exec(); + + assistantClient->closeAssistant(); + + return res; +} diff --git a/Chapter09/statusbar/main.cpp b/Chapter09/statusbar/main.cpp new file mode 100644 index 0000000..0b927f2 --- /dev/null +++ b/Chapter09/statusbar/main.cpp @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include + +#include +#include + +class MainWindow : public QMainWindow +{ +public: + MainWindow(); +}; + +MainWindow::MainWindow() : QMainWindow() +{ + setCentralWidget( new QTextEdit( this ) ); + + QStatusBar *statusBar = this->statusBar(); + + QProgressBar *progressBar = new QProgressBar(); + QLabel *mode = new QLabel( tr(" EDIT ") ); + QLabel *modified = new QLabel( tr(" Y ") ); + QLabel *size = new QLabel( tr(" 999999kB ") ); + + mode->setMinimumSize( mode->sizeHint() ); + mode->setAlignment( Qt::AlignCenter ); + mode->setText( tr("EDIT") ); + mode->setToolTip( tr("The current working mode.") ); + + statusBar->addPermanentWidget( mode ); + + modified->setMinimumSize( modified->sizeHint() ); + modified->setAlignment( Qt::AlignCenter ); + modified->setText( tr("N") ); + modified->setToolTip( tr("Indicates if the current document has been modified or not.") ); + + size->setMinimumSize( size->sizeHint() ); + size->setAlignment( Qt::AlignRight | Qt::AlignVCenter ); + size->setText( tr("%1kB ").arg(0) ); + size->setToolTip( tr("The memory used for the current document.") ); + + progressBar->setTextVisible( false ); + progressBar->setRange( 0, 0 ); + + statusBar->addWidget( progressBar, 1 ); + statusBar->addWidget( modified ); + statusBar->addWidget( size ); + + statusBar->showMessage( tr("Ready"), 2000 ); +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + + MainWindow window; + window.show(); + + return app.exec(); +} diff --git a/Chapter09/statusbar/statusbar.pro b/Chapter09/statusbar/statusbar.pro new file mode 100644 index 0000000..ec3db2e --- /dev/null +++ b/Chapter09/statusbar/statusbar.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 22. nov 13:46:01 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter09/tooltips/images.qrc b/Chapter09/tooltips/images.qrc new file mode 100644 index 0000000..d50c25b --- /dev/null +++ b/Chapter09/tooltips/images.qrc @@ -0,0 +1,5 @@ + + + images/qt.png + + \ No newline at end of file diff --git a/Chapter09/tooltips/images/qt.png b/Chapter09/tooltips/images/qt.png new file mode 100644 index 0000000000000000000000000000000000000000..a616ea0959af1ca770de7e765f7ef2360957fa09 GIT binary patch literal 2134 zcmV-c2&wmpP)T1xknlwkl*Ggk z4PVp{L*j!Epv0h&VpJ4cUM+Ukl==n_l=DF2B92q9XXsQ6~bN_!)~x=o4B-u01AfSnJwQp|>>-0`q9 zH6Z8Td)>Hn*t7lzggA)}=fc3o{q~Z>)9}sFqtt&{EHu&kypAFZ3 z{yWXcx{=wDAU{1Q^T+mkc_BpUTp(cTKXID_>}cz?H!WR=+bu+dLu*0X1(6MFf)%CD_$zMtMo6eMOKux`%gax_6O%N$>qM;f*xqIFZ ztIjfjP&o(z0uTZ$A+Ri)C=QiE$jnTQsvCf%iN^%Jy$QN{S_qVfCIl3{t<98cdTGj? z-RVmq)(%PoD=Gr9Dq(TuQ(8TN}fbO=I?r(LZR$ab%-92pIb_0cS1v?sQfdMeqGJp_5 z1xj0BETUG7eJ^>;97_^2U06XYVKs(wBZSo^EI&gvm*I_r- zr70E1D8cwpz{p{nc&wGfuNS%I<_J^c1%CgNEE`wd(Atw;pS=6_2iSY$IflpH;HK+t z!O5egs%s!zW`RHjgi4}~LQBoqp*YP=ok$N_dx~6nBlxyU$*WQGJz@#N)%}Xlb8vIr zEMyID?a7i@+(LVDZSvM_chcUSVgKP5>1ppHnYL-~NXPoR)+c~f%K<_UseFu)Ob*qt zbt^(gsQY;~-=rwj%eaAyAmrVb6|es}ic|ra-Xh6pJJZ89xonm3@#74S9ip$Vm)4FL zPdxH8-@W${M9gE$m0Nr6yX(;_fE~*Kys%23>L}w;UI+;#EaZ!{tjtsK%J`v+ZAo5x z-X%ZYO~gua@YOPHYYG(R%M`OVmt2)3o^kP1-LI)^vEWWri^Ul{vp`eY!52k$^u${W zz{oOyx~veWDxt1%6+!@rWdKS`q%s7d#p=yANB1lMFg4`jx{7ChWa#V5 zaC~|aOE|>iP3(R$&yIUsq)d?PTtw=CMxmpDVrV?iqJAPfe@wl4Kyh&JwfR8$8c@qq zF`zL>tw^K|#bS|ED#f9HhCK9(7P{6haB}J-yB>6y9QHW2FGDPr;a88HBGYC_byrbZ zpPkPbEri$=P~7;tmmk~uyO+_xU}G^_4siM@kO9jpOTGoXCv@uAf2yI3G9jC1Tu + +#include "tooltipdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ToolTipDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter09/tooltips/tooltipdialog.cpp b/Chapter09/tooltips/tooltipdialog.cpp new file mode 100644 index 0000000..531b520 --- /dev/null +++ b/Chapter09/tooltips/tooltipdialog.cpp @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +#include "tooltipdialog.h" + +ToolTipDialog::ToolTipDialog() : QDialog() +{ + QGroupBox *groupBox = new QGroupBox( tr("Group") ); + QGridLayout *gbLayout = new QGridLayout( groupBox ); + + QCheckBox *checkBox = new QCheckBox( tr("Check!") ); + QLabel *label = new QLabel( tr("label") ); + QPushButton *pushButton = new QPushButton( tr("Push me!") ); + + gbLayout->addWidget( checkBox, 0, 0 ); + gbLayout->addWidget( label, 0, 1 ); + gbLayout->addWidget( pushButton, 1, 0, 1, 2 ); + + QGridLayout *dlgLayout = new QGridLayout( this ); + dlgLayout->addWidget( groupBox, 0, 0 ); + + checkBox->setToolTip( tr("This is a simple tool tip for the check box.") ); + groupBox->setToolTip( tr("This is a group box tool tip.\n" + "Notice that it appears between and around the contained widgets.\n" + "It is also spanning several lines.") ); + label->setToolTip( tr("

It is possible to do lists.

" + "
    " + "
  • You can format text.
  • " + "
  • Bold is possible too.
  • " + "
  • And the color and " + "size.
  • " + "
" + "

You can do ordered lists as well.

" + "
    " + "
  1. First.
  2. " + "
  3. Second.
  4. " + "
  5. Third.
  6. " + "
") ); + pushButton->setToolTip( tr("" + "You can also insert images into your tool tips.") ); +} diff --git a/Chapter09/tooltips/tooltipdialog.h b/Chapter09/tooltips/tooltipdialog.h new file mode 100644 index 0000000..61034ec --- /dev/null +++ b/Chapter09/tooltips/tooltipdialog.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TOOLTIPDIALOG_H +#define TOOLTIPDIALOG_H + +#include + +class ToolTipDialog : public QDialog +{ +public: + ToolTipDialog(); + +}; + +#endif // TOOLTIPDIALOG_H diff --git a/Chapter09/tooltips/tooltips.pro b/Chapter09/tooltips/tooltips.pro new file mode 100644 index 0000000..06b265c --- /dev/null +++ b/Chapter09/tooltips/tooltips.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 21. nov 21:01:45 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += tooltipdialog.h +SOURCES += main.cpp tooltipdialog.cpp +RESOURCES += images.qrc diff --git a/Chapter09/tooltipzones/main.cpp b/Chapter09/tooltipzones/main.cpp new file mode 100644 index 0000000..f7f4e20 --- /dev/null +++ b/Chapter09/tooltipzones/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "tipzones.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + TipZones tipZones; + tipZones.show(); + + return app.exec(); +} diff --git a/Chapter09/tooltipzones/tipzones.cpp b/Chapter09/tooltipzones/tipzones.cpp new file mode 100644 index 0000000..2609f16 --- /dev/null +++ b/Chapter09/tooltipzones/tipzones.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +#include "tipzones.h" + +TipZones::TipZones() : QWidget() +{ +} + +void TipZones::paintEvent( QPaintEvent* ) +{ + QRect redRect, greenRect, blueRect, yellowRect; + + redRect = QRect( 0, 0, width()/2, height()/2 ); + greenRect = QRect( width()/2, 0, width()/2, height()/2 ); + blueRect = QRect( 0, height()/2, width()/2, height()/2 ); + yellowRect = QRect( width()/2, height()/2, width()/2, height()/2 ); + + QPainter p( this ); + + p.setPen( Qt::black ); + + p.setBrush( Qt::red ); + p.drawRect( redRect ); + + p.setBrush( Qt::green ); + p.drawRect( greenRect ); + + p.setBrush( Qt::blue ); + p.drawRect( blueRect ); + + p.setBrush( Qt::yellow ); + p.drawRect( yellowRect ); +} + +bool TipZones::event( QEvent *event ) +{ + if( event->type() == QEvent::ToolTip ) + { + QHelpEvent *helpEvent = static_cast( event ); + + QRect redRect, greenRect, blueRect, yellowRect; + + redRect = QRect( 0, 0, width()/2, height()/2 ); + greenRect = QRect( width()/2, 0, width()/2, height()/2 ); + blueRect = QRect( 0, height()/2, width()/2, height()/2 ); + yellowRect = QRect( width()/2, height()/2, width()/2, height()/2 ); + + if( redRect.contains( helpEvent->pos() ) ) + setToolTip( tr("Red") ); + else if( greenRect.contains( helpEvent->pos() ) ) + setToolTip( tr("Green") ); + else if( blueRect.contains( helpEvent->pos() ) ) + setToolTip( tr("Blue") ); + else + setToolTip( tr("Yellow") ); + } + + return QWidget::event( event ); +} diff --git a/Chapter09/tooltipzones/tipzones.h b/Chapter09/tooltipzones/tipzones.h new file mode 100644 index 0000000..942a7f4 --- /dev/null +++ b/Chapter09/tooltipzones/tipzones.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TIPZONES_H +#define TIPZONES_H + +#include + +class TipZones : public QWidget +{ +public: + TipZones(); + +protected: + void paintEvent( QPaintEvent* ); + bool event( QEvent* ); +}; + +#endif // TIPZONES_H diff --git a/Chapter09/tooltipzones/tooltipzones.pro b/Chapter09/tooltipzones/tooltipzones.pro new file mode 100644 index 0000000..db1fb23 --- /dev/null +++ b/Chapter09/tooltipzones/tooltipzones.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 22. nov 09:16:19 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += tipzones.h +SOURCES += main.cpp tipzones.cpp diff --git a/Chapter09/whatsthis/images.qrc b/Chapter09/whatsthis/images.qrc new file mode 100644 index 0000000..d50c25b --- /dev/null +++ b/Chapter09/whatsthis/images.qrc @@ -0,0 +1,5 @@ + + + images/qt.png + + \ No newline at end of file diff --git a/Chapter09/whatsthis/images/qt.png b/Chapter09/whatsthis/images/qt.png new file mode 100644 index 0000000000000000000000000000000000000000..a616ea0959af1ca770de7e765f7ef2360957fa09 GIT binary patch literal 2134 zcmV-c2&wmpP)T1xknlwkl*Ggk z4PVp{L*j!Epv0h&VpJ4cUM+Ukl==n_l=DF2B92q9XXsQ6~bN_!)~x=o4B-u01AfSnJwQp|>>-0`q9 zH6Z8Td)>Hn*t7lzggA)}=fc3o{q~Z>)9}sFqtt&{EHu&kypAFZ3 z{yWXcx{=wDAU{1Q^T+mkc_BpUTp(cTKXID_>}cz?H!WR=+bu+dLu*0X1(6MFf)%CD_$zMtMo6eMOKux`%gax_6O%N$>qM;f*xqIFZ ztIjfjP&o(z0uTZ$A+Ri)C=QiE$jnTQsvCf%iN^%Jy$QN{S_qVfCIl3{t<98cdTGj? z-RVmq)(%PoD=Gr9Dq(TuQ(8TN}fbO=I?r(LZR$ab%-92pIb_0cS1v?sQfdMeqGJp_5 z1xj0BETUG7eJ^>;97_^2U06XYVKs(wBZSo^EI&gvm*I_r- zr70E1D8cwpz{p{nc&wGfuNS%I<_J^c1%CgNEE`wd(Atw;pS=6_2iSY$IflpH;HK+t z!O5egs%s!zW`RHjgi4}~LQBoqp*YP=ok$N_dx~6nBlxyU$*WQGJz@#N)%}Xlb8vIr zEMyID?a7i@+(LVDZSvM_chcUSVgKP5>1ppHnYL-~NXPoR)+c~f%K<_UseFu)Ob*qt zbt^(gsQY;~-=rwj%eaAyAmrVb6|es}ic|ra-Xh6pJJZ89xonm3@#74S9ip$Vm)4FL zPdxH8-@W${M9gE$m0Nr6yX(;_fE~*Kys%23>L}w;UI+;#EaZ!{tjtsK%J`v+ZAo5x z-X%ZYO~gua@YOPHYYG(R%M`OVmt2)3o^kP1-LI)^vEWWri^Ul{vp`eY!52k$^u${W zz{oOyx~veWDxt1%6+!@rWdKS`q%s7d#p=yANB1lMFg4`jx{7ChWa#V5 zaC~|aOE|>iP3(R$&yIUsq)d?PTtw=CMxmpDVrV?iqJAPfe@wl4Kyh&JwfR8$8c@qq zF`zL>tw^K|#bS|ED#f9HhCK9(7P{6haB}J-yB>6y9QHW2FGDPr;a88HBGYC_byrbZ zpPkPbEri$=P~7;tmmk~uyO+_xU}G^_4siM@kO9jpOTGoXCv@uAf2yI3G9jC1Tu + +#include "whatsthisdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + WhatsThisDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter09/whatsthis/whatsthis.pro b/Chapter09/whatsthis/whatsthis.pro new file mode 100644 index 0000000..e738290 --- /dev/null +++ b/Chapter09/whatsthis/whatsthis.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 22. nov 09:24:52 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += whatsthisdialog.h +SOURCES += main.cpp whatsthisdialog.cpp +RESOURCES += images.qrc diff --git a/Chapter09/whatsthis/whatsthisdialog.cpp b/Chapter09/whatsthis/whatsthisdialog.cpp new file mode 100644 index 0000000..587cfd6 --- /dev/null +++ b/Chapter09/whatsthis/whatsthisdialog.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +#include "whatsthisdialog.h" + +WhatsThisDialog::WhatsThisDialog() : QDialog() +{ + QGroupBox *groupBox = new QGroupBox( tr("Group") ); + QGridLayout *gbLayout = new QGridLayout( groupBox ); + + QCheckBox *checkBox = new QCheckBox( tr("Check!") ); + QLabel *label = new QLabel( tr("label") ); + QPushButton *pushButton = new QPushButton( tr("Push me!") ); + + gbLayout->addWidget( checkBox, 0, 0 ); + gbLayout->addWidget( label, 0, 1 ); + gbLayout->addWidget( pushButton, 1, 0, 1, 2 ); + + QGridLayout *dlgLayout = new QGridLayout( this ); + + dlgLayout->addWidget( groupBox, 0, 0 ); + +#ifndef true + checkBox->setWhatsThis( tr("This is a simple What's This help for the check box.") ); +#endif + checkBox->setWhatsThis( tr("

This is a simple What's This help " + "for the check box.

") ); + groupBox->setWhatsThis( tr("This is a group box What's This help.
" + "Notice that it appears between and around the contained widgets.
" + "It is also spanning several lines.") ); + label->setWhatsThis( tr("

It is possible to do lists.

" + "
    " + "
  • You can format text.
  • " + "
  • Bold is possible too.
  • " + "
  • And the color and " + "size.
  • " + "
" + "

You can do ordered lists as well.

" + "
    " + "
  1. First.
  2. " + "
  3. Second.
  4. " + "
  5. Third.
  6. " + "
") ); + pushButton->setWhatsThis( tr("" + "You can also insert images into your What's This help.") ); +} diff --git a/Chapter09/whatsthis/whatsthisdialog.h b/Chapter09/whatsthis/whatsthisdialog.h new file mode 100644 index 0000000..3412b88 --- /dev/null +++ b/Chapter09/whatsthis/whatsthisdialog.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WHATSTHISDIALOG_H +#define WHATSTHISDIALOG_H + +#include + +class WhatsThisDialog : public QDialog +{ +public: + WhatsThisDialog(); + +}; + +#endif // WHATSTHISDIALOG_H diff --git a/Chapter09/whatsthislink/linkdialog.cpp b/Chapter09/whatsthislink/linkdialog.cpp new file mode 100644 index 0000000..b95179f --- /dev/null +++ b/Chapter09/whatsthislink/linkdialog.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include + +#include "linkdialog.h" + +#include "linkfilter.h" + +LinkDialog::LinkDialog() : QDialog() +{ + LinkFilter *filter = new LinkFilter( this ); + this->installEventFilter( filter ); + connect( filter, SIGNAL(linkClicked(QString)), this, SLOT(showLink(QString)) ); + + QPushButton *button = new QPushButton( "What is this?" ); + button->setWhatsThis( "This is a test link." ); + + QGridLayout *layout = new QGridLayout( this ); + layout->addWidget( button, 0, 0 ); +} + +void LinkDialog::showLink( QString link ) +{ + QMessageBox::information( this, tr("Link Clicked"), tr("Link: %1").arg( link ) ); +} diff --git a/Chapter09/whatsthislink/linkdialog.h b/Chapter09/whatsthislink/linkdialog.h new file mode 100644 index 0000000..85c4a5b --- /dev/null +++ b/Chapter09/whatsthislink/linkdialog.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef LINKDIALOG_H +#define LINKDIALOG_H + +#include + +class LinkDialog : public QDialog +{ + Q_OBJECT + +public: + LinkDialog(); + +private slots: + void showLink( QString ); +}; + +#endif // LINKDIALOG_H diff --git a/Chapter09/whatsthislink/linkfilter.cpp b/Chapter09/whatsthislink/linkfilter.cpp new file mode 100644 index 0000000..137af80 --- /dev/null +++ b/Chapter09/whatsthislink/linkfilter.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include "linkfilter.h" + +LinkFilter::LinkFilter( QObject *parent ) : QObject( parent ) +{ +} + +bool LinkFilter::eventFilter( QObject *object, QEvent *event ) +{ + if( event->type() == QEvent::WhatsThisClicked ) + { + QWhatsThisClickedEvent *wtcEvent = static_cast(event); + QWhatsThis::hideText(); + emit linkClicked( wtcEvent->href() ); + return true; + } + + return false; +} diff --git a/Chapter09/whatsthislink/linkfilter.h b/Chapter09/whatsthislink/linkfilter.h new file mode 100644 index 0000000..1bf960c --- /dev/null +++ b/Chapter09/whatsthislink/linkfilter.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef LINKFILTER_H +#define LINKFILTER_H + +#include + +class LinkFilter : public QObject +{ + Q_OBJECT + +public: + LinkFilter( QObject *parent=0 ); + +signals: + void linkClicked( QString ); + +protected: + bool eventFilter( QObject*, QEvent* ); +}; + +#endif // LINKFILTER_H diff --git a/Chapter09/whatsthislink/main.cpp b/Chapter09/whatsthislink/main.cpp new file mode 100644 index 0000000..4c83b6a --- /dev/null +++ b/Chapter09/whatsthislink/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "linkdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + LinkDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter09/whatsthislink/whatsthislink.pro b/Chapter09/whatsthislink/whatsthislink.pro new file mode 100644 index 0000000..d1ce4dc --- /dev/null +++ b/Chapter09/whatsthislink/whatsthislink.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 22. nov 10:36:59 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += linkdialog.h linkfilter.h +SOURCES += linkdialog.cpp linkfilter.cpp main.cpp diff --git a/Chapter09/wizard/main.cpp b/Chapter09/wizard/main.cpp new file mode 100644 index 0000000..5cc9346 --- /dev/null +++ b/Chapter09/wizard/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "wizard.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Wizard dlg; + dlg.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter09/wizard/wizard.cpp b/Chapter09/wizard/wizard.cpp new file mode 100644 index 0000000..75a7501 --- /dev/null +++ b/Chapter09/wizard/wizard.cpp @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include + +#include "wizard.h" + +class PageOne : public QWidget +{ +public: + PageOne( QWidget *parent = 0 ); + + QCheckBox *acceptDeal; +}; + +PageOne::PageOne( QWidget *parent ) : QWidget(parent) +{ + QGridLayout *layout = new QGridLayout( this ); + + QTextEdit *textEdit = new QTextEdit(); + textEdit->setReadOnly( true ); + textEdit->setHtml( tr("

The Rules

" + "

The rules are to be followed!

") ); + + acceptDeal = new QCheckBox( tr("I accept") ); + + layout->addWidget( textEdit, 0, 0, 1, 2 ); + layout->addWidget( acceptDeal, 1, 1 ); +} + + + +class PageTwo : public QWidget +{ +public: + PageTwo( QWidget *parent = 0 ); + + QCheckBox *doThis; + QCheckBox *doThat; + QCheckBox *extra; +}; + +PageTwo::PageTwo( QWidget *parent ) : QWidget(parent) +{ + QGridLayout *layout = new QGridLayout( this ); + + doThis = new QCheckBox( tr("Do this") ); + doThat = new QCheckBox( tr("Do that") ); + extra = new QCheckBox( tr("Add something extra") ); + + layout->addWidget( doThis, 0, 0 ); + layout->addWidget( doThat, 1, 0 ); + layout->addWidget( extra, 2, 0 ); + + layout->setRowMinimumHeight( 3, 0 ); +} + + + +class PageThree : public QWidget +{ +public: + PageThree( QWidget *parent = 0 ); +}; + +PageThree::PageThree( QWidget *parent ) : QWidget(parent) +{ + QGridLayout *layout = new QGridLayout( this ); + + layout->addWidget( new QLabel( tr("All is ready. Press finish to get it done!") ), 0, 0 ); +} + + + +Wizard::Wizard() : QDialog() +{ + QGridLayout *layout = new QGridLayout( this ); + + QPushButton *cancel = new QPushButton( tr("Cancel") ); + next = new QPushButton( tr("Next") ); + previous = new QPushButton( tr("Previous" ) ); + + pages = new QStackedWidget(); + + layout->addWidget( pages, 0, 0, 1, 5 ); + layout->setColumnMinimumWidth( 0, 50 ); + layout->addWidget( previous, 1, 1 ); + layout->addWidget( next, 1, 2 ); + layout->setColumnMinimumWidth( 3, 5 ); + layout->addWidget( cancel, 1, 4 ); + + previous->setEnabled( false ); + next->setEnabled( false ); + + connect( next, SIGNAL(clicked()), this, SLOT(doNext()) ); + connect( previous, SIGNAL(clicked()), this, SLOT(doPrev()) ); + connect( cancel, SIGNAL(clicked()), this, SLOT(reject()) ); + + pages->addWidget( pageOne = new PageOne( pages ) ); + pages->addWidget( pageTwo = new PageTwo( pages ) ); + pages->addWidget( pageThree = new PageThree( pages ) ); + + connect( pageOne->acceptDeal, SIGNAL(toggled(bool)), next, SLOT(setEnabled(bool)) ); +} + +void Wizard::doNext() +{ + switch( pages->currentIndex() ) + { + case 0: + previous->setEnabled( true ); + + disconnect( pageOne->acceptDeal, SIGNAL(toggled(bool)), next, SLOT(setEnabled(bool)) ); + + break; + case 1: + next->setText( tr("Finish") ); + + break; + case 2: + QMessageBox::information( this, tr("Finishing"), tr("Here is where the action takes place.") ); + accept(); + + return; + } + + pages->setCurrentIndex( pages->currentIndex()+1 ); +} + +void Wizard::doPrev() +{ + switch( pages->currentIndex() ) + { + case 1: + previous->setEnabled( false ); + next->setEnabled( pageOne->acceptDeal->isChecked() ); + + connect( pageOne->acceptDeal, SIGNAL(toggled(bool)), next, SLOT(setEnabled(bool)) ); + + break; + case 2: + next->setText( tr("Next") ); + + break; + } + + pages->setCurrentIndex( pages->currentIndex()-1 ); +} diff --git a/Chapter09/wizard/wizard.h b/Chapter09/wizard/wizard.h new file mode 100644 index 0000000..056def5 --- /dev/null +++ b/Chapter09/wizard/wizard.h @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef WIZARD_H +#define WIZARD_H + +#include + +class QPushButton; +class QStackedWidget; + +class PageOne; +class PageTwo; +class PageThree; + +class Wizard : public QDialog +{ + Q_OBJECT + +public: + Wizard(); + +private slots: + void doNext(); + void doPrev(); + +private: + QPushButton *next; + QPushButton *previous; + + QStackedWidget *pages; + + PageOne *pageOne; + PageTwo *pageTwo; + PageThree *pageThree; +}; + +#endif // WIZARD_H diff --git a/Chapter09/wizard/wizard.pro b/Chapter09/wizard/wizard.pro new file mode 100644 index 0000000..6eb6efa --- /dev/null +++ b/Chapter09/wizard/wizard.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 28. nov 15:19:13 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += wizard.h +SOURCES += main.cpp wizard.cpp +CONFIG += console diff --git a/Chapter10/README.txt b/Chapter10/README.txt new file mode 100644 index 0000000..07d92bf --- /dev/null +++ b/Chapter10/README.txt @@ -0,0 +1,31 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 10 - Internationalization and Localization + +sdi + + Listings 10-1, 10-2, 10-3 + + Translates the SDI application from chapter four. + + +noop + + Listing 10-4 + + Shows how to make strings outside tr() macros available to Linguist. + + +dynamic + + Listings 10-8, 10-9, 10-10, 10-11, 10-12 + + Shows how to provide dynamic language switches. + + +locales + + Listings 10-13, 10-15, 10-17 + + Shows how locale settings affects numbers, times and dates. diff --git a/Chapter10/dynamic/dynamic.pro b/Chapter10/dynamic/dynamic.pro new file mode 100644 index 0000000..4bd94ae --- /dev/null +++ b/Chapter10/dynamic/dynamic.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 6. dec 17:48:46 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += dyndialog.h +SOURCES += dyndialog.cpp main.cpp +TRANSLATIONS += swedish.ts english.ts +CONFIG += console diff --git a/Chapter10/dynamic/dyndialog.cpp b/Chapter10/dynamic/dyndialog.cpp new file mode 100644 index 0000000..9e5a3f3 --- /dev/null +++ b/Chapter10/dynamic/dyndialog.cpp @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include + +#include + +#include "dyndialog.h" + +extern QTranslator *qTranslator; + +DynDialog::DynDialog() : QDialog( 0 ) +{ + languages = new QGroupBox( this ); + english = new QRadioButton( this ); + swedish = new QRadioButton( this ); + + english->setChecked( true ); + qTranslator->load( "english" ); + + QVBoxLayout *baseLayout = new QVBoxLayout( this ); + baseLayout->addWidget( languages ); + + QVBoxLayout *radioLayout = new QVBoxLayout( languages ); + radioLayout->addWidget( english ); + radioLayout->addWidget( swedish ); + + connect( english, SIGNAL(toggled(bool)), this, SLOT(languageChanged()) ); + connect( swedish, SIGNAL(toggled(bool)), this, SLOT(languageChanged()) ); + + translateUi(); +} + +void DynDialog::changeEvent( QEvent *event ) +{ + if( event->type() == QEvent::LanguageChange ) + { + translateUi(); + } + else + QDialog::changeEvent( event ); +} + +void DynDialog::languageChanged() +{ + if( english->isChecked() ) + qTranslator->load( "english" ); + else + qTranslator->load( "swedish" ); +} + +void DynDialog::translateUi() +{ + languages->setTitle( tr("Languages") ); + + english->setText( tr("English") ); + swedish->setText( tr("Swedish") ); +} diff --git a/Chapter10/dynamic/dyndialog.h b/Chapter10/dynamic/dyndialog.h new file mode 100644 index 0000000..bfafadc --- /dev/null +++ b/Chapter10/dynamic/dyndialog.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DYNDIALOG_H +#define DYNDIALOG_H + +#include + +class QRadioButton; +class QGroupBox; + +class DynDialog : public QDialog +{ + Q_OBJECT + +public: + DynDialog(); + +protected: + void changeEvent( QEvent* ); + +private slots: + void languageChanged(); + +private: + void translateUi(); + + QGroupBox *languages; + + QRadioButton *english; + QRadioButton *swedish; +}; + +#endif // DYNDIALOG_H diff --git a/Chapter10/dynamic/english.ts b/Chapter10/dynamic/english.ts new file mode 100644 index 0000000..b3e5382 --- /dev/null +++ b/Chapter10/dynamic/english.ts @@ -0,0 +1,21 @@ + + + + DynDialog + + + Languages + Languages + + + + English + English + + + + Swedish + Swedish + + + diff --git a/Chapter10/dynamic/main.cpp b/Chapter10/dynamic/main.cpp new file mode 100644 index 0000000..91419c8 --- /dev/null +++ b/Chapter10/dynamic/main.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include "dyndialog.h" + +QTranslator *qTranslator; + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + qTranslator = new QTranslator(); + app.installTranslator( qTranslator ); + + DynDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter10/dynamic/swedish.qm b/Chapter10/dynamic/swedish.qm new file mode 100644 index 0000000000000000000000000000000000000000..00fcac783e07544ebeb1fd23371a578a90dc1de1 GIT binary patch literal 329 zcmcE7ks@*G{hX<16=n7(EZlq7iGhJZgJFff9*|~Wxih&ANLjMH)^`Td>0GxroB+}@ zc>D}*0O`}23=E76%s`e1gC|1?Ln1>CLncEiLmophLpDPq2T+264T#x2OA>Q36Z6=C zY)+TTJeSPGocwe~kVY64h3UYeMmT8zbb uK89e1GHfmiE>BI#EY859MS#H-=z(;grW`bPvAgD_=U{5;0D6Ookr4n!Uqhk* literal 0 HcmV?d00001 diff --git a/Chapter10/dynamic/swedish.ts b/Chapter10/dynamic/swedish.ts new file mode 100644 index 0000000..70d2d80 --- /dev/null +++ b/Chapter10/dynamic/swedish.ts @@ -0,0 +1,21 @@ + + + + DynDialog + + + Languages + SprÃ¥k + + + + English + Engelska + + + + Swedish + Svenska + + + diff --git a/Chapter10/locales/locales.pro b/Chapter10/locales/locales.pro new file mode 100644 index 0000000..36cfce0 --- /dev/null +++ b/Chapter10/locales/locales.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 5. dec 18:59:42 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter10/locales/main.cpp b/Chapter10/locales/main.cpp new file mode 100644 index 0000000..8e4ff47 --- /dev/null +++ b/Chapter10/locales/main.cpp @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include +#include +#include + +#include + +void printDates( QLocale loc ) +{ + QLocale::setDefault( loc ); + + QDate d1( 2006, 10, 12 ); + QDate d2( 2006, 01, 31 ); + QDate d3( 2006, 06, 06 ); + + qDebug() << "short"; + qDebug() << loc.toString( d1, QLocale::ShortFormat ); + qDebug() << loc.toString( d2, QLocale::ShortFormat ); + qDebug() << loc.toString( d3, QLocale::ShortFormat ); + + qDebug() << "long"; + qDebug() << loc.toString( d1, QLocale::LongFormat ); + qDebug() << loc.toString( d2, QLocale::LongFormat ); + qDebug() << loc.toString( d3, QLocale::LongFormat ); + + qDebug() << "default"; + qDebug() << loc.toString( d1 ); + qDebug() << loc.toString( d2 ); + qDebug() << loc.toString( d3 ); +} + +void printTimes( QLocale loc ) +{ + QLocale::setDefault( loc ); + + QTime t1( 6, 15, 45 ); + QTime t2( 12, 00, 00 ); + QTime t3( 18, 20, 25 ); + + qDebug() << "short"; + qDebug() << loc.toString( t1, QLocale::ShortFormat ); + qDebug() << loc.toString( t2, QLocale::ShortFormat ); + qDebug() << loc.toString( t3, QLocale::ShortFormat ); + + qDebug() << "long"; + qDebug() << loc.toString( t1, QLocale::LongFormat ); + qDebug() << loc.toString( t2, QLocale::LongFormat ); + qDebug() << loc.toString( t3, QLocale::LongFormat ); + + qDebug() << "default"; + qDebug() << loc.toString( t1 ); + qDebug() << loc.toString( t2 ); + qDebug() << loc.toString( t3 ); +} + +void printValues( QLocale loc ) +{ + QLocale::setDefault( loc ); + + double v1 = 3.1415; + double v2 = 31415; + double v3 = 1000.001; + + qDebug() << loc.toString( v1 ); + qDebug() << loc.toString( v2 ); + qDebug() << loc.toString( v3 ); +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + qDebug() << "Dates"; + qDebug() << "Swedish"; + printDates( QLocale( QLocale::Swedish, QLocale::Sweden ) ); + qDebug() << "US English"; + printDates( QLocale( QLocale::English, QLocale::UnitedStates ) ); + + qDebug() << "Times"; + qDebug() << "Swedish"; + printTimes( QLocale( QLocale::Swedish, QLocale::Sweden ) ); + qDebug() << "US English"; + printTimes( QLocale( QLocale::English, QLocale::UnitedStates ) ); + + qDebug() << "Values"; + qDebug() << "Swedish"; + printValues( QLocale( QLocale::Swedish, QLocale::Sweden ) ); + qDebug() << "US English"; + printValues( QLocale( QLocale::English, QLocale::UnitedStates ) ); +} diff --git a/Chapter10/noop/main.cpp b/Chapter10/noop/main.cpp new file mode 100644 index 0000000..26e2987 --- /dev/null +++ b/Chapter10/noop/main.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTranslator translator; + translator.load( "noop_sv_SE" ); + app.installTranslator( &translator ); + + char *texts[] = { QT_TRANSLATE_NOOP("main","URL"), + QT_TRANSLATE_NOOP("main","Title"), + QT_TRANSLATE_NOOP("main","Publisher") }; + + char *texts2[] = { QT_TR_NOOP( "This is a very special string."), + QT_TR_NOOP( "And this is just as special.") }; + + QMessageBox::information( 0, qApp->translate("main",texts[2]), qApp->translate(0,texts2[1]) ); + + return 0; +} diff --git a/Chapter10/noop/noop.pro b/Chapter10/noop/noop.pro new file mode 100644 index 0000000..1d236c0 --- /dev/null +++ b/Chapter10/noop/noop.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) sö 3. dec 19:31:19 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +TRANSLATIONS += noop_sv_SE.ts +CONFIG += console diff --git a/Chapter10/noop/noop_sv_SE.qm b/Chapter10/noop/noop_sv_SE.qm new file mode 100644 index 0000000000000000000000000000000000000000..aa204fd30a2d183aab0248166d79d50ca37b0659 GIT binary patch literal 437 zcmY+Au}T9$5QhIVY7%WMErP6qU=^)J1to$=Kna&d8`s=&H@Y6-b`$Uo@&a}?zJ-mX zRxxC4|QQqGF zW<9MOe;lw5t2?h55bO$*Epf7lHd<&_*s=#o?N+nQI)A4n4RXa2LI^wzY@u2R#alD0 zYv2qWBv6Q`O&OZ~2pMyi*>Edxe6y^# + + + + + + This is a very special string. + Detta är en väldigt speciell sträng. + + + + And this is just as special. + Och denna är precis lika speciell. + + + + main + + + URL + URL + + + + Title + Titel + + + + Publisher + Utgivare + + + diff --git a/Chapter10/sdi/images.qrc b/Chapter10/sdi/images.qrc new file mode 100644 index 0000000..44947aa --- /dev/null +++ b/Chapter10/sdi/images.qrc @@ -0,0 +1,8 @@ + + + images/new.png + images/cut.png + images/copy.png + images/paste.png + + \ No newline at end of file diff --git a/Chapter10/sdi/images/copy.png b/Chapter10/sdi/images/copy.png new file mode 100644 index 0000000000000000000000000000000000000000..7052fab3d28cca3a649532532ad08daeaa136d85 GIT binary patch literal 1391 zcmV-#1(5oQP)>a3aF~{+us;_NzZR zaL0XLR*$x|xdn2jD0KUau3uh#^voZgcoYesglE2)9=`j5?>^n1Th47gsaHO9&#WXN z=Jwy(om>7;Sx<(=-+%M4x|z8B)Avgn5m^Xr9g1?v+`;3z^9MZj?T>uzJ5OJH7E(m` z`Pb7+kN&#)d{J}(0919hy?xWlp@X)ruleg!pL6VE_qyXV59-e^$W3c|XW+zb4;c>D z)HmPo&g$>H|IS;FJ@kXKPZkhalj|{pm=FybVq!YHVeQ&w(@ACJ@NxHj<9W-6KIM&9 zes46IipXx>+_AB-Vdcmt#KLXve(-ye_&yYXh-fgSosg$A1M);fHXiM{@xi(Xj(zw} zNALQI_x}5`jm;f((VnU3NNIl)MQKZJ} z|9Q=svu7+U%sX;u&Scuy+S;|UJa1{=ynFBYsL8Z(izE*heX9+7DFM3f>?H;w6J zs;+Ahq0{M56sCJy2IDrM08o?^UD^%uF8au{yJ*Q{nhhk8vuHwH*Cvw*$T_R3N?lbV zlYq7a5Dm>uQlC`PtkaHw@&I{6Goafe7KD%zP1~xfN<^5Moz+H&gamR4Af}{(JfxT< zk7+mQEHk-CXFr`qVoEASB-3fFEW4C56v^!TKFce|EbLp-DT;)m1Rzk+yi3lMhw1D? z3)EN1Lwa`#Nzp0vXXh>KKWuh(UZ?De$&PmOvMU#_T0J*-2~mQC*rPg+l02lCp&2l} zK$@pBM|pr~6sf1%n{njuE#^~Y@b+0d@BL3b+Om3f?cC;Wd+v#o*M5dU2>{HIx9J^a zxJv2~4b2r|ncfLfD2hf*2d=&PTb+ZA=U%${!dq8H|9JO<$(c**(~B5j7!jiqK#YkY z%?3);lq*=I>C&B}*kyJ_XIk6d8V{a%{2!>4Y*%ZiUmWjkUi11Df4h34IvEjf0RR9%2_VhTJ4C(1{H^p4(c5Qy z<9dDJ)Qg*I=S~lIKDf~QLjiK0001#kdkiM$@C5~TCg{mPOrZ9^3M5J z{F-^ov^;|Mlmc-S^Ko zk3XA#ab?pftYZtqh-d)-0000WMTB2HlD<$?9uaOib;+gE?>P1Lb*~O87qAr(82|tP x0000WMFfD9(lX{S!cIhF000000001h{{wKVz40#)lwSY<002ovPDHLkV1m;CnR);K literal 0 HcmV?d00001 diff --git a/Chapter10/sdi/images/cut.png b/Chapter10/sdi/images/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9a8069394e66f5cb474fd7653d9b9a788c57d6 GIT binary patch literal 1437 zcmV;O1!DS%P)^Qhgaiw*kwy1R!2diRfk;Ph6 z#Da=7ge{mTt3ZMkfdC2w9H}i!p`r7jxQzbsn>TacJKuNTx#ye{&u+MJ3 z9;?QtAk;QT_Nr>KIsyavvI!I5T{2<3sR3{6dYgPyT48e*+-s471}on|xh&)tS69Y) z77I+?)W9Qb=bYj`r5y(N4UxFI!ujg6(E6}a&?E3LNHsQo_461=+`w%*OVl9W*zvfW zk6&%~Et)tHqR+(5x~?rBhe82UY-9w^`qD)4X1WXz_Af91kt)rwLtAQ!?X@vlMX{*0 zp)B@(d*S46fjc9W%?8)!4Jgi(_+Uu@FFPc}uOK+sJ9o+ySgbEa?g0xxa$+x3bQM`^ z?+GB~C;ceb`* zO{v+E6%BP*KubA*y(JcXpKWl-8#xjdP{~@7@DfkYA!(Gp&e35T6%dxdW(dq#)|parzt~O%8Eu>5BqQ_Px^h_=T(gj)sLE6 zI+2ivMr|Y3RFytSj1pA)`>^^ej>_1N#K#hYUuvMM3TJ0ny?_6@O7*=?OiVn5u`$t@ za!!O&X?E`g@t)S;m8N;t)^MD|fi(<9e~vIlE>9zkuhqsI9L&9fTyE8+7>SwbIgoCmeP>mS_$A%7t z)%0BJ;m%I|?!dC^IkK}oSIf##QF5W(ccE1lnfU%EMLyo_%p2#pzxPQ8VPzsT9}EG7 zqa!5Q+e1upq*YZ{p%7K627mbbfW*WE)={uE!J#r7O{v-PN#KP1q!ZiQWwML-b4i*e zaJl0pT~W|GcE3URCS&=NbW4;(b5!HU!$}GZrw02rJ=VNdQ{aiMQtkuaxsXNcUz6|@ zo%l1oVn{Iy-V<`t!a`>#GsOw0kmvX8{L)+D?rxZBX$i)#djqTZf!F~ne{yQyx0NH` z7Q`+nPZ`;w&Y6ws0z2&&YoO4|3J#N)fG~Z22I&sg+#D<>O@h!R{+1V$j;`-K6~Fnn z`SZ9EGO!0`43l4X(VCoAe8tH#`vTo7B0*2e!!J={FU>D^yk_KJGuwk&Vf0h7n34_#+PwjivY3J-eSOa7Iv%(uy3e!9+84@%=700000NkvXXu0mjfYkscc literal 0 HcmV?d00001 diff --git a/Chapter10/sdi/images/new.png b/Chapter10/sdi/images/new.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e8915229134d5533175440640e549cbf576ace GIT binary patch literal 791 zcmV+y1L*vTP)o0mb0jy0I>$cZ3Il$7x?n4o!{giMgxAQad1c{+80x_@qG|Br z^AvbE5=narB<2&s;LiHnn+M|NAntn!XkMOKmT5XG69Q?PQ-mxbPm$V%kx5HyckCKs z180Y686)iDt2?|7a$vBvgcJk(2!((lFSvHybf1_+@!qXhC01^Aq#tht32h4@>O+`^GZZ7 z@rpx8k4(p|v7;v05n%8Y%95@G<%@0i5gHNn1>Fy{Dm^e%71^YgOe&L|IYKz58sH+< z*SD${V6t>f<$|p( zR*Mcpb(emBC%c;3!i}X}{Gn~d>CqfviSX;7y4=U-b!85ANppzMTCUGmddL42U;yX{ VmVA^pr8@us002ovPDHLkV1mj1Wkvu1 literal 0 HcmV?d00001 diff --git a/Chapter10/sdi/images/paste.png b/Chapter10/sdi/images/paste.png new file mode 100644 index 0000000000000000000000000000000000000000..ee6558a5a4b371862cec2c827b6ff1e707087274 GIT binary patch literal 1552 zcmV+r2JiWaP)=TQQLKxvXfDUpy`C?HNt*sj;{YhU)x&dfc0*mWA`p&V&6 z(&*m#-T(QYb99x6FdxruQ(t34Wuj2D zwbd|wWDtc5%z|Gi1C*jv%rZSW21bNfZ6mfFq-M$T1YB$ahTl(-0j8yBNCf%9eJvCV zB}$%;VJO03i(@@@B`-cu1j7XJP)g%^4n3#e#Pv+#_05b9UUY%jf)pu*U>k%228Lx5 z2^oN3nTk-*BoZ<)Z39qX*=5tTfn^Gj5QsmAQ}pn?1jRWtU@kNnz))D0!i?A`WpJpy zpTBh^nVl^%lFaZz_a>B~iPuGWVB@`PxaTe`qeN{@gtnG?94|<;W)YD99-yyQ0EPlX zp=^WU)HKg`%<+{SZ*y`e%F^j9rVbF$!tE{NymaupZ20V*SOFngZ4(UCp;eS%xQS2z zU9N^J0G5ehzF&Y<5gX6RGnLQskC8ZMll7D)A?U#N&qo;=8UXSj9s$e8HbL1Y1gZ#F z=y?V6^-RD5Y$+p6sJkV~ceX9&;FBL?ZTKWcxV+j?;CUIMRbkK?r1BEV{s2m@)5*JE zWX)8fn+NY-LQ`vw(a{X&`_imfy@7NffrQF!r2x|^&oHzGt+_lfuNa&Q07|KccJF)2 zY*_IDe*D}|$)=BxXkJF^`mK!KznRzi!3#jF5v*CjHqcr?1nq0I)|HcM420{=qOpn8 z1#bJ|!!-Y_lXTi8<=J#jz~~qRL-4te!m9WFg%@1L%C=ULg%W5%i$+9O1nBE45Rt=M z?^Z(xPW+|i)0@7>_?=%PD>ktpERQ>^jSk|x{3FhsI!of#6%_3)-2KTli07kyAE{)= z6jlCZ#fk+Ud}0-oU;p99TQ+X}2`k^}V&iSAsE*c>Ne|H9{ZHOHc#P!0d4~Si$ChtD z$*=Z2hU@|K-i%>YV+P~+u444uTbbc^+OvaQf0}*ml$U(tzx)-LSpYCiy52qc z_D4=1Ba;X)bxVlSn`b#QG|9Q6=Q#5HjqJ1|4GD}IjG#ki^g{8%@nJq(|a-0VyL}X^)HubPOJMpR9M9S%X zbx(RM`S;?!*ZsrE5snN_(*wK*WJF}{$|_QFRdXn%YAOa5M8uu{e&7jpPqx4})6+<2 zFMVApj?cOzfwYL^Z*-}+25_^e9KZ&0BI4X^{r>?EzP1uo`V{Q|0000 literal 0 HcmV?d00001 diff --git a/Chapter10/sdi/main.cpp b/Chapter10/sdi/main.cpp new file mode 100644 index 0000000..506e602 --- /dev/null +++ b/Chapter10/sdi/main.cpp @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +#include + +#include "sdiwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QTranslator translator; + translator.load( QString("sdi_")+QLocale::system().name() ); + app.installTranslator( &translator ); + + QTranslator qtTranslator; + qtTranslator.load( QString("qt_")+QLocale::system().name() ); + app.installTranslator( &qtTranslator ); + + (new SdiWindow)->show(); + QObject::connect( &app, SIGNAL(lastWindowClosed()), &app, SLOT(quit()) ); + + return app.exec(); +} diff --git a/Chapter10/sdi/qt_sv_SE.qm b/Chapter10/sdi/qt_sv_SE.qm new file mode 100644 index 0000000000000000000000000000000000000000..f9cacae10f6a755865fd6644ad8443ac3940394f GIT binary patch literal 66767 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 I`FVN&A2Q!Qk^lez literal 0 HcmV?d00001 diff --git a/Chapter10/sdi/qt_sv_SE.ts b/Chapter10/sdi/qt_sv_SE.ts new file mode 100644 index 0000000..7c53ba5 --- /dev/null +++ b/Chapter10/sdi/qt_sv_SE.ts @@ -0,0 +1,3124 @@ + + + + PPDOptionsModel + + Name + Namn + + + Value + Värde + + + + Q3Accel + + %1, %2 not defined + %1, %2 är inte definierad + + + Ambiguous %1 not handled + Tvetydigt %1 hanteras inte + + + + Q3DataTable + + True + Sant + + + False + Falskt + + + Insert + Infoga + + + Update + Uppdatera + + + Delete + Ta bort + + + + Q3FileDialog + + Copy or Move a File + Kopiera eller ta bort en fil + + + Read: %1 + Läs: %1 + + + Write: %1 + Skriv: %1 + + + Cancel + Avbryt + + + All Files (*) + Alla filer (*) + + + Name + Namn + + + Size + Storlek + + + Type + Typ + + + Date + Datum + + + Attributes + Attribut + + + &OK + &OK + + + Look &in: + Leta &i: + + + File &name: + Fil&namn: + + + File &type: + Fil&typ: + + + Back + Tillbaka + + + One directory up + En katalog uppÃ¥t + + + Create New Folder + Skapa ny mapp + + + List View + Listvy + + + Detail View + Detaljvy + + + Preview File Info + Förhandsgranska filinformation + + + Preview File Contents + Förhandsgranska filinnehÃ¥ll + + + Read-write + Läs-skriv + + + Read-only + Skrivskyddad + + + Write-only + Lässkyddad + + + Inaccessible + Otillgänglig + + + Symlink to File + Symbolisk länk till fil + + + Symlink to Directory + Symbolisk länk till katalog + + + Symlink to Special + Symbolisk länk till special + + + File + Fil + + + Dir + Katalog + + + Special + Special + + + Open + Öppna + + + Save As + Spara som + + + &Open + &Öppna + + + &Save + &Spara + + + &Rename + &Byt namn + + + &Delete + &Ta bort + + + R&eload + Uppdat&era + + + Sort by &Name + Sortera efter &namn + + + Sort by &Size + Sortera efter &storlek + + + Sort by &Date + Sortera efter &datum + + + &Unsorted + &Osorterad + + + Sort + Sortera + + + Show &hidden files + Visa &dolda filer + + + the file + filen + + + the directory + katalogen + + + the symlink + symboliska länken + + + Delete %1 + Ta bort %1 + + + <qt>Are you sure you wish to delete %1 "%2"?</qt> + <qt>Är du säker pÃ¥ att du vill ta bort %1 "%2"?</qt> + + + &Yes + &Ja + + + &No + &Nej + + + New Folder 1 + Ny mapp 1 + + + New Folder + Ny mapp + + + New Folder %1 + Ny mapp %1 + + + Find Directory + Hitta katalog + + + Directories + Kataloger + + + Directory: + Katalog: + + + Error + Fel + + + %1 +File not found. +Check path and filename. + %1 +Filen hittades inte. +Kontrollera sökväg och filnamn. + + + All Files (*.*) + Alla filer (*.*) + + + Open + Öppna + + + Select a Directory + Välj en katalog + + + + Q3LocalFs + + Could not read directory +%1 + Kunde inte läsa katalogen +%1 + + + Could not create directory +%1 + Kunde inte skapa katalogen +%1 + + + Could not remove file or directory +%1 + Kunde inte ta bort filen eller katalogen +%1 + + + Could not rename +%1 +to +%2 + Kunde inte byta namn pÃ¥ +%1 +till +%2 + + + Could not open +%1 + Kunde inte öppna +%1 + + + Could not write +%1 + Kunde inte skriva till +%1 + + + + Q3MainWindow + + Line up + Rada upp + + + Customize... + Anpassa... + + + + Q3NetworkProtocol + + Operation stopped by the user + Ã…tgärden stoppades av användaren + + + + Q3ProgressDialog + + Cancel + Avbryt + + + + Q3TabDialog + + OK + OK + + + Apply + Verkställ + + + Help + Hjälp + + + Defaults + Standardvärden + + + Cancel + Avbryt + + + + Q3TextEdit + + &Undo + &Ã…ngra + + + &Redo + &Gör om + + + Cu&t + Klipp u&t + + + &Copy + &Kopiera + + + &Paste + Klistra &in + + + Clear + Töm + + + Select All + Markera alla + + + + Q3TitleBar + + System + System + + + Restore up + Ã…terställ uppÃ¥t + + + Minimize + Minimera + + + Restore down + Ã…terställ nedÃ¥t + + + Maximize + Maximera + + + Close + Stäng + + + Contains commands to manipulate the window + InnehÃ¥ller kommandon för att manipulera fönstret + + + Puts a minimized back to normal + Ã…terställer ett minimerat till normalt + + + Moves the window out of the way + Flyttar fönstret ur vägen + + + Puts a maximized window back to normal + Ã…terställer ett maximerat fönster tillbaka till normalt + + + Makes the window full screen + Gör fönstret till helskärm + + + Closes the window + Stänger fönstret + + + Displays the name of the window and contains controls to manipulate it + Visar namnet pÃ¥ fönstret och innehÃ¥ller kontroller för att manipulera det + + + + Q3ToolBar + + More... + Mer... + + + + Q3UrlOperator + + The protocol `%1' is not supported + Protokollet \"%\" stöds inte + + + The protocol `%1' does not support listing directories + Protokollet \"%1\" har inte stöd för att lista kataloger + + + The protocol `%1' does not support creating new directories + Protokollet \"%1\" har inte stöd för att skapa nya kataloger + + + The protocol `%1' does not support removing files or directories + Protokollet \"%1\" har inte stöd för att ta bort filer eller kataloger + + + The protocol `%1' does not support renaming files or directories + Protokollet \"%1\" har inte stöd för att byta namn pÃ¥ filer eller kataloger + + + The protocol `%1' does not support getting files + Protokollet \"%1\" har inte stöd för att hämta filer + + + The protocol `%1' does not support putting files + Protokollet \"%1\" har inte stöd för att lämna filer + + + The protocol `%1' does not support copying or moving files or directories + Protokollet \"%1\" har inte stöd för att kopiera eller flytta filer eller kataloger + + + (unknown) + (okänt) + + + + Q3Wizard + + &Cancel + &Avbryt + + + < &Back + < Till&baka + + + &Next > + &Nästa > + + + &Finish + &Färdig + + + &Help + &Hjälp + + + + QAbstractSocket + + Host not found + Värden hittades inte + + + Connection refused + Anslutningen nekades + + + Socket operation timed out + Tidsgräns för uttagsÃ¥tgärd överstegs + + + Socket is not connected + Uttaget är inte anslutet + + + + QAbstractSpinBox + + &Step up + &Stega uppÃ¥t + + + Step &down + Stega &nedÃ¥t + + + + QApplication + + Activate + Aktivera + + + Executable '%1' requires Qt %2, found Qt %3. + Binären \"%1\" kräver Qt %2, hittade Qt %3. + + + Incompatible Qt Library Error + Inkompatibelt Qt-biblioteksfel + + + QT_LAYOUT_DIRECTION + Translate this string to the string 'LTR' in left-to-right languages or to 'RTL' in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout. + LTR + + + Activates the program's main window + Aktiverar programmets huvudfönster + + + + QAxSelect + + Select ActiveX Control + Välj ActiveX Control + + + OK + OK + + + &Cancel + &Avbryt + + + COM &Object: + COM-&objekt: + + + + QCheckBox + + Uncheck + Avkryssa + + + Check + Kryssa + + + Toggle + Växla + + + + QColorDialog + + Hu&e: + Nya&ns: + + + &Sat: + &Mättnad: + + + &Val: + &Ljushet: + + + &Red: + &Röd: + + + &Green: + &Grön: + + + Bl&ue: + Bl&Ã¥: + + + A&lpha channel: + Alfa&kanal: + + + &Basic colors + &Basfärger + + + &Custom colors + &Anpassade färger + + + &Define Custom Colors >> + &Definiera anpassade färger >> + + + OK + OK + + + Cancel + Avbryt + + + &Add to Custom Colors + &Lägg till i anpassade färger + + + Select color + Välj färg + + + + QComboBox + + Open + Öppna + + + + QDB2Driver + + Unable to connect + Kunde inte ansluta + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Unable to rollback transaction + Kunde inte rulla tillbaka transaktion + + + Unable to set autocommit + Kunde inte ställa in automatisk verkställning + + + + QDB2Result + + Unable to execute statement + Kunde inte köra frÃ¥gesats + + + Unable to prepare statement + Kunde inte förbereda frÃ¥gesats + + + Unable to bind variable + Kunde inte binda variabel + + + Unable to fetch record %1 + Kunde inte hämta posten %1 + + + Unable to fetch next + Kunde inte hämta nästa + + + Unable to fetch first + Kunde inte hämta första + + + + QDateTimeEdit + + AM + AM + + + am + am + + + PM + PM + + + pm + pm + + + + QDialog + + What's This? + Vad är det här? + + + + QDialogButtonBox + + OK + OK + + + Save + Spara + + + Open + Öppna + + + Cancel + Avbryt + + + Close + Stäng + + + Apply + Verkställ + + + Reset + Ã…terställ + + + Help + Hjälp + + + Don't Save + Spara inte + + + Discard + Förkasta + + + &Yes + &Ja + + + Yes to &All + Ja till &alla + + + &No + &Nej + + + N&o to All + N&ej till alla + + + Save All + Spara alla + + + Abort + Avbryt + + + Retry + Försök igen + + + Ignore + Ignorera + + + Restore Defaults + Ã…terställ standardvärden + + + + QDirModel + + Name + Namn + + + Size + Storlek + + + Kind + Match OS X Finder + Sort + + + Type + All other platforms + Typ + + + Date Modified + Ändringsdatum + + + + QErrorMessage + + Debug Message: + Felsökningsmeddelande: + + + Warning: + Varning: + + + Fatal Error: + Ödesdigert fel: + + + &Show this message again + &Visa detta meddelande igen + + + &OK + &OK + + + + QFileDialog + + All Files (*) + Alla filer (*) + + + Directories + Kataloger + + + &Open + &Öppna + + + &Save + &Spara + + + Open + Öppna + + + Save + Spara + + + %1 already exists. +Do you want to replace it? + %1 finns redan. +Vill du ersätta den? + + + %1 +File not found. +Please verify the correct file name was given. + %1 +Filen hittades inte. +Kontrollera att det korrekta filnamnet angavs. + + + My Computer + Min dator + + + Sort + Sortera + + + &Rename + &Byt namn + + + &Delete + &Ta bort + + + &Reload + &Uppdatera + + + Sort by &Name + Sortera efter &namn + + + Sort by &Size + Sortera efter &storlek + + + Sort by &Date + Sortera efter &datum + + + &Unsorted + &Osorterad + + + Show &hidden files + Visa &dolda filer + + + Back + Tillbaka + + + Parent Directory + Föräldrakatalog + + + Create New Folder + Skapa ny mapp + + + List View + Listvy + + + Detail View + Detaljerad vy + + + Look in: + Leta i: + + + File name: + Filnamn: + + + Files of type: + Filer av typen: + + + Cancel + Avbryt + + + Directory: + Katalog: + + + +File not found. +Please verify the correct file name was given + +Filen hittades inte. +Kontrollera att det korrekta filnamnet angavs + + + %1 +Directory not found. +Please verify the correct directory name was given. + %1 +Katalogen hittades inte. +Kontrollera att det korrekta katalognamnet angavs. + + + '%1' is write protected. +Do you want to delete it anyway? + \"%1\" är skrivskyddad. +Vill du ta bort den ändÃ¥? + + + Are sure you want to delete '%1'? + Är du säker pÃ¥ att du vill ta bort \"%1\"? + + + Could not delete directory. + Kunde inte ta bort katalogen. + + + All Files (*.*) + Alla filer (*.*) + + + Save As + Spara som + + + Open + Öppna + + + Select a Directory + Välj en katalog + + + Drive + Enhet + + + File + Fil + + + Unknown + Okänt + + + + QFontDialog + + &Font + &Typsnitt + + + Font st&yle + T&ypsnittsstil + + + &Size + &Storlek + + + Effects + Effekter + + + Stri&keout + Genomstru&ken + + + &Underline + &Understruken + + + Sample + Test + + + Wr&iting System + Skr&ivsystem + + + Select Font + Välj typsnitt + + + + QFtp + + Not connected + Inte ansluten + + + Host %1 not found + Värden %1 hittades inte + + + Connection refused to host %1 + Anslutningen till värden %1 vägrades + + + Connected to host %1 + Ansluten till värden %1 + + + Connection refused for data connection + Anslutning vägrades för dataanslutning + + + Unknown error + Okänt fel + + + Connecting to host failed: +%1 + Anslutning till värden misslyckades: +%1 + + + Login failed: +%1 + Inloggning misslyckades: +%1 + + + Listing directory failed: +%1 + Listning av katalogen misslyckades: +%1 + + + Changing directory failed: +%1 + Byte av katalog misslyckades: +%1 + + + Downloading file failed: +%1 + Nedladdningen av filen misslyckades: +%1 + + + Uploading file failed: +%1 + Uppladdningen av filen misslyckades: +%1 + + + Removing file failed: +%1 + Borttagning av filen misslyckades: +%1 + + + Creating directory failed: +%1 + Skapandet av katalogen misslyckades: +%1 + + + Removing directory failed: +%1 + Borttagning av katalogen misslyckades: +%1 + + + Connection closed + Anslutningen stängd + + + Host %1 found + Värden %1 hittades + + + Connection to %1 closed + Anslutningen till %1 stängdes + + + Host found + Värden hittades + + + Connected to host + Ansluten till värden + + + + QHostInfo + + Unknown error + Okänt fel + + + + QHostInfoAgent + + Host not found + Värden hittades inte + + + Unknown address type + Okänd adresstyp + + + Unknown error + Okänt fel + + + + QHttp + + Unknown error + Okänt fel + + + Request aborted + Begäran avbröts + + + No server set to connect to + Ingen server inställd att ansluta till + + + Wrong content length + Fel innehÃ¥llslängd + + + Server closed connection unexpectedly + Servern stängde oväntat anslutningen + + + Connection refused + Anslutningen nekades + + + Host %1 not found + Värden %1 hittades inte + + + HTTP request failed + HTTP-begäran misslyckades + + + Invalid HTTP response header + Ogiltig HTTP-svarshuvud + + + Invalid HTTP chunked body + Ogiltig HTTP chunked body + + + Host %1 found + Värden %1 hittades + + + Connected to host %1 + Ansluten till värden %1 + + + Connection to %1 closed + Anslutningen till %1 stängdes + + + Host found + Värden hittades + + + Connected to host + Ansluten till värd + + + Connection closed + Anslutningen stängd + + + + QIBaseDriver + + Error opening database + Fel vid öppning av databas + + + Could not start transaction + Kunde inte starta transaktion + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Unable to rollback transaction + Kunde inte rulla tillbaka transaktion + + + + QIBaseResult + + Unable to create BLOB + Kunde inte skapa BLOB + + + Unable to write BLOB + Kunde inte skriva BLOB + + + Unable to open BLOB + Kunde inte öppna BLOB + + + Unable to read BLOB + Kunde inte läsa BLOB + + + Could not find array + Kunde inte hitta kedja + + + Could not get array data + Kunde inte fÃ¥ kedjedata + + + Could not get query info + Kunde inte gÃ¥ frÃ¥gesatsinformation + + + Could not start transaction + Kunde inte starta transaktion + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Could not allocate statement + Kunde inte allokera frÃ¥gesats + + + Could not prepare statement + Kunde inte förbereda frÃ¥gesats + + + Could not describe input statement + Kunde inte beskriva inmatningsfrÃ¥gesats + + + Could not describe statement + Kunde inte beskriva frÃ¥gesats + + + Unable to close statement + Kunde inte stänga frÃ¥gesats + + + Unable to execute query + Kunde inte köra frÃ¥gesats + + + Could not fetch next item + Kunde inte hämta nästa post + + + Could not get statement info + Kunde inte fÃ¥ frÃ¥gesatsinformation + + + + QIODevice + + Permission denied + Ã…tkomst nekad + + + Too many open files + För mÃ¥nga öppna filer + + + No such file or directory + Ingen sÃ¥dan fil eller katalog + + + No space left on device + Inget ledigt utrymme pÃ¥ enheten + + + Unknown error + Okänt fel + + + + QInputContext + + XIM + XIM + + + XIM input method + XIM-inmatningsmetod + + + Windows input method + Windows-inmatningsmetod + + + Mac OS X input method + Mac OS X-inmatningsmetod + + + + QLibrary + + QLibrary::load_sys: Cannot load %1 (%2) + QLibrary::load_sys: Kan inte läsa in %1 (%2) + + + QLibrary::unload_sys: Cannot unload %1 (%2) + QLibrary::unload_sys: Kan inte läsa ur %1 (%2) + + + QLibrary::resolve_sys: Symbol "%1" undefined in %2 (%3) + QLibrary::resolve_sys: Symbolen "%1" är inte definierad i %2 (%3) + + + + QLineEdit + + &Undo + &Ã…ngra + + + &Redo + &Gör om + + + Cu&t + Klipp &ut + + + &Copy + &Kopiera + + + &Paste + Klistra &in + + + Delete + Ta bort + + + Select All + Markera alla + + + + QMYSQLDriver + + Unable to open database ' + Kunde inte öppna databasen \" + + + Unable to connect + Kunde inte ansluta + + + Unable to begin transaction + Kunde inte pÃ¥börja transaktion + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Unable to rollback transaction + Kunde inte rulla tillbaka transaktion + + + + QMYSQLResult + + Unable to fetch data + Kunde inte hämta data + + + Unable to execute query + Kunde inte köra frÃ¥gesats + + + Unable to store result + Kunde inte lagra resultat + + + Unable to prepare statement + Kunde inte förbereda frÃ¥gesats + + + Unable to reset statement + Kunde inte Ã¥terställa frÃ¥gesats + + + Unable to bind value + Kunde inte binda värde + + + Unable to execute statement + Kunde inte köra frÃ¥gesats + + + Unable to bind outvalues + Kunde inte binda utvärden + + + Unable to store statement results + Kunde inte lagra resultat frÃ¥n frÃ¥gesats + + + + QMenu + + Close + Stäng + + + Open + Öppna + + + Execute + Kör + + + + QMessageBox + + Help + Hjälp + + + OK + OK + + + About Qt + Om Qt + + + <p>This program uses Qt version %1.</p> + <p>Detta program använder Qt version %1.</p> + + + <h3>About Qt</h3>%1<p>Qt is a C++ toolkit for cross-platform application development.</p><p>Qt provides single-source portability across MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, and all major commercial Unix variants. Qt is also available for embedded devices as Qtopia Core.</p><p>Qt is a Trolltech product. See <a href="http://www.trolltech.com/qt/">www.trolltech.com/qt/</a> for more information.</p> + <h3>Om Qt</h3>%1<p>Qt är ett C++-verktygssamling för utveckling av krossplattformsprogram.</p><p>Qt tillhandahÃ¥ller portabilitet för samma källkod mellan MS&nbsp;Windows, Mac&nbsp;OS&nbsp;X, Linux, och alla andra stora kommersiella Unix-varianter. Qt finns ocksÃ¥ tillgängligt för inbäddade enheter som Qtopia Core.</p><p>Qt är en produkt frÃ¥n Trolltech. Se <a href="http://www.trolltech.com/qt/">www.trolltech.com/qt/</a> för mer information.</p> + + + <p>This program uses Qt Open Source Edition version %1.</p><p>Qt Open Source Edition is intended for the development of Open Source applications. You need a commercial Qt license for development of proprietary (closed source) applications.</p><p>Please see <a href="http://www.trolltech.com/company/model.html">www.trolltech.com/company/model.html</a> for an overview of Qt licensing.</p> + <p>Detta program använder öppna källkodsutgÃ¥van avQt version %1.</p><p>Öppna källkodsutgÃ¥van av Qt är tänkt för utvecklingen av program med öppen källkod. Du behöver en kommersiell Qt-licens för att utveckla properitära (stängd källkod) program.</p><p>Se <a href="http://www.trolltech.com/company/model.html">www.trolltech.com/company/model.html</a> för en översikt av licensmodellen för Qt.</p> + + + Show Details... + Visa detaljer... + + + Hide Details... + Dölj detaljer,,, + + + + QMultiInputContext + + Select IM + Välj inmatningsmetod + + + + QMultiInputContextPlugin + + Multiple input method switcher + Växlare för flera inmatningsmetoder + + + Multiple input method switcher that uses the context menu of the text widgets + Växlare för flera inmatningsmetoder som använder sammanhangsmenyn för textwidgar + + + + QNativeSocketEngine + + The remote host closed the connection + Fjärrvärden stängde anslutningen + + + Network operation timed out + Tidsgräns för nätverksÃ¥tgärd överstegs + + + Out of resources + Slut pÃ¥ resurser + + + Unsupported socket operation + UttagsÃ¥tgärden stöds inte + + + Protocol type not supported + Protokolltypen stöds inte + + + Invalid socket descriptor + Ogiltig uttagsbeskrivare + + + Network unreachable + Nätverket är inte nÃ¥bart + + + Permission denied + Ã…tkomst nekad + + + Connection timed out + Tidsgränsen för anslutning överstegs + + + Connection refused + Anslutningen vägrades + + + The bound address is already in use + Bindningsadress används redan + + + The address is not available + Adressen är inte tillgänglig + + + The address is protected + Adressen är skyddad + + + Unable to send a message + Kunde inte skicka ett meddelande + + + Unable to receive a message + Kunde inte ta emot ett meddelande + + + Unable to write + Kunde inte skriva + + + Network error + Nätverksfel + + + Another socket is already listening on the same port + Ett annat uttag lyssnar redan pÃ¥ samma port + + + Unable to initialize non-blocking socket + Kunde inte initiera icke-blockerande uttag + + + Unable to initialize broadcast socket + Kunde inte initiera uttag för broadcast + + + Attempt to use IPv6 socket on a platform with no IPv6 support + Försök att använda IPv6-uttag pÃ¥ en plattform som saknar IPv6-stöd + + + Host unreachable + Värden är inte nÃ¥bar + + + Datagram was too large to send + Datagram för för stor för att skicka + + + Operation on non-socket + Ã…tgärd pÃ¥ icke-uttag + + + Unknown error + Okänt fel + + + + QOCIDriver + + QOCIDriver + Unable to initialize + QOCIDriver + + + Unable to logon + Kunde inte logga in + + + + QOCIResult + + Unable to bind column for batch execute + Kunde inte binda kolumn för satskörning + + + Unable to execute batch statement + Kunde inte köra satsfrÃ¥ga + + + Unable to goto next + Kunde inte gÃ¥ till nästa + + + Unable to alloc statement + Kunde inte allokera frÃ¥gesats + + + Unable to prepare statement + Kunde inte förbereda frÃ¥gesats + + + Unable to bind value + Kunde inte binda värde + + + Unable to execute select statement + Kunde inte köra \"select\"-frÃ¥gesats + + + Unable to execute statement + Kunde inte köra frÃ¥gesats + + + + QODBCDriver + + Unable to connect + Kunde inte ansluta + + + Unable to connect - Driver doesn't support all needed functionality + Kunde inte ansluta - Drivrutinen har inte stöd för all nödvändig funktionalitet + + + Unable to disable autocommit + Kunde inte inaktivera automatisk verkställning + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Unable to rollback transaction + Kunde inte rulla tillbaka transaktion + + + Unable to enable autocommit + Kunde inte aktivera automatisk verkställning + + + + QODBCResult + + QODBCResult::reset: Unable to set 'SQL_CURSOR_STATIC' as statement attribute. Please check your ODBC driver configuration + QODBCResult::reset: Kunde inte ställa in \"SQL_CURSOR_STATIC\" som frÃ¥gesatsattribut. Kontrollera konfigurationen för din ODBC-drivrutin + + + Unable to execute statement + Kunde inte köra frÃ¥gesats + + + Unable to fetch next + Kunde inte hämta nästa + + + Unable to prepare statement + Kunde inte förbereda frÃ¥gesats + + + Unable to bind variable + Kunde inte binda variabel + + + + QObject + + False + Falskt + + + True + Sant + + + + QPSQLDriver + + Unable to connect + Kunde inte ansluta + + + Could not begin transaction + Kunde inte pÃ¥börja transaktion + + + Could not commit transaction + Kunde inte verkställa transaktion + + + Could not rollback transaction + Kunde inte rulla tillbaka transaktion + + + + QPSQLResult + + Unable to create query + Kunde inte skapa frÃ¥ga + + + + QPrintDialog + + locally connected + lokalt ansluten + + + Aliases: %1 + Alias: %1 + + + unknown + okänt + + + Portrait + StÃ¥ende + + + Landscape + Liggande + + + A0 (841 x 1189 mm) + A0 (841 x 1189 mm) + + + A1 (594 x 841 mm) + A1 (594 x 841 mm) + + + A2 (420 x 594 mm) + A2 (420 x 594 mm) + + + A3 (297 x 420 mm) + A3 (297 x 420 mm) + + + A4 (210 x 297 mm, 8.26 x 11.7 inches) + A4 (210 x 297 mm, 8.26 x 11.7 tum) + + + A5 (148 x 210 mm) + A5 (148 x 210 mm) + + + A6 (105 x 148 mm) + A6 (105 x 148 mm) + + + A7 (74 x 105 mm) + A7 (74 x 105 mm) + + + A8 (52 x 74 mm) + A8 (52 x 74 mm) + + + A9 (37 x 52 mm) + A9 (37 x 52 mm) + + + B0 (1000 x 1414 mm) + B0 (1000 x 1414 mm) + + + B1 (707 x 1000 mm) + B1 (707 x 1000 mm) + + + B2 (500 x 707 mm) + B2 (500 x 707 mm) + + + B3 (353 x 500 mm) + B3 (353 x 500 mm) + + + B4 (250 x 353 mm) + B4 (250 x 353 mm) + + + B5 (176 x 250 mm, 6.93 x 9.84 inches) + B5 (176 x 250 mm, 6.93 x 9.84 tum) + + + B6 (125 x 176 mm) + B6 (125 x 176 mm) + + + B7 (88 x 125 mm) + B7 (88 x 125 mm) + + + B8 (62 x 88 mm) + B8 (62 x 88 mm) + + + B9 (44 x 62 mm) + B9 (44 x 62 mm) + + + B10 (31 x 44 mm) + B10 (31 x 44 mm) + + + C5E (163 x 229 mm) + C5E (163 x 229 mm) + + + DLE (110 x 220 mm) + DLE (110 x 220 mm) + + + Executive (7.5 x 10 inches, 191 x 254 mm) + Executive (7.5 x 10 tum, 191 x 254 mm) + + + Folio (210 x 330 mm) + Folio (210 x 330 mm) + + + Ledger (432 x 279 mm) + Ledger (432 x 279 mm) + + + Legal (8.5 x 14 inches, 216 x 356 mm) + Legal (8.5 x 14 tum, 216 x 356 mm) + + + Letter (8.5 x 11 inches, 216 x 279 mm) + Letter (8.5 x 11 tum, 216 x 279 mm) + + + Tabloid (279 x 432 mm) + Tabloid (279 x 432 mm) + + + US Common #10 Envelope (105 x 241 mm) + US Common #10 Envelope (105 x 241 mm) + + + OK + OK + + + Cancel + Avbryt + + + Page size: + Sidstorlek: + + + Orientation: + Orientering: + + + Paper source: + Papperskälla: + + + Print + Skriv ut + + + File + Fil + + + Printer + Skrivare + + + Print To File ... + Skriv ut till fil ... + + + Print dialog + Utskriftsdialog + + + Paper format + Pappersformat + + + Size: + Storlek: + + + Properties + Egenskaper + + + Printer info: + Skrivarinformation: + + + Browse + Bläddra + + + Print to file + Skriv ut till fil + + + Print range + Skriv ut intervall + + + Print all + Skriv ut alla + + + Pages from + Sidor frÃ¥n + + + to + till + + + Selection + Val + + + Copies + Kopior + + + Number of copies: + Antal kopior: + + + Collate + Sortera + + + Print last page first + Skriv ut sista sidan först + + + Other + Annat + + + Print in color if available + Skriv ut i färg om möjligt + + + Double side printing + Dubbelsidig utskrift + + + File %1 is not writable. +Please choose a different file name. + Filen %1 är inte skrivbar. +Välj ett annat filnamn. + + + %1 already exists. +Do you want to overwrite it? + %1 finns redan. +Vill du skriva över den? + + + + QPrintPropertiesDialog + + PPD Properties + PPD-egenskaper + + + Save + Spara + + + OK + OK + + + + QProgressBar + + %1% + %1% + + + + QProgressDialog + + Cancel + Avbryt + + + + QPushButton + + Open + Öppna + + + + QRadioButton + + Check + Kryssa + + + + QRegExp + + no error occurred + inga fel inträffade + + + disabled feature used + inaktiverad funktion används + + + bad char class syntax + felaktig teckenklasssyntax + + + bad lookahead syntax + felaktig seframÃ¥tsyntax + + + bad repetition syntax + felaktig upprepningssyntax + + + invalid octal value + ogiltigt oktalt värde + + + missing left delim + saknar vänster avgränsare + + + unexpected end + oväntat slut + + + met internal limit + nÃ¥dde intern gräns + + + + QSQLite2Driver + + Error to open database + Fel vid öppning av databas + + + Unable to begin transaction + Kunde inte pÃ¥börja transaktion + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Unable to rollback Transaction + Kunde inte rulla tillbaka transaktion + + + + QSQLite2Result + + Unable to fetch results + Kunde inte hämta resultat + + + Unable to execute statement + Kunde inte köra frÃ¥gesats + + + + QSQLiteDriver + + Error opening database + Fel vid öppning av databas + + + Error closing database + Fel vid stängning av databas + + + Unable to begin transaction + Kunde inte pÃ¥börja transaktion + + + Unable to commit transaction + Kunde inte verkställa transaktion + + + Unable to roll back transaction + Kunde inte rulla tillbaka transaktion + + + + QSQLiteResult + + Unable to fetch row + Kunde inte hämta rad + + + Unable to execute statement + Kunde inte köra frÃ¥gesats + + + Unable to reset statement + Kunde inte Ã¥terställa frÃ¥gesats + + + Unable to bind parameters + Kunde inte binda parametrar + + + Parameter count mismatch + Parameterantal stämmer inte + + + + QScrollBar + + Scroll here + Rulla här + + + Left edge + Vänsterkant + + + Top + Överkant + + + Right edge + Högerkant + + + Bottom + Nederkant + + + Page left + Sida vänster + + + Page up + Sida uppÃ¥t + + + Page right + Sida höger + + + Page down + Sida nedÃ¥t + + + Scroll left + Rulla vänster + + + Scroll up + Rulla uppÃ¥t + + + Scroll right + Rulla höger + + + Scroll down + Rulla nedÃ¥t + + + Line up + Rada upp + + + Position + Position + + + Line down + Rad nedÃ¥t + + + + QShortcut + + Space + Mellanslag + + + Esc + Esc + + + Tab + Tab + + + Backtab + Backtab + + + Backspace + Backsteg + + + Return + Return + + + Enter + Enter + + + Ins + Ins + + + Del + Del + + + Pause + Pause + + + Print + Print + + + SysReq + SysReq + + + Home + Home + + + End + End + + + Left + Vänster + + + Up + Upp + + + Right + Höger + + + Down + Ned + + + PgUp + PgUp + + + PgDown + PgDown + + + CapsLock + CapsLock + + + NumLock + NumLock + + + ScrollLock + ScrollLock + + + Menu + Meny + + + Help + Hjälp + + + Back + BakÃ¥t + + + Forward + FramÃ¥t + + + Stop + Stoppa + + + Refresh + Uppdatera + + + Volume Down + Sänk volym + + + Volume Mute + Volym tyst + + + Volume Up + Höj volym + + + Bass Boost + Förstärk bas + + + Bass Up + Höj bas + + + Bass Down + Sänk bas + + + Treble Up + Höj diskant + + + Treble Down + Sänk diskant + + + Media Play + Media spela upp + + + Media Stop + Media stopp + + + Media Previous + Media föregÃ¥ende + + + Media Next + Media nästa + + + Media Record + Media spela in + + + Favorites + Favoriter + + + Search + Sök + + + Standby + Avvakta + + + Open URL + Öppna url + + + Launch Mail + Starta e-post + + + Launch Media + Starta media + + + Launch (0) + Starta (0) + + + Launch (1) + Starta (1) + + + Launch (2) + Starta (2) + + + Launch (3) + Starta (3) + + + Launch (4) + Starta (4) + + + Launch (5) + Starta (5) + + + Launch (6) + Starta (6) + + + Launch (7) + Starta (7) + + + Launch (8) + Starta (8) + + + Launch (9) + Starta (9) + + + Launch (A) + Starta (A) + + + Launch (B) + Starta (B) + + + Launch (C) + Starta (C) + + + Launch (D) + Starta (D) + + + Launch (E) + Starta (E) + + + Launch (F) + Starta (F) + + + Print Screen + Print Screen + + + Page Up + Page Up + + + Page Down + Page Down + + + Caps Lock + Caps Lock + + + Num Lock + Num Lock + + + Number Lock + Number Lock + + + Scroll Lock + Scroll Lock + + + Insert + Insert + + + Delete + Delete + + + Escape + Escape + + + System Request + System Request + + + Select + Välj + + + Yes + Ja + + + No + Nej + + + Context1 + Sammanhang1 + + + Context2 + Sammanhang2 + + + Context3 + Sammanhang3 + + + Context4 + Sammanhang4 + + + Call + Ring upp + + + Hangup + Lägg pÃ¥ + + + Flip + Vänd + + + Ctrl + Ctrl + + + Shift + Shift + + + Alt + Alt + + + Meta + Meta + + + + + + + + + F%1 + F%1 + + + Home Page + Hemsida + + + + QSlider + + Page left + Sida vänster + + + Page up + Sida uppÃ¥t + + + Position + Position + + + Page right + Sida höger + + + Page down + Sida nedÃ¥t + + + + QSocks5SocketEngine + + Socks5 timeout error connecting to socks server + Tidsgräns för Socks5 överstigen vid anslutningen till socks-server + + + + QSpinBox + + More + Mer + + + Less + Mindre + + + + QSql + + Delete + Ta bort + + + Delete this record? + Ta bort denna post? + + + Yes + Ja + + + No + Nej + + + Insert + Infoga + + + Update + Uppdatera + + + Save edits? + Spara redigeringar? + + + Cancel + Avbryt + + + Confirm + Bekräfta + + + Cancel your edits? + Avbryt dina redigeringar? + + + + QTDSDriver + + Unable to open connection + Kunde inte öppna anslutning + + + Unable to use database + Kunde inte använda databasen + + + + QTabBar + + Scroll Left + Rulla vänster + + + Scroll Right + Rulla höger + + + + QTcpServer + + Socket operation unsupported + UttagsÃ¥tgärd stöds inte + + + + QTextControl + + &Undo + &Ã…ngra + + + &Redo + &Gör om + + + Cu&t + Klipp u&t + + + &Copy + &Kopiera + + + Copy &Link Location + Kopiera &länkplats + + + &Paste + Klistra &in + + + Delete + Ta bort + + + Select All + Markera alla + + + + QToolButton + + Press + Tryck + + + Open + Öppna + + + + QUdpSocket + + This platform does not support IPv6 + Denna plattform saknar stöd för IPv6 + + + + QUndoGroup + + Undo + Ã…ngra + + + Redo + Gör om + + + + QUndoModel + + <empty> + <tom> + + + + QUndoStack + + Undo + Ã…ngra + + + Redo + Gör om + + + + QUnicodeControlCharacterMenu + + LRM Left-to-right mark + U+200E + + + RLM Right-to-left mark + U+200F + + + ZWJ Zero width joiner + U+200D + + + ZWNJ Zero width non-joiner + U+200C + + + ZWSP Zero width space + U+200B + + + LRE Start of left-to-right embedding + U+202A + + + RLE Start of right-to-left embedding + U+202B + + + LRO Start of left-to-right override + U+202D + + + RLO Start of right-to-left override + U+202E + + + PDF Pop directional formatting + U+202C + + + Insert Unicode control character + Infoga unicode-kontrolltecken + + + + QWhatsThisAction + + What's This? + Vad är det här? + + + + QWidget + + * + * + + + + QWorkspace + + &Restore + Ã…te&rställ + + + &Move + &Flytta + + + &Size + &Storlek + + + Mi&nimize + Mi&nimera + + + Ma&ximize + Ma&ximera + + + &Close + &Stäng + + + Stay on &Top + Stanna kvar övers&t + + + Sh&ade + Skugg&a + + + %1 - [%2] + %1 - [%2] + + + Minimize + Minimera + + + Restore Down + Ã…terställ nedÃ¥t + + + Close + Stäng + + + &Unshade + A&vskugga + + + + QXml + + no error occurred + inga fel inträffade + + + error triggered by consumer + fel utlöstes av konsument + + + unexpected end of file + oväntat slut pÃ¥ filen + + + more than one document type definition + fler än en dokumenttypsdefinition + + + error occurred while parsing element + fel inträffade vid tolkning av element + + + tag mismatch + tagg stämmer inte + + + error occurred while parsing content + fel inträffade vid tolkning av innehÃ¥ll + + + unexpected character + oväntat tecken + + + invalid name for processing instruction + ogiltigt namn för behandlingsinstruktion + + + version expected while reading the XML declaration + version förväntades vid läsning av XML-deklareringen + + + wrong value for standalone declaration + fel värde för fristÃ¥ende deklarering + + + encoding declaration or standalone declaration expected while reading the XML declaration + kodningsdeklarering eller fristÃ¥ende deklarering förväntades vid läsning av XML-deklareringen + + + standalone declaration expected while reading the XML declaration + fristÃ¥ende deklarering förväntades vid läsning av XML-deklarering + + + error occurred while parsing document type definition + fel inträffade vid tolkning av dokumenttypsdefinition + + + letter is expected + bokstav förväntades + + + error occurred while parsing comment + fel inträffade vid tolkning av kommentar + + + error occurred while parsing reference + fel inträffade vid tolkning av referens + + + internal general entity reference not allowed in DTD + intern allmän entitetsreferens tillÃ¥ts inte i DTD + + + external parsed general entity reference not allowed in attribute value + extern tolkad allmän entitetsreferens tillÃ¥ts inte i attributvärde + + + external parsed general entity reference not allowed in DTD + extern tolkad allmän entitetsreferens tillÃ¥ts inte i DTD + + + unparsed entity reference in wrong context + otolkad entitetsreferens i fel sammanhang + + + recursive entities + rekursiva entiteter + + + error in the text declaration of an external entity + fel i textdeklareringen av en extern entitet + + + diff --git a/Chapter10/sdi/sdi.pro b/Chapter10/sdi/sdi.pro new file mode 100644 index 0000000..b141ccd --- /dev/null +++ b/Chapter10/sdi/sdi.pro @@ -0,0 +1,16 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 28. sep 16:43:38 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += sdiwindow.h +SOURCES += main.cpp sdiwindow.cpp +RESOURCES += images.qrc + +TRANSLATIONS += sdi_sv_SE.ts +CONFIG += console diff --git a/Chapter10/sdi/sdi_sv_SE.qm b/Chapter10/sdi/sdi_sv_SE.qm new file mode 100644 index 0000000000000000000000000000000000000000..5316a4e94be435a9a812a818c38cb3e1b8a0abbc GIT binary patch literal 3394 zcmb7GU1%It82xrLyGgcdTGO>uD)kCx2)icQB7IRPag*9wlepQM6k?>)ok=ogGPCT= zCa&UB``{mnmWU6&h}zN?@*t&JiVC8sD5BsGzK95Y5G*Jt?L$F5_hxryGkYhC4cW7u zobS8m`@Qqvhx*Ph|9ETV>$~pwd9MfTv`Rb)-&_NyF^X^J{#EK7JjIN8CuCK*&AE#T*!a!tZd zgRiz|Rq|C;Cbmn&rBNmDJM7qo#P2qAmq9vo%!QSV=%&nfiiV(g0TxSv_XDOS_pV07 znNTAF?M0YTk`ii!rZkLNRVCC2S)6{5o}#NrXi)fsdeE@Sk{ogRkGx07ZmLv59WNVp z1ic6{(!YUT)RyEq8iM~Nav`QlUbD%F`n0qJy`sD(Oh6}wQrLbe5|3%FCp(9sf$O4R zqNDp3aNZ)SZo`d1p6}vTu9SK62GgBVb;ua9IWDqt2k(` ziJ!L|S0;3ah)zXRJU-+w6k$@03h_}I6;?czH7X%M4S^c)!$hDuP=ikoc)d|je3vAH z27RTO0~)$pXP(0xRGiJ?e}j^`|DV&{%}XIa-Q{J8Iz3H!ku3|?M&8$+%zG6pmzSt* z=8uK=V{Q23A^vz9ej&s!wBZ*+{9+saWQaf6hCdbJPqpD64e^gk`1fD|H4QQPmiHQ8 z8vKIco#+7_%m4={OBL04tpD9EM5b zpZp0QYzAIq@cA?h;@X?UUoHIb-mh+8aO>Ivt!nr=^(n`<{eFz2N18SX zo7Y@cwRtP+tTeCLbA~&Z8g^LCsj_9wMlu{G8Xb8#Zp=CrgW;R$vJzhx`hH33`>|je z2lIfi%kaY`hX&i1v|a2TU}R!wENhNv>x>T2tTg4zUE+9dBOIblvyHw~Fp{ zd-=OX!$hS*)3&ags0G=U&TLrvE_z69+Sy%V(W^tQB&oeEmcg#?6n0XxyMvn&iCeEk zbRD+xE0k%Q)nE`h`1J4&4jkIp@9TR!s>HYDD~9G7aBdsRn;pQrr!gKaN<{>`v7M&0 zWkmSR_aoC}DeMs~vxrX%*Ny8pNoUozwM9dhWPOrGK#$rS!7ax7aRK72aEoIHRKx_k z5N%`1d6t5^tbd5Prafl`S35IpĉC8R1?L9+X8cfDiLd{DTA)A?(lhf45Q$KdrL z)0hE+75F$i)`IjcCPRI+ho&h@Gw?Tn-#*&wCn?ppXF5B>23X(TP@bO0+ju+{`wy&Z BpA-N9 literal 0 HcmV?d00001 diff --git a/Chapter10/sdi/sdi_sv_SE.ts b/Chapter10/sdi/sdi_sv_SE.ts new file mode 100644 index 0000000..00ddcab --- /dev/null +++ b/Chapter10/sdi/sdi_sv_SE.ts @@ -0,0 +1,233 @@ + + + + SdiWindow + + + %1[*] - %2 + %1[*] - %2 + + + + unnamed + namnlös + + + + SDI + SDI + + + + Done + Klar + + + + About SDI + Om SDI + + + + A single document interface application. + En applikation med enkeldokumentgränssnitt. + + + + &New + &Ny + + + + Ctrl+N + Ctrl+N + + + + Create a new document + Skapa ett nytt dokument + + + + &Open + &Öppna + + + + Ctrl+O + Ctrl+O + + + + Open a document + Öppna ett dokument + + + + &Save + &Spara + + + + Ctrl+S + Ctrl+S + + + + Save the document + Spara dokumentet + + + + Save &As + Spara so&m + + + + Save the document as + Spara dokumentet som + + + + &Close + S&täng + + + + Ctrl+W + Ctrl+W + + + + Close this document + Stäng detta dokument + + + + E&xit + A&vsluta + + + + Ctrl+Q + Ctrl+Q + + + + Quit the application + Avslutar applikationen + + + + Cu&t + K&lipp + + + + Ctrl+X + Ctrl+X + + + + Cut + Klipp + + + + &Copy + &Kopiera + + + + Ctrl+C + Ctrl+C + + + + Copy + Kopiera + + + + &Paste + Kl&istra in + + + + Ctrl+V + Ctrl+V + + + + Paste + Klista in + + + + &About + &Om + + + + About this application + Om denna applikation + + + + About &Qt + Om &Qt + + + + About the Qt toolkit + Om Qt verktyget + + + + &File + &Arkiv + + + + &Edit + &Redigera + + + + &Help + &Hjälp + + + + File + Arkiv + + + + Edit + Redigera + + + + The document has unsaved changes. +Do you want to save it before it is closed? + Dokumentets ändringar är inte sparade. +Vill du spara ändringarna innan dokumentet stängs? + + + + Save As + Spara som + + + + Failed to save file. + Misslyckades med att spara dokumentet. + + + + Failed to open file. + Misslyckades med att öppna dokumentet. + + + diff --git a/Chapter10/sdi/sdiwindow.cpp b/Chapter10/sdi/sdiwindow.cpp new file mode 100644 index 0000000..56cf147 --- /dev/null +++ b/Chapter10/sdi/sdiwindow.cpp @@ -0,0 +1,271 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include "sdiwindow.h" + +SdiWindow::SdiWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + setWindowTitle( tr("%1[*] - %2" ).arg(tr("unnamed")).arg(tr("SDI")) ); + + docWidget = new QTextEdit( this ); + setCentralWidget( docWidget ); + + connect( docWidget->document(), SIGNAL(modificationChanged(bool)), this, SLOT(setWindowModified(bool)) ); + + createActions(); + createMenus(); + createToolbars(); + statusBar()->showMessage( tr("Done") ); +} + +void SdiWindow::closeEvent( QCloseEvent *event ) +{ + if( isSafeToClose() ) + event->accept(); + else + event->ignore(); +} + +void SdiWindow::fileNew() +{ + (new SdiWindow())->show(); +} + +void SdiWindow::helpAbout() +{ + QMessageBox::about( this, tr("About SDI"), tr("A single document interface application.") ); +} + +void SdiWindow::createActions() +{ + newAction = new QAction( QIcon(":/images/new.png"), tr("&New"), this ); + newAction->setShortcut( tr("Ctrl+N") ); + newAction->setStatusTip( tr("Create a new document") ); + connect( newAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + openAction = new QAction( tr("&Open"), this ); + openAction->setShortcut( tr("Ctrl+O") ); + openAction->setStatusTip( tr("Open a document") ); + connect( openAction, SIGNAL(triggered()), this, SLOT(fileOpen()) ); + + saveAction = new QAction( tr("&Save"), this ); + saveAction->setShortcut( tr("Ctrl+S") ); + saveAction->setStatusTip( tr("Save the document") ); + connect( saveAction, SIGNAL(triggered()), this, SLOT(fileSave()) ); + + saveAsAction = new QAction( tr("Save &As"), this ); + saveAsAction->setStatusTip( tr("Save the document as") ); + connect( saveAsAction, SIGNAL(triggered()), this, SLOT(fileSaveAs()) ); + + closeAction = new QAction( tr("&Close"), this ); + closeAction->setShortcut( tr("Ctrl+W") ); + closeAction->setStatusTip( tr("Close this document") ); + connect( closeAction, SIGNAL(triggered()), this, SLOT(close()) ); + + exitAction = new QAction( tr("E&xit"), this ); + exitAction->setShortcut( tr("Ctrl+Q") ); + exitAction->setStatusTip( tr("Quit the application") ); + connect( exitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + + cutAction = new QAction( QIcon(":/images/cut.png"), tr("Cu&t"), this ); + cutAction->setShortcut( tr("Ctrl+X") ); + cutAction->setStatusTip( tr("Cut") ); + cutAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), cutAction, SLOT(setEnabled(bool)) ); + connect( cutAction, SIGNAL(triggered()), docWidget, SLOT(cut()) ); + + copyAction = new QAction( QIcon(":/images/copy.png"), tr("&Copy"), this ); + copyAction->setShortcut( tr("Ctrl+C") ); + copyAction->setStatusTip( tr("Copy") ); + copyAction->setEnabled(false); + connect( docWidget, SIGNAL(copyAvailable(bool)), copyAction, SLOT(setEnabled(bool)) ); + connect( copyAction, SIGNAL(triggered()), docWidget, SLOT(copy()) ); + + + pasteAction = new QAction( QIcon(":/images/paste.png"), tr("&Paste"), this ); + pasteAction->setShortcut( tr("Ctrl+V") ); + pasteAction->setStatusTip( tr("Paste") ); + connect( pasteAction, SIGNAL(triggered()), docWidget, SLOT(paste()) ); + + + aboutAction = new QAction( tr("&About"), this ); + aboutAction->setStatusTip( tr("About this application") ); + connect( aboutAction, SIGNAL(triggered()), this, SLOT(helpAbout()) ); + + aboutQtAction = new QAction( tr("About &Qt"), this ); + aboutQtAction->setStatusTip( tr("About the Qt toolkit") ); + connect( aboutQtAction, SIGNAL(triggered()), qApp, SLOT(aboutQt()) ); +} + +void SdiWindow::createMenus() +{ + QMenu *menu; + + menu = menuBar()->addMenu( tr("&File") ); + menu->addAction( newAction ); + menu->addSeparator(); + menu->addAction( openAction ); + menu->addAction( saveAction ); + menu->addAction( saveAsAction ); + menu->addSeparator(); + menu->addAction( closeAction ); + menu->addSeparator(); + menu->addAction( exitAction ); + + menu = menuBar()->addMenu( tr("&Edit") ); + menu->addAction( cutAction ); + menu->addAction( copyAction ); + menu->addAction( pasteAction ); + + menu = menuBar()->addMenu( tr("&Help") ); + menu->addAction( aboutAction ); + menu->addAction( aboutQtAction ); +} + +void SdiWindow::createToolbars() +{ + QToolBar *toolbar; + + toolbar = addToolBar( tr("File") ); + toolbar->addAction( newAction ); + + toolbar = addToolBar( tr("Edit") ); + toolbar->addAction( cutAction ); + toolbar->addAction( copyAction ); + toolbar->addAction( pasteAction ); +} + + + +bool SdiWindow::isSafeToClose() +{ + if( isWindowModified() ) + { + switch( QMessageBox::warning( this, tr("SDI"), + tr("The document has unsaved changes.\n" + "Do you want to save it before it is closed?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel ) ) + { + case QMessageBox::Cancel: + return false; + case QMessageBox::Save: + return fileSave(); + default: + return true; + } + } + + return true; +} + +void SdiWindow::fileOpen() +{ + QString filename = QFileDialog::getOpenFileName( this ); + if( filename.isEmpty() ) + return; + + if( currentFilename.isEmpty() && !docWidget->document()->isModified() ) + loadFile( filename ); + else + { + SdiWindow *window = new SdiWindow(); + window->loadFile( filename ); + window->show(); + } +} + +bool SdiWindow::fileSave() +{ + if( currentFilename.isEmpty() ) + return fileSaveAs(); + else + return saveFile( currentFilename ); +} + +bool SdiWindow::fileSaveAs() +{ + QString filename = QFileDialog::getSaveFileName( this, tr("Save As"), currentFilename ); + if( filename.isEmpty() ) + return false; + + return saveFile( filename ); +} + +bool SdiWindow::saveFile( QString filename ) +{ + QFile file( filename ); + if( !file.open( QIODevice::WriteOnly | QIODevice::Text ) ) + { + QMessageBox::warning( this, tr("SDI"), tr("Failed to save file.") ); + return false; + } + + QTextStream stream( &file ); + stream << docWidget->toPlainText(); + + currentFilename = filename; + docWidget->document()->setModified( false ); + setWindowTitle( tr("%1[*] - %2" ).arg(filename).arg(tr("SDI")) ); + + return true; +} + +void SdiWindow::loadFile( QString filename ) +{ + QFile file( filename ); + if( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) + { + QMessageBox::warning( this, tr("SDI"), tr("Failed to open file.") ); + return; + } + + QTextStream stream( &file ); + docWidget->setPlainText( stream.readAll() ); + + currentFilename = filename; + docWidget->document()->setModified( false ); + setWindowTitle( tr("%1[*] - %2" ).arg(filename).arg(tr("SDI")) ); +} diff --git a/Chapter10/sdi/sdiwindow.h b/Chapter10/sdi/sdiwindow.h new file mode 100644 index 0000000..bb07eb6 --- /dev/null +++ b/Chapter10/sdi/sdiwindow.h @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SDIWINDOW_H +#define SDIWINDOW_H + +#include + +class QAction; +class QTextEdit; + +class SdiWindow : public QMainWindow +{ + Q_OBJECT + +public: + SdiWindow( QWidget *parent = 0 ); + +protected: + void closeEvent( QCloseEvent *event ); + +private slots: + void fileNew(); + void helpAbout(); + + void fileOpen(); + bool fileSave(); + bool fileSaveAs(); + +private: + void createActions(); + void createMenus(); + void createToolbars(); + + bool isSafeToClose(); + + bool saveFile( QString filename ); + void loadFile( QString filename ); + QString currentFilename; + + QTextEdit *docWidget; + + QAction *newAction; + QAction *openAction; + QAction *saveAction; + QAction *saveAsAction; + QAction *closeAction; + QAction *exitAction; + + QAction *cutAction; + QAction *copyAction; + QAction *pasteAction; + + QAction *aboutAction; + QAction *aboutQtAction; +}; + +#endif // SDIWINDOW_H diff --git a/Chapter11/README.txt b/Chapter11/README.txt new file mode 100644 index 0000000..bc27e22 --- /dev/null +++ b/Chapter11/README.txt @@ -0,0 +1,43 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 11 - Plugins + +imageplugin + + Listings 11-1, 11-2, 11-3, 11-4, 11-5, 11-6, 11-7, 11-8, 11-9, 11-10, 11-11, + 11-12, 11-13, 11-14 + + Shows how to implement an image format plug-in for reading and writing ASCII + art. + + +customlib + + Listings 11-15, 11-16, 11-17, 11-18, 11-19, 11-20, 11-21, 11-22, 11-23, 11-24, + 11-25 + + Shows how to extend an application with a plugin of your own. + + +staticplugin + + Listings 11-26, 11-27, 11-28, 11-29 + + Shows how to link a plugin statically into an application. + + +factoryplugin + + Listings 11-30, 11-31, 11-32, 11-33, 11-34 + + Shows how to use a factory interface in your plugin to be able to serve + several plugable classes through the same plugin. + + +customplugin + + Listings 11-35, 11-36, 11-37 + + Shows how to interface a plugin directly without involving Qt's plugin + handling classes. \ No newline at end of file diff --git a/Chapter11/customlib/customlib.pro b/Chapter11/customlib/customlib.pro new file mode 100644 index 0000000..abcce76 --- /dev/null +++ b/Chapter11/customlib/customlib.pro @@ -0,0 +1,8 @@ +TEMPLATE = app +TARGET = +DEPENDPATH += . lib +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter11/customlib/lib/Makefile b/Chapter11/customlib/lib/Makefile new file mode 100644 index 0000000..5d60f6e --- /dev/null +++ b/Chapter11/customlib/lib/Makefile @@ -0,0 +1,11 @@ +all: sum.dll + +sum.o: sum.c + gcc -c sum.c + +sum.dll: sum.o + gcc -shared -o sum.dll sum.o + +clean: + @del sum.o + @del sum.dll \ No newline at end of file diff --git a/Chapter11/customlib/lib/sum.c b/Chapter11/customlib/lib/sum.c new file mode 100644 index 0000000..3552dba --- /dev/null +++ b/Chapter11/customlib/lib/sum.c @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +int sum( int len, char *data ) +{ + int i; + int sum = 0x5a; + + for( i=0; i + +#include + +typedef int (*SumFunction)(int,char*); + +int main( int argc, char **argv ) +{ + QLibrary library( "lib/sum" ); + + library.load(); + if( !library.isLoaded() ) + { + qDebug() << "Cannot load library."; + return 0; + } + + SumFunction sum = (SumFunction)library.resolve( "sum" ); + if( sum ) + qDebug() << "sum of 'Qt Rocks!' = " << sum( 9, "Qt Rocks!" ); + + return 0; +} diff --git a/Chapter11/customplugin/customplugin.pro b/Chapter11/customplugin/customplugin.pro new file mode 100644 index 0000000..9498aad --- /dev/null +++ b/Chapter11/customplugin/customplugin.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 11. dec 19:03:41 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += filterdialog.h filterinterface.h +FORMS += filterdialog.ui +SOURCES += filterdialog.cpp main.cpp +CONFIG += console diff --git a/Chapter11/customplugin/filterdialog.cpp b/Chapter11/customplugin/filterdialog.cpp new file mode 100644 index 0000000..14a9f19 --- /dev/null +++ b/Chapter11/customplugin/filterdialog.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "filterinterface.h" + +#include "filterdialog.h" + +FilterDialog::FilterDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); + ui.originalLabel->setPixmap( QPixmap( "source.jpeg" ) ); + + connect( ui.filterList, SIGNAL(currentTextChanged(QString)), this, SLOT(filterChanged(QString)) ); + + findFilters(); + filterChanged( QString() ); +} + +void FilterDialog::findFilters() +{ + QDir path( "./plugins" ); + + foreach( QString filename, path.entryList(QDir::Files) ) + { + QPluginLoader loader( path.absoluteFilePath( filename ) ); + QObject *couldBeFilter = loader.instance(); + if( couldBeFilter ) + { + FilterInterface *filter = qobject_cast( couldBeFilter ); + if( filter ) + { + filters[ filter->name() ] = filter; + ui.filterList->addItem( filter->name() ); + } + } + } +} + +void FilterDialog::filterChanged( QString filter ) +{ + if( filter.isEmpty() ) + { + ui.filteredLabel->setPixmap( *(ui.originalLabel->pixmap() ) ); + } + else + { + QImage filtered = filters[ filter ]->filter( ui.originalLabel->pixmap()->toImage() ); + ui.filteredLabel->setPixmap( QPixmap::fromImage( filtered ) ); + } +} diff --git a/Chapter11/customplugin/filterdialog.h b/Chapter11/customplugin/filterdialog.h new file mode 100644 index 0000000..945e4c3 --- /dev/null +++ b/Chapter11/customplugin/filterdialog.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FILTERDIALOG_H +#define FILTERDIALOG_H + +#include +#include +#include + +#include "filterinterface.h" + +#include "ui_filterdialog.h" + +class FilterDialog : public QDialog +{ + Q_OBJECT +public: + FilterDialog( QWidget *parent=0 ); + +private slots: + void filterChanged( QString ); + +private: + void findFilters(); + + QMap filters; + Ui::FilterDialog ui; +}; + +#endif // FILTERDIALOG_H diff --git a/Chapter11/customplugin/filterdialog.ui b/Chapter11/customplugin/filterdialog.ui new file mode 100644 index 0000000..9613740 --- /dev/null +++ b/Chapter11/customplugin/filterdialog.ui @@ -0,0 +1,86 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + FilterDialog + + + + 0 + 0 + 869 + 502 + + + + Dialog + + + + 9 + + + 6 + + + + + QAbstractItemView::SelectRows + + + + + + + 0 + + + 6 + + + + + + + + + + + + + + + + + + + + + + diff --git a/Chapter11/customplugin/filterinterface.h b/Chapter11/customplugin/filterinterface.h new file mode 100644 index 0000000..1c4d2e2 --- /dev/null +++ b/Chapter11/customplugin/filterinterface.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FILTERINTERFACE_H +#define FILTERINTERFACE_H + +#include +#include + +class FilterInterface +{ +public: + virtual QString name() const = 0; + virtual QImage filter( const QImage &image ) const = 0; +}; + +Q_DECLARE_INTERFACE( FilterInterface, "se.thelins.CustomPlugin.FilterInterface/0.1" ) + +#endif // FILTERINTERFACE_H diff --git a/Chapter11/customplugin/filters/blur/blur.cpp b/Chapter11/customplugin/filters/blur/blur.cpp new file mode 100644 index 0000000..78e4c8d --- /dev/null +++ b/Chapter11/customplugin/filters/blur/blur.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "blur.h" + +QString Blur::name() const +{ + return "Blur"; +} + +QImage Blur::filter( const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y= image.width() ) + x = image.width()-1; + + if( y < 0 ) + y = 0; + if( y >= image.height() ) + y = image.height()-1; + + return image.pixel( x, y ); +} + +Q_EXPORT_PLUGIN2( blur, Blur ) diff --git a/Chapter11/customplugin/filters/blur/blur.h b/Chapter11/customplugin/filters/blur/blur.h new file mode 100644 index 0000000..6feec0f --- /dev/null +++ b/Chapter11/customplugin/filters/blur/blur.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BLUR_H +#define BLUR_H + +#include +#include + +#include "filterinterface.h" + +class Blur : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QString name() const; + QImage filter( const QImage &image ) const; + +private: + QRgb getSafePixel( const QImage &image, int x, int y ) const; +}; + +#endif // BLUR_H diff --git a/Chapter11/customplugin/filters/blur/blur.pro b/Chapter11/customplugin/filters/blur/blur.pro new file mode 100644 index 0000000..2fda446 --- /dev/null +++ b/Chapter11/customplugin/filters/blur/blur.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = blur +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += blur.h +SOURCES += blur.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/customplugin/filters/darken/darken.cpp b/Chapter11/customplugin/filters/darken/darken.cpp new file mode 100644 index 0000000..04ff42c --- /dev/null +++ b/Chapter11/customplugin/filters/darken/darken.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "darken.h" + +QString Darken::name() const +{ + return "Darken"; +} + +QImage Darken::filter( const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y +#include + +#include "filterinterface.h" + +class Darken : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QString name() const; + QImage filter( const QImage &image ) const; +}; + +#endif // DARKEN_H diff --git a/Chapter11/customplugin/filters/darken/darken.pro b/Chapter11/customplugin/filters/darken/darken.pro new file mode 100644 index 0000000..93a6519 --- /dev/null +++ b/Chapter11/customplugin/filters/darken/darken.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = darken +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += darken.h +SOURCES += darken.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/customplugin/filters/flip/flip.cpp b/Chapter11/customplugin/filters/flip/flip.cpp new file mode 100644 index 0000000..be96fd2 --- /dev/null +++ b/Chapter11/customplugin/filters/flip/flip.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "flip.h" + +QString Flip::name() const +{ + return "Flip Horizontally"; +} + +QImage Flip::filter( const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y +#include + +#include "filterinterface.h" + +class Flip : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QString name() const; + QImage filter( const QImage &image ) const; +}; + +#endif // FLIP_H diff --git a/Chapter11/customplugin/filters/flip/flip.pro b/Chapter11/customplugin/filters/flip/flip.pro new file mode 100644 index 0000000..a33614e --- /dev/null +++ b/Chapter11/customplugin/filters/flip/flip.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = flip +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += flip.h +SOURCES += flip.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/customplugin/main.cpp b/Chapter11/customplugin/main.cpp new file mode 100644 index 0000000..2b2a978 --- /dev/null +++ b/Chapter11/customplugin/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "filterdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + FilterDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter11/customplugin/source.jpeg b/Chapter11/customplugin/source.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0dc33e8ed2c4b1e2e9372ac6f9149cd5095cc0d0 GIT binary patch literal 49121 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%0AHdO0@JJ7y!B?dnxF3IuM1cd)oVXbELH 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 Gxc}L@|C`SM literal 0 HcmV?d00001 diff --git a/Chapter11/factoryplugin/customplugin.pro b/Chapter11/factoryplugin/customplugin.pro new file mode 100644 index 0000000..9498aad --- /dev/null +++ b/Chapter11/factoryplugin/customplugin.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 11. dec 19:03:41 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += filterdialog.h filterinterface.h +FORMS += filterdialog.ui +SOURCES += filterdialog.cpp main.cpp +CONFIG += console diff --git a/Chapter11/factoryplugin/filterdialog.cpp b/Chapter11/factoryplugin/filterdialog.cpp new file mode 100644 index 0000000..80ce3bf --- /dev/null +++ b/Chapter11/factoryplugin/filterdialog.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "filterinterface.h" + +#include "filterdialog.h" + +FilterDialog::FilterDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); + ui.originalLabel->setPixmap( QPixmap( "source.jpeg" ) ); + + connect( ui.filterList, SIGNAL(currentTextChanged(QString)), this, SLOT(filterChanged(QString)) ); + + findFilters(); + filterChanged( QString() ); +} + +void FilterDialog::findFilters() +{ + foreach( QObject *couldBeFilter, QPluginLoader::staticInstances() ) + { + FilterInterface *filter = qobject_cast( couldBeFilter ); + if( filter ) + { + foreach( QString name, filter->names() ) + { + filters[ name ] = filter; + ui.filterList->addItem( name ); + } + } + } + + QDir path( "./plugins" ); + + foreach( QString filename, path.entryList(QDir::Files) ) + { + QPluginLoader loader( path.absoluteFilePath( filename ) ); + QObject *couldBeFilter = loader.instance(); + if( couldBeFilter ) + { + FilterInterface *filter = qobject_cast( couldBeFilter ); + if( filter ) + { + foreach( QString name, filter->names() ) + { + filters[ name ] = filter; + ui.filterList->addItem( name ); + } + } + } + } +} + +void FilterDialog::filterChanged( QString filter ) +{ + if( filter.isEmpty() ) + { + ui.filteredLabel->setPixmap( *(ui.originalLabel->pixmap() ) ); + } + else + { + QImage filtered = filters[ filter ]->filter( filter, ui.originalLabel->pixmap()->toImage() ); + ui.filteredLabel->setPixmap( QPixmap::fromImage( filtered ) ); + } +} diff --git a/Chapter11/factoryplugin/filterdialog.h b/Chapter11/factoryplugin/filterdialog.h new file mode 100644 index 0000000..945e4c3 --- /dev/null +++ b/Chapter11/factoryplugin/filterdialog.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FILTERDIALOG_H +#define FILTERDIALOG_H + +#include +#include +#include + +#include "filterinterface.h" + +#include "ui_filterdialog.h" + +class FilterDialog : public QDialog +{ + Q_OBJECT +public: + FilterDialog( QWidget *parent=0 ); + +private slots: + void filterChanged( QString ); + +private: + void findFilters(); + + QMap filters; + Ui::FilterDialog ui; +}; + +#endif // FILTERDIALOG_H diff --git a/Chapter11/factoryplugin/filterdialog.ui b/Chapter11/factoryplugin/filterdialog.ui new file mode 100644 index 0000000..9613740 --- /dev/null +++ b/Chapter11/factoryplugin/filterdialog.ui @@ -0,0 +1,86 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + FilterDialog + + + + 0 + 0 + 869 + 502 + + + + Dialog + + + + 9 + + + 6 + + + + + QAbstractItemView::SelectRows + + + + + + + 0 + + + 6 + + + + + + + + + + + + + + + + + + + + + + diff --git a/Chapter11/factoryplugin/filterinterface.h b/Chapter11/factoryplugin/filterinterface.h new file mode 100644 index 0000000..2671077 --- /dev/null +++ b/Chapter11/factoryplugin/filterinterface.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FILTERINTERFACE_H +#define FILTERINTERFACE_H + +#include +#include + +class FilterInterface +{ +public: + virtual QStringList names() const = 0; + virtual QImage filter( const QString &filter, const QImage &image ) const = 0; +}; + +Q_DECLARE_INTERFACE( FilterInterface, "se.thelins.CustomPlugin.FilterInterface/0.2" ) + +#endif // FILTERINTERFACE_H diff --git a/Chapter11/factoryplugin/filters/blur/blur.cpp b/Chapter11/factoryplugin/filters/blur/blur.cpp new file mode 100644 index 0000000..17a89b4 --- /dev/null +++ b/Chapter11/factoryplugin/filters/blur/blur.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "blur.h" + +QStringList Blur::names() const +{ + return QStringList() << "Blur"; +} + +QImage Blur::filter( const QString &filter, const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y= image.width() ) + x = image.width()-1; + + if( y < 0 ) + y = 0; + if( y >= image.height() ) + y = image.height()-1; + + return image.pixel( x, y ); +} + +Q_EXPORT_PLUGIN2( blur, Blur ) diff --git a/Chapter11/factoryplugin/filters/blur/blur.h b/Chapter11/factoryplugin/filters/blur/blur.h new file mode 100644 index 0000000..09e1e58 --- /dev/null +++ b/Chapter11/factoryplugin/filters/blur/blur.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BLUR_H +#define BLUR_H + +#include +#include +#include + +#include "filterinterface.h" + +class Blur : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QStringList names() const; + QImage filter( const QString &filter, const QImage &image ) const; + +private: + QRgb getSafePixel( const QImage &image, int x, int y ) const; +}; + +#endif // BLUR_H diff --git a/Chapter11/factoryplugin/filters/blur/blur.pro b/Chapter11/factoryplugin/filters/blur/blur.pro new file mode 100644 index 0000000..2fda446 --- /dev/null +++ b/Chapter11/factoryplugin/filters/blur/blur.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = blur +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += blur.h +SOURCES += blur.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/factoryplugin/filters/darken/darken.cpp b/Chapter11/factoryplugin/filters/darken/darken.cpp new file mode 100644 index 0000000..b3865f0 --- /dev/null +++ b/Chapter11/factoryplugin/filters/darken/darken.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "darken.h" + +QStringList Darken::names() const +{ + return QStringList() << "Darken"; +} + +QImage Darken::filter( const QString &filter, const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y +#include +#include + +#include "filterinterface.h" + +class Darken : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QStringList names() const; + QImage filter( const QString &filter, const QImage &image ) const; +}; + +#endif // DARKEN_H diff --git a/Chapter11/factoryplugin/filters/darken/darken.pro b/Chapter11/factoryplugin/filters/darken/darken.pro new file mode 100644 index 0000000..93a6519 --- /dev/null +++ b/Chapter11/factoryplugin/filters/darken/darken.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = darken +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += darken.h +SOURCES += darken.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/factoryplugin/filters/flip/flip.cpp b/Chapter11/factoryplugin/filters/flip/flip.cpp new file mode 100644 index 0000000..839ff00 --- /dev/null +++ b/Chapter11/factoryplugin/filters/flip/flip.cpp @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "flip.h" + +QStringList Flip::names() const +{ + return QStringList() << "Flip Horizontally" << "Flip Vertically"; +} + +QImage Flip::filter( const QString &filter, const QImage &image ) const +{ + bool horizontally = (filter=="Flip Horizontally"); + + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y +#include +#include + +#include "filterinterface.h" + +class Flip : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QStringList names() const; + QImage filter( const QString &filter, const QImage &image ) const; +}; + +#endif // FLIP_H diff --git a/Chapter11/factoryplugin/filters/flip/flip.pro b/Chapter11/factoryplugin/filters/flip/flip.pro new file mode 100644 index 0000000..a33614e --- /dev/null +++ b/Chapter11/factoryplugin/filters/flip/flip.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = flip +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += flip.h +SOURCES += flip.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/factoryplugin/main.cpp b/Chapter11/factoryplugin/main.cpp new file mode 100644 index 0000000..2b2a978 --- /dev/null +++ b/Chapter11/factoryplugin/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "filterdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + FilterDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter11/factoryplugin/source.jpeg b/Chapter11/factoryplugin/source.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0dc33e8ed2c4b1e2e9372ac6f9149cd5095cc0d0 GIT binary patch literal 49121 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%0AHdO0@JJ7y!B?dnxF3IuM1cd)oVXbELH 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 Gxc}L@|C`SM literal 0 HcmV?d00001 diff --git a/Chapter11/imageplugin/imageplugin.pro b/Chapter11/imageplugin/imageplugin.pro new file mode 100644 index 0000000..7e7d69c --- /dev/null +++ b/Chapter11/imageplugin/imageplugin.pro @@ -0,0 +1,40 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = textimage +CONFIG += plugin release +VERSION = 1.0.0 + +HEADERS += textimagehandler.h textimageplugin.h +SOURCES += textimagehandler.cpp textimageplugin.cpp + +target.path += $$[QT_INSTALL_PLUGINS]/imageformats +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/imageplugin/testread/Thumbs.db b/Chapter11/imageplugin/testread/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..039dbc9473009e1b9db62eabd8b79e54d93a5362 GIT binary patch literal 3584 zcmca`Uhu)fjZzO8(10BSGsD0CoD6J8;*3Bx2!nwD0|OI~0pkDr|NlQkkbwcn90fxt z1pWfu3W`4vW&uVbD>OcbkQYXsN;Sr0E8 zaOj*6W0=G*eVmaQBo9hxKwt==$R=4Bm>5C!gUTWhO{_t4L5Up*oEZ{vVh$kY1Y#~A z<_2OOAm#;PJ|N}?Vqg`(APB@lKnyEGklixM9{eEyic?S;ma`TFi4E`Tr5aeJ;VBlwFRAOKf zWMmd({C|W&9_V~lpld-6h5|+=pc~oPIXJnvfeN+)b0{M-GZPCl$kjmAwLp0W7C}}a zMMFn6;lM<8r9u&-#)%6#l$|yn6b-ugLB%+!sELzHOk6@zN>xo=LsQGd)Xdz%(#qMz z)y>_*(GIa)lcJ-ils4}7<5{kPQ#)@W?LP|{tyVf`&h z#`NP`%fH)+^wjh;PQTE#{b8=#p=%roo{XunJ7n8;zKyln=lbyPm5wK6LA(_c+D-DR zg;u;gbvC2YZfo_Uzgiq?w@7nm=oYbDvT94(`@u-N{!rA@J05Rqm<^J4a&E48Q+Up9 z>T1rdJ1+0LsPkLizMx(-bRK)807oR-ohOP(^?FkmPo3oPsz+pYkj9#Ffe4pxnKGLf zp1WCU^~_zL^4V)DF1=gWTBZ=eqGV$*nmnD~P-o1Ts?ZwM&Q+1O6 z9#ItATE6S|_V~sR)26TUUT%}ivdQ7_;$yzGi$C~(>-g~e$a&uA3hPI*f6BzaWzY6a z%incs&zs^Kk4-;JVmqxqrIIDf z+0**}--P98JhT9?rUK>s1Sr-3(%_On_PaeFu&t2^Y}FJnlmhE`J%%hGE0wHT9%$$= F1pu>sd%*wz literal 0 HcmV?d00001 diff --git a/Chapter11/imageplugin/testread/input.ti b/Chapter11/imageplugin/testread/input.ti new file mode 100644 index 0000000..2c21762 --- /dev/null +++ b/Chapter11/imageplugin/testread/input.ti @@ -0,0 +1,86 @@ +TEXT +100x84 +iiiiiiiiiiiiiiiiiiNMMMMMMMAllNNAAAANllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiAMAMMMMMNiiiAMMAilAMMMMMMMM +iiiiiiiiiiiiiiiiiilMMMMMAMMNilNAAANllllllllNANNNliiiiiiiiiiiiiiiiiiiiiiiiNMAMMMMMANllAMMAiiAMMMMMMMM +iiiiiiiiiiiiiiiiiilAMAMMAAMAlilAANNlllllllAAAAAANlliiiiiiiiiiiiiiiiiiiiiilAAMMMMMMAllAMMNiiAMMMMMMMM +iiiiiiiiiiiiiiiiiilAMMMMANAMNliNANllllllNAAAAAANlNNliiiiiiiiiiiiiiiiilllllAAMMMMMMNilMMMNilMMMMMMMMA +iiiiiiiiiiiiiiiiiiiNMMMMANNMAliNNNlllllNAAAANlllllNNliiiiiiiiiiiiiiilAAAllAMMMMMMMliNMMMllAMMMMMMMMN +iiiiiiiiiiiiiiiiiiilAMMMMAlAAllNNNNlllNAAAANlllllllNlliiiiiiiiiiiiiiNAAAlNMMMMMMMAliNMMMNlMMMMMMMMAl +iiiiiiiiiiiiiiiiiiiiNAMMMANNMAlNNNNllNAAANNllllllllNllllliiiiiiiiiilAAAMAMMMMMMMMAllAMMMNAMMMMMMMMAi +iiiiiiiiiiiiiiiiiiiiiAMMMMANAAllNNNNNNAANllllllllllNNllNNNNNlllliilNAMAMMMMMMMMMMAlNMMMAAMMMMMMMMMNi +iiiiiiiiiiiiiiiiiiiiiNMMMMMNAMNlNNNNNAAANlllllllllNAANNAAAAAAAAANllAAAMMMMMMMMMMMMNAMMMMMMMMMMMMMMli +iiiiiiiiiiiiiiiiiiiiilAMMMMANMANNNNNAAANNllllllllNANNNAAAAAAAAAANllAANMMMMMMMMMMMMMMMMMMMMMMMMMMMAii +iiiiiiiiiiiiiiiiiiiiiiNMMMMMAMANNNNNAMANlllllllNAANNNAMMMAAMMMMMANlAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMNii +iiiiiiiiiiiiiiiiiiiiiilAMMMMMMANNNNNAANNNlllllNAANNNNAMMMMMMMMMMMMAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMlii +iiiiiiiiiiiiiiiiiiiiiilAMMMMMMANNNNAMANNllllNAAANlNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAlii +iiiiiiiiiiiiiiiiiiiiiilAMMMMMAAANNNNNNNNNllNNAANllNAMANNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNiii +iiiiiiiiiiiiiiiiiiiiiilAMAAAANNllllllllllNNNAANlllAMANllNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMliii +iiiiiiiiiiiiiiiiiiiiiilAMANNNllllllllllllllAMANllNAANlllNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAiii +iiiiiiiiiiiiiiiiiiiiiilAANllllllNlllllllllllNNNlNAMANlllNNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAiii +iiiiiiiiiiiiiiiiiiiiiilNNllllllllNllllllllllllNNNMANlllNNAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAiii +iiiiiiiiiiiiiiiiiiiiiilllllllllllNNllllllllllllNAMANNNNAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNllN +iiiiiiiiiiiiiiiiiiiiillllllllllllllllllllllllllNMANNNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNM +iiiiiiiiiiiiiiiiiiiilllllllllllllllllllllllllllNMANNNAMMAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAAMM +iiiiiiiiiiiiiiiiiillllllliiilllllllllllllllllllNANNNNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNAMMM +iiiiiiiiiiiiiiiiilllNlllliiilllllllllNlllllllllNNNNNNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNAMMM +iiiiiiiiiiiiiiiillNNNllllllllllllllllNNNlllllllNNANNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAMMMM +iiiiiiiiiiiiiilllNNNllllllllllllllllllNNlllllllNNANNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiiiiiiillNNNNNlNNllllllllllllllllNNNllllNNNANNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiiiiilllNNNNNNlANllNNNlllllllllllNNNNNNNNNNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiiiillllNNNNNNlllNNNNllliiillNNNlNNNNNNNNNNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiillllNNNNNNNNNNNNNNllllllllNNNNNNNNNNNNNNAAAAAAMMMMMMAAMMMMMMMMMMMMAAMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiillllNNNNNNNNNNNNNNlllllllllNNNNNNNNNNNNNNAAAAAAMMMMMAAMMMMMMMMMMMAAAAAMMMMMMMMMMMMMMMMMMMMMMM +iiiiillllNNNNNNNNNNNNNNNNllllllllNNNNNNNNNNNNNNNAAAAAMMMMMAAMMMMMMMMMMMAAAAANAAAMMMMMMMMMMMMMMMMMMMM +iiilllllNNNNNNNNNNNNNNNNNlNNlllNNNNNNNNNNNNNNNNNAAAAAMMMMMAAMMMMMMMMMMAAAAAAAAAAAMMMMMMMMMMMMMMMMMMM +llllllNNNNNNNNNNNNNNNNNNNNAANNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMMMAAAAAAAAMAAAMAMMMMMMMMMMMMMMMMMMM +lllllNNlNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMMAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMM +lllllNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMM +llNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMAAAANNAAAAAAMMMMMMMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMAAAANNNNAAAAAAAMMAMMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAAMMMMMMMMMMMMAANNNNNNNNAAAAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAAAMMMMMMMMMMMAANNNNNNNNNAAAAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNNAAANNNAMMMMAMMMMMMAANNNNNNNNNNAAAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNAAAllNAMMAAAMMMMMAANNNNNNNNNNNNNAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNAAANllNMMMAAAAMMMAANNNNNNNNNNNNNNNNAAAAMMMAMMMMMMMMMMMMMM +lNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNAAAlllAMMMAAAAAMMMANNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMM +lNNNNNNNNNNNNNNNNNNNNAAAANNNNNNNNNNNNNNNNNANNNlllAAMMMAAAAAMAANNNNNNNNNNNNNNNNNNNNAAAAAAMMAAMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNllAAAMMMMMAAAAANNNNNNNNNNNNNNNNNNNNNNNNAAAAAAAMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNANNNlllAAAAAMMMMAAAAANNNNNNllllNNlNNNNNNNNNNAAANAAAAMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAANNNNNNNNNNNANllNMAAAAAMMMMAAANNNNNNliiiiiiilNNNNNNNNNNNAAAAAMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANANNNNNNNNNNANlNAMMAAAAAAMMMMAAAAANliiiiiiiilNNNNNNNNNNAAMMAAAMMAMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNANNNlNAAMMAAAAAAAMMMMMAANliiiiiiilllNNNNNNNNAAAAAAAAAAAAMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNlNAAMMMAAAAAAAAAAANNliiiiillllNNNNNNNNNNNAAAAAAAAAAAMMAA +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNAANANNNNNNNNNNllAAAAMMMAAAANNNNNNlliiilllllNNNNNANNNNNNNAAAAAMMMMAAAMMA +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANlNAAAAMMMMAAANNNNNlliilllllNNNNNNNAANNNNNNAAAAMMMMMAANAAA +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNAMMAAAMMMMAANNNNNlllllllNNNNNNNNAAANNNNNNAAAAMMMMAAANNNA +NNNNNNNNNNNNNNNNNNNNNNNNANNAANNNNNNNNNANNNNNAMMMAAAMMMMAANNNlllllllNNNNNNNAAAAAAANNNNNAAAAAMAAANNNlN +NNNNNNNNNNNNNNNNNNNNNNNNNNNAANNNNNNNNANNNNNAAMMMMAAAMMMMMAANlllllNNNNNNNNNAAAAMMAAAAAANAAAAAAAANNNll +NNNNllllNNNNNNNNNNNNNNNANNNNNNNNNNNNNANNNNAAAMMMMMAAAAMMMAANlllNNNNNNNNNNAAAAAAAAANAAAAAAAAAAANNNNll +NNNNlllllNNNNNNNNNNNNNANNAAAAANNNNNNANNNAAAAAAMMMMAAAAAAANNlllNNNNNNNNNANAAAAAAAANNNAAANNAAAAANNNNNl +NNNNNllllNNNNNNNNNNNNNNNNNNNNANNNNNNANNAAAAAAAAAMMMMAAANNNllNNNNNNNNNNNAAAAAAAAAAAANNNNANNAANNNNNNNl +NNNNNNllllNNNNNNNNNNNNNANANNNNNNNNNAANAAAAAAAAAAAAMMMMAAANNNNNNNNNNNNNNNNNNAAAAAAAANNNNNNNNNNNNNNNNl +NNANNNNllllNNNNANNNNNNNNNNNNNNNANNNANNAAAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNNAAAAANNNNNNNNNNNNNNNNN +NAAANNNNllllNNNNNNNANNNNNNNNNNNNNNANNNAAAAAAAAAAAAANNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +NAAAAANNNlllllNNNNNNNNNNNNNNNNNNNNANNAAMAAAAAAAAANNNNNNNNNNNNNNNANNNNNNNNlllllllllllNNNNNNNNNNNNNNNN +NAAAAAANNNllllllNNNNNNNNNNNNNNNNNAANAAMMMAAAAAAANNNNNNNNNNNNAAAANANNNNNNlllliiiiiiilNNNNNNNNNNNNNNNN +AAAAAAAAANNNllllllllNNNNNNNNNNNNNAAAAAMMMAAAAAAANNNNNNNNNNNNNNNANNNNNNllllliiiiiiiiilNNNNNNNNNNNNNNN +AAAAAAAAAANNNNlllllllNNNNNNNNNNNAANAAAMMMAAAAAANNNNNNNNANNNNNNNNNNNNNllllliiiiiiiiiilNNNNNNNNNAAANNN +AAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNANAAAMMMAAAAAAANNNNNNNNAANAANANNNNNNlllliiiiiiiiiiiiilNNNNNNNAAAAANN +AAAAAAAAAAAAANNNNNNNNNNNNNNNNNNAAAAAAMMAAAAAAAANNNNNNAANAANANANNNNNllllliiiiiiiiiiiiilNNNNNNNAMMMMAN +AAAAAAAAAAAAAAAAAANNNNNNNNNAANAAAAAAAMMAAAAAAMAAANNNNAAAAAANNNNNNNNllllliiiiiiiiiiiiiilNNNNNNAMMMANN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMAAANNNNNAANNNNNNNNNNllllliiiiiiiiiiiiiiiilNNNNNNAAANNN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMAAAANNNNAAAANNNNNNNNlllllliiiiiiiiiiiiiiiillNNNNNNNNNNN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMAAAAANNNNNAANNNNNNNNNllllllliiiiiiiiiiiiiiiiiillNNNNNNNNN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMAAAAANNNNNNNNNNNNNNNNlllllllliiiiiiiiiiiiiiiiiiillllllllll +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMAAAAAAAANNNNNNNNNNNNNNNllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMAAAAAAANNNNNNNNNNNNNllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAANNAAAAAAAAAAAAMMMMMMMAAAAAANNNNNNNNNNNNllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMAAAAAANNNNNNNNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMAAAAAANNNNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMAAAANNNNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMAANNNNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAMAMMMMMMMMMMMAANNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMAAANNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMAMAAAANNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii diff --git a/Chapter11/imageplugin/testread/main.cpp b/Chapter11/imageplugin/testread/main.cpp new file mode 100644 index 0000000..126aff5 --- /dev/null +++ b/Chapter11/imageplugin/testread/main.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + foreach( QByteArray ba, QImageReader::supportedImageFormats () ) + qDebug() << ba; + + QImage input( "input.ti" ); + if( input.isNull() ) + qDebug() << "Failed to load."; + else + if( !input.save( "test.png", "png" ) ) + qDebug() << "Failed to save."; + + return 0; +} diff --git a/Chapter11/imageplugin/testread/test.png b/Chapter11/imageplugin/testread/test.png new file mode 100644 index 0000000000000000000000000000000000000000..468fd912d772a75dc61aadac4e9af22e2bb6463c GIT binary patch literal 2033 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 F1pu>sd%*wz literal 0 HcmV?d00001 diff --git a/Chapter11/imageplugin/testwrite/input.png b/Chapter11/imageplugin/testwrite/input.png new file mode 100644 index 0000000000000000000000000000000000000000..b3a5c453c21678aebebbe202caed2746fa3b861d GIT binary patch literal 23742 zcmV)BK*PU@P)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RR3=I)CHRO5C9smFU zAaq4obVG7wVRUJ4Zd7S)WdJfTFg7|dGCDCcATc*OH8nalGq0LtGXMYp7<5HgbW?9; zba!ELWdKlNX>N2bPDNB8b}}wEGICmkT>t<840J_UbW?A2a${uxOE@qvX=G-Kng9S> ztVu*cRCr!Zy;p3cS(dFARXx>RE;H%9_uhN&z4r_!($&m#b#Hz9MAnQF_z`3<$RyAD_g-tSz0Zj+K0G^; zFXRi$7hn8pu~`0QkuUyc`9i+>{P?9sc=k*E$`?G!-z*j$g(roN|Ms_EdHmAyAOGKf zvix`d_J6kgoB#a3vdBOG-xlG;f3y4@-|(yD%P)EHufMZ==kvW~q$S1j)t6se{{8>< zA1wdy5C6O6zy9z4SBuZLzqj}YeP{W<{^@s?yhMMCpYIjRS6}_k@&*6tufP7)^4Grz zzr(MVU;p}h%Rl|)A1#03vu}R?d&}SWvH$VcZ!D2vS1nh+`_}S@ulUuzI?I?^0)A}i{*E`TEBz;j~_07 z`;!0Tua^JkKm3E`-~6ZlrRBf*AO4*s!2e6j|MKtu56eIQ%74bcFIbD;{oNOqf}DIy zXLFwA@A$cY`R9MM{P{omFD(D}cIS1gG!;ZmLzE0wt^GCNo*Cv&ZGw%#Roc8BEQ-k{vu9hTc$ z19HCFE$gm!>24~Pmg+niZ7&t)K&kY#l*qxFRbJhimDjgd%t&EY zf&>TnNE;g2eLi*)9O+ zdrJ=k~G7@4WD>+p1a$=;aFh$zyvt-WMD(BZH<;l%y zxx6(eKipfDPb|Ps&o;PWwgF;Yeg>eQc<#f)4Y|C#VQ!*7zd4q_e{)m*9#H=N%?%z; zBEteD zD=$xO?$62NQ;%dMNAtC-fZ``zy-o7`{-!*=wIJDvQ9KvG;wuo}@%RT`_dORN`LkXT zkpS{k?*tZGBLxsXzF^UxYg8Qa9Dwkgi3*Jt1?M@@qTd5ZAD;jY*AI_(<;jg%$uBCA z@SsqMjtG)y?wrtIe@V+ol#R(U$;^lcq-YuIYnB)1PI+-UCH-yHQj`@h^Fsx4Fx4c7 z3dll>oGiA<&BbmxUF(%~XOmQw=1E$7ELWK1B}YnWR-Dx5Wy$nFo$SuFi_6+>qVH_m zDK9UUGg%>rQ>|Qp;;EMnd!5vkW=d*YnB=EKNOx6|tlMkglTNuy zD!bSmliM4^@XeT9Y};gSu}9{{+vRv^fZt<+2wWgKR!nq!dcH;~T9Ka(AiDrWs#Q*T zbe#w}Hr(;2%M-qKAOoF^l9CiJ$wXvUTDlx=+Qj2%C;hU>-1R~JzTEl#+~s}%@;w}K zRWj0I<$Qlqo?Xn#FFbpVIl$!F{J)4pX;J)3OfK4O;-T)?8HQfa>^$F{OJjRK0e@&+vcuc zmbuA3iHVLQI(+yeu1I*Wuf)eh%hYJ4^tEM6czC2#bLTxcu*&L0n{3)^Wox2Qu20m< zp1XHDrqcBLmZHvG7`krRt#WOa$})SZfy_C-ED{5+qcQ1{V}<7eN=8=AC}$4 zK3Rf%_jt|e&agZ@ammvg9=UTgEsxIU zrk9|(^Fu@ZrMIU-ax&6+PQRb1B0>y_YozcRKYosal9!h)5ALjs+=2yitBV<%Bu1tG|U%Jt^&wa zA|_A@3)5w4tXSgWBP26Dle>CI_Ga2;i-q2CRLicTLG~tVWqYDh2I_MqnZ?LOm3VqG zOo}?1?UbAIy?`+)kBNYnHz(xzO@IN|3jjD+>J-mNrPv1>W!2S(Xy}%q?rLeSEtk%g zdKv2PlBo#_yE8+c}C#Uu8i4pLJr91t!gdC?Lb&cYH6dQ<6Q z8f66_f&TCSp!jk5^LcVog4{mwkb+wznw!WUGS@{;NC=g(vPb~Xh5z0>7ic)-YxB7R z8W8wBpZiKfeZ9ORWm=59)rB{UPbd=|s-zSg0}QFmq%8&E=}n#k6a|OxQyHv4{X!c1 z<%OoWeR+FtgnN7l-h3&`h?A6<5E-nElP!Cp9J(R-xo$aM?vOj{Lvnv-QXT<{^2Nmlz|QrGqnD^c ziM5pHNM}Q-bk-M0R(hP|WkgFwPMj2{$4W^~q7)!qGg4wCGc8Rj%F3mstzG8lCgf<< zD!G}dlARVM>4~Zkk)=U;SNoBIlz@o{Khg{UC@}sksIM>S25@4cB4lWwNfP3byTO4h z@-=hkhoQbg;0-@NUJFksAbx({pXG}nF#G|r$3|+pnv+j&4pe1nWDv3}?ngjSKulBs z%1?k~c*E2lM?`~O8b!)8`$UFD%@Lp+a2*+7-Xj+;cAb)&lVNgcScs2=hjImnNN#qj zjI`!Lf-zFa*H^4n08!0VBAa6cvO1bCJrzlk79A{Q>0vV0UjS&eax&W@XLDV0d!<)y zt&+CZl{-e|#_EWvPdXX_pekRSUFEVdQA>T2D`mOyl9L=^YKQLHWKv&*q#~R1Gs5AA zAjwRLl7^}*S(#{(&FNk_-W=h3GNqoMvk0HXga?>~Gm$}*`FAs4*B%t z_+NPgKr{+8DpdL^S16AtfosY#l30ly>H9NZS5STiC8RYa@j+-=8B@*(@0Hu%{wdHmxOcIN2yi zQ=M`?-zMiv9dbI~A-C505D7gp3;;Rl$x@CYa&;HWs=Z#89W~NZmqP0Cm#8p*i3|^t z6bL#sK9v7IkedUggu)5aR1_X61qIn+M+|H(^-4}!q9nj~#iZA`$Y2%>S;`&l&*kIG z!fJ|P0Rw$B{QwLRqmMyab127f`Lg(aJg=Og^@U1fKfc%B$Jaa`08k;QER8M&DhP4V z+tV)ZUvZ;fnh4Q5UZcXBay~)QKRwZOMJIFw(A7*!`fqw9Zu zeqvt#26eMJ-!DmViAHUOQ7D{v8ZMHR!6I23C=pkCu4KS5 z`6*#C-JT)4wo*B;!yld&IVEM?AWBYVJK&UN>8#C{^yFA+uSu4Lk!m8NS=Q{$GSpHa zl{u*r$Kr>fXu`k6p{J_z^*a;Kg^J^AuAU*B&{!RODS>&L#DvU~xG&sFLM zkna49!upPzB1AS;#^l2**7`LO@*Zp9qe@<*qEu07rLI6|x>7z-ppHHlhCB~f{G=(0 z*BkyY(Xoe8A${q^_r1NlE^9L*l9Z4jQK9_7{DBdqu1FRpf?qlj&0Po}!wpF?(UL4< zjaf3&l_Bj^-$~)&(pH!#s{{G6J6ON=j@PbxE4+Ow`E1 zbc?J`Hc3-erlgaW(qki}CO2Brq5>p>g$>~j4rReY0ViCQQNXt>>>pSZ7LJ7q^3$rD zM}L20>^0m5m9%_~ulwsl0*0Rt9Kh>>SX>1pK!Nb(c`haSU~V{FY+ZOC-*3!<`|0;y zRWQEc`UAkIW%3QL15m$jOd5=fjhBnF75NAtpQww75HEp$GIj}opt4M=;<=xmo_K)* zl%GgVn##0h`4J$DrvD7cFMRD6Rbr-I*@M`(WX?5&wvLf#NG_HFNj;z#cqEd~(_!Cckn)KVIqJ$p2#-iLmBJb|O7Qyedu)qE*9dtyUZTm_IjIrSSsp9Nn2!Z4+DLh> z9FLUAosmX)IoTnvJst86o_IgqCGTdtQIaGR{spNCvTUozdO;?yb;+)~T3SnzBq`F5g=Mk*i4G-G zE{&WJeWc*iuLUb-`0AyLtFMI{v=9WiVD5gsG|l)ZfC|Jl7WNwI3xbZtQVCY#C%yS< zMEU(ee0%`nD%^3+&l^n$044SSz*UY3A)U|9kH|YH;>XJyq%AnaNL-b-Mqzmsl}S;s zzDZq%)Ug#z{lS833j188Yt$GZG;Jv;=21PaO?3Sj1eqkUp`ntN5)WVGio2m)ZV%SV zb90PT>kY4>(ywc@1VGT5dK3`9Yu8wG=!&-@!GMVmA6?ktS-=3luecN_7S}|GlDMWb_`*kP33X&4Ztil8ApdIsp%-7jMpWryn|gzf{jT`{ z%r&_NSUw5}Ki|tY3Zyq(8MOwVWo2c`!@F=e9P*P%S&;fC1>uQWA!-<^g7Q}9COw&= z(Ax{~`apO-aEvJw;T#3XC@oWqT$exU_wh4sZcSpVSIhZmwLE6=o{V?MGYI+lM5|m* z_K=QR5qUp11YrFpvd$S z$mNNqbV;UHk)0eRb0fKUVE{FS72|4@C2NI@x28xld{vSfE#cb7P-0brzWOzb%H669 z=%WCAEdeaBKc6e71oAZ#J>1d$1{5#X7@+i0;?~y_6-xF-P4RUla6eL+k6xs#YmmB+ z`9D+~Xv$LWiW|Z3ms%!y0J1Ib$W*WC*I+IxAeyGs@zr``>tF2lpG^JXtwGc(F}z_& zok;jx7<%gvueGAU{87^$O`^w}6LOEme>mPCk4ZO=6%ei$6D{%z59`v^EN`$k-lCii z=o#D`ZZPTV{Y<}nm?v#vziZn1IOn~7m<5!XVR_@h&USXl$!L=-^`uKhS~xw5Q0c2r z0)%Re${OtaGI95mNmD_Zq$FZ=1_zPfwSFKvSfn5pE8rSwgO7D#b+LoEgEjvvC+OX* z5#+DrtX!d&-rXh&6d>vkv&dIjbiFhRSZJ+Pl+=kJ1>~v%0%#^m_`5j1SZ+AS^KH>NlyYsYtoPOW?oN9Ny=C=FV3je$h^xN?oqsBIFmq z`lD9+_cr9o24Fb4<({=!9*oq>qw!`Upj#eKb`m9|D?1Uw$FE#n^45(VGS)0FT^)ck z2wx1b_@pQz;{B`@PT_L^`Y>(fYrVXFNS;k}%N=W@j8~)?BG17yn(5BQ6RVX?ESNcJ zn>r+P1gb8WKR$>B3N&}V@&{>$J3I)|4K!dVIdkXhg)-6< z7a&br$_LkYy+(r1HBz5)gi%-eJt}#x$h9jPE&8(nM$?t@%jZZ6rYY6gQ7g0Dn4Qh# zRQw@I>Tt;a4-gY6ra|TH8hQ&vA^^puO3Uzw%3i=S1tE{hAwLskKb$SegBge19c`Dp zBTaIj>)`~Eu{Fw>NPSS= zFO14tdK7P`2IP{jUwXO#Z@@&{YJHBRhXqMXL4qvy1?-8p%8NV^qMf97a`;M+)HfWaN|+SxC!T`ahph39(Vg5+tPep(-w z4>+`Mr$>>;{eaggPi@_#!Zx|lS0UZm@nWyak%g`zS?bFZD@9{hd5l| zrM%$}V5WFfK>4{!;MZ9Et6C89HKVFb%F{^lzD}bhFwkGxX)9E5GsRG+83zC*XEDAN zi>)c^C;Taux2mX2>(+D&w@s9o*Xie^E0w;+SR^Xm-CmYQ%Wkh~E` zcy!$^kBNxqHzojv$k?^XJ-Fi0c)dKew#id{gz#UClZI>n0;xYIh27|>mz{Qo9_X3h zv!TqKy+o3N*v0GHzeGKm45R^`kPmn194T-w@`px~x3brWFeI)~ z^ZDxEwek3>N|Uf@LX9Em^}tA3nvQ-e4!w;j^|4fO zeU1o~yCzb!_SlhMbg1Fpjy&C(ri$(%8rtPzph|A*MbUQ)$Mx0{08y0Pr*-*|j^2ZP zx_nsXw^;1^BdriU>T9fC9s=ZJ$oYx2Ri2Ht5-r`x;!Z&6kYjrAXZ^ME(Aq>abQlmG z@w$g2?R^OdcdO4D3?M1UklP`N8G#zOZNf#%|MCJF%Knu!b| zOcj;^MfpUFNsSccuxoHgpsC({^=BCF(FoB<_}q;0+U^R5+9*VdNma@naD_@^=9}J~ zk)jq|q^LHcqC#%>0RVUEt-*4+7_O01cZ2jYFEu;ZVnDgr=%bp(#u#a15$omtV2#|P zIdzYLi2I{mEO3WB7;TV8BV40xfWzXC>DQWMp{YnVI;!NPuZ_qf>V{Bl%1`}`a;pc! zv9nI*%hRL}+uT)^E>6aYYOrZy;EJ$7yeICw5EdbX#ZvnxDRd4=X+Cf z-wjuAXWtsa2H`Hg;JVdc%44bA7_5}j*?MWH$-%B@pa#3`Is}-d-%r!)1@$wlhhHl)cTJerur8 z0CL_3AiXtm)`JaBL;r*!h12H)pD!5UM{#!dn@H8s_J@6rc9T| zOEV)v-C2<`QXC?Exxq+bFCeDs)m6WN^`Xm`lRwmO? zjH5kkUU!wn;cnK;TXTFvFXek$2J~;juS#xGfD|NZD%4(zzD6VIE3dlJ0?}{>i+%ME zEc{oao6^KThqQ0^RkO%Na>l})_LZ=Jq@rFv?<uxAi{4qzW4W9F zz>PM3c1tB7RLXH{wH&vQu9^#Ey%Nbw&%Bleu8Bj}r}|1`N`Mr_&>hri4i-u|Ba}XO zPRvy)jP;dVUY8l=CutE^Nn6SzYA||j6ki`CEmt6Scmz?A3W4Xx_|Z(eDz)j6GFX{R zZ4)jTk-l_5vD>xht~_Ey0gH|RxO#;i2vMfdpm)8A9@3LhX$pv5Mow$=DOYJ!YQd0nYNL0eX{!+s5DUkRRdUc=EZcQyvQQc;wyX%LrWa8aN<0g#UX>q(o-S4bJ(=?XW(G=sMS|Fyl4PJJN_t9zr98#gaFO;{{7wIZv_xvUqN&M5!#7@Y z5&J|*UQ?V8b&T?hiJIR4F|A&2{bG4{cT?WnUXxdcb9hjb@^F?h8wV5UD4q*^s9WUn zTaf7m67&MzI3>p);lF4^TmZs(Pce5jcXU^^A>bQbg>ti^2n32C8bdFi8fPYAlZolG2#(r3@~~rC%SWk)ai|5-fmZL|&1iSRcuY^vC<6 zg{x$$5?5byg-Bv?G;M_jd@Zpd-%3{0HK|Gk;H*$-&kK^Sf*`5S443+xSQ)P4s*RSu z${=YjVjee+pQo0+v0A8O_&>iV%C1pFUeh|{>Q|rpB3{Q=CABFwwKh>85fj=^@j)c0 zD{OhWHz!Y*0b**1q7Bmyi~QCIAOOV05I_(ScX}byemDa_4!Qde+lT--ELXNKya zzEJk-@?@_eS+3L4-Gd*lH{{AL&tGTj!XB@=-jKn^n20sGvRAVN4UU009~eeBGFe+{H@L5y4j^Csu**k;V*v z>BwX9r6^4LOCn^TG*p_h;T_UfKJIdMqMu|kN|YKCC)p= za#%@SqfaYzGXS9~P8FQadYK^#`X|~;(Fl175Rb4d?%FA~aA$7~D_5w@1c?470I7#J zl(-v+3WnP{%UI}QIR%WHU8SU@GQcQ62^Gn1W0CB0cOSRpAxZO%3fdrQj%LcmJyb%Y zh~Bw1UzU-`a~;{T)|e?fq@L?_Sm$+FvRhRqyEROk)bMe2Aq&sqSLeuf4FeCgS)?hw zvSpKP0ZYY+;>b*qwwOpMS1=&*;%LTJ&9n%2{rBGPUL=-DV(_<;fJ)LkSqB?TWPG+n z0x9^SA?{qrzBWBnTJyuDyClqjFhJXRv^rd@)zMO$##}%!H4O%!>61_-YI`?~p$+Az zV4Z3-R*lYHX_4oZ!`_1Pvl(gRvDa=fl|KKs>5%}0vGFxR)Q!E3{e63w+G3D~5%t44 zvh&seMW5#XK2%RH(b5AsBW-s8W3#Ei0C5u#jysD11W?);sBSBirHT~UZ%YM`EZJ+! zmc{x^S?J4^Wo(sY%)goTG?}f-kmagW*{n&Ft(r7|NSE!Z6xn2IWV$Wo9OJ5yJ`$nMEfEk1!J4~Y>j&?W@y`ri|+ zJX}ZBjanLjoB`vU)O1dYx=?AWgsp`iHibUkz%N?hF22#3$3<#tM^&|#LCB?Y3=!|Q zWuSnvWuLsi&v?&jWtz;CC5fjjRXlh%^JTHJ&UE5txqdBMHgvHm?lvnEWV0ewHhA4e zIbiYeCLnC`{Tqyju2-k<+GIY@l@(IoEW4COQlh0f2AP}WV^mfasma(S8UYZf+8&xR z{IBR;sy2p#p(L(f*J98|N|S@6Ge1H4%A#esGEQu8#5fTkkbBO#5RdvB+;b~uiOf#Rm&&bYkTNZ$*D#{@` zvgN2X86pM{`V@Qg(f68iO)6T)09-ANk@YeborT|GVYlc3Y~n+0R6WidVyrz8H# z3*3o8TG%O1PzNY+Ynsx|paP`|Oy{fe;;%_}VWoepW3i}(;&q3OyUgcTd5z^9yW?Vj)YPxF1;rQj#Tn6Yj^nBypHtMGQ6ro|=Blbr zvA8$jhN;RVIcP~FHKB@{>18+Ppn@Rr#xyyo1(5o52suUeYBOY~R?`t6kj^$C<8^%m zlvS>^@;JbVHh2AMF;@{_6vuM`LP@kN6J5)t34A?GR?CxRkqDb+U!n`SJCqzQjojf? z>1?Bm36@B$3%L8WN{^&?3xHG=m_R@ZWRbju;@1+)AD$dRn#v26A@-e&H6+Mn1AZ8P zkE<4o2`hT>I=K`1{jg1QZ`_ToEM}^_MgP&WVtl*dP~ug{Bfe z)90wd&$_8Skho`Eq_Hldh5F(~Prle$pyldR*$15c=2XCdGZF^gZA$@58Ee7%Ih zH~^V1j0Ozqf$T^bW(cl_Io!U=L@A<;8wyDVbBD%|>tiVlLs_I??nkKeJnV|?Bn(+4Kb&$?ig@N|wNq<@pYD!aw zz@nA+8L8^Dub9U|dJH@g6()TV5obo)B6ArUIMu4VOA9}5MLt-NLA8t&Z6;MASNGV2 zxd(|~=h^|3?OIe)Z6c~DmIwim3ZkK$?O)vGE8O`@46x~fFEjAGL}V-#@O%NijRLp^ z5EdAIThR7wA@jSXfB~4(*-_%jqab89%K^Esve{>0v_?u2VW!Zdm&1Kwq% zvIsNWKvk|oaXbc7gk@04cNRh3b-`k9W=yF)S*ANujq;o6PM4WZy`p8NHBqM8iIg_v zZ+Wm->lk0n^_OBIbFeZV&WV<8q;W+Gtzafe%pijqEmak!O^=Kqq2axN?Q%zAjD5UM`WG+op8Gym-0AU4UUoJ|Ol_Da8#|5}$ zk&hRMjz!YcQX!uMz&v0qmLvj9tjw3h%0dYXhNC-0aps1Et(jS}@1btmwaTKc0c#{u zvY4+;L*C|*j_OhZr6t`@GPEv14aGCFt2TTB{#6Uz#8GwzPc+ipVz$`R9xrnMG2fdZ zv;C;R{!E$cW!|`()ZCpc?rzAQw5H&V)`d!UafI}hMj?weokdC}!a_TcI^>`}SEz1V z)6F@?)bvhCh9iwbf_3Q5J0omBplN1m5gku8%`sHgZ7T3HQkAA91w_rfn-qO#8WH$O zXC2fUD5)E`t0z?9Cq&1wR^e?tVr5*1%tu+kS?>02wgGIK^n^01BqAX2b<)yWSqhN> zC%^^Ent~XnUMwUHk(%`51+MvgeJ+8ISsbEckyNy(&zD4@%urQ;ImN~s4-quMK-^?a z1&uF{Jlvm_F^bSQMtxF9MTG!RLOoK)BztpafRrPNQy8933C{A|PTi9j$li3_C>lZA)meHBv2 z;$Xv0Q>L$U=le@ney~)N_mcrDFFDu{@^lyf$3QOoQ*aL${9a+rmJnZL8iE04!&Vx_+ld0Z7J9VHa1Nr7gw zQUVIFAe{mRZpQfuHrp{(|CKh<~It-~r&pGk?F>Uy`9ZOqgd%c!YUqGY)=LYDD` zG*vC=HUw2t5cWcGv?23F!x^zePZU5XZ>Z9W1Ee_kBvGbwh!Papl=4qsqukw_l(Q|n zG*=W!ReZ2CP*dd6bka&am_Iav9G(#wAk7&8(p%yq14SVig@Non!3wG8=kYf#(RNhWO@d}Ttj3{j|STQ}sRtI|Zj_yLzTdD!U*}@~K+SN?kxG7O40A(D0 zQ73q;B}zsbVq~;70wKV5?(#4htcjN%_Dl9q`KLwclnccxDN2X8{dLQma*9c9q^vXT z`XOUawK>FpddiggjV`rA3P?@Z;B9J&VE(mclbW;&2LLVj7)aY|P#-D>MWv=+2C51Y z#|GJ|NH@jcdIguJElpXv@GSORNhEv$D0zSZ7brLjNL}TPh2qa74`_zqk;8M$Sk2_b zld_Pc{2X@)X>xi%?(DgUjxI@M*K1jHpfn{A5sALIz6>HzO^2gq!bk@RL`5wX_7Ev@ zq&x~TkEHGhV{vofhdh~wCsx?%u)^jb4{pV(tCKWnmz!)T-CMDXhbc=t6EbUa{jy*! zCtanHt~65M6{NAF3AINdX@DW6O|*qG*o`7<2@`8msEqOT!NvqOuqH`wMG&cs&ZX|Q zQZGyg_;kmvi4NV&^PN~uyHQr$Ehktar``FaD$-Sl0z!0jbI~o+Z||=$2t6++Y%-mqJeX`tpgxJ=3YUrY7=Bg)X^T`%l|RuQ#`6sCbrLmg z2#9)LX(vM6eMyCWal#AsQJvQiSY9iCJ!HQwc!Sy*=ryG-^tX z!jpDX6ufcRN`wH&9+kLW3dT-jDnR6rmhz0e-BM{wdfGzXsx7ifRIC8RDtxlcLN2q& zX0b^(iwb~7MInH&Ie)$YnOmUG!7Fgeaz1IRlxQm9xnejZKTYNzFX1_E38rNn3~4)R7h_J-I&8o$H74`Cjs|G$PDE9D@#+fhlwfixR`6mRe?@ zIt~dNEd#Y_GJ&wUv*+PBjs+He-JDGEPMdb-aUDF?Rc5|d|9mnzs z!I2K2v1U;jds8FB)E96Ep?us9VYjpREdWBA+Hb)uY~Uy)C2y+n-P&B)f-knQ9X2Tp z)rnolO4;C!-Y8AS4AeBG3QMCyt&k`{K|vLy%N&b7M-{FMy_m0sAJR526<`v)wFePl zlojMXk4&EC`B~)iG+?@`;4)5XSaa6E1#y7DQBc_7G34a(*sDYbjxFP(gN0!XJcLU> zd{KegiX~bi_@g6qk0B8i9)J%O#knik_pSBpV_bD`3dIsz@pSPwc-%H1Tyo^o)3XIm zc;G~cJ)7(=c8H^=NSvLS;^`z}J0oR^>fY6k;%cQWKmq;HzD@6Kh zu26(VOMe5uQyu$QC@$0Kr4%NI(CgP-%1HCLZ`n0`RV>=!y8$3K+EG%ZspC#H46{g8 zS%AUSm`keS%#Q|a61YM=s%?CqO|?V-WCK@p6PHvAzcql^z>``lOZP?yguKiGuac6M zDe|-eUmz;xl*|hw`P^HTFOZVvwHQR+&KD9DMAi~OD%U7?%wayd_}Yq&7AY^?+2c5WOiN^!-> zj2GhI^42_CxtF=tIZbFyo}8|5G>2R6?oY_+rXEbtBg;(8Ob=Ix9c~?OO&50;ep+`H z(ZQvFbN~oblVeTsL>(SmNf6uX00RX!*bs&43Xv*)w;KNLrZT`v@@LOV80}@!R+yhT ztRRg+4a-e{IO!rP7%(`X-Z;^|2GOC?_E1}>M8`p64)#bU(SbKrpDNcW{(YzuA`_{$p7mord3mo$3y5Ud9?y30`eg5f+#M?9YE$#SPK+|8X=3w+(r0i zv4~m#WiC;SU^uXzXz?~&FNOD&P|XS?!G!K_hRm@SgPD`EDLSVHl)!-#0VUL zK&`dZEO=EDO(`U)=HO_xYO}YvozML=-O$yVq#R53G2>|ivEGML@V=VMz3O=>a52##^ z>1h~1I1%AMZFDS=9YE1;-8O*iQV4BVX@t*w1+gy}UI7%7&QxV_5n)THsRe2ojSls%Tu9`(Rt6^6$hkaPix(9l z<CI{f;$XIihjF=$@6kA<_Om(G*r;oaX zue;ijzzliYAo)?0RZDe}1EBT*U2K|FC$-?A~3z6lCT!6|}2I>;rB#oivdGW8r}u&f}_7i-hTris&Foq!JDVkWeBeJ?e@y=VEKr($}Dxc6TKs zajD2hm>FZAS=)Y?Y&mw{zEz<8@hagRLzo z919X7eVC=)74+F_=$*7Bi=#7}-C7y&NhWEFE+%H=7=4t!a*i)V*=5Dj7GN?Zik^KW zYA>37Ah}Glw3LuqNpBOVylJ*@_bD*7sbV=Gln?oj54ZzV;%YDanDLtvl+_V{95<1! zkaW8gd|TC7NL#Hjw7Eodkn7jD)J|Vz5m%`lmf;Iyjc6S~+F8u=R^occ8<~r$QbIS< zS5ugB1}SZ!2>wtrk)JaQ*-xp5MK5~>>FlAezUg3FG-;xebEVYLjY7L;U?f)1Pj5`{ zlN#!eWOTibjfUa8s<%{^9gH;}DdWgd5BYv(kU@%>KDp1qHFx)2oD}Dv<`|Lv1yUhL z1 zlC~7KZv$X`45LCsGQFB?2JF&x9*n3~BClhBqMK178@%HlrtQt)Yg@B$6x%Z_+HyT& zI^>X+>q!fq7WVpu_CxTrj*-6m{8Bp&^f#*MX_Kb3(WLIJi40R~5FPkatB~@FvC!3% zBGphc7+Fhn=)!A?QZVLla~HHqXXF1o(Xjw;Eb#sF6opHGxd1rR8Xc;z7&7pvpT+Q; zi{G=0V*+a#Mo2-oYta|Vv_?8Pxh5X1pBgH4sq9F?=~XoqMn5Dx*bm+B&ooJZRAxp? zPgA)ZuZ?n?lbwTWP)+PT*>rbua$TKxm?5xnnuHCn%0`W%Tw%qd8*56CVPyVLol0fM znG{-)$q|NOSGYI?ft|f=6r02KoIrsCJW>}!REEhIMe+!8y$g$|i5jFfCs=A3b8VuR z(p5>1r74!^qWfwsl~n-Q;i$qLHo964TH%P6G{!*l9w-jTk z6AeVimJTM6rq)X#^O6iwRGRUqR%wB*kndI6E*on^`2vohZ()GIF4wlJrYe)Vu8X(nIb}WBFWubATw;^Uepuy*degL1R#eE+WThY zhNjXn3hVx81zV5n*+SOAj#thwWC(hf0k!SwG-HWusjW^6cAZqRj^DJ(UA{)TQL9{y z!9|S#7JFV*l*(4+3wXrTA8^JTz$_F+dMy*JIru)UOEfYTc${I@N-J9h$idXaOv z4i|c5pHm_>*%r4*R7|OQ>OehdGyujZa{{9Z1iq9ND`d1W7EqF82w(;g2mSa{omEk| zxtNvA5!X;)wzCeS@XJJBs!VhznWmSuF%UrMMndl6w1BM*p)|CRzle-MQrQscZ;a~R z*_SD^aN|6OxUEjH&Ke=t8P!o!aD&A@Y))fJF^?TimGYcDY=@Rv*Hq>pp$ z##9k9SUoNj*fi%{&5)|5;S(oz{wNKpHcn}1q`%Ne@mEhlRnN3wC7={y9wx&hVQ@+$ zo=_^ih{_c1MC|Y3+F%ws0zQZl4~L>{Pd7u_9Tb&~vZ$UEXK~q?k{Kr&tPsEQgq1Wh zLUA{W_cTVWHA;~;LLD)L)iT5Y#2^y3mql%buv@Txs%dl;bDUIji57hHO6aRh!Xt+4 zn;Dj9;$(?th9}zbwCW>q2H+L}f*gJ0I;-QPL_6S3@H5Z?Vj@IFY1N!5)28!hYJDZ*oO3yg2>cLnY5;%{h6AdS0iC~Qo9V=>;E0Mz=UKf{- zi2`+R7nHmUA!aoSi4Zjq&GRNL5fP?${+qK4-w`VLt5xe<}47}qcz<5bwo%Vji*MoIX9tj+R}Zcle=?(Js|_6 zxYoRIQWl5LQ0-qc7m9JMq`L2Sk89_!$wB5b8`6zDMSML*SdUk$*}i0h&T>n5Vda5yGO zLvCz(XBR1n3SOI9ZfZLx#iN7B7(8T$ylv4|>kPSm z211N&*E9#6@7I}r!5|*?9#ofPD z6pHMn@1a$<))vYs*eBZaSfEf-FH6BN1)%Apd;KZ}WEO6jf$Zn_<7P->wya>O$5yYR ziml{oWXnMlR!I}xzgCX!>tGPNpQe=+H8+k$VyllJXLBcNRnCrFH>W(f`#E@%2GqXDi~tJv0b6^Ug54^HK~k|9`1HE370h@m`GGhWkr1| zioYeiDJAk*B=0N$O_S@Ao`5JPD6+JHG(Etu!Vvq`IWll&D4%|K4rwHp#Z3n=?$9RqqS-s0XeIrO8j_{n zz^BvbutK&DYO@K39NdFU>;uFarxooj^~(uo)}OPpSc}P9`wqFWWiy9o?k)|>_2p67 z#z|P9zcST_8{CEeh5EghHS-O;qla;dIC>P5d zx!jc#CKKuSK1fGvjg!HA|Y) zkEi&3>{@u?f+k{_7XeBQ#a{!ds)ZTcE^2^Y9dJY6k1{W%3+o{Ns|D`ikDb%D>}Zk9 zkK_YR1$;r(jRP@;$21NYqbQsah7*P%=n*`pQBw90YRC$YXjSf@wd)#SzdN18RVRNN zM++WP*`M!v^axKY=JM;43*p4+*DKq`Fvf&apV@0aG zCc7~o`xrOkcbkCt9i0FMXcOJ3L`pWb2#2lNt7XYuDwdgCav70f$KVnSq&&8RbYR(h9CP@PYZ zE++W81NEd8w2kS+u{Jt~M8y!CVMWxa%CbSkPE6J*qH58>b~z5k+2hW?xjjxq%*g$l z3%tX@It#zX#UobzB}a?v@#2^FHsvLcFK~@_ICyQIY0xPeeV$$>R(f-Z41RVm9Lb20 z0yM4!PYN6FfJ?gg9T_|F=pmrE5f%>vXA_yUAvu=S0U+ba*Tf2$jsc7-BZz2;kXcm3 z26yv5+WZuY{tlx;57^@Nh`r-aY#fha>*2TyI0ozCE}-1fy(3hiH>mUv@o4rS&uv<~ zTS(`1PF`3lX2JvCO6`?dNPn7lJD4JE>4=YwiNqobx^R4{IQkrUY(1-tyDAL~qqS%F zNLQY}^wS?7MjG2F*e1~VE*4V(n1e4ChfBrH{IT8C77_5pzxKP86YLbh_Eri%a{Cx0 zYa@Cb5VngkD7Dv@Ic9c?Ep|sMgPf4fVavF`4~dGWx0Y~)S@=5}1_T3yZvErk7B1ku>k37VW>Tk6C~qJdM9U`nRsFL z1~O)f-Eu=M7u{#5ZC^O(I%;N{qc1iAV}Os^a+Tjg|joMXz} z^hW08<@t)&roX*KdfJg!_qBn=_CKymnpu||r10h;&v7!`OOD9hnQoIwz;F{0Dki1} zh++orT)m`LQr19iEEPWe4-{l(vX2y@5Jy!iGlpbwQr%9ZvG}}?hw{f*`ZYe*NTEre z6fR?o%}l2G%M=mh;_jW{ZeE~xTcZw9ZrG+VwZmA>bzETWm28s=u46!MYGrR)yE?g! zZGpYAs6>w1n!&wQpKAusYAVlLdrb5BB&n;3LzHuvK+I)dU{M5s;N;fRFKU#NBl3#VOGq z_+<*IJd>;Ltrmjb8e>rlM*11cSnx|M{ybin%HDaMIDxol>7`Fov3n>Or}*9}{47mX zZmbq-MyQm~WGbKwSj1N3Vn$}ls6ndZuuD?lkz`u6NZ%ZuD<^t;`I%!>&~}Cj^o)29 zscM|+dxXdtW`J#o$ANmPY$8Sb7bAc%idi^@35ns@e=NMb!Qu36p&Surd}}s@f!YkbMHD4vn6lX!Tg3djd^jg!26nX zixojJNAWi`0GE)qRCK7y>ZhNiK3fRq7{_Dz)RP^o2!Kg$DvK*iIfPtHq}W-INj5i5 zX88gReoPXJ1i{-NR2!#>j&n?&GZR2C@bu9M$G8B{MfkZ;WuCk+Kw@l%cIh1w)qrQD%l5G|K% zl)dCA+&9W2Os42N@x0Xum4_N7I<2xM&(CIMgHu-LaXjX5K4y@)s=lV#DsD%fH{fIx zP)ju-Osq&_XFq&1m<1pPfGE<1-ub%kf6FVD&ZwLq0 zp++4Amxn6Z1|XwI+98vkqGVX5uDZAsdN!I!4ty;aZQLofEC6E}7h;oxnD>~wI%dr0 zgm=QZ*rQ)^GA)nKNm;aaU$RU2H!{Dxt7NXxK@Z-H2WgrjeUYx-0E|Y6rY;>HdU#_B z2X_ET+d!mLAQ~X9Juv_a9s(5OpsWIln#*n=enfx(Ch?6_q4H%v*^fHU( z;Vz$4Lg&3S>}(ygCE@X_Bu0T*sg}p!808&D8WEOG4}it7qt@)a8^HvY#RQM~{Vu?9 zv%$tg2Ty^R;_Zq&IT1V;E>6;v3l5p&`9a2Gs_~yvvDP!fzL6C6?1k%DB}|h?V;pAD zd#FvM=YZ<#!m=4;RA{uC6icz^U=+tgBE-b!dyDq^@&>`N7Hn^~N~qY8*h^a{m}Wm^gWP!Q$UuCqh=awup{hE*=#K zldgymfKf0Mly|(_kd6?&=1{lSfTARSv2U04sSe%&sG6$0lo2Ls6=d!#Z$20c%=XcZ-8Y- zfjKha7~XtkGM(MARQgT`+J)ETf^%F<9=egv$~kVv_nm;^LfyF-MsTn@X_Ve`Qv#8J z#0{kr7!~+?Cf2V=BJ)=1JeL=9MXJ)SN+;Xc`WTQHVmwo~pxJOw9gw=p)+toY4ARj( z0Ea;4!%S5U5gAtI1RT@?E(*mNS_|`xiY{}i=^C3|w>%tOPOd+s3O{D>?sUr`XS$a!;hy1>x5_EJ(akH~ z!s8JF;U>|yH8((aZ~%9=oyp5V-tcTt_EyK_Xp_nx?y}fSWUy!e;$#7*$nzdf)bVg9 zx=AB$qGyt!X=ggGfy~{cFelffrY)kt#pNb7P2~V4uXANn>Z(UHw3QjRGLrjp(2^%$k;`ISV7vZ(puP@ z?u5kqnYE%}wK^&{SrDBzxdkA1IQ8hk5%0Kmro|pWsLHyt35RI?L3$!OE|I>k;EUHv z=J$621KA6Yyw#M&TPbOjywi8{;qV?!V>)nm$@e~^!hb;ue99Zi=vyQ`;Y2t>zK{JVyrle3MCitTD z*l$3|;jox`Z1y(xd33=&eOeGQfHp#tXq{7#}1zDaP9GaR`AEYLytV*j(*0G zgldUsb^ekFc>#&PWbw2ByhQS9Euw>UZyxZ-qQ8E)Ya-$um%fk6Ti!GA9VhR-eXQW{ zR(zZ{rtd=Zp0^wPfyZ~|P1OMJ5np@C_i*5k#Rhq+>~)zt9_s>~?^NZ*V!5~!C>Ml3 z$@_gwQq{ZpnoD0t`f;)4z(acSu*c5LPF1ZbrgFJcvC$O_Hx`GgE^oB)Jw&1#&T;C` zA~MD@7!p9n7VsV)Imq2?07<6?NkmNr!yVzIuN;iUW-OCl1VKLoaD!!0VkJVXHHZxe z+fEZo?GY!wkjE$)+ObGq8!mwp&X~qMShBU_(l*LAZQI?M9ynuww@4ZyGDhUahTZUn z0&-4t+~z$I?;P;HRX3PgJYT}E;(|jAsjIpI7_CDzQj|wjVZA0YUTa~ffG7~8svq=N zD;EB(0>Qh)y?X|~JXtr3{+6@Ie&Bqv4;)_o;qei#;gmjob2Sc$vy9PywsF^Laj1km zsdb5d4lt8EI*5{q+^c30oshN*DLV-tIJxV!%GY${h9jKFTn}}H0fD^RZ$dz5Oy|00~ul8B5gTFiOn@J^vrcXc?8i?!t7Nu61xwd zYXFB=r`WATi4GvxA@xam4wHCUQ@E(pY+kithEAZS+&HhQq}GXyO}cTrv$(drkJZ5< zV62S58)E>%JQk_yY{$l|meWkt-#c2sM8rTeMImX+s4R^VO|{Fmndg-=?CB6TM&o2AAixz)O=GArK1|tvkZL<6M%jNn77=)-H#J>Ane0U(m-~ zMrhg@Sne$jl3}JfMu`wxBR3IVm3mW7OgeXeE>ngDC@S8X6<=$X9Z*Z0v$9UhV0*S% zuFrSMbq@PKS_TZpf7Cud-=5%d5FIw^50~6Na6{;Gyt5l_?giczve#=Ua+#tKAU*@5 zg`tTO_~a4}Q9#}j8Oj^);gL7yV^R|5R4NGX0pb~Z#&cSccO{alqOeG!zGtJ29uC8tE@S%XyrWw>DJz9tP&(Nj ztVdFC6ozt2CZqiIX?~cC!RELNEBicj5YA4+$*Efl*hQ?MxG+Dbkhb$oDK683UT4~5 zn=^lR=hYhNgEs(!=+H^U3*KN%Q`N2AX}QG&{5?)ZQp@Bi3hO2B@%s|F`$E$dl2?Jy z$k1Bk4IJ{?$X`C!cNH}%i#M}T5R@~F+9FDROIa-VJCmCDn&FVok)oiG#x#|g2(eRT zPjClol&E~QaT1PAi#!ZRo2D-!My+`pQKOOKAW|l{CgFlfNM57JiISQ`2sn8C1pJ~P z*fj+Ls-6Adb_&dK29L*hBd&4mnLgUAWe|BT$0g-5N0p1h%4XCulcFy(oP|g7CTr>< zN@Cc=5^nZ>0}A`{blX}IhGQ*1cR&ZKvC!>Q-!42X5BnnR9HQnXN@nPEF7O_SYn=JG z&gkeShTryFryMK{n&`N>sk}i{;OJiL0?aN=rvuUzZ?*d1bXJ~VwZFWjV9@J837I;? zq${u8u7F(L<^8sZj@J)XA$E-rK!Hb;KMaTPu>lA&_X45M0}AgW>?Qfnz;Mi>g7FS+ zvDi>dT6x=OP}#Wq6_{}%#7-3G^A0Q$2OTOY!rGnq_Vft$E3ux93^cH;wD!_v&klskxB?VpR=j**oc{@k3>lp=_@mm$wTH} zGxU7KkZ&Xj>m)At4{Req5}T7nuSqmu6;rGZlrb`jbz(4n{_AuG^SuAC+^s`I`Wis_1y3W z-~fi!6WaGM($~}?3WitqYGG*XlLx%Z!Dm(VmK0^81wQ#fFFn;2MfFDch3DUXR$A|P z`&yH-h#)F;fIv;@o$pXkjHgAkkcLzeo61}BKj4h(>-hSl@&G_MNKFo2V}o#QC?;do z1B8QU7^jFdX^IpxLWOU|^U}k{>e;}Ok2#pn6iFc)SMnKh%O`ae(iP0pi?8WHW4WB$ zp2yddNEW08aT*Ldfh z4Jz?nnnruP+k*BubWrXTWp&08gBLq4z;FY~6ip~jTs@*A$h&<$<2|9CUl1MmSkFzJ zfR|+&Qh;KluD(mC@`m<7G&-` zDXD)>T^1X&McOj8QGYn7swdceq#xTdk^l!ok#yuBI&`te;R^?;$*yEi)EGga3$N)8 zFvqF*?V9Q|1(LF?^i+ni?}zo|13+rvD5V0@O)dwG6*EOrz*U0E($n5b+1^!*t6M@d zs)VY&%zXSk#i92M#oXvC>_*~NjL|z^LFVc64J?0DJ<+8#K z+6@L0wwUGJL*^c>@?M4T#wi;`&vwS?jZ*}2sj9kthn2nTW zeommCRq2P^lLq0E&6cPvYI(C=^TC8&b^XoD%-OIz&Vl-9zpE>8#T%9?>GZ zXxDgu_Kj)I_u^eZ4;O}+ZXf-ZG+F1 z7#_A$L2I-qZ;T^l$A}muZkzT~7`Y#&!8O3b)gy0Vh~_7LX=0;G`yrb_ge2*9)R)2IKD&*V7%cSsuc+Hxq<*7m!vQQ t2K=GM;~V7<($yOzu`01Q8Y!f${||WuFg_oqXfXf)002ovPDHLkV1hBouF(Jh literal 0 HcmV?d00001 diff --git a/Chapter11/imageplugin/testwrite/main.cpp b/Chapter11/imageplugin/testwrite/main.cpp new file mode 100644 index 0000000..a849fb4 --- /dev/null +++ b/Chapter11/imageplugin/testwrite/main.cpp @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include +#include + +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + foreach( QByteArray ba, QImageReader::supportedImageFormats () ) + qDebug() << ba; + + QImage input( "input.png" ); + if( input.isNull() ) + qDebug() << "Failed to load."; + else + if( !input.save( "test.ti", "ti" ) ) + qDebug() << "Failed to save."; + + return 0; +} diff --git a/Chapter11/imageplugin/testwrite/test.ti b/Chapter11/imageplugin/testwrite/test.ti new file mode 100644 index 0000000..2c21762 --- /dev/null +++ b/Chapter11/imageplugin/testwrite/test.ti @@ -0,0 +1,86 @@ +TEXT +100x84 +iiiiiiiiiiiiiiiiiiNMMMMMMMAllNNAAAANllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiAMAMMMMMNiiiAMMAilAMMMMMMMM +iiiiiiiiiiiiiiiiiilMMMMMAMMNilNAAANllllllllNANNNliiiiiiiiiiiiiiiiiiiiiiiiNMAMMMMMANllAMMAiiAMMMMMMMM +iiiiiiiiiiiiiiiiiilAMAMMAAMAlilAANNlllllllAAAAAANlliiiiiiiiiiiiiiiiiiiiiilAAMMMMMMAllAMMNiiAMMMMMMMM +iiiiiiiiiiiiiiiiiilAMMMMANAMNliNANllllllNAAAAAANlNNliiiiiiiiiiiiiiiiilllllAAMMMMMMNilMMMNilMMMMMMMMA +iiiiiiiiiiiiiiiiiiiNMMMMANNMAliNNNlllllNAAAANlllllNNliiiiiiiiiiiiiiilAAAllAMMMMMMMliNMMMllAMMMMMMMMN +iiiiiiiiiiiiiiiiiiilAMMMMAlAAllNNNNlllNAAAANlllllllNlliiiiiiiiiiiiiiNAAAlNMMMMMMMAliNMMMNlMMMMMMMMAl +iiiiiiiiiiiiiiiiiiiiNAMMMANNMAlNNNNllNAAANNllllllllNllllliiiiiiiiiilAAAMAMMMMMMMMAllAMMMNAMMMMMMMMAi +iiiiiiiiiiiiiiiiiiiiiAMMMMANAAllNNNNNNAANllllllllllNNllNNNNNlllliilNAMAMMMMMMMMMMAlNMMMAAMMMMMMMMMNi +iiiiiiiiiiiiiiiiiiiiiNMMMMMNAMNlNNNNNAAANlllllllllNAANNAAAAAAAAANllAAAMMMMMMMMMMMMNAMMMMMMMMMMMMMMli +iiiiiiiiiiiiiiiiiiiiilAMMMMANMANNNNNAAANNllllllllNANNNAAAAAAAAAANllAANMMMMMMMMMMMMMMMMMMMMMMMMMMMAii +iiiiiiiiiiiiiiiiiiiiiiNMMMMMAMANNNNNAMANlllllllNAANNNAMMMAAMMMMMANlAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMNii +iiiiiiiiiiiiiiiiiiiiiilAMMMMMMANNNNNAANNNlllllNAANNNNAMMMMMMMMMMMMAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMlii +iiiiiiiiiiiiiiiiiiiiiilAMMMMMMANNNNAMANNllllNAAANlNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAlii +iiiiiiiiiiiiiiiiiiiiiilAMMMMMAAANNNNNNNNNllNNAANllNAMANNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNiii +iiiiiiiiiiiiiiiiiiiiiilAMAAAANNllllllllllNNNAANlllAMANllNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMliii +iiiiiiiiiiiiiiiiiiiiiilAMANNNllllllllllllllAMANllNAANlllNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAiii +iiiiiiiiiiiiiiiiiiiiiilAANllllllNlllllllllllNNNlNAMANlllNNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAiii +iiiiiiiiiiiiiiiiiiiiiilNNllllllllNllllllllllllNNNMANlllNNAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAiii +iiiiiiiiiiiiiiiiiiiiiilllllllllllNNllllllllllllNAMANNNNAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNllN +iiiiiiiiiiiiiiiiiiiiillllllllllllllllllllllllllNMANNNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNNNM +iiiiiiiiiiiiiiiiiiiilllllllllllllllllllllllllllNMANNNAMMAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAAMM +iiiiiiiiiiiiiiiiiillllllliiilllllllllllllllllllNANNNNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNAMMM +iiiiiiiiiiiiiiiiilllNlllliiilllllllllNlllllllllNNNNNNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNAMMM +iiiiiiiiiiiiiiiillNNNllllllllllllllllNNNlllllllNNANNNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMAMMMM +iiiiiiiiiiiiiilllNNNllllllllllllllllllNNlllllllNNANNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiiiiiiillNNNNNlNNllllllllllllllllNNNllllNNNANNAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiiiiilllNNNNNNlANllNNNlllllllllllNNNNNNNNNNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiiiillllNNNNNNlllNNNNllliiillNNNlNNNNNNNNNNAAAAMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiiillllNNNNNNNNNNNNNNllllllllNNNNNNNNNNNNNNAAAAAAMMMMMMAAMMMMMMMMMMMMAAMMMMMMMMMMMMMMMMMMMMMMMM +iiiiiiillllNNNNNNNNNNNNNNlllllllllNNNNNNNNNNNNNNAAAAAAMMMMMAAMMMMMMMMMMMAAAAAMMMMMMMMMMMMMMMMMMMMMMM +iiiiillllNNNNNNNNNNNNNNNNllllllllNNNNNNNNNNNNNNNAAAAAMMMMMAAMMMMMMMMMMMAAAAANAAAMMMMMMMMMMMMMMMMMMMM +iiilllllNNNNNNNNNNNNNNNNNlNNlllNNNNNNNNNNNNNNNNNAAAAAMMMMMAAMMMMMMMMMMAAAAAAAAAAAMMMMMMMMMMMMMMMMMMM +llllllNNNNNNNNNNNNNNNNNNNNAANNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMMMAAAAAAAAMAAAMAMMMMMMMMMMMMMMMMMMM +lllllNNlNNNNNNNNNNNNNNNNNlNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMMAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMM +lllllNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMAAAAAAAAAAMMMMMMMMMMMMMMMMMMMMMMMMM +llNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMMAAAANNAAAAAAMMMMMMMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMAAAANNNNAAAAAAAMMAMMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAAMMMMMMMMMMMMAANNNNNNNNAAAAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAAAAAAAMMMMMMMMMMMAANNNNNNNNNAAAAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNNAAANNNAMMMMAMMMMMMAANNNNNNNNNNAAAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNAAAllNAMMAAAMMMMMAANNNNNNNNNNNNNAAAAAAMMMMMMMMMMMMMMMMMM +NNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNAAANllNMMMAAAAMMMAANNNNNNNNNNNNNNNNAAAAMMMAMMMMMMMMMMMMMM +lNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNAAAlllAMMMAAAAAMMMANNNNNNNNNNNNNNNNNNNNAAAAAMMMMMMMMMMMMM +lNNNNNNNNNNNNNNNNNNNNAAAANNNNNNNNNNNNNNNNNANNNlllAAMMMAAAAAMAANNNNNNNNNNNNNNNNNNNNAAAAAAMMAAMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNllAAAMMMMMAAAAANNNNNNNNNNNNNNNNNNNNNNNNAAAAAAAMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNANNNlllAAAAAMMMMAAAAANNNNNNllllNNlNNNNNNNNNNAAANAAAAMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNAANNNNNNNNNNNANllNMAAAAAMMMMAAANNNNNNliiiiiiilNNNNNNNNNNNAAAAAMMMMMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANANNNNNNNNNNANlNAMMAAAAAAMMMMAAAAANliiiiiiiilNNNNNNNNNNAAMMAAAMMAMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNANNNlNAAMMAAAAAAAMMMMMAANliiiiiiilllNNNNNNNNAAAAAAAAAAAAMMMM +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNNNNNNNNNlNAAMMMAAAAAAAAAAANNliiiiillllNNNNNNNNNNNAAAAAAAAAAAMMAA +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNAANANNNNNNNNNNllAAAAMMMAAAANNNNNNlliiilllllNNNNNANNNNNNNAAAAAMMMMAAAMMA +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANlNAAAAMMMMAAANNNNNlliilllllNNNNNNNAANNNNNNAAAAMMMMMAANAAA +NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNANNNNNAMMAAAMMMMAANNNNNlllllllNNNNNNNNAAANNNNNNAAAAMMMMAAANNNA +NNNNNNNNNNNNNNNNNNNNNNNNANNAANNNNNNNNNANNNNNAMMMAAAMMMMAANNNlllllllNNNNNNNAAAAAAANNNNNAAAAAMAAANNNlN +NNNNNNNNNNNNNNNNNNNNNNNNNNNAANNNNNNNNANNNNNAAMMMMAAAMMMMMAANlllllNNNNNNNNNAAAAMMAAAAAANAAAAAAAANNNll +NNNNllllNNNNNNNNNNNNNNNANNNNNNNNNNNNNANNNNAAAMMMMMAAAAMMMAANlllNNNNNNNNNNAAAAAAAAANAAAAAAAAAAANNNNll +NNNNlllllNNNNNNNNNNNNNANNAAAAANNNNNNANNNAAAAAAMMMMAAAAAAANNlllNNNNNNNNNANAAAAAAAANNNAAANNAAAAANNNNNl +NNNNNllllNNNNNNNNNNNNNNNNNNNNANNNNNNANNAAAAAAAAAMMMMAAANNNllNNNNNNNNNNNAAAAAAAAAAAANNNNANNAANNNNNNNl +NNNNNNllllNNNNNNNNNNNNNANANNNNNNNNNAANAAAAAAAAAAAAMMMMAAANNNNNNNNNNNNNNNNNNAAAAAAAANNNNNNNNNNNNNNNNl +NNANNNNllllNNNNANNNNNNNNNNNNNNNANNNANNAAAAAAAAAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNNAAAAANNNNNNNNNNNNNNNNN +NAAANNNNllllNNNNNNNANNNNNNNNNNNNNNANNNAAAAAAAAAAAAANNNNNNNNNNNNNNNNANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +NAAAAANNNlllllNNNNNNNNNNNNNNNNNNNNANNAAMAAAAAAAAANNNNNNNNNNNNNNNANNNNNNNNlllllllllllNNNNNNNNNNNNNNNN +NAAAAAANNNllllllNNNNNNNNNNNNNNNNNAANAAMMMAAAAAAANNNNNNNNNNNNAAAANANNNNNNlllliiiiiiilNNNNNNNNNNNNNNNN +AAAAAAAAANNNllllllllNNNNNNNNNNNNNAAAAAMMMAAAAAAANNNNNNNNNNNNNNNANNNNNNllllliiiiiiiiilNNNNNNNNNNNNNNN +AAAAAAAAAANNNNlllllllNNNNNNNNNNNAANAAAMMMAAAAAANNNNNNNNANNNNNNNNNNNNNllllliiiiiiiiiilNNNNNNNNNAAANNN +AAAAAAAAAAAANNNNNNNNNNNNNNNNNNNNANAAAMMMAAAAAAANNNNNNNNAANAANANNNNNNlllliiiiiiiiiiiiilNNNNNNNAAAAANN +AAAAAAAAAAAAANNNNNNNNNNNNNNNNNNAAAAAAMMAAAAAAAANNNNNNAANAANANANNNNNllllliiiiiiiiiiiiilNNNNNNNAMMMMAN +AAAAAAAAAAAAAAAAAANNNNNNNNNAANAAAAAAAMMAAAAAAMAAANNNNAAAAAANNNNNNNNllllliiiiiiiiiiiiiilNNNNNNAMMMANN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMAAANNNNNAANNNNNNNNNNllllliiiiiiiiiiiiiiiilNNNNNNAAANNN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMAAAANNNNAAAANNNNNNNNlllllliiiiiiiiiiiiiiiillNNNNNNNNNNN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMAAAAANNNNNAANNNNNNNNNllllllliiiiiiiiiiiiiiiiiillNNNNNNNNN +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMAAAAANNNNNNNNNNNNNNNNlllllllliiiiiiiiiiiiiiiiiiillllllllll +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMAAAAAAAANNNNNNNNNNNNNNNllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMAAAAAAANNNNNNNNNNNNNllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAANNAAAAAAAAAAAAMMMMMMMAAAAAANNNNNNNNNNNNllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMAAAAAANNNNNNNNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMAAAAAANNNNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMAAAANNNNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMMMMMMMAANNNNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAMAMMMMMMMMMMMAANNNNNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMMMMMMAAANNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMMMAMAAAANNNNllllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNlllllllllllliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii diff --git a/Chapter11/imageplugin/testwrite/testwrite.pro b/Chapter11/imageplugin/testwrite/testwrite.pro new file mode 100644 index 0000000..093b941 --- /dev/null +++ b/Chapter11/imageplugin/testwrite/testwrite.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) fr 8. dec 22:18:27 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter11/imageplugin/textimagehandler.cpp b/Chapter11/imageplugin/textimagehandler.cpp new file mode 100644 index 0000000..6a92e53 --- /dev/null +++ b/Chapter11/imageplugin/textimagehandler.cpp @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include "textimagehandler.h" + +const char map[] = " .:ilNAM"; + +TextImageHandler::TextImageHandler() +{ +} + +TextImageHandler::~TextImageHandler() +{ +} + +bool TextImageHandler::read( QImage *image ) +{ + QTextStream stream( device() ); + QString line; + + line = stream.readLine(); + if( line != "TEXT" || stream.status() != QTextStream::Ok ) + return false; + + line = stream.readLine(); + QRegExp re( "(\\d+)x(\\d+)" ); + int width, height; + if( re.exactMatch( line ) ) + { + bool ok; + + width = re.cap(1).toInt( &ok ); + if( !ok ) + return false; + + height = re.cap(2).toInt( &ok ); + if( !ok ) + return false; + } + else + return false; + + QImage result( width, height, QImage::Format_ARGB32 ); + for( int y=0; y> 8) & 0xff; + int b = (rgb >> 16) & 0xff; + + stream << map[ 7 - (((r+g+b)/3)>>5) & 0x7 ]; + } + stream << "\n"; + } + + if( stream.status() != QTextStream::Ok ) + return false; + + return true; +} + +bool TextImageHandler::canRead( QIODevice *device ) +{ + if( device->peek(4) == "TEXT" ) + return true; + + return false; +} + +bool TextImageHandler::canRead() const +{ + return canRead( device() ); +} diff --git a/Chapter11/imageplugin/textimagehandler.h b/Chapter11/imageplugin/textimagehandler.h new file mode 100644 index 0000000..324c62c --- /dev/null +++ b/Chapter11/imageplugin/textimagehandler.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTIMAGEHANDLER_H +#define TEXTIMAGEHANDLER_H + +#include + +class TextImageHandler : public QImageIOHandler +{ +public: + TextImageHandler(); + ~TextImageHandler(); + + bool read( QImage *image ); + bool write( const QImage &image ); + + bool canRead() const; + static bool canRead( QIODevice *device ); +}; + +#endif // TEXTIMAGEHANDLER_H diff --git a/Chapter11/imageplugin/textimageplugin.cpp b/Chapter11/imageplugin/textimageplugin.cpp new file mode 100644 index 0000000..9deeb5b --- /dev/null +++ b/Chapter11/imageplugin/textimageplugin.cpp @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textimageplugin.h" +#include "textimagehandler.h" + +TextImagePlugin::TextImagePlugin() +{ +} + +TextImagePlugin::~TextImagePlugin() +{ +} + +QStringList TextImagePlugin::keys() const +{ + return QStringList() << "ti"; +} + +QImageIOPlugin::Capabilities TextImagePlugin::capabilities( QIODevice *device, const QByteArray &format ) const +{ + if( format == "ti" ) + return (QImageIOPlugin::CanRead | QImageIOPlugin::CanWrite); + + if( !format.isEmpty() ) + return 0; + + if( !device->isOpen() ) + return 0; + + QImageIOPlugin::Capabilities result; + + if( device->isReadable() && TextImageHandler::canRead( device ) ) + result |= QImageIOPlugin::CanRead; + + if( device->isWritable() ) + result |= QImageIOPlugin::CanWrite; + + return result; +} + +QImageIOHandler *TextImagePlugin::create( QIODevice *device, const QByteArray &format ) const +{ + QImageIOHandler *result = new TextImageHandler(); + + result->setDevice( device ); + result->setFormat( format ); + + return result; +} + +Q_EXPORT_PLUGIN2( textimageplugin, TextImagePlugin ) diff --git a/Chapter11/imageplugin/textimageplugin.h b/Chapter11/imageplugin/textimageplugin.h new file mode 100644 index 0000000..7bfdd20 --- /dev/null +++ b/Chapter11/imageplugin/textimageplugin.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTIMAGEPLUGIN_H +#define TEXTIMAGEPLUGIN_H + +#include + +class TextImagePlugin : public QImageIOPlugin +{ +public: + TextImagePlugin(); + ~TextImagePlugin(); + + QStringList keys() const; + Capabilities capabilities( QIODevice *device, const QByteArray &format ) const; + QImageIOHandler *create( QIODevice *device, const QByteArray &format = QByteArray() ) const; +}; + +#endif // TEXTIMAGEPLUGIN_H diff --git a/Chapter11/staticplugin/customplugin.pro b/Chapter11/staticplugin/customplugin.pro new file mode 100644 index 0000000..29aa1f5 --- /dev/null +++ b/Chapter11/staticplugin/customplugin.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 11. dec 19:03:41 2006 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += filterdialog.h filterinterface.h +FORMS += filterdialog.ui +SOURCES += filterdialog.cpp main.cpp +CONFIG += console +LIBS += -L./filters/darken/release/ -ldarken diff --git a/Chapter11/staticplugin/filterdialog.cpp b/Chapter11/staticplugin/filterdialog.cpp new file mode 100644 index 0000000..572cf6b --- /dev/null +++ b/Chapter11/staticplugin/filterdialog.cpp @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "filterinterface.h" + +#include "filterdialog.h" + +FilterDialog::FilterDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); + ui.originalLabel->setPixmap( QPixmap( "source.jpeg" ) ); + + connect( ui.filterList, SIGNAL(currentTextChanged(QString)), this, SLOT(filterChanged(QString)) ); + + findFilters(); + filterChanged( QString() ); +} + +void FilterDialog::findFilters() +{ + foreach( QObject *couldBeFilter, QPluginLoader::staticInstances() ) + { + FilterInterface *filter = qobject_cast( couldBeFilter ); + if( filter ) + { + filters[ filter->name() ] = filter; + ui.filterList->addItem( filter->name() ); + } + } + + QDir path( "./plugins" ); + + foreach( QString filename, path.entryList(QDir::Files) ) + { + QPluginLoader loader( path.absoluteFilePath( filename ) ); + QObject *couldBeFilter = loader.instance(); + if( couldBeFilter ) + { + FilterInterface *filter = qobject_cast( couldBeFilter ); + if( filter ) + { + filters[ filter->name() ] = filter; + ui.filterList->addItem( filter->name() ); + } + } + } +} + +void FilterDialog::filterChanged( QString filter ) +{ + if( filter.isEmpty() ) + { + ui.filteredLabel->setPixmap( *(ui.originalLabel->pixmap() ) ); + } + else + { + QImage filtered = filters[ filter ]->filter( ui.originalLabel->pixmap()->toImage() ); + ui.filteredLabel->setPixmap( QPixmap::fromImage( filtered ) ); + } +} + diff --git a/Chapter11/staticplugin/filterdialog.h b/Chapter11/staticplugin/filterdialog.h new file mode 100644 index 0000000..945e4c3 --- /dev/null +++ b/Chapter11/staticplugin/filterdialog.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FILTERDIALOG_H +#define FILTERDIALOG_H + +#include +#include +#include + +#include "filterinterface.h" + +#include "ui_filterdialog.h" + +class FilterDialog : public QDialog +{ + Q_OBJECT +public: + FilterDialog( QWidget *parent=0 ); + +private slots: + void filterChanged( QString ); + +private: + void findFilters(); + + QMap filters; + Ui::FilterDialog ui; +}; + +#endif // FILTERDIALOG_H diff --git a/Chapter11/staticplugin/filterdialog.ui b/Chapter11/staticplugin/filterdialog.ui new file mode 100644 index 0000000..9613740 --- /dev/null +++ b/Chapter11/staticplugin/filterdialog.ui @@ -0,0 +1,86 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + FilterDialog + + + + 0 + 0 + 869 + 502 + + + + Dialog + + + + 9 + + + 6 + + + + + QAbstractItemView::SelectRows + + + + + + + 0 + + + 6 + + + + + + + + + + + + + + + + + + + + + + diff --git a/Chapter11/staticplugin/filterinterface.h b/Chapter11/staticplugin/filterinterface.h new file mode 100644 index 0000000..1c4d2e2 --- /dev/null +++ b/Chapter11/staticplugin/filterinterface.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FILTERINTERFACE_H +#define FILTERINTERFACE_H + +#include +#include + +class FilterInterface +{ +public: + virtual QString name() const = 0; + virtual QImage filter( const QImage &image ) const = 0; +}; + +Q_DECLARE_INTERFACE( FilterInterface, "se.thelins.CustomPlugin.FilterInterface/0.1" ) + +#endif // FILTERINTERFACE_H diff --git a/Chapter11/staticplugin/filters/blur/blur.cpp b/Chapter11/staticplugin/filters/blur/blur.cpp new file mode 100644 index 0000000..78e4c8d --- /dev/null +++ b/Chapter11/staticplugin/filters/blur/blur.cpp @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "blur.h" + +QString Blur::name() const +{ + return "Blur"; +} + +QImage Blur::filter( const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y= image.width() ) + x = image.width()-1; + + if( y < 0 ) + y = 0; + if( y >= image.height() ) + y = image.height()-1; + + return image.pixel( x, y ); +} + +Q_EXPORT_PLUGIN2( blur, Blur ) diff --git a/Chapter11/staticplugin/filters/blur/blur.h b/Chapter11/staticplugin/filters/blur/blur.h new file mode 100644 index 0000000..6feec0f --- /dev/null +++ b/Chapter11/staticplugin/filters/blur/blur.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BLUR_H +#define BLUR_H + +#include +#include + +#include "filterinterface.h" + +class Blur : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QString name() const; + QImage filter( const QImage &image ) const; + +private: + QRgb getSafePixel( const QImage &image, int x, int y ) const; +}; + +#endif // BLUR_H diff --git a/Chapter11/staticplugin/filters/blur/blur.pro b/Chapter11/staticplugin/filters/blur/blur.pro new file mode 100644 index 0000000..2fda446 --- /dev/null +++ b/Chapter11/staticplugin/filters/blur/blur.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = blur +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += blur.h +SOURCES += blur.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/staticplugin/filters/darken/darken.cpp b/Chapter11/staticplugin/filters/darken/darken.cpp new file mode 100644 index 0000000..ea0b3a3 --- /dev/null +++ b/Chapter11/staticplugin/filters/darken/darken.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "darken.h" + +QString Darken::name() const +{ + return "Darken"; +} + +QImage Darken::filter( const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y +#include + +#include "filterinterface.h" + +class Darken : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QString name() const; + QImage filter( const QImage &image ) const; +}; + +#endif // DARKEN_H diff --git a/Chapter11/staticplugin/filters/darken/darken.pro b/Chapter11/staticplugin/filters/darken/darken.pro new file mode 100644 index 0000000..15c6a6f --- /dev/null +++ b/Chapter11/staticplugin/filters/darken/darken.pro @@ -0,0 +1,44 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = darken +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += darken.h +SOURCES += darken.cpp + +target.path += ../../plugins +INSTALLS += target + +CONFIG += static diff --git a/Chapter11/staticplugin/filters/flip/flip.cpp b/Chapter11/staticplugin/filters/flip/flip.cpp new file mode 100644 index 0000000..be96fd2 --- /dev/null +++ b/Chapter11/staticplugin/filters/flip/flip.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "flip.h" + +QString Flip::name() const +{ + return "Flip Horizontally"; +} + +QImage Flip::filter( const QImage &image ) const +{ + QImage result( image.width(), image.height(), image.format() ); + + for( int y=0; y +#include + +#include "filterinterface.h" + +class Flip : public QObject, FilterInterface +{ + Q_OBJECT + Q_INTERFACES(FilterInterface) + +public: + QString name() const; + QImage filter( const QImage &image ) const; +}; + +#endif // FLIP_H diff --git a/Chapter11/staticplugin/filters/flip/flip.pro b/Chapter11/staticplugin/filters/flip/flip.pro new file mode 100644 index 0000000..a33614e --- /dev/null +++ b/Chapter11/staticplugin/filters/flip/flip.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = flip +CONFIG += plugin release +VERSION = 1.0.0 + +INCLUDEPATH += ../.. + +HEADERS += flip.h +SOURCES += flip.cpp + +target.path += ../../plugins +INSTALLS += target \ No newline at end of file diff --git a/Chapter11/staticplugin/main.cpp b/Chapter11/staticplugin/main.cpp new file mode 100644 index 0000000..0e3cc50 --- /dev/null +++ b/Chapter11/staticplugin/main.cpp @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "filterdialog.h" + +Q_IMPORT_PLUGIN( darken ) + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + FilterDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter11/staticplugin/source.jpeg b/Chapter11/staticplugin/source.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..0dc33e8ed2c4b1e2e9372ac6f9149cd5095cc0d0 GIT binary patch literal 49121 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%0AHdO0@JJ7y!B?dnxF3IuM1cd)oVXbELH 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 Gxc}L@|C`SM literal 0 HcmV?d00001 diff --git a/Chapter12/README.txt b/Chapter12/README.txt new file mode 100644 index 0000000..4c4b12d --- /dev/null +++ b/Chapter12/README.txt @@ -0,0 +1,83 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 12 - Doing Things in Parallel + +simplethreads + + Listings 12-1, 12-2, 12-3 + + Introduces the QThread class. + + +inorderthreads + + Listing 12-5 + + Orders two QThread classes using a QMutex. + + +orderedthreads + + Listings 12-6, 12-7, 12-8, 12-9 + + Two ordered QThreads are used with a device with a shared counter protected by + a QMutex. + + +readwritethreads + + Listings 12-11, 12-12, 12-13, 12-14, 12-15 + + Protects the shared counter using a QReadWriteLock instead of a mutex. + + +basicsemaphore + + Listing 12-17 + + Introduces the QSemaphore class. + + +semaphorethreads + + Listings 12-18, 12-19, 12-20, 12-21 + + Passes data between two threads (one producer and one consumer) using a buffer + controlled by two semaphores. + + +competingsemaphore + + Listings 12-22, 12-23, 12-24 + + Passes data between several threads (many producers and one consumer) using a + bugger controlled by sempahores. + + +signallingthreads + + Listings 12-26, 12-27, 12-28, 12-29, 12-30 + + Passes QString objects between threads using signals and slots. + + +customsignals + + Listings 12-32, 12-33, 12-34, 12-35 + + Passes a custom type between threads using signals and slots. + + +uithread + + Listings 12-37, 12-38, 12-39 + + Shows how to use threads in conjunction with a graphical user interface. + + +processes + + Listings 12-40, 12-41, 12-42 + + Shows how to use the QProcess object to run and monitor an external process. \ No newline at end of file diff --git a/Chapter12/basicsemaphore/basicsemaphore.pro b/Chapter12/basicsemaphore/basicsemaphore.pro new file mode 100644 index 0000000..eba1371 --- /dev/null +++ b/Chapter12/basicsemaphore/basicsemaphore.pro @@ -0,0 +1,11 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 4. jan 09:51:01 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp diff --git a/Chapter12/basicsemaphore/main.cpp b/Chapter12/basicsemaphore/main.cpp new file mode 100644 index 0000000..4dd15bb --- /dev/null +++ b/Chapter12/basicsemaphore/main.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +int main( int argc, char *argv ) +{ + QSemaphore s( 10 ); + + s.acquire(); // s.available() = 9 + s.acquire(5); // s.available() = 4 + s.release(2); // s.available() = 6 + s.release(); // s.available() = 7 + s.release(5); // s.available() = 12 + s.tryAcquire(15); // s.available() = 12 + + return 0; +} diff --git a/Chapter12/competingsemaphore/competingsemaphore.pro b/Chapter12/competingsemaphore/competingsemaphore.pro new file mode 100644 index 0000000..83b049e --- /dev/null +++ b/Chapter12/competingsemaphore/competingsemaphore.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 2. jan 15:00:20 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter12/competingsemaphore/main.cpp b/Chapter12/competingsemaphore/main.cpp new file mode 100644 index 0000000..393a7c9 --- /dev/null +++ b/Chapter12/competingsemaphore/main.cpp @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +const int bufferSize = 20; + +QChar buffer[ bufferSize ]; +QSemaphore freeSpace( bufferSize ); +QSemaphore availableData( 0 ); + +QSemaphore atEnd( 0 ); + +class TextProducer : public QThread +{ +public: + TextProducer( QString text ); + + void run(); + +private: + QString m_text; +}; + +TextProducer::TextProducer( QString text ) : QThread() +{ + atEnd.release(); + m_text = text; +} + +void TextProducer::run() +{ + static int index = 0; + static QMutex indexMutex; + + for( int i=0; i +#include + +#include "textdevice.h" +#include "textthread.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + qRegisterMetaType("TextAndNumber"); + + TextDevice device; + TextThread foo( "Foo" ), bar( "Bar" ); + + QObject::connect( &foo, SIGNAL(writeText(TextAndNumber)), &device, SLOT(write(TextAndNumber)) ); + QObject::connect( &bar, SIGNAL(writeText(TextAndNumber)), &device, SLOT(write(TextAndNumber)) ); + + foo.start(); + bar.start(); + device.start(); + + QMessageBox::information( 0, "Threading", "Close me to stop!" ); + + foo.stop(); + bar.stop(); + device.stop(); + + foo.wait(); + bar.wait(); + device.wait(); + + return 0; +} diff --git a/Chapter12/customsignals/textandnumber.cpp b/Chapter12/customsignals/textandnumber.cpp new file mode 100644 index 0000000..473eb59 --- /dev/null +++ b/Chapter12/customsignals/textandnumber.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#include "textandnumber.h" + +TextAndNumber::TextAndNumber() +{ + number = 0; + text = ""; +} + +TextAndNumber::TextAndNumber( int n, QString t ) +{ + number = n; + text = t; +} diff --git a/Chapter12/customsignals/textandnumber.h b/Chapter12/customsignals/textandnumber.h new file mode 100644 index 0000000..303d5b3 --- /dev/null +++ b/Chapter12/customsignals/textandnumber.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTANDNUMBER_H +#define TEXTANDNUMBER_H + +#include +#include + +class TextAndNumber +{ +public: + TextAndNumber(); + TextAndNumber( int, QString ); + + int number; + QString text; +}; + +Q_DECLARE_METATYPE( TextAndNumber ); + +#endif // TEXTANDNUMBER_H diff --git a/Chapter12/customsignals/textdevice.cpp b/Chapter12/customsignals/textdevice.cpp new file mode 100644 index 0000000..ccfdd50 --- /dev/null +++ b/Chapter12/customsignals/textdevice.cpp @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textdevice.h" + +#include + +TextDevice::TextDevice() : QThread() +{ + m_count = 0; + m_stop = false; +} + +void TextDevice::stop() +{ + m_stop = true; +} + +void TextDevice::run() +{ + while( !m_stop ) + sleep( 1 ); +} + +void TextDevice::write( TextAndNumber tan ) +{ + QMutexLocker locker( &m_mutex ); + + qDebug() << QString( "Call %1 (%3): %2" ).arg( m_count++ ).arg( tan.text ).arg( tan.number ); +} diff --git a/Chapter12/customsignals/textdevice.h b/Chapter12/customsignals/textdevice.h new file mode 100644 index 0000000..b8f1bdf --- /dev/null +++ b/Chapter12/customsignals/textdevice.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTDEVICE_H +#define TEXTDEVICE_H + +#include +#include +#include "textandnumber.h" + +class TextDevice : public QThread +{ + Q_OBJECT + +public: + TextDevice(); + + void run(); + void stop(); + +public slots: + void write( TextAndNumber tan ); + +private: + int m_count; + QMutex m_mutex; + bool m_stop; +}; + +#endif // TEXTDEVICE_H diff --git a/Chapter12/customsignals/textthread.cpp b/Chapter12/customsignals/textthread.cpp new file mode 100644 index 0000000..ea545e3 --- /dev/null +++ b/Chapter12/customsignals/textthread.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textthread.h" + +TextThread::TextThread( QString text ) : QThread() +{ + m_text = text; + m_stop = false; + m_count = 0; +} + +void TextThread::stop() +{ + m_stop = true; +} + +void TextThread::run() +{ + while( !m_stop ) + { + emit writeText( TextAndNumber( m_count++, m_text ) ); + sleep( 1 ); + } +} diff --git a/Chapter12/customsignals/textthread.h b/Chapter12/customsignals/textthread.h new file mode 100644 index 0000000..db812f1 --- /dev/null +++ b/Chapter12/customsignals/textthread.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTTHREAD_H +#define TEXTTHREAD_H + +#include +#include +#include "textandnumber.h" + +class TextThread : public QThread +{ + Q_OBJECT + +public: + TextThread( QString text ); + + void run(); + void stop(); + +signals: + void writeText( TextAndNumber ); + +private: + QString m_text; + int m_count; + bool m_stop; +}; + +#endif // TEXTTHREAD_H diff --git a/Chapter12/inorderthreads/inorderthreads.pro b/Chapter12/inorderthreads/inorderthreads.pro new file mode 100644 index 0000000..c1afa7c --- /dev/null +++ b/Chapter12/inorderthreads/inorderthreads.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 3. jan 13:45:49 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter12/inorderthreads/main.cpp b/Chapter12/inorderthreads/main.cpp new file mode 100644 index 0000000..79f13d2 --- /dev/null +++ b/Chapter12/inorderthreads/main.cpp @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +class TextThread : public QThread +{ +public: + TextThread( QString text ); + + void run(); + +private: + QString m_text; +}; + +bool stopThreads = false; + +TextThread::TextThread( QString text ) : QThread() +{ + m_text = text; +} + +QMutex mutex; + +void TextThread::run() +{ + while( !stopThreads ) + { + mutex.lock(); + if( stopThreads ) + return; + + qDebug() << m_text; + sleep( 1 ); + mutex.unlock(); + } +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + TextThread foo( "Foo" ), bar( "Bar" ); + + foo.start(); + bar.start(); + + QMessageBox::information( 0, "Threading", "Close me to stop!" ); + + stopThreads = true; + + foo.wait(); + bar.wait(); + + return 0; +} diff --git a/Chapter12/orderedthreads/main.cpp b/Chapter12/orderedthreads/main.cpp new file mode 100644 index 0000000..e395e20 --- /dev/null +++ b/Chapter12/orderedthreads/main.cpp @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +class TextDevice +{ +public: + TextDevice(); + + void write( QString ); + +private: + int count; + QMutex mutex; +}; + +TextDevice::TextDevice() +{ + count = 0; +} + +void TextDevice::write( QString text ) +{ + QMutexLocker locker( &mutex ); + qDebug() << QString( "Call %1: %2" ).arg( count++ ).arg( text ); +} + +class TextThread : public QThread +{ +public: + TextThread( QString text, TextDevice *m_device ); + + void run(); + +private: + QString m_text; + TextDevice *m_device; +}; + +bool stopThreads = false; + +TextThread::TextThread( QString text, TextDevice *device ) : QThread() +{ + m_text = text; + m_device = device; +} + +void TextThread::run() +{ + while( !stopThreads ) + { + m_device->write( m_text ); + sleep( 1 ); + } +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + TextDevice device; + TextThread foo( "Foo", &device ), bar( "Bar", &device ); + + foo.start(); + bar.start(); + + QMessageBox::information( 0, "Threading", "Close me to stop!" ); + + stopThreads = true; + + foo.wait(); + bar.wait(); + + return 0; +} diff --git a/Chapter12/orderedthreads/orderedthreads.pro b/Chapter12/orderedthreads/orderedthreads.pro new file mode 100644 index 0000000..9fa1290 --- /dev/null +++ b/Chapter12/orderedthreads/orderedthreads.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 1. jan 16:55:20 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter12/processes/main.cpp b/Chapter12/processes/main.cpp new file mode 100644 index 0000000..ec857b3 --- /dev/null +++ b/Chapter12/processes/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "processdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ProcessDialog dlg; + dlg.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter12/processes/processdialog.cpp b/Chapter12/processes/processdialog.cpp new file mode 100644 index 0000000..c52ebfd --- /dev/null +++ b/Chapter12/processes/processdialog.cpp @@ -0,0 +1,149 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "processdialog.h" + +ProcessDialog::ProcessDialog() : QDialog() +{ + process = 0; + + ui.setupUi( this ); + + connect( ui.uicButton, SIGNAL(clicked()), this, SLOT(runUic()) ); +} + +void ProcessDialog::runUic() +{ + ui.uicButton->setEnabled( false ); + ui.textEdit->setText( "" ); + + if( process ) + delete process; + process = new QProcess( this ); + + connect( process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(handleError(QProcess::ProcessError)) ); + connect( process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(handleFinish(int,QProcess::ExitStatus)) ); + connect( process, SIGNAL(readyReadStandardError()), this, SLOT(handleReadStandardError()) ); + connect( process, SIGNAL(readyReadStandardOutput()), this, SLOT(handleReadStandardOutput()) ); + connect( process, SIGNAL(started()), this, SLOT(handleStarted()) ); + connect( process, SIGNAL(stateChanged(QProcess::ProcessState)), this, SLOT(handleStateChange(QProcess::ProcessState)) ); + + QStringList arguments; + arguments << "-tr" << "MYTR" << "processdialog.ui"; + process->start( "uic", arguments ); +} + +void ProcessDialog::handleError( QProcess::ProcessError error ) +{ + QString errorText; + + switch( error ) + { + case QProcess::FailedToStart: + errorText = "Failed to start"; + break; + case QProcess::Crashed: + errorText = "Crashed"; + break; + case QProcess::Timedout: + errorText = "Timed out"; + break; + case QProcess::WriteError: + errorText = "Write error"; + break; + case QProcess::ReadError: + errorText = "Read error"; + break; + case QProcess::UnknownError: + errorText = "Unknown error"; + break; + } + + ui.textEdit->append( QString( "

%1

" ).arg( errorText ) ); +} + +void ProcessDialog::handleFinish( int code, QProcess::ExitStatus status ) +{ + QString statusText; + + switch( status ) + { + case QProcess::NormalExit: + statusText = "Normal exit"; + break; + case QProcess::CrashExit: + statusText = "Crash exit"; + break; + } + + ui.textEdit->append( QString( "

%1 (%2)

" ).arg( statusText ).arg( code ) ); +} + +void ProcessDialog::handleReadStandardError() +{ + QString errorText = process->readAllStandardError(); + ui.textEdit->append( QString( "%1" ).arg( errorText ) ); +} + +void ProcessDialog::handleReadStandardOutput() +{ + QString outputText = process->readAllStandardOutput(); + ui.textEdit->insertPlainText( outputText ); +} + +void ProcessDialog::handleStarted() +{ + ui.textEdit->append( QString("

Started

" ) ); +} + +void ProcessDialog::handleStateChange( QProcess::ProcessState state ) +{ + QString stateText; + + switch( state ) + { + case QProcess::NotRunning: + stateText = "Not running"; + + ui.uicButton->setEnabled( true ); + break; + case QProcess::Starting: + stateText = "Starting"; + break; + case QProcess::Running: + stateText = "Running"; + break; + } + + ui.textEdit->append( QString( "

New status: %1

" ).arg( stateText ) ); +} diff --git a/Chapter12/processes/processdialog.h b/Chapter12/processes/processdialog.h new file mode 100644 index 0000000..97aa94a --- /dev/null +++ b/Chapter12/processes/processdialog.h @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef PROCESSDIALOG_H +#define PROCESSDIALOG_H + +#include +#include + +#include "ui_processdialog.h" + +class ProcessDialog : public QDialog +{ + Q_OBJECT + +public: + ProcessDialog(); + +private slots: + void runUic(); + + void handleError( QProcess::ProcessError ); + void handleFinish( int, QProcess::ExitStatus ); + void handleReadStandardError(); + void handleReadStandardOutput(); + void handleStarted(); + void handleStateChange( QProcess::ProcessState ); + +private: + QProcess *process; + + Ui::ProcessDialog ui; +}; + +#endif // PROCESSDIALOG_H diff --git a/Chapter12/processes/processdialog.ui b/Chapter12/processes/processdialog.ui new file mode 100644 index 0000000..b7a19ad --- /dev/null +++ b/Chapter12/processes/processdialog.ui @@ -0,0 +1,75 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ProcessDialog + + + + 0 + 0 + 400 + 300 + + + + Process Demonstration + + + + 9 + + + 6 + + + + + Run uic + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"></p></body></html> + + + Qt::TextSelectableByMouse + + + + + + + + diff --git a/Chapter12/processes/processes.pro b/Chapter12/processes/processes.pro new file mode 100644 index 0000000..a380944 --- /dev/null +++ b/Chapter12/processes/processes.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 2. jan 19:20:40 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += processdialog.h +FORMS += processdialog.ui +SOURCES += main.cpp processdialog.cpp +CONFIG += console diff --git a/Chapter12/readwritethreads/main.cpp b/Chapter12/readwritethreads/main.cpp new file mode 100644 index 0000000..0e7ef78 --- /dev/null +++ b/Chapter12/readwritethreads/main.cpp @@ -0,0 +1,144 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include + +#include + +class TextDevice +{ +public: + TextDevice(); + + void increase(); + void write( QString ); + +private: + int count; + QReadWriteLock lock; +}; + +TextDevice::TextDevice() +{ + count = 0; +} + +void TextDevice::increase() +{ + QWriteLocker locker( &lock ); + count++; +} + +void TextDevice::write( QString text ) +{ + QReadLocker locker( &lock ); + qDebug() << QString( "Call %1: %2" ).arg( count ).arg( text ); +} + +bool stopThreads = false; + +class IncreaseThread : public QThread +{ +public: + IncreaseThread( TextDevice *device ); + + void run(); + +private: + TextDevice *m_device; +}; + +IncreaseThread::IncreaseThread( TextDevice *device ) : QThread() +{ + m_device = device; +} + +void IncreaseThread::run() +{ + while( !stopThreads ) + { + msleep( 1200 ); + m_device->increase(); + } +} + +class TextThread : public QThread +{ +public: + TextThread( QString text, TextDevice *m_device ); + + void run(); + +private: + QString m_text; + TextDevice *m_device; +}; + +TextThread::TextThread( QString text, TextDevice *device ) : QThread() +{ + m_text = text; + m_device = device; +} + +void TextThread::run() +{ + while( !stopThreads ) + { + m_device->write( m_text ); + sleep( 1 ); + } +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + TextDevice device; + IncreaseThread inc( &device ); + TextThread foo( "Foo", &device ), bar( "Bar", &device ); + + foo.start(); + bar.start(); + inc.start(); + + QMessageBox::information( 0, "Threading", "Close me to stop!" ); + + stopThreads = true; + + foo.wait(); + bar.wait(); + inc.wait(); + + return 0; +} diff --git a/Chapter12/readwritethreads/readwritethreads.pro b/Chapter12/readwritethreads/readwritethreads.pro new file mode 100644 index 0000000..170196e --- /dev/null +++ b/Chapter12/readwritethreads/readwritethreads.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 2. jan 10:03:03 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter12/semaphorethreads/main.cpp b/Chapter12/semaphorethreads/main.cpp new file mode 100644 index 0000000..30ec29e --- /dev/null +++ b/Chapter12/semaphorethreads/main.cpp @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include + +const int bufferSize = 20; + +QChar buffer[ bufferSize ]; +QSemaphore freeSpace( bufferSize ); +QSemaphore availableData( 0 ); + +bool atEnd = false; + +class TextProducer : public QThread +{ +public: + TextProducer( QString text ); + + void run(); + +private: + QString m_text; +}; + +TextProducer::TextProducer( QString text ) : QThread() +{ + m_text = text; +} + +void TextProducer::run() +{ + for( int i=0; i +#include + +#include "textdevice.h" +#include "textthread.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + TextDevice device; + TextThread foo( "Foo" ), bar( "Bar" ); + + QObject::connect( &foo, SIGNAL(writeText(QString)), &device, SLOT(write(QString)) ); + QObject::connect( &bar, SIGNAL(writeText(QString)), &device, SLOT(write(QString)) ); + + foo.start(); + bar.start(); + device.start(); + + QMessageBox::information( 0, "Threading", "Close me to stop!" ); + + foo.stop(); + bar.stop(); + device.stop(); + + foo.wait(); + bar.wait(); + device.wait(); + + return 0; +} diff --git a/Chapter12/signallingthreads/signallingthreads.pro b/Chapter12/signallingthreads/signallingthreads.pro new file mode 100644 index 0000000..2e77cba --- /dev/null +++ b/Chapter12/signallingthreads/signallingthreads.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 2. jan 14:31:10 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += textdevice.h textthread.h +SOURCES += main.cpp textdevice.cpp textthread.cpp +CONFIG += console diff --git a/Chapter12/signallingthreads/textdevice.cpp b/Chapter12/signallingthreads/textdevice.cpp new file mode 100644 index 0000000..2af0f6e --- /dev/null +++ b/Chapter12/signallingthreads/textdevice.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textdevice.h" + +#include + +TextDevice::TextDevice() : QThread() +{ + m_count = 0; +} + +void TextDevice::stop() +{ + quit(); +} + +void TextDevice::run() +{ + exec(); +} + +void TextDevice::write( QString text ) +{ + QMutexLocker locker( &m_mutex ); + + qDebug() << QString( "Call %1: %2" ).arg( m_count++ ).arg( text ); +} diff --git a/Chapter12/signallingthreads/textdevice.h b/Chapter12/signallingthreads/textdevice.h new file mode 100644 index 0000000..1d98cfb --- /dev/null +++ b/Chapter12/signallingthreads/textdevice.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTDEVICE_H +#define TEXTDEVICE_H + +#include +#include +#include + +class TextDevice : public QThread +{ + Q_OBJECT + +public: + TextDevice(); + + void run(); + void stop(); + +public slots: + void write( QString text ); + +private: + int m_count; + QMutex m_mutex; +}; + +#endif // TEXTDEVICE_H diff --git a/Chapter12/signallingthreads/textthread.cpp b/Chapter12/signallingthreads/textthread.cpp new file mode 100644 index 0000000..2b771f4 --- /dev/null +++ b/Chapter12/signallingthreads/textthread.cpp @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textthread.h" + +TextThread::TextThread( QString text ) : QThread() +{ + m_text = text; + m_stop = false; +} + +void TextThread::stop() +{ + m_stop = true; +} + +void TextThread::run() +{ + while( !m_stop ) + { + emit writeText( m_text ); + sleep( 1 ); + } +} diff --git a/Chapter12/signallingthreads/textthread.h b/Chapter12/signallingthreads/textthread.h new file mode 100644 index 0000000..69cdf28 --- /dev/null +++ b/Chapter12/signallingthreads/textthread.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTTHREAD_H +#define TEXTTHREAD_H + +#include +#include + +class TextThread : public QThread +{ + Q_OBJECT + +public: + TextThread( QString text ); + + void run(); + void stop(); + +signals: + void writeText( QString ); + +private: + QString m_text; + bool m_stop; +}; + +#endif // TEXTTHREAD_H diff --git a/Chapter12/simplethreads/main.cpp b/Chapter12/simplethreads/main.cpp new file mode 100644 index 0000000..91bebb4 --- /dev/null +++ b/Chapter12/simplethreads/main.cpp @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include + +class TextThread : public QThread +{ +public: + TextThread( QString text ); + + void run(); + +private: + QString m_text; +}; + +bool stopThreads = false; + +TextThread::TextThread( QString text ) : QThread() +{ + m_text = text; +} + +void TextThread::run() +{ + while( !stopThreads ) + { + qDebug() << m_text; + sleep( 1 ); + } +} + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + TextThread foo( "Foo" ), bar( "Bar" ); + + foo.start(); + bar.start(); + + QMessageBox::information( 0, "Threading", "Close me to stop!" ); + + stopThreads = true; + + foo.wait(); + bar.wait(); + + return 0; +} diff --git a/Chapter12/simplethreads/simplethreads.pro b/Chapter12/simplethreads/simplethreads.pro new file mode 100644 index 0000000..e7c5bd1 --- /dev/null +++ b/Chapter12/simplethreads/simplethreads.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 1. jan 14:08:28 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +CONFIG += console diff --git a/Chapter12/uithread/main.cpp b/Chapter12/uithread/main.cpp new file mode 100644 index 0000000..95bc035 --- /dev/null +++ b/Chapter12/uithread/main.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "textdialog.h" +#include "textthread.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + qRegisterMetaType("TextAndNumber"); + + TextDialog dialog; + TextThread foo( "Foo" ), bar( "Bar" ); + + QObject::connect( &foo, SIGNAL(writeText(TextAndNumber)), &dialog, SLOT(showText(TextAndNumber)) ); + QObject::connect( &bar, SIGNAL(writeText(TextAndNumber)), &dialog, SLOT(showText(TextAndNumber)) ); + + foo.start(); + bar.start(); + + dialog.show(); + int result = app.exec(); + + foo.stop(); + bar.stop(); + + foo.wait(); + bar.wait(); + + return result; +} diff --git a/Chapter12/uithread/textandnumber.cpp b/Chapter12/uithread/textandnumber.cpp new file mode 100644 index 0000000..473eb59 --- /dev/null +++ b/Chapter12/uithread/textandnumber.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#include "textandnumber.h" + +TextAndNumber::TextAndNumber() +{ + number = 0; + text = ""; +} + +TextAndNumber::TextAndNumber( int n, QString t ) +{ + number = n; + text = t; +} diff --git a/Chapter12/uithread/textandnumber.h b/Chapter12/uithread/textandnumber.h new file mode 100644 index 0000000..303d5b3 --- /dev/null +++ b/Chapter12/uithread/textandnumber.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTANDNUMBER_H +#define TEXTANDNUMBER_H + +#include +#include + +class TextAndNumber +{ +public: + TextAndNumber(); + TextAndNumber( int, QString ); + + int number; + QString text; +}; + +Q_DECLARE_METATYPE( TextAndNumber ); + +#endif // TEXTANDNUMBER_H diff --git a/Chapter12/uithread/textdialog.cpp b/Chapter12/uithread/textdialog.cpp new file mode 100644 index 0000000..ed2b2ef --- /dev/null +++ b/Chapter12/uithread/textdialog.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textdialog.h" + +#include + +TextDialog::TextDialog() : QDialog() +{ + ui.setupUi( this ); + + connect( ui.buttonBox, SIGNAL(clicked(QAbstractButton*)), this, SLOT(buttonClicked(QAbstractButton*)) ); + + count = 0; +} + +void TextDialog::buttonClicked( QAbstractButton *button ) +{ + if( ui.buttonBox->buttonRole( button ) == QDialogButtonBox::ResetRole ) + ui.listWidget->clear(); +} + +void TextDialog::showText( TextAndNumber tan ) +{ + QMutexLocker locker( &mutex ); + + ui.listWidget->addItem( QString( "Call %1 (%3): %2" ).arg( count++ ).arg( tan.text ).arg( tan.number ) ); +} diff --git a/Chapter12/uithread/textdialog.h b/Chapter12/uithread/textdialog.h new file mode 100644 index 0000000..8bc3d36 --- /dev/null +++ b/Chapter12/uithread/textdialog.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTDIALOG_H +#define TEXTDIALOG_H + +#include +#include +#include + +#include "textandnumber.h" +#include "ui_textdialog.h" + +class TextDialog : public QDialog +{ + Q_OBJECT + +public: + TextDialog(); + +public slots: + void showText( TextAndNumber tan ); + +private slots: + void buttonClicked( QAbstractButton* ); + +private: + int count; + QMutex mutex; + + Ui::TextDialog ui; +}; + +#endif // TEXTDEVICE_H diff --git a/Chapter12/uithread/textdialog.ui b/Chapter12/uithread/textdialog.ui new file mode 100644 index 0000000..7f6684a --- /dev/null +++ b/Chapter12/uithread/textdialog.ui @@ -0,0 +1,85 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + TextDialog + + + + 0 + 0 + 400 + 300 + + + + Threading Demonstration + + + + 9 + + + 6 + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Close|QDialogButtonBox::NoButton|QDialogButtonBox::Reset + + + + + + + + + buttonBox + rejected() + TextDialog + reject() + + + 291 + 264 + + + 286 + 274 + + + + + diff --git a/Chapter12/uithread/textthread.cpp b/Chapter12/uithread/textthread.cpp new file mode 100644 index 0000000..3c24679 --- /dev/null +++ b/Chapter12/uithread/textthread.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "textthread.h" + +TextThread::TextThread( QString text ) : QThread() +{ + m_text = text; + m_stop = false; + m_count = 0; +} + +void TextThread::stop() +{ + m_stop = true; +} + +void TextThread::run() +{ + while( !m_stop ) + { + emit writeText( TextAndNumber( m_count++, m_text ) ); + sleep( 1 ); + } +} \ No newline at end of file diff --git a/Chapter12/uithread/textthread.h b/Chapter12/uithread/textthread.h new file mode 100644 index 0000000..db812f1 --- /dev/null +++ b/Chapter12/uithread/textthread.h @@ -0,0 +1,58 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef TEXTTHREAD_H +#define TEXTTHREAD_H + +#include +#include +#include "textandnumber.h" + +class TextThread : public QThread +{ + Q_OBJECT + +public: + TextThread( QString text ); + + void run(); + void stop(); + +signals: + void writeText( TextAndNumber ); + +private: + QString m_text; + int m_count; + bool m_stop; +}; + +#endif // TEXTTHREAD_H diff --git a/Chapter12/uithread/uithread.pro b/Chapter12/uithread/uithread.pro new file mode 100644 index 0000000..fa752f0 --- /dev/null +++ b/Chapter12/uithread/uithread.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 2. jan 16:45:28 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += textandnumber.h textdialog.h textthread.h +FORMS += textdialog.ui +SOURCES += main.cpp textandnumber.cpp textdialog.cpp textthread.cpp +CONFIG += console diff --git a/Chapter13/README.txt b/Chapter13/README.txt new file mode 100644 index 0000000..8d87743 --- /dev/null +++ b/Chapter13/README.txt @@ -0,0 +1,42 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 13 - Databases + +sqltest/mysql + + Listings 13-1 + + Shows how to connect to a MySQL server and demonstrates basic operations. + + +sqltest/sqlite + + Listings 13-2 + + Shows how to open a file based SQLite database and demonstrates basic + operations. + + +sqltest/sqlite-mem + + Listings 13-3, 13-4, 13-5 + + Shows how to open a memory based SQLite database and demonstrates basic + operations. + + +imagebook + + Listings 13-6, 13-7, 13-8, 13-9, 13-10, 13-11, 13-12, 13-13, 13-14, 13-15, + 13-16, 13-17, 13-18, 13-19, 13-20, 13-21, 13-22, 13-23 + + Implements a database driven application split into a user interface layer and + a database layer. + + +modelview + + Listings 13-24, 13-25, 13-16 + + Shows how to use the model/view framework in combination with databases. \ No newline at end of file diff --git a/Chapter13/imagebook/Thumbs.db b/Chapter13/imagebook/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..ddc648be324dbf170a89d91c3fbf29b62521fe5c GIT binary patch literal 8704 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 M3jSBk{J%~A2PLWvApigX literal 0 HcmV?d00001 diff --git a/Chapter13/imagebook/imagebook.pro b/Chapter13/imagebook/imagebook.pro new file mode 100644 index 0000000..bb2fd26 --- /dev/null +++ b/Chapter13/imagebook/imagebook.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 15. jan 17:07:31 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += imagecollection.h imagedialog.h +FORMS += imagedialog.ui +SOURCES += imagecollection.cpp imagedialog.cpp main.cpp +QT += sql +CONFIG += console diff --git a/Chapter13/imagebook/imagecollection.cpp b/Chapter13/imagebook/imagecollection.cpp new file mode 100644 index 0000000..e8d27ef --- /dev/null +++ b/Chapter13/imagebook/imagecollection.cpp @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "imagecollection.h" + +ImageCollection::ImageCollection() +{ + QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); + + db.setDatabaseName( ":memory:" ); + if( !db.open() ) + qFatal( "Failed to open database" ); + + populateDatabase(); +} + +void ImageCollection::populateDatabase() +{ + QSqlQuery qry; + + qry.prepare( "CREATE TABLE IF NOT EXISTS images (id INTEGER UNIQUE PRIMARY KEY, data BLOB)" ); + if( !qry.exec() ) + qFatal( "Failed to create table images" ); + + qry.prepare( "CREATE TABLE IF NOT EXISTS tags (id INTEGER, tag VARCHAR(30))" ); + if( !qry.exec() ) + qFatal( "Failed to create table tags" ); +} + +QList ImageCollection::getIds( QStringList tags ) +{ + QSqlQuery qry; + + if( tags.count() == 0 ) + qry.prepare( "SELECT images.id FROM images" ); + else + qry.prepare( "SELECT id FROM tags WHERE tag IN ('" + tags.join("','") + "') GROUP BY id" ); + + if( !qry.exec() ) + qFatal( "Failed to get IDs" ); + + QList result; + while( qry.next() ) + result << qry.value(0).toInt(); + + return result; +} + +QStringList ImageCollection::getTags() +{ + QSqlQuery qry; + + qry.prepare( "SELECT tag FROM tags GROUP BY tag" ); + if( !qry.exec() ) + qFatal( "Failed to get tags" ); + + QStringList result; + while( qry.next() ) + result << qry.value(0).toString(); + + return result; +} + +void ImageCollection::addTag( int id, QString tag ) +{ + QSqlQuery qry; + + qry.prepare( "INSERT INTO tags (id, tag) VALUES (:id, :tag)" ); + qry.bindValue( ":id", id ); + qry.bindValue( ":tag", tag ); + if( !qry.exec() ) + qFatal( "Failed to add tag" ); +} + +QImage ImageCollection::getImage( int id ) +{ + QSqlQuery qry; + + qry.prepare( "SELECT data FROM images WHERE id = :id" ); + qry.bindValue( ":id", id ); + if( !qry.exec() ) + qFatal( "Failed to get image" ); + if( !qry.next() ) + qFatal( "Failed to get image id" ); + + QByteArray array = qry.value(0).toByteArray(); + QBuffer buffer(&array); + buffer.open( QIODevice::ReadOnly ); + + QImageReader reader(&buffer, "PNG"); + QImage image = reader.read(); + + return image; +} + +void ImageCollection::addImage( QImage image, QStringList tags ) +{ + QBuffer buffer; + QImageWriter writer(&buffer, "PNG"); + writer.write(image); + + QSqlQuery qry; + + int id; + + qry.prepare( "SELECT COUNT(*) FROM images" ); + qry.exec(); + qry.next(); + id = qry.value(0).toInt() + 1; + + qry.prepare( "INSERT INTO images (id, data) VALUES (:id, :data)" ); + qry.bindValue( ":id", id ); + qry.bindValue( ":data", buffer.data() ); + qry.exec(); + + foreach( QString tag, tags ) + addTag( id, tag ); +} diff --git a/Chapter13/imagebook/imagecollection.h b/Chapter13/imagebook/imagecollection.h new file mode 100644 index 0000000..80d13b3 --- /dev/null +++ b/Chapter13/imagebook/imagecollection.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef IMAGECOLLECTION_H +#define IMAGECOLLECTION_H + +#include +#include +#include + +class ImageCollection +{ +public: + ImageCollection(); + + QImage getImage( int id ); + QList getIds( QStringList tags ); + QStringList getTags(); + + void addTag( int id, QString tag ); + void addImage( QImage image, QStringList tags ); + +private: + void populateDatabase(); +}; + +#endif // IMAGECOLLECTION_H diff --git a/Chapter13/imagebook/imagedialog.cpp b/Chapter13/imagebook/imagedialog.cpp new file mode 100644 index 0000000..1a7dbfb --- /dev/null +++ b/Chapter13/imagebook/imagedialog.cpp @@ -0,0 +1,171 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "imagedialog.h" + +ImageDialog::ImageDialog() +{ + ui.setupUi( this ); + + currentImage = -1; + + updateTags(); + updateImages(); + + connect( ui.previousButton, SIGNAL(clicked()), this, SLOT(previousClicked()) ); + connect( ui.nextButton, SIGNAL(clicked()), this, SLOT(nextClicked()) ); + connect( ui.addTagButton, SIGNAL(clicked()), this, SLOT(addTagClicked()) ); + connect( ui.addImageButton, SIGNAL(clicked()), this, SLOT(addImageClicked()) ); + connect( ui.tagList, SIGNAL(itemSelectionChanged()), this, SLOT(tagsChanged()) ); +} + +void ImageDialog::updateCurrentImage() +{ + if( currentImage == -1 ) + { + ui.imageLabel->setPixmap( QPixmap() ); + ui.imageLabel->setText( tr("No Image") ); + + ui.addTagButton->setEnabled( false ); + ui.nextButton->setEnabled( false ); + ui.previousButton->setEnabled( false ); + } + else + { + ui.imageLabel->setPixmap( QPixmap::fromImage( images.getImage( imageIds[ currentImage ] ) ) ); + ui.imageLabel->setText( "" ); + + ui.addTagButton->setEnabled( true ); + ui.nextButton->setEnabled( true ); + ui.previousButton->setEnabled( true ); + } +} + +void ImageDialog::updateImages() +{ + int id; + + if( currentImage != -1 ) + id = imageIds[ currentImage ]; + else + id = -1; + + imageIds = images.getIds( selectedTags() ); + currentImage = imageIds.indexOf( id ); + if( currentImage == -1 && imageIds.count() != 0 ) + currentImage = 0; + + ui.imagesLabel->setText( QString::number( imageIds.count() ) ); + + updateCurrentImage(); +} + +void ImageDialog::updateTags() +{ + QStringList selection = selectedTags(); + + QStringList tags = images.getTags(); + ui.tagList->clear(); + ui.tagList->addItems( tags ); + + for( int i=0; icount(); ++i ) + if( selection.contains( ui.tagList->item(i)->text() ) ) + ui.tagList->item(i)->setSelected( true ); +} + +void ImageDialog::nextClicked() +{ + currentImage = (currentImage+1) % imageIds.count(); + updateCurrentImage(); +} + +void ImageDialog::previousClicked() +{ + currentImage --; + if( currentImage == -1 ) + currentImage = imageIds.count()-1; + + updateCurrentImage(); +} + +void ImageDialog::tagsChanged() +{ + updateImages(); +} + +void ImageDialog::addImageClicked() +{ + QString filename = QFileDialog::getOpenFileName( this, tr("Open file"), QString(), tr("PNG Images (*.png)") ); + if( !filename.isNull() ) + { + QImage image( filename ); + + if( image.isNull() ) + { + QMessageBox::warning( this, tr("Image Book"), tr("Failed to open the file '%1'").arg( filename ) ); + return; + } + + images.addImage( image, selectedTags() ); + updateImages(); + } +} + +void ImageDialog::addTagClicked() +{ + bool ok; + QString tag = QInputDialog::getText( this, tr("Image Book"), tr("Tag:"), QLineEdit::Normal, QString(), &ok ); + if( ok ) + { + tag = tag.toLower(); + QRegExp re( "^[a-z]+$" ); + if( re.indexIn(tag) == -1 ) + { + QMessageBox::warning( this, tr("Image Book"), tr("This is not a valid tag. Tags consists of lower case characters a-z.") ); + return; + } + + images.addTag( imageIds[ currentImage ], tag ); + updateTags(); + } +} + +QStringList ImageDialog::selectedTags() +{ + QStringList result; + foreach( QListWidgetItem *item, ui.tagList->selectedItems() ) + result << item->text(); + return result; +} diff --git a/Chapter13/imagebook/imagedialog.h b/Chapter13/imagebook/imagedialog.h new file mode 100644 index 0000000..e4bf6dd --- /dev/null +++ b/Chapter13/imagebook/imagedialog.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef IMAGEDIALOG_H +#define IMAGEDIALOG_H + +#include +#include + +#include "ui_imagedialog.h" + +#include "imagecollection.h" + +class ImageDialog : public QDialog +{ + Q_OBJECT + +public: + ImageDialog(); + +private slots: + void nextClicked(); + void previousClicked(); + void tagsChanged(); + + void addImageClicked(); + void addTagClicked(); + +private: + QStringList selectedTags(); + + void updateImages(); + void updateTags(); + void updateCurrentImage(); + + Ui::ImageDialog ui; + + QList imageIds; + int currentImage; + + ImageCollection images; +}; + +#endif // IMAGEDIALOG_H diff --git a/Chapter13/imagebook/imagedialog.ui b/Chapter13/imagebook/imagedialog.ui new file mode 100644 index 0000000..fe4d3b5 --- /dev/null +++ b/Chapter13/imagebook/imagedialog.ui @@ -0,0 +1,166 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ImageDialog + + + + 0 + 0 + 730 + 537 + + + + Image Book + + + + 9 + + + 6 + + + + + No Image + + + Qt::AlignCenter + + + + + + + 0 + + + 6 + + + + + + 150 + 16777215 + + + + QAbstractItemView::MultiSelection + + + + + + + 0 + + + 6 + + + + + Images: + + + + + + + # + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + 0 + + + 6 + + + + + Previous + + + + + + + Next + + + + + + + Qt::Horizontal + + + + 161 + 27 + + + + + + + + Add Tag + + + + + + + Add Image + + + + + + + + + + diff --git a/Chapter13/imagebook/main.cpp b/Chapter13/imagebook/main.cpp new file mode 100644 index 0000000..1fbdb98 --- /dev/null +++ b/Chapter13/imagebook/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "imagedialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ImageDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter13/imagebook/test.png b/Chapter13/imagebook/test.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf6fd993aa5963c2af1cbef431eea01111c20d7 GIT binary patch literal 327442 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

OjNQe!AKOAdG?#e)kHYcfjNDcws+X-aX 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⪌7$>?+Z-S$o3o}H6OuknJ zZLqW&DJ+T;XZhn|O8^(ls30z^khz~)c)%PB@#CfuPx50D*(oXLUUIo1XUB5!Cs}P- zj&(KHS}#FK!~M`Ov1?h4L-INtk~a}MyJN==*IgXkf5dekr;c25Aam;EMLLsIVlAD0Wb)#L2Y`6_@X&AItY&vSQt2tRCc8e&m!ud&7f}64;ZYu$j zssK6{7X0cw>H=b2)#6iDvmgdwp^KRd0L`U~p|o7DU<6k5aWKEvKyKoJ+;lN(Bv&Tw z9c=$UA(9ynu`GV?3hi>v3u65sI!yluZq4jg3fb5E9$-pv4#>xzCI`o4SKJJI0Hfz? zRF*BLXGWB{%-jnAouW?wIVz8iMocn|$(#@t2BWG3z$yf=^0D(T!mv|^sdx@W(HxMX z0GS9n@o>74h?$a}LK!ylw2J0+s?GO#bR?d-VBTdkEM(p`-cv*-Ka2!`O>o9Jn|N zvox7>G(SHhjO-E0e?Z6>q5XQ}F8i00c6VxzUGHL7mj|%aP1>#L-S+wFeRgN#KD)VT zuie_Q-#(+RY~4-Z7+z@9X~6H$6cG|*_~H!^jyJg;NAD>IF6ZdfRTm(m9K)jK;t7P7 zP_4JDTyL!e-6e;nSsdMR;=(LTU6^f&TziQSOA^>$Mvw{{f@nF5v20}y7W}w1x6ggunQ97P+UZn0iu6qBbLnnWvXqhP-|J!k z7J&=pjnH^RY&k&ZGPLkR$N&_hxlu?9qjXK<{P&DAmYYCaISIf_;ySR%|8=hd0T)JN zi$WQZh4b-Oy37E^UJF^U!?Jrv350>pt4*3A*?XiiN=u=05xC?*j3{84FFJCml>6GHECj6P z<4%oCy$9a1UXOBvmh7-Yo&k&HQ=K_@qff?4wr zWB!@z7$aA%BXz@t_@kB6O{tR>6qP-(Q5Y~AQo z>mzlIHU*}td|Qy25&Gk^t48FTK zhSu5zbTY@gp&&2WiMJT)`%MS!%4Wa;H;Qur%jqq|2wZ+i9^Kz^*4}wa0p4AqnT4QmBwN)T|F3v>&4H+Pm@hi0YH2(f6L^>pL zUy*QAVoe=bvoT85bt92*FRpKE{0g?2`u2@(lCeFwA&vnE#GZ zbv%6kF+gn$oy{1)HpcfHUHCde%{O3@(Y3IDnFs@Tub9FxBj788ydy#Vo{GR zS~6l&)8n>m1qymVX3G|4-l*$$?%2zS>!2OnbJ%HHj?J37 z`F+#%ltW3bWL_?yauzgnj)jaHeE^e-p=LhpuzZOw*?Sezy%aNwE9Glcu$!r6ELM$I zS>-G~HfsSl20E456eEmcZX_}})W}rXH5FvnsH$*+)^)0bP9}#US=uDi&8SjwvPgl# zpY#vF1DpHEa(e=c@p40&?iqmiuBe*EKV3oR;G`hP?Muge? zjvA7(0Gebgf^OT4{YraDg^kp=FjlH3VH8#wtg7*bE?dgqY#W`y@pW75o0Dhl1sbVe z0hOPxowb*ji8Q_mz;ooUser4%&G}uon-Uu_Wiwk&Y9xD=U+ic_{zSzcEc_nI%-Q{ znKk5>TWNB>B`{_U{UqFCA(h0jLS*$)rh4K2905uiMq5_y=xp8C_Wdj&R z1%L;g3$DtgIq6na$aTxdYD@UKIr&zP+P|r~)auJ}c{_*kS%x*0=FrU)TO)*lj4*%& z)?;Q+ghesB3}sIji&I1l2cPJFG8*S#n$CDNi-SrLhn+&)D74or!8yDf7xAhEGGJX` zwOmv6TtoFtSz3AQq8sj>KYs>fK6dJU(Ux78!UDYy)x64Ov#8L*xLUwyO7+U+*jvsE zP~44wX3V9x-TO0Um!1jcZvf+2)X1vFE8i%s15i=5eoR))Cj_B=iXfA2#^?Slf7xo9lrGlBHwqr3{@ zno-&-@ld6%LtTpNRCrrJ;sX(lDpWdAX32^lVN(tOA@|+vk6HZlZ&@sBGhra9BN07V zmBEFV#SKX!s}wDJbs=*4&<#R!b?uK*_&TYCPQ~C35QmU7fz~xQmJ@FZ3h_K{V1=-p zN^t6Jj<$xjDC-+autiHVZE8ujZQNXKo3_+2&T6pz`&-$S^s(P4w_TenZU6QLTfaEp zR*q#M7E7?+YRn)@LaZ={3l@+{OUFv3p}_hEnrvXG)yAh#K~E0Y!OD2T0;1VYbKjGI3P06TLVm(Z=0V$CCPsbcA02V+eDQ^j-3W@D5& zn{kboKCg#(}70-<93eh4}T9ZiEsY}=Fy*A#k}zc zEJ*%G-Gro4VbzYd0<8HsB*3almw5-^LfPk6&yzHH)_%Nv%znA9U@+1t zZ(p*P*HPgk*u8)9ggu3U_$#9_MJ50A2v!-1WKQW1kUV2NrqbIlRp@0Lzz|gSoITF> zpWU@b*T1%V7Z3x}LEk!q=$Eefb6lD4-)02&?IZjC{txVNp4y#TU)pEa?m!;6PZRZx zJ$v%P9zOm7W9JuGqdm6=Uw>_9aGkgayYaz|FYPKF_ni|LZNtz~Yt65=>XZ^oM#LNZ zK?swASPT0&(h}#yS`1MaQB(|c|8NctfzXRX7<)!@@QCE^pT_dPHm}esVTx%~R+*pY z7-rRl`Bnz#Q~@;F!_+c@tSC&kn$m3RfjrUOgy&gS79f>u;fR03pub0wJnKg^_}o9E zRl?IwmOY{D@{(qSLURtcv{}LI3qviJyS5zQ|@@s;1l1xOxktPCa@gfp(XU$K1pPIiWhn+&*U zajr_m?@J>n0gXx^-|tRj-%?C&x|kO#fr&a3<*4V;e&#U7Qswe*zVSr? zr^>uJEb-^C`$5cpb zT~#o*8tu~6COdJa#`Yg7w{5#iZDb@!uPNgiXi-RmV)z4yLIrYQ@SX4L_ z7Hk3jey(z|NwRFMrHkot0HY3Olrh=FG}iiLv!vf~0(>@&Ddz|-=uvt)J%>c(xT zVG)bsNoM*}Zi(O5IBcC58p@(yF3PQRE_G$CR-IqV?xm9MrOX=A3au_7%T;|GFUsg7 zt3h2}7anDe;nCK@V>>GIR#g1W0RRoa;>sU0Oh#q`7R0U{=h2{!?DdSNSHvnkL08G%Iu<<9nN~8eU^2hSEq8YWtXs^TQEgtZa zZNGxCQe;^}Czr>~D`&RHYO07zvyNOm;0pO$6!NzKWGZt?t+TSlCeSFYhPAbhIE8~N zrtRxvL>ON=j*UK%#u%mwWS(C*Vvo)qvWEoPeZGIMJ-c+>?Ar(S>jM~NvhT+_Mq{zZ zEc_n=0#BboYkrC9{{=(<#$+#^13q*z&mKNyweuZ*c{nkD_9eDPU)eWzzqKE}d1wzI z5C~MBJmz^%+3iSs!{=jxCY>jZ5Fq7Zo3-ab@cHNw?%!ugp`5nqwh`M3Nnp?D8aqyg z&DOr9Hd@wU%^B5}4*fmky5nKLY;k%Y5~p-{_NS3 z!x*K(NK6QgwxaZ0tp78tESKdzEV8;vc8Nv#uIkE)ortxqw$AdBGcADYB#_^JAxg1_VY_BOlKe}rJ)6UJEF-$D^grx8_=kGNPu&XO>qE9f-KBOvWW$jO4eBSPb1 z?m=Z-?{cirp{apxyN)iWo>5u@DX)zHO!K^tNxOW{>0~-&g-_Sg3y6q@+>gd&IEY1h zFmA;mAGsP2^-?9JLs9Ca{K&-ql2K;&r|4vSK;v8b&v>3WV3ELb#`{cWm#Xf0u-NAF zI3vt_wX>NCMpIYgVg&#fnQ6Km4WqOHyw7}KqDP-er}j4kbT9)D2~_>$)X11qKdaN( zNSryN{(mh6VUYxtI%!2>*`k@TX2)vr6ZC@MB$veALzSY1Hzg&zN~(4Vm7Mn&0F=*+ zxxf`{FTkdVg{p2KTBf>%Dol)g+Q@7H3!ox4kUEoWJ}wi)JZ?hSnAhb3Ciwxhr_ldW z=g_?b@%F;mw9kM`5axjVhsV%LCWb)&q@65IXMB=Cl452cZE&Qux1?Hod#ZJICR-<+ z#n@;jdyZCa#Let2+Obh-qYG%nc4d&an=z6c!hWS6ZAyn7-dAUv*W{xS$t7DQh5VER zY{la&I}LV8nxCb_v#gHvv+&?~79Qkp{(#+Fmeup|lUl$<>kr#%7N_x;$ONmdtg_yo z4jUS2r`l|63Y(3^-8QxuhuFy>>l>%WCaiyQ%7zy&w=tY@r!fCpw|8cyCp=Or%^%I0LjaYvz6y&;o zZxlw>hN_M6SUu)~WqCTyRakXqxz%SfO2D4qflF+*HAX}4j9}-2fUOCTY2iiOOvXzm z!nW2R=*o03K7bLpsA?A?vV`?jh>d?1-9ru?gHC$ddniJ=88K#)KMu@{hnfJRdX(3d z{N73!bCt1-_s9W&1)!l4c=*7^fe2uukE!I~?8bDk)_l*aWc1{moq3+T%Zm7%LOPiO zUib=1Q>jzZ_mcLeif&1CYFYp1$RttD3;>JsM}q{Qie^--Wxb3zqu5uf)a`58AM$5R zF#(nUx)=XHk?q1`po|siR^mBW#ltT23iC@mtYQ%DCF*s=YeIHHS+hcLd;nnhSu4i;>;PR9X=Gm{#d>O$%x*56|O1qh- zkOIIRRx^N){#}6K83i~X(Z4@qyykW}bVM4v{rIEa=j$?ZQ(Uu<=Vuse-`>1yht|Pr z?47pd4Wl-g*=*CrL?KrU+uE9OnW`XSNLa9gqM!*t4l4s!G ziHrURpzt<8@b>`M?fA3T3k95mKMk`GM7*idX}m^rEH5+P@-kqNl>*e5a<{i`jdWvNO?Xv0U>@-Eg?s{01iMQrM5EviP_v zgN0hkr*uMrEJOWRy0KgrsH6n3v=2i=ksHO_6$N-XIV1I0mX!G0ilt??a#^Wu+E9gs zMuqL)SI(#@3mR|^qQhc4cC5_KovUM^o@0j&mD%BAwT!;;49;`(60}1_gCBolSvL?UUC+ z2cZzM0!12gs%v0;P|wo75m0DZNJqp8u>qohZ0aXS@_kNmVs7)1`(HaMYR3-&4XB{fzC zz_gYEFo-QTjxDv_jL1%`T4A3P({OL!X2g+e?7Mw{&B3kq-QI2X`1k>PinD`Vx<(r1 z=foqk_h5YW)z#Z}_vTmj1^F=FefN}(1zQ>FXC`C6pvC<0IpCsV(fM@(h z?6gJHvix3KRW@v+S*_NQL}k!0!dIj(Y3ODrS4z|!OLEj}#U=D#0q^WTXy z{||VL{xjM_K8&^S4`M6;mSe!%Od>uBv79g*EFzQ8zZ!H zZe8qjx=V6!C_uMVQRt}VlU1eG4(XsP8A41nua&S!0{6nLgG{8(s1WOl@VD;pdDh20 ztS|gy8wmTz`T>&xz(oM#0~rN%jfEk8#EwN?V4jUXAR|kEcasN192-oJUUlPx=Gpj* zS;pJ!Mg%ZD>_!AG{V45KJuKq8S;%+Kr}+0?x*C^|sSZgF&oeOs{c{8^*u?-qDhV@H zKA>@q&<=C}M^~P%#s@M3fR{kV0gUF%0+ul8`UdsavsB0S9#NR+n@NC**MW>R2P$@fv`E=Mkiwolf82y2@G$a#{#dxM3rc%{B>*)@*l`GS2$Mym{ zdZZc#Rk58uQElf>*V&09<#zc@1IqY%>{6<64X#AFUI;s@-WE@$F+O56)}IEAx0Dk+ zY?4}3!0bxW5}3h;&b1(T>mdOstrsv8r=yAnOd=o&3U)0#R^o?NR@P*hj9$`EN~a}f zS$=Y^RbsEv0KlkgX%cgc7pbZ_BGFY#IG~~qCWJ?<``gg=)FY6rnaxdpo@e2&ZboU7 zvS^VlOfl}j1#|{l#23*~lmQskzTh&R+v*=ZPrq@078Je7j;UdfJ?a| z0Nf*86Cfi$GueiS;39yL`>u0D7U6|Qd8EnhSw@^H0ZlMb$^qzM6dJYwpz#A}0_k)@ z85>8S=Zb=f7(w?E2A~8pA`4*`7zVI}L!60_)evLBbVhlJbiYxI5X+M2mQnAwR#hOZ zEOYAh#*%95scENZ=FJ$}$adI^ ztLRd&!@qU#h+Sf&x_{MfJFpqT$o}hi-aRqaBSxd)Vq?^yy!=VK7{+7($Wyu)k;-OR z&8}mS5r8w$!_WNQob5nm;a>yH?=64Vt*Eo{hrS;0w|N}w z0G)quxMOUlk=g?8IRd4KxiJ3A0c6I-mZ1 z0dFs~h3x49*z1H6s}aWmDUs_jfyb;6y!JSB)uk6&10%OaI-wTWYMtzN`bzoP%ZqKK zf~=&OxBD{mHa-9V|MW>jK~#&NmzP51L1!~ok!Oo)3T>RE&G8Co(7gWJ)8ef+JIT6I zW2}*>M`QS0YmbBk5Ixtr!qw4yKsO_xnQgsvH@*I!*g(+7Zfw>c2(Un9mUWDL#QI6K z)F`TtZo^sl&vY~0Bx-g744v#qI#|YQkJ7>OI-w5>P;x8sPnYe8#+;318Rc z%>WFFN}i!93rI!)s4+%sqjW;5VMcB$@42E*dnGc0_C!89wOpSaxXhSoj?po_mcc?j zS-Kb4FU}zt@sTn*6z!@`#uwU?pl~f-AS#I)Mc@4FqXtF(6$WLZaeiX7V|~>_s@qmXdr}5pJWciCAMqTX#pW^$&#E z?mbnuXJ4i5J6vsBb{5#?o!Pd1FYK)o6?W!ay&XGI35BYm$`}26MXMMIFg5DSDno`?Jdl0?7OqI8kJRQt{}nV!4UMFtbl!Mw`e@ zC;|3LJU1d=CCnIE#=Xq~kP}usFNTDFU^~G@p8QcbOd-6-Fx$(Hk7opxXCr-eHr!Wb zLqk;fEr<>2~YQYJa<-G$IG%YQKEiTBZHow8D^BSx? zuigsTx8&l^o0e5wXH zp6hI902x`&X#6E`(GEwQkn4tUX;#&Wa6k!M6pmIEh@-QzY1s3WvUn}kc#WHh_B56J zU8@0>8V*7=bec8nY|8jM%l=<>K+bT}(br{(r12PRFy0oZC`v#TO!pEffB}q@VCj#j zG7tu45agHu(orK2--hCC6@->11SVM^uOokUGXW3)!r5&`qKlEOPz+?0SV$1Dbnw;b znIt&&us^GHAk&OnaC2F$1DMW=CR>Z=*Np>&&}~_57dA}U_03BGnDzDpvBtj=X>6Ze zw5R8e*n<;??J{JMos+BZ93$PdcbRQj0loO-mqvr(g2^<+VyZRMk>FKE=OTb{prag_ z8P>9x%PIkp2SQ$#!5+hAa^ z1DTZ>Ew}=V+U7=l$a3rP42#9au!Vp3w}o#nzsc9Y{D^5Oj7w4tEQA?FG+@Lf9N_K^%C(7Z7oPL2C?@=RoY57LW+)&)z0Cp^(>Q zu4O6XD5KCyQ}eByky;HSHC0t=4kU{_Ys=>VO0^fV4=XCME{rw%7>Ny_of)huay3+0 zgoX*Ap?evodl{)Iu%W6v8?Vi?(drxKYS8RIeOWIEZ)^dQLWMU2^p&zCG?{ttlRhTl7rkl7{cer3eW>`xRr zCZ)d{f6+k*T>3Df90+{fD*$GIo4;pfsm_R<$&913DA5iu0FGf;X(ND?)cpb+pT&&+ z%@?cek}qMzxq^PJujLC(6QfM#ner)nO(}4xEaT&uH%ss)cVOvX1Sr0E*9b9V6hREI z#IvMy;zOvw>Tu%l>&cjl5EIUH8VrM2;*i6!TS&vcJtvxu1_5FjBd3boKt@{JgsK-> zS9=f|kxU|i6Kvy#EZeXq4VrB>6kV3>JM*zO$%Ijr0+5v2-h+j9;6%CYKUQVCk5<`^ zgH^U-U5>3-ooADi$+mn+t}PwUfO_c9jT9<#GCQMaf~C-_B*z3wT( z`96Q2kL`pXzZ-uP;CwD>_uhson;vhs>B&}`96^;mieh`T8lnK^hW(7?1{n?X(p9u} zS{1Y5GOD_Hz?wQIt+j87b&#RaPIZnhx9;(k);qb@`WCITzNw9_x*3PH3@meC)B-cC zrK#Uq>KKDncM@#I*Dh|e);#H2YOR_jYANKx@B=g??Hp zmi)W6GnSr3prOwdh&0k|h$!F+P-tOU+Yrpi3ktLX%=9&#D}Xv5zJ{t6 z;Bq52zD^UL-+-Z^07jovJ2RdWz&McM-+vpkFA zgd7YbQx(A&E*4;s`J%>S@no1J!m3MTd@MVYr9G(UtGPaEYd9!W0xS*IUEajltlG8_ zr*QWKRN>9b?fixbJHL7y7vu?Cj2GLr^_%PtiIHcqk~z%5V`clOQ_-&;B0pxuUTkH~ z5%mDG3-D0)B7k`gFg$06;*~&#E`@*pNnj#?Q7EQ}0enp3F?BZ@mAP>l`y17d`Z_#5 ze)OaL@cmPJ{=`ex{2E5t%`>0b$&JJcbgZ?trBk-4XbKyXY}iV?)=N6ihWyE}A z`(F{Bz({fyBgWZ`7#Et~+d(#uao9X|FZ1a<7O*!_&8K^r!|QGyhr0#rXXZ1WUI5Sp zFf|Az79$dei5UL`3&&L=J}|+ec`e2;iY?(VHP$%<(-X2yBNK&ICJ4Az4>Z<6hN0@K zZ2(t=fohx-hzaN}BNhOF@2@H+;kBH&YE>x(KvILXCC+)FAMxfuO);OF&nQ}A*#aA` z%jMtF(K4l>b4rD7u1dD0jp?=onZsyNm`#;M+GtLIjb<*i;S`kr5wOfq_qVgy@1T3> z!qe+FkfC!?d@>zLAL{vjv?slE7^-gUU{t;UGLM$*MJo5v@eBY`gLt0}p-&kMcpWf! z(+e{LWL&_RA_9CM!J{bCo;jumHone8&H|ph03YKyzIXv&sMs)?p5L2j{yq-iH5m{l zbJ3@Au_wJV7m)ebv1c?Ali19eTgv2;1*pVgI&npyWl4gm6@%GZGJA^Rc1bo>xWPZ z{&@l;xd_H^5px49f|F|yJE2%+_CX4oBBLet0~Ux-5!H3XaPcP4hR6SnE`$`pw0{I6 z{NrnJT9Rc+0>+8)nB&D@wXTZ84qlb`*V(S3ICaIai;3d7QG`SVc~59>K?I{zHw{CEU*Qu z^R{t7X3;9^TC|qhU>yKU8wrH1+&CJ0rU9fWYeCb}+z9O$pQx^yPU~UE(v9y~XI>*M zJ~YrYGy&-qux!dL3vfvztuiSs-;x-MrLe$sI~cl``dD(%1uzjA&dk!Q-vFjLOcZ56 zKmbG6Q3j2;m_0@ri)sOZIunhz)ODzX5vUZ?b-0qNu|{7r<1B%~?*T@@rSY3W%xWM3 z_!j)4DyypLmQ;0gLK>$v&?yOI8r1awBmx%?U;r?{rjoDkihmcdm8+9sA5;d2RB%JD zX3_6}27nQ`R3gUIo=^-&pNE+8LsXG}(%8)FT;v2TUTMrP!_SZHvI|?M?cCZiJF&Q*=;Jn9$})SJ44>6iy|x5a)1>+B{uGMmYE5e+^D-AU-1jKbaoNd6XJb2;qIp<9{F0d5YI;aR-KJ_3Y3 zBCYfTUUwRI%>!WkJ`4q5*oERYk%o3FD=x!PkP9)wtc6il4zp~asnK%Sz#RJ zKIM>v?LSPida3>CU<5L%9)XPjhSH*5K%)_tN`Rw%i^mr8fJOkLCBH^$UcQX-Tm&ov znBPFgfr4U`MTv$YExNQ98{lbleD2LM)|7Lz&l^n?YjsubbNM-)jXyx9u4QBa5dhRM z9g;5!;5EG<5_FPc&k!f8c^38w&@7$ZK3-m0>Prouh#n<|EQIucc~*u9v9T};rb`Gp z77;9$WR=XW6zLnYMgw zqODki-efuzO$ax*_9*M=N(Pitt*Hb-Ur96zeb^b9xD!VOT4c}y3z?5Fl2J({H?>ek z9^nZ2v}{j+#+XQHFOtl%E*%PJJhRp)x{!Eihfz55#?oTTPb>!4-9%=w3A~?#0z8S+ zQ9S#kRF?P2BvGo=smKs7mK#D0=9enHtx_VQ9wTsMjYNg6?-9!^KNL+vJR_WntW0dy z>0-vZZF~@b8K{NHMxHo=%ih5zYwtzl(9H;|6Zc|3roOYw8oPU}xwnVT1PU=(8m;3~ z)=6Mf_u^I58ta?{T*lV|JZr6SaJesfCsfQ%vBJl!TdJg7<oRy>0HZEOH+7#t(gPXP_55D6gclH~^Jt=T@l|6GI~+;? zQ2~Yd_WgEt?hL}@JegTY19gOQ@V7IBtw7&shs`#4afSUF&J~e+4 z8Y)qj1vWk{juY^r_E$GAH{|d?U=#D7jKna!RCKfAltT%slKsAbLea-QP>G!BS_Cla zUczzZ4x{5&OtM~E@*fMw@6Le>X^Yz9MY9jmZZDBBUL4nQCcoc-+D2R43B$0tm77&H z2AFlI%_|+iETgkIzJ4uxl`Zz!o;7x6<$xWZ>~;Ap(}fi_j+fVx0&HcnTWmPH&Dyh@ zY|X%0tYwa1(Q=u1?jP*??_N3(d4MI%4^N)kLv|%ko_cg;bu;=mH#P%Mw1-hS2N^)+ zhbIuy9{*|&9{p`M_)g-r(fK+uW(L2 zfx+eSYMdfsh(8W5w$Zpk+eI?w*Xvfw{U6J4aV0tPK*Eb9S?o|=5G=sLP9v*|uyhG97Bsxpt!mv$`x3;UMQ%2Jm2g*JlC z%y6|g5*tFOIfQ_-pPkH5l?Oz6oM@@GsrEWRtH1{9i?R8sa0aG56}gPu(yST#s0Q{i zP3auc;?Q5kaV;F^!kImab}2Jm zjh6KS8c~$hy$E2mw-Ep+xa|J~7W11KUu z88sfrcnO&x){W<2^^j}pS25yRA7>l4#M+t-VYY5tl^T#mO|0Q;{?WiP({- zJJVyrKgfchk_84cHv94XH>yjEgApfcs=~0;$;B{}*C|v1St{TA5pQxr<$~A9Bb-Ow zIAWOPham(@(4w2Apfbc4k8}bsm=+E)CL3#kO~wTez;q0>S}Q4m4S19ZWE$vZni!e2 z^pnRj#BOF}(Avkx=~@<94}cNvcBGVd`TVn?=K}ltqj`pYPB06pqj`0@6VcpcVl6 zWxl2XD9SY&8^+*rsDZS`YQ{5kF|FjH^pw}w#_>tUP1xvfSz*_AEMqj*??S-#c6Zo1 zRR3$r+H74pHbnWjMdUPDZ*CKLFI()ywj*}+_!WCbbn?RoPu&>ny9bZ$A^Q^5F!`%sg=#;)cTg3mj4@91eewT$Fcq9Ar-3v+yM&@MpFe|~tQJw3d}F0JUYRdv}` zhlVT-y;~akq*OX#O&+9giAQf0%QdG8W{fzGzmXrLh(P{sA&g+d8Kp)*_=qRqE+bZ2 zm}JJ}vh7bI0wCQwDl%sZ5UC}stc-(SJ)O!-_0`dR@bO+8tzQ)YGa%q#Og6;sMIbZA zzGb4ejIkrRJ$1xx$fT6N*FYJ-Qo&)Myxckq3mwx;QO?x}KO51`2c2w+!nFX{yV_95tcd}7bphE_zI6Sfz6=5ENedG z>(a@n_?q6BOkaPdlj3I@)VR%!+}Q2-vE!L3eLs~1m#<0DUY8fo(j6vL0ARy^WCjY< zB=jn&P>f|9nF_$95)qm*8|7!VpB-KYgKJBv?c9_CQ!C!KY)`OFyAo~lo>W`AIhkN2 z##>W4HryR!Bi#wGn_@|%i?X(A)VGD4D3h@biGVd0jUQD6BdP%GSrA3WBB+#oL!uvV zGwO0G~`JlM&>pGGGLy!}Ll9M3M;*QYo!2jq!tQVdSBvfHdiL+?dZ5 zNruWBVSEwCIK#OXa1+qmD&@r|05Wl$LRC%!q0)$u(&$4cQ&CrAIh95z9gz-3Afug5 zIH%Jr6xnLS7xy*W(lPchS5PNmhx@rJR$0 z1!Jo!D9P2luRt*ufh=|w-GRnmrLu7mz+iHz?nR4!-)^La5m_xD;W5DI=w?bCjsV8j zdAKo`BL>j@Xf($2osd#pk5ln`KvRz8j0-Kp_pAzkGr0%U&CsL&JHWU-4ve>2ZcbIa zEjF2KX7U)3X!ANE(khQDhFZV`$&*4}O* z1Q*o;uBo{I$t=h$AK{$*F?LIS5M=@}V4aH>nI2Wa2$KT=q6J)Mvq*aVm{HnC0FNIm z#lZRg_8yMo|9lIZ{{S2a^73q`1*1#$1N{voTh`>=EE0AQ7MlT%J7n8PNH~ef;4MUVZ=IXTSxk|8IY?ukZb2Uw!=&+y57K z|EnME?iUa3?yU#*<&CfH?)9(i>+5&z+iRcOi<`I1?tO(n+AVu}_PBj_XuCZ;w8fqt z+hC6mt+by{ud`<-RuQ#KI%Wq>7lnydm&}1686hJkpe1Rko&^jZW7!FDblGv1Kx%5( z0zZoqDF=~bA_s~1K&BOVi4`Vs&1RA-lpV)p1qNg>+O@J2Dvc1cEU4aTyf#YMYhgYM z(@W#AZjHF;M10j%iL9V3-#SZFh1OM6MCAb*1#ZDVT;uChDjb-!MbMd=ZIwwl zJVP@t!NSH>BKb7&$(9?%*e*EIQUOT4oy#sW0Y+p3hvj6fWKsk!nC7NoRh30LX6}44 zXQ)b8Vzscg8d%mhvv6-^VJ}u#C!o@^;4iK`kogT@95vYoFno?WjL~3x!_d==V&5`M zN8!~>WHMkOkQpKIQUIfUiW_&K%NYk?MgbVH%Uo%RPkHH@kPifMzbg;yyb_7vzW_{q zX_PGilyM~mHG+uIHbCXo#JD3Smx4DNLoCklCe7 zE9DBEfKXIq1zC6`Dia=XQFoF^mlDgVQjbZDzv4+$R4KzF9#B!qk4>e|S4n^u&HP=9 z-xw0|G%AZ@w-b$xMJ$AYcr0rwp#H8KC;4yNQrop@lz8G1TfVf-I=hP*kukdJYp~7% z=FzPrx8sYSZg5sl?h}HL+oX4X%VeMrYH;b6QCk zZ0+c^_Ev(a+LUQNU?X%gtp&u*=9D<=kvbS+wJh>08Hs7vQV>tpMpTOHT(Wr)Wc+ z#MO+&RFzm~sI(@{S-NpyB(taU1|6K=XN@3Dlex z21c2x9u}HPerWIRMKijEq0T4D%h>VIM(7{*>s6Pf+X6g^3x;=r(|9z(4==CwmY3 zn1%d%FjIjA>@)oUnQ%POA^=){DEc7~V9Gi5X6G`}DJ{0nwni*`8i-2nU_Zb?1PAW6 z3YbjgRpi6aouHLE$lv|YvQaxQ*<}Y{A|4uOw!?jGwvP<^ef<3ou*2KiI$#HhS3bRJ zqus=z`?JHx?At3hNVNRk?p(iRUwwI>g*<{wz~!MvT>ywiT>=^HQy#LUf5g9k|NT$) z1HkhA1G<;*ezEVqWv_DoXS)ZueEro6Y+;_*-8+x%^PAt<=hwcr&#!!eTg@H&`q~%v z;M#3_cmd0rtB5^6zv7$*o}59WbCOu*!;6V#p0p>&r|p~l6Lw^>&X(6@K=n=-?dqa3Qz=F*VEYP%Y*oE1N4pMgWqF1jtDt30K@pJjo)!&6-C$BQjgmOCZj|o4A7nQqxf$ncShYu zLvE%u=Aj8I$byy0&&1nxjK2$G5ni*COrldy=8&XHjiQmUoO#X0jmec#^)GQRhvwQ(H{gaRL!y*AVn zWurY4p2$rMH7!Nn3Txb{DB)%60DXPVtqEFl55u*dS)`HfWF~>qz6DKP7`|(P*tG}23eucC>aQ$u0TvHn z7_G7FkB4;@OSo7X_VyhGwYFn=)GqB?X16${eQ|y*K2F%@uO|Ms2aQ7qOa5Uf$&3r? z=vHb5`m7#3Oxx%H00Yf<5FHEMOUKBN^-ql2sx>R^$N?N|Pn{&4au0i}wbs96+G_iU zt$|GQ`o2+XA-lb+71v!NY)1%#YAeGPxv&)aCE-h0V@Qo$f%QuXQOD(s#|rTn%cWb< zsVYB;6Bnni@<p(nf17$dP-PKgbX2q7b|$e^1kfsIoHh~&f2k;O?N3iM*RDI;*J zWlYrw?O2_OZuliKyySTjJGwC%W3F2M?%JI+@V+!JDs?(4U#Fv8jf9zn=tHEyFNRvI zBuv-A%#6!?kpSvw^m*Fp)X=3=F+NqIricjDj8ChH5hwu!0M==!b&b0EjXj`?t z)s}C@EqPg^O(MeW?}W+JR)ZFX0|+~q!6rIf=(1hqwYDC&hkYwnvFM++9b-eb7lH2f zu2$Pa2XmmK-Hvv4+S#5VJKr;6*GHGyz4hDeG4}Y6i70+dS8@CNXU-&bKR$LhZ{B06 z&zS2wG%>g2C)^HfpGu^j|+)#_K&k%y7WT2mI5XLif+yZTvX|SjQ;Vz(?L3&DNUvyT0oqb zH66T82p291H@W$Z+w2fx4VYp0g-;CI*@DnTtb4 zkFzKU<4S6haoYqt9p4h)G1BO+RQg#4L{)aX8KRlBo6!ztQk_R%s&(Vf)zy${nNe7> zFcXyLR|3>t`G3W++*c)$-j*GR^*W<01#6`S!@^n!kT6zLg)l!1z&}hUw+H|uPJ0j* z@zRu}Kxs{5DVIqyVHW!eudu#nM3JSDmxO1Gw$gc_OI!1Q0~moyG96Vib8A=Zid0_BaFtz@CX}c89JsKb4z~hVEQJ;ZSjf~wrkH$G(X4D0PVGjm8-3t(OJXj zB3D)2!`9q2WbJe?ialP`IminO!$fS&>oRecO@<-HQoklK%Vn0Uv~wwnO#xg86{AZj zrFE|)*Ssb?p79c6Ou(g10K*QWfsbiqRt#`>02BTSU`o;aRH0$04+MztYf^WjaajrA zA&@BsSjyO$h;in2C;)|1;d9!nqf7Mxj9cu}Z4{$faS_J=jN6m&C=W7uj)`)tU5`o% zf2Z>2^R(}&SV)&dPEQRlVgZb()YVe*Gs{=HWhx8(WV#rUSrX`gMc5GVlm^CHKAM~a z7-S)gRKplu%=_pAn@y)4iug7>6icJ*NXw@iFJ!da*_m#GgW0xpSsAelg|=pWm91u6 zJTX;Zi>INqjuu#6Ar8{%jBw)c)#8*I4M?YDq~c%4l6Xn0O|9o|j~n+O&Jzv&*vNNf zqlv;&sEb*CdzH(d?_&?sQ`_Xs9LL+~PUu_@tXXZ_rY39)hmq|=y|$;ni@ipxokXa6 zuB+e9(7B$k<+(UCTtr{;&5|v4Z}lGg3N6Zs<-6=6?#Rct9mCC-3>nyAKR$TQLjDJP zd=K^gUJ#O)3vA`-J|pQ<^_a-2lfSHv0K-_u`6f4z=Hn^ zyK(w9amd%~{-rDS{iSpE{L*oIer}&VKfB8w9$Rk@4lT7G4ow3v6Z|~Gc6DV36y;7k zLMOJmF5ecFWZERk_yGdJdh^q*D>vO*GE%HOKH3T+`TeuM$d8U?q|P2A7T`%swEDsf zYc5W49ZLrugPrB^Fuam&42ITFJsPxzQiu~oC$mp!V%${?fE1;XBSW4{esVhO$yCdT ziL;c5DBL=THK&rf&J($YGtg0GQF(M9B{+yz5XoFgBy&j|2QnCM0*PeoU{cusq|rHN z(z$1FxXR-7kr%*ggf6;}adH8jOCFt!!p(Bg17`D>iEm=YLhgGUI#TdlOyqh?<`9#? z{ndfYM+7r|M3N>|iioo6(|4@~<$fb-{U!jXjZUYXE=7^ZTE2Tlf~I?)d>9V+a%T1@ z#k>u}YXHy~3gxCBN+%P>+d+T=`WPPwxUrc!8@VCFI#W#m5|fYwe5LpGaV_pWor|Z` zS2@Zv^@_gC?#Ck-V0PIF{kOP)7jh03;_OBuQG&*P_?{b!C1D^blfGDP;_;m5V(<@( z!mu(18gMLQj96a$sz^XY3vO9z$3a_7pj#2oKM58{3TzMAwacnqVNj|(gl#H0?5c9G zn32_t{LED9T$DeP37F_@>2y>n{2cN|)7Z-uV~9jl(ki_j|1QA5XiNYjfvA8YhEzhA z^Nt8k-HX7**Tu+tN)f%v=GM-|E%U4HcFjghmNe5@4N0L6?k% z&Ma_=q=WGz;x`T@ad$RF;mP6(yy9xxfW~rBe1U0+@oRSghh> zG4b<8VRekhw7>8%#_BP)tP25vSfUr9xGzNUoCk2^(tQ@u9hAx7QsHBe0_q7Ob1Hmp z{Mw%gT%?6jr{IK+ye%z@K*cHk0T>A=o%a~vQU(#g8Cq&IhNqKkg#iB@4Jw0HUyiaY|ILind8SW zzKuk9TZ%X?r!dw^>e2lS=UC5Vo^9CMZEJQk*|r01ws~KT?Zgmu(;mQO8(OWskX`oV zvUg0k%{veRQ{z+2;}H%gCWqQ=3|svHnZz`@#ZpKVJC5*|YUKY^M z*gK)N_H|cSZz~{!Hlr0^GG(4j_4nK9y}Rt_wvD!J`6Ao0XxNswvDjynwwJ`qvp7Ip zuICzqo_s#F)^?MpvSW6tT}W=Uhus_O`%!$#Rvv-1bslROvSiNRvnMycw@0^ru%GBq zUOvEk3<2g3-~9-n(8)kGe)KH>bN8Wr{{^Ig+W^hyy#M7hB4`-3vBCJxfiBKqlTw6O&vO5i?zu&aNdF>mt}+ z{Y~sjYT2t)XR!CgShfVsRx!CSNsM(df!hty$qDe4TG>k{H{Sl$F=+^;WlM)?_Q@MYoa_>^m znHSysKJgVep>QuQ`{Z4#rfTsDYr+zyk$ZFtj|wwuUqIf>Om&bc(?dvDFO*}^j1|4? z#F}&;L!l~x40{y7#W@AcxCIPCAW#V`M%lBB(S=OV{b*#S();?jH&XMF19&c)9o274 zG*5Ur5`?8cCBx3wvQideZNiP0bjD}&D zQi-NBiD!nL!0sU)y08R`i3k^En=i_5iuNI7q-U_B$b$Nt!`rSnMXDUAP)d_j<+2pb zRsk$>3(#mxB}SXXpXyo!FmW1x$s>(F$p29@erXzgX^$dciRH!;$L=Hv&`8GWMwP;- zD_O!)$_Fr7+`EDf83&lC^tQScSMcyfaaL@yz$O0u5cV$N7DKCoHnvrEzN_bdl>kveN5!htxWSaRp zwH?f_YpsK7FTz1KhZ|Z(u~o-I2aQU00FwuxsB|hUj%C!z$*h*gdPWd+oZ9N?0;DIY zVKi2)?u8|MA^Vd8x|3YMLsf`Xe;Mt6Z7={MP-6b9QI*FYn*kZ;gp5s$Oez5$?O=TS z7QHQXz6>q}KqXTByV00{fqWNs8l^14%SnIqm9Nurpdvuxc><$Sc6rszwrfJ@ZUO-{ zUg+6mzhuynL~{6ugkm3w+k`(a+H~gkS+STI2F}IK9p9)rMksAr)<(|H`mLRet?F&l zktW-8yunuPE4GctD{X3Px~ZUDB^AS|abb};NfThU4MbeCCg zdnMHWDnzrjZt<_Z%rSh%&K%llM|UHn+(bu9Xx&ntvxjl$uABAC%dlMqoa51yAyZp+0BPgil5lGUp%(& z?mfq+?1k%Mo__Ppez=2eKLB(8Hv1Nyr;g>)rO)j;BeyeWZrIt=pV`@yq^usfL45NG zJ4Ig1EfOogId#l_IJwteo}gL=rXjx7UL>8)Je56gIy)R4FtXV%W`#zvJBg)p0c_|% za#+l3q?N&8C7W@v*k5^cI(ZO~viaOBn60X8c0jI};^eSCC9v$an+f6cpQ z&3b2^=bY2sr%yW2LB}y;8Op^ZDshQQQmL4knVHGVkl2nPiJio;!^}yiyVJbqvu~B0 zJm;DDVK1pvTqWJtckg`x`;&A!8b)PZjJOnBbVt)iY;!NWm&6i3vFz8yzwTv*=zz5J z@q{N@!hF+k0YIo32N#Swsf1{A08Nk9;E@;Q5e?kRCY!|yv&GGLLg&#sr*^?VPf&aF zHlf`S)G?UW{|+i@%o#6rAkchmEA(PxQP18) z!9}~4d?U+-TR=rS8RLE0snEG7uqY)t2cNYZm_s?R(v*s<-Y^p8~7s(02#J;$DTE2W^MLxKRy~p)FdG{4gZLbW;2e&53CZCdf z*XHDvbCU)EU~P2}hh=ES1MR5xho!u;S88C1RUon~A7R&m(YjSQ$TkvG)l9BP9oFyF*uqqxWG;a{rd>-R0aso+ zmx3HXCYL>hnG+#Z0mxJ_=T@*#Ip2r2vt-E!Sk^ zNgc$1YUsgAIaUub4INW9n6knWG-YLpX(e_p3Ooudx@%E0N~H}O&c_LWp)-m70${XL z(Td_!tKg%zS}|U%3N95ejbfY{{k)iUjGLcKr%AG)HI?yfE}22*6sfB~?^DfQ3N`h} zNL1F=t7Un;M3&YI89^4y?7CCN)^lWVC0%+Kj>y1rnshB3l9A(C(zkwC#?EBQ@X1u8 z#!h9(=*djuWBQjeWMsuGBj~y+px--DYUjJSNcl{X4h=WQ4gj_W=}NKU?{l+vb4X2( z2eL+?wDd-?{E10#Pq}opl;L63VM8-tw7v+zQ%W|)DMD8^&%BOTR zU!HkWzP$Ea_{)RmZ`6CniN7{E+mgU>a3-aap8TsVg zxO{$r+q08$ccE8aCgJsX3n6@dhxB2sKNJZ{H(4${bS^zO6nC=ZZ>Q=40I`=mq5`^W zAJ0*i_%(n_6|A$GutUnxl~}l_XOb>ybSI2O^8pkadp;KGf?lR(`jg7QDYcwD#%cA@gyoS*G|8c-Z1iIke3V(HROKxGsR^fobUrr)W|>k{)%xRS4GaQH9?zl!JB$$Q2rA=T z6vUZOU9(u^201zPVmWbkjwL4JvCm(dlXtHV%7bgY%%=ySi;l>9bTs#_jLF;AXXWlo zvvTv|gj~NohXeGO%r1|DqHQElK(Kn$+P> z)&}5=t)7%cvSUW+awfILC#1i#Tlz82?B?QA8^Veo)qW-3OO=>g#;nYsp(Tebu*aZN zhM<3jP3%};#gyln4MlY&vuG73M(9EmShRalKq*AS5`vlK;{~YqwR=&WNi92^dd6&x zjMEwzJJd67P{E{{RYoCr=;HpDWh4S79%m$`U5nC&Rga=k$$DQc{tHPA)Q?kvrdEu3 zcLJakWVEYMU@1O?H9DutDo&RbIA0f0zRYB?^FntcW-G8_T@x@#Y1Ar_2tS{ScpLJh zwgEtxbjkFhhudsMmN_!B09cIdm%;giGC&Qjq{`4*nhYJykfGxUiq}$%YFkQ{E_7dg zbTqxIdD6XrW5t|Rdgh!mv{1;{izwe1`kNxN1j1Ia*r8fixMg6vT6!mSL}oXtY0%5g zjn1VX<#-=X54{!A*$RWK3LR5LwUJ{oJ<>yr_HiE?iF})0DnA}BmYuxAG?7a`VPJjKx^wzxOq%s&8;O zx+#~IF3H)6({diCbPhSZAF~pe<=Da8n*>V-(mz2v{d6liiV!v|=LJ9Pz>0LZ4M&m+F8W!UKRD!gw|6 zVE3Zzuz=KuAtj-Ial>#dKoIQ2DkdLtiHkjomu|(w*i_4x*na>91#}aBItwor`W_}W z1xFayAAz>cZdpfHI_k3X+|#m=>0-hXD~IR>Ej8#>*@S+Kb|H~8SdVEOdK6UBNw~~R zGO8T;g;qr_;ddtd^U(FFuu`j%POBt~m}UURN_Ub)4wo^`=h~+%RjU#5NQx@#MDOP3 zA*4LdP6m+Ku?g3V=KvYlW$a>VFuSZ{@6rgRxd{_W4KnMZbLmc2aG{GK%A_l8oAhRF zlm47-GGu}oX5B8MwjDCe{b9Tr2eT+V(T37rFc@csW`+(&>CL)7NsPJ_C=@g_{7kcE z)SgCf69Dr|yP5wTU|4{<$YF7zc`>Z>HP#h1znxA)%Yi;XGt>2gZR3Qm7jNwj?AXSr zZ<+d+DFaIlGA(LD&PXd)<6+sE=$^zFZ2=Mr9_q&I1vHFqg-QU6=E-QTjEk?WK%_Cv zMv~@6{)}4ID3EA6rBUkgtVL_7``DQlwhX=MDMVPutu)prcb7=Xb5 z7fyy+g}gXJi0L$uQcI06)onQduqbWVh*IXhx*r>5wRLF%`{_ z&Vj=$>hXx0P6OmKrGNGa-AjtJ&m>F7Y^t=+)5R>oP+B)h54x|;)m-Uahk3b}E3H#G z(u${E8{*-XAy`l&I8tx+b^J6H3=Vh_EsyC-9lO zX|IrXvrFaArW*NsR+)&oQvR98t+P(VL6!E41UuxXNT0lAsgWOA)&Q8V<*%pSk^6I` zO&-4`pWXdL{(ur+yO%$s_W$zZZ{^h+59H>x`#eA2mIu85oA-Z^o2N)uT_E0j;HaEy zTa=5<3v!lVyEjHwMQ+}~bd#X7w{OV5Zl4pmb5Xv+dEm2i3-awXy04`%IonTsMInD9 zr&AhOxYx2LDT69s&23dafnj-8sc_Q;0yt%Ew^7wf7Y_2VA^RX5abRY&kx;?BsvoxU2TYiPmobpkR4q}yBG*czZ`A(H5~9Dqb~L$zJqag zmsd4;=mG5zn=Fi2wepcyXxO0_$8{Zh74uvx&4GTOL*N*C!fMljc-an1l@-@-ss>A| z8uoG3Rw(pTZ9ZdYOC~Hc^nE+H_HbQOIYq7l%!WQMkL!+(&ulPv9gN3ZJBXuaG#1*k z8OlE6GO}SR*uT`Wb7^Ad(hRV)prNSS?3798 zZW+tpDWjI{GG^K)<3??jiQFwRmc>YnUCjucj*&^D*)()O!$b=Vr4gNsrHqmX;w-hF zyO)7v0@Hp`iSEVN!Ki7a{-RnI*bFu}{l-#VQ!H74Ys;n=Y8R(>H{&AbQzT6?_HtsQ zqQXY)cz!ub%hg-vu{+&@kW>W6onv!>4U6OZiEy_DLm*notlk&#( z1-X7{TCQIKXl`7TiNyt}#ptpOTbM#D`@Q|k;u=^L-{^6PPM(tTiDS~aaz+-;T$baE zBwl{$qP+6bd3l9X?b^bK%)&_Ps;a_6sUC}Qb}(pRYS6%F&P!=dzLe$0MU`3==wPaN zao0i3tcS9!-G`32N|{$1<1kKwT0So3S_LfEl~V4d!w7P}ge9mF0_u42Ho%xM0>v0d z=q@HcCR3wJMr2TkwF>DvH0?47fM}`PvI-v+TzpFWz(U;*c&i2`sN*$tWv1e!fuBJp z0WjLZ!~q6285*mSG~UkQ`>^|ndBPunJnpDHc87|mUJ=pYF)^awnYTA%Vud_%#&uiopxL-nx_DY z;VkJK!GFW~L_Q+rA8DX^@m%EJ4KAyQQ z@2uUDuWo+GrXLHKPrfsh|F7S8Q|6|Q$*HxMjI1Y<7i(_${%lCkxNjlM@owc=^`x^ zqKO`Sd@R?~Ao(ce*Uz|BI}snxQ-7XI0?_J1P=-s~M0k_SQo{&M^(ghQ&DtSNlsllx zGlB}H^4y^#DAZ9G9*OQlbSI3zJcrTCA~*I{$9xc6&E!-&fZi>m;j@Zn+TL%`|9 z$52b(cJC+MGzpSX5~F?Y8)8VxwHFckK6c0GSHfur3~;G1Cu6g8nBVE3)I*Xo$_ZWG zp1J`pae%3^LaE24q{dDc?SM$ab5`9^6i8GWp%RHau7%kEO)gWKoUI(vVU}57nb~0G zx_56u^}m(f=N2hK1X<1~td>rt=?Kou$vbgkrm*{O%nXberzJ_HR-4~}41&>UC zBo)0+>Mm}X=N{nggH-Zvl-+wVvm{kBdncV4^lLMoRTfm>Ht5#wz2wQDEVtsw8zsTA zx4cT0y4vKy#Rd89?g@E^PUY_Te)-@vG%>FNFgJ(g!@D!`9$@p}<`i$w%Ny4gjivw1 zm)7Lsxh0ujz~FLdN~-!7B+6JU*ta6So;B{DkUGW@tt0EwKfWXrGxNkO&&ksAtgI}| z$^zrDk(NHZ$nc}8YQ)l_0ZVaA{_v`*v-=EiDOODjdY6hkfQ5ZbjfHUoBeVKkt2DEl zY0?x<##=G9SAk}!FUSJA1~*{gg8AhD6l}1ud~_pG#$~GTS7JZ~3s6Ih3E1f8Mp(3m zxcCQIz6V&e>#de{FPd6vbSN8HF{-8yK#)*i31Io7_k;XBm4T+FnTgV*%!HX`2|t%s zjJbIcl+g$$)+oA@SSpWYq)C)HcO;jNhZlB<2cQdZ$}B!2%`GMb!EU-3f}q*}lI|>w zNb{f<;{`Ur{gF%=oXV5FS(9|l10aiLX;{R(^%vE^<82EL>6jrkbpT(f4#2gCSO`*6 zb>!99A4KcK-@6h3ul7oD8QPd4HhvySizhQ<}`A2@K{ABTqxQj(x08KvSsR3x3<*&XL`E#I4zF}|t056A{N|zT=vKt?^ zTqXcK*9iKG7gu3^1hzYv)qP2rWeS5`+j+2&Fv?=!5{65JV8IFu+pCtyUO-D#CA3 zZCgTsOOV&U4`A``;@Y^21Mu$cEbt+f(6!W9*y-66K#1P9ACWpoiUBS^7Y8o&ZRCB4 z_cyrGpkYId0dTxY5Q-RsX|#40*H-m5)ZMSK-_|GxO+{sLqJnn~VpQS)gFt-0N{|@l zaME5n`F;5AC1H?BVrI%-X@sQJn7m6G0GRsZJ<`hlr;9^YAJtDp$#C9Y86)*~(z+Kg z*)3CaG?R?WrtQ0A+POz20Gc5)T}l>$OKwL^TVx~$prOXe=F%F=+$^IRFUZ(NjY1sI z8cBm~Mhzz_^H~|DMlzm-MaB=WvBh5K#|kd0LvhkY#EXl$F}~7nW257s)6mYw&TT#y zb5+6r5@2*xrb~9cplcUmEZq5AV@a?6W`IT_Q$|N*3Jlu4=y*(n%v_YQf7t*S?WPP+ zpb@-V**nMaRqu}C#Y~aQyPkpAelpSY?Iq60mJ2^Gc@>+I5 zy{219SAa1`BCH!qDd8UtKzjH4GAN02rhuh-`R8WyiNR_J2Z_chj4UiH$kC-W znd}>brdbWh)Ja!yt+Yj$=X+y}9u#2EzyL5s=vqp0EK-KJvJ%(XS}2^gj3t`6ZOVmB z#+XY1BA`qxPI?|=@rhRyBdh!ks~$JjJz>UF>i1QViRxd0h3>`R{_|ol;B&mX5XE=N z%Pd=Sfqb|%XyBZW9gGn^$JaAD6@<1yEdNziA0TpCZ*@GU09FLp>22b^`ig0V0T;bc z_|YQh*VVCx&cq8Dl|`VD7UhyjgGeuIp_{SO*`Q5ntOYc>UDDT&&Z3nR(+qVi;P%ESd9EybKg`sU5?E@c7HA3#&ho~3#YD-yt`aoPl%50M|BR0l{k^#L#g zjC}e5uRem?aL=u*jB!=5CRH`1|C09FD(qqM^yDlP?=r zL|*+?{(0>kb|u&4t>Z7tJLhl7^#$}-QzzuD`Ac%CfovHQx*x~{H|#BPJGVhz%_itC zl_-tFLAipNvG#;axf=tAWm3?Pc-L+m%?##ByOlrty3LKs0wM zOqZh1TV22_9azCf!6gD?Oe+czBt{kUJkbM5d0=RYLa)e6HSt~?1R#gbAU>cUPgBV7WRwQB*tZXjT*7+ zmhpT*$FWZ)?7VH;72nmE>2w&Kjpc1MMrf0H8^suHBIiY!gfO5rk+s>VaXOxOZQ}g^ zP|kDl%2I#Z8GC76>&PZDIKI#Mx>&ugRh@PSCfX`=Lp|7g`G?q zk7e=wm1UO=u<40H_b^t-5Eh)8)vej85dfUNO`N>LnGTHdD&@p*zr1k{;JCaZcP_E) zXDs&do2&BS8}stcs}u6>?I{CbRN;U3+PvJozDx(RD(6qm$nx@}j7`mQI-Zm=3@yXG z^HR{w4yJ2Gf?aenUCTVa2!m_|1I$^e?-?TfazbWjS7n_17|n!HkZHv5vbLa@F$5Pm zD=K7OxY}hEvNMSwtc*faF4M(69RDg7{SEN^8(I8UDeoW7ewY`ip7{K*W)x&x>`xq! z860$Q3L<679AmUr11J?US_?5k)BTKUPVC&;xK$51J6(%g!G^El0bum~%2xECaq%-| z(+VKO^efPyp)zjOKa7imUO4ntPo{eDFz)LNoiRrN0OJH)9DtWv4JivqSwaQuVuExr z5i>x^NJ4iorNMM*skKXYJEN6mt6{R*-jX9dU34_;LWYJcB#oM7blPeF%ottD$UNb9 zbS?@qja1D7DW3CrQZoyg0g!1@kQrtFGGt;z#{Yeki|81cAQQ!ai;u2_v1Dz;s8aGm zDryRG%??T1V6k+-B-3So|8zNBjXG`D5KdQz!W>0^4Q|-@$yEojGQkGs>@hkR*kd=Y z9p?~oQeJ1=bPh7eQJfr>VGfR2L$U%*d1Xhgyu8yQpQH!m^K2g@v1&$Q0F1Xx{+VAy zH^WZG%VVTS{)9&6dsDUi$%%d@xl|tH13Gjeg<Z}h>H>14AYfn?)Q zk;8a2o5#}W!nsI?p%+Klw`f-oN!raQcNgHYg~zr^49k=lDYu15M7Zz6@tCn$5uHK> z7w%dM`Bpr)8aco;`-|y4VwYBqm2}_&5IqnPl#~#pLI6yd6yRtIU03RUfO9|o zfeJW)49UQC5Dw}|(rn=8ZGy?zOgE#|l9wdySa@}q_eqZ>N%{$Y9I_vf;r#tFN{v}} z$%JK>OqzGe6d*KXVT49a12$8D&Q#uuMos2!dRS9=FUYiclTj0S&&4YjfKe+J1(Ar&q|Xj^_>{U>W>^FA%5WamQH*2=@bDhCg=JW?)m zRcwjLiZ*2Yf7Om~t8 zfM}Wcc&kQbvx`yMrvi?;<|<$*;COkwfKiy1evJSuHJyvQ4>|YuIo8~!oGmO(ZC#>vL zJTge!#MoSfFuXcx?JAZMtl!J3LUb_1C6E7ZTCBCvdEpIzQa@yXliF8Pd${r7~*{X|T|U!bY~jTqp+c%oEH{z1a&9~~9)M>{}c zua~d9ZSs+?Lq4q@=ndLyj{tDB`YLnO~rD@-z2XpxX=N8Y^jznb1UStw1|A1 z5|H;(3XJb}m#BwZ5JxUE{yLHGkOjtD(~Mnv(V&#${if-s)#-G}9C*s?FdAVsM%WLA zoB{EXCh6B~BD$6Uf?#)Efp|?*n2tX;$WONHlOG|;IA_sHSTy`LN*c5T-sIx*s;q8(PekLx=5ynXh8d1`AwTb|g z7!==PJQ+(;wo3^eL5#6e6f6BAb{!?D01QUGwOpW^^0{E!H^9XSyAaE)c5en#gEWMq z83wqt2Xc+u791h8voXNMlgY=JBubW5=5v}W^c2qQFx3E<4C0}+gV7P0neIhRewEFp z0OO?FQjqbnTk->rL7wL!Mr4J6Oe7uZK3`9%(d97ODxpbNaKDmntAePLO7vLe+?Jsk zD$j!5rXUH^tubdm(~Bg)CP}(&2c*xI1luf${GNR>PM0%b+b2`DJ&e|N%Ou2r3A&p} z(+fr=fJApUMwy>8>fz&n%p->17bkulFFoueHaZst76V);JBxK)wCkA5Sd!Dp7{H<( z4C5(_IuRR>$46Yc!%=WCXv%adzbvIM>&PnMDW)J}I3TN4jNZq#LrceDZn_62orQ~i ziJOs?mJ9nDCn{Kd-!IGP#sCfl7_FZ>mjtlzebu{+-&sqk)@tUdz>&?*oDMiDHCay( z+5BFKO6Yy`l|e-=LWmYdW#71e64i8{ypo?kZwq@QV zZ8P{@@$mz*9vPlSbw5wu{92vNuFyrcMWwcpxCE?F3a~V(?I@SAl`a`sCAVd@n%fG* zvz0QwgyG@{-AX4uWKCH0R}r^Bie-@t_uq;dS)HAdv!|CBldZ`s7ojRILv5cPF;x8L z=yJ|kiezz@Nlv2PUwIxQT0rLY6sO!z$(N7F_W6bj{~sAy{gZ|IKMM-w@7M?ZldL#xPm_G-X_QYhiy;$4 z<@4kKx*NB=chD(s9(@@GvUV&ZflU!*eVuO<}qix|v4Am4O*#OWHo&6| zFww3h(ZT4>rPY@!%|1Y;0AdJ-9tD^f`k36!cpX0ew4@q2LrhZeHdNzPLrbXB7j$9D z@-@cIjL4Mj7QlHzt8k-(iPNMNTn=MW3$qeXDF<+j`>^bk7OfRSh^jiA7zUxL%~7za z$cFI-DaHUB#%QhPL(*kFAU)=TfXzY30S9D|4rc_QQ6}05oy@TAXV}w>SY7~#*vn9Q zf0*uN)D*8VN`dAP6*(qo!f}f4&&zWcj4dtamN>|$p`?O~jj@!Ci>*;yY#-j|aqUiY ze_{ZOc0<|~X?Mg3&Y@U0BC>=dm)3e3>YfNXcv=5gljH|m^sg-apK6QYhXO((b&~$IfeN0?xkgU?9AxM4@yq7Ppr^U{ROoIFI5v&T~6+J33eHU66Qh^%)oyP z%M2Zp6{_Bai$FOG{!&hYmE1Rq$4lu1%Fz)h4OvS;M7tCP87*Dp7qN4R@Nq#vLH8|g z1eG>GMO_|pp&sX;Z^>m87VlyRcjIFW|0eZu;xwj}&>O^0XJ`}vmjJsR1ri;J8DlZE z>)`Fgcucz)!)}8;k((~Z$^Ipuv4H~}gNw0<7ZzCna0%KNfw-}z31u7LQdfdjr-H7d z2DjZh{Hy91eUXsbNEg%EOQZw<(>sqx*gWDta*GB4mwuwW`^YisL7m^V%wnJLy!ItN ze~Hd!#V&m-7&R`rWn|e01vv=7gk)}+t^&95HnoKTR4Qu1;tArN)do#@tw%P0JK0EA{j}GO_y9WW6L%H%QmO?l2wz~}7eGN_0EQgQ|ETt-uIaKdLl)DcT z$lWF=!1*{Jd&QCK$1pS``IG}IBOi_gS_LjZ2k;9xi^NBEQ4oSkxi5%mC4bK%Ko_k{ zySg1?>8}SPEd`kJTn0L`f zM!OfIU}r_3{e};2V^^bNv5n3KkV$kfb*6&`xU{>Wv2TD&2i=JROsC&O=c2`kmFhqs zs&BXW6=djU5Z|_9cT)=ZS$5#vh!!Rpk!31DYMJV9i2hI=zMYVXyu5}A$ifM5Fe~JF z9zn|!#T~#9bsA$aMq+@8R+%!}=w=jHlu=oN19e#jHcJ~FozkimXcD(2**I)a+Sydl z;Zy>=x?8G(a$TRt!N5YiJyid8fToMCrrWk(`ttWmFT0w42m;DXOVofBDzg^AGi=!^ zW899JQSvLBODVoiQY@V)+O_mCLtPKJc%dzO7)!YsNx8VMV=2SI*ysY{%kxA%>_Rq1 zUJtt#F2*kG(jV5w=*k5hSW7z;Ed`4LK%+q2l=&Xsjnc>b0F0l7d|>w;qx8N4kAlp@ zkK^MFCuYWe1|trjF^X1G%gs2<#W>8(&#a~3r#c@ECNrV=Q3gjA>@x)xL&dKa?i)7l zCW6ay`Mu)fGE6X`N#_8l`dFUkiQq?O<%Mo~J`3QniuVw${vl4T-l$w&oRd#)Uyu*+ zWP0=Bu)J|$z+ji%IX@`3&yL7TCr9M`u?ac7Hc5!v6!Fp%7-IHIw6Rm%*uUh!#L2Af zmuyBCndPJLDjk#5k`YOUDw-Vak<>_!qy*X}jSGX@UBl?13S+-=7&s-+b;AZbM*${~ zYBm5SOpsWNJxn=n%BAW>mcfpJ1j}kJ6oyRoEqycAea_orbK!?N_30ONsH zth*O0z+(8+8I@#|1v?j2Lu(|16Ohr+r3A?6t?p4=Jg)2??M#Azml_2o%mQ^RrsFX` zyCF4O^)i3faxxy!U^*+K4m)E3FBg^|%hO`U6j3)zTr$r~gIs8e7>$(Dv6KTaRp?c! zZPHqwk4=6)oraagJa11pqz!;+Uvx^x2B7pVLkd`dR{XFqy99800hgg;bS*~<=tc@; zd@V?5TTQ&}kede!9uZ}I~2MVd=KIb@R$ z5jMVaFjwBdqwZCx?YDVez0COZ1YN~Eoo^rG&qg}hQW9qicjSn75BVqu-DJ5GNX8Mj zB&RxXIq;FN8WoSP9B1ls3HZw;op8nvJ?x)q-9B`ose<1j{HR23joK{unc{SppaO5Im&SS1bu6?8IM zRarPnD4FJS^E0qpt$kS_Y74@jVQX z(e8ww!Mg!IK0rmmMLQb3{}7M>7X6$6Vo@Ukm!B`bUy6^-e%aY5xxmd>Q1?9wF!_Lp zrd%qR=s#C)H9lJREV=Aij4lOx92H}xLA6$ndio~lg*Xf7{>JEVHZl6yf{X5E6C*P# zlwOb6cA2FuSS4@cg8bdRSIFmBl3OQw6XL6b~y+IHJP~F9G0;T zMjw909YJTQM6`n;GC9f)CIkr~n8J7rFp1)tT*9cV5`ZbkNx72FMvW~i5v$d6p)hRk zHFylsrP{)1MWB-^$SAmIMd>60bR-6A3?ZbGJ&m1Rin1!fdC_~J zi$)4K#TIf(E#yKH=EW32JsssjgR;J%G>5U1N$MDtwKkwl>Gn#;KmpFxu)k3CHvuqB zOJs+v;4V&etO6)&bTxoTKQ*x8F{)?LE`vNiuj?Y-a5ILUMNR5Bj)@s=&HXvAf4Rr z;-E9W#Vo5kY;tmkNiOfR$!)rn*XU^O9C6BrfXW+m6rU!0jV?#)djRAoo-6;L{z8ZG zLvDfmDZfy@AxG$Q7+&AO2>XK6)6Ymf{SZr*cd=%cvEvM|Prb+3#d*YL`6rM28uzB{4F~g@E7-*GXZtQG(%G3DaFgLse21 zu9S+R3aKV^t$}pOwi0zl##SeU7N!7WOBap|_>|QfMZ9;uh2no}XHVup0PJ8K=8RXR zlRXSojy;}>gVLC!^5Rrxx0GW^6)`Uejp<-l?%q@*`JT3{iU#syhM$79MKQ-3qvv%~>rA3Ia@UHtsjjQnac z5qr|TD8Q8S`qbOX44(f0QaRM>N;;exENiL(mufl}?OMv%QI+A%SDMF^f(qvmGXThh zH%KxuK&BXwDFaX|>1b*#(4wI`H<wN_p zGkccoXVAj{Li&$4Iu>>?8Z>5p;UGzu``JUKVyD9n;u(UFo?;iX6@$I~j9@s4o|v1E zt7li_@`-UdwTM;51f!2B7PTXtvW&^)bYF*zbahBK8k&ZtMudPJ602<#AHd=!t(88)7v#LNOP@nRQ)Dqj`-b?jYg@E6lud!-A9p$ivs5eair zjbaEGIRtYD)wJ5lD1%H#WlBd@TC$yvMX8lmz}^Dr>#e@6F|n$Iw(Vs9#(jO!sCqh4 ze)KHHLZ9yyq;v9etIoD|Xs7CyV8s%~hB7;!lbM5)nUjlv?pvI^z?_-Jx`L5ci}Vi@D%Vjhp<-gH zi^vpdtCEhXCSyc4v`TjSu~L~kQ)!rM4vf;lwBkQTWO6f0{^D2#Cwby}dphOfsa3g1 zRPw6`E#HNz{K3koTrLX9DgHn2Tf&U3O5`g$4idZUGV=I7X?}E%R6WDYeG^^i4h{-X zm%9!)Wb%MhmUo)uJYaM2xx@16whVc5Z;sqQkS8CeI^`qwHaaHzQ*Kzk&+*ESfX&y8 zRlfyfjIJdE5YkGu%O`x!M`QuLO_zF~uJtZti`)F)UuC5E3M7#eS(yY?!Cqo2QNaPU z2qWCkcCuY|(ZK*P<|MadBp1jYx}Y4!VVY=(2Dp?|N-1G$<;5jZRZ=Fk zqVg_hnL+aZKGERPXFVAJFg3h9n4x`FV zZjm#`7z-7{G%JS?P{hv8kFly!-F8 zUdRClWrEe`r%NM(&t_M)w7BU|Trdnh(Eh!4z=W=aE~b^7pr0%LST}Y!b+|<`9C0;&psip0O9; zNHUmX^#Du_X zzM|{U<-C5rk3Vi)_!;kFv=SYS8yc|!SK{*%yB7T!6i^cEu>`=VNGaYa#XA{eM5e@p zjXja>kqnPD_AI)di~3jr$D;ce{MsBZqKN@y zoG)hcH_0R5Do?VvLzy+Xi8HQ|kzSU&1C7v8tLRc1ND*z4iSA|@Xl<0<<|YEC+NA|r zY8@xo`j!qULM-XUxYB{1#l#CRH`Yw&(gC=1N)D=QbBNIyU5kQCHq=wCtb%H>_-n*Z z*A(6uGsGCtMOg5vB02y~S$8mDMq#mZLdH~h$^9}q8cnb)Rb2}gt~!L1O`Jy6V@#cu z6W(O%PZq_tU$b6}LVQ_-08(vZ3bB(>fYD{70*unXjROajuheiBmFjM6D5%xi{1Adl zb(Lk0qAzX*nE;j@Aw+Phr}1N}?nV9Ycf|2+J&fBM5u*Lx3k1gy%GK2CJdz5>O!Om>Oi1Vp^(uT`- zqr-p+qpXjPc;y2+j*kvI<%6Vrd1rUF+~1ug_eh<69dgGln18RZkGsPE=`1Jb z^=ynm5iiy-LM~w+8)72hdm)+EG@)U;?P5uCNjhIIIn^bOK&5y9mT)P|xiZFsXnQKl zYowyAQYuTaIx53DrwT`k3X&$vV$z5|TLNIJa9P#>LJ|#PU_pEGx^cmT~?F;|;q-_7) zQ<8yRE}t~YLY{jy`Rw%Euo4|PFyrWq`MS-3npT4gjTG-|#{F5rL^~I)ILJVg$GEd6 zf|;i?ANu}bNyQiOz<+7()OI=aJJ_sG;vj-Omw6*i*nz{nlAJt@%X|oswNz790wrIU z__}+kq@yomT&%#7sOoffDwKjtHNS5abZxC_bYeAhE4BO`>df4lIe`758o1wR!I{IF zX_Q*qRGM+Ze3spdsNMoYi8@%t!?ZG+vWu>@Ai z#ADfjS~{Sb!s$gdF{uEOp^1UYok3TXs^9{#~{PT<*2DGEiUqOwG4$?>RbtYG=uD6K6G_)oPn7HPp|zeSoG+NHF#R$`ps%F#E3 z02UXP`?hekmXp#(Hvt;?X52&O$Yb4WMZB&-GLaZ!v{h?as*yR!| zC?#z)3S%c|Xbb{~D+35EBXlb<4HA0@FtEn}lv3==4Rt;g<$C;^YMG;}H<{rp#^_7q zi?uYqScAkg^CiM~M7tRED^n(zgAX1f`C!8M^_J6`pRtBk5OsBljz$Ur$^fUfa5mQN zI6g-io!|>rQ)YuX=0Ri`khU(rp{j4kJFH_ONOuvC_Bot<7edlG%PrM4hkZQVN#7DS zFDu3DPf+7ieSFNoQdovpqAc!9W#)LLOySBrv0TX>rU8Gk8foh#^sT#2%4$mufNAP$ zk>RC&K&4-Xmg=|)N=QYmg-O=a+#xFy6LMv3US3(6 zlrJwGmrtfgCtG{U%!M9UhNjn0Mf*hcrF;L=POnRXFc4eUd->S1s-aB*)YGNIX*j~JJcD?p*0 zweCLl0wl?heUiBz>_dmQ?Xj)0<~A*7)4zI79{;x|<@w(}CmDF>X?BbYAT7?r zJ=}(qxRtMOgSu`9aHu8+-xq+nVpEb8*G(t!-yWEm`r37|W>C>(nAc1g<4)bTlwp-q zK@Lq72e2w$7nNvzs(77Lv)nf-8=#?T7>OycGy)t=Rv2x7hyqG8w_0sh^gC3m4ZyTO zkRkZ3*2HVc#E21MLX}B79T;i=ODUu2at?O}^%+)LCH6T*I0qEvLjBI(%aVVCfu&u6 zUbv0S6)vc1!LO%!oB9NCvR4~__ZG$whzvD-GG1{?urb~;Mo>B$(@`3y7VZZbg#HCcCNOaxD-@~89hrTl;c!p?MJAC?pmr|4nrS3;HZ{^ zwn{maUoMAjWs+hqVdPLQE^j%hibdjbDD4xS0pd3wf;Wvx)-EOlm_+e?(j-gW!<1p) zUrO>~8SQg9c`2HwqBbmg8|7qL#2zF{YaUOkgyx7HdK7>OA&^v&WP$EqG)5M>aW0)o z9)E8w-MbhC^UsP(+St1=7E><2n-{o>#YqceGFu|U3nfO! zGQLC?Lf0~PtX`&98)TMRJJly+(=8ZS)=OJYgH+X5O0Wd6E7|W|V_h=2HX@@-j6@fS zOJ2a%X98fMt8HlHLR#A-wdIYB_c+BDk!s1oW0Gj?E33E_!!G>#^ilbYl+#-Uez{2} zs(X=dGF|dL^z(l~YZm;={t?5ItfT@f7mEyY;;kc-srWgvbzZhnb_u#We5S65BcSll#pCI=#z^FJaQUPIlePr&T@Maa5?b;qqQyha^ZQioO>oy zPX9hdE-;2$VWhLR?SR1^JIV8BjnT^_DV6GtSw}K}B~lbWR0y zMuB{2+$Bv?S=nqzh$>Q3vmoUMdkG&uV_&e?6 zpt$Rqy|U}s1G4pree(2gw#t+Lu~{Dbx2NT~-)@!^X!tgWFFLXfXTw_KqFbS3CMeLg zT%hZ?I5*^H18RVc?qL9!wg4RrF3<`tErB@5HF&Wn0$^(0`4C+80dmjC&R;(v2lzQs zf6w6-2l#YIR~p%_Rx*~Yo0tMXuwtz2QT-S@PZb*LYbFesL^)i=cpWHXOuLl|9G>F< z!$qGiUl;oZu;k!{M%6)ts5hlc6F;+73qOCN+IhPJtx%_heG=6M5H*>hRzv@8po`J& zrp829#0aedASnk#l;*6unrfqiA-@SBXAvwr-E%#X=qB`{uPA8)0F;iav|Jq*>DWlY zMuA2_#%X}ehDv?|SQ2b553QUs&b(+;{JOW<0GPxw{%3%Rv$_(MV3Qec&XgT+(Nd5x zkUOzs*CgBz+f_p{fwOvnyS(B8OIsGLdRkOs4P6$ z)Mw0$yR>HBm^k@a5r<{*;yeO%P*W?@F=Nc$o?_&`WN3;fblg;I=8y0KI}F$ug(fDM zk4@qQmCl^nlOGfZYGezBeFf1{=JDm?43&xr!I>SEb#7jvm~#LE0K$r}%>hl+Vk?#$ z3=FgEWs-qT;SjXZ{iX`phuCemrAl^UxxNcE_D-}4JJBlav6RVPEJ6-IA{lXCl4I;#O7Iga$%Kx~LQutOYF)0Dwv5lV6$ol2uj%wzL1$4G3k0dZ!dp?^7k z23Li}0qN*&kjCaZsi~_)$q!)EBEal!m$BJVnOP;#bY)N`7rUfyv{@SPAgidtr;Ced z31b+`nSmj>abjKWEG@{}B%R)Y_I}Iame-G%(9ZVG|u+^K{18k*>c@ZIRx_XgC0sdOpeBIJe+h%}^ zf=qo)t5J2h8ZPfD9LTt!4m5 zSzTQb7=ff_#!R_lV~>%+6e0<0mYwWA_V72_@%w$U9l+f3#BSOA*iL!&w_D};N4Lv! zkG?2d2_HNHz+`if(x5W^8WlXx%D7mou12eZ!;NZfY8{N3F|<^m(J@(~Yl(MIbX;g) zTClw-&)0~7gL3%k=Vj+_o|OHMJtv1q(@lAb$nK|~hEet;R=QWuMBAiP+I9+wDe?hiN8{#nQ7Dis! zz@(C3nexnjMq`JJC*zSV2j!qTF7xC(%<23f7t{lQ*FHu;2WVTh;`jM_DCA?sFu6)g zrJ$%-LbUtd;%ae6>m9p^*9*b-67ibR1P;;Wig{+-!g&Ew@yXGKyqx zW~uDStB@Vkw!CuL3gB$P8)_T2?0ayt-J1=-Q3K-7)}}EV>r0Oh85fN6V~nvAnQsbTO)7v2#IE9gCAun2y7g zDduAd>t(*I<>CdSrS}zFjPV%2qS+q$LW@9A)e16OF62}hg}$m)MwnFv)*>amn2SSB zi7>7xCJC{Lc;fm_PQtwrX&!-{M7Pp0$D)0)gmAG+>7A*?%7xw7IMyvAxKfiHuhlzL zCw;^9GRR}26V2HBx5)TZtBg&y;E3ErVcjy(CB1!Z;yrg)S+`>ob&~Tk)NQ9zs?w~=P^#2u*}LH z->D9aV;kR9l#$2bTLn+kEzrR!mI zHt>R3`hQQ@+EZyV^5j98!$0mE8kiH=8M4ZLVut5Y7l*=HT+|!T)-{tS)eg(DYYR$u zK&zN>Sz{(Ac(g9Hks30Lh981Vdtfb4i;mu!E0hrICU7CM<7vW1|*os6tf(WK-kk%bOB%5$xli*7NC@e*uU zv`X_BN!eJQQ#IJ~*DR`H6X8&c5kI#G;RxaZDDj0cOngtr=YZA{rWyG#&L5^fI!Dv z8>Me+8Owd$qi8k_7kz`;%;P$a)2^uic9|b#>(6z7`?~nr$B7z{!EMwF(73tKsUf3U zl4z+uBOk$^YBVf-z5iVMRnqgG>8jLf;ZG61z2$uF!plVO2v*gAs=Rtm5#)mTP)cC$C31iBxe*$5?1WH z0Gk&v7JM-)YScE~zZdoO-i)vu=J8ytJ@OG&`s{@gbcLl5D~?dUR|+josE7FyW)GuE ze$~Q+aG(tU4$9op(uKQWaETR*osLC8BNqyB4wc7!6AsB1IvXt=6X?fzQPn%qsHmDg zn{F|k=gbkFPpMd3Wb%K|u10UQ^!+*fuN1fxwCt3VucP#2BTZIf*xroQbDcDXt2!2D+yT3HeLdwROtuGzO*f z)3UlcYk1GiFOJFL(iG0vm{`tE$SS(2$-#buvc5FXBg?SMX7TPik-;cyk6GT{Ym+bb zyX3orEamrF$Xk(UwfrlL0V|9C^{vD@!zyckV!yOJ z1>=Y6-fxj91i@`~90zz#6kzYt0#NnUw#!g`tE>%9$jb|Bvf9$m#Rkh8#=i9|>+7FR zkp?ct-J1@}4ABn95bGY}gu8}@Vtn6T>46~AisYe{ET&d=K|P2Ehv;DXwlGS94AY5! zSqH$?8l^)d`n$EM*Qk!BJ_BIds)-Pcgx<#>1ZC?&a!_C%YODT|FubWJWl%LcCHzC=jrn{fOB^thn)z|$s!}I5;t$P zW8qq$B!Vh-7&W?&@v!$Jw?=nAjebUYxIx#_S%hvVp_&H?nUmi`|zP`)qpAusxs`}0TC^=gxB&jdNDvo=ac}7OS8Gv z1sJ;$8_O}vu4H~Mx)a=cEu6Z{+j(1y$5ery4alU?-5la~-^cI1hY{UwPGUKXm8^Iy zC2``;&dm}t%RGyd9B&qPo)8Yj71**@!Ow4p3Di>|rHo&~9fcBV2}p#~a-g1$qMY4I zH56hj^pzRr#E8%usuxG7NnB)hI9%*toaJI?M5d!M3#NsZ%#fHe!;%AdWM;(VP|#_46J$~BM{}a)ky-(|2UWlmfyt-+O7K-PG+jyH;TQHmLrRNb*yjvR$`&CEeSfD5-sqt zIMzU~7WOX9(ltblH?yd3li~Glk}6?*ooti-695SS(?TcHHBpCce>)?vUYS`Mq2m~r zg++h>5$wYJl&r7M%goG(3=VW7sB8jIs-?BL1*$Qf3wx9bPTSR76w5iC7x`dAMVqCR z|8)pk{p#WdS(u)e<@q^TTbtu+&B_`KvEwJ_<;1BaK!^KlJT^Nf%aa3gl}Ls&eBC8R zo!2n2yvKgztE7PZxX&+t+*=?&9e_r>D_6b)Wd51v6tQ~cUwCy%p-=v9cgYXf<3mT} z?Rxo)(d!4!3b_nJ>?FFEv7ID%?#J*GV@b8qcVHY@9xIcTIU)g;kIE{M5EqVNvU%x} zEcFfF$k5JhG6=v7U^z8_ z44@y;@+e+?(@>+w>0nye#dM`Y^=8M|#*)7iF>!qjgqP+4NEkiRR@WEPOeQE60fvR?p<0!yv3$*4L2q#pfAEhDme7vGC+ro8}=0bFY6EL2b! zfkv$WlgYJa+iy3?@Bfb{WYhokg6#Z{9W2}T%Krb_A%_5&15c6*#prAwwBh~eQ*w7P zmSQBVc1M~qqr1W|Biu00M=b@MBE+7>?4fi&Q6TPqiH~7886(Rskk8~qDt&z^l<}# z_*on2*0h=#t7$2SsDWlZ8X_&dZvYGW8m$BX>H8khuEMZkQTi~zp`D2WiN_E@vL~Sw zfD#|4AL}P4#k+%fAb~hW5s0IJQm~KNAe~Eqx5GTi!n?K`6(C2!ub{-|sPbOFR$^gq zbR~2O1#}YyEXy?)#K!{N519DW4H=rSQj4{-Q4rJ$9^e9`Uq{pD7{55--0Ou=FLEl# zbMbyvh+6<1D;F&j7s^z+l7oO*5}>u8ud9{L#WS1tXVdnYxqxQxVXVVQFPj!Kg$rC7 zo<26_sV)|D-iSp46S4-$djmz*1VJ1Y70xhTFfHrtx{CymT)cR zeKjE|sAb_^Qz7{^jK3;t#llS4#*4;*ZHFsTFK%LQJswzN`4wU#EXqQzhY4noDcvu5 zfJjbSP_k0Pl9CdXgGYk0m)ZrO?0|NKlyq@mJJXWycKEA3=# z2rNCQ`3rdBdU-CV2Es3E#OTn+#jz0E8znMW zvU4RD;(`MaUKHhbNhy1ljs}@p7?SZ>m|RPP#2t*{4c04*XNaplH6Symx@GEgr_7(} zmen)8>{15h;!ET5_WhG``}Qo^^vC4wJ6Qd^z9v^r4#4hek{QNkt+gzkQQ$YVG(sHh6{zDrOh>(_;R{izceV}6vE@@J^e+G;>vHkzDLHp~T~2Gx%kfz` zu|91?BVSsdl8fwX?#|7~%{IijFw3rH707)Ak}8h;;jl;kyx$@Jr2Y!k_zy2;%3si# z{2kNFKd?amf#=TGjJdwYy8m0)X5Z0${3BQ{f5pG-?}!*b#;N!L2ACJ2(Vq)qV}l{) zNVH0h4UEZTd$X*J4#+&?xtWeGxwdjrdLW_1l5GSB9zfTE-3YtM!bhKHhqI6UjagRm zvSpc*@eJAYBRmJj*>6t5%$j{>w=CkXweWP3%;DEJ4xPVg^AVC2OJ%)jSjI7H?P~&9 zYPtZIUR*;qiw#h9#$L!pkA!u+gyK+5I-wEeLc<(dEcDS46ZWyfz= z@c)L6;?X2I@Vg}0|HNL#RxJOCBsmCUHj`_i?hb7@FsqY95QV&gN{GXb?gT@03K2Sl zFc)Y;36Jkt6$m>i$HV#I79jX!gn0VnF4G7h-W6^G<4!w-- zTxwx&YSl5K)9=yDzNdx1MGK?sM~wZ*Mj7gOF8+y8lLt!{Efx9b7%E}YVt|qASO6DY z>}!{z-HOrC@JBGlW&p~6uY`A4!dompGDH8evAow?^$pYP1H+$+TV2kp7|CEys5zqE zr#n%~-Y-oO)hN-;h0w(k+J=6@f!&Ce6M7c^zzp^V*#J)p(W?9TeGVk;ktCG48JvpE z{81dtGD9#vitr374s-IUW5(MQfKFT}J^j#9M@tOX+n#ZSMj<=?Pyo*L6i5m)}ur4V6x`?>zSi0B33S%a3VJ2@OZPE&Z%vstj?xIF< zbGr3n-QhtfsbjKyQxuR1ikUHj0!((APqNZNlA0Qj!>K_@Lb<&^qfqwI-5g{*b|kk* zGEF67h74fGo63c)hu0Z54=m)u5v598L5wf4?YEMogsEdV-Tm14UJd}w&dDsF z7iKQZGAj#ZH%uO*ASoz;p%8~>A0t3N@wHt``{dNAQ8|Ae z>hG0Vxp;+(ICbfzNp3Nb#NAr!?wiZ|D3!pGi`#KNRy~m*O8$m!S({&%d#}Gq zM8hj`>+(gpap8>IICo55zjB7Gmy`15we#}cy&H0y+?SVD>1sMVM>5ZD_mG-$hjZhPL2owGX?E;{<*!f!gy@; z*+a5`8SE4+%i$!H{-&@TYZ{SLL(4MKHq6eY3vak?l02d8mv^(&@0PaGcEF_tcWG$- z8bN_*xyjGL4)e=8VwKg8tj3;iSjN=CB2#6*b}%&_##88C>M%RiQr4F0Un*2&$@Ia; zX|4Ncw|Fs8@p`O@7=d#-vlPAM4&En8)MwDq$ zS7S6=x(7^vOMv?Uo|F1^AzgNii?;4)N}>6dL1)&5eyKIjP|GWcrI2nrNZ0Kre@V$j z2N}Vs4#p5!!Xz_e8>5E8hB2^uD(bb7>$8(it9bSnxlS_&>T z+3Z}h$;VMA0lJr3Of(x6lmOmlzTP8+fJb5(Z!F~b;dT6_`>N@w#kR>avy!E+2|6bxI^WM@d7KRmHWMJp=7f?7qa}@TOBQJD zVixN!%$I^7v8++Ec%v|=Y6vfCB^|GqdGHuZ)$wA&pa72%oN;FhVFg8HZna3}*J0Qk zFM@^|!jhduCvmr(1JDk;bETut&hi&M1-2vg%{;+di6(CGNDLGkdU;Md z4>~evt}d+99RQ3SV@oIAUpi*;Vtww$s8IR-)+1T$Us71!V=K-cOUGpj7<$ont2Y=g z6kW#azC;CR$_~q;Yc#q-fGG#y$kRw^PKrunRu)?Sh6fwsrXt>5Cpht0)! zs!&FInq_sa51V^3dG4K(SFcZTabMteLf*JNFK@rPC~w?Yl=to&lLxog<>R-`$%EI9 z%BLS(l>2WTmv0$78jRgdJIpx4o>lfWzw4;AVm-%CH5_^;~Dl|dV%}_p!p%$C4W9d2a|>ZAHzzc zbD^{OF@@1svO~T+Y{Qt+i4fBzKVpwBq+|+gEZS`2{`UlaeT&!E2aHkw1o(Z%nCgT2 zPI%a0SQ@&*g{*~3I&Ox=VJk z?B9oj#{rnMM;PB{aLv+djXuvE>OjH4N@?|lbl6(Dm(dDwkq*-hXg3q3+b+V4v)GJ# zIeHQWmEjVJLl*Xx${ssH9KF(%^HA}dpVcUO))ROjYP3jP;}_q7D}hN>{VE|S zV~<+F0j!b(SPch6-M2K*g*38@X@Ydoi~*>2Em{eHQNZ|R=~$})4NE=1SjQN;0bq$2 zfJ5oXOsf`Fm@e@3HePfvlmbgNpPv921t$IcMjiuT_OR3Vxk5S~(@`0~p{z2!HM$s1 zr-@~{F4TWn#{PrH;!eku?rN0T#q3>|@IjX6T7@jx!;Gqoy^FD&r#n%73jZ{v!y4le zZdKjtL%iq1ill%Aq5_KxdlJW?9I+(IX97|+O3W=0x-BFe_Dxzz z93oU3C(&?lf}HkY=zRUOmff&o2&~ea^%gpqnsye9odr_bLEuzZRH7Id z2HPvhZ-Fh=Nas?I?F)2F6BJBKRjb%502sQM0#0dxB5rZFbpsF%8x-ceAUhbwWL!K9 zfB|SS(|wXgS92f}FQ>ea9JVUJL?i=RvWd^L5GrNOFM*j>1~aXc5fLDR^|_ysncAZV ztT4*59PBM1A>c`-f6si33T<5YHMUke1-+1Ku8N)0ofVb7+U;jUNjBj*W!0`i!Cv#t zx!4CdCHYlZ&j~7@F_^N$3{n7{N;aRXluji~s4toB!j$5yrkSzBIRFeNIe^8xhi+*X z-+vc?f_b7nDHm{IzXia!P^)V>u&1#DIu<@xPn~AKFAw&b372O(7dSWjF=w7lTqJb* z@|}2)`H7J3llylr$eXVo2V9QJy}Ju?`}&aFe`A)n7vx$qIZ({-JKet){SQ_eO|$UL3QXv3hiRdz{F z{UD3|9s^(+0hcC#IRP;Bfg-vW9rZG%24GaEs2~#;TUuG*v)tDX1_5Rb%YJ>IRu%87 zqSGnkeu*9Ojg=+4)k)@zT@Ese-}Jl9vJEiN+QR-tS!KJQq=Nxm_QQZnLR_u@lLjj_ z(Z#5Lo>!xnjbJ?XF;oa}31T&4fDGMsA#~<2^#3S_HjTz80bq*R&BV~oD6L-aE8)P* zBu53GsVw=^Nc7Exd1uCOS34Nh>S_04h{U<3`k3nIwKd2dNVRHZybh~)9ja14zQm93 zRT2w)r6I=``3f-cUCVz5m^gTBfCV-<31CUwCIBb_FxB{<#eqgU8U>$?k=q7&;OEZ= zU?Tr70Ha+=ybIYFk74_uEm?q>dZP4gKOKfvKyUfQ6)+N|Z~Ha1P>bbx0C3TG+(N7+ z3ZYd75b9}$h?fhOj<%HPWoG%Sr(InF>qy1$q2hw3dlU;NR}1QI6DQ_0LV|KhW(%Xv zj#gof-wYpqFd#K#qPL>T)@<~KUPf0W49?*7v~(7|!fI3o76VvxK(|~fkk&~&f~H`0 z5HwXc20wkuNlKx5QjvN{b&(CyH-{xVAk#NXgf1Y{KZ6R|s2o^EX6Yjfq<0$XBY{(G zV;*V1*Q#+iD3$$wsUW$qd=LR;Uyb-W8zi4FDN{qEGm>MWaVv$ z@mj?Lz~m#Av|FR%$P0@t8<5%PVzP0djRTBN4)Q`jOvcL*i~^IPBquY1$#ld3nNluf zWn#0_#h|OnhmqzqMZ^o$G@t^`JRf5)7k~i39JT;3xiDe?8M;F)WsYg-f?waZQ5H_A z7UH072X%HF?;O2c*!^7O1Du|G+W7!Z`HZ*B08k#_lEdd^b1=x+pN6?10#v1kL$c8S zbpVBVC@GtSK)l)j7AKY?78b=ORN;2KsjNu~e6V}~Kl@?w+PSsxz0Ck&E{FCm4&Z$z?`U$4(GEJvAp?y(5e{2T7zHL>OC-cBxu&v8hkaE0Py5YTOTNZ!f#B z7x#JPKzgz4-0zp9BT-2+Rmy&VWhW$yedMI<+UbIA=$8ZgJaQ*l9IysbA15pFLlc`a*Cl$$|LlH?k7-BT(1MEX|cLZ!5!p0`aW^@sE zNwNGZ>UXKZ9T_JGRGL`v6OA0>aUY46{BOTJV3%)Lq<@C8Jv0f3!w6M4k~}amH8)YiM)kZ*(=-fMutPrPpz|@b==*y! z<%1(;9GbJ`0d5a(a1p)5-2D~UQ^(VA(nYs1jrZU@r~YMZm5wn^JM-*ex%g~4!ps~w zi}q%HTfUs6!#ifLmeXbZvfeN(^DU#&Tiq?a^#f$$z$jxx)*NG8Mt9!=3r|O63NW>F zT?#NYbg2md`R@P|2OfKTd`49PDi!Q#%Ir=$7^eiSjEL>TS3rEp<@Y$e?U1DK98?Y4 zZgwF1ATk`n0_qUsvx8{clF-GeEa3=a`3y)ZCJxlP=vP9Dl4CSZ!pJHDT-5bj<0OKN znG5NX!i;Z=a?qL)=2vQgT1=H-BpGFdra+@0qp|IWV3MT~H=ho;y|%nQ>Gt47Pf-IE`kO^{~MVN-?Fn6}{ER5<3*#qa^C# z*h>S*Q06O$=+a(08ZBdK&)5FB%V8V_p+Jo_bsT1l+ctJJx_{A10FHhgV?>sy2n%#$ zWX5HI%lzI03ce4xHSTz$oc5T$gqX{^|l$tTmVh; zI2?HcSX@SR&H4E}pW#Q^%5bEgfk&H$K;z#KoVF&EsQCm?7$I-u@hx|Jmq^01;SDcEZ?P&}H@3vDZvgwLYE) zJ0}nJ8K9El5i27fCnFvQj=whc2>Ny&I|ZY#7tzW&;$Wv{m&_x83@M#fj67{-r{O|8 zJ~}2B&#@>KQ*^Tj%3$LQd$*+igJLZhJ9DHq}y5`Rg}s;a_A3altHxM|BzQI$?U#%(q-<< z06f^go3LOK!FovA8GAvc#&k`-LE-;d zin<=V<#RfbFSD_dA=&hgJO}=WLFNy6e)$9SPYxvl!Q@}KKm3vB+t(Q(xx2$GH?TUo zhqC_xWRiCwkZ7*VXZ%k-K4d0n%tQ`Mmb^nZ`Zjyb*DxTx&Hm*TbRR2Zs`NbnB#Znl zGJ}=W5(@s~&mE96jK?nFBJdI}<5zGIxUknJ)0?d_eb_Ij!kw~K-7ibcqcYVoCId}_ z4?(7l*M_lwfeh1%ZBl(8VvNVCT`s8xK&qi8SJ`kTP|Fr}90rSwJ&XY^Fea;Qd<<2Y zkM4xdwv@+;0hTE2I;CTKN#Jy3+9a3XCueV#q-=%UgGgHUGU+N!;1GOdN3zl79HJCp zlx3=8d1a;Qf?oHAK6W8~b~>sd(`X4Jasqu>7!k8ZlWX#(ksM2`fKdoE)fQhJj7uRL z*g3!-d3qBa%ofSOswNA7$pdT@U{v_7vJgG&>q4 zvkfMgQGm=wwO~+b=vP?M|1SmWuK`7V9VW3_wU|>T7Wm2vOR&n6S*G_BAfsb6W1P0p zx#&o&mVJws-cPW}^lLm4W<2#vkkR|i=x;HVv27ocBz@WC4+Oz+!g}PPUbT>*( z3UzVoU@@$nh_SF`&Tr)puQT+F1N$XM7q$G5cF@rQ@;Xg?O+upl1o#AsI1yBU?gT>B zv>;CECiH30Cj(;v#B5ljPZR(wE?HOz$SgaN*%_D2b2~TZl%=D543_Jf+o4H>Ep!?U z8&x-r3E~9HzX=i!N3t1>VI48&LcQ&hp?U1s0SK+mDL0lO9_hkew`b93xaxK+&=D;n zSi?zI-yU4|8#S=xlR*p+M;6H+r_{2&Zz+N~VkyGCDyf;Qmcl-)Us|f@Ug{(p8fzB( z{;bM&$pKhQ0E?}-MVw@H~g|KEpZCLb!Z2gaGxC|4Gv!L%@pF@A440`uWQ zfCX?p6gDc0Q+);$-JBzZlEuX-m28n5x;pi=G83~KiI5OEJ}=W#3s8thWq5d0TJZB~ zL=j(6(IDk?jKM&aWB}4xe6Q5BsAOhVNHQ1lJ$nMOXJ1J6AK>xKN-=Z6PssvYk|T0B zJtnC+C1N8oI0G@OoxiWsT`4YXd8 zZ$u|U_u7mVOfw9^u8KD4!XdlAtW$b0G3~-jC1^w@e`g68^;ez;KklEYI_6jTU!DUDP9VZO_H>q)nvEQiDTo@~{)-3$BYpKp>G-hKoMpf8w47WL?1h6Tx;SK0;i-(vB z7v-Q6&Z8sFp_|Uwas>Kss^QX+y@y*IE7Tq)0WgNRT4Oty$XJj-sDp(;v1e4Kr8^nz zUVMy@Lzu=!a8gJBOc{GB{W&WblT~29qFR{}fVm8Mw|;Kgb1x$3-fCF&C-SH?DOhd0 zG?-BxOLRJ17r(!;*l#WR=UeuyR1JD|=(r?a>M>!jD&KqEp0GKAsVE=nH0y6bP zCTrE^Njf&M zp_j;K4ryZUn28|Ciq*9r4N0ujNp?Bfj0zTWwR93KT*y0|fJab9Ckte3sz4^V;7`vL zkP_%c^_iD`baU~GVj zf{crksuK$mqtiKzDIcALgET@rK;qiZzJqcwvau)Gp&tV%2V8s|H|529j8LiFfC-s6 zrkyb0cCbU*$GU`{Frq=+|2uIIVgN=L;1hVOZ3FO=}~A}J(-Iuve}XsjLeKiNEm zSiV4)jgca$V#$^|l;#bsXkc2ffk9LWoi|ofEhTlhA>#yG$KzFyIcgbW)e{(3&Hucv ziraG3`cQHkxL*&+qpl3A7>pj<*vl2t?Wkv52sM2Kk1;Q?#|5bA9UKBesriJ!+0c*V z%Td7Lu9wJT^dr(UD#C6LZnU6KG&-2SmzBt0aE_2l#%Kr>|5gwqCb>lZ%%S8jn)Skg zWM_AkiNi%st*6j`j1oCKm_*tkOa4(7)6-lOSJ9iD;&U%Tp}xG^ ziBQxl$F{rVVs?eR5*v_fEz@#y>ZBYWTS8bmA$=V~G60pkuc2SMIf!)t$gL$c2Efz> z5H15S+QGyD2Jo-|GG;RX!y=#2R}CWD1h{CdvQ{}emoh61IP_65b}u1BxIV0H)ZN0B zZZSr%+Nqm&XGrdjRKp4?6U|EoBmES_mD;^%9fY*7A6-u-!fXrE7`@K<*b8dM;?>L| zz*b!_{Om7}|U(yOs*ImjPf(*^y`lOEH=f1(*PT$4r6@9|8=!pFBL# z%=n`j!DH;Q+}Kh1cC%(+>JtIn6=X`F@#~08O(tuZ_S6F~4OrMcp!0xonjEn2?-80}zmWTpyz?Ot@xqTtfBF&2xD$JqC9t0T2$ z2p?22q$3#xJVvH4@S8Nt(1gjj9b^$dG-V@y!@<`8 znC9_OTBQ2`4BD1F(ySmuZbuzJQi~0H4P8ntolYGe+X9Fv2x&*6Aksru(#L(x_~=;) zkXjg$zSTnGwwt%R=u-4?EghSU9gi5hoH3YX!%Kcl4?{A=$Iq_EWQuX!=vt+;&!CW= zZIGg#N-<&EZs$T^fvJ;M)hT%_GIL?em^s0kImudznj{Zlo-K%F3}Y@QHZd+$_Gd@L ziK0J09cEb;7uzE&^|=71BD~BrS4bMxFlp>uGFdvOGhfffrau?J$zdd7X8Er>9c83h zh^e)vGfKiXM8QQXiwjpKgOOeZ|%oV}>$( z-1xb7lmIqm>}$&T{ctwOXyE(tci30QiLw@Zbbi0>e9Z%Z&EBY_A}-v`lGtu3mEvft zlvi{~aVeuE_E|LzJrct(F&HMg0NVDRy>8i0_j4$fy$OG_gQ+p2lIVo?a*;dCej}C2 z#4R`z->o!E7z<&5d2`5%hk@7G*e63BgIw(TWlEV|2o1Z~b#ynZmYP(Ufeps@<$$|}T`c#t*mIn|7^>KkB@k?~VWfLv`23V$_o?4xVHWNY8u&m+*W0v*a}nj#p8nUtm;nntA-f zeyGVfbqun5nWht%!x(oStNtsDOE2#OVD=Zt)$~%iz(L{`yO-% zd;?tYEF;pn9FewGJldHt8KTD`@^iG~QM;-XGP%+aTV^0k&3p#SemWYBaHRXdpK9IRRZ2aR!V&fhOhwtWaMoJ;zqN#-1wG6Idc({&b`_V$_;I^GO+;%{vbCo<0 z2m%A^5$RuxvgauWL;#bu5{wH=0mEWc-{h?0vOBe0V%WEjVm~r@vX7k%dzL!Dg3*bk zszoeyUC@>L(ZuvaSMEa-)6FiXT`bI-^ATR!J)Gj9wz`!Krn?wG#>P0o#^}TZuw*ck zPscJQ$Hs-1U5hau!-^!83seRt(_E}SOhhH;F%B`agRufIR#e~?#w#|;3U$@Oi8bf2 z0t}$Ss7wJy%fw#8nQccoZ{>TM(VZ~rVxAx0e~{9d0{MXbfQP+=gT=HnLvO1YIn*=P zhP05ua$G?orCBl#)=TRCI!Qa+B$+AglAY0m?r2bKwh@?D1Co`~B}Y=58T++~+1e{k z&k!BQAR3l_2{?Kf5#n-SMv!X4QMYOmP0NV%v`@>0Gq>c}>P0!eeqK%2?f2$qZqP<4;rfg?LC@2?UBpE{3ytUb*6m$s3HzJ|<%LYj!+;^s~4R0W1KR zR5L;=V=se6(Lc$w|EZA9B~mQ^KnwFn#$?|>82JRj?rlbx>(6CM&u?s76R~h?VgAnnOr(W)L&dQy!1v%e8EQ{R;UI$0y=){uD56;QL z@QjSK4*)PN#^0t1)>}iQRB8iZgpyvyT`&bLEbh&K3A>FF#$%<7$CQF>0L(_`qVJCv zfMZk~U`nw~isli(m#qN9PLLRJJyhk=y=OB5Ol5bR%rajACY_%@dD8*e536j?qdN>` zznQoStL~AR+^85>S(Jut5#q}N4%PqP0E3MTon8fiqotrz%tcvU0hCFW{sJR1I++Z{ zWtoIOW^JUUN{OZn zfB`%WfWZZz8GLxeNr;p(wes1OBuowSH8~K*mU=rC(AueL+71QIN4SnBAH9ML76kU^ zkzx`OiwLkHDX^p#SJQ45-#E<9kasaTTP4#ASenn2VC)Bw%oQ=_B0pmajmaEir5UdQ z45M@ugY)E^Pm}UCZN+GixY|iF6eiiBY*hD@!x&@r(|HWAGZ}>8HN=Q(fU%a=AY-nF z#bQ3bH}TQM0CLJ0qeIbZTgJT4$Xf@jR-H1uMyIq!7eePUN>?%pNnm6Zg1~x_k(qAX z0w#$XUN4c+V;KLfmdeEODn7T84u;>8PHc?esG0S8G&6OO4M;0ot&G17z_d@X#IIo& zQd@)IvK2*tmjNzufZ-O^vKiJ)9=jL|{$%-q8bf&LW#r{`KwF04qq`Vg_M6dGm>8Rx zFuF8jkeSUmO>$ch%Z5Rery32M0dg{&(4HyAE($QY$&APV znVb|0RA?&}HBdLLK5?=z*Ro_;jgguaYN{DZt`ZIM@k8_2Fk_4iNJ(M8lt+go=xsx_ z-YtSr|9gBwDhINUI^e4`QwPm}*KXH-$uqC_g@F`hgrEq&*t zf9k6AjbE1Tp_7b1&oBl(DWg-TWEic)jav`o`pq}x{r5hTx9`0xH?Q83>o2`57fzj# ziT)w1?VF?>|F3#%c>Kf{SheHJg|dy?v;`WmlbuvBgfARBlM%Ei(})U{5U{c^i}%+A zfQ8ud+>)F*uQrzda>m>7~FENUhP+KrkX?2zHMI!@@d>=~-r%hTo1X;iXb zh`D@HNW6j#&oS*b9dwT__GKRaPXU;J!4w-2zT}y38-tut$Eb4v+VTqjpK)sPiH7XytMcVz-rg9+sm6 zv$EblD@#K&GRA?SmyDz~by!BkT31*s)xMCF+T5_PP{mUUE?T8#0EUXOk1@aork0ML zbnl^~snT2%osJbI7X_U?#&SPQ7o+(|ZftJy5gl9T5_3s!%|d&X#n@lnD>At@reP(u z=PBsRzu7EXf4x}_Vt$*;e#XrEY=`1*6E1#tbplsSn9}zDJHV9CwUpwOr#3Z-(h-@C z%M@h%`0bhTbxeB!yM8SC)1P??7x!n#gLw{T`%PknG-20(MRYKR?1NF6j>(GA`;`M| z34o~~y11UGVyy;^HP+e~f2jj<9ANMh16T}j*%*~ITN$SrMF+%~td-AeqgqY-0SSN# zOa2A|#I)37EI$4MunczDhUSGvLp3)o{H_UFv;i;}BxmGUT17YbN3=%o(#(N7hw;_kLj5?qQBRXVX(ll(9wqcue zjOLSf!PttW`8a?w37|{>6w~u=nP4G5MokzOcSciWn=9k1i# zyL9QUEUjL^X<$BHg9|L$H%i~`+bCs!X>~9fGl~&g7fb){6+0s^x}G&G%Gd2Od6Y36 zAT!CXWr7iy=BiIF7a3!_*(Ks^=|&VNX4lG%nkI#CYOPGBk5$O*i7EqRMtFPtR2};o zy~UL96qz6=>*VCAW;uJYUoPKVk~yN1D>_l@vxCXUe%#9Z-Bj6YRGxxMIrriH=P>Wj zWA1N8aOw2b8KTJo7RqkAnF4ZObRT2SDP#8#12oD37*Z^ux@LP}9Th=+jy4cXR>vL& z!6myGGt9Cq6w{gLDHLcjvRH}(78zWia=1`sv1d_$QE)M1`>xjhY7-yw`iL5i0T^LO z7eOfnxEd-uNrUXdQoUcA>PLw4U6#I{C5#)-$=LV_I@Al?9wTdIRffBlWNP4;%#5HX z0Voz{F38IKWm#Q*NlqNQA*avWmNRExm20oulb5c(A#dFKP+q(HuDtp72XgE62Xgn_ z&*ZfSpUT@GeJQWpeIPI0dQGn1z9Sc2ei>Tv%W~qxF)UTqkwy%e%T5N21H@lR0yh7chlgs|z7zmdJg@X&-zj7@Uk@0RhAUg_^8X_Wky9zw#} z@RMt5FP7F$e91a0rJ=b(nwl}i#LQA7tu=MDs{VjhC5%(Pg~G&d*QCrKK4;J~1Lgd~Q8U`D#?^YU|_0x+NzQ z@&nzAIYswhj4A0Xy#R`botfTOin)uf(|6b`MJ(p)Fs$sv#BySfO)jFFc|bSw9e!wk zQ$b}l)y(oAcV{Urlz$chFeOFu1GMf>^E`5!&z=5#lC;sil+&?ze~azU<0+E)7_Qkk zC5Hf*W&mb>FVtef$WCm|l|{xy7gH^AJ;=zb#3vW<;+w^Au@^_*#$8*b9iOZ@XtYPs zvK=G!@;tk`GsHGugcbQJW8pUel1sg#veMHdi~WF0-+(N44#|24MxSkC*wYNt4fe_a z$*vt78tQOSt|%y!N}iV$PLBaF3K#}(PzoX?xhi5*N-(3RjSG4)_l;sqRe~V52+dB6 z&r?ewbrx6G2Nmkt$VW1R*T3iv24`>8z;NN!Dq&=#l>nJ?jg+8*L{M1wY$s9k83M;1 z#lihCmi>GQdL?r;Gdt+Rt;L^9k@_&uaXU!qwM;&w>E;KT3nW2N3WCS*`gz|ft4r{4| zoDRB@#aaNSTITtk7a4ag9j%d-^$MdF*|DsgsF2lDHL`ZPR?fWCDM!yW$(d{2a^Y&9 zT)EmW7cNj&pv+!hk=f%DQr&~zrJ+`AoXD&!FHM!*2EZt|BmgEa)*I;FqdHhXaJjZ_AnXHfYZ2Gr6uJ_2J`1^v<)`1S0ap93jG1{?9uVCC@wE5 zl}=vhQ=>C7JGCf_bL-H5Uo-05nXB^V-S_4G{g33s55JV#ufHWPUBLq7{{OvD)75UdcDcYxneWpTy`bwQ_9hh zRFcP1QXVBzg>W!ZN6TSjRZuaUi8XGa82`9Z#!iLMWdk9^vjxT2!r(FHE5RY6Oo~eD zAgna+O_NQ)6;|ZdQ(skIMjioO&F#D?@w@ z54J+E;j$Tn<)p#9V>e(u1Y?gergJ}ZacJKbZnLP&eObnB?oKG>+aTCHk39)BxX&!d z4_M?jW6&Q_zl#z9Dpg#mJDDPu{$VO2KNSS!3q+Qepy&2u?AY`KL>}CcO#n^$?->g{ zo-CQaXPJ$mW#sn~{_*mVyfarOS33%1(Vr^g z8TgZ-D4)j?XptS?GK7#RY;D#cr`+wthGuY5RvAZ*V&bVI$%*z}S?imYlf5&t(mEou zfX!HY4{S0z7)FRy!LXEK4^x6YOqp||g8?8EIEwM0ixJVRK%(HHmAIfMz(sW^ML8yk zj$nPt4< z=9oWIpW~io34m$U4yLY|@lh8`>;abABLK$~W1$fuWP4e9W0^8C6_Wl@j|@%1!KZr| z0x-r|qz}_=^ddOyMtImYM=j(44$StZS^7W+Zebzc%p$&>MZE4*hUi>$95w;CjIzX^ zVlh6&USo`<`UvBx;Z-QVYiLgZnpOoED98zrX`NMFipJQ|JsAMQE`%Ch3T~9&ShNqZ zd(rCW>*)f%ccXN9uX>fCbtujN$^^Gle6ML}#>UUE3iE5FNQPEQWN5X5Jxn!KE5nF1 zCyv!J=Bks`(~azq>TtZRlk?{q<;sN?s!eXb)F*duj>?V8{c`ilkX*k!#Ob_G7FJtj zVzEs|7BKM}X_H6`>@XNccH)p##cyUoZDK5@or{*WxEp}zVh01Tggc}#)-OIl!so-v zzo3zk6BK5|c}`a&bXi23F5H-X01{%dShY@Y2U^8-ri&65PJXlpZlFo_P%uK(Ki*QjWMh8>E5*qhfmeUhML$WwM zZFCJ+FJHn!wq6&O2DDydk%5-H|&0&3(Y(y>~yB4?p-! zKKk@4`Q-C&Xs<7@a@Wu%&h+*teMhb33{V|18#jK<6y0u*GF zO0H}_C1L2^><9pps@e?%f;l_Tl5NNJfW>+hH1dJXBukR0`W~Y}fdY-=st9`;@fFEG zaMu2_%`1QP(#5c^JH3?)!f&=nHF+`K-|dpDM|Vr|(}(2{W3Y_PDfnVx`ScvrRK9-q zj!ao%WO~8lkbfN=5&7br$X9D3->ryzI4<&fuiT%A%IP8~$c(AF$d0eaCZ-gCYR8mw z5_aP<`md$tP8noBG>nJacsJ&w8VFe&?_CY^9MO4arW#l4Cm^6F+$-^Xr6_b0kL(Tn=@T1X~YqK`xO zRd5+n>Msj-1%-CHn-;nh1sDaF_IVcU^C7-hP;A+j_B!lZ2C062 zP6ZZah$-NxR%O@#llb=>hxKI?3V&VJ53iS@YpIk$I+Yth7;QvTgBAHm zH?}ct;$)m+Mvr0QLYQYzlshD^h^`~rX#k6zTNk&Ef_ej7!qIk;4hLm$_$buu6C488 zq-}6r0%d*TjCL77qE%2jAmN&EiPcTuYA{Fk%!K5!6Uhp7OLnAJ_R|IJ$*+RV5A5&6r{yP03MQe@~w}CfBZBqFZ_0 zs1HAUTR!~g9r^r=k5S5hC?9HHAV0`QUw$tieEzMx|HZfR9*@8C z`PcHn*Wb%~U-CBf!PkG_R^R?!-umbZdHtPFE8yKjDkgYg5oapO(7di8aTDQ{v> zc~wrGJkQT@LDpAJ$%&)q7>}Km`N?%ga#M`RhNQNnouxe>K}Aumhh20TT(I4Cv^4;W z#pE-RK5Yn2od_QFaXSFy)eAcpU=J7I5S>IxX_XWaX|3s!rLjuf0m?B!En!qx43Lyd zHH3f)tmA6|C9S%WTB)al(U{{JMs$_Xjx}Jc5@wfnN}4mT*)a9|@9Q*pjH<=5r3MC> zR#mK4Vt}0=W|tcQqy+`OncYa>wd;+k1 zF)Z@wkjMw4^6^rsoMQ?y$k;0M3=F8>piKWYtkm7?Xz8Lm1LWz{5h;z2+gK|j%JxC_ zQ0>wT8?c!XW*0d$BdsKT@>*%vsN~`@sS1Up0+$BuU}9)lqI4rgnYbbY2pX1GL@e_hF%Lfc^iiIAF@?O;O-E-_r0F%}^GNjQXB`Dqg66+yjDhz)iFM+l4Stq1f9x-%k7N3x|#iV%enJy za_V%OtdSkEe5{pj52n~Wp;QwM*wb)gZ7-3MR_xokUx)UkaR_|`p;VP9$D>`H;zn#| zt!@Qi=qyU(0Am6~tc=AR0E;`?Aq5c@=B3^2W^tCqvSe^%U9P|Op}hL`7jo{E2eNSX zmQ;4lNO9|=RCX^)egB#?4k8pu-Nd7xR%^yGe)i)(6B5836O%RLv051l6KN1 z!%y#*bS|J<|KoW>8)*Sy6Pre_-AmL0xd?4Zgi%(Qi+h;PBSHrf zh3T5`11rR8J_yK!7?*|k*Z@j;f3^j7o(XmyRz$do>tf%UPIpLIpnogKWS}iM0&wix zyiZ=h0P~q&KQB-H`*TJIv*pok+&(WaKDvp&H56u~8!8$%{QEF{Rr`Hi?#BT|yO($e z^UKnoOG^_qwbYHE21jU(2e%W_mWzkm;m26;KeY+Fe(IS`V%fCW0GK$qY%xmR>Ld6z zDpff~%t#5h<&4TI*n3sMEGs{f6z^!T?yn|hyaq9*R>H(GA&`9NqP$@Tqf2|OpZ&^E z`m2I}V|Sz7iFPf9b_Q_K9Zx+(07Kxpp}A?Xsxb2x0Hc0d>a(Rau#m?^n`I#^t8suM z4l2-u={g2y5Fl>Uz$CO`b}0%z{d6k5x||1KI_L8N94Nrb2IFyE+$)GAYLFd^)&Kxw zh#9H)SW6f7fB?Xui~4RfD_v+-I@$ARb{H;el&#$TN*c-0jwr}o)EMB-NH$M1ME^#qFf9Gwv$Y^PN{j!vGEJzki zuk^^c>~#;x_MBEZXlarCDaEoEg}rt!2S`IagyQ~Cl1mPw2hmE#?tSk;7R-ngYg#w{k=P%qb$N`rw-j&JmlkA12=&)vFuzjA6qD#WClS&ySRs~wP zCG^c*B2l`ruYl zREi7BjnUY{0%*!8?Q+UX*zMp{TtT2*DI>CCx|mWz$I9qXbYxaRhhvP_bW{ewR3jeL zj;Dg1kdD}j$YgO^e3HRfER*GZ1{eBtb}1Qnk7c1l($dFL_v6KONSS{&V@!6C5!rzq zX|fl<*oPH<(&kKd1OU#nWFWDi&wiSS3jinl0w?|FNnm7LRm@`nF8qFUFLrbtInNXQ zjqc(A%WDsg+c9)Afe^MrbPOe2=&P~!uY`c0fny`FB6(@3RX#jDEI-^HlMm_a@11Fo z*N`8a#I<6og{}`FV>%ts{>PGJ?_());8_#Kkys4nG8q|IAYiOr>iJvM0m5!1n6Y6 z)M!!-C&P@*3c1kx8B=*#;+r5H!w-1e=Mo<*e z{Y3db@h&RvL1yfJ06G0R6o9nLi7*x`gsxoXKpg7D{hM)~#sD1I{G#lB>`DG_n~6+* z!JsKCMcJ;gD1eXVX$9~lQ}>k;gzse-ZpP~%;KD8j3mLtw!nUTGze_dbgBsXvaff7p zLX#$`20%ee2>=GYnNqu%c*QOEwd47@^FhRk19M{65|2#=Y&O1*>ShuwG~+&iq@9s= zMUUv{NhVUZ$)F(5ud|a_hIKRz&2*BScCy<$#$geS zqGw<<)<$)W)fsv2y=1nxlHXo8$ceSTNeXdQ_COhRRuhkm9>xuu%niu+t9qoQaYU-x zC!pvq$pAWl$%#4k3}=n8ke=L6on-%T<}w%jGtj_KLxnykOJ`n^TMs^wAO9ut*&qHa z@6#RV=xOEBO+=n&#Mv+-sYN4lxNuB%+1g}JZZ%HK*vR9Xm4ZWWDr1tgBQ9eflXA!{ zNAUYfCU<=|qRNA6wuw(wIWD)IP)aATZa;J8ioEs4eR=o6d-BnH@5|>Oek@;n^a-Yt zU&uF%!oKdChbT51Tc1pa{rZePk ziGHLh5RkL%6yE}1zItt1-iOrk#<>o;uuv~kT{xDPu=hd?s=~zmPjb_Ft1dmTmZkesGDFs{L#XAqLmczw}fI}Ms7}&9HUamCS`<+mHHx5f`MlY_Lz1r zx_>eD8jQvY0hJJ4gu03Z)m20tzUgFCS7I1WV#XOj5bk4Fqd!wF%rMopY-MS`89V-G z8Q(qg>+SN~e{KgjcFFVqwMCx!)n?iJ9||s;<+=ayya6!J{rmGqZTj_dviUzZ$)V>7 zCFJjA!!g`Nd9lG#kO^=b=KCp=EWUqX?4(nsF#;Ax_SW-Ed?1BH2&`exIib? zkLls_x*3fnz{LO*jPLGnmvb$Ca zo6xn8YUxJV?ZX-*P}h!=atjtCcvN+c$_UzwV=S*PpT8h4T{tVRT)85b&YY9eC(p#e z=F}xwUBAH3#D#YG3{195^4c5k$shjwSNW1f`IldOB0v22yIf_1bY^(_y~=zW&?aG>2kF6ZQ~Y_fPRjS$s!@Z3~=+2LK@`6 z9`@6DLCr025`XQ+i;RnHEW`yFyZXWcViz2UU%8m3qb5(m7wZt>#)D`!cF{R(e>Pcm zJeMLno=%o6k0;5C|G5VZ$8ICBap$l1%I;rdLI3z6IfTpcPSol9w-d<#keSq+vk&BF(axdOhOG*ix%L-Q4%x4);_*-QsmFCiu~a^2ZL2P&U3w|0b&UI5;M%P zWB~3EWAk*@SD%U#+OYP8-n245Q0kW`1~;`=l`Ikz*5F? zUq@symixL(QGkiky(qvK;G&Mk8`f2Nk@wR@6fic^WZMF|84s}z+PxGo63g5L=+d$6 zWbd@~zxK)V{{hJS+b+Okr)>JwZrU=kpsA!Ayas2PH`97PhM;!r;pD^`F( z(_jxix5-fSr$5i`3UDz)PqqRu_AOhm?B8y}8jFv^yDKb<@bL^W8b5X@cMHyx@VZZ_A8P$o9vTcSqVE{lW#w~OMbMeJ5e zV2zbBGOCan_A2v7E1?@#$?Az(K%_?2kJrmlI+OKdO|rbwM0Ws~th96SW=>3I`|KLR zxD`fXC($;nHbMqy0f*wJ@;ltrK*D9CxT;`=K~)ZrIbKkT`W&CCR;Zby6GY~oI3-svos*Y{(!F@@q?|o@ zg6`!Uk6(~ur(R-2b_HO(EORU8p-*4n0{^;v#(v{H##LW`^g#ag_dm;ltSnvxJWoL5K8GdFC7C*LO{UJ?km*aW%j`>U$?WxaWbyWAGJpFE znYr<~QFE_+F5{O!kfF2pW&HfRMopc2�L*@8WiF59;_`y3Shw_Eni(yh>jE4a`hm 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 literal 0 HcmV?d00001 diff --git a/Chapter13/modelview/main.cpp b/Chapter13/modelview/main.cpp new file mode 100644 index 0000000..045e2b8 --- /dev/null +++ b/Chapter13/modelview/main.cpp @@ -0,0 +1,161 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include + +void relModel() +{ + QSqlRelationalTableModel *model = new QSqlRelationalTableModel(); + + model->setTable( "names" ); + model->setRelation( 0, QSqlRelation( "salaries", "id", "annual" ) ); + model->select(); + + model->setHeaderData( 0, Qt::Horizontal, QObject::tr("Annual Pay") ); + model->setHeaderData( 1, Qt::Horizontal, QObject::tr("First Name") ); + model->setHeaderData( 2, Qt::Horizontal, QObject::tr("Last Name") ); + + QTableView *view = new QTableView(); + view->setModel( model ); + view->show(); +} + +void tabModel() +{ + QSqlTableModel *model = new QSqlTableModel(); + + model->setTable( "names" ); + model->setFilter( "lastname = 'Doe'" ); + model->select(); + + model->removeColumn( 0 ); + + QTableView *view = new QTableView(); + view->setModel( model ); + view->show(); +} + +void qryModel() +{ + QSqlQueryModel *model = new QSqlQueryModel(); + model->setQuery( "SELECT firstname, lastname FROM names" ); + + QTableView *view = new QTableView(); + view->setModel( model ); + view->show(); +} + + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); + + db.setDatabaseName( ":memory:" ); + + if( !db.open() ) + { + qDebug() << db.lastError(); + qFatal( "Failed to connect." ); + } + + qDebug( "Connected!" ); + + QSqlQuery qry; + + qry.prepare( "CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (1, 'John', 'Doe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (2, 'Jane', 'Doe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (3, 'James', 'Doe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (4, 'Judy', 'Doe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (5, 'Richard', 'Roe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (6, 'Jane', 'Roe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (7, 'John', 'Noakes')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (8, 'Donna', 'Doe')" ); + qry.exec(); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (:id, :firstname, :lastname)" ); + qry.bindValue( ":id", 9 ); + qry.bindValue( ":firstname", "Ralph" ); + qry.bindValue( ":lastname", "Roe" ); + qry.exec(); + + qry.prepare( "CREATE TABLE IF NOT EXISTS salaries (id INTEGER UNIQUE PRIMARY KEY, annual INTEGER)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (1, 1000)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (2, 900)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (3, 900)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (5, 1100)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (6, 1000)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (8, 1200)" ); + qry.exec(); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (9, 1200)" ); + qry.exec(); + + relModel(); + tabModel(); + qryModel(); + + return app.exec(); +} diff --git a/Chapter13/modelview/modelview.pro b/Chapter13/modelview/modelview.pro new file mode 100644 index 0000000..c0edc67 --- /dev/null +++ b/Chapter13/modelview/modelview.pro @@ -0,0 +1,12 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 17. jan 19:15:37 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +SOURCES += main.cpp +QT += sql diff --git a/Chapter13/sqltest/mysql/main.cpp b/Chapter13/sqltest/mysql/main.cpp new file mode 100644 index 0000000..2c5f63e --- /dev/null +++ b/Chapter13/sqltest/mysql/main.cpp @@ -0,0 +1,371 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QSqlDatabase db = QSqlDatabase::addDatabase( "QMYSQL" ); + + db.setHostName( "localhost" ); + db.setDatabaseName( "qtbook" ); + + db.setUserName( "root" ); + db.setPassword( "sa" ); + + if( !db.open() ) + { + qDebug() << db.lastError(); + qFatal( "Failed to connect." ); + } + + qDebug( "Connected!" ); + + QSqlQuery qry; + + qry.prepare( "CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug() << "Table created!"; + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (1, 'John', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (2, 'Jane', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (3, 'James', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (4, 'Judy', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (5, 'Richard', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (6, 'Jane', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (7, 'John', 'Noakes')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (8, 'Donna', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (9, 'Ralph', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + +// SALARIES + qry.prepare( "CREATE TABLE IF NOT EXISTS salaries (id INTEGER UNIQUE PRIMARY KEY, annual INTEGER)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (1, 1000)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (2, 900)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (3, 900)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (5, 1100)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (6, 1000)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (8, 1200)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (9, 1200)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "SELECT * FROM salaries" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + { + qDebug( "Selected!" ); + + QSqlRecord rec = qry.record(); + int cols = rec.count(); + + QString temp; + for( int c=0; c + +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); + + db.setDatabaseName( ":memory:" ); + + if( !db.open() ) + { + qDebug() << db.lastError(); + qFatal( "Failed to connect." ); + } + + qDebug( "Connected!" ); + + QSqlQuery qry; + + qry.prepare( "CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug() << "Table created!"; + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (1, 'John', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (2, 'Jane', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (3, 'James', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (4, 'Judy', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (5, 'Richard', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (6, 'Jane', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (7, 'John', 'Noakes')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (8, 'Donna', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (:id, :firstname, :lastname)" ); + qry.bindValue( ":id", 9 ); + qry.bindValue( ":firstname", "Ralph" ); + qry.bindValue( ":lastname", "Roe" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + +// SALARIES + qry.prepare( "CREATE TABLE IF NOT EXISTS salaries (id INTEGER UNIQUE PRIMARY KEY, annual INTEGER)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (1, 1000)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (2, 900)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (3, 900)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (5, 1100)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (6, 1000)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (8, 1200)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO salaries (id, annual) VALUES (9, 1200)" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "SELECT * FROM salaries" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + { + qDebug( "Selected!" ); + + QSqlRecord rec = qry.record(); + int cols = rec.count(); + + QString temp; + for( int c=0; c + +#include +#include + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); + + db.setDatabaseName( "./testdatabase.db" ); + + if( !db.open() ) + { + qDebug() << db.lastError(); + qFatal( "Failed to connect." ); + } + + qDebug( "Connected!" ); + + QSqlQuery qry; + + qry.prepare( "CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, firstname VARCHAR(30), lastname VARCHAR(30))" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug() << "Table created!"; + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (1, 'John', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (2, 'Jane', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (3, 'James', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (4, 'Judy', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (5, 'Richard', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (6, 'Jane', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (7, 'John', 'Noakes')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (8, 'Donna', 'Doe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "INSERT INTO names (id, firstname, lastname) VALUES (9, 'Ralph', 'Roe')" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + qDebug( "Inserted!" ); + + qry.prepare( "SELECT * FROM names" ); + if( !qry.exec() ) + qDebug() << qry.lastError(); + else + { + qDebug( "Selected!" ); + + QSqlRecord rec = qry.record(); + + int cols = rec.count(); + + for( int c=0; c*ih@okoCJR-J15t0oFSZ{e7(~#HKrA~X9YesRW=9$^~oEcfn#(Kp+~OE zxu4*i4TN}(b-W_=N!Rfd+cE#o-A5U1G-j%8QZ~Y#)XWEP{VJpEBPzG<(GVyksVWWi0MMp3ZxYPGNP2{8Jf$ +#include + +#include "ftpdialog.h" + +FtpDialog::FtpDialog() : QDialog() +{ + file = 0; + + ui.setupUi( this ); + + connect( ui.connectButton, SIGNAL(clicked()), this, SLOT(connectClicked()) ); + connect( ui.disconnectButton, SIGNAL(clicked()), this, SLOT(disconnectClicked()) ); + connect( ui.cdButton, SIGNAL(clicked()), this, SLOT(cdClicked()) ); + connect( ui.upButton, SIGNAL(clicked()), this, SLOT(upClicked()) ); + connect( ui.getButton, SIGNAL(clicked()), this, SLOT(getClicked()) ); + + connect( ui.dirList, SIGNAL(itemSelectionChanged()), this, SLOT(selectionChanged()) ); + + connect( &ftp, SIGNAL(commandFinished(int,bool)), this, SLOT(ftpFinished(int,bool)) ); + connect( &ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(ftpListInfo(QUrlInfo)) ); + connect( &ftp, SIGNAL(dataTransferProgress(qint64,qint64)), this, SLOT(ftpProgress(qint64,qint64)) ); + + ui.disconnectButton->setEnabled( false ); + ui.cdButton->setEnabled( false ); + ui.upButton->setEnabled( false ); + ui.getButton->setEnabled( false ); +} + +void FtpDialog::connectClicked() +{ + ui.connectButton->setEnabled( false ); + + ftp.connectToHost( "ftp.trolltech.com" ); + ui.statusLabel->setText( tr("Connecting to host...") ); +} + +void FtpDialog::disconnectClicked() +{ + ui.disconnectButton->setEnabled( false ); + ui.cdButton->setEnabled( false ); + ui.upButton->setEnabled( false ); + ui.getButton->setEnabled( false ); + + ftp.close(); +} + +void FtpDialog::cdClicked() +{ + ui.disconnectButton->setEnabled( false ); + ui.cdButton->setEnabled( false ); + ui.upButton->setEnabled( false ); + ui.getButton->setEnabled( false ); + + ftp.cd( ui.dirList->selectedItems()[0]->text() ); + ui.statusLabel->setText( tr("Changing directory...") ); +} + +void FtpDialog::upClicked() +{ + ui.disconnectButton->setEnabled( false ); + ui.cdButton->setEnabled( false ); + ui.upButton->setEnabled( false ); + ui.getButton->setEnabled( false ); + + ftp.cd(".."); + ui.statusLabel->setText( tr("Changing directory...") ); +} + +void FtpDialog::getClicked() +{ + QString fileName = QFileDialog::getSaveFileName( this, tr("Get File"), ui.dirList->selectedItems()[0]->text() ); + if( fileName.isEmpty() ) + return; + + file = new QFile( fileName, this ); + if( !file->open( QIODevice::WriteOnly ) ) + { + QMessageBox::warning( this, tr("Error"), tr("Failed to open file %1 for writing.").arg( fileName ) ); + + delete file; + file = 0; + + return; + } + + ui.disconnectButton->setEnabled( false ); + ui.cdButton->setEnabled( false ); + ui.upButton->setEnabled( false ); + ui.getButton->setEnabled( false ); + + ftp.get( ui.dirList->selectedItems()[0]->text(), file ); + ui.statusLabel->setText( tr("Downloading file...") ); +} + +void FtpDialog::ftpProgress( qint64 done, qint64 total ) +{ + if( total == 0 ) + return; + + ui.statusLabel->setText( tr("Downloading file... (%1%)").arg( QString::number( double(done)*100/double(total), 'f', 1 ) ) ); +} + +void FtpDialog::selectionChanged() +{ + if( ui.dirList->selectedItems().count() == 1 ) + { + if( files.indexOf( ui.dirList->selectedItems()[0]->text() ) == -1 ) + { + ui.cdButton->setEnabled( ui.disconnectButton->isEnabled() ); + ui.getButton->setEnabled( false ); + } + else + { + ui.cdButton->setEnabled( false ); + ui.getButton->setEnabled( ui.disconnectButton->isEnabled() ); + } + } + else + { + ui.cdButton->setEnabled( false ); + ui.getButton->setEnabled( false ); + } +} + +void FtpDialog::getFileList() +{ + ui.disconnectButton->setEnabled( false ); + ui.cdButton->setEnabled( false ); + ui.upButton->setEnabled( false ); + ui.getButton->setEnabled( false ); + + ui.dirList->clear(); + files.clear(); + + if( ftp.state() == QFtp::LoggedIn ) + ftp.list(); +} + +void FtpDialog::ftpListInfo( QUrlInfo info ) +{ + ui.dirList->addItem( info.name() ); + if( info.isFile() ) + files << info.name(); +} + +void FtpDialog::ftpFinished( int request, bool error ) +{ + if( error ) + { + switch( ftp.currentCommand() ) + { + case QFtp::ConnectToHost: + QMessageBox::warning( this, tr("Error"), tr("Failed to connect to host.") ); + ui.connectButton->setEnabled( true ); + + break; + case QFtp::Login: + QMessageBox::warning( this, tr("Error"), tr("Failed to login.") ); + ui.connectButton->setEnabled( true ); + + break; + case QFtp::List: + QMessageBox::warning( this, tr("Error"), tr("Failed to get file list.\nClosing connection.") ); + ftp.close(); + + break; + case QFtp::Cd: + QMessageBox::warning( this, tr("Error"), tr("Failed to change directory.") ); + getFileList(); + + break; + case QFtp::Get: + QMessageBox::warning( this, tr("Error"), tr("Failed to get file?") ); + file->close(); + file->remove(); + + delete file; + file = 0; + + ui.disconnectButton->setEnabled( true ); + ui.upButton->setEnabled( true ); + selectionChanged(); + + break; + } + + ui.statusLabel->setText( tr("Ready.") ); + } + else + { + switch( ftp.currentCommand() ) + { + case QFtp::ConnectToHost: + ftp.login(); + + break; + case QFtp::Login: + getFileList(); + + break; + case QFtp::Close: + ui.connectButton->setEnabled( true ); + getFileList(); + + break; + case QFtp::List: + ui.disconnectButton->setEnabled( true ); + ui.upButton->setEnabled( true ); + ui.statusLabel->setText( tr("Ready.") ); + + break; + case QFtp::Cd: + getFileList(); + + break; + case QFtp::Get: + file->close(); + + delete file; + file = 0; + + ui.disconnectButton->setEnabled( true ); + ui.upButton->setEnabled( true ); + selectionChanged(); + + ui.statusLabel->setText( tr("Ready.") ); + + break; + } + } +} diff --git a/Chapter14/ftp/ftpdialog.h b/Chapter14/ftp/ftpdialog.h new file mode 100644 index 0000000..e68195b --- /dev/null +++ b/Chapter14/ftp/ftpdialog.h @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef FTPDIALOG_H +#define FTPDIALOG_H + +#include +#include +#include + +#include "ui_ftpdialog.h" + +class FtpDialog : public QDialog +{ + Q_OBJECT + +public: + FtpDialog(); + +private slots: + void connectClicked(); + void disconnectClicked(); + void cdClicked(); + void upClicked(); + void getClicked(); + + void selectionChanged(); + + void ftpFinished(int,bool); + void ftpListInfo(QUrlInfo); + void ftpProgress(qint64,qint64); + +private: + void getFileList(); + + Ui::FtpDialog ui; + + QFtp ftp; + QFile *file; + + QStringList files; +}; + +#endif // FTPDIALOG_H diff --git a/Chapter14/ftp/ftpdialog.ui b/Chapter14/ftp/ftpdialog.ui new file mode 100644 index 0000000..36f3718 --- /dev/null +++ b/Chapter14/ftp/ftpdialog.ui @@ -0,0 +1,144 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + FtpDialog + + + + 0 + 0 + 451 + 582 + + + + FTP Client + + + + 9 + + + 6 + + + + + ftp.trolltech.com + + + + 9 + + + 6 + + + + + Qt::Vertical + + + QSizePolicy::Preferred + + + + 20 + 40 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Connect + + + + + + + Disconnect + + + + + + + Get File + + + + + + + Up + + + + + + + Change Directory + + + + + + + + + + + + + Ready. + + + + + + + + diff --git a/Chapter14/ftp/main.cpp b/Chapter14/ftp/main.cpp new file mode 100644 index 0000000..e74a031 --- /dev/null +++ b/Chapter14/ftp/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "ftpdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + FtpDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter14/http/http.pro b/Chapter14/http/http.pro new file mode 100644 index 0000000..3b27076 --- /dev/null +++ b/Chapter14/http/http.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 29. jan 10:06:12 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += httpdialog.h +FORMS += httpdialog.ui +SOURCES += httpdialog.cpp main.cpp +QT += network +CONFIG += console diff --git a/Chapter14/http/httpdialog.cpp b/Chapter14/http/httpdialog.cpp new file mode 100644 index 0000000..6713c0b --- /dev/null +++ b/Chapter14/http/httpdialog.cpp @@ -0,0 +1,205 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "httpdialog.h" + +HttpDialog::HttpDialog() : QDialog() +{ + file = 0; + + ui.setupUi( this ); + + connect( ui.getButton, SIGNAL(clicked()), this, SLOT(getClicked()) ); + + connect( &http, SIGNAL(stateChanged(int)), this, SLOT(httpStateChanged(int)) ); + connect( &http, SIGNAL(dataSendProgress(int,int)), this, SLOT(httpDataSent(int,int)) ); + connect( &http, SIGNAL(dataReadProgress(int,int)), this, SLOT(httpDataReceived(int,int)) ); + connect( &http, SIGNAL(responseHeaderReceived(QHttpResponseHeader)), this, SLOT(httpHeaderDone(QHttpResponseHeader)) ); + connect( &http, SIGNAL(readyRead(QHttpResponseHeader)), this, SLOT(httpDataDone(QHttpResponseHeader)) ); + connect( &http, SIGNAL(requestStarted(int)), this, SLOT(httpStarted(int)) ); + connect( &http, SIGNAL(requestFinished(int,bool)), this, SLOT(httpFinished(int,bool)) ); + connect( &http, SIGNAL(done(bool)), this, SLOT(httpDone(bool)) ); +} + +void HttpDialog::getClicked() +{ + QUrl url( ui.requestEdit->text(), QUrl::TolerantMode ); + + if( !url.isValid() ) + { + ui.hostLabel->setText( "" ); + ui.pathLabel->setText( "" ); + ui.portLabel->setText( "" ); + ui.userLabel->setText( "" ); + ui.passwordLabel->setText( "" ); + + QMessageBox::warning( this, tr("Invalid URL"), tr("The URL '%1' is invalid.").arg( ui.requestEdit->text() ) ); + + return; + } + + ui.hostLabel->setText( url.host() ); + ui.pathLabel->setText( url.path() ); + ui.portLabel->setText( QString::number(url.port()==-1?80:url.port()) ); + ui.userLabel->setText( url.userName() ); + ui.passwordLabel->setText( url.password() ); + + http.setHost( url.host(), url.port()==-1?80:url.port() ); + if( !url.userName().isEmpty() ) + http.setUser( url.userName(), url.password() ); + + QString fileName = QFileDialog::getSaveFileName( this ); + if( fileName.isEmpty() ) + return; + + file = new QFile( fileName, this ); + if( !file->open( QIODevice::WriteOnly ) ) + { + QMessageBox::warning( this, tr("Could not write"), tr("Could not open the file %f for writing.").arg( fileName ) ); + + delete file; + file = 0; + + return; + } + + http.get( url.path(), file ); + ui.getButton->setEnabled( false ); +} + +#include + +void HttpDialog::httpStateChanged( int state ) +{ + QString stateText; + + switch( state ) + { + case QHttp::Unconnected: + stateText = "Unconnected"; + break; + case QHttp::HostLookup: + stateText = "HostLookup"; + break; + case QHttp::Connecting: + stateText = "Connecting"; + break; + case QHttp::Sending: + stateText = "Sending"; + break; + case QHttp::Reading: + stateText = "Reading"; + break; + case QHttp::Connected: + stateText = "Connected"; + break; + case QHttp::Closing: + stateText = "Closing"; + break; + default: + stateText = "Undefined"; + break; + } + + ui.statusList->addItem( QString("stateChanged( %1 )").arg( stateText ) ); + qDebug() << QString("stateChanged( %1 )").arg( stateText ); +} + +void HttpDialog::httpDataSent( int done, int total ) +{ + ui.statusList->addItem( QString("dataSendProgress( done: %1, total: %2 )").arg( done ).arg( total ) ); + qDebug() << QString("dataSendProgress( done: %1, total: %2 )").arg( done ).arg( total ); +} + +void HttpDialog::httpDataReceived( int done, int total ) +{ + ui.statusList->addItem( QString("dataReadProgress( done: %1, total: %2 )").arg( done ).arg( total ) ); + qDebug() << QString("dataReadProgress( done: %1, total: %2 )").arg( done ).arg( total ); +} + +void HttpDialog::httpHeaderDone( QHttpResponseHeader header ) +{ + ui.statusList->addItem( QString("responseHeaderReceived(code: %1, reason: %2, version: %3.%4 )").arg( header.statusCode() ).arg( header.reasonPhrase() ).arg( header.majorVersion() ).arg( header.minorVersion() ) ); + qDebug() << QString("responseHeaderReceived(code: %1, reason: %2, version: %3.%4 )").arg( header.statusCode() ).arg( header.reasonPhrase() ).arg( header.majorVersion() ).arg( header.minorVersion() ); +} + +void HttpDialog::httpDataDone( QHttpResponseHeader header ) +{ + ui.statusList->addItem( QString("readReady(code: %1, reason: %2, version: %3.%4 )").arg( header.statusCode() ).arg( header.reasonPhrase() ).arg( header.majorVersion() ).arg( header.minorVersion() ) ); + qDebug() << QString("readReady(code: %1, reason: %2, version: %3.%4 )").arg( header.statusCode() ).arg( header.reasonPhrase() ).arg( header.majorVersion() ).arg( header.minorVersion() ); +} + +void HttpDialog::httpStarted( int id ) +{ + ui.statusList->addItem( QString("requestStarted( %1 )").arg( id ) ); + qDebug() << QString("requestStarted( %1 )").arg( id ); +} + +void HttpDialog::httpFinished( int id, bool error ) +{ + ui.statusList->addItem( QString("requestFinished( %1, %2 )").arg( id ).arg( error?"True":"False" ) ); + qDebug() << QString("requestFinished( %1, %2 )").arg( id ).arg( error?"True":"False" ); + if( error ) + QMessageBox::warning( this, tr("Http: requestFinished"), http.errorString() ); +} + +void HttpDialog::httpDone( bool error ) +{ + ui.statusList->addItem( QString("done( %1 )").arg( error?"True":"False" ) ); + qDebug() << QString("done( %1 )").arg( error?"True":"False" ); + + if( error ) + { + QMessageBox::warning( this, tr("Http: done"), http.errorString() ); + + if( file ) + { + file->close(); + file->remove(); + + delete file; + file = 0; + } + } + + if( file ) + { + file->close(); + + delete file; + file = 0; + } + + ui.getButton->setEnabled( true ); +} diff --git a/Chapter14/http/httpdialog.h b/Chapter14/http/httpdialog.h new file mode 100644 index 0000000..474f45f --- /dev/null +++ b/Chapter14/http/httpdialog.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef HTTPDIALOG_H +#define HTTPDIALOG_H + +#include +#include + +#include "ui_httpdialog.h" + +class HttpDialog : public QDialog +{ + Q_OBJECT +public: + HttpDialog(); + +private slots: + void getClicked(); + + void httpStateChanged(int); + void httpDataSent(int,int); + void httpDataReceived(int,int); + void httpHeaderDone(QHttpResponseHeader); + void httpDataDone(QHttpResponseHeader); + void httpStarted(int); + void httpFinished(int,bool); + void httpDone(bool); + +private: + Ui::HttpDialog ui; + + QHttp http; + QFile *file; +}; + +#endif // HTTPDIALOG_H diff --git a/Chapter14/http/httpdialog.ui b/Chapter14/http/httpdialog.ui new file mode 100644 index 0000000..5d7f56a --- /dev/null +++ b/Chapter14/http/httpdialog.ui @@ -0,0 +1,231 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + HttpDialog + + + + 0 + 0 + 550 + 424 + + + + HTTP Client + + + + 9 + + + 6 + + + + + Request + + + + 9 + + + 6 + + + + + Get + + + + + + + http://www.thelins.se/qt/index.html + + + + + + + + + + URL Components + + + + 9 + + + 6 + + + + + # + + + + + + + Password: + + + + + + + # + + + + + + + User: + + + + + + + # + + + + + + + # + + + + + + + # + + + + + + + Port: + + + + + + + Path: + + + + + + + Host: + + + + + + + + + + HTTP Status + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Clear + + + + + + + true + + + QAbstractItemView::NoSelection + + + + + + + + + + + + clearButton + clicked() + statusList + clear() + + + 497 + 276 + + + 357 + 302 + + + + + diff --git a/Chapter14/http/main.cpp b/Chapter14/http/main.cpp new file mode 100644 index 0000000..940a970 --- /dev/null +++ b/Chapter14/http/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "httpdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + HttpDialog dlg; + dlg.show(); + + return app.exec(); +} diff --git a/Chapter14/tcpclient/clientdialog.cpp b/Chapter14/tcpclient/clientdialog.cpp new file mode 100644 index 0000000..3c659cf --- /dev/null +++ b/Chapter14/tcpclient/clientdialog.cpp @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "clientdialog.h" + +ClientDialog::ClientDialog() : QDialog() +{ + ui.setupUi( this ); + + connect( ui.getButton, SIGNAL(clicked()), this, SLOT(getClicked()) ); + + connect( &socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(tcpError(QAbstractSocket::SocketError)) ); + connect( &socket, SIGNAL(readyRead()), this, SLOT(tcpReady()) ); +} + +void ClientDialog::getClicked() +{ + ui.getButton->setEnabled( false ); + + ui.imageLabel->setPixmap( QPixmap() ); + ui.imageLabel->setText( tr("Getting image...") ); + + dataSize = 0; + + socket.abort(); + socket.connectToHost( ui.serverEdit->text(), 9876 ); +} + +void ClientDialog::tcpReady() +{ + if( dataSize == 0 ) + { + QDataStream stream( &socket ); + stream.setVersion( QDataStream::Qt_4_0 ); + + if( socket.bytesAvailable() < sizeof(quint32) ) + return; + + stream >> dataSize; + } + + if( dataSize > socket.bytesAvailable() ) + return; + + QByteArray array = socket.read( dataSize ); + QBuffer buffer(&array); + buffer.open( QIODevice::ReadOnly ); + + QImageReader reader(&buffer, "PNG"); + QImage image = reader.read(); + + if( !image.isNull() ) + { + ui.imageLabel->setPixmap( QPixmap::fromImage( image ) ); + ui.imageLabel->setText( tr("") ); + } + else + { + ui.imageLabel->setText( tr("Invalid image received!") ); + } + + ui.getButton->setEnabled( true ); +} + +void ClientDialog::tcpError( QAbstractSocket::SocketError error ) +{ + if( error == QAbstractSocket::RemoteHostClosedError ) + return; + + QMessageBox::warning( this, tr("Error"), tr("TCP error: %1").arg( socket.errorString() ) ); + ui.imageLabel->setText( tr("No Image") ); + ui.getButton->setEnabled( true ); +} diff --git a/Chapter14/tcpclient/clientdialog.h b/Chapter14/tcpclient/clientdialog.h new file mode 100644 index 0000000..64d1d23 --- /dev/null +++ b/Chapter14/tcpclient/clientdialog.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef CLIENTDIALOG_H +#define CLIENTDIALOG_H + +#include +#include + +#include "ui_clientdialog.h" + +class ClientDialog : public QDialog +{ + Q_OBJECT + +public: + ClientDialog(); + +private slots: + void getClicked(); + + void tcpReady(); + void tcpError( QAbstractSocket::SocketError error ); + +private: + Ui::ClientDialog ui; + + QTcpSocket socket; + int dataSize; +}; + +#endif // CLIENTDIALOG_H diff --git a/Chapter14/tcpclient/clientdialog.ui b/Chapter14/tcpclient/clientdialog.ui new file mode 100644 index 0000000..1f52fe8 --- /dev/null +++ b/Chapter14/tcpclient/clientdialog.ui @@ -0,0 +1,120 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ClientDialog + + + + 0 + 0 + 467 + 445 + + + + TCP Client + + + + 9 + + + 6 + + + + + Server Settings + + + + 9 + + + 6 + + + + + localhost + + + + + + + Get Image + + + + + + + + + + Image + + + + 9 + + + 6 + + + + + + 7 + 7 + 0 + 0 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt; font-style:italic;">No Image</span></p></body></html> + + + Qt::AlignCenter + + + + + + + + + + + diff --git a/Chapter14/tcpclient/main.cpp b/Chapter14/tcpclient/main.cpp new file mode 100644 index 0000000..dfac967 --- /dev/null +++ b/Chapter14/tcpclient/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "clientdialog.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + ClientDialog dlg; + dlg.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter14/tcpclient/tcpclient.pro b/Chapter14/tcpclient/tcpclient.pro new file mode 100644 index 0000000..8fc6977 --- /dev/null +++ b/Chapter14/tcpclient/tcpclient.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 1. feb 15:14:26 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += clientdialog.h +FORMS += clientdialog.ui +SOURCES += clientdialog.cpp main.cpp +QT += network +CONFIG += console diff --git a/Chapter14/tcpserver/images/Thumbs.db b/Chapter14/tcpserver/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..76241a0a0cdcadb9dc39da00791698942c8fcb58 GIT binary patch literal 5632 zcmeI0cUV)&7Qk;vLJ37e2k8k#nj%J|D58RZ2!b>LL8MEGR1GLd5fuYSUlGMZ5h($r zDpC{(f(U|C5u`{*LT^gmWOv=S-}^q_bKigOeS7ZxeKVOeb7#&uGm|^Ftrh+0L7~79 z^e=J%fy5FNiXa3k5e$af^S??Wu+GH4< zrf2=FlHw2Q{%kP`MW%;e7 z19$+u06qXeKmf2EAP5iw2m?d_q5v^~H~<5{0we&E04abpUu^>b3p?-qc^|W=hAs7q>T?7|I{QwHV$@HHZ&VEGdmAEnv;v0o10}DFCPyV9|spV7wsW1 zIB0`FG9i&nT&&EjTz^@pH4vH+GJ?*)Vd4-S8U{zhsCBe?1Ve(+(gysy!05mj=@}TA zP|To030R>pIGhdvr;Qraz6|sb0*&MlQ`DsAG_qq5_u|?e68nG=bEvSE+xQ&?t8~^o zlnKSd%f~MuAt@!jLuL)x$@$w2$iO>YX$(H8Zz3Wohr==;Z9;dd|n!&;PL=;yKViOH$?g~g@imDRQN4Vqmr2>zQ{e^~Y}cAO#9WcpEE4kOnlb!{3y)+o@*X2yx5gwZ6`WP+qC-l%kGY_a`31HCy5aR?FG8 z=6%q@8JOXAJL6z=^V?nH6S}Ssm871nAJEYe4f3;IU(CmZe`&?=;{q1VZ{-Z_O9#6I@#?BU~4ZI0-O%7Ckc0EGrnpp5%qpFfPK4pG;!4X*PmT7>6C)T=H z;$#Je?&%kgvIc`uXhmV)lbhWq05N}AO*_LJ?cZ50 zPAF4OGJ%K0cjXiFLLtnnhmj_k_T`VCc;obo}Kb+hR1O9X<6yJxxQ zg@)eSO-(|Ok)#i?#Fy!uorrpAA&94fLfo)UbK8xZExxexbAx?vxih|s zUPHA!lQpZbRo9Ln!@J-hP3SlI)T!K#tsRuxm9JX)L~&y*i``~Qjd;FUW}M$t-t>#F zTcZB4QaQgFzk}dNKd8LHh`TNb#~6oF5;?-jkuoy5`uO_vFFjNF496 zPGU`SYB8-H`$lk!^f%oH`y}2A)vV;}Ul#D`&b!%^VZ5tz@Z>u)tJ3hID|IY))1B_R zN;DtriPSY&Tr{=XW6wX3H*?$~Qdiup7emVATOuWSwUaxtvdOi%r(d5d9XmzD#PZ*o zyJGn2_49vTv##@vO}mmy9E(&5PYI$l^??=f)2lFfI~?`&-Ygwno_)t_bIFcYaH# zaxA*uX-}{DN+cd$G5p-M{<(LvTJ5+u`Y7FL1j5xTt!zJ<)lc3SB)r)#n_`Gciky%r$&V&JuFN z(Z?9i<^_`)Ns^^Sjit?adltg@3?&=Cx#m5XciCsimaX32KK-MMfPBVE+TQTw-B0SA zQuSM|IjMi^GFCeuEU+Fn)E(kHKURphXSTG+X}XEow|+%F?5PSi<}vBLQ`^{D@TcP# z?Y1R!ptD;R*}aTse4J1i(f?$dTA890F{QKq2|jkpr=6soB(9LF5;yTNetB-fOB}+e?I$U#=>% zpT?GUKYRAZ|8!}uG7?q6a36!WdGXX%vUX_m#ZGgVFJh(%`SYJ|d1qB~U%l95^08|o z7pG@LQaH}NWUl&)v(}BEqr~{0l&U03A|i=@|FpUq85MWo%%~H|Y6{l$g^}Dg-*PE+ zWc0EFf0OIR@>YrjkCEkvoJNO_D<;m?D=aky!Zq#ZRJSU!Ym3IsDwD*hkQ_0uY=Yj) zR?F(E4CU>uY+QZZj9^k_!pM4vDXSrNmF<#MqmTO3}O2w&nQ=E6yh+KDK%V6{d8(Z+g;gEIq(*xFNu2vac`*caifT zg&{&+b<0|qieDB>oG!BxU24h zsd5?k!)@8ocP+{_dnUe$P`WiKF*k%)8u||vwD2qxRfZxq$=LXi#J9%-oI|T!?^Gk# z{5K8my*(uvW$BlscAg(@B)0A4C6z6b_EeR0`F#xP z9C;e$F^o}q3e{Z@T*~58d8x4StoltuWp<#es@~KFL7^eK&`Wjg(G1Dg(@e)qzifZ& znps(|xC3jF;p5hY+{*?nv$$pz8=ZLc%;#k6IEJ{`Rnj*%w*65*gRyKA=^8P`fBjwt zi$N9NZ=u3T<%=P%*UGX_ zHGxe)OQ=Dn-%L^T&2fJFHoq49n}M08*X}VIctqc|{>Y=87fWDGpPhhlb68Kco9i2>f7tti&F4fx za4|4j>KJ%2k(U3|$=)c&g;R%;jZ<+I5fQ%|eHy6Z(m-xPENE&Z@8=I{=8a?92WDm0L(yE?RCq$P>w*tv{f z%Bmfl{^s&9{oOW^0Nd3&>!wzu<&i1rhZ!u?-tTYp|0ZPzU#e(t{%3xNc82`*B*2J` e)>kFNd?8232b}N~p!4AS#(#6d2M_!|mVW?Yq!=au literal 0 HcmV?d00001 diff --git a/Chapter14/tcpserver/images/test-green.png b/Chapter14/tcpserver/images/test-green.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e0d053f9f1e3f5cf1bac4611463e347b73b5ad GIT binary patch literal 298820 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

    e8EJMw-hUXXLQcIsrCnae#qJdhSmITvFZNS&y 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 z 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ξlaNxQkI2q!{Ik_mjy25L__ExNU5!-`D#E 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

    cfnHP^8STskLTu&%Lla63U1ByyQ;W5JQo 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 literal 0 HcmV?d00001 diff --git a/Chapter14/tcpserver/images/test.png b/Chapter14/tcpserver/images/test.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf6fd993aa5963c2af1cbef431eea01111c20d7 GIT binary patch literal 327442 zcmV)iK%&2iP)Px#1ZP1_K>z@;j|==^1poj5AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy32;bRa{vGf5&!@T5&_cPe*6Fc00(qQO+^RS0S65;3FbH1`2YX_ zAaq4obVG7wVRUJ4Zd7S)WdJfTFgH3dF*-0eATcvKH8DCcIS<{bzW@LL7<5HgbW?9; zba!ELWdKlNX>N2bPDNB8b}}wEGICmkT>t<840J_UbW?A2a${uxOE@qvX=G-Kng9U) z{z*hZRCr!|{b!S%+mWq{fn;|dUHufPySY8Q_uhL`g)%@Hl=t3O!FzA_2DTyDWS@IO z5&ELg|B`N#oO+&|?_9Munn#Ej@vd4}=3Q=%nVBO;{$_mt(e&FjY0Ynb^P4rl{mq&< z`p@IvfBX09Z;r_;|F-6z*8GO+(wg7?jVpdrU0>b)Z`?H{um5X2Mm%7?5Z9-_`}c3x z{Eg>Z!?XV8H@~etmlxu`9)J70xcqk>|L=eQ`=hR|9HGO#(CxQ^!ej_ zYA++7-7MG2R?sZhl?)b#VW3b1vt{^S2w8c^P4#OI=oSS(s{5=kRILzi=+TujT#E&+mD}cd72Q>p!3Jz0TM9{qq4h#`lx=(eJhI8|UGp z#e2yY;&*%w|HA+M^FRM?&AJ;r;=cmH2jKiB+w^!w(+l<(W$;&<>@ejC27-~INV38{ik^XDVKmF4`@$u%@|4(sBtQUOB{)^WcpC8xwbiCI1 zDOB%Y{_Ix&#qTn{FRQ<&{5aKl#%12a>MlNBKL7kYf2+Pn)k}`=>gqpUSKPCli|3ht z3%`vIH2>v4zy7`_$@5^%^1pw_Yy7S2TKSFpI?LNutvB`Sg6H(NYMt;i^-GuEhrEWx zI#+$q%lrSEvaVM5`z>o)_0VzN`Af*_tiETitL0xl7k<00!#=!sHD4E>+1Jk zeNN?e`BXqGj1NL9n>w?E&8^UFA#CiWZwhtlNU!)bEg zfeh~hCOF^mJwDcfG`fe&dk>|FecT6l+2nn{`F?v2@K^`a z;EvsCXy=}QxAnf|{ys)rSKY_s@Gft^i~H>i`2Rk}Fz?sct^;X|_iS+U&eXqgdmKl( zeuVe4f9syqw`F(g+OjKkZ{3}GIJbW8J0z;d8`!=h4Q|UA+P<>_&$m5ea2wCdee2<4 zi{Y)i($JQjX<*ZKo_kvw*pM;kdHf1I_9o72)2_hCw%vj99G*kp)@`Y0>*mzGWmD?h zvN7G*x+&e*wl#Ha-v)MYd3);QHXWO`rjCuf(~S*#QrE_eP9C#;!;aLpervk6c5}ME zep71OusLYM#e^;8{w<|5~-<=jXF6`Tp=J#&r zxGk`FU~5`BxGgOo*p^lfZcmH*wxszz8FRa~rrDkOIKF*DS~##X-9E~1`!K)bL)+4= zqdU``V;qlcNe@r#{56j4N)H2j(i48;&yMd)&yRtl`_r={`_dDB?~hq4JO)?;o^rdV z$98kuJz!Vh$?@&!G0*Xo;}edLkMOrRwxhx>j=RzW))sO9$gXtn@XmDi@UA-SNh^nT z0oJ608MnoOed#Xi$6eNld;B)~|r95|dF9y-i(9OU`-rN<}srDrF1rx&MordOwT zq}OM52Hu?ARbAfBaeI1oc6)kxW?OmzUUK>Qxvha`XSby1r@4H3JCCs|JwLfKJwL(Y z9p9T?^4Kp=>`AXq?oDsb>`AXr?~cdxdET7dRbe;Bj8~^T4;}+N=CXKtn)eMn<1t>I z+RuFtq}QjwnS-3;All<2eh?>`pIFb3M=f%5ylgKi~JXIGkRe zJe*#gIFw$TI2d@&-%pPn=JPrPj-3^LMD$uDqw;aBgP<{Q3z-7(1Fx{ z;6Uo)OLBvSxt)btf@$4#I9=O)1n~D>2!=0?~_klz8w@8AIlc|QcO7XsLm#`rOh z^P`?PuqQ}H(i!D3U7SZ*7)EzWQoN>}5De!$4QWh48iiOShB3~?`$zs|>1Md^}IS0|T6{6v}IyQ>kag3G-$5$hLM~r#4m5weEww-@SJ&=L4d3mm5zLvjThrO^wx)Ayw*<*t z<9ph*?`XQl=h?`4T!u`qLg0SKI}e;py@yYx{v#*Sz|o^==rEfO7SRbXb!c~*<2VN? z%n1=|CYJ2z#5fdFnDWwAcI zJ>5LA1H#!3!E8$pAcFv;BV6dkBQ~BA$TNQblFL(m@1jO5{9jyGkXS&DjZgVc;&LK#V_vX$4F0*#r zV>2hY+~fClpWpKX2>T&x+`~ird2G(jbK$w`2}W{xa~2W+5=$YMLNJ+RAc}J?=sN@6 zKZAuHNGw4vkc7yODQWR|r?;gyry#SFkQc-)UP3scyf2SV^16Ww`jeBKD`fSY1^(6P zLp;V|9_vVYd+um@&GE%)-uu%$_ZePC9Wv=bcqe^*`Me~%AgBNY#rj=OFfUFV=CeGQ z9v-d08vpntWCO8zE)O8H`+RoyPwWNz(gV(|5RByV6oOhad+;>may&2%n@98lyU+1O zpCuZYKe$RT62v?aOCgw>L^HP`h+C(Qq?0uWyA zAWD!}Zm>9aak(4x>^caU90>I7fJj*E2e|D3k0JV4jE9I4hIzeXL_i}D$q2U_-v$9} zhfpK~e%!Ns8RsF~1)>u%$4+RLFYFYAG6A_1OhPh~`ym`78>1a}|2&`MQV2$pkz6J@ zPotKITp)%ZBd#0ewT%#sj2Qv({(BrHvKcng;C2C{5b&$0gue?h6=E5MF!MQ7WCsaJ zM)eVp#4@m*g}8!$_wFQ8*t0W@>?INaCBhlr!D0@K4n~OzeIAKykjr8~BI5CDs3We3 zj4E;&=JAJE&<1vF3H0ya`F27=yC9!kIf}~BPL4uKBr^n&iQ&yWcO43`l;fZT#QzU) zTM^OAX2_%>7?1h#rqo5m(z|7Q>fO8p5Q$X;BcZgh=m)WE-X3V(NF+kk(nQqa@!I-r zkj>WA@-5eY1Mz&lB`!BX7>z_a4G>Nvgmd+~ZCtlKHLTr{EzwrviQ@hA})1xPS=h%j!maNjz-Bi%W?jYWJri};QV zq6ZiD2i*1{>w=MhJ6;JUgTL8GJ|P3)F^Gpn>M0w}XY6|2iDwYW1j#@wz@2}P%(0z; zLNJ9~^79$R>ZWbu^qdJ1_- zD$jUa@$@7S)`{)B_xxSG$2p=R5(*qlFL_+yuk>N6cc zw9wD_^ze5Vi|!2;*&8g_5=#5dBdG&&5uGgB;sy(<$m9aaa9!_?LqRSQ%OKYe?>!2k z919Hc_@f7pr7_5L^5Ah6bkbtnW^xCqx}6X##4x|-7(dt}?EE@!jPHiuv*~^NAeVh}RHxO!JUha=|x^ zmI(%ekW?yiF^BqU18%oN=t(osI%BO-xEEYe<=BOexM)~m;d4yC93hM%ymJ>mEK zgmvl(#AZIA8t|Qc7Zw4_6FP*BRhLE(9_FiS$D#MjYKl z8$FTY+Lzi{#M)T&+R5!3nRK&Q_dpO5NB{!q+QEHDYxS_p>w`@CNk^IP8fL*BB|;hD zu?C3}#4ta`QAlj;Apgg4yuu_z8X!^$QsDlR+}~7|(cC=$x4;*&L@+a?#b!y5%@J}3 zs)%Nq9i{0r(`ZwWQh7WhmJ+o{D1~6gcAMH_ku2E5-@NChxjYXE!YIT@Ay7prwUifx z8#NS<+)pA3G9u~`V|<>zMt8ZU@J4sLz;BD==xzwa#h%5xAHuMfGO!H-Bc<32$@KAm zMlr(3qC^-&yNN8o=sq5k#~tHwNA?n(Knz1XZoVz|G1XP2+I+kKk&BPp!(t|Sw{NVW zf9Ga409$z-If@zC2`NE_C5ov(N*YEcB^5TZh4+StrKHYs^kR*O=!Iw?*IC3CYAw`Z zICgKdCPUhc2&NO_=!9S-mQLP>Htv6&`(NXETDh);$VGzjD6w3n{?bStrh&h&LOv3~ z`ENEx6ml8zXk14s?Ax6X3UwBu71Lm+A)4c)&W>_BkK)9)8`6od*F!QJ;=Y%7oCaz= zmq_~sAkB*qP21jMY2@VPGa^KZwO57-ALwQGwCoR7RhCAxk8@8do0SCtQH<%byz72)jK%WkmS5rN(XA|i?98dxJSU~*eML!083lMwPdEz6Cxb<@ zBBuMK{-W;V4*&EfQcN2mkWJ~$xy@ip5W#y$0$iad-@O*@e z?IZ*@#p{Wq5gRDt25V0eLn+435QRj#kk^!fC;=35F-<19%t2UU<`5wAFbec>tlMO) zro~pH7YL!AT)YgyNIFqVsUjO|D<$$Mb(UJnD^hCz9fQ2*VuT&7B%=U9A;K7ox8zbw zQBmZ!J|e-m7)vnLRR&CLRpj7N!U)pf^3ZPo4-zn{siK=gIv%}EAGhs;AVe<_PtW%4 zv7pDoUWYDr&Z1{4L_;Ja$qek|oFIcDIPe(J73XL@rGE<%4hw&z${?1Jt!x@VAsLBA zauJeCFZWq3;%`YETQ*1SMRXI@+<+t`m=2-`3;EVvS~u)W*I3|%ms^QyglVzH?=}#X zY=|i4Dm58#nKao&2;+hzLBwGy?D98|i_r=Z%^A{U63j^=mg5xv3&EWHZX;35M*eS8 zxi{(qU{T-e3KkDQI0r5G8|6^g-@l3PG~~i@e&42uUL+WItPhAr?vO$MNoX7OLtVHvfubB%Wt1fX_)SNhXp?A(&beM13a{Od**}Fh)0u6I^&BYB{r+g>_Tl z)#)unB%5=@!8yF;HAn!NT=oTWR8k7(xv-v#>$w(Vr1SbbHJ9@U1?nKVhs(w;NK~MH&pULFv`Xbr$X$sFz#@ zja)Vrc9kN3q{F}^(q|IQWk}(oGC?F7>LEkIL~d*e7QcgY~?i_uA-MiXDI5Q$U+=8FAGG+3w#bsY}l6goR{{Y`a(^% zLi(yef~m(6k;^javz0?z0!s%-o9*8S*0ZtPkket1%mWr-^XU?eQOs>f>>e2m>n*07 ztcj@VvJh`kKBtCQTul!}9V4flo{}aKPgsz}V-`0d@tDpkwU-jHn4T)AuOXCF&uS!N zRKp_b^RsxWNHZF85e<}DPKXEcZd{@%DYZCvu8XvsMQ~JLFVActirLH}%+ZC~qCYTg zl~YQ2L9W$RRCE!^h(d~mT;806T)H6u`a94-gpR0Q*a*W_&@<;eS12<9%tEb2){ zf-yxVBo@Cr)@;@o30T|cWZ`IM_pC%R*Dff6lWrQ=O*)H3)_O%Dq7im6!$dnS`pQ!K zBnZJyQgm-6LLqHcQda#$6!jS3N1<{{QW4e^To6l<`g1vO)HFbr|C&O|C=0DAty)@( z=b9&dwn%Y)0g@5(T(X=A&!zFG)<^{Sc$Qb*d%GYtQ^b4Q6jl{$W?q! zHWF4Qm%y}WrEjR2*W~o6w9rPRJD<;2wNqWdZH=Blp`moBncTY zbQ&2z00ohHs)J-B>D1I)L@Y{%O<$SD65Z5kdMfl00c9l^M@XiRbe1S8vLF?pnrsjZ z5P9^GT9RBW+Iv3AkK3uY2uUSCbRyazk~WA$GHHfPu9DhnLiN?W7P8^k@*RW&EaW$Q zLGcD5jZAKShL4 ztEFT$SgEnB7WK0@pj`h7S@7$#q|)l(b#Ga~KZnxgEMK;UQz8x2Vl3PxMP@xl1gTVl zf{+_qPXR^lT-0c$9A6^wHo_A{G~xSGNJgS5B8x0>hIn{P2~&aznRHdtD(XQ~Wf_@h z?xGYH_m1!X6^wq@+(21njpG^%M=Map(!Tvb>Oe`=Noan9x`t_~9=^=IL@Gj}8Q@FZ z#{$!<>ZsZ&_OYAnhhTcEddL7p@<9kH3hM!j>=dtA}QFdmP}|8 zPNWQp+A_HuqQ8eD(TcDpGY`=k+05(4SUw{fNMIaD zQo_f{Ffz&*=WnIal1!=9Sl6lVcQGQ!$m+3D3^%Pb$ZpwGnLR<#7eq~_5KW}dlqN$; z{g9GmRP0#^ zl7VbQD>apC-%#kcuZ5`O8WGKPQ)i^dtjj0>Xk5Pmf>{qi5RDMEoFg3;fLx4F&U4#{ zR;<~WRs&uyu@rL2f&l6`-;gdtktWe}x+ytw8g=DS2!@C}qL*sp1i>t^$ynxlzrt@u zl3Aukx(pd)lF3A)GR(rhHJBypE*TQb#(+d~6QU8NnE!x?!1{@)q^uar%B;NeFVbQz zSHw`#SQ1T*Y+SS}x$HBDMMyLjq93E0D&$gsEXC{<%go$B%rL9i_(%NQVVrhJ|2?#llpXD3OQ+AcAPCX30{kDN&2Z zP;P-jJd=>nl*9_WEPPC**28`V5Ka&ck11+Vhv}}W88c+c?DR|F+#ZxdG(+s1BdVzy zJpGKV)#Q4OkxNF@Z0vjCDB&2vc9FK~CT-P4WYN8zzt>SyTT6ue9b`lLscZcn{-6H? zo%GU(cIrU^Qe>T5t(W8?yyyl!)Jsf}NiNa!iG|zkZUtUB&5Htpi~nj6=t*|kw`3&j-&s^$jK;5a=ApaW;@w|P>zwNp0XL* zh?-5z9Kw|aK6@jWAQrA$Cc?kT_wpu!lNG+t!j#$KUYagZjLq)a6h;4ftdKIhNy_XN z5stWha8tT>WNY-eSfj|jE;|BVE(B9su*+g!ca(IVLLk;qik!F9C_X2chulxpNQOoF zksz87k554=pb*U?BBV#8u=4G5+Dl@IW=R&iveSMjfd!Feln5p((;!cx7-2JKq}YOF zO!wt_k2MTQr=;o1F*j3YA__9%d`i?N!IWl338j!pL_bxnqeMch|CfoShz3lh8TG_M zUlB~yTu9HoI%^8cs7U#=q5&I1>7j`T2GW9v3Ti1m(q2Y9l0}dVk)tS$o8=e;W?e_& zf>P$2F8IZCi+7 zwm>fG?@5zcRPQ6jlLu&KkUiE=eXmLs+twLyfWzow|)Odus!sZ%$}0UM^$nY*&>~G%MKNABYAMl+1Y=R(dRjjl zls>*cy&H*qH_(T)9#O_RE`JB%BZPaIk^%9XuA)}B+Ar}dz z)M7%4Ohh7?1R$aS_YZk8QB?+!6Idk}h>iM-1k=K?iG{zRt_~v6NH8w;tt|T2iE1Pn z$)$}b!`h6*q|&U}o|O%x%V@x~He>(GWojswAQ;J}k;lCX!T21KSO8KHHe$B&Tx~>n z9T4vIjr*boB=LCvHa?%RqsIXRLz88+0`Og1U{kY51aJLCVp(BxBQm+{4J`A!SlLID zB@*O0>RZ!WH^kq|5YF;mRc16%(wr&0Eb-hru#wLAO{B)Qv+$cLLq&9S8xagWFrYM8 zmJWNgs;J8}noX6Y`jjU>X8m|VWcHLE8r=gvcMy=2LIhBq zw<)8V0HG2eJcEp$b2(~H_35;#W>eH!g<#6xpA$@uN+1_y(L^To1QUgQ2x!r1SOV#62)md`U9s;duV&MuvB<17QpeoIpQXRpR2(UOf*z{=; z-zY|Mxs7C8wc$MkU-u!HJEqK{CPNKoP?@g;Lz7txKiX!Bo$jJKHtkQH)KMguXjo*2 z)X##J$%Rx32$d3l+vAX}KrB}0=0QQ}_ ziBh;Pgk0=lY6KHb0J+zs9+FBB3yVvJ5gbH|(kD`DVNY`uqNjNjqA6ksi6x><5Ya~! zjTD;}m03lhoq0?tAnb(Nfcl3@BbQ^VVkF|ht<>R)#x^{wT* z^ez7f;SBhHn@GFzJ?q+%Nv4Bl#|*^)xlYrAYAl){`EE)wx&DFxfaoObV;~e$XA((7 zJNC6u%=SdNG?P~*C4F6bx88p z?`3m$5Ry57YHeqbQwN{b_%R3uXNyUD(kja)+Xt2)nPp%fjNiQ=8HnX3-wCn8_hJck z-#pE%Q#6;3Z&(+KFd@<0B)YMH?{SIF{)Ju0lu46if-$n7bH9#Y?qVAw$r#NwAeiXy zpw}bs#!1`RaWd|v!(ghMUHg8FKW2I8oTOd=JAqAUvf zG*#9JrbwR8qjEdD`5zDrw^z~}f(KC5R-*n@C%P!t7jiLz@%Hh&#j2)mLm*KHnSVww zcX_Yw(qkmS+=FO-MKJDYyGU)dZNvWvLTRD)(#j9NZ3{J+t+~%c)mJZsF@O?jkQzma zTvRAU&xW;WKR+Z>Q}*u6Ky)*lkK|EQU8~1TXv&JM+pNlqtLsd&RrQ@%tRteT zOOfejVAClu@-a$TB2BRb31)a15N&x3r5c5PYcFD!JoyY!#SE#dDbh}pV2adJsiTy% zn4SBjLDN1Q(`1tn`S@O}Xy`Q=XO|h^@&sxjp;e8ynLyb!N&m z30Y6{w4O%M4bYKJ_8$}?YgJC7&PM2ZbUY9|`$G=&CvG=8};HPS@c3~4pq~(=SW$Jst}*0 z&Q+bno)@LbNR*3e%VYel{~70AqM_m)RwA6@DB#g(M@5>V0aa+BaH}N7CF-(RZ(mEU z>15lQ4ANotA3>lQIReVQX*pGvk?T|05dZ=o)_+?%21dZ3vxjiavM^;11Ybu z=xz~TGrbnN<6CwdBP2gs)nG`Uv4buI)6YUaq?8#*E>TY*QmAhzjD;~87HKxD2*xy& zs;dP)IH3c;5=^I+%o1I`MkylP0{GDs;wj{^NEjx`=(kiO7lZk~fmOx(Qp7Lk?0HK( z0}xFnm`pZaC-GR+@1pi{oyf$Vm+UWQ1heWfc9n&Gm0+l?Knz;M=sVU9!E{hdsi7hm z2}>oKA^{^3{m9yhSo9`q{&GXQii#|3Wuj?wdpy3x66B)lj7CfAHrF`+OfX~*NFg?n zo@@My=T(ZWSKx`$Y3}4n{QRgfA~^APl%wb@ODXfZGAWM_Q?uc`UVv!$R1|=)A)=AWD6`(w(xyuLUJ4|d5CBBM-^-bZA_}UmFOg1= zOy!9d=`rds_SEQY_7?F(NR~e%7>UuSOL9@BTqMw?W8Y{;yvA+ejb@i2gH|S;CD^`} zY&(-vg|&#$O#`2=8;W`*nZzPYldTy+`q%>*XuZ;kok{CX+*~0Ui~B0bG>i;aViq&| zWCmGW2kjPzM3hWUAeWpV{WM99BMc$KF*yHSRADZ-3lt~gM*(zXUW8CoWQhg*i?SU} zZt9HxuZTtxDkx3@)r=+#dH+!Paa||G(m}&w2WiZx zZCwN+SKFBY>{eEQoy+`TL0y z`cRP-q8cRCRos!oAvrqot?Q^<qo3hJaw2zoFRwHDstv`7mCA zr_Q9sGiTC#c>PiLBkGr2?BLIfz0H(b!yrSpnUc$*rXJg4SHE?aosl+^V3vq{=gB-Q zumPE&hUQVL865y57|BBNy2r6i%k_UNjlRumSvA>&9DQx}^yrONS=Shy+-IS?4_VwJ8p$rt5D$dmqard zEMkS6?jz*}qNXHa*-#oDW)L96B1!{hkQULBL}o3>h$(w~X(vNE&?t<@cmgp>E-z8H z38l{V)6{qFTPM+TOoSsqbMK9iT*5U#gH0cw^jL8l2zLM; zI}=Qn7nf9Iks;eB6b-ReUrq5Id%<@p;}GYM?M&5YBPm71hKqp$jhtfB**VMCvx_nj zYf+C?$B1Gi9SO!pO9@8PND1cJt`nF=9-|TRFyvAZ3`JxKCKvfNilku7eTMgv`q+bq z7giP$O(7O*2!YCdI2@S??R5hXK_c~ld?cXoJp)DrwX{=}e)76ZC^>4$1XC62KO-1r zoO-LxRfu$zUHL&S+&Ansa?xHwncG8M2b&TxN1=0;FZDE-<%=!!T{E%?qOrJInO-h> z-c|anp2&(sxe!c|2}f$Nh$M^#`8z{98%Tv3iH^jM7tk`tv}7Ou-@`7midV30JB=!a;um9Y<|5KO7_bdy>VMqC+?nSjuGBpO|vxxP3*7Z>I@XHbg#<^3uI zQ&WQxtynv`Y9ZeG3-y?03hmZfB#=mn0pGJA7)U`Ft%x=v7a_THLMoDxsWc-d9Rf_H zg(!e1rIE*NKqcn!3Q>weg6k;juA{cQju@hY6k;o>##YsKj*37g2m^Rt&7IY5ME1F5wpHhkXRg)5r;^htvtB4Q$%Q^E9*I@JS&5D!RQ z+Z1}2RJw+onQXEO&NQ2mkj9-lFoz2>|DWZyMq9c?bK9y0q`)B5Y%Jj#Qk17su%Tfnc5^M9^|3904SOnyDq;W2n#Gao=oknHwYD5K+A)LV8DiGcXm}Ze- zAi3)}9rs9+A(-$5ivoXM=rZhqStXdUy(ek}Getxr!qQ&U=F8*;L`i1;2n)Y?WdC-j zUm=qVhLRXhx^Rot6x3>zQ2I`cT*B$Oq@$v9z5+8fW)3id0D=j!F{%kau&OxDk0hcP zzVOb_nB_+|!|pCn5zGv`sTsbQqNL>{7*k=j2FvQ)qvk|fs-Sp}S)VcmR=VD;g$Qd| zqF>@>_t?!Md!w?7mo)UiQa0XU^uZ6mg9W#Z1-uQ}t}3hRbfQZXrg#)*1j(QR^l^G9 zz!%2^z1$?1W{U4EL>nzc5T;>VP^}%fn|J5m%fc5mib5_`pNJ`^sB4&d;(=6pZN!=G}B+%6<|kd_>%P4m!!%dm&;%B zT*#lB*U~DmZaihK=!cXfm~4ib zYdNOdH15oRaEz>~#z9kSQ3Jwu9@_}fY@%MX zj_6@Mi?p^gS?QJ4UL0v4eR~dak#u-$@s>2-JBZ^w(aHNT$IR)mf@~o}`YdeyAt@|v z-a=k)&u&QX&TYgcK!Tyz51IM+5n)v}J-Ml}5-AXIJSDPtiLs@4b?Rtkn3;_&g<^sz z_6Nb_X3JWGtc|h7-C0*<2U#iDUi`n~P2Yzmtq<9OtOzh>0zaMX;ec8SuP*NUBf>1$EGosn%|vX2)#c8)@Fkyu(c zW(#;zGRj>WSwx#44rSv(G^DrMiCQwbn*CQVrS3d&T|!nhgn1@EaDOZW|l!JTn-5{i$FgMSwE4X z=-rJK%r1P#guY{tj?T$352l*oqPJM_9`kvMf-I-$as#F0B8r^4NTX5I6SWv_O=p!_$s%=u;xm?eTsFtTAE1N(4w1}l zYBKkz&qy@O_|x5lNR|!ALHuf^L$cogqSG9}X)S=|;rHV$5^YB`~xlVm~(m)!@R*&{(%)TQ)Uv)+Y3Z3=N(>_Nhe1& zm}-I#)K_v%B}X|K_?AUl4KjjUKH$Lo{`@AeA$_>8IWE7$=0<|C4<}^Q(I}Za^Mf!< zi-ngNX|Rf5Jo%;n`nwg@_OPK%}4VA?Yj2cTcO_CNXsj-q0D+~X$-dvT#a=0w>MGaF-(ql7( zuZ4JwWQ6IlsL=?CMS>v$Svhzz;P?RNu~^p#sj&u>kjFf?6-FyYPK97Xd_V*x#)&TM z)hQlY!+dGSNDb%)JVYojhWP@DL3UyT{7^>N>5Y-oo?sWJWO>Jau*`{G5GC9>-Q^dnZri|1%3Lby(G-Wq@rkLeo8#PpKnQWoq| z><_syP$FE9dUEk{7*JLg|Ekj@7>^Q6xn7e@iAMAW$p92hMm0J#8^M&JWMRece3`1* zGolotmC{7%vCMkWZ>;p~tWL_rg_(15Ud^!e9UC$sk^!W{f%13dW#;2cSf&F_7aF11 zMA`f`O0TaV`Y(uJKrMG~{b$vSXuN#6~F7aGJFsR2`5I{bMxdh2wHgeLwhmDp5vv}@o zT0V0st(-c}kUwTIQLl_B#u`bGOzzr`36^}1qpyY9$UPTV$mTxR-G}J!LGlk=boo4P z(SUh}-+@G9RCAl($34=~rkd`UDd01W1)cAf@b8FvNZT$$GD|pgixoBuH+eiS`&dGf zsYNqY%FM=3v1ES^1XVu}&03Omm^;XY?~$gvr*MGZ<{eUW;x^=Sn-rhN{5O3Vkjza| z0Es|$zspP1^A`C`=MiNr@%_EYdEVw6?@%|AP;c(RsUWZpQd$c+apZlF81L|YId;Ig zG1id+)%=^gM=Y0V(M3U~t98ulDXF$hBF+FRkXS^S1Ejmcnq?JG z)I%(Y>sMt1-3U?4AT^nOKD2-ahhYU@j4g32*78L|OkImv(5*Lwl8YTsaa#^6fBRY> zmr1^`x-UBtIXf7W9;;Gji*zUl$r!0XBuk{YmKm^g^AJCzAQ*^*s3e*vC7K`?{^my~ zX1UEY_bDXvIl)*g&zAj=iYARjB144g&OGVo%i7DAtB0Le*KTC7jEi-rorwlZdv;XC zhCbYcD<7^vA>GuJ@Uqc^DIz7ds2f zc7v1lX{D%pZOi_!jPIl-VahAaLRomVJu&(So0G~@%Nm7?dT}|HL=_Umd2l|Z7SqmS zn@+RHoeTP=y|QmtEVfk&shCkldMW^UI2p2vUc6mB!4$XUu=Fnx34#KNL)7g0B^h9S zC9L~(X|AST4)Hw0L|S7`u_US*LX9>^)8PO%Gg`oe*H~@Hm_x^$3&V^W-jhr!d`>*~ zD1@imf&b@NWl3e21xF0={thBLmUL<&0Gb;ka>HUq(vV;zm#ZxNO~23N(n1QW5KNFv zMHtaTLw&^wmr9&l*Qpk>pq~jP_q9OqyauBedufy&TW`7W?^wwEJ2POIA#>?#i~cwX zKrpQvX&Knel-3OggIul32Vy(iIV^KwcX?P_YpyeyIAAg!6xSxBMNTu zTle+*{||T%b%>U@?vmvwM01;nP-qMqCZU{TCUZ$WrxUZ14kD8r4?#%Ct?wPNmncU* zk7GWIq+<`yMrs)wz&aN24N*sV4>|k*N&IkOOL}*awAY1oq`=mpDqBkgv!3W>10w@A z20ol4asiTzxBubN*7UeZMtA%w=I5X$b37Uw;xa(?=+!NMz@szdQ^jjG;_nb&Z54AN*M~>4S?=(xsuu@}* zsD(6ziXJ`1oUdZ~Y!EVWW{YqNj*#45oEYVGW{HF4s5|w)K`k%(dn*@y~ddk-yolfwKC=95&ck?P&H-mhce>g!BvX- z5{=PIkOonN^^Y3KnEE0D%OizVib*z{Pxy~zKe93aEnm+5Wvar832Nq&>oO=tM9EA=`*L%mO`3{b7j3Sp&=BnjFoa_UCXOLgUVOZ&^eKvH9=WwjnkH z-N>8sj2m7TWYSBdp=a4BinbBzO?{-DB(M-Ss6d0zC0|7l)?cD~|0{`L4^5VPIU+%h z`pE9w)epIMMjs7nFVdRVzFkLZY&{XsIsg?eqt2T6Uv?kim2Fh;!rSs>~(z%mqnJI=# zq%~GZS2(&{g;#xpWyp^qk0t7g+Q4Lm7SRer!%Pu{9SrHBoHpbCB^gNQE)m5o7TKF@ zJgvvv!%;(zvjtx3O*Shld{#?a)}_TQ-=(GP-=yUoYe`joM~aGi4+OPVai7cL;bF*;*YJSb+&8+BY>0yH zlfHI7&0|vU4n51#=sJrVqLKUHAx+u#ycoINXH$7s;uY0-J%Bj$Cwo90OWY?_E{eL% zSvxTfAwU#{fI#tqA_N_+7a?YALh+t^ZVD2JiX^P4c|pQ=`CRTpMh_q*n^cuMml4NL zm`5Y|IF}}4Lq^ndHbk^z8q8=WM>N|r=$o;A^MSg{d!h`*0wU~Vls%uLx8~dd(r$;U z0b|*g{{sXhqK`&<8b=CTAbMfUfPFm0^wORg#~|1ng%4RwgAA(}zTl+929P5Q7ca*QkAz)+p17#DSd3fdv5G>hcz9(C z7>eVBQ%aH@R3=K_i~r|s%HXan`z<#4ro{Nca`w6<8P-Xa*f4LwN)nzrQ}kGr9>!Y#!1a0rK&;H zY7tTR&QjjoGeSCyg-|ka5glVO6cb>So&AvW;F+xGg4ALcI15n=3;1=?TAss=n5B|U zBtsI+4!nyUcqa{jcC3d-S7}1DKSebbsX0@0IeK9cg><5~q>6k>?Ijjg3;aX{tHtul zW6X3{RbVeikZF2oEKA@j!DWfA`Ts%c^}3gpJ5hb zBM&2(LHc8iUiyhJOpTcmGxeqWL5WzLYcqfY^DyM%AhrH&>#-}!5uz!w5nl5!QH+So z_Vjp!M3s(v{xME~qfL(1sceFDvZN-IPMH+CAD<@@y2yKciAe4W=Y5s)ZRYi~v!Had z&Y@SMIeu)-hR~-c7 zBEG2xciN%+Le_knB7G1I3vbMk;kDR2`S92=Qf&M-AxDX0mf1bCo4ZHmblX548sni^#rXL@72_^0y=vfPCUM)Lo0ivVA$l zf9;+Pr_~U)`pCuiyb!zO?)#)NPf{tPq;1yBlRrI&JnGrnm+!N}hya8ipG&-M+zJp1 z=w6_)rx8y%K81Y5GyX3G1k_tz5gFCgXq76>LVwJ&DbqJE5Yb#|~Q>tZS(N&l1osLY-eIu%!T%05rt@^un zFgY@mWPlx1FQbF|Sls(r=v}PyxM6BB0Ukr5A{v@U$+5`T)I6XJlCTz2rOL|D6q<;s zm{s?Fj8}G2rhO^Sy{~Ltob58bheE!n8{k!&u~LmCp4g3=4F%jN(7}0-^DQs}b6kLS zH=cV@S#^`U6=lGgGiu!N7h)+XFAL|Q4A9C$wAlSZ1{sw+xTKLF7z@g=(6Jy(F5{5d z1Uv4j3X|Ml;?dHilL?7!5)C_Ece&SDyd*yRS5$_@b7+O4)jYRtCl%v;!WKVzL~=h(p$-UBU-HxF3QdxAu_RF#X@-$%X#cVnlV47asVh^ zWkY;teg*q+SY+!(4tZ=ci#~)B5Q5(v(CbMYD#h#^Gu;?ZIJrUwe?@e+?ft0YIc(D zQKc6WZeFKKy9Pe52F~#cyUi8Fn4M!t$HL>ZW;U_&b!ot7O)W?Jkry)Ks_8Yf`35UsUu#oe4j^>sdz zCL*O~Q<>I1kDUsca;V54n5EN5`Ga7P?y_jQ(8U}WQbMaeC={z%OzjV`Pvj;MzzU0W zS-?w#a2J)CQH4Y!tl8XU!L`2dh}R?8gmR0N)FkiO#8ya!6x+gXA{nBWo1~dmc2F=U zg1oC>fcG?Z>qJ9F7!rZxb&rDjeHK&+qL56at9VW$DM==X#s#+ycTJT=+Kjpp=bs5C zlT1W1ATQpI5}*hTv8?)|Wyj=jO}6V^*X61MzYtI9g(pDU= zX=mdUGtM%HCl7iB%w;q*g!B>=qAB+& zHJZ|6Qwsm3fi*@o2a1#RuC&I5ym((Zyvxaul1mp2m)*OLWw5x5J__j~(qu#{W01-O z^^-}Z$H&-N9Y2*8`5`QwAe0YNK7Gel3;t7($%IbD74-Xx@yiv8^-CzlBojzMOrdHM zx&%1;q+SMGMhlNYf@3?eBLTIj%hZCC4aQ#&3rer@Dv;at^M zAB#>ei(+)dLl{LCY|lvzs;AuL6TMh}a3Z5~<=v@=or|_E++V^m#irEP0azhH=JrNa zE&M>Qv0H3oC)f$$*!L3YsmgE5^oz}ss{}(T$ijHo?DP1%e~J+lHLNYXCnm5s?DvB2!fbwVl6F0rxeMs7K6`sb<X@Hytdg*LxI)5r%q$%wzJLiiO#T$qm8abCnp0|n5PxW7mlQFB#eU*XP5R+&H zcjN}@JSxN*Nx?OI!+nWn^gFxGYqsWgjoRCFUc3D`5|YvEC|+bU6!#a-K``Xem(QS@ zLLs!wZhaXNDMj<_FGjS&uDtYkWOA{F01*U;K1!5eI*Q$Mj%4y;Z@uGz_ji|XuZ@;X z)GD=knuau{@GG0zu?geWb&(EIATYD;n>7CQ@2Tw&EfG!LqqzT&;`}4tBmKP|QoMf% zdFc1`kmq^;fz;PmY7q%!bX%31u(u}U&+8$e4M8x!LWyK}%p8SO)-FLP)I40wIc9QU z(UVwoQC6}Xy)iU?I)(ruDDXX#P>Qi<@m}-qyVP9*5@tYUngnMGu8LAPk0%h`Gl=2^ z&;1%wDMP@bN9L$fX2>DNG+Q_~0?4BVYz~b^&&r;rn2Cn14h{jup}I^AEpuqJl*xn9 zvLm#!a~_^ppYB02_lS1HeH3jf;B=t2;WQ73gK#QS%P_dCYB0}jtRzMD0-GE0oT7j3 zgW)`@A#vHlKf5A?Q?;IOkW`uV^EetZQIV<8vR}k*d`%HuoWtO9_i=Xnzec}x7+?)% zghIRIGDS*k#>k~2m<0-KwFsuT73-J`v^P<~Rg5WhFxLA^I9uEXNS%mvAJ*RfbAl-g zS8);6IXP@m*fBcIQs-bt1t_g9Bb9?#f=n_7xZMCdL@|V{F&g}wfl|#vDLZ8s&5+Ns zU=)JsXV)#s1i1hs9Md6r+%pZ45KW0Vaz98eaF_clQ?>xFf-D}_hC-s4cIz(e$RkAu z8MSODnjzKD#tuE^qtr+y6ND2QGgO7q^rxG!>Z=$w<_sNsa`K=t<=6 zk|P#jS}IS4B>G?>9HTBX0nrFeI>#iI3ZD;33kQKJV$tFz+#L8ECU}26u6~Yq*FhA; zKF7_1pQ%R)X_Up)^U$nQLMf3_dHf)GRcYk2harU_Y7gBMaC`Vc50Q5tWU(EhF>UZX zo1pX5;jXeEcQvG2!>#G=__cIzqBT97xCYwN{lV5W(Qq>LA@%JhhaQnD5w22w-79YJ z9yaqHU11Z@LX_VOF7VyFf;?TE=QW?^vp7Ra&Ea8Z>3?x(SR?hGfKJH>07P+9c2cGa zvY7RPD(%Wwq{e{PX)`0i6jyU+G_~^iTC-84F@)TI@+2uTBB&)^-^y9sB(U>X!hU5D z8NH2=!U#s0u)QhniiPzJ>l`*=TBtT9Q($UFaxr2Ef{8R1H3&!}7Ec8P6u=b@EU^)s z<~bq?H!3Hkt7O@9*w~j}rGbC_zon&(>ktk=B780`v`<-ZA5+H&urs&w{Slq-)>CpV zr9>iCG{VBYno_F-2t+v%@l=tF(M$&S<@H!Q$@LTJ8m7V^v_KWP6kGmcUa4h`K}M>~9+Q|2PBb%zPTwX;3-ZN2Wp&;P z&dSx;UQ;8^h%ZCFG^w0sr#;8QXeaS3KP=~_1T=^QIf|iaF=nDbP%JbtWX#8j36yzZ z)h5M7HYR0Oi+&u5ScJ~e5|G5=yp$1YOr~M%y(shDyMBZ>ogT>|scGIMNj8tla((LtdYy-+8W#M9sw4@{<%D92r=z+?CJIGJT zHsln-3F;M|o6ZHIkF?ha>D9^8Y+@*EdmKfYJH(H19I55x1yZ6YVtN&h`cFP2NaL{mp5j?Q9xrLUq`FG0nAJNP{$$1-TFvg}M&tE9Q_i zk2YFfWP)Yb_9HRAget5N626SmOEgk|Z$ON2iRh!2=2}PO0g*^B#XVU!Wjprsw9H*W zE|$yAmr}y%0fI56S%~NQP03i8A+PnL3Ct|8I(>q{fUER8`$(W{f1E`pTWTo&S26 z*;PNuhG>+u?hNNQ!)G>2q`qW*2B+q^4W!Gqt`DV}3N@pZC+z$smH@_<1%+gC(LNJI zt@!S93!>6{l{mnt%2b}DQjTTeFU0Z?q74vHJmS0yv6!+FHvT=-oUt;`EM}TvplMHw zo@G^UOLY7@nxGDaL{>>gq9Nka^`MeAOUeoe9uq}MsuDyVxy+FWLQ=6A(_?_=4wFo7 z_mcAyuQ|UA>LK72O`os1-CM}yopv%6RtZLuL0$~W2qPP#9Me_NBuNTP7=^@?$|`b+ z`7xCxP1IKkxl}1V|5m~*xkLv)3R6n# z-g1qFAGD|@P!@Ab(^96@O3^*0>p?)yTX6=W$Gj%1Jhd(Rn(yx&0Gkk*w{Na zMXaWDSPZq%XA#v-KaVdaZB#W#h8r;`vRlc*1aLG^P6g9( z5<-v>Q9+OeyX7`+E73?S-P99`oHvwL@tFCsB^V3S?si2NX(b8N=q%5HajIpW(<91x z8+{2Q0bi4mfzgN&$|NeYX%<#7M(%$SLYYQMC&8Gu8mG2X8}(cbNXyc10Kq##dlx2dGUOuN@J|D?qh~4lADS#1_C!>(W6sevulu)Cjdj|O8j-YZGJ_k89pH5@f z&ZfD}%jwoYYkEB1onB1#rDx+k>DfqEnz?#5%{PLE^J$93cKR#}FKMgUv#6^YE~Jt3 zs0XQwj9MExM=kCo-)Tf8U8H1hP#fqnk|d4jcVvL?m&5VGa1;NukSps6X454W`eCK7 zRX>(3*}7$4)JtOGB`PmdU6RWxkT**(G+8#$WEmtQxga^Vf%7Uw{YI2y4PTI6`*-Ea zThn=ZZImOoKrr^a7`aF;3J!!d90|rw{&}rps0XbG3jNE-MZ-@IVzCL*#zTwjE4n6A zj}kXYTZtkUUS{zY7Uq>O7nRp7t@?M8LfgJJ-PxU^8BgzG7uqToW(TXOJHOFKmyJhx^WTM~>nTdyp1C${L zDrs`9S(L|D0auFik7$M#IwEI~zVW)sz*1rftC(t0)Y&_&vGoz4<#(`^Jy_c4-uNJHa&EpAwJpD>@r zMcb59G(xh|7cTNz#FWv;rFj3E^YU_OywuoI$K`_X9}867|D?fQ0SPUvWzJe(SvB7D z{_jbHeSmO;O`KtrSxv~)m{aHqy*k-4&-M{DckDtm(F;@uYGK9KZH+QxJM;AxD=9E# zu0!_4kQNx>hZy}Y)eteAk|mZrUj;&O<~@jkUSOUb^gOp+pwR4G6jNT3i^NdegRP~M zw29=hfCt(NwUZ1U8!{;bBgyDO9FD}KmjWzU7Ip2u*Sda~-IbD6kvrwt3A1}wNfks> z2!_XTmmf1yB7)&EkYF;&s8F&=&;AM)TK+a_a;F_LZ>l*sWxQ zXOl6ERmeE~SEF{FQ~Mj>^$n29@pCG*D?gK%@M$DVls3WlY>06b1Dhd3&<%-nQ)KU? zU&Z+}tF|t=@v?-3Tqe@7IZ|?Iz^4By_Ay$|v^cFY zX1^dH_#&h6%iZbHm%Gvhq8JIro|hKC1N?q&uu-rEFc=Nx>)F!@R5_i7J2+-qM1x&8=|k|A*moO_a&C+q?yVr_+ra1xmZWYbpRq9 z8Wts(>`GiIx*!+RbC3A^3fcTaf~l#$Boh`r!TTV>df&eb!Bi%e5{$d+7#)C@nFJ&3 zRq>pjV#5+sIAb81ZqGzR^>c5OIGch)NDz@-HKeUHj9RCfL0PEe-gTtk=3Z*0W?XE& z@Uyaa=`NA;0|@64LXBrYveC{ZTjOWqu#4mzhs+~mti}xim zdWRU`HEsgB1ZYbW_B8a`tV*1>rjK0z1CMKyXE*`Wd762@7-R;~m~sp0aSSS>4g*1k z;bk?7Av*hOs0>5d(An(|!Bj)3SeV?|+nsL?ycEy9T!_J1M|LXCBaX{Vd*`skES9L9 zI4U?tCS@K*eal`|FD4AU)0AU z*R_?wQkX32+AFyzZ8c>R3OBy2E|PS8reH3E*Np}qL1JIS(;a^833)k@$nbfJ>O>;_XE0s0&<=TB=l#}K&9M?g z)(VN1$8c|$z@o^eVCzpBT^bcyM=Vx7wN#$h2Z*#lX)aZsT^m(U`L2b13=v#(>BlH# zXRbUlYYZIHtxNhula+bOoZ4 zgf8-bXTI2&PX8VmG==}mnqac=>88Qh^t2ZJ4l5IGBy10`&_8whG@rq#G<}+)KMF5h zGc<5@H26*4i)DT{i#VY#@qJk2GmJ=s&-xDa&FFD~L~f(H6J8csVr&`>-?H8GrR@F| zv&!#CMST;vx1Y;<*QWb)!9U=;bPMI)1HSk7_zm3Uu^+J6iy>arGQwflf;1>|U&=9T zR02de*zG^2F7fCHQrx5K0}rW9JUGZeG33)mK@UjZiJ~4WwHGDJ)?T9iQpt~V6qAXj zj19QYPTIn`3thH0$wl;Eb>2I9vlOcJ7tOs zA-H%B9y43^XK{jQHu2i1%ULp}_ISTvk)?RaF+h!LjnRoaJDcN#m-9r#Y}6=f(-fT< z&!Ury>vZPxwK{De=GspR$b3r@j{N1HS`itG*5Rb1pXP(Fj;b?>JPL`C2un0ZH4|B2_F&wES zQ)7hxSvH&f%Oss3p17QA5G93H2xfx!Z<5E(3aXq^G6iKSN`kQo(gjh12`e66W6ySm zyJ_FTB4W>k1S7dfijqsHrjUNx^C9dV$tg3P15~fs44OUUlw~_YK~go!(As~{ojl|s zx=D-NU}5QGQRzUbW?kqSQeH&{j^mvOHVHr;pv>L`2$j<)n>1z=-W$JfU z2*#uMM0B%?o!oY35Ys#CZG5iJ3C8-4H6;~jZ;1xQJ5t{7nDHefn;;zCyEV=uiN(lt zio1J$%o2(_+dQqZ4lDwbe5ssZSx`?jj_cte)RRj+!I)k%JvPe^ zOh_&>EVh|oh+-rdPzWZ>DNU6*+0hZroWGHa5lVcxkc+VQMHGTj2vB+}#z|L=lcp0A zl4`Vg%~e$5u@Fj(FRsQINAbG)yVP(z#w5uqg7Ut#`%8R2mPEjF>5?G92%9=pz1fVH zZDDc|-gKY6A|vF_$0+`L^zWz%x#;qED&~aZ3~Oldn#0y76HI{J$=`R{8`DbbrL^3H!6K=tn=Pl(qpr*8 zUdP$=;Kup%a^zaNOT==o>q@%Qc`3~_ogx*+V_l+FKwroVKcoo;7)^n38sJ7yevOjK z(z?e;(z!L`*!)O}Ly+ST%0-X%V&(4toKp11s={m(cZo6jM8=uAIzc0FQK}g+`lF7% zoQN2W(6U5a5kaw|DGj1!RJ2566ce*#H2)N&$*jR#r`um!{fImu4Wkl$#3I#2$}G}m zTrVUM$>h?v8)A4^;H&i!eFVuE(WoFJy1C5#^dA%FehLml3EF-kW550PPZhAse!-i1p@W8o6#7AWE4=<7)y9hyFpzdNLqLqSJ|GDAz~C(XD<>9DFU5z`axuqO3WcJHxhyLd|~)MM<}k12|T<-!z7EuyK-h<9>i z_9Y8c^IBF(Cik+G6xtjMu49D@vHY(I#wZ3`5puK{x!50yGN(CKwG>lhBNe%n2u5mx-Q=8p5_e zly3Rl6dWiCS5y%r5g<1S#-4|6n>tlkL8^AXD`F@Z;q~S(ENM2#-lo1FrZU!AV^2QI z7?TX~D(4-;T6^XkDV0m4ur8h@qG(Oi4VOr7T}{g!*NHf;rMb4|G~RqMO*CChV?-?z z=g&qR#d^vZlGt&)jK;~iPB0^Ug7m=@JG^;zVMFA?C;4Jc@f^c6nfXJSV5jDH#fZ{P zOBp;DwL2v7v(65p?l#5Tq1k=x#COspyPe314))<~sKR`&C1fW#f-!7a#5lDRp_Dr0 z)Zs^FPmVe7T>pw17^=H^lrhmY*XOXhDWjrS#}#x@Q@NojC6Pv?#cHXoOb{)o>#V1= zlG40Je@ZwfV{+L9u{3_YjI_VSHFZh>oyDj!^;>$ zUV&gP(_MdwF8eE3w_MtvzQ42^kFi}j>L8LRDJw6R$f7L#F8(j^Ad^@$(+p$H=wH!? zEEA31V(%a^2}@{7Jsqs(3r6_#1)xo&dJ-v zSMu}hB!hHFn*}JwgA&!08jbauLP8Q%jP(U2k}?0UT5OiZcZMHMLCBU>lo7!QqnJQN zEYpx-kvW&gGJ;S>okt4f9leBN4%DW~AQ(gpA!OkHyp8VAS$3WKfeMLCu$va9V+zXO zhOu(YMumC>DXFJBOZJPdxDU?Uv z_fB&&d3;hWXU;=Bkjh!e)!$4Pnl>y#5YwJ>)SafNJ1L2thD>H@>K)%g#D)BK3>DW1i)qxa^c|xf zBJ>Xnf}!~Cv3QDwFPX!{Di5{VfHS_kHn|o;DaTy9!abpmV64G7K+Ksg*MGk$HM8Jb zJBcA+k_rpF4UaZSI_@~g1w%_c$l5R{z5d;X)Qk_=)o<2PTlpqPCIHD?_>$`+7@`<^ zUBngq$1Z(AB!f&@Qn~Q&o5T3h=hGCkhsf5=f`Sk0a;Dd=A&0)c3G0|Ghv|>Pr;OWN z>M<5@yTBK&(E;+SVn z&m2Uf70e>3Fbn_p+1!Mx3p|Eo#54L=ihTA31^t&Syu#+eNS#y`Cfb;kxNRDkSFK5r;=Bqq7yRfOp|&CkX2p^8*$ z5ev4wYK>lttT@!3R zpM_*37#qx|h<>K+TS7T@=K?Oo4M)-o@Ur1xdfRX)@c#0_^bw-@bcu)nU$8oavItc~Q))M#r`XE%wOUM7HCQh&_Nt|*3IO;Q-Se4NMCU_PzVuHXKiZOk?UkIfqScqzltW)7Rq+ZfU!{s zahxyX1PYhfY2sczX+GUA-%*O&G^+-VVR3`K&d4ct^mtBwM_5(a_cwq57MlBvCmm#{SN61A_kQbdo!7@&o!1Ppn>3x12dhKg6RW;3z zVVwCqrq}#COVfE?K68yw^_bIa)W%#RMK=Z3%ak!M5Q)rCOOiY!5fy(y_zPEhv|^nN#JB7COE7gK4=V*+isbGbr_lQTvuS>QUBDLB6;< z>-Zew1=#rqDi`R|LsZ5PWYbRF53n%B;mulYv+==%=X&rr`@n2RPKs^xF*x)LM%Kqv5I( zHLcrRhj=?Mz`VwL*Jgc&?_C=UTN}Sujaz$&8nZ&sUMPelm8*g^L+yza$jo3wIlBuY zsR%|=(V$W+a(xDAGLEyGF|fqr?G7Rn-G~dxJi(w*b=XTfeN&8X=G z{BQ-5fLz4)4H#!$fn11a-kGASV7jgzxkkh7c`oq-BqJo7AQyxPiUkxEtkL>D zT#TJ3A6@k9e)ythkk3_7W=+DBQ8mcRSuimVhD9hNH`k4`LyrhYBI5R+ivbNPDTbG`mGPzOBF`@fMr9n)hVXAm z#%N)Hg|Z*tw86tC=m^Io^T=ryU`T|Tz@*Kmm{2Ly|7)VcUU

    #DK11ij*ukA7M{yZO`d>5Wfisl9-@ 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 z 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

    m0fFTBwR}`$Qo{6%gP{%B&V>%s=BiC2~*4~ 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

    VZc2xA(6ETh2=Z=U&=c%HjKHZ95uaJBDA^ zPWaNEU8wK4jtV=cF~)(1zxC2*-}+wl`7eK$#ms3gzwp*~nMM8G>dRkYebtpMuDZST z^)jQw8Q|ZFs1SV>fC%KeQe9=Z`Z<0`8|%lcY;Pq`GF?sB;!=GT6+%&F&EQY6{gt30 zc>LT2zz7&Mc*G@u;`(d8{!f6%F8~sM{tGIfzXCu6o1gvYd)&{r0T5JHKlnBP^(~0| zZvh@(uYUTSuk!WR0Gn@Cf5p(E|MkEAKh@9w@;?(J{x9hHUaJOBP@O$-gH7-eZ-gtn zP^bBDo~C?*Am2VlRL4mi*~h6mkmqhh;z%?}&j#898+ZXWG7O3qQXiX8FPl+6%L-wT z6Ybuu$X{(Q;hX3OO#GcZ#~!N?fTR}y=@B@nQuJ2z@?!Q-f%LGs=?{@FIZP|%2%F_e z+6-s;Fi-NPya5?~2QJ|rMxj?R0KI|>^;O93C(PS^4YK?7Cl3J()KDaPJ|t+(jGS8z zv_a)`$H{j9$jykQKF=k_H+YNdg}bmFb2@D5p07ps@o$)+5cAkyN-ZSlkGh{rm#zxW7pF`>jc+{g*opqkk=t)%C zdbj|9T)v3g8xmdj@u_lZR)%W7-&2^JMF0taoGHVpq!K`O(#i@+u6&6btpFp4u(k#7 zVe5;^gB8y^;O*=P^R_(A9nu^K2%H{<7(eaC!0C-;PtI`B9wyjb9HQA_#8AqdFE94@X}=A7lVRx4b!GeY^+y*)&W#cJ_)<9}xga zBC=z79d_k)V+fK&JNGGQ*g`Wr@q{Kqc?;)r02;%z*+$sVvi+m-X_yTeumBK8`M=KE znqo5?=Y2KF<~r%AowkhtAuxJkcH_^!eXeL-6(TxbubK=FVB&k0N~bd_(g3BCv}0n% zxosG3d(w7}Rh^MA0-5|mZ2SoT8Bpnc092(qa6>+Eg6Epoz!s5wi>)%-Vcwtj754-1 z7*ir=k;Hp0rNH54=dnbFS0ocVFiY}ZK8MZTipKUDe|rcJInI3?vLa95D`qi z@D|kw;POR)yH;wSztE0muD96zV} z_{$%mocbZv2J2@(aDAit8NA0|zMPLNfllN>$tCfij=+%_Gi3ZTT>h)M`4&aw@3-S zMcc_L;trL=1Li8W|BDY>XHOdpl_22^6EL8QW>^e`cmRl91V zngBR#Ih{MlDr%8&!|UWQ_?dIUCB;pX^}1)7tvxD$Fttw*Ia`+Vw@1*P4>JYtbf|cA zotGAg5fyA=s%S1>(un6oI5s9e=o-(4ZHusB_K}~Y|3hQo7PzJDoXoQV5j2$Z&IAy_ z!?`J(+yQY(bSsTrrRvya)xpp9z<>Bb^h0@=wo|lu;5$x3oS%$Srfmx=290~Pg9H>~ zR%kc*A+`$HPuu8VA+-D6cA^huO;wh49+uVPT8e{{2qK~iq^1wdk>EhKS*M=Fz|8Yz{B;326jcsPl0 zh}Y}{8_@}c1gyNjtRP0buR@H=XGFV<6`MJ~6C6xHK6;er{P?k$m#&=JD!{g)%A*9N zyubRfDRM|tqV2P6S)FiTRmtx%Trx)BQi<5s^7k>@oclP&-xfTMBH2DpWqf_xu`qbY&wlaS zfQai`)fZ@EeIC&G9N_W!uTZ71v3}ue-{*7o!R2P$mwdgatiDaeGyopGnTDPzEvdJBA zC=)OEApPqDyop9Rp-H%&<%4%!gB~&F?|b&VdjG4qxRK4i=hY|Gt50!xKfYVN^2)R7 z8D5MhObvSs8UECfmJr?&+RiKR@&*L=E%*rmLQsfIpXqpN6;2tIkSU`z@vVfGuc;se zjtlg{os=iB9S&To3BhBOP5-PB9ki{~wo8D^VT80%^Pgm-6$P`k1rRF`=Z4p7gr5)d zbEn}sfXH@&5#upJH3&{l%xp#%cwE=7XVBdg8_T#OMs*Q836OOVpTsWXOd^ur!B-j6 zo=U7F(rZOle7M-4O?TabNpq`;Edj)zvosPqAKkbVN2p3_N|0J%2paMj0)>5Sv!^ug z2_Uvq++2(saRczf9;H9P5&dTrP;wSAuRWs4^_)Q9JEMiiVzs1!aW|EQ?FspeK1lB) z@D-;x%?bckKEtQn$jykNJrS)uKlCpEBp#=VFsCJI4x|b(MRi2Cw~8Y+QzgXbXa$ZV zlN}#dDl2!9GE&F1s(6~hi=pJ$7LhF)rOQ@RZu%!xQH9#bjn>n@6+#l}AsSE?Ydb62 zU2N(sCpYGa-;J24cQ*1NHtD#pvSE8)8DAm*B!E~&oVI<$CVoN=f&W9!=@6UrG5sZx zP>`OI01&H?h(Ss6TGHE=O2wv z;&Y$;SNLs0{YKPF#L6Im2!)*0CEODgZ%=!fBi-E|NUQoQ~kI9`d_J#eq4R_^Ixrg=O6z|0?3~6X1{~d6N4o;S;SnOd-^lyi&h*|Yci?jkNZ8SNTP|{GH7@DXdFbH-wl_5ZC7|=THI!Qa> z6kx)JW-76~LOeDrqEG?h`sR5vE9wlVWzBop(sE|E4sK87JYQBF0Uq!md4H$$nUv_0 z1P}Qu!~qH#1YZG!+a94UXUvNy@1qjf&SQ55yI|@6ORMStmDd5@2Zwll5AdEi$ZKP( zYLNEPAeCkxC;1#U=7uh3#zxH{p@*v2_mLb$A0T0HWFN1ua&T`aXK@IS@DLI~nIUcf zEVzw)mxQ>acRxIs4)9PKI?J8Evr9#t%BUE_oKo~1{OukNDONCjEV;p&12cC_;f5j# zD?n9lwh65m)68m{&uU+Zv0f728@w;@;!GksxNsgBG+g8apFaTP`+!G+NLC`>u08{R zyh$7DO}LQH03e?MKt4k|E0$mTGXTc*W_1)#|m7+?~_JW^pvdB7zU zUS%|HD!gX4z%oejJDL`$Nb2={+FPmmQkJX3-6)jrXB)=5ero z_LJ{a|JN`6qWUj?^)on*pH~0lZ~ouaU;pR-tNO@?->m+@KloSGKFX~no;KACrjW^C#Uf^vROWqf=mN~)Fe%P^o z1MMyHr+7gnx%XKrg8GNq+*G%iW_bnf;3izc8%+B8wRgQyeem^Ht6zT)<6JT4y+&K= z^=C{0yPtC;?x1|Sr|*KL66)?P6;UdrAh@YCuG5-|!8N7Y2vw9pYE&*pAjn%p7EidK z&H2%w=gO9p&f9V1v$mRC%4Z`_NYG%}h8nX)HR_VP;El&R%Mv_X&Z`J*yQV1qKO@LB zklE`Ff|AN&7_bm9MyWVPX;BFv&TeoDq6%udRCOsHaX1eX5ygZF%ViU?hGGegQXo6XNjy?#hvZC!;)Pv1mV9NBuxDn!m9NOCt~HtfjMDgdI4 zd5GWHhVt}((o;XLdxA)j!ODHa?XxW=w5RsL0rc_O^ucfR!)@*AaU6gL5!8BClWyjYJNCV!uZHjC<9ca3nivqv z_!+AU+fI<#`=|)LUn|uJ!cVkU=ln84OMpG=Yibz zZ|pOXIWo=wiKv#d)n-Vhq`z%V-y^mNCvfARcX}dAcYXX^SAKY31d$Os4QC_0*sg^_ z8qnB2;Go@OS^1 zNn7tnU;dnE>g&w5p1{X(h6*9Mjb5sbURqTBn+fUzDEhbZ;%}qhxPupY2c_v&P6k`3 zBDU}bQBCEH3%CslSxs37m`8Dtc@!r(nT&AiJIf|G#p!E`59K{P6%RNO%j zUVZYI_>bq+dtYHD_G8R?k5f+j=pM7Lk<{KsPJ8plMUrW$HtsPX1|s|hyv7ZH<2th1 z8ZeAA$k=EH5jplWSBAIQj!Jcuap+bRs-hxJp@4<$CM%0E)&x9-t*J@Ab_p2gluZH< zXJ|tOc+j$Po#X3q0R--1l(+=dE1`>55~*ID6*IP-c;{SffaElQ;fdK0y;I0Uhn!1+ zgzy++PGd%e%XSPO>YQIeiLI`l=TNnd8=sL6>9|$W$;PLP`ScLg&2d^ZoXpkKv)Or) zvwtioL|@st=~g97E{tjF+gb&=1PCjZ zp$NkCq|d>C|2F}I+eQ`he+Q7LD5ilSTT9`aC;)PR&GCTMNO&nS_B{ZkRAk2$H~=zU zhOCzM(@9!@(SEZ1r~re{sYXjlX_ZSx!zga3=c#+5-@*ZK6DiMIZ84gw7Wrz9RaVUscE`o^dDONwA(F>s1$~3>N$I936PY#}nButcc2wIGc zj_Hf?B#0^C!F-k9x0DREipN8xu|z6GGXMVsp_faI%iD4E+;hFX=;v>F^^#rMqiU>e|eP+I+nw$@+& z_0MTl{iyoLM?O{kbEXYGd-rcuM~81#y|~AB^_*wC=>#tlEi1ue-4Xm3^sP7Y;%?zZ z1~>+`vyp7)Mc<10fi~4X&3oI}WVn>ikgGV#W^xNHucv__!D1MIIK`W27=ruEjFr3wd*74CRDz zl9l}B6n2;syhf(u4mYY-Nrbg!;_^gji(*7xrG(`fRpDtleFtoeoW@5unU4S>Rw2VG zp9~G8Y`28hSmz0_&(q?J`5}H#J<+L9=|>LjY;oICN1`7tNuFw&RMqH%(0B!Cl;KTT zfmo5)(#pytH2vJi02_+BeO>7z{Qt(AoM5<;@>pfEdO{?$&#~c7a0;K|`PDO_t6hHL zv}UrXPWAyfN{FdEPID+3ISzOn=QY9)6W7lcQyA6iszH!2r%R6l&$$DmG|L5_Pzdh; z2(zaOXA!}L#mSvA-Bef!IEn-GfH+S?&LLV+Z1^>R*q*8Z&9!Cq&A0vV=9U=wRoRC8r~mzCZhUegYMyT-9t5@bXI?mW>c$*ZM;YH5bdOLjhQl< zGU(a;D$>_e6_^#F@^#+RzTXUV9L24F1`}pD_h~&joBblQ-OmFeleD2C z8_W>Nl16MI@#RbB;1qf90T#CRoJ<>_?Yq8GCq8%G=`s$Z^ReDFYx>5P*S~ z0!UUCRv1}%2n-)%d70~bx#BkYwEz;=5m=})1Qx561Q9P?Rwkt_7MI_KN0Dby@s)ha z=Ym(sHduZwzrw=I_<8u0&(rGqqOmKnAnKVw_%%n(G954%-!rQt7OA;k{@Pmr&{wMe z@ZpbCAN=5NGqLMgb$04b)z9qhO}o!jo3{};vgsUE!x&Y@C<>|5nET*7NXzZt!U8aQ zHc^IdhO3}GWmNgW?E{$es4B4bpT)_2g%-+H%D($VA>WUg#P_Q=UVXKC@2gLVEPq;k z2(tSF%(-~a6RM5JPphX7?}rJ`meVavdN*i8-Jrs_#kzr6?lklMDJAho@8nQ;^w1Z|24VsojKiZ&GB0)OFfA4_I+?#|Xe$~wlTd5lU!rOPp= z)3KR`nXMSwlrNWK9HGKEi<@|qHj7`6v02L9oQ1a${KlMy$Hwg% zv!XboKf^R%{yv+Aa%COd!&F!PkLN~C#2TX&qxT`?t)=ov0Lj+VS*5MUrSrTC(6$r* zE`WqzqEsBV2W!QX>ZMRc1&AnWa0WWBi3T|C^Vkdk84?(5XT<^xB)KKVW3#u7WOa~a z^hv7~4;F0v@q4c;uc6v02=H`m*DFZz(!xqm$(B}dO*|&Y?H-nxFV%G)hDSCpSx zDITx_Ko#fdeea+WX*O^NiotaS87%++9(&*ydI1nsZ~B1r3R#6%jqbOi<#paqWnsH0 zV)VnW;czj*!vR^kzimHJ@lqXFt!x4qR6cETo{wS)zK@yilIOIl1eQL%9IXA2?xz7g zUw1t&XAGHyuQ6*)<)7axyB_hqp^8i}rrNc_n=c|6Kp;R^SwxII`-e#o7agFb zsuG$0WkBKDOZnCz9yH&?6H zS&8*mF9`qv1O+^10*F8$Xngd410Vv0pyTa7%Jp7=41g5X3Ka_XDLB<&Qu8KW3Mg_Z zZvqktEb=MIsl51}_LoX9)L)+kL_SL;@_8zftWLfKN&hXr{w9~XzV!8PRA2ns*ZA32 zks!ZSed-IJum0UfK3Y9`{u(9k1m)r|880JM@BVR&fMdwnhVg44(cLgiMRA&7LB@4L zk{{U4M$>}{h!gQKkk&Zub3?o!rvVGhZV!mvcy#3!p@JClo)RAT=r&R1&#G5nd0xHp zoKQi61>bo75YrxQs=Ie^eBZ|T4arTo;9c5R%4x6T^cFa-0vN7qfX7waQ4ru)k z#BiBq6o|72lB+P0Hl?u6HWozAo6reR)Vzh&MXca6lDEhuXt3#0X*iH6T1|jN0!KP- zL(dNw2n;SsZBqEw0I1k$d zSo_O@gEO?9gKdPk8*(Uws6hOg<5BtG=llvtOWH%xf`TZtT{LV9OT!r@y6PHF$w|0M z40Fn7odHaAMZ2+jg4eVc5!*3Kg#RPF5$Oc?cb@R<6~` zMD%OeGB8Z=XaS|8^qXVJflw(NlM~UXMH|HV-X`%5bDy@UM%jGF^;z)P4F)t}*2^g_ zU1R5T*`J^_XUv+*#>@VjZaw z6-LNq%ORpDooe~4m5GwsR4`@6Q@l2k&4A!BH|=O$xol<0QK+U$ZlnefGp{@?Yi6_h z@N1t(xdly$$!kcA^S>7G2nAO8+c{7wl~grwM4KvFSk5;wlgvYk@@Y8?a-5V$8#``D zCKW`)`g6Lsg4ls~W;<<5<Rkm3X8Lpf^&;5=ad8DJDs zFs&d;tcP#%32;9fwhqs5Fu6b? z@pUErw85{_2EWc;bL}$w8WqU(t0)|a2s$&$`yMaQD6`-%0U#>hw$f5txoB0jxN~*Y z-Lm@Q zN~)$6SiG>WZlFOTqL@-aRcAD1epC8K+}MZw5J&i6ngCC0lnbI! z$tyr*%B=lmL6OI4-&vB=>wEu#(dVqjDv5`Cp>4G`~w@B0c-?Rp=`BwX98!nN9Gqo2)aEquEK-XC-hk5M& zuMQ%!!id)sfRM*i4B~6+&jpP$RGOmzN6bU=Ebf*ap8!HFD+31cz9-5Gs*#yzfr%H&4>;I>hHm zrQnJstE#0PE2~BAtE=U-AxcnF!`p5WL z-Mab&YApdo;PGc4D^%1fOb~H>QewUUNPtMF!0N?q zX=%Mld+RfAeUtnAM)m2he1or9U->#e{~AC0D)$43048sK&7Xa%`U*t+M?d++>d!v$ z1zh!*9l!S%)tjIHcJ-Sd{HN8_i7OcMa9^LjS>2nsSv|l0Fh;Gu!U)IrG6d;Y-utfV z-LJo1z3;U*s&_wy@P6>1dMYr`hI(+DK*2j#LQ4Bs0J)1o>fTLe3n$5ai?Z<+k>odt zDR*7v>zH%RnsV}(+5IRQF1i4Y3;cc@a?0Evb=F2kJ11bA_S0DaWQ?Fe$?fDQCWC|U zG_A=>(_X|um!%VY7~=ahg!gHH!yKP8L2zr#dr@UXjD+eJ!9k!1;HZH>^^-bx6*H-d zQrakRI7hJgZhD%*%%lo0h&~JBK*HUO z2Lb-&6sO1&^x6;6>afjmfd0B574B~{q}b4HEyWmCtB(n?rUVhbo&Z4n5T85Cd=WPc z+d2VWnidm41U`9_m;=sosFGk=uL$;2ZB%}C#=t&Xh`b*1Qdv=?>^54Gv@cJYMP;^> z@!wP;!$!=TNma*{aB0;i=Ws*`GpFTHW7X9~0gxcO<7*zX;gXWNv;ci>l|F}0#cI#j zj`xG_0k0!?)UTEQXLwgi##l(DL!iL>M_vJbz_o{#Pn}~HULK5>RvWg81dwoV>(Y-C zKPP`~vy0Z#PWYrA?#E0q?dT>L=dozTPotOpyZSOp}FkxD=mFD>n}{y8f*!teoMs&I}(XD@=tZV1S2%G!I*yKO{B{q823qn0N@@P{9NC+O^rn=x~Ru3~c6RQkC zLg4t@l?t~h*B2x{1=k@c2o#^->$o4x_5_Y5Xo&k7va5tr!c2qx!YBzhXDwek?LNd^>RNNIv*f9fCyNikiNRG*3Mjaub@+Qe|UHDL_F%-1eYw+fAH@38Gd3wwA1RVpOZnXg8sd+1AxaZlIo+-Gri*W6Va~-bzw7l*s&)}TtW@~m8v}BNjo>syw*Ye3 zphQl72LTc{l&l~GkryLdW4dCH*u@D>+saMF6Xyu`=P5N#v9$x9+xvLplr9MJe?;YF zhEo~wnlj$}U3_hu$m-BgM>(BPM6uEP97%TT4v!^>7$s6#ThSg&RaBZIRmbIfAh;k^ za<=!1Q#qnNW+DiDEF?9f0 zti#)!!Q%`RCE&K9P+Yls+So?1D8IOQ2=0cl&V8ci`RWbpUFN(L(|?m#{uwsjJGAihh>zH{Kf>M3??QWpG?(3 zBDEkgH3bn)>uLyLbD8fbr=sQB?pKZ&GD^`Ypf$ zV*N`v-oFH~{v{ppWOaQVbKqOw{vo&f3Wi2nU7!6@_3@9tS^e?9{*&tWfB*NZ-}~L) zt$y=2f1AqUeazy1wR(ORa{K;cqRg!>2p6P+cnEQHAA{cAJ9sYm`i}k!z~Ua!Aa@wQ zdh3ScSLq?bTWHo3EUv&)=)G{x@f8(Ms+_0-l*3+_LPAU1$;_xwO93M10Tgqil*MYW zGQPtokMLG-J4aBCP=$;@f*T_}Vl{yQZ^Rgo0u<9x(-O&^9*h3omeUX`9NppUw*BCs zo4lM}@EBGZSwSR#1bJK=s{EN`r%v6P!wBc?qFo_yNMy31ctZ75ZcpD6xIj6b z?pn0`2^NBa>98sPtvCIsM6ANt3p z+)aB3zG9o+9RMUGuPiGEg9nY6(V@N1>?VgK#cT^Ij8F_wxyo;F7};HBx@t%~UJvLo&Nfhq!6Z$Y}>@W%(Fghp05onKEN4{1vvItdJ0DoZ_|i@DRb8R<;rU zUI#WRR&X{tl_aP7@o_eMs)Q+ci_=tRJ{Kc!6zAbArUV517DnUrAuZoR%WXS;q24{X z&=r<&Ks%!V!-#tJgbM)01=>|pq*6~#ma2qy=P9b+KEwf=R&A`7bgrnn+gGshudG^I zR#dH>YpaeW8>_BG>#DAW>#C*8w=l+l=hm?WA!`RbW9_KctXs!*msjlzmsA~{i)mXe zsyf;hRqZWYwk)pNTNhWY?MthdJ_cp=B3agK3OMR2S_YM9Y)dyhl8P}J;j+f+X!E=0; z-@gTDe3`b?SCHm@`=`ICzQsK9uYTkE)#twW4F*DeuKMst0E>V7AFJR0gFmi*=O6wb z)rWrdx2xa!_1~#J@ZMjo-gx8P)qCFc9>%P`3ZZ?!x_|Q?!GaHPbKk+)eUD43jhg@k zj_$k2YHzEUg805E`RygZaig99Mirq!&ji}51Q;4F7=}Fp4KMQj6mzdlmmMc{R?b2I zk-tz4rH=X>{)(8|W-CfU8y|(se5g=C0T`!@kVYwWf^zd@A+}XLMa%%MQIkX+cX@^i zMDVaB;fe4_yy+y@999HK(1J?BJGqUhI5?5oY6?!Gw4)M0B$K^;nLftP9D#bU%+xlT z+)c=hL{juPtt2-TLk4wYJ1b+r0W<)|9`kq{WTZ!e-w7~r`!Y(^)|Fg_6_36PL*4|C zZ7~_pz(5I5HV*iY?NlOL2z*l=Be$TB;s`z7!>pQ!tgDEOQulPrsh=v#xe=qZ1_j&% z5H@Z5?aDqiSaH4JLFy{Ro_tgsx%r!vYi~Wm6ag*)?=-D9+f}Dke9^NG=`b6Lt%%_h z#zL^cs@!3^o0Zj2QBk@1M2kjsm9ZOc_>s?)^S#3%EpXU}=4bjD?DxC*PXkCD5nlL$ zn*VumIimszS#<*TL3tSg+fCn7zkUp5wzjj38L@)VkXTD;L!=;(l&BOlzZ4P3LCA&B zmQo_?{iVM`&^7hd=hWvZD-}21h^TiX1}yqHA@4?ow3&&U>(*@uH@;IN?Y9da+qvAf zm6fn;omV!N~dSe zZ}ac4HWPQViI|TbfXNvvgUWiTD6D>hGqV!4HOl{2A0(_ctY}q289W)h6&v~}?<+e3 z8fjHPI+`});!!qTFn$NqD;2}VsSysECKc;}VgT918Te4zPH+%s;68Q(lxtV4sa7mp zS*=*ShSt-DYV{f-}(U~Wq(wC^ZP%p zzWKc$hfn0oR4O0)^cSlC@bS-8|K~?P3s`)(`j`LW|EzxhcmGxO8z1_|)%)K2q3X5Q z-(S7!Js+xGdG@~Q@x#}u=g;3A>)G?yxqP*{fA0xCi~H~x52-310u01}+_*($0f%v& zio+@c)znSCzJY@3dRaQXBN`-TU&v`VgP7`rVMw;B&eNirpxT&VaQ!4vNOM423F+{gg;dzgwwUHq~5u$T1P;80M{@wXx_-3^yhuzblG+gFk5Do+HE zNE+8NP<j*BhB5aX`bkzYt#p|F$+9g3PaqaUPqJ!e7E|DrB9BaL%ms?%txPbMU`-tP-1d&sc$Xjoyei5_KRP1B@u zSR*`WJ$mDJ#DlJ;Do5baPS&_^Y)sv&_5ob_5IqzH! zN=f=K6^I7hlYrfJT23pf<%?ESOS_g=OBSxGx)-5%TC|~Bv0^hVsV!6n+p4u3ruJ9` zQBjXWbelWooRF=6@VYg$sTMAy@>oXI0BBHww6`n+Kv*4CAygx@pISRsS8Y@zU0tfG zR#gj8SS?(<5-{QKE?Pp%YjM@m4uG_E0XUsiOKV5f+|p6CwRBcp0!VXb)!N+gcL0Ry zBimU5Nw%&2ZUrJ3d@?GCY)?fc5!b74D{%08ufvkZ5G10ipo*{^^(m_guJaiHByzMg z5q_OE6rk}I;fvq=$;dVq@R zK5DA_w5#skc|-;BfN`u3s4Q+rh(mIGb5d~tEViOfP}&}6leD+(8#!80yoryh`{(-zN-IQnp8OL$VtSnw zL76aDgGho$Dy6JW_Hv3IP)!7g*n*0P4LOilsfO`%EV*n;!F1VPcnm|{_ELo$Ic9#6 zGcag#AtRMQmu!qEYw~^eFxO-&AB@e+Ls2ehn4nP~TPWc-p`G8sNmWIQyoiLQZ6sab zRt&10GMe15KwDa5R>dSeT4PoyJhn&^omOk*tZGwR{h8orE9S73f)m>K8xb4AiBzek zaqD3|v`vD!a6ga#h`<-ThdpcoMDTF)ww*zX3H~Digy$E)QPral#7))=t=N?LeLSYp zZp#ha7DR~%mrIa*E}2>Z*uG9~{sn-dZNwUO-gv2Gyo`ZW8uFagZYxfpGSf|1m-9>hk%qP(8_IgwO*8-bpIhom5=Q7eQ9D`7Z-NmQjH$>ZWq&UQ@Mqt*g4J z78Wn0Vpy`SS^|))CfQ&MO0Qm3WB~Kp6#~cds*8=kosB=&5~_qnRa>*IrzKT8AkqS$ zv{02abJ@&eZ3Af9xNKoHbN$w~g|w%#(rBW>Xl`j|wN*_nK%^Dm=xpw)IvV-9sXYNC ztB`DAeXM|pl}J_=Gh0~l63J6URZ)WpKYIZ*a2SBaCjp61uq3)a1!#EraX5)jus#Lx zEpW(JeB(Pms=h&G@vZOwlrTnAR$qYEkVpBhJ%~Kdat& z7eE16y#KwwRlWD!zfnDV_JQibqxVo@yoX400OR5N2pN1I0P+Tx?*TO4V4~g=T2W6S zx}Q;L03P?AR(Gj7ZeF{Gto9Do#VzD)HzGsoa!A_XHQ+C902%^^ap$(C%&ZbH0z7C> z#WX#p=ow8e$1#p;Tc5?4WH$gZIhj?+S$;kWaGa&W5GcZ!SB!UOPE&QTMp&l>j-rkV zMHHJt7_3YKRaP6kMS3y>mQY2NszRb$Wt8eEqo|DqIc`OvVUKl~YUD7RcMTYE2~VL! zHr&=xf#jId_&PQXfPu~b04L}{Hha}m#*usaHY`x`+l}|2Sx|gXj0@RkKbp-p;>iUO zdeVK2#_ZpBoDGl0r&1_O zF@Kf<0p-6ZR7?RN8sS_5e>$>#ERz1*p8PQ#@`Aj}>2#V8k2+Ib5ao5~H$~XE4q8RV z-*2aa*beB&JbIP`ts;=J%(C#rFM#YsN*V)@oR%1q6E)DK@+oGX*w&g>L#4rUcgZW; zPD^Wxd{-LQ_z z06t*}>Ll7mp87jEYzb1~I3H$^Xd1zAY4=hjvWu&Q zT}!G(u1=~5s*rXngy1e{KXtnRlCH&Y7>ifaW};eIvVvCE%4!+cZ>O!)+|*e$w=N7Y zXojO`h4^k0JXo!*ORFY8qzSNyOTTYjQZ+O$sphlh0W^(G-bY8(1VAisHMH=v7OvxJ zubLX#t5$yA+}IYY07$l=KCUeHi?oLVI9^;PIAk>u6@{%RfrJX;lYqe|X*+#_3gP4M z79WM|{+PgFD~i_CoA4W7ay%}?_Sb&!)9M>c{QJfa{+w8oZ({c2K4`M7L}CB{|MW>j zK~zP3lvdP#q!snA{>_K0-~VTSQvIXf`(vt$e_p-s{r`Zhs9(dF_v_VT{2O=gz78k= z7=XotJFfu*wxZsM?*)+O_xasjDh`xYkM6!2fN}d4mBy{da2k&RlLvhNfU@%zw*4Da z6t@5fE+xH<2Z<`=8iSKqm<6vo{D}6{Wd|W)-pkRfwxg2Em>}*W+EL1C4H2Y0a*i;< zQ2^x}OG4ag;uQH$!za>v5i^$qM6&X*jdhwf)+wCap_HPUNY6#aKEzA{H2x6Sq}@ zZ5xe${!ObFqeqHk+YhbfvlGq)58F#=-ZHA35JP}u7aM3VmpcRv24(GF!lDz_dYq)j zM&r0vO`E5b&X&->Beu&R5Dx%C8vRb%axpY7=3W3E660*v64s;e4`Of-e<_z>#XEj1rG%_FB2b z{~LhKMjk4#XtCwyA0QN!Ob&{Q(8*HeM5UuoMdDo!gzxtm3MjW_>roX|w5j|*^S}_V zxua4cpdD@`zt9i2;C!2CBeHBWIzL`-g=FtmmM8r^wx~ij3m>6m)|6PstGdefn(tis z^YmZjC{~qD8DXC*lZxdiwgDd7NKf8s+zeGoKgy|o+FbilDjhk@`=bD%&%uzPmnx%p zolOrosZxr{<^b=}@azEYCr*HB$_E`q1%hO<~$b+j+6I$0fj-_gOwZ^Zy#(HiY2DiXf#0H8Vn zm&N?e#a%oGi0$s?g;W{~sSvsWh(%RP*HWamivfym+E0t9C;$~m@CDpw169WYfrHyM zG%v2^G%l`YH!fl=tmZd#R}Fx~`~_{*oQAe)ZbLIaYpxbFw^s8STlrmU)wG}`7vI11 z(NI~HHWWnp$5|f(7z7O0NBR0={wyjAz#^&&l~Jy*QBk~Aec}sW$?pM|H{mZnXLi+h zeh5(fG^z}P6TgNk>T|ZOSRelMm*6e_toq|W`uEj8{zw13`W>o^-}r6XQ2@rXS3X!h zrWN(%=?Cysynzzxjq1tc4+L;LeDGc_--oo8p93EESOFreM*xbzaqq@c)+2sLn+m|V zb>kk~MphfwuHFVTZo^w#r;32TxO9_sHPUJgAiPLSNT$}N^wxyhI(*O;)p@H8q_h!b z9^rzT_)MrZLkjRPx*RYWq3Rf>;t)Je0v;Lfk(GmhaGJJMf{C*)0FM*nT#uORs50^- zYU?WHfVQt{;@f!zfI|2z>}RKBR#IBWcHN!|2`=E_rhgFr;eeCLJVn~3Vd?C4Wqwnd z_M)mNJ#0_uhb26zK6FwWEO(GiGb$EmD%-x`!_XV?hcpkH2#i`R~ag32_rfncwX^ z4E6P#21n7qpQVkUAHoVm?nCf!6Y$1=!8fETDPgvt7w=3iXnw`Z;gW@*F?2aS01)Y9KT=_UbgBLLBUAuCQ4#inI z5Xf@Rn3Axc+pecw)xqZ99hE>A976j-ss-9iZ4lEf@E5JLqS{$qZ1l@%Z>8k<#N0TKZaRuEsO zg7|v%G1N?c{V{wMALa5R0LMpYLw%gfPle|K87)Ni=ZF*ef`g>K^MmSZw4lEH?H@sS zE1`w>{?3ods`^3o5#+P~`cM92_0Rs`PpaQW5%uf;=1o8W(0E8SaqqSO@-8@x_fToP3qQsixV_&^y!pEbBYZdJy?0Sv zJY$YGZK`Wj8Z5uQbNvwn_ya)WE_}u zNVK1*DoRUAz&Os&j~_=RrBce&+DH>MD=5clT8SK`(y-bPBo4Zws!%SQAYnV|kRT8w zI44c{jo9oRtqE8JkAVTpJSkf$UYZXSl3FFSRyg`VtVjS2XL3_nNB|!mw0)7Ae+CV* zF(|WD%_4D0`@#S?GlOD~7Of2{3yIB`)og$v8=rqqPGxAnr$SUmJSU@6TVnv~7yyev zbie<%?(C4nvKgFqj)e*)`s)X1ZyY_akLL#9;Daww8x;uG9mRCzi7?!|dKEm0>m(Nd z^mVxDI+t8f06^-YRF0vIwvn@}>sce7#MR}82P9`{D78JV)7gaH_4L=7`O*u3>}2fc zUQWRAI6@9f+lb1;C3r-ODqQvYK-jb);GI6V4?@{WBGgL}>L-vSKm?c+(1@Rx(7#kU zSv>*x^_&P_pOX3;gNzgmMD%+}36A+B0t2K!o3A5o9h>WhzMaRhS(i3zYlKMx_$uC< z1J81_uZhxDiCbtd3Lrapot<%GB!~m9V*Ui;2v5__C{a~)koKjmMrE`y_as6Bovi}r z5p5=xoQ4U=ww}1O0ue}pJV&a#hYG|%%ZMpQjpXlo_wx9eICy}i=R);c#G(Xfq>Oe* z-~cSFEKUvy9>m6+JVZ4M$R8&GfJ4U+U^AjD8or@-_f9gMX!{^jUA}C2wF&@ONyV^k z4QeoFcsP^XRxRK@JTk=oFp4o4_cmdJL&pwqNZMAdTDFqvV-X$;2xqv5R``k*{1(lC zNE6`E%=gWh@0w{XwRX^6V$-%IwFEHfT0%8}v9Aqq>9keFrrs%M!G_)nN!{Ao#-`s6 zP{2j7(Kolzj$*YSoo%CPh!)d=)~W>#qJytn+34HnLv*wGH#K!tjgZ}q08oSc1w?lf zYXR4rOM7Z|+hRZ@0i=$yt1a>OuhdB$dUR_$)q0Me$_-;_Kh16$NOR zqN`HMz{8Ke`Q_@vpZr4gCx80U>W}~A&#K@1{XeRH9kBSo2mU@8QNL0>edPny(|7%P z_3-KYs#jk9mFhKqcK`Nkcr2(M9)19jcn@DgcGIf5fA_VhFz)gF-CM6vNj#(d^o(i( zfPmMyf9F|n8@F(d-@J04b+5X8mCLKPs1i7?Qej*MFfPDXSaAe+csXS%?Pa1tE+e-? zQVUSzbiI-t6?sw#3_v=-)d!Am<3VaycP*PeE|k{FNcT6Gvt zZ3V)HW|ohcLAIg}N8Cs{$d&xs@)9^~<+$POWrNs93u7;*$$q$tnA04lDo&MvLl2ck zFPn)cO2gj{JHtX3E|(E52xuH|D2{RHo{DKHC}Ta%-yP+D9TPk_y^nKx9}7dA{srSe zY)?r-vxx#?2l@bzgZtPp=xKA>j6SwKdp3emHU!OAXUz+;5{SgvB#i|EuY15&l^lp* zVGo+WXAe52+zHZQq%0EE0z4-;sSdI6oT5@W!KO9nDI2|fKQiKeX4LlqloH2o@~W|> z+eo&LqHV;_ltn9DcF2%(9Sq~+|2Z53r~v9BLa1XdYQU&3Bhgn$sn?B4N}fq$9nXpK z)u=#nd~WbMC3E&+pLj!{V zH#R&HX<1yxOm;xS|04{2wwpsE_?YKz87{G5{OfKgUfNeR1mhHcJ9~?h~ll_ zwH&bh)JxlPKSR1=7*ke3{tpgj(re-WvY+1%VrJWm8+spL;S|7=RGAX|9&!$FeTRJM zcGpXBIuc|(SokwQg!jwIQ?@>-NU0bUH7L981GH8xSxPL&qG~Cm^>RUkjedFO@@g5p z!iqIps#P0zRU7mlDceR&arD?B-ZQ?=C<}M;zpYsV$AQYJ8^Ri&L`(Ow0E;F#kfyE` zRU<&r*trz&U;z%vMQ~k~UW#Tm?gelZ4R9Wp@E2UC!3`h2VlMp1Y^ssD zRv!Gl1+3XrECR=@hK_1BYc6X(*SFe8(4gv|(#X{UXs~#Eu6aDhmy+l%swiFF0)>^u zH&H%OUD%HLA|&@0AiF<}0Z?v3L*M6>>B3+9;UE1!tAF{&|GxT%zyF71PW@i>z7PC1 zoW%zT7NiaJ=-n(m7pkG&i+uK12{!z->K>KD!w2tz=zcE%@&R{$ z1dt2o9e@IG02-63qyUaoOVyx}8B#j9tuQ3IBV`uAI2}{;aFo`vTV=KmL$VUl5w6o) z(%ZO;!bKdREh9(-pTXrRiC2RLBfm*?l;A*1s?1@ITq#vlMq3*+XWkDR+Cc-{=%rgN zIM&ic+5>_^aeL1M4}nInhHa^6QAL|dqC0^jz#}*m$AD(b%j-#MJ9pb020j^H3YaVrx!3uC3jP{$@Z!lvy8Zv4kder6?LBCRcz+9M!QYbxwG069f< zHG#)qoG?IR8#Lf4gFSWHO+Y1+ap`Q9ob->f0k|R9u5i;-3adlgwA!-~;bE)?F7A@~ z6z=kHOiLIGAkLh~c@$nZN4Pq6HQmBSn}qSOmIE{Q^0{>NRjSggH*3V6(-Ro1wou#NSKs$PIO` zG2^uVB$z|q%BJl+iT$z3I&T8o*Jfwb%xYpD%2BHuE%&@d#PxaFIrkH zZtbj=(KeE}UdrabgpGbNr}Bl}$Yz(UuNEPhUA~4vV0ez!o1=w?Wczj_-8WWiRw1!f z=Gui?iRwe}XySevX(csLO*C;|jkvZO0H`KU`Lv~)s2;BHfJl101;Mw*(OO2P&85{$U`&(CIU+Hd;o`^H^W~v3NQsc8mS-_ z%x?rtQ$6dPXUStlG_ic zFaVDm0K#p+;64?_-CKeM)dlO;b-Wn_9^SsDN{VU%rIeR9xb96z@Ed$@8|o63#N`XL zq$atXL|zLx2ox75@MKJ4?koI7xWDkm;!zKiG zk%NwKhjV}W7|dphHiPOIO?$Lt*3*w&zji~Ap~?b#*i`zdGzJ`0!}V3-m|b+jHjgv4 zO_Zf=G|GoNg5Mlm!}n*+XfmSPR#SK?I0dpf7`1LN+&G*3BKV0 z;q0ZKZ42ozt%pNwkoLNd)0VJ><%wGW$*e00>~va>u+AEmD2Ql`D+WQ^SAy*^KwF8c z?(@i>a`==$;$r1L-I5m3?WrxH6tYh#G&>X=oP(eFGKTTH=2 z6s1?FrSwNAGN2lZYA#wx005`i1D?2z6?YDWo(c28_?a;;g8-(05LE`7t;2}=Xb}lM z64E+_w^1=T2T;;qBxT1dC`H0RRF; z1PNL_M7ERQp%=pn1FnLq!Ngks#;%=Z?b^oeNw1|1vd8wk!O`ik9vEzjQDU)W5>Ipm# zj)+}J+h-BPakna@&^{|-B#exTGA@|t<0JL>MR6~MyF9k@JZ>$z7k6pgHT1>^Uc*zooYa%@$z1z8; z7D0o`qY=Vd0BMA@ZU&f|C9ee#T1O3R$W4GqE8x*g_0Y^FKHpZ6?IgaR%bFh>err?< zjb5_cz#CLL0W7wv>eb4I-voFFAYNba5HM_MHP3GXK=Ssn1Q;uoh9(x31l7%4lvIMp z0xOMDb<7H~9Drc?HygQLBY>g$YFdF6N-VgK7Oq2!t)Z;b0OJO&CjsIH z?I%~Xpe{Q+iHZU)<04f@fQRcmz%j)dzgAtIpwa*sH0_ll>&cZ55F=dW?WVl~|!TGWj+nv>B`zQ}zTe zs-S5Aaeg(=(V)SNZ17ef=cs(fX?HnqLpN}MiIML{jSC#cd?Am=1P9>acg{;IQl zJ`S_FALf5LB$;caKyN` z-97w1W~j>>1a|<}L^ZgDQ?LV#Y&Wf6x2amQ8sZmMwJN2}q|2^fzn)f+W=rR)aTI=)9`C1?m9yO8Ye z;pE?gJhgW>ZK+<~bF@1L`tZq+5!G)3Z69sY1003~d_WiAx0>AJP$u{m`MHR7cj_W7 zNMl=ud0(97^%x<}<1D#OLql+IM+b7a5uZ=JAj>qmahhKUq1*}I(6JbKD{|RI9Ddep z*i^0MIoRNINq~32mfm3$R#dM$c5LIe000}mK8qy)$HLBqa1tt>Ag^73K)bCd?!O7i zYYR%HRt$EnR3+_j939-I9l~7lT8~9Dmkof%d~VYqfCw6@pHMydJBe&J|4=PiT>u=a zn;NJR<~7htvTbBbiJ#9CKmdS-d2G@EgJ0W1QVC^Cs+P=p*~0GxkXYV#0Us-rWTshCoRyFfmqv6IIlh){{}^<1tS;1Lzj3jk>XAX>uzK~;l{x2c8uiA$~r zh%DgprGNji&sYEU&puQA%YXNg>R$jDzw>*4RDJM6|Aefle_H+8hkmzu_4VJV?qklo z`{Y-ud#u|J-l*<|G4EaBvv>$VsE!gyB(mP&!m8VeapRQwC2@&T(#R6El`5mT>B0q6fxvIPaU%T<1bxuW0%mX}JYyweDu&LXo z8qx5k0*KSL*-Q~bU9K|@XiTw*PdJfJ^;F4|@-pJkA)`Zi#OCdiKt6`5#))#OrzDg_p$XJO{HwHbp6Q$MqCu*m-fCVtv_Bh1m zE*ZUFMVLl3+C~SJe%51a1&{(BDxXpTl>?@1F=>bk=QJy3pKFu@i2AtCKJKrV%bmn@ zY=G*+(!G}c$!cXMC6$YTO< z1_oGt@EC)=9A^5dbT#AQyP!%ua)>GsW8NVutb_0y`}=!%4j9=>3+m_*-@AM9OKhTg zSPB2I1_jgBoQuKxFJePD3>cp>Oj5uI64_DGh=)$-cF*7YzFh}MEQ9D?3RkfZuAzf) zz!s#f%@EXWnC_M?Ba#Ej>_VQaB|LwtiAdQ%lI(^J8>?l@kh)S4EQ$qqu(@}1sBnU$ zmZ)a6SyccAE$|Y0A)1zO5v|qi!eF021IK$k0l%6~*R06F>qmtU9PFtT<`_ z5iFXc&1EahzgPaImsB22R1eL1I3U*>c>ID#qf1cZaV+5RH3~jnKdO(cKmtGjj{p$v zBkm{ei)sfjSpb;4^xOaF53Aq&hksc8Dl*z%`HkPBy7*AYXP;3?yrKW%(ff%f$B=jT z-PK)GQg={8-9avUhf3n^?dOo)5Z<(_;_I7$2JNX^mmgF&FXFklN~Lj4HPk~u;U3%t zyafPp^~w!Qdz$pF0~j}>(g;7sCGzRm-%N5QMjbk&d&WIG)o9Yetp}ATcCK zpeU7ym+}@zJn6gH$EKfct0B}-LlV)EKb7(3Rui_eLM268=@5gdOulrWPaSz)%WeZW zbQybH&3pZvUVGWV>A92Y>4 za!kSEATmvT2znbL36&O^OR!L`YSg!_1f{5Q4@yGa3~i?zp?!3Yq)vy|jG#z~sslrn zGYMiv5-0#dt3XnFglZ%7_nyjW%cz7pL$zTPb)=0_r8wVWf{lMnIdcpJ%1HESB@-2f zr+UfMkZp3(KSE3Cu)v`qPH-usP|dlD_;9PEVxsfDtW=aHo6Dt>-nOB!A66(l=ttBZrSpOnW^WegxL z*p0fVPJ7)&^_PxmTThzf$YX+w*npgM1DETmHrDfcZszs09kq!Kew|>VS&!RDa0d`j zP5AoTiZVeqXS-WPq`}Ul+TcE%+bwzSeH!P%eeK}Bb{i!EvArFhVyi8vt$@{LT3~?2 zwymVJZrec1Z3itjDlZgp=1%qX^>En-a5IkuwNrR0I8dBnou)cG4OcOQC*ug$IoQ94 zL(>4QU8?7O0|3SbPW`lh;2D-eGB1W?UQXq(W({#8R6EAR7?-o(z)G{WXk!iWUK|+g z2QW8dl!M&nc1tn9Eu=E&QqoE+M@uX1BYX^24c)Y$I%y}h04B{`zXP!9rs`M($=yYz z(Lt6|2jp=(n|nLb*4F8G4mN3&PqFFSma>8fUIH~!6J$5$x(1}KO>DHmRR{*QfT$|w zd71|>8X=||b#8kEQ|l}Z7s z0IUE4PXDYHR8TFprb@djDi^^d$oJgjV+9zn(Fdmj+1}zxfT#h@%SNjsfhVq?w-r2W zRW+7Mqp6jjH#Y+ww8$EpxDJ=xXQM5wSKmcT>RrfbsWe`BT`uF-sz+25@)pmYd;pH( zbt(lw;U=H~Slqdz|3dJ9*hU2CcIJR(36JdOe$E&*f+068v*I19rn!!}cZMurOR zXEX9-s~4jNkmG>J(V~LNs1W6~1{J29Hb5j?)G4=p;S4utD8c85vRf*OfnIvwxSq|` z(e-PHn(|1!7Xz&Av^3l#425%p(9s)l)y|!;<;A74$^aeXnssjTcx^+uVLFTZtS5F( zej`=~R1U+C*Je1$LkzPiXh1u}Mrq`R6^ALJqf9D`R#boo8*wbaVLa17&p6oTq@a{1 z_#vpn|!ATe`1SA_2wgKqYc8?)^q6*t`9K{j>OT!;O= zaT^*3V|;GqG}o3*U$3`P#j^N1c!k!4j01^;R47AhmTW=4hDKTC}H%Y zTG;?UvzYeIqTm|X&;fvMOl%7Q5#8I%maXEk!r5@}*~EK&3suQ(Dz_ehdmWY0BC3LJ zHu6PHi{r8b^0^)5Qj4-y-PMxQEZb0RsGS-CsRpW)7XDtFDY8a;=!amV76f8LX2Ues z$rE`aU%QDaeKo41iH+Y4wb7HhtsbilPU>-DFPprVNix%Vij6ln;(9HB0B?xR*bP^r zTh0RDn3n+JhM#-{ts_tSalhGilEk*1)F@E#cdcBq(f~jJ4|xtjB<_>H9oz}acA1qy zV-welDxm;K{Wt`XAm+KAJWAX@f0zFws}Dh_IV+6<9yN$G^L;bF6FdSy8XKpt`_g^D z;{HRb4Ez=M?!PyP?uS$$50KHiZUGKAuci{}7LINSZPie>ZrrC8^?+8?{irUkU%bOY z5ryC4`UTWctgGj5LU7*%45%K)sVF9|1);5kHXPl~^~QgpaZh*mMRKGr!dn;-68r^# zG422*frA#*FrkC4QDwA(M+`^G94XsU!(5(mp10rQ{2o3jISN-HDQ*i&Ao1&nI6o7B zafD6asBIDBt{s##!|gqjmk47Xpm300y0b3)S|E`3h}Bd3mrv)fap?JNQ02phMRiF){90K&;= zG24KOV}v0&Bet@fng^H&J}1@QQ-!FcIZTT~7kR{^8!+fXd2`xAPfI>elre0N08Z51lxV~yAJszgRdTC5Y3>nf}!6xrW z(`_N0-Ac+S#xq(S0*I|B`HU^_51RmqO@PG~fIttzRx1rF1OP#~>`v};2SBln->aUo z(sWSLRw@arPb-a0VZIY2R7AlAtVIO{Fgbm1D+KpWsvWbZdNk$X!RX(!leXwC+L&+{ z{X1#V!GjIpZP~kx|9uay(LTUcqhVjQdM#u%^B|Vvn^?DY9bkf2f-1)f%I8Fp#4&h= z)4bl!XFqieDJ}qFB>1{Ds{snRhO7{}^gOW1FT@PDkP5=Ar|yMmwCjefUbuE!wS?zp zC694A;L*7Zp9C$X?j``I0q|&`a$rNZ-`_-)&`g^t<*l8O-_%B%sR3|lKq4D$CqSi@ z)>11KM{M#&Z~zRA+`d7ATcEIw<7VoH%Sz(djaW6397ggOjqnj}{EaRN?3(zF&3y)O z9UuUI0dd{b*uZ8lv2FEGx17ALvRXkzh11`@?ScTM{8?QoGy)h+1vu&oB=4_)Od;D7 z0J1{JYN7xGn||;h(Sk~)mg=o+uL&G=<>4jQqdjHy5dadB;=cnR4UODi1FNxm={5xS z9a>Pg;4Q2&ZVDI}@^0X%xP>9_c1US)c9SJ#42ba`moESew3RNyOZnT-R2cwjgp9G0zi@aGG38ViBhi8a6pZ~) zT5Ftnx%B%}0Eum>hz%(qaT;Tu@gX_?A_2s8!nxg67|wGxhFm#ogv;rR5KOYt2<{^I zi_DBt5~~Lz<|4-wyabDw<6V+$1qT&RRuQpmN1=i`;%s$+##6JTZY|BEN|4yJH@$uf6;wZOO2^GU?h>JeQ#5hM`#$-BLId04Sl|=F(P7G9XnVC=atEngeo>KtG zDXNoG5}+!moIXc8;{;^4+WCW2AgYxFhcJGX-${~d)~i!#(@XIp*v|?id;vy(^FJsa zu$6ZBsI8-v!Rn206W8kzF8UHvBDfq3IV>Uo?qe^v9Rx@Pb6wyOXAv>u*?!7uqXw-s z;MK-F&3?*j_tM)}y1GN-8=Gc7Eh?2to7k`odK54W4vbcjyaL>X#P=3jQL(|(Dq2ZI zx8Pw`l%~Qu=EL!*0S;{L+Z>Y`LyIK9lgF?c*%s9Z_X9|%s#@=8Rw|fvNN3lsrP`q4 zSkFw0?b~Qkxw!*cwzf87c-uy+N-u~4iG4iw1MpghAia+sKvsKDj;n`igNoxY-j;*A zc<=Y|IvX0f2mXb8r!F>THef+uIp(?LD^^v@iTpPDdo9MhojlgPsI}xmPQge-X+jTThEH;4%ED2_R|WzMBE879_V` zzl)fSZUCg6ilBu}-Cn;v|4=pATHM^Px1k^ z^2naQWN~AFNvTY%4r~{xW`g9FyjDh=lH1&XqfIqq2?`6?usyA}a=jL-kdhr$U)NKA zUQd-2t6T1e3 z+IT7?xpi~Lg80690}g|B(gjpa5hm!OqPWPqjH6pM)MdcpvS0zheSxpf8!Biu0e3M) z8_EjA@5jiJI;#f*Iqj75G60Q9NpOhnY)@q+;n+pzWe6Z9)#}X{ruC#U>XeEp)`>FX z`y_x7+(mJIYurmSUxG#~OnZ{o5dji`gQnA}`Y9>3CGW`=lN^R^r31!!g#UtyBD@rt za2vCs&031ql<0Ld&6mCeg zCrlq(+V=T>5Q!^ zexI|J%c80{M>K-~a@NYjITmslZs?xy0Yjrc5&)Ff(gJdZhVv=_uoJW|P5>S;_uBEL z&d|{82ZwUR&7KM*!V5L%$&0A@50hTTp@-=%Du;~is4vZ{O5+^70&OANSOFlkO*Ebz zj4C0cJX}^AwyOjWhf>K;MBB?2l#v}JJ+_X)2-kL{gBSa z1UwCXT+d|-iWbx6@NcBbO5>k~Jk?fPQCHcf^5+g)5-9X_Z02$ovf9DDgbK2m3l{!- zt!*-@24%jRZ9%cI58@d)&U1JIb=0xLWJw+A=XoCh%m)C{K3->ei#~wKDDj0vZ4j>! zr+eB+_#K>1*R_ZoCY;pEkF+Z4~+LU4|=euGTP5V&OvCM<|zCG14_fMPM|z zGbBiI<-Xc!W3}n5)=Z~=0=3h8;y~uaT2am8@2G5QmA62#)VYA_!;^FL>?L@Ui%73T z2VsHfmuPbFH{>I{Y;bX1TSCz)imIY0khs495nDlQ(y@uc6UbpiJIlWzFcdj#GvJ}u zBK#IAqC#HlChQ44H}GaRV1ozQbX!>MT&I=awHBa>mR3{)xv59R!}s+v9>lK&niuk2 z0i!v9qm7@p24HsLDM?vyga20$+ocUD zHkK+RL3IXz03rye1}PJe|S3WMbw2o(8In)$3EbdqcME1nJWq4w`})1lwKmtji1NHkGV z?WHX>=nxpBw7R$Zm1t6)+q2diuoq{txkkoP40+NI*{B&mT(YT3VD9Hctjb8K=~$4@ zw4T_℞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 GSC~;3< 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

    ej^K;;M_PP703S;$dk?qEWy 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 literal 0 HcmV?d00001 diff --git a/Chapter14/udpserver/udpserver.pro b/Chapter14/udpserver/udpserver.pro new file mode 100644 index 0000000..1d5945e --- /dev/null +++ b/Chapter14/udpserver/udpserver.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) fr 16. mar 19:54:14 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += sender.h +SOURCES += main.cpp sender.cpp +QT += network +CONFIG += console diff --git a/Chapter15/README.txt b/Chapter15/README.txt new file mode 100644 index 0000000..58eadcb --- /dev/null +++ b/Chapter15/README.txt @@ -0,0 +1,31 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 15 - Building Qt Projects + +qmake/basics + + Listing 15-1 + + A basic QMake project. + + +qmake/complex + + Listing 15-5, 15-6, 15-7 + + A complex QMake project consisting of a lib and an application. + + +cmake/basics + + Listing 15-8 + + A basic CMake project. + + +cmake/complex + + Listings 15-12, 15-13, 15-14 + + A complex CMake project consisting of a lib and an application. \ No newline at end of file diff --git a/Chapter15/cmake/basics/CMakeLists.txt b/Chapter15/cmake/basics/CMakeLists.txt new file mode 100644 index 0000000..3acffd8 --- /dev/null +++ b/Chapter15/cmake/basics/CMakeLists.txt @@ -0,0 +1,48 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +PROJECT( basics ) + +SET( basics_SOURCES main.cpp mainwindow.cpp otherdialog.cpp preferencedialog.cpp ) +SET( basics_HEADERS mainwindow.h otherdialog.h preferencedialog.h ) +SET( basics_FORMS otherdialog.ui preferencedialog.ui ) + +FIND_PACKAGE( Qt4 REQUIRED ) +INCLUDE( ${QT_USE_FILE} ) + +QT4_WRAP_CPP( basics_HEADERS_MOC ${basics_HEADERS} ) +QT4_WRAP_UI( basics_FORMS_HEADERS ${basics_FORMS} ) + +INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_BINARY_DIR} ) + +ADD_DEFINITIONS( ${QT_DEFINITIONS} ) + +ADD_EXECUTABLE( basics ${basics_SOURCES} ${basics_HEADERS_MOC} ${basics_FORMS_HEADERS} ) +TARGET_LINK_LIBRARIES( basics ${QT_LIBRARIES} ) diff --git a/Chapter15/cmake/basics/main.cpp b/Chapter15/cmake/basics/main.cpp new file mode 100644 index 0000000..efe749c --- /dev/null +++ b/Chapter15/cmake/basics/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "mainwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + MainWindow *win = new MainWindow(); + win->show(); + + return app.exec(); +} diff --git a/Chapter15/cmake/basics/mainwindow.cpp b/Chapter15/cmake/basics/mainwindow.cpp new file mode 100644 index 0000000..b0b6370 --- /dev/null +++ b/Chapter15/cmake/basics/mainwindow.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "mainwindow.h" + +#include +#include +#include + +#include "preferencedialog.h" +#include "otherdialog.h" + +MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + + QAction *fileNewAction = new QAction( tr("&New"), this ); + connect( fileNewAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + QAction *fileCloseAction = new QAction( tr( "&Close"), this ); + connect( fileCloseAction, SIGNAL(triggered()), this, SLOT(close()) ); + + QAction *fileExitAction = new QAction( tr("E&xit"), this ); + connect( fileExitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + QAction *dialogPreferencesAction = new QAction( tr("Preferences..."), this ); + connect( dialogPreferencesAction, SIGNAL(triggered()), this, SLOT(dialogPreferences()) ); + + QAction *dialogOtherAction = new QAction( tr("Other..."), this ); + connect( dialogOtherAction, SIGNAL(triggered()), this, SLOT(dialogOther()) ); + + QMenu *file = menuBar()->addMenu( tr("&File") ); + file->addAction( fileNewAction ); + file->addAction( fileCloseAction ); + file->addSeparator(); + file->addAction( fileExitAction ); + + QMenu *dialogs = menuBar()->addMenu( tr("&Dialogs") ); + dialogs->addAction( dialogPreferencesAction ); + dialogs->addAction( dialogOtherAction ); +} + +void MainWindow::fileNew() +{ + (new MainWindow())->show(); +} + +void MainWindow::dialogPreferences() +{ + PreferenceDialog dlg; + + dlg.exec(); +} + +void MainWindow::dialogOther() +{ + OtherDialog dlg; + + dlg.exec(); +} diff --git a/Chapter15/cmake/basics/mainwindow.h b/Chapter15/cmake/basics/mainwindow.h new file mode 100644 index 0000000..3b81704 --- /dev/null +++ b/Chapter15/cmake/basics/mainwindow.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + MainWindow( QWidget *parent=0 ); + +private slots: + void fileNew(); + void dialogPreferences(); + void dialogOther(); +}; + +#endif // MAINWINDOW_H diff --git a/Chapter15/cmake/basics/otherdialog.cpp b/Chapter15/cmake/basics/otherdialog.cpp new file mode 100644 index 0000000..63410f7 --- /dev/null +++ b/Chapter15/cmake/basics/otherdialog.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "otherdialog.h" + +OtherDialog::OtherDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); +} diff --git a/Chapter15/cmake/basics/otherdialog.h b/Chapter15/cmake/basics/otherdialog.h new file mode 100644 index 0000000..9388e5d --- /dev/null +++ b/Chapter15/cmake/basics/otherdialog.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef OTHERDIALOG_H +#define OTHERDIALOG_H + +#include +#include "ui_otherdialog.h" + +class OtherDialog : public QDialog +{ +public: + OtherDialog( QWidget *parent=0 ); + +private: + Ui::OtherDialog ui; +}; + +#endif // OTHERDIALOG_H diff --git a/Chapter15/cmake/basics/otherdialog.ui b/Chapter15/cmake/basics/otherdialog.ui new file mode 100644 index 0000000..2aa8dcd --- /dev/null +++ b/Chapter15/cmake/basics/otherdialog.ui @@ -0,0 +1,96 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + OtherDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 30 + 240 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + buttonBox + accepted() + OtherDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + OtherDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter15/cmake/basics/preferencedialog.cpp b/Chapter15/cmake/basics/preferencedialog.cpp new file mode 100644 index 0000000..b584da4 --- /dev/null +++ b/Chapter15/cmake/basics/preferencedialog.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "preferencedialog.h" + +PreferenceDialog::PreferenceDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); +} diff --git a/Chapter15/cmake/basics/preferencedialog.h b/Chapter15/cmake/basics/preferencedialog.h new file mode 100644 index 0000000..e59b4c8 --- /dev/null +++ b/Chapter15/cmake/basics/preferencedialog.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef PREFERENCEDIALOG_H +#define PREFERENCEDIALOG_H + +#include +#include "ui_preferencedialog.h" + +class PreferenceDialog : public QDialog +{ +public: + PreferenceDialog( QWidget *parent=0 ); + +private: + Ui::PreferenceDialog ui; +}; + +#endif // PREFERENCEDIALOG_H diff --git a/Chapter15/cmake/basics/preferencedialog.ui b/Chapter15/cmake/basics/preferencedialog.ui new file mode 100644 index 0000000..79ebe4e --- /dev/null +++ b/Chapter15/cmake/basics/preferencedialog.ui @@ -0,0 +1,113 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PreferenceDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + 9 + + + 6 + + + + + + 24 + + + + What do you prefer? + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + PreferenceDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + PreferenceDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter15/cmake/complex/CMakeLists.txt b/Chapter15/cmake/complex/CMakeLists.txt new file mode 100644 index 0000000..8e88ca9 --- /dev/null +++ b/Chapter15/cmake/complex/CMakeLists.txt @@ -0,0 +1,37 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +PROJECT( complex ) + +SET( EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin ) +SET( LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib ) + +ADD_SUBDIRECTORY( src ) +ADD_SUBDIRECTORY( app ) diff --git a/Chapter15/cmake/complex/app/CMakeLists.txt b/Chapter15/cmake/complex/app/CMakeLists.txt new file mode 100644 index 0000000..2d7f00b --- /dev/null +++ b/Chapter15/cmake/complex/app/CMakeLists.txt @@ -0,0 +1,44 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +SET( app_SOURCES main.cpp appwindow.cpp ) +SET( app_HEADERS appwindow.h ) + +FIND_PACKAGE( Qt4 REQUIRED ) +INCLUDE( ${QT_USE_FILE} ) + +QT4_WRAP_CPP( app_HEADERS_MOC ${app_HEADERS} ) + +INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include ) + +ADD_DEFINITIONS( ${QT_DEFINITIONS} ) + +ADD_EXECUTABLE( app ${app_SOURCES} ${app_HEADERS_MOC} ) +TARGET_LINK_LIBRARIES( app base ${QT_LIBRARIES} ) diff --git a/Chapter15/cmake/complex/app/appwindow.cpp b/Chapter15/cmake/complex/app/appwindow.cpp new file mode 100644 index 0000000..46d0fa7 --- /dev/null +++ b/Chapter15/cmake/complex/app/appwindow.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "appwindow.h" + +#include +#include +#include +#include + +#include "base.h" + +AppWindow::AppWindow( QWidget *parent ) : QWidget( parent ) +{ + spinBox = new QSpinBox( this ); + spinBox->setRange( 1, 100 ); + spinBox->setValue( 42 ); + + QPushButton *button = new QPushButton( this ); + button->setText( tr("Hit me!") ); + connect( button, SIGNAL(clicked()), this, SLOT(buttonClicked()) ); + + QHBoxLayout *layout = new QHBoxLayout( this ); + layout->addWidget( spinBox ); + layout->addWidget( button ); + + base = new Base( this ); + connect( base, SIGNAL(numberPresented(QString)), this, SLOT(showDialog(QString)) ); +} + +void AppWindow::buttonClicked() +{ + base->presentNumber( spinBox->value() ); +} + +void AppWindow::showDialog( const QString &text ) +{ + QMessageBox::information( this, tr("Message Received"), text ); +} diff --git a/Chapter15/cmake/complex/app/appwindow.h b/Chapter15/cmake/complex/app/appwindow.h new file mode 100644 index 0000000..b9f9c43 --- /dev/null +++ b/Chapter15/cmake/complex/app/appwindow.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef APPWINDOW_H +#define APPWINDOW_H + +#include + +class QSpinBox; +class Base; + +class AppWindow : public QWidget +{ + Q_OBJECT + +public: + AppWindow( QWidget *parent=0 ); + +private slots: + void buttonClicked(); + void showDialog( const QString& ); + +private: + QSpinBox *spinBox; + Base *base; +}; + +#endif // APPWINDOW_H diff --git a/Chapter15/cmake/complex/app/main.cpp b/Chapter15/cmake/complex/app/main.cpp new file mode 100644 index 0000000..27bf590 --- /dev/null +++ b/Chapter15/cmake/complex/app/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "appwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + AppWindow appWindow; + appWindow.show(); + + return app.exec(); +} diff --git a/Chapter15/cmake/complex/include/base.h b/Chapter15/cmake/complex/include/base.h new file mode 100644 index 0000000..45d12c3 --- /dev/null +++ b/Chapter15/cmake/complex/include/base.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BASE_H +#define BASE_H + +#include + +class Base : public QObject +{ + Q_OBJECT + +public: + Base( QObject *parent=0 ); + +public slots: + void presentNumber( int ); + +signals: + void numberPresented( const QString& ); +}; + +#endif // BASE_H diff --git a/Chapter15/cmake/complex/src/CMakeLists.txt b/Chapter15/cmake/complex/src/CMakeLists.txt new file mode 100644 index 0000000..bd8f152 --- /dev/null +++ b/Chapter15/cmake/complex/src/CMakeLists.txt @@ -0,0 +1,43 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +SET( src_SOURCES base.cpp ) +SET( src_HEADERS ../include/base.h ) + +FIND_PACKAGE( Qt4 REQUIRED ) +INCLUDE( ${QT_USE_FILE} ) + +INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/include ) + +QT4_WRAP_CPP( src_HEADERS_MOC ${src_HEADERS} ) + +ADD_DEFINITIONS( ${QT_DEFINITIONS} ) + +ADD_LIBRARY( base STATIC ${src_SOURCES} ${src_HEADERS_MOC} ) diff --git a/Chapter15/cmake/complex/src/base.cpp b/Chapter15/cmake/complex/src/base.cpp new file mode 100644 index 0000000..c43292e --- /dev/null +++ b/Chapter15/cmake/complex/src/base.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "base.h" + +Base::Base( QObject *parent ) : QObject( parent ) +{ +} + +void Base::presentNumber( int number ) +{ + emit numberPresented( QString( "This is the number to present: %1" ).arg( number ) ); +} diff --git a/Chapter15/qmake/basics/basics.pro b/Chapter15/qmake/basics/basics.pro new file mode 100644 index 0000000..f6206a4 --- /dev/null +++ b/Chapter15/qmake/basics/basics.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) må 19. mar 18:20:02 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += mainwindow.h otherdialog.h preferencedialog.h +FORMS += otherdialog.ui preferencedialog.ui +SOURCES += main.cpp mainwindow.cpp otherdialog.cpp preferencedialog.cpp diff --git a/Chapter15/qmake/basics/main.cpp b/Chapter15/qmake/basics/main.cpp new file mode 100644 index 0000000..efe749c --- /dev/null +++ b/Chapter15/qmake/basics/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "mainwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + MainWindow *win = new MainWindow(); + win->show(); + + return app.exec(); +} diff --git a/Chapter15/qmake/basics/mainwindow.cpp b/Chapter15/qmake/basics/mainwindow.cpp new file mode 100644 index 0000000..b0b6370 --- /dev/null +++ b/Chapter15/qmake/basics/mainwindow.cpp @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "mainwindow.h" + +#include +#include +#include + +#include "preferencedialog.h" +#include "otherdialog.h" + +MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ) +{ + setAttribute( Qt::WA_DeleteOnClose ); + + QAction *fileNewAction = new QAction( tr("&New"), this ); + connect( fileNewAction, SIGNAL(triggered()), this, SLOT(fileNew()) ); + + QAction *fileCloseAction = new QAction( tr( "&Close"), this ); + connect( fileCloseAction, SIGNAL(triggered()), this, SLOT(close()) ); + + QAction *fileExitAction = new QAction( tr("E&xit"), this ); + connect( fileExitAction, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()) ); + + QAction *dialogPreferencesAction = new QAction( tr("Preferences..."), this ); + connect( dialogPreferencesAction, SIGNAL(triggered()), this, SLOT(dialogPreferences()) ); + + QAction *dialogOtherAction = new QAction( tr("Other..."), this ); + connect( dialogOtherAction, SIGNAL(triggered()), this, SLOT(dialogOther()) ); + + QMenu *file = menuBar()->addMenu( tr("&File") ); + file->addAction( fileNewAction ); + file->addAction( fileCloseAction ); + file->addSeparator(); + file->addAction( fileExitAction ); + + QMenu *dialogs = menuBar()->addMenu( tr("&Dialogs") ); + dialogs->addAction( dialogPreferencesAction ); + dialogs->addAction( dialogOtherAction ); +} + +void MainWindow::fileNew() +{ + (new MainWindow())->show(); +} + +void MainWindow::dialogPreferences() +{ + PreferenceDialog dlg; + + dlg.exec(); +} + +void MainWindow::dialogOther() +{ + OtherDialog dlg; + + dlg.exec(); +} diff --git a/Chapter15/qmake/basics/mainwindow.h b/Chapter15/qmake/basics/mainwindow.h new file mode 100644 index 0000000..3b81704 --- /dev/null +++ b/Chapter15/qmake/basics/mainwindow.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + MainWindow( QWidget *parent=0 ); + +private slots: + void fileNew(); + void dialogPreferences(); + void dialogOther(); +}; + +#endif // MAINWINDOW_H diff --git a/Chapter15/qmake/basics/otherdialog.cpp b/Chapter15/qmake/basics/otherdialog.cpp new file mode 100644 index 0000000..63410f7 --- /dev/null +++ b/Chapter15/qmake/basics/otherdialog.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "otherdialog.h" + +OtherDialog::OtherDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); +} diff --git a/Chapter15/qmake/basics/otherdialog.h b/Chapter15/qmake/basics/otherdialog.h new file mode 100644 index 0000000..9388e5d --- /dev/null +++ b/Chapter15/qmake/basics/otherdialog.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef OTHERDIALOG_H +#define OTHERDIALOG_H + +#include +#include "ui_otherdialog.h" + +class OtherDialog : public QDialog +{ +public: + OtherDialog( QWidget *parent=0 ); + +private: + Ui::OtherDialog ui; +}; + +#endif // OTHERDIALOG_H diff --git a/Chapter15/qmake/basics/otherdialog.ui b/Chapter15/qmake/basics/otherdialog.ui new file mode 100644 index 0000000..2aa8dcd --- /dev/null +++ b/Chapter15/qmake/basics/otherdialog.ui @@ -0,0 +1,96 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + OtherDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + + 30 + 240 + 341 + 32 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + buttonBox + accepted() + OtherDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + OtherDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter15/qmake/basics/preferencedialog.cpp b/Chapter15/qmake/basics/preferencedialog.cpp new file mode 100644 index 0000000..b584da4 --- /dev/null +++ b/Chapter15/qmake/basics/preferencedialog.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "preferencedialog.h" + +PreferenceDialog::PreferenceDialog( QWidget *parent ) : QDialog( parent ) +{ + ui.setupUi( this ); +} diff --git a/Chapter15/qmake/basics/preferencedialog.h b/Chapter15/qmake/basics/preferencedialog.h new file mode 100644 index 0000000..e59b4c8 --- /dev/null +++ b/Chapter15/qmake/basics/preferencedialog.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef PREFERENCEDIALOG_H +#define PREFERENCEDIALOG_H + +#include +#include "ui_preferencedialog.h" + +class PreferenceDialog : public QDialog +{ +public: + PreferenceDialog( QWidget *parent=0 ); + +private: + Ui::PreferenceDialog ui; +}; + +#endif // PREFERENCEDIALOG_H diff --git a/Chapter15/qmake/basics/preferencedialog.ui b/Chapter15/qmake/basics/preferencedialog.ui new file mode 100644 index 0000000..79ebe4e --- /dev/null +++ b/Chapter15/qmake/basics/preferencedialog.ui @@ -0,0 +1,113 @@ + + + Copyright (c) 2006-2007, Johan Thelin + + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, + are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of APress nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + PreferenceDialog + + + + 0 + 0 + 400 + 300 + + + + Dialog + + + + 9 + + + 6 + + + + + + 24 + + + + What do you prefer? + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + PreferenceDialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + PreferenceDialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/Chapter15/qmake/complex/Makefile b/Chapter15/qmake/complex/Makefile new file mode 100644 index 0000000..f62247b --- /dev/null +++ b/Chapter15/qmake/complex/Makefile @@ -0,0 +1,179 @@ +############################################################################# +# Makefile for building: complex +# Generated by qmake (2.01a) (Qt 4.2.2) on: må 26. mar 19:48:45 2007 +# Project: complex.pro +# Template: subdirs +# Command: qmake -win32 -o Makefile complex.pro +############################################################################# + +first: make_default +MAKEFILE = Makefile +QMAKE = qmake +DEL_FILE = del +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +COPY = copy /y +COPY_FILE = $(COPY) +COPY_DIR = xcopy /s /q /y /i +INSTALL_FILE = $(COPY_FILE) +INSTALL_PROGRAM = +INSTALL_DIR = $(COPY_DIR) +DEL_FILE = del +SYMLINK = +DEL_DIR = rmdir +MOVE = move +CHK_DIR_EXISTS= if not exist +MKDIR = mkdir +SUBTARGETS = \ + sub-src \ + sub-app + +src\$(MAKEFILE): + @$(CHK_DIR_EXISTS) src\ $(MKDIR) src\ + cd src && $(QMAKE) src.pro -win32 -o $(MAKEFILE) +sub-src-qmake_all: FORCE + @$(CHK_DIR_EXISTS) src\ $(MKDIR) src\ + cd src && $(QMAKE) src.pro -win32 -o $(MAKEFILE) +sub-src: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) +sub-src-make_default-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) +sub-src-make_default: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) +sub-src-make_first-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) first +sub-src-make_first: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) first +sub-src-all-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) all +sub-src-all: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) all +sub-src-clean-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) clean +sub-src-clean: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) clean +sub-src-distclean-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) distclean +sub-src-distclean: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) distclean +sub-src-install_subtargets-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) install +sub-src-install_subtargets: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) install +sub-src-uninstall_subtargets-ordered: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) uninstall +sub-src-uninstall_subtargets: src\$(MAKEFILE) FORCE + cd src && $(MAKE) -f $(MAKEFILE) uninstall +app\$(MAKEFILE): + @$(CHK_DIR_EXISTS) app\ $(MKDIR) app\ + cd app && $(QMAKE) app.pro -win32 -o $(MAKEFILE) +sub-app-qmake_all: FORCE + @$(CHK_DIR_EXISTS) app\ $(MKDIR) app\ + cd app && $(QMAKE) app.pro -win32 -o $(MAKEFILE) +sub-app: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) +sub-app-make_default-ordered: app\$(MAKEFILE) sub-src-make_default-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) +sub-app-make_default: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) +sub-app-make_first-ordered: app\$(MAKEFILE) sub-src-make_first-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) first +sub-app-make_first: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) first +sub-app-all-ordered: app\$(MAKEFILE) sub-src-all-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) all +sub-app-all: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) all +sub-app-clean-ordered: app\$(MAKEFILE) sub-src-clean-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) clean +sub-app-clean: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) clean +sub-app-distclean-ordered: app\$(MAKEFILE) sub-src-distclean-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) distclean +sub-app-distclean: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) distclean +sub-app-install_subtargets-ordered: app\$(MAKEFILE) sub-src-install_subtargets-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) install +sub-app-install_subtargets: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) install +sub-app-uninstall_subtargets-ordered: app\$(MAKEFILE) sub-src-uninstall_subtargets-ordered FORCE + cd app && $(MAKE) -f $(MAKEFILE) uninstall +sub-app-uninstall_subtargets: app\$(MAKEFILE) FORCE + cd app && $(MAKE) -f $(MAKEFILE) uninstall + +Makefile: complex.pro c:\coding\Qt\4.2.2\mkspecs\win32-g++\qmake.conf C:/coding/Qt/4.2.2/mkspecs/qconfig.pri \ + c:\coding\Qt\4.2.2\mkspecs\features\qt_functions.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\qt_config.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\exclusive_builds.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\default_pre.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\win32\default_pre.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\debug.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\debug_and_release.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\default_post.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\win32\rtti.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\win32\exceptions.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\win32\stl.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\shared.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\warn_on.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\qt.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\win32\thread.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\moc.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\win32\windows.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\resources.prf \ + c:\coding\Qt\4.2.2\mkspecs\features\uic.prf + $(QMAKE) -win32 -o Makefile complex.pro +C:/coding/Qt/4.2.2/mkspecs/qconfig.pri: +c:\coding\Qt\4.2.2\mkspecs\features\qt_functions.prf: +c:\coding\Qt\4.2.2\mkspecs\features\qt_config.prf: +c:\coding\Qt\4.2.2\mkspecs\features\exclusive_builds.prf: +c:\coding\Qt\4.2.2\mkspecs\features\default_pre.prf: +c:\coding\Qt\4.2.2\mkspecs\features\win32\default_pre.prf: +c:\coding\Qt\4.2.2\mkspecs\features\debug.prf: +c:\coding\Qt\4.2.2\mkspecs\features\debug_and_release.prf: +c:\coding\Qt\4.2.2\mkspecs\features\default_post.prf: +c:\coding\Qt\4.2.2\mkspecs\features\win32\rtti.prf: +c:\coding\Qt\4.2.2\mkspecs\features\win32\exceptions.prf: +c:\coding\Qt\4.2.2\mkspecs\features\win32\stl.prf: +c:\coding\Qt\4.2.2\mkspecs\features\shared.prf: +c:\coding\Qt\4.2.2\mkspecs\features\warn_on.prf: +c:\coding\Qt\4.2.2\mkspecs\features\qt.prf: +c:\coding\Qt\4.2.2\mkspecs\features\win32\thread.prf: +c:\coding\Qt\4.2.2\mkspecs\features\moc.prf: +c:\coding\Qt\4.2.2\mkspecs\features\win32\windows.prf: +c:\coding\Qt\4.2.2\mkspecs\features\resources.prf: +c:\coding\Qt\4.2.2\mkspecs\features\uic.prf: +qmake: qmake_all FORCE + @$(QMAKE) -win32 -o Makefile complex.pro + +qmake_all: sub-src-qmake_all sub-app-qmake_all FORCE + +make_default: sub-src-make_default-ordered sub-app-make_default-ordered FORCE +make_first: sub-src-make_first-ordered sub-app-make_first-ordered FORCE +all: sub-src-all-ordered sub-app-all-ordered FORCE +clean: sub-src-clean-ordered sub-app-clean-ordered FORCE +distclean: sub-src-distclean-ordered sub-app-distclean-ordered FORCE + -$(DEL_FILE) Makefile +install_subtargets: sub-src-install_subtargets-ordered sub-app-install_subtargets-ordered FORCE +uninstall_subtargets: sub-src-uninstall_subtargets-ordered sub-app-uninstall_subtargets-ordered FORCE + +sub-src-sub_Debug-ordered: src\$(MAKEFILE) + cd src && $(MAKE) debug +sub-app-sub_Debug-ordered: app\$(MAKEFILE) sub-src-sub_Debug-ordered + cd app && $(MAKE) debug +debug: sub-src-sub_Debug-ordered sub-app-sub_Debug-ordered + +sub-src-sub_Release-ordered: src\$(MAKEFILE) + cd src && $(MAKE) release +sub-app-sub_Release-ordered: app\$(MAKEFILE) sub-src-sub_Release-ordered + cd app && $(MAKE) release +release: sub-src-sub_Release-ordered sub-app-sub_Release-ordered + +mocclean: compiler_moc_header_clean compiler_moc_source_clean + +mocables: compiler_moc_header_make_all compiler_moc_source_make_all +install: install_subtargets FORCE + +uninstall: uninstall_subtargets FORCE + +FORCE: + diff --git a/Chapter15/qmake/complex/app/app.pro b/Chapter15/qmake/complex/app/app.pro new file mode 100644 index 0000000..3217aaa --- /dev/null +++ b/Chapter15/qmake/complex/app/app.pro @@ -0,0 +1,41 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = app +TARGET = app +DESTDIR = ../bin + +INCLUDEPATH += . ../include +DEPENDPATH += . + +LIBS += -L../lib -lbase + +SOURCES += appwindow.cpp main.cpp +HEADERS += appwindow.h \ No newline at end of file diff --git a/Chapter15/qmake/complex/app/appwindow.cpp b/Chapter15/qmake/complex/app/appwindow.cpp new file mode 100644 index 0000000..46d0fa7 --- /dev/null +++ b/Chapter15/qmake/complex/app/appwindow.cpp @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "appwindow.h" + +#include +#include +#include +#include + +#include "base.h" + +AppWindow::AppWindow( QWidget *parent ) : QWidget( parent ) +{ + spinBox = new QSpinBox( this ); + spinBox->setRange( 1, 100 ); + spinBox->setValue( 42 ); + + QPushButton *button = new QPushButton( this ); + button->setText( tr("Hit me!") ); + connect( button, SIGNAL(clicked()), this, SLOT(buttonClicked()) ); + + QHBoxLayout *layout = new QHBoxLayout( this ); + layout->addWidget( spinBox ); + layout->addWidget( button ); + + base = new Base( this ); + connect( base, SIGNAL(numberPresented(QString)), this, SLOT(showDialog(QString)) ); +} + +void AppWindow::buttonClicked() +{ + base->presentNumber( spinBox->value() ); +} + +void AppWindow::showDialog( const QString &text ) +{ + QMessageBox::information( this, tr("Message Received"), text ); +} diff --git a/Chapter15/qmake/complex/app/appwindow.h b/Chapter15/qmake/complex/app/appwindow.h new file mode 100644 index 0000000..b9f9c43 --- /dev/null +++ b/Chapter15/qmake/complex/app/appwindow.h @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef APPWINDOW_H +#define APPWINDOW_H + +#include + +class QSpinBox; +class Base; + +class AppWindow : public QWidget +{ + Q_OBJECT + +public: + AppWindow( QWidget *parent=0 ); + +private slots: + void buttonClicked(); + void showDialog( const QString& ); + +private: + QSpinBox *spinBox; + Base *base; +}; + +#endif // APPWINDOW_H diff --git a/Chapter15/qmake/complex/app/main.cpp b/Chapter15/qmake/complex/app/main.cpp new file mode 100644 index 0000000..27bf590 --- /dev/null +++ b/Chapter15/qmake/complex/app/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "appwindow.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + AppWindow appWindow; + appWindow.show(); + + return app.exec(); +} diff --git a/Chapter15/qmake/complex/complex.pro b/Chapter15/qmake/complex/complex.pro new file mode 100644 index 0000000..5080ac5 --- /dev/null +++ b/Chapter15/qmake/complex/complex.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +SUBDIRS = src app +CONFIG += ordered \ No newline at end of file diff --git a/Chapter15/qmake/complex/complex.pro.quote b/Chapter15/qmake/complex/complex.pro.quote new file mode 100644 index 0000000..9a5fc9e --- /dev/null +++ b/Chapter15/qmake/complex/complex.pro.quote @@ -0,0 +1,5 @@ +///++ all +TEMPLATE = subdirs +SUBDIRS = src app +CONFIG += ordered +///-- all diff --git a/Chapter15/qmake/complex/files.txt b/Chapter15/qmake/complex/files.txt new file mode 100644 index 0000000..75aba3d --- /dev/null +++ b/Chapter15/qmake/complex/files.txt @@ -0,0 +1,19 @@ +///++ all +| complex.pro +| ++---bin ++---lib +| ++---app +| | app.pro +| | appwindow.cpp +| | appwindow.h +| | main.cpp +| ++---include +| base.h +| +\---src + | base.cpp + | src.pro +///-- all \ No newline at end of file diff --git a/Chapter15/qmake/complex/include/base.h b/Chapter15/qmake/complex/include/base.h new file mode 100644 index 0000000..45d12c3 --- /dev/null +++ b/Chapter15/qmake/complex/include/base.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef BASE_H +#define BASE_H + +#include + +class Base : public QObject +{ + Q_OBJECT + +public: + Base( QObject *parent=0 ); + +public slots: + void presentNumber( int ); + +signals: + void numberPresented( const QString& ); +}; + +#endif // BASE_H diff --git a/Chapter15/qmake/complex/src/base.cpp b/Chapter15/qmake/complex/src/base.cpp new file mode 100644 index 0000000..c43292e --- /dev/null +++ b/Chapter15/qmake/complex/src/base.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "base.h" + +Base::Base( QObject *parent ) : QObject( parent ) +{ +} + +void Base::presentNumber( int number ) +{ + emit numberPresented( QString( "This is the number to present: %1" ).arg( number ) ); +} diff --git a/Chapter15/qmake/complex/src/src.pro b/Chapter15/qmake/complex/src/src.pro new file mode 100644 index 0000000..b1062d4 --- /dev/null +++ b/Chapter15/qmake/complex/src/src.pro @@ -0,0 +1,42 @@ +# +# Copyright (c) 2006-2007, Johan Thelin +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of APress nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +TEMPLATE = lib +TARGET = base +VERSION = 0.1.0 +CONFIG += static + +DESTDIR = ../lib + +INCLUDEPATH += ../include +DEPENDPATH += ../include + +SOURCES += base.cpp +HEADERS += base.h \ No newline at end of file diff --git a/Chapter16/README.txt b/Chapter16/README.txt new file mode 100644 index 0000000..953d707 --- /dev/null +++ b/Chapter16/README.txt @@ -0,0 +1,52 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +These are the examples for chapter 16 - Unit Testing + +basic + + Listings 16-1 + + A basic framework for running unit-tests. + + +classtest + + Listings 16-2, 16-3, 16-4, 16-5, 16-6 + + Straight forward tests. + + +classdata + + Listings 16-11, 16-12, 16-13 + + Data-driven tests. + + +widgettest + + Listings 16-15, 16-16, 16-17, 16-18 + + Straight forward testing of widgets. + + +widgetdata + + Listings 16-19, 16-20 + + Data-driven testing of widgets. + + +signaltest + + Listing 16-21 + + Testing of signals. + + +imagecollectiontest + + Listings 16-22, 16-23, 16-24, 16-25 + + Testing of the image collection application introduced in chapter 13. diff --git a/Chapter16/basic/main.cpp b/Chapter16/basic/main.cpp new file mode 100644 index 0000000..b57c391 --- /dev/null +++ b/Chapter16/basic/main.cpp @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +class MyTestClass : public QObject +{ + Q_OBJECT + +private slots: + // Test cases goes here +}; + +QTEST_MAIN( DateTest ) diff --git a/Chapter16/classdata/classdata.pro b/Chapter16/classdata/classdata.pro new file mode 100644 index 0000000..2236226 --- /dev/null +++ b/Chapter16/classdata/classdata.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 23. jan 18:57:08 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += datetest.h +SOURCES += datetest.cpp main.cpp +CONFIG += qtestlib console diff --git a/Chapter16/classdata/datetest.cpp b/Chapter16/classdata/datetest.cpp new file mode 100644 index 0000000..6c85e8f --- /dev/null +++ b/Chapter16/classdata/datetest.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "datetest.h" + +void DateTest::testAdd() +{ + QDate date( 1979, 5, 16 ); + + QFETCH( int, addYear ); + QFETCH( int, addMonth ); + QFETCH( int, addDay ); + + QDate next = date.addYears( addYear ).addMonths( addMonth ).addDays( addDay ); + + QTEST( next.year(), "year" ); + QTEST( next.month(), "month" ); + QTEST( next.day(), "day" ); +} + +void DateTest::testAdd_data () +{ + QTest::addColumn( "addYear" ); + QTest::addColumn( "addMonth" ); + QTest::addColumn( "addDay" ); + QTest::addColumn( "year" ); + QTest::addColumn( "month" ); + QTest::addColumn( "day" ); + + QTest::newRow( "Start date" ) << 0 << 0 << 0 << 1979 << 5 << 16; + QTest::newRow( "One day" ) << 0 << 0 << 1 << 1979 << 5 << 17; + QTest::newRow( "Twenty days" ) << 0 << 0 << 20 << 1979 << 6 << 5; + QTest::newRow( "366 days" ) << 0 << 0 << 366 << 1980 << 5 << 16; + QTest::newRow( "One month" ) << 0 << 1 << 0 << 1979 << 6 << 16; + QTest::newRow( "Twelve months" ) << 0 << 12 << 0 << 1980 << 5 << 16; + QTest::newRow( "28 years" ) << 28 << 0 << 0 << 2007 << 5 << 16; +} + +void DateTest::testValid() +{ + QFETCH( int, year ); + QFETCH( int, month ); + QFETCH( int, day ); + + QDate date( year, month, day ); + QTEST( date.isValid(), "valid" ); +} + +void DateTest::testValid_data() +{ + QTest::addColumn( "year" ); + QTest::addColumn( "month" ); + QTest::addColumn( "day" ); + QTest::addColumn( "valid" ); + + QTest::newRow( "Valid, normal" ) << 1973 << 8 << 16 << true; + QTest::newRow( "Invalid, normal" ) << 1973 << 9 << 31 << false; + QTest::newRow( "Valid, leap-year" ) << 1980 << 2 << 29 << true; + QTest::newRow( "Invalid, leap-year" ) << 1981 << 2 << 29 << false; +} diff --git a/Chapter16/classdata/datetest.h b/Chapter16/classdata/datetest.h new file mode 100644 index 0000000..3dec726 --- /dev/null +++ b/Chapter16/classdata/datetest.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DATETEST_H +#define DATETEST_H + +#include + +class DateTest : public QObject +{ + Q_OBJECT + +private slots: + void testAdd(); + void testAdd_data(); + + void testValid(); + void testValid_data(); +}; + +#endif // DATETEST_H diff --git a/Chapter16/classdata/main.cpp b/Chapter16/classdata/main.cpp new file mode 100644 index 0000000..b322866 --- /dev/null +++ b/Chapter16/classdata/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "datetest.h" + +QTEST_MAIN( DateTest ) diff --git a/Chapter16/classtest/classtest.pro b/Chapter16/classtest/classtest.pro new file mode 100644 index 0000000..4a14b1d --- /dev/null +++ b/Chapter16/classtest/classtest.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 23. jan 18:26:56 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += datetest.h +SOURCES += datetest.cpp main.cpp +CONFIG += qtestlib console diff --git a/Chapter16/classtest/datetest.cpp b/Chapter16/classtest/datetest.cpp new file mode 100644 index 0000000..0709aa1 --- /dev/null +++ b/Chapter16/classtest/datetest.cpp @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "datetest.h" + +void DateTest::testAddDay() +{ + QDate date( 1979, 5, 16 ); + QCOMPARE( date.year(), 1979 ); + QCOMPARE( date.month(), 5 ); + QCOMPARE( date.day(), 16 ); + + QDate next = date.addDays( 1 ); + QCOMPARE( next.year(), 1979 ); + QCOMPARE( next.month(), 5 ); + QCOMPARE( next.day(), 17 ); + + next = date.addDays( 20 ); + QCOMPARE( next.year(), 1979 ); + QCOMPARE( next.month(), 6 ); + QCOMPARE( next.day(), 5 ); + + next = date.addDays( 366 ); + QCOMPARE( next.year(), 1980 ); + QCOMPARE( next.month(), 5 ); + QCOMPARE( next.day(), 16 ); +} + +void DateTest::testAddMonth() +{ + QDate date( 1973, 8, 16 ); + QCOMPARE( date.year(), 1973 ); + QCOMPARE( date.month(), 8 ); + QCOMPARE( date.day(), 16 ); + + QDate next = date.addMonths( 1 ); + QCOMPARE( next.year(), 1973 ); + QCOMPARE( next.month(), 9 ); + QCOMPARE( next.day(), 16 ); + + next = date.addMonths( 12 ); + QCOMPARE( next.year(), 1974 ); + QCOMPARE( next.month(), 8 ); + QCOMPARE( next.day(), 16 ); +} + +void DateTest::testAddYear() +{ + QDate date( 1979, 12, 31 ); + QCOMPARE( date.year(), 1979 ); + QCOMPARE( date.month(), 12 ); + QCOMPARE( date.day(), 31 ); + + QDate next = date.addYears( 28 ); + QCOMPARE( next.year(), 2007 ); + QCOMPARE( next.month(), 12 ); + QCOMPARE( next.day(), 31 ); +} + +void DateTest::testValid() +{ + QDate date; + + date = QDate(); + QVERIFY( !date.isValid() ); + + date = QDate( 1979, 5, 16 ); + QVERIFY( date.isValid() ); + + date = QDate( 1980, 2, 29 ); + QVERIFY( date.isValid() ); + + date = QDate( 1979, 2, 29 ); + QVERIFY( !date.isValid() ); +} diff --git a/Chapter16/classtest/datetest.h b/Chapter16/classtest/datetest.h new file mode 100644 index 0000000..84d8f6c --- /dev/null +++ b/Chapter16/classtest/datetest.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef DATETEST_H +#define DATETEST_H + +#include + +class DateTest : public QObject +{ + Q_OBJECT + +private slots: + void testAddDay(); + void testAddMonth(); + void testAddYear(); + void testValid(); +}; + +#endif // DATETEST_H diff --git a/Chapter16/classtest/main.cpp b/Chapter16/classtest/main.cpp new file mode 100644 index 0000000..b322866 --- /dev/null +++ b/Chapter16/classtest/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "datetest.h" + +QTEST_MAIN( DateTest ) diff --git a/Chapter16/imagecollectiontest/imagecollection.cpp b/Chapter16/imagecollectiontest/imagecollection.cpp new file mode 100644 index 0000000..e8d27ef --- /dev/null +++ b/Chapter16/imagecollectiontest/imagecollection.cpp @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include + +#include "imagecollection.h" + +ImageCollection::ImageCollection() +{ + QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" ); + + db.setDatabaseName( ":memory:" ); + if( !db.open() ) + qFatal( "Failed to open database" ); + + populateDatabase(); +} + +void ImageCollection::populateDatabase() +{ + QSqlQuery qry; + + qry.prepare( "CREATE TABLE IF NOT EXISTS images (id INTEGER UNIQUE PRIMARY KEY, data BLOB)" ); + if( !qry.exec() ) + qFatal( "Failed to create table images" ); + + qry.prepare( "CREATE TABLE IF NOT EXISTS tags (id INTEGER, tag VARCHAR(30))" ); + if( !qry.exec() ) + qFatal( "Failed to create table tags" ); +} + +QList ImageCollection::getIds( QStringList tags ) +{ + QSqlQuery qry; + + if( tags.count() == 0 ) + qry.prepare( "SELECT images.id FROM images" ); + else + qry.prepare( "SELECT id FROM tags WHERE tag IN ('" + tags.join("','") + "') GROUP BY id" ); + + if( !qry.exec() ) + qFatal( "Failed to get IDs" ); + + QList result; + while( qry.next() ) + result << qry.value(0).toInt(); + + return result; +} + +QStringList ImageCollection::getTags() +{ + QSqlQuery qry; + + qry.prepare( "SELECT tag FROM tags GROUP BY tag" ); + if( !qry.exec() ) + qFatal( "Failed to get tags" ); + + QStringList result; + while( qry.next() ) + result << qry.value(0).toString(); + + return result; +} + +void ImageCollection::addTag( int id, QString tag ) +{ + QSqlQuery qry; + + qry.prepare( "INSERT INTO tags (id, tag) VALUES (:id, :tag)" ); + qry.bindValue( ":id", id ); + qry.bindValue( ":tag", tag ); + if( !qry.exec() ) + qFatal( "Failed to add tag" ); +} + +QImage ImageCollection::getImage( int id ) +{ + QSqlQuery qry; + + qry.prepare( "SELECT data FROM images WHERE id = :id" ); + qry.bindValue( ":id", id ); + if( !qry.exec() ) + qFatal( "Failed to get image" ); + if( !qry.next() ) + qFatal( "Failed to get image id" ); + + QByteArray array = qry.value(0).toByteArray(); + QBuffer buffer(&array); + buffer.open( QIODevice::ReadOnly ); + + QImageReader reader(&buffer, "PNG"); + QImage image = reader.read(); + + return image; +} + +void ImageCollection::addImage( QImage image, QStringList tags ) +{ + QBuffer buffer; + QImageWriter writer(&buffer, "PNG"); + writer.write(image); + + QSqlQuery qry; + + int id; + + qry.prepare( "SELECT COUNT(*) FROM images" ); + qry.exec(); + qry.next(); + id = qry.value(0).toInt() + 1; + + qry.prepare( "INSERT INTO images (id, data) VALUES (:id, :data)" ); + qry.bindValue( ":id", id ); + qry.bindValue( ":data", buffer.data() ); + qry.exec(); + + foreach( QString tag, tags ) + addTag( id, tag ); +} diff --git a/Chapter16/imagecollectiontest/imagecollection.h b/Chapter16/imagecollectiontest/imagecollection.h new file mode 100644 index 0000000..80d13b3 --- /dev/null +++ b/Chapter16/imagecollectiontest/imagecollection.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef IMAGECOLLECTION_H +#define IMAGECOLLECTION_H + +#include +#include +#include + +class ImageCollection +{ +public: + ImageCollection(); + + QImage getImage( int id ); + QList getIds( QStringList tags ); + QStringList getTags(); + + void addTag( int id, QString tag ); + void addImage( QImage image, QStringList tags ); + +private: + void populateDatabase(); +}; + +#endif // IMAGECOLLECTION_H diff --git a/Chapter16/imagecollectiontest/imagecollectiontest.cpp b/Chapter16/imagecollectiontest/imagecollectiontest.cpp new file mode 100644 index 0000000..22f11b6 --- /dev/null +++ b/Chapter16/imagecollectiontest/imagecollectiontest.cpp @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "imagecollection.h" + +#include "imagecollectiontest.h" + +void ImageCollectionTest::testTags() +{ + ImageCollection c; + + // Make sure that the collection is empty + QCOMPARE( c.getTags().count(), 0 ); + + // At least one image is needed to be able to add tags + c.addImage( QImage( "test.png" ), QStringList() ); + + // Verify that we have one image and get the id for it + QList ids = c.getIds( QStringList() ); + QCOMPARE( ids.count(), 1 ); + int id = ids[0]; + + // Add one tag, total one + c.addTag( id, "Foo" ); + QCOMPARE( c.getTags().count(), 1 ); + + // Add one tag, total two + c.addTag( id, "Bar" ); + QCOMPARE( c.getTags().count(), 2 ); + + // Add one tag, total three + c.addTag( id, "Baz" ); + QCOMPARE( c.getTags().count(), 3 ); + + // Add a duplicate tag, total three + c.addTag( id, "Foo" ); + QCOMPARE( c.getTags().count(), 3 ); + + // Try to add a tag to a nonexisting id + QEXPECT_FAIL("", "The tag will be added to the non-existing image.", Continue); + c.addTag( id+1, "Foz" ); + QCOMPARE( c.getTags().count(), 3 ); + + QSqlDatabase::removeDatabase( QLatin1String( QSqlDatabase::defaultConnection ) ); +} + +void ImageCollectionTest::testImages() +{ + ImageCollection c; + + QCOMPARE( c.getIds( QStringList() ).count(), 0 ); + + QImage image( "test.png" ); + c.addImage( image, QStringList() ); + + // Verify that we have one image and get the id for it + QList ids = c.getIds( QStringList() ); + QCOMPARE( ids.count(), 1 ); + int id = ids[0]; + + QImage fromDb = c.getImage( id ); + QVERIFY( pixelCompareImages( image, fromDb ) ); + +// Will call qFatal and end the application +// QTest::ignoreMessage( QtFatalMsg, "Failed to get image id" ); +// fromDb = c.getImage( id+1 ); +// QVERIFY( fromDb.isNull() ); + + QSqlDatabase::removeDatabase( QLatin1String( QSqlDatabase::defaultConnection ) ); +} + +void ImageCollectionTest::testImagesFromTags() +{ + ImageCollection c; + + QCOMPARE( c.getIds( QStringList() ).count(), 0 ); + + QImage image( "test.png" ); + + QStringList tags; + tags << "Foo" << "Bar"; + + c.addImage( image, tags ); + QCOMPARE( c.getTags().count(), 2 ); + QCOMPARE( c.getIds( QStringList() ).count(), 1 ); + QCOMPARE( c.getIds( QStringList() << "Foo" ).count(), 1 ); + QCOMPARE( c.getIds( QStringList() << "Bar" ).count(), 1 ); + QCOMPARE( c.getIds( tags ).count(), 1 ); + QCOMPARE( c.getIds( QStringList() << "Baz" ).count(), 0 ); + + tags.clear(); + tags << "Baz"; + c.addImage( image, tags ); + QCOMPARE( c.getTags().count(), 3 ); + QCOMPARE( c.getIds( QStringList() ).count(), 2 ); + QCOMPARE( c.getIds( QStringList() << "Foo" ).count(), 1 ); + QCOMPARE( c.getIds( QStringList() << "Bar" ).count(), 1 ); + QCOMPARE( c.getIds( QStringList() << "Baz" ).count(), 1 ); + + tags.clear(); + tags << "Bar" << "Baz"; + c.addImage( image, tags ); + QCOMPARE( c.getTags().count(), 3 ); + QCOMPARE( c.getIds( QStringList() ).count(), 3 ); + QCOMPARE( c.getIds( QStringList() << "Foo" ).count(), 1 ); + QCOMPARE( c.getIds( QStringList() << "Bar" ).count(), 2 ); + QCOMPARE( c.getIds( tags ).count(), 3 ); + QCOMPARE( c.getIds( QStringList() << "Baz" ).count(), 2 ); + + QSqlDatabase::removeDatabase( QLatin1String( QSqlDatabase::defaultConnection ) ); +} + +bool ImageCollectionTest::pixelCompareImages( const QImage &a, const QImage &b ) +{ + if( a.size() != b.size() ) + return false; + + if( a.format() != b.format() ) + return false; + + for( int x=0; x +#include + +class ImageCollectionTest : public QObject +{ + Q_OBJECT +private slots: + void testTags(); + void testImages(); + void testImagesFromTags(); + +private: + bool pixelCompareImages( const QImage &a, const QImage &b ); +}; + +#endif // IMAGECOLLECTIONTEST_H diff --git a/Chapter16/imagecollectiontest/imagecollectiontest.pro b/Chapter16/imagecollectiontest/imagecollectiontest.pro new file mode 100644 index 0000000..e511ffa --- /dev/null +++ b/Chapter16/imagecollectiontest/imagecollectiontest.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 23. jan 15:22:12 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += imagecollection.h imagecollectiontest.h +SOURCES += imagecollection.cpp imagecollectiontest.cpp main.cpp +CONFIG += qtestlib console +QT += sql diff --git a/Chapter16/imagecollectiontest/main.cpp b/Chapter16/imagecollectiontest/main.cpp new file mode 100644 index 0000000..f2418e8 --- /dev/null +++ b/Chapter16/imagecollectiontest/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "imagecollectiontest.h" + +QTEST_MAIN(ImageCollectionTest) diff --git a/Chapter16/imagecollectiontest/test.png b/Chapter16/imagecollectiontest/test.png new file mode 100644 index 0000000000000000000000000000000000000000..4cf6fd993aa5963c2af1cbef431eea01111c20d7 GIT binary patch literal 327442 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

    OjNQe!AKOAdG?#e)kHYcfjNDcws+X-aX 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⪌7$>?+Z-S$o3o}H6OuknJ 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�L*@8WiF59;_`y3Shw_Eni(yh>jE4a`hm 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 literal 0 HcmV?d00001 diff --git a/Chapter16/signaltest/main.cpp b/Chapter16/signaltest/main.cpp new file mode 100644 index 0000000..39c02c5 --- /dev/null +++ b/Chapter16/signaltest/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "spinboxtest.h" + +QTEST_MAIN(SpinBoxTest) diff --git a/Chapter16/signaltest/signaltest.pro b/Chapter16/signaltest/signaltest.pro new file mode 100644 index 0000000..f372e6a --- /dev/null +++ b/Chapter16/signaltest/signaltest.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) on 24. jan 10:08:34 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += spinboxtest.h +SOURCES += main.cpp spinboxtest.cpp +CONFIG += qtestlib console diff --git a/Chapter16/signaltest/spinboxtest.cpp b/Chapter16/signaltest/spinboxtest.cpp new file mode 100644 index 0000000..4b152eb --- /dev/null +++ b/Chapter16/signaltest/spinboxtest.cpp @@ -0,0 +1,163 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "spinboxtest.h" + +Q_DECLARE_METATYPE ( Qt::Key ) + +void SpinBoxTest::testKeys() +{ + QSpinBox spinBox; + spinBox.setRange( 1, 10 ); + + QFETCH( Qt::Key, key ); + QFETCH( int, startValue ); + + spinBox.setValue( startValue ); + + QSignalSpy spy( &spinBox, SIGNAL(valueChanged(int)) ); + + QTest::keyClick( &spinBox, key ); + QTEST( spinBox.value(), "endValue" ); + + QFETCH( bool, willSignal ); + if( willSignal ) + { + QCOMPARE( spy.count(), 1 ); + QTEST( spy.takeFirst()[0].toInt(), "endValue" ); + } + else + QCOMPARE( spy.count(), 0 ); +} + +void SpinBoxTest::testKeys_data() +{ + QTest::addColumn( "key" ); + QTest::addColumn( "startValue" ); + QTest::addColumn( "endValue" ); + QTest::addColumn( "willSignal" ); + + QTest::newRow( "Up" ) << Qt::Key_Up << 5 << 6 << true; + QTest::newRow( "Down" ) << Qt::Key_Down << 5 << 4 << true; + QTest::newRow( "Up, limit" ) << Qt::Key_Up << 10 << 10 << false; + QTest::newRow( "Down, limit" ) << Qt::Key_Down << 1 << 1 << false; +} + +void SpinBoxTest::testClicks() +{ + QSpinBox spinBox; + spinBox.setRange( 1, 10 ); + + QSize size = spinBox.size(); + QPoint upButton = QPoint( size.width()-2, 2 ); + QPoint downButton = QPoint( size.width()-2, size.height()-2 ); + + QFETCH( QString, direction ); + QFETCH( int, startValue ); + + spinBox.setValue( startValue ); + + QSignalSpy spy( &spinBox, SIGNAL(valueChanged(int)) ); + + if( direction.toLower() == "up" ) + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, upButton ); + else if (direction.toLower() == "down" ) + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, downButton ); + else + QWARN( "Unknown direction - no clicks issued." ); + + QTEST( spinBox.value(), "endValue" ); + + QFETCH( bool, willSignal ); + if( willSignal ) + { + QCOMPARE( spy.count(), 1 ); + QTEST( spy.takeFirst()[0].toInt(), "endValue" ); + } + else + QCOMPARE( spy.count(), 0 ); +} + +void SpinBoxTest::testClicks_data() +{ + QTest::addColumn( "direction" ); + QTest::addColumn( "startValue" ); + QTest::addColumn( "endValue" ); + QTest::addColumn( "willSignal" ); + + QTest::newRow( "Up" ) << "Up" << 5 << 6 << true; + QTest::newRow( "Down" ) << "Down" << 5 << 4 << true; + QTest::newRow( "Up, limit" ) << "Up" << 10 << 10 << false; + QTest::newRow( "Down, limit" ) << "Down" << 1 << 1 << false; +} + +void SpinBoxTest::testSetting() +{ + QSpinBox spinBox; + spinBox.setRange( 1, 10 ); + + QFETCH( int, startValue ); + spinBox.setValue( startValue ); + + QSignalSpy spy( &spinBox, SIGNAL(valueChanged(int)) ); + + QFETCH( int, value ); + spinBox.setValue( value ); + QTEST( spinBox.value(), "endValue" ); + + QFETCH( bool, willSignal ); + if( willSignal ) + { + QCOMPARE( spy.count(), 1 ); + QTEST( spy.takeFirst()[0].toInt(), "endValue" ); + } + else + QCOMPARE( spy.count(), 0 ); +} + +void SpinBoxTest::testSetting_data() +{ + QTest::addColumn( "startValue" ); + QTest::addColumn( "value" ); + QTest::addColumn( "endValue" ); + QTest::addColumn( "willSignal" ); + + QTest::newRow( "Valid" ) << 1 << 5 << 5 << true; + QTest::newRow( "Over" ) << 9 << 11 << 10 << true; + QTest::newRow( "Under" ) << 2 << 0 << 1 << true; + QTest::newRow( "Valid, no change" ) << 5 << 5 << 5 << false; + QTest::newRow( "Over, no change" ) << 10 << 11 << 10 << false; + QTest::newRow( "Under, no change" ) << 1 << 0 << 1 << false; +} diff --git a/Chapter16/signaltest/spinboxtest.h b/Chapter16/signaltest/spinboxtest.h new file mode 100644 index 0000000..763125b --- /dev/null +++ b/Chapter16/signaltest/spinboxtest.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SPINBOXTEST_H +#define SPINBOXTEST_H + +#include + +class SpinBoxTest : public QObject +{ + Q_OBJECT +private slots: + void testKeys(); + void testKeys_data(); + + void testClicks(); + void testClicks_data(); + + void testSetting(); + void testSetting_data(); +}; + +#endif // SPINBOXTEST_H diff --git a/Chapter16/widgetdata/main.cpp b/Chapter16/widgetdata/main.cpp new file mode 100644 index 0000000..39c02c5 --- /dev/null +++ b/Chapter16/widgetdata/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "spinboxtest.h" + +QTEST_MAIN(SpinBoxTest) diff --git a/Chapter16/widgetdata/spinboxtest.cpp b/Chapter16/widgetdata/spinboxtest.cpp new file mode 100644 index 0000000..1b92602 --- /dev/null +++ b/Chapter16/widgetdata/spinboxtest.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "spinboxtest.h" + +Q_DECLARE_METATYPE( Qt::Key ) + +void SpinBoxTest::testKeys() +{ + QSpinBox spinBox; + spinBox.setRange( 1, 10 ); + + QFETCH( Qt::Key, key ); + QFETCH( int, startValue ); + + spinBox.setValue( startValue ); + QTest::keyClick( &spinBox, key ); + QTEST( spinBox.value(), "endValue" ); +} + +void SpinBoxTest::testKeys_data() +{ + QTest::addColumn( "key" ); + QTest::addColumn( "startValue" ); + QTest::addColumn( "endValue" ); + + QTest::newRow( "Up" ) << Qt::Key_Up << 5 << 6; + QTest::newRow( "Down" ) << Qt::Key_Down << 5 << 4; + QTest::newRow( "Up, limit" ) << Qt::Key_Up << 10 << 10; + QTest::newRow( "Down, limit" ) << Qt::Key_Down << 1 << 1; +} + +void SpinBoxTest::testClicks() +{ + QSpinBox spinBox; + spinBox.setRange( 1, 10 ); + + QSize size = spinBox.size(); + QPoint upButton = QPoint( size.width()-2, 2 ); + QPoint downButton = QPoint( size.width()-2, size.height()-2 ); + + QFETCH( QString, direction ); + QFETCH( int, startValue ); + + spinBox.setValue( startValue ); + + if( direction.toLower() == "up" ) + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, upButton ); + else if (direction.toLower() == "down" ) + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, downButton ); + else + QWARN( "Unknown direction - no clicks issued." ); + + QTEST( spinBox.value(), "endValue" ); +} + +void SpinBoxTest::testClicks_data() +{ + QTest::addColumn( "direction" ); + QTest::addColumn( "startValue" ); + QTest::addColumn( "endValue" ); + + QTest::newRow( "Up" ) << "Up" << 5 << 6; + QTest::newRow( "Down" ) << "Down" << 5 << 4; + QTest::newRow( "Up, limit" ) << "Up" << 10 << 10; + QTest::newRow( "Down, limit" ) << "Down" << 1 << 1; +} + +void SpinBoxTest::testSetting() +{ + QSpinBox spinBox; + spinBox.setRange( 1, 10 ); + + QFETCH( int, value ); + + spinBox.setValue( value ); + QTEST( spinBox.value(), "endValue" ); +} + +void SpinBoxTest::testSetting_data() +{ + QTest::addColumn( "value" ); + QTest::addColumn( "endValue" ); + + QTest::newRow( "Valid" ) << 5 << 5; + QTest::newRow( "Over" ) << 11 << 10; + QTest::newRow( "Under" ) << 0 << 1; +} diff --git a/Chapter16/widgetdata/spinboxtest.h b/Chapter16/widgetdata/spinboxtest.h new file mode 100644 index 0000000..763125b --- /dev/null +++ b/Chapter16/widgetdata/spinboxtest.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SPINBOXTEST_H +#define SPINBOXTEST_H + +#include + +class SpinBoxTest : public QObject +{ + Q_OBJECT +private slots: + void testKeys(); + void testKeys_data(); + + void testClicks(); + void testClicks_data(); + + void testSetting(); + void testSetting_data(); +}; + +#endif // SPINBOXTEST_H diff --git a/Chapter16/widgetdata/widgetdata.pro b/Chapter16/widgetdata/widgetdata.pro new file mode 100644 index 0000000..c3367c3 --- /dev/null +++ b/Chapter16/widgetdata/widgetdata.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 23. jan 19:14:04 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += spinboxtest.h +SOURCES += main.cpp spinboxtest.cpp +CONFIG += qtestlib console diff --git a/Chapter16/widgettest/main.cpp b/Chapter16/widgettest/main.cpp new file mode 100644 index 0000000..39c02c5 --- /dev/null +++ b/Chapter16/widgettest/main.cpp @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "spinboxtest.h" + +QTEST_MAIN(SpinBoxTest) diff --git a/Chapter16/widgettest/spinboxtest.cpp b/Chapter16/widgettest/spinboxtest.cpp new file mode 100644 index 0000000..a6dc87f --- /dev/null +++ b/Chapter16/widgettest/spinboxtest.cpp @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "spinboxtest.h" + +void SpinBoxTest::testKeys() +{ + QSpinBox spinBox; + + spinBox.setRange( 1, 10 ); + spinBox.setValue( 5 ); + + QTest::keyClick( &spinBox, Qt::Key_Up ); + QCOMPARE( spinBox.value(), 6 ); + + QTest::keyClick( &spinBox, Qt::Key_Down ); + QCOMPARE( spinBox.value(), 5 ); + + spinBox.setValue( 10 ); + QTest::keyClick( &spinBox, Qt::Key_Up ); + QCOMPARE( spinBox.value(), 10 ); + + spinBox.setValue( 1 ); + QTest::keyClick( &spinBox, Qt::Key_Down ); + QCOMPARE( spinBox.value(), 1 ); +} + +void SpinBoxTest::testClicks() +{ + QSpinBox spinBox; + + spinBox.setRange( 1, 10 ); + spinBox.setValue( 5 ); + + QSize size = spinBox.size(); + QPoint upButton = QPoint( size.width()-2, 2 ); + QPoint downButton = QPoint( size.width()-2, size.height()-2 ); + + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, upButton ); + QCOMPARE( spinBox.value(), 6 ); + + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, downButton ); + QCOMPARE( spinBox.value(), 5 ); + + spinBox.setValue( 10 ); + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, upButton ); + QCOMPARE( spinBox.value(), 10 ); + + spinBox.setValue( 1 ); + QTest::mouseClick( &spinBox, Qt::LeftButton, 0, downButton ); + QCOMPARE( spinBox.value(), 1 ); +} + +void SpinBoxTest::testSetting() +{ + QSpinBox spinBox; + + spinBox.setRange( 1, 10 ); + + spinBox.setValue( 5 ); + QCOMPARE( spinBox.value(), 5 ); + + spinBox.setValue( 0 ); + QCOMPARE( spinBox.value(), 1 ); + + spinBox.setValue( 11 ); + QCOMPARE( spinBox.value(), 10 ); +} diff --git a/Chapter16/widgettest/spinboxtest.h b/Chapter16/widgettest/spinboxtest.h new file mode 100644 index 0000000..366299a --- /dev/null +++ b/Chapter16/widgettest/spinboxtest.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SPINBOXTEST_H +#define SPINBOXTEST_H + +#include + +class SpinBoxTest : public QObject +{ + Q_OBJECT + +private slots: + void testKeys(); + void testClicks(); + void testSetting(); +}; + +#endif // SPINBOXTEST_H diff --git a/Chapter16/widgettest/widgettest.pro b/Chapter16/widgettest/widgettest.pro new file mode 100644 index 0000000..a371649 --- /dev/null +++ b/Chapter16/widgettest/widgettest.pro @@ -0,0 +1,13 @@ +###################################################################### +# Automatically generated by qmake (2.01a) ti 23. jan 14:37:28 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += spinboxtest.h +SOURCES += main.cpp spinboxtest.cpp +CONFIG += qtestlib console diff --git a/GPL-COPYING.txt b/GPL-COPYING.txt new file mode 100644 index 0000000..df08e58 --- /dev/null +++ b/GPL-COPYING.txt @@ -0,0 +1,361 @@ + + The Qt GUI Toolkit is Copyright (C) 1994-2007 Trolltech ASA. + + You may use, distribute and copy the Qt GUI Toolkit under the terms of + GNU General Public License version 2, which is displayed below. + +------------------------------------------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + +------------------------------------------------------------------------- + +In addition, as a special exception, Trolltech gives permission to link the +code of its release of Qt with the OpenSSL project's "OpenSSL" library (or +modified versions of the "OpenSSL" library that use the same license as the +original version), and distribute the linked executables. + +You must comply with the GNU General Public License version 2 in all respects +for all of the code used other than the "OpenSSL" code. If you modify this +file, you may extend this exception to your version of the file, but you are +not obligated to do so. If you do not wish to do so, delete this exception +statement from your version of this file. diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..43d7aa5 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,27 @@ +Freeware License, some rights reserved + +Copyright (c) 2007 Johan Thelin + +Permission is hereby granted, free of charge, to anyone obtaining a copy +of this software and associated documentation files (the "Software"), +to work with the Software within the limits of freeware distribution and fair use. +This includes the rights to use, copy, and modify the Software for personal use. +Users are also allowed and encouraged to submit corrections and modifications +to the Software for the benefit of other users. + +It is not allowed to reuse, modify, or redistribute the Software for +commercial use in any way, or for a user’s educational materials such as books +or blog articles without prior permission from the copyright holder. + +The above copyright notice and this permission notice need to be included +in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS OR APRESS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..540b283 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +#Apress Source Code + +This repository accompanies [*Foundations of Qt Development*](http://www.apress.com/9781590598313) by Johan Thelin (Apress, 2007). + +![Cover image](9781590598313.jpg) + +Download the files as a zip using the green button, or clone the repository to your machine using Git. + +##Releases + +Release v1.0 corresponds to the code in the published book, without corrections or updates. + +##Contributions + +See the file Contributing.md for more information on how you can contribute to this repository. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..403019a --- /dev/null +++ b/README.txt @@ -0,0 +1,47 @@ +This file is a part of 1590598318-1.zip containing example source code for the +Foundations of Qt Development book available from APress (ISBN 1590598318). + +This zip archive contains one directory for each chapter of the book. In each +such chapter directory, there is another README.txt file describing each example +briefly. This is the first revision of this file. + +Notice that most examples are protected by a BSD license, except those listed +below. These files where taked from the open source edition of Qt and are +covered by a GPL license. You can find more details about the GPL license in the +GPL-COPYING.txt file found in the zip archive containing this text file. + + Chapter03/messagebox/cut.png + + Chapter04/sdi/images/copy.png + Chapter04/sdi/images/cut.png + Chapter04/sdi/images/new.png + Chapter04/sdi/images/paste.png + Chapter04/mdi/images/copy.png + Chapter04/mdi/images/cut.png + Chapter04/mdi/images/new.png + Chapter04/mdi/images/paste.png + Chapter04/dock/images/copy.png + Chapter04/dock/images/cut.png + Chapter04/dock/images/new.png + Chapter04/dock/images/paste.png + Chapter08/readwriteapplication/images/copy.png + Chapter08/readwriteapplication/images/cut.png + Chapter08/readwriteapplication/images/new.png + Chapter08/readwriteapplication/images/paste.png + Chapter09/tooltips/images/qt.png + Chapter09/whatsthis/images/qt.png + Chapter09/assistant/documentation/images/qt.png + Chapter10/sdi/images/copy.png + Chapter10/sdi/images/cut.png + Chapter10/sdi/images/new.png + Chapter10/sdi/images/paste.png + +If you have any problems with these examples or find any errors in them, feel +free to visit http://www.thelins.se/qt and contact me so that we can solve these +issues. + +Thank you for using these examples - enjoy! + +Regards, + +Johan Thelin diff --git a/contributing.md b/contributing.md new file mode 100644 index 0000000..f6005ad --- /dev/null +++ b/contributing.md @@ -0,0 +1,14 @@ +# Contributing to Apress Source Code + +Copyright for Apress source code belongs to the author(s). However, under fair use you are encouraged to fork and contribute minor corrections and updates for the benefit of the author(s) and other readers. + +## How to Contribute + +1. Make sure you have a GitHub account. +2. Fork the repository for the relevant book. +3. Create a new branch on which to make your change, e.g. +`git checkout -b my_code_contribution` +4. Commit your change. Include a commit message describing the correction. Please note that if your commit message is not clear, the correction will not be accepted. +5. Submit a pull request. + +Thank you for your contribution! \ No newline at end of file

    OjNQe!AKOAdG?#e)kHYcfjNDcws+X-aX zv!webw-Jp{KZw2=>L%kT+`N8l2kOI)Usc4>BD7Ogky5p_-oHk zEeiXUa2cqg7#)%aAeb^QCac5P)oZ^`G!TZK5RtYx(QialBZ|e2$}@>5iu^q5@mMqFyW!&6Jec^4@jKjnVey8?ZK_ zm_?Ol4(p;3^*)Q}L%vIov0{;6o>Cu?Se_ok<(I`jA`-1a=p=VRclTfB(idrM9E%BK zMJ~!{UqK)*A(Da@m^(hJ26jmU3ZGqqVy|bs&BU08+FP=!xE*r%hO0OHiWojlwF&{2vyr)L< z;UYB-h^COt$BVyCp_Kt;_P6LS_8wAsPXzN0NwJr|$Li%HDY;MFFK~HR;9~>FMu_2R z#)k${V-SoHOo8b#iAa371Ob8Xso4ZRBO0Ga!pVxXEF4&4UfklKQsH^tBp3NEqsntGI6{3^j@BJ;x$^L#++`JGC) z!j4$UrF}6=5W^xwVXDP?%{=EI%;k$2&Sjc~UqmX4MKcJ1`;4-%jq^Aj?SD~;q1M*oNF`eh=`1#~$jpx*v z0a7*cGKw*(HNEMN#Wd+8yW)r%S-AXO%sUF2#n4E`4Ty%Ml8Q%DVq<)MQAgo3v@mZ$ z-opGSsW6N5!poA7&{#9fHE}EG!uz>$S@1P7@}qppgB@F zH)dcXDm=yvcW-1dW?}Az$ZSl_&8a#k>wJ(cca)Dhg4qbBi<*lB(*d#A-_k$>r351` zVgX}Minc9HxGWpNNHEr5gqKAlWFxs;#Wuz%m>It&7yDld!CWRK7gIA42}oSmh}tyV zY$GakCXhy#LV{`MZ;8iL=+uRCe8*0uF+~)ZU%Hvmcs8O>)4}|P9nTvP4PlBDjjf1Mg!u1!U#pevml57GMQFt_Zkzj&kBp6a;0WPl+%myB_L^hdV^z(9t zy%Cfo^NL8No?yZ{Uc*IFaZez$r>LYH@+DqS)DD#M2_lsEjJUGBy$BMjBPGd2lpYx; zS=vVK*mp0Un%PMt?Zb~ZgiX!Gbi zQf0{GCH0tB5J_=9es_U_Ie1U~M3gjHJ;7L?QI4EJT?9h;Ai>)%njwl=B7Nm9+L6lkuY>_6*I87PR4ktRK~5b! z13{e3>ZHo@rXLBY7{JnI{Ny=m7cAs_2?mG)>^&K$&tRBZ!vsIvN%}FSFVh{~fL!XD-q2ah^_c$U)iYOyzW|w0DkO$s+f=*?b|bU|%A^%upzw z!FhL%h-Qu`XP$JJFi$H9!d@6YE{m)a3Gf^s4^Fb*kA$ zY0%5g$d!D%*v@EK69$#`oMZ<8T@jRTPEc5vm~>Ar&}rIc&tW2!5mI7hIGD#6%oYRN z=m&D%jr|1HU5GgPA%%Vl@`14QCsjoKMo2Kd*!}lzWVa6_8{sURaFRB1iBuYPKNwMV zQ)B5y9VW?0Fm0GnwtQ=U3uct`zFeURvw;G9BN0@yqmPLyI!Il0Qt-b)PfI)Y`;JX+ zMLpKcbs<$oqpw~6PLj<2T3Wf#bx&`K&|}PWnU*XzMaD2MnhrH-G&N-d9m;_3RWg>cR7q-?31yrI@}xM=TJ^3&`qKh1W;3XP0#r`(>i129y+*sjxDWKp`hZXLzybwnlWh)y^Mu6L@Wr1Ko2c}7~tF~I?+ zI}))dtuFmLMP_a1{{y0@JDl4s{LYqW64lXqfx65%tpK(L4Dnl4RzARb)5m7GpA`EL zX?RoOi_|+;aOl2EPuW8vjYkyaA0tzKg2AMc<+tY!()dWajQWWk_fhju@kMWpL&iRy z%kb|!$DXH7Y=@GI9ds+q>GOmoa}Li{Ph zM32@l+%@|cVf7E=>yNfbgs^=4e57)`|BOCoEW|b{x$q8B&gTBg z5~QCUzWM0xD1g!!NO$)bBrwjnSux7aVfJc6nua89UB>{is~y>GTY5dxm!1!FrC;X9 z(hrjZ>Gg0&dO6sZp3&R!q^~tS=*rUFDF|ea@OI`rk;iEWBAVWaUXcD8otO@rq*Hg6 zJnI~`C3E;?&Egw11G&uOr8P$?ZJxnMbHH8B6r?hSNvKl`jiiPk6ld*}$S~Kpsv4L5 zN0nMnViEI1D*8}W;FGe48z3DMvS}Z_~M%ba>&qCc(MKd1zkoorVf1);-(-}7u?j@NX zY9NwKC(V*ht!$>DG7KppoJ(A9pNb}yrmR$x#W-Xlk2au^Omb08*7PlNeFSMQz09n? zT!e7MIsO(lR-WbhQ`BirBWFGjIbGmBMoHIr9YRIfwGB8cgI4{~bRZy|J4QNHf>~+2 zm{uCjrbSFWRq+ksqC5;K_?cKoRTMMJ`>cJ81mpbr1$v*HQ@^}jdwrzKRSjlg=XwhL z1sl>F(WAG$g-uI%Ye6WwA&0k^_?%!gdko9`Y;&)fVs!0OM==62LuPI+KhfmDy;PL6oM%>H@XK)FuDL}n0b@5;ccvEmU#VR zF%kljv8g+pL`Y?tIiXHDO1*dH2n2)M{4EIP9&5rQRGE(;nJ1*Poo4_C&N~WK)!C6~S14$uRx#c^^xVkf}7Hh%!~u+Kn|8i@)aTr^(|hXI3?( zx08{Bk;DjZtdT|3Y^ZP8fo*}^!g>_hSyV?MqA~uSIdMMCLMl^7&T*tmoXZy9^KdhW zi|9g(pC#&`Ceg<{jG3!v(k#AJGp$4tZCHt1Au?z^ixFbBDw)HxYOVm@Kq0^Rd|GL5 zNVj{grJG$X>CtdkdOFsd?hmwu$JK|0k-*P4r_#syk@RV*H@$*T9=2ad58BSB`|W4b zZLCU`uVOT4p9iF|Kq^dMs5uC3o;1ZgX$pyBfttw-MfExQ0~R2hMM!Uf9p*fXz&r)| zML`;D8FF1Pf`MGj(~h%vC^*nqRJZC#(^U#L$=T@9;-N$@S!85_F>1-=!r#$&%FGUo z0W-<4*s%B*kr*Y4)!Rcp+o2SkqmJt-ohAEF?Chy&W;u;{5=Eb7JKjSLY3C4woVmn9nEl*)dHVTk&P zD4qFvDyRK0kPEy1j!1bCnUFr~MWrVBc$?^haadfLbHigf^|A-=up1axwuMX?OBYmM z%8D-_GrnZOo!eZ6TvU|lF&2%G7Vt@n3HxB8$ub%(xsOo`b(nJ~$pVmwIKypqUq1cS zI!I-q3zBcgWs7}JvZXl9pG)-F1 z5zlC@^g5x6EQ^6!v#T0JJ6i6x2j|O(T z_^l7K#w{K_omNnP-eGfjpUviDy!f8r0IqXD_9n|cLPde6NWwH&bmX&m2dd8ea;&AQ zDs`A-6NCdX{hDA7B1b-mP~boX$OY0dU1lU>Jx2U^7198OV1j%if+^r{)N4N)8C8&2 zK0%B>5RDZnwb2&@lVzp#&5vQ9QaKn~gYoZTXt}@wXe47lgNvSTm}#>(62%y$SfiLY zlv7keFsQFWg>?`UL#!~yj^JtwOjivZh7`E3n1W!&DU50CH=?H$b%tA4ucn2I=hMAb zQdF%C=_L`y>!BOzMSpvGG1Q*kPxhwo=X%ng?u@1X z=@CTou>X2`I@*;U4dHv$+e(LdQ<`ap$XZBYwc@S|3B{4r*3xB71&un8Akq}IL_^f# z1)>hdjv9^3qwZReT#)q6Qj}k0S83tSsKhxqw@`Q8hCK8g5-X6-GHJ0Tiu8-rR8}as z-$ZrhZH?ND%EpM$oUx-Nh~ueMyM^tE&7ambs121=WpPF*k*1>#gwch4LZkFNjM5;d z+ksI?5QHf%6-7i0Mk6jl&h}7YRJ`3xr;V8cBkeH?F^xew;grDRdcBU=Dh_pN4v>0N z5MbX?J;CI37&~be@*o%bswSzgIL*_M(GCieSoB)!V>E#yl=A>F&YdE>(ab2dm@)}8 zH%^M&NZCXBtfxNd!n%GQ~o!)cbJ`a~)8D@K_;e~Gl%g*1Pj zv@GOeR2*}b6mt-fx&g@KvLg=(1CooRA-M?08jE?-WOMAer-^8$@ECKL*c9rqSt3d! z9*g{WByo;lj9#AMF0Au!z58#OY#2NKN|_Z3FBaphG$TSd2Du#jE(k_(Ktw6_w$PO? zo?t&@A5BPs>txB<(mpqBM#JN0@cD{N+PchZ>LbdejYw+Z08(+XY&ysOIki~_lj(sLGhV0>#du`uN2>%w0iE8KU!m&IuMrGsDN|GR zkxf{{Kn9%-Y8irFL!;?3Yc@(_Eh_8StUPzrG}$p0=yMmSUz|$|?KA;) zQp>n;F}+zHO5fiaOaJ*|CH?QuZ>9hD56=SsuQw0V|MU5s^#6FYlK!+j9{9`3czQQ- zBk-`}YI@YsoE~?!PzT{hd6{&=)yq+QUnD&?cjXe15X44`%QTzNw#1=M^Vq_#;DxnJ z(SC`p_azGSEBFTa_X5f;qZA2cmeii33Ksd&Eb-&FjlOuizeLM?(N?H8Eg$7F zC-Vl+|K)(9#k6aduBtZ9r=n8VzfY*SC(eb>NBePh$cyYSSu?gpc4>>eN0Ym z)Vs_m!E{vE-DrEm?thG3`vi-<6E(|pO>Yx}(5Ua2^3tzN3|BThj#zMDn*9~l)ryIx z{%_&?r4g!WQ^AgH93q&62(-=!&{^*DNif>oMC1bc=mz(wp{L|h2qp|TIoC28IegzL zr)XIZmwN~Z*+ctAtKK8p95T$nCO zu{{$Eg?9*~3BoW+G38ZiB}OwB`Tw(|#f(Bu)AJ&NV7^(O)ngFKm4DB;jNh1qBP{A) z;s317G(a?>5rPp)ogKg62BU*CS$1WnL6b=7nyEj&WA-gATqL^ZyQ@Qj(pSmF=rZbU z5w&cOsHKJ~dNG0#<@!QAl1jl0k>uniq8fUMbYLzKjPq5VvyetpCFYb$l}qH1ZA0{? z%1w#U597kGoS34#DKQB~I15FR339Q|eM;ibm;XXFWzAzr``)4v~bj@exRvXLN( zVk8MwY|qGEJS9ub5 z6cV)-;t$i*w^MQdAn(u&dHjqdcS>qdHc zqcc6Zel0z|)|%e;_oep}L+Rs_>GbmPXnOf@EZtk`O;2wPr3dr<>E3K_S|&1C8fZ`R zoy}>!y(!)9q7(gkLz=mQXV%pVq2gLVWuvc_65x3n3MW|foxW+`iI-5<(I6|2kp?66nSI#u zFf$1z$fdHRiDpujW!yhpuSpF|V`XDclkhntLy1hQ8{G+n#ZZsoNbTI6%H7$K$C+SO z%|f%2bcO`eOZ~)}jL}Q2jsj`K--rbyp4{or!c5_RfHYYV1(XKP9Jyq2>498~dPExw zy7iT7L@xn)Vl3Kg595M=xvHy3FrpC4<>-Z>4g)E*5UDg1$z;&LS)qlZe$yB0fA#+@ zU$4hNb6sj7Ro20|xY5W2V-#gS4yijfehO3O&tHxv*=h3l6D(T#@F|ipf>oe1YpsRP z--3RD^^|(lUoYXzY~5Ug5zZ_TI;PED9;QZem?FGGx`<|c9xdyO zjeHpq9E)*fEg%0^^~orGuE%Q>ZEsMt8No;}QQ)Tr^WxOnKu(oOFr@AvqmrIes34Ju znrOiuoytS42obc>QC%ldM6)LAh0qy5Jg?l69n~D^L^1B9~(QVziM_kwQc(nN;d)Fp|g5Rpe6AV;+Al z;Q!(_q|$_ujIh9Op?|f&uRK`^wQ925D7wZSwEZh0yM2Jqzs zoj@1QoMG{%SasndGd(aeY-phHeId;@HKyrC{H$7A(sFwzZo802PhWb}b|byI(U;!! z4y0ekCew$$zVvBmD18{{O|QE<(|vreZZ%#?kFPT+w_PXmvv zK~yu7ElsJ9=Nq|v1^3-6%=@^&ps6NigET}p`ZNW66gT?cu>t+0M`CP&Bts-2!Pv}bBcl^4OzEbtT zG_9i_W*y{0(f`-j9MMpTh$J8{UnRXJniU8@GEJn(bO_MI)Zu5XL|@i8g?JZz?cf8Xq3rB_NA6#|M&T67EK*JxF5DE;&wNAL=W7<)ufR8z znk+{(Ml{ck5IH#Ek=l&PvbS9K9+G*>b>cO35mD@CjFh4ovJgz=lNBxjq{lq3dPKU3 zh~V{Ek0PJf^V39C;N@8rW$RIoWwl$b8xgUnf~!OEOf!m+aEcHi4_2cF1gX41CjE}u z@b{$GvjPkgO9(jTt8mWNiXsw39Po;I)hi;O=)>W>UqUR!ML9<=Iwx12V?+qAhz^7v zW8pJaGqcPMl=br9Pc%~&B3LCD(qC1yVoFR>2|y&jG!dON6Rmg*>`lL1&G0sbV1A;1 zM*K*l=FfHbh3mv0E_2(6bcl*LuCZ=Xq_7i^$?OSs=Gdm+K_&H|@j|-KP^X7i&!^`^ z39l%Siw`5r@t_9sX1E)(!{>DPNS+3Xv^n_Bnq+2*ftpvwDv=qE^0@r*iMiF zH1eVsWlrZ)x^8dc!L>{$@DegekBcZqB%CF>hZiZZNYlLggBN_f-R69 zlT4-{7l)$>FXuj$Jdra}QZdAg+`H2pS@g@WG)c$EW<(z|5FTp~jLyvU2nXSq=2;Cs zi#avUe5s-W7V07swkG0K!WqcN9j_@BqYFu(I7LfZLqyrOl)_BXvp|RJ$9n zN-*4)9kjI?Q*C2J88&9t5FO4{lw!I|pEPb4qog?xosR8;(Xi4e%NaCf4vmU5U#rBT zL8dUW8*s>)ZphSB>S0Puf{{D|$e0JkT1bp(lOq0B-dquk#r-Jolaf+;+`(m!ofP`J zDf;(d$A1GwSsO0OEnjAjGV3A@q~fCaawAdBdH}(Qu#TZ%-?WYt8?Z66`8z$!AQfsa zMQN7PW8NOZsnEvbIR?9f=u5LpqZn&G#pqH|%mk8nBlBg_xsE4S31|;6q z1S`DPTJ9--i=%HRmKtl{wc79wC{ESiD^R zHi{`tou!781pup7HX3y5>a1s4j3}TkrG)woVjc-5`cEj<7x&^^>!|=aMXjisRvC^6 zrt>7^^C;XPX~{63e|Ar{OFzseD?+tf|8uuwqXp|MKVITU)FJ_tl$O^83b|0wSE4L& z1c@~5On+!5Vrki)eresAere(Vn)jtYH0}Ep!TdxMrk-UU#V<5pia*dJ^GBLC|3o_N zKd$bH%YWoK#2P#B9YWPZG0*X{OQ^A)4K=3M<5$!B>Fc09-S0e$T(>2?AA?jVlD{70 zIM|h*_jIKD*IFowv(VcU!k1o8tFg1^(jWvfz(PGpZDp8fV4P@T;snG&lrVJ?^58l# zar|U0MdkG+b)|x=VE))e$bsDR(Tw>+5XC`iHPnKv39V2A3Xq;!B2{PM+-AaQWq~L+ zluO&(B*6r@yl{+k7(`~O&vDPH;pT`s78vSeR3eN>B#C))ryf;+S*$NL6{iUbNhOGd zhN}e{ujbg9OrtKDMz%OZNIZ=`ewAQQU%41-->t;g;awGJIM>7}m-h0+^i2n#@qaG- zaeEu+oNlNU2n%l>US=ANBe22Fqhw>6Ge!om5IdtLrdC#|v4~zEvzo_SkW8-M2x}$U z1x>M78Hwl-XUD#cl!`r!YD||Ii8za=6#XLtG9?z{bgjS8d{*_r*bC$60#Qsbi=DpH zI*X5(>aHm0Qzt6wF}=hztSl2m*{c>MPrWf>azdi`1o7;3FS-wHjrMOO?O!TIqi^%-Tkc)hkY@6l?e$)3A3I4MkEcKqY;q)W8ry5%FU^lVL^k>Sv%2J zC#lS95MaC0HBpsy(#dZ>mx@b&BlD-IiQ@RMKoqm!Mu?4!zGJG!Eb#v-ia|JGRI=!J zW84uO6ef`@GM#dnl$gi)P4vHP-4LXr!fXXKl(zm(w2b~2(?HZ3N`1wehpMf&ET*MF zvFy^bS-fWPe#0W}kgRtI13r)v`#>u04fPFSEyrTNDlemm zr;wZE62!K=5dlraBYZmJr7S&ajDMi-)B_bC{;Aecsex~c*C_}Qz(Tvdr zkp<11KVwB>FU&8v2mAqxngajM*B=4g#$Fja|1WLfew)BX(q!ubzcj2*e`wr51hfH? z+8Fpl(-!WxjmLv*ns%f$POR*!{ET$YooBZBoz5$1?kbBjUOBfrE|Z3;M%2>SwQ%`D zbPt;vlTgOk@!K3|0kWSj{{T{C$z%*Qn7tjs<|1ny(?$yrfffn{v;4m>dMGfesK;Cg z3cz7V=Mc&-qMI4iXmfV-^P^j|Zw4%o;+uDDGmm92P3fPJU=$>n2CIMEs3TFJFFiaK z?IoG8&H?s?MB}0P?W&p4l$T1ddRWXCOQgaU=(snMnIpFD^E6GHWEtdgog(S}#LmCp z`UNSb0a90z%m|D2D8w*I!{pd^$g9_q$^%36x(su@MjB4CHcS19NqVLatNfzeZFd!4xYQy~>PYtj~lp4H>g_ zoXgnA2n+s-2nxYmCmQM?|yXjgOlk$bNy%q6D)< z1iM0gD?mNP$VFliPPtrxw4FwIi&~96F$-JhgW0w&4<4gG#^YV)F4<(MZN3Eal=&;F z!@{10g|rZiw(S8r;6>@sFA>gaYAUCwVzD<>Rqg8EvS4RopgE95_&tOo!MtPfehXeB zRkjY36<#dv5Qr!QQz8}@Vo_=l7QV&13mI?ElXe1yU~1>Vxdib=RF%mtM`>IK`4xgG z5l!^WXdPpRf0%q`kFwW9FK>`5ze5QY#Degl9uiEDj8i5}<5dx0jR2!Q#B)~!V{|CV zl-CuFlQdLnGAY4)PZ9kGYB7aiO3ft`3kH_IB9~Qykz9Vk@9gJ>{Xru21mk5%CWxnr z|G!Eq4GWo{u55#pHgi7#nTSF#jhna~*9W!+{&01B`lAG6-6j02fCh@HxNKbPWoLfF zo`-XIWt}@0jf!@?kCJw>n6JEegl5PQQci=Uvcv#ZDnl&(6Oc`$oRHoM7ke>-pg_!X zSu7A`2&0Yi|4N?q@e$>Ivyj#dl4eO|8tJo8gi!M!<36(iQaJXB5RF({3fXi>r%i$7 zG+0T8dD-ixEdEy}om0FAGo-fcXrBkV9Artb4X1X>=LSU!_XW9-PpYgAGjur5k-MJ7 zqT6oz(nF%k$3nMit+4N}$fYnZ@%^Xz{nmvu0RqE0|VuVyCiUU6NICsS3-o^*ofV zOuDr8GJy(i9D=ciWGy8IzB!1k5)~91eUD{c%YbHhaw*AlAtJazdQ4IgUF$hwe%VE2a{~fthv0H&|GFTVOfV?N zAeiWxDFovrOJD@!7=Y`f_DqjSFrA!_e_zK<+Q!c7_^R1Iri@=v$_$aey;t^9MPC(Z z+4wFxVUZ|QV!6rpP23_vm1HCp3FbEcFR@4>x0n*Eb-#A~3p>{`+hjw`f^lxlz5Nuq z4^eNZ2qt98MCBHy_5Ly)6a%Mf4U^$k?KSu+L7~)mN16N~&%lYK! zrAh%-wWimkwN?cLq~$7d$?|AD(XwUD8+uvZl0ttMb5f{_kS41~vAFkj7NUvQ%{hqG zhzs(m``c*D#>qT=GOM*d(wzB;!DvFCv3jquLM(-FN-d^DFcM3U3*;e*6#TInvZ?#~ z56yc>osmXs+`;X)r$01osj!Ko$bbLbSOFJ+pDRQZ(}dZji+C)u5RD2e(^Ss?9%S*= zQYDNa+4)aWw-|>^#1ISpFhnv+s!EKIt{OgY7TNJR{K!aqNhB=rWudPv{8htdNwr7{ zs@Mu77vTb*;pI#o7MG`4Xg`M}qY^8_-8GA$g-@YVwAVo#LPt|)w--m_X;ff38~cAX zl2N;^J&os4S2BRM#o+Y^8-Y7gG6KACj&^2I?6xWcB0hL2QCq?%TRA6l^{Pxkb zlQPp9=JN=qkc;wWRcJj#H{C`!kcC14$winVlVGAIgO}MAL;#m5@)xJ&Vs>d^zl--u zGfutI+K7zWsKc~EG7?OTO(r^54XIhGeOPlS$xPo$FtO>W2*x7+auvl`u$N%8i3!kP zDVCV;vWy9)q@t7Z0t3gg>E*ZB&@<6;|9ZOfsW)H~W22=rVIE@%^UA4(;5GHfOfp0- zbhjJ1M5>D@;5|EkkK#>*l5#2q_*$d`dF1E^yAyW*lFA3tOz$BUBY|Rpl4rzAG}+tC z^iqieR?|o>#M#Z)Cc^@E|1Rc*%tD+{S0#MLUkj56#VG%$ z31*mGR`w=g##l*MZ4}IwGnKa)i?!*N0`KGHn!9slZK9Ka&7k#zz$`f1za#NP)DkWO z6r=^wgqT4ZEOZlg=1rM<<9r7F&}J#*iy3CBOgkBn=p>$BV&lgw5$1-|EWZs;FLv(# zh+tIlL=K!C<2*mYMdY1xdaYr*F-lH5e7*Spa9oWpc#T0Vl;{2zNhStOQ8Vepg}4Jt zdZ!w8qWFpdWZZXrCizdq_r;ObKO}&VJpOGpe*03-|z# zV1i^In?8u5gW+K|X|_?6mnhn?i4jG<+yOC(AQ)~hB$ghCNIx@4Nfnw-%Rw+}*U_2J zWzI*(%LU*AJ=v#@uyY__o8J71hhT<>FTzMU_1gI_YXYBD!Jt1e`(D8`3gn;=-FVAT_)m? zWQ-Q{|I*CTBDu|x;f(C0N4xTICZ53I*rRT_afE2Z#BRxjo)ZUZg|l*28kssVKQGZ_ zM`aiCRpen@H0f2-F|B>X_yEbmG*xBK?_w`j(>B%rk-iG+6uX!$cJc$T@1)d8=4oj1 zM>tc#nG7=&MkN>hz^uDif5{P0A*&oU#bnDeAgzjI^0^70S9=zt7U~t@)rG+%#nBmd zd`2>p%sh{I9R9yO3+yUYk10%q0g3 z{{j9s>Ifij9;B;W^iv0LTAzxp9v49fAO?6<1Y`7Ke~Kw2(M@ecgt26R*HOW`iB>RS za>;Jp22g86!p6+f{XYTOj8U8(=QvJkYywh~u*C?AWIaaNl?w?bA|AZWB$Eu%aHg3+ zNr_1+5==xf5Qg;|3FZa``A$fnlT_Oc3+)h88xfC-y^}24xlaf8t)p!=^XCEE>5WV%6LM|SSU?NRM1Z`BaL=&!%T*MsdFs=M&A(_DL zwE-QMZyjLp7)Aa&j7+{u1Y_gnLpC{&P(wcDyZ4+ycrU0kM%oMsZf0-ci`f+Rr#XTS=mG*AE}`d zQDon=T!gpC=}vB$Xk~>T-U?s*Wty3EIh`k>nCHhJ3emXx%Wx-%38ZxwBB4mPNwmHf z7PNJUwjYFAgGQ4P9qBmCk1Y4MIAv2}kx*C+8QL_#yp2ibpik|kOB%w7|6});2}aqn zq@WVZ@y4XVP=NK4c5(rdT-s1uwX>5w z&=eV;ouUC1X12XIoyKkZbttavR*Zfm ziym_NMmws!av`2b2;xvx)eU)wxLpBV;ys{`x{9-2tfzz>OjT7pWo%C*80#`o{5Ks}H#f$#oQ;@~7K1GMS@8RaHu{NJ`iUAk z`CD?y#r#Y#K{Ak(=-_^xyruw;)rPph=%x)}fVfWmCXSF)8;>WsTt~`$oz!0&?{y)V zY(y&rt^n0STLrdA?h7_{eDqV+3Ol z%&*d9MAn61mLVERXrAxt9ICNtNG1b6GBAtP&Ef^7t5fG6Ui~l>KjrSLcpjhNTIC>b=%poNaNF|5`{K)-&;(p>2uPI|o`Vle0 z4-EJU*pUxDAp;jbk}ms+wAoJ(t@s&lumFm&Uzki;tA{jgPCquU;-{8P>E~7o@Yhgy zfj?b?WCEE$B%B`i~ZzOP0ue{6+N`2Rn*?hgE=Wmoz$y)u8MPp05Mh=~5!L{x-o zte`|o_Rg$Xq5E`!JgPk(F*};5!G%hKuwTT%Th5U;HR7xljRYl=L23j8o7sJDga1hajWZW3`W^G*9M2KIB2cbezKJ1hY5BcCP~v&E8Eh@X7!4HW9@*;gV>_ zAz`MutbdrI>Y*Oe#ql~(g9E1|nNA{+8{DUh*VF~M+JvajL{rfkm3E9uSaGj^rYGS^Q(xi;;%4lq&UA2u3kND9AeQ0n>%qo+na3>z6Fy}SL_t`{RFRDlOD{E%ZWl9i$#TN*MmX(T5Jp8fBVJvt}c?wDb5uE}(fmGUbR~P?HhC6oQdl zny~%1(C=e(#?Z7q;T#Y%WgsCX%My&eYC3nv*oPn(#3T^R0^dOiCQL1>&i%0G=X>H< zUtxcYw*8WeBs7b){50>~)GqwUjI`MhxiNCY@(i1zdD3FbM9sHo47`Iq%su)&?mLqn zYx+l!NzAur&3H@}B!kOb_lVm*!dpxm6`{LwM&-7Q#l5DO#fE>iP)_utS*1pm+UJ)( z7eoOsS-=Yl!ALSeG{}vW9jgv|>v&(hvYbKhpe`Z7e839d^i@e?)f0?FBDuUIDiD&` z%Noi2cY-mR2{H_V$$d7e)81XA{$yH>;zAbDZ(-9Li-~<063-xoY2~v04wRw>(@&(6afAgg-#$C; z5<#$7*W6yIQ7p1}EECCo#In#R$7zrOx|EMA*e*euGiM=Hbo9yO>#r>4xA%JBx12 zg(pqbLZ3t<3*HqLo(2}btK7Dk|G(x$M0zIdoA9wZnStW0_cn;3Lswp{-)-C@dMTrY zyVqWt6*hXpS@PCwY`UE$wKmOdo%=J(cX*NLW`%Uv9aLkI%0pzhk5Nml z0-}L19wN!V$MfHVT<%lX)PL&^o1weh?-u_joRxA5k1jW}x7p0zc32mS$f_VnfJVA9R{BL0wwo=ZJ=MACZeQVO|=&pxV+x-|Mnhm^Gl> zT>1{YC%Q15_3+MsZZNpsX>0#2SI9XJD-Y7*!;;R%U_ABTgQB-dOUsuLn8 z{dIJ3_;h80QI>0JtDbNq4CkAKbk?2?QbxV}Q2QXAJ|d0`4IW9!@Z;4l%tk^NIt#k) zTH9F6+et}T(3N03#$`yRjlU(ACU(@VkV^|4?9PgJl&{AocIZvqM)HwdRG>*Py7G1~ z>9HNV6jLvs6HG)e5R8yulX^m7bug2RD@t;VrTs|>PZ0} zN5s@gYDE_8jbOY@+}2bXpGA#eY|ca?eSIw!{J;psbe9t>jb5S`23#SX)__3Z3Ug;X zUgLh(X!LBNA++I(ZPAR`%4gT>W)BDMX$)9r8CEsNB570aECa7**~mx~bA0b4hb6ve zD}4XzNoE-WS|UPTW|Jr+7ro1-A)_h2w^JC8&QO~%ZRSMF6>2WGd2AyW=bt<#-4!N~ z93`5EL^cj2lT7aNJG#ejN|JF_eGm)L)iRC73)uSCKn7u%hQ!-!@a`ZEkYozM+(RUA z5B1nR8aVIbmf^gW`#Kj>l#c;o;1S}0#}H2jgeO?^pF$4Lh!mb<&GL-Ld`#xT37ju* zD}INEU;u0U_sn3imZF`DV}*sTzm6KNHH_AE&A){3BpJyjMlCx56UlHyOpwdl3n=F3 z!2fUo_W=kdI_Pb74392qEHOH`6z207;U9@=GP&e_mE05w=ra+L%&&#W#z*^7a)cp_I3xp6Qec0+RxXn&Yu*133Fd!7NS~8TAsEE~eluP(x*dqWNb?fvd(vJL(I;D#sNy!u4-u zyOr{)sHjw0b+a1}rB#611n6bAX#K)khlS#jf{{3sqe>N0U$E9D_=6@%Z2D9 znjjk%dC6r2|E!VC>xp#M6Tz&bKKLDCleP2&ZGy0@p85 z%jhPRrOeowFc#`fNBRDi_tY6J^|;2lUFW=lXexp!QA`K{h+u*wn1(4@Y4Q|J-|bC} zI14mM`BE9lt$y8iJrM zFvmhaOA+35myw6*u|?8dLXxQ!`}tg!sLL%OdoNfZf}V$9X82A{^Ipx+U^&ZsXW@Sd z`SQyCEx3YjN%t_heBc1EnximL1w^A={R7ixPQ4_Gxz7gmJ{#4$;3n#_MTo`}-jq%j zq^E@=oV8doqPfdL|A2-50gJb|Pw`ulF?zZ0{~;K7NR7rQMiP-!9--KBqU1yV?*WP~ zAt`zPhor0=-1UUV*GKIxf}2M)KEJ@m=@lu(uyO&8SbjtF7el>(5sHvZOqW^rkw^lP ziWd4HM=x2$X8p(R`y9or50bH7BFRV|^(0dxo2u5bN)nk^a)&&1l8RtH|63xdMP`~|PaIV$!N}3M=)yn=ZT;sA_t&ZYbhvdvRZAXn(Sz|eRSPd zvgCTfKuCijt?P*Yk}imQ+SLkgyX zdh1kLH+YY%typ6bl1`8EW9P%O@U^nQOCHUTgbPV~MJ`=PmL-{XcI*~;JxVxj>}Kuo zu7{Q)I`DR)^y(&6DY^6j>n@T?kPEx$8xW1ks4f=SvXhrsL|^op)D_+#K}Q=KnTc9I zO+_-M$09{mkwcL?7fTlvX>pxuHVge0{VONrnwm^OK}9gioFy51Z%T8fsW}NoH|R_@ zAfDge6`CsPKp)z&mYU0VY;eBe`}i%7u`%Y&1i^4yqb^lsPQNtmXH*nvzAEJxb)!h( zQ9FTTf?RlyTOg!XK1b_e1xAQ%-2a*~VjeT8_Sr1Q!&8SwwD(I`B4qvLV71t5)f z+9c75X|jUiY#jFaRnb0DY1CGJyiCLcv|-7hm@h69!CWC-2I2ffeI>f+t6q~V3C?oh z(sS}_f}x8ZyOuvRQ*-f%dMr>E!RQwz{={&xa``WKkNs!M{`5av52XLRzCVbjo?vpC zY*#7-^FJy67yS7eskK%_1C^Y)rcUGUHGV;7arP8bID$H0YFPPeMJ}UAcSl*gM?&$$ z^+W~M9|j$D3qc4Q`m)_RJ1TO-_Q7=Vqmyuo6R#dt3&?)woeeK}u)xoe#tJeC1z0Zl z=OI0iOhqu6WQb-!8H!f=Xi7as0=|uHzXJ8IK2>zCEq$oHrWe{dKZrJMX8{Bpq2?&_yb^oiPAW_=l`BsZeKegfeQf zX3}lK{uYb(TKqTSY3BIl%U|t`sO9{>OD;^c{MQZX8O_!@?T)-;*?6s<{1Th(_&9JKC1A5h2JRVA;k3%GI_u`-S?bW*TiG$NKeVwh-Z-V z6Cyx~%BV;@=Drf0k8PB67x!q>gOb=&&h^>ZL-|P5^Fl{s&im~}(rpL|0%4y|&kG`h zA0Qc#hk;2vbs*jKk*MTT)u-aozr_zkG#?^p31(-N7TZxH70Km) zr(Preavfz^jbsoI6j?LJHA_d?QNZZ)5RAr*nldV%%_$@2P0)9OeAi=1E9H415)C^| z8~sXcg2-eRHvkF7G>B0`_-IKERgaBb`?U$0RjMmXe^qihCnejl*vwe^U`nH9twEDC z))cV#{wo-%M6`kxic=Wbxw#^`J0rB@G;BfEaA?|JCPS%2_?hD%;?3gZ3)J7iv-iif-gEC!gikD zqJBX=>D;hR!{TQ>rAS(pA9qu4>7l6a{P}`BmmXD85Q`HXvjcIA8P>zg!Ch6k8@z~^CIxeMRaQ>mfEYvg{B76kPMmNBBZYVpVrc*^ z;*s+H6@o9do7xCvZDUZANhkxR!9+D<#`K?r7O76Y!@4n>uI%J~ourd` zknDDG+b+JxqL6wwbu4XrqLzqyau{o(kqT}`y7&x?3UdP{L<5ls4KZtO$z>v@b(W~N zY$YPulFmaW;tT`GB$pHax;C9=DA@(N{I43pY}{WF%w7m-H-rS?ZLkN1IY$im(@A-e zneL0EdrU(Wf+;C7Q(YpWk{ZDf-2}<#xLi3bSCcIlP>}_cCKJU-FpG@czIA9rx>u2l z7WMjnY0+XAy?$I_nL?^ck})cHggWdVa{8OPijx-8Dro|O8NlnTd+T~OZU{2i!0JSP zmwJfv=wINa^%`1kR*xt2u9&X7c^FT&!&{>s^zfAD zdoUk~W}eVNAH>LH$X7LjR1B~utJol#Y`0G{C$*UO^r;l-azr~ynCTaBg5*c!yk7pE z21)S&^_BRZ{*oWA(ohK*h##A2tORAWv4g?#+!pFNHBhI4RDNn9^6?0MX+j79a@xxJ z3k{Y$-X9OeyY{8jXegTzAQ-vHIx6%Y|SH$ym!NB(p|^ha}@pNC~es44WZs zuq-Bv(T!gbOet`eqeK(FRFIHOm0He7M%E`{#*F_5;n-6%X^#muEIxiX@>awoDLB_+ zrs_wrC&gi0xi4k4```P;xz&p9EcDeplJZy{i>fOK#$qvxTg-n zkRq+FNG67T5xvCR6`hDHj1#qJA3w!Tb{fpl2Q*8Q=?p|N4UtSyOc#?CYy{QCIBZfJ z>071LYD5!@Fa*Q@IRJG)ioe0onoBE-wGoWUur>(pI*YC(qf}W)Fok3a!5Fb94yX}} zq(`*aceKc_r+aq@WD8BzvuYn)^wga%w@(3TqRXzEvA9LuTZZsifLL)j3}=xN zTZ3^Py!DhAkL>iyNPSU{p?II0D|20Dk%it)ehEloDK(pUr1YlN?0@;3U`!dkP%do! z0spTUOI#6*MvqQrbau>r2<0xsvJBBIk{Z)8Ng4kr0+(?ul!$QduuwmMT%MlU&*Ncp z&w`#)Oxc_=rZXz62<0^$<8K=Frq_)O`vPxUDCoBy ziQ}uQ5CIOt&v6odg^TbTOdj7h97?Y-e0;dk&$97eK->x_L#jX9mriyv8>W&s&J_HLvXr z&+(3Pde6D70+kzozr*JKJ;d^Xh5vgZ3-JTd#V68OKa$4!f%Mi#=CypHj`AbL`X4E* zi=XJW7eBTT?bLvXfK-)*cWwAZ>E5qd#gvE!;*orc?6?rjYEi$cyJyAu2g(E1K#fafKiCh-UJe{13kLXiF9J-h%#Q9G(Fa*)+XqX z_wNZC7fGEt8elR8oY61_QPd_PR{mgy%(-SS);<8b~V3*0M#L9BWFt0&6iZf?O)h5Vg#+ zyPf0yvn=LfhFVAMvZMncX?qfjw7Y&g%cq+@oD2z2*y68OfoFmKyopCCqZOnwN}m3D+tExAYmf1 zk`nxtgji*l5uM~&7s15L7B&?^S$lDa_VupHkaLRB#anU-2WXDEMh_4X_S4KObQdV- z<+)<`8szU$3A9n5X~$CY@x4`aVMMLM&~emDe1~<{USd4N3Uln28BjNKnPFWQ&ZgPc zD`}z;Z@mV_M>Js8diHqg#n-Ew5e{q+edBzG{ z{AMqnWz=HU@?Bsa%@rQ+;_n%51`)ZjaMsZhqrI0LtoCNoIliOArhW%BIL3QFwpOLTevN z)E%k;S~1GlW=Y5W+F(g)%qGnH5X?=8X4z=PW@n22_MSP)!lv$r$cG;zR4|%|9Y4GL zGV<3tMfitluL6lUM9VqzTBc;Lt`gx8@x+1+v0R2!8V;nlO$XAu=7Z@q5?k?x1^G1# z@tdnilli|@KrpxnzrvROHLk&LnvMisG&1TKvU*B7N<1M#c+B6Ac>KqV8h+MzEWK<# znVwyNoOr$$4Go1sxB3?2FMWU0$USB*AkO6eJp>#4(5;7Ft_Abh^E-acr2;2A_PzoCQ;NA%wKqpzqD@s6|BFA zOfvcQ)@*`coVvJt#OaGnWWGWZi06-E*MjO}nj)RoTT8J(U*^txjQQ~P zqEz!p92=WQ$7bc2yV#gl&*J7pMdz8g=vyp~u5JpoE^?BIyH$7EE{I_w8D^4td*vLy z^`#go?5JX$g^6IMh!iGBMR|NuT!f8TV5xwy&t4X24#Q zQr+yrd)d7Yk`^81J2ZnM_`(Uug?^_6#!sxAJ(+G^Vw&ki2G+6jA7j{EKNCm0*!Xnt z8buFLZyyr%9#Ul8kq(4>ivzUQG6*GxH}Rg3YIJ~^a%PP!JLp|ebrxOxD95yWX@V@S zLN?71hhvhPh*B<|N(w$4HkQXMouW6lG_=+zG+#rptdn z@?=w=N75C<0GGeolP;q`yWm_JESqjMwZ=&BMM%*I#^HB15bJw4yBoPOVvHH0xmlu8 z#~(Wq*$5`1L@t?JaQF2TUC6@fN}!~DYy_k5MjN9 z)L!9$EHN6Ty)t6s{N7WP|A^x2dx+)(g!4T_@goboL=$8KA^gn3{|j}JpXhTbP%62iML=VG|jlM@hQZYg?BAMjJ=}~CaK1K(8f%l8cNCWLL(I3mcnrND2Hz`b$ znKBc#NQB!&9}2`&1NXOyu@H;h|5Ge{%9D$0u#Jv+l46E7Eau*|*N-v4ELtL>7iH5n zg+_B9(FMC_iPN0CJ75=8$;FzI&#SLjdE6KStOG%1Q!~xu*^e;+a~`GcHjJo45)VS;F^t%pjpFO;Mc^^Wre%QdjOge4)5mwEhs{Vgk#0Ae zj~;rI25}4?Vuw7;A~r}$s2^EwAKqBK`zX|7#nZ>s#UUm3)Fft4!6kngl))yw8d;<};t8z_@Rl~+gV4U#wVl<ayyCvk zS*Ty~I7UM6t{+Sv+G*5mhcwzCCg9}{9S8Gukj+~bSMeSK5}&RgX5l}?xp00ELLr=p za3G#S5-*8VOyQL@UZm_yy+JHbd5upX(x?0#;I_}Wzwolrlf?KIvNT$I!@2u>l8m*R z?;(hf5JV6M@?sHW0@;WkA&pPhsqt|BA31mNBam!9K@i2qO#d=F`(v0GP67Xc4NU+7 z`44J4s>gCVt&%!N^kS`t2u8baNv2G1wEi*9b&fNhVjQcOWafm>WN+p;T72MT$wuOl zfQ)VmA@xHTdSvxi{#X`Q!(o}87=6vO+}91+{uogrBBjvQc7m8B53OZPbH$8z=f{(d z(%HBw@)x415kMUY8F5721xPN!x=5Kz;=)-xz}&4%FwsP*>P(>n6F!4vA~JF|ebvoR zq@x6R?|&WO>@N0J$!;9rQP9EXUuh9Sft7gcYS%(}b}!@S>R>ZH4Qi}E76 z-?^=`Y3y;5JR%B&tovE~2B}jF^BE86MJI>~^hk5#p;Pk&X`LZbCd2Gv$IsCh)p9AV zv^A&s>y2stT2q<<<5w=GnMTHHvr8YLkUhva>S3DYhJsv(KJmrsqc=nJ;*-@wuSO3t z-CkT0`q{}35%sEcbfXX>1uAu0M31D`gkuqe&7hHTt7>9Jm{15tl5t|DK4vkBnTD5jM#puPEFA_`(ms@C-ECh2ELWtDX7ZmR4VY%@8bxCru{-Rp!B(<1KFk2v(t?3js zn{yD&Wg{S@&GtFjAlpE6Wb@@ku0PF`%yv?bE6vSm`YdLbr>RjwFtgN9oj;_}>I@q! zr zf2F`dFxtgH;*ZIMJc8V{ka@~y_!8oOdF}}H2hvRJ&V|MODDb1c68eYf8Kyy{6B<=x zeWYel6j>jrx%{sPCelajx?NlgexTm)k;T5CkWBqi@-YG^BqTY#VWBK|hg|pj_Jiq% zjzfWR`D5qd^r-_9X+M-c5aASJDTMYTr1S~YB8xhL`@RKoBD#{$Bn2Z8VdP_E5~;V# z`_ofWbK(&MRPgu;={k`AM%Vy(y@0U9%f=kxNN8`b@V-{WYf9}0pP$G?{J?7xACV(_ z^g7A8-~)9W@dE@RJ~eBaiHy35ex0ki$3~)2oo3%l@h8(h=0ADQb!E2BV;T;Ep*fP& zf`}RNkjpe_su^}0v!}2H2b$|yADN+xSex)U2*zU}7|F$kOw(z7EX19Vgm9N=s>GeG z1ya4truTqdkPL8um9V}e0Tl;ktzn{(vLcij7K02Ha^L_g7xf8t*v08s(g{0#n>(v? zR+;Ty2*!GfbrGemF|L>0`ard7S0QID$B1Z@-QXxqS`tj4ij>UpXKA)aNhf#xm%&~h zojorB6-l%NBM}u86`K|;kUkoPZAXODf<0s>wR=nJOnv2*Js7tYJt zMvY+bgrg2KxRHe(3{Zy=K93$_r3RvEF53asHIMRI{5vnu&WrK=$}SIXBV>p;Qk|lYB5^+jVIJ68GQ6xkjbj6{O-*>Z z8HJGcEWJzCadPx$-3n{qRVx{%SGGDx z4B2xtmz5-kw^&6K7a$J%SI+($#3IQ+Hj;~wTmoNg$@Lcm0T&epNK~3#qR_MF$=NYF zG+g3%=IgbogYV~3Q)8Mv&!9dCdXZF3^K789&%sm74J}ey@z;; zf7nNM?IM&_sIGDZ11yf4Caa3%ABbMQuLwqx`9KG`_@3SS52UOl8c|O?za}9DcS$m) znOKb9ve*{9cTpxaCXxKu_TM3i6ms(ZAB~uJPNM?h<%lTi&wS2C1`nOYck^Y1VwtV6hL(gZapH*{NA&+U{)qU#Zdl$T>T(>_?vC6QTr#2y1i` zcILdW2D8AIVjic~c|zKSlbGsp*}{9wP;ufTsfHP($WDVaO=k3Bgfb|(upntUf1Mw> z1?o-~o!;2#a=R#~XJQdEm|{+nUI}+*QY;hX>lFi-LX#})dx?mJg>#lXzs2=}sDl6_ zg$dJE6o7+Z*fmQqrl{(bUp_{e4W9{y6o|QY$mRbZ!ALY=fnW9i6nS=}ks{J!QCH%M zk>L#-bHhW6*RDVyBP-E7mwY~)D;TFXGUfw3pC*fXjKrnK81G#yvZe^BiS@DTA0UboMjiu3AP~tY zi^L@3dB>TcIKt%-HXLFU<&~-|r=3n;xR92vUQPF|U58L0k`@SqX{dKv8q&?CvuWk( zsr0b(d|GK@_f0W#gtW^T-c;l4Zmq8j6A2srD7`jn3-2;E0+K`-aHeZ>Hx9{;DfU?F zr700ul_oU$GvbT)(AUT7bv%K}uZ&gOn(W7xM;h3><@jTpPVEa4l1nkm^nNy|wm~dH z8-9n0HGa1aa@j~aYkd^+&rx4Fg8<;nzoQfb=cvP6@H*05r%{?oEXQfC%micfLZc-r zGv~zU2+)q%sA$Fyt(kMX#GtY>-+Y_e?Qub*FmsL(;gHOd9sMlosvj*>`tEl_gGL0 z;{(_KfMDT!h{o&QT|vBn*dVLscyGB) zK_Qw#Fh)@kJr$C{4f-{WoUb^(pegh@!VB@5zu)m5m-qVzYC_^8&mn$f^YHO9pC2Um zj^{KTxF+0$D|>v$1gpG}WCH9&Ec)vOW>aH$bZKE<>M7*OB?ScmMlaovimtxl0<7W* zl8CfPMKDT&l?G24xkxS*5l9qv`X(ESllvLBFPo|0EOiVm=8iF9w zxOg!wH(Y=;E~WX)XVbVfj&uC~dB*mhKNAby?1l4;+J;~*Ur8$s?6A-A_xTIdMfl#F zJpn=SnUKzzVlf&e#Wg|CgbjET*4Y#j=xj`lV+=#bL23|VICD=hUG!g0{1^Nb+$ z61zcTqme}E=PC1Q%FG(mheZS-Q59nFJ~o+p6vfe?%&&3Aizb(y3^W)44A#7eZ<`U6QqXWhqo9uaj)^$WioX^E?AgZsvW8+3-4XNA7zi{SQS~7y6fIfi_ndFic zlY&SF!YLkOVFMGXvMfu^ryvC6zbdk* zUwk5hC?r(K=Vzi4@e5IosK5LNBA7oyHh+L*#4nJ{A0U=LQv5IQ?_VGqrNSW>t}aVN z%8Zp8*CU%nDnHJBFP>M43O+R*;JZaheeO9^QV%wnEk-jlGlm_I!5N&v%#0byS(R0lRi_Trx%a-?=KH>}_LP-T=f2n6MqArk zTU#5}nthHj`sjTkz?i}0h!PpuODx(xHlhSF6Q0lKkVO_uGQeekU9K0QvoYcLNC*~! zhIHvXuM@L2&gF1%Wev0z#3*wJ98F{kW-S_g8BvIWyLg(MER6!m|wXHrq`7LGJ=6@F?%jWTpMyQ0WeJQ z2f%O?WbDB#bN~~8sVuoyHVJHGVM@Acwmemp%WleYVzj{X6^0tV+g1Cy>C5Wv>Dl%D3LLI?WF#GL?v~f z)UwziOB??C8BmlBwvT?$KKf+>%04XD_sm~FEQ;8-a0$ELB`i=&S#Y>*P&PFVESXRC zQpDlK^8uK-l*#4<$Q)ZdBT8n+%x>t%2r31*6cR0kOiKYY$7Gj<{|aP)GD>OezE21= zrHtmZSxYHSc^`v~0?B#$AjVm4JMd_D`?R+?o?~G*^5f2vRR|#YXs_XZvYQ9UZan(` zg6^BeBnyqNEM-6LnL@^*5Tqq0L)GDlk>^q)!s{Z zo7Y$Z!E?U15@`B<1S!GjETD1@aJig?@jU*H019AwJO}8QjS0-Tgcl4vo8CB8dsRVFt>E%W;Jg-{Z3)EY@SNf!0yZT90hXS{m_VWE-QDutwNL%8+tF5FiRM z$YOqE+*4jg4vTpVs_|U@OmNA@V?hCSF)uaBgZ|5cm;r8>1$l@CS+32GzsTSj4L zjqtZ+X&Lrk?8AfwK*r=r82=^+u62V56MRL$Hxp5OXI`UhTbP7MG29OI=RiJ20uVzA+9Q zWIQ2V<7^AjNm}wU*|3H;Yyu zrLaME$!nRn7-2ARfRe|63e-@42U*zqWN1Mn?*%LrM$Og*k|07co6pgHn&0^VKoi2C zW{QAtIF8*}n4XowtfYx@Q?@zIzpol{C?W$$f{Zr<)%>19;bQxd(85v~b00U6k zd+~J%rh=Ni9mxU}WNjU=^130`4DfxeL$ZIve3)dgv@*cBk+Kv#!uM}X1eifor-zxQ zmqlj(rD*h*;?_w_@D~wfG8+9G>1}O=3ceFHWsSmuK~@ra+&7m=ex+jQ#q3A>YaC$A zRsfgX^Oq3Im~~l>%zg!n&uY072e+oS*20n+1TU9rLi zQb$PRK0r|5IS*^=9CIaxb1Ve|jMpN|%Z$rx3Lv-uo6Y+z#a)CleX*XB9FHH*m;@&? zAqWIU2Fr2K9M8%GCBTuUe}pqLL}s293^UnrP_uc@$LU4MuG`ONxR=i}Guw7U$=<T6BF~yeVOKHf(b(lGjQFiyr=^Oq(fXLaBoHbyZ98xP9jZyBBy%fwW zfFZQJcw7wKkzMpm$TZA0RJS#3h!@mjW>t88W0apOZfXCeV2%Ma{QZ#NrzTu5WuRno zTOmsol{4ckhCrS2FE#mdX==O_R~nog*Cx|MOz}(Amzm*FO~C&Lxu67Of?2oI{W0BL z*b`(C%pXdeM880Z87^)$uml#H{0{1=)a!7byYX&%P#Uv2R47P{i(0~3s(0>%_uR_+ zkRV}%!hk_`wTcCNoMu~+H)-MXlk#g1tQbV(_sM(&Co`b&QW_bJr8B3~-5i9_r{-i1 zNCN&g?K_zd@o$-x+FLVAjaemqd9*$tQ&G-GTLc@+{Y=lt0_PMxJu6F#xty4LCqZ>4 zbVcpuJdurMX|N9<5nTGOgNaD?(me?}@?=VZ)1WG2WY^5=Z-9)T%0U&GMKu6n2}y7f z0PKxu9_Cz%(MASS1m!Ju{)V^x>~omqw4mQ+WL4?x^jS#1kin3>)L{&kGZsr#MkS>) zqkPh2Y!ar#?G^OiG!k1e84xJ-Vw~caMOFq&Of}?a@KY+AM?YpZ{g_$A3@FS-Fv)1} zFX7xM2V80)ALJogt&)}Zx39Atpz&v#(KY+MQDx{>Jws}}s@L?3w3C*iJV=>qgg#3S zfo14=K;^okf$wc&@P;D#u{ekTVES*-Hd!+=hAtsgY=s7`5M<20FuiZ=!46pgNGI{P zvgz1PDRt{&n1HjE(z}HXIBP{3p1m^dZ|EZn?nqlI+9TF3Zb)Mb>!4WIp+wM-HqNh0 zTjtd=cv*uCOC@sr<FM`6t!rQc)^NaL_Wc(EKtm+bK3DIp_s z41vhwh(?}J$BRrRNCBmujit5Y3_%)4SOKw|_%v z|B&}D19a#kou^rTffAIzA5ty=gc(c#i{am;Ut$L36#hkKb|yy7h!mSt$+*ap04z#| znt$1tH_pQRI_KnnX+Sg2!(6}SwKU}a}tZe$b zi*<1}q8VT6k&KtLq#u`j?n5z|zoiIf$ni&$zi_S;T#69v94Z6&^nVHW%VI{wsr|e& zj^0N}FRVBgP4>*>%6~s*TS{{^`oIi9SjdEdJS?fIZ!rTR!-|VpJL1y&6F@CVT`o}- z)9n7-85>JcQhDt`W%Dg(Mx^zs+$;g2mB%yy4t2cuI)I{{_tVPjSOtk<%`Bu%X3b;Q zimNEBoKC>S@aGN+%G7IMBhbw62{LMF6;xa@EOoS)b%`l|2O^0s2nG@WE(47IKK#u0 z6O6xts3G9^9xNSZDW34);qUo*XV+0J5o|8^FfE=VL?!`jvz9`=;Ih|?b2LU93%Ns| zYhbu_GkDo^E$0!SvWD4@)s)7}=u{|B7cBeWRFO&8^wx8wiE>u-V7T4R{Q)8qK&72# zxiJxBe4OBt%V^QdDcKfizGi3^rWu9#_bFwf{C|{>ZzCS|NjRt z_GJW^nH;Ah4`T>0^I(q^0E4OnAkx5wM37O{xsoi#GMh3pmCRl(=Y6Z}tN^Da>Bvac z+q1_=mKdgCS|{T_G=hkw&3&_%f$OHFL1Kv8L)TA@7`$OBnIl#QH(njl6M?S|JsYj5 z^@rJ@MKZ&b0!oy`n0?uYFytQS$qGttnK>hETL2qyVFiFuop#rBrCrT^ums!Ej@I6^ zwP{V-*19I`XzxiI>O0fshOYS8y2@6FA1!I?ik7sax+U$YZb~~VYtxRhinMF_lC%Q} zpMA>;kU0or?kJ%zi>6=`0Y;6o!m1dS6WNOZbDBk4it}aGS<#~rWLyk0;F!&rwVWnn zIm?1Czy!!Z91sA`2?WI1@R_H~1}GUtHUJP<4r8%((TykpOyNyW-vzL^K=b=NjIIEd zI1>Eq9Q_P|WgJ|1e(yU=7NE+pkpZKSgDEu0{M!Od29_*Xc@eNQ3o0@q)t9jX2<2t; z$cRvFMpV-XflL5G@NtmRo{(`L1C>P-JtQ-;i4lX8gtp4QUqQytqtHeJtjz@ZJS71L zID-2X?%bmkBw%Q+r8EqZBR1iSxf21#tU)Ryz7f!O!+)Md-Z>S)qj0;l=TeA9#zL%~ zSM)|~ypxScG0t-=8Ei@me8}(TJ`leXHpwA`SuALRNsh~41K{ww1t7Da0=$ZultD^+ z1&M%?4&iNMyy?#0_qNP41vG ztl@SSkI&E9%43@;ZA}CiK_&znS#&Ii<^D??gK1XGz2sp@2PO;FSpg=Q1(~;|kIegTH!;KRl5TwjXitGhOnSL&SK)ddhfJ@jQ6LFi;nxW^5-Y?@N zGRjV2LPjafu(xB>lle3NSY|So!Pcrz~bDCGWa`T6mFd{7Zs32kPRq_Rjx|E+D>5G@r z<7dxCJaqC{y8qbGbaeZ+bYj=8bad;Ew0C4(+Sxapc6Ils-Q9iZ$iP54)Yp@CwKSx| z9Sv#kN=j!dmqEv+m&0JDGc<>g_Lo?280+D~6Z}|olvD{oNqnVcVs7RK0OL-3JSd-8 zLNn7j!$N4dxL=@gZA2CW&_os^$gp?|FnY{Kus|1!bde<}g&$E;Eew>_i&@m7WE#Q>CyUc7>Ts^hMZF zN6>rey%nYkY_DRGr#!|W))3MWLwAr`-*FAR`zZt`CXRP&&@bu&fI3-Vqtp_;mkF7R z>?sy$-mX+xf;4Ff3wrU@E&BaEvCW{?CJvy*mSO9bCZ*5MilHa-(y zLlcX5M{c=E{VmE>EQ*C&B-u+gOJm^CY{Zh7;1cFx*Wt)Xv{BA#rB^ZzE;RGoh*p5W z&>lL%Mn8bl$bCjwB@<5Q$CN(cWZy@iF$%wz0!)4w1-MKJy7E$bEzZGM8q46a;K!2? zwVaaXFdHMl%tTu(N@ReM0JDG|&thJqVyEiPsj#hle;EL{fY;*B%lPb;0xB!W%B#sn ztCiH@^V7aT!PCgV$kak58@jd8Nvx))vxd@QH}vaX0DA!NF#2JO8GSjlo+fiqAXcEV z^rq~ReV+9UuhFFx^$^vr`7(lhs+O;4RWo?g0i zHa&O#NV>FRZF+d;x^%L?EgkEqPy4FN($j%!3PIvgs-b$Q(gg`4~sF z%*GV}02hZfbA*yHC9|w%Y_G-;h|G4*u+uiQIzEp!*cq5Gf;f?>$G4Hy1jEW>+aCRYabL;x5|D@)m=e=X4;nMEg1M$rKPjmqgZM=qwVWuLusKjfw(TBj|@PZ{!eHW#k znMIk)=mJza1s8R%cn-6WBFspNFx#VW?EEd&*$c{onOXinH}SI;S(dra zgP7w3nWY8Z*^lBrDZFF_rG~jc6C#zCwVaKSpg zrz$B)hb3}Jg*nUZkF&sd9jX!ddcvg5;Za^g3%lsn8=(r*kZ!(_#UIeH@$Kt0;}DG6 z(Ed^ntex^w0E~;N0K)=mCL^HaXlHRXq#b8_=xF#;`Z5}Md_({Z8H+s_p4-NL4eYMm zU`+2*G9kkFEh+kme_5(2I!xV3dln zL}muF3;?a*^Kyo4C7-STU&?ElM{ofoWI+ch1-759JIxjV`p4N=D&_zx?sz^p`(;n*NFS-IwpC-+uZ|`s1hXrr&?`TKdz6ucfbEc_O`h z-;wmpiM{FEhJkdfyDjZpSx&!Z1|_rEu+gABhe&1y8CY#L`_VFU(L4bW-~{T$_GwNc zMN{~*6do<108kp#%s}%)fHC_y4LJEcf>Tx!$N-dg{%6U4iolK1@)JXd=NLjfU#T>H zscBEahL81t}T6ChEki`fxmjR~q8~{Lo8vv6nmM_q6x~~K>_W>YA&S1Q-}AIP1~~YruV7te3FvgDav{Fmn?Hhda&eWPsqW^OT_&QPHIXP#$*x~ z0GRvf>j*Lz0onTil>3%Xi?~2ftcdH<711CMiTjdmFgs>TTQOHc(>Ah~+pngs`%@bJ ze~(ttk5F#?5sUlJ*!^ShgfLzgeEN3ky=^pml>~86FKc`GJT}b*n8;#ErLvGz$p8~g z`BHOTxfNMtmdykZ8qGOWS2paG#8FG-Qe^Wn%U#jzFTEd|)ZOg1j2Pxq^_dGqO{z{O z(pmJ^I55g^*dQ6lAbk%9NF62}nvLcYw98>;LYx!n<31_4f{YqkHrzXTejDPUy@du> z?>&WTwDtr808aSo@VAXFUaMg#EhgXr)TpDgsN2l9FB7hsEFOwRs`C{?la{tve6ypY zi@G5l*T`a*Ht>u27pMD+?Bs_b7&y7^?|F3Lw%=gi!I_xoA@Q1GwgzA+GMR!AmmMv$ z6J&r(i3%LgDKPQ4_?r$&PLP-xw@K!{V0^LoWqF*5$DkNb17HLhGMQEuJ%=hCfRt8j ziOb$g^j%owBe*ZhWPpX>G7(6!9dz8s;u_Dx<2>eQ6l4S&@6(TmMY+yi2PHIRU<4T> zBw>gQFd0~umc%R<{p4y&VUy^yOiD8WmRSf~&WX4>&HeG!#ccrwu$h4mjG2t0mu4tS z0XDsWssY$0&Q1Gq%K?F9yyp32Obf`YR&bqEvx%x<)6{%7_5$}}J8;iD^xxbVT74*q ztiqVg7S~!{OJVM32-tF2FWKM_pkfFv1;D5-ZaJ+0BG0q1WZ<>9QB+S*!P@o6M{VVr z*fnbb?6QSvHx2zAbE+{Jtir;%DLuILRQm5<|2h5ZZ@x)?A!GT&H*ZIL_xUU7`!8SP z_-gw4lULGLAHI}6dE?pi@$1i|&tH2sefG*P)8{Wfk=}ajT>9mSJ?V*KyV9BUgXzHP z_O!XO9PgVsNaxRo0y`J6%;`Zc*teiC26M608zvkk>CdRne1t6LC`!#o(K<8i+Zabt zGcLfU$Y`CHm(+_1l4Rv;+k{!NtF zO3nOSin@WHCjiGcj`tLI8j!uoU2OInI-n7`X&ymSTjZfxbBy#3@+1 zeKz*j`1@!@9l?FOWCHTJsOoH!UUh^MWL}aV>`O^tbwbI2oG65HF*jqFUNAG|m516dI?Mf)j9PhY_ z`ze)SPSgXpeih9?J?1rXYNB+~LMcTWubGUCeV)wEwByJ$N}%$?S(xlvX+|;vZP*Cv zu#*2Q?uKdtgY2YK7Vuc8H3LK*RThw0rWXy5>lHwt+8V1EBwP&*H*~I`R2toQoUh>o z?&fwcCvpFR`TP#gi5$+_1&h+gCFo@>h8;5xX?Mz90)*@;BWrPGN_MCfs7T>G7HdPH(5}f^>D#|r35hU_A|f) z$duHLGr(jYnkavj9_wt#xZxS4kR}$fMs~O!1(+Z#uqjZdtLVpQD_yX_BD2wcfWNO% z*|{NMY{N;&|T4nU=Y zh1n2Xye|Wb045ksq%!9W$oq2S`|<##!;Pu{XiqJJOY7rmSX@RGEG}aO3^A$0mErfo z^u7&vb;bacMP@79p8nITY2Z(aqaZVj<6M-K=K?&I$!5VQn^|I%Imy46o=-WYKBx9; z*%&DD*+5CSf*#azvWx|g3XCc?CH0(l4Q@u*z?dBm%wSW*HDUiygFbD^Lm-xG&^}Ba zxRhNsVB?-FPo-sJkmom~@CV3ne)V#G6#!G1&Bf-E-rx}ZmbK^-Zk{ur#c2UH$%`@a zT9G!-tb{dIoz^YyOb_lnoBrw3Kcs*C{qNJCfBjYZ{kI>d-+ujJ`u^MZ(l=kem45y8 z`{}FC-b!D7^hWyR?U&N~uf32yc=@^X{;!@&?>+N)dhM}`l*&%0$B!LI=QgcN2f8{L z+y!8`4!0~^j0xCWGNxH!`n8(@&pr6GXc(r|a*n<9XrxXboJYTg#}tF01v$Y1Q3pk} z8z`cnIp^^IhIHscF#td!qP$iDq#zKK+$zTzYYurzf6jxRG}liWWGRM30wc;#0FmZj zW;?kNAAOI=cr1xQDqxYfM0bW`1kZ1o%aYSsdQD~q_hH0#f$4hVEE&p~#gH8I(c!fp z$Ft`o@AW7a3rhL~DFf%??KAM|xtD+$xCL{#%?v$nnGO{l_f7%(0GZ!mGB>lmB72kk zQ1qfM05lh2+Zp$h?G#}-kM{$(6v68%fy@28#!CPq84TqPbe`O$^x$dl!tCNW3g^DC zFvg4wWz}`J!H>UvQrd9aBqo0gCDuWJ#YUhKDdBIzf)!HpoY;*FGzv17nVeNo!bQ8} zv63jHWwVLklCv4J9fvu!Sl0b=l#F1Q7~-~b6-v~ogH{BO0W{p@7xIaZXJT-=Rtha@gLWjfqS|AN;bTWunsxR_`4W{pS=*njD=><2g~?J^D+WMz3~Mox=;ek0ApD!f=0YxaraNIN_YQkQo09V znF+AWck4(q<;E?i)QkuLspO#@Ng_S}>xTIKLazar|IHkBsZoNq*Ip9k>iBf7O=R z492Vs-`yYtjXXD|mr)N9{Wrj_kKUkKgu`sS){(_;o{sF#Y?}J8#x~8WB=cXHw$}8e zCyzax{{1(9P5<>D{)L{)uhVY^8e9m){v7}ngfaA{;uJCG*Y zjx5cNxp$=<0Lf06Wjg?k2zKMTSMEk1Z6CJG`{ywXhbO|0ye`8a}6MC(z9?u>O_puMteJb6IomBT(q44nKJWPF*vIbC=4l4K=ze= zkiUr%V@^_ltgB+@SW>j*cJ}D-zFu{rXq+mXDd4!U7Xy$5HCH(p4Z}L1?zT>Wemq%= z<3f_(1zyEpv&2Rk?ahS$kIVrO3L9ja;8{Xtyt%K&8MI&-TJ1E_v#PS9m*E$qPmYrR z%FO_LZA!?nxP&$tAZdg$F@H}F`*v#ihFV?fy2Z?ojeX~T%z%)HH#%+t2v+sGyknTRSs*RiIVrP9eVNG4-3awT6YhhB7$sx- zkPa)yB!3|nV+7D3**}OMjMMzXH!F7OP$iNv+@}!cNYI=0P$HVOjcxz{|MW>jK~#Hz z0H7WAd-e@cGTMPF=gzq|MX6{P=4nRp z|C`8?(BY!Ibby%~snG}LPfLg9T#MM}^~8;rm8Hp=4v_&!J}?fzW;;j;>xjWl{^+tP z&~~TN-@xkzBETsYVtXXc?Gzaf<+h;u7U4`!G1nvQT4ztK3^;1WCZGUb`sSQiG&TOO zAzM5KWrO4V{S)-1%wmo+7<-&d<{0ngh{kX;`5f-OKJCGVVeh@%CZkae`!JcHCB#ow~uluLRSEbRfF_Ib=$E|H1dPbT&tnb!kkYWGv>vm|zD>C|*Tuj_tFa}QC9 zd{CNln0D!>0-#vZ3B56f=>&l+0Y1!BuQ75Pf_XIbhiLrw(Q|P?bG3@MESh1M#X?uj zLRF65QxywZgWe%`VoOVztDh{yR6hO&i&&mrk)0IE#-;jww<*3QF&2BvQl`iK^goP& zg_Hwu^BW=a7+Quu`LYFRQ%yzMRJ%M4E~7_+mQkNlCX~4Ve?Wl02AC-BW5;8E#r{jk zmpD(t^RA(aC=i>SISV7mSROO7?7cGf zZIo=67N zMMGbJu>@8D;HVE)!Q<2fGo&e30WgA0HJOM};UHv4^B3A78%6nW0MSCt;)%K_IFG{9I3%IOlROVlaed^6;&gi76LDY1@hYkc`12Cd4o`D&w5A z|7qVw2I&|jIAfSz;yOxkTjngLyuxBX9Vwyd6#z~RhG(^DWMOkU+`B8iaNqOkH=q74 z{o^115CHRQvX|d{|23sCZWG^q@kRRVgAdY|AAFoXe(T-z;cIWDkKcGFz4!9#>7^&1 zNzXj=aC-KEU!*hp_N4=3>(bWF)oGw?1yzVj=4_Uwjg;m#!^YeMpl%_n+6KsMpK~{H zN7@E;dh6_4A_N;}cg$w?@c%u6$_y6O637THyXZws1Qo#NsbCjb&K>|| z@4P8wLQ}|qIL@A$4l-zZkmo2Yqv>$~Y!S=}MNoD#4v|?L0ssyH1ThrK%+7I|-_GqE zNp(c>G;~DLi=qDaj5p>M~urAR*Y)zh%6+Z~x^%GOq`i zxw&KyCIF_$T<+(6J-~B3V2NxsS&IHE;VvngO!<{;^yPFmG04g39LzA%5e{(;T2f}$nzK3TGu{=yLjvV+7>%h zXnlEb{$jMRmc%@Wbl=r80SIEGtUUEm0<%=m4uF__2olz%%|KS&GdFeJP58I%XAs_A z4fDn5AWLhbX6;Ohf}GB(bdkLozP@heXdEClq;2Pr`rJcLo?Hqu9iP{1%wzVY@wEt)<7~82St}co2{2|G%Gu}W zv_#7Lk*e;|$N;m7opC3N*Q&^5uH|n{;dMa@DFIFf7@sR=F;RLWJ26WM)oUg5OMlnC zOm5WYroX+G=(m(;#>(iMjT8ZaflxuA2p(r-))?7=js5y*1r543sK`ZQKbrYGN0iG1 z78dwC2eSgzvViB&(=$t(lr;eQLYe ze;MQaTg!K__O`+TImamfSBFf1DP;OF9|K@Q%HJ6`hi1vB-Czd$Q?P;!xfbh%;hFQ( z=u9?q3(9G>SF;YV@dIGS=B(s8TaGzgdD`4MnqGhG_4E(l{zLkQ-~T54@ps=4-=#nN z_S^Kk@4imI|MfTNx8Hn|zWU@7n*5)nkKUw2_WC;<-%Ibj_AYlW6+Fi^^FvN)DNC&BV+pY77xs-R9 zLAh-{b2%Ju1z2u}CVU6ahaZhuRXYv&HnNk#EUVB>Gt5+C7KnaIA96T`GeI6Rz!YUN zey1dX65t|xs`0j{oP#u=gbfRpl;SK`@81>tr9~H1 z=YoZnY0Cm)#5j-u0Nn0i6JoSe_cxqjX%|$;V2UiJ02zU06(uhtK!&oHVHRXIl*?}d zjC5lO4dE(TA{AtS5fq9jw8(NqX^c!ks(%g&3m1IPDn6d)EFv=;j8D&WJFS{BLxr$5$q02e+S}cW4|NARBUY!;I zdJa*_6k9<5W-bgeGZ;%`0*o1qB{E$x>+l7tqfEMjO~wK;nmLsCX0T!NSnhlb*M&58 znT!%x%wD`6V<4F__gb<@wZsIFwUn_9!NsZm3^2;|`xq+{g3Aa(q?W@ZqV!LfEeYWT zKp9!2z-bkw9zFcb1$YB9(^)BdEtTd z=&6h8(*6_a;PAGzsc}sjSWJer7!tw46(L2lVa}2?MmDvcji!q48YOO-H`{DQz(&4zs9JgC*a`NN_KJ8)T8V8e-kv_ zW=ck_Xr8s-Or~<=YS{weVibLfstK05q!r7Ges7Z>B^S$40}g~ zfMt=fbXe+BQJU8j;1`3EG~-JkW0|Zdl@&dij%%kzxWBR@{%aVI7 znNDmOEdxwup9wO#)a4X@^jw&gF`96R6kziFO{OUaz!3HH9P0SHO2U}M7S!68$hq07C&Js#)ivXL2l+H8|lO1MLUnk1N{H`-C%K*J4*edG}vzY8bb3%zV6pW^*mfpszLyXG>>b>ev7|d~4a)Cck79HT3M6 zj&km;rH2v#LxeOxz%s^$#u(+iiy*TcBfGZ0>HzZynZVfmg_OD$W3R9*jZ{KCUQwGi zG_<7c?Okcxs_vM$-#ajt_781f0)I5^8d#t9j%`cZhBv3Ry<=(n#@*@7*FH>t{@p*O zKYsI7`s0@$r{911Y5L>WpQqn{MS1KKz~zJY0ici5M}W(_FTR@Id*PMz!Hch@4_B)2Vrw5LlNvF3TPWuM8r?L9gX*D`!-SaA_WK<)W#9Y}7EF&NpI5Hp!N4BTJ zpBtetJ1?^y8uJ+CvJG>QvBA#3%*L!{2ac#aX42%I1u=l~*^b$_lKr3>4Uh;fo9>+g zt7=l(boXR{W*V6cz(Yo}1F*47X6&XkwsYn*fQ8$D%T8EWJMJOdp`Wp1dI2}T?Ux_ zc=PDba{&8rWB+V!;|N;>AVeI}(}&35b{r~mgh0d5I1R1)EZI~s5DF22=KaMA00mde zY?piqlEOtwWQB47V1&#~%;eB(y02m~pfp*4Dcl#s=GO(ZBq5UB06hvOGK4H)8BJs% z4eW43(t=nCXsC}QkT_jj#SXYK(tP~I1r@WI5|FHUsGBLLEM!vgB~fD53~aV=#uj%`!PPHtQf(RsuC z0)(!kzj8wXFzq*yxd0x9;AjRTQ>xHWD*(pOv)<2RVuWy|!;Vl%)qcv8?t-rozA_%Q z2L>d}`~qMmcypM+sP(jloqZSN2tlTca+fkIg-IEN3oiOFJ5x-O5@uKjl*(#mmwAED zVv>30B@Z-a$ri!MFryOma*ssi=Qfx`nF1`(Oq`vO6&Dl#e2+2Y>EI-hwZ(pT%;KNL zIfJ7leH8)5-pa&?EQNkb3v(_;J0+?J7WO>D5_2q}BSw#f#oHJ!X_aPG%s7n8nT*uq zVqh{F_5#ENfN7jW^L#Q{OqPV1n85%rk--2k1;|iV<2X)dj?!BJSUzVR8=n;%%K?j} zWID3Oax4OP1eZnha2CdITl znjpxaAYFxo&SJ{Ug3L@Znb~AF6r<3K}0|?zcHEluBWb5760y5VFE((D{5P)2;8^DO{g)G5Y6f=_o zTnK({2r9*GfQ6nED8NngbJXoq~K~^p(DAq>l=ONq)C@Db$ ziQ!y1LzjTe6-9X`(`}1EJsZxJuyQCmXqbT*f=ZoCF?Uo>7E{v~WMq#CG}e!mya=r% z{%>XySqjH0E|!`S$TYx~@?sKDa;#(rSBC)N#L`!Q%neMo-!wbGrt`+xk&(1t4_KhY z+cFJ(FZ@J`{{td`O8a#%!~mO?$xJ&V1K&0c?JpF1TX^n9WHur*qC6+a2%4b)O{P#} zB?ZW2rdZZ6yX;h1nrvqm@618=jR}J?S$SN*g)%|Om!s6=&tB<00E;2O6am2KNXYM) z`SjieINc4n5JPtZP|PD0HS!`e8V9tJ(m*W!fL>%9WG{l0CC+g_8(xzjllvr{EIu9V zWVIQv#1>QgDq)w@q6L@8VoCs$?T2HNQHo;bMP}P&-Lt~rOeapM%z#X$GymY2haUwM zGnNc6>WCRiy@cFLDQxIRbDu#$!OO}1nC>rSAkpxTrhf^H^mKt}(#Qg>Lb68{la;`? z-}J)_rU0yx(HCXOM*2)mFyx#M%98z-+T!^zMyup@8B#S%0j@!fQq!^t8OU; zI%1T+7NeGIEQK+)3=k?GuGJ!l_@RCm((xz4PWr>D{+JPH(>cQF`l*kJG#FexBZVNA zi|?jaUil!s^s9H%b5FgVp84g=>BXmBOV2(2QhN0K;kcL}((v~&DX+uX(+R-;a^ry{T9cfqpnsi{WCv8JgW=k_v>Bbd|B+O?#VOH9> z=w9p$?oJ!YUN!+bTV~!7Qa79LxfP8|V2=DR7A zk;QB$!`U(WTCyI?WdO^}$teIvAi9f;=Z;Bn^#40~tXaz*7J5T~aq-XA0&1uQ1FZxo zCt!CO#~~9KC+N+{0JCZDoK9F2FgSWh1!*Y6`^i)cC-Mas*=i9y-d@kXl26ZplGEs6 zsKY1sR4ki=NDl1$&KNka3dxjZ?7SPLs9Belujk zWyYJ#xYP7sPBV0QmNMBDg?<$atrG7nyvn=R(g(1NC5Qx|aKB-hD@t8}P|iv`R@01L z379A)ZVAj`F^9(Teeqm`rLS@>lxoubdRRq*=#DvJ&rWyJ1dbFP+yzJto^}zm^Q>x`_b8PLTJIdp$8p zPZpyjOqP(bKXF+JTGm_PHxuC?8)0UVBdEvJv&}RFm@qmk0nFu{BNx5u!#@BR!NrJ- z$ZUhUxjJtGjD!l=e1?BRfU#$0xzeFnNd*}gqI4HVXUMut1Q@cRHIOs9czvrNY!r?7 z!o$X}To#S|@#%m2FB3vZ7~an~xRiWloY9Fnoswf_JKtNlb2`EAfMoV!DV5*GC;MZj zh0-AR|4jf44onIz0!<4Hs#Y5Ct(35WWk%LzGy^hflr;k~Mhh0dt);M>7L)ik%Ly}% z3^1B_>2Ns_VB$HP4Pp*QK#2$ncmXombgYpke8~Aj9WMt=mQi+Fa?P!25wUpEZE;&* zSxTvE=~cJm33FS3iy6z`WG>vl3?Nxb=CbT3^eO{jIQ|IW0&rGdRa^&d%9gPiTR^5X z<4Qy^DXUfMR7y{>2O^6~6Qg7>&ZZ35L*cv`<~tl^gE7E+8RUHqkeLorIT!?722s@> z;2JSjGiRh1&mjGl4(81iU)|l=lb$_&UwZz&2h+tvhtmVcj|FA;zC%aTseK31*+a+D zeJ9SQ)5p%F1N#mGFo)CreaF&~gZzKbsdQw|>9l2ZPujEfcsh3Ufpq-TqiH|Ky@xNQ zqo*HD$Im{Vj-Glv9Y6DAI(7Dmbm6{dBF=K($)gXZlZWn4$M>C2hjyMyJ2&o2+sAgL zt)tu0fh`Bpp{@JUk?s4^uF(zY;O5Q5rnGaUKONdUmQHS4pY{x`N(Y9z(($qGw10JD z+FpYiGZx*Oamn1sz@-4Q5pYo%dfi<&#Zj=?L^;dY2&-xX8OX-F0hzlCa52ncZ2E7b zv0s48HL&O=0XS3RzAco~Hr;s*aaG!S&!nP!HXD!`2N)K9N?wOTGfmJam|X&l)M1Aq zjT6k^94A9M4qNT$ylGeyTsO`Lb2#(>{TVZqy`|VQpXZgOMnl~=h#p%|srfr*KW0jn zzm5Y&_I5J6EJQ+$al`q5lA_iDPZM+drkY*OAMiwS7+y+3U z5!rSdodH0U%nXJ6)LQbj>Z9U<*2(M0(kNLuxEM6ln}$X{SxyI;kFg3MGo%2wumf$; z&z^xsAFC*&yKom~%Sj>oAL5@h{7d}{!6i>hOW%xoH=mXIOcEc0QAa5JDKknvry;Tm zXA-m@80L9HmAVv#fBI#K`-yV*0+h1&0$3&rWPlmq`K5;S8ytPk;x&(IrS( zl0%G8GcXAp($Fp4MbAb;!T7+V8A>7JujyF<62&nXYfjW>&lMZ(f=@{i;D=uKvfme=5um&l|XXV3^W0B3kOPePAOZ8Cr+rt)Qt5eMVdNG)4lV2f8oBwW(%4pOtVb*0Spkvlz_Ogr;oJT=s86Z+|^<5|`0}?;KJuRPf zH=uI|x@0__pLtvi2rUFq7XR!n#4+zm3;vGB{d_tlIyO-l(KT?+R{&g#uDmtP<2mPE zd2=e$j1Cs$zUred&41SWl;ypZR5a@!4Od zH(sF`|NOJ*>8F30o_zAj^u&`-rKg^LHa+q5bLp8EUP=!=`b2u_*_YGBUp$*m-}h8H zd-1t+?$QhCzF)kY&Oh*SI(+h}bmH9e0L?GcxeG6(Q>ULyXPBKib?l*ZV*kZ-`p_jZ zrPJx+u?uP6=ACKJrp@X2-recc!9D5hk-h1{u|4VZzOCux-i_%vf|v(4_N7A`deXrS zYtrEjtJ9;$Hl}l%*DxE0b-=ROX$%J0258Ki_^h^Yt!_n2Z9Af}TNonC5128Vw4i&1Q<;;kJjh48ge?ry~ znF=SXz|zEt-%PVzU}@nbRb(%s#0GPkJc0$P2uJ{>aF8%hnumL1$-z;83XlpnM=~XL zZ%t9urPY^WVLJv|D8XM`cpEWTOTPZt)=QI-H; z^5C13(hjki)#L#U)uZ#H0AHRok{8jobT4R6s{rBmQ zfA}58-=^RF_WSftfBA>>dwMSa_~(B}pML&X5nq0l-uvj&^x>ypq)$HoCcXaF`{~u! z-cGMUPk!^Ychj$)r$qMji|M7Oo<&_5AOp0Xdf=h-+{2Hj$M1U}J#q2=^vee>rN_>n zOpl&BmY%%tSo-Dpqv^5J2h#%wccim`%<0X8>D1=_bbjjqBAHv$V|z!_{Rcn?yn3#$Zfmol1=*C}O3hsdt7%Jorz>587) z5M{h`7CT`YWH3|I*s^rwkfgnqD3O&Y#4Vhd*(uQlUhfwTw3O(#hmoa1ves0VC~0=a zgM}!(Vl>~HKv$0Jhv&CsB~4j&nWZ+%bB(-)peMuNQa(i?NS*wO#(WWN^h+|pNIvkk zK&AvsW_e|0-#oEy)*`Tk{#S&CWrYWgYR=9RXa!K%6$mgzs64H+qaYJNRC>H#HUsSN zElC)AtFjL`PtzyJXu&Qvs8O#5#~9V5WXylVg8MqXNk@n zpKr+UQ*sMnDMB`!3^-}oe-kC}3kjMM-C6+5^yoZTngK>&2`V#W0ka`}ON@5F#ZZAc zCjY%nmQ;XHAz$Cd`ufLaT zXAK~;hW8M%`+$nsZInd$oGod#ILr&fa?KrOsh45Nw&|5=N5|Uq(erPn@8AD4z5A=D z(;vQgKmGL&C?XU8@crlMPv5}^`}L>kn@`_PUwra5nqu#!Z$AGpef`-7>5GrwPrv@^ zGyeZc`t7%0rLVvEFn#;g$LX7IK1pAG`C$xO{^LLVKKz_g{RLK1M3$ zqt{!DKe<1(i?!z+s{2mJe^+u<-_TXCm%|0Km7|{GHtyMC+$tn>I2yxeZyIT?_6c_!(do^Ed()w`H0YVxX5xW-&igaw+u~ z-~do$V99-$oZ&>40G{gQz%(FYiqA!V$xS?si!O?RS{zG_X^RP(hX*aSj=3<6sd@ z_=4?~0nN-KgdhQtkh3=n;dY2d0u=7jl%2_RYgtvr0>{F~&n)%$9wKR!&CW7v>vkS&&!41gazps^q;?048Rek}CvecfIvwf6Dk< zQj!g2iD#nFqr3WOcC)zVaI(LH#ZDXJ)ed9w{aI28!U2&#Kk3s_*7ID9pQkY{a2Yyc z1waI&?f(T}Vkb>xy0saWgahY#%vwBGiUHIjgRvK4M3bL>j7&5s&a3FV7@eAA0W2N3 zF?IyNObL*gC@qsgW;~;b5?&$0)531wOip7qt-tNHtONk+=%3U(VNZ#w{u)02$;jwq zidF#_lmQ+K$Wj)NvCJhSnNKFO1b|*Lm2%gVd(!;L_oju{PEQLUpv>m6^PwIuB&(hY zD{Kx6{JoTj7gA=P$L}m4YhOz5aKR)h26(H~QYEON=U7fQGoQ?6*3W446U)iQSIw5NY(dh6-enNj&Lz4F|X;oI`NZ$3)D`RW5ykl#fO`Tg|WS0AR&K6*32<&zJ1 z?E7y9xP1N*(k~x*goX^rd~Npf;Ror1cbIoU66VW~KZQZ|dBktO{3d<>`B&-Nk9Z7H zF(1Cl^St^7;KEe@%dhYno=LAh^-Oy0X@CWNve%w^GyvwM$1bH8e{n7ZF&{s9AOPlp zy_+E>tWB4;j;0Ii2hzE*HQ^((y@vUn#n6_Sf!RFQ0ZexK=x<3;b{-~EinlX#D4lpG zb0HDT$e4kckq9gyF{2P9b1!?DmDwXb8KBwYZDw5rAgRh`I|9rOG9YQnss!ws1t^t5 z_F2%J0U7%z#$Fa?GYthMi?E50h8jJSkeeZ+FhU8r^g9l3?qxCG2lHz`b1^%4{AOPB zdS-DpKvoDcgX}owUkdr0LN!@sf;|jjh9jxZZ(k>a82zAql=1dU5U^il|0Xh*%Z>gY z_FxJyDk#?lxM-&h=>SmNPo}jWKs_+ep;G2xyr7gq(QHdKR`tl7NEc*6_|OS^FL)MZ zo5_NTi}%C`@0ZdPd-$hB>4THIv;h53-8Vn45+@u)K<&Z%SvO9u>#8IWSeM`oAJ^O)lZ2^5u{DJN0p>VrX}7^N5J5ZS>PLu>1p ziZ<3N_DQJCrhJa>pM#X7)*>@ALOIb=nYIEU&kMH0{R}j4u{EUS|{FSi=Hb!47{JWunFOD;D$lEMx&$08lJup)6x@ z%>A;Ufs>tN7e!<<+iEXHc?faarnGQIiJiTT)lW%CwO4ddE%h2y6gc8rh&YyxdGlyaC#N%gswE zMK5IDW=U$Ag>K)#?)35#ucr^+`Y65k*6Zn0L@B>Tobv0hi%jGP>EuT{g`|$mb($`=8I(_x!cj>cFK9Bppg_`{JXJj@2%(tI^ z8N-&wm+ya&K7RA9^x^AoM7;CT%ju2h(ItEC+4RcOPo-Zy`3U8+N7Bnr{Q@D(3+b2l zpGeO?fZFnzBkBGFJJUl4cBKb)ZcPvF-jptE9!)1lyVKF$_Ozp}GHqJ6Fl|^cGfHHe zVUTT|j#e3SD#gqSz(7eW4@5c?DYaM~GHJe+rYuo~6ikGRCWDdy#Q}yby}ggjM4%C5 zqJ&n;W_Izs4r2QAnE3zSgumxw%uvGP1q6wZz!H^pv1uZ<+;5j^RqdMvbEg%3r{ zoACUAoQ#*C3JW5<-T}&G#vr{IV~ClRh!Rt#m%rohgr|*t6f+Jolhu@)I(dz4+6ky` zjNE@rLo-JZeGMApBRKZy;5Wv5R84xsDQOyl!!!m5x!<{zjq^#rkq%eBJS+lAqJX0e zei^x2Wtcuvzx3GFwQ=Ue#~VxW&1LPqH-b4pNR$edoIWZMfOuhdbWY(~Hlcx00mL!2#QexsAJY(RoTMSjlJ)xg;3}z%k<2nueo?m z8Z29o`pXxlQ7nKrwX95A+G^90(LU(4Ytp%`8`4AjSSV2r-rL>9LO(sNU{m2hWjW-O zMa+TCg$ywL=eHsK4?zIHYJyhWPl-%`8AEq(XXVmZOdWKUU{kG36W?zI-)}iYiAu_Y zD*zb{%2=jL`AO$Ev4A@WKCdUD?n}aaUlxw*>* zyG64&yBa!QVG5t^i(?ud0P(Rg92hJYOHW1lDFciB5gj&j3@Q0fDQcLe{|FK;qr?ao z&j^da0K30Fj(rSN4)WfH^k^Z2kQo*Zm1HaW)wGe3tVU*{Zw?EAD$S(M1Du2-3~3GX z1@jbYyB7%Y^Hb7`vb*irt!jt1+d1#@X4Vhg|&@wz4R(pE0?tt*$OEi0B$BM1CQ z%?BxA=%X>n-_aAs*HKWP3rU(R_n%8lmz&vSbS%)84(&%(kztgx&@H8mWnF&>r5eLJ zzoi;~RzaynfzcW%->UM`a5fw=lr0sEDQ7ug@#WH(EUz3k+86 z`KPCHq>tvpBD)77!0mr`ZMy46r~$Bn=t7HYaM8lFmJ-kyE{{7n--hSU`==Igz<8;XRn;R#ReYK;@$8<|P2kQr_b-1~+Tc>P2l#&hJjIKKU9`_`jzF z#7&ZdnbKPdF;EdKT5x&5A*A9K25);!T;6gAJK>TIDPr)XX*X7K1k0#{X%-+ z;-l%8Pri^Ie(34+z=Myb7k>3>dgbLe(i^Y6nck;N_SuJc!U#+szMa0d%=Y0M>06%v z)AyL>f9J*Y(R(kaw_blfy#;&iwP&BEO!icI<*CQfD0?V9{fqPIg~#ttzk2jifXnN@ zd^ElM3#R^2T|NzM`OKD0>Bz`%IzBp-_TVA2wxS{pFJkbLIiWGGSr^<*?DV%#{@Mbt zIJLiJhLSM$NV4dqY%Tj1w-#9hyM7n{(Cb3##UaR3P=QZF2|kH%kL`k-Jp2Hr;Wq>J~=|=v!&3K>N%x6CtjKE>< zW%F!ottkbrXDt(G1egu1Ww~UQGZ@QpW-w+ep)l|_J(&LtF!}Fipb=z>VNBU+x_=hr z0Z9X)Fs(dJ02g3NnJfTC2S(i&mHk%RsE71Dd!X1b7C>w=XZBM6JuEm313GOU0mv8u zG$j#7fx_%Tpa}UB%P-Wp3;C6j^a_iP8HzF}d3M9zL(xPRPz09308JCG9G3G08Np-h zwpkGYG9`fNy$%K#ROR8@nG+!VJ*D(D{4#41Tsi^DHS976nf@I_`hN&k(iyqsrONxB@`fI2RydIJ}yp@RcbdhFMEMQ~2o6D~s>nOtnx* zFtXpxe`@lV1~x5oUEZ{mR0jCHAeR6*miV-E&K3fKpXDO~TObKb2_El|u>C8+q>lF{ z;5Zjns|go&4jWe>?#OO>-^RMMbqgxMBOR%+wK7%JE>1OdWvQ}iQL3z5oEqz@(lXAc3i>DuDM!yI^Imc* zr86}2jI!%zr83TAV?LXQdr@1y6-1!m^mGsdCCB zX3t=_QLfW1b2h&>pACg2xQYKp#08`De;oj5KQ?4L_I-u>zH#w{?&wxtuJYq440kPfWrPQ%NV2N7a$4zoh^s79e6ufJEe74t64 zt~jy3c{)L6v4t#RD~qDCF&SWFab-mzHZnS-IRRRun-F__EhY#WU8)Z zo)H%8F&25H!R;%^qOzypj#szJ0WMt2Rb#iYxU<-sO{`{svXAL|qvsZ!B$0mUE8+~^m*^kJj&XGg+;y%gG#?U7kcKD1w(kKeb zal2$wto`vY4t#1Bg>Dgf9_c)XcZeCsUbMmNw2>Oo@zL5*``qLMcAj!DrS=8PQpyB4&hYa~mu@ zwa=tkchTsTCb|ZybWF^%sD-==rNt)tFGex^sGubpS}c~9K338zsZj8cfxcicO?FP= zt^gUMW)cIkG?wcD90v?#KQ)v2*uV~^6lD`dAT5!}k}}3g7P6%XdlNFj3c<@l6(Ht= zO64(UeAH0$XbH-)RP<|H%u9`Z0V8X*IkakdOu)3kY=$HIEJQZ>TY^>(i@QCk9^RuA zZh^t9#Adv+G-kZ&qDg)B^9s)!vn?Chr4n0|KFPAxKns=`??GC+AZ~xfGNFJSmeo+W zySNCus89DS=6hgA*H^)2rjm2IfsCYqbEFNks!in#{xHYtpjTIZ2P0MGbLygPHo|nM5g!X*Z)y&OIgBXDN^3}}G5VK*Z&0>==$DvTp znR3pLTK;C^G-Q-+EQ5+&hL&J?+SPwBmPK1~1ffBi?qzyF{A zp8gmA{^{TUlKwA_fBkR&oc{S={vrL_zx_4+(?9-m`tu+ELiX`Ndh#*mVVKVU)zhz~ z7oT}Oy$CDq^;h0cZ@u+Ndj0he)0^)CNZJ}pc_lsd+-vFW z_dZYWy#HBx3D9{RR@v*XzfRfg^-x(>O6K7sXVdYuJJN}@+tShg4QbD+-n6IF;mV%0 zv#lNdw2IWjj8ORFP|CMoYTqhf904H#BhQj3AUQEk!6Y*jmsECN zZx`bvekv!Cy!W<}{AU{v{*ys=1atSn#n?cQ)QUEBRksJ4BD*|A)6qq=8>FuC0k1H@2)BchI3NX|wr%;Oa z_7&Rq3NQm$3J>6~U_U}<%WfLm4(O?0Wj10nJ6o~}ENfw$Wjb%T=~4diF%BTwzX%0p zvL3S$8{+nP`q;7cYe2^Iu-3xTqg^!2Qry96m^6mhxTUQDnvs#A02*d2gs79$u=x`2_B=Ws!|uXgkbEfDvQ{LZqfRsfC*kQ>-o7cwhWIMGLhk> zMGTO=j4ovdgiGcyy_Rl`&rok2)QpXJAzycR#OM`6CS^HM!hjO$9b`#ul;Mn4?$-)H z_1g{}n*nAGeWR>(7QQl;mUM)a=>w}w8J7ZJioSsWQv*<}05mEoi#dR2v$=w~iOQ?! zy^zt=UIVbOcqp0UjFJ6>@RxDc1;A<6YXpD^kg@DD0brE-pGf40oqv?9Sm1eG5)VRJ zpBWRI>0R_XGz{xzrys#WU-W5;Y{b`YnKaxx6~`=XR0JH^O=hI_$;?6r0gwUB+$c|J z))rDXS~h6i0LX<9C+}aTq7i+aaL)upnW@pXpo897C*|4>hEKc58oO9bn$dgn=c~}@ zS_P|0%(jt)0ayKhZrHg%+nJG#@woxSP4-F@lU_V#pQ*Xp!y zQ)}vJUYJ^|$xIu|Qrn98scGr#RJ#CqqNVdv^-O5=oO=ysB%C8P^X8>xR0Eds`j@e3 ziXektg6hN~B#jnB7+40dESgMzg;>n@wFCmeQob|8nV02k8l0tB3OFnTT;?K#Is0dj z2bkn9hibiw$^Ah}V(XX8PMgYRrQJ37vv5wg@>%O!qoC$uKxN_8Qm1dFhjUAs2@_6$ zSqQ*L99W5LQq5FU%5Pjo##}+hR)*d^w14C2baeOq>FLMcOfUcHCd^vkDT{+|8}4gAl(r^oW^^v+wjRDSer`r@B*2%`kFVmib_ou!4?@xR7T}p?KJe+pz zKAZNC4ZZrxTOm1f;l!o1d+n~YcW8U+sYJoKX)tZB>rNXhJEP| z#>=mPxatv(}-i{~@aSBonar(S@ zrX~QUkHv8afEl*8LchVDfkS-uT=a%M}EJ_;z zj}1!z7wWVcnhnFs86ewHKroESc&*Nts7)qtbaApe>tlIGYO?^DS#9BTDUkr+Gh75a zOLHo15DScup;7P6*&GHzCjw0P%ammP#}$e3jFC|lawP#USn0wHQ+lVG*$cy2j1`p3 zs%Qc$FH%qGteFg^bt=ICpg>>0V64q*C-jY=;@X!fvB+X--B1>#)cm%*B$2~xHF{xu zcR8}sfF@xAjNp<7Lc@_1fa&KwNUA8xQiT+aqz?xpLzFY?oe3}!9OyM@jonAD#=ew* zV&>`jD9{?KIse*u9c`3eI{}Cq{(c=YI~CVWVzIr3xst0>-5n4ku+Ht|oaluA-@TL! zx`MvqGQOuWD7+19E;?7H&CTr6Tg%h2;kLB4Zf@G&yE5(TsiL{QB5i4e>UpNi}k(X8XKZ{y%F-jhNZL8mhuH5^eDhAXU=H}8R}xD{zCzPxtiJh z?o5EnOlBUNlf{AQs_S#u>>OeIRq)tH*qr>A>Dc(vGbc($>uA>o=#irX8ui zdTpv)4ijwS!SwXQFQvoVPNbnGbjVuPB67JpZK~?$eRrTW)<*fO22xH1C9rZxIM|63^)%x*&OlXp z_LQI&TT&_-+r>blrK+M_RfL&}u97bJ#)&ef^Z^<(jZ@3WdISqphgBXnE|nK?QKK%S zd@7zR(?X^Af$Hni{iqZhO5tnl^*|-&U6r?%%)Sb5mizeGS!D7BFaNd~L^1G4rUGff zq0cQ48a4&M+!&=YS!LQx?@{P-$(@DVKa8|I=OQpz{we^Z@Tkdgdg&d2+MS49-d$Ka z6K9s(K?cWTpiL`|X%uSAem-VJr3@wmjLrK(+o+iNFl1om>2@;|W0;+}*^KNcJ-Wvb z-jlj3gGv_K@ICXR^wmvmxtATB!<-)b?p=`9+=({}F)(v6hDk{4vtakkSqSxVaq3@$ zRQM7u^hI1WivSKT@?*_a=^Q19i{16Y9vdaKg0wx#I|3&gfs8tjdW(iml~ zks5^VY8I!>HH+}Cn3L9(!Sq^&Zv@TIF|v{|JR{811k)i*%7%68<24LVUl1iX%WqMJ zBWtoZn?;886ofkv=&H*R+3F5Gb8%#1oo5_-f~8WNm-2r#{Xi(wfm zTs=#&_iX@-5dcGmkO4-J85asww+)t2Js@K=UPJ$Y#(x_#4ocz(EXw0_qK@G3WE<4k zX3J*8MYV8bxaseDRX%Wk5Cb^Y`Jjz#SJ zmresPuz*;3!#w6y7NB&o068VHnd=t8-j z-7TIUG~}hYdM<&)VFvTJ0CPjg{rjHGViw!41+>ruDTa)0(CGQu~tKslWbY8frhC`rD4Dp7w)jsQYjl?B1K!j~q{l{@PgZ&t=fQ21xbIk$Hr&Px3}7>M3t)piM?agbUZi(==sP-yDoLe7l?N#AF;2nx zUD#0AQ>IkQ!n_vY$_=o{wz1pa$!@3k<57!CfDv3ylbHxG zst_xAAF}t#*&_yd-|{IXaG4SwD-Tv(8}ZP};`m_Yb>SNMP~|PeZ4nPv05sYZFDJVZ zxcFN+<1woda4dP*4{?TP8%~~^pfL+DL0=|Y+l~O{!6it|EW0}l%rq_ww@gZQr#Tj? z$byK+Td_{QEuCME0U73F7c1{f7s~O9!6!ybW!00lSN8W*Up9OVh3h6g7p6YbGuQpv6 zX-JQ3Xitx>Ye^3c*QZk*%hLh+CCAv2Zh+0>Zf+1ZS3k|pA?n|wOO~WTW(|huznGbX zy{vZ4i2EstV+N&j_4Qc<7Lp zD=0V&Gt6W3EGXk-E9lI!3X5faUf2N?-aFZUCmzoUZnUE}Ccw0^TbDr)OSqhzD9XvF8&Dwu>ZTk$@6+0C2Lg~c=_&2AJSR`LHee6HaX3VB5GLI>H24xB|_ ziRpTJIUN{bb>NcPd>gDR8n9iY`KxF|u31L*#crs#lIJYvZ&d+KD*^S|SxCn>r!D;} z)3(9dv~{>9?HEHzcepzBw`0|?5`e0Ly|#?sTY>o;Wzv;^Rudbi=Gij#RCngEYRsJvyA92Z|nwlRs!PeE0mT6 z7|NLT*UEXU8IC$;ivgJVWFzzOj!_>_XV*c>!Xr?WhZ!UkXat-ZcH~P?ACPG%z%1rD z)G#yVFw`ly%x7~U)wzswV%a1C3<~_!Fw3;LxOo}pG(C(v>sV}?s3`Qp3|-Cl)P-um zR%GzEq>g*nr8Nt7r0$BnX}IYay{L0(%MdYeJRRIZrZRRkZ5!I3_N_aCy#Ew+!TyA@(h7uV@h`V7ly)R!UavINO|){|RjrwtG$He(LBfj;hfHiu)J zpQ8$Wa((ubc}h^};=EVY!T6!pog$|lsA;s{HZ}F4K{m`F=6ZS;8yTup+FuENm5O6_ zg>e3(@Kh;f*2=P9Kb7s@6Fz}#OsH2~#->LSJg z26Hc6B!98uR^s;Yc(8(u29VL%>mu2bfMxjH7a$m%Ba1pi79q$u&$E4&QaHE7yo@C? zY0C%bKOQ3^5nN7{0OBmaSCr#!i3p>ylAGlNRoEq0;c8i39PfuYrwQ4`iW?%Eniz#Y z%#8tjS6Kd$F*e|=MhRd>O8o|FnU;T~_c|M6^Gt)EAsUT(f%kCX8mnk3^`nbqFJp)k z-|S<{(uHXky^lTBG$F|(PIcC#2gf?o#o?B8Zlp1tCC+bbNvAe6rE}Y;d2ek=hc`8H za#f}E9ZS;Y_A+)ZfJF^vLXOB&Fm2mt8@JbFWk7GD`oJ{Lm)W)ShfkjX*9Ce#e1H3NnLE?Paan3}=( zIoWF|vXR1s%VxCzWBY2NyjPhbEPwS9(5z#i$vIatlYJo!drC=Dju%tz>ofpCmlgIN-+|Q57zi zt&}+1=vj2pBkRHtsgFL!&{8tsN;1gGnQ3GF!nCoO-DeX6a!`Mbt*a~3dNS2@ZICL+ zNctMsG;n`cHDFUiCcF|bt3o=c9DraqS&a~3Elz`V^k5o!4J-NVSJ1O*;I%jNowlG@ zq1?UlL#+@ln(2jAQ<~DCu5sF2ND&M8To(pl)J~cSC`^aFhc@5j*|7BH@R`l!X8;j> zlcFR^4~Cve0~t!gHCRksWiRYrdSVP@0#3`3F z!t87^(lxkdqB@{xG9Y_?@b5RUrMKTKax)FhS7E8(RAtH zL)aao#(dxx>4C$K!>~gkdB^#5a?gc`V<;t`+IudY*@vLzq4VkVZj_q09ZbjZlsUO& zZ#p!JQu4@_bYyI2IyAT~ZD}7Qds@v#w42gcN7_@nik@pFY8sRWXD(rwa3OSKvKFk; z*K?g}Rj`h8(D3#!-@T!XQ=cY$DvW4oR~ov_^mi)+Mx%q?WU#H6wRNjv&e(zsv~^_C zW&tkLdjOo6?&myn=ELE_9L|#zGbII0*|L?3w>x~pev1q5SxRTdnX)N`Z^{bFVbzq) zh>KM$)>Tu}#cHybl{iSUp#P%!*7Weo+tVX8cce#a?@SN#|AzpcD5GftrmJLLLz)oMpM23V>UAV=1oZczt@L z?uPVm?e*!Q8US!*@j5N-84qfy%bk-{FM{~`NoWCacN#>Ht@7aBm+v-fsYr9-`S={V)A6aDq+z^dix zaT=&E9a)>6+}V@P4IxdzVzRZKR8|0~2RIsOx;IlcE2Az?>7sx6g46?jxD(3nDx!yr zY0VsZA@+9|hU{m-8k|K*&fXD#sE(RtFTr6L$2+r<5lV8F>+%j;QBO--9*u%@P#gu* z*qOWdmjK27OVNkn@1h7G$YxfZeG{9~f0cO=mCmjK2Fqq9CP#)f?ykCxW_ zI}U#eF5x2s!=)Q3aZl{k?CkAfgkbz~G$N@%8P`+DH#chG(Ur!0G>UMw@6R&Mo?|_1uNpMPs%WO0p;Y~xGTTp~k^?Tr zGJIfku$=efDG^#G8{S^{<7>k@Spc#pBWc5)S~URW@0OFnECr|*{pd#eH>eoUtJ=g6 zp)~r<5Dqq#;oeGlap{#;g|nsrBfWVp+3YM72{ORQNL$YLUjZ|(3YOi%pG-o06Fs-P z02Qv2PWlxcH~al-&_^c9Fy_b|fclLXd)?g#<(2u8`D-xs>PvMq8dHDWSUPtQi{lGV zrH9Wvo*p^#aC-iJq+K5SReGL*%}3AuGMz^q`NZxs={R!!=Z{=Wk6nBmAK9m>ePX>=L3$qTEfRMfCZWD`jx zVl5j}{(b*{uA#;wTAs8^=;m~NJPnAqP>8BKqCrDVpZ{>gN-Bt8TX2|NxU zN-aK3Gu$$gadI&PfJHLFCKr90(mahbHK%FvpQRsjf$Zf{4gHo{N@6Q-i+H&9_Vj4| zoh)_FI7(tyY>;h4=0Qp8JfLw-v#?N7##9WWGIh=bn#`0lb2*LF{yEg0%{~fX zxv2oNs@o!KdT0f}QgsvHc0Is$BXL8-V+|bZxv&1l0&HrED1hi@01!|jekY2kQ zfRVfb{R^V5#icxkVM4orV!YaLk#P1JQ|v!O&&2dAVpx&Q!}LuNsvU+?dM`DJ87 zOQI)ZZ)Ww(d8rGJaF03G03?I+7KQq=jrm^KTQcGF$FRgV>Ip}-k=2h?N)`-yxX)}X zA8p9H*vncHV1m8GeE}>=-%vXA=%OlXNjj|k6(c)P=7G={3bmht+=xJ9^E!GGWB_JC z_HKeGpf$6N^iV#Ac@+S|1rPv(+a(~QAIxf4E{4hova+1-2$_>G%_`*a$5oI^GWjv% zLiVEda+K{T5%^m4|LBOJ%0eO~&)7H&sis>OJA1)JWo=0avbJ=HboyOT?P0UAiuc~3 znF{PI#m8FG zE*M)IduYtIQyN85y|CS3#I+QQ#;E~Scz{RXnf zIvTXjtvFw!0IKTQtDvyk=L-rrnVSR=vr4~%Mml*cqg zQ&>~oI%j`s*kl+Ts&;TKIkTjqfg24~#=CEU+JD`>uRr%{I!~j2|Mo)>2X`Gx_u*Fg z#6wS{hc7;y9=-43^u(n{(|t!yr%Q)UrTY(`OphHum(J}xknY>IKRvMZP&(1KDIMjP?2PA{q-6%oOukIcUZiJ?`@2X#t&w=`Cg zO;SO-2GWb6L+Nrncb4+ql>HoK?vi@AGkq$VZ(z837sJ#0poZ_KNxl~l*-zvQX5z4- z6Y+=u) zezEqph)XMPC8MDM#A24r=PF2#;nhk=1CZ#m^mT?O{N(51WDk z7GNpSS{A6ar6h_wH+O0+EJ)6$D4*kNQh8VJ78RS-v1%fNa;VRN)K;dU%}9FK91PUV zOS_l{Ikja~y11t=UD(}~F792!G&qBaU5nGf;W~WWE7C|Uy|ERPwNy7)zKqfsQ{*ga zt&}D^$TB;ieFta&AdNIy8|gjOLx&D&7s?n}I8zD#Lh)FQI zUdzu{lCc=oWGwz{Vk}3-zYI#T8HvVYvbh#A@VEf~7_F2STsbw({pqAM=O@>sxj()p z%_ECg!qmN`v*paXRN#iG4w{)z1@z>i7efXlz-Ux<6$;N}m206!uZMEIg%ab&C0qkg zY}@W6tGk)!U^c0O&t*A4Yc}ItjPA0bUZCHN+JBjr9#+{9Ou{0YbJ7e3a*j-_0UG2Z z5?6Y2`)8g&Ec4y;i?feL zkLB2|3+c#?bM(m$rSpfG$baZp>A6RKg(N?+{0}}B()>?ex`Yh>x%Bw?GwBy6kEI6> zA;rIUCkn~i((&Qpw5_3yVQ4a`*-KL|rEk}afqSV~s3Qo&Ra^01jsA$x@*~`!b#X3r z@_DF3*UZe8_6?fJdHyS>Q?2ziJ+Cm2gJq}NsOE5GeEwxu;~r{Bna{=yejORjHrRx_ zQRmpp#QZ+xWGICdll}!*=#`>pik>fFcT5jash41#(fB{5J0z54LqIvWa1ydDlheNW zNXRTeN(Kg3%-^65W?Acq4wUGInSC5DyCiol=s(!}L%drabou{h!AG zh{wr79;4iKITIm6S$R{DwFJ2E7{KN6+Uw%6Pmt9-QF{}=!(#xG$LP%%j{`D~k%9TV zSFB-C7GT_^#?BsQ&wx$DrHj%Iw3BwPs!vese@a+3{@2b0RLC@jsFjYA-i`@)a3_uEXjN!-T5-$9MM zlbvZd1DEzgY`WVYF){%`SsPTrArco0ePO?N_Sb@|Zj4pjsEcDigzgOkrYH%$VrWp%AAU zXCsuFbSCuwy$%FAqzH($u>dy!UX2bc@|w*)Tx8v;ccPcoLCwCE+Pz^$BZxSR=-(AM zL&YE{*9=d}>H?5kDKT2sT20?f@aQFz97E4)R0UdQgbp^>KS1(&9c)TaBE&q}KnU|z?<*GLV!1^Q>vREJWn zsx{|WJ=(o zJbybGh9HxpoyDV#U8^Q!hH^R$f(T*hO8}{&0dEK-0*v6|aU#G7K!z@@g3B^?z>9y9 z`zlDa&|6tRk40cvcvW$n_p`}q&X2B+nE#_|C{<04-!aT|3T7D%e{Ks>OHff>4C8Dm zVwZZ*s5W39bc9XddcHqnP}K-FCTFC{>LJT{uNV*)!Sv|fz3INqTho4=Hb<6K2f*~qSQy#1y-}}`C@%vreay9Ffa#`px#|`M zfdQ9xWPNlyZA3<=ff=D%qK*xQS<6Z`87m0CJNsgWOuh;>9u>?I)mlaajICNYsJWhN zM&Foi$ni@976_Dm$p906DVl7tcpstcRM-#~()ZGcZStR?A%7Znne#HonD{@mgz5h! zfDNUxLzK)805qx)YYm_sfR34AWTq9fUN51djPmjl#4#htmIxgw{kwwAnKGO9S{wsB z{7h=`#T7HsrK;H+?uQEq#*?lyn}kRTqVhw=-UYi1!2(M$0t*kpha zT%KsSG5wNwlH23K?*=#tDwWrA8?XVWEUjI!3a2+gMqr5<6&9lw2ihzCB=;c47^)pe{RPIf8=h7>`*?Lw%G% zOJf+Ok=ep9C(8gow-4e%XyzabsS7|cg6hmk-VZyZzcl3^gL;NEVM2MC0j-Rk#SkzY z_zTT1nN9_mJ>L#Nkaq zA|z!rbfZkB9E^6pEezGQGvm-fX+-%M6{`gm`zG!5csh{x=|j?HT`hE7vJfe|gOohS znwFd2?JO7>U<4h@V~zA68m{I& z04Q|=Nhvb8_?3La z=KV1Jwx>hekE1L0W_tU@chaw(cmbv4m(r`xsyX&tdg+%>2FN`1(1RF^QARs=j*0!l z>7iYFkmBE-4z3wYLrYeqo|#1kBfvx-)snXkv}WI2i)JpWOmv~;YC5NHh`QpI;)L3UZr_vX?6TkfoyG7W)K&Nt?+1gajI{zJE4hmFT| zX%n`}J6Z7ch*33IkWm;i^uhobEr!E_I4H}`rxbKur||_B;{?(&O3WOErhEh@*--%J z2!L~VktMTfWHm_pBViLRnz(5y%(+X4Ox2K4p4f}ri&04X>m`HOB;a!l@Hx(Gio=hV z#!lchb9(tb=^XQ2=V?=%fr)v(Zgx6bO-2Lb@;=I857yn09&WgkzRF#Y2yTz2e!&>K zB?tx&(NlS(_GW+x5NV`5Mm*6-Cev_TdaNEW;rLYJ4S){!k=dBF6aYi-CYQ)o(-S!_b5POc-x;lk#FYVEQC|}p4d))+nbPhpfQ5O> z6gJyk$ek)TQ?LndSu2M_gqDKrCAcf`qLK~f&)p4~ayy@)AZ2#4Ec{Ry$O2rtZ@&RB zn-J!-h2D!_S4kCwnZbIu|05?5rrKMNPOAnnH!wOYDk@*DE;sS!l^@xKP?F zuon_+EJHL1Q&MYyW!4B_G%_GoM@h>me@kA?I(E`$XlJlY)d0Ukv!4#0zZvRt zE6geZW@AGI*=Tthq>!!IZ6i7$6!`3eiJ=R2d|Epwp#efHkl>C?C0LNN2&^q24ckY0P{MO-RhOrO8~X?p+V_mSd%J-zwD>*;lzEZ@Ll z`E{iEU&jCCS5G{do_Y8Y`Z5ot$If0zj~qLZF4*wjxGf#%9!z};D`Ed35k&?g3-pHo z6W1v3L2yx7yJ_l_0G0-Tr5;eJgZyAV(wU8>NrW!Udb^N@ZS)!V$ zlenfPL#v+*O?wjA-!-f|lhWv&QyE+=#4=s{wNBoHg#X?-l(;Bwsl8=ctgtIC1~cus z6gpx`!!X%T96`tI=n^%{02Z?u`!7uX7kXr5L3-Sig&bW%smx3Wz&OItV-a@(CU-;} zURcBt8u-RhZX1W7QXfK*U>_BQeNdA3ExbEKF}Fgq-oYTIhGqMC?!(I&j;vswrTWfv z|H^xad()*Acc=3VbzWFO|A$8ZCBcTC%0qRxrbinnfi>Qeo@gTDiAF!AH2_ACF&?d( zk{(?-CH=Dg=JZtEE$PX+n-RODx!=VC7fdIm`zb*=6lpznHODrZemd+m@qfJ}+Tfe7 zx|2odPCy2xRzF|7Q}~7%P0ZAAqATxWMi9c3Jbwn1Y}zHT^fH}oC+ozjnm-<7)DgU(P7*~6+iyjRLq4hS~Q0B~ry zH&Px64Kx;f8@2&1090<^`#D;MYGVdOns6H=jyf|CN>{a%=W6);Yxw)sd~VHruIi%M z+v=e-pvbB6L4HTwG6@MkH(#&JJwZOx+3kmT{;ZKOfB>oIlf$Ls*2*P&WIu0p#LP}C zXW28d>25!%lYYn#0j7-$zg2MI*bx9zL>Jjfj@4u%V*&Iu6{?MEj#6@D;FONEmGIojDhv7*2`~anADOSw55Px2g&#mUVu&n236=hv z*|D=JQME&D!BMX9^|N4;&1ImmyqTWsaC-K{{prhBKScvfnO{Bmbo6B&KX)lT zef|=%J$nI|9qHKMdRVJb6Xn<-&! zMUh$SWR1nlIQFU{98&n&9;ab?Cz0PjP8O5n7*qNO0h5FC?n=8^E0m7eG50RyaG+bGyS4$# zg3Zjv?4ZB12f&Jw8(ERSbsQCp<4Yj~Fj#qlQrpRLm}U%jo+Ya}54$Y0+8$}TEg6qC z-jp7pT=t8)Ya<@6y_PJf=;b^?Y0XRqnz8^hGZ-W;2rB&wE>44Y0VvWJofl|f=VWvs zFzF*qyZKXOH{F$CL#X@bYW~Zk5vkPdkh!)Q; zI9l>6%*WXEk!5H$rbo;$RM`Hz$x7~G1_vs!pyO`OUQCgp@Nu0 z`vZv24Kgz{%$ILtwtpU<6JLBMjFUAq4<$xySiUH2V|Z>4J&{Aq5FJIy_aOa{gY{5( z>)bt}QUG&npq$}2EMXf383anD2{!>?%{pL`&9y5MS+a%J2~@BNg<};7$SNA0UE#ZH zBJ*g{#+vWd-Ek+tV2Q1dOg4rm%^odXI*m`MD}bD=&2S;}qV__U_+VMEpk_;|P%&CP zF+j7Vwyf}_eE>^1mM878gfcUWT_*suihjXr*jYJq$wy0EQRd>}?||KAbTZG-HTBw3 zTm~8$LyB&VTgP*(WKpTShUPe#M}^H@$|Th+HZDZrp%Va8 zWHEIt{)S*vLqmQAb$iQc{=TuC-SU!aD1}WTJGtuT1-KBiuDm+U{P{Hzvwl7`O{ckk z4*+xb-(M5Q=|7qp0HfxZ;+B>4*34G4QeHw<FFgqwnx}U24e^=ePn#Ht%7+)e{7HqlcirX8g&GRIS+>J zS;)B$%X4v6Iy0~_J+uS17woY651pgQ|4RD${jbwEAAJqLe3ZWZx-g+;+_r^Qv-B(^uZ@=_vdh3N(BiniIk*Cw+7amH_ zUHnD5Z`T24;I$*+hf0ZhhQ3eB&H{|)c-k{$fH7lj22cbIVu# zQ95tIwkifOBcqUl8w$Kd4X&68^09^sy^;Sf zFy-BK(0tvov8#@SoxdGDnee!wmMoBw9hosG17WNo^9X7%ufY)D0;B*FcjcBBbfwGy zlT}&cwez=p&fu@x z(sfMfJ0k<(z>uNmXDjHM-T7WuVPhN@y5&Z_S?HgH2N30#aaT)yfxNNezYmnW)Cf)h-tJB?APDywCbaJ}$$CJ_>WH9$q z8kEZGnuf;D9U6Jd@mAGJR0h88QDP2ex#-4HEh7V9^G8@-p-;`sf|XYHz=v-p4EEotMdEN&xe#N1u)Pm?zKOpYGdpI2~ELJ?&mSnno*H*t{-f zLy2ag6_XzTjHY<2$-*p+n!S4N=?l~-c$7dyAj!bucWzYMli}xe083#l4#;qRc%HOk zz1@Bzis3imoO;t#HcXVqZ@HFU%nh*XuB9JyJ$j6Q43^1Tkz?7$)W3?%x@77xQ-Dn& z*P^|$gPBg%D@tkaWItI)v5;c`Mh0OVSaerdCm(@Ad<2HrF^&#H9wl=TJj_x~ka^_D zS<6wZm(>(I3=LX0%-wjrD9vxEJGLKC*#o$Qp&I|+tz&2Ob9@W~q)6acI@5w#;MoO$ z8M^_&J!DLK$#nM7(>X{_=MW+AShn-EneCh^2kaw z=24sEW-^#&cCoc+Ff~F`tY^NUhMliFrg}Qv=q00X6@wg~S-5M6g#z-l=ZMn(x-{_+$nV-|gSTi1F zCq2xL+P~}b#)8knYo=iz#aQD}uptvMlL>$!Bs(}@Dw`|*mNv=m+`|#G*u_gT&V8Q@ zHacONp$wUwXix@ydMz|+9WON}TZ{Uw^6G0DJ{*N|IKUUyUk1Reu1Fi2siU_pOgnp5 zq}A21*Q(f=5k368hcCGs1yp@y^y#rIs7H*RC2F{}vEaA!U8vyfKxi~-d7mxxhor5x zLPk(+SZ7i*niib6HPZz1|fr~y`Bt(lG#dP z1q)3XzweOZQnL^Mrh?m5lufD;jYX7N0N%M!q)lJBJjVvA*IWr1uy zJDahbzpIKPqJLaP6@r(Q}gKK6Wi{=uixQx{MIIB=55{;kYc^}=AR3xKgS-%F`1 zq^C+5jOU}`tWxYXm=j>^!%6DMJ(!%S*t}oCIpR>I028+XnHtWmdclQ|&fLQJ(Pqi* zCY$_Z$As*(-rH`VbVz1*+qEb%qgMvVY`6!dVn9aO{{R{?naz~U3NtgB^W3(KCMlpO zqq+DqUC)B<0&bW^7)ADg^JFaQs2KSb%ukgj}e$z2R*LQ`JEZNmHP#T+2p*bi9j zBg@$fHF+0OHG4|8wO6(TX4y`gW|fpB5lD;PLz!+jx@9})5AB4Mu${lTjpy3Q-`~me z8oT%#yNNygZ8M&Iyp{uof0ySyL>%VvW@MHGeUHAD$bbN&D?&etUWtvfkpFNY(s+ri zrJ0l0-BBH1Vy$xul(1S@td&Q1L3a0VCgMV$vjkZkHn^Rv%`*Nj`V&L{m=P9i1v3Sq zSj0<{@dYakZ~*XJ&;mfnK!)ixjPbX|0H(EM4`b}0$5{A{wfw#@Mg|j&Ngg|Nckw%V zK*UKweR+VB#OUXJ*gG++u}+;!WI=W?O1&Lv+rezJ4z7HxipG=8ea;DyEMY)8k<`F|rVe8=CGz+Uqi7q8E?OnyUb+qW?rM zgwHU*gvG>6Q%M%V-OWI33{)0ykuUX|1Q@6PV?Z|w4hv@9hHVbS-=F9m}4o~6l=Gg zGa13eu;;QG#+`$ZvYJ%8wKUd^&4BYeIdid@FU7c(Mc$BJ+@V|wAY_>N817aLSwlt( zSxt^+78Q50mOmO2iq!L2HKXq%C%oHOXQcDK&a-MClVVGKn72)MMT&+(-F55jq`U12II_ zI$(nz%D2OZtNETfVM(b8r{-6id0GTg8OW%Fp?u*~1&p-S& zeM&j)<9EM|_>i8=Tlm4e`uuBHBfpGm<*#V=Kg%4=1L?wnQ)zqe`qaC;IjyT`=NhZz zeAY)wR%y{Eb>nE6+J(RSmg~qerZ67B<^s#?_Gv|lv}wv@N@Q2jz`qiz`IXEwT?L?A z6H&*8rJgJ}G8aB~J(0o}36OCPE4!w;i8AApF*?ZiG6a|n@YxNM-K=HiW(zVhJFq9- zKC4hL&i*oHGm+7d*%*5$mF32}1DgjhIoyv@g|jt#aiiRiTKpl(-qEAr#u`e5H&fSb0Z2Mn;8(N5cX73!V%ex@h8HE100qk^EY72p&;*eH6C(S^ z2tM8xfDE&ZpczMLi`^HCx$`VJgBc~uSW6jb9gFWeGM)@D6G5v08fcYfF+6^R#1!sC9_D`G(`kNq& z1cXC$Q}7!nG02dU2ry<3W<5&J4jAcKY8rg;HF=H_q%p$;LHjVrlFvafuJL11grq41Z-ShX;!j)2> z(f;^e04A5m=JC6_PA=vBRI!k?$sY{0=IsCD=V66h0SMQ#8Ejxv*c9GF zY&z2RVb=-|2Zn-9NE{{WEu^-q6DzX4c&_iLOm zzx_NclFeqm{N#(sVt)O__vy=zzDl2ADrOdA2J_ylZ$%dK=JT(lm!U8}^Wc-|u`>^* z`wyH>yLvXHz9o&Qt2aazwfZIoKe0#95jR+)kxi44-AuWZ5|-ey%F-6ub3ycQ!vUL& zGHD&eiySqRC)0a@X~wzXIT7^upvbG1QJSGDF%lztR~3LvPsZpF8|@K#RHJ-e>ls_v zbhn^l_QDZ5@#g7M$!I3=|49H2S&TuC#@J1nOpviZBfCqGiNJ@(I0%X7Fzn4>g_Qv2 zI6WEx<~SvF#VL=`h(F5EqyTdi_uV5f#12#1iU{VKV8TK#xUj$%aT#C)nID3S7R|wY z(=C&~8@9?kpOG^adqkGUa*50`*Ae`Y-?Z;)v(Y+4+b5s8bGBMwOx1W+A2H5Xn95bGQ-=3nM)1EQTfp zo0!fAT#D!LwponL-6CVjSxa-N^ik|mi)a8?iXdCy|CUIs#YauP#4r+IRw5r#1ep#^ z_9{T761kUh7J5T~SxT8}33D#SVrE_z|BU$;sK~Sa3%!^B<4WS{0GS9tW;)NOb8l)j)rW0?t-_JWE=W}e7A#qCj$U$AHcuH(f=5pflB$DN^}JK)9V+QUtwbZ?WbQ!|MQ>zYfAs|f2IHU zZ~vD5`jeDaNXCHo=zW4~^vUlE1AHMlI6z5l= zFu$DMdH(tII!v-x9)2=CeC$j*xBXz+(KeL2=T@^3TgkP+3=9sSstj2EbG9c`%PIG* z0xZqOIw*lgqo3?7HZ}mM8=Xe7nR=yk1Qsad0E|F$zqQv)iP;!6$qM`JY#}bQk#mzC zpuNFt4W0o;0>miS_9#HS4oN2mFE``6vKei%O@PZLXv>>sPJ*#@W!g6TYS>$o2$C`PvFAC>dLn*6E4Dl~NUvogxCk)v{0;j#W=XkWFZ(7~Qkni-0vN$SqJqE@;KKj2 z0h>l^GQ}bQ;1MzrQ)+iu0lqYL->=`cgAeujQd!%$3}UkD{<2R->7`rVY)WUID^8^WqgI5K*{4JvXu$a{aF#g#VZ0($~KvGVVz5*aA=jY2Ao?J@C zViZ7wfF&$3XI-3gnN1cm>+dH=WI&k>sLVlwZ1&$xj!;qADRQaK4Qv3^i|e2yDT~cP zPE`Vy(+5(hawQAvO3tZPz+?@+Noy7{GJs}aFD80x02zl{Et}ftcXQB7=IQ{j8O$J` z)c{m(0j8HJ_imckYip*{r^t?{_p=i{pnACO8@-Ne@(yp?Vr-0uvGs3 z*MCT#eEdcF?32&a#~*%_K6&rG^wGO-rH|iy1L|@CFmFRw{@}Tn)3c|bDQ`KDwxb5n zJ97m}Aa&>qu7F03LONN@V5z@UIH-~Zd*0)n)Zux=2B!t$iJ5B1!|*-(9oMmWaM&_t zVy-5ufkoELd6ccWGq5z+8G65e3j3R33);70XR#B$ok( zQW*{PTq?6%79ayD;3$2YJpYm#{q{pFVRj`J&BCm#l);R$C>LQ_%j|?NFtQZ^ zZ$N1tLX<)u+rQyQD;StG$91};N5l7*4XM@E?q{9bCanJi#A%(7U{ zT+EO%z&NXt*-U9BJ~o|eLxs->G6i zZv~)J!F}cYd>QvI6L4tc3p7skFMus3&=f z+5nRLgRs&Dccea@gD^wc+;egG_IYXDtctX5 zK^>-m%_wHKr_CK3)4I+rsjqcII=TOmv~l!kdhp`Q>8mgQf<^Kt>FaO*DSh|-U(>(; zkCguXf2Q==7r#&6{pQcCu!-t4!Tp~?`GrYx}JSr-)? zlpboaw}+yGRu;w&>G4wGrM>ImDs_8=HN~|_s`A>qY4G2BZQ3~fI!a^H(pH-II|LF; z%FJ2}oBZ2mSsvrQnXt4NT6QkwGQbEjmw~33Unzztqp5H2C9)S-WCrCjC-qO5$T5=R+Ee1IOm?HRHGNE`*dc+>%Zv>zf^8OP6 zMjExDqo+D-M-=Wv>gE_(l5;;tkkh#$bgEc1t@+wej;1mIV@P=o1zja102g=qE}9~_ z8OIn4WC^brB znDlcHpcw#YoFD0D9>qo948z`oWg_L~qZ!HT>ZGUQz@}v)%T)GQjA#Z*CH}$SV`jI- zz?O3S&JUCn1QYrJ)ef*!let(bvuq~7*rRDDYmrJUU`-4`#kmzD1I#$EvCs)LYFgRI4-GLwFcDO; z+{?ra#-C+Bjy(9Nw1)$y0*slA8I5HxT?ZpdI${D#2aAJ3l}0uN?2k3 zzYgD(3{dWf4H;*Z{B8j>Fv-kpO6t6px8~FAH?mCsd`e@gD=(xsv*_=6EQA3CF4a40 zrXg?kq8q6IBdI`uDT8Guz|>IEmNnLf`Cs<})Q-{q>x8bpYBn=#%%HWgd2{ojo>)JY z%>&nw5kuw}n8wBhfU(iv$9L6B=D3>Ax{E%ARC8&*F_amzFnHE;?b~k%FBL^o6~CN; zmBONW$SkdCYx7V#wdq9KzxHSv>DZA5T6d<#%Jpew84j4EXVU5}jKg;PBJJPzM0)U{ zx6=zRew7}3@~!mg7k^6cGc)t^tl+JEEkPfZc zn6|Fy=GtG$ny`|;&+OMtO8`t*WPqliC(F?+CbD(_M&_4gF#*O|r?9uMd9T$p1d3)h zB`x&21eJ*B_fbx>_h*(|I^QCLrjOVOT{(c49*^=+L#Um{=9iw!x_fS*x-yk{m}%ql zFuTZR?6X(~a~8&|B{%xLy>|{wF(>PP5Jkg3m!-%`ma@R(HfdSxMA;o^j4|{`oM0v; zASp5GcV0WD&G7yX_0l+9b47)6bJ0l9P$)z#NYM0|Ozz8lGV4?@~!wd!= znPY|mpD@=1mqT->BGichDByA!)*37_z97It-71@V(p~+31dFp-fz#XpE*xX0&O$vp zA%?guD=UT$m6`x7Mk#0IM!TNZV|a(GC4C>I%r-`2+!!BVbWVimgYsweW9-vQ(`?N> z>>!w)@4$DxlS%qkdMVAYUBcXoU3UYEs-aO(WLv!67P1!`mCC|gme()*w}?Uzk0Yy+Mf>{}&0Y+I40j1`uDoCjJ355WvHdyz#} z^kE8c>7h3f*~|6CB3b|pnLiA+0f#IBnebQPyjzFzxh1l(*(jzjtxG!_*5KK)Bc0!V z6r;cs>3~j^0|(OP{$puP zN$02nJ+_(vjg^=>V3?yBkI^Icq0#YGMP6yb-RO zgIEak-#}&tfI1GbCZzR?@>m8KOJrJ27;bnx*E|OV7(-ym;1W_qfKVYL#JL3Ewp|Ak zjm?hpFP08_=u@fUF@($I7;Dlxm|{-!8=J{wwg5KUskH2ZO|~27NC8AJ39zxTKj-?O zC)@vspjQ!kV;GYed&wf4OR>3rkjzDZF@6XzDkO)_n8D)&lm84brHOxiX9!Ktv~jja zG9D$siRL_!OKHWRXHgdW-(@gI$)+auU_y0(uorWf=RZV=EX>vb7}X07@xHIHJXCm` zlsrltoGdM{x#XlFR?M!j`;Hz73;B8$Q)7&sxFshW>&}A=02IS`s*l00Fh-etxAbLW z-WX$1wagXsFAiEd?8xJd)lA2B-Nh6(k_;_(u%o<%-6a#W4KyR0paUu&FPJFtUeC@& zZ;LukvRbmII>4NKFWenAJ2q<9@MAp*GSq}1%McBWGDeJWGe#9O6tnh z)R;5CG_v4JZ#C2T-vdkmG?`2ws5mzvpkz>)2rL<3{Mk6zkV$1HOy^!?>16BXTsHFp zSClf-jq~LG_|8&+OG_9m!YwelS}7Z4knz6D!A=y~a0_6fZkdaSjauh(Jer|Q1Q$W2 z_**{qGQc!KZIykLSxEMU3UIlK-S9PqLNAZ8VQlZFn(2K(CYQ_v7?lB>T`77pHt8?N zJj!K11ej25CbSF)I|4u<15EhI{2lW!NXImhNwm^*Z=)~L4%5&9O9!7Flvb_5;Z;jV zT1N~K!+f{HJl_x{(jmZqh>~OvufLnY)2{1FL5WPMm2MVkL8ecAJvU%{cWW7_-npnM zZCy}>nldi4ORLk~*40e&?@RaZJBV)B`E=jGGwIlllWE_E<~%OrcYkrG$`gx{*1nTlj3S@?OpKeh(UCy-e>9YNO0>!D(b?GQb?CJa&x! zO9q&n*;qoeKO?}zEQ|9tkOw3h*n>Gr8P2fZ6Eimxn*6Fb8XnE|)1(FRY2^*WpCN|RO+CUS11K_fb#aD{(h@~MG za{*`_KU)iU81`2Lp<+QUrt9r#grEY$8Jg?$4bg3;0C`WS=S1(#c#)FkuM$9fpg3c!970smR<& z)KibIRvv@TS*oh@O&tmc@;R6VI&c?c0=}2*wUSkO1&Gk}Dow@LvUut3Qb%t^8gPUD z8(iQ)on=?;fMqP6?94SsYoT1%j696B@Ep#&1WSxkST2eA|6B$uN?{Ddks;&|U^>|S zccCn;M^4D`8xjLTaT!5OOKwWYz$R*&HYuWYDsmu18`@Lt$b+0<1G;3MKF5QyxD!|4PnNllmzWkiru_Vm!~zQx9q~!?c#QqJL*^PE`q&xh<2? zhiRO|#uXAs0~-Qw+pjZoRv^>Qz@z7g6a1YwliA${5Z^I{b!rM5;mKq$lc~T=p%QZ) zo8{}$`nzvn(2_Z4;3@RWoKq24 z)C4Os3HvaVtL(Yp=VF-AL|>-VYx&{P9*tSeNqQ%zDQ`uVL(^V>35FNtv4Z7AQ=jK9 z1|+2;LzyNn4|W!_HUiB7g){BT06ZsTu8q&=kj(&y@my%8si}5=Ud+Ko`rS|>qhw}A zbA`Qxm|anPk{z|XZFfMHX0m9by@fFrL4hN{1F4m@WE0Z$M#vN_3)w#iy0Su#(Ik`# zT>Q-PSy4hO`ZPr|y>OEp_dVg{7AOn{%woul#ju(aULY|`5mf5a7*@<_sL;WCMUXL^A>Bkoz|rOcjJ;#-?E0S+0m)7N1cJoU)J%v7jiCq4C-P zO4g%LM%T|-4kL?!Oy*gf4;VtuV>P=wohg-kDW>F|tS@$Qky$u&$>(U9v5mi{HG?1{ z5Uc_aoymzl7C^HKP;8^QX+~H`&`^HUSEiK7SPHPM&@U07N#ZA(w@IiCLd;m7Hn#~(rXtG{^83n(<_fYlg{iri*xDrG}g5v?HWCS@5}q?58wPXz5e3c>80mhBzt)y zee~vA>4VqbNS~-l_AA6MpZQgKrb^aUD*!5!0>;^As@4XnfS)@X zRFam-*^vOFK;|GPq)N>o>f8(r-vOFPbhz&v)3(Np6 zplcUYgxYoAJ?t={a}M5JLCI}-s9>u*=AvWsK9{p}Gi;>68xsF~HZ3enO3u^)Jbvy@ zZ>waWnm`M~cdbywJ5h0NqU@<^a}%Y(27ty%b3v(=jHsTASm8)Rkg0{WBXdXXr+Nh= z^>Qgi9c80hCf%j{dfQ%!rHjk#oe~8Z#?LA;gbXnGC_Om_F#(%QRd%PkTDr25{ZN?W zvFe$HzF8sV@6>uMK+4Jh9;+C<>zslNdnr1m0Wd^6*^BZrmc(3y9M)5Q#5%qMo8zL0 zJg4t1%e^ZTW2nZQ{Y9K#St7t7XgUAy@PPR*(w3+EO{l0G_Q_D3H6$zJ^{>#YhV#u$ zlfsOl?hL!EnmMHvx^A+eaFV~7tR+hYsruk|9S)yltoC1mmQ2Pt!gbQ`b-;PxH5vM2 zY~ohi8{=;{rr@kgClmj&&U$ZDVg`E+&Y^W|WX5jC;|YLSJADNn^|fht&6@NiI$?i# z@2!;nU!?!|)0^pk{_zcFVZKj)`SR^_a^Idb*x8rXGAOyBe``8-?1A(#J(o}4 z|1iDt`pZo3KZg$4i}=I*Dt(C9<;Uoez5mQ}>DdeSr6*3DO3$7?pDt|Ll{VLRpn6eG zH2~#kdQXGMSB>6^79VBc0s2dN*7Q(vl}20yEI29h!9KKy=ebpsU(I0r4vQ)Mq8ye> zW0|p-kEr3Rtu**4l?_lPQ%!l~E(I^~hN1T&Re3$&vXR&Xz(`wml3y*d9Wcn8 zf7yj!jNl@e?3qhhjMzPAQXIX{Ud&#yiv38n6x3oU!8ZBH7D5_^xtC)8#2nMAfIo!AMJ1QEwjy3r+QO84eqfVKzn2!;3@ai|n;1+W;)~ z44N_SY91T7zm_a!Sm`n-^XsPhYQB=#8WkPfS(TmOj0ckZx8Z# znK3!6RS)wXb6B@lb=C_q1Jvba`(@Ax@EPyn6spYyow=C$k20efh`kzyK8IMWhiDKE z(q|H21{u^+nK{a5{*F$4CFjoU>tWwTY4SAyiYmxT^7qWAOi;Nj9q#K+`&V^fPrV{- zs%}iZ)W_S|<@L|51|$}uTSfyoJX)CcE;Zrxjd6HSPy6V@@UwbKDbB}8V-~~(nN`U6 zx7Z zElH@$>IpM2vVqG@{X&Mnlf|F_7=lKnEq?of%MpnceOf}D~g|iNf zwWu-F!xC$x_tMJsY8Dz2LIRA`a{6vEtop9y$ag%%cdQlo5RdOy5=!P3x5Ly90P29P zwu-E%eHz#PwQOW=#KY<4xl|~yWk&l;fLV9mOfEDSe;*>DTX2Cfl3Vbt6)_dTnaKJ7(kXj`Y?`?=sE*O?vaym(sg$ zyaaRXmGs*4&!o3scp-)@U&ng+@pC8BBgYS?m$6blw|Pg}+Sq~YQWdHfOz*4eOz&}s z>)-dJ|599|T&w!p=#&7)9*i1ZA)Q~6 zf*EI%l>jD&Eu&19>B6Psgp!$Hqx!MggjvOLSZIQVAfni&{h_^(sP-Xk;|z|p=$N~q z7Zc8y^m>lrjCp#+U4YDV0LK0cugUqCQdX6HXe^x>Im5|Wj>cyv04xPMuW%95a@PJw zJ3D71OGHcriT_`>{r!TjT2ja@v6uo>6f`W!wF@xXvI;J%I68k5GdL{9&fl2DsF`JR zvsL3P8hILM1-OtB>l+@2HU4-BgrevCvk^N;k8GTW_h{Femi#TR}q+>&`9zn1& zDA(+Ide{N=LTcz0U{EIrvoo_24B7_oMQY|=nwc89k(mrJ+%_<`470a|Y3<6Ybb8%T zdink%>38ouoj!i{VtVGxzI1S4RT`+Qz$~mhbxM{KxWllbNF6ahkML)*qq~~I^!3=AqS+ANv3jpVH z#O}95b2V$Jr^KfSX1F1i!Wk9AVM%R`Wsli|SrSwDMJddZn8THGe{vl|m&nO5Y&nbR z{Migy&V|;zfQ+t;jB6#|QKQT!vqN>!D4m(bI1eMh)I%$8r0k^;pa7%TsQ?q#lvW$g zhwzwgD9&r#;X81tvunw%*6gT@l4}$~6Di={?NJKKTHOGUjBTQ)>JEtFL0J z|CMJRL+}!3%Ts64p}}=&-O2_4W(Auj1}tH+4Py`DwPiITvovLqnUUqJ%*-ritOOW` zEmdzQ$pvL~Wy_u3m)TK6_|G8#tdz!;ThPg z#n^=In1h!)P*E-@%Bm|{E-R+_1(^U9n)-&fi~D4fp%ca|isdTHWQS#QSt<+4GN2Na zWqn$ljhP5AEc}$siebp2Y$c$C60^bY`F}Gbb}`5$hF51QnGB?9n(NdKi^v2Q-6lAlaZ~CvZh0yH`sap43u+ z1sI#|f=s5O3Lb(;WHu@$mj>+&{Z1L5B;$ zg;3gT3%jpQ()3l7e?rlfg)bC%%~-gwv}X=>7LU(BV8$YNWDxQ8{|;c{KC&5s$V{h~ z5}bgNvlgFkBDgsGI1yY5fRPAMfJqVT{K!B&4zkPAL&NE3rE*4bbsT}7Yz&ea45&i} z*f`VE%m39MD}v{MW!8`F^bq#2gEN*v*Deo$8C+0~Cq{L8Xxqm0%?l5w|IZ)ZP5<}r z-$?)Z?F;FjzIY)$adKPQH?%5k>1fDKhxoz%vYGTETulZl#6vPGbHo={;Kd!Q30TZ=Q3Nd zpJExph1rrleuqtpP*-bNO~bjZ@k$^hy8(eXyaV7!QV**LMB<^`BPXec#U`tDnBH!jLch@_BJ)Att)Fn zziibUz-1ol#54JR*~qM-1l2>9(sBc`GdE)&apyw%tMhPgTtI(eF+23Kv}JZ}8k^CO zhUc_02h*E2HjboU96FyKK6O4l|M(N>IWmyFyZ5BCWH;+OH>4e__N1NNhf{ye*0inX zXnOMeE9uSWK29IJ`e}OS)pwEc|00x?KY#a&pea9b>EU!g<*{=x(+&=;OKYoJd5z0( zR3$6-nt+xqz{JpYNw3iIdrb0|=D!NtY}PRQjV0UcEEVKbf5-%tgik#`GK*1$VUR)C ze1*J@n@`q(+=F&N+Yy8@H4#h1rFCo!H)2D+89ye?ytd4|HEn^CtZaWw?9XBr2Cy-T za+#S-K}|MmDZm91fF(5OyyK02cKwAyaY@_~;Yc%*A}hI>tVD_YLMGpc(pd~bT2ix| z#(*S15V~b0VDh$L0A{I2lIJ1vOhf>P6SOo9 zrT>QADxtHSGVact$i%uF1ry5#cHZ?zLtFb}7VC+Fdy(}hUjsABi^dX03*DfMnH158nF z&^1ti(LwNU1I;GbT%%+T5nK>!r(+>Kld=OLO345lNPm9+;q=zSN7JR<8v|fku(htg zbv}#EV(6=j$Y5p_<;K!vxYF}QO`mcLvk}U|Hz0s%G(nB6h1u1}_o_v60}Q)rly$4^ zi}5+Gr188=-+6Sls-X)vBQql-EaWxpd6;38rt7=xf5_(HqRw+J`fM06rvPgyH_@}K zOeg@mNXYss)zPC-8zc_?j>DWbq**{>&Vl(2qYa@$Lwaf34P+n_<{(10rUY1m%xV^G zqYEIhUn7|y_jW=$q%?%rE?tU z<*u}DaWCcC*0jEUD6MTBCR6E1T{S&vOagbA4@3T3gcxfm>W{2+)<5MkC))?N<@W&>ino5*0cVi>p$fGIp-oPB|=%>N6Jfvyaz z%-F@0e-W2~rI?YSH-Z9kC?cy$T%rwMrUmPI$v|TXU<4T#e}^!~waFIW3%l%I`Y|&v z3t|dRk$DsukhcYzEQXoIHtoZxITo&#_EC7=oc(w^hv0Img1^CI1g+3XE0yP@N1v2F zO`L?Xe43Kq8G12S)ar-MqU@}Ka~UD-sFB#+g&cgQ5QpE0>Z%Ujm74YXFz5{;8%jAA zErjD3=39lr@?|d=GKwq`iNuTSsLM_C%fp0faVhv{Kf<&>CiV5C5BVC{NDgz(Wv9hF zii4E)K|lL+3PxNBV8%%Td`7Zs z1{DCznF>HMLMdTl2rl}VkHPp_OKLyLMLa?sxgW661+){!UKjS#Yo@appefZmn=EK9 z^<@;8$B_O|k$LO#inMK6dD>Zyi(q?4dSTn9^!a^9(x0C>mwx};iS+GL`_rFaJ)1sw zcyD^^fy3#^LwnN3mj5qZfBj$Qb*=rv`FqYedl!?~;U-O!nAx(JSxZaI%*+gyEy+xY zW5*aXGh-OqCT$97Q`&ov_j}EI-LiL|=lx-PmMqJXEUh)KImWmk$4bLf5S&Kx;*29l zhLIVpn_L|pbSml$6`&<%k}3^=k$t~=MCq-uWHw_+G0d{~J$r>MJU`cDfW+m z#y9&pgt-`ID&|PADY>5r?euxPtQltO94dwEgB&3s(z82tLWlZxO&Bw zvs+ooC~XB}u9eV@1u)AQldXhyEPz?Z+w16JA^@6rzHSTrCktSdIg>~jnSSO; zIA6;NTgkElnH)4KKEMcE3SfMdaKS0$0#(3kt!`bojppasrutg6C5<-Q-elA5jrQ*N zkR6`J4!hU_u$8|gtfK0a9#c|dMJy|2VMyzV;dEM#tUCV1# zJ5%Q}z;ngly~^0Lh_2d=#(3TdT#~Q`k{DK=WWGO{4=}#Fx39MnK|MA@0V2bQ7q2^8n$s7bH>z_a1ANK6)J=c|O0nz0zC_)P5-jBotlW_jX7jR95V**z z$8$nPObL@pUPeAc%ePPwJIaq27D+%eQ?bv~$v9sz4)6*N=Q74S5){f&SgbR(`p!Pz z#TvtU!;7gB5R|*IfWZ+J1Tfs{8ksT6tyz{dj)n}-iRZ6JQGjL5qLNvroJH5AgZwTC1rq%fTLzb7%VR+q*4}ZMhuXY5lJkS zy`pT@$y72f)BmLnD1F7ZKgz~unTaEI!8LvSr z6}_{V9F2SuN&_tNWuTbBzC}ceG(badXEQd`7*b1O?a|!hQza&vSWU9s@Rs<1gxEQu z9g9Xuz5}f@3Je)h`udX`bQe#T##$P0X^HL*e>p0LG&}ipQc|(&`_1P2RlbRUMI{1? z;s>0F4i{a`(FHsjB}u#~8nlF*&WDPu52@|lhz!8XL8ns0_blMkNX(gI(h0f!iuNpG zhS7D24W{v7D&Io_BPnT6bnt6@xDHCO%qL~huN_MaUo)J~xfVv!8bECc#DT@I(AF}a zUjvC_Ex~rH=%`k*-&y%Ai++TjVf=dsEdTkch5g4X7Wp5L0|1bCZ2aZgoTcb!w=;p^ z$NxnDqqycYM3w^g>{t1@a0v_Yx(G4?a|NJiOr}moAX7xwT1c2&!`e7oUs!6J8meuw zro={T3vH~S*rwWRY^J-xwhpx0-t~j_-sF%C)s@qIWMW`hZY2@xtY{@f5fu@|8dKG; zPO_%3RO^fiT6q@#xz+?G}$j<6;>Tq=ERj%m|NB_O+b_#$!HAH zfyQIJMjN@9ImV|#4INpBPDWh^zYE7CbmJ~|e*8|;&?U(dC^o?DVQ6e3yh8L<8|qnh(i=b4KIQ5T~Tnf5P$i5!&$F50)KQ|Xg>KcwQ9lHUgw zvCAC8EEKOSb^idCDns~oNt8H2mdXT*eu)={C)vfk%)IE$Utze=tF0+l|T1bWGmQOQ+6d!Q#{I&Tl8v6yJf8)KHt z*~*BLti8>KXs_0zhj9_lfQ*1fH3u;2Oscq1%W}Sg1yD8F1j;ax51B0AgR*3IHZorR zh{jU_m?Cr%r98?aM!{e%fzo-5A@mA)jybK3B8X+@Px+mKmXD4+0DH;Bv$~W_#z=}p zWwxxPxdWY$FIXAEMhAcrYKG#AW!oaFl{!XGbsXf4JQ4lTls}HsIL}kfOXH(JGS7I^ zj}g$gOR1dN4{2BAoM<^ksj;Dy zDr;L;=#W!xd1jNGyXGTO&vGG}&dJw|5&n0(k|&SHkY6QDRy36<|@ zCe2X>FW__qGx2tSlD_>vs+-M81*SO1>WddyOYwLRg zY@`Em?gEY=;@Q%u93zhBqYDmGccjaY#-}p&q-$}>gnYb~+4?^9c?BXmT=J!v(m?~D zIkBYdL!{B+aMJ(5i9Y$-z6do7eONr|_Bckr;e=SNLH(Ys}rja0{$mZb{7SBk9)GJ&$WL!pv~MN#ihyCIvF#RLoCcqyaG6 zwdm{XGF1vaT|ZBa$Wj2g6e5~6BGV2=sk7R{h-NN;@fH07n0(SOi(aRT`30|oRWUZ4 zU0_o+RW?;$Z4(V;08FWkHC5VVYmJRJ*Vx9+CbCz$ZF66{ZSL=|1Jjc>1VeGGqQZuX z=rj^ittt|xVse%>C1hD`G>i8*p0|m))|$aCCau`&(W?wqw4&_aVDGQrWXHGdu%laM z?Su8}?a1^d+ul216I_r6%9^dafKhH%g9Dke$Z`uV&toT4;3{WnklkOl6)jDNfWYg3 z4yKfjN(?f+7OR+iG{AOsF&#>+^}Co*479K9@v?!qI6!w7$cPRvUpzfGT@?4f0gRpx z8o%m!=m17z|B%Gu-vLG*i~<E8LR|oSnzzAe~c9`EmXyoN8lx*pkm~6u^(R_k|Z(HL)20)W0XGppoD9BRoOKd5Z0hKep#5TqskvV{I2aINz07otP z67?&|altye7Is0^GH&wdH>B*A9lUOkEV@LIXD8! znicU@u_T(GV~n+}Nw;mxr!V(!u$wGVFANUYx&A&ogWlj!ONVXB=j$>H?~kfrBnMb6 zN_C>Rk~hNn8Pjb!5hjaV4j@rez4SwmP$4@Rbt|Ho3+%N6agGRL<2Vh?6Vps7%*8~L z_C=IumD9lpWaN7m0w&!Ay+y0HXK{NH84)TukqVIC5oA}V3b5nxZ;(3d#nf^OZlzR) zJkp$}nmQ;zQR7@6@LZ4@-;+e5&NToR0d?Eb_=tv`KxZY-H8JNhIIK1Llh#Ti-b`+( zDRep_x5UF5Qx_u|wVng1uL2}k6y-qUOy+i4lERHX1F$dR&?|_y>{P7r15s9%5oxuV zF(f;3n8!k@U}TbokTz!}T9u`5SqfcDJfABHw}2=-%whnUIR1aKkBMNHrO{Y8-Hb(q07)!VEQEZ48buG3t7KF14CD=M9WNtjB)4+WMmhkt|pfye+m1y;L89F zzw@r-fQ^;{ELG(;TE`>cB4AnHR&S$pHY4?zR%&!c7rX(m**ef^TYEa}{jni?e|(hv zNTUr@SMjm+)>BbwO?d@YoyDR*r@-p-N~|`g$ZGS7t+T4$rg{c#=ftEP-?`O}@4$C# z%LY5Wdz$HpjOFSa$g~HWNUJQelm*GeKF7Pq)I~{_zKF-SV=ZS%GGG&H zMZ5;YcGGLQn*XO4R_GzUI3lf#biNqSEubedO!U**U^MV zu`-Hvdu6P0ynV80%D%g_Hy(QuCxVNKv@evHV}1wILwDkj#GVEify`XNGV7uGLM4D1 z1cMr9g{ zwEztDEG+AnLIM!&SBv#!jHU=>Qrti;&I83b8CP)26pO12L1E1*x+Xfcd~PHe#ET}+uMs8CKzv6qp{uDZp!13CmS>RgKaNMvsOT9i8fu24NW;Bf(< z3rOMiFFlRZ)bO@IMhCqQFwVN47wr?bWY3mgV=a|NT)BXYtbDYrmjKi`4Dh)HFakDp z6&jBT5XB@^Wy5+az@@~@ zn`hC)>Mni$|D^+=V}LTA31u_+?N=N?w4wRw&WN|xtQf|YF^qOHtU3^GUA5WP)0k@= zO*xj6w#s5)$s}__OooM%#)u^DwdcuAdKLQePXVhRIMHq}9b}8d3)U%gtP_A>~*cDY>>BPq0EL z#ma|qL3ch~neIhk;;8ZxUxwVi1wvl8&G{zniwFZeUj!^AT!c!Y_mpxkBlJ1^vX-3^n=4Z|FPEr7q15CG+c#aiEy9 zY5Jj{$4?YoviP%iyZ@Y5rDbUJ8Y+#J8eI?M1aA<3E z#iPbn>LOA^WtN^sEGOR9?n2-oAaY|e$K3KXE528hA1`IMr5JLWC@pZNT$tUJeK(~JHr*RHj-a%(~Yf+#~N(7uG)qhYHYNzflj88 zPNs!XSsM<1wXE zj>c;1ZmhSihC1tlOwhyIy#UxCpdvsT?r5{tstRi?Ew_eJ_AQ0gRvIX`oWw%Qhz?ph zAd?!AWl6*$$FE7WxRvpixF(6$QIaJ=*AK3ac3pmfUe_zv;ONY2oXcwiudgOuJ{1JW zG(lRk%0>A4;gzTkB%e!%d#-6*CI(rkL;&!;`Q|9>?9iSFE77MBBkhSR(Y^3?4ceCm zE)Y#`zlt{KHRnI3a#=7a_uB!MZk}rnTmTw9K3zVLsACahOr^Ky-p_MX0HZv6$0U$Zu;duU=y(#R{`v=LzqMw`;g*ITf+^`7SsMV?L>e zS?1>GMvC60_*aah7>|{4n-}NZbsbbS9Y`&Y8r{{oT5R>?*w@3lY71kO1`(lpITU1o zqyV*i5hJub9&>o2RYxwfib%jN8lnL6!(M=+iP1)1emqXC>4?QLY;$uV!o@tBZZ5FV znk<`YE4G>5N*iuRQ&N*^&E<*KUXg5VrO6yR309s2C?pWwx(;g%bw2AjydxrsuSK(i z)*u%RN;VYZw1sOe1ua4L(n!mL=9#x3%-tr-7UKvDL7?~@{(lez${{mU)Bej5xt7jN zzE3i-tX&$*m@bZyU?aIR{N$hj={d`*d!ZxdhM!$O($W`8J))Lpsmb@>sgo*k4(9&MMnb z%MPq8+Qw@VZKRstdrP{tl!RGpMHGi!q?H8ea&r--rnC3UBn>hiac|TDi(ka(Y#Adi zp8E;EL{Q1@B^H24MqiUEA1lTv8l?#sWgjCK1N{vA&Q5zE7jzYh=~Yy(DjCg!Bw=OYDESpq<^Tr9lcJon$sZ}8lNQhjaMT@YU#7_G3<0aag>q(>5J&PtHbRbs z!>BnRg2Wr_3^|-TQNs_HRoHlaJ>5wo%X~VR=4KlLa7G)OZK8$F1)v#iY~pP?a=>P$ ztJ9|2+Mp4)xlU&s{nb=YyNz}7b{C-3*I}bP4g*L7u+#bhtls)M8)#sh*2FTO&o|i7 zNw?E#eE?WPd6m_bR#|mnrIiNDtOS6`hz-&OW;k$3iAZym9!<9&lV)j=NtP9vXxWh% zT*fC^ZE}*;#4tA2>y1cqxshwK;nHEbSo)+LnRm(wS{;l+>tulG*oy#&v{8C=owPH? zl*uJxTmD|L1*ME|D^TrM(g9Ur4^vImV0PK?CeF!k0VIG+J6&%F9%StT6{?MxFS&KgjMyRxN(%ef=!_Rc_JG->HL9xm^t90>CKkWu%VxgTLk! z{UM+ki)O491yO(+iNwhmuu=K!GvAcbk6!kJ%)|oooRzgpc>*rVc$oyW1TY?mcpvAN zFZ2}1=xu?LU;4AgW**3pXsPACSW^-KI)FjlS&v6e4T?_}^2Hd*r8M@vbyU z`D8h-EdI_VR??=|u%uTPQHAECiVmcbk(G8Cn*SGai!LB(&rxAHJX{_LBOBRWxEF~i zyDPaZBJL|7ov)bgqhtl31mU2Jxpvt~#&A?Qob9G~4ot=rrGQ6ECS#>|4vS=VCrNZV zwhZ84w$A@46X48bOd-R;`~|BRTR`dNF%RudE?^;nqXcZl zEa)`{F9tk{01q+HN_Ei70T~gSD5YYg>3uHq91zk%URs25x)*gZ4FJtVVxAo=Zv#+z z>;^`IcZR3jqsC<)KnLBLUS>NGzD>uM;&@tULn{K-xgfzBUtebpG6x{~By z%)_OC?}Zn1HU@$DEJ0gx7%8T3aY^H#2_g!tOtkggc`U4R*&h_!-jQNlc?0B&#M5bV z*cQP0i=*q|MUalAc)}taklC@MVV{u>BS@V|!s{^PaL5kQ(I>M%(w-)h|BC>_IZ?YP z0>*i6 zQK4Mtb88kMA`|xkjWh$iX0%TVu(y;=i~uGNajtImg&elpGkWH+bTM4ow5utiLvG6m zvRp59-HSSx5dc8oGFV49(g=WH$+Et!gARsKSZ9~3@m4w>0Zezdt?%ft$@W&;&;_Wp zHQNYdwXt@I^@DKFRB^Mlq~k`DzMwpwD06>-6I z@$Gajy6ifq0?~L1yEG^{8`{q!Z@>>=U5fLdvz=I zfJy`4()cT)kbm{EwUY(Yi8V|&7mpso#w4Cp$I=}diD|?&$YNh?un{_wA#^TJm-11@ zRuL<#(GfcmJ&vyiP+)DT<~o%SphyY-bjeuKOR)56E@3jHZyAdQBq$$b{E?ZT)#3w; z?^)()R%Djx(Tpb;lc_{E_7?WA!RU-!$l3n_7@1iDdUQa}Js?C^enO}A+?73mp%aqO zQacspy$DPkxKMQ*;?+x`6QfiWW6Nn{02HyiwA*l&D75DCFH?DAF?I`#!=zlVaH@1# zbVgTYsP2nUw96MuOUMADvP`Tl(plD~&^^f+IT>nmDn^P~EbjBxtgyT=z-S$u{wM${ zmhn*n+K}Y6FjiK>KA{UKim{10K%pp-?jqWz`-`lvIi1@Q%q$+K#u*j$7m}!#W1YOO zr2*y(qmT@iS0yQo;sB${IL1_K`9H0t!ilE_&-c?%?bT)vhk@k-b%VTjqVTtRRa zpd-m(VV?d5dy|Dx%)6m*E{Xyu>7LM<(#)+|J@Q zd$DuW_7*nMy%gK_j5^oB2w(;YXzE*#WF2oo5Mbe3&km-F9fq6_M7wq_$bgH=qX5I6 z@c~A2XxX}l@^sWyNO+mT`xE$>cvl?8e6B>mMR z`m^*uxv&cZ0818?3ppd39a}n{ZOO0@^*l&b5^5YQxM;c!2o&7~RcPMO@RtXu%(Z(OAe%qGT!0V_t7^#*koHLgic-nIbuqt_iov${O3s4n@0_A(&)i zElsY28Eyb502tM11Ax*DkN`BJO)YdR-2h1k882PzRCpgiG6vv`w>H~!PnS($sjtuB z158&lLp8M9l=y93r9o@yHBzS$1;>H4wQ1a zE0?{@nI%_sx)HfM_zn-U-_IudCII2W6Xbe-m(QPz0iIGWFBPw2W=Ypl$5^c4EuxSC znU=R+v^L)Ed>bV`-AgZBOCN5@0u--f@oG@%jf}mNLGO|r6}W{`-!Bhb=nAy_X7{1; z%pg6$k#CoO=<99S?5n0&#Jj>+Qso1T?+NC#D1giuos4SKjmo@wdUWLjh(7oKt|#A% z`+np_CQS?AvH>xtsK)}Cxya^F!ln~ghQ78RLgw#v1U}A9*#QhY7zOl{!G5V;%F>Ln zK;23h8tf}XQLd$fDCNa2O0Y&`>P)n2siI4%>g2V{EPc&V z_n3vBR*9I?r19r5n)poNu-IH5o?`GB7_V_BB z3Fig6Altg$0a)Lmi(%1U1B5g z=5iL!u<3d;*%74Dl_Xe4HX{>uXaziHgAg||&^e{jb;*Sw$fZS<&Gr zbr#=`Dgd|y02hz;>_rM>uusxKFKV+!e(F||5mLr8(uzY!DQ22Pr>Zm@h%>Oqcg4;~ zg3MGx!<0;!;u0zW7Ru{lWHm!K1`x^8KOWV-j51}I8AD`q6bYO0jL@>wHL_32f&QPt z7*Np%iF7eZ@_qy46|^TGGFipwIa9oVPFW=fZN|{@?sIlB{JsNRYPtyr+W}2@ghO6? zmtjU(TJle_BN=5`?=Si{cC-RQ_52xtY1X*R>tZI`0Vn+(<##ZnbTA`4_eSVghMJmf zP+bc(#!hg&r3)5iH-Oa1-?!7@w9zfKSYI_?yFnwjUOLPH*lI(z1t#QE=WD`{dwz(c)N{HpchX|70tIisAF%o_2G9+rT+q=;5 z7DD7GeEoTT9z-y__ADdYXBm+_>#}|{8uRp7>}h;!7%p68TqY`5@K^DisHJn!SgZxl zKqXanvuo+0W9eIpt&2(){FKXh!DCF_%D6xT`tB4R$$G-QT#=2U+OYNoG$AkA^tzXL zeZK78)}ylQMeFqsbEhf6{n&+zDOik><^BvB6xDj?RP1?=dE+imZ0Q~Ho_Nx+!&vD1 zH3U;kY%!H~FK!#rDu2O7vIN%PC-5YXk^GLew91qy`iJ)zp$+zk8p!Ii7%QrZ*;ADO*0SHv7r61kwL;&?lW!#tXi!@5^~W;qDHG7)(N0e~PD69rg*7bZi>$cwgKc3Z>Mu<@!A z8Q;*Ebmwp|rP-#zeCuss*OjxJg>f=_l5opS;P6NS0OQ%&5MorsizA=$RsjOG92TuX zVg2b=6%R4MZ{Is;fFSk>Fu$_QZ8wWxdXZT!U?^Xf$hR5HtS*8U;0%qTv$_As%C zLFEgm-+{izOf)#@jOmgQai(wxrt*JESF{C|DPof4(gABUt8x(yJU8XqkPRs!8|8b! z@(3F#t+gF}gNPnA9;>7KXvM0f$}R3E*q@BEh#za#GM^5F?q;HmMSoYf846w<=-65AfS}uf)CszJEe{f&O-{JwkglaUxANq}Y?pqYpcfr|qe>fZoHpyGqe zcy!24Cgk?4?@<;q>eQaeQ`i->-)cIH8UUtg^&)Foy}+8#0H~wU61@ZhKmh{BAV2JE z9(8zU@xEd@g91Lb78X_+hHK49%h_eDw#Mvb93+_K6^GkIXEyl|1-4+toq;4|0hO{;iW%W)giy!}v_zsw z7VWMZVMOIvZ0c4R=Xtv(K!A^Z`fV|>q}fpkI0^(VbOS2sdBoE4j69hU12oRZEhHrM zKaU&(e2@{pUx2LxLOYy1B5}ncYg?0Sy-_JPo|0wfdV1`K6G!cblONdKjRW>zcGw;v zw)|+*2D>*tY3Evd>|jxY?MNvlE){E#xC&;%S)`6eS@YZLtch-{n!`sFab@hEp3^xEO3X!F3{#Eh(8&STq0dVPt ze1J(|r=X-z7Y#1^9xf*?4+gE4Kt`3%Xx2S{=(00kTTX|@?r&AB4Wm8Tfj(thPrm~b zfyxNXuZdO*#3V~b!SZtc_b(k^PG-A=-Kmg-cSeGi;WKM>_>seD3=cr5<>f%KB9m{H8Rl@IA zi~KxxTS}{Z5)Hv~DU^EZGKILHNKYf$v#en%_*`XlI*OUD2fSLjT(vX#=-|@Y4vDA} zOBhj(rN&oin7WveH2@1CTNA74Ob{VT(JuRx4KTE(NO|1I1!)>8v4CZU?%)Z)V6Vb~ zuG$>`hHXuJ!?tj-(%YNk-s0l;Hua9p@;JkvXXD>;Kr|Htz{olV0C=*5e?m+4buI!I zC!k~;r}BYD-HhkF?6J|b&{sV@Vsj%i`HNA0){MV3JOPpNUYx5m2ZVMpMFc8UHHj%cmc(8h)2BjnzK4tx8Mz1 zLKa3iK)#HTLlC-dRce^E1tM*Ly~s>WhOMuNx3Q9F`(UKPw)Yp<_Q^_Xtd4fo+mdRv zFt_T97-t1w6$X|us)V^i+nq~%Y~FHim&*wMTKYU>4l-R};bbhptBkLg%LONky-W^W zsN3H-n^xyAURl`^tY6=L;LL|5ShjZa7YcYw(e)98PdN1+yz zO95(f3Q%yGI*-_&!Sn(cRN9{i3=#w++<-+R))-CMIQm#E@?Fujs1guZs)G^8s2frz z6p1}d6#iq;Kk}6Paj5l^G1nA9K#V$dUK*FFtMsF&1u$tm|1tp>k4d)NfsAv_=J%Te zxCD9rDJ~9$3!$lpr!gigwjCXPwwaD(TX&Cb>Flr>Mqx96$~1eD?L#AUkwXYA z`*|Jrxh}-*WLoH8D821=HFPT~2P)J=6F|afY?2OUqF&Ty?`?sS{$3wD!mekS?nR}s z+YDcS2YE5l*z8?DY`e$0?fuCf+cVm3``35ao)Ii(1|Y8V(9N{g*{nLO%2G%h({{a7)=X9Dz+8#=ec{VOo)Jw9(OsQKp5zz(z}Z?H_c= zYQ(jX1AHTkZRzU}P;HC|Rpbk{DfSiHobVdp@(Wj65`M+&`Yqd< z@Q!WbZC8nOHt~GUSg+$)Pd6kWm;)L&GE=AG8D~22CHo#{a_PzwWO|-s-iXbO*${I& ztqtGnoX;4Y%iP{bZv!Cy$H`s52{T274vpR1$Fk4afaQ$Fh0g@I`4=)ma?ZX>P{*P% z(QZZbVC_=M_=Y-iSJ{pc##x)PY}dAQ+qW;v_8-Wy0|x?jU|+xv?$5LLcLeO+&6)Pz z<{UWk5!_lCfAk?1tb!s7n3R@=SpXo3j(ywW6PMZ=7(vU)u#Q-<(AKfHi2xL07{7&M zr0fWxN#oD!KA+LCeKgB2WFIkvyQ*d{6gLps*U`ULAL4729ka7$y1mBTDJ$P+o8MQA3>8+DyI%h>Zk zA}L)32ori#$w;<@k!m3e_aZtYmG(gLx+~DQj-Qz`!h}Vog>Jqm?k{qn5Sv?qFIPSp z^|_3rau_$|bLcBBI8T0F?3a|;uJUQp>I$@T%z;Uy(#Xs!&s{(QP~XdB5E7Qt6y4cpZY-jh+G|gBcs%??cXqI?@tT?EJOC*C_ppO<-le4P={^lf>6-fU>g|U4ND-3n?Oep z$L7^xRfOol^*@KH98t!qumR@5Zc2`M+$HN831NBhAt;YV>7y(m{)8z_7_Yfe(7p9 zmJu4GG=a->+%Etax*LLvJ9Sg=3;*7 zDRyLgp6%Y8Y+Gid8Eqxm`YD`R$JW{KV3ZB_#v`EO@M6?a8CdP~1bOkxECo7o3bXhG z#%^h_KjNVL#?oYlH?d4cRrwr!uqa-@ca8ReB~N~Ap?VTops*t^*;6!NRS}1Sq6&04x-Q6dDsrc0!Or{TD4^VX z?K(8t6G#d)D-mE;FM%e_|F@kH*~Zi&`=F%J&enF>m4GIatSJvI^8SuRE#h+L-&5R{2W3#J94nqJiLsN zmBtowyq4foD zjYYl!*knJGLI7Ga&c1P^WNJjFAhHNtl_P(O3o~A1YY86C`3M%|onPxMZyrps!M&LOolfpg&MZ@D#lvBq6O-4oAuRovc!iC*3$24xEbm( zTC5SCf8)F@@R?8nD5|NZ4%+}2d4KK(PynWePV293vEE9?as2%(0^v<8`M2~B(!Go_ z78|j>*wVZ^+RtMTXHA;}ml>>VrsOOD^KAforM@yEm@_jiAibG{m*m+fginzL3e{8U zt!$5E7Ao?Jgt{5*$y@;{DpAXQdb#$HzBPVk*E^z zXoRlZ6atb)g^ewIgUJBkgB_4Wn2lW4TDTl_@V@p1FIeYd@?N-9`Ko?BDy~=|T`u5D zF2@2M7*`tr1-E1mjm|biGEU>qZa2fOWd>`0?PE4-`On8{l%|FJ(;y@u(#PxX#RBuZ z!RTsOv^y}6dY=PdHH?tcf7>|*h#sx)CshAVXZ8WcjlLX3*;DX4r)Mb1KEQZPImT%& zYz(pj|IcTtI9v+RnUpeqQdc0$7-?e4X#L8#dA75d-Q1cEMKp!kIa-6VWw5-sX=if_ z%>qbh-O8X2CoX3OjqoiU5oCaIOAsrRG?*R|9%d01l+6nvgC(}Sw%iMYl)5}9mN|^J zq$^41782k9%;sYY@Z>7u<4P7{p+Y7^6;$CWUOW{ns%4e092o(C%rA@C7Zk`PnZruA zKACaOnPajLl*gD#@x^jum6Nk)y!oWcWS;5h*q-J`pIe5Peol?wv8em_cYslAE>~z# zfE8Ni)bPrw2my=(nK^)wTAk4kH=}%R?1k)(iWvVCFQQ{YnOw%|Wcj-RDJps|Ge%RlD7&U`$p7z+fSBAs>xQRe z=#X}u9zPdP0 zd?>*MI3E{av7d*%evnKSWz_sTz^H>!<-w9u$z#teZnCnlaiHQQAxilz*XUGsC`quq zk{OXH!uW}{B_yU)<_JtLE#vhlk)_0!E}#ssNv4vZ9xGltmeHFWn3w#=&q=X-nd}%` zm+4xRYPsSkjLnoc!>BbAz;)UiZp;Fg1a=8Y+?tcQ1f}x)%wn%7fXU^#QnVD%;8LRO zlsqnDB8bQ$sQ48|+4#{lE=zSul#Q!$tT8N~D!>ju-|E*ETE(hdE93onD>Ezyi~NE} zB8oH7tmN0ByvLNXs>3>Jx~!AupsKsR*ZQE#4>rR}YZF^+M(tvTcmzc8;-wnV_2)?qf98XS-pMZO18KQ)j(x z#;#^#TODMOa3CfZoekZMfJxnq$^#m& zs}azMHtcm&o`BO++j}*MgR)Dage0I{%LYbg?rZY36&|LNiKR;HGg-n2SY&uP$~a6V zZI3>eW4h5?sGcbX9WxOS6)+z2mS&3W^+se>%;uH5(ijttqbiE$FqmR%_$97lCLXrP zQebYSK@7;C3d3QO;V4{;+BSbRMtgX96=Rtq3T_!U4QW0~8FfiuD5|bZEu|At&{;mC z8^!zPVG)xhtqgz8WdUC-!%F^*m|JCZFG`D)D}Z)HE@%uuklCh2PO|b>SD_t;4sng3 zO6YDJz_6f}ZGRcJLNP_E`FoWz9#m2QI~6dka2cOVw`uKa1Te0&ccJ_|95?0)l>-+J zN|znMf>;4a`m^*VIzU~LC;wI;lh5}nc9y8Jxd4m~W)T!ry6G2bR0&g01cc@lG3Z~4 z8HKgkg_?G|)6{PtwGY@`ZkE?d>g{%Ut6c+NE(GiCVosBtPOrB^v8A>zl6iYr&?c9p zSPyjP_Jwg+&ft9pV2eeUAF;|Ba&a{%inZc2c4^RpOOp6GBy+GW|2c;Z0<`6@wN`NG zGS13h0U3Z7oc19ltLPYUOHkNbIX7u_hx&PIFCrnJLa+k-j>LA7ADE&GoKplp8-auX zMvlg^7Sh;CQ4Pvyk>z>?Gx2H;g$nIXH0A){WgDZLr}ka4pwWn|0Op&jSO7Dhi@@`I z?&rBUJWu!f96(J@O&%;Rm#WFaTuc5rn;MqCxs+VM^93>--1@Wc`s`=8yO?Cek?HJF z(&$+^O~mX77rylj_1Q-0Ba2t z*$76eVF2fH0C5>~=5_oZ6L~$P;j5Oxb5;5rjm88pu6SP(Ki3Ro0oio@IgE(Zy|{wN zkxPoH0HzfGx$-x|tZ7w>>tL#urqRWu;(U?Mr7VZb4Dk@F%Tf9lTWu67`=lB=*lrA4 zyRE;DOqZr1>uMUrZ>+~^aF8g?t+BE^vRg`9t+TGr23m$}xOD{km?6jk!!Xi@7^yK< z18CMmIN87`SHu8mZNwhyW63WeW=1oJd^9lQOI-F^daNl%*pb$oK{9Q9wo^dWm!} zaa=@VAYDXbAQ}TZFBWlYJik+oI|ckox^(8Xm}3^AjVXH_%@h>+8bC#!V=8A416{fK zofoWa!93DEpQoNBz4BRWU-ld+pYy2~vEWB51K>DSKkVCXTu^$jqEdA+23B5-s*7{7 zmx)miZuMQ9oz5A6Zbw?0VJZ1h|4TD7wCn{N=JSpaMmEYsK>8XT+-|P}$jB03 z=+99v%>j%?XzF5~9-BE$i@F-R4Y#Ow8XU+0(%;ZwIL|O1)p00|(&=wl-n-qA+aD>N z641i9(gzrUi#jiX%kUa3W;705#qLQuAQzvkE=}1szp`giIoxtM*owG4=W}3aR8tBK zP=|;T7@cTR0c4Dy{6kg;inG>NbTLoz3IIeUAW?pH8QPN4<(Mo|CHQYi45p=A2`YG3 zjIm^QFEQf(t@L*)_ccO}#)^TJgMdn-FqPxMtF$BWL(oFjH$`Y5T&{~e)SPgT11(e~ zyier;3jRghx>a&y6%ff8TIQYVKJ7zL__$7ozf%Vz28$j=lT{{6 z9$k}4-2FU=3Ub>O3o45zuK-;dlLAJPrBJ6uwvaAHKOg-pyVfP!fx=q5f`b2ERhNBI z(_{Dbc6kTj(r&lQy6h_5%kAPWyBuh?OIb~JEUD6tCb1idBAs%4&rddOnA=Y-vgX0#&g(9y%DG0p_w| z__M1}W{g74G#Z;@jnTanVgy+NWmpS-H)lr>>e4SMDehGok4P9P>y;dUQQ8;hG9V2M z<1EeMUFq7yqA5A#$)>biMkxexGWx<7j-7`6^mwxpTuDmjVMy?1930D zK&~T>N3lCZ6!iWh%ngyCa`$;`o1IM});t;alsh z4j1mmby-9|q`QR3rucko##X33lN}78QJ-FbsVAaF%rJM4uD1iTo9+Egv$kz|!gg(+ zu`L@nS|3XMma0~K#YU_kwG?tsJF37wsb*QP)YQh@zN54@z7{N8D9q( z!=;PzJ6*%`Y#k%bsL=jQ7Z)w}i@6+>!YGu`vg%C%%zXUKp2L~_d4kU711|GiwZ2X9 z=XOS49m~9G2N1f5Lhf4mBEDj1V;B<;@U{+Il_<=E0ETult~i7Tx#bV?eo>soKI;ov z%IM>UV4sb!!|?x&1f5>V(jQYw%fu>-RrDW>x^f>lU zk~|$~gvtY%Ctp)vSKW+m>SC8U3UdgE{2U#Z%E_%%>TzYrWYHbwK(5GR7ZpG}mcfX! z1od@OY?4g}i|j;gn_XcXc88hxBbKmt*vH%|YNT^%u$x6Kb}hfrZWp!Nm0*Ki$!WB6 z!5TYT&}avOm9~xX+Guz>F9iI|7Gj_&yMFW%<%|~cVFw0zVHPc8)VQ2{5s41D)z8H^ z^L=Pssmal)1s7 zt{sb`hjPfP`}5KXJ)=U6FPv44Z~gDU!t*-Q!e22D>SQ!B3nFY3=m=cI91~z@VLxYb z7>dYs2A^_jren&MMUh0O(91Qa&n0**Pb@UL3TY!mUG-w1`F>yuy4)E4y}FWkK3@Xg zZw&wEWcGYXbkq_2{@2mfuHyf*k`ZAHpuCRf+e!|v1c)qE+3{8uL=) zLUpIh=|-0)qU*xuenAYnBs!Sz4C~3MhIv(EgT>W$Wc`et+wrcQ-}%1XICPv~F+igV zW)}>xU1Jlre`cc{+q2!S9y?%XkGyBs&mOf4$M)O3%jfOn2m9>WsZ)0R{r!x|8j&50 zSQ8_!enw!Wfnw{ZYe(?RIIMfZhT2CFMi1bwF$S0bFim~zUs`e9Xtd7CHY|NGzAUT5 zJ_dC^M3p9706JiZbs_*&4MJ-!OdyDlPNk)w&>D#fZ_H)9M+ego%)su4QEq7-)a4?p zj*djn=4In3nKgAj6ng+B;d#Wrj2|QDUIa308Fj9MfT0q=hykcknJyx_=oF#sFMk7o zdFusCb6?=~G7pFLc{sFt0Mqm~oeKcdfwfQ<{$s9Vp#&^m{P7D;bSZFgbY*A%^27?p z)5`c6D!kvn`Rn#ijnW(pW%Lc$iwTTg#R}c$ejtOK0CJtCa zwHd(L#Ik=Dz?x?4HVvT6U}-Z=0GdF|ks0WIo)MVHeYldtt{kCUB|8CkFmvnHjzd+! z-zk$tA6LVH=$GihqBoaAZB~ggENlGIWq^w7S^yIcDg|??O8jEs?Q2CmCY6^|snXlB zr4g`*;Uz#RH?DDJoZhnDF9C)+5F1-EX}6H)z}9|6OfT0pgtA+-a8*F|V|=j}!M=!L-L+;JK zgR|TS{7f5-OkMuWQ>-ung#Jw`5yzQ;NGgDmi}OMNvVh{Eb6;L;na}ZkzKC7Xd@l|< z=meDPJ~)`t02Fzo#jq2Jf+&!+YMDji+#83*Qp7u?Q=k>|o>^pvVH8BQhbxWTDr}!*wDDDth6nBu3Kd*x*DmGD>6IS!M&3P?Cox?1NeI zgAVMnKYe!7zW?gJ{qge$_QBRo)>2ww?bY>kA?*Oi`*!X0hxXoJNyAaK#hOaLRYhQ^z6Th8MWP=ZZNIm`X(g?N!I!iQ|3YQ6)PCOVo{I+~6} z^PnTY$k^)z#$Zo6mVuS?Z3K`}jd9?Q114H{tMv9Lw|`f%PzjBf)Oon>gK?Kjft)KX z>b+&U*KN=VXgLo9)9+y9yzK01oSVQ)fXsX+_8g|e7~$*mGQJbwDYHe(eeGNP&mq9l z7;A!vWPNUL2jg`%>S9zL*sy!icuZ~ria-u^ECQNYMrP_@HuEuF(d|&1*xzhI$-fcd zrz~bv&!}S&xadY-2$M$6$r>*e(#i{DWECUB%L>_Hv;40Tl{r-MFH=cBQ^|tAiV;gC zH{w!m;{ujKZoWFiRJs8>b{9_wF}%D2Jh&0NkxS@pfr7p#$L>-L00&u_6zH1c^QfBZ zVB{Vv4N0hcBTg4_%;-#D;sJ_xjK~#NBGLFQ_h-@`hS%VXAG^5QZ zoOI(DS48vTZNLMsxh%rEYRC(!Si?vs($4N}vC9X$?8fnayZm8~T{zTbM|aiP!Cf_W zcyEIpKZO0tSi1G}#8^)sV&XQ!>e_HFC=a*1>{S+vV{W9xq)ZExf1>2dBv?^N?5E@{ zmd>9=+Yiu*<}6;vPAwW@Of;;j6ny*?*cERLEa|7)$L;#jQ})H}Yj*4Ge*65v5&O%x zm+h;MPujknqfpMXEH4c$TCmtk*z*nd4%(%&r)=-LvvzpjtUbJW%pP4mY+v3vZr?mO zW52zB+Wz&MduG1}WWN2F$Is1v`-R!>er^Bw@(a6n=9GPQ?V26lzTLKsj@gd!_2^z? zpg9bUdC2<9`!TKTv^@5M1#v_&le}8S_gNOG#{9C{stL@i&97nnR%@LVP1cDqW=k;N zs?svCeoC`y(q3y)GpvqC@urM)Ys)4|qY%OZk>hgYNYu{K9N8U$Dlvy)MRMhRw%@pB)Rj ztsa<@{rKAr>Tq8*pF>;V@`6p$!DvbE07j40=vul9Y7C*}I2VXQ1##sn4 zrHgUJuEZ-?`rkq>5fW?253#(5t)}#LH-uJpjFkXDJ0~x*t=M1d85=!QcGJzDG zG*>!}5WwUCTqZi16xxzS1BQcG}9&#gmT-9%1)Q{V*TQ=CQJ2%>=9qa8O zBZ@mcDE!AZ+i|GP`-+Lf#X_bxA^^Z(dA=-(pIJD+8z`QP%%m;S*vwh~aBwM_R#gc_ zybRG^A>LLhfr|v8F1}hqQpQ{YV|6cL%@s+fBJo-%;7Q$#(2gaElvrojKTG*Uxm=nFICq?sNcsK!U%%?U=~7jrghc z)WGDzYppUs)=zG{MZvaQ0Yhmm+Mi`mT-QMESd7ME8PBPe{GXx#yDWYmQsrj>cxeEj zT&$gQHDkRrIVnSa$zC31DT;-lLk)(fSmxSftH>-T;A;yuEIaKlpFFhx{^o&wedn-! zb$`Eo^U)#u>hV$Aw{6e?OjET-71pwZW*HCkm#ja8@DSb0VTqr-A*X4lvOaitYtX)maN z3J=RIBb!Bjnw2M{xX0Qw;+oUx4gr;l1VZ7UEH@;jI;wI448%nAP#Ph|{oDhW#Ak7# zc$VKaU8w}DDs_WmmB~|1ZVUv;rnY7HUjKx&jadX*@P0V)u z)OKKZqjDXL_Ae@R8Csg_#p~$4q4AZ>E(I`^R23ad4K!81YRTcK!=p!4&D#Q=GT2dN zi(qZB)K>W&P&Fx(Ds@cNE&>^ladF7#ROouN@6m`%--mCr;tLrau!IhLeSbP+{4T-K zfI|cTC!!P`IaH!2D;`5X`NfbkO?eUS0lV^09a)4wB?5;kk5jOodgp`GxaUyEq1DF z+|I+)xz;*v7a50LsqVH5EcdTe_uBoIal79LkTgx%$ITn;^PU-d)U(m<4{o&EgB$Gj zz?2v_k*xD18Ej*P$tCkU44JJvwUt`0X|O_R(d#bMiw6bX#%$?kQ{{ z2BQpMsB{2RpIL7WS#^xPs-YiazKIxf5{=9NJDKjHQfto6bAVEfO_JDRr3q<(5&%O- zQwgY4BqUl*A{w8RG;4@YMRdBt5&)Q#S8$?u0iiamLI*O?*OU3Vrm(|GWk=@&O&l!4 zSaeewJvt`_7X6Cu&I9N*#VJD@RfW;3#Fh;JPBT{hq8@Aiq7j+Er60es!O-qQorx&M zvV)lhRD8yk6FqAGLARosL{PaNBS}$<#r{%>YAkS>W>GJHvQ5y6XRv>nl@A#mfJ&?` zd4bId9Q~xrkdV^{2937VX-u-$@vLe*TJh7R9gF^6@6+4*IF;V^+y*>z%L#(Z92J?4 zWf+Hzp_N`oq%bs})utVe_AawT2y6~t;J{`}#9Ouv+Zch2iVh|;^3YOS34uB!20Yqxych|x1uE!x+C9tVpgr85S!>LA$q^jYNRn@wG z>wO+)Ny9!z&H?fe6D3;v0LKdBpw_|R1ZOUkN(cN?H&rR({ryX5KQIR{>RtdK(T&UL z$Q0kKgiV#eMt|qVZgesp$UKP%cDWMlRs3C!=hVurSR%ov%2(oxRi!S?TY#%P152MZ z76eEF?6uMvIr{!y$sB}Q5XV7DO@hC#7=QvIV{_h&M(mnqqgnNKpmW&nZF|?gIe66m zeE5WYvT3J%HoMa<4~*G`?h#k#&>>uHA$+WP)Nc1q+4bJ_c5`fl-58&-6KE3lv9sBl zS7+0KS{q5MwD!nCt67=N_>vnTbNbSy@qi10HD>whWMuBCE=J%YyPOhk|E?QQg?`o& zih7JaMyR1(ip!7@(1ZZN`FVvrzyvs|Ij^q}!1%!8>rnC_TIlENey+OQIClikSb$y=OlWg69`h2k3cF%O$_VrD6Xj_jRn&NT1*4`h*wV;~_gq9p@$YYtFyaF2| zI*EvdmVhQG48~U&o%e(Zkxs5>w|YOlsvS>P9525XFl9+=a22OM>kK|xufr6<1~shazDD1 zcB`keD1vp^m`mzpVHY;}1K7B1v-_tm+IKhZ+8@tdv0G!C>|V#XolL8;n;Fe^BLPxE zM6F$jZMN$rBlhQQ#~GLXnQrEhJ-l$xzWwwngLqLp(CT<4M($>=yHiL}@hvYs;C$gDIG zacDw<6-Gu`Nld&|^7pAsE+Y83C6JJt0AMGuL-T%~{Qe<;r17XqL1&aq#RD)7WTcak zj~ruDF$ZQ92>0tb%9gJJ-V`4e16Fx zScpozk#1>Pz_MokoVli)n|&weS;lcbh;5DerETML>rvyZtueoHk27w6qQEh+)4Z{p zBP9SV-bhZPIyx!sa4@r7zm_Ng{2@0GCoqlf#Q_fgcaa3dM0-Yut`^+Y+_I`Pdg6yI z14rGUoD;A>Mz?-m%pw2?U<57>IIv%T8e{}E`t#GJ_ti00tHaZ*mYci)MqP~3DV0>I z?!~7>tBZ29Ua6HiKqNR*(3NPS?tt+}BHDF`s?6?2ig1-cP~|!m4x37LN)l66^L;B~ zwMv>84oB%{1Ts!|Nk=1)@efGZyvRaEpT~7l&al#RYxS9FVyDT0x&V5!l>biD8Twcq z!1{Qn{owPe%MwUt@pH}OXPCzSDOFh=9OOydW)q>FiuIH8t2ho4+@@FJ+g3Gfmp1LP zuTGq>f8D%pf4jsB^}ToPw~Qwqy!);_*!`~E*|Od4Y}{%OH}16ij6@zy@31>lTkOu( zZSL>Rk8H40JrlN_Lu8r`W>YC_9)y?`1d#>bjJ0ZncjZeHoiI=4n#!Wl&PAiaa>xlz z$QmM3xF};t6RukWu${$?fRzqRFGj}(W7qO@$KeBu-tYD^+z#ExhG^mf7^gw;g^qxW z#^ttjj?AE?%T;>HkcCw zSt8N80#UZJqtZ6Dl_K0L!*7e6kxp*OwTxJ**+Ue^S#drQ4?%>$Nn8%d3rbsuo&pP- zb;KgaFcywy_ZTgYHoDJnEwBA1Z@U}hPecB$bf7d=A z*lM@(TkX5bA^V|l$bO&FZl6Xq*|k;Gb}o()VX)i2+I5Oi+3z3)Jg~=iuGm+f-L-p+ z)ULAExq9Nf?OeYLx^bi1zZ54{yB$n>sVx16Z6l$1(|!Fewpm7;iVtWjD6-th80Ye# z?xi6Jow|VE8NefusQ_dO`Frgz^Z1x3Mr2{?RCq4OVI!n&Mn7u-jG`0da;+!@4`7Iz zZ~*fL0K?b}x_cUg6z$-&%hOm_Owvl8TNOM(zx~Hvt51Vlc*cS7e z?Zly6wFC3a?U-i@Y-ah~&Wa|UWKkc=F%i3~3LhlxO={_A>gYro1RkhWYZt$Y z=_Cs>L_;-t8}X(OK#h#mnwU8^Ga_n%b=C+4Q_;r`U{>(?Rx_5Nlwv9BZYDa6G{8g3 zWgR5x%*z#ArG1Cb*ix6_)0Z8U`Ki(&FK`em%_kJN^v%$SOh6-$spRA8>6#i4H`dU3 z%#G6cd8qqQ7vwsg5N%msQ)4qZEPG~`A%+x(u&0&rZb5E8z?0RF0(Rm`jd1vXWYUSb zR6-nYQ(h)p9ZUV(g~?D~vBX(Na9I6_-P^m*zP)hV{(Ae0{qg2S`#rb8-(SCM-(J0F z-(0?I-`~1zf4D|nzG=TceaY?}IBwVW9I)%}9kE;cj@jc=7wqQ2V|Hl$7REj38d$at zF{bFDn<>Wxvye`yVg-+cnrUQKj3}?1<$s01hTF54Z!XV9-HP^dbYR7V(iOc8rIRXV zcc4dQ#<=_#D9*~{@Si_(Hu$_q{qdIo#%GUdx8kxp5E1I{9f&)Ege+vdtQ>Vt>Rv=V zNdM`JE@nWq_)LC|1?$#WMi?W#j07vq!A!H9)W!~OztnVZv-KBe+9)+tkYRoNeODmK zTGJppq$XNpdKyfvFet^ajL>_9W0<&#=f-lL+pn_&TY<=RHOv2X9Oe=HEMgd0#bHH~ z$k%m?!<8OB-4ON+SyFXL@GlIIp+iuo1{C9h=VuLDiC{aPw(2cW|(frBoN zu~@>-f9ZAw2|vdNj?&IR5dcnn%+DfA=9YAX$$)emT~RU?O2L&$xMd_-`s!qt2075$ zZToj^w+DAF*cYE)wd>ap*zLO?+To*{?Y+Iz*gDPH=pf2_VzxI9&02R&KiNr@R!lfu zGoVr&Szr}(7R?BCizA9`oQ3?oy(jF}h8=dhdklg}vwhdlXaA}nvj46aw14FF+aI$A z>~Tz+om^gJ$D*6;^YH^_H$Jn!K6-55KE7kWWwiDY0CV=pA(&<#+Nr~5t-Zd_f=Pv> zTGm@j8PUuDiwFVRM~2Ax>2`TAQ$z?Tm!>JJ5J7jMCGfkiNQ4woTyCxGWg4;=nI$J< zZ*jLD?hmwLYgif|`ObZKC^86EYadFg|i zEXQK!T+FD+D;DaE$XpPZzyZbmhFHc>A^$L6fxnse`5>cFnbi2MgTZg?>BD{swZ8W` z(3{9_OdSj(FSi^&AEWauY53}v1(#2)iTgdusSUs{BqyosDw5YXGq(D8o(5 zmjjZ3CtZ%~bU0L9g@DM>mP1{Mx1aHxlzsNn{~F%`AWGX)*CjtG0ZV{xM;aKZ+cP;h z(_g1kL;RSF2r~0mq+@c>*G6M&UrLDB_-^~{g^TvXeYzK3tbe?7)xN!b)xNuT!+v+~ zrv3i@9sB#IAKRZFJhngGduYF7l=1n6YxdFUi}vX3C0D<>|G>Vz|ByNSIlFb_q+Qsv z-*zB~8$+nsU%)&(CfABrXF!(*T!?0te^t@zL>JJ-R6&DvZqlNXt5Z>j2D7jfqDLuR ztEw1Ut^*sC&H|aDU(v;c#HO49_(xob$?^zMm30(S;FtZFSPawuS#S$5DCa(rK zs~~brZ?MbfkJ|lvXYAI^5AE`m!?u0Lq;1$Rf;sJ0#}X@rwq6rJv0v0dT4)*6=4_mn z^Q<~7*P5aVtbv$^+VEW4SvzRI*?-bLr91wtXViX!J<-3ghOyc{v&sSc@4|ljKC9RM zlsjg(qML2=8!2|04%zO&Ec@oS_SL_()w9g*iw9j}hUb}eRM*AnNrG^l) zu2GvN@_Xkb;J1Fg?U@|6cPEE!52lwBxF>g)msxgLEP_*nr=-1Br3S6Lq{>?Ji<}mw z7SUx{JnS({FZ05p@V;B;h%&O8auWj1FArcmaB%<=ice5Zk49!L3{C*UjwXXnCcy7R zSwPzT=~7w6>$RFolXfsQB#YJ(ncN^>GS0R(_I54oVq_K5xg3K_mgPMx&ikPI4ziON z!fs^%pc$ZhQ3+^9G-^`UL8%j&qGOSji2NzpL07_omB^aaQ_nm%_gV*k<|KGl(cRv5Rqf6-Hv4+52pcei49~?>(~r*-RJX z1I%_J#CHG|u0jCgcQ&rO;rrVP*!i`M?|ExH<21epvBXrfjMr4tfQ)mHCLczn{gKbgS?sr5vJ43 zcvNYR0ri9xCE=a+18$TP(t7w>8FemVnCbSZj>V4;mT1n!1Ot#+%IyGP3OOut7bU<7 zins0nflLkKc6xT7{rci%`@`KE_NRxp?YDQ)Biz4X-#oevtLKiZ?>>2KzkPVmetqwr zeRb!KeR}hzeFRPP(X|_P|MFG4fAz9`cK5bD;PI1d*ZG*ccJ94{Hig=HJvYhhRS6uT zc*0?LSh_M9jS^YsG8V!dA?BL^mQ5dg|*qf9lPz`&C7QE#wj}kE&1q&du+>= zNt+lMwAuC3Hi90dJgtJ8e~GoFHd^hvBCA>+u==H>p01>pr&~RrZz#Ud&cjChd}@b% z1yST1EMSZsjP*^L!3MMPZu=(-{=Wyh?7Pfvdz92{yBDO}nbJL>zr4+;?2di)>0>*9P_qSV|87+L8^@Li`F8)M*Jy!!gryki6GBl@|;_p^Za0mfO{GcIzOD*^_9WIbRb0MU+R z6NkG(#sn(Tz&Ot_*kg(;-pKnm^7qr^z)W+nyW-!t6ijCu<1Oc%AX2*zX;M(&tG3Vy zZ3W1-u;)<;ST^%Ml>o+p3pq18`P{AmlwAPFF5cclXS17+*~Qn{&iGEX17O@qx1}y; zI~~n7fM+{^qw$(b-H_Ym;F#|fUSztN`}ACwc*qUg-%~gWbI1zcsq4km;(!#$c-HqE z$c#4pPQmG66qPJ}45PCOZoQ6q#v!kgU{h3NQJ1w8&trF@gID09ToT3aD(^zT;utdk zi_<93MdivdmCEP#?+1SQ87pEoc|-(&OWtWvKbxQlH?!|i>Fq|oj|RSh`|9p3 z`^9Q%>i-&;BN002w2lwm?07mukZAKEeZrY<;H|*ZED|YkB1-pIuf?Yaw!Y&^_ zZjY~Ace;poCpOuh;Z0VbR*GRF%5pr*itwq*ql?OaJ%TKAJmato>+ z%v-gNTRLyA2zN$?0e~VI-?4P|5)#v;bI5DNn8L^?jps))bn;|o=ou*cQ`v{4G1f|a zaj_deCcgyz`-P=+4p_3VOi!QBe&a>#MCS3lW3it0+&hd*=sJGHP4{QA0$RcEav6e5 zToq7+r}KHz0G%{|NtF&0DUBPi9=+1rUf7sQR{O4?7P}xa9G8^~6Z_L=vFM*?sfhcM z$bw1v8P@(-^(X%XfT2=wQC4YBkjYq0-LDvM{&-9Plfd&nkC<-kGTrLA!*=S#`*!m1yLMpDPTM`bneZ=s#c+CPNW>L847%_Vz-2MO zy)Xk)M@EP209zI&+IV!HeOS`&G*utNWc*!qhZ$gFjMfaR7;6|dE9kPnu&Dnwwb{N% z@34J~GVEktv)QEwEc!o#Np{--%*Xdm+ud8I?d#9)*|86~+^lCDwr!K`#Vz3E;eB@W zy&ZOZFR7NhH{oJ1ZQDojF>7yxaFB0#aartXimWD^6iZwP+RDnUr37#+FS1TVmOWJ! zRu{-}yBLkiQW@JPauL?3ERok{0v>b;sPyBZA;)18BM-7Td66mh8aHbJjX*wybka1& zms$Lt6i6rI%W}vXm00jsaB-@lDtTUe*8Q(K=VaeWxtXa=8)sZQXI&?0m)*-3IG?e8 zM6&8;1Tq?#d1Eu>rm&My)(Sx50=;BJDKVlzBy{5!TkMI^Bnx!*7%IJAQObUjrNG6d zP`V|*7iu;~ZRTri;%jV%h2}5s)gk#^k~$^5tq#Non7IxHAag*YM|CuO>^8t~D`Pv= zcJ@a*7_aS!f0cjBpLtuggK?TyPXo@|?sGjOLqLr!JXc^(XsBDL{J6v%lL%7taW50a zQ_AaxE2fd3uc8r>E5<4M_{tDdOyW#e9QqDi=w39E({f()UUe@5m<)hLqX3Pj<<+65*kP3zPVy#mb|rKf5>>jf9pg52BCUjxwXyhBwE`k707o-!zm0TS z4GVq=00B6ZI;(o9djKEQ~9;y^~GjQo6@ z2vE+>GQ4z}9WP3`fIzVVj0p4JT*s0-cAQh0+?f_FwV+)0brt=(dUy;PoGbn zjozOzkLM<(&yhiAqH&5qAPpUbZoaAvm`LfN@_{B5D;bISWYM1lJvsq^NrEn|jF`lq zVEGToB>e=iA!tm%qL^iOo96Rm0Ky`+XjhjCP^SRK0+=LrK}oREQs0iUw8hDmMea{9 zD$kPEK;g|Tx1BRv?cC{OcK`MTdvNo(J-k6(J!uyYA3*TP?>hxxi7JGmjxGPvY+QrW zd0mit`evfFy_19hFOz)vG=y_OyA`ap&vR?-w+JDvj`3JA0Fv8aR@iF)OmDCs(wpp? z*joFD+V`tuJCn`dp9f$*`nCP=_#>XH7Z{D5vv0nPB)u@SU83AB9_aG6IAlEj{`JhaQSrkX`;&GQ75CWQr&bWT9_cI zmxWN+owG7yF;zLwae<7ghRc(0g4xPhqH5#9>WVX?gR`a^k-0#o7nYSkX26Zj-kjUb z2xLakw0H}1bS-|Oq|zX@#~`_PedI!REAP1FxgK5d@!D~C`wqRWKrqptJ?5Gg{sJ70 z*2DsvAz4xku1&;eY>q*z67vq-#DclbVk@1C%IiA3{fla644^=5=ijKd0e)KnLD%_E z-u~ug+n(Unw)mI4w*j0TgrsdJAZU;?-_3!;ri)g*-UVMNNJ4vNmzIGKVv51rr z;%BM2E=p`K7beEnM3137mnsnsLiA&eyF@yuhn?2!0LB9szghs2W=44GWL&AUp<}5B zh*V<6snZg;2oU99pzqmVT>C;mU-;(-SmiKIRQV>4x^;T{7XgeX`g2S?#Vd1Y7yVMs z(2T|am9oVt{NLjsH)PvbL96X-owQGmGY-3S&ptYJ)&a~{jJ&?SeVguuQ5fLz<>QC; z8}=_>^CJF=h3eN20UCBKAK$!dAKkd)9v@x1Wp^*#z{=yQ-9C>Vf!)kix|i!m&e-|) zumc&}PHxAjb>uXoBdEd)Egf)=ft8oc?>7OfdS=^*EOY4+1nw%|ipSBDRT_oyLd-!c zkc}uY-*uimg45Q3x0%VvLy2+w&1KVgM;)$Yjz5m7$_oVOh2)%RZA%B%AI- zOtEy*9MkARlGt%1zs9ZfMGk*JMT>NSiMonR=)UQILprRhEErlrI+Flwt>8;^AFrSh z!SW@8@ulqU)A`*9(6Run07jXabR9uPTRDJ6P$2YEp0j{U4gi(@6Mm0$G^sph0Y(m7 z02R&Y1uCixZoaB?4k!1v0D(#aXi@;53?5s3ibr&x=D)WEP9x@p#`egP&sc(hjrkr3|jI|2bo#e*kSskHa z+H0IUdCWe2aLpdyK5CC|9<+~doxs}VsBI@3mW zSI!)QHoezQ?%iQ~XV$yO=Kh)ntIEi?@=ScjFyU+|tpZ$1aY`t*zWNFqs4umlhBE6c z%eRr53LB~@ho+ne=mNgb+GCu9^6R)K6GP2&ESl~y1`rX*sFTs#0-0ETM*Fw6|fPEu?rKHIBAqBJyp34l!Ei>|gMy%effc%%~PW)fbvUAVLFP87i4MJAS%KkD*5 zx^iFFjGdb*I|*6L=dzO!ec0(Cv}6ZVN@>|$F&i#|QmVWTU%Bl7BE$^R+u1OPRAN)< z^U0l8kA47^MlsSsXi@B$QHEMob}8DYI4ujnR0F%H7PgmP{!XQVU#`Yt9!qVZ0~oLL z_Cn^Ryq{`f2c!}ZHQ*+!Zby3|fr>_B5|paciHSYs1B?>~N?9Jta2L=>+mY)uI-aUu z>VDli1u`B}Ou7xaFb-;YUgdK8%){w6|Cf>c-`OE7OkuH&LOi|JwzaOe-F+MF-0mZG z{{(EHi%>n$5cuGtuH~zb9wIfkZ=XG;bNR>vnXex)@4o-oKDqh8KD+(MKELC={ppf? z|EvR<1TxVjc$8VBmfabQ7}L3Nsw61P0B9sC)OaZa6HDzev>+D~OZyB7<(xi5mLLE? z7E5$hkd7r2+kTY{4;_05P)VlKOu%bO_Uv**b|ApPlF6bs$mh*sM3PD1S2h_k0Ww*# zenw|X#}lAik!C^*VIMU7j>Wg@*P*1hGx@yEzCQ#o`go1O+QH{PAjcMH1QWB=(mR}^8jKDMP?t;Y6Zyc2Izm}72cGhmYFX{U11k%){?768qo-JNe;Z zJ9GSyoj(47T?62J`F5fAlNG-Y zGX3a9`fwUn^~3P;yBaW!P74icUxQGQcXNTh4aba(9qblJ562QoT))l~`92IA5C@UAb4^ehAp`)sT`urT= z>SSa^Bl@c=ev!Hnm+*_MqUEf>s=SI>zZhz@fSi`~u1n#Us%l^y)`(`Nk;QHkV=?Vn z1R!mAp|vjuPy{MZmAV?04=}FV;opimCU%)dfo=p8viBG8xezl%lFoQh-dL}^2*7a5 z;ZXIhPJHpD_ALRH)w(sin=?OCjr+3byt1U!r+W#!v5Nmc=7i`_vZx|%kp;_%unjib z&fZx&yXUCg{P2Q(ehqWM&pxw1Y83Y1zJ0;2Md0!|_4v^}`}FZ6`-JZ0le-V7NA}T8 ztURvK_1t`DpWJ?IkFMXfI~T9oqZ>Ev#@W+$>-<@}cH%grh(mVw;zhf4?gDkm&K){s zvn+C3iyL9>q!Qp1i}gr2EIw>V$QH?dlWu?oxpp2p?6q6SgqfpKo`w$53;^;3Xkpf-+S2{5qsv zDkNi$0J|L7?CWjqZ`|P?>LSu$g83bU1c}l!=-+$aE8nve+&`zw;4zDCL?udUHXxJ* zRoGeh0}>jQcnOuF69Y(meH}h7{+PEFGUg>A!g!;6aLM9p>fie#vJ8MwKc93A6jK2g zA7E0Sd!CP(??6VuW%@q|v{G0utCLfAmjEEirY7;F7uYA^MnI>i=T!#YY-xAiE?6tqI0$d;l{B2pl{<19BzFC=XpM;m#jo5O#iJ0;aJ3h3}d2Ss=oAm)&t<8gz zwrhH;9oY-{0FXI)06Ur^@7r}oWqY?x+w=fNnAPlAN~^86nl7fc)B38KVU%^+?uiKs zCfsC?y*JfsJI6_FUEgC{dm3zeC)WQJWmby&xOQ+!TrdPKsfA*$)Vt%`N!_Fu2Vt9=Up zbU~8pQO$7D#SL^_{=W{Fo+a~0F?iu0G1(29ga%79MvF# zO4R_`n?bZUs$sgAQM#B307m2hF}gMaN*lukFw1Nz8t4s372~8s)4f=oBjq;s9W!*yB2MD~;I7G(vS&$I^t7 zx|N9D4szZ*R=!C9(3^nE8-UK6?(ei~k+@SpqCHI|bZb$qs|YmH+pZY7IgO0Qdm&>@ z7k%tThB9mS z#lmz;Sxl`ASjIYBV$r9ZKXA%*7oXj@VgLB`SN0vZ&~G2!vM=slXP$kFao7X<9J=Sj z+l;{IRPNrmN8PtO*B-dKefgfUJw`9gw$sEYe zwnS-<9DFjBbX4P)b!%rNL=H+42W0HLc@{nId5hv;RaT0|6Y3_C7?G*7@PS1@qtfV1 zk2+)%86~-dNDgTw56ba2lLI1)(OM=4hN6g*f5KtSZ8Q@Ks`el{D8$fG_v0_x0|@Rk z=1Rlt(0`wVc4>f%9FhYsad85?Tta0i+Ssw%So(S$3c&YM=JV=geui--OM4$^1Vs87 zq;epoVuY#xcLx7|SM&Aud}q?B$MhHGVW7$9;pdVx?^$+IWXCW%R3-BFDg0d$ARYe_ z;~YLlj{+CzU^FJvm`?zl#7-$m#Dmw?KnzJBlRnD=bR$_|85Vj+c6(*1 zeOtW29#wC(gE@nCv~k*Y;xut!cDtSZ@QCgIV7DD13g85e0%s5Gvm@KK*d{V#2C5qz zsPxwpuZ(TX2+RKI-d1!n9kz1>hlSx5+ciiC*-)G99qhL0##-A*chiv-L}a_#Vp;6R z05X2XF|LoJOOEAv70>Ti3x1I;lF0N)0bq17Q3o3UU$WYay0PG5}hw*+Bj`LAAp zAv>QA<^{Ll_vp&r4yGOgK=V7W$w+i<#kHgjR+$njy?VnsVb8V^vE0GObfFLI;VkNf z+T4c+UGK`*UG<}ecNOYj#5@zo_%$59a1LzrK7o)*AFt{`QQwQQz7I=(vDNz6!wf+!472-N8=3u)<$ZY&ox6AGaJd6EOHS$6&@LzsWwN-{n)eRclj@l0rr*~jj2RQ zR(Xsu0ESW7Hg+*Pa3R>q$ZS_UT?>x_m!|<{7uuQKh&0`Z%vqqLN$`rLrxuJn!8QMN zBOm=)b{+fzgRdxw5P*S`uRM+tK*yC2A{?^HSn;EYeK4s6bmSCJ!&1JMrMyRP{y!s& zUGgN|iqp@?b_RfOyAe8!3K(ZfvaBPJOPz;CTW-|F-#d`OWV4O*xE4Io8lg!$0Vt&o zs2T;f_BC=@mRDH?OJ$W37G1G~uK*DBeO3T4<$z^5GhK%sO zVI?o-i5sOU3YpuD4uvcy5cS+|GtpIKzP^UHVY~b?7EMJ0DWCz%C*D|&va`cm?cT*( z_L~PE+rNJQjeY&#mVJKj7K{6v_5c>yLpqU%cLgZ-?8@aE)NQ+Z^)8H|yLJgsxp3|# zOVsNuc(LU;c?Gk=OLmsGPaL~wCyt-Dbi z+<6_GFE9(ANBr+R>^taYo?{R599i_rqz5FFrIJWD;1vKPZ~;&fIjA*8i=W5MpMzVU zJBz;)$OvFud@i-DT#*Uu4uS^u_v!1>tPRVRYnQoO zHr4)#$n&psGk;!@Zr?C2`(|~XeYz~qZoQpt_rhvy@8Sa68&gMMUay_Udgjsbb9VLk zF`k3(^8EY&`}Cq15}P613IuqT(5nAQ7p0_jqHF1 zaOnVm{%-)|jmkWL(SBx#6v=<@V4emW|7}NqCd^CacR!8_4NI+GqD~h3LyWn`qS@In zTJse4?>L|l$ap}rz}4nRyu&E%Xtb;G_cbB}Xmlo>i)y>Nm$?o`AOpZqI~kd&eD;{S z8@=CWlzB^jZ&db-7%yos$#iIBz>HGbpR+d6EaE~^w7G&%!LkF=mLFS!q-@iP*@ zq`xU6%LrZo(Fp$HE#~bc%RxOo&^TgyH}3^dKC(3ZE?vCoK1v4cqkb~B~SzD_H#KPKndzYsH80C33#P;%*5 z@>Qk0U1tB2S!n+x_Tg_)Y4(q>6#H++sp?|>wj{xRfL{Nn#i{IM0`|M*fXv$gyYo)a zPA&-AzNPtgCb!*wz2%^Nbrb>U;lp`QY{~wxu6xa$~EF*R|LL(G-*Q z#4QsIzOkLSOMZ>&LnW%R zsvaGfK&EBkD|9fgSvvxAS9q1RFMfsCWK{luPB*&1fA3&?fDyPznCb0V7S5G+FGCuc zsqni~4Xj<@G&X&!-*$SN9*y205%e%>>!qXVL;ErS5nvFo7y&rO7^{s#4iLzw)??|S z+Q9qW*o===X-6}|NNfh6nPvAf%id*+_A?3Zuy3If7@<)DnWsCMC&1!$Hd_D}zvL3& z1CwKsY3v~@b3Ne&CILXj(`$qZDyiP5ltSgAcxjDZE{h-1C384cl~cc>;%9DI&-kd0 zjz(1j@VEkKRMm{bY8Z?8U5pPfjui$VRHOQL;KDveLQto1VLYZFER}+>Y8Hn&86p4# zG}^~BBiz(}#sLpYe>pX4Eaqj+(7ikrWG0HWMq|}qxyLO6hJblAX@%Bl8MgVi<$ay>b;W=0P51zEW(35xWIS9bKhxqP2+dPXW)%13oncQNt zi0H;UiLM=Dn^aTFtgHM5j%^8Kb?$d#%{zEiXskh zD5~^gRTQlpYSpR4$i9i`6*BYw>i2D(!C+Hyq1o?P-un z=ikhA5gKW5=;r_~xd4FPb~n)w;J9>4Di6_O5HVv8wjcr=C12|B&kl{obbyOy?y`QA z#tA40D6$!~Wgvje_%V;q((P~%IY1JyD4T}wF`Io;_AAh`Uz$&6#P`Di=9qD!;J+)<3TZ++^t$V4ZfC2djbz&aQFo*wNJ_duoN{Q>T@!0OW-L+T^8MN z5Ef$oq7=(tmTp-*CM||l79JoCas=x7(+8+DFIt*wOYT z4vZ8MP)qHztWx`Z8ly3~7t5l1DPkN}TxrH~-O8XR11^S3vm2K&Li=ZQrv07H#n{FC z9T$PWv&Z=d@ee;>p85yC?hi|{?7JmF`(iPj(b62-^qXPXo8?9`v8;7StXi#g20>SsQ+^pz$6J^xVR+JO{0 z&M~0zB#ZvyH`vACsw|N4^e|pG<5~E7)-m-wHjy3Eyx?V|5ZL*n?r&e>MJoFMaR!`9tddEszU*@uqytq_fd@O&yRt&YscOLku15Zgj`4sfOK2Et;1~K%+{YM06&VbT#FS3{?Uel|ZMQk5e9s3n_z+ zEK-BQuN+O8kI7{m7r?_!qo$N!vD^4ntVOFdKPTC5W^gm$a?QT`>NoZYs{E@L&e-i6 z=NWUHv+MYbX%u#zzrT3l0Kh;$zlPns@xX3ezi(&HTtT#U)=r(gXeVKtonrKGnmxL;#8~3sarFy{?3M8zz(A+YWFI3%yG$7+V9X5BiM>&jw|w^(-CA}#Ruu=Q4oF>G zbVFAOY&0J8!A1b%6?+F>&~fY`R0%J06U1<@@tH_Dsej{-{eLQ0Zsf4u@_{ zuZdJT7r8X2a=T53F_-$%&j8tH0h#9ks23opcy0#y%;$5sTxGHB&48d1_b%{nX)Z5Dvp+}>wfI(lszAhW%%2cYS;%@|^C zY;Iu((+t4CHj9Xx1D6Z}^d!0!z(`LefN|Z6>tNV(QOR`H$s$?+HX?6`IHGZ>E-)IG z24L{zXfnaM<##duKBnrec>v6O0ES3qz(v*Q>P7Z3FQSXV1QUSi0BE`v<57mvzh^1C zlFE1CZbz=)Qt5-_L)G7f0|4PZK!!&qA;fI;L5Q%zvgwNhOTAOl;?XQXND zrV`kQf#xXA(%8_cOwp-$ni>EGeT)w-?lEpLjsc9*7?aJ$zYR4R4b4;K?`8xdzO{|) zZKS>N;svm)K~E!R0{uH_ZJts4t+9tdM$WZfo;vDt1xqOhM4?_Bo)Qh_a{!BWEJtCF zdB#m1U@6CsN>vFHtSVFj7XNK|`>5n_tdbprS01=HUo#az;y@;}pYgL?1O(c@_yJ{d z1*m~$Ec+Ra!Bkr0`<5^Q9+mQD1TwOw@x-29H&acgqY;}7F6*(taqKk4b^;hx6*o|o z07m5li=us9yf0wu;(|j7oAM@`0~dLaN%@arU+l5;H!x;gD27(N#ZigN3I58fwhy-L zbyVZe(YIW?c-F37I%_9S9kr{d@NXcNdOa9cp`s6eF{PD;3F_te9Q+{&i zwo~puzH!aj!QAKH+`V+p?p-+R>cQo+SjSw3MRpRgCHj|R$L#?7mp$9xwe_PLYy$S! zWdC~G&^N`r8-+ChGl8LDJ6egV*r283GLW?ZOZWxQmKpD*zP{W6OgbHmG%Idb$3d(S znOE#QB%stDgu_sI=MqGL z>N%7EMkTOufWy~w@8@dbk!)h z3)ue!n7?P@z?=raWU~89g^3vZGULJd9^pa6hsd8nfB$@3QWqvv^?@3b2V z!xFGaBc$(HMw$BAiDj3@?o;f(Aiy8s0+72X$x6^s6^G|L8<^4BQM+`I5gF{mhd0l; zWXeyjAGGfup0-a8Y_@Z)4R$uC(Cz~+-v-L5Qmmj^Hcm#sZrHp^~isu};Yj!qk`Aj5_%nA{~{#7D~nmCGCetX-iJKvmlDdDM77 z1#lO6L?w_>MmfU)chPGw^;p7VCDTv0F#s40KtvkkxuY6d&GMdo${@QH z9}wn%fw9*J*7q8r4X*LVW9neKR;r76+uGI1@LUwQbn||V%``sq$8P^F@bm?pzED$- zQ?SN1uyavO0W_)&v5UOoeH&q!$>E<%UM=C$6!?QjFePzCib0mon1RjFISAiRAtclTyc{tMaix9Ql-wO91tq! zMJ7NggD+mLC}y$7)SW;L*51X1j!~Y0rpN#QhTGHdBBm3lh3Qqt{zX1!>R1FQo(f;~ z|MEe5(<$;BpeZ*jgTlZm#RbSt;f1?2iNg|Y z47->#G%<=7PUnWGR7jaHIx!$WE3W`m*_((EqTLJ~iw=8r0|FoIB%HvK_xT--x*Az| zsI=f0g;~I&(nv!~Z~=^a@vDQ;=LD=|N+=teTn8pk%EdJ+wpn|`(2htu4>8oV=ZS@U z5c?_&BAf_fe(}5|yh*3Ts3V2PRF=9~91@u@hmwBr6Dz>esTd(zSsLb_!F5)VvkpVe z81mxdv64?AJZqgbB!pW_e3UiEL|A=Pm{s8JoWpZ6l`bZZWpNxGkGeC7O+|DF`#H4j zpFVF9sQCpZkq{Q5AQFWCXugI0f4uKMU$kiKV`8CIt7{R+$VW^0@d+XX@c&A21RQ`4 zkjY;d&D!&!Ty!gYJWwT`!}+M z{(|80`-oioZgsl-83E?+R%O_iJjcI8pYzGWB>R{y=GNOOb_`O>aooGlJ-ormZ$1jy};GK1B}F+ zPdf;V;#Ve%8aV(s2jq|_Q&#*AU|^2<0HZF(2Ofcp4>SS|-_%lIBCU<@o90{D$ns_y z7Mnh=4>Hf_rleV~miRJploh@2H>OdNm{)Qq7E`K#16TDlz(^G71B^hWgcq0Sek!$^ z>T>2j9hyaC`)h(fDJ8Pl;)pJ8= z1l5~YvWKBsS1z%Z6^pHDg+K;Cav*OPNa=j->@n!XhjGI_V`rceU%5nf`sa`Aw_iOZ_8bk&Cos%Dy=C8girM8S zI4gfbV&KP@Fuc4>owwgTK7)JmF$^t_*jKj>+iyrM{LSsd_T9si_VMKd_J9zm>sWG} zBF6UEq5Zh)qU0Y#IXyIKL*2tR*xGMHtv!HDAEttJR-KIf2Fh*uqhmb5AONTu_F z&m-$4a|Pop1Z?GT5Ji$#Sr=hqQ`H$%nhljiVOx@En)P_wr*#V(fY%fBdRN{OC0v`S(BmCGV3#rUx*-mzGC{pqt_OClgrR*cDWljW1aq z9Yv6Xy_^natY+M1JE!c}?%g~mF4^H#{6#5PJ zx0Gu8pL9Sbzsans%d8P|%l2`zfsOXhRzRk6!mL$=*(EtKe@3(Q7t$!dODMI!C6(Ks zu&VhZ-OR67rrAgD#MtMgrhZBn^B4;BqlKAvd10FEel^Uw0~{e>>|Jy=JFB1}7gX6q z6-+P~W7CA=%}|@Mv)R^8*TVB~b0+{p=i&iOC*n$2Wi0u9fKeASgv!4fr|nF<>SRV5 zcy%fJF&UUbMv)gBqkmm6+$Dq2mpWt7!V~!2B=Wlvz&!o@({oT48bwVM6Es%w%lULM zbS(~C{*w#tk6@1d*a1xQJ1+n(FvYkmccJ3%VOQJ(J-KHgw*3oVcHlAu6IS3d%nrr} zm_9mOS5o>@-O|Reu0Mq;Or9dsU2XR-M>fBJ;oy?&jY3>N&jCV%*sQ3-;^B=k3=I&p~TGYhOJ$VV^T+|K!#|EMpEjn~+D>kFexD zzMD&+p4eU0BKJL)Yv z5MNi5qMx6@iO=WUgZVjYbgPfk&oju|Vu2~;Qo1X3+4}l!{HEDCL=ARG6d4m0w=gvRwqO;mKWOvY; z+$NLd_sRA4_t-{6l&$tZi98nc;yE^HU*>n%H??DSzo5l#kR5b8uhH%mw%GZkQaeM} za*Gb;Ig*KR9YvZ*YHq$Y{xQmfkTeoeYwsrT|j$TG$-Cc~w0G3eaG6Rcj zBLFi_Ud$Ml{^JCbb(a-eO-d@^YmjKfcEt!+W~d^eh_s|jiY^&xJReeCfj<8dW6u|U zPCe%|NE(wlOCQE$&h%3IJf3Uv9W3VeUBRxUYQYNt3wsy3nED0J!B%}1vG#nV5bRyt zQeVt5C0)K^-Q-{O@;Hb#Ml}rJ3?Y|r1<}~5~=hC-sF(9)D zMwpmkfKHfLV(MV%REVIE*I5r|Tlcah#5OOp!PQF{p)Ixn#&sR zp)jjP7>$iG8uM#hlxAvuGz>FFV;fQVKV5p?R1AQ_-bUpNH+|zx#W?dhRqBo=0Gx3; z7}?oK=;`lbo^cC)4p5aw8oDj2Tk)NbT~18MRo6Fv^b;OETNgzW(^hH>2FO&foAFp> zFs~S&sfw9rsst_q8C5C2ka85SGMTIvJ1no_K3Eur4g2g z)%*aXf!)O0o;-ja0NaccNA|O*KjJ{<(m5Px(Y|~H&GZv&`adIEw%;;Q*|igNQ8;x-RMHzV|RioCRFQZE|3g zu&Q37gFCFZq0_pnTOGhupnJ$$%gvC)#54{uEl<-ReCYqFv6%E3D)&5*9S$I@y_`zm zBH^yQ<$UJ{btcZZkxnlIihDX#_cVY)I|Xm##*LFdOH8QL&kVfg64{T%BdASZ0oj1x zUn)DdIDF5NxHTp*%1UIZnzf3t23g^SwDCpUm>L7CtUi6I1B-1V0jSpjVvq}MtSiZ; zhI6c=A2cjWu&b+$h|+rA#z zYF}>IW}j@`Y+vu$V_)sug@u2Qy^rbS!MqB4KefO<#6o5#46CmK zQ8(So@|ST9fsU*^m}Tf)2wChUh-`qjN3if8p-UNK5wAyAOj%R|bk3^&l{|)2{Sr<( z5MjwbR{%s0xh|q1t9#K1ta~|~3m0qW+KgLC|H{Pu*uf=tCsJzj$D_HP7dr2QSBi#co;&zx|}{<~KR4ZC>>>lZRzZhQ5`or|u%y05O~qJ4Rf zIlHTK{QYTreEm2%Fh>BD!x&s1!J_|tyKrPLiGq9W^ufJ$^!=T7kgn-n4vo!|8%Q=B zv$5_$Mq_=}&zPc%afPzo>u}|*PA{}Pm}G$kTAtEud`xQmrVBk!(7*e?|mBZeuCDU{hBqgp5Q>NG7QyS|*cX8HY{$p!pb~8 z=2>XdjJNbVkLQM~G|Ct{48#ysf!6fy2wKeoAY*Pf`8({23|6E4@GbSF*+0H9`};Tcm&aUqPJCb=^IW>WZ5wQ~VLMm~AmvurSwigg zCKuZWsbzLFqsES>R@-|BK)1XaWgjjN+Og&Nc64>I?OBnJMM;_M%5S$lO#`;8Yshx> z40=m^I+vZqCT|<)2T3BCiLO~Mq*x$jJJ=`UZz*0GnK|@d`^`tXMD22Fa!YA z2n&AIC}e=~FsROGUB;tuWsX4y1Aqub1STp0%`hFl9>-%A*(77)skmhT%yMcaZ?ABG zqneCaY!lIoT!-Vc(ERjDpNZy}X}ALTwH_L@z(@NSjnW*zNdMxN(;=~75o-D>b{N&% z>Ppa~6fok-g(a4QCzp&c<)$nDFpb6Lx|fi^(t!=YQqBw58AvJ#k&eU_AW=@xSP4K; z3V68u7?$$_m>MW}+NadAPia_22crc&<>i zu*V#8Ob!4c7XUc{I3>Sm&mr=HQaVexF&7}blxwgktfFTtE^o?ePoKm>NWtw@?Q1n%`>pYPC`XJW;f9n zTs*$t&K!E*PQ1U1oQ)lJn<`ps zyPA@1H)E{#dV-8l(ri;#mTl|`*vwGA4R&PO0Do?-OTs3FpKS_(Q?%(>yoi#ahGw!5 zO{2?=`6c=XmbRHZZ?YMqW-<27f=!snC|A`kHjsx1eh=MFo@wyg3 z)5>?7#1zv!V0;J)UCUz4xwt zw`-Su%Jb^WjWhO`-QFb@_V1?V+4?0hb~vuo_R!h9zq-gaFAmxiivP3Ce9ZbCc64;g zcK3=Y28gg{5ld`yAFMGzW*h!wq9zMSRGSAoT^A$!n2lY{wiUaW-cm+nNr@I`%H`Z6 z%XekOsI-VzjgUsEF_*?&&Ja@und)}<{JnhLKEAGiYzRkyVfKNp=x_uuV~lhKFi!u1 zX{NwIAmKm;u#t_7%I|EvzZa0GmNDL1!M|A=`m+Zv4yd3xyN-x*-4TH3*91Ew7cYR; z#@E~U`kHCJ<}(^w`1%*mlT70cm|-0Lsca))9DOU6wxO1>u+aZdw{zQ_M_M24L{b9~>PULYea zkm8L6GFq%^&Z|e22QG9uu6yyuY4UM%Zqsx_Io$enFb5ei1>WJHMwq4~!fdiT+6o(N zwr{;1-GwgUcQnxh~>_p8vsP0Agey%?N6_qwa>4g zCMV{UJ-&Lv?q58HH9z?pjKEIpf6qSHz8!GcZHKn+vLie9xZ1mUtL>QDXxk>IZ1dQJ zO>uJ^hp96vfPux+T2kkY$Dpj{hNq$sj{zj0!a`9NW67Cy;tDO`6_G*dq9QZo04{}Z zuXKMdV3g)8h4|UXE=DGpX?V7!;q8<`Dqtof(RB0y>C0cV%Jk({le^k#i&tBBbE5Tj zCEMniGTXMj%HG>vV<)!O*~P7mc4nr|PE6I{V6;v#T_Di6!#_PDE%H zg>PLvBaKKr;#3-ACF}Rbr6Gf;1hKBN1^9%Qr9<;g2RO2LlykHHsP`o(WzvBQ2ReHc zd6*^sgvB~bcqLEj?ReamW9d+0euC{g=L2w~B~ro2=VtSKj3!auge(zRh;Fa?lRMRM@%bCVNQda&>jHom*LN zw=;X}w|%?pyB!D2Zr``Rv$y%4K)WB<{r&afHT(O=H|)PjrTqTxS^LA)WA;A}&Y7{( zF~+j?;5?6K&2F6pfbN=o|A~?3O>{CDM59E1*RX?E6<2Kli$JD>Zl(tS=v)07oe99=fP}?5fna_;{b!fuqQan3 zrG!gAV;PC-Qz%miF+yTt`Sb@wFfEm+xO(QkH#UH=99S@_t5%xr5Xl{IvnTld> z6Y6NR@CRT#rM?bS?I2{br*T-hEbK!7QwXm=4<=3yemr@AO^{ze4vz&K-d^!Y zqqZJ>!K6H(TDx)CZMAlc5(O|N>|e6Tc^4oC-tsgsnM5e-u+Dson?IL_G`h7Eb}@;J zkd#C!*XUHJodJHX+58SlSv(eLUYrtT133v^6(-tbO*UfA1gj6OwH;#>bRk8yWvbi; zyEAQKEZ_Qi(yh0jFs$lmtEzy#RYG1)8u11x*z7P@&OqfHhj1;48FxC&nRs@3@mzY6 z(P7EY%jssgwQ6+des78aV5Tm|Vs%_{I+l1bpmfY+f>6AJGbqEeRPN@?HwoWYWFM#g{5{dvBAz| zblb5wb}m)x?f2{VdEj#4GJtW{{)L;w-$_mV^POw1{=``JulI=WzIobycj=J*`NoI# z!_6c1{gwUpw`=?D`>XHTpRVp9D*1}p-|m?G>mFmZNA?3|n;-AnYX_^@nXF8)ZQ%tr zNrL87c%hx7TROjfv+ZRhwxz2L6U$!P4Ip^{!?h8Zk?1D; z$Ts!1IDnaKAVxWz%Mgwp85(PI0g{zb2IEBi-bJ{Pcvj_8l%3ZdU5gSgWzQq$1Od$4 z?hC?59J@A|k7h8b$>lj#g6CKz-AoWpP;b309%3=JPO-H|KGgz){A`x;Ewk%4Vl-5Kkl}f9eSo?~N zu6of%SHA2@9g;dFA7Dlp`)WMqcQBK(i2rg{@WuVwwkl10npad@k{|s0+9pIHz83%JQ>22y*vH=)@O91Y7kb^siE+L0QJwW%6O}FB*)d7-X*R^0K zxoid5-z%+>rF#W?kqQ>^s!CGdyy9z6)f^aJ0RlW$z?dj!oKZ%HcR$Rt;BOHr&+!q9OsrE)xMjVB;lNNr03w&jTz(C6hq-fX?I|+3L5hu#+Ln@F)$%(Zabb{) zKwPaGg!rJy&T;_A!CqY>#t6=CPrXYSwu4@ z@tg>(vn!BZ*KJ0C=E+HiZ#bJYWz{ClUj&L{pLMS=KQITZ>3?4qy;YuECkv+2O!6i+q-k zb>M=al=MoC*P;QJ7(RFGj~Rv06{*BHbKQ)_X_WRpUPg?UCog5cN&uq{#_jjq_%f0) z4tpl7S*q5+09;y*@UqStgG2WI`s4Q9&2R0W_kU|wH@<6oP}HBmO6G7yuiYNmZg%dr z{RQ`j|Gsj`{&|JY1VYLG+`Vdl$KL-RbTNN}$@u3xSL}!TSM6^PuG$ZG&e~sY9k)MT zI$(dgvd{i>>3#eCr9JlTyW~2VKioKHpYD3s_U6I*!qTSm z^;i_{sdl7c)Xq+Bvi-xu07(ZUuueb)TNp-TTl;a97@XjJ*cZ7H$iOmVCo{{(&eFlm z_B7i}cN6|)fN3h^1|}9+vS`A&T$Vbr)^P!IVtj_oNaYNXOxNN8jAytihMv+dT|gNi zu99Vs{$Aot?QVj|E{d7fRAIs205hzK%S{WH991i0SOH8st4ZLTQHDRBBZ>&{1sQPs;SS&qs2^Ck}e z87%o{*}=@PgPDn43FxeJk2Ab)Hg3@z2>G4Q1pihw4zXs8ov26yj+v(JhAzh+$vNg3 zB>-~(}k0Pv`jNnuv6(V|8}QtWHzq7uNUdkHerR|g}JVg~sg*+kq5 zVA9C&s7|i|V1{_X%-GovKD1A7+;--KkFT9|0Q2z1NxOONII*$>Hj(^yjy!Wwns1!K z`s3^=CKD&@qbnaWsrZl)+9Aec`|Zk!eK3dKwf#FVv0T5w-ksfSdp2xxU5l&rQ>dq> z0h$e1ppV*SZiq8I2rOGVY^1UM|3}wfxYu=NTfT7qpZj(9J$tQ^~0?q8-VJCdMHO<`V%)aSPbFeE1(0_AzR8ScE~O1_n#z&h-`q00a_VrwYI^ zAW8{^bc0dsaoo;J%U8#A^c(|3#!yy^u352we50;ZTn4l+QKbNou`s;Uu}D)QwxkQ1 z;-;bsXIby`CeVOm@GDcr{TsU$jl&p`g|c6X!i`zL6868a+6Mq40fKNwVZn4NA^+R! zPLwY)AK|2G9%+f{K*C_y$*I8Ez&JrAV;POs0GP1<$tiiJ1Y+uDw8K$3N;6+m+3_x) zh8vzrS~UkS{C6b)`WgjgzaL=P_<;#vG#)GSE9Kyq1-(4S3gbI%|9Zw%kBmh>tCgc? z?K|Qi?CNcMh7-5l`^J7IYWwG_XYBboz~$-*dwH5s*TrM@%h@CL|cKzTgyNZkR#qBHX zFxT4t>JD2GMH=P%u{It~v@;=hI|s&W!yxRjK6WmBEcN?X`a_*xjy7w$a|p2Ev3ro} zp8*)OGEkK#p(+bp#v3XSYm#=E5W_f^@ivFr0$i2du260V>SAHU`T)j7Dq3ZpAjxtL{2U5yt066dP(QLtXN97#A_R{=8BfJ`;J!#WPI@&j`q!`|2}`yIeQ zMP{VcO-@U1z#A~N-gG5!@d3;TVn+dt6!5ZHk>!dEB7LD=%DP`3N)&O>A8k6|KW(w! z9~mwF$wmQ}Va8-50L&nJnL)HK4qVi|KyenhC=GL%orw%BC+J}0maMpBUqrI9U#97* zreJu{6Kb5Z#KW*A^n4Zzw|y`nq=E{>5#2cz-< zj7D*7RS;Zge<5d-vgIg~w>2m&Gscw_TLopwOBstE{;SpC~Ay1B5$`c9jqel@Bv3$5syHlPs8kZxn!25CHJZW)_a_ zC<<>l7WL)O9FzDP#PEU){RiV7i~|F)4+>Dw~hl z6rxV|NM|8WDV<2Uu}Z6z#P~xLaFGk7i;-r*7l0-Wl1jQ5QBO4fl9=`Y9z+njL^b)3rEjBNnP!fOB)}8oRQ7 zxn170)=n;7Vh5qaZ%0@>hD&!nl?)9<2Hqlkx9vM8=+G3Rc-<8-hzH%F|f(PgYl2eQXT-Ck~Aq6dN3&U=*kE!FNw0c05;9s4<&l+TEH%bu~y##Mp}Mvu(x=F5fahHbTA`~ zyd+K>qb5=8E01LfS`wEi>9SV<96)FZ0JMlb&IDg$jIT91|8*Ol|Awmpb}%X*iJ%W) zlQ2_D_EF3&wZl>8A{LkP1S7s!H5JL|EnF&lzPIxj!*2`_5YTvF0~nvVWd=9MOkVK%L*=nc$YJK5 z1&uU=ky0kq;Vi~kdH64th5{Oavn+2RLQI$oIS767{TO4-W8A^0DiJEPZ0mDB)R>Fq zKFj%hP8#|6hiU9p063@w90CyST-@G8Krsu2H2|ZJ3t(L7dA|b~flN6ak@hvN1TyGh z1T+Gea_D?zaMMem8WtmdD&fRjj0Q(RW&#&wZWl1_%hQY%Hk{9CAX~|rFyusX5XhwB zL?GizDc0R62Ii5Z5!&h}u3E)nOJWlL=*?4ASbR@nhw@cY+J@%AFyvueUNEgEn@vz*iA zIHIWWINwWi+c$=fJLYml83X_>M9FudkkCT^?g2&|Il@WO@7 zlE&{i>r=)EIv8NgSH!2b~)vGif)0j-1j5-~$%hdU3gr(3l`G%=0QarCm zMW!nQ#DeLJbTSTBC-m?CWDLgRzrMrs-?xST6M8c{o`8RQ$Nc~O9b3TnoAWcp3yBPy+e-xB}!sb#$%%pr|b%lG3r_@!8BSUq6R&AD@@J%nLw zF9j?-JbP}xzIbXcA2Tld{+>Pl;)cDvd&7SD@{0X*ixC)$`=4(dv#0D^9>Q3(uleLB zv_0Q{ZNH$Sd3p0Z5y;2v2_WV{QzZR1M2 zw060jU$@eZFPgGL(DC=TkVuKJvTb$*H{d9nOfI%9d~7|IG0Omy=^nrYfKg|y@$K?H zz^0#%Q%e9J)#6^RQ^sTyDEg)57lnDGqSPwG!*I&LV3z%94s1~8o5(&io6c7e8cNB{ z3A_&I?C9AsMvHZ$(aF8Cxh2PPsVrUxk7GZHP5K{q}OvJW%97YT2 zUP{@?R0Art4qUwQxf{zHOuk{tXwfdF4=_<_!S9y*Dn35EK*dcN#@IM&_$h>ni`luz znOH8xOQ|J{&!zyRNdRixPas400???2Nwd_~(ARQA0Ki3TE*CV${zIcL2Nrp?jUP4C8VzOHFZ(e!NRZT~{Z%ZR(*U$Taj}K@BFsiXIgqAblq5aZC#Je^X z4IuG#^zT!+Fsmjbc^{kq$tY;bIhaUFnJsZ(1`)`joGKDox&~)*sre?OqYM`0x!lN$ z=Cf!In1jHJu7pumHsi8vmhIZDh=wdbpCsDLbZ*4i>~pj`@kU#8Ml6Cg;wli(P}16H znJ>T)h?IN``wJjbIT|t}IFk&{RLCLc`+<07uy%-uAs)hifQFhy9FEP#)aJo zD;b$x#6JpE{^yr=*|nOpmlpw;b8GF(OY7~{xi$9L>2-Gg=qfw1 zb2)Y}FvwQJ8rr(j&g@xl*XefdoZf1mqwbf5%ok_3+O@+7JOP_+OUB%bce1k+HG2zA zyk+c1vMet;-U`!lEG;_GBK!g^5L$T%#-WiM3}X2E#BkV1WPg>0D?%poZ~bkHAzoC| zvDPvYty!=D_6-2bbrZ$!O?#_wIu!{NgBV+=0_ik@s9+ZJ%I%Q7dNg5n>RiMIQs?3# zkd;zN`AjsGGN}Yh<#@Q#cudyzGcF2_Ipi#901JISk7Bkde?>x1r(xnzdkrrVnJxjk zu__Kgi3bQ0uxp9`fBBq$VH5=sAogDYI;{W2DvPEI65C9B6%Sk(`_Xa8KTMS65cVn| z|N6EC@cf1U_74{QUitsqdo1$bwZK1rY;ysX+0o4u;o$L0~7oXXW*bhB}di)b0^6>mg`~1K@`}XWP zMr(9AKk-E#eZ%wczq@qGeqeMWUnC(R`bD*`~wiP!)#Z5%V5owF!3vDBo{9D@kZ9RId6)g2v3@{!W90X(pG+sC3 zYM|FENB~nk?QRb<(W+!iI`8rltByf5I|pAjEUj{p90+9OL?Xu#2QV|%RvCzN(*c&t9o+rXKRD`=Mg|xrZ_{^0v#Kai$t^dSg=s$U#{|SKk3yi%#p$#M_<~kj!2C8M`x~Py3Q$muz`#;BGtS4HBXRIs&iY;> zvuPIpQ;gRp*ungFfKeBu8pgUvH54G9F}@aTF;RnErVERFWx6cmX1_e@AFh_s!7Pm+ zsnV6_cC1o-vYx*TU|9~pECnP4K8xs9CIOWRKt(0{7nSoG15lR6erzieh+vNTz!oV( zCgvks7W)y8097nsGlmYPWY%1m5@-;(DQ3P!i%BU|%;ml~R+T`84n~DpWj4E+9L8l? zSdwS6Fwb$>^=MrLCSqW51JQy!hq00LCbHQt`~Z+aIWGc%c07duQPIq@UJLtT0TlZa z?R`|Tj}b%c_aNiIMpWh*P|@4JAD?N2mQRU!<~klg%FC3I$tHqO%5^K!@Nlxp=46uz z?OImrSpdoJOO$M<`{CcxWPJk2D8|+YG7?t$N*!R5{GntGL-&`8$z=xiDjA3r1u!Y^ z2DlC;*DnP}-WaPQiuUq>Blg4X&+MyfjK@eD{QUA>2QHso*i7iyHg+-_?F-(%ONa91 z`K@*r>zA+2ZMJ(CH`_OtH`)EG8!@-sVt22uN5#L6{p=b$v3EJb%@wwP^AfZ$Q+9mE z6gePE?dqXvYRYaNTM7ehsa@VbZ3j1w*zT31wqm5yoeYN?*~65STPv9$)ubBM5IU6+ z90RCe74s1^P{fGg>^+ni7zcqNapu2OJE&Z|po+-ksQ8q9+b45yX807H(=11JkV0R& zl2De@5-|4Vxr?Pxp- zvr3unK7C3E-AyR_n-H>Rg8vtt3mr?upWdY-fpQE3E$EN$0Hhz-EWXb?z+nz!z7GMy zd3f!8z!)bc0PFn-v@A)&Wlc)YlM$$liF`|+joc7E$NTRS*n=ML;eYx$+U`1-az@CUtai`e5#`o9hcc{NNo zqZ*)GHv};Gz(uP1F~C9$F)i^08p{BO<&4Bu0xm1*U{*$WNt4TAtGQ7eU5HozBv5Q7 zTns>3LQvRZK2MCcMLf@E`yvZ}l{y?_{Cf5`)wZ?0_uh}O}?tV5i+%8u@uCW>}B zSsMV%jwN<%*J4Nk({wCL?E2veyLEJtT|YW$=k|@;z74&$Yu%8op41Ds-6mRysU=x( zxU?2ZF?twM4^uz!cQ!Gp@6W>)o&_rZP04T1c0O1sf5&4DPplNifckGO{A9jW%wOn8 z9U^yRaj;0C8M%_SipYCqx&c|0YNSkD==zZyFP z^ap#yc7U9O@p>)c#&-xgp`6dYc&-56+^?0 zO23Ss!R=*cfJS?osh&=o?1D{(h0Jtkn{^fBTYY?jl?8>kzpbvhy!W|2oy&yhNRp1> zt}D71SL{{N02u9MQUUK&07i>^1<9om*`RxY?s4f%IWm}b$TLy)R(T)%h5HF3cC;|% zpS;0g>P;xiZ#h<3HEdNe%v80wx+|+i)a6!~We#N6k7y^Ok(peQeNM^!h$%JN8U%0z z5*~f|O&fFdI*a<(0UH61M+g{|Bl66MZGf-m#$z)8BOkC4KtcdBi3_-6jj_bnQeWwk ziZ1rR#bc-~3sn;3-{_JU$+16K!Y;)DO}N+LC@f6bFCqhoF1-lwnu0MV&|1pZ_l?k& zMSW;1V?P04KCmTG@6)|}V9R6PwbhC5+3NUz+Uf)%lNG|H&O@PDDuIIAzW_2mlS{Fy zWUueLLFY4HmrYDD-AD<~&D2bs8M4v?^T^@IVG%19mQpX>*M$+3$B9iHi~vTD(#gE) zWM+Uyf=VZ(d<8557Y|@WNiM=cS*0&u*g3jvpJy4lNPVj-512pzXq9V&f zO+IVBla22J^ZsPOuW)w##bJ|C?~}^Dboq&U~rkv zl3#Wn`JYB2fJ0>YaTshYRLw&ZcH<~i5CEuM1$UBbZ~jL5dFc6*rZ88i{<4ha@ z37=iR7OtX(>c%gN4~;66U7w&BW7Q16xWF;xzR>Ns5;d7hVyB~Wj@Fd^974m=yNs2%?sQOa3v}7EE1uXfwdf>NVwCYSYRMn{pPu)ZD}H8`*k>X5hPj^|fQ#X^ z63*c&lxsbTgH$MovgBFppy*Yb_culzonbqs~?bl0(>EJ|gjRE;}CnE+1uEp7Fl2W;4n_b?!-_Gt}AGm#+om{iRj$=!-oe|kOj8r#PciQs2dK-!_vi`V28_mRK zh8&_@0L<2*ak{2q2QaHfMr`Hi2tcE5#_MDj_w_n(nE+JAS?-UKYB@n~puuzMz;4gsz>4D1|M1sI3Ll0An|CmQz{yU5^F9ghWFwltGV3x`1MFLD|WTeXP z;A7o9s$?7E7W7b?olXWKz%X5lSZ1TV@3X@n2|!Onr!xdV4FXCInCOChdzWFK4;YJj z>0744x#2S&)A&mr%<}&RF0TLva1p>rcjLmu03vlS4q!xO24LLijxpR6Kf^Rkv89aQ zmPPRO9oW2QE2BShpt2&Cu7%EJMeIAaD()X%#sA%2D`IY$kGN9wTo)q7qnwhpEb}b- z8HK&FhLJst=a4L?WM$bGvVX|pM5lP#EVKnVsEqU2;RsxO0Hd!bjfuu%ZcIi;l+QlK z2QV6!sY=Lcky>A%qJ4}&#aG49kL6t^gUn+5%49R+xeZ8=DGM48T=LN1Sv_obc5FXvF0CK(Sy2VBCULOescZnup8gLm=~eph;#IAzOZz3!`{qIVe!Rzr(A} zlAE&Z{`GIU9Aruvp_I|Z6azLo=s02k-&dYhDleSs@2;~7<8AqYX{;BnR74nSv2^5O zwaMN+7z_S%uCWw$idpkyl!+aXpFaeMa5O!^mK#gTWT?ND#D-g0T$EME^S2Mdlrks) zVoVS|Zy2CL<&WoD4d)v5Xxi^W0C^vF9iv39r7*hxa9%^&U4^kf3S&nVh82A{JDi9= z&!=k&WVe@XB>{C-65eVRNu73J!xcvo`ez*Tf2L0ErzNqD_dWpv6mK&@YoPD=peKnA^*>t@_uhULFHm`*xv*pTB* z^)^ydW&OoP){~WOP0?{MQSoF0T=L(Y0IRc ztxiWHH9jX}#?&{*g(<3Vf`D)_D=l|+e~BtvCW3C+4lj80~OJcWoD^zqDnVJ@&SyN{~C>XdKn5rkHAH2H`NlX zVwRGOxiaEIJ|9qF$-kQJWkvKqZDq_mZX~uM?rmGa?!_wr#@VKD^DShL;=lv;lxM^L zuH~WHRw>g(*)G~$xL>*~_}NVqa>LH!1(3}RBnRC=0Rp{T{D5+}v3N`lK0cFI?*kZj zvuE6v$CB6wFog&tHPUipE#CGm`h6XX0L3fxISyp-IfGo_isw6kf=uvxa1p`aH+4Qc zCH{MK5$R&mMdfuUTzmjb3d_J`X0=I-Bs7y%rim!AvfWoDLwryPT>d-2cs4Oo@ne{Y z;ys(Ok^m;3u~HtEE4f(26cEhR3Uh36LyukEv)=*C-3zjLSw#n8wPQP1BB)$$C)l+d+quGy?pxt2pDt^&tW0UGU)Bp8i<6RVZCK1O^>Hv_<=@tBFZU>1VX9L8jNal26~H%+-w zJ1;Uv?dIkTD@=xsk?ba-&~a$Iq|%P$6@!PjwU~FKE9^XC{tV-124E5a91%wZE{Xwg z`7nHKSsRIjqVMN2X<#nuQH(#`WaLbt(QFCx`ATT46(7&V(Sfla0Hv>?zq6yC)9FZa z<8J68Byf|DpgV~Y7_mG~XN;UnXOcsgmH~mGGBnhR0}+fygj;4HP7UaU(xSsHBEZk$ z!^!@E024O<(;0Ha$F`9Fjs?=hX#XS)4&b#AT}%L;W(zr(1+w%H`2!3y2mv8~_`pKn z_>jE|-3q%?^wc000)0}KIn0+)juH`%E@dl=L1uuBjH&amu1Fg|LV(OYe5 z@3T#9gSN7^$Ht2rZJ17GIWgT^2bb8cNi1W=m)J%$S{v}nTRl1oxX{Va(YT_MQHff= ztOt<62y<}@bmjUw8!1CimYHSMA>rn9(ng52N>-+_(FsI21SH(d8p^C@=yv+*O7 z@udn`L?d7$J&fyI0GM_xuY7@G@)A?|Z2DgT1%6{bfazmj)93dWM{U;l%XyapKD~59 zuCUSS;p_H7BIriep~v3&Uc9pN9)q4NCH+{i7kexwnKvraxC{ETKn8&MefP2$#{sd| zv};jKYUeT&d90C`DAW#IaC}~b0jB_F8OE2Z0GQ=;Fe@Y9vo$RA1t!a*-?rtk09f>2 zy|+ay;PExl?|ga?{W9f}EV~$Iw@$0Bl8Rqq%k1~r!Du!K&G%Issg@FO(hb~;RaU&R zZsl`9(uhr(6O{y0VAV`XU_a&Iy<~)J1Ie&oM$fzI!bKO8mrDP21+BbR{d6J7xar zNltyJ^*1bCZR@Ak*!1{P>uBh;ilPSS#qE~ElD@gN-qtOjvco&q;s&r9wf|B;YSK>c zU2J>T4cp$e6SiUy^)w3VWu5&t$|(DxpPz>LMfW1@%gdLH%4lVtKYwb!y!g?6efp!leDKJA`R;-J za__$VboX=n^~+oKGbyRR-o9eL-T_qZ(8;K7ONa@$e1$OcYb;>y;XU@nar=eD)W@fB z^xm`2Zf%1;zhS%E!(7<7-Y)Nesto8{+fQeW^Tf4{9BAlZ4l)kj)i-II`$*Fyqh|Zm z5`bjP)=muD`YAwV@nYLBxzyGHG8dMARDNYSxFbOdI)Q!VHW?4$zmvgVF;BF`6K$5KU?SAKRUm# zj#+;sCYeXNolZF|%bp*Q=$;EmpdplzrQ(s5TIq@oM&(=Hd$eYc<}BA`Z?r~63|&z> zj9FRt%eKFbH9-fg+HS<_eGBmt3&2M#K*Gt7T^Hlj_>8oqhw;?>Ui|SQG%UW7(DT&} zhCR$ux*L%Iw69Uuqxa=Bpy$bLKzo|$2!JG#=S2S1Rz?3Eka^qI(8a6{Ii|KTN5B9etPF z<#h|HSHWaFN6%Atr2Wk+fPwP*d$(oZ@?Twv>rBKfb4BMe11x zqc@G<)G5jOMkicf&Wmn*zOjlP9k}S?dId0mjNa$wB!H3SgtMJ+PQqe}c_8Ci^aE7# zZqxVS#+E5?0n|j*mOYLZ-vzViU}i;I#_TAp#dB@*$hdup6~}jkh23Ove-q1%nFPb2E zvE5pTpzW0PesixiSGQSNewp>LxZkvL+74}7Wrw#d;d3YL_|6HtczC7lTs3H$7BhP2 zA&ypB7|bsx>R{%SHdqJq@rLLe1hR3K^KmHu?JT7cKxY4gJR3kJ&i`ZkHi?!Fqg+;PNq|inH))A0<dl@&B0$6MLbRycXh-RMysAcm#(>YKGV6-z!Q}j1~BX#H= zz|3+{*&?Rs`j$DV1hUD9i#@M3fCi9=254d#e&Ef*lVB;O@-xWz zGl5Z|{yV}50t+TZF#zD4PiD)fi~(oStL{w)B|i3HFXW6r9!jQNdL9No(e8T#;z zpX}Eefcf!90OsX0d;W|L<_RORhmY*1Z_&1V_nrOx)m{7bE~Bw8y{wp@KRf4Kl2yNA zZV77yZ~zGxEw@?dC0!S@%!5P4ffe4_J5nV*d6@u?j71;-<{ZP-yVlu zc9cEgLB_coR@&*si)?S-kZtK4wB3xtuI)Z#*A5X6zGnwi`X#n?#bVnuJ#8BoFSU(} zmf6M${K;^dSmVZIqcZ?A48Zgw?(G3&dYot3+97}j=jGwb8f#2Sw<7;ANF0pFK41?+ zCoQs)x>qNcVBGB(VgQT-o0-zv+OztAMWb>zF4w3G=Lk(;^0?me*{x|xQ^eu81mZ_1t{tUnM4_6J;#1u_5*hM2Bq@?Sa`i7BB{C6JL( zq)Owl-y39V2ct2WfJVU61MOMh)QLlQCvGSm=n(}pZ2*lP^)UxB3$W^^qZw8=gQ{Pa zF+zmnZ>?#9bSoTrmyEkCkx1A8BppZ=JqP?gaa`FnyC2jiFjMN@ff8GQ_sogAbKKUx57I@I!rv@HxsW&cuTyD^@8fJ*vn z0>eH#wVB-tO8n!ST&(dmz~utQl@|_e#~GP`ux%S`*Xm_-8;l~huC=p#?DE0w>{B+| z$(?KL=$2Jj{^OE7(qrx9ly}xQ*brV$ea!#`R{YWv>|6z-Z2eN(zm5~+hA}(3b;8bL z>9K1S6lJ;>(LNVpnLftz$C#COlMBLc~(uzhky%q9p&s`%6QbMvfx7z9q4cryoO<>x}F3;N%6KCnQ1rU5-qiN z0ayesQoT$3n8-~z{y*p<|3ufxjXVSUm{crZ@^GoHo)c)*^8&1L&O*0W5eu>y!$Xz) z?*u$r?x(TG(BYzppQRE{ygKv}N@*3TMV+?(jxGR=(`o{)&|=9Y(v8H^g^01G6wep{ zNNe)4izXqji}Jh|FOewt%;1 z!#10T?nddC(#(YL97lkd0hnNx`Tl?WkdQO-XUS?y%mCEbS$B3`4;tI z1-UkL)>x=fDXcIF^%;%*N(o?Cyx5DUPwd4H5A6lO^71}oG4?J$e}0pWmc8BrT zXXs!^M*W#<(yk-4#4Y*Pn{+OB=wNOib>Q;zm3{Vt+#v}puVScrldk2?mJRkb4in#_ ztNP*iMtg8{t$m9{%(n+n^>3tGo*cEEJ%C?RhwYnMW?v#IesKLV^!t-`a{pG_M`ykT z@4PLzf6I_{6UzUMlasGTW!k^28PSLgolJiRAkzuhv;#!!4O{78Dk^Z-hA0sjX4$hA zqP-&Flj~7ku9A5*LUqIs#c-2u>5A96d#$@Yt2ZKZHIu-qy`G}DbEyLE0mWP=ic&9O ziX$IGAHY<7gxC^*sri^u835A&m^5PL?}5yp7?Hi}a%q(H_QG@4wQ>uzNvh z>1rXWe0i0*B|jP$D9d7vN$WC12jj+Q>|lCbz3;-sx&fI^#%8K690Yvbkvb&rc@%&q zYk!dmoYEh4zpEMjj2=ZG@OhRkLPz5~%3NTW#$_|UWj-%65dZ)fr>XfJz^saT%T%vG z2EEN{*l4SHe60|`C}v*im6u4V*`t?Msg6e4k(u2L;zQ|1eBdG=%9faknYSvJ7q)!7 zUX8@mxrolp&L*F)FMuhg6VhowrM6QM#;&+omy$49#tlHZF697*B9i5j>@&3V0gT3C zs(d;ijl`5+;~R--_o7p^Y;RP)oEPVg?3VVhz_^fHkQf)=?@M5#i_)c2Y6l}r63T_K z0WkU+x^W4x^gVnuZk>u%h0viDS0LtE(Z_x`-3H^!Mj%u`y0x<8+&r;_JfDNcElfXW!^=*iA5l={84b@7<(Tt03G7>AwMI&CL+tl$K> zj+5gkmi;htaIYOBcucO!!{nm37L;3UVy@LXz`{N=1k$8hr)7*BZK*Do(BCbcrfya4Ol6=&|h6 z`Cfn?ou>XyN-Y)eRq=C`0Ycizc#+F=CHgt|y0Pp$R55f6(R3pMkr;AUV(3D&JBpx_ z@@2A!6&HbLnV4n~bR=O;l~4L5Bd&RLCG&U`kj#U&JO=@%Y8Eu;k5T!5f)-{0UvD0I zAeEoALDC4(y@ky9VyS}(2UJ4;4A9ZFMErF&9n4$+W+C=Ep%(T|vL(&0wD|cokP67R zZ-xkR5iupBF*(D$kiZfV%r8GawdXAMe|+$r{rEK^%g?`{bD{3gxj;Wg$qR_kv3zz6 z8~%g#6S2xa%Z4AY`B9H|0GTfUoSXaYR~U{zl9(z$xxQwZ-CDQWzQ7LV+uiHz;lT~| zESn}? z0&t;Z%<6V9BaFm&T!#Kd;IeXv)XRS2l>0Hp>}{~sBV9JyTxngU*!3qTSQg_-S@tJ0 zu1piHo&$md84eHHu{jGN_IIvieo6TN$EDS3pU1sGmBF+^l8Zd<5rvFdbw4cSK3K+m zs{+H^N&*udB^h^+YFt9<7=dZQ?=1V-zsOa&b&l!{2Qt2D$NgALvR7=f`RHRP*~#=G z#`FQqfb3+TC6A+vk(2T$oy~|wXUdatOMY+Buic9qwb9jh-~#_!s z{k#6nQKNA_7T7o@+Dxg-QMWVd!oskdnMtN}DVAcUF=lf+9mJGN7=g(ZU@0BTvgkKm zX;h{X71|Y@k1IxOua(lBlp^dZQD7K5i4qoF>Sh#wEI{z~GTw4uoruie{yV_rC0ERMd%DzZrfs3jf?TX5m^P(3Gj{nd&xLucsIpqh>xSd)Q_!+d0vGvK{Z`(EC$Q0pM@D&RFn3f+ zYm^1NPDQ@be#x`bp>v@`V8{a?3;0Z3{kOH%|jF zWNBQ48Fv2o7Uv^&61)AA2X?#Qv3=XN*sk@Q@HR3^ShE4s!VRPoGBVq?p6+8Ew*4FI z0`%k0I5l26%-9U|{{GDbIIYI$a%|KA%v5iWdx36RG-g|taFSdxK^HU4Xl;?}YNlA4 zwp3JEcU`LuHg;nZ1Iwqe%X+JbqRqmkHi`xEyjTnri5FOyWEG?)mO!)4C*`vEV>$TF z13c+!=pYK`06Oy+2cqOJq>AR?KR3tEsuu)V)%-wf2n@ISpm3<<3tW_e{vIMsB%<6` zcvdW3ihw3g3UzM2GINwgi|q1~87-*f#}S^ zbV$K~T!^$Z{4PTHZx12wMI*Ne#FUYLLa2&jKZ5<0I+}3CldO~LJf%p=~<$ip~x~ft5H}Y6(J(Wdx z`XyU-P^cw9;z(rYnT9;Tc>yY`h~KLWQe_e3G*Qss#ZXkq{8E4;Gt3k|p32|FfeY70 z4zKxq?qfwvW&R7ma4_}>Dm5aj{q#4p%SO^Hoo)XNJ=tksa9UPIj4QxKAk&G}eit5M zUGvCxp}Ob)8IWPIKhwbs(7lMREZvK2`hNo$#$_a3_Pg>x#&tBlz_A(A%RWYL`gkWs z!fu?#qrgVvIBz89fy}FNU&||(>EegY|3XLuO2njI+3*W^0GdT%Sje#0cU0z?QJKbN zO92(_W<(^A_GUScUI8!_bO2?vfF8imSpYKXW&}I}1a&w97nOiTB1MhP9FnB$7tJg+W>ab8=4uA8^z}T;{I>xTW}0*;N~8R3Bqot1ihV|1D$UIGzEA0|*Z_fw z$N*ZVYxf~g5lz_nsd2*9SVlJ&xkSft!AOhYvk38Ge|_DHXXovTQ;wW^RRR~WmC`xc zI9CErG@8r0l1iA;jVhPLuySNXgZ6bYax-urQ&Q$fQd<+;^#K4ANLG4T7rT^gNDi*q zJ?NlUV2hnQvBORuA#e=qjYF_-c5T~gJGbnxt?Rbhj&<8?!}2wZ!C;c@$G)H0^|^f; z?IJF=XLhdyY}UBl%HH*hZTCi&|4SxqOji7u2u`3Km>yw~I=#r&E@pAMXvEe|VhuCQ zcmbt!KRcHO9F#jSA{=NU-LeUWPM2)b`!KO=w7U2_Jm+GuevbfTVsXTdq!Yndk?x`B zlZ8%qkWc53kG`Z3s&4*#X5jM{05S`#Xf7Z`Rrvuh3;nGjB-B+AQP$F-2>j)Gt4tHQ z0*eITf}&8nixi*^N6C%S+a%LfBmw~GxJwkiKi_KR23dn&n0u_69YANonCufjG*SL; zB&qN--C*L_StQ`srJ%7ak~VWcU~DIigiInCx9Qr@_fgj(R-3@ZE!fq$&_OxxG0FoH zD9bnpgkWMRr(=mIk|TqALynRAmpNScCv6{sB5E^+UA${}0j`|32RVOw`|TDPI_8HHk&mS5C)SJ4gpQ zWh3oVwtg9-)l=8(+j~DiN&eY>WU;TY*iYX-v?pKRw`X_hUT%M3&u`qaUlCW@XE4WZ zQ`auo%k#&`b|LG9?)g49{_l_Owdc4g+cmlue9Ev!HiMAjOfdl>`Hr1plyw+N@#W^=vg7kHDsIJOOdS#OW`uCd4a*V{e1>Z@y)+NCv!E|;&e6KlDKp)sF^VW#BPBMnTCfN>=< zz#qwT`4b@VXLcvvQr`(DMNghF#q_+!eq)q*qcU8K9s6u1&C-F)jCH?=1eDln`u-vY zbT6RW0X$T`4#o#C0+rv_AkQ5jd#Miqb3}xhu4r%}-3>uvjxYeoXmlpFnNQ{K-lp4` zM2|BGjoB9uAjX2NQEi{V<64wBzywB-&$ol7M?3`$pU0D z*~h3}Sx+#Nb!<5RCL4f}_mLizV(H$edvWix;LiGBA>B(D@x0NNwjdQNmQL4|d`@cM zw|B4d`X(Cr>_NK(Gw1lB{kC`eZrj93ZqwQ=wszG3&9{}ORIMj!cB@CS9izj&zPk6Oxk&U649_$*l zcDk09nogK!gpZ*|81EWk3_)hh(1?vSG+S$WF-C&vRvDaN6~sJO&JVNd`QcW{OE9CGAH z;u%|Fu@A7gG)sKQ)Uo)}@dP3|mK9E{Vxu{1#B%^q>3tVir)UE9PJVp71$;e!NCAQT z3|{^YK=e8zF|;m`e}T34UYNx}6VLXKv#uhn>YMv*%_v>L+8r=(w1GCb0!wlPxTlWRJlKcC% zJDdNX&hE4y$%oO1?CIeRb{CPa0Okxk76~$stX@wD=3%bmBX;iOF*~qlr>!6iueH9@ z3eqbqGojc@a2RhaX|rzV%)`xn><4jNrjyagOd~RNF5~UxxPzBt&{|{NmHAj2!6HL@ z6wMSN7SML_-ns|)I%E!*u};T?P?mBYZ&WO!@K|;-DordT)>Q_S7-+e4zZ#Jh@VC-E ztVE-G?mL>ah()H{DRnY+2)-K-RXS@Je8^O7nC*5Dn&>NyuR3S5*au`(J#;dvzBzyL zioK0e$ct)h@#T{dkiJoQ%U>O8h1UUV?EkM#(O z)HNea62ORY;r=k(h_xVd1-O*)dA{zYl!#kdUzd`ZUPk`4l=;%Rc*=a1^{}zT0uzhP zXPYmricBY+v#}m$Vg_U|DYjA~i)SbP(=r)Oyiz9>45sWBpT)k^_tLFMm?x%*XDOj^ z7@$IDqc%AUAj)D1n1laQHjBV)b~3X57RWee90UT*_5~!_%=ev9C?``rimoeqZW_Ro z!8j=c6@S{N31}rUY3X|bgFOylzDC@3_0nOxcIlX1zjVe{K}bighjJHTj+Ffwe?W#zvQapjgZD{U*P>J7Y*r#SsB zW2U`idKr(?wgk(LX-=JsnQ`}Y^;-ji%9@HcYp#JD(7?{7d&;Kz03ZNH+Jj-nWZk*t zBvF=FZ)$-xho@MLU$`|ajI_pup{{Bff7LMls$39ErxN1!EG4r58peWUbJ)3%A=3~R zVT}=C)*csQEzzL_V$n&U^v{B!6%Q-SbuZd|05HD&heVCaR~N`=_n{q$q7T$LmCOoY zR2RtDjqgd7^1kS)8EB4D)w%o=8y3130ZSOyK@^X%2t<`CnvUH~CLK`PJCF?^C&ci5 z1ukLS+QE#akEQJ13hNnb!%03K%kjPn-YW9CPW z%tE>!0Zbq#;|QhzF}yA!(N{%t-Fbx{8soW05eERHAa+lpBun!W`o<@YITpdLCG3qr z3;9c+#k?2ALZAH=U_VsXg_|(S_Wm*3xNMCb*?qt+oW5vZ-2BpR-@Ie@zXo7f@V~@= z%$~F4fA#{s<92q%2Ec^8mQ_%U0f|#wW4nhKrE)`;vi`*M zI=ixA7xw#m9N=6BfNt(0pGeW$?E|)~9wrwN4+qDm?AFc=Zmjkahl%GW$%Z++)E*vK zZeOwMyRl(~omdLVgt+eg{Jb~Fqq%nGG*J|1>;wR|e%)qkZyvOqluAns&$qOQBFl-x zS1qy33KDXy1;UBqCS-c4xa6tsItMPQk){%BDc}H<7>f?b-$i8WKq)eb4kWTE63FN} zQ%UEfT%joT#Hu*%A#uE>Bk7uD=(T@pdx_rl>--n0%I_NOg~^IfYDAy;3D>#p6g?)31EilFkS%*dzTT$ zU)sN@1T^Yaq^ar0`u~-_25=F;C<;K&@v+lx>5W|v}okCK#V(#XVS9KXZ{0w)3-jtDyZ5l8IbzpvxxGS8$E7m| z>>{Vdv(T7Nk;!okCeDG~TW#+S#%X}i##Nha?b1!QW_qJ-1ZcJ~THCyC6P?gHTf1hX zty#UnrkAX=3G@aPW!2VH+id-$22P++SS2k2qBo5u25XwFExW`93pi0G5M&jAh9?mH zM_{xyFO0CZ1reC|g|VazvzB>b);KqW8-A#j%@47X1tC`K&yFNA#EQ7sS|dVjJR#ZI z76vk6P+%NMn4IRL*;z$GgO6aeDYs=`h?`uM!_mKJsUC%PBn@^~-Up1~=swEl0BZAs z-B_&j67>C@g`$mnY>z=T;ORO+Oe$mdi@2?G1Hcjh@a0(DJMI2mg} zAIiQZTsltF(aD2xjH1Gz8%`DgQ2{tFSvD&@bZ77{Y%75~P_ zOt$@UD2QVIAHz*f<1sPO^xr8(zVdHEI1Kp%Z~=_I=F_nRvcQkRaXa$8Knr_sp@qKf z&r&}azzJiF7Gd-M5@Pu=RW{s8GU?QMTeEbH6VvK%d~E-5yL0tRtoT{)OJMmkk1xo6 zdCogv%=6E`wJ%Rzwr@^cflhn@aM=m7YpLz%o(5QU*n#17wySrAZEjU-@B z2b?p+Z6Ae@a%veu-j&eh$4ExSVt*+_kfrSF`g2GtZEm4MS>i@(Kj1F${Sgu_p};>p zM2s>-k}t6DKS6x=K9u_VmaMYV+je8@dWt|jvX97`Ik9h#t%RC9gxhjMexp@q)mm9{ z8GDr~miGWiK4MB}_mdrcM0~f{SUW0yLdW{+%A9R~UnOqJi5PzR`;&*m!ICZ}ozZln zz=m#79iw~XwH_-|QFSdG80AtOkMEdVlf@{L7S8AFA$^o24vOl?L{6c@bT0QrX{Q{4 zM>}J7zXBRxdTuql;Tp#M^~fb!0GJMdrDLAA|L`gHdr3s)AlmJRyi-1dCU#0F! z?>i8KsiyCzdQA&?fq+Y}6vIoxN5qsx0E_6rg|H`FC>OtUk5vZ4jGLj*5oGvLYl044+KvOvcPGx<5BpODt#_m#oLtq#UzQUEa7oa7U^sU?5HVmz3Ic}%{w zmA2d74LByBzkox>Rr?x>=x3J?+vhh<*!{cL?9PoVbTpUk%K58y{o-XtXqOm$T(aBO zuh?f-&bdzK3RWHGuuVUM8R79m`v907wsZ4V+q8O*21C8I-a07ARvUr(onp$q_5pfPwH(5(YiFITkWQ)nP z(!h9fUSh2_FwW`&qO56Ql(hy$TPtrj2e80jhyW2_sZb}w+ogeY7YGw8!vd@gci^rt zp0^;-YDFuayU;1(V*uk=PKK&@=}y#X(mi^1^ztp^WKTDsy-YsonvRJ!FT{=Kw8$?4 zbn@Rto5M&Xiw-4|O8Xmv(ANQ%KQL;ed&zhoJC%3+xao+(3WJUACFLIg3~mH5EX||P zrG%lL55;pVn4OPG7BR|c55j3#!C}4%`uEpel(8y+9n9~6Md0F3Vx>lB8l~yyR|lps zoKDrTj9emNw8={>lo3oAC+rZqs1OW8gZ?&)Wj_otenwRYwmbrx;J5s!KnsADyZ~Wk zK|&Se4Qy4`Y`6Wy9Is!!#@4P_!vTWG?9*4B|CoZse);KV`}xNg_Un&$#qhru_aEBV z=dRn`<5%p9edhs~UADV#rJY)|!;X$_w!H(Z?a=5t+u6I=wsZ{J9u6B<*q7YKRrwsd zlfz?^c4%a=ZR=&+TH9{RYC7EG;!44(@D-9Nb6?jh#=0f4zrn&oZ$ z$WBfn>Sdg^Wq7geTe$(T??J-zcCmNdXO~YNXTiV0HZ7%7?_X@46&==7)nQEqbylBC zm{?wg^{@|=jnPOOhoPn#>u)3gubvTEN0arJms)XTgr#EDlY%ZPogJG-q3N!pWe*3i z$MO5t1jBRcRs@1=ZFDgL7~Swy+F`go20IcTzzAge0G58b87V(0bwOS1csd~$NVKW?O;_{Ij7A3cfL9hZ@;v*iyYb6VQ#XBYtVP%v?|X$o zrYl7(6Da17)eQA}VEHc~!=7bCzGu|$L1YjhQ4Q&P%>3I3E&!_6MDvy9ioCs4<+JE2 zNO1G!jdU3Rfx41HZq|+=#!dRw4O)I>GXhH&^uvu?>?*N^WS64FYA)IZr|jn@;udL) zLDYWc&zNgUJEO0m&)4Uw6Uc@^=0eW+-rn8?h8Tb$U4zd8M$2_|3EIGJb*qX zW|=@nVo?E>>>siyAE5X;7~lIEe+ghbK0F~sfQq`83=;8VjOh&Xeg`lpX9Kd*F9yb)anfWOBLsG3Sx7PNo-(eSzpRliPUA1pu@!Yw7(v>=x zuhA!b{l({Y|I2%HH(vrgH~F{gJl?R|*RHv`dF6^-Id{&^96Mph4<5AxyY|_36xACz zWeQ+6t)iRR02^)hUj7a8z(K}o=g!(iK<&W3{kEMO$G$y#Arox3J==BwMB8mAUCxd* z>ueh{@pThZ)?3j?2UBD9NflNVoof~08CDUNW;J2SRv(^Z^`Y@r7aZjk8id+_P&X3O z-lZxq)T)9p^$ZTMYK$Ihu~M&J7-TJh5pHiHazN6%>_GTi#Q?}U-RlPIbTM)%=H@J| zi5BnDm}v1X=Vp!HN@oYTJ&g7)1uS#(8H?or8rh7-vH*^>x8^|7Kvj=pfF5(+^>=%j z?DtvzbK}Y2@8XugJU5EnP6VELZlMmy1j8Ov$r)LJU!Dd3Zxu|)n6HA!e-WUl1THEi zSq2D@wA@#gjVRbK-{iKeoSSd}M->XOA)Fmy5PBe0*n0~slpRqd*Guf|5DVewjer~y zOi*3qM`Q@iLh~{w!OF8SitJp(_!L)%t-IV|VFM#3jZ=>wId3l{uyp#DmozXh>?hI5 zr0D|5d5PGV~?dVmwb{e{EYe%nrwt18NN>uVs zL?u6fcyeaxB0Gq6%XUVqtFYZ)&3J4LjuB&Yw<~H}?bzfZ`+DCF7pMFUOa9Ms@&01l zV*6|@#;VH~(6mqJbWAuU3b zIoQw!*wk5baTx)46?8cDHrP^Qy$$8ohvT#WW>I^i^_G@ec3_Cb(zPVBThkaco!@6F z*Mt7fB6`F_4pB*S6$`+NU8t-fu}8%$6J1%lHvx>qx9V6lt;nEz5y0dEC~_EaqHpbm z0T#z><*|m0q+0gJvgmgX%Isg-=q}o^aOom|(Us`J)NepD6LE}}nEb@FRCnduiOl4> zj3_M`^>1R238WmTFlv+SjLb4+psCy$>1zZwp6?lof5kVu=lB3-#?~M35`a0D znybILk`BgK0v-X8_AIKgAOOf$Xk*5HS1!GBrj!w*8V@G*lG3tYOaIr@0?M+**|q>Q zF5nB$@o2&@xMWPpjar~0@ua{&Oe#@#6Bud4L-A9HlXBC&;>87+XwmKpwX*`FQn`T$ zTymL-7NaFm6|l>Y+j0(LCMS-h1CTjk7Jtwz{)hq^S173k8rsV^H)c8p=@|qlt`q|x z1{eSCx*(qGt89(0^m7Yj_?iE|>J?ke-MV`*7JB5hYXilW5^HA~!r&w!g6Fy=rO7{~mcKL#RL*UbwpPjcm*Us4& zw=UV|pIzngCUx8H!1B3)DDC>SE3Q7fdd+TKzd=Xy8JdTybUBxqzn{0$$IigWIqFWe zdw1+}kB9aiv?KfW*@?pk?D+5M(7xTa2e(_*_Kh2D2lVHiWO?k{w8a6;26i+{$>!)P zX|TG~Dk89R89$_B(3oNQ3ls6)O0H}b-K`)jqi^fKAfQ)PaazKs0SzO2%H)8Etbe%YLKclKB7-Zpp`~bDP z?C~K^01`!?1UfBE$tM9ETmTp-%X#lXm*#iw0EQd390rnkemYD3lJ`AkSw7$*T6H=) zi4+bzNwCTy=q|$L_ca4B>S99woeqOti&NA?JN|ts>&4~05DX^p5y+@C78B6;{VQDz zG0E~8lOR)jq-cbp5$u@+WK!gZ@H2(79}Gr#8pK}7pF>F?qR=_KmV(f6WJJbUT6i4v z<1|YTi?PCl3@cABv5K53>uVderIV{|)yj3Yo5RD=qsMLYrtP+JIbd=05}{&V2O|gN zpHN%AWK{Muk1rlSw{JfC+HM}bVpn&P_pd**r+#{G)_D$PXb~~5Z;k_if z8-bSnd~uK2#ohMB)}?lO(I8{BRsg1k5n3yS>108rZD{JUBaFW;u=u}%yTmngE!Wo* z4MBS9#pR=R8rI@bSYkVem)UZD{yodLVcdGjj_)~u3F}^jmRoHZgp|%I^jP?nX%sfr zhUmAg-MVUs>#nM__No%=tSNy`UuwOLr4C?vd4H^>!FtOpEuZccE(t$&iU+MC?CN1l>0sbq}28*F}4QX-otZ7eia;s zEsJ7^J&=Jl#wg3Te{n9%bR{Z904NGTK;r`y?OuGsP9MO$VyMYP(=pWEbmciV{{}dE zU**g;DS?rfRf7|NVv%QR41>)7UgOxzs3vg)@I25+%A{U%9%1}qolUg@xn>sm`k3aC zx;cB^UD|74&(4z4x#Ysml4ZH9%a!fnInjEhnYutm%nbpMXn^Wq)V0Wcxs=gXi9~RW zx$?PTJ792~3-n*cX+BS~98L{B0i^>MU#^VoNmP99tIr2meAYBRK=N6|_;$sr zL|V$H;g%DaWVzAV)>__TdpB~E-@F6u%MoVhmjRax4s0|Ya~;ZO*I|+Jc??Ehcza9O88>p-`F~@X*~bO4C?P`;!80_8Dka zk{BUIVdo(aF9C8c;Gs@Li`keN=Vk3hqVO%#7)vC8Y;GI{pAZoYaOV*rAYjR72cr_e zWO5S`z@*BAlO2nrG|ypV2dk|FL1ykpoND#NUjN8} zOAz1^1PLL4pCgEUR2+M$+@u6c3J~m=^#GVK6`bLKpLkH!gd6|B>Chau-ql zXLe!BX*;rHpX~-*4vcNXkdgz&&~iHiHTe5O2rRKNy1#oh%lhR|mAAnV+hkvCnPQjH zWjp8^ws*7>F>1(EUSf_RMu5O**S<58&ec?+Ukx2QuzJUcfTwd(I2PV9o1ib;Tu zSc)P6I9UVtB)NLX=u-DUjmWZLy2^XeNh0WCd}Fd=WmU=X9Z$O|_Qy5&fHg1{Yoc>; zNtWzhJb+;*qGBnpQiQUvx&f0OmifIb)5X?OX>Z{eUT$vziwr%Cue9X%mh^ni%#z=? zv=_j5AVU{312O^^=iEF4L~bv_*HHOr&n|MA`aQ__z(wu>&J#`hAdT#1)c&rUndx4n z@|V?&0@A#YG_NLu{^~r=mH;xo5VO}bKJs~vx%>onED4<46ZFVfES}v*JkLqs1{=>9 zD~=9EEEq-I3RryL;)}kG0(j!MDSL*5+?+L<(w@eFfw!;G-p1{2^giWF#nd=V9gBb^ zmp`U#Uj!DfbS5(Z<3h{;7$co+wjKu&LGCK~#I6H{$KyM#Ade}Yg+_BBJGX~kosB8-^ zxZ9YwAKJdxnP!f44p=Yq^;R5jD-tTmH31msr&*~#CuzS_t0yd~F)ZC$V$!WCHq{zp zliAV4T1`~6Rlyjm4nm(o_>;zF75)H>^eV8=YUc4aH~R`6Gg;1us7pbIlEEIO64F3p zAVBpgu>g!RqUdzxvaIn~%wNzpz^aOaU6sa7BKJc&7sf}*sL5fJBw$iyzdH|B9{_@# zikzO6C|dlnKb=#AW1GplOl|{?-6x?Zbatn?;p>Vb9fP1z*)Nee8cU(C&gB)r04iaC zivY$IbmTA}$ndBx#%W;~k!e2@f?h@kE}!kc6Ho#$!LZtb|2oHYF9H~UI_%<ua; zx1Od7>u##Faf06lSz`B*cQVAye5jpedP|4(HuqRB`SnWx7*Tt-aq>TP^rY9V?m5Q6 z%T1Dcw`Y^x?yr!<|{Q+k%=#Kc>6SS(>{ z@s=AFXJs*5m#KM{&2BJ1kenEpj~R3~@f`fru|^1BxK`BFB>dHjIG0(g$0}uV!Dvi- z82K*Bj92Rem824qOt?r9a;Fq2Qi)ex)$EUPRsIOe{tvAc_E;-6F0Cxx+u5nK0|p)3 z)H@kDb)s+itzdewZ}ETz_LYFqb)7@wb1uHI*PN~t;{$cvujZo^Qx0!T;>xp zdLuESm$^~+9(_Vbfr(5f-PC;cpaf}n{q2qS=F#DMUhioq)Q2X{VcRz5zcCnM$f=S_4 zsHdCOZgiC94J=;wY}#e37Ok|=&S8X?9V}PL7>Oxz^y<9%$)r@KSk=5FYr&16kx^M2 zp=m9V$<`E=L^v7ZzX)_Pq2b>Cg*{9)G-ln{t6`TFGtw%g!zi1DW`#Y9v!fUCG~BV_y2%i48W+1$@>Twfe#po04m;og$4e5 z3PtmtlZNtLK$8cpxg5QWG&)7t)d*l5`GOH$1`BqHEmOGZtCBI{jK`KGhFwe)RApCC zlT}U&gXN1rC7hj%ucYP=nc2&@ahbq{9ZWdjqFfm*lwF6<_%EEVEediNJECy*Nnrp? z_=lKpqTv{6DYyRm0>(kP)>~h~2#7sH{mkB>xyc6U76xHibu$|wU;(qabls>WK~#MTCo+U6<86KpOVGvCeNBGDyed-%+Iy5oGdHJ z$Z%DVm|}%VsjiBW)2u$9-(_jJbztS+RfcJ6R<4!DrXj|RwfGP5a-+MA&>`eQf0$(Q zouiB4(2>SIS36#@SKZ2h?nQ(rFT&kR#T7}ZSfnL#kIIN`sF*byfceB~XMbw-^FFbr z`LnEL{zot?F`>kQMc~rK4Y!*cZddS|GsQTIk9Bf07V!KAH0o$1g!IN?ee6K`SdhE& z$Ce*(=|y3$>OpNU5u|6D33xfDWnXFkBB7`DGJFkX$EZV6r{w6&9%F5Y&l?7yM2lAW z7-f!CCaN^w(-~%>Z4ouuSL4|At0w5QRLY8RVPpWPYBAl{V#aEdL2pv8+hU@hUlR>e znco7H2n;08I1sNL??~qMxDTJB#|4tV`j`Segr5|$+}`xCQAkdIVrwYymDEk z%T&bLHAqyLkDMUAS<; zE?v507h#*}^G=;O%d+<@U+0btke{jLNwJ9g}{4UEIqaRXV!3wsq^ z%Mx5}S1el1NqX428~Uudywxf*s;nfsz%phr7F*zfOC5{mwgoKs0nQc_<)SQW{8b$i z$#^WnDzSo5*HQ_%)cA#Zlw!J;e5HCa_s)S%tR0K?6WW7R@wqj8jV372jq@XLbU*|t zb-!Gz0q|tlRjHi#^FKhXKPQ49Grkrxb^(mQM6t~R7lDl``+X?kqACMMq9SL1yZ|?7 zsM2%&okdLnI}VXeloyi8qCK4sCIgyq1}@JT-1xP-NnniPv#yClRj-I-C0s_c^!F+H zWg(-IWsJ`@MnI#|`w_ejv_w`^vqr-%0|!d9g2JNSU^Iv#KZ>q5P5_e}#~vZe2CH+e zzb4lP>k6>zDYM~*N>21Jrt0f$fDWdg(|r@fi;2NWTfbsG*AF)NM^D(Hour~3KW|U& zq1u1++^P3pK7U|8zxcsk;C%V(%jfpf^C!-(UkLN_%U|sNy$5y|>hh)YH`oQ9wJXOi z+h>Q#COUY=zS(!&zTbbsZm*)tEk}QnRA=k+J8W|?1b~WO+uuBFJL(lp*|BNhNfzB=eVu!n6i~^i)~TMqyw0%9I8(4-OJB?6#uDyuF8crwzhm>igb zv~$1~8dHqBMq^^ddH^$E;yQ!zsQe4Bs)To3O90U_8lY0LB9u-^lDY3zuHfD>X**N`L}2 zneND=Bde3~J|>V6xCl_%pg+4}AJj@jfIj9^;`?l6oEVc5HCi3!*4 zB$|Y_>2QogOd5baG8z}u>XBPv&1Vh&gMk5k}&@e=y zON@e|T<5|I1&~Qr)(PO?vNPynT>iX@{fewrd^Rh3U*jYJh3LT=wQ2O`oeGrG;#ujt zb`#)``>-2-0S@X|#QM@7Sr#z*m;)n$jL+vw(Z{?mw_>^GIx+wkMmk`TLy(j%6dB%W zkt_glT?(J85uMz9-KfrePp^ZKA)cNmb3CcLHJ6oELX0Erngm)YJWtE}ByMV1_=?4G z6Vv!Bh?`~@JA*)eXW?{cvDnn7`OUQ$^gd~U=rIBi%5icIK^Pbp6lWE%Zrbbd2%A`L z8=;nNX8yd5^uImW!)Ts<{OBn=bsT^>&I#|tH9LFux}7c;qj)c zizu?sodswBBRw8HbkYuSbJ)A_HEziF~%^@)JSaO^7XcK zVwp{kt+d61Saozui!jdewBH&FnyfmhoRJr&$4}zPv%!ySK>~?^kybPdCBGlB1K7sY z0y1^}@zxNKVD&uK`T;icBLO26_Go0PxUs8>K7y9a(lz6s0oZcPVcCk??Rx>1kMcjC z?jo0D$4vap61ldb+|G`U0@|)bk@;ebq1M-^P4wqt%ro;avdsPn_85Qf9QHY?Y)+=4 zAuFCb?Vpe;02u*LF8i9oPjMKa)X^x$T5h`;SP99GEFMa+yAI@x&G%PIWhgPaq39(d z7z>Bffrlc_)9WHs9%6Lr%4Cs7Ck(}Z1YJzTf4mOh{K;ZffB1vN|MA};wEWT859z=a z#kfxk=4eE~k#uB{9AI=9NyD$Li74gC+DaR(D#k`A&xY&EY>4iqzfMBJIt(3~ZKSmW zOPF3pM6I@Lbcyrr+P!`=T>u1*ojdH_^^5k)_uty{Z|~dlZ@#l<-(YU}{S$o2p4!VF ze}cA*vY$o&izg&oLI8M*y8k)ZFwgNTd-TI&d+_Dg_RaO%_QRE%_T!b?_8rauR~K!u z^YyrRr}tU+dkHo&Kht&=_u7$W_AJAUz$Vw&MZ}tSw(cbxhOP&N{@tAi@g9SfHnkFi z%V}HJIc00Rmf3jSpbb=Z+O8E_usl0&$2jb0$uD8?F*=#u5EaI|$E^a^Vs>PqB?shL zs$Z^U1ZGWQ7bAetxU3SR*E(D(bvL$x_<{C5-ZAb-}4MpH#3tNrc4FXVuh(Cw;{9(S<2z#RuKt(mo^M`n@M3w`AA34FK z*U3O%_Jh96NN}jST3oQ2ki>s-CKigE$UoggeozSy4Y%=^!do2nt zo+toDBQJ^Gq>6PSC4eOn07&B(oxx3Ax$8cF@wpNUR8)?QAu~um*JZEJZpzXn8(`6r zUf|-&XKO!WaW8<;p2b=03uyFl{)p;I@>MfC7a0}mkE|1fKt{V32TrnH*JzBNO#qmI z>0KHQze*uYffAd>jYyqWIv0&P4>5^EDRy*XZZ>jT⪌7$>?+Z-S$o3o}H6OuknJ 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�L*@8WiF59;_`y3Shw_Eni(yh>jE4a`hm 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 literal 0 HcmV?d00001 diff --git a/Chapter14/tcpserver/main.cpp b/Chapter14/tcpserver/main.cpp new file mode 100644 index 0000000..7846541 --- /dev/null +++ b/Chapter14/tcpserver/main.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "server.h" + +int main( int argc, char **argv ) +{ + QCoreApplication app( argc, argv ); + + Server server; + if( !server.listen( QHostAddress::Any, 9876 ) ) + { + qCritical( "Cannot listen to port 9876." ); + return 1; + } + + return app.exec(); +} diff --git a/Chapter14/tcpserver/server.cpp b/Chapter14/tcpserver/server.cpp new file mode 100644 index 0000000..a54a4c8 --- /dev/null +++ b/Chapter14/tcpserver/server.cpp @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include + +#include "server.h" +#include "serverthread.h" + +Server::Server() : QTcpServer() +{ +} + +void Server::incomingConnection( int descriptor ) +{ + ServerThread *thread = new ServerThread( descriptor, this ); + + connect( thread, SIGNAL(finished()), thread, SLOT(deleteLater()) ); + thread->start(); +} diff --git a/Chapter14/tcpserver/server.h b/Chapter14/tcpserver/server.h new file mode 100644 index 0000000..ba6abce --- /dev/null +++ b/Chapter14/tcpserver/server.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SERVER_H +#define SERVER_H + +#include + +class Server : public QTcpServer +{ +public: + Server(); + +protected: + void incomingConnection( int descriptor ); +}; + +#endif // SERVER_H diff --git a/Chapter14/tcpserver/serverthread.cpp b/Chapter14/tcpserver/serverthread.cpp new file mode 100644 index 0000000..1a675b2 --- /dev/null +++ b/Chapter14/tcpserver/serverthread.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include + +#include "serverthread.h" + +ServerThread::ServerThread( int descriptor, QObject *parent ) : QThread( parent ) +{ + m_descriptor = descriptor; +} + +void ServerThread::run() +{ + QTcpSocket socket; + + if( !socket.setSocketDescriptor( m_descriptor ) ) + { + qDebug( "Socket error!" ); + return; + } + + QBuffer buffer; + QImageWriter writer(&buffer, "PNG"); + writer.write( randomImage() ); + + QByteArray data; + QDataStream stream( &data, QIODevice::WriteOnly ); + stream.setVersion( QDataStream::Qt_4_0 ); + stream << (quint32)buffer.data().size(); + data.append( buffer.data() ); + + socket.write( data ); + + socket.disconnectFromHost(); + socket.waitForDisconnected(); +} + +QImage ServerThread::randomImage() +{ + qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); + + QDir dir("./images"); + dir.setFilter( QDir::Files ); + QFileInfoList entries = dir.entryInfoList(); + + if( entries.size() == 0 ) + { + qDebug( "No images to show!" ); + return QImage(); + } + + return QImage( entries.at( qrand() % entries.size() ).absoluteFilePath() ); +} diff --git a/Chapter14/tcpserver/serverthread.h b/Chapter14/tcpserver/serverthread.h new file mode 100644 index 0000000..152b424 --- /dev/null +++ b/Chapter14/tcpserver/serverthread.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SERVERTHREAD_H +#define SERVERTHREAD_H + +#include +#include + +class ServerThread : public QThread +{ +public: + ServerThread( int descriptor, QObject *parent ); + + void run(); + +private: + QImage randomImage(); + + int m_descriptor; +}; + +#endif // SERVERTHREAD_H diff --git a/Chapter14/tcpserver/tcpserver.pro b/Chapter14/tcpserver/tcpserver.pro new file mode 100644 index 0000000..6c04e70 --- /dev/null +++ b/Chapter14/tcpserver/tcpserver.pro @@ -0,0 +1,15 @@ +###################################################################### +# Automatically generated by qmake (2.01a) to 1. feb 13:50:49 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += server.h serverthread.h +SOURCES += main.cpp server.cpp serverthread.cpp +QT += network +QT -= ui +CONFIG += console diff --git a/Chapter14/udpclient/listener.cpp b/Chapter14/udpclient/listener.cpp new file mode 100644 index 0000000..b40118c --- /dev/null +++ b/Chapter14/udpclient/listener.cpp @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "listener.h" + +#include +#include +#include +#include + +Listener::Listener( QWidget *parent ) : QLabel( parent ) +{ + setText( "Waiting for data." ); + + image = 0; + + socket = new QUdpSocket( this ); + socket->bind( 9988 ); + + connect( socket, SIGNAL(readyRead()), this, SLOT(dataPending()) ); +} + +void Listener::dataPending() +{ + while( socket->hasPendingDatagrams() ) + { + QByteArray buffer( socket->pendingDatagramSize(), 0 ); + socket->readDatagram( buffer.data(), buffer.size() ); + + QDataStream stream( buffer ); + stream.setVersion( QDataStream::Qt_4_0 ); + + quint16 width, height, y; + stream >> width >> height >> y; + + if( !image ) + image = new QImage( width, height, QImage::Format_RGB32 ); + else if( image->width() != width || image->height() != height ) + { + delete image; + image = new QImage( width, height, QImage::Format_RGB32 ); + } + + for( int x=0; x> red >> green >> blue; + + image->setPixel( x, y, qRgb( red, green, blue ) ); + } + } + + setText( "" ); + setPixmap( QPixmap::fromImage( *image ) ); + resize( image->size() ); +} diff --git a/Chapter14/udpclient/listener.h b/Chapter14/udpclient/listener.h new file mode 100644 index 0000000..ff6feea --- /dev/null +++ b/Chapter14/udpclient/listener.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef LISTENER_H +#define LISTENER_H + +#include + +class QUdpSocket; +class QImage; + +class Listener : public QLabel +{ + Q_OBJECT + +public: + Listener( QWidget *parent=0 ); + +private slots: + void dataPending(); + +private: + QUdpSocket *socket; + QImage *image; +}; + +#endif // LISTENER_H diff --git a/Chapter14/udpclient/main.cpp b/Chapter14/udpclient/main.cpp new file mode 100644 index 0000000..6e8b5de --- /dev/null +++ b/Chapter14/udpclient/main.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include "listener.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Listener listener; + listener.show(); + + return app.exec(); +} \ No newline at end of file diff --git a/Chapter14/udpclient/udpclient.pro b/Chapter14/udpclient/udpclient.pro new file mode 100644 index 0000000..174e6df --- /dev/null +++ b/Chapter14/udpclient/udpclient.pro @@ -0,0 +1,14 @@ +###################################################################### +# Automatically generated by qmake (2.01a) fr 16. mar 19:38:14 2007 +###################################################################### + +TEMPLATE = app +TARGET = +DEPENDPATH += . +INCLUDEPATH += . + +# Input +HEADERS += listener.h +SOURCES += listener.cpp main.cpp +QT += network +CONFIG += console diff --git a/Chapter14/udpserver/main.cpp b/Chapter14/udpserver/main.cpp new file mode 100644 index 0000000..7ff4876 --- /dev/null +++ b/Chapter14/udpserver/main.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include + +#include + +#include "sender.h" + +int main( int argc, char **argv ) +{ + QApplication app( argc, argv ); + + Sender sender; + QMessageBox::information( 0, "Info", "Broadcasting image" ); + + return 0; +} diff --git a/Chapter14/udpserver/sender.cpp b/Chapter14/udpserver/sender.cpp new file mode 100644 index 0000000..a7db83a --- /dev/null +++ b/Chapter14/udpserver/sender.cpp @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include "sender.h" + +#include +#include +#include +#include +#include + +Sender::Sender() +{ + socket = new QUdpSocket( this ); + + image = new QImage( "test.png" ); + if( image->isNull() ) + qFatal( "Failed to open test.png" ); + + QTimer *timer = new QTimer( this ); + timer->setInterval( 250 ); + timer->start(); + + connect( timer, SIGNAL(timeout()), this, SLOT(broadcastLine()) ); +} + +void Sender::broadcastLine() +{ + QByteArray buffer( 6+3*image->width(), 0 ); + QDataStream stream( &buffer, QIODevice::WriteOnly ); + stream.setVersion( QDataStream::Qt_4_0 ); + + stream << (quint16)image->width() << (quint16)image->height(); + + quint16 y = qrand() % image->height(); + + stream << y; + + for( int x=0; xwidth(); ++x ) + { + QRgb rgb = image->pixel( x, y ); + + stream << (quint8)qRed( rgb ) << (quint8)qGreen( rgb ) << (quint8)qBlue( rgb ); + } + + socket->writeDatagram( buffer, QHostAddress::Broadcast, 9988 ); +} diff --git a/Chapter14/udpserver/sender.h b/Chapter14/udpserver/sender.h new file mode 100644 index 0000000..f405788 --- /dev/null +++ b/Chapter14/udpserver/sender.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2006-2007, Johan Thelin + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * * Neither the name of APress nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef SENDER_H +#define SENDER_H + +#include + +class QUdpSocket; +class QImage; + +class Sender : public QObject +{ + Q_OBJECT + +public: + Sender(); + +private slots: + void broadcastLine(); + +private: + QUdpSocket *socket; + QImage *image; +}; + +#endif // SENDER_H diff --git a/Chapter14/udpserver/test.png b/Chapter14/udpserver/test.png new file mode 100644 index 0000000000000000000000000000000000000000..660e821c008547a182b605619bc26945479688bf GIT binary patch literal 384731 zcmX6@XH*ki*PVnALJvix6N+>&p(rRNAP797B1&(OUZhBqP6E<<2c=3Ar6XM+NbgAR z1P~GFz2nEbzBOxR*4=l{y7Ob^+;h&}VH(d=D9M<~005v=Q&rLg08lIdfazh-8$`n0 zE9>S4a?w;#1WE^4*KY<8D}|>D08kM_e)*dCW{faX)qDy7Uc3N+eGdTVHxTv@0JtFm z;4cOM9;5=mZKw2x7cw^!q)w`OE&xDI`@a)3GVgbJ1CqF^Jyj-|B%-8Yy{AZVr~U>) zxGL+qK618r?P}xb@XE&C0uVzY?>|6_KR}5iQ1>5*Nj;F1$Wk_xzu_|ekNeWm()HbI zXA3~%wT*+T=riS42zPN&B#O0^NBM?B@&6n*XEO`ni4+oPV{RG#0RXPA)sz%oc^D^N zoiwtk#IuEeQej?Szy5O3B)?;HhLSBUY|7_TAi*MeU|s>xLj-9o1Wmi`vExJl&1`3~ z^9@*!CHL2=D_Lr1v?Yr+-+eJVQTnCnd9h)IwvwN{>9OM34As92eSwE$!Q1{K98rA# zuqP3nliybVnau9pF+P#pT%taVUF`eVV6wQh=KhOsNxb=&i~lak0>?so;lFI3^`U5g zljUgl4Wb_vXVYaJ6??izVN;Yb8ADVt85h6z_Np4$x&|(bKM`4XrI-C`yHw3UozPg7 z-9C_``e23k^)H&eEMD5Xc>30;!A`&Id3tW?!^|?ruIj0Z6_XCnJ+JYquN<*m^c*i* z#7qiKc@NW0GaE+NPzN7Qr`}Sw9G4+`qwl&hT_d7#lN4F{W#q>>F6>vLrY%P*c}C}k zmobYk<|ZR9XV=R{qs#U-mm9~4ckM1?R2By37fDQL7jecb?+*T+-QUkQZd;_zT3TDX z_JPUVH+=ao-S^q$)zZl+$-loQTc{tZkl7nl`H-C^<1xy!KyZ)M8S5GfTGFnKoRYjim8A0_XT&gp;uJgQ@QqD9uv zQ;N&C>(cU!#nFG|ypeG9b1~=m%h&mT+Lv`L_y0NU)BGFQ?Kr;(EvwmW9CMsRDa35> zEIU?TQ?3{pT=R;TdSv-zH9yMya-7-{FEb5 zQ6MI5NNl1;eCX=pq-j;N^VZPk&spTh@q4|KdA_5bk>|5N_jVt4EI#ttA#PDoi94?S z{1Fn{!}wC1#lqREN!^8TZ^uP_<*Z1WYA&nI1$8>b1I@|`Yn}DKBod<3r2WE5218rBuF9l9*N6Xtt~| zRNjT|;&AxdH0z~|XjAge>bpN%6fq?Zp0kU&9BUP))d_D|WlS>r`h{!GMV37yNz*4i zW&HfMO{GJ&q~8o-(mPjJ*LIr^$aS0yC!HvC`VL2q#2WWsr2RVnv1VbrVzqj8X1Ch3 z{$%wifqeB$=UED0reC8>`Nq2QzrdkHZ+BS(huJfav+I(J-V?`JlkJC2d7H9_`qGyp zJFZys`Cv_g4&Y+Jlr zDx0~sh}g->YRTJhqpBSu)K{^3*f&L8tnD&WHQn>)KHXC9H)%D~ksMr-E0Z)4kK;b} zr&^r#l=1f)%({;XStQza*>#sc{ovxF<0QkrcDr<0s*Lcxbor>Rq_yjcwM%bKE@J3G zMAuNqaK-QDv$VH!GXC?w_Xsu7g~lZ85ix3A%(VyK2bcE5r~Wa?_(6A8r26dICWn^O zE#DfQv81=2nQpwTP{(YndCb3Ud1z&PK`QgRt106*-uv|30He`K(Bjz{qfEigd;eql z9z9z%_xEIb@!ZB|FhnX@d}>lJI*pu>WtDaLvVJ|v+5KEmIBkz?iu&ZuI+k7vyrmXLC80eAoBtuIP?MnCq9I2`V^ByNJF`CkjEr~UKv1u|4j&M zCHMvm(O)CzrFK<*bXisWlg34X+IN<$&a3L~$|gTjp!W|2Q}1|FASf0hPIL9?or>** zJ9U3piNKZ0shdl|#0vRDaFU}Ez!baZB8!Q1bTNTM?hShrp`GQ=^e9p(B`DaT@Jz>m z-a91P#Lh%t!9;QqxljX$Fw`y}6v&%Bk+^m$IPD6=mLf($us|O$G_WSX59;`aSogAd z1+_g(AaD+kR4^jzsG&9M=giG1ZD@WZ3@aY{3zkjqAtkjhPMrN+^zu!Y<`M3qmjdhwiaf*nW7x>i6(lvq=wNWf5i+LP6>>FWIv7OOrN$8;fT4!^Rwi(R4B zW7(mktho!N`m4;YzWI0Z`rCE(j`fafxfVl@hLUcZ$Y~jSt-kWSXj*snA|ptIE%Jj$ z{&o&jR=g!z@zOJDF-}gto1`3oxJL3>O+e_=L!SRbqN!}__mGUxVCEjf2%;I$JROQ;Y4!LU5X8;f5}-Z3oh>7{Ql zfk;6EUCTp#YBao*M<-9wwkLENotT0P$coIn0AhKf3wkHlA=K&fx2Am{!oBnu;T>7PoRYdIZgkcqsJ+IN?*6ExcgcDzeEMF?b z5(o(6)SxNHzk<4IKwx*N z?@zVC(6j_w!tI1V!24EFuvSaSqAVzCu?5|>_*P6HAO!R?f#NE9_W`@kpo65@=$jZK ze{h-HG^W z%|muk`TB#n{dt3v6vuz&j%W93-pTF0^88gX*&BCzQOIf`>+YJIA%DW!WbX_aV0xxs z54cw}pQ)vpGz+3L?o_q!*gks`@P^p{8M#iz{#B||lKNT%CWRMdkcIJpseG(P>lVZ> zsXQ{;C-xs6E9Ho_m}4&&z{7=7W_(VVbc2Qh5nSSAXO$lbiYSzX34&`|^jGKiBJ@l; zYs&#Js43K$RXpec+r?6I3mJNU@8C4L{S5>`b+~fENZ+IBv?--R1r8mQTx>h( za7=GGVErz4xpiNAd6E+Jev-dbCxAizYqV4?#>tfG(inp15$g^;V@xA%esVovs;&i> zL|3;^8?!8~H9PyewOsmAKPIB8=*EPb@<|0(0kJL+YH%7pa1#VzPv`IfSelpv&!<0R zE&pxP_VotDQ_`uL};w@!&RjTWY;X1sVc~(AP1(XF0_jRk&Zs0 zf__l5P42(&X$HZHn*PXeM2sZ{glX#AiLADb!85bEIJiQLS#01{0pzebMsrp+Y-|)y zC^BCeP~(m5ZzIsy2#ZmI)JWJt2vVev924mY3Yzzi8=&zpCld|$VwrgQbBUxi@nt~B zs4gX1ER`SsxS=RN`CQK*P%S_?7c`i|r6cfe#x{I`kGFI4v-|&p8J=JEMtXdQ@>ft3 zKOEgdg(8u>Pts_FmQOfZM6MX5cD-K;hE#2(29dI!sr1R47BVK1Da59|J|_j4`yE+w zI;jV~?iX3$=g3^-=NocN=I$!&Yvtza{yTEkE_C6sn zCMATrS=Sg+<+0I}wtw8?i6pO_?Xw`AT$@=P>RXNANQt=ZkW7wY>^mJyfgi4==!Z|* z7>khu#A!i{wOu@;wH^-O7U{xVQ)CCMn6#8gC+Be6MPa$4{7$y0cH7l*6&>26Stc3+<>2t|qm=RS zxwfBl)dmtlJgvRJNT7P=lO|EmCKxT4x)54_)Xchjbsy_OFxT)Oy`~`QnP`bKj|ayA z1>Z~5MlicxDEq!c;g@likD)Yy*tFPblIcF_f`WDlFb}}L)*&1)PiRI%-=^=-5ETLD z<p z=zuzob;Ri-?pSytL?0wZAxu$ut}bKww5>>BVUi-2`!H15r;`@@-i#Bigbnb$>$EGb z0#q{YR5RdwiLo#Qmwm@9IgFJYBnFKcezANI@<7#$GeX_U4LfSbf2j@~`*0GI_}=pD zzjYembBsqSF7-~RfOYUT2hYyNnW~Y+`G2kQfRaBNLP>dzVwU3FWv_@;4-vRCKB5bS zv%eHmw9_-cJtmW9-(FETq4iHgj55$=fV7>$a^cc}$&i@&)Ng3zSkGb4d!K_dhSDao zW8*Y(7nSBM)hxQ)|z)sdeZ5`Ks0a5SP`t>5j@uuckMKm&L`#m){KQ zE^YLPFvZ1&0z#*QQZzsFh+2l~>u+7k>Fj2}k;OE&Jfpmfe|)}=+j(RO@UJVz%|vYc zeU;6@?bMI>L!(r%*Tln;Mhf(Ndp)H1_uU{SBHI?=Bw8X!HZtHc6zcLF6SqNF55nGy zVRaGZb!0(!>aiI@N2Am6u|m3mpFGtu)iBi;5&K^lQJ__>9sB@k7T((y`S{Udt$bf` zYY|@s*_ClUaW|Io*{)B;s^?mTSA+lvpyTp9iAV zeOD&}3auu4Jyk?ATPyzpru6C|X+NE2tBAxITZ|isLGK?tMp9H#=11&?^Z-wHcYzfc zT(4bQ0ZmZ&9dOcqA(oK`ETSUW(ae2#zq-2tP~)ui(k-RKElpjS&bdhd-9WEhP`Iz6 zf_Xor&$*r8D(O}xI2P^>EVs@-Pw^#*NwhNd zsg?ORL$X@ELbuvP&Cr{6&}U(G^>})&PFvK$P~i4N8JDD6MR6&*7T=C;dE(Pjb=uS) zzcdI&W*a#1_RChKE{TMg>rV z=NtVpcw5`F#g|AOuyWoDlFmpnF({eXCv`sQ?(?_#2@NP97QW zT6UaH*rzWHcv3@Mv2mLi;~L7q9-fz4;Mh5^4A@+dC@f8TNYSHl5U*JF`JB}1w3UYf zF=%xV(?`I`YgC2<#JERT6|m|kw1xy82m?R3-c5n9W7z7R-fP_wZ8ek2mcnm{?>1QO&@@m<5`>RGuU~i z&?seK>~p0q4GG@EFRU$vdKLR@s5JJSIC_5e`PW6AEZdkR_?*=zht>1EdjHy+ZuKfb z+)25ll_u!QRJg<+f@3ke#SBH8S-8<{nzFUf{4tNPOVuql-3MdvskDuRi4#&Db9@y> z{c>RcSRySkbp@V%7V>f0(-kSY_dR%YvcZZ9qVW5d6G2#FekY+G6cmoDRj<}xEB)5j#jja>_IbY9oF`* z@L@51iwPWk65q@|o7rTMaZ4>XssTm%DgPFvrN@TtpEKHh5y1xnBbpWrt3_c*%EwI= zU>I>T6F_Rj1trTX>ZEv&|FPDg#H{6*yudD#+DG-X%3)L>=wy;^Tcnbbp1++MtF)eP zIbgpo+7kWdb+#kK2__S3%9U!3kh<%_gN+Tcem_t{HV~RLsK1BP~y)u@Q*2(nV@R8m<{8`B%yzGFCFmUkwJm-AT zTzSx}(pM_`JW1A@I;D_`L+I}JOJmQYqn8#84)MyDmUl~x1$6E?Cf@RqKi^K-W24zT z%6RJpt{}@cX?3(=nq>DUj{r!qFpw$p;+}+Y8;UrDJ`FmgW25P(0}~wUxY-h2;Pe#q z7;+E;l!i#nTX>7`2%oAjd{aBM28z2Dl(eJkIyf$60$3d{swv_v1t0B(q1jq9aK;Mt z0c!mXq%cVEGl6|Oo7 z%doRGzI2oEBklnn;P|3BL3#O={mySBQ~^}%v$&ie51!&vTdh1|qcr%qKTBxyG0;X9 z{pH~X)b72K%oxT53-gRRQ|*qFwTnL3g08i?{2Z39J@|e0@aoOIqA`~y27AR9qvPDb z+XinK!rfikY}l1OuuJ;VFU=lNwSUlh`m*dMe2HUueS72*M}AykI8|TY@qnXuyA;{p z_jA8L)F&Sa`wO8Fi=rQ8*??hwMv7P#-IU!}&tO3on@G!yC^Vl)UjAqP_@O20G|MxgX6rv_V`IbAviUyOpkMw&doi=fC!<0okYP+}K#*|D+ozN~P`mM` zN)KMFb43+TBQcEVk*kTdT}t6Et4lG$2ZjA5@p|plPd#6fxyu*k9yOEVwoT6ffqZH?LxHkp(sGaGsC|5!N-y=cU!D)iOh+xi@D6?G2k&3T zUt9GiJpZnl>G|8*bLA*uwY_nzZ=L#fAG4wM#^m+FOHGjaDigTtNo(9*^R{jsWer_#OMr zAl!EwPO@!M_PAx5R0wu>;8oC?s@c<@c^bH&$iS+-Oe01#j9s0@;(?m@)tDna!T!VW zj&y)u!9sVqVZ;iPJ6N?KU92NXKm><~d4w1*-0HvAE|IN6BXPd*0UaNCr)(6C=E@i+ zJxbGb!90&!6u&fgV#+?7!pgd@{}2F&WIo>oQr#x`M{S{cm(TWVIm;#M_V2g%KukVL z+7u=6Vx_JujJ}}0T4LZE2#=e_0j9VuG|1^mO)3F5tH;MPq50B){-@2|#DQTzEHLdO z8EIF?`&QKvySqBtbrrN|VYnt*0-IO6xGh9dYP(+2S^^@qax02+;&pg;3kP`+G(tQT z;@rhqr!o_UlRl!%FG4aT)09gqer7-ro}gI5CSfvCL{avCm>waKv4{5z3M(kkX1mt- z1pF8f92EYa3$c_|s}ZnFPZAg(_`KhAIYz{)#*$gq*S^-`X#7CUCU+r_K;Q5}KXX(} z;!}mm(eS%^6Ot_U2e?&6zx|645^}rHkbf5uIY)611CVAqynRS2^6}1Dr^h z1dNxI!9xV}p0L!4X#E)=4?^tN6%;dx1CU8)hSskBf{GZ_sX4wF0U0ir!{ZQK$rvLg z8+MSYi2Lp$cPYD-q!l zwGp{~bB_fu9aZ|Q#Na!C{Zt*?XnZ^J4(<&MQ6m|#uGFM0QWC={7Ks`pjZWVwr~mv$QHfgR7Ra0-Tj8&~I3dM{NJG>3*~9wI=nS z0|(LftcIJGJ5UJ}r2Xn71K#cqNhH)3*&Hr6I;y*jgUy{{k-=UO?R#88ne{@btvWCs?W^vB58Pq8k@8mSu>rUeKyK!rM zLU%Lx9YILmg161ZWq6KRFqpm7=N8uqZ)!*9c~WJwJL!q%yiHxUP_McvRlg~Fu_-A5 zUx7u%>=jAhJ&a2o+*tE(3)F$`v@Uu?zy?y0|{>gsQZ z^@LPHA|Z4OCU}k$86pVLN9eX0T;{MzJQPWpDk5ma1!81pD4)4k|$w0VF#rJXbCx_v_!8V=a#5< z`UB{nBhIqOJ1k!XiZR+?cz`nSo>3RuC0r`M<86*~z{lfvwqei0&T8}?S4OpN!P;de zAs^fq;^M!W`i37D$*+2zyFDwCu1;Qa*gZHYTU2JhzkvfK11+F#WA-cpgq~Au1x(>-X~80KHo^_2wCEo}9s05Q zCp5KRV~sZ?D;cc>vbJq)BI-X7lVIN58V^zQd{BD+Wd{;#@w+xqOPC8Lj5$`@ zO&y&;ClF#c1It{{eBBcFZxNs7c=zpCEX*O4v{zmOIR3l4rtrQ=U8ObTBb$qz4)@6- zh{rGLAmCHic|$_#9+|bkgmWk6^(^+|_)K#q5lyBIy>w`$6zUtip!A2P;H-#^Ju!7) zw;s^R1VDY4t#+@n3OLej?m|Cny?R^btI4aE8uDeEI`(GsoarE)LdQI}PkzUDuUEXx zSN9lC)6o!qvE!Y$`Q1vM?C3a&J{-u*coCIGg6G~Q z7yeWF!|_pVtESPSS?w*HsaHo8zE{{(n;)PFb>*rB>p|cCYZbz{0gB~>Zl*i6UbqAATdxKA z)6k*7)_am`R@3W{jjK4W4= zepwN6jBxw5lP|{S*CJ)<&oQ@uK~jgL>~f(Sb@EC?m?qy^6p(*Tu$oBh4E8cuw6cB$ zLey-qsG57l?s4LBgt#biMih{tQJe}<&<191@G+oxTbl?zcN@#7+b_zWJk$BLcSe{U z(hXPtK-c$7$iTj8rv4V?%)qGbQWMz$)BOt1RxRt4bNQG1MRb?Q%C zKGq*-U$Ga76ubhn{tDG(E-TZIVP;-ud3JCnx#^h%4eoqkEp1^BCTR_5=+KLFsk>1d zccj6vV{UR08zMYhem`_(EkgZvF zS*>R3t>t8IszmP{?#3w-s!e6(leVEG?z>Go3x4kueLbYAEZG3!!>_mH1yTUU+f!ta zq9QG5kkeXE4v9M|=8&Iw=S&$;37sDkvBV?05mJ@_6&Mytd`*?u!1Wm}@hMux0Ga`@ z)%FW~0hd~iae*UlVfI*wyz?+4vPm}dgN#-Z7g2;D44NSx;KGK6DT2F&(WX>3wVn`i zIX=sP$pJC^%G-$6D6M|ZSRE0iq6&62g?ZJfkDQ#PG9(ugYXb^x&5cs0`}ubRlj3%p zwo3dc7wAJztX`yPleX4{{b8uMMetmJ#9|Q8So#*Dp`0s=zXGXG#bQ7#KZ~21jBOs} z`-ml306U;|;qrWvRofAsoJkF_>Q22T1tlteh9W`PBm#D$%`EmeoxXaxJQI;_2sqXT zVTw%4zxlA96fpYwZo=&X@vi|Iay8jJu;Virm+W*!G|K7l#IC`f9IL?+;l)xB@#h(~ zM1O|A4GrLYS!SEdT~+>aSaO^`N(XzWKf<(I10!0QBpA5V@9`fz;g=BM`Ku4?q#M>! z9%6rv+&Hd^rP*|yUxVtV3cpaXIy{yqHq}N$2!&65 zp)3EI5;&r@;}xjWIgVG9t?2_H%(*IIbm{>`dBmv~!&ZbUW_+6O*zZU(^V0M+Bpv~G zepN6sXYIQcDKbn^s;AyVZ@M9_y&;_VU!L2&k(V<8uL=5Doi0|=jlZZ<6kuLI=mXCC zI}87^xiPF49c*MJCcqm_WaYG?5l!EADs+0ciSA;b${4vT&NUM?biCV{GI3}+(WoaU z_9DsjU?TRVTMc~q(qjM6CoKazN}3QYnfD@jx2xQ5DYp`L577s2O3}(w$*y^f>iQ5- z{odAzNR09IPhSnAGz_0T3?3$GOJ4d$?*YhFp z%tpzGDJw8ZOdO$TgE1=~&9;6Y{P3k$YdYci$o7Hi>3CH7}W)n@PyTs85(( zT2OlRd$M1t+VQwCw8L2{V|O{GTr5i6tSBgKURT}z4tC5d<{4d@c2Y%<>oMtnPi#y; z#!Mu~Ma*#b;f_BFNKTG1ayz5xYwFo zgjP@2^Y=GdIFg&5x9GXcyM3D@c7IFqEuxXbr+ChJZNYhM{-Vza!}MI{jM?iywvf)Z zv;)M2y#fG~kNh^CU-Z*zmj$*x-)+oLqY-G-<#bx{SWA^7*644&rEH0+Dv!ixXl6rklROFQ zqo$-{o)i<9ncZS{A?%+D4BdYN6o9!k<+EYcCgs+~Cl%kAu8=|b-`Jx4aq5U~VXjf@ z`p)tVzn>jR0!w>&evi<~8dS$)!28L0fnq@!MJD62Qn<;t@I2cJ z{_QMoEL^4r1kbPMvcChg)?1N%4cj6WZVFcXy|ny-GQEmit*n7ob~>a6prVrWXBqd- z(>0zg{W_rf#D+%c_outs;PAITf&zsq z2!@Qlp>i%sD4SN9$j>YPi0yWLW~@T2W%!8LU~qW)IA~Jus#o*U{VvO2U03U(aHcBw zpu1&Uu(Q?7$5REvyL?NTUev`0-FAGvOKXdQ)Er(FGO)%?*+#0I3IdU}U|plnS~StB zO8NM<-|5-@sd!n6*-kofW9s9$g+vK)W(dQcN(F_6evWuJK61qXeRRyFnSWq?h9VjG zL}kq+?(s&y1f3fHgTY21bJj`Yoto7v!@KK@q|73x_kleQ!PY=3k?}RckqGv{U4|X_ zbmP!qADR=-u4b|e2&sh#`)mI`xd4m<8BRuVA&ev(ZEG|#QpwT~L{1>0992i7TK62f zND&KxM@cm^$Xv~!Jov4-r>qe$7m5Har~)xw+tunt<2w7wH{I~>R}}To(Nz1%Nd(&` zmp`L+pkBWyrhvmwz^y9kXRc1_J>5=EDcEKB2LF1peJFjU2OSMy{62Ul3s1jT^YpbM zMr1BUa6%I7BEguP8CvKD04M%Kg@&M8iyLMi-1XgoI%jYzNX)(Kp*S*v5cTcc@sBXo zMCBkn#3-d(&2l&ulP##_l0_d9!2sUkPEjtm2F>yFsm!j4H*M>Ba+zMKM&2)k!%r#$ zLEe!S4jZhzX>Ml|yWT57QUitXf_s_MFYUUzMjcA)}mtoK2?y-czMn zdohYzNuu)>;@miF@0tQX&)NFDRffKRu!N(^jxPnD#&Kid=HZ9>{(>Y{gTII+t~L|a zqsbn;{z*K=gRT28uOBwA^CFP}P=wQ16Lg{3k7Dt+bJ0nJR(gHxEuzviWn^@DS^=>5 z{&ipw@QA^Ny80*PDN#Vxj9skTa5;jr%B6!)q3p9R1Vk~_xCeJ%9g{??u20Gfhh(eB zguWVUqHfXHo;mP1L*bW8A0B6G>?llGQzw(Wlhr=T_O;@}l&0#x zeAFrguUie(4~(u*^bNxg?ogmnjqgFN9|L7`0oqaFv9^QCA$RphF$#Sc{V#fNu6)CS zIw(eQoioY}N$2tsP}d1tbF>z7JcZKYeNdZ!KY6OJfEJS(x%g-Q-K)q7GXYw07VI4? zqY`6#k-vmdASj!oM<(7ECIf38Tk!Bpj}k9e<5t)Wqt{`#vb`gDi=k?VLNl%A3z};e z24@N+2}EX2FWKwL z$;thX`&fy_aLI_lePbeJQSf-feht0W5IWIz8j4Ooh;G)7>l*qUdgUG`Th@-Ay66R# z*CgOUewpcvrmz0)@bB|Cw@@;zozc;0MimH&0C;a!(u!OuqhRl1H_ zxz6X8|4GMW`(JKVt?rIGCaQ4wSI^b1*+|~LY&9Zj7xjBDF}8IgcI!yf^D1d&^=R^W zcDZ9iy1aOyvDq8F=7zl&dMX{K4;Ym6JEh}1O9YR)7{u(DY3r7vO||ZK$!NYTKC}dJ z*m=I$a}bca6>Rwws=OrT8n--u>q3 z0OEm@f?9Vpy*9fUve}%y$+(@+do`WZ9-PLyUcNk0OB_#jZBF}k8x$^6xCJOt#O|nJ zqwT>q+kB(uU^vk5QYHQBq3@Wc?nH}M6gN{+%SQ~NHMo1sckb={#sNgk66WLpsdaex z$Vd#xBcTaM19)^p=UgFyV-BBNcinyNehVrT$hliHRu8pKh=Zwr&NZK*x_DJ+7ND|8 zv^6)c8dowofJprzM!xi)jkDP}Rj%P?aMgl#kOQDVWkC6R?y}qlQGrhg$Owr5)2NS0 z-~Y&@|Ac1rR2KO3J7lVbnX}Sa2D}4Df2vjsU7c><{mRT5Eg7sYF9wdytga)IRdPYy zDyWsJJYgVu5Df8*I9xw=ZX(TcVJ^yK0C)O(Jm0fPI@{Tn1$q`aqOKP5o02vxt}h$Y(=|~_xhMEPwgNYtZQ719pKcC z?<1O)DfG2xSA#$AC~LRwq?bkg_s{a7`^LK?#e}qM6PG(|wm${)`s`y$%2%cf|LM}9 z8Q)M6(#OS-Yw8k2s$dw=2`$MrMr`24hLoxMR~b)OTG~hU{&W&%WhiAto$n0KOIoHw zQVI(GbhalXuQ6trp6uWq{YcWluDgIbq6e*OMX=Z2Ap9Lm0~O_$rS{rhyaP&4JR6B} zTs8Bn>(}Me{qL1$LfzMhb;DeDSR#U z@%z8c;dnz3k1MZHOPyr|Y>=F>XLq03gJbDEx07Z$uZOkkI`<}DU}?BYEt6$ql(H>X z&d|wDE{XTNb~w#EbN9DhUrG|!UPvrJo?pS0p#^#$qwL$m%I5iB$q``6Aok{nmZ}bj zE-riF(htN!*)2It5u}KTySrV_DIxVvxX{h-eQv7~0U;riAQYWKY$#QJyZacG1M`qqxsHEx4v-c0ij&l8za$W?(-JI%EEs5LaPB|S^g9QnEg?$E&Spq|!M9y%5L%A9|)BC;+ zIoqCjmjpiQ>`HGF>GGYP{nOUA)$!X4P`a~hpVOspBmU_*Ce7EL)8EfggG-;t4ko5_ z;h5IMF~LDIz0Ck&Q{pYOHp+>kmKY%|C4lv7t$-V7zY~)Dys={uFt3Is_A2=#r#z*f z%SohAdidu@mGCEKB3R&_2k$fdaHMuysZeI2(KCt>8YTMjp9|2*l*sTv;77&$rm?5z z?_O`*y?|dkF8W6kb6X3I{Jdk|Vmm1OZr!LmQhuONlR}q20ZXw0tHM5c{xMN#@@w{oepXOwaU=a|%HbX~(b$=8mm&p17of~i*iEH^$4wJcC>4FLqatND zRltbcQty`gq1-jYY4gA|=2CQ2YYMQ)p6^x~X?}S-gBDr$VU2RG6OnzB;24y4=;#Zt z<%INuq+mRA@j>b!gv3qqWX}F@Lt*6UEg?|N1aI08TS6S-N6Bq}G82DdYKT_&+RqP7 z)mDyQVY~;(3sr-{ukBUJjX2)TkEUeP2V@Eyt*IIAw%U;rog`jZxMw7qBFVbL+rCBqnb7>rv&0bGhQJg%BCw@DZ5Xs>A>>#* zSEtxejAC64h&`^hnG2ahH9x1_5`rjd)%8HB+(8y_P9l_n8m@u(H@uigMiAa!JWcVV zsN7tdEC7|O-E2_5)!ismE`{e$C1y;0jV$@Oy6)+By1EVl)*4_C*Z!qO=@1f zbT-N41zV7P8Jn89Eo=wWG%mAx$X*N~c4-i1+F1(I23h}T^%@5w=)&DupFn8Y>26%% zA9Me5Q_O**p}eGm6J}ib44Z9l#BDW}AMT`OHv30W^(Rn5FH#jA<8muwznAWLj_*G~ z(s&@U6ViBCNP#7=o%k2o=^4j?LDav3oq~ z@|>zRJlO6yV*DR~=cTSdJRjY8&UYzzdL@&ij&?} zrbSnhNwW%NL`lzEJLg3Sr^#+ue=?tWn=w-)K9$;Yy#pvUz?f8k8$(k7j9e{5v3k@r zld|^pi^SG$uW+lMRIyBXVyXq#apFJaL{^#JJvrki9z(@KV$Yf04$1~1u@JO|`1%yF ze4j#}_=0i!bHqlBRT#d&SBk&!bJW^^9b6PuNkckEV<;3VabGJdUjN6*&|!9I6d>#x zx@|aKT0jzaZfGk(H6KT7mpE-er{l$Lzfm?}k*T(*2z`IqUvBVA2Ak4HI4f{{frI1Bvb zwTjNbk28`OOmnbTsN0ybA$q=}qfd83(II8S`nGd5t1QZZs%78L6B0%AZp-_N%;7Md zE`^PW=k9d~iYhrIHu%BeX~Zf5Sm{1+OsqBbFZ=#)Fiq@!bzaiG=yHf36Cy|S+igeH z+PZS80aLdDJ0mzF!uf8_gsBaUnGG=ll#ElrW0;@eX*NtxkZawk&iRC*|wRBQrjIx&FFU>GH1 z$f4tTIlQt>qpdsx!;``(6Y+<2Lr!da2X@)d2;6Nyh3Bi>pq``yOpp#$E|Fln6;l42<@AryUexdm7>2GZRmz<|}Sm4>v+$l2b+u|N;!PtPGW{VK` zOrH+wTP06$xDJZ;mFwWSaX`+E-~?Z)exkuA^!h&mrVOUIn6id1@iY@*XfX|dcwv@> zdB#346w8yQBF1!m+;BBJ!)jB4;ZV1T5}F;5V4nSa&;EPiUH)4iU+Gs$_nKouhtz6Q zzR~$TyZNa?Ykp3=_qr)uAP^!LsO!eU{ag$V4#kIby#6`o(Epeji@2gW0x=AQP~=I+ zHWPv;Gzm_&o^sR)N}G07qB9D>w4zQy17mw)d67TQS+tE#df?y83b*9F@(;>;Sb z2hHF8iVPc^stp5no9ewlMS`w59lAL3aBPL@jc+`RX!%&IlPr}4XBK2;LFum!5S7PU z0G;7bhYh(>k=dnOpbM|Z!Z&KX0xV8XP)CO zQlXTi_fZ!ynC@4~lnb1ntZctNw}=AexpNGA$J0#hKWS=5!?zisI)hkJ#92LCu3oEK zLYvSC?+9Z9#uT&&#IGejy=503$uJ7SN+>j;D73$`D5XQ)2<(5QAn;0f;jkC54ypse zq8~~Gd}vE~OiS@3dznjyWR&+bTBNsV`c!{bnBW`lyHfW8^B^Q{lRu{9K|b_N{|+iQ z)P)UM0xwA;d+anmyrK6|Nm~vQ2Z?7_%1das;?L+XTRFj-QKDCQ0&q!dA{y&}dAi(_ zxaMmIm`qa+r)v?E3ku)h1bz6f&25=KME&lA$RI?baShs3tqbXKO-8?eCKO1qn9vbX zEtTM(a+#sTJV+%qTiEmX{EO$pJtER!jI64CG2^EOJ0(L*w-?cal2>$}lncMJ(VbSoo=qo>eKRrWhpt5B#P4>WOF6pWXG2#miX_P|HyD@1+^C9N&-%esK!_D1X z&LWXg4CAlL|E76G&saNkNNYbaU_hG=5$=O*ieN?K4i)OYQIP zId9K_XOf3f>ear9c3BBOy_-Z1+nlWMT5y9Ld{w0}g1)SSA*TRzF)h4X6vhmWuA`n% zcpOJz&ZKU0OFazu1nO*6AYjN{13JmJdf2eVsu=f^*Qf^TBoiIa$iEkFzoy7(Pz$xt z^eaYQ`4h1_1WyvF%D=R?DOP{-BIYwlhDiyFw&2oIa%2ugD|KX1rH=f^HJ_xeXcGm` z@CIy(gm-e;pIDRmX8MvUyiTj~vlU%pWvS~;{B2W&TE9c%Gukmq_D6Vz7CVxkv|Z*} zFmMwz+^g=mC9TU3^b(=z^Gfa>3RIZiQLnaPXr#pQ05-=%(|%18&(6l_*#e6I9!=?< zXj+6fxcqEobCU|ZvOZ`6pw?Ih0!pa&EuVvmq z#A`@O3D0@w?Ya2KHgK%oqy%1Q6;v zllUC9%}~mX7530An9d`B0CXmzK_mmn5(?*5FQQBA1=d4cE}NS-kt%}2gMv71v~Wco zrOH&!j9yV_|8d_zta-7&+;h*qa&X_%<>5V#muH_mQeHmtHWo#i#OJxb zWeq>>t5-fk8j8Bb)p8L4wGKd7Lt)-!oWr$wY-i@mh3V}VY0!RmLDZ1N1#=w*eCel@rqETu| zsiJgRC4e;HKG!1|14ylICoohIzG+DUDqNpFNUNe-vv1o_tL>LTC1>NDNs~=5*z&un z+JjSKcDe;n6P)pUo8f1$jex9lQezq^ZgZc!Jq8e_oyUo14yQ?njSJ_Aksplix51R+H(DX0E7%gR!|n4S%fAq z7(B)RLV#%kE(Kk?gDCvcIhD`Z3FRvH7)mp-T04)I=i&32z++nbf&=Hno>5$@gc^!m zITV`UR#=8JY83@_3(zrEVW(xYymwDbmUpqp(UIrgD9=CpT6y&0!>F-1R36y>%GU_b6YTorrA7d50kIE)=i*=@xz$~Oy zfK4pVLF2&Km|ZM4aR2W%H_A^}m&*0U>2h;zzFc2jKq_ki^%+i0nOQV#gDEKj#Tr;k z0>*0GP7qlI2&@Hw5Hy^Axu`Am6;?L*HSS1~QBAP>l!!N9V#K+n}x1 zGwxtE!34+%Jd+GJ6?F;))y|5l{pIztYpSNWIw99O!|-`CqY$CH_Yt^iDkMNFYfI$V zBI}K`LkjzSU4je%1ntl*)WRbGM6XX!)pfyrreG1w7&H~UgB9>R>*vLcyIu>Wdn^!V zz|XA!B+kc$n+Xv741XSH`vMKTU%{JtL>QD4ktGVYyd(q zSY-Xd06@|SWH*o;L#k0ot1uZvrqA5^gK4PAI45a26uc4WCNOB#Q(h52?iCg20Vr@W zm+3-47g{bN{~jDpPXR0*gX?MEBQKVnSODoxfW)mo+*x*^W%+&g>@EBDJXRik^l*9M z$Xn&)hco5FbMsh)iCP1|0YUf1^-s#R%Qwn3FpTS$Zb10HDtqlZnEB4^)IfKzyAo8;&U@)4a{V187V4`U= zt!bbOZe<+o-$fS|MlcX=d2D7M1_K9UHVG*=2(Vw+{BbHjx5+Y9p@K za7{`}nLvQ;++4$+SW&>I*`;-hoITf|D{u^;3IHL9%;WDsPA2YKU={iJxE8(TRbn_; z$e`+;fPmLFAjLW6^<}CI&cMY8*h~R4-LymofXNiM0}$x}eFVmGj>+NW;NBc**Rc80NTNOZp32~A_GXVC(F|_?=L1H@L0Ho3^8p!B7Ti7lDM1h-@xu}BsR z^%jtFQa}P&%tP#6zVfrOaPc$b4Dsco^#8=EnR4vS)8(a?-z`r)^;&rhR@w*AAL@rc zx~F{i2ltd8-||4&jjptN0T_p$da1nk*8Anmhm&Gcix}$=w{P6|yj%ldT)BpxQ2>f{ z6zQpF6vb>De`O3IZcE_SSV917V->eIW){ldU${`pKYU)k{HGh`*MGlJzWkRf*j_0& zz(m&Oz(fEZE4UsK$pb{pKq6(8z>!v7XdTHu$Uw|OFncF>aB0|R6sfi31u6uSmeS($ zN^{}0E7VVV){}*rf7wZvx9AFWA5RCc9 zrB1d4HEI@QAkfC#^wP{{UY|j*>4fNTPo;BGvJXM#mL_P7DcSh1a)^;qwNOOrJFnN%qhePHL@)U=;}>gX(#;FL#P z{zxM=mXY8az#GgVgTKDF$`Y&>h&eHZ#h{PvasU!RD#615!tcf3y#QT6?~%?d?qdZ* zw%6%Hb%XyVaZtvjJ#DX=U&bfM@{)PyC7q{X>9;}SqnpHbNdK*P*| zV!8pPXCi~v@v`I6O%?WBrmt`e$wDdv*(O!S{d4T7%zywAYkRmUU*G2{n)TJ$ymbTx zX{CWeSeLlo3J+)1P;V=Ms4r6L9um$eMk9@-7AIsRZgpaNuK`EQgRf1{5r8;Q>+xKb zjyj7fxxqB3UBGdr{`hPLNB0kl(Kw4BrR9a;GL2Z8^~Bkg@-`MmdK#s4EU2_2|?dvZeD{r7z)O%PIX%=npXShZ;Qf3$NgPS2U1(Q9pItYkcp(` zVdl`PwOgtxQ(Ocb0Z8a2{0s(fwz;Qps#H<{3j@3Lkg)YC0J5$igk;wBgeG9kBK-Z4 z#_F9#az<$;?=+N$0YoXcOru5pL33{zdg>JXQHE&lPtd@0AWy;ZqqRv~OM+hQ zA(c!ff?=P68aSSqB8r)@b&%$!+73YcIo1bw4QUbXwGGbl8Ne$WOI83dT1IMjncMMe zg0&@Z^jb#NbXXIKnvyQq`}@G)8Z=>g=@|%P!b$>NGDfEIn2H+gr*nX1no6%RDAd{x zT~AIt!U9ZCi!l)T@t)ogKmg$crtVA3B~!M^1cwYn;J}5eB9+#zIOd;^57)}AXujv>F0v8%0|oAj>hsTz+)xswPCfTb82mRuFSmsPWk!fLizGH*GnmvFfNoY zf4y0Les#Vqo73DW=FAib(K_On(03?O>wDd+XWC*r>t%y1WE3J~+lC_BH zq*CB#dMK`?QYz`tGEEC=XJI}t#ri*PV)rhPDVjcZJ2RtoLZN0fex*K*qfU^7K9xHm@O-eauy zU<_({ok73=)4yK5$pY|FYcXhHA7Y43BQ`OfY-THf%(06>0LY+KymSo){-$yGHtoo) zw0DDDv(fo$JjA10AbthCVZQHSol^gh-x)lF}}s3o2e}=07L+> z-B)eKgMp+~H^G5Gq2M15EUym%KnQ?nfMZZ02sIsr_nn@a;%8unJbBTWp<%qA4n zuaz5@v9CF3CbH&QFkc5~m|>W4P@un1#{~e%CPuIjrm*o~bo5kA+|& znQKoGUp=m3=4=4z8B1dxW-!jV&m%9d6b}F3m5SjEGKBZac9_Z{fb<1=sUxINZwo9% zS-zh^xTUcy@>9_50i?B-Z@sLB75FYTtlCkqldXNh#sFelvWn4oUNQ-U=&ba~2tbr} z>RO?9x7Fb`f^yb#d=-GydXH@YBm*#0OQ{bv{UL*VpXOq4rvTn+I>rEEHksW3LIB@J z*ryq$2aq-Fa}B>C4z6cIrxpQ(sWk!)U(Ydifr&Y2{~drx7*7CcdXv&yszeWVArSCm z2@+MT-v($Zh-{;Qm^HM@^2$UiXqY+hyZ1UM0SvNW13XauJ{4_L+)9PDC>-p~758hA zqxS^{!h%7r*Df=X7aOI)WGLJ(oV=UO7N?wWlFqzD4MAK)QS zh{4y*P|O!lV8nVPGg^~`DKUZ)3lv?Oq4g42tjC$FTpzd)=o!Uw`x5|*WA99q7hid= zJn`(CWk0IAe|Ybsda5?M=o8sE?3k=xTMxr5fGK%XX_7Eb0cLIV3!RAU8qM*21E8)vJPA`1oH(1ZUV_X z*aUC8+M7U<0(We~TDw9JVah82g!%;mWR+t2)J(a4VWIr5|9J(#aWz=Twess<-YD0v zvJK6QQeP{p032uw1`#>v;+(MK{04|ZY#2m1|W@r z5KN?v5HKWa^L6bpvJ#5cP9xE6c{2gV*i|rj41Bft^}d|eoH8;FQK1bFn@ zA%Kh-&QK?*DKhNeZmt&CYhSL8feb+;0VLl`CdA`2fK5XS=IW%g{Sb(ZtLFJWf9?)d zj7JKKZAW-tON>T~5m%KPJj@JQo0B;OdIsKQIkW^G2_Uf_0s_-ya(dAY9E^g1Q5QlA zi!h((AOoW4O@|a02bxvCE6z6YhlcGEe!yoZSIdcWY%VxojvPB%p24!K`=5Tj-231Y zX?tAd@vJ+$1BQKPLPaiFhJ^fmF{f$%Q6s)&1DAc=%FZ2Rv_XfsgxS_6G zzNrR-3Z$&UR_`Z*CfBv#;Q4{Aku7oE3+Xo2Zpb#+DkOz#ZaI@?PpAb1?|HQZA&>w7 z1wb*5aqGE@Hk7t7_B{{kWXcQ?U6kWSkKTb!Jf ze!}-P=7BU7KIa0?>oUObB7o(>(qdVMX0icL+QjEv0I+Q!sHqb#UYqqEwCXZAr=8b2 zM+)M}Gz<_45-Gepz#BjWBmqpW2WYu^^_>!UuY!OLbwQ02&vfQQ&X0 zeCZ%`94TFcbFDQZ)D@T-N?UQSVYF)aF`x)Ym~sjRLPj!PiEy|kMeeI>#gc#&j3j|1 zgZy^=qMW)ypd*lEPM;~3bYL;%$C-LJW3TC}U@ks9m4#yz*};^OUOMYH(6 zh6C9gNC0!u*m1jdD?55uRJI@4lCp~0jhccA5Yb9=vH>rNJrGE8OC3ZkB>HH{I;$me zQzLY`tsa#uIEH^jSQQeL;K)_m<+Tv>k zAUJLX^$^q3(o0sc3iju9;F*@9t`Xa~?F#isSuwav*me=3hH6N%P>#Wqmfi08LH$Uq zHy=PDO(mF*0mLAdtV7N$u>%5zwU%tro?EBBES$Gs)5P>lfe}DFD|hXK*WgG%a3P`` zSqL^PEOfgIGnHf-42EsdA_GVh{>`XT_o(IpGP7V5y=`}3AW-VbEU30YA(%t}Y0drc zny!9EEymSq++fmo0`4o#v;BzOK(?)NWIJ>(($s`x3BH~4st?qC%BKe;YakS}J1r#i z56hwGgR9k(P^+-}tM5jf zV!hkBM5cz!C_u&A1|Zt^07T42^mx24i$)WG03c2?IVF?*t70ixt#9r=PraMUi~{dN zA>2ImlNkVrK*T^Yjpqm;lU$4nZBQmK&Y|teIV_)h4!6$(G$yr%HuH_7k3fB_bhiNQ z;v8x%PQw*-61}3{Ik#M1!8#X@LBu|E=!Npou1Cwm0F9k@?ZdLGyUTqKJc0`E$I8A( zUo4NIW9^HtzE{p*1-(fW>9M8BnwD9;ST2B7T-dxJI!b`hdKMDw7p?!`xED}oA;5@r zF6vqr0T^nO2rXg`L0nq|+tjwN!2l~Sl&K2%0=r070b+C~2#Q z9o1S$-%#onwJ|g;H2C^Cq(lz^S?g_Z=2u*Q8_$jNoPMfGM>E5cQOj zxE&(50IDq}SPwdGlxE??VA}YQkt5NEM z>8W5Y@t#FYSkg6?RnJ+-IB2{mW|4xYSw`=$s%C&VZ|h0X<(MLQXWva`qxb7t=e23= zU-Epi*OiypwVhO85&+T)EIW-MET^iR&cLtPezW?fcs^z{y_Gh_^95uCdaXgm1F{Q> z+`%v$+=oK|f_TF3&#o@lgvgFfM$@IQ7LjgRM7yCSY*p`t&txki0?BFsS_=9qY>af? z3b&zoFs)@^G01EY*Oiv+iXr*?s8;6=K*DU$Y|~qH7XGGc)qVu|7TBYG5&?k|2!8)$ ziJfUc!hLEl2^=%!I-RpmF@wO0z7Ilivo~lCx*Q?7={={vW*bKS?QjgcfB~2 zht~uF7{EZVtfg(+;!?Q^AyZa;>PpO`TZl?Ms2Ctw9})~;Md_^&)I)5S6<8JK)L8&{ z3vgvkoGVkO-!IeW&teT1G+Si72*6?!=Y0{czp#Q{S=2hfF4m!+{KLmLOZnm-F+M9_ z{I8qki~sp)`Io=BS#GYcluOw6I(XAe#Q5!=f^pWSrHMB>%usWv!4M9M_W|9qf`|9>_Doe$g>=`Bo!}L;P25RL`wj3!%G7DXAO=v=} z7f?moDw<6yeI>V-9bXADJ~pxs487mlj-Pj*F1~L^vIsGWtR9!xO+CbJshXbR^C~R1YBR z^viSgOkMQ`0*^@1P=IFoN&(Y=lA{7g0EkjpVj)qumyATItg*;Wmg71R){-pZoMtAb z%J~n@l&P~5sxet#!k9-IYihcz&di`=?;L<+xm;NV6PY+)KG|F@zxyR>NXo|^U;eaw z@h_j1&o6?xOkf=mq`1V6*ikprZ1o%yJb1p@Hs9-gFhH~Q3-ye?>ut5?s^%g(B#*#F z?L;If2M7T?*jKCp2tUt7ie?=K5i^k}dW@i+Gx3~lD_C~UufD}e0!a2}qK&imYKj?b zAGpn!TKf}OYU#{kvptM?49*noA{qfmxW6*RmTOb=>?7^cPD@$bmRo87APqbk__&ZV z7c&|Q=c+W1w(0^h0Yk8naFkU*(sz;9!2r@MvF*MJB!jWBMZ271DaK1s?t)_6_e?(Y z1g68j0zk|}GIi9_RDCb2G4KqSj6`?_`yqI2r-2MugaD*ZNp{36idC=XDtZNYjcW)OVme1`yu2H97)$q^-v5pBNAbo;;V4Y-c1KNXSzDx?#3*nd0o=_LscS$O z=j?@u$e9a1h+`QSin+ye=aP*PrP3Cf??cw|Do~|v@E}8=cDEBAMY;r z-?6XkfqwBUQc*9z@K!nc=KJM?bBhqlsXZWf4@cAns6YEgal6izj;trq60N~DyjF&_4E59^VARzHW5Fn~4hO+`cBLHv zNCOXbtL02v0K#DGHPaJ3yk&|i+NO_FH3=%oMzS!F8i-a3R2#r`^Do4AOIFKkkn+lmMig^1OWGj3c>?0ahDh(Kw^MhbC?1$x<|FE9I z)#1@nqyv+_|J1Msguyt#K`d{mKdAkQ0y$ft3;~3}R8Fbfj@(#2zMY$4#&?h`8aR^$fQ)>9q}8 z&v{M+Hl+mh-Tp_`6lA2+_| zK3VRA(EWX+p}q?X?LE*e?z($lc^FLxpM@*xwdaqOw_ZI_&ST}hHHhr10E~6~04~Bp zyN-0!MGOkvayY4Ko$LWDglvM~PzS|svkHR73;<&m07JJFSwyxMp}jWmH}+vM+yG** zs3UrBd0AQxFQsdC(Llqw`~E&bgdKxhpDymZy05AO%gm*U=h;R*K!kb(3jo)mldj!e zbbe8{@%J`)e!5Jbn+7`RAX1TK@Z|SIR%2SJwad>=N3)PnWgxr_1K_xpIAJ zviy&qts#ZQLPP=x?7&|jt@YbqlwbbcFUm5y{LX{DDHT_bH-&xx9+?({d=&p}3m~y} zJfHJoQXCfLZP(33o`ww<4H!;?DY#bv;pZDrRN=0I#7K38O*i+MjRZAoS1KlgbJ}^O z)3iQWJP!sy)wYPugnKK3MFWslFOu#qrH%j`8u*PeaEVcfy>RQ^R}%H*$ntHE03*Jh z=8@E5;&>UXy?B$0|IDZw`{~y)VG7Pm>LPHA)&X%}rC<&a&vTuSUJFr&U0tuNkMY_k zuAQ-ESOC%)2n-~(v+2CH z{Wc07M}c`@FRoycVty~`n=w&aaX&BGm-`e}V<1@vqI4IIjRL%M8G)VwWPW3N0AYa7 zR9SW@9$SUe{neWil1(IlNrDJTTZoP7&S02E{x+|p9ZErDYOpuxc^ zb*?^x$MmSoLFjDu}}NNv(sQ&_=3f{7^26Ts0gu;jHfxY(7OJoexr5DC3R zZPO*1H(PI}wQ^ynaohDJFoi{ehyaA^hD;%~hjq`9wz_d~z5E)zvVQxIAD7?!1L{P6 z_0#gpzqwkjEu064ykC|+c)MI$I9dMX9{?g^Ap{bnvVQY3=p*=XoIj82K5qcwii2sr zRWL^yi7X_7yn=S5ugDs_?zvN01drV6cDTCiOmiUgbt7Ofh=$G*H6R9%WFcfe1{90; z3250Z*_unHuWB`Q&e-)?>>%9M{HO(unn4pdY)@9vp`2U}5@P@v25!C%qdKelUQGrN z77Z$GrPmlhdhy)XFq=fWVPpn*vAGd|^lPHmbeqyp29UmuN%l;t=g`%N2x!6Jsuh^2 zvH+}BZEw)X29_VMUNNZ&wloUZDd7>-?4 zc0vsSBo~P4*9RE`oPu>Yzy_7@67c(a7;6i8ZoO8M`?q-QI+hgs%~Ej9BZ$udNGb#A zjR!H~ug4d^!*qD{*I3sfSwS!m8yP6plTiQ&;`5sJGPE+ghJ`7rWFfqLQ@RO<&Q;H0 zUobk&q27)|+8hR&DYC}H>s&9;N{c_#832U(pFq2yV6wFNNjVQI?3ptQ<=x}w$_rQ& z>6s^Ag)8dua_gc1nsQ6~p_X0El4mqXdmI6~k zz@J4hB4e1>YK30ATj$vU%C_Lq1^pp_Sog^Fzqzf}+%DZxfkf#Z3+zq>b!jX-*BT5) zjRdblZ}DYep{l!w>vk+Fm1X;|t_z)S=Vr$bqq>2P074*BeMz&y z$}UY!0)f%3JveKQF1?wW32^Aw3dwdTbn8(=TUK+%Ow~lXCd6(F?H1eJxiuT^*_zw; zbP`x#pI%#>BVTI(shxWXa@r7}79>RW%T?u4r7SKkP0B9Kt6VArNwv5 zB3gTrXvP>!PXHo@l1`##5pF3WvIe{73?OO6Hh?6E$ePR1r@%Nvk68OdKlxgD;gyr+&3De1cTP-z$IS+NoP0WwIz8h5|SBj0I^Kvex4DN<(P`kmT)5PhmD*ZMIxh5P^6W0g$c2XC>;# ziiAjyjoZPG0c5CC1OOi=RYfd zb8)dOoqo4Wo_-V6_ivWZf4*FP`mjt=o_rDm4o;62_Ybv_saR?s-AiD;E}1Uo)uPBRl(nSwvN4mh-+9XfXrfMH#xbCMUg%%@1R-Wi&!0RH$dV3 zU5}L?gH`+pV)qYj-&5`aa2!OhC^i>-152(RJ9?^o@D8k_NJX*5$SOWy4c0W;>n^a~ z0s)X|7Bvo}i%Fe!orWUIux+?CNX()=&Za4JGd<%iK!br&vuy%Mbl{b}mg%Uh&xkEs zx)U@6AgE#&h>(SN8QcUA75#-i!N*((*iubOIVFQoD$1gHG7#SO47v%uz3A&SOQfm< zAO?d~x`_lJIopo+=j*G*w+9gKhd?4Q(XqQzFB#YhuG1>U^qGnB{#(aTZ9ZAP_zhiF z&^GD-pnUmv<)1%=1@heK^8R~omABq}p`4vKRzAA9iXuep6KjerV+|7a(jsH>`Pxm! zZDS)*EiUV>+m9&KrQ1=|r_@%6)WAax5;K~EEaNZW`-s3a;oh2L-1*PU=dS?hl_1`yT_s6Ulh1K&qYqh}5Y3z`&L{c%3 z_PX97)f`T?FQ;&=hKX#sj#N_Zb%n>oqNFlfVO5~29lQF!9rM(o-*SI8*UB8E%*;oO4|tPje(2+gf{ZjI4aY? zXN{Q0n1N&s3u|In8`G|%*@ufM$y6dGR#RGNW%9^lFP2?gqi}d6?UN2YI+p8nTArm0GDL-teEU!4tCPC z(WcnFfJ$mDCM7pizZQD5cxUT&rKwt*kP09w>N6PC(K)5)c*+H-<^W&>4h}I8)^S7% ztAR)?LKRwwfh1Bl4EiWIqz>SjbpsHAM?6-W|Amb=!NJTS07Rg{k&GhKKwVG{O{8Z) z?e*9X>r8S~@bk4;2C%Y;;=KJ8PMWc3 zTg7jun-=i<*6cS~2?cSnj{p!g+DoSu_s!7)V}e9h$V*(0bE#Sl!GfZ92Oyl#wVqdP z=3i~M^?c}nYm7yW5CtBz6h}I#vM2}8!J6FxAYyC?%;S;!sw*;fOsd*?BiIhv03A?v z9T6y0yjxjB0E={mv1lG(l)#~y8aJ`b%6=CZX0^XN{klGb&ZXi0#^0~{XyJ8CMfEAB zG(BVkM+M7T{I^YUpwdRsC{gtoIfiMm#%j_y5gHLbUv(UzA=Ki&uV7T$wKd7>-2;*K zBUThlr%P20m{O#v5`?w?00i*$3eYc8L?lZ#OtFp%cvL#CY8JT68IfCyrJ&4z$1(rTFkBV*`v z5WBHli;^JJ+l0l?@En;4%P_R)R;O9j!b?1#;`@%{u-m@>{)Cn@-M}9N7Y4e>mGfvF zWg83p(Xzmh%g<7?m}7w+Kw<{&pE2x`DUA_YbO zak{Ou9>?10OJX5#xxN2xdF!ns<@oUzQK|n{`TKvkRDJ{SSX-McC*D3<&V6`VV9y4T zTHI=x!_0$2fLK#lOaXfBiCN8<(|JV(k`?J>9|lnYNSFGOPSl-$e|uotrBEI{u3WX= zG!qvprq04`-zH_KuQ*NC(u)k*>ciD_7OowBM?tIsK+E0tmCo6rHMe3XU2m%~fDCFz zbWUl14)+tgGvJzPEqGOu(*zIzLS~>;9P3)Ff5>_($JKDu;z{kpeY9E=N3V@yXITP5 zq+#&7o`HCUMSSLX=HGpuon+QSGToGdvKkfwGz=gdh$nI1={*N=rL^MO_lrdtkfJCv z^Z6kPyJn$FnUN9kIQqv%-{)5q8;%#T8tk_=yG%B@6+pz~qV}Ti9hI~C8kEB%P#t}J z(9e2~3MgB3ot}NDqCA3s?Ft+~&@Urg(_3U3?ElA6(|c(--UdJf6p^wD08w>*XM9K| z!b*KHIl8dqsmCAPg>@F_xotT+!7?qvB16_0cn~n6NH6+cN$6HV8@Cj_gJq;+imUHs zOOOg6W*fQcAi+cHpR4DVm$p@R+W-#&2f?KQ2$_VfxOP*q?MP?SReO=h-%C)>;X009 zM9-8^vJ&kxKUVy3Wfnz307sv!smZg@vJRJhdv}#5o;p}Qc>gFE$MN#+yRVn`Po7ZW zWrF$=G?Zmjs;fl`flC0wWrAIePMfZ@1q3p8du1@o_9Y#F2uuvL)=kI)qS&$rnjTCA zo(`%U?pGBIB!Eh-Pvq_jwi6mj>$BAW#6rIvS}r_v@nHf;=J8vLcn1m3T&ZKYwYnSf zxur>Kli}3Wn1Qs$h_(sWMvS2uD21ge`}j>n4NTT{q~2iwNd^)+h#m{AV+0^+=WT8A zT`%Hdzm_)PG3D~P32@5eN6KrwLSZg*YZhY{TF*e*GOr?@rA&^&#u0h8w^qnGe zA>z;_)-;V|MeX?}qNiXEaG=>iMU_1NY)n8lc% znKy7mYDy`pXaT}4Tbj!irIBf>#x|&9(00qM*3S?Nu?TJe@w(?^AOw(PAPFD|9Dclw zIi|A&9tH~O6#WPxTxpc3-EaXQti74$V%n;+>Z)jvp!0tSAPvmex!1wo%)lv})J#;Z z-raY)Ctn-7N@X=$0YtB@)?bR$`QAufW#zm8mmq?a6aa*2sq<)Ca^%IA%9Bq%U5>nP z7^a8U%Gom?%H>A=NmckvLvsCft&rGt5@w1l0E7YEfz1HIG)o`QeZCIvJXbz9hx^n_ zYA>*_01&432n?;T(5b4eqhmX;nyY1sG?LIsWS30_!wHbxTsgJ^$Z!UqMSsm<6+t&N z4vXY|%&9DcN$MkZZaL*<5k6`^cwCW6GpG?z+scY$b19yC?T%JBs1()+Kv+@VSFdMV z`r3q1pd0K!tfA>PJod_51Plg|F@V%H(c?8TA*3KJ>v9`|)dTrBMgAz7bKzWSAuZ4D ze0$TN#w|$tv{>3(o2FyNAz@vgXT7SWu7=|L?`wBLAZZrc#%x#=njq=*(Yr#-4nPPZ zyjEW2AdzMP15ss;!Bi-cGksI~-c#NPy@Zea(ecfia5i*d4&@2{^j$#gdmimPR zZj0UO)|+mrNJUZnW{<3##kRCmFbJlh089pv)-J@abDFBAueubLQdw2+F!LCKN3fN! z}I& zB8c_?l0ef0`IZv1%{QAfrt7IW!+IS=EKiOs*r5R;i)ysEgf-jWFE76ET6y=_d(f#^ z+ktbJCdE1$Gmh0-;hq4JTc*^=j0gl>US8>x6wikYB$>yYD$Y~CNSD_3ZZ(STee071 z57~or1bfT$S8cwS;&=rQx8~QH?)d!H>fHd-3&OPnub4+TszM}hYnJnI>l}1jd4)QU zF@SI%0urtx(g8>^AlI#MZ53N{+iHxdfeZnpUtQ2em#$b>Wj)zZwK``_O?xi;Yo+Kf z;FB33TbDE|uH0I|Myjtp$mF!C~kqokPs-JiLaL{Mq&+f^?b|%qTh*!rPq_ zPAsnKF2Q1w)#!0t69G$z^BtJ7SKA4^d#5% z;CIBdBH2evS^2Ya`P{~OxVRGm#A}v2ePs<~q<@6=Q5{=&AJbRtA(aW=y5giybWXRg)IXyAe7FB(J%gH(!TYlnN@^a-a-zzA5cGph5NIX# zV|@;dSfeAwa=Ep#+ih5h1x6|4+g2?0fvsAkXCa`NNppc^eTM;~RgSwAiGidpbQLMA zbYJzwf~`?ym*z^XMB8jn-wG(XVq>z71P=m>0K{$0z2csm5wa_9)M#j>LN7xr%k9W^ zE5Tb#!vG>zl}6{P!t+d%*%HfjID&yBcpz8`NFtq88Am*y=`D%v0Uqo{RfBTJ0LBc& zRp%De>BeG8$-S&n&!D~$sib5j5ex+eXtBbvJ%}V=7(fV&)=7A54L}4U!B`SNDA;GJ zt512k^1Ic4WNUaa0Wlf7zFc6)wLu*8tyvH($?&pM?^=2P)I@pVxufOeyQgdIh>Q%Z zA&F{s?n9OC0~@iAgJLutO|_quET#Yx0bVl}q7z?6k?$v`5d)mobL0FuT614u67Q&i3G~^1pIHThIPT}Z zs`fDgkb%h|(q{eoC|YbU#CEw3rO4Ncg#>^|cOiHXL|jE2vs7&Rp&780o}-j>!eymrz+c%7oaG7AUYn#IEQK$l>E*ZD^KlMt7wqZlZM ztfj80u6m;|AV^*U~pr)Ou%|2Nv{4*YtJpUjd0{GkwE!slBRa(T`QZ z^T@~~kN+%06Ixc+gIWJ*)HDT~V*2XhIx-A99m5ikrG$AP1gX8Zkpo`*}82*F4OhOIx9 zx}n4Td{q(|c~XM2nMl986v>gJR3bV71wbN8Pg)yIxXeDiHUi~gg=S@&TceG*3YNU6 z@b%!aqS^(7q4&hYWBuqWijypd4}MS8~XZ4N@+GP0e}F!Sq5 zs`*MPHMuE2*1snlp2`IUiIqgLDp%2Ujj?A2C^~?uT=YcLFBA7%nA^U`QZI5rj8az3 zPq2VBoZG@Q2VZm;`KU>%WiwTp&?L4&4yDBPkt#MBu%3`_6mVwuE#V85m5jVA7HMO? znpMCZ%hQB5Pfn!}>&lJiKk`8e#|{v!zBPN3wB%9c#2`>LvnXuz|DVZ~v|PWzS5UxN zn-v2wxb2uedX3$B#Yq4JThDM+%zl4A=v{AMeg%GH;{))tT!m zghgNFmh(L@aP5;+1~Ozz8{mfz!=Q;#`(?)1J~&`)aA}2&>5d7+%dz{uM(G-BKJyxh z^=Eln$$eKesVrkp_eu8l1L!o#Z+=gg+~fmEcA+Hm#UGzf5B~Ps{6XXQZK%@4iL``-9rlK z+@htafrR8grOM|m_pKS&HWuB16Tp!gT|~oc{_&y$|u9)JWe?ZFRSS z6+Gc^{LW@>v0dkc(iFh^R2H6{twhp%cN$Fl73*)bk8E|Qr!$Rnf|m$$io|^67WHGC zxU330zb()FINUV6J>Khe4m{pq>ExnQspgl6zg1OEc7H6xvEnVgU}i$MOarLc6H1p_ ziJAQ7IWHj$QPw+*QmT(uiZ-UIXBxo1c%*Bi)_8U=8ZzU^Cno8aPO4u8s1u@QV6HPg z5~-oFjj1#G7 zqMDVjneq|?>Mj=aSNbUS`M|^$?EX{5ao4K9S;XAbPCCwQ1g^gndmnsPc=+1iV4tr! zh8Am8d(wZw{Vo55O`5!8i2IB|E7RhDRIH&`O)A0FGzI8w%s&*XXZ_aN;bA%;jC{+s zIG-J3q)-v6Ld2n}OIUWs)cV^1kFrrJ%Kn~TZ{@yIC*zrv>@zX~%8EI$uYaZzULp9N}fj=3kMW0blw|#dtiZ=G?ZN7$3)ZYQYKJ!}a z7OI;DSCzI-n*qHnM&8a|=aTr<*!I}AlFEw=W@!H%G31z8Rr}Q7fT#Jl1%7t{y|?*e zG@pTdPKI_zpU5Wb3bjrk!dHTO=t|Bip0FFvaJh!w zMGqr5BT?N;!{I+g;V6G|<3)e#`~w-Ak#ECuGy<0$+|zuL_4%R;m^+&}e*$PoFURP~ zoS~wL)+Cj4zUKmGhi>C%1k%@HZ!z*3ce?>5QDhzpuvetjoYo%z%O9eG{a%1osu7u?9kicpWdJu?Z70>V)O7%nUen z40lKQklxy^h}98q7epwS)Rh!Nm@MWEtJLe;*ckamj%l!ut*i?+8D#Ik!^yd;pPh(} zLWWx~Tb=PuEeHrlQD z0^a?w-64zsaLWG>ENY&<+s9&=oX2Ja2Ncw~!p~GRrh-!?V*xzK8DLYICaX^u#x8!A z0we0UM9U#5c6u_=aDyi}U<)OqzN#pN6j26-#L^+MKi25=3ZD+;2>@T3?_YFPrGF^7 ze2mC25=0PVj=Dzz;eP2Lc_m&bS{f33sR zpm<#}XTrY$Y@JAL4jFZm^f?=H%LVq?b8$YzpGMyT?3>Y5tSU8pebL? zPdaoIE52H+GgTF-cIm8nwB~C|hV)Kx9G6V?7nC8`e9>n57|HQ@i8jm*f6#3+w@DTlVgISYX^An~&jxKg{m&rlR{;UNrFPh|K*`VdpNp#R=E?wjF#9w1%v>reks zD`zH(vjMP36&grVvHW53MLUXyzSO{aTgFoJect@lpw)W;D_1etGb7laZ|MSVw^vpe z+Xst)bp2j(H8*(}7)@sCYa40N(|=n{ZS=*)MrC2+6;A?}8u0^toBp~rPGjxS5m?M>_IFXlccfU?>0^2=5e5>Ve8g;MeR1CiG_66SXUy&S+=2VK!(+tw?gOaj^_0U>Bwt$w=iRC z-!o<@fnkb1Ay9$#05ek%8K@u4A`e>ZnLSKy6zpk)RtgDYLjo1dTVsIfi*uc~qgK4? zF>}bPsfEg?E@;53DbVth4x!gRy?RzMnV46atDJyL;o1GAC=eS24~sK-7TRd~-^<0E ztWc4Ty@lIaWTCHW%}lt`)`dYNPpiq|&}k*r7d|Yk=tKJ>@BOadd8ATf^53fiRcb>k zo^JSvs@yEX#e*yTMG*&3P0N@FIKaWXR_ql(mZ<*ZMc3Qr>L^n)A7)3a?DLN0`I-$rrS&Uh&0}Y8L&SjntfwpFz*6<_%ONFK z=H@vG-reG0Ern;o2n=CVRhI}3kKg0niQgdUi=ewJ(10tH% zKR&)en6S|C;NI@ms(z;j=npU(da4=58oPu6l~u!gQhUb}FM~~Q`ZY*{;@mwz2Ae2S z7y$+H+i)wui)+}^n7;Lkqa9m!eYGI$`FdCtb;FB&ihI2KjqOu`=m?f>I@yjeFoxIYSOf#;rG2KyR$g1+!_ZOub>)C37^D7}yvJXBH z)K^g_<-R&twUJa7uBi4f0271Q<3w#M(|_0f8}|G>k*dw)p&@15q4gA3F@?a?@6{1* zI0Pw@@L~F0qZ)jPj&Mth?yF>YM!au(Q+?su!0WaEy^rplyx-|CaBnE7xb>_-A^wCW zV&Tc8!Zd!oM#azZcg>mbK~uI`bxq=WBt(u=Hww)dNc^Mo>D>sOCLw>_Ir2y+=m9BW)?zH2^cJ655ZbwRf{{0GA#YPR1| z%EQuY2^E+cSG_q71^L5Wkjz$vdT;uFI%@Q~`8iy;*Zw{VDfuRuR0ByKHZX}*YvQgy z{h4XTdSa5~@XarN$n*P;*cUJi>}6eEB-l5hu6Z*xJv<=Kr8d#vcV^9l#a0=a4r=@) zQ4@r}vBOX}0%qgs*6T`bC1A(eEuet zls-y~t_G{p#TKN!jgvAYV(;-MQ0-*sq|ww z)3eGR^l}-WP_uvXvzR4tz((&MFs8V8#3d9Ib0(o}5-jtTw&o z>G>dBr*0q7&HT6_{3es)L6Cbrg5M5N7n{ z@-f#J!~g3EHUp2^dYfv#2E`Hwdr=x!yq)47QHl%wMPa ze)!_B8bSoJyVuPf2fYcEtLb3@QZ~3m`wW=FtdjJFu%a$wP_YcsP7MS*d0^%q5?fQeQ#S3*Y+>SomUR8{9DT_ zDtUtp&<|4R$O-O8eJ#qA(_7GiZMXfjuE)1{qmJ9$fjx0{!A4uub8Rah+u~}Si$p}n zO`~2jZFvN?>BKhGq8FW+xRdO@pI6<;eXg6txU+jx*ncnf!GlZ;`?Np)F?FaIxzWrI z{+uv1OL7Y9KiV46OL6gI2xzquTD5cnqM<3tf!>uVpWPYw4jgvP+e;6?c6`K;FZB|K z&s2GgnNi@aj6M{Y zr|@5;9yyE+VaD2BVIhdBUsH8=mVI(MDx5hW8Ke(JD8-WOu>&M0rCk{t$?^ajf*APX z-U3b733RRmDYbKf?GBjc{1l~XLxaK5OX>uO=UZb2><4dY(5z!~G|lVWj<`5X1acY^ zKRA7vhS6Ql)N+{$qEsm4m8Da1CUy`Ih;JGg=hNDoHu!>(1iXr07|eDwJ*iKGWIBC2I(l1`j=$?u*X2?rIuro8+qN z$IDgv-{_z1deRzKSz63IbT`O!;wN3#_?z~&EL5eEw`NqnAsBf{i1kI;2t>$zq}gg} zk~KlCOh?)wILM^&A=f~OxwNAJ_-8?$yo{rc)m<`&?IyQCev-8A^dnBl#epXSY(AH{ zC1;;hS`R_Tuh<^z*8HvuKRZ^?)}kx)2S*Pqa%Wfio4SY))5Xok*yN@hA&;s%1=C$_ z-$jC3X=l9GxmlhOrniz)7Dz!;@HXcdByZEh!cYFec%BV|in#}Y^oq^L82$%52EOc$AO}de&M~251Ffy`wk=i#UDh9BdB$clhnIW zjOB2!Ro&G29k5DGJZ|IR|NnMdz=_>!ovrve|byt)g)FnHK%YS{LLh`2%B{gCNipW7LQy zwhCIOno1z0UHM&*KLiC#MqGTJvUPkWQksek%4(vft7<;!C}v3ez0$5PiSOt*2{VIZ z3;;a-_Q%)84^Vv>AhU`QhWgw5KSjRl8kQV zksOBuThtS^l^)=@P|v&44|U14-^ug_u+&o~PFn^aCb>4OwGe%=dN<0>$lT88Ma?P# zBMPXMm^xNkd8BcLMqI`vl=N=FSEp*ok#DI#>4voxSfw*t|Y=xRO zqnOTKYa$ds7>7oUaR}`tr=fcE3__!M=grOUYv*l%5MC~q27d3;c9CNqVgM_*Q)6&~ z;%#1tN>Jg5b3Z2A?E%1Hu5W(r6j9Dqp8&u@6r%UqIIYgmfw_xB^vVPjU=^Av(bZ&N zIy8Xv=PM0J9t2iY?m&o`l{AZ%V60MaCcyU(xUgcLj^?kbIs4oJ$DY|v?zI7q;H-uK+As9$y9 z06|c?J$;zo1$v>#YCajIOVCUYNhF;q?8E}#(}0;%uy*h&xBvKU$~B@542{l8Uyiw) zZhKV5xxg82Z>js)0ltk&Qx95cU3J4-rJOIK`uz(H<%QEc$t3Ka{1`^#qM_>Bww(|0 zh?T>`Rj-!Qs5z z&zIPqrP+)yH{NRcd36ic?GfqK+XzgSUYE{uw2HZ^H!)L;mDKF02t=kd*ps#-|0KRA zZsxo&nAzRksC_xMCEgQeiXUHuJP}XX7uSFrnPsuPSXb(Lu0{a?t1rG%0FuS$pyb5W zFJl3$bF!1A|TOz<41r7B%Le+nyu9DaYG z@X*pYl0JfW)_8I#_LAGx*UPG7Le{XMOpGg9MMc@uVPPdN;!T!HHP`7!!zx&88&znwMrF_GmXSZu zQ!}*pJouU%KAyy&eA=qIvDbo=LP&ivey!KJ@cE55&A_gsgFCP((rQ8SVCHEXxG+&P zWc&>)onp~=;OD9J%Q~BlU$c*88(CN^8Hg%6Q~^qxKq8i=c3Cs)7oG7{57UZm*(UY0 zU;r_6iXeJ{uNm8LS=qK(R>t@UL%!YxnVhV;zg&ZNE+; zwS~e0wuNBpk>~jSIb6v}i14R@zM!1h5qsui_cZ_EdDeX`wzpoJmLf!<1Xo$2{-M#& z{@T&9yox7c6#R-DZBKNKJION>{Or^5Li{0)U7(|U0pgvA|1@gJr50 znHaNo-Rp)$PSf0OOEPu^FUA?z=ienc2#$CTroU1{oGiTdz#@UdJbeq**5`Un;#`_d zb`!k%Iz%^)hpCxp@tvf=$9m(U0ji{R8|Dj2#4chkb}%H1op|-&kAFeQoelrZcdJjm zYxq4Y(F{tOWt;srTqBC*pu6|M$#uw&*Z4zEqw)M_iHHnftMKt5r{CCld$+!e+7^q6 zyF8nz+kDQR==2MR5`A4gJKn6vOiLkD3X244!L>$wY^*E!y*ECd24gm(RcjEu;__&S zM5s^r>h_~6IN$xdQmpC-SuEj)$Ce2^ElhRuatnGTHE@_35Ke-RI;%d_=erMry(idU z_2dYk!${yQ1sFN0t69DZO)WXQ!_nqu_DywJu>^)x8lhzqR2TVl&EXWu9r;}q!>J*; zG#~|-oY$Y={k@Zl*B1sK2rwHX{|k17B+-LZe3Ch_FomrjUpKr`d+XzP{2*bLl?Nxw z_2C~};c%}{#WmN2)i#!pRM}we!EC(ssH%+%Ib&f%iJqgaTG^!?h9gOWb{EUNtxkJ> zey;RD0a^-N1U<3gagHv%oSsdvw4N}KnZP0;q=y8INw@k>zxI^Bec!QS!!r&lG6R4yK5+*w8ugHH3;G4bU!R(MpyI7&V`~hoq<%< zf7&8yR|?p_@w`Z1ZkHAy!0|41CFxa%tr1-}>sZ-xk-X}WfU_W{2C+K^r%ua?RwE0r z$!oSx{1)F{*;16-#rYlP*Uakf(LVg;q4AHYw&5q0Zn3(JLs!G}j&X&O|AvNW|FdRmRH!UWbbQB{L; zJ?LrPX)^r<^c^{Kac8gw5M{C8#00&2pC4_-W*(Gg$D!)B{{zYrXgMbbN68v=47Fl2 zOfnRn^6TT2)iUt!+)6MK8&uEZ3XD6{1_*)HJH^|MVluN$`ut1=jQS22>K-Ma-{{w; zjU^6~thoqnrZi7Oyh|Rv8zb*`JRqK$HlN!jMhWM%Kt&))^JZQy8u%k-oQqI?*#q6N zfKvHR*N{K%Mbj=1hAr0*S*KQ4TXD3#ZYc1~Ce*T9rU@NXuPx?J!0~g@s|YcJobc!f zSFXx~n?h+9lpU$R)(@teR3lSX;qU;Eisf!^>@9#luneLH{{;e5ftLWnoojq7)iANs zLeom)yfULYHI5e1zq{k*MoZCZlqCyEG=uQ+eHkNxGsUAJ?ApWJ#$mepXchb*T3&V@ zA3LpvDv@F6Hdc#-7Z|N;gh8-pU6cz|$#_EA7X`apzncpjqI51}z_;zEZ5;Gc9Np*;&HZH2`Z*KQBv1KDhRj(|# zP-4!n`HLEMtlVsFzKx~x1~319HAZpu-_ILUXF(DHLKN=%r3)0f62Nb6D%g7H@E5J6 zjCm?kNRR}|ETa>`@J#C%%Wp;|xNoO4ApNT@`rwi%88~`gf#L?$UHj0cS-^|8Vy@m! zD&6sz5=gJIaPE2{pf}o%j60-UlgFogQ&8FD)rg-#Qgz*Be6Lc=o+|4XeKcEnvP-kj zz!kv1afjvo!w!?Rfc>hUYg5mMl?`h$4l{m4K>*`>1e;(z5Q==oB2rvV!4(DW>ghu+ zGR-r=QJT8;$@wAOPUR2;)X$j}lA!tKt`MRoaVnO!!#5NBVIau#6)_7-Wd-%q+pvaT zt`P~30-6|v8J&)X6<<0ixe53afAh7yKnqeN9Y2oyO1%`Y%CgqPqw&pgAbcLZ0(xK+ zCd>B*)YW91_J_azoDR21F_@8<2;!*R5Ey>WoIr%x>Qy9gU2pG-xonniLC-b>cQxHB zsez%)s{M`nrViY2Pg@y1igGLFnjfarvlP-!1uxI*9Gbs4Hchx_)_}d0o#Qb1pf%VL}`IS06HPqLfN~F zMHMfPWUzZ^5Xug9ggczVavYk&go0@|tt&Hp6TEtGpF`mg&6c@eG>(n)+_xt9$6GJ6x6Vj!ek9-6}!^5g=0Y6k9z7DLGz8Lb^-n_Y!`aF^4{^75vhO&oLg=HvmdxrQ!`heL=ykYvmJs?i2i5)iFfq_fcK4Z|OGMeY&ylVn_)+jH zMx3QEw$;h@a?shpzGTyNfd$tXeWPi*l*}1P>85gU$QHkV!FGQoh{o6OhP12IC~}{( z`)yxEmQbQnNY&^uk#FS7Io_yq5@RywiGjD3swf+zj;>8preLVVw6X;q&w;#H!&RN0 zvf-RI-Fa4hY}1JCf5D9YG=w&mVQ3k|(HMUxGKxW{#DA)4q5ztVd%X!evpVG=S(27T z!tMp&HgEAs^A8@{h0Poki%b9ExkQep^`Wd>bNA?Cy9qEKmZ5hN{9cx1DH9}J0Eqeo zMWLkPu|zU9+A*cnUWOv;P^a%H&1S>tAaOa4XV+Ck2ImttYN`K`Vbu)*dS?VgxFK~G zMHvm(%G+$P$#XL-Ty{MV9F9zY|DK^Z_cP76K`esl(%jzoB0|OqI~N4LqQRcdA;r^1 z+D&V9U~~?S)UB;awH|gg6#lkdnA>~LQ;w|I3h;BDFww_GK^)7RCn z>g~kp?GiyK0k$mhWI7KEfk_;_te`pOQ8gSZuJTIZ;WsfB-6O}_LDaIvDMW9_k5dIJ z&BVnO{SNO4CY;}hPG0|zwdWMJgtHqf)#toIzDLbTl1WXn|85`^#@i_4X01j=ijs?h zA9Qmiy5Q;S;81#15t{l~6&d|`VUx>dH8)P|d2l7nkr+j$@L1w*aT$N(;Pr0B&xr&O zgzV~`u4U!0tQo~IT2@4&o#*{>%y&GXV#?MvKT+)LEcA(>5eG((LJH`=xNniYP+p~; zbAg>hE2O^V33{X$N0n!36dC2VJ9D6RiGNA*G`1H|7JzfGPx&;T@un%cg{GT!J)lcE zk88$I>Ds9|vOL)-@LT8$REtandhyASr1A8_>ja}3b}_QhF9y)Z04OQik4{1Y#tlt6 zv|=Q~h}T)-3$G@DZ5}`*2C`A-J9R_|JXW45qf0F3HIZu~m+Y~Hp}HpDt-fqyIgAm@VgaZt3;Bzk-e{zBNIQswKp|9@#{w3Z5c?;Eq5Vh2J zyru!Is* zRNVhqo0wxxfTq_Mi^r#%nfOs~ACjt0^{aOj$Cz|Q91WXae+~_9Z7H0o0ToUBQJ%ar z>2<4ExiK$EtNkGP8blkgb!;3nm1}OO{$YXGXnhmh^VPpAC=bw~hngEKdYmk0LoSHJ zqNU(I;RaL1MJ9o~Sui=&{B`s<(Xw+=(`~P7x}ct}lHvZmQ6Uqm&l063z*4{0T!c!k zxS9~@msFbxOg(wH+)_l8F{yPtTRXveo`7d@_G)aFj{-28{3@*>0{pP7*L=d$H&>lftO@S|%FD zcBb3s>4lmxniXU7i?~tO6^=-QD*%OJ$oCBanj4-6aq8h#MbyY=!-D<|GU6sVqm-Cd z%|Oz%&SUhf%z=-p4~46=(Vbr5!Gp_#mu&3aZ&*TfB?-d(eE(gf17IX&;=^0Wpk7ht zUx~yq{_u@D6@>Qv`^`F6viMkoRQwgaG}!1o04ra#qJuH?JehZT9(38Pl9~m-+V#yy zD6VHMT6PFyox`4%L`dHQE1o3o;-NGfB+<+&9HPWX5h!m<+9~D^E`;WvZ|YcCT(?Mq z6Gb_6ZOB*pxV;Ay_*LioS=ao5zQ*=EdH% zGdxT!{MZL8H7(@@Gp@>CFu#-z zKednD03(h*sF~xRj5+YuR)nzLpRI$x*#@Sd9eSH!=xGvohZaPDsCKUHLiIF_OF9 z`f25A)qFc5>P|+nF4eYAQEs)IG%Z2F4yX2d^G3U!TWN&dN6T_1|89M&IJA@`P<|Nf z@(2Pc@ff{FZNy$|>px}etgny-Y%K@JDh(n>2Tl*e9iTH5BU;@FU}Uqr10fb&Xvk?>T<#d0*m;d|6y}diG{b2FC zA3}!NZs{%qn4iXF29>JFTR(aMy!?UkYPHp zclcOEl?oJ1pn$WSoL?b6a&4;dll4ZPW+Q0Z$(}9Z+%|$-Uf1%|y#d~tN4j)Dm!fp! ztuv~?tv&IQ;E*+ec`C?i9RKnL-xy7gIZxp*@Xp&OW783nsUC{bzMy%9&uQRVT^>wP z3k$TdM(_HO_5@GPbM(Jl@a71xmn0iZ;^B4D{1|Ecr|O(0G-%#&wrRxWE3XT>kdrv{ zbu-64$Zkj$&;qfk8}p>m*yi4lUC|gT`*|p8ZzjAmZ!sZ*`jkY5YU8;PA)*BBGs zQ7mmPs(Z}0&uB!xpkv)W>?A|Z2w@KIadJ)NUHY@l|Y5EQ&@n^`ed02EOZMg8Kbe z;;dBRB^IV1X;WwX&;a7&BPN|!uk{X;on2w5d4l@255<*cSVNEkDy8A?9<5?78)SD_ zHghYsaU2Y0&jOj2bhus9;C#kzTf3k7F|=x&X+1ZK?WkB4GTM9j!t{twYQNbx8=J7t z$CQ&GnlM4L9bDm7=A`!{XKup|_3k!N$EeTVJ7;`D{J78HB=AvCgj}N4^%pYo8P!7@ zX+l%t-eg|Nn{F>}vO5=yBWZ+gzqUV?MYQtaJk)++5?)idEoVq<{W4m|083C~@ZY-T( zhXN;-@s{HEH4cG$tNI`XO}Bw(XMP1l_OFFXtE3@J)T3d^vxM)Ry{wvzu6nhNZ>FxQ z*@DV0Sis=YS{;c8o(K%3g4H*|fU|#r(j`}RBrcP8Nh8AHuDb9OxI(tEkNBZjI=xCs zorsDu7RQ6T%zpRB$MP*CMMdq0>?2#=M#7pk+HU#ul=tOXVlxI5Ot#H#0O)O|V)qdc zUU|YPxEnk+zotnd&i|IprvB;0Xq{U`&K^zhOBn?|*j1 z(`YR@h83BYXf}PzVW`lU_O)7~X)SR!pM*WF*ZX#m@;q^Sd)s>_tYLefU?T1A-#-G| zM6dt6{n@`ZI6~yX#K-q+JZ*02#ZjEqH;1>bml9SeI}n=CzFBBu+Y?`S@q}RjSrd)g zwL3^EOo4GAmPoD${KTI1gs@~5d1w(z_~MY-h~`SPnA3%y9@`UbTD%HXFRCnv7N@t} zG{W>}wMQ~*H7{io+F89P_C#Su5ehKwTU)!kKj`GtfIa~^1+}$%H$nsyj{VI~o5t9p zcYQRqiziR@Ob^2u$r#up25r$FV*ii0n@g%)~-m7|8sCb@z8G2zbM!wl@L&Db+HfrrPgGSL{iahY;FwE9*#pQti zJ?a&=&ElCjCm{laf-iK32U5x-OmrtK+89RAJZ)sIG$$ul`W-H-JT(|Ckn%{*E6VO6bw8hD7w zSsIB%BGl7|N588-ytpLVp3LJK_IcVBE^AV0PXIKC2x}YERsodPLY8h-H^B4%BjRr%@S=<;*zA@44)sWXDqT*1-IX7bw7UsHe`N5s4@W}G#bP)V~zZ7j<(3Ck6)g)<+dB-e{W^8AqpHc zK%$9b9W0VCeM`tZ;A=G zEgzxZl2^0!D))0dqj#yd@fD0rzo$-Ck<5U|+rtk&_i9jMS^q_cL}w+*(AhbhF`U?{ zHk?mNruI5N{ww>5mi@!As-J?m)>&U$HNO^I6{Kilu>N=|Mk~zDf$|FaIw*CO9^;d4bQp(1sGU2x`SXnQjS@`SLzC7|KYp5SkF~7vJ*a-I=Wa1@cWy<@X#Ne8 z>B%7tbMzNTb1l}|ULx#LWM0xb=tUS&BO)G>gqU(czrZ&!eJQ26CEg0d@XeUG_gf11*%Wzf2Jfa%NC5CTW8y=SkN6`w0)Fy&(zG(e+@@+%Gb9vDnze5fw`X5 zSF@y$Hj%6pp#eQHMa1^Jf8W!Xc4KaQewu4s#fO>o&;z`Vi85L=taPXp+VIp97XU>$ z+QDg+cF$)sm+%+Tj^<^tyu#Z7IhUUh!~)kj8A+}?-jfTCqF20wf}cQRXEi&Oh5!s0 zUiM@$gr=)Qa+Q5y+4HR&EvEs%3J?;o(LLcvoYf-Ptsko=qFp;o=yovoV@?zzw^Mxs z4)U{~13wOhtyo(x9h)0gMAkU*(26wsNl7vaXHlZr1b(KTR8Wt;B{L#@!j%px5>P&* zrd>_~FwV;<5DLi}7~ECOX3{7_qopnZlAsTasfNZg2tl#o(3GmREEXyP*608Z0;l%R z_*i~0r zd+z9CwhJV_GQRcfyt{Zo$$3<>)QS@l=S;ofwq6scT2xx}EIf$UMOTN2p`#^m)wUbc zm^hxz1P)xkc;2lf2{@?%yMcVjDJQdhtR|3^o2w{f!Od8v^ytUQ&9;V7-~zx+dmp^F zb5Ga-K;rd@XK<9e)F;2z+KGL(0|qr%>j*gB>`p%)r3uv+YJ;GsCPu_4?}B0}9*2?Y z96A%f96mm|2#fT1U8dvteXb1F5pLxSk3Y=C6VSLKVT#rO>dTJ1D3)=~k2ClRSApC*uz)yLu$M7e;JVN)EF%vl&1p%{o|q z-Wn2pUiiG`$)rG9JpAzM4w&-!4-MLR|5J|*YZPnr#eSukN56|NLZKN9qaR{e8?^4m zw=Wh%EeG91Xk=vZg$QEdJGBWw0&i**wATcoU$n4hsNE$CPAVyfVVLr%q*Hq<+KHas zz`ALyhUma{Ws0M8czGra(mWC9KW4=e7<<&+#o0RNHssD19PU(ejBC+I%|oh*Ebceh zoc(6%Cqu=f=`c_fW%{~-d7j|?hCDk48tT9WUD&rKR=c8F5x+Sg9Khq%2xHm>8TRRx zp_uw!>1JoqyI)n;3nb`O)U1=YL71eEY}nD!(G96AxqM5(Qq5Od3CxdTjK3(g`Nov9 z)hE&)Wh4j)+8+)3x8;V0I6B;InR!wSjG_3T;CqyCY>gWkO_ol5_2!g`FNfzjFx^7A zg!j`>X+PzMYMTZUAvaG%y`hgzES3$u9st6mj%ZFO1t=Qh$Q@AXZk^)}FHQ~wegrQE zcTn_LfF5BI;JrY~1>F>f&|(il9en;B)xc8dQV&eW~d4Q3S?QfG6{LsON;iI}(v!MsZaU&+F-2*s{KQ*(!x8RKMIi zX_T)EM!cz;Xd;&gFufx7h7YGj(21oKFB zy{`+0Nk<=IzTeh4@+@(ah((91RG;hPRaj&SzuWo1k!ZiEV%?F^Fn7M|yL7pn zZng{^92w=20--xD#lZQCNd$pAHUjdOCTu9*zwd-gB;%jVysMBTz*<`-RJ(vb#+=GR zqBn(-L@%fmwS5s zmX!L~rv#_pnc##v*LG(`>u^=R5fMWSc zX_|`#LqJhk^)0@&Z^`BE#>bg+_N{Z3K>2+n!~83wvj+rE97KIRUJNLc3{$r^RQHsZ z^9mAe%#!$iZLHLs)G>wQNJ*;AE7atYc`_Ust2ZW4@sgBpK-eL_xfR7ufla2H(G7RN ztDma?i}j|MlH9*MQq57)B$3STgx#t7*H+@~4#@4m4MdKAnJ?zBJA)4w52A2YEpVy>jN2EXfGCLmB%OF{>Zp`+v4JmGs+J2>la{FOIlJpIc`VBwo})# zE|AC+(AjzYQ(Ia#@lla|af_a4C|ceD#Ac`Dz&bBY-A{noA&`Kv%nBhrk2A%cuL&$C z25RB=ESM?@QheXmQK4%KjyKOA)j~XQ*k17#1okh zL`fvoRerI$&wn3fyMIV)MYE1xC*xMX_^EpLl-bb;ZulU^AFEztqj(%Hdxt?$S%Pv?3M9J6lZUl1vhUeCm2^OFBm_ z0v>^;;Y1r0M`6o;#D`xbruS#*RKRK`8LOX07-A;I;7^(@omFl4Slk5OR;8WBS0%S` zh`R8g!%SQfB#dU{(RV2}D83V;>=+=VAgCV~%iYTn-k?IE_yb{ha9(LUIK9aE85Q(K%Bmsg@`^2RxvXN@K{{L4{M{GJ2zLJcgz2JApiTfu7nN%~3?M@giH3|@Sje!;Y^H{0F@w%lBPvpi z;zDZ~2_Cs6uw?6xzKd?(Ld2h=pk6J#nTl$Hvq5CkmA1Pt`zr5iW*-iw&|X;U!W5pg zpa76@_gw2GVdX`TR%1T_2*vMcN1kacZplKrbXIkW3eX6+ptZ#h@;6Ins1>J@80n)fCo92Wjb}Xy_Q{=FhYE?KGVG zR1NfsG$y2rt4s4`3z909M=DC4e?u&1z&FzhEu#YvvXFFRRUJgY&=^PpNN$sXtO^ut z)vYP4a8rrBbhceHkM>%>K3!NA-4j?A17Nt-N`+uL0U*ukL{O+std4C^n`kK`gNSvK zmeye!Yfz!hdWxtPpI6T+TYlx*qHS0yuVfurC`d4JElSpL8ga4i6WpGW;A#qJE~*=nQeAzg6KBDz|`BF%;-25bo+ z0=~vT8k=Zo8@1opf> znRes-D27bSvRFmDZlGh-V`!Fa@x$= z1{p{z07Nhj4TRvr)K#xpB!DQ0NBzjS4aqog*R~#DA#++U-My|_1HniaDR4)Bt#ER= z+S{L1+oN>tQyN%wnnYHKryHyj%QaJ1D-jFQ*?N6Y>CFN^25^EwvXw22hV4nrKGc3( zx`?~Q_Ey_$H`3accfFt@I3;+K&-GKIwjjQrkJ?4ya=SyjF@B_(}i8vx04R|edk9Si^@g!3`8sjWO}U~Y?AIq-MI zbt3?wo-<67^#Ed!8V7%O9JUKBO$arm7i`4m#6QE?sI$41{*vU>~*h3BW*lM~o#g3y${K$_Bps4g40c zUBXxZh%8{=>?%CZl%)zt!PJ?;qRWb{M`oCY`U(b;0AlNHtHr2=bgZ2S01*ob7gyS9 zEBmPFEIYO+hNs@4)L6VvKqd_&8zj28P(r)F$DonS$nLMGq>mstU?QQ92tW{Y8yK{O zsbo3EKDFM7D%9O0OsO4#$Z%1ozP-FyQUH?xgs+u@%IT^KAPC4)7}HzUByq#V6tZpS zW$-q5D22u2CL`f722e``R~l*&zybHwG}s3^?XKfXKXLs1vgg6a%RRU4Eqiw!L_y)x z<;BNeC?{TjyG)%vi~TJk*bwZ&TJU}~zYGBGS3|4-QblwF2LWUuy7(rDWVc<5-mVaL zB{^MGsa>>SuOdJJfZM$rKwKM=R^GPsYb*p6Ai~d@OP15Gh8P+Sb&|fFdlv2Wx=A)W zOy-cCZEI_jIF2EJL<7kP)+y9yQ%6^`vki({snia^T`H*ukz^w2#>(DOS=^UhW-|>% z@DPAVOR+0U#efm;75KB)SEjORii!XkLOQp)O)Z4MGQdG%ve*Au0iaM6Cy2E6ByG0t z+*lx&2}YqmK{u@3ix6B#c@>;T`a^sw5l_TpBrg3ftcPO#fVWTm;jP3K>C&- zSsC9Lh|iJiNA9jJt=3zb2@0AZ4A@|vcY>(d`lV0GD#rTdPs`@@pA$f+X>b_7O6y~Fzr1qX7I56;rR^oJ3 z7C>eJV>|9-6IE9b8;F@Z&ecIa7JyQ9x1Uq(1%X6C+X37_gkXiSm4$T6=jJ{t198V) zr>orit6y8BrOf;p0;q6839xuu3q{4Mi_|?5K*XNN*1$Z#AZE!t00b*&l6d(N7Pi4- zPdxfex%G$lmECteQVu@wcsX$IqveS`kCoS-d8wSl;!=~R(b8lYV6#fLL2ZhyP~1X) zupYdaksVl0VWnuEOZ2wdkxW_DHAOlAX+5oSO%7JN+x9yrFz}k`$s`h#`nALRLPM>f zD7Im6>KRD(^b$j1OLhwP)rCbC(=?E59na6ng_pEeJNBEc<`Ym_!@}0=aP0K*eXb$W znkOcR*k+qufEydpvbYLX4#ot5Y%wAMJknI^SStWQU|PZ-eb)=iPAWUEQqxEf%E!{V zlrv|G>%AS8_Z_I+nw5?wx1%o^#HR922uc62O7McJ+I6XVx~U;5DNK?O{6Q! zuP0#nv-;pK5bJ`o#pAHL#_{xwqJM91>rFzUwUwqgCJRiOJ^2`~vd+!xpe2i;`>9s&@u1_XNTI~-DSZvi;C zT_#v?fB4L`3Sc%z(D1Mb@L0fiy@;{IEuD0n3_u52yY^{WzxngB{L$Z*jZgovY+V0E zxqz{B>2m{!T9;IN?GQW?6!e-}I2d|>G!Bof{;oPh^wY9^ck5v4rnmj-b0YnfwHRb5 zlL(|7t`!;DiCusgRrCTESH7D;gbtCw5i|E}1;T>79CgXqNIm5Wh`FvgQ%ea-0+D!K zF7rENH3=#RY^-P(i1_`((d@hZ!cn>OZC#nL9={jtvKGTG#Jr{e4*qj+R~b?kjiw_<^$Lj{Rt)c%baLeNQ=X_ulgSfv3vR=UyqtUOigQoH~uQ#n%KR z1Q3CU7N#OtWx6leRHWBxV8`=LV+{eMvVw3^xldIaZOK@-L`mmXvKIqE?w9?Yn7YZv zhpk=w05qc2dj|9B+#1z#v_iyI-A(r4mHfs466=(RQ4HI_Cy-GS$yElc{=sxoq~Y?h z1|ZuvNgS*M7$B2txBIvvt;RMbp?_q@U8lvk9*EO5{cv!1TF#H#`Z}Ch+cl)x3Z<#U)|)Fudomv1uICe}MqXP1Y;||p@uYSwksix6#s5udIkn&o;bhB(=T)6T{S>dXKmp&GFEMEC(nb`QWe7JP89Q|Oiymn%y9D4Cx z1IVDGZm^HO0$XV*II1+FfuRL*)D)zC)Igkefprv*S2tCppImFf z)RmoH1ds^?DFMhpFR{fpQ)|75PFr#hAPFQ*$A~3-@flh{P}+inq;vmUhgTD9bs1y` zUZ&Q||85H)NcC+8Aerj&EZ=Udp4s#O(sxMCW{PZOA^_pFgoeS?72A@m`jl-BtEL|9A-C@z8C%%Dy}HlqYu`EHA^E_3G0vl-HksxqR@>Nvx{^ zR~7~ViPh`^k!ZB&bXH%J5*A-PMva63(1Qd4B!|*W1fCIqsQ55ipe(C+FPKg3xJv-B z+et%J=oZo4pDPw^>R+EJvUt7ql2#Px{!y)MJk0@>ec-({?Zfp>v{Ir|Y0_76F)b~8 z)UVYMqCNtYYdjq2l~w{%=+_|6#hbXsN`it@Sxy%*V7CV|gO1Q-Q>v#7dei1Ovu z6l}dkAVok{upVg?W+9xFGmR4Isu4@czFO|5#X>-W2lDdF<1;7*+tG5o@!o;UtP7&t z7nzdSlB~L}Pw{nhYL8X_{ElksFZbCw$p+xD4S+O2Vf{t}mY?h4{Q7jCVeI31X* zLFvTNNDx`YHCrc;BjuF6#`IliDP}T?v}5xc;k@FrxU%5-_0P-tmCwpW0L7)7e^WNE z;Qpo0$^<6B?_gQ%*G^29M-IPTc0K-jxn=jW<(rt4ejBOrKl{N0SWv14d@0h4f1n)Rcc>hF=14hu_~r5j*vOgVr_eVGO&C$R zE_W994QH3mjfR3qpP7|J#kvX`xt_>23`E+5HIKQ46S>wL8zsxvZVIoo9}+Z!eTF)G}jWqNG{ zAYL<_w4aM^#X2H%ZE*%0wIZ_nYH=>V)&SIX&J6%*K`!bsD3&XbnPEuhP@}}&VBq^T z#WrFfUPy{8foUn{?DKO}WEkCtbCD?b!3q%KtUWXeH8rd$tlVdI(cPM6s_UXhu-3v; z!G2Z)l$1u3cHn|S2gXfrHH*gQFd!y?L^^8_92xux9teijQY<#nj;%jm=}Wbyg9VR# zzh~mfLaeorwM9CwwtpG6Yw6Qg=_LDoEQAcC7BvP#N#;iFLV|TLf(4#?Fa!gLi!*!h zSOX~V{xY`9xNZhrG7ADC0fOLa$JZLtP#c#%0x*11Hm`mruvokFsn$1Nz53I#cJ=4w z{QSjoc4o62eRrZ9e)-+<#NoHf?tM>}J9h3b-@EmJ^2gt}wfxaHZZCiKoqNhRf4r-F z_x6X%0|$=`8Hn9HbV@lz)r#GiBOd|?!9WaSCPASwjaJmx*>?pVtzVV27iu7BgH7f$ zN~L9&U{$U&T}6RC1pBddH;ee>PGUeNOTv2=WxEYQI)&+|?oP(huXEl2q^&eK27D@M^-IiX2H=sY zEY+rXtr3C;2XAYIzi#xi?b_A00}wHWNP}rD`K&2X;7>*nLbNmo2F+*}l47=kebY>` z4x&AlX|CRJWx&wvKeUx<&Fz3j%qCJ;E-)lZFnCDwiPsKOKdt4+IFK3)9Q;|mEn5Efj0~#smo^2^ zz;7u5h+=m#sbzH2U0^E`fW-RspOy8U#iv?-1eGGXZf*~s&Z{a){1P`@;v)z zWe40$qluNM=&*rTy1KI87DfE5{&w@l6rs~Gm0~%9JA(3}03_DE2oP~)H&a((xgA+` zo!atiQee+wJBi^T_LJf0wH2 z^6=gFmnZMrRbD;#XnFs|BjwCXFO~P6dA7Xyxh}XgJg`z zp)0@#fS7d{KzutuVGC=>_Uchp9qFy=zQR6N#aiqX(je;z5x$>sXHjDRT!KSxbv|9a zgVH{oJ4!Vgab68Xs28*q2ymaU`$zk;QYJKpeosfV(OH@pBo} zQ%C6A!KdRZ?Xq>&-qmL$zzwyG+^+%7wp@;`l0Cr2%^4f;RPbg>4$rx8j zv#O50`Pg}W)-P5N_{AbH1Oi|Z3vfSi>yf{OwpF_oejhX%P+MVF-76n~QG8t1E@HqP zHNW{;SwI?U70hBC3}a$`vz$D$P~Lfey1aVybb0#uPx>$iEYyY6Dd z8XyTC{cOEy9Z0VP`%sV{W0 z?!7@$!1XR#Iw=8!;E^NO zbf?%YCs!;E<@8kOGJHG&YNlFx5Fy~W6K$7ok097vY@6lO+C;yEZ3PeoRL{H#Fs;tP z=_;qJ0zk;FstXD4qqwYLCy@owrS^_Tx_dIb8;Y~K=4@NkRyt1 zQlbx;bP{|Xz+&_2=j9@G3#6nj-uQXhyzz^&0nj)*d!f8}W~Cf?Z@L^gcD_7yseITgOnb_xsY`j;DU)rv)Kkf zl7Xac7lA$PyC0l7qaIg}L-*Kq@9wf2%;LbVJ>}r8-LUT7R}MX}vpjkKUFER{?k-R6 zzOOv<5cCg>7azL69DnjaSwHz|`PtO5a`XMy%I5Kx%KAI6m&N06mi2RRXU$HRWv+0D zHYsl4Xg#P05rS)0tdorhG{TI~iXv?Tt_xOiA4nexICRaB&LVgK5Vin_bcn40V!Lm& zdQS$T!n*8{<)XW)gNy*g>91_O=q|ql1|laIwGY~Ht#8zBx6%<QtYJ*>7$S%qUv;7DOV z07SJNk#3t}Uj*hU7G0zd?8o%J{k2}(;!hvGi$Y_r1+lMw1+VV|W&Mk_7BlU3zxc({R@i;b(Oxd1p^ zx(Sc~P+a`z@5=^KQFF`J$~geWaio)uot!PNy!L+C4_)G(z0a3#-+rKc^M||2H@dy?dW2hY!D5UViy_dGpOP<^2!l%I3z$0V6#&v!9*ipRNMU8L8mCw?ZL}?b)bvxPp+XD~al3bK zWw+e16}O4#tw&X+$F{fj8Z4F=cmWtIU{kzZ0VdsGo%Ptu{n~ht1%s1lQ*!pqWO)nq z9FITxR5`HwKzS6}$D#cP$`kwdm1iG$sJ!^tLvUL?R9-){r@a2e-g5M*hcOP6Hy+oKt#oaOoQ<_1R!QMsmY}N!DU`EP>un_wGqyPCgm+NE}&`>rZx^JSPB0+=StJ0F1FkKLMkVO+f_+9Nt z_K}5wOb=Orrd8CVxwFElMK%!aMZ^H2aB$%0>QYcHRsbgysz7c{L4gmSrIZP0zcofT@YBzieY^IRM<05) zJoWIQ^7JE*l*5niFE0QfUU^~{fMa(#itW*-_LR4t*<0RzW?y;hDS*kL`^v=8N6Y`b zdA5{au9WhRv!(oevXoC|O8IQL{PxrJ^0$|k%VjiOT*c=v!PYAcL|RB((_Rk=Fz8c$ zKA%>ENC%byhX9iL3AY3gu5=h%rjVjhW3vYjSxBx8VgPZ`AJbF`Hhr%wt?|(Th{1v4 zc(#*wBS!`CU?K(?Kh|4oGno62X;Z<~ftn*~Mf4cmOlie+AgOMn>heh@Viv+QnNnq% zEr+np*Jc`POX|w(Lmo??h8d-wV!kiNe{(iiM4MBq%0*m}`-PjQqGyN5`Md#A6>j>mz7Z-2*4boGe zB4u^GOd!yopIj>+oL&I4I9Z-~{#dzp&$H!wcRo_SdCT7Njql$Nq5CfA7k5GU-c@e9 z^C5KIeirHMqj>Gx{_bZhr(|`m|iX`boKrK3Eq47MD*0I(^h8{MO!un zjQ&wkc;}gO=pP-pD42CRhEq!jMocG>1u$4@xS?WJwi7_iP=)}Kjw{u2#6GeDexP}b zw1jHu<;JIX{>6^wT+kURoqHGQd7|ri{c*vq_&9_@4x@atzP%XxeY=Nc5x zqwTv33=JYGJj~-r&%fAF)L`^X0{hE?x3-2xrkRp)q_x&FO$K+)M0MWjB#PRD#y|`x z`8;bnvfX&qI|jhvAgt%Q{nsEJ8i~PdR0t}LjLAv_&d4WL|LXYo4MEJ*>| zg^RYza^!t(tyOSR;8c^+PZYQHI)0`#j5Hc}B9ab1rxD3gxD4$D)LdM=f|>s{xT27P zx`5)mxn+RG{G~Fvc%_^KyLk23M0o~`;lbU{lzZ<#RBpfRq4I<8gIRp{uJVH)?JD2D zWncL*K;(gko+J;5n8nFcQ)L6!=rX(Of?-^QW%njhQJ=tpbrW?SS0S_$ zEG__WHvt$-N38{`SVcDq0s_GzQ&VdM57v~RCl<%*1zfjinZnz89Qy!(xQ|sbkG@4o zO<^f*6@mWuRILw|X&pGJ+!0rOw1S1y+Km8^x}u;`Wv%L(71s$G0+0ZYerZ<)-59w} zc(RZlJO)6LbqoX$=@P@i`jNibBCV{06c&$B?yFpRap(f`^1W%@O|VHu#QUv)(7=;H znZVU5&gq1bXb$GV^*rWg=gP$C^X2%P@0KGF&krAZvK&767=YtodG4`C$}@-dmZu)N zr#!p&u5x(q9p(9b9#8MS6-9)%lxO$cS)Rvpr(b)t{L`lZkY6uhEP{zF130k#9~S^9 zH_8`(ceVUV> z4nc$rgg}xE#BE5Fju4ArElAjXYl_J=7zrSDOWBdd*BU_R#PL47hIs=3yREt^@+b-< zcqJf7TM>A;aID%;BTbd*sLDXnITW_ptg@C4!r(usd`H& ztTLdwXB4+ygo=QM*{uM|>AoIB$VzI;sGIcql*{h}^h{tWj&M#>b13;@OC^kz8& zusDT^?&o2l-TTOqa{oim0vH}H--f{bO$goJMjGk|KYXCvdDp(O`@u)czK5PDFQGo; z_`6f(gEMePVm~Y*-M9#i;@VHkMO2S}Op*Hvs>mU3U%Uinfi%=bRH+jba)?!cVUSg5 zLIBZz4NPJU%wjzz1X}1TQj=y)?6H+wf}z2fnolqgr-!O&9k=_`QL76Xt<1NLbE;o? zkN~BQzflO-14v~kk)Cp)907#Fd@zh;9AY5UD^}{te06oc&S9l~QI&x-hOniOu*<&mOg;(cN)IPYBdW4k_DwE|vjC)%$_Kj>PP2tW|T)qWjS z=NL2Rr^<eF)ojCp{_)l&ZDCbplIFaGhP@{7wG zBbtQutMV)0LZAViS4@7Kr)Tx`>hqq*7Zbe!;N*-zhYgHCaMQusgRJM^5JiXC14~=%cLn=!8jCI|&-}CVtqafsK$PQl z{yPC9tHpJn`^zH15Wk%g3n85~8r|5g1xW%(>K{#$3DLG&@1qA0gMetzUPs0_nimIt*E>B-uLe--}}LR<%j4R zaSL2g51@eWg;(A!uf1`qOrA%fFn+(Q_$^+9Hgf6Wr{yZFxnvjDkcPT)^(OQZunPdj zCO}}5F0V{K;kQTKg6FmjpdfhAIxIHHbQIH%1P%-W2s`?^1_#$%lZRXdkxdv0AOJ>o z2Cj8F=*H`gxeS5~R2IUUkj~kESKyXut`TTdXH^E>w4`e5KuQNy77gYiO!?XVOb@4T znrKS~VykSn9$A4qXtk`clDuEybp#?!ix^vYJ3DWMH9-qE;gTL3w|JhkHe} zwNO|9I5$gsabp`c8&Df+3r95o;l6^2sA(geOJq<{L9diqoWERgw9>Njoa|#3$2eQ& zAflf*cB;Ja)RA&%_oL;J2lkhP4;?6b@4c_w{{0`6AOH0?%TNCLFUy_Z{VR;WD7St4 z>*dGa{F8F)H~*~s_%FX+e)x6V{>Gn{gFAmvjy-*UIep|III^BAf46b2{N3ug^3T_n z%5Q#lt^EAbdfC9jQ)%brx%X@@L0LV;q9(+FoIt=CKU0dXMo)|Hc*)wWOW;z=Xhn&6 zJ6A6B>V+;SOa~YN#9D}Lz3v2@3rq!5sZ4{<19b9!6eW%UM1lRQ00f}5g7*)L?VQ@m z8LEr+!Xc#qm14JraXn9GRRL^!Y9?YCz)$wEA{X9~%z zB(;%V^tW@WZ{C>A9aFQQ)2pT65G?VXBv`FSuHWB{11&{vf`?oAcdc`Ht=ZKUL455p z^aO~`WENZ`YLgnq#m_LgyNGpo*2@VL+CBg3`|1^S&;IAjZK$jG2}JGhARYA$FpF

Vivamus non mauris. Pellentesque scelerisque velit at nibh. Cras nec enim. Vivamus hendrerit leo non justo. Integer accumsan cursus sapien. Curabitur a dui. Aliquam enim. Proin viverra nibh in metus. Aenean quis dolor. Nunc augue ligula, hendrerit non, sollicitudin non, elementum sed, lacus. Donec dictum purus sed purus. In et libero at eros malesuada rhoncus. Morbi hendrerit.