From 204f1387ac506fdd3f34525416ce08e9d9223a2b Mon Sep 17 00:00:00 2001 From: Randy Baumgarte Date: Wed, 16 Mar 2011 13:32:35 -0400 Subject: [PATCH] - Gui cleanup - Rework count threads to reduce SQL overhead & improve performance. --- src/cx/fbn/nevernote/NeverNote.java | 194 ++++++++++++++------- src/cx/fbn/nevernote/gui/AttributeTreeWidget.java | 3 +- src/cx/fbn/nevernote/gui/MainMenuBar.java | 27 +++ src/cx/fbn/nevernote/gui/NotebookTreeWidget.java | 1 + .../fbn/nevernote/gui/SavedSearchTreeWidget.java | 1 + src/cx/fbn/nevernote/gui/SearchPanel.java | 93 ++++++++++ src/cx/fbn/nevernote/gui/TagTreeWidget.java | 1 + src/cx/fbn/nevernote/gui/TrashTreeWidget.java | 1 + src/cx/fbn/nevernote/icons/synchronize-0.png | Bin 24796 -> 0 bytes src/cx/fbn/nevernote/icons/synchronize-1.png | Bin 29074 -> 0 bytes src/cx/fbn/nevernote/icons/synchronize-2.png | Bin 28300 -> 0 bytes src/cx/fbn/nevernote/icons/synchronize-3.png | Bin 29042 -> 0 bytes src/cx/fbn/nevernote/sql/NoteTable.java | 7 +- src/cx/fbn/nevernote/sql/NoteTagsTable.java | 21 ++- src/cx/fbn/nevernote/sql/NotebookTable.java | 16 +- src/cx/fbn/nevernote/threads/CounterRunner.java | 158 ++++++++--------- src/cx/fbn/nevernote/utilities/ListManager.java | 49 ++++-- 17 files changed, 386 insertions(+), 186 deletions(-) create mode 100644 src/cx/fbn/nevernote/gui/SearchPanel.java delete mode 100644 src/cx/fbn/nevernote/icons/synchronize-0.png delete mode 100644 src/cx/fbn/nevernote/icons/synchronize-1.png delete mode 100644 src/cx/fbn/nevernote/icons/synchronize-2.png delete mode 100644 src/cx/fbn/nevernote/icons/synchronize-3.png diff --git a/src/cx/fbn/nevernote/NeverNote.java b/src/cx/fbn/nevernote/NeverNote.java index 84a0732..c541f33 100644 --- a/src/cx/fbn/nevernote/NeverNote.java +++ b/src/cx/fbn/nevernote/NeverNote.java @@ -95,7 +95,6 @@ import com.trolltech.qt.gui.QApplication; import com.trolltech.qt.gui.QCloseEvent; import com.trolltech.qt.gui.QColor; import com.trolltech.qt.gui.QComboBox; -import com.trolltech.qt.gui.QComboBox.InsertPolicy; import com.trolltech.qt.gui.QCursor; import com.trolltech.qt.gui.QDesktopServices; import com.trolltech.qt.gui.QDialog; @@ -167,6 +166,7 @@ import cx.fbn.nevernote.gui.ExternalBrowse; import cx.fbn.nevernote.gui.MainMenuBar; import cx.fbn.nevernote.gui.NotebookTreeWidget; import cx.fbn.nevernote.gui.SavedSearchTreeWidget; +import cx.fbn.nevernote.gui.SearchPanel; import cx.fbn.nevernote.gui.TableView; import cx.fbn.nevernote.gui.TagTreeWidget; import cx.fbn.nevernote.gui.Thumbnailer; @@ -283,6 +283,8 @@ public class NeverNote extends QMainWindow{ QSpinBox zoomSpinner; // Zoom zoom QAction searchClearButton; // Clear the search field + SearchPanel searchLayout; // Widget to hold search field, zoom, & quota + QSplitter mainLeftRightSplitter; // main splitter for left/right side QSplitter leftSplitter1; // first left hand splitter QSplitter browserIndexSplitter; // splitter between note index & note text @@ -487,13 +489,39 @@ public class NeverNote extends QMainWindow{ trashTree = new TrashTreeWidget(); noteTableView = new TableView(logger, listManager); + + searchField = new QComboBox(); + searchField.setObjectName("searchField"); + //setStyleSheet("QComboBox#searchField { background-color: yellow }"); + searchField.setEditable(true); + searchField.activatedIndex.connect(this, "searchFieldChanged()"); + searchField.setDuplicatesEnabled(false); + searchField.editTextChanged.connect(this,"searchFieldTextChanged(String)"); + searchShortcut = new QShortcut(this); + setupShortcut(searchShortcut, "Focus_Search"); + searchShortcut.activated.connect(this, "focusSearch()"); + + quotaBar = new QuotaProgressBar(); + // Setup the zoom + zoomSpinner = new QSpinBox(); + zoomSpinner.setMinimum(10); + zoomSpinner.setMaximum(1000); + zoomSpinner.setAccelerated(true); + zoomSpinner.setSingleStep(10); + zoomSpinner.setValue(100); + zoomSpinner.valueChanged.connect(this, "zoomChanged()"); + + searchLayout = new SearchPanel(searchField, quotaBar, notebookTree, zoomSpinner); + + QGridLayout leftGrid = new QGridLayout(); + leftSplitter1.setContentsMargins(5, 0, 0, 7); leftSplitter1.setLayout(leftGrid); - leftGrid.addWidget(notebookTree, 1, 1); + leftGrid.addWidget(searchLayout,1,1); leftGrid.addWidget(tagTree,2,1); leftGrid.addWidget(attributeTree,3,1); leftGrid.addWidget(savedSearchTree,4,1); - leftGrid.addWidget(trashTree, 5, 1); + leftGrid.addWidget(trashTree,5, 1); // Setup the browser window noteCache = new HashMap(); @@ -511,17 +539,6 @@ public class NeverNote extends QMainWindow{ mainLeftRightSplitter.addWidget(noteTableView); mainLeftRightSplitter.addWidget(browserWindow); } - - searchField = new QComboBox(); - searchField.setEditable(true); - searchField.activatedIndex.connect(this, "searchFieldChanged()"); - searchField.setDuplicatesEnabled(false); - searchField.editTextChanged.connect(this,"searchFieldTextChanged(String)"); - searchShortcut = new QShortcut(this); - setupShortcut(searchShortcut, "Focus_Search"); - searchShortcut.activated.connect(this, "focusSearch()"); - - quotaBar = new QuotaProgressBar(); // Setup the thumbnail viewer thumbnailViewer = new ThumbnailViewer(); @@ -552,9 +569,15 @@ public class NeverNote extends QMainWindow{ tagTree.setAddAction(menuBar.tagAddAction); tagTree.setIconAction(menuBar.tagIconAction); tagTree.setVisible(Global.isWindowVisible("tagTree")); + leftSplitter1.setVisible(Global.isWindowVisible("leftPanel")); tagTree.noteSignal.tagsAdded.connect(this, "tagsAdded(String, String)"); menuBar.hideTags.setChecked(Global.isWindowVisible("tagTree")); listManager.tagSignal.listChanged.connect(this, "reloadTagTree()"); + + if (!Global.isWindowVisible("zoom")) { + searchLayout.hideZoom(); + menuBar.hideZoom.setChecked(false); + } notebookTree.setDeleteAction(menuBar.notebookDeleteAction); notebookTree.setEditAction(menuBar.notebookEditAction); @@ -584,8 +607,6 @@ public class NeverNote extends QMainWindow{ noteTableView.setNoteHistoryAction(menuBar.noteOnlineHistoryAction); noteTableView.noteSignal.titleColorChanged.connect(this, "titleColorChanged(Integer)"); noteTableView.setMergeNotesAction(menuBar.noteMergeAction); -/// noteTableView.rowChanged.connect(this, "scrollToGuid(String)"); -/// noteTableView.resetViewport.connect(this, "scrollToCurrentGuid()"); noteTableView.doubleClicked.connect(this, "listDoubleClick()"); listManager.trashSignal.countChanged.connect(trashTree, "updateCounts(Integer)"); @@ -609,6 +630,15 @@ public class NeverNote extends QMainWindow{ menuBar.hideLeftSide.setChecked(true); if (Global.isWindowVisible("noteInformation")) toggleNoteInformation(); + quotaBar.setVisible(Global.isWindowVisible("quota")); + if (!quotaBar.isVisible()) + menuBar.hideQuota.setChecked(false); + searchField.setVisible(Global.isWindowVisible("searchField")); + if (!searchField.isVisible()) + menuBar.hideSearch.setChecked(false); + + if (searchField.isHidden() && quotaBar.isHidden() && zoomSpinner.isHidden() && notebookTree.isHidden()) + searchLayout.hide(); setMenuBar(menuBar); setupToolBar(); @@ -1063,6 +1093,7 @@ public class NeverNote extends QMainWindow{ while (QApplication.overrideCursor() != null) QApplication.restoreOverrideCursor(); } + listManager.refreshCounters(); } private void setupIndexListeners() { @@ -1262,6 +1293,29 @@ public class NeverNote extends QMainWindow{ Global.setColumnWidth("noteTableGuidPosition", width); } + private void toggleSearchWindow() { + logger.log(logger.HIGH, "Entering NeverNote.toggleSearchWindow"); + searchLayout.toggleSearchField(); + menuBar.hideSearch.setChecked(searchField.isVisible()); + Global.saveWindowVisible("searchField", searchField.isVisible()); + logger.log(logger.HIGH, "Leaving NeverNote.toggleSearchWindow"); + } + private void toggleQuotaWindow() { + logger.log(logger.HIGH, "Entering NeverNote.toggleQuotaWindow"); + searchLayout.toggleQuotaBar(); + menuBar.hideQuota.setChecked(quotaBar.isVisible()); + Global.saveWindowVisible("quota", quotaBar.isVisible()); + logger.log(logger.HIGH, "Leaving NeverNote.toggleQuotaWindow"); + } + private void toggleZoomWindow() { + logger.log(logger.HIGH, "Entering NeverNote.toggleZoomWindow"); + searchLayout.toggleZoom(); + menuBar.hideZoom.setChecked(zoomSpinner.isVisible()); + Global.saveWindowVisible("zoom", zoomSpinner.isVisible()); + logger.log(logger.HIGH, "Leaving NeverNote.toggleZoomWindow"); + } + + //*************************************************************** //*************************************************************** @@ -1329,6 +1383,8 @@ public class NeverNote extends QMainWindow{ listManager.setSelectedNotebooks(selectedNotebookGUIDs); listManager.loadNotesIndex(); noteIndexUpdated(false); + listManager.refreshCounters = true; + listManager.refreshCounters(); logger.log(logger.HIGH, "Leaving NeverNote.notebookTreeSelection"); } @@ -1371,6 +1427,8 @@ public class NeverNote extends QMainWindow{ if (!found) selectedNotebookGUIDs.remove(i); } + listManager.refreshCounters = true; + listManager.refreshCounters(); notebookTree.blockSignals(false); logger.log(logger.HIGH, "Leaving NeverNote.notebookIndexUpdated"); @@ -1378,10 +1436,7 @@ public class NeverNote extends QMainWindow{ // Show/Hide note information private void toggleNotebookWindow() { logger.log(logger.HIGH, "Entering NeverNote.toggleNotebookWindow"); - if (notebookTree.isVisible()) - notebookTree.hide(); - else - notebookTree.show(); + searchLayout.toggleNotebook(); menuBar.hideNotebooks.setChecked(notebookTree.isVisible()); Global.saveWindowVisible("notebookTree", notebookTree.isVisible()); logger.log(logger.HIGH, "Leaving NeverNote.toggleNotebookWindow"); @@ -2032,6 +2087,8 @@ public class NeverNote extends QMainWindow{ listManager.setSelectedTags(selectedTagGUIDs); listManager.loadNotesIndex(); noteIndexUpdated(false); + listManager.refreshCounters = true; + listManager.refreshCounters(); logger.log(logger.HIGH, "Leaving NeverNote.tagTreeSelection"); } // trigger the tag index to be refreshed @@ -2554,16 +2611,10 @@ public class NeverNote extends QMainWindow{ hidden = !menuBar.hideLeftSide.isChecked(); menuBar.hideLeftSide.setChecked(!hidden); - if (notebookTree.isVisible() != hidden) - toggleNotebookWindow(); - if (savedSearchTree.isVisible() != hidden) - toggleSavedSearchWindow(); - if (tagTree.isVisible() != hidden) - toggleTagWindow(); - if (attributeTree.isVisible() != hidden) - toggleAttributesWindow(); - if (trashTree.isVisible() != hidden) - toggleTrashWindow(); + if (!hidden) + leftSplitter1.setHidden(true); + else + leftSplitter1.setHidden(false); Global.saveWindowVisible("leftPanel", hidden); @@ -2724,6 +2775,9 @@ public class NeverNote extends QMainWindow{ else toolBar.setVisible(true); +// toolBar.addWidget(menuBar); +// menuBar.setSizePolicy(Policy.Minimum, Policy.Minimum); +// toolBar.addSeparator(); prevButton = toolBar.addAction("Previous"); QIcon prevIcon = new QIcon(iconPath+"back.png"); prevButton.setIcon(prevIcon); @@ -2797,38 +2851,32 @@ public class NeverNote extends QMainWindow{ allNotesButton.setIcon(allIcon); toggleAllNotesButton(Global.isToolbarButtonVisible("allNotes")); - toolBar.addSeparator(); - toolBar.addWidget(new QLabel(tr("Quota:"))); - toolBar.addWidget(quotaBar); + //toolBar.addSeparator(); + //toolBar.addWidget(new QLabel(tr("Quota:"))); + //toolBar.addWidget(quotaBar); //quotaBar.setSizePolicy(Policy.Minimum, Policy.Minimum); updateQuotaBar(); - toolBar.addSeparator(); + //toolBar.addSeparator(); - // Setup the zoom - zoomSpinner = new QSpinBox(); - zoomSpinner.setMinimum(10); - zoomSpinner.setMaximum(1000); - zoomSpinner.setAccelerated(true); - zoomSpinner.setSingleStep(10); - zoomSpinner.setValue(100); - zoomSpinner.valueChanged.connect(this, "zoomChanged()"); - toolBar.addWidget(new QLabel(tr("Zoom"))); - toolBar.addWidget(zoomSpinner); + //toolBar.addWidget(new QLabel(tr("Zoom"))); + //toolBar.addWidget(zoomSpinner); //toolBar.addWidget(new QLabel(" ")); - toolBar.addSeparator(); - toolBar.addWidget(new QLabel(tr(" Search:"))); - toolBar.addWidget(searchField); + //toolBar.addSeparator(); + //toolBar.addWidget(new QLabel(tr(" Search:"))); + //toolBar.addWidget(searchField); QSizePolicy sizePolicy = new QSizePolicy(); sizePolicy.setHorizontalPolicy(Policy.MinimumExpanding); - searchField.setSizePolicy(sizePolicy); - searchField.setInsertPolicy(InsertPolicy.InsertAtTop); + QLabel spacer = new QLabel(""); + spacer.setSizePolicy(sizePolicy); + toolBar.addWidget(spacer); + //searchField.setInsertPolicy(InsertPolicy.InsertAtTop); - searchClearButton = toolBar.addAction("Search Clear"); - QIcon searchClearIcon = new QIcon(iconPath+"searchclear.png"); - searchClearButton.setIcon(searchClearIcon); - searchClearButton.triggered.connect(this, "searchFieldCleared()"); - toggleSearchClearButton(Global.isToolbarButtonVisible("searchClear")); + //searchClearButton = toolBar.addAction("Search Clear"); + //QIcon searchClearIcon = new QIcon(iconPath+"searchclear.png"); + //searchClearButton.setIcon(searchClearIcon); + //searchClearButton.triggered.connect(this, "searchFieldCleared()"); + //toggleSearchClearButton(Global.isToolbarButtonVisible("searchClear")); logger.log(logger.HIGH, "Leaving NeverNote.setupToolBar"); } @@ -2948,7 +2996,8 @@ public class NeverNote extends QMainWindow{ allNotesButton.setVisible(toggle); Global.saveToolbarButtonsVisible("allNotes", toggle); } - private void toggleSearchClearButton(Boolean toggle) { + @SuppressWarnings("unused") + private void toggleSearchClearButton(Boolean toggle) { searchClearButton.setVisible(toggle); Global.saveToolbarButtonsVisible("searchClear", toggle); } @@ -3435,7 +3484,7 @@ public class NeverNote extends QMainWindow{ nextButton.setEnabled(false); fromHistory = false; -// scrollToGuid(currentNoteGuid); + scrollToGuid(currentNoteGuid); refreshEvernoteNote(true); logger.log(logger.HIGH, "Leaving NeverNote.noteTableSelection"); } @@ -4132,7 +4181,6 @@ public class NeverNote extends QMainWindow{ currentNote = conn.getNoteTable().getNote(currentNoteGuid, true,true,false,false,true); if (currentNote == null) return; - loadNoteBrowserInformation(browserWindow); } @@ -4180,7 +4228,6 @@ public class NeverNote extends QMainWindow{ if (conn.getNoteTable().isThumbnailNeeded(currentNoteGuid)) { thumbnailHTMLReady(currentNoteGuid, js, Global.calculateThumbnailZoom(js.toString())); } - if (readOnly || inkNote) browser.getBrowser().page().setContentEditable(false); // We don't allow editing of ink notes else @@ -4216,7 +4263,7 @@ public class NeverNote extends QMainWindow{ browser.setTitle(currentNote.getTitle()); browser.setTag(getTagNamesForNote(currentNote)); browser.setAuthor(currentNote.getAttributes().getAuthor()); - + browser.setAltered(currentNote.getUpdated()); browser.setCreation(currentNote.getCreated()); if (currentNote.getAttributes().getSubjectDate() > 0) @@ -4231,7 +4278,7 @@ public class NeverNote extends QMainWindow{ browser.setCurrentTags(currentNote.getTagNames()); noteDirty = false; -// scrollToGuid(currentNoteGuid); + scrollToGuid(currentNoteGuid); browser.loadingData(false); if (thumbnailViewer.isActiveWindow()) @@ -4333,11 +4380,23 @@ public class NeverNote extends QMainWindow{ return; if (currentNoteGuid.equals("")) return; - + String title = null; + if (selectedNoteGUIDs.size() == 1) + title = conn.getNoteTable().getNote(selectedNoteGUIDs.get(0),false,false,false,false,false).getTitle(); + // If we are deleting non-trash notes if (currentNote.isActive()) { if (Global.verifyDelete()) { - if (QMessageBox.question(this, tr("Confirmation"), tr("Delete selected note(s)?"), + String msg; + if (selectedNoteGUIDs.size() > 1) { + msg = new String(tr("Delete ") +selectedNoteGUIDs.size() +" notes?"); + } else { + if (title != null) + msg = new String(tr("Delete note \"") +title +"\"?"); + else + msg = new String(tr("Delete note selected note?")); + } + if (QMessageBox.question(this, tr("Confirmation"), msg, QMessageBox.StandardButton.Yes, QMessageBox.StandardButton.No)==StandardButton.No.value() && Global.verifyDelete() == true) { return; @@ -4351,7 +4410,16 @@ public class NeverNote extends QMainWindow{ } else { // If we are deleting from the trash. if (Global.verifyDelete()) { - if (QMessageBox.question(this, "Confirmation", "Permanently delete selected note(s)?", + String msg; + if (selectedNoteGUIDs.size() > 1) { + msg = new String(tr("Permanently delete ") +selectedNoteGUIDs.size() +" notes?"); + } else { + if (title != null) + msg = new String(tr("Permanently delete note \"") +title +"\"?"); + else + msg = new String(tr("Permanently delete note selected note?")); + } + if (QMessageBox.question(this, "Confirmation", msg, QMessageBox.StandardButton.Yes, QMessageBox.StandardButton.No)==StandardButton.No.value()) { return; diff --git a/src/cx/fbn/nevernote/gui/AttributeTreeWidget.java b/src/cx/fbn/nevernote/gui/AttributeTreeWidget.java index 5ebf260..7707b36 100644 --- a/src/cx/fbn/nevernote/gui/AttributeTreeWidget.java +++ b/src/cx/fbn/nevernote/gui/AttributeTreeWidget.java @@ -34,7 +34,8 @@ public class AttributeTreeWidget extends QTreeWidget { public AttributeTreeWidget() { setHeaderLabel(tr("Attributes")); setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection); - + header().setStyleSheet("QHeaderView::section {border: 0.0em;}"); + setHeaderLabel(tr("Attributes")); setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection); diff --git a/src/cx/fbn/nevernote/gui/MainMenuBar.java b/src/cx/fbn/nevernote/gui/MainMenuBar.java index 450ab24..943759a 100644 --- a/src/cx/fbn/nevernote/gui/MainMenuBar.java +++ b/src/cx/fbn/nevernote/gui/MainMenuBar.java @@ -67,6 +67,9 @@ public class MainMenuBar extends QMenuBar { public QAction narrowListView; // View with list on the side public QAction thumbnailView; // view thumbnails public QAction hideSavedSearches; // show/hide saved searches + public QAction hideZoom; // show/hide the zoom spinner + public QAction hideSearch; // Show/hide the search window + public QAction hideQuota; // show/hide the quota window public QAction hideNotebooks; // show/hide notebooks public QAction hideTags; // show/hide tags public QAction hideAttributes; // show/hide note information @@ -301,6 +304,27 @@ public class MainMenuBar extends QMenuBar { hideNotebooks.setCheckable(true); hideNotebooks.setChecked(true); setupShortcut(hideNotebooks, "View_Show_Notebooks"); + + hideZoom = new QAction(tr("Show Zoom"), this); + hideZoom.setToolTip("Show/Hide Zoom"); + hideZoom.triggered.connect(parent, "toggleZoomWindow()"); + hideZoom.setCheckable(true); + hideZoom.setChecked(true); + setupShortcut(hideZoom, "View_Show_Zoom"); + + hideQuota = new QAction(tr("Show Quota Bar"), this); + hideQuota.setToolTip("Show/Hide Quota"); + hideQuota.triggered.connect(parent, "toggleQuotaWindow()"); + hideQuota.setCheckable(true); + hideQuota.setChecked(true); + setupShortcut(hideQuota, "View_Show_Quota"); + + hideSearch = new QAction(tr("Show Search Box"), this); + hideSearch.setToolTip("Show/Hide Search Box"); + hideSearch.triggered.connect(parent, "toggleSearchWindow()"); + hideSearch.setCheckable(true); + hideSearch.setChecked(true); + setupShortcut(hideSearch, "View_Show_Search"); wideListView = new QAction(tr("Wide List View"), this); wideListView.setToolTip("Wide List Viwe"); @@ -652,6 +676,9 @@ public class MainMenuBar extends QMenuBar { viewMenu.addAction(thumbnailView); viewMenu.addSeparator(); viewMenu.addAction(hideNoteList); + viewMenu.addAction(hideSearch); + viewMenu.addAction(hideQuota); + viewMenu.addAction(hideZoom); viewMenu.addAction(hideNotebooks); viewMenu.addAction(hideTags); viewMenu.addAction(hideAttributes); diff --git a/src/cx/fbn/nevernote/gui/NotebookTreeWidget.java b/src/cx/fbn/nevernote/gui/NotebookTreeWidget.java index b894d80..2e82288 100644 --- a/src/cx/fbn/nevernote/gui/NotebookTreeWidget.java +++ b/src/cx/fbn/nevernote/gui/NotebookTreeWidget.java @@ -106,6 +106,7 @@ public class NotebookTreeWidget extends QTreeWidget { header().setResizeMode(0, QHeaderView.ResizeMode.ResizeToContents); header().setResizeMode(1, QHeaderView.ResizeMode.Stretch); header().setMovable(false); + header().setStyleSheet("QHeaderView::section {border: 0.0em;}"); setHeaderLabels(labels); setDragDropMode(QAbstractItemView.DragDropMode.DragDrop); // If we want to mimic Evernote's notebook selection diff --git a/src/cx/fbn/nevernote/gui/SavedSearchTreeWidget.java b/src/cx/fbn/nevernote/gui/SavedSearchTreeWidget.java index 5024d3f..d0fd615 100644 --- a/src/cx/fbn/nevernote/gui/SavedSearchTreeWidget.java +++ b/src/cx/fbn/nevernote/gui/SavedSearchTreeWidget.java @@ -45,6 +45,7 @@ public class SavedSearchTreeWidget extends QTreeWidget { // setAcceptDrops(true); // setDragEnabled(true); setProperty("hideTree", true); + header().setStyleSheet("QHeaderView::section {border: 0.0em;}"); setAcceptDrops(false); setDragEnabled(false); // setDragDropMode(QAbstractItemView.DragDropMode.DragDrop); diff --git a/src/cx/fbn/nevernote/gui/SearchPanel.java b/src/cx/fbn/nevernote/gui/SearchPanel.java new file mode 100644 index 0000000..d0d1c34 --- /dev/null +++ b/src/cx/fbn/nevernote/gui/SearchPanel.java @@ -0,0 +1,93 @@ +package cx.fbn.nevernote.gui; + +import com.trolltech.qt.gui.QComboBox; +import com.trolltech.qt.gui.QHBoxLayout; +import com.trolltech.qt.gui.QLabel; +import com.trolltech.qt.gui.QSpinBox; +import com.trolltech.qt.gui.QVBoxLayout; +import com.trolltech.qt.gui.QWidget; + +import cx.fbn.nevernote.gui.controls.QuotaProgressBar; + +public class SearchPanel extends QWidget { + private final QLabel zoomLabel; + private final QSpinBox zoomSpinner; + private final NotebookTreeWidget notebook; + private final QComboBox search; + private final QuotaProgressBar bar; + + public SearchPanel(QComboBox search, QuotaProgressBar bar, NotebookTreeWidget notebook, QSpinBox zoom) { + QVBoxLayout mainLayout = new QVBoxLayout(); + QVBoxLayout subLayout = new QVBoxLayout(); + zoomSpinner = zoom; + this.bar = bar; + this.search = search; + this.notebook = notebook; + + setLayout(mainLayout); + subLayout.addWidget(search); + subLayout.addWidget(bar); + QHBoxLayout zoomLayout = new QHBoxLayout(); + zoomLabel = new QLabel(tr("Zoom:")); + zoomLayout.addWidget(zoomLabel); + zoomLayout.addWidget(zoom); + zoomLayout.setStretch(1, 100); + subLayout.addLayout(zoomLayout); + mainLayout.addLayout(subLayout); + mainLayout.addWidget(notebook); + //setStyleSheet("QTreeView {border: 0.0em;}"); + mainLayout.setContentsMargins(0, 0, 0, 0); + } + + public void hideZoom() { + zoomLabel.hide(); + zoomSpinner.hide(); + } + public void showZoom() { + zoomLabel.show(); + zoomSpinner.show(); + } + + public void toggleNotebook() { + show(); + if (notebook.isVisible()) + notebook.hide(); + else + notebook.show(); + + checkVisibility(); + } + + public void toggleSearchField() { + show(); + if (search.isVisible()) + search.hide(); + else + search.show(); + checkVisibility(); + } + + private void checkVisibility() { + if (notebook.isHidden() && bar.isHidden() && search.isHidden() && zoomSpinner.isHidden()) { + hide(); + } + } + + public void toggleQuotaBar() { + show(); + if (bar.isVisible()) + bar.hide(); + else + bar.show(); + checkVisibility(); + } + + public void toggleZoom() { + show(); + if (zoomSpinner.isVisible()) + zoomSpinner.hide(); + else + zoomSpinner.show(); + checkVisibility(); + } +} diff --git a/src/cx/fbn/nevernote/gui/TagTreeWidget.java b/src/cx/fbn/nevernote/gui/TagTreeWidget.java index ee4d161..46f55f6 100644 --- a/src/cx/fbn/nevernote/gui/TagTreeWidget.java +++ b/src/cx/fbn/nevernote/gui/TagTreeWidget.java @@ -78,6 +78,7 @@ public class TagTreeWidget extends QTreeWidget { header().setResizeMode(0, QHeaderView.ResizeMode.ResizeToContents); header().setResizeMode(1, QHeaderView.ResizeMode.Stretch); header().setMovable(false); + header().setStyleSheet("QHeaderView::section {border: 0.0em;}"); db = d; selectionSignal = new Signal0(); tagSignal = new TagSignal(); diff --git a/src/cx/fbn/nevernote/gui/TrashTreeWidget.java b/src/cx/fbn/nevernote/gui/TrashTreeWidget.java index adc2d98..ebecb45 100644 --- a/src/cx/fbn/nevernote/gui/TrashTreeWidget.java +++ b/src/cx/fbn/nevernote/gui/TrashTreeWidget.java @@ -55,6 +55,7 @@ public class TrashTreeWidget extends QTreeWidget { iconPath = new String("classpath:cx/fbn/nevernote/icons/"); trashIcon = new QIcon(iconPath+"trash.png"); trashFullIcon = new QIcon(iconPath+"trash-full.png"); + header().hide(); } public void updateCounts(Integer cnt) { diff --git a/src/cx/fbn/nevernote/icons/synchronize-0.png b/src/cx/fbn/nevernote/icons/synchronize-0.png deleted file mode 100644 index f23edb0a6e11fde84d6290fd00f9534dafdf21d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24796 zcmXtfbzGD07xuF;U~~)84WfjK(rlD~NGPeK7=Y59+vrk2P(T`_R7yb_hKK^vAfYsj z?vaDVyYKIP-@mrcXS?qc_jRA^Jm;Jz-o!|kftH&V000JkJ?#eo03v?{0Z=OPhmCjn za{zGops%fA7Wi++mKw!oeohis`#Wdl|2V^r{Thlg+O#I*#5*8erGliQww3FoMtN*z zqI&;(L|e#7#DgwP>XOsJuWhHZPZf?y?HTv5&u^sN`@Q=-1GkZ~jTz|ce~Lg?xBd#J z<&a9U@>B~0OF4o$7m3b`@t)`eJFq#xDv;BOZeo7cxwE!NQ#-^~0R@D zJmL@bivs*L4dao0?&iLawb}hy3!Urz6({8zlFyAs?4*(pwL%}@zS z(@Ql&KLNfBop0=Zv?EluwwKSJWhNWm*bryy6xeFOsPEq!wjR}R8U&s^LJn^ZV8W!< zd*`{^SYBOeYJc$R%W+M0|LU8CJn9H_9~HjgzYlaiuZwmrh<6VEoq$6+srU@v6_@jL zb%?0&Ro%+RnB73|+4cCzd<|M5sYe4rNl_J|hK&19bvRIGLhKuqQApC_ z7`4DHMS}2ByRmqB*bRxV+sPV79PnGxT^W<|N?5c$l#d}2(Mq;dxNi7uHKj7&=IpUGK$gp$lUDndZ@ogqkBPf; zlc>s%Svg4tCM|tCSHAf@kbOMxtIhB8ZdecnZG?4QG?oiUa=jiW9?mnFV6LZiW#iUW z`{wl}vqbl=z2$B2A70U}VyoMa?Y^>&hR_(t#cDUO-4Ghtx%KpONmrS+)8c(>cK7Hj z+51$Kpr0BqK}KoXT|zvHZrroUYmpHSFDr`eBENk}h|{WF@QnS@#`YuT>!YpCJ^|uo zwq*DBh8&T@l`4ymT-hzFgl|M8tX)|YK)Y!EQj%b3Rs30j?s&PPhPdi+j|b2XdO~v$ zYq}It8O#=_oX}Pr@CViMK_34wN(`A3FR)wc94ELwTF&L{`%s(d>pH?ImZQSZT$}w< zXvFXmj4JK*&h53O%{$XYWP~4te5IR>HHqjD=e}rWhI~754O=VPN@_uT59#;o6SL$% zhSNSvsXgI#s8IWIl<~BbtNQx-EzW)FB7^*#fNS55^n=dVXE5=s7!v7C zJ4_aef~BYO$1m3J3O$u5ZrJ^B3FdetywnHML5-b?@PmWKOHtD+QT5F?gsE1BjqHN1 zdp4;)leXwyD&di`3&Fe|i2Z&Qj2Gt=2aXu7L$Q*RXvBBFE0+kN_!KBy%4gQQv-~X4 zOiwH6?1=h3u7T}lY0?l{RIS(Zvqc}D7M;nc0FPi>3&qS%%aw!KiMB7fhGrOJ-X()D zrn2j4A$PhuQikF*l;7JVRI|Rnf>9lk;*jM#;Q1$-9qXZ4czvrgcJ^lX`lr*zveNJ$uqX26~#jFl0 zAm(h2VfmH|5SQ!gm5Um3xHXa;9MQE7L#C~@7_}l|_x}A2DWrw7r--ztyJkJ}kyTZb z81Us0m=+l^rOpL!{3weUOr_xup=`{WWLaVxZE^Ebd{gCp`a}dV#mfI|Mbi%bOS?4! z>>>Q-rbfsU29}5)!*&AeA@I(~p>})glkE>4Zc6mwvG&)f+ImHx`b45gQh5C@@g<>m zMF9JGRUe}r$TMy?Tnba7aj8U*=J=b;uG4gE*CQR1$FF60>S93h@7L=B;HEzx3se1E@b(?`zTNV2Ht)y4 zklpcA!aHVHnvg{1C?OJ;-T)71rRBC}izN_qQN`vFVFd}4)jQx6=yk|`sL48?bCdN( za&ug35|I4iO$t$BbM;Bip3d3Y75u<%f+9LLUf}*Q_PD^Zpu|o?ym6M7CBo6UN=9f= zgNMKy?cj8O3|So(Dn=X57SRU&DEd%14(^O)f@P&3xumVyLv9+rWd$kHwnlZwCUbx+ z@a#z38)#Fhs_$_bG#-}lDAeafa({}ERRQ@e;|v_AiO>%`QeVyF}o7% z2OJYDrCbRp3*%0T*Put6p9b-HM{;|mVU9#bNnna-}JO+2@N4Q;*16~QKKLpExT8ni-9j|=K zJWMGCyKW`ShV7Ip$hL_5tw1toA0FxdO$nPZPkD=MO+JJDX3jSgb`MTGdlUa>GvHmz zJYQGx&3w%|*o(S{1!GJ{tI$us^_@La>bV`tii&v9E3j`@4h%vnPkaa=gQv-tm?xH1+kj%at2Bx7#mK(9;>A zpY*yyPpFEq6bH?cG}!#16r^PFDkHdzFI$l(Lgsg7DERH(tj>jIIhdK46;VO_+Qexz z(02o!pyf3(yBDzZT69prP=D`}{pMb)NZbZtT|6V-)I?os>8jGklq~`J=(wo09x8Rj zG47li$BY@ti(z>8ZrJ3$<{?Ecp3DbT^!t>Z6hU7Q!{S_(EjS?Uym(_Wf0)N_{3;3)PO;zIuPe!HX{A%_vz z7D0ZzhGY3v?A1jvMX|$R{t1X`WYox3|8-8daqnZ4NEW_6Lp{L38? z=NF05_{GlnMr%Tz1Y(`L^NM!YuGSPQ@47}A4_xB9%csiN=277*9&nj!apIy-L*n;n zb!-#FJ-;SVc{OQ3C2O86>wg!@r_fDE$B^^aN{CEjA*KhBC^+~c<7QLl;B)e0@) z*O{qASSA6lbS>?T854cgpdYtV^~OT$%wB!i=;5{`j$3uiT4Xw(0yr4J!HD8f8O|7pkej0%ux$IbNw@s zeP&0cWVZ@RYm4}KoouRC(s7fFAX0RV`TmlO|5B{<$BHyfsB;|jX=IE+Olh-tx%xH( z&1RO$d|v2u>SaN-6T2BNNeIp-3{(9^9NqsBi{yU&A&%PfEbbDjAQ0J$91?&@Dm-hq zpz9W0NsgRJbH_I0&G$xyTD}IDyQANx_Z9Kj5aV=od)HX6wjVt5*haMJ5)HNC zpkbG<-zVlYXx4mvBPz#^w_Y{W6X(fHGUd;87lKdg!7GzgVYovm&eR9{edCiD#)ARL z%9>mp+uFnp32U-rnEXvRatv&;&V^NLB|mrDMFktmRM`U@vA@4h{JWP;n^9GLHrXcY z(b4C`Dh*6Mf zk&*7*mzpb_Ve=?HAm3}Q!`RkB@BD*7Ypbrl70Z*S-U)pHW#dfJh`V<#Ylr-PW7i;2 zx;Mhi($R|I|8!TXu%ta{m9pL16fr> zL0aF-aF(MN;fG&gK`AS4%IYQokT=M&?2P$$jw3^zN;s-}O|tcYFkxS5TobfUH%!e| z8^5m`+ZW!oY=eO%Rh+|Ja>di4DD_QjEvR3Qo0~ySGV0a6{-QIG^qtqw@>YC?h(2ig zF;!KWYB`=!@3@tKNnK;aDuyAZP#gH2Bne_R?*BM@F!!!{xiRd?IUHH7?t}|1jUNhV z!0bByiHq$M_#KwK8X5`fcD?O6XCChLjvsq=V@0(;Qkt+?SeRyTq&{)+Q82r@93BeM zR%WFMt4TKyv!<<+e^^*l9wkm4AmENzz{XnQnOf~o7u`xuL@#*K3gxwY%M_g+<7?;^ zkWHR{^yw9O`eq?f2pm)n6NU(i;;8R6<%?gW;P3yuV9{{N#m;~K`NjIGSd;i=MK{*m z>zqCFQ|~EbzXvlNv(CEg9SvkixK~}G(^$CabN7=6^l8DX?#R{aXMw!O#PN0IS>87~VsMG#}T5PabTPObTMKMWm+M;&2%+Wz4`<-j<^|`%{wpTMMaYU5fBc>i(5MKtBn{=+pLmQoLmOlysh}?J2TiIbl zS9=80^Hb)>u4xdbn(y=YMi$_iWr6wQhoBTO*x;YYfzaVE+5THQ*Rj+CRHAGDbe)cs za<*CZ_e9i*>A5@74lh4N57s|#uCmj8xgIVelTlVVzB)Cu`}swU+ogQdPdfASj-x9F zA;-#w-l_Tu!e+CI0TJ= zPo&XPF1bjB(+O+f*DA#1hB-V>+!_yZYAop*Dr}Kl%zjx=Srx%L-@+ABGx*Em;?m35 z+OI!1%cZJbOi#}2Iuo9o_s+cz*|OGH*wd9y7?>Z~+^mhkB=cqE<>$Ng4&A%Hy7nyV z*JXx(svqpqB-HghhS@aqsC-`BC@wBb-TMBlGZ%A3Tf){;}7F+YPJ^6JiW>C2}cz9TXQV@YD6LQVzk-e!w z%^7>J#T}+@D>`Nn%v7ha@S>^Y?U9UbY=LX`fLB53NPSb$U^8+n{8yMP;!8;NUSe0` zli;UBs*#YUc{tu$?{ys}?|iF~Erv<&^1C#5?)UFs@XB7I{P0&VN{}J-=7WzJ3!D_r zBH1Fpl603^DvBkX-iGmMmV;!$?isN$_l%syCMEH+OG*_#3I<}aMOo@sfFhqr`O!%+}3PNR`mIpJ2o&R;F6ypRV(n&>8dHt*4Urge{G-d9_B z3~SyvpuKVa?2XBHJ@@&ej?{#RMX2H9_@wtHG%nw7#g`}SqT+Vg8 zEa6Xkej7;Gg}+~g&d7U7zPlPXxJ)Yz8Bx1>olZl34wz>%Nz;N9@dew9nCW5`^jT6#MBSf9&cs*)(||1HNm#n^2)#4i(XBjSf~loMK$H*)&Hj2 z`Xp=lHuQWnLq6S!vyT3oj%Fwj1Ts0F-rsvi3o;J1U_N6A5p}U|Tf@}eVY-|94>lGm zgnW?xRPE{7vv9Fn?}NeotlW)ie2j$yHKiW>^A(3M*Kr z=u8u6Ic02La9Nlc!0zDxJ4ytpCtmjcgfU)dLA(L|(N#b`efy~U#CZofYko0!)qdw; zeGrmj5b~YX9xwInkDq*3hT=#;*n=TJ;=s;`9^*~n$g-dKz3wpP647h3z<_#9%)WBm zv+hTDZ$;#*8G60GyM^(Z9;3tGbKG2WKQ6uHp;wpxtt=eks^$>oDtS!PF@nUkPtpM@ zpFC8PHpjU8U8Wl5;rtMNY`3yPyY?N})0Vae*tEOyzY3r7Y={u;KnGu%+>cK-hxXn# zATC48GQ98N`Ck8|hI;IXgx%9xq3Wu36k=YZ7S-u!aDfFr9bI`6TRPtvOC21^h^2aV zrV5Ug)m?ZH$gwC}YY-*)@0vYCD4gX+JRpA@3}QC?t9E^BNk7tmImJ#Ct@M&v(IB6R zzfZsk8_Rc>XK>}zykjxTcXheD|}3mGTt(lwFWraEm6uxxfFh^1rWa2SWuWkXI>-Y^YVct3X6OLX;F;#xC={S9LvQ zu9N0FMF{43+x@$U`#yO^Mk<9pLu~d>gmMH7T8Tslw~C0Yu&s`{-JOWUzjzOe^g#}m zeA__HBz#4Sz~H~WoX`fXYY_Z}i8PgKU;&$3a5!_yX9I&%xIc_({n*{x$5q2^=gS>B?#feU^MO?A8PdZXF zJo7YR6^=TjIy!6KfB!LneO25xQ3>oQDk##&@K;HO`%+`i;Vu&$1Z{sL!7nQmCn>s5 z14@8|9R)s4VTOtnvx1z3z{8_2DLe9y4wE(}2ReT$(+(o&XBuS${(_y}0vOI%2Iphx z<=*6XIx~c}uG#r}GhrTij^x@>3n|E{k92#_1FnD)Q&kCjn={VTU=dc7X2-bL1-}MS zp8q^|YKQ#iMYuuo8S`Q~>65d4#gTcBzlUc55DEHO)4@@6Xjr$-BIJKFAop*SOwTn5gB5E-~9uFiQVST)jck~b+H``7%E?$;ioX$d9;&wtY$Jc z^<^_jX)EuacgNmtEyhVA@vU_TQBSm;T{D`>y9xB;XzLfh&&D2Yo~8%<^D(n=2k7!c za=G(>K!ssu5?U`z>44~)*f;{84aYu1Q1KVCAAE4{eeR6pA$(bfR?X+WhrCJ6r#mhi zwF|+n$j4}i&I#z+5R@h7i8mXSr{l*18r=TblXmk3?8AM&_p;dc1|RAwAN+($Ks1C= z)vy7j!$rL7Vg5nKTXu;9D&=_Rkhbu%L71eEUY(!z6|i_sAZ5p0h{M0mC{7@LQ2k0` z9hE^AY_~dCK@MfSS>>yOYrCjRr|Gy%ThJ8Ih!3$C`EurV`yyNcJq%IP~&?t47xdYJ?&&G&bnq-5UYU#6O~j5T*=9 zKWYUH(+$RR{fBPTOChUO$TyAnDV1Kv?_Hd-f>)j$YvmTu3Spw)4Hm#zOV_hn#p|Mk!cSq^t;(Smq+J!|?W!lAZj(oh`-508V zA7X0v!Y)Lt}yINQ-*d6v4fTq0}L}&{X%zD`{{~H0$4pdXt}r>MG>iiG#UX> zWI^#if9lgn1F2OonSbvUHW)owCg-(mkUE!1H8RL@6>(!k{reONWQdlu*`D2^2%6Ag zc++yex9cLe$g(L~sDx_0JWjT_6;$6eyho!NynMae-YfWfNT_#>r>8+iBHZLaF%k8~ zrqmMfrMUvQE*YPanT43I;&SkXMt5~Wh4}p>FM)V}IpMc{{)i>+EG^1DMuG~Vg3Y}=ab%Fj&v9@{ zNYnukzq5m6?A1I<{)T?3D+huwYE~g_MXV(&mZaTlZ!z6|*57jJ$@cpGtRCXY6NFbc z|E-BVrMM8*ue}=Fv?&8e$EIb3`JRZk7he`SI&bUge@VQgk_d+eTR~o79#DX5Bnu(% zg;eS6kj2XsU!~~?e27nEPP-V~_d@3M$|?=KmR(%?hS$J2Er)#p;hQoiH%7{o)r8wbsii=B?<@3J!324(H6{lqO)>;Bq7n1)dIl7I_8pzH9QyRoH=R~ z^mjPp3HA(z2%UrWE?bQDvD~xb-o0;lJ~wHTdKaO_++0U&fTkR-T02frW^vc0SC0lx-r1?t#9TxoDH^VflS^ApuZl|Hd5nN0km zv8XEUSuAm>Ag}JQ!~NR>a;|O+!mV6GuRk?A66~VUnElE**qCQuq!Nd}#{O01zP8|f z$_`kL&+5EUfBVvrP|H+T{^wnu_|Ka%*bv>z!@bJ!(|dI<3w@WtcZo6SgOz17*x4OH zL&OZ`|8M$)+V}Hnu3y;mPm9m+a-z7PBViUjZ4k2+N!r6!U8J`n1eJ88vT5UaY3Qi( zx@^0!u}!b6+Ad7)H#{wrHn7oEavn>uv)C)-uFj1GRq*hbzv%OYG7i$EU(GU9$y-qbR5e2+mZ{wnhoxr`VqmxVT_CC%Af! zhk|z}7&=9ov+?rFu*;9OqzZpe&YaF>rN)x8SfUeiYChV_RRwL9kKj;CF7F*G>T3&^ zVFgtKq8AVcFHI<_?pPLa*SF+N>U@B%XpeyEGLuA5j`#|_r?00;vx`t}{}ZSC%PkqC zi?zuPgCj<$I4u9jv^PJKT)hUz;76F{iZl-nsf1a=wOIl6!)nu~1hI>y*d}SA-l54W zS_szDkh;hM-(}%-*UIp$JJX-$XY2Php!Mfxzf3Fb#?A`#L@bpp`r)IU^`mn$f7V}waHH8ClAyh^-*xh6F`%ag?(~SF%0;3$T zwO+97Bf0~&^7ZFkMhN~{41;e8R5SvJay<=TA9{L&+V%g z|GMFy%AsB`V+0SRh3IOH?ys~Qp@|AUJ6jzywabh`O`kSa-P)5GwOw$dugG!6# z8XKR_4v2$amD~ zM1WF^iLcRAykfOImJd11*(KS3pC|UnmYZdsXkY{W$(uA2tv!`(-I&nr8^2^N**UdP zXZY9mZAo3)+Zd-2!#TKd99$R*VzTEUn7O$*oFUk2f#EhS%Fyi1+GXo#^w z4$3p$y)7M{R7yKlQ|3PRExG!PS<@PM(625POr?Rbzv_MQL>!hF2-V<>hZoxcvcNj% z)y^Hz{waR?@VmgoXg#U6G&1ihl_eo!AIy9O_bh3VR4VaSmE&Jl#h>$OWj^z6ThhQg zW~8JE>M0!BK|OqG3Fifh@DHNiA0d(75nT2 z>%VC}9$4%ddP~D`8rje%>+~M-%o_If?}k2CP$ z&5xkLiBJdxZU9+`mEi!pk(T5 zE+VgTZq>~^og)NHBFkzl;)x)ZpM-mB!mpznNlsehbM}QLp`6c&^9Rp}B^Bs@+Zl?? z*XF+Lj@MQje_7uTI83u=wZ$d=d=wzxtvgNZMzNr17Q*H#1-G|YEkOltq~v*dp$l^1 zGkrrklaNnSwR!se$!tl%uc z)CJ-|8G7V}MBc9s(rVUoWVOeQ%wEK?fVk+sYt8)q`H~}_S)w*MnRGlo--h?wzQ_;w zUFo2&z|6EjL3t|(<4;L6xr@MCr)kJLi1MEKU1{Vq3S9J2o(WLVYauQ9BRSOQ=CY3( zByqPR*WcOCX2|mFygd$MIpbYEe1-YtWZhcyE>P@qCMC+={UQ4F!_|N#$9yf>Jc{8u z<{7u_&Ohu|anZ;S<-Yi17{?=?9FuQImAZ#~)Z#O(3(C+&xZ_s!b0Qlx5ibq3+#kQm zV;oxP@x+Hps&#=9PzY_uDM@elUzDG>^w0o=!a2l#-C|nuz^wZ{9w?=g8hzF1-vzJR z(dA;ixGuACrjtHRshCloL z{ui@^7cZ~XDH~z^lWs%&@v90>FIfW4oX3XemIm#_(?|bbk&N$k3Mw zfe+(#mq?S&c-Vo5gT7zn=iNT$TU}Rnb+I2-P8-+rv+4{Az75`;A@Tk1p*f&Iww1GZ z7WsvzSonH}Mh&zkY7#ZP`5D7RHLWqq(3v9m0xMDs5mY3iBRVi3or z?rT8N84_U6!7(>V*`1`CVteGkf=Y+gJ;!7Pr-%LwT}~F?B^`7TNYT64Cek6O;ZUU>#Pr{U=3;eX{qyCkCt zf>W>Tmw$lcZNATh326@(u(8NZh?`9Q8MD2>1T{2RFD4sf`xu*J!3B4MbmP4MZN_bz{54<+~MugZ`cpn zkT*tzl`p$2d@R|=Ogf0DU!lTNd^nTVV}(86c?H=sI>=YjlKSwc3$kc-vS>k&vtD0p z=S_ZyCGK#J5iVRGyS>l$l<*Ln!G=}%olg@kz5;gscQFBGq5oZ2K>j8-rhs zv+ZB4fFXk06-Wj850~>e!Lm?TQ;!BP1jMb6PMuz>Gu?>cHIx8e8)Tz3u|CZl%P3pX)eWz^AyJz=zo-uop{+`+I{AU6^v+<-hr9*d!<+Wdz zP~mAF6d&4IXQcbWeir!>L)dpe(Jb8Nu1>=uL9~%x*pN(L3z7s4GeBMkv2I&8@Y={2PmheX ztMf!1z*O*-ZY1)7QpHiiNr!Z3bf^QY@8aQy!I*xQvWQymyaGWT$t~knN@HCXzEPf! z$7K?ZymbCfLhK&Xkk^$b(rg|$qK9BEfC&LU9gyLDKY|1J2d*K$HYhC<+t};l_G5fX zuSRQgO8`n6BZ}^3c`b>IGYTtE0e?qngUtI}*U|YKo>*xI`CAb!8@f6Z`Kj~cyVYjc?9Lo0c#TwD zU3VWe)mpvy^E1CSQKnoPkTUb7iGYv+mLYq4y@qXgzQeg3Y~1$=?s6HlpS1n*$Wrpc z@Uao3P``=w6XR}V`akY7%-W9zW28^58Ji%C<7*aR_CKd~)GW{TagNxb(ulNop7_Cm zuD;*{kFbF-*XY!F)>Y9!=hSM{*IAX0f1~|$9WPQY0pDm$q7%4;tSGsLDI6djPbtB*N2|fcZ_#Yg|0AB}P(*|*Q z^f9?5Jo2i(hyTRnfc#29UF+gln#C5ZkYcA5SQPMWf{DHu4YD1kVA@M4$?mz!b}e4Z+iTSsx|Z2RTpFb)9`X_IxLNF4Br0_QjUzx64Pj^o(cuq(~nOJZG9 z98txWSXiLI4pbXbVBS2pKY#7vpoqP)&Fc?UgmbR_RJ&GiN;4!gK^v8iClU8lmiyB& zq|~+aLuudcAXRsv4V@1gPb?s4q!90`W&fu7fkwh7YIvh_xfK+`xv)pmc=p$)to|?W zxqtSU!;bIfj#0+ouIE;cOhY=CtM`5W-ox~gI$baQVdwSeK;K7$m6I+xq|6rn3qWw= zzZ8*1PsjL&2VCI&A(7qZ0hVcz_G-0KaFD0+_Dg=;g@7zb*7EGNy_wkpWt=Ui|Bk=N zU;6gb?Sv}ZrgWaqX4}f^*KiL{?KuDrH5&9msOO2bsp;sAOJ(BL4%VFH)ABM zLY)n=IZk*bDP!AwW;EsQ)zw?DR@UQ z)54;%4j!W&!cBV>5w)vMk1g)d=G<_Xw^HG|5ewmem>f|yDRL3JZ`@`?SE&skroVD3 ztGJ>E8kaXe3o+lW9b4 zpEI);1S)^&o}r}O1Vkm|{mg%Ok7|8=J!-ywHlmc;>8GZ*@`G;!y7FVOO7N?Zrx1#=AGPY~8OTg7rb`+*lDS zP|d?>1$F*(E&1@zu1bggmNzg|S(}RHD=BDkmcQ zU7oNAV5^IW`dKUib|?dz*xKQL1_s?ct)s7~-Zyi_oE z#5egkASWCw=dGtse`TF%!0mRa^JJ<3O#cSY_vc$t$J&5YA0rxv{}50J#Bq)?aO?2= z;Zf+HR|6SmqRq?KX`op{PObajeQU*V?JU{=6;pq7x_^6i=wzC}oAjqKsaS4BlLs{K zN_0HbNb9o|)CE?6S-D9eeMAshvMTE}U{(uJp`!L43fGb5m0YDj*U^gjjp@L|9%^8C2( zX06Y>KxVd%E_k9rFPUPU7Ary@%vUV_exZBZx?{wpI(R+(s;6YlTL3apT=JhE-)Iff z?SE+!7%_tXpkDc203sAL&0g|_TfPwpUj~#_c51x3HEQa=x#xLxk2mI(1}dr1gCd^) zUwwOo)+zS?;AJm8q3h7^ehsPZh3@d>Ms(WhBk+oUU5hEgO#tq#Pn>Fgdxm2g>!2Q) zvaQ(SMIguYt>o>7@NF96kb3swvdgWT_yih~l z^I`Ac|Cy?Uzv(<1I<)*lH|cW2?7f-&F=Ji|LpKZ0=2ohDm7Zje8>VRs4*FtmEhakK zce3+CchJe9G@W*+#&`)xp~-(CtF&?0G8LUVRQ%7lT zY{8cjh6!ow(2KRbe)HCxJSj5qYEx-|_v0^@ z8q`4L;rz? zU1A4X7&Q%^{P^9yOYBnoJ6|)@3IB=N-vdL1I2(BH{)wNDyK|h z^BcT!Wy~N&jr*Y;H&y8Q1f6AtbvuR`!UU$xf=0EGx!p`M5=|iGC$}jIA%};}ujoI| z48%)1yMBx49CcE18|`&TInkql2Sjd_z4sGZezC0Zu`e>$w94p&wT|%|KA5gHDOk`REgW<6?~MYg2jA2H}sIxL?=4nN;PiPZXAM{-IS}IRLliRPE%a1B|9~Pn}*U$R0*2dCY(_3#kr&Rn3Bty z&W3mO1zL~HSRgYu{T9c%qUH(crRM3c#_xmGn@KLFM%;9{j80SUP~>83h1{*bkV?1P zQ%&f%zeqQC8>yC&^%TrJBo&R-_X*lS`8TxNdE!l9Wdho3=B7IlY*Qe~**a!#AR4uj z32Soj$0eo3sbe-xHGM~vYA40~_;NgT_c_jpo+;ENA4^{E9tNsPi^ZPUV80s}FYy{} zZ+1Jfn2a1cRHApuG0HYSCyVH9^jwNpAz1DU(ZaK7mNnLo56ALwL*Fy5i?m|SU{dF? zHpAI=fPM?~{379hUI|C?9id^^PT#h<{oyzvipOUQp&nw6siR>z`QO0_v=0sYD03m` zWHuA}%-pY#qkK9Eb}A6=;i5x({*$5CA0yc=K|>X~+rKJ|HzebLNw@AOhE(KG{XFq# zrNyT~)8V6d*?Q~)Nmu2P)W+WIqM(~lXL6=BzuO!v(CjmgpBlflf+=giU;aO zdJc17>Noixjo}Cu5Jl7q-jC8QVknw`z%`!{me9|B-^6r3=l-BUp84enoXMMzM$2T^ z@7FfeYdECd@h>31%oDF4q~IIIG&s%4&VF{lf>P^rc2CKM#viy|B~y=yFxHq3c&$zcEF{PRrD=b7_z&} z1KoHjN*Z`PP5PT?<}HHf6Lb&SZ_<7Byf4fSv@QV!nPCmmkjKgMbM1}?87g5g+P%Cl z{3t~l$qUu;_1jR*`Lg-5bA~#i7OnSVxuD(axV3}Ywve9Wj$L$cWlST9+WBxER&_y8 zS_mt}JO{ir;+(F$0C8=wp( zC6h4enMr`H`;p3Whnh*Qd+3@0wR_jBipDp^leu2)5Z@!V=4Uaw3x^Xf4L_2? zN)~DYEM|QO(HZ0>igzt3%9n(rvj{eYfaMZS0X?WECKbu#*NwkUdhib4##OOZ9k#S$ zTxEP$KZG)bkbA>j)Xk?`3>_SSKcj!nc8WxLaqI;6cn+Ne$*K~EPK6Y4Wr`O=c6F&Y zQo(RF)UW3z|CyK(`Q-MFxdKV#qIhiZZ?p*U7oQp=HSL~nKhiiw;Ia5nc5ivCp$g+@ z5OrR**JO~+MZkD?-G%I~$)%IdcW>WZLV@W)kCIHtHOM`S-g$)%*z%DQnROegw~k_7 z`rI)6@0rTky>{db#@?KOx4M>Sh1~XxHAPNNnn@#$s?e%bqr2!vr@`E zj8X<5$Yj1H=!-Reb1`J!ntFp3Yy#Ip{rj~l@)qxmL*MV6ZxQk&RG%~xUwT!cM}APj z-Tk@c<*hf~&U>%l#fsc`&_DdoJyI=Js^G_SHP5}*oW>Ngi+|7Zk*hY$;TJ>mfY`HQ zN>mi!_gY$)9>;_WJ|kn3Z6QA_e5+cb3RypN?BTLi5Q)GHk7E?hvWWh>vLb7a(YDr; zL!m(vk@i|0Sl#gxSwFVUcPz9hv5mPAGvHjyHd28mP&6f|`l6qvYAs zFl}4Xa{SgFJC$p-%>N^Z0H*#bn;fJQh$XV!kn&x}hn+e|Zv3&PoZy+R6Zaw6lz-l}zCV7QNra^@2R$&S_DQe(l}^67Byt&bwzjl}7kcPl$Y=N1bt& zGI=Gi7eEmti@$5?9&l$RK-b}J)vUZ5g0mzI&L)=YFe0o9pkKp=9=D5!wb@&LNl1-R z?c7RI-`p%2zN=0RsdTJny8f3lN3P?d>c$RXl#hhNDkawVGDKs2VD?q;ZDq~^A#Tx# z($;Su1TzR@J=Q8nIIyevcM)N4nNYIHsNX$!&u!sWDZS=iw8-32hGD6Mn0k?8IaAG} zta$e&i;8u*uwm?<)Fan^Kmc|Bj8OAW^?6*z*eOvr?j;&$!yb>r9&wi{7rT_Y!ys|% zd@mxb6jISSuPrNykH2ti|;|=Kbttw_jA-SAqbsVP3USDqTZA%c^fwKVc z%tf$Z#Qoy{T5jflr+}X`owdfI`AHBa)F37&E(intYr=oWLw!RHs8j`<4Z?%G+?Kz& z%RZxQENx;O7C4G+IY0l?=4jjC_j5tk1+z{}$EFD_PiL(xqM;u?+c{8UVCM>?r4JP-A#*^^~g+yI!zDtoapnaEaGhbHAXb=MlM^k|p%X z#*#Nq2j6_i1A;j6cTt$R{7x68-S6#Y(gGXz&VtV+EKr#XzKn?+ z@vkq60DMXyl&o2hBCZEzckl6Li~#0K5@I>1SCT;6eVk@shGKJcRlII`<~6}W3cE>* zU2pb8{pd05(Jy}Lv~-qgqBnX3UjNrKWuQ%8FwNbv*Vs=hoq=yXd#b6V4M^ApF#yp( zD)o_#b1hn~li&VY;Iki@XIC~VPSA-p6A@Qm$$a(;G}Z(xSV{b8pot2$WYDW8AQOB% z&&#^2#syyA?!>~F1M66h`9~-7Hw|>ypDkeiCns+kcn?5gD3}E)z!;Z0&bwtit!H`( z``-<;5;m*|A*ZEj!}q9X(UJf*R;FqQKG(~<&q~G&xaD@UquU47_>oay%ySL@Dgv^E zKu)xvg;(|?HXe0D6eR1oZuyF$+Nssj6$a^8mX}!kt*SAyTjN7feG%a{u5)AMhx1F= zR))VOc*?y~RQr>x*#he3+15Oyhf^Rkwr{^g`4ko7z~Tmt zUM?qL!4o-q*cC@!k>d15!vWEnR3k!&EmZh=i;tv?R%sFW&$X<9*v+>*%ND_+@;Ttk zRt0`SuU6G^_DiX7htuvE`4>pLoAeX-N>#f{aK_dYa{Xd}~t?Jtwm-1)r!6t2U$!ymrn2@lGlZ0wo9o}kE* zevD4uIOQY&pR^eU)sjb#HRTpbyJ6$;tgKwez3KHY&h=2^@N#$qu^bmm=}`bn0M)Y` z#2Zs;%mS{oky&H> zSko(A9~Fh*NmcY$^x@@Z0~IBc<(n^ui{_iDH?76c!N0)$nRU7 z4Gyr<{ybBk@{Cg_t15PTpPxk;iP^0vMN>G5=AbL!cZsh?#-kFXBTS7dy$CM?LC(P&KyQ?E>cstv@!ckPIx3zz|+;z)n`@zQ*UT4~oQV^+$2_zB`h;bqs;_0)t(B=@NV;pbj_@rR-KWxnQzp#TM-gUgT1S}(tLwqT3k;{@aSxKScX!Mz;R@R2+ z{ks`Tu)vw$t6JPZsSOI?P>(u65Y0InGG6@pT7z3f0iKPUb+3oBVyUw} z;E#2Y!~zY@-)Kc>T+7-L^43e(?VtBs+9UZTY|fX#?gLKr-LC0zo=vvlBrR5Dp4Y$437dAG~7 zc}p3E%40Y;Xhc7j8PH52xY476;_^1aUw1IE=tF7YJ~fKf5CgSY=Ej=?f{95$wVh8s zUNvb0v`Dvyc9R^2w87Q$*y3t4m$WI< z!Me2+rJ>GI_%yC)$~enP8*np95Ty!C(<0G=_?GkFfF|La8NsyKjz5}hnBXSQ+o?4p zkGv3TaJhtP1Njk5MfuVAS2dD&DtmH&H&;7j6(|CopKY069=ocgVs*0W>oBC{-zeCHJcIb;xly)uxrgb8wBCstTY7G2Wn91+z z-W+<7Pz^vPLAK3h4=|bLPpUFgu+cm2Kb;7w*!DJhb!CM1X{UPJWQtnx-NPbEOJH2Fqx7u${gjn!>=Qyw{Z6TP$<8^bi4CuR}2^4I%PXJ`r6W_HgPPV zWhVAGSPe~&oFK%~fAsUhkZCF~nnwO?+0=4&k_Ujf=?HoUcp>99M`qU@hQG&#+}FVi zSo-r%CUZ@FE0=n1SH>`y@~JDo7Z7-`H}*HB6^>irnbibK9#hVif1(sCM3sx#>A=0g zV9MJOwAlG(g!HXmF=5!LzrI0ANb3@gaJf$fv}S1*?bIT~V4&#Fp4ZG_%nx~hg}+F} zx0)9Fp0v%6fuwtT5~M0`3y#E@Bedr~3qO9&PBK?B4dD~qI5DcypGr>gdK)G83)Yr` zx?JfZBby{A;XG*D$>WiPyOFVrK)5%wYIx4YJqp&Uf{a8yT*UL22|}wtj1{)74{py$GA@JH@~zD*A|zyhLi7A$+;aN$(}!{ zkn~5BEhSZ$RNlZYKoe9-iWyFRr<_Jt_b~L=bK7rjJ&QFzh+SA(|CgQox&)uK(Ktox zPRo=-S|1_p_Qx%}!MSr&Pg?DPPGy7JTo!<6p@On*+?@`clV3i@KXQfv^?qX*N-gZf zWx_MEbwzmYnFYGVcMuT9-+x&wGUAOmXGuqELgWz>Hds-MV|-tnVr$fx*C?Od0Tk&S zgf=}oeAK0?QX-(I_Q7FvmE5&*WS&FCNaOz7fF8uXw4$yvl;CeEPBIQEQ}HDc>2ems ze{MZGNlKB-6gHr!;3q{c^0w)|PZSXZ#DLtIlISL@r#v{H0hgVOg!Q@;o}O;5U$yuX z(*xmt#>FinsdQt|qV4g?&*GLsca!DyF_iJ`JXXy?Sy+RINzc_a#qV*#?LPEBM^qAa@%ES=(ikg;$uq{Smfj0g_d`Z&G2UB!!BbOT-rEoaB}EKKc2Va?C#Q4 zO%?1gWfrRi4A8S@>qFiDesoSQY#h`}m2Rq3eypRU%O2UtVD98n8~A~ zE~U42@$=2;@%do-8z23KTl~6Omr05Ihf4JHWOIbd7|Mui;WzL8YFq=?PNDC`w#b=& z%--KU-`MG<(DTCKwzOf=Yxqt$#gmS3qZrWmht7{@=zk2 zHe46+g%Q;rxK#Xn*|O_>&9WC_=37^O=w!@E(0JVGw?DRfOdqf zZrCR}BQytuk+>syFvA`7j~$$ z`8tOR`SU&-w|^&uGO89wiKAA!aUIr(G%@PLaZNC=O$|_=Dr2IsOxFyG{Bg?`DoQ(A z02UKivF-r&@qZ-pyrv6DQv)i~@HE4-@z@_J(gSIa+IEP3R%XptEzMQg;WvjJ_bjK1 z-m9@|b6gLJl9XIuF2DenRh!wsYT@#oqGCU%4(E{0cbJ!QRyp7)YQVcIBsL*(H}Bwu zB0HpiT6b^msPBRH?Xi<{q?ciJgql5KbS-gh3Oh)&wuAtz-}9VGsx`2-WRgwhQ01iq z_oz6G5-##{b)u0ZP7(kWeiPpHqU=ymW>3DKmw4;@AKR|s+DBr*#04fugDMUWms5l_ z(%)=!B$j<_9-T^jO#db~wh?pik`<5Ma3u=Xs9KsUsRGUJrS!^JSt8(<2*$UGlFn$b z(3|V#Jc`b9&6+`mfg1;x?)Z4M6^wNhiFTR!AYg01=Br%`3p3z5whX^&m|B;q4H<}?Q&63ibVqmz9pW{Hba_!@94mUH6l;fMwfwoKX7ZqV&xqw0 zFtXgK1E5oxZ98)vqxzzdF`m!@d`*82X-Y$5-QqCuOUVLRBj#lz7btS$Epf9|X)ak< zwT3@SoIcyo(kPi2eqRxQ$MLo)(F*r&2-HvDiBWt3dhSn^j_gCyE5d-@+dj1gVC1i^ z6K7sU1HFRUK4idGZ&QGzVTERi?W4~1`UY-@SP5g}NkJ{f66P%d$&_6ur5H4b7shB) zg)i~~!aGc(iE}6(d3)x=piA&r_AHQZV4G-;x^w^fW~3(?kX`RqxN;+>ZMyrNN-(bM z{zv(#1Q!(~o~))p9a?z**SZXT`KpE5n|7X(O8UR$ZQMCpzXi=d6aJk3u(!Qx3sJ5N zQ`7;;TQRS!e=9AY_M=MTbLbll-xTH7`E!wf`MX|7BiFQA+6|A|%bjTkRH%!(9}Twj z9PBoKO&1=+CK0XgrP;SE+PGF9{5``Tit7k0ciY|l{+1Q9`;mjHu#Hr)8 z0NM{~y-BQRj&WY3@^xcUO8I#$5Zf&G$i+x#$R(%QHup1ZWvXyli`rP}(q>;L*yghYwBX;%kErmtq2WzeT%+esVD0wM!nrZvRDJ$(mqWDt# zxA%!cy*}^0aJ^9qPK;@c`bZS?jF7|-oMT0n7dI>oalThPMHzfNI~%jLKC||x<=TW} zn@6$~VNLiLY$&xe$q{ftusBoid^e<3mDwD{)*0ZYn+NwMRBiWluTlK?c>lExbsPmO zo3tG{eIR|`)Th#cO%nez^OWe9oHpRAq7ZlcfoNVu$7XoV>nxc=I>rD_Cltn+T;#{= zz@~~J;_H+{Eu^8PHefLcAOj0G)UH^o+hi8E%BtcH8jD1pWSF0#uY|l^_F`t444Qc4Fw56kb6W-K7Q3Ck`Q+gEm`)5kE_xAj$arFec}1sW`R`cE>v0n76V58^ zS`3`2j$S2P)nbCw{^4_e3goW@knBD0)mNa%NB2rx6buRL!UuOxu3#OnUD(Qc?PMA+ z(75vSl9(*pZemh>x(6WnzN(|L)*JKPzkX(4Fg}wN1km_1b{XPT7rRrE(i$n3DmdkM z?bibPwXvN_Ki8^~E(1a>0mbaZ69r~ioj-c@oA3C}M+oV=3KdN}8ZEgQgOt2EYY!!G9%h6iq?DTn|IiVkQU zkpJN1ZEMo@Y~|LZ3cR^x?AkN6`g#j1#dLV=jH^$4y+L7{rd0T!khhm02aA7=8aT>F zR>@KHKePni!w%H+eW^hhCK?pp$erJj^UAdcGAYeI`TuO9`>OoU$atP_cvlQOmOZ&* zijUa{4!wHib(RiuW3z#!If*NienOP!A}6}9oB;^l$|g4He+c?ojaBF zH7ZR3ZzKNXvg&ay{I2ZPW@8d8|YWkft&Sybd&KZA*NQFjqqOTHCy@7n@-^R zEdf_)1>3PDBlMLN+QJ;kBTZ05*pe&(N`H~|9uIR+#K6~%Q7MH_P!CKCwi8pKXBS_j zFhg%#bz*jMV*-@nwiy$g)E80(esjT%ExxF-)q0Dn;_`I4?IS<-q8BEQ54Nc3LRDSY zbKDAxzrMvEoR~Xt^;sO*q|EO5K9b4iH}sBa!@oCC|5NpGm0%^k+_hkTA|XsXL5R+O z$Ex5z*9IADt> zxfz+dSJJ4URyPvtIY6f{5A*iu1krR>L5#DJo;lSt>-A61BiRw5+%SrJS(w>KPAbkk z>t7Y_@|{+aPGKaxCmmb6do}PzUF`fj2v<=SJE_9u=9G)Tfv=9D3~v+z3#a;;t^^Kg znr*l2WZtSkxYN2am|ILN{umz<|*uc(T zY%47dsa6b+4H>pFnkk4BR~~wKy=NPqg&uZ!tTYrNtrwe?7#=#QJ~1_Ea&o8hNf**B z``Fd9e=f6Ew2=50-w8=XwS%n?r30OgQEXvD%OX%)>$1WA1xn|g*TLpOKTo4cV*U-i z#WUfqi1tCzJFiI@7D}0|T4x z_+de3Gs_|bpSGtpdN+%VsvG7HY8hfHmKCl1+O>auQ^6yatK|20DOp>>__R|}&@R%z z{$PJJQ@cMkEGI>9Yj$s9YWM8pL3=UGjh7p)nb245tGokVSxRiv$&!?dQKkbPDt-h8 z=%Pirb`br4$7T?|;W+wxSJz?dY^@%p)H}Q2ecp-N%~hveSDQZfU2YW2+PUEKZ_YBS zmE!w^EcpiXYI<`viX_uV`>}L3TK3?lNN(JePt}Qv+PbZv2lvO}HxQ8ozo3B`@OR~q zlce6wM+y2nw0G^RS5JxqN-H-A3&#m#$fRJe_{+b{wyrb}Ap8Cf2bw6Do{mAO7@fgB z5m+QgTjU#NwdHeaifj;03K>@Ft~>%9a~rhvq|1SiXjAGi_$>izzuT8AW+a+gs%jcP zvuE4}cmKj%cJNkz*xO=vBWh%_OE?{D_HpqgQO@j_CRkj5S=4t|2zl*xM$G>!GiZomi0# zgz2CmtvPG92X#&IyjQ9%wsS+!Y^^F-!s}PdHCs7rwle)0up0NgWqiuQnO9&GK1SW< z#M#*J3SSMV*m#-T*QT*9M#91ZI zz>H1B<&j)CGs$l@OX}+2n1jCtKhEGct05g>YXL_~cqCB@lls+9s(rn*7Nl!lv($YA zH62qr0JyA)bzy7M?zBCPD&M<8haP*f3pQ_g7G17*zTl|Ywwa;5Y|2QMg<+6czzy*u wd{+R6-1R46yj;$&u%#5t2AmQpV?Gwh*B*juauZWE3YE*)#N2 z&dMyZx8ME#xX0)IxW_$S@7L!wp3mp&^-i$0Hf6&J;Q#<^=4Qrr06>hd5Wr#>59gpl zFUAAqZD3^pz?(#tU3WA9f#&AM1`an}|9ob;$un3nz4QCC#$v~_jo*5mpN|DMw4Z2h z)~lBt*5t}WYE6*C{O-SbV5QbXN(tsVbnm_`At5uR1#6Bnmm}n!dibyz#YA-P+FmRg z_*_$6RDEI2|AX379d?eU@Q;x!Agfr2v&M z@df>P{kWV;U)ZZA>3k>& zu8uphm>Hp3+mP2jwBGaNjp%cZ_RBx74&G1u!_RSfn_rZVm6?})bI-|Eg+*LwUx)t5 zaGJe;Oq2u)I}Z-})^_`<|8<3&hDcjmLQ&Cezo=d6is!d}ys$?lWNupDvsU_}d406R z>CZSuW9MC|*a8(uBM4f=!Um>>t+K^L9RO&i{(7R8aqaT*f6MoN& zF|CY3pyd78(Bzq&0MCPzg^%xc^aqR(BxN3ALgC@Pvkqx%%jLN3nu0YxUT@6Z)_bS( zmY4maz6zb*yQ&I}SK>oTQ^Mu-_peD?jVSylQ>(3QnXl1AI{_Pc^{`$8PUAx~<7$+^HzL?we1>az%_NS(msb4?1e{fw0`&*hN zycl!dQsXxD%8K6bUI`9%n^`_E*xoGoCVt|(C6Y#x@Xz|r$mvZM1S5Yb?9fDW>&k@j zz<_k#c1^fyGvRNzY*ECgLlKo^v#{%aX_e)#Ke9(_%uYPZBR9@(!S$_UUHi$U-1PC* zsH5I=HHnzHS3QwsKeS$cPx=>2e=xSKGI*~lVj--5Zl>vcwb07b6YaS-bs#`vTI2;w zWu6?#dzb9Gns3!WMM6mK({MAVtHq&&=F3Q-|<&i8N(+wA!v^5X5l>1PN#Cd+FA zJ_Oi6P{eH{w`+()Y)8W=o|LADZQQFVi!68(d*AVo{)UiV&6%9jM^A^FbUyiU`|E;F zg=>SCRdH1ZHRr+Mo%qs%iuHfpPkPE-8@#RlsE0N6yGnYQtO=^$4jSzVmRS=#=6&d= zjcyCM_v!k~&Ml%NAV65tZMI=aZhgNIQzVTb;s4ur+3o50?%Z_jE*#=R&pEVYhfSZp zTNDs-cP^)s<#b>QiF`gRSk=jS=vOlu;lP(+dngN<9K@H<>*v}&1`VG6}9WirF%2e z{0Wff_FOv$S&l$L!=^64OpNe#G|_IE!<-lk9}o&32rbz$Ps`$2ZzRm+D08v;C+Ljw z-7S0A#p$iFPOb+M2nR~3Z~qbvGQhv_`fh-EH5$KAcRj4;pm-9cAqW&J#JGAZM7Y{q zZY1f2{P(tl34LMwH`4HjOn~K3rJKN!hzUK;I)e|NS2sQ%vi|sDegpUM52xkeWxlqG zG`)~>Z_mDU`l!Bo`c31N8!YLsUv`~Yd{klfCdRxb+DoVLi=+PqVor_U6#EK zpN5yxX4vk}Uy=981P28g2M9a#RfEa6@m0Fd+CjHIKH7{8U^lK6e^Rw^*xM^lGv1w5 z44iKl3!I|)a5yFj4@$S<#mGJ{oH(Lp_%^!A>>%)}@lt+dUe{^U{f)G&(W_l}*l04{ z?NORbn6)Q=7Pl-*S3=2`cVcOw+xOv1JgN7%{kATRN58iV+;w=RnZ~4;d_#@j>2Pnb zn&q8K{N|P&N<6P*SsFQi+P%e{wD^9xLzU&L`%m^uJlM;!%Z&z?3%)`_foHQd$%kzg z;zT=mcUsoPIyi6l1%DMgd%hx0x^Fb3Ae*NqvHViPPx*5f)BSa3CpsIR^xhC@O{#GD z!TjbA)oU|rVp_(WH@8?}#I3~jdOpAcw?$swst)6mzux7&&94zg)bbb*2<2v6=cjN2 zsEt;pgw`wn^0rNVor-qrU*I%t;3X<4bkOluZ<1vKpq%C$(f=hJea6=TD1an0L;2Z{ z$`z3-AD{{TU)z2`CCQN^^`n`wL=g3aj*ECop{BiiUiamysHGittptX0cPI;^}?kd z;cPsaLaW;)mVZI;qbzokRA(d=luq$Djux2ViM(MUzK>0B(vc|Z0RmBlEG)l~ELq%< zDnwH(m7enrBhu?4qt>$$yw=)(_ zzb$zBX(Tre35|}?^l-sEfE3LBMbR3C*@2cJxD*A~qTttDz|U8cD$R5|qZndFq?8jf zeTi`tPL#72@gd#eV!He_kJF9gR%X6a(mc6m%14{Ex5B+%5DS6s`w{zxFS)Myov{AC zIy?PeIGsonLkIzwQR91EW50y-M;L?mnwgV?9g?ATCA1T{8h9!DC1=tKRD zwRq%Oca!A*?6@{r6u+6k!;8?hYEtE)jt;j|;P8uhkYNUhIR>79`Vl|){TYIWM8U*= z7rx^QUkep-qF5y;TtbCfh*d7~0F``lQ1n(Kk&PwuZ7v($7eh%%<<2nFf{F@s2B47Z zV9JCISRO)w&(W3D-}!)V1ns>czI_DFA(XeX$oWzc-@YuaSGLBDn9`%s5lRQGAJOcT zbU6_MmQ@COIEX-3;QXs^0y64kzJR1jZcrrDO;}3iP$zNmZNB?Ci(#(Hfzy>Cny5A#C+>JuinS~rjW1j^{}-+jg}x}0Oyw?p%*s5%9IlcOIaZPZl8@; zR6Kb}Od4{xQ0@L3{Q49YI|S2w11JbY+v_Iv(+Fuk3FsEqV&`tFB8&5jhAXCd&hC^% zDR+9?CFFjBkRgfLfY5mw(SJC)vmqWyo4Vu=PzXdMf#j(A-VwRol!qr$^TNs%4{y$% zPb-e3Q8E42h6MoxO$!M5 z(~|xwdFD#h7}nfy67zOKn{7Z5ZEc3{|4Nub$^E-Nsz|wG3s~fsh&4j%PFU38xkFn`p&1Wf8c#?r!xDzxo6qmNy(3f&@WH_9gS2U(jg}uCs-W{O_6wmX;$uZwQi`xjmJT(*=zBxdk4dyH*PRyT%@!6Sn?sTiQA6Sulk;Q5oUkod zw6z(jKK7{riA$a$*UH?z{@>1P-Uins&`Y^^e!d+h;6_;DN4yM$ z-0(C%!}%T$-x#V1p6CyPSzo;nU^5=kND>`vWM&S--eJ5fC)$5GqjC6nT@Xh2y0t}t zXiA6Wd?X(eU-!c=xUff1e{7i!vsBX60JB_8!CA#~JnKK-4zN!2K{N`ziLUT9<@IQM16@bM^l6mj|aItnR0cMm(Gk4Y0ON% zYOePonAyS|0}ob#7v>J=p?}$U@0SU4Q4jMJ4j$8CMtCkrkg&|oV?=gftfjN!4@>U{K_!Z)DjaDwH!^!J`;;O9+IT1zFnNUwA(ihCMGI{n8=YzVD2;C8N2kvZS-x%lePYRLFT>ab2 ziW%`<``3OHp}Z23!5n>E`4GScN@2(8;xE^4?MecodLh(tD}H|GRzg5xn8KfekvHSk z^~O) zG?O|u><^J<)3S-AjP@>W9~(~b?9yE`e3t#*@VFV4eODnV*>Yy zDmyz>461-* zR<6H%`2k$rDiceXLQ zf9th2bAp7PklrIi)z}D&;@<#pl{t5Pyp{&SK z3^EpAREwTB1rA|j@3#)6vgU$L`1Y&8^2??WoP6v|cdo>xafjiPfl@Vr3a7oObzjbO=&?HT@RX~$!8=^ za|OadWLozbUc7>U6pz?mhyMG_pNrqd7_F+L>wIsia}1_#=DGD}dvWSanlCn5NG-f6x2nuJZ<_Fz>yn zW9eT{YpWiPd5E%vz}!)kojGKDKY#l(1+@^tCC{=*E zr2mb)j{L>Z#()r_y zj-_gJ^HM@JsncjiQB&k8XJ>M@pdIEZq;Pf1uxUvfDza`lfPipa&jozY{#ajnk04Cm zZyT5Ub|868i7*)%9!H!r#}J(>0c}I13S=+bCj$cQn=w!!q6h?2V00FvNpQA>>d8Pr zjBv-7u7a?D+>Jd{0pxDfXDYURQc+o;yE&883W?srxbV=EPnX zhBd*Or~J>gb+@tMw(+wORc6w&IZy3-2?Q8v^_+0*vv;y3kL+2zLU& znelyD`bCr%fa*!aAg>nBeLOu0EFy~$a!3Ih^-Db~Bi5GoA-XLNAPlk5 z99ZF`{uphNfZEHhWctaB?oT1pqmg9NjeC=JQJ}=HV}5-37iIhgXAB0^udU^^q7kL6 za=Zw8Y3eJAb_{Hu1Lt1N5RL)AcYY@-7=7*(^jo$l;AgVw$&BnMRXZIv_Egi{^uEz{ z!F0V4JF0gM19quzglrul@w@fnxm-i{lT;L#oLEbE@OordXbyIVZJ}1+{zVew*nO+- zYdRN8dPsE#p|Y~34ujBs|9*Q;_4LVHO30IL`|T_4pq3AXJv)WGZ$W#3U>$?mp$}Kj zj-G6hH5fhfGs-KlZvN(*II)P`Kp|0AUC;A*@h){X!TaMYcH2n6#)i0@+H(KAp#)$v zk}&l#=4+KASvd*lm=%&pjnr5!UsnSwRRqRNL5~<~fqWG2%MsPidw4(ZvV(tE^L){v z&8>EvD5~w`)DxS}2KaccB^+8e7!eVJfQax0`;yX^9Zp2iO7M5_Vzd+U*M}VI;yN2N z+o1j7whHsL~2H}k%vWRo&vvL#_ zLs$bp)_;)*o;N@KX2_-|KU4f~dhm0cm7CtRAF7<9HRhQLby8N>_hYe?Yek+uAigXS zsC=o%qICOjsKDa}o!~KglEv1FSPI4{Ojt9{_rKI;UtChcm+Ta89zS;8!R0@bEy@EP zKGqEugxD7NE40dwxRDDNp>z$QE;98|Yi5S*QpdNmu{8FRYwAAOrMWJb$dS8u9qAPR zy(ZSUmBj4N7T-5*at0nncmW@?F{1Y4V+BgXL$-j5s6QoIs6sU49Kh%@VWC`HlJ4XZ z5pCeHt=$^mQCL7{Q$Kg}MjO+3bFZ-#n{z@)F(fR_$ZLC0*#OlUL6H*FF2TvZ_|=s7 z{#G!mqqF8%w%?&J8+YoT@`caepZC!VH!m2y`d+u;lP#wm>6oc`_0KMwIkOrG4Am1I zF)f1Rcp96z34TcreND8rsD5TcOfZSp)Ft-q#iiKFY{MN^DyDYC#FrHP5@QHKZVIpj z{RKkzF>zo+K4_&o=1=$wF3sxli3_XMLY{WrO0ye_sjIgysz~qAciTRSr3FUHT-tr@ z6frS4f7_bwwCq!BnM5|J>B}m(BerDf!ZSg&l*VkLz;fC?28GsjDM$Doc}kD1hw5 zp+tlTrm&}kp~)&2L7(OhX|p`LSwtE98Y3G1_2sXh8M1}f0F6+n^W@7a%Bj(>2gwJb&Q}Rd@x3&E6^;M=u0X1ETgldJIMRe`oAXcX#UMjj59eRVBM*I#QzxE zTBTHwg_2#Ixc1%%sB}w(k>L4a&Az__QcmK~@!z&w?oct*$wm!<716h%mehY-SQ7f9 zxOu9L#rcA8GCs-5uvIHMG{J>`ri^!~_)ISRWYtu-uw>)o!nUiorv8GD(!frabD+*a zIF>R|Ac7_(fIs3TUl;*VSOxhV50b`uGveBFY`OD&8C^XvVV!5Brkv7GyCJPr7=!fZ zrRQ)}ntn#=ePny4fO_|p%E#{DI@l>OInm7CezotVUM%8fL*@GhkAj=D=0%K^tDS0C z6YkB8km}TZS?ioN3@tn#1>nn;j9`7jWQ`@=LwKB}7Ew%AQ*?ivVq@;M9$|Gvbh2c= z_ynhkpip|U(*;@#BFE^TC?4EU9CF~}%KUXXlH#8Jrk|l&X5_6AzS&)|-kdX$YaXJL zsE0kV&&dz@b;bZK4lHeYE2`5zBMW&51}zfMae-Wm?$s`i{k+#s3Sm|Np`UYZ3JuwS zO((=tT=!!l5nnFPk=T(bBHvT{2c6hQJx49zu~K7R@qwE?NuF^HI)e|cbfU$ ze?y`eK<0@5b3?e(;3RXu00M$&wWd@%{m7&m)V!r5(PeL-YNciSz@N6c#blbaQZ^J@ zqJKX8NPeU!5j31!wotyCIUaoIvZ?P`iKJvV6EJkRKuilP34^8)_^3gA43oR;EljsT zyq&v;>aa4S^(zYL<~d@0S)h+Nf;657yUH7KZ>P1vguG5z6w04B(d=L|T>22d?Qv@N zpNY8EuNwQ0`zPqT6TeH-{<|G)sXTLgXRW>NNuO{X-xo3=&S^jM(aKwqxZ3EU>$e*) z5EJ+i@z8PV+mvBpmx*U4KXC&8=nf3lxdaI1Ek?{YU%^~EWEz?RL!?|37Ho80c7*)# ztq!okVMw8T&`I(T^T3gBg0QU2bAXeH#WK2FWV~jBe%xMMNVS$+w<|%3v0Ip^^|w zCgwnX=6WeXoPf3XLo6>TeRF56EOKY2?|sko_xN*)Q)8lAYF%#E_p76c#~%n9DIM}} zh?w2Yv37RYS3a1iuUJj`G&K3*hIkF3T<`rDjD)GZ^;pO$e@1Nba-S>S?8%@)RxuJL zu6j{h6<-fVZ2{I)frA(m8p5cp#v00Wcb zkQqngv*Mnvl;Mq@a|N9EZ~KG)Y7)V`pY`a)zV!b#cB4`O9WQK%^~_S@KV}AzSf4%z zQ3&KQhUD=B3r(V)QneZ4UT@mPcHY9;>JcHpXF(ufiRhd15H~OUd?>P3E}}9+!I9Y0 zT6+0fN0CLzyJ%|lc5r(P7wcR(hu)s^e43>9>%6`&r@Mz+H;w!+Xhmv1CSqa;a8IY? zFhbf~^T1N{*R7ON!JYPjsXev$)NvJG&G9B7}c-B)+R69tG)f$p(*-j81&BcDs74!tny_FYRiy%nyi z?IjG#gD&72hu`;cB2}CsutisyC8-s($;$ z1XKSD*~dgV0v!-4T?00+HsKw!OzWAt$M+)cm&j{ls;+Jpt7(_sZ%R6ol{3Q(b)qwV zqY%-sJkU*vQsoD{WW_VP*N#{^LM;K*IZEk&<;CE?x1)W^J##ki_L{of6zAuM8~Im5 z_qUx7w4;bn*5TBXeX+I=QQ%gDUMQ{~CrEAd9+fcpYHRWLkUgQCp`a)iN*gi(2{eeP z;zamfw6)HYG0I`+l+PZ_?Wfx$bHG1a9wg%nb&X8ZUYQ#RV{gVmC74sG07;XPZvlms zDp?M+j`-71(}4IC-ykJBXiXNBSm_l#-ji!96P?LDn;`-3BUweCh}AvLjC>)W;{Qvg z+Ux!Oi_)|YD^($LuEE!mzcDquMn$nuQg|M<;Nh2tdJg*H+g~A2Im}ID;t3(q4#Sb7 z@qfN{@Q44prl5h_bFMg*ZQ+nBgMI*PgAf}&z2#b{!-f<0K8;00k*d5_MXW^aGU9KqlrY(_(D=_ndK?A2DE(h zme+`vJ^luT@agMzoGNX*H5U&e^7l-8;I2(8rm6e-*VoEeu%s_4`3ED9Yg)F>B-k`H zNp%a~`^ur+K-e1I>d|VN9vQ1&(k@S}<>SJ7_F<&hKpVpcuGpn^T$#u0tg5ql{p063 zS;}2vXE)L+Z~K4H&2+HDBEWZicM#;HK%+8z0{?o;MK8jRwDak^3^>qcr^^2H=S-BJ zVz;}!&uLUOw_kT_v#Z0T(>ag@wB%PuvNs+S^$F{5Sl}>K#x1>(Z4}no-SW|52;$B{a4Llbq~TSh(BVWPn%MZFDj%`0q~td*DM9KL6?pW_cVVj;*J`8} zc`!yd?=wwVQ9f65rgVR3$%6^DjYAf+ns4_}Pp2L_ojkL9BjElS!(NVmC+L^_3Oqv# zYpruEs1?K3_G18RP$tRUv1$zy~M0-K=ok%tV#pLW6RrE z!lj{9Qmc0>&f2naxw)z9(91jL$12_aP*rQrsYeqJ#UK@tIHsV>?DZvIuLc=CdJg8I zktUbskJby_6Mn*qeyHr5&VqG5u~a1@>lAt;Bb!O3i)m!V4*GD1<`Na{H6*|J1h4PL zIqG>NO@Y2S&K|xRb3|$d(f=%ZNYIY?1-JP($Yc7dxahm{elKt8)a~9ilb((nK%-Q= z@z0xN+udY~IRhef7s|Fjj6dxdk0>rEO~Vf@o@pj{akk$8wzAn}2L-!&!FG5Ffgod% zUqN!+`76f`_GNO6Ha!AM@M;%FvRGFk=oJW)LcewZaR>!~ML3TB<>nntkG;;pJjIIBz21eqOgo14q^t{0s|1yHhbX5E?12$kR~~xvu{o2y1oBy zazBJOQr}#CYhKtK-Tm;yInE^~$RBJ%6c|ur5Cb1=5-wcQkpj!<*RAueux>lKznjb% zS+-m+km&jM!sFui?yZO|hwYllsogOgQ~9>!zjQMK0u=t%k1ORcw=j$J+`DqjLf#Wk zhG2_?hls)l2bd}Et#hUiTW-EY-?)EV=E|Hkw)RL-slODj%4>`Q&5(IB3RYz82DX8h z5(>A+q7(&vZhpV>i1q!c{m(zPvNW38U5r*%D_X4d&Gz3kJPT*NWDWXa$-VeT$&y~B z)msHJU6Oa&en!;Kq?c-;3Xy^GY~n|Swf+Kv+(Y3Kw~MT3&5`RzZmx>EH*_Bh6WIz8 zOfg6Msho!X+7eWFiB^UTy^tM=MVMiJ?O8B3gI+p7@+&{;MB7zpatFyGfzk)tiBGan zpd|0~4|IRfGYfVfMiq%c>P~w6D*B1|)>8Z2>p{W%WUP3aas7~n=rwF+UhFF^9t8DC z%V|)*JaK+ctT^e+!;i8Jt`wQ)qqjX_C%$Oh5Gfa-#sG^nQ#o4^0>JVyVvkopbF}OR zX1N3=Hn@}td#4^0K5wgyd|TIzNxR~~3}z=ceQE{(J_0-0b9^*4C8l?a0p}ym)tNXK zpKGvroz1>I#+dt=MEq>>l6ub7QgF4E9r*5~q1L7!uo=!l8g(xZ68?*R7JSau9(sRi zNRgl3$&BJgh~Z#{`;*t@N4D%@AzO&C4|W%Ig6r1@*VXn(eY4G-Guof`2Hyk^_8Plb z?LS{xjAsF3cW6hS7TuHAe>1=S&B8dxy${o~HgNpk^n60mQB=8vc?|dxrPX$$&(&hG!@Vr)_Q*!iu&~k4zPabbuwq8M*M8OU015dyVo17IZoRsaFTy zSUyP1xu0N;0EB~;SAY0AyZEdbltEGM;j-bON4NF^dKFK8iuEu3A+sO$^Zj`PfHWW5 zze1ZT^*!&Y*(NZ=5ja>|`nOO1ur zmm`~&uXs$q9+=c;+tYkBfgx6=0vR^P-Xsaxd`DOcn50U6Z=$Z~PbPwmO$)+X9ZF$mid(1F3Ua9YlkFqtsolNC(=n z5q|P~|KX=1sXj;;q{19n0SKHCKU3DgJHaXrco8w&J&oyfU$ z_DwtJ?IBt?bY?xwP=SQ}!z1E}qulP7o6KTWi$&bhqhb`Ob2UcePP2T>@JRH-A&IjS zzMzh*)>@N{cs==@h#p?5LAZYzUm17^~1@FSw2XO0=X5Bsdc9zNL~ z>5`c@$ARkBjj`h*F2x;p8J$0Mhv@H%KiddwZ}ZKq{|ng<8G)YT;4j8Xup+|7HiT6C z6he`_;^MGip(9caY$73RM3MN~9ph9n#_tP1JtY+RXC(tU^SN86H+~9j zA?keo?wJ}r7}+vipV9o`gKVgOs`>jr9v~6RuxdlRO?KK%G1ltBjm%P(>yZ;UA>XZl zYn%*<6N*WRhY+;YdZnM+6<*lx(a>Vm#hD=I^1qAlX>?(*3Rr3KwE7^C=hCP#`&?eI z@`tGaoe8DO1BW`&u<-4v207MB1*Jb?auVf!@gi^oiv_Wkns%^>Zu@o6xwyWE?W`lM ziJd0?i&VI}W#v8_uznOZ0NodA=uS4q86?H$H|2D#4%B^5NF?Y6++Y~QRm?;L)GzyM zS*}KIB1b*8*s_K`xyw^E4r2%Z?BeEiNT=eB(Bu&6h-7y`+v2FQRj<&UuOHU(<`y!} z7XchPj7U4oVH>{lep5-q8bP1zeb_Mb1JNn}YD)jZF7$1s;FqM=*M|(2GI~4n_kvp* zBTtp2lN_(PifKmaek~j>4$xa(P$UFOz7=ZLHHg@LO@O7uzwqeY0Y&IwUZKweAy}V| zW4J4sRcy=irOb$8pf9|?0+(yR9BUhDDC@6}!brm(M6Qz)=E4n09Fpb~c!oz)K_n zfG-Nj;u@X$Y5``Re?hb&$$O)U`-@v!`R5qBzveo9J_~$}2g83i^_}r8FBT3;`<>6l z2nc1BKlImD;7Lx}Wz>so8?+LY%UaQ?xk@->wyA&|$p;_H?_K0S2q^BV*gVo_<^X)hY1-Bj(5Se2FrzB`N zhHSl*WZRYaShIQQncor4%C}bx2rT)Ic}Cw4E(cv5jz$Yl(i2&q?oA_z83g!%pF6VP z@URrrJ-Kxz(8a9qq}_7Y;PYbbs^RI{h+kV9)t`}RI-XjrbYEJQ-P7;EVmc@YXrNB< z!jExec`$EFyW&O*{gJ&pq4k4*sWck6q(3Emba7rv^gXD%vMwIJ_m7!HBffCx$f2C^ zgH?O)ukKF3-40QxE%KrkIVr(lS)nD_EeF-%&RGX1hC*ni7BUU+ z^=?5*zz1KBf(21`UpWpjp-yd}yXz&+taCgDLmI`7I@L;(P}uQ|qdzMTa=78hg^|}? z&46a8y~PB~zR9NmtSl-iWT<>28bzD7zvw-)Ji53kGh`FBvh%l1hxDJUQOM-C;k|4T zcHsQW$~3_xx0KfFs(uD?1xrqdmuv>3;?IrgT+DF0v}kPK^;hn1r-Z$qfQ6%^_RRzo zJW$g+JDJm_G|j<}Qn@N%A9tEU6pP||(zO1k5AY`oI3RHCYSV9V*+8f1h`>>2_-g6>zlQcoOuyt^ z%#I;s1i!!>e;R;?936@90)?L{oJXqC6k0t^Nz>P=WpW;?{>QKG*YtKF;okAPM(0kZ z0$pz$Y->m;HoJF_9Nj;0P(890GO9b<$)f%l>2y!}c<5{>d`6C=`(#+oQC9~y;suqm z{U4?m(6-!w0reZv+Fw_jgP6f*$s}${+ST7qqOecU&HKOqxFCV;zK%)pzp;f!<%Xc< z!1lmY?4r-LuoAI@!MNp|2_v=@_OqRBL^0BAl2-}@D|4`OjoU>rgKOBr&!DL*G_Twe z%7{bQLFKd4m=PVL8ZHL!ocFrQb)6h_Ou%`>+BDw9RY}2;u~kmbc7Qx@0FpF`861)D z!2m6ZnK-+^&`~@y>=_~rZ#=#E)3*&rOX>PJ1E$?R-N-?~X`3D(S`0B1bic>rULk^_ zYrJ7&Qa8!bGuP8F>Fm2#gY=R(RuNL;g#th&FjUZrS%^ytWE28NNG_MS_TbdN>rIE5 zVV7g)D+;c>dyOi5^pZ3Dn9YeT`{|E6tJ&{;xFL|@R~Bz1YndOzf@t>nO=nS~*0 zF=)qBp39Vik_7)d`U8M6UEq2@kOR&?chGYzT@@suJkfY1X;>7Nm%S$iOgda2pBhBP zjGyr^QW?EE9ikONBQyDNQ=Z9w&Hy0nncjT`D1-Z~Js{1OpFrs@18uxQnM`k}M2$4C z-jYK<{h)Dih%$og4(Y#N`7Ix;iz?z}Ux|35h=q@dN>&HMH)irr8L}rn%&{JvR0CSI z0?Z+_K5{oKZ*rM$>=hC7vjT@(~Jh3;2)LmLSu0n7IaVL<2oso5XpHJ6J|} z_>>i~u>xRuQAyzb=ruC}>#WYj^RiPhn(tPGJ|&)9WqE%k`^w1X$AitH!)X88ZV0NK znAn^X^b1G*tw2P=vM7a4>ux|i@(qT6ez~l8NdU;M$q?S*iF@bEi;;jfetkz8Y(IF~ zlk6JbRnZh5;g@;uiX5X9a}hY$0v{ukn-W^zb}?2B9f?Op+|p-MC%uw??4 zN{NY5R9--a8@ajpOKVQV@X+KHpqF;s-3FgoeVC$11_Y}`C?hBJFhm@jcn>sqHZBX4 z-QlJ*A+LE_lE>aY{CG*37W2XY0f!oPvw@Ge$}=YR2|l_*jahqAsD&VJ6Hr+JApto; zk`a}Z=Ud*Bz;2R2!T|bjoybfb+jNGhJe#WtjaP#KeE02E-dwvGH=3wGvxHD$xC{s+ z7y$b6uX--Pf>Enqz1X(}vx4jFG~{ZBK=A4$j}QW3&&z-V?AS`E{0Rh$p$kxF(-S|f zL>7n8N_aM}Y-2K4mUxi#0(*OA;Bf?yFp!aettTsst`Vi?r1-2B=yHZDpG+fYr9Sii z#Nt~o!#Kr2%YY#mFnq$zkPjSMHe-a9de+o}0R1Kj^%L@7`8 z$k&@}z?$2(AvkY)_pTrJ%!QYq@QETcn*tebK(>v4j9AJ=2mn3>qCM~eEk_aHn?;!@ z#YvdrX%pPv`}*Ry*gIT+$>IO>#`EI#(zlDpz@`ZKY)+2C^pE)t(efj?w*fUQl>-bB zX#wD-A#tSTI1-%SKfyHvL4?fziz*DSgw9hzrV{Pegz!dVOc5X!WHn1&)c`UH3V^y9 z&X4lkU2KImThN7oA#(VmNhq2*f<`!p?luB_qLd1dVSyt!od$qdNuUFIEtzqcLsi0f zZ+jKc&3@nhj`$$xKDV2ykqn5Jh&iC#7Gg|L*`R;nPBZ_1-z`WpITTUs%W1GSY$LSr zK^TJFKdggp2~sIIoC*TY!-D2xbRDCCGsdey?J{ z-r@ho(jIV|LHE0Phz|gL$h5Z*dKtZ?BBrN*wDL^fRYgVhC;P9h4g(pCsIdn=I z2_8t7%B|DF^#T;?mOuy)(a%%;SJc5P;QSg{Qn$c@eo{~vVx^xFO5Pr3yqIE6^5Eu2g z%k%%O)K;VgI_&(;W(N2eD}T9+_Q#g?skq*$PG%o_Rh_bKu33koRSlzH8(#oK5lU!M zHVYZasMQK&&6W_;siR|;irpH-!n+98#@AW139jS2AC^ku!T_>a=e z1zvIj_LK$vw8-yhm}~%m*~l$p1c|;W&?aiNHc1IodguNVYLlt{=z5DP3CNe5Z}TA9 z^9Sk*Vi4s_G?!>B1QG2aUT*-a&F-Eot{%z%?=Lr)@ltKgkd*>l?GPh2>1yL0Om968 z1+A7`l3dknD$c2LKXInB_?2u3&6m*PCbJfn|4|mKihyGsST*3_ znjv3Qt1ShQea|ud_uyKE&Qr|8XWaTn+~bBqcGa?2!+tTg79~Xhs3@2;1NRfoy%HnS zS<$a$U3+0=`x7?Eqw95#P8hG7eOda=4d4L#?R#^_t{LA9*i!{p3D@GQR(?kdvt`6*DV)> z=r5i=K!=FppT4QIIu4dRI?YZyuE(%5I?WP0v;dI`5beM=JpA>hUP!hB5VZVZwZae1 zx&&^%oR7IS`@Lp#^{eP1|33F*%NIl)5RE`wR!b0wdvu7C89Vej3A34`r7Rz`2)|)F z>!K;%W$6>i1_~8&v)~tZN+4U$EEdw%A_Gex=s(W?b1`|3B5p@jNUk-C;%HaK-ak@Z z_9-vO4(PdbYn*YZR_i1ZTxDXHMU@`_0AN6=mGsuN9GqH37?*mCD4+5A59RQ-h+DM9 zK(fBeIHC1XEe@#h((M2QXcp)Uh!_@Z>#U>cfPg#Yzf!a-a^FpjQCII+0dUq|{wg-l ziyD4QnOOOSVvowscQKU)u_v2rjRq%AVQSq*4hOjvT;iZjCW`$*1Lq(6rTD4SlS_-C zj3uglB;doVFcyuS8RNveJJ^36P@q;Qj3V~Vc)KkzftSs9`Z)Bgj%}575r8MJEB;lL zx77cY{Y;BblG10WLP!1gpPsyCHRs8l7;Q4Cr`-8iy%r~m24@MwVYNy`)f7^lQSRr2x6pwNVtX-t|7{ThDbq%Rs)^e+8cbqa8Szr40+ zqCesygT!|8fG0)37YXh#ggTWAyAIW-{y;vHihdP;&@&pU+88htwj{+sTvZTW21`Dq zlFdZ{v?TL;|7j)AcG{;7%}*^yef#;Y)SVhox7@Z)-hVgm#-HbRNE+y~YXb*ff)PN1 zqOww+(dqUypjlD*^IG+FUF*>x;m?9S&fZyd>#lVX$C$ytXNfJwR7)uOG&B9+ry(#j z58B-wuxB$4UIxii1hzfj_Ve%*-}Y3)vj<2}D!V}dRLIO_??cxSUf2Ll-s)PAT;w1_ zL<+naRI|A~gJOnH^qs%4VS4nLx;nMkJPq;fX{U3o<=2uQl0ml2RPLxRY!vQ-qlEXy zPLeZJ{3N8wIirSBzZP<@WRS`2Xz|lr^rkYChwD!WjA&XMp}jB)12k>cN=tJ?9Z-%_ zLC{^l0f}0RmpEc1GyFBV>yz1FjLQE?x(-LE|NsAb-yP0AB7~eRC1gb8j;y4RS=Nc7 z>By+8x2`ha$C?lMaDvz6MO-vP^jyZz0~ zr#97(Ow)8`%IqI~@7*PDGGpcGZ-E@Y;)2`+-3dTZpaHl#m(kNF z&4fwk2Z|*+Q*S<6o8l=yJMrv^vELliKyHkA{D+H+(my8KWxOXl52|UV^Wzf17w7@_ z(QqEPWuSG;Wkq>T zVyE1|By`QyX?G))b%kRwbIbj~W<<%CFsj7PM6>s!;u+I%!am6ENXB1+9C*b+Y-91# z23leG|Bie7;D#W%%mdfL9B8RiS~vyTr*{9k`|WuE)Q2!0te|aHF63q^`_10JC{Q7t zZ0F8{elNn~k>xOAPEr1`#4&84;(Cg=-<;- zZVT=V6@r^4MAFeF$#Ju(qVQs7a5GqyH4l6b6ZempZn^|W1>8}8iGRjOI`>*hFE?rP zEk~p&s$OE5`l2??WSP2YZ4Cyc6>9Cnt_qF_0jG`yJIGc@DE{ef1R|~&{Z*P5bom;z zew*<1NG3JMHA;IjiTeA6H?!X+=G0(@nH${0Cwv1-Vbixm2jp@RNlxwe^!%=0Nok&p zzmKt~362ROIZKC9}>NB#3 z4Tr*7q)i!N2xV_0NU=q?LnJKP9NW`_vlR2HH z{C4O)#?`L`@s@0S^68TrTHWiMu!pA1>2Wo$gp}fACg1FO5Bt|k>VU-j3tN zve?6Cg?fh(s0WA}Jo)sd%&0`g=Q3XArFFvkPSZ z`Pv@wRnF{vDp%-(+8CI7Tdn0}M&H|52zLofI`-}HiGF^Ny4Tymw09y3T0;W|r}AZK zodg-deU}+VEW{{%;u^cIdvf% zI}=B==D2B@KwbW;>7dUG=M5Kp#dYdUk8P7k>alsXrl6>9DxXNew?84^ff?4}`g`6^6&i7IA*3*OH6}OM!T*1@Tt&==(NNS9b9`u5256qS z^}Lctk-87QZ}IFL0W5>k1byqVYM1QFD`kgRUZz6ePYg&2zb(L8d{XbQq>2xN?v}_A z=M`7L$yvsTd-1>{G%m~K@6kPc7|4HZ!;DcP)*sB3$sFzJRoL37E6Bw>;{>eOTZ;en zE(&r{_m`RNx2*g{Ji)ue9BF}#CpY$>&FUBn8mxo8*6)=wRzTdhO&WTZ^VXfds@gR` zTmPy1;BHhV4~)3L^I8RdNy9uXBJ4WKGY2_K2l^$a{yFn7sYTZLxa~2?mYJkStAE}L zmW&tj0z(|;zP9RmG~09r^WoF3^?k@u^y8SFEsukEjvps1 zlp2*n$>1vfH|w)GbjX)!GN#t@)GL(jKnaSn52s~hHd4NqN1*%kg|5QYSZxuiqjq8c z)Tpg^!Kz7CSWBeWTK;#5wy-s6PsY;gRppK5PJqMU&rGoYwA&OAB+RXTVzmSC1 zE8X}{OZzfE-*PZ@r=PE!UUDpx<_x>fGjG|93=BSAAnqk9<$zFmn-#Ri2AIWdVXNut zJ)rA+DFg9fLX<>FQZ@apS=ep%>!m1g^gBV_b@!1IT(jee6NVO_i2^%C3QiK%;VQ_r zjx9V~k`l!9-%5ISZ+Mq!mlSWSZOL<-D6EqC9!}2j8rG=1Q%Q=Wo zE07+W2Tqs1$AaD~X2aXLf?x)V3MgVq++Jg z_9-78d3Z42Voozwf;`)Q8Ju6tB#N-M#|;OF<4p4$b`&&NUVWyK|%=*^q?7i5VVG?9R>*{8Zr$sunmNpdSb8EL(6aS_t)Nl(V55$v9cpAVr~1_NzHcuq zuOjRwt#BXw;p-j?!ocWSUC~B-^uK}wan;iojA21w;4JlFirg<$J{c87^c%FhCKynU z{`Y&y)`;CGW+RtRBo-h@Hp1+`sNwe#ovn5&Dka?Cq3`}lx36y6Dx33CHvIjsitZk- zjHZd9j$p9Dz)XSi7%d2F9-dub<_Z4X9(G2Nf|EX4OmDog>kk_nyTFCEd^`SC-}n6D zX5H2AAl&0uW~zQ{Odo{Mpjv0L!Y!p%dS=r^9~)b^_88kky1YXtu|48A)L8^AQ?W6k;AXhH9IxzXaQi8 zoh==zW%PpDy0yZ8Ozg)v_1Df=?>xaZDbiUwN+xiF(QMK#4T}4GYzpCBb;aURJURJe z%;aNdew`o7GGK};Jh=@A=4oQewpY__Cb}-3~Ea+&zE(2tI>{ z6o{6GS>jVopAxtS| z*m~y2-BXKS{S_u(#dt5D5X6jp8Sr(TwU$-#d)UsZP^yqzhvQ9R@xapqwzS6kDaWFT zc1tW~*vCIaP(iue8MTzUJsdx^StB?AJA{G@j$_($2`QJ4EFGO0BKSwIG|!7&l`XvK z!nfg@LC3(z-dGB%y0cH0V1&&gxL~OaE%P@_@3XOAx(U}q|2^@`n(1+E8>3#KV+#DD zGGo*YP?OM+{(U>N6I5@b@tOe`*`~C#Fp8AYhcwBVlQ2i$9W4_Sjh*ERy@zdWauzCg zTEP4~71sD3R`d;aP?99c?_M0WNM+2Oq+6$5ICIMC!ODGBaHIx>2-pq-0bl+uT@hgg zpxE{)u5jhlhbL>^(dt|IjVm8Z72aqFhYTJO(MmkKu)+=o&iYORt7|yLQfn+J03VBj z;r$$BTU!4i0h{6Ve`(Pe@CF9YuG-Z&WsRIRGxcL$Viu>_UHMK`(qBa$~i2vk3_@Q4)>Ca4_gRjZ}vswsOo@-SO)%fT%nV39 z%g#rC`yRz==QUBbYv+`?cz~a$=j107fG1){&i8HICbEm2ytJF`y<=f9u6*?bH({=2 zc%vq_JDWdL`zs0%kCv==c1Xw|^D>^V=FFMoj%?B4c`fIIDPfjMZqtEQso^fER#Q^X zuJq>(Y$GfRckF3oK#2H+Wxm_$de^#3-7(<}7tW9JaPj$@MgH**-SL)$fKC{|jofYC zY?UQ=bk%k5)@b{b#Q)i`ua=q*yIaBNyrWHhgsL@h4$ojgRQ-9`KW3a~<=BSO4|!Wy=CJ5wxw zO!F?Tb+AniU*!c)yIolzn{X~Rp4*SGug_j+i5(l0-iu25BXeNIr9Y=-_qw5N&nbZo z!sPT${mxM~noj-79`Lh!_#hX)ZsEbM{Xr<^CFRHY{S^A(HJ_EgT2`ZV^w{E6&$Y)z z6?fg`o+ZUxe{a#S6v~7+3p9k^V$`?=Aw+=o2u$piQoS1t_#eTvzefMMKUco9$4`Au z9oak+xv8Yj2K%gSL=a2mF=yRfnrOlW_F8%tvc~M(or{rIKWa)?RaJ;5bQ=#c`CE27 z9gk62;TrBoKoH2`$ZuGvqBx*v#>(jv3Y9Px%s{c&+U!5S21%vebH{z`6v54*K}FJm zS0I8`E#0GtAH5(U`JzkzTSB) z(V$zL8MpOq7Cjk83SfR5`mB-Pz8Y)ODjJR|8&~d@-)XW+~VYA>}=2#9+;RVaZ=wmI9&v@-Vw}~KS4=j>6|P3 z)VML(k^lHjBg-W72D9z&PUqP{Z&SKRCe;{prG^KdWZ&e3zkGMgDGW|jaAm&45Zh__ zj^~RRZb6rJ&q8C9rDiUsxV~V8Sk0;0x9Dya%3(b1WRri;5gE)&<$(v@RwCE|ZtnJ^ znYlnVZV>R@mGN|bCji&CcWsAMpUNB3#b~nc+bWy)((hn$wd{Vqyw;l$azBrtrT26% z%F7L|rl$(NpS6Wqfdr1y&2*9U-_3e*pz+kU!7=9Rmg|~b8lv{h@{KBoH)rZET zt2yN78XCyEl63@tKGB{@J&cEQ@egUsbJK^h?^eDMt3stz|0;xcseEJu=f9cjr0T)Q z^C)89Jp?7|Pvr?m*F3Jp^B3>f2fj1w7|zV3K5<2gVh|1?TWup`X?yIRrr5VC*JCrB zKzOOcHKS*3rZXwV*@)IHq;hR$)DV!kOR6m)whA+84pafxhaVp9=2|iQU6Qm|>tlDD zMk4TJfcd-yMQ~J-iAh_X*D2h3=e{18&ex_Ail`i*cV;0L)nykt%t6VC`xuh-M7DHp z?qC+-;*FyI)qp6!9~OA;nk*rI27g=*o$C7%d;4D#KJP&$pH|Y$PT6aCCc@5*02CL%NU4-p8W@OPiA%|ZUgVh zqijUkEH!*bJ8n|5K^iKTo-z7+uy&Gg$T^Jhu6O2);+rh~*Q;fp|DMsWn6Mtx97mxB zk}~s-Kb!cf zw9~Xe6+}qx9>?R|Lkjm!NoddW3V`|UYynsZ*kB8Ms7p6H_28NBsyR923I*4V7z`~g zaKG^=uU<=Rh~Z%FRsVd7j|*I+jb+ydr0)4WM+9i#n`sO%i&C?nZ7kSeUySp~zg|0m zMRX-@4!eJLZv03Ig>(pC!VfVyA)tn>Z3~}R9##`^2zPJ%@}gzj`FP$+e*5+C4-#KO z6Iy@n9(?!o^~8cPF6{d?7w}79Ys93TCpcwR2pjWLXoM4NOkLBr(mNR(b}i12@h)oJ z$nUDv`N_w_alb#_5G#f?jn)=TxVSGzgrMTt5fUuF{zSO@c?H~oKQu=Bg{BY`7gP{_ zlCx*+WiO1mZ!NbvJl(y(B@7(t*gcFzUdw|ra!IPEfj~zp-iyIQ?gS<&#txy zkNn;zD`cC0XP&5|OC(-aHQ5l?ShAnINO1M8QI%|c(R?c#7L#Ta#WMQttXE`>_sP?2 zAuhfILoDUGFxrSrS6PrUZ0?e8&VTX#PZXx{8MZTQLlis@43z+uzd~$3O?EniMTgz5 zE8sA2Ada|LSx6R4Fr9zpBNcNee(BRqhV^1isRQ}HweOGctMN{lV-;l(W2TQ04zC8 z5$(I?xiW<^L@ge-az17-__a5Hp5^lU&&$KRbz{mG_JrAazd5HsyV=tvI>N!idOGe2 z8<4qiN=O6)BbqvP5Y5L9J!DsP#Yr}OM4u}aiTp8IQ}X>(bmG3n64nSb;GC=}+CtX- zNDQ3%hK(pVw^F9K--MeG_M)5mqEBsioPEuTE;@YYt>uU${gS;c>CR5|V2fx{*Pono zMelhwpbJhUEV9Rs4IjT7v>Iug@vKnr{90)gm@#*QGxh z=$bSfCLk~Sab8o1-+OYdB18mgEaXjgv*@A#aer|=lm;c+luLtR$B}v3s0l?>$Qtha zkbR#C!Lt*4C1E>m6&CmzTe2)Q<=g1?i@0qa1Y*;)Kc>6V*+*zT$Gk(R{9dZK2pTNa zu^Mt$?*-FRPMdf|_3=I7rJ4FDN#LIR0eCnW?4q;+fi0>45<8)p>Wdx|DmJdedE;YQ zG8-C(^)27x@RpOGSn=^O*%|7)e2zsG$7Lisp;_b{-m<~Rim4`To-Gdix> z)Z($%6@Y_JBS7uTD3+-qV+S%dlC~G*r@8M3bF4NWgNw!*?w`=R<{qj%$$NINvxuq; zYICWQ7(9!m^GF@7w%n1VO(Bulz z5{~Zt+}?R`?s7R_gV&o=xGgw8bnPvn`dOu~r#8NPiB#R{tHEy6$Pe$+N^vwc8Ms?6H=6CV695Ypj4BD4<=V<~$#5 z+m%329b6sz+`V7wy9>gU_yj#}#rc}^nEP8`O-ys1_tyPT2RRm@QXNDAADa>m!*7pR z67b|jkGopN2`Bh5>i%Aw;iOVb(~bMmX?Wqi4OL1FE>-5D&1e^B-#)Gg6sT<2EiJn( zvwKBo!_h44F!b!o*aOU}UudAPrBB8YMzm|((@%O2I;T0T@uI3tC4aTTd~eQ`@(U)%=xiU_FJ_#MANKM2p2N+_miTOqYlxEuH)9^g zZaV3d%BAb;bBo&$f3D%~?n6^vR#4^ELc{FBY@u|Wus~miMN8JKg;D>n-rN=MjKy}# zU6G@j+lD)b2?*;u-TO5qB4H{`QZgbu2L}8yzHzO&(N|M#v0{PO#R?_5A#QL3tHO2m za=x3~oU)b?zV)SUQ=)X8)MFmyEPY(pHTfpecEW-9qq5xDPZk5(sOtbPf-T0~x3p}c zk>M&2>+Tb^wuT7+m%b9KIUlG2Nn#YH6mJ4!D-zT)rm-0V|Tbk*eZQ@rRQB zpw{}A-%!ruYlnrYq@nk2-+UH=RY->(@?S6&xJCS=r?QFXiQ#`B=W#hyd+WgB1hH1d*OpTzPWv}a8g zA77@-@~K3E^D+M%{b}axweQgpO?RyW6A9v|?KkL?-FrergL{T0 zEc^7q?l<0KpBG&rY|ul#{T`UKZn26pJ`4KofS+a_;dSidqHj#4?d+gm}&vBrw;TGJZ)BT&y{bgeIWQhV%LsrdU-=9P z;C0|8f*K6j ze#&CZ0X)b#3C*}bhB+(JjLxg>+@SXhQam5V3asZ`CQ7rTj{9T%{2szAT*ds6PEvmp z_0^ko&&UPxE$c#Df=vvlUD!{aO&sgx7Oo>u4uFKdZ4Kg5SYhMes9Z%1L1^%-i0TO4 zG9XpeK48WAJwzgBCj?Xu^5r~d+0Or_8rS1sF8H2R>YD70h}$SNukR{JLXj)(zshx# zM~K8|m>q0l&R6mEa)Wnb!<7xa>H`ZV@0GjG5K6a#Ov6}duXtW^&<3^|Y+)`oj_tUa z6xGpf^>#Kgo+QMF%oEW#mGfNJA8UD2RQrE;bl!iKS{u%maG@NFhuuF*uPr{P=U@{C zQ*6Qn?;)%DKtx#)80#wY-vNEg`5iPOyW5X6P0K=M?lZ?Jh@0T1WF_HgS|b0VD?8;$ z4#IufE$Kq$`zA{D&3KHBmRgr`|8f;R$+k8?nIKyb#XL@i^cRI+&K%|dJw;S)ppIRY z#hT->tB(Ql7fV>~n}NHEL{RcbSTQ1DFK_bmt2jZFl6KrXST}Yt&Y@oR(K6I>mYXE+ zBD4R*-W#&Geh_Cq*_(kR=8^58*{tDxh}@LUhmo^7Ln%W;Zykt9Cleg+zJ86W5Oj_# zz>$5svVihNOf6XSZph}ZRLiVXulfE(rfIceA z;H`g{*yabipsuCJBJ0Xfn<~dmIurWs9;|5W9T~nwe>C)c~%W& z*zLs?)2^z1&XVEu{Zx&>C8P|FyS5^En%hI*Y@JGxO(7)1QF5*Gu9TZ+(DZQLx1~$Q z%{>>DUnF~E|HkE(?tJVliMfZVKt$W;Oi^&mBSSkLBARym;EIo5;OWZUP;Kfjj7%2c z7N||-#Rf|iw&mXyHDNtL#dgMhLr>j;{;&sZOFu0aB6eTm|#ADfLI2w9#$ zmGTRB6Ib+_b8@^cG3Si_@y0tGizf{{&^`8ZETxqwBpJ=Ztu0m{1ma{S*)V7Pmw3VK z&SP8`gm5lgKnT;(A&2EcGPXUnNP_$YwkSW|JFmiBt@22#?H{;dnnA^8$z|UcJVbKl z`hY|g&=2WkH`E1E?OS0Tt9yX)WDN&;nH`15&?W;9gpY>j&;AP|R zw+dy=f;Y%wP8LrzLZpeEOB^%{P%BxUj92-9#L;8B6fu|B4cu>lM<{jP=iYE?RG)KS z)a;Y+u}fd$&%N1LkML(>$FQ}~L(c8TTb_udW5eSx#9VDc%dW##URLn8{lKon8$;BS zg`A714G3mH3XEq<<##xABU5+=33SDhO(_Aq`?`T5OP@{DE{0dZ4cZrHspPf%AJ?Se z@#X!8bladC$__!6?edN$c;Ynf9&mrBdXMY5en=$EXC56V!!p7K<}Vyne)^~NaMI_7 zm@u`0e$W2J7oNM$9lXGUdW9S4Oxi>EELSwG^YD)f=I@uIZ-df^ z0&+v-8!)d-Qz)v6|E2@XDuw(OBb+w$P+!G!{Mi6Z3qCgB-IC~jAd4sg4nQN#2t@v~j5w$6a>L^4HiP z4of9~Rk@AjEr^v8*1FX5?p#}qYc_QPPB+>6_JGl>xsH)|v@q?JESC?yKoBdH=U$!& zf$?aML)E?nL~wvB*ErvAL^1AAdRHtGQlj0j=FypQ++-cqA8+8%Xt;i)|DcCbEA~wO zR9_h?W5&8GwpjTbp~9lI;C3tz`qj%yP&lnVawP-fbUKn)6d#kqE!3^fQCxpZ;42VT znnWAh1(JA>a$3gc+>sM%%^8ru}djWm+P=&S)6!(CgHnYO{dGEIwYE&k{4n?7# zmC`3YWDU>lkh*#KZPK*fZ+o_c9sxBmev+~HPY}!Eg+E)w(#lKj@8ZO)dVdY#&C`4^tb7SC$#P}7SBQW9cY5`S7R`$^F7kvyp5DUS0{WPJ=V9fE^805Ns% z`@;`C#$PXTfzG6ozdml!k9#s0r(X-M)}_69UUu7&FXVJ(^?G$hmcp_d!aM)?BN6aY zoNwYt$PpC_?8Gagu5gqmx|VQd2!3pgeB`uc{((@_jUN!4ErZ2iuKbsVnS1aOFC{om z5A{TT)8p^`+iIgVuKDu@sz)zp$4SNy_(qYE^KEf{!bB00nuW6gg$KZ5T%EpNhS^2( z1~&^>%B2<}f@abKc*z8^>%P?I9trmZ5qda!lK=Cy0{gXMNSJ zh=yFJfYT+$Jc+uc_ER_9hNYxF;Ge4R`9b=Vwtyj4%!QP74#flaYQLI%2#9F15@(g4 zrty3jHN~6Zg#-9we1+V^As{LA<@I3d^T!wXctCM&_N^}QAM?;W+e7(z?)O$&gk|{x z7s)i#8xGrx7#NKtWQ`!WK)YR_NZfpgW2uKwQXUn5Eh%3 z_q-l{5+m#%s`a*=JL-JLo&srr=YlzC&0lnmihi4f73XE`)B(g>>pmX@2cepG!}(h( zW4B|B*quu|tlT9@iOz}eTaNBUqVwnSJCcTg3;!os3&Yh#ic)z#{hu(dgjq0s^Hax3 zv#e*eW9zempD#Ra3y6=d=*2r<)4P>oH^ct`spw_#G!-g-4~b$c_6Ng%U+b(`kWhO} zd^)$F6{HfL$e(|eW88-H?zr91lUuN)+Y%F9tfD)Zc>6cH@o25Z>?W*`DIs|rtPOR1v02`MCA^MdoDV#rltNYk5y4|w9M=K5j|2xkmpLv`b$T z(+d6WIX3Z;H{PW_Xm-$6J9Y2%cRaxSW`BUHQs~<_q)g`%uQ_dQn;;gZ_yh%aL0AjyN-B!NixJ63!ofME?T2B$ti3mH-j1 z>DdZEE~_ik8R2Bj+#G#}s0(5ZhzyW;_q%Xfi^nlf%ys4qiS&l%f3q|VjWgA} zU>gewaB%{3OxaivLeaBQ)84jb4tek~@Y-p;D)X?FI9b!_YeciiR|-wz=HERwS_LqC z2gs1fzTJx&H>8?6SH5)mdw8yS3wNfkD9(HnFF%VdG$Z9vBJ@k1R$hTmsL7O9paqPZ zdzX%537K*!cUCD{X?MZ~A@|!RN_QcSD?@`0I&64heoNf7L9gbpNml+d^d;sW59UIW zXZ!6(YpcjmhG(Tq{`vQUV{d+NVdwB?Autf zFJqm-Ebsi^-}~YHbU$C7`#!&OpXEB&Id_`1r3o_wF9QGo%r{I8Zvy~`@(BXyXei6w zhgCk51>$RP(*OWIAsGoC)Bte*`VB*aJ5jDX9kfw*?3*O7D*lc=T_Ob;SB2<`r~UrUOfJqZwbZOCS@BFzS-r+%EoaV?EWRI`cR z67g1dYa!guf8u?Z%zLvBIV=m!dihCr!UHBw$;Wl|6C^8g|Cw(sq7gjK;2=9JXNQ58 zM|${>wTY#QtD9QI-ESO2zB?sYJA!mC9wSK5^~`!=>5)St*<#_`^K9*w+ja8U*%o7d zc;m-Wr-U+R5SN9_@Dbo^O?EqCaVIzXke__}OoSe_h`iI|fkIJ&C_PSUx6+t_%~<-j zCrt`{P6_W^LH6#x?jXMyglZL8mbgH!o+6vLk@=<;E}xJ`y~dnIa33wm=bK@Rt^2%$ zn5f`yENoBA*jjw@FUsBa+teP2A(lCUXmk^=9dFA_f@FZF1|Pxv`qWwQYbQ1Xq>^tW zsww!yw$O&`HeC9|>S!|mJ?a;HXeec^ClI@}*ci&(!u{Wd7AzJ_!b+0V9k(&ZbVaOv zZES(mgjTSztDrC<hwYGk@KJEG)1l3F60Gdl=oI>Rgtv;7#6Yn;-4Nr`x6LSP( zJvSFHTKH4!Y!q`lw<~8|W+1u|A^u$Wj^}Xh<4Yn+mz+crp?f-8twll9PutsN(G8D6 zjO>5A(^g$vXL?AZiJ(^^r*ALx!LFa|c_Xuk1>2F{sEKXXqx>D@|4EKq`yRGLQALz| zyQC}M1X{dvrA&&(jyWo%<^r2BVp~TdN%CB{mZ!-MJ<9cfHm2aHka= zbniw7fcCidF6{{fqNAykv>n9aTgvQdk7UQ8fz*$^sE-a@6?bfhyMA5&b6vDc_InrA z1?(=iB&MF~4#1UL~~!gpty$-|3@CIdy<0jr;*CZASpF?x*lulDY? z@NlD?le(vZL}rRyJVmC!O_Q%YK~r%}&jmaOKMdd`6)mNcZl;;a;Qay&XH)$%CYa8= zd$#pLnEB3D!d}IWs3{pJX;u9wlcH|7Z})AFtO1RK10Oeb@+JtoWGCdSKG;2_W4ZFB ztXk>dgnx)Hp`=46Cn&2A0O{!HNUU6WtM*nsHXKOP)zXP_{v1)q%&!-R&#UjV@-dS9 zo$BPK8F_r-oWX&kFW%wG;5bQt@O6iMaX;4Z`P^nFDj=*VbuQ+|edQwuC$lz(*8MCh z&~GV@=eS6xnZ;QwHR%eP+R`)!+-f1UzRI81E(+hS8E7K zn&(24Qi8|qZZkV~2MtIX*XZIlwyWY3dk0&@}-oANJm`i;NK5e!glpQOWR%F?Ebm78@3W`Q8{3ECDT$jtzt|FY3k` zec%39oL*34&SgF>z-B%!$d;j&G5f&!$DXES1izL%%gW1a#Bar~qUj$#7_o!+Y06eP zF;@95+`U70^9o$z47|BZID6fV)PG4=acrFCTSg?o3LGC;dUL(vaqK>hXg_+R8GVv- zh0P4qVd?QtEi}3BF*8)V$W0+au%Cwyx0Y&K%-a9J^TbRvG5_)(pH92Csq~EF7nol0 zvsbf&$H5*f<20K9#NUv{!Flk~190{s^?)tcb1iAp=L zS1hp&nPfDa?pL8-xdy!2e$=g&ZGs+>Z#C8L5LTg^OrdW{Ih48Ubd^1M;AH}`6hw&7 zzKP`0HbV|DdFNdB2IXklM%=h?$2C7-`8TyF?dRO1!|T06sVnhQo@4K>=KwynlcK@z ze7sf-ePK#I^GoEYk2b7Md^KEsKwz&o+5>!nONvd)txS@on3KHMON8(h#LYrd^z zC$6iFX89#mFQnLEG5;K4S)#Rb=SeyH`sgem^n*+ewA>K>EAqXW!8R>T|`Wo~8xexe=ipgo-riDt6o3H=!vz^5qt&b+R z8TaMh%8ARzo}IXy9}8Vc(??0)U#sn7PWhoSU{}e{?##M&gVoJCJQJ`gd9@O*5Pkmp z`ypi8EHo8h4Fl`JxPM@LIkF7P9PIYBLYKCUZY$eM59ufAds{n1Ke=!%&2;*O$oJ)l zv`dCy)qAOD4)-%)ok_h&Nhn3GDd&Z+|~4Uy!Qd zx|GM33*Dhfc3mg|kyJcvSMZgDthNN0zc49~;P&xAc;p zc84!h#DnJvLVIal7P~lLf@VhEj zt0~3gb_Y?F%GjbvC-C&$_CG$>jDLKi5VTN({Pk^#VKHNx^+QvZH8zm&u3psVyZoN2 z!id$S(@gXbRNMG1I^xX{_z9!E^rv-G8V^I7Q85bK(Jtby=vXD2ZS4v(tmSYk5ov&wAMLl|N-2g`2f2pVMd(dkvNZDdD7D%5uj3M}^WrKG_ zt*=wXj|n@ZqPg&)tfI5GVvS*=6+_x}aVoLLudLR3(miYn_AQkfIVBOH$zqEx5~MBfeDhFD?6Le^vWWWh->p zsW$;-k^^i9p{wne|01L?DOA@=Zk#-Ov^~96Cp2_7ng{JWN(YEk8v!(!NC{l1>KD=L zhb;FwEO!@I4U9{5Vdon20?H2!j+)+Z6(i{;H)~D0cYll0M*&dWZ;20GGfOe{KGCot zT@(Y1=vDQ2DQv=Us)A1x$&t1{gER%#Ptk~pBBYF#m`c_3!YnVS+d5z_;}?(bJ#LM! zoZov2!LN0v+xDM#x4D=|&^tifmku_1W9sUD#t+sky~A8&REv{~;*-;KJg+R>JL!3> zHj{35`!4D>7}~`W_h|mLacRVd+iy!AFvtBmJl{RdOcgH9Gf=l>&ytm{X_HASOZ|5L z#sF7?eGs=zD#ZOZyN>L2s<@`q@>Zn2yud>m7x{8(mF!h{{7hr~`w8J3BF;Dv0}Ue; zy#kUg?s9y*%x4bryX(GsEP`7+7NOSaoG213A4$4bV6iLGQ`#7Jee&+*khLXBj0c8mosBl85o3X^dbaT&IBj8zI z<(|WV*rzVF_>;2$N7mbHIa$kbQOUl^H(#Oi$12hm78R# z@sbCM<-;Ry%Z3}Y8UdTrd^cbUI|)-`;zHuWSNpSUpUj3V>@-HsJF_*{N?(;oM3joC z3+PDX##CNzO}Xfnf5t?SfVOZg(i(Jucf~K_u$`8lW z#db>erqXsn3VhctU1P42xDLO=&`wLv5I$&v4HLO=W{PMgtu3Q{69r6IzVdY!?jK!!g0BB9H^A4y$Pe5MpVM>wD7cLP@EMMh& zAdG<393dtaNqaAf##O!|KhOVRrVY7)&E3(m6K$R@dFuexMg1(9Z9vy;V{J5Wkk{K9 zRB#q{z*!JPoA!Mv%)YyA?vf`*Hu`O9xaU#(^PdVtnv;>gz(cCZ(7t?dxj{PvEW;qs^<9UrBholdik!(wxN!>Duax| z!i8ei6;m)GvxxK61gYCqaU{Mgo+`i;Z40&+NMZ)yFP*VMdeO!*h_?drinQ(!*!_P` z?t1kP?c@fp`}ScYFY0QmFi7Y+9Dtm2SY3sJzXIQ=Nd?rfJM@$F0++`j6)NK!%&%5hj6Y;lZ zcSUKSy=Q;6Y{Zb%FpDGqRtoxYSF^sh)4dgO&w2>$tz4zW?dDCEwGkXw#=J1YAar8x1-( z1Osm-vs_bCEMpM>VLPbEclSC=Bih3;5OfHB4-n7dyu&p)c}${AirD)2l5PL6MG ztyZs4!Qsrv`9D>)+Q$E&Q-Pp(1#JNHw8VO;_ zi3gybDtUpLB{}<~&&TJ3RD@9NhMgSp`bHRppu$Kvq5oE}rXc|WLw_bIJ!1EiVK)Ut zIDZiUqw{GA;`|rZxC`}1X0$JGQSHJ37ks7E9lk#?H zP)}`?6jiLKy8qkXZ7fP3`c zNF>Ym*(Div?ymxKiA$V68NbB0;us(8?GIi91k(|$PdbNeX(c#e>e$}gHLJ#u?Zp$< zNBGXIuLlGGr3x~%xYv?*4!7E0>re+GzJ8Hs(-BZVt@1B$;meB)ZuM1%W(hXK9g* zAw!wjEnpx8_>E@0@#LeNoC0@&DshOZl)p*XC$<2#?;aPKk27 zMa{@0A#ap9w!BpeSrogO8$ZBDI8d@YSk-)AI5fM=8DllV?SqK1@)5}#9IQN~L8htA z__g%EyYlJ5fPz2cBpfR#5SVZ*kZLVsQ3Fb(1R<-XqL5V_tGK zXTZa`@uuOZ!+n0*Z_w)0&ns&yE%z_7P<21mv)Jq2==5=)AkR)@>LwHr&$58xH1|Hn zJeL~oDQd1O5kapmHY+6nmr8zN+~&|hsQE)GLjA0$9q`&5X!n2YEHyHpAt|JA{GJ{v zHMQ_k7cTh<@>Hx-Ik7&;2h*jJ#uOo_b+bhCx}4dh?Dr|UBPP<6vbNdUM~f+_?!)-W zFA_I$O$O4p)nX$4%6@rQ+h<*#yx;%%td2m&yId@)#X1rm;s2)ELyP$5V`m>vzR&%> z#4|Fv^Y>DA@!+6iqb=H}p?22ngJ+5kP285qw9m~XYh!O=sS~p&2>wK^OB9<4o^X~h zf1=qb%_y#aNUaa9*H3^iD6{E5;RYv3g4QD~l<}dX9$nOhXIVQM5Hh{YasPnMfcRp{ zG71#)QW-#BpRfEA>acats8_H!D!r1ErOF1or!U#Kg|sC+ ziThKsHjtnKpF^)E8!4A}cjzwup;tjq!G)V@eTc)zS)aw6<0!~Gro&up*L^R^4(d}prkzVH?K+~OAqP+EsJt-_jL{c ziT&=wFzYuvpW!4EarAmHgn@L%3-{|KNIQP6q+Q1e%5o?_S~oTP17kNRO92rsl&<}D z`V_i|Z>^3E(DyD=MPC|ru)1Ou8gkWV`jf}`2U#095Ark``;tJgV8j1@z-+-#bCKkM zootQo9YkgVB9z~s^n``5tExHY=2&`L`$WhtV&;`xNWIz>dc-npHkFBFcl5m3{7r0naUB0=Vis|ImoXgMHB+i@VHK*< zPBge`^Vba{z#Hmk|zH`*@ZF=eLDEUNvkF5)bHVsGI|es=XVMVk9>VDWE=eT z@lVrM{js?0yRzcSw2Hpq7WIgTWhwU%>|8p%MCdgo`EuutzM#&}BbS-cGjC%nx`tk@ z(c*DFs~OvD5&#zgtAKTFajdW4(a<`3*V=)5!Jf;luyWfiEcFyQa+(mGcUe(#SS$l| z=$DXcp(oB=H>cQ%GJOn7fpo08fMRIcH%G=o$C&QwmTg!O4~DpIAub-h1s;A^t7b6B z0hyAz(ij(BT@)--x!2#Lt(pq)kz261t{IVDON-3l2#yJ12d!%cM<|OvcF!TkV9T%O z7|^KDiQ{nyAT_8AFn(f9=YD5**+X!02s!fm#DM--0Ot76#!9;I3?Rhi-~gE9y{7QI#C1+Qzq>o1(~zx`KY#y}`aw zI*fH68{$@v&~0{C5Eb{Zb|#Uq{w83e){TrCV?kL{qXhA3UqAoI38xjui*ev)OZYm% z$1wX11~Jh8<0ubhS=R#jh=@56>SQuL)Yio{Pxzr zatjVnPjvY#cg<(ir%qJy8OvvepQfNBZV=jBIO1>Nxzp&-Fmx`trZ(8VG}wzZ5??X; z{_E?!9g~JC<;ajz?-~F^c(UD=v2W^SZ&O z7RkRO|Lt5CIP&p+o0GsRS@i)}6#h=Nl1Pf4{DB?G<&m;YguIiVFmeLQl zq2(edzqp+UueIK{H(iS4sstPjYZpQo8KrNfj<}rN(3_VA8dy;7 z|3&3zkJ!*tWs*RAN2zbQ*zTGj{0Fh=tx)D}&ylP6xl+^DZ`~T2CXwcKid&~+p7zEf zjhoX5p^}!h-(QSw%x%OkuG;n*HH*L4vl7MdgY22TVVGK0DN=Nt10g&MUBgw}J$PjE zFmU(MW^W2FmIjZXv!;UUg7}%tsNE%r`-@sXh?2?{MS3ghWol)T6sm zx43Q!yb-vMJp-UYu$sJcpA^$3@ArH1BK3zDyU>sPp)h@xC&c*TXDA`PaL1Jkq6wGH z)l>gjQ%!Gwi#yxAOrIo*kL1@AQ8_g0E|Tvw2Lk%7-1bc7oO_53cK6M?UkmiVuN22` z<-$5?Nk;^;R*B~4(~-D)g{k-Wg3u`wLb|^HRMThImfuWn#WDh0xZp~?YI^VE$;c}g z8bxzy(I?S?ez<+c<+?-ViQ+-lLfXz7V60@0)&DIR!#d$|7h8`HDA)6e(k+V zNXSW|w<)OM$?aeAch&R3<^R!(Z^#nP>qN=#w1^`nh3^1(bQB!wOSIiU?sQl+!@te& z$!feC$#!`mek$udD^!ybL1_;)n3Kl7n1@UyU;o?Ryw}9BRh?q!x#IC9*pJGO&(c_!_?=c8c;ADLpPIg$ zz$vacUw!t1$Bl*KKXOH`Fae^}rFe%EmU=334vL!`zuu}2p5)ij0^+-ndRrldq;lUs z%5%=DMqq*Qw8OK{bl#m&cX@ixReo8aQ{+<@8gJh?+6X+8=Pbx1e;kWthSVfOPWJc3 ze2s%kEfTfdFTP1=*9T<-?I_rDllp@HKouAz4qR1{yGV~vZSq^f$bVZusV*e-`{UlE z0V?Y)3V+WNFAw!j`Ggqcaa^`)Ws-EK>zZ1&0ocjtLn(F; zdZ|h9U5^OwO=IV0$~_rUrxd%hVOdQVGcW{<)1W2m87?r*78@TTPu3AF#UdN?2`e`` z3?3P3s1RRnJAakxWg+b!JHk3vLR#5^<gu(*G4(*?zs|rpJH2pLCiQDP=Ti3fROk zzW1l|YQM%sxJ(=ay&c5a#Wk~&E=m?~z8z+Gm0jP0jSbxrzkAz3lgl03%8LLaIkqwy|VVEl#5`64B0hrpE>V!7{NoplMFH^66*D|?#vxY9ul zpLYnQq+@$s6?!cLVX(}%M zK5395wH-&V=^~&7>gOv3ci&{H{>6GFKs8@qh_SE0k$j2=OUjy)t#_aBxSbw4u%Uk# z1sWa9%V~AsG;L{ky`I`%zX#QUqEV*+J9-}@44ja3#`&h~w~wwbv1VANp@NO7Q-S{o zUz>+4f8@ySSb{ZJlb>@go~Fbtc=wYI`~gQ|5oG0I*+^8hp7R^88J<{}rn($S5H0le zpEcSf(kn)hCdxCp6xxY8)#tuxbKeQ zG^DU0vym2W*+Dh)kIHU51U|N-bQe_uR&%Osou8#2pIe#kA%D0jAxdXrFA>T_8tF%T-eaxG6R1$Yk$z?@!DxXw=cC^v7^+~Ewmba)$G+OBBB|I-8P zFjv)^7`sHA$t*?5g#IfKd)Oky@>R!kiO5&|mv##IPza4o)M{ylPv6$+NGXo1d9T}P z4%Ul-@!^%V>sq5I#71<;J54(9WGb6`Bi`N9P&58f)%VWqPA#tv@WGJu$=Yw!?2hjt z>HP{3+2_D_PRMMBdp#C{AlO}{%oV31j|W^@?^S_eu3r%HclGr$3-;eKQ}`qwdJ?lR zVjC=qAZD5YKH+fhyE~syN2Fq8YTlQ)4dTdNofM*n1}a5dYU$SSz|pk%1Z{tsj!i5! zTF7SXkw-|WQ6L<(UJK_Z{BnazOMyo=a`E$5KBs%p7aWRD} z!XI3J{mWaL`eijE;xPCa=DKm=_O?{!x~3Js0GFoKqab$AIa4Qe-v9@4bItZk%&=uy%!gq4+)hpCiOENq;8m2#7^$Hqq>*#%@LcR$i z$z9Fi3p>}?9%{U~ml>IUUh4$MW@lJogeJbDQP1cw`s4neWL{iDOeNHTpXZb67Z$!P zE9$^{Po+f>UE<9nKEKjX?*KA;9$}rJ>9{9_H4&dIj<0Ef;`N8@S5)!JC)E{{>xb`r z6k9@n>X88KGoe-;de~(oh%~wL;?McAp&OgN4Prro=wB>l4iA2;_>iZ)Zb1e|&BN}1 ziR3)IPT?>ocD=!q6VeR&rG#a9)ZMc{jo^*xJN)TsRH_GGO33fPKCyVQ#2S=_*sZ@ z(^k{j3MU#IpsIsXllbyOWJ-J!GIb`N5%S>ZQH2~)jSG()-s16JJCS!OHKUE%{`qd} zN0jsl$!=Ci2QsXW6}sOf0K2<3(MyoQb4KzPKa&x{5^>R}=1pNNkuDE>2Lcl^o?06shDb(_Ha}NS(CAvnk>OnN48G?nt*M@{kF7uEhEU_l$J{Z6$SfrI|=L zn}BFbZm%!#6))T zLw#ylGrjBJ^BWIf;!Z!6Z!*N1mC4OGVd{qd&u5V{W-T^!m@fK^F2A|qH+#(q!g%zs zTCX;Fn9wyvjybiGT6dq>Q{Mb){}1j(aRb!+IS(72H4C@k(M{@1fj>K6w2n%@vL}_D z5|#7%J=3#){l40`OLRj}>dy-Y1eL`~3X*hZWk)l}L+Bu&`a7e0gj`Ozo6r?cNKb$V zI@y(^!ANKA5({%V96z7@Cp#;lMf8NUDMznxxq6=biKngOw22z#{A%Gh1)8XX zHT|U!BDn>Ws;=kJeNZ29Ask8OXAVvkkBzM+OC8WqepEa9@N`8((bY-X@)+_!YMiOHg)%4M*HpJSC3z5N$sq> zkO}>qWIPcV(cWS<`Sj;6?^YwOKM&V0c=%J-Kg^b|weaq=>>5n3Av7#K_jz$zA*xz; z#~W?=Dzv`*h{%3*{+#X=Hn71nH0jyd_h`5h|9Ln*DqDvrmHCeRS>Wg8vQP~5LteJu z1yrfrUGEfLRc6a-qiE)?1Q1x?C-*~9;<^7&>^3~|CZ+K|J+5vPUfnAK6E0D&8PZ3S zDH9&zpx;j|1XrzSf`&I8;Wciccxs@8LF}JXhpzW`Mkbgk*(g-I`*UM#Z~&r^N`#iunALh0wB6DAqPG9lN-Z z$&{Z0HY3UZH=$@Y8}@Y#AwqYHUI!n%i5=6S9qC43^je2>K zxU%p`^pmDP^i!=I(UEeQp5t{^@0!R;q|}QidTjDOG-WkUFW6)_R0Hyez8E<{3w1~eINu;(umoTxyj(zNJe-} z)LGSVB=GWLB%6LWs3|#JN5z@)lf$UktjGpr=n}c<&?|EO+An#t2UT4SU_VMPB~Pf2 z{Jhr06tvA*{!V_QtltEc2PJ$?AJ27=WqTt_p<}ZBtW)4k{^xfqVSX(J%gk4?!zrx) z{p&RZZ4xj)Ep0)rkV|F?2&^O818v)7cR_{p=t#XHC3dyQzw-tF1z52GXC#}jAye>k zp$>s5_%8g!94syk<=T2v!{zsu>%j|v;2q%&rgQJj9({Ng;uQl!2+^FPBCOQMNVr=r znv3#IJdMOp*#-SEmjbDa))F|;7zlOYKXhrE`;X{E?Kr+rkU(8uGMafTKrP&osli$y57p@XRj8BKs$+fZ5P9SJ4!jVx)vhhoFFb2CQjELd|z+k^1N;_7V ztnudtN*Iym5gIZY{(c7qbE4Vur)cAaY?%-!*)cfv(?4!ZXSvUS(Omqm*EV@+C?7F| zF{Kj==YEBw1*c9&nI>_9+BF{1@aF#Q(sN#|^yvtsjL&}o`$*_B1rU%{z6wZ_jbM{A z|Lhb7eX;-G{v7Yy|5-l6(QryEcI;zk#?M^;v%X zRbo{H7>SBFejz~sV#X|Qk>QfWr$z7|FUKxxJ-P{dg$Rfzj5B;W;u>ZJEsCL)AS>@L z{hHuW0l70hhc+F>Fu*Kbnu36QQg3!JqeLE;Ax` zT0Z<2YhC~<#}?^3y3H>n=zPTwe;&d3g3YN*8p68?U;)QVPBr=N%hU z;?Uw#`25>nQAAdIS4{@XCYL){NrxeB<*3^b_}U$Dm7b2FOt~}U8UWL#R;!}8>C&}e z>Z7i!i5`9LNkvQ(f4M+kPQ80_G{rH)G*5F8gt?Wj0llpAV>=^caPlE-8Ni(d#z#4M zE5^{;@witRl%KlQ!M-aSM;wYs>umBjsDpzy9m3ncnUr@Oiy*rE(PF*|&WZS$CRWTF zH*Laf0>xMb5e`M*8a6}>)5AklV@>46ZP~KNZn{TFtlFJKhQwutFZ+S7t&**nZ?m#4 z28KJ>#B(9|5*`R*gx;A*mVT51q=7YVH@E3nT@Z>2^kerzxlir(dwI!HDzyy*sJqq8vTIHQ1?cpb++8$p zGfg~s(<7ptprQkHrL9YupuPn3T7YHl^Cz!=2zh*|hKnfT114MCV{?6tu_6!3MXMb3(mI<67^QdpeIRPaSJ_!b`!A85+Y{9wzz90FNoKPi2Y`qEOQPM&LnT zG0e4Zv7SJyY>~!isL!##_B_0+y4js=4jZ>NrF*5(Dvu2eveSAKWeA{_>T(0kWPD75VGjp zFMkDjOWqNCKdk7zk!h`?9Y?}UeEBwFrDAWsoLNunutcr-71^vQp>OC`%K-aoxqvrS zDv%BoKMf-m zzO!XO`ys-EiWioywXpGs^%XFLUcR0B>sP-WUFf|=HhZuBrKBoLVRMe9vlx;4;<>@x zOFrpr%}u#GqBCMY*3OggqWRldY;Nxu_nYsE>|US`ZBE**VZ;4=f^WK=x;HpF5heqQ z`jR`{Ta+<$*(hBtAstNCN66G##$zu{yx!KweeN;cm1FL!ffJ@484 z-}H4d)3yll_k9V)^rA4K^dgx_wr;%(jrMCCpqGUZ>zu!QGwZsd0Lk=N_eUqTBmAqQ zEL)JQyZQ~r7o-Sbz!V-uo>oj7`0k4#4Bi5wgiT`L&xQJgg&U-qcGMl9v{pkD2+XoH zU3fU&O*=}#B^U3P`+{5Y)sr~j89NY+%C1H>iH>$V6zroiGZ)ZKFR1ES zM(N*u?QJW_as%B5gF(Wb$tP|KAiYoiXARlbfSbU%VQLsBpCJ%|E#0`o3M*eJH3nE; z1K%cPzM%>f=rNDt>ijZ*Yb031yna?KVk9(Xy{oWyW9Rw#wQIT{iyX+X@E-Chg`T^M z5Mlrz){)xgaW-vsFK3S0`ZD5;bZ`C&C};i5*WdPX`0oEE<$Ja31=L{tH^1bn>Wix- zlxZ8HcMm+Pcb+mcG_|z#-60cj9TTeLDU!YK(%1+#_ySgl1uP9C<-s6=!_^cz3{`16 zDvt!f|7i;*ly*Sr^k-!yz^U1gtZy~N;V)g;<}}AEl1L2ezJ8i{z{XA^<$X#xD@0g9 zfwR%~a^RlVsMXDGH~vn=f2iprn^HU#Hdy^ms?Z0c6I z<#1V>BdY4W7IX^%p^(E6=nfOsZTiH1itC5e z=yL!&WJpSF-*{+@!NWs`LiRICmIo_&4SR_N=>mIZU@SM`Goy9wu`2#}-tF@F`+3yr zCWQjsTKe7u$^pK}Jo$eD4DW$|T>Loh{g5-O1DtjIzUr&euX7mOajUXDfgz4ng`7pI zFAA7`U|tzye^!PASW(_aBD)%FSxnf1 zd@#7-^F$y3IwStAZZHqxt_FIto9W{c{oo_w7Gr%pE5Ly;3hlU`00`bm&S*0;o4(Xd zHogbd#%H#p&VLBWBHHS1cXyc6N`Nl(;EXx5!V8Qa%$twfKEW`wJS7XAH>0+|*wTdq z$sHW>4THXrFBr>9X#0)2v8_m779f2Lykv9Z={5&zcC3y)`OxdwWH()1??6){a4_cI&!lCp|rWJH<}HN z^yNu!`;h$%QidZ{%*`Pdv^QAy+-y25WB>%plgQV+QS{)|xH<;YhODWk@8nX-AzuWi zGwVMmk_{K0LE!?J!hLeS?VG0UftdfSVcrxje?klT3;X662iJAxKs(N;yKi0DVQZhN zF=zS4r6fyUydv1QUFq4|RLTl&36Iib*Z<;-{aQepkA=Sg+QZCdb(@_z5C-7kkgi9W zJ`kF&==Il+n2iH3#x-|@8?}Rd4umSPeU}iu1(8EEpxOTNGxF)>WQeu%c%e7h9c2!W z1!GeJmkwv?ZU8TC%`LpyItT<02L&iuG1v`BH4Dy|DH``|-BUlEeC+a|7U6tKUay1y z$!En?b(sD`G4M{lFUHz9liFgj=hDP`1bFm2HXMp=g5@cLDcG7Cilpxys4ck!G=2I_ zQ)H9Hc6{{zvT8h>~j$`vpy;T?Y_4UgzJ0YK_HUxFJj63BasF284Z^p%Hxp1Igyw&S}^D|3P=7 z2MWr1T?n8MIf^j$Z$(5iC z@@cz%J;Qw`git8k{eU0WkXieV>!}%X4Yi=A)bBR#!NQk5*$Gpzfi84f^|4jImq8rL zchaX7gxP+~folRs^q+mb4_RNW#7dQ}l3iYk1$Za2st|($Doe=~D0vc+t8u}F)sMgm z#)J(!kNn4z3f*IyU6Fp`Ztx%pXHzgW0c<6N`%tZ;;_=a>BFjX7`BSO}y0XsZpu|#rx3lY2$yq$F;13U2CCF_c!kRkSQK!A_)?Zs2 z@bCqKaVTnfXH6R)_+g`JpLQWt_G^k6__+>7IjIn~L!LnDKU`0s0o|QH`OHSW!(W^A zEz*BygB)%=WwTg&tLuqhYX0y7?a#sCFuqBR7eh1jiz^=rp>J84D)g(FCf#Sx{?Y$# zhZd5&*A`B+6eS-6_XUb&e)z^3?L5ggYaM!WRCojGg{>~{7}z9!SffNJ`|}@2w*oUt zUfCa*;uw~q-A^Og{U@c-4-eA+ zr={LW~ z^XMB!pI4rraRUQ6o4xo7Nu>5!AGJES<$`Q+UKzFxKO~7<`(>vBR};Y6-*p7E+5nc1 z7}oWO$S7jTkQ>o`N9+C;XK1!+>-ZFbA%2gnK?zLA?&qrR2CDXjU%)<3xZl| z@B3SciN_1L(YGr$6vWG}I*sX)yG}GIV{3QBiB6!mDsXj4CCN)wl4L@dN-lYzs+e7} z&_G1+kl?L$23n?{W!}!&`mS($CIHVz!PKSP6E`hzCf2pHDtxJxLXu+~*wtko}62)l{mhs4QM-FL^?~X7}BZ~GoZuEH9pOb74_`Y z(0QCTHPA3B!DRw})h!8gg+gfD9*Lf}4sfm$z;)zeU-BQKCi681?S>jI<+LL{F~3>K z)Zf1m^GN{{IDadTM$(PYNtyAZ@VtC%FuIh6NesO&ZcMtpvh-68v|2XuCH*g({hL|G z#ZHJLO}~MzOM(TF?jVpl$VXw~iO= zs~}9Q^C;sx<|L_)rU`c%FW<2QtQ(jN{dG+qXc0l^`Jl=D@Q0_fV4Y>sRG@2r~v$-VzaDw}cjZ)WiTJO7H0sCSQ3a zC%9#Q1^3POgC2~LfRedIHVSMlfzAAgc40VC+nAUyo*G;w_QwK@{5)BVVhf1!mFNrL zV&LZDSN{?Nnd)X(Ln%6rsmNPHkeMT(pzi%EPo z570<2ei#?G%^O;?MBy^z5aqCoKgYo43*&pwQoEZgDeykhBNt zu;nK))<~0-c4Z*D!rX-E zbtT0)CGVshZ9pt{t2}a((~?H`c5aNfN;tz{zWWov(DomXhWIBVPhvRgSS3|Z;4qet zbCD0N#!h^mV>h9jLsy{&j-Aw}^;sG%X};=d&FMs_afKP28(F82*84}yfCOc1c`R6Q z4M9Z;B%T6S2=az^iz7H!uwuwL@aXASW&zrd(na+-ypD198?{1C5Sq^nPyU(XXKnu= zx$Q7#cD2)cnX_#h2oU`lG-XYG?#Znv2H%8)%^Q9wy%}`n&GPJpkz|bZ4RrEkU@vQBhh@49oEd;C5uVV8c=D3m z$5`JJ#0D+U177$6q5;*lx`?5aGc;dW7II4=7O>vo{duqCZ8U7}5*)fB?!8rKN2x6m z>%f7UOmFIVD(UK&ZZc9Gx5IkGwHDtMdk8v2U$tbNSX5*;nlCvG37v z&ejY6B`?H2dftXiImMk=M`Iv{HJS1tma*>vv8P+CVzr$ou9WBQjhwqaQ^{cX2}wNx z0VCreD97$jpsbTnT76#QtQPJ{aljXe zui(*bt(4rQWfy2^3!Q^s$->a=JSaJ*CHmsc~`PZ6K9F$lj6P%RDWOK=aop`qpLL6z$tvPXN{|v z01j{XzubN!PIm+w%hM@}&yQMz5TAml-V0qC(iholDq$h8-1Qp#+B2o3=#p1YUDRsp zkvgA{MQU5W)dPks>&m^>oU_(MS5H*vMD+X2c+X|lW2%ri{Ytj=(U1p{7>l*aNPhzU z`eej+IrB@dePUM_+o*C)cr-L(is! z+>@|-cC%fL_yy3G8>QO^6)knuT1BqfL|gY$?J^M~yP=<~4PRXrHDyeg?|Wm+NCctn z$faQ{{02*srN-XQwhkRmD44peD2ar{@+c?Ct55mAXCYm|9Zvp~epz~#)pga6za4=S zz&}ZYpNn4Q8s`@}yMhYv&)l2qE;1x)r^Us#c49LF%|8xj-Xt~5$7GOsnZmD6kRhAi zqd8wd^J7GuerE%hk8R3uN`S~uWYK0l3^mdTRI zN7%paWQJ31?je4rls!61b}he}OgSdM>@LR9-+5?#fXI{o2972$Ut}a)aiu7Sf9vNx zai`Z&5HWcGZB_!G^Twsq8Pt>UlHGTcZfK$oTD2HrEh>T>ji&E$$$ybpg`uKbgvoD|t~D~q;b&I*4v;QVJS0bKzl7*bI*mX121 z^e%6rmuxMVVOrJLyKPh~(C7}QrY%5;^S05wH;+nEkE&g@14o3rozy}~$4e*V;2ljp zTuWMaZXdY2;BgWgabO!YdTIiwd(Q7(6(|}N7MZlV)-sf#z3~7wOri45ia zcG+V2h~!;`8PqU6TISd{sg&hc&yC4UF_z*DlqnelEMXQN*fmAJb;3}jky9sUGA+_C zDm~|anqeX=_t=J9AWzMLyJ@7j4F4tY>in{X6A+)+b7$pJs-EpxZ%FRTh!@y4u(oy3 zDgKMZ1vSLKL){HZzkTsm^{mlv+Ui`!B?VvdgjFI+c#}Tum%m1@?Tz(IM3F);cEkZW z43_Zs{XJ0;YrYt~=3w%r`uIR!zqPXX@P`C&Lrz4*7m!#MuIK^wK#DtS z?W#h?8+pwJ1S+r6zTcK^m5 z61NNTxekmY`K+eMuJ}ONU{THqN-IU5>i>WVq>Q%pehR>pQ7`|XN*QH`(4cSeFbQOs zIml6xdQ3$8A?k!EL)Db1DYx%&z}*Spb;dQYQYs=R;aM&&(_f?_1ON7RluO7{WoNTP z6n|SGsdku8=C*2Bs_|Cf|4e-DYOjFf+56 z#f~l*hs=w9XM*-q45@f1!8d^PpSP@M_%i}3{yK)h&~H@7UTz|ZKMTRq-&K{;pW+JW z(_2C_u!uJz8M(xT3GBXOZs+J0c}N)#h`*DFlJ4Nivkr5;P3Ekn%C!%rGN$k3B&vFB z#X$=KCFxpvV9P00%4l11rdHZfTg!4wD=eu*Sb5Lc8+mhfo~}*DG3o;=u?!si2C-*!Yof_n3H9EFQDx+4U^? zyREu@pC7&~xc0Knx=ezM^75?NE(QG%t>6#PP+4?{z-i9&N2>8i683t_ zEnWM|ruxmYQlJV&Y0x#O<6f0E5iz)H)vGi&HHa_H7jHRb2tiy16;^-|F`VZi2iC^s zTdqVF_pOi|5!#9YFDzLN@r%tZ{Af#RsUWLlBy*we%Ol*{M$QBBNZ-yvx@EctsL>Zl zCaHjBFP;Jf4^CJ!eWydh7`K^k^8@mg_B+me_#Lo%l7Q`5e1|-cCNC#>T}I4hTiTQs z5fNmk>;8C<-N~q4s~ox~EGMLb49D&VX$rX;V_{Gw3+416514S`$4f9%gXAQB{PNnl zA?~cDs=J`U&7)wmue_d1$K$z=ESHTK+w0bHDPFGCh zg0`8ZQDps^4W3tBkRJNOb!Ja3-=ODewEGxM0r@NX;2$3OWd;f~wK+oW$2)e?IfBO)c`%3rA`* z+mCOGJ`kPSmz>-jmaEh)UeWD=P$Y?_821z2ZXeEPPD4|^QG+8#I7F|9Q4z@4jPAW7xGiN%;$ z_JgpOKQmMBnph}WAS{%C>D$79hOt+WZIFka3V%w}s|$mWvDIXb`L;Iv`1X3DzaIp` z>)qFzEG~!48C9Ijce7YsbMLq7fL}cgZ+vcO;-l|ho@XD1 z7a})pu(pX}`{|*b+@@Hg$x1)J36rd^ZKlzgwm)25_wp)gmprKXSfHgLOpGEx-%ZE@ z)=h6hsSSz}srv@aC2TP&pweGn%_r^k9%ltT`21wE<#RJ0QJw1hqVV-vOv1p|h2W`W zme8qWn?%4H2wLm`Jmm7vc*Cf#PQd|13!MdV;6&kmuQb5vtv*g}c$xd|co*pv(zjLA z;H$A7d3s*r8~ND$RK@8v3DWay*cp@>t?^k!Whb3VHz7x>|953dQL8`j zpkva1s}mk1lZa9s)5W(uUkIaa1`TYMat{3)*;0Il@;N;cB)G8kFo8a$4#H{ICPiaB z0M(A1Fbhb_3300epd0s8jcgB%meQvKjB8+g_Aeh{4Ha1@d%Y6r)=X*nW(_Bt$9vVh zCp)$K*~8%?vJN3ws2s8VDY#h+4#GmH;s#i0zya%_4imq5Lh{t!+LnJLy>7Y1|MkOs zUl=bUoS1l{ed`d#CPc}I-}2MqC*|O1?)SGXIn8%k*!A}34kO|(EhvFGe(uQ%MAsNl z3Pqi_@(^H6fk~d!@m^G5xEw~43XA*UI>4_eft(z3jf9eg1adD>AHn5c^TW47O~@;K zFXj?JjLdn8xbl&+&bv%`iMuZzw_c6W-oA1)<5j~G_-(1ADGOQ7k52t)&W^6298ycw zB?A^3N4yCTL5XexN_;+oO8kIyClo}k2X!ZTauJv|rLNf2$p2bI7OF7LM&GqtvMZ&`RdZ7f?-15DWaI+27RiF ziH5W&vf}IN{xceyc2#u|6j^6GN#R+-hfh+un^<57_3S5 z{W{BB+~$?PsxM(Q7XQ3e5vMgLWleBWifE;RtslA%C2I?OR!YkZBkh@4g>R4#IVWr! zaa!c3UbI*8w!vt|7BSXsqE87!j$JW(!VIt~`kLNTA=sHU@RL9L&OvsTFitqqCx3KP z@$1cx1%C!oR_4nIw&hOyM8X}PrAp_Xx;e}*3p!E7mkW`$yKEp16(-*Tb-&se*w{nJ zB(#!d%&2~eE{XBY{OJmH_f9L0JOj5(26J~3{EI{}*E}K;7o?ji!v=rKt`FS5FGVWz zcfq+TM-$wK{rw&0n}=E;flfPP*g6P7fsO_U=_5QD^rst~s%`FA)o;W#a^=9t_7c$m z_BO|W6dL?QfY_BwbQH0$U@E3^rQFZ`(?=;Rr9r1Ot|`UxMHX|9<8*&Ml9Fh)YbR?{ z<1oj)(@SpCj$P@{w1*blta_}0KD1x8<>)`qLCEqR-)@5q#~n%OUTpM&43re=OeHBF5^ zByB3}N{%>bqS8jwKl9^q}{aPo-IE2 zff}6qwR&-#ujwyAwpefJ(O4|Z`skLf?k9Aim7imbYylLAyhvA&MI(UBo0%W4Y?hYC zm+Y);=BZm?wX! zdB6O5gIn(Kj_sz4jefkE90X5M0W=3q-FEhY386g6*E9$utOkBaE&)>1K>O$iefkr- zrlO-&LH{1w3r0C1Jt6n)$pYjJb7-RB<}G1AfRrU3p*5vyKtDa~eNSd);#9raFx>dq zgt_tAltO(kzwu2`bxG!r`}I~jhcV6#v6?;!x;LMwnKypeu9<|nFMgB}t2*GqGqkUk!a;8Rul8c~IFBQ|0k`s3z$_GAt zequ%x<*Zh@m=8sZNq$a9TV8#T3^;xE0*5hwatrc&GtHb*GRwaJcnP_O;vj9lrCmI< zWs@RSu^@XOLd#nEqxWuzw{D~hEIx1dHIwRS=r}*q_3eQ2t4mae?X$|Y>RFB2YAd>Z zA3=)2AJ%X*K9&jD99u>Rqy9W=k=q$CwODgaxY$?Sx^`uS@F#xD>1Roba6S9LbCZ44 zWE_w*)Tf_y!mnWRCUBqZlNz;kI<5Tc?eRyDHL_-oagomA$ieqzPY#Sn79`&>?>hKA zz{JJk5EH2k5}^vGuzg`FR7vV7a1@q{Mb?>8vWfgDzCP*op1;D~lcOH<6cq(`8U4CH z?%o(x*LvfB_C!u`7UfP@gvp(jevQ)L_xWE!HjPSM17&g#S6FUq-~3$fkX2)JoO`yp zueMWiusHkZztxY$7v29wS%{2PfMi^P!Ukt+%ylVrZU(NQ0F*wZKu7Uear(goD_yb! zNDp)>jykmttS@sBW$av{wflsX!&<>vYxenZn8Dox8D{sJ7^mO6Kigrc^=bU{9hL5T z`NOwf=x6uK%MM>Mg*?M^|5ln5_$N~29tvK6-nHJ!#loLWooa5G9It@}{oREKp{GXE zcLK&gP5nK{^p@ly09Bvvt!~Rvnwy_4=SH=LeC}l1Qrc%TKIel~p4`as z#|xdsuh-Br_SCWS9>Ncf)g4AGIRgCH5h(x@?FgMp3vdMoNTgX~#i+@bGRP+2W`?0J z*_6LUb<`4M1#k7NBjqOYEFyuP&ai|Zor>#gFnU}v<3@pxThz+7+HCZeIWNzz?*kcO zp^9ME19r=k?G^>r8SMZ?2bqqwH_KbHW{OE1^6|j)lArS!wckrdyzi>&y6yq%5-HTC zD4U!JZ2vg(AKqVCxZ-N-#IhaWt4KOIn6AbWWhM1Qi^lJvCr19=h5#Hv)wm#yU4{2- zi}nJsb)&_#=pu4LIYfza4$rmp01Q_Ih!3C)&xb*gV!h!oh3c&FGwEyOfiq*54)|k_ znq|@+ri-tJ5i>JU~6D1RSiy^KWeC! zYGW^Y@h@Z%#c$P2cs_zbl154uM>R;E;s1cYd#L+P&p@bnFd?|UZm0B=+4tGrpYN_c z%&f1`4H-|yyF+UC08+?bksEDt;D)JFK%HbO1dQ>Yzdp9NSD)LnSi9VRFs?~Er|{Yl z+4|%r49l~%q*l`gywK3B+@dS1DKM`bH@s2? zx0wT}bLMLt3WmHj9K6?(#D_+_X9+X-v0UY~`L6hY5XSDHi}0q~r>*4yG?m|1d9z7T z9Jq45xd{Q;s@UpyXdK!1#U6?~Oc^PHR5-F<BXg zXI5K!nYFA|ezB0cX(iyORAWU28CM=s11EO%sL{QDW|3{i;NW>bFxSnMSVz!Nbmof# zfo3-kdnX(f?l z*Ava3ILa)(11j z#}H!;t&O?ti?@%tf^$P3%McZJFw4KDF|28?Qw>I<0xd6H%wo`r_#NrPHjBC{$POFB z{2iKc?1_J4p@e{`8d8H7Z@0x*2kJNk&yjNGDNNttad-d!Ug0>e{eZ{u$on(deSIcB zDO!iFN`du2H%lb}ZHRbly20`l&5u{j!xDKo*htO&XFi+Y{gT}t)2+vJ`*fU_<6xy> zuV|hcO_3%Nt$weH#iFs2ZpZ<$DI-GjCNfP?8LMl6z|6WV&vMxZY4Q$UQ7oA5=r~%0SHDW1_hpQx_1b9JrbWgB)Otk)rAe*Xy zp63Gh?6@E3&%2t2YQJ2|1ztf(`zu9ED$XvydMS1Aso!F@JXL%vUPab^pvLgT>g34l zX#;{Xkp^W2fJv9X)InMls2re0s3*`y;dzMhkt(~(tJ7^quX_3ZzO6WE)RSW$d*?O{ z-wzrUz%u&oT?1I}Ve{pV`JbPd|0pN>){PueBgf8%rs=8HZyHQFoWqwN{r&B)gv6nW z31axN(r^K`0lPpl1+1h%9UC|4gAAK_n~F zEHAC+;YRM7IR8p1)Jn}UWA9&STdCBg+!yHk?CVvB$d^iKKD_ybi7GY&ssSWWtYQqt zZH^5Lk3;0|_$S0ve@3Nv;aVwLYGkN#4QP&^qaJ%>;l*oyohz7g>-kbLMT6^&)zW)| z5}ul?Pz@KIon|am#0^vc!&qlgP}XK2Hqd5jDoSf{_gy(L`ZK=4YAg(f=SM%9YvR6$ zT%Hyt%x_QHkaoB{2*d4)lI&)Fw|z_#*NJZjao{S6^p^%o@FIAAV-%2~k|am&&s=V)(XU-1&T)%xFtPZ@Gs`OvC^<2iOSU|jrE?@&GvMAKe$R8zS* zuGwjaQb&j@7A6Nm3L>0gCOgn`l25tzRm3o>+GUio~-=BsqVzV_n;bb6IgtQ zWZ{5;ocaf!kovB&)i5ROiapTa>MUYREv*Lm+AGCE4f!p0t_MU8NS8grM9p5F>3k|N zGoBAuNsFtvdEr=J2VaF?Rdx3svL(aX)qvqVy)g+QY0&VnruFEGhMcEpw&a;E4Bfeq zZh$c^+~oh0>Z*=M-R@fOPqwhn=uO(oL-<>k)g?@y+T9NO=cJU&F5py@IK19u(&PO& zkIo(@CU-iw-^Rv5;prj2f_~#nTtn*?KhYySDCVd5i{pjG0}VMe75yeIdBxb)%`Q6~9r4V(V}8rXjw}D9$Zlcgm;X7t5WQYLxz8}X8o#i~ zrCj$J$)1zNJIZXrlrXVY5(!D=QkOm4nd%>x(U@ad2x}=)fYl)@>z31$wSmW{Coezr z>Gv#1X2_EM(a|d4^(xQai*Deo9PU0TCMVWwS? za{16}E>eEFzGP1Q`&S5Fi!9#yKo|+GT(nf~Ka!Jc?vtPmc+N}M%1pYO4e7_j(E}EP+G?T_UIz5cEAPuGc9qo5vTO=! zFH_X3>BFY~#+kor8+}XgjoFS6m2`-0ic5^X<8)_|d+e>V`IoGjc1Nd9?zHZcv;$Ie z+>kOW)=K$bUzV1XUOpI8thL-?rUQ-GBKb>-5e|uy0wy$Dbnd=To3e)yA*{k4RNY?n z=Ef77TX1c;Ee9ujQGAXuXt*!X#F{DEB`x~ z#uOfvt~;bLujl>#QlmIAwwgU9%Lt1&Vaf`r?%upoyPF`DTEpa z9P|C}g=fxqE9fb+j4mt|8x&Ki@(8JTxaG)4d#}oSGQ|lPC8U?0_mA0_B?kJ1 zBiZIRrHls7Pvm(8@$x@o4F+znuv1U1n5A9ho5%zG$HYj1wV|SNI7xKLkr!=3u(l@Q zBQ1>!D!E@DeMI%k=cNq|kZ;w9-B)3Hy&u~0es8zs{YTcWsWJM9#K4Nlc>6_2<5XlB zKEdUD3T3hRVL-u;qU&o;Bljz+6sd^=O145_Ukt< zPyVXcD^Mg*a16cIci#Ens(p!B;=>U_#CC7~?l2904VbstRY%aXp!y)=>1A!MRq|Df z97Xc#klf;{2c|WGXB1niDLO0LcGvi}e(l|P76EUaKdk{TR0CX0e55W0{vvrJY6dQQ zF}zR47A1)FjDK%jbn^qf_jp~VCeOf+t=ya`IWrRZ|Bi3_u)2pHn2(#AbJ_~yoi_&n NPRCsAYi)zl{twVGL?8eF diff --git a/src/cx/fbn/nevernote/icons/synchronize-3.png b/src/cx/fbn/nevernote/icons/synchronize-3.png deleted file mode 100644 index 6034544f901b36d704866ea616312e6b25b46104..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29042 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 G5&wUphRHnu diff --git a/src/cx/fbn/nevernote/sql/NoteTable.java b/src/cx/fbn/nevernote/sql/NoteTable.java index f0dcb64..f0529ca 100644 --- a/src/cx/fbn/nevernote/sql/NoteTable.java +++ b/src/cx/fbn/nevernote/sql/NoteTable.java @@ -63,7 +63,6 @@ public class NoteTable { noteTagsTable = new NoteTagsTable(logger, db); getQueryWithContent = null; getQueryWithoutContent = null; - } // Create the table public void createTable() { @@ -168,6 +167,8 @@ public class NoteTable { } // Setup queries for get to save time later private void prepareQueries() { + if (getQueryWithContent != null) + return; getQueryWithContent = new NSqlQuery(db.getConnection()); getQueryWithoutContent = new NSqlQuery(db.getConnection()); getAllQueryWithoutContent = new NSqlQuery(db.getConnection()); @@ -257,7 +258,6 @@ public class NoteTable { DateFormat indfm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); // indfm = new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy"); - Note n = new Note(); NoteAttributes na = new NoteAttributes(); n.setAttributes(na); @@ -295,7 +295,7 @@ public class NoteTable { if (loadTags) { n.setTagGuids(noteTagsTable.getNoteTags(n.getGuid())); List tagNames = new ArrayList(); - TagTable tagTable = new TagTable(logger, db); + TagTable tagTable = db.getTagTable(); for (int i=0; i getNoteTags(String noteGuid) { if (noteGuid == null) return null; - boolean check; List tags = new ArrayList(); - NSqlQuery query = new NSqlQuery(db.getConnection()); - check = query.exec("Select " - +"TagGuid from NoteTags where noteGuid = '" +noteGuid +"'"); - if (!check) { + if (getNoteTagsQuery == null) + prepareGetNoteTagsQuery(); + + getNoteTagsQuery.bindValue(":guid", noteGuid); + if (!getNoteTagsQuery.exec()) { logger.log(logger.EXTREME, "NoteTags SQL select has failed."); - logger.log(logger.MEDIUM, query.lastError()); + logger.log(logger.MEDIUM, getNoteTagsQuery.lastError()); return null; } - while (query.next()) { - tags.add(query.valueString(0)); + while (getNoteTagsQuery.next()) { + tags.add(getNoteTagsQuery.valueString(0)); } return tags; } + void prepareGetNoteTagsQuery() { + getNoteTagsQuery = new NSqlQuery(db.getConnection()); + getNoteTagsQuery.prepare("Select TagGuid from NoteTags where noteGuid = :guid"); + } // Get a note tags by the note's Guid public List getAllNoteTags() { List tags = new ArrayList(); diff --git a/src/cx/fbn/nevernote/sql/NotebookTable.java b/src/cx/fbn/nevernote/sql/NotebookTable.java index 3cf3ab0..85ce7fb 100644 --- a/src/cx/fbn/nevernote/sql/NotebookTable.java +++ b/src/cx/fbn/nevernote/sql/NotebookTable.java @@ -46,6 +46,7 @@ public class NotebookTable { private final ApplicationLogger logger; DatabaseConnection db; private final String dbName; + NSqlQuery notebookCountQuery; // Constructor public NotebookTable(ApplicationLogger l, DatabaseConnection d) { @@ -671,16 +672,19 @@ public class NotebookTable { // Get a note tag counts public List> getNotebookCounts() { List> counts = new ArrayList>(); - NSqlQuery query = new NSqlQuery(db.getConnection()); - if (!query.exec("select notebookGuid, count(guid) from note where active=1 group by notebookguid;")) { + if (notebookCountQuery == null) { + notebookCountQuery = new NSqlQuery(db.getConnection()); + notebookCountQuery.prepare("select notebookGuid, count(guid) from note where active=1 group by notebookguid;"); + } + if (!notebookCountQuery.exec()) { logger.log(logger.EXTREME, "NoteTags SQL getTagCounts has failed."); - logger.log(logger.MEDIUM, query.lastError()); + logger.log(logger.MEDIUM, notebookCountQuery.lastError()); return null; } - while (query.next()) { + while (notebookCountQuery.next()) { Pair newCount = new Pair(); - newCount.setFirst(query.valueString(0)); - newCount.setSecond(query.valueInteger(1)); + newCount.setFirst(notebookCountQuery.valueString(0)); + newCount.setSecond(notebookCountQuery.valueInteger(1)); counts.add(newCount); } return counts; diff --git a/src/cx/fbn/nevernote/threads/CounterRunner.java b/src/cx/fbn/nevernote/threads/CounterRunner.java index 1917cf3..7978804 100644 --- a/src/cx/fbn/nevernote/threads/CounterRunner.java +++ b/src/cx/fbn/nevernote/threads/CounterRunner.java @@ -25,12 +25,9 @@ import java.util.Vector; import java.util.concurrent.LinkedBlockingQueue; import com.evernote.edam.type.Note; -import com.evernote.edam.type.Notebook; -import com.evernote.edam.type.Tag; import com.trolltech.qt.core.QMutex; import com.trolltech.qt.core.QObject; -import cx.fbn.nevernote.Global; import cx.fbn.nevernote.filters.NotebookCounter; import cx.fbn.nevernote.filters.TagCounter; import cx.fbn.nevernote.signals.NotebookSignal; @@ -38,19 +35,25 @@ import cx.fbn.nevernote.signals.TagSignal; import cx.fbn.nevernote.signals.TrashSignal; import cx.fbn.nevernote.sql.DatabaseConnection; import cx.fbn.nevernote.utilities.ApplicationLogger; -import cx.fbn.nevernote.utilities.Pair; public class CounterRunner extends QObject implements Runnable { + private class NoteRecord { + public String notebookGuid; + public Vector tags; + public boolean active; + + public NoteRecord() { + tags = new Vector(); + } + } private final ApplicationLogger logger; private volatile boolean keepRunning; public int ID; public volatile NotebookSignal notebookSignal; public volatile TrashSignal trashSignal; public volatile TagSignal tagSignal; - private volatile Vector notebookIndex; - private volatile Vector noteIndex; - private volatile Vector activeIndex; + private volatile Vector records; public int type; public QMutex threadLock; @@ -58,8 +61,6 @@ public class CounterRunner extends QObject implements Runnable { public static int NOTEBOOK=1; public static int TAG=2; public static int TRASH=3; - public static int TAG_ALL = 4; - public static int NOTEBOOK_ALL = 5; public boolean ready = false; public boolean abortCount = false; @@ -83,9 +84,7 @@ public class CounterRunner extends QObject implements Runnable { tagSignal = new TagSignal(); trashSignal = new TrashSignal(); - notebookIndex = new Vector(); - activeIndex = new Vector(); - noteIndex = new Vector(); + records = new Vector(); } @@ -108,12 +107,8 @@ public class CounterRunner extends QObject implements Runnable { keepRunning = false; if (type == NOTEBOOK) countNotebookResults(); - if (type == NOTEBOOK_ALL) - countNotebookResults(); if (type == TAG) countTagResults(); - if (type == TAG_ALL) - countTagResults(); if (type == TRASH) countTrashResults(); threadLock.unlock(); @@ -128,21 +123,20 @@ public class CounterRunner extends QObject implements Runnable { abortCount = true; threadLock.lock(); abortCount = false; - notebookIndex.clear(); - activeIndex.clear(); - noteIndex.clear(); + records.clear(); if (idx != null) { for (int i=0; i nCounter = new ArrayList(); - if (abortCount) - return; - List books = conn.getNotebookTable().getAll(); - - if (abortCount) - return; - - if (type == NOTEBOOK_ALL) { - for (int i=0; i> notebookCounts = conn.getNotebookTable().getNotebookCounts(); - if (abortCount) - return; - for (int i=0; notebookCounts != null && i=0 && keepRunning; i--) { - if (abortCount) - return; - boolean notebookFound = false; - for (int j=0; j counter = new ArrayList(); @@ -312,6 +259,41 @@ public class CounterRunner extends QObject implements Runnable { return; tagSignal.countsChanged.emit(counter); logger.log(logger.EXTREME, "Leaving ListManager.countTagResults()"); + } */ + private void countTagResults() { + logger.log(logger.EXTREME, "Entering ListManager.countTagResults"); + if (abortCount) + return; + List tCounter = new ArrayList(); + for (int i=0; i tags = records.get(i).tags; + for (int z=0; z wordMap; public TagSignal tagSignal; public NotebookSignal notebookSignal; + public boolean refreshCounters; // Used to control when to recount lists private int trashCount; public SaveRunner saveRunner; // Thread used to save content. Used because the xml conversion is slowwwww QThread saveThread; @@ -152,7 +153,7 @@ public class ListManager { trashCounterRunner.trashSignal.countChanged.connect(this, "trashSignalReceiver(Integer)"); trashThread = new QThread(trashCounterRunner, "Trash Counter Thread"); trashThread.start(); - reloadTrashCount(); +// reloadTrashCount(); wordMap = new HashMap(); tagSignal = new TagSignal(); @@ -169,6 +170,8 @@ public class ListManager { linkedNotebookIndex = conn.getLinkedNotebookTable().getAll(); loadNoteTitleColors(); + refreshCounters = true; + refreshCounters(); } @@ -257,7 +260,7 @@ public class ListManager { } public void reloadTagIndex() { - conn.getTagTable().cleanupTags(); +// conn.getTagTable().cleanupTags(); setTagIndex(conn.getTagTable().getAll()); } public void reloadIndexes() { @@ -959,12 +962,23 @@ public class ListManager { return false; } - // Load the note index based upon what the user wants. - public void loadNotesIndex() { - logger.log(logger.EXTREME, "Entering ListManager.loadNotesIndex()"); + // Trigger a recount of counters + public void refreshCounters() { +// refreshCounters= false; + if (!refreshCounters) + return; + refreshCounters = false; tagCounterRunner.abortCount = true; notebookCounterRunner.abortCount = true; trashCounterRunner.abortCount = true; + countNotebookResults(getNoteIndex()); + countTagResults(getNoteIndex()); + reloadTrashCount(); + + } + // Load the note index based upon what the user wants. + public void loadNotesIndex() { + logger.log(logger.EXTREME, "Entering ListManager.loadNotesIndex()"); List matches; if (enSearchChanged || getMasterNoteIndex() == null) @@ -980,37 +994,34 @@ public class ListManager { if (filterRecord(matches.get(i))) getNoteIndex().add(matches.get(i)); } - countNotebookResults(getNoteIndex()); - countTagResults(getNoteIndex()); + refreshCounters = true; enSearchChanged = false; - reloadTrashCount(); logger.log(logger.EXTREME, "Leaving ListManager.loadNotesIndex()"); } public void countNotebookResults(List index) { logger.log(logger.EXTREME, "Entering ListManager.countNotebookResults()"); - if (!Global.mimicEvernoteInterface) { + notebookCounterRunner.abortCount = true; + if (!Global.mimicEvernoteInterface) notebookCounterRunner.setNoteIndex(index); - notebookCounterRunner.release(CounterRunner.NOTEBOOK); - } else { + else notebookCounterRunner.setNoteIndex(getMasterNoteIndex()); - notebookCounterRunner.release(CounterRunner.NOTEBOOK_ALL); - } + notebookCounterRunner.release(CounterRunner.NOTEBOOK); logger.log(logger.EXTREME, "Leaving ListManager.countNotebookResults()"); } public void countTagResults(List index) { logger.log(logger.EXTREME, "Entering ListManager.countTagResults"); - if (!Global.tagBehavior().equalsIgnoreCase("DoNothing")) { + trashCounterRunner.abortCount = true; + if (!Global.tagBehavior().equalsIgnoreCase("DoNothing")) tagCounterRunner.setNoteIndex(index); - tagCounterRunner.release(CounterRunner.TAG); - } else { - tagCounterRunner.setNoteIndex(null); - tagCounterRunner.release(CounterRunner.TAG_ALL); - } + else + tagCounterRunner.setNoteIndex(getMasterNoteIndex()); + tagCounterRunner.release(CounterRunner.TAG); logger.log(logger.EXTREME, "Leaving ListManager.countTagResults()"); } // Update the count of items in the trash public void reloadTrashCount() { logger.log(logger.EXTREME, "Entering ListManager.reloadTrashCount"); + trashCounterRunner.abortCount = true; trashCounterRunner.setNoteIndex(getNoteIndex()); trashCounterRunner.release(CounterRunner.TRASH); logger.log(logger.EXTREME, "Leaving ListManager.reloadTrashCount"); -- 2.11.0