xyscan-3.31.orig/0000755000175000017500000000000011571747200014106 5ustar georgeskgeorgeskxyscan-3.31.orig/xyscanHelpBrowser.cpp0000644000175000017500000001236611475067714020314 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: November 29, 2009 //----------------------------------------------------------------------------- #include #include "xyscanHelpBrowser.h" xyscanHelpBrowser::xyscanHelpBrowser(const QString &descFile, const QString &path) : QWidget(0) { setWindowModality(Qt::NonModal); setWindowTitle(tr("Help")); setWindowIcon(QIcon(QString::fromUtf8(":/images/xyscanIcon.png"))); QGridLayout *gridLayout = new QGridLayout(this); // // Create top row buttons // QHBoxLayout *hboxLayout = new QHBoxLayout(); mBackButton = new QPushButton(this); mBackButton->setIcon(QIcon(QString::fromUtf8(":/images/arrow_prev.png"))); // setText(tr("<")); hboxLayout->addWidget(mBackButton); mForwardButton = new QPushButton(this); mForwardButton->setIcon(QIcon(QString::fromUtf8(":/images/arrow_next.png"))); // setText(tr(">")); hboxLayout->addWidget(mForwardButton); mHomeButton = new QPushButton(this); mHomeButton->setText(tr("Home")); hboxLayout->addWidget(mHomeButton); QSpacerItem *spacerItem = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); hboxLayout->addItem(spacerItem); mCloseButton = new QPushButton(this); mCloseButton->setText(tr("Close")); hboxLayout->addWidget(mCloseButton); gridLayout->addLayout(hboxLayout, 0, 0, 1, 2); gridLayout->setContentsMargins(5, 5, 5, 10); gridLayout->setSpacing(5); // // Create empty tree widget and text edit (browser) window // mTreeWidget = new QTreeWidget(this); QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); mTreeWidget->setSizePolicy(sizePolicy); mTreeWidget->setMaximumWidth(220); mTreeWidget->headerItem()->setHidden(true); // not needed mTreeWidget->clear(); gridLayout->addWidget(mTreeWidget, 1, 0, 1, 1); mTextBrowser = new QTextBrowser(this); gridLayout->addWidget(mTextBrowser, 1, 1, 1, 1); resize(QSize(865, 475)); // // Setup index and search path // createIndex(descFile); mTextBrowser->setSearchPaths(QStringList(path)); // // Connect signals and slots // connect(mCloseButton, SIGNAL(clicked()), this, SLOT(hide())); connect(mHomeButton, SIGNAL(clicked()), mTextBrowser, SLOT(home())); connect(mBackButton, SIGNAL(clicked()), mTextBrowser, SLOT(backward())); connect(mForwardButton, SIGNAL(clicked()), mTextBrowser, SLOT(forward())); connect(mTextBrowser, SIGNAL(sourceChanged(const QUrl&)), this, SLOT(updateCaption())); connect(mTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*, int)), this, SLOT(itemSelected(QTreeWidgetItem*))); connect(mTextBrowser, SIGNAL(forwardAvailable(bool)), mForwardButton, SLOT(setEnabled(bool))); connect(mTextBrowser, SIGNAL(backwardAvailable(bool)), mBackButton, SLOT(setEnabled(bool))); // // Start with home page (first item) // itemSelected(mTreeWidget->topLevelItem(0)); } void xyscanHelpBrowser::itemSelected(QTreeWidgetItem* item) { if (item && mTreeWidget) { QString filename = item->data(0, Qt::UserRole).toString(); showPage(filename); } } void xyscanHelpBrowser::showPage(const QString &filename) { if (mTextBrowser) mTextBrowser->setSource(filename); } void xyscanHelpBrowser::updateCaption() { setWindowTitle(tr("Help: %1").arg(mTextBrowser->documentTitle())); } void xyscanHelpBrowser::createIndex(const QString &desc) { QFile file(desc); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::warning( 0, "xyscan", tr("Cannot open the index descriptor file to setup the documentation. " "No online help will be available. " "Check your installation and reinstall if necessary.")); return; } QTextStream in(&file); in.setCodec("UTF-8"); // needed for French QString line; QTreeWidgetItem *lastTop = 0; QTreeWidgetItem *item; do { line = in.readLine(); if (!(line.isNull() || line.startsWith('#'))) { // // Got valid descriptor line // QStringList list = line.split(','); if (list.size() != 3) continue; // need 3 items to work with if (list[0] == "0") { item = new QTreeWidgetItem(mTreeWidget); item->setText(0,list[1]); lastTop = item; item->setData(0, Qt::UserRole, list[2]); } else if (list[0] == "1") { if (lastTop) { item = new QTreeWidgetItem(lastTop); item->setText(0,list[1]); item->setData(0, Qt::UserRole, list[2]); } } // no 3 level indentation implemented } } while (!in.atEnd()); } xyscan-3.31.orig/xyscanAbout.cpp0000644000175000017500000001133611474623133017116 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: November 19, 2009 //----------------------------------------------------------------------------- #include "xyscanAbout.h" #include "xyscanVersion.h" #include using namespace std; xyscanAbout::xyscanAbout(QWidget* parent, Qt::WindowFlags fl) : QDialog(parent, fl), mTitlePixmap(":/images/xyscanSplash.png"), mVersionText(QString("Release ") + QString(VERSION) + QString(" (") + QString(__DATE__) + QString(")")) { setModal(true); // // Merge version/release string into pixmap // QPainter p; p.begin( &mTitlePixmap ); int strWidth = p.fontMetrics().width( mVersionText ); int strHeight = p.fontMetrics().height(); p.setPen(Qt::gray); p.drawText(QRect(341, 98, strWidth, strHeight), 0, mVersionText ); p.end(); // // First define the pixmap label // int w = mTitlePixmap.width(); int h = mTitlePixmap.height(); mTitlePixmapLabel = new QLabel(this); mTitlePixmapLabel->setGeometry(QRect( 0, 0, w, h)); mTitlePixmapLabel->setFixedSize(QSize(w, h)); mTitlePixmapLabel->setLineWidth(0); mTitlePixmapLabel->setPixmap(mTitlePixmap); mTitleShown = true; mTitlePixmapLabel->setScaledContents(false); mTitlePixmapLabel->setAlignment(Qt::AlignLeft|Qt::AlignTop); mTitlePixmapLabel->setIndent(10); // for text // // Now the line (just looks nicer with it) // mLine = new QFrame(this); mLine->setGeometry(QRect(0, h, w, 5)); mLine->setFrameShape(QFrame::HLine); mLine->setFrameShadow(QFrame::Sunken); // // The buttons // mButtonOk = new QPushButton(this); mButtonOk->setAutoDefault(true); mButtonOk->setDefault(true); mButtonOk->setText( tr("&Ok" )); mButtonLicense = new QPushButton(this); mButtonLicense->setText(tr("&License")); // // Then the dialog itself // setWindowTitle(tr( "About xyscan")); setSizeGripEnabled(false); setFixedWidth(w); // // Layout the buttons // QSpacerItem* spacer = new QSpacerItem (300,20, QSizePolicy::Expanding, QSizePolicy::Minimum ); mButtonLayout = new QHBoxLayout; mButtonLayout->addWidget(mButtonLicense); mButtonLayout->addItem(spacer); mButtonLayout->addWidget(mButtonOk); mButtonLayout->setMargin(4); // // Overall widget layout // mLayout = new QVBoxLayout(this); mLayout->setSpacing(0); mLayout->setMargin(0); mLayout->addWidget(mTitlePixmapLabel); mLayout->addWidget(mLine); mLayout->addLayout(mButtonLayout); setFixedSize(mLayout->minimumSize()); // // Connect slots // connect( mButtonOk, SIGNAL(clicked()), this, SLOT(accept())); connect( mButtonLicense, SIGNAL(clicked()), this, SLOT(license())); } void xyscanAbout::accept() // Ok button pressed { // // Hide it and make sure the next time it pops // up the title page is shown. // hide(); if (!mTitleShown) license(); } void xyscanAbout::license() // License button pressed { if (mTitleShown) { QPalette palette; palette.setColor(mTitlePixmapLabel->backgroundRole(), Qt::white);// white background mTitlePixmapLabel->setPalette(palette); mButtonLicense->setText(tr("Title && &Version")); mTitleShown = false; mTitlePixmapLabel->setText(tr( "Copyright (C) 2002-2010 Thomas S. Ullrich\n" "\n" "This program is free software; you can redistribute it and/or\n" "modify it under the terms of the GNU General Public License as\n" "published by the Free Software Foundation; either version 3 of\n" "the License, or any later version.\n" "\n" "This program is distributed in the hope that it will be useful,\n" "but without any warranty; without even the implied warranty of\n" "merchantability or fitness for a particular purpose. See the GNU\n" "General Public License for more details.\n" "\n" "You should have received a copy of the GNU General Public\n" "License along with this program. If not, see ." )); } else { mTitlePixmapLabel->setPixmap(mTitlePixmap); mButtonLicense->setText(tr("&License")); mTitleShown = true; } update(); } xyscan-3.31.orig/xyscanUpdater.cpp0000644000175000017500000000657411471625225017461 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: November 19, 2010 //----------------------------------------------------------------------------- #include "xyscanUpdater.h" #include #include #include #include #include #include #define PR(x) cout << #x << " = " << (x) << endl; using namespace std; xyscanUpdater::xyscanUpdater() { connect(&mManager, SIGNAL(finished(QNetworkReply*)), SLOT(downloadFinished(QNetworkReply*))); mCurrentDownload = 0; } void xyscanUpdater::checkForNewVersion(const QUrl& url) { // // Send request to download the file. // Allow only one requets at a atime. // if (mCurrentDownload == 0) { QNetworkRequest request(url); mCurrentDownload = mManager.get(request); } } void xyscanUpdater::downloadFinished(QNetworkReply *reply) { QUrl url = reply->url(); if (reply->error()) { QMessageBox::warning(0, tr("xyscan"), tr("Cannot check for latest version.\n(%1).\n\n" "Make sure you are connected to a network and try again.") .arg(qPrintable(reply->errorString()))); } else { // // Got the xmf file content, // decode it and compare version numbers. // QString latestVersion, wwwLocation; QByteArray content = reply->readAll(); QXmlStreamReader reader(content); while (!reader.atEnd()) { reader.readNext(); if (reader.isStartElement() && reader.attributes().hasAttribute("version")) { latestVersion = reader.attributes().value("version").toString(); reader.readNext(); if(reader.isCharacters()) { wwwLocation = reader.text().toString(); } } } if (reader.error()) { QMessageBox::warning(0, tr("xyscan"), tr("Parsing of xml file failed. " "Cannot check for newer version. Try again later.")); } if(!latestVersion.isEmpty() && !reader.error()) { if( latestVersion > qApp->applicationVersion() ) { QMessageBox::information( 0, "xyscan", tr("A new version of xyscan (%1) is available.
" "To download go to:
" "%2").arg(latestVersion).arg(wwwLocation)); } else { QMessageBox::information( 0, "xyscan", tr("You are running the latest version of xyscan (%1).").arg(qApp->applicationVersion())); } } } reply->deleteLater(); // mark for deletion mCurrentDownload = 0; // done with this request }xyscan-3.31.orig/xyscanUpdater.h0000644000175000017500000000166711425336400017115 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: August 1, 2010 //----------------------------------------------------------------------------- #ifndef xyscanUpdater_h #define xyscanUpdater_h #include #include class QNetworkReply; class xyscanUpdater : public QObject { Q_OBJECT public: xyscanUpdater(); void checkForNewVersion(const QUrl&); public slots: void downloadFinished(QNetworkReply *reply); private: QNetworkAccessManager mManager; QNetworkReply *mCurrentDownload; }; #endif xyscan-3.31.orig/xyscanMarkerMaps.h0000644000175000017500000000241611377515067017562 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: April 22, 2009 //----------------------------------------------------------------------------- #ifndef xyscanMarkerMaps_h #define xyscanMarkerMaps_h static const char *marker_cross_xpm[] = { "21 21 2 1", " c None", "g c #00FF00", "ggggggg ggggggg", "g g", "g g", "g g", "g g g", "g g g", "g g g", " g ", " g ", " g ", " ggggggggggggg ", " g ", " g ", " g ", "g g g", "g g g", "g g g", "g g", "g g", "g g", "ggggggg ggggggg", }; #endif xyscan-3.31.orig/xyscanWindow.cpp0000644000175000017500000025656011564114154017323 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2011 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: May 15, 2011 //----------------------------------------------------------------------------- #include #include #include #include #include #include #include "xyscanWindow.h" #include "xyscanVersion.h" #include "xyscanAbout.h" #include "xyscanHelpBrowser.h" #include "xyscanMarkerMaps.h" #include "xyscanUpdater.h" using namespace std; xyscanWindow::xyscanWindow() { // // Handle command line argument (filename). // Since this is a GUI application this is // only here for convinience. // bool openFileafterInit = false; QString fileToOpen; QStringList arguments = QCoreApplication::arguments(); QString usage(tr("Usage: xyscan -v\n xyscan filename")); arguments.takeFirst(); // remove the first argument, which is the program's name if (arguments.size() > 1) { cout << qPrintable(usage) << endl; exit(0); } else if (arguments.size() == 1) { QString arg = arguments.at(0); if (arg[0] == '-') { if (arg == "-v") cout << "xyscan " << VERSION << qPrintable(tr(" (build ")) << __DATE__ << ")" << endl; else cout << qPrintable(usage) << endl; exit(0); } else { if (QFile::exists(arg)) { openFileafterInit = true; // defer until all initialization is done fileToOpen = arg; } else { cerr << qPrintable(tr("File '")) << qPrintable(arg) << qPrintable(tr("' does not exist.")) << endl; exit(1); } } } // // Platform specifics // #if defined(Q_WS_MAC) setAttribute(Qt::WA_MacSmallSize); #endif // // Create widgets, docks, and dialogs // mImageView = new QGraphicsView; mImageScene = new QGraphicsScene(mImageView); mImageView->setScene(mImageScene); mImageView->setCacheMode(QGraphicsView::CacheBackground); mImageView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate); setCentralWidget(mImageView); mImageScene->installEventFilter(this); mAboutDialog = new xyscanAbout(this); mImageAngle = 0; mImageScale = 1; mCrosshairColor = Qt::red; createMenuActions(); createMenus(); createStatusBar(); createDockWindows(); createMarker(); createCrosshair(); createMarkerActions(); createHelpBrowser(); // // Connect remaining signals and slots // connect(mLogXRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateWhenAxisScaleChanged())); connect(mLogYRadioButton, SIGNAL(toggled(bool)), this, SLOT(updateWhenAxisScaleChanged())); connect(mAngleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(rotateImage(double))); connect(mScaleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(scaleImage(double))); // // Set main window properties // setWindowTitle("xyscan"); setWindowIcon(QIcon(QString::fromUtf8(":/images/xyscanIcon.png"))); QSize s = minimumSizeHint(); resize(QSize(900, s.height())); // // Initialize remaining data member // mCurrentPixmap = 0; for (int i=0; i<4; i++) mMarkerPixel[i] = mMarkerPlotCoordinate[i] = 0; mDataSaved = true; mClearHistoryAction->setDisabled(true); // // Read the references from file // loadSettings(); // // Disable all buttons that are useless // when no image is loaded ... // mSetLowerXButton->setDisabled(true); mSetUpperXButton->setDisabled(true); mSetLowerYButton->setDisabled(true); mSetUpperYButton->setDisabled(true); mLogXRadioButton->setDisabled(true); mLogYRadioButton->setDisabled(true); mAngleSpinBox->setDisabled(true); mScaleSpinBox->setDisabled(true); mErrorXModeComboBox->setDisabled(true); mErrorYModeComboBox->setDisabled(true); mSaveAction->setDisabled(true); mPrintAction->setDisabled(true); mShowPrecisionAction->setDisabled(true); mDeleteLastAction->setDisabled(true); mDeleteAllAction->setDisabled(true); mEditCommentAction->setDisabled(true); mEditCrosshairColorAction->setDisabled(true); // // If valid file was given at command line open it now // if (openFileafterInit) openFromFile(fileToOpen); } xyscanWindow::~xyscanWindow() { /* no op */ } void xyscanWindow::about() { mAboutDialog->show(); } void xyscanWindow::addToTable(double x, double y, double dxl, double dxu, double dyl, double dyu) { // // Store data into new table row // QString str; int nrows = mTableWidget->rowCount(); mTableWidget->insertRow(nrows); str.setNum(x); mTableWidget->setItem(nrows, 0, new QTableWidgetItem(str)); mTableWidget->item(nrows, 0)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); str.setNum(y); mTableWidget->setItem(nrows, 1, new QTableWidgetItem(str)); mTableWidget->item(nrows, 1)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); str.setNum(dxl); mTableWidget->setItem(nrows, 2, new QTableWidgetItem(str)); mTableWidget->item(nrows, 2)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); str.setNum(dxu); mTableWidget->setItem(nrows, 3, new QTableWidgetItem(str)); mTableWidget->item(nrows, 3)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); str.setNum(dyl); mTableWidget->setItem(nrows, 4, new QTableWidgetItem(str)); mTableWidget->item(nrows, 4)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); str.setNum(dyu); mTableWidget->setItem(nrows, 5, new QTableWidgetItem(str)); mTableWidget->item(nrows, 5)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); mTableWidget->scrollToBottom(); mDataSaved = false; // // Enable all buttons that make sense once // at least one data point is scanned ... // mSaveAction->setDisabled(false); mPrintAction->setDisabled(false); mDeleteLastAction->setDisabled(false); mDeleteAllAction->setDisabled(false); } void xyscanWindow::checkForUpdates() { mUpdater.checkForNewVersion(QUrl("http://rhig.physics.yale.edu/~ullrich/xyscanDistributionPage/xyscanLatestVersion.xml")); } void xyscanWindow::clearHistory() { // // Remove all stored recent files from submenu (File/Open Recent) // for (int i = 0; i < mRecentFiles.size(); ++i) { mRecentFileAction[i]->setVisible(false); } mRecentFiles.clear(); mClearHistoryAction->setDisabled(true); } void xyscanWindow::closeEvent(QCloseEvent* e) { // // Reimplement, otherwise pressing the x button on the // window frame closes the applications and we have // no chance for storing the settings and checking // for unsaved data. // finish(); e->ignore(); // exit initiated in finish() or not at all } void xyscanWindow::createCoordinateWidget(QWidget *form) { QGridLayout *gridLayout = new QGridLayout(form); QVBoxLayout *vboxLayout = new QVBoxLayout(); vboxLayout->setContentsMargins(0, 0, 0, 0); QLabel *label_5 = new QLabel(form); vboxLayout->addWidget(label_5); QHBoxLayout *hboxLayout = new QHBoxLayout(); QLabel *label_2 = new QLabel(form); hboxLayout->addWidget(label_2); mPixelXDisplay = new QLineEdit(form); mPixelXDisplay->setReadOnly(true); mPixelXDisplay->setText(tr("N/A")); hboxLayout->addWidget(mPixelXDisplay); QLabel *label_1 = new QLabel(form); hboxLayout->addWidget(label_1); mPixelYDisplay = new QLineEdit(form); mPixelYDisplay->setReadOnly(true); mPixelYDisplay->setText(tr("N/A")); hboxLayout->addWidget(mPixelYDisplay); vboxLayout->addLayout(hboxLayout); QLabel *label_6 = new QLabel(form); vboxLayout->addWidget(label_6); QHBoxLayout *hboxLayout1 = new QHBoxLayout(); QLabel *label_3 = new QLabel(form); hboxLayout1->addWidget(label_3); mPlotXDisplay = new QLineEdit(form); mPlotXDisplay->setReadOnly(true); mPlotXDisplay->setText(tr("N/A")); hboxLayout1->addWidget(mPlotXDisplay); QLabel *label_4 = new QLabel(form); hboxLayout1->addWidget(label_4); mPlotYDisplay = new QLineEdit(form); mPlotYDisplay->setReadOnly(true); mPlotYDisplay->setText(tr("N/A")); hboxLayout1->addWidget(mPlotYDisplay); vboxLayout->addLayout(hboxLayout1); gridLayout->addLayout(vboxLayout, 0, 0, 1, 1); QSpacerItem *spacerItem = new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout->addItem(spacerItem, 1, 0, 1, 1); // // Set text of all labels // label_5->setText(tr("Pixel:")); label_2->setText(tr("x:")); label_1->setText(tr("y:")); label_6->setText(tr("Plot Coordinates:")); label_3->setText(tr("x:")); label_4->setText(tr("y:")); } void xyscanWindow::createCrosshair() { QRectF r = mImageScene->sceneRect(); mCrosshairH = new QGraphicsLineItem(-5000, 0, 5000, 0); // big enough for all evantualities mCrosshairH->setZValue(2); mCrosshairH->setPen(QPen(mCrosshairColor)); mCrosshairH->setVisible(false); mImageScene->addItem(mCrosshairH); mCrosshairV = new QGraphicsLineItem(0, -5000, 0, 5000); mCrosshairV->setZValue(2); mCrosshairV->setPen(QPen(mCrosshairColor)); mCrosshairV->setVisible(false); mImageScene->addItem(mCrosshairV); mImageScene->setSceneRect(r); // don't alter the size of the scene yet, // otherwise scrollbars appear for an empty canvas } void xyscanWindow::createDockWindows() { mTransformDock = new QDockWidget(tr("Plot Adjustments"), this); mTransformDock->setVisible(false); mTransformDock->setFloating(true); mTransformDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); QWidget *transformDockContents = new QWidget(); createTransformWidget(transformDockContents); mTransformDock->setWidget(transformDockContents); addDockWidget(Qt::RightDockWidgetArea, mTransformDock); mTransformDock->toggleViewAction()->setText(tr("Plot &Adjustments")); mViewMenu->addAction(mTransformDock->toggleViewAction()); mCoordinateDock = new QDockWidget(tr("Coordinates"), this); mCoordinateDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); QWidget *coordinateDockContents = new QWidget(); createCoordinateWidget(coordinateDockContents); mCoordinateDock->setWidget(coordinateDockContents); addDockWidget(Qt::RightDockWidgetArea, mCoordinateDock); mCoordinateDock->toggleViewAction()->setText(tr("&Coordinate Display")); mViewMenu->addAction(mCoordinateDock->toggleViewAction()); mCoordinateDock->setVisible(true); mSettingsDock = new QDockWidget(tr("Settings"), this); mSettingsDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); QWidget *settingsDockContents = new QWidget(); createSettingsWidget(settingsDockContents); mSettingsDock->setWidget(settingsDockContents); addDockWidget(Qt::RightDockWidgetArea, mSettingsDock); mSettingsDock->toggleViewAction()->setMenuRole(QAction::NoRole); // Mac puts "seetings" otherwise in application menu mSettingsDock->toggleViewAction()->setText(tr("&Settings")); mViewMenu->addAction(mSettingsDock->toggleViewAction()); mSettingsDock->setVisible(true); mTableDock = new QDockWidget(tr("Data Table"), this); mTableDock->setVisible(false); mTableDock->setAllowedAreas(Qt::BottomDockWidgetArea | Qt::TopDockWidgetArea); QWidget *tableDockContents = new QWidget(); createTableWidget(tableDockContents); mTableDock->setWidget(tableDockContents); addDockWidget(Qt::BottomDockWidgetArea, mTableDock); mTableDock->toggleViewAction()->setText(tr("&Data Table")); mViewMenu->addAction(mTableDock->toggleViewAction()); } void xyscanWindow::createMarker() { QColor color = Qt::gray; mMarker[mXLower] = new QGraphicsLineItem(0, -5000, 0, 5000); mMarker[mXLower]->setPen(QPen(color)); mMarker[mXLower]->setZValue(1); mImageScene->addItem(mMarker[mXLower]); mMarker[mXLower]->setVisible(false); mMarker[mXUpper] = new QGraphicsLineItem(0, -5000, 0, 5000); mMarker[mXUpper]->setPen(QPen(color)); mMarker[mXUpper]->setZValue(1); mImageScene->addItem(mMarker[mXUpper]); mMarker[mXUpper]->setVisible(false); mMarker[mYLower] = new QGraphicsLineItem(-5000, 0, 5000, 0); mMarker[mYLower]->setPen(QPen(color)); mMarker[mYLower]->setZValue(1); mImageScene->addItem(mMarker[mYLower]); mMarker[mYLower]->setVisible(false); mMarker[mYUpper] = new QGraphicsLineItem(-5000, 0, 5000, 0); mMarker[mYUpper]->setPen(QPen(color)); mMarker[mYUpper]->setZValue(1); mImageScene->addItem(mMarker[mYUpper]); mMarker[mYUpper]->setVisible(false); QPixmap imgpm(marker_cross_xpm); mPointMarker = new QGraphicsPixmapItem(imgpm, 0); mImageScene->addItem(mPointMarker); mPointMarker->setZValue(1); mPointMarker->setVisible(false); mImageScene->setSceneRect(0, 0, 200, 200); // avoid sliders at beginning } void xyscanWindow::createHelpBrowser() { mHelpBrowser = 0; QString path = qApp->applicationDirPath() + "/docs"; QDir dir(path); if (!dir.exists()) { path = qApp->applicationDirPath() + "/../docs"; dir.setPath(path); } #if defined(Q_OS_MAC) if (!dir.exists()) { path = qApp->applicationDirPath() + "/../Resources/docs"; dir.setPath(path); } #endif // // For developing on Mac/Xcode only: avoids having to copy // the docs into the build substructure. // if (!dir.exists()) { path = "/Users/ullrich/Documents/Projects/xyscan/docs"; dir.setPath(path); } if (!dir.exists()) { QMessageBox::warning( 0, "xyscan", tr("Cannot find the directory holding the documentation (docs). " "No online help will be available. " "Check your installation and reinstall if necessary.")); return; } // // Now add the subdirectory for the appropriate // language (so far English and French only). // QLocale local = QLocale::system(); switch (local.language()) { case QLocale::French: path += "/fr"; break; case QLocale::English: default: path += "/en"; break; } QString descFile = path + "/doc.index"; QFileInfo file(descFile); if (file.exists()) mHelpBrowser = new xyscanHelpBrowser(descFile, path); else { QMessageBox::warning( 0, "xyscan", tr("Cannot find the index descriptor to setup the documentation. " "No online help will be available. " "Check your installation and reinstall if necessary.")); } } void xyscanWindow::createMenus() { mFileMenu = menuBar()->addMenu(tr("&File")); mFileMenu->addAction(mOpenAction); mRecentFilesMenu = mFileMenu->addMenu(tr("Open &Recent")); // submenu for (int i = 0; i < mMaxRecentFiles; ++i) mRecentFilesMenu->addAction(mRecentFileAction[i]); mRecentFilesMenu->addSeparator(); mRecentFilesMenu->addAction(mClearHistoryAction); mFileMenu->addAction(mSaveAction); mFileMenu->addSeparator(); mFileMenu->addAction(mPrintAction); #if !defined(Q_WS_MAC) mFileMenu->addSeparator(); #endif mFileMenu->addAction(mFinishAction); mEditMenu = menuBar()->addMenu(tr("&Edit")); mEditMenu->addAction(mEditCrosshairColorAction); mEditMenu->addSeparator(); mEditMenu->addAction(mPasteImageAction); mEditMenu->addSeparator(); mEditMenu->addAction(mDeleteLastAction); mEditMenu->addAction(mDeleteAllAction); mEditMenu->addSeparator(); mEditMenu->addAction(mEditCommentAction); mViewMenu = menuBar()->addMenu(tr("&View")); mViewMenu->addAction(mShowPrecisionAction); mViewMenu->addSeparator(); // dock windows toggle menues added later in createDockWindows() mHelpMenu = menuBar()->addMenu(tr("&Help")); mHelpMenu->addAction(mCheckForUpdatesAction); mHelpMenu->addSeparator(); mHelpMenu->addAction(mShowTooltipsAction); mHelpMenu->addAction(mHelpAction); #if !defined(Q_WS_MAC) mHelpMenu->addSeparator(); #endif mHelpMenu->addAction(mAboutAction); // In application menu on MacOS/X } void xyscanWindow::createMenuActions() { mOpenAction = new QAction(tr("&Open..."), this); mOpenAction->setShortcut(QKeySequence::Open); connect(mOpenAction, SIGNAL(triggered()), this, SLOT(open())); for (int i = 0; i < mMaxRecentFiles; ++i) { mRecentFileAction[i] = new QAction(this); mRecentFileAction[i]->setVisible(false); connect(mRecentFileAction[i], SIGNAL(triggered()), this, SLOT(openRecent())); } mClearHistoryAction = new QAction(tr("&Clear History"), this); connect(mClearHistoryAction, SIGNAL(triggered()), this, SLOT(clearHistory())); mSaveAction = new QAction(tr("&Save..."), this); mSaveAction->setShortcut(QKeySequence::Save); // Qt::CTRL + Qt::Key_S); connect(mSaveAction, SIGNAL(triggered()), this, SLOT(save())); mPrintAction = new QAction(tr("&Print..."), this); mPrintAction->setShortcut(QKeySequence::Print); connect(mPrintAction, SIGNAL(triggered()), this, SLOT(print())); mFinishAction = new QAction(tr("&Quit xyscan"), this); mFinishAction->setShortcut(QKeySequence::Quit); connect(mFinishAction, SIGNAL(triggered()), this, SLOT(finish())); mPasteImageAction = new QAction(tr("&Paste Image"), this); mPasteImageAction->setShortcut(QKeySequence::Paste); connect(mPasteImageAction, SIGNAL(triggered()), this, SLOT(pasteImage())); mEditCrosshairColorAction = new QAction(tr("Crosshairs Color..."), this); connect(mEditCrosshairColorAction, SIGNAL(triggered()), this, SLOT(editCrosshairColor())); mDeleteLastAction = new QAction(tr("Delete &Last"), this); mDeleteLastAction->setShortcut(QKeySequence::Undo); connect(mDeleteLastAction, SIGNAL(triggered()), this, SLOT(deleteLast())); mDeleteAllAction = new QAction(tr("Delete &All"), this); connect(mDeleteAllAction, SIGNAL(triggered()), this, SLOT(deleteAll())); mEditCommentAction = new QAction(tr("&Comment..."), this); mEditCommentAction->setShortcut(QKeySequence::AddTab); connect(mEditCommentAction, SIGNAL(triggered()), this, SLOT(editComment())); mShowPrecisionAction = new QAction(tr("&Current Precision"), this); mShowPrecisionAction->setShortcut(Qt::CTRL + Qt::Key_I); connect(mShowPrecisionAction, SIGNAL(triggered()), this, SLOT(showPrecision())); mAboutAction = new QAction(tr("&About xyscan"), this); connect(mAboutAction, SIGNAL(triggered()), this, SLOT(about())); #if defined(Q_WS_MAC) mAboutAction->setMenuRole(QAction::AboutRole); #endif mHelpAction = new QAction(tr("&Documentation"), this); connect(mHelpAction, SIGNAL(triggered()), this, SLOT(help())); mShowTooltipsAction = new QAction(tr("&Tool Tips"), this); mShowTooltipsAction->setCheckable(true); mShowTooltipsAction->setChecked(false); connect(mShowTooltipsAction, SIGNAL(toggled(bool)), this, SLOT(showTooltips())); mCheckForUpdatesAction = new QAction(tr("&Check For Updates ..."), this); connect(mCheckForUpdatesAction, SIGNAL(triggered()), this, SLOT(checkForUpdates())); } void xyscanWindow::createMarkerActions() { mSetLowerXAction = new QAction(this); mSetUpperXAction = new QAction(this); mSetLowerYAction = new QAction(this); mSetUpperYAction = new QAction(this); connect(mSetLowerXButton, SIGNAL(clicked()), this, SLOT(setLowerXButton())); connect(mSetUpperXButton, SIGNAL(clicked()), this, SLOT(setUpperXButton())); connect(mSetLowerYButton, SIGNAL(clicked()), this, SLOT(setLowerYButton())); connect(mSetUpperYButton, SIGNAL(clicked()), this, SLOT(setUpperYButton())); (void) new QShortcut(Qt::CTRL + Qt::Key_1, this, SLOT(setLowerXButton())); (void) new QShortcut(Qt::CTRL + Qt::Key_2, this, SLOT(setUpperXButton())); (void) new QShortcut(Qt::CTRL + Qt::Key_3, this, SLOT(setLowerYButton())); (void) new QShortcut(Qt::CTRL + Qt::Key_4, this, SLOT(setUpperYButton())); } void xyscanWindow::createStatusBar() { statusBar()->showMessage(tr("Ready")); } void xyscanWindow::createSettingsWidget(QWidget *form) { QVBoxLayout *vboxLayout = new QVBoxLayout(form); // // Markers Group // QGroupBox *markersGroupBox = new QGroupBox(form); QGridLayout *gridLayout = new QGridLayout(markersGroupBox); QHBoxLayout *hboxLayout = new QHBoxLayout(); QLabel *label_1 = new QLabel(markersGroupBox); hboxLayout->addWidget(label_1); mSetLowerXButton = new QPushButton(markersGroupBox); hboxLayout->addWidget(mSetLowerXButton); mLowerXValueField = new QLineEdit(markersGroupBox); mLowerXValueField->setReadOnly(true); hboxLayout->addWidget(mLowerXValueField); gridLayout->addLayout(hboxLayout, 0, 0, 1, 1); QHBoxLayout *hboxLayout1 = new QHBoxLayout(); QLabel *label_2 = new QLabel(markersGroupBox); hboxLayout1->addWidget(label_2); mSetUpperXButton = new QPushButton(markersGroupBox); hboxLayout1->addWidget(mSetUpperXButton); mUpperXValueField = new QLineEdit(markersGroupBox); mUpperXValueField->setReadOnly(true); hboxLayout1->addWidget(mUpperXValueField); gridLayout->addLayout(hboxLayout1, 1, 0, 1, 1); QHBoxLayout *hboxLayout2 = new QHBoxLayout(); QLabel *label_3 = new QLabel(markersGroupBox); hboxLayout2->addWidget(label_3); mSetLowerYButton = new QPushButton(markersGroupBox); hboxLayout2->addWidget(mSetLowerYButton); mLowerYValueField = new QLineEdit(markersGroupBox); mLowerYValueField->setReadOnly(true); hboxLayout2->addWidget(mLowerYValueField); gridLayout->addLayout(hboxLayout2, 2, 0, 1, 1); QHBoxLayout *hboxLayout3 = new QHBoxLayout(); QLabel *label_4 = new QLabel(markersGroupBox); hboxLayout3->addWidget(label_4); mSetUpperYButton = new QPushButton(markersGroupBox); hboxLayout3->addWidget(mSetUpperYButton); mUpperYValueField = new QLineEdit(markersGroupBox); mUpperYValueField->setReadOnly(true); hboxLayout3->addWidget(mUpperYValueField); gridLayout->addLayout(hboxLayout3, 3, 0, 1, 1); vboxLayout->addWidget(markersGroupBox); // // Axis mode (lin/log) and rotate & scale of plot // QGroupBox *axisGroupBox = new QGroupBox(form); mLogXRadioButton = new QRadioButton(axisGroupBox); mLogXRadioButton->setAutoExclusive(false); mLogYRadioButton = new QRadioButton(axisGroupBox); mLogYRadioButton->setAutoExclusive(false); // not a toggle radio button QGridLayout *gridLayout1 = new QGridLayout(axisGroupBox); gridLayout1->addWidget(mLogXRadioButton, 1, 1); gridLayout1->addWidget(mLogYRadioButton, 1, 2); vboxLayout->addWidget(axisGroupBox); // // Errors Group // QGroupBox *errorsGroupBox = new QGroupBox(form); QGridLayout *gridLayout2 = new QGridLayout(errorsGroupBox); QHBoxLayout *hboxLayout5 = new QHBoxLayout(); QLabel *label_5 = new QLabel(errorsGroupBox); hboxLayout5->addWidget(label_5); mErrorXModeComboBox = new QComboBox(errorsGroupBox); hboxLayout5->addWidget(mErrorXModeComboBox); QSpacerItem *spacerItem1 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); hboxLayout5->addItem(spacerItem1); gridLayout2->addLayout(hboxLayout5, 0, 0, 1, 1); QHBoxLayout *hboxLayout6 = new QHBoxLayout(); QLabel *label_7 = new QLabel(errorsGroupBox); hboxLayout6->addWidget(label_7); mErrorYModeComboBox = new QComboBox(errorsGroupBox); hboxLayout6->addWidget(mErrorYModeComboBox); QSpacerItem *spacerItem2 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); hboxLayout6->addItem(spacerItem2); gridLayout2->addLayout(hboxLayout6, 1, 0, 1, 1); vboxLayout->addWidget(errorsGroupBox); QSpacerItem *spacerItem3 = new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); vboxLayout->addItem(spacerItem3); // // Set text of all labels // int strWidth = label_1->fontMetrics().width(tr("Upper X:")); label_1->setText(tr("Lower X:")); label_1->setFixedWidth(strWidth); mSetLowerXButton->setText(tr("Set")); mLowerXValueField->setText(tr("undefined")); label_2->setText(tr("Upper X:")); label_2->setFixedWidth(strWidth); mSetUpperXButton->setText(tr("Set")); mUpperXValueField->setText(tr("undefined")); label_3->setText(tr("Lower Y:")); label_3->setFixedWidth(strWidth); mSetLowerYButton->setText(tr("Set")); mLowerYValueField->setText(tr("undefined")); label_4->setText(tr("Upper Y:")); label_4->setFixedWidth(strWidth); mSetUpperYButton->setText(tr("Set")); mUpperYValueField->setText(tr("undefined")); axisGroupBox->setTitle(tr("Axis:")); mLogXRadioButton->setText(tr("Log X")); mLogYRadioButton->setText(tr("Log Y")); errorsGroupBox->setTitle(tr("Error Scan Mode:")); label_5->setText(tr("X-Error:")); mErrorXModeComboBox->clear(); mErrorXModeComboBox->insertItems(0, QStringList() << tr("No Scan") << tr("Asymmetric") << tr("Symmetric (mean)") << tr("Symmetric (max)") ); label_7->setText(tr("Y-Error:")); mErrorYModeComboBox->clear(); mErrorYModeComboBox->insertItems(0, QStringList() << tr("No Scan") << tr("Asymmetric") << tr("Symmetric (mean)") << tr("Symmetric (max)") ); } void xyscanWindow::createTableWidget(QWidget *form) { QGridLayout *gridLayout = new QGridLayout(form); mTableWidget = new QTableWidget(form); mTableWidget->setAutoScroll(true); mTableWidget->setTextElideMode(Qt::ElideMiddle); mTableWidget->setShowGrid(true); gridLayout->addWidget(mTableWidget, 0, 0, 1, 1); mTableWidget->setColumnCount(6); mTableWidget->setSortingEnabled(false); // no sorting do it manually QTableWidgetItem *colItem = new QTableWidgetItem(); colItem->setText(tr("x")); mTableWidget->setHorizontalHeaderItem(0, colItem); QTableWidgetItem *colItem1 = new QTableWidgetItem(); colItem1->setText(tr("y")); mTableWidget->setHorizontalHeaderItem(1, colItem1); QTableWidgetItem *colItem2 = new QTableWidgetItem(); colItem2->setText(tr("-dx")); mTableWidget->setHorizontalHeaderItem(2, colItem2); QTableWidgetItem *colItem3 = new QTableWidgetItem(); colItem3->setText(tr("+dx")); mTableWidget->setHorizontalHeaderItem(3, colItem3); QTableWidgetItem *colItem4 = new QTableWidgetItem(); colItem4->setText(tr("-dy")); mTableWidget->setHorizontalHeaderItem(4, colItem4); QTableWidgetItem *colItem5 = new QTableWidgetItem(); colItem5->setText(tr("+dy")); mTableWidget->setHorizontalHeaderItem(5, colItem5); mTableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch); mTableWidget->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents); mTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); // needed ? } void xyscanWindow::createTransformWidget(QWidget *form) { QGridLayout *gridLayout = new QGridLayout(form); // info label on top mPlotInfoLabel = new QLabel(form); mPlotInfoLabel->setText(tr("No plot loaded")); gridLayout->addWidget(mPlotInfoLabel, 0, 0, 1, -1); QFrame *line = new QFrame(form); line->setFrameShape(QFrame::HLine); line->setFrameShadow(QFrame::Sunken); gridLayout->addWidget(line, 1, 0, 1, -1); // angle/rotate spin box with label QHBoxLayout *hboxLayoutAngle = new QHBoxLayout(); QLabel* labelAngle = new QLabel(form); labelAngle->setText(tr("Rotate:")); hboxLayoutAngle->addWidget(labelAngle); mAngleSpinBox = new QDoubleSpinBox(form); mAngleSpinBox->setMinimum(-90); mAngleSpinBox->setMaximum(180); mAngleSpinBox->setSingleStep(0.05); mAngleSpinBox->setAccelerated(true); mAngleSpinBox->setValue(mImageAngle); hboxLayoutAngle->addWidget(mAngleSpinBox); QSpacerItem *horizontalSpacer = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); hboxLayoutAngle->addItem(horizontalSpacer); gridLayout->addLayout(hboxLayoutAngle, 2, 0, 1, 1); // scale spin box with label QHBoxLayout *hboxLayoutScale = new QHBoxLayout(); QLabel* labelScale = new QLabel(form); labelScale->setText(tr("Scale:")); hboxLayoutScale->addWidget(labelScale); mScaleSpinBox = new QDoubleSpinBox(form); mScaleSpinBox->setMinimum(0.10); mScaleSpinBox->setMaximum(10); mScaleSpinBox->setSingleStep(0.05); mScaleSpinBox->setAccelerated(true); mScaleSpinBox->setValue(mImageScale); hboxLayoutScale->addWidget(mScaleSpinBox); QSpacerItem *horizontalSpacer2 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); hboxLayoutScale->addItem(horizontalSpacer2); gridLayout->addLayout(hboxLayoutScale, 2, 1, 1, 1); QSpacerItem *horizontalSpacer3 = new QSpacerItem(1, 1, QSizePolicy::Expanding, QSizePolicy::Minimum); gridLayout->addItem(horizontalSpacer3, 1, 2, 1, 1); QSpacerItem *verticalSpacer = new QSpacerItem(1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout->addItem(verticalSpacer, 3, 0, 1, 1); } void xyscanWindow::deleteLast() { int nrows = mTableWidget->rowCount(); if (nrows) { mTableWidget->removeRow(nrows); mTableWidget->setRowCount(nrows-1); } } void xyscanWindow::deleteAll() { mTableWidget->clearContents(); mTableWidget->setRowCount(0); } void xyscanWindow::editComment() { bool ok; QString txt = QInputDialog::getText(this, tr("xyscan - Comment"), tr("The following comment will be written " "together with the data when saved to file or when printed:\t"), QLineEdit::Normal, mUserComment, &ok); if (ok) mUserComment = txt; } void xyscanWindow::editCrosshairColor() { QColor newColor = QColorDialog::getColor (mCrosshairColor, this); if (newColor.isValid()) mCrosshairColor = newColor; mCrosshairV->setPen(QPen(mCrosshairColor)); mCrosshairH->setPen(QPen(mCrosshairColor)); } void xyscanWindow::ensureCursorVisible() { QRectF rect(mCrosshairH->pos().x()-25, mCrosshairV->pos().y()-25, 50, 50); mImageView->ensureVisible(rect); } bool xyscanWindow::eventFilter(QObject *obj, QEvent *event) { // // If method retuns true the event stops here otherwise its // passed down. Here we catch all dispatched events from the // image scene (canvas). // static bool leftMousePressedNearCrosshair = false; QGraphicsSceneMouseEvent *mevt; if (obj == mImageScene) { if (event->type() == QEvent::GraphicsSceneDrop) { handleDropEvent(dynamic_cast(event)); // to complex to handle here return true; } else if (event->type() == QEvent::KeyPress) { handleKeyEvent(dynamic_cast(event)); // to complex to handle here return true; } else if (event->type() == QEvent::GraphicsSceneMousePress) { mevt = dynamic_cast(event); update(); QPointF mpos = mevt->scenePos(); QPointF cpos(mCrosshairH->pos().x(), mCrosshairV->pos().y()); double d = (mpos.x()-cpos.x())*(mpos.x()-cpos.x()) + (mpos.y()-cpos.y())*(mpos.y()-cpos.y()); if (d < 50) leftMousePressedNearCrosshair = true; return true; } else if (event->type() == QEvent::GraphicsSceneMouseRelease) { leftMousePressedNearCrosshair = false; return true; } // else if (event->type() == QEvent::GraphicsSceneMouseMove && leftMousePressedNearCrosshair) { // improvement from Valerie Fine (Oct 28, 2008) else if ( (event->type() == QEvent::GraphicsSceneMouseMove && leftMousePressedNearCrosshair ) || event->type() == QEvent::GraphicsSceneMouseDoubleClick) { mevt = dynamic_cast(event); // // In principle straighforward except for the case // where we scan for errors (x, y or both) and one // line is hidden. The idea is that for an x-error scan // mCrosshairH is hidden and stays at const y and // for an y error scan mCrosshairV is hidden and stays // at const x. So when lines are hidden (which is // only the case during the error scan) we have to keep // one coordinate const. // if (mCrosshairH->isVisible() && mCrosshairV->isVisible()) { mCrosshairH->setPos(mevt->scenePos()); mCrosshairV->setPos(mevt->scenePos()); } else if (mCrosshairH->isVisible() && !mCrosshairV->isVisible()) { QPointF pos = QPointF(mCrosshairV->pos().x(), mevt->scenePos().y()); mCrosshairV->setPos(pos); mCrosshairH->setPos(pos); } else if (!mCrosshairH->isVisible() && mCrosshairV->isVisible()) { QPointF pos(mevt->scenePos().x(), mCrosshairH->pos().y()); mCrosshairH->setPos(pos); mCrosshairV->setPos(pos); } updatePixelDisplay(); updatePlotCoordinateDisplay(); ensureCursorVisible(); return true; } else return false; } return QObject::eventFilter(obj, event); // standard event processing } void xyscanWindow::finish() { // // Gracefully end xyscan. // Check for unsaved data and write settings/preferences. // while (mCurrentPixmap && mTableWidget->rowCount() && !mDataSaved) { int ret = QMessageBox::warning(this, "xyscan", tr("You have unsaved data. Quitting now " "will cause loss of scanned data.\n" "Do you want to save the data?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Save); if (ret == QMessageBox::Save) save(); else if (ret == QMessageBox::Cancel) return; else break; } writeSettings(); QApplication::exit(0); } void xyscanWindow::handleDropEvent(QGraphicsSceneDragDropEvent* event) { // // This deals with the dropping of files/desktop-icons onto // the xyscan canvas. Easier than I thought. // if (!event->mimeData()->hasUrls()) return; QList url = event->mimeData()->urls(); QString filename = url[0].toLocalFile(); openFromFile(filename); } void xyscanWindow::handleKeyEvent(QKeyEvent* k) { // // This is where most of the action happens. // Since the logic is really mind-blowing, // especially for the x and y-error scan // a state machine is used which determines // what is allowed at which point. // static QPointF originalHPosition; static QPointF originalVPosition; static QPointF xy(0,0); static QPointF errorX(0,0); static QPointF errorY(0,0); QPointF point; static bool previousShiftPressed = false; static int previousKey = 0; bool shiftPressed = false; int key = 0; // // There's a slight problem in Qt when Shift+arrow // is pressed continuously: the Shift key gets lossed. // We repair that by checking for 'AutoRepeat' and // remembering the Shift key state before 'AutoRepeat' // was signaled. // if (k->isAutoRepeat() && !(k->key() == Qt::Key_Space)) { shiftPressed = previousShiftPressed; key = previousKey; } else { shiftPressed = k->modifiers() & Qt::ShiftModifier; key = k->key(); } previousShiftPressed = shiftPressed; previousKey = key; double dx_step = 1; // simple move (arrow) double dy_step = 1; double dx_jump = 10; // fast (shift+arrow) double dy_jump = 10; double dx = shiftPressed ? dx_jump : dx_step; double dy = shiftPressed ? dy_jump : dy_step; // Pass settings (x-, y-error scan) to the state machine. mStateMachine.setScanErrorXSelected(mErrorXModeComboBox->currentIndex()); mStateMachine.setScanErrorYSelected(mErrorYModeComboBox->currentIndex()); switch(key) { case Qt::Key_Left: if (mCrosshairV && mStateMachine.allowKeyLeft()) { mCrosshairV->setPos(mCrosshairV->pos() + QPointF(-dx, 0)); mCrosshairH->setPos(mCrosshairH->pos() + QPointF(-dx, 0)); } break; case Qt::Key_Right: if (mCrosshairV && mStateMachine.allowKeyRight()) { mCrosshairV->setPos(mCrosshairV->pos() + QPointF(dx, 0)); mCrosshairH->setPos(mCrosshairH->pos() + QPointF(dx, 0)); } break; case Qt::Key_Up: if (mCrosshairH && mStateMachine.allowKeyUp()) { mCrosshairV->setPos(mCrosshairV->pos() + QPointF(0, -dy)); mCrosshairH->setPos(mCrosshairH->pos() + QPointF(0, -dy)); } break; case Qt::Key_Down: if (mCrosshairH && mStateMachine.allowKeyDown()) { mCrosshairV->setPos(mCrosshairV->pos() + QPointF(0, dy)); mCrosshairH->setPos(mCrosshairH->pos() + QPointF(0, dy)); } break; case Qt::Key_Space: if (readyForScan()) { if (mStateMachine.allowXYScan()) { xy = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); originalHPosition = mCrosshairH->pos(); // later we return to this point after errors are scanned originalVPosition = mCrosshairV->pos(); mStateMachine.setXYScanDone(true); } if (mStateMachine.disableSettingsMenu()) { mSetLowerXButton->setDisabled(true); mSetUpperXButton->setDisabled(true); mSetLowerYButton->setDisabled(true); mSetUpperYButton->setDisabled(true); mErrorXModeComboBox->setDisabled(true); mErrorYModeComboBox->setDisabled(true); mLogXRadioButton->setDisabled(true); mLogYRadioButton->setDisabled(true); } if (mStateMachine.doPrepareErrorXScan()) { mCrosshairH->hide(); // // Set a marker (cross) where the original point was. // This helps remembering the point in case there are // many close by points. Removed once the errors are // all scanned. // QPointF pos(originalVPosition.x(), originalHPosition.y()); pos -= QPointF(mPointMarker->pixmap().width()/2, mPointMarker->pixmap().height()/2); mPointMarker->setPos(pos); mPointMarker->show(); statusBar()->showMessage(tr("Scan x-error (-dx): move crosshair to end of left error bar and press [space]")); mStateMachine.setErrorXScanPrepared(true); break; } if (mStateMachine.allowScanXLeft()) { point = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); errorX.setX(point.x() - xy.x()); statusBar()->showMessage(tr("Scan x-error (+dx): move crosshair to end of right error bar and press [space]")); mStateMachine.setScanXLeftDone(true); break; } if (mStateMachine.allowScanXRight()) { point = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); errorX.setY(point.x() - xy.x()); point = errorX; if (point.x() < 0) { errorX.setX(fabs(point.x())); errorX.setY(point.y()); } else { errorX.setX(fabs(point.y())); errorX.setY(point.x()); } mStateMachine.setScanXRightDone(true); } if (mStateMachine.removeErrorXScanSetup()) { mPointMarker->hide(); mCrosshairH->show(); mCrosshairH->setPos(originalHPosition); mCrosshairV->setPos(originalVPosition); point = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); mStateMachine.setErrorXScanSetupRemoved(true); } if (mStateMachine.allowScanYLower()) { point = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); errorY.setX(point.y() - xy.y()); statusBar()->showMessage(tr("Scan y-error (+dy): move crosshair to end of upper error bar and press [space]")); mStateMachine.setScanYLowerDone(true); break; } if (mStateMachine.allowScanYUpper()) { point = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); errorY.setY(point.y() - xy.y()); point = errorY; if (point.x() < 0) { errorY.setX(fabs(point.x())); errorY.setY(point.y()); } else { errorY.setX(fabs(point.y())); errorY.setY(point.x()); } mStateMachine.setScanYUpperDone(true); } if (mStateMachine.doPrepareErrorYScan()) { mCrosshairV->hide(); // // Set a marker (cross) where the original point was. // This helps remembering the point in case there are // many close by points. Removed once the errors are // all scanned. // QPointF pos(originalVPosition.x(), originalHPosition.y()); pos -= QPointF(mPointMarker->pixmap().width()/2, mPointMarker->pixmap().height()/2); mPointMarker->setPos(pos); mPointMarker->show(); statusBar()->showMessage(tr("Scan y-error (-dy): " "move crosshair to end of lower " "error bar and press [space]")); mStateMachine.setErrorYScanPrepared(true); break; } if (mStateMachine.removeErrorYScanSetup()) { mPointMarker->hide(); mCrosshairV->show(); mCrosshairV->setPos(originalVPosition); mCrosshairH->setPos(originalHPosition); point = scan(); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); mStateMachine.setErrorYScanSetupRemoved(true); } if (mStateMachine.enableSettingsMenu()) { mSetLowerXButton->setDisabled(false); mSetUpperXButton->setDisabled(false); mSetLowerYButton->setDisabled(false); mSetUpperYButton->setDisabled(false); mErrorXModeComboBox->setDisabled(false); mErrorYModeComboBox->setDisabled(false); mLogXRadioButton->setDisabled(false); mLogYRadioButton->setDisabled(false); } // // Calculate the x,y errors according to the selected mode // and fill data into table. // double firstY = fabs(errorY.x()); double secondY = fabs(errorY.y()); double firstX = fabs(errorX.x()); double secondX = fabs(errorX.y()); if (mErrorXModeComboBox->currentIndex() == mMax) { // max(lower, upper) firstX = firstX > secondX ? firstX : secondX; secondX = firstX; } else if (mErrorXModeComboBox->currentIndex() == mAverage) { // avg(lower, upper) firstX = (firstX+secondX)/2; secondX = firstX; } if (mErrorYModeComboBox->currentIndex() == mMax) { firstY = firstY > secondY ? firstY : secondY; secondY = firstY; } else if (mErrorYModeComboBox->currentIndex() == mAverage) { firstY = (firstY+secondY)/2; secondY = firstY; } if (mStateMachine.allowWriteXY()) { addToTable(xy.x(), xy.y(), 0, 0, 0, 0); statusBar()->showMessage(tr("Data point stored")); mStateMachine.setDataWritten(true); } else if (mStateMachine.allowWriteXYErrorY()) { addToTable(xy.x(), xy.y(), 0, 0, firstY, secondY); statusBar()->showMessage(tr("Data point and y-error stored")); mStateMachine.setDataWritten(true); } else if (mStateMachine.allowWriteXYErrorX()) { addToTable(xy.x(), xy.y(), firstX, secondX, 0, 0); statusBar()->showMessage(tr("Data point and x-error stored")); mStateMachine.setDataWritten(true); } else if (mStateMachine.allowWriteXYErrorXErrorY()) { addToTable(xy.x(), xy.y(), firstX, secondX, firstY, secondY); statusBar()->showMessage(tr("Data point, x- and y-errors stored")); mStateMachine.setDataWritten(true); } } else { QMessageBox::information(0, "xyscan", tr("Cannot scan yet. Not sufficient information available to perform " "the coordinate transformation. You need to define 2 points on the " "x-axis (x1 & x1) and 2 on the y-axis (y1 & y2).")); } break; default: k->ignore(); break; } // // Update coordinate display if an arrow key was pressed // if (key == Qt::Key_Left || key == Qt::Key_Right || key == Qt::Key_Up || key == Qt::Key_Down) { updatePixelDisplay(); updatePlotCoordinateDisplay(); ensureCursorVisible(); } } void xyscanWindow::help() { if (mHelpBrowser) mHelpBrowser->show(); else QMessageBox::warning( 0, "xyscan", tr("Sorry no help available.\n" "Documentation files are missing in this installation. " "Check your installation and reinstall if necessary.")); } void xyscanWindow::loadPixmap(QPixmap* pixmap) { // // All pixmaps/images displayed in xyscan go through here // QApplication::setOverrideCursor(Qt::WaitCursor); if (mCurrentPixmap) delete mCurrentPixmap; mImageAngle = 0; mImageScale = 1; mCurrentPixmap = mImageScene->addPixmap(*pixmap); mCurrentPixmap->setZValue(0); mImageScene->setSceneRect(0, 0, pixmap->width(), pixmap->height()); update(); // // Not bigger than the desktop // if (QApplication::desktop()->width() > width() + 50 && QApplication::desktop()->height() > height() + 50) show(); else showMaximized(); // // Show crosshair and position // mCrosshairV->setVisible(true); mCrosshairH->setVisible(true); mCrosshairH->setPos(pixmap->width()/2,pixmap->height()/2); mCrosshairV->setPos(pixmap->width()/2,pixmap->height()/2); updatePixelDisplay(); updatePlotCoordinateDisplay(); // sets display to N/A if not ready // // No markers shown yet // resetMarker(); // // Remove all traces of the previous scan // mUserComment.clear(); mDataSaved = true; mAngleSpinBox->setValue(mImageAngle); mScaleSpinBox->setValue(mImageScale); deleteAll(); // clear table // // Enable all buttons that make sense to use // once the image is loaded (or not). // mSetLowerXButton->setDisabled(false); mSetUpperXButton->setDisabled(false); mSetLowerYButton->setDisabled(false); mSetUpperYButton->setDisabled(false); mLogXRadioButton->setDisabled(false); mLogYRadioButton->setDisabled(false); mErrorXModeComboBox->setDisabled(false); mErrorYModeComboBox->setDisabled(false); mEditCommentAction->setDisabled(false); mEditCrosshairColorAction->setDisabled(false); mShowPrecisionAction->setDisabled(false); mAngleSpinBox->setDisabled(false); mScaleSpinBox->setDisabled(false); mPrintAction->setDisabled(true); statusBar()->showMessage(tr("Image loaded, no markers set")); // // Add info to Plot Adjustement window // QString txt = tr("" "
Info:" "
 Dimensions: %1x%2" "
 Depth: %3 bit" "
 Alpha channel: %4
") .arg(pixmap->width()).arg(pixmap->height()).arg(pixmap->depth()).arg(pixmap->hasAlphaChannel() ? tr("Yes"):tr("No")); mPlotInfoLabel->setText(txt); QApplication::restoreOverrideCursor(); } void xyscanWindow::loadSettings() { QSettings settings(QSettings::NativeFormat, QSettings::UserScope, "tu", "xyscan"); move(settings.value("xyscan/position", QPoint(75, 45)).toPoint()); bool toolTips = settings.value("xyscan/showToolTips", true).toBool(); mShowTooltipsAction->setChecked(toolTips); showTooltips(); // defines them if checked otherwise no effect mOpenFileDirectory = settings.value("xyscan/lastOpenFileDirectory", QDir::homePath()).toString(); mSaveFileDirectory = settings.value("xyscan/lastSaveFileDirectory", QDir::homePath()).toString(); mRecentFiles = settings.value("xyscan/recentFiles").toStringList(); while (mRecentFiles.size() > mMaxRecentFiles) mRecentFiles.removeLast(); for (int i = 0; i < mRecentFiles.size(); ++i) { QString text = tr("&%1 %2").arg(i + 1).arg(QFileInfo(mRecentFiles[i]).fileName()); mRecentFileAction[i]->setText(text); mRecentFileAction[i]->setData(mRecentFiles[i]); mRecentFileAction[i]->setVisible(true); } for (int j = mRecentFiles.size(); j < mMaxRecentFiles; ++j) mRecentFileAction[j]->setVisible(false); if (mRecentFiles.size()) mClearHistoryAction->setDisabled(false); QVariant var = settings.value("xyscan/crosshairColor", mCrosshairColor); QColor theColor = var.value(); if (theColor.isValid()) mCrosshairColor = theColor; mCrosshairV->setPen(QPen(mCrosshairColor)); mCrosshairH->setPen(QPen(mCrosshairColor)); } int xyscanWindow::numberOfMarkersSet() { int n = 0; for (int i=0; i<4; i++) if (mMarker[i]->isVisible()) n++; return n; } void xyscanWindow::open() { // // We get here when the user uses the open action // in the file menu. // Check which image formats are supported and use // them as filters for the file dialog. // QString formats(tr("Images (")); QList imgFormats = QImageReader::supportedImageFormats(); for (int i=0; i< imgFormats.size() ; i++) { formats += tr("*.%1").arg(QString(imgFormats[i])); if (i < imgFormats.size()-1) formats += tr(" "); } formats += tr(")"); QString filename = QFileDialog::getOpenFileName(this, tr("Open File"), mOpenFileDirectory, formats); if (filename.isEmpty()) return; openFromFile(filename); } void xyscanWindow::openFromFile(const QString& filename) { // // All pixmap/images to be loaded from file // are handled here. // mOpenFileDirectory = filename; mOpenFileDirectory.truncate(mOpenFileDirectory.lastIndexOf('/')); if (!QFile::exists(filename)) { QMessageBox::warning(0, "xyscan", tr("File '%1' does not exist.").arg(filename)); return; } QPixmap *pixmap = new QPixmap(filename); if (pixmap->isNull()) { QMessageBox::warning(0, "xyscan", tr("Cannot load pixmap/image from file '%1'. " "Either the file content is damaged or the " "image file format is not supported.").arg(filename)); return; } // // Store the file in the recent file list // and enable the referring actions in the // File submenu (Open Recent). // mClearHistoryAction->setDisabled(false); mRecentFiles.removeAll(filename); mRecentFiles.prepend(filename); while (mRecentFiles.size() > mMaxRecentFiles) mRecentFiles.removeLast(); for (int i = 0; i < mRecentFiles.size(); ++i) { QString text = tr("&%1 %2").arg(i + 1).arg(QFileInfo(mRecentFiles[i]).fileName()); mRecentFileAction[i]->setText(text); mRecentFileAction[i]->setData(mRecentFiles[i]); mRecentFileAction[i]->setVisible(true); } for (int j = mRecentFiles.size(); j < mMaxRecentFiles; ++j) mRecentFileAction[j]->setVisible(false); mCurrentSource = filename; loadPixmap(pixmap); } void xyscanWindow::openRecent() { QAction *action = qobject_cast(sender()); if (action) { QString filename = action->data().toString(); openFromFile(filename); } } void xyscanWindow::pasteImage() { QPixmap *pixmap = 0; QClipboard *clipboard = QApplication::clipboard(); QImage img = clipboard->image(); if (!img.isNull()) pixmap = new QPixmap(QPixmap::fromImage(img)); if (!pixmap || pixmap->isNull()) { QMessageBox::warning(0, "xyscan", tr("Cannot load image from clipboard.\n" "Either the clipboard does not contain an " "image or it contains an image in an " "unsupported image format.")); return; } mCurrentSource = "Clipboard"; loadPixmap(pixmap); } void xyscanWindow::print() { // // Create document for printing // QTextDocument document; document.setUseDesignMetrics(true); QTextCursor cursor(&document); QTextCharFormat textFormat; QFont fontVar("Helvetica",10); textFormat.setFont(fontVar); QFont fontFix("Courier",9); QTextCharFormat boldTableTextFormat; boldTableTextFormat.setFont(fontFix); boldTableTextFormat.setFontWeight(QFont::Bold); QTextCharFormat tableTextFormat; tableTextFormat.setFont(fontFix); cursor.movePosition(QTextCursor::Start); QTextFrame *topFrame = cursor.currentFrame(); // // Header // time_t now = time(0); cursor.insertText(tr("xyscan Version %1\n").arg(VERSION), textFormat); cursor.insertText(tr("Date: %1").arg(ctime(&now)), textFormat); cursor.insertText(tr("Scanned by: %1\n").arg(QDir::home().dirName()), textFormat); cursor.insertText(tr("Source: %1\n").arg(mCurrentSource), textFormat); cursor.insertText(tr("Comment: %1\n").arg(mUserComment), textFormat); cursor.insertBlock(); cursor.insertBlock(); // // Insert Plot // (don't scale image first - looks terrible even with Qt::SmoothTransformation) // cursor.setPosition(topFrame->lastPosition()); QImage original = mCurrentPixmap->pixmap().toImage(); document.addResource(QTextDocument::ImageResource, QUrl("image"), QVariant(original)); int maxSize = 200; // width or height double scale = 1; if (original.size().width() > maxSize || original.size().height() > maxSize) { if (original.size().width() > original.size().height()) scale = maxSize/static_cast(original.size().width()); else scale = maxSize/static_cast(original.size().height()); } QTextImageFormat imageFormat; imageFormat.setWidth(static_cast(scale*original.size().width())); imageFormat.setHeight(static_cast(scale*original.size().height())); imageFormat.setName("image"); cursor.insertImage(imageFormat); cursor.insertBlock(); cursor.insertBlock(); // // Table // cursor.setPosition(topFrame->lastPosition()); QTextTableFormat tableFormat; tableFormat.setBorder(1); tableFormat.setCellPadding(3); tableFormat.setCellSpacing(0); tableFormat.setAlignment(Qt::AlignLeft); tableFormat.setHeaderRowCount(1); QTextTable *table = cursor.insertTable (mTableWidget->rowCount()+1, mTableWidget->columnCount()+1, tableFormat); table->cellAt(0, 1).firstCursorPosition().insertText("x", boldTableTextFormat); table->cellAt(0, 2).firstCursorPosition().insertText("y", boldTableTextFormat); table->cellAt(0, 3).firstCursorPosition().insertText("-dx", boldTableTextFormat); table->cellAt(0, 4).firstCursorPosition().insertText("+dx", boldTableTextFormat); table->cellAt(0, 5).firstCursorPosition().insertText("-dy", boldTableTextFormat); table->cellAt(0, 6).firstCursorPosition().insertText("+dy", boldTableTextFormat); for (int irow = 0; irow < mTableWidget->rowCount(); irow++) { table->cellAt(irow+1, 0).firstCursorPosition().insertText(tr("%1").arg(irow+1), tableTextFormat); for (int icol = 0; icol < mTableWidget->columnCount(); icol++) { table->cellAt(irow+1, icol+1).firstCursorPosition().insertText(mTableWidget->item(irow,icol)->text(), tableTextFormat); } } // // Start printer dialog and print the document we just created // QPrinter printer(QPrinter::HighResolution); QPrintDialog *dlg = new QPrintDialog(&printer, this); dlg->setWindowTitle(tr("xyscan - Print")); if (dlg->exec() != QDialog::Accepted) return; document.print(&printer); statusBar()->showMessage(tr("Ready")); } bool xyscanWindow::readyForScan() { bool OK; bool allMarkers = (numberOfMarkersSet() == 4); bool allAxisValues = true; mLowerXValueField->text().toDouble(&OK); if (!OK) allAxisValues = false; mUpperXValueField->text().toDouble(&OK); if (!OK) allAxisValues = false; mLowerYValueField->text().toDouble(&OK); if (!OK) allAxisValues = false; mUpperYValueField->text().toDouble(&OK); if (!OK) allAxisValues = false; if (allMarkers && allAxisValues) return true; else return false; } void xyscanWindow::resetMarker() { mMarker[mXLower]->setVisible(false); mMarker[mXUpper]->setVisible(false); mMarker[mYLower]->setVisible(false); mMarker[mYUpper]->setVisible(false); mLowerXValueField->setText(tr("undefined")); mUpperXValueField->setText(tr("undefined")); mLowerYValueField->setText(tr("undefined")); mUpperYValueField->setText(tr("undefined")); mAngleSpinBox->setDisabled(false); mScaleSpinBox->setDisabled(false); } void xyscanWindow::rotateImage(double d) { QSize s = mCurrentPixmap->pixmap().size(); double x = s.width()/2; double y = s.height()/2; if (mCurrentPixmap) { // rotate around center mCurrentPixmap->setTransform(QTransform().translate(x, y).scale(mImageScale, mImageScale).rotate(-d).translate(-x, -y)); mImageAngle = -d; QRectF rectf = mCurrentPixmap->sceneBoundingRect(); mImageScene->setSceneRect(rectf); update(); } } void xyscanWindow::save() { QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), mSaveFileDirectory+QString("/xyscan.txt")); if (fileName.isEmpty()) return; mSaveFileDirectory = fileName; mSaveFileDirectory.truncate(mSaveFileDirectory.lastIndexOf('/')); QFile file(fileName); if (!file.open(QFile::WriteOnly | QFile::Text)) { QMessageBox::warning(this, "xyscan", tr("Cannot write file %1:\n%2.") .arg(fileName) .arg(file.errorString())); return; } bool writeAsRootMacro = fileName.endsWith(".C"); QTextStream out(&file); QApplication::setOverrideCursor(Qt::WaitCursor); int irow, icol; time_t now = time(0); if (writeAsRootMacro) { out << "//" << endl; out << "// ROOT macro: " << QFileInfo(file).fileName().toAscii() << " (autogenerated by xyscan)" << endl; out << "// xyscan Version " << VERSION << endl; out << "// Date: " << ctime(&now); out << "// Scanned by: " << QDir::home().dirName() << endl; out << "// Source: " << mCurrentSource << endl; out << "// Comment: " << mUserComment << endl; out << "//" << endl; out << "#include \"TROOT.h\"" << endl; out << "#include \"TH1D.h\"" << endl; out << "#include \"TCanvas.h\"" << endl; out << "#include \"TStyle.h\"" << endl; out << "#include \"TGraphAsymmErrors.h\"" << endl; out << endl; out << "void " << QFileInfo(file).baseName().toAscii() << "()" << endl; out << "{" << endl; out << " gROOT->SetStyle(\"Plain\");" << endl; out << " gStyle->SetOptFit(0);" << endl; out << " gStyle->SetOptStat(0);" << endl; out << endl; out << " TCanvas *c1 = new TCanvas(\"c1\",\"xyscan Data Display\",720,540);" << endl; out << " c1->SetTickx(1);" << endl; out << " c1->SetTicky(1);" << endl; out << " c1->SetBorderSize(1);" << endl; out << " c1->SetFillColor(0);" << endl; out << endl; double xmin = DBL_MAX; double xmax = DBL_MIN; double ymin = DBL_MAX; double ymax = DBL_MIN; for (irow=0; irow < mTableWidget->rowCount(); irow++) { double xx = mTableWidget->item(irow, 0)->text().toDouble(); double yy = mTableWidget->item(irow, 1)->text().toDouble(); double dxxlow = mTableWidget->item(irow, 2)->text().toDouble(); double dxxup = mTableWidget->item(irow, 3)->text().toDouble(); double dyylow = mTableWidget->item(irow, 4)->text().toDouble(); double dyyup = mTableWidget->item(irow, 5)->text().toDouble(); if (xx-dxxlow < xmin) xmin = xx-dxxlow; if (xx+dxxup > xmax) xmax = xx+dxxup; if (yy-dyylow < ymin) ymin = yy-dyylow; if (yy+dyyup > ymax) ymax = yy+dyyup; } if (mLogYRadioButton->isChecked()) { ymax *= 2; ymin /= 2; } else { ymax += (ymax-ymin)/10; ymin -= (ymax-ymin)/10; if (ymin > 0) ymin = 0; } if (mLogXRadioButton->isChecked()) { xmax *= 2; xmin /= 2; } else { xmax += (xmax-xmin)/10; xmin -= (xmax-xmin)/10; } out << " TH1D *histo = new TH1D(\"histo\",\"xyscan\", 100, " << xmin << ", " << xmax << ");" << endl; out << " histo->SetMinimum(" << ymin << ");" << endl; out << " histo->SetMaximum(" << ymax << ");" << endl; out << " histo->SetStats(false);" << endl; out << " histo->GetXaxis()->SetTitle(\"x\");" << endl; out << " histo->GetYaxis()->SetTitle(\"y\");" << endl; out << " gPad->SetLogy(" << (mLogYRadioButton->isChecked() ? 1 : 0) << ");" << endl; out << " gPad->SetLogx(" << (mLogXRadioButton->isChecked() ? 1 : 0) << ");" << endl; out << " histo->Draw();" << endl; out << endl; out << " double x[" << mTableWidget->rowCount() << "];" << endl; out << " double y[" << mTableWidget->rowCount() << "];" << endl; out << " double dxlow[" << mTableWidget->rowCount() << "];" << endl; out << " double dxup[" << mTableWidget->rowCount() << "];" << endl; out << " double dylow[" << mTableWidget->rowCount() << "];" << endl; out << " double dyup[" << mTableWidget->rowCount() << "];" << endl; out << " int n = 0;" << endl; for (irow=0; irow < mTableWidget->rowCount(); irow++) { out << " x[n] = " << mTableWidget->item(irow, 0)->text().toDouble() << ";\t"; out << "y[n] = " << mTableWidget->item(irow, 1)->text().toDouble() << ";\t"; out << "dxlow[n] = " << mTableWidget->item(irow, 2)->text().toDouble() << ";\t"; out << "dxup[n] = " << mTableWidget->item(irow, 3)->text().toDouble() << ";\t"; out << "dylow[n] = " << mTableWidget->item(irow, 4)->text().toDouble() << ";\t"; out << "dyup[n] = " << mTableWidget->item(irow, 5)->text().toDouble() << ";\t"; out << "n++;" << endl; } out << endl; out << " TGraphAsymmErrors *xyscan = new TGraphAsymmErrors(n, x, y, dxlow, dxup, dylow, dyup);" << endl; out << " xyscan->SetMarkerStyle(20);" << endl; out << " xyscan->SetMarkerColor(1);" << endl; out << " xyscan->Draw(\"PE same\");" << endl; out << "}" << endl; } else { out << "# xyscan Version " << VERSION << endl; out << "# Date: " << ctime(&now); out << "# Scanned by: " << QDir::home().dirName() << endl; out << "# Source: " << mCurrentSource << endl; out << "# Comment: " << mUserComment << endl; out << "# Format: x y -dx +dx -dy +dy" << endl; for (irow=0; irow < mTableWidget->rowCount(); irow++) { for (icol=0; icol < mTableWidget->columnCount(); icol++) { out << mTableWidget->item(irow, icol)->text() << "\t"; } out << endl; } out << "# EoF" << endl; } QApplication::restoreOverrideCursor(); if (writeAsRootMacro) statusBar()->showMessage(tr("Data saved in ROOT macro '%1'").arg(fileName)); else statusBar()->showMessage(tr("Data saved in '%1'").arg(fileName)); mDataSaved = true; } void xyscanWindow::scaleImage(double z) { QSize s = mCurrentPixmap->pixmap().size(); double x = s.width()/2; double y = s.height()/2; if (mCurrentPixmap) { // scale around center mCurrentPixmap->setTransform(QTransform().translate(x, y).scale(z, z).rotate(mImageAngle).translate(-x, -y)); mImageScale = z; QRectF rectf = mCurrentPixmap->sceneBoundingRect(); mImageScene->setSceneRect(rectf); update(); } } QPointF xyscanWindow::scan() { // // This is where the transformation from pixel // to graph coordinates is performed. // QPointF xy(0,0); bool logx = mLogXRadioButton->isChecked(); bool logy = mLogYRadioButton->isChecked(); // // Consistency and numerics checks // if (!readyForScan()) { QMessageBox::information(0, "xyscan", tr("Cannot scan yet. Not sufficient information available to perform " "the coordinate transformation. You need to define 2 points on the " "x-axis (x1 & x1) and 2 on the y-axis (y1 & y2).")); return xy; } if (fabs(mMarkerPixel[mXUpper]-mMarkerPixel[mXLower]) < 2) { QMessageBox::critical(0, "xyscan", tr("Error in calculating transformation.\n" "Markers on x-axis are less than two pixels apart. " "Cannot continue with current settings.")); return xy; } if (fabs(mMarkerPixel[mYUpper]-mMarkerPixel[mYLower]) < 2) { QMessageBox::critical(0, "xyscan", tr("Error in calculating transformation.\n" "Markers on y-axis are less than two pixels apart. " "Cannot continue with current settings.")); return xy; } if (logx) { if (mMarkerPlotCoordinate[mXUpper] <= 0 || mMarkerPlotCoordinate[mXLower] <= 0) { QMessageBox::critical(0, "xyscan", tr("Error in calculating transformation.\n" "Logarithmic x-axis selected but negative (or zero) values assigned to markers. " "Cannot continue with current settings.")); return xy; } } if (logy) { if (mMarkerPlotCoordinate[mYUpper] <= 0 || mMarkerPlotCoordinate[mYLower] <= 0) { QMessageBox::critical(0, "xyscan", tr("Error in calculating transformation.\n" "Logarithmic y-axis selected but negative (or zero) values assigned to markers. " "Cannot continue with current settings.")); return xy; } } mShowPrecisionAction->setDisabled(false); // OK from here on // // Coordinate transformation // double m11, m22, dx, dy; if (logx) { m11 = (log10(mMarkerPlotCoordinate[mXUpper])-log10(mMarkerPlotCoordinate[mXLower]))/(mMarkerPixel[mXUpper]-mMarkerPixel[mXLower]); dx = log10(mMarkerPlotCoordinate[mXUpper])-m11*mMarkerPixel[mXUpper]; } else { m11 = (mMarkerPlotCoordinate[mXUpper]-mMarkerPlotCoordinate[mXLower])/(mMarkerPixel[mXUpper]-mMarkerPixel[mXLower]); dx = mMarkerPlotCoordinate[mXUpper]-m11*mMarkerPixel[mXUpper]; } if (logy) { m22 = (log10(mMarkerPlotCoordinate[mYUpper])-log10(mMarkerPlotCoordinate[mYLower]))/(mMarkerPixel[mYUpper]-mMarkerPixel[mYLower]); dy = log10(mMarkerPlotCoordinate[mYUpper])-m22*mMarkerPixel[mYUpper]; } else { m22 = (mMarkerPlotCoordinate[mYUpper]-mMarkerPlotCoordinate[mYLower])/(mMarkerPixel[mYUpper]-mMarkerPixel[mYLower]); dy = mMarkerPlotCoordinate[mYUpper]-m22*mMarkerPixel[mYUpper]; } QMatrix M(m11, 0, 0, m22, dx, dy); QPointF cross(mCrosshairV->pos().x(), mCrosshairH->pos().y()); xy = M.map(cross); if (logx) xy.setX(pow(10.,xy.x())); if (logy) xy.setY(pow(10.,xy.y())); return xy; } void xyscanWindow::setLowerXButton() { bool ok; double r = mMarkerPlotCoordinate[mXLower]; QString ret = QInputDialog::getText(this, "xyscan", tr("Enter the x-value at marker position:"), QLineEdit::Normal, QString("%1").arg(r), &ok); if (!ok) return; r = ret.toDouble(&ok); if (!ok) { QMessageBox::warning( 0, "xyscan", tr("%1 is not a valid floating point number.").arg(ret)); return; } mMarkerPlotCoordinate[mXLower] = r; QString str; str.setNum(r); mLowerXValueField->setText(str); QPointF pos(mCrosshairH->pos().x(), mCrosshairV->pos().y()); mMarkerPixel[mXLower] = mCrosshairH->pos().x(); mMarker[mXLower]->setPos(pos); mMarker[mXLower]->setVisible(true); if (numberOfMarkersSet() == 4) statusBar()->showMessage(tr("Ready to scan. Press space bar to record current cursor position.")); else statusBar()->showMessage(QString("%1 of 4 markers set").arg(numberOfMarkersSet())); mAngleSpinBox->setDisabled(true); // rotating would void marker position mScaleSpinBox->setDisabled(true); // same for scaling (zoomig in/out) } void xyscanWindow::setUpperXButton() { bool ok; double r = mMarkerPlotCoordinate[mXUpper]; QString ret = QInputDialog::getText(this, "xyscan", tr("Enter the x-value at marker position:"), QLineEdit::Normal, QString("%1").arg(r), &ok); if (!ok) return; r = ret.toDouble(&ok); if (!ok) { QMessageBox::warning( 0, "xyscan", tr("%1 is not a valid floating point number.").arg(ret)); return; } mMarkerPlotCoordinate[mXUpper] = r; QString str; str.setNum(r); mUpperXValueField->setText(str); QPointF pos(mCrosshairH->pos().x(), mCrosshairV->pos().y()); mMarkerPixel[mXUpper] = mCrosshairH->pos().x(); mMarker[mXUpper]->setPos(pos); mMarker[mXUpper]->setVisible(true); if (numberOfMarkersSet() == 4) statusBar()->showMessage(tr("Ready to scan. Press space bar to record current cursor position.")); else statusBar()->showMessage(QString("%1 of 4 markers set").arg(numberOfMarkersSet())); mAngleSpinBox->setDisabled(true); // rotating would void marker position mScaleSpinBox->setDisabled(true); // same for scaling (zoomig in/out) } void xyscanWindow::setLowerYButton() { bool ok; double r = mMarkerPlotCoordinate[mYLower]; QString ret = QInputDialog::getText(this, "xyscan", tr("Enter the y-value at marker position:"), QLineEdit::Normal, QString("%1").arg(r), &ok); if (!ok) return; r = ret.toDouble(&ok); if (!ok) { QMessageBox::warning( 0, "xyscan", tr("%1 is not a valid floating point number.").arg(ret)); return; } mMarkerPlotCoordinate[mYLower] = r; QString str; str.setNum(r); mLowerYValueField->setText(str); QPointF pos(mCrosshairH->pos().x(), mCrosshairV->pos().y()); mMarkerPixel[mYLower] = mCrosshairV->pos().y(); mMarker[mYLower]->setPos(pos); mMarker[mYLower]->setVisible(true); if (numberOfMarkersSet() == 4) statusBar()->showMessage(tr("Ready to scan. Press space bar to record current cursor position.")); else statusBar()->showMessage(QString("%1 of 4 markers set").arg(numberOfMarkersSet())); mAngleSpinBox->setDisabled(true); // rotating would void marker position mScaleSpinBox->setDisabled(true); // same for scaling (zoomig in/out) } void xyscanWindow::setUpperYButton() { bool ok; double r = mMarkerPlotCoordinate[mYUpper]; QString ret = QInputDialog::getText(this, "xyscan", tr("Enter the y-value at marker position:"), QLineEdit::Normal, QString("%1").arg(r), &ok); if (!ok) return; r = ret.toDouble(&ok); if (!ok) { QMessageBox::warning( 0, "xyscan", tr("%1 is not a valid floating point number.").arg(ret)); return; } mMarkerPlotCoordinate[mYUpper] = r; QString str; str.setNum(r); mUpperYValueField->setText(str); QPointF pos(mCrosshairH->pos().x(), mCrosshairV->pos().y()); mMarkerPixel[mYUpper] = mCrosshairV->pos().y(); mMarker[mYUpper]->setPos(pos); mMarker[mYUpper]->setVisible(true); if (numberOfMarkersSet() == 4) statusBar()->showMessage(tr("Ready to scan. Press space bar to record current cursor position.")); else statusBar()->showMessage(QString("%1 of 4 markers set").arg(numberOfMarkersSet())); mAngleSpinBox->setDisabled(true); // rotating would void marker position mScaleSpinBox->setDisabled(true); // same for scaling (zoomig in/out) } void xyscanWindow::showPrecision() { QPointF point, currentV, currentH; QPointF left, right, up, down; QString str; double mdx, pdx, mdy, pdy; if (readyForScan()) { currentV = mCrosshairV->pos(); currentH = mCrosshairH->pos(); point = scan(); mCrosshairV->moveBy(-1,0); mCrosshairH->moveBy(-1,0); left = scan(); mCrosshairV->setPos(currentV); mCrosshairH->setPos(currentH); mCrosshairV->moveBy(1,0); mCrosshairH->moveBy(1,0); right = scan(); mCrosshairV->setPos(currentV); mCrosshairH->setPos(currentH); mCrosshairV->moveBy(0,1); mCrosshairH->moveBy(0,1); down = scan(); mCrosshairV->setPos(currentV); mCrosshairH->setPos(currentH); mCrosshairV->moveBy(0,-1); mCrosshairH->moveBy(0,-1); up = scan(); mCrosshairV->setPos(currentV); mCrosshairH->setPos(currentH); mdx = fabs(point.x()-left.x()); pdx = fabs(point.x()-right.x()); mdy = fabs(point.y()-down.y()); pdy = fabs(point.y()-up.y()); str = tr("Estimated precision at current point:\ndx = +%1 -%2\ndy = +%3 -%4").arg(pdx).arg(mdx).arg(pdy).arg(mdy); } else { str = tr("Cannot determin precision yet.\nPlace all 4 markers first."); } QMessageBox::information(0, "xyscan", str); } void xyscanWindow::showTooltips() { // // I do not see any other way than to do it like // this. Many users do not like the tool tips and // I want them to be able to switch that off and // on as needed. I did not find a general method // that switches all application tool tips on/off. // It only works on the widget basis so we go // through each important widget/action one by one. // if (mShowTooltipsAction->isChecked()) { mImageView->setToolTip(tr("Scan area")); mCoordinateDock->setToolTip(tr("Coordinates Display Window:\n" "Displays cursor position in local \n" "(pixel) and plot coordinates.")); mSettingsDock->setToolTip(tr("Settings Window:\n" "Use to set axes marker, define axes,\n" "set log/lin scales, and set the error scan mode.")); mTableDock->setToolTip(tr("Data Table Window:\n" "Window displaying the data table that holds \n " "all points (and errors) scanned so far.")); mTransformDock->setToolTip(tr("Plot Adjustments:\n" "Window displaying info on the current plot and controls\n" "that allows to scale (zoom in/out) and rotate the plot.")); mPixelXDisplay->setToolTip(tr("Displays the x coordinate of the cursor in pixel (screen) units")); mPixelYDisplay->setToolTip(tr("Displays the y coordinate of the cursor in pixel (screen) units")); mPlotXDisplay->setToolTip(tr("Displays the x coordinate of the cursor in plot units.\n" "When the point is recorded (space key) this coordinate\n" "gets stored in the data table.")); mPlotYDisplay->setToolTip(tr("Displays the y coordinate of the cursor in plot units.\n" "When the point is recorded (space key) this coordinate\n" "gets stored in the data table.")); // Actions (don't show on the Mac) mOpenAction->setToolTip(tr("Open file to read in image")); mSaveAction->setToolTip(tr("Save the scanned data in text file")); mPrintAction->setToolTip(tr("Print the plot together with the scanned data")); mFinishAction->setToolTip(tr("Quit xyscan")); mDeleteLastAction->setToolTip(tr("Delete last scanned point from data table")); mDeleteAllAction->setToolTip(tr("Delete all scanned point from data table.")); mEditCommentAction->setToolTip(tr("Write comment that will be added to the\n" "scanned data when saved to file.")); mPasteImageAction->setToolTip(tr("Paste image from clipboard")); mClearHistoryAction->setToolTip(tr("Clear list of recently opened files")); mShowPrecisionAction->setToolTip(tr("Shows scan precision at current cursor point")); mShowTooltipsAction->setToolTip(tr("Switch on/off tool tips")); mSetLowerXButton->setToolTip(tr("Set marker to define the first (lower) position on the x-axis.\n" "Launches input dialog for the referring value in plot coordinates.")); mSetUpperXButton->setToolTip(tr("Set marker to define the second (upper) position on the x-axis.\n" "Launches input dialog for the referring value in plot coordinates.")); mSetLowerYButton->setToolTip(tr("Set marker to define the first (lower) position on the y-axis.\n" "Launches input dialog for the referring value in plot coordinates.")); mSetUpperYButton->setToolTip(tr("Set marker to define the second (upper) position on the y-axis.\n" "Launches input dialog for the referring value in plot coordinates.")); mUpperYValueField->setToolTip(tr("x-axis value in plot coordinates assigned to the low-x marker (read only)")); mLowerYValueField->setToolTip(tr("x-axis value in plot coordinates assigned to the upper-x marker (read only)")); mUpperXValueField->setToolTip(tr("y-axis value in plot coordinates assigned to the low-y marker (read only)")); mLowerXValueField->setToolTip(tr("y-axis value in plot coordinates assigned to the upper-y marker (read only)")); mLogXRadioButton->setToolTip(tr("Check if x-axis on plot has log scale")); mLogYRadioButton->setToolTip(tr("Check if y-axis on plot has log scale")); mAngleSpinBox->setToolTip(tr("Allows to rotate the plot if needed to align it for\nthe scan. To be done before setting markers.")); mScaleSpinBox->setToolTip(tr("Allows to zoom in and out the plot.\nTo be done before setting markers.")); mErrorXModeComboBox->setToolTip(tr("Defines error scan mode")); mErrorYModeComboBox->setToolTip(tr("Defines error scan mode")); mTableWidget->setToolTip(tr("Data table holding all poinst scanned so far")); mMarker[mXLower]->setToolTip(tr("Marker for lower x-axis position")); mMarker[mXUpper]->setToolTip(tr("Marker for upper x-axis position")); mMarker[mYLower]->setToolTip(tr("Marker for lower y-axis position")); mMarker[mYUpper]->setToolTip(tr("Marker for upper y-axis position")); mCrosshairH->setToolTip(tr("Horizontal bar of crosshairs cursor")); mCrosshairV->setToolTip(tr("Vertical bar of crosshairs cursor")); mAngleSpinBox->setToolTip(tr("Rotate current plot (degrees)")); mScaleSpinBox->setToolTip(tr("Scale (zoom in/out) the current plot")); mPlotInfoLabel->setToolTip(tr("Show dimension and depth of current plot")); if (mHelpBrowser) mHelpBrowser->setToolTip(tr("Help browser for xyscan documenation")); } else { mImageView->setToolTip(""); mCoordinateDock->setToolTip(""); mSettingsDock->setToolTip(""); mTableDock->setToolTip(""); mTransformDock->setToolTip(""); mPixelXDisplay->setToolTip(""); mPixelYDisplay->setToolTip(""); mPlotXDisplay->setToolTip(""); mPlotYDisplay->setToolTip(""); mOpenAction->setToolTip(""); mSaveAction->setToolTip(""); mPrintAction->setToolTip(""); mFinishAction->setToolTip(""); mDeleteLastAction->setToolTip(""); mDeleteAllAction->setToolTip(""); mEditCommentAction->setToolTip(""); mPasteImageAction->setToolTip(""); mClearHistoryAction->setToolTip(""); mShowPrecisionAction->setToolTip(""); mShowTooltipsAction->setToolTip(""); mSetLowerXButton->setToolTip(""); mSetUpperXButton->setToolTip(""); mSetLowerYButton->setToolTip(""); mSetUpperYButton->setToolTip(""); mUpperYValueField->setToolTip(""); mLowerYValueField->setToolTip(""); mUpperXValueField->setToolTip(""); mLowerXValueField->setToolTip(""); mLogXRadioButton->setToolTip(""); mLogYRadioButton->setToolTip(""); mErrorXModeComboBox->setToolTip(""); mErrorYModeComboBox->setToolTip(""); mTableWidget->setToolTip(""); mMarker[mXLower]->setToolTip(""); mMarker[mXUpper]->setToolTip(""); mMarker[mYLower]->setToolTip(""); mMarker[mYUpper]->setToolTip(""); mCrosshairH->setToolTip(""); mCrosshairV->setToolTip(""); mAngleSpinBox->setToolTip(""); mScaleSpinBox->setToolTip(""); mPlotInfoLabel->setToolTip(""); if (mHelpBrowser) mHelpBrowser->setToolTip(""); } } void xyscanWindow::updatePixelDisplay() { QString str; str.setNum(mCrosshairH->pos().x()); mPixelXDisplay->setText(str); str.setNum(mCrosshairV->pos().y()); mPixelYDisplay->setText(str); } void xyscanWindow::updatePlotCoordinateDisplay() { if (readyForScan()) { QPointF xy = scan(); QString str; str.setNum(xy.x()); mPlotXDisplay->setText(str); str.setNum(xy.y()); mPlotYDisplay->setText(str); } else { mPlotXDisplay->setText(tr("N/A")); mPlotYDisplay->setText(tr("N/A")); } } void xyscanWindow::updateWhenAxisScaleChanged() { updatePixelDisplay(); updatePlotCoordinateDisplay(); } void xyscanWindow::writeSettings() { QSettings settings(QSettings::NativeFormat, QSettings::UserScope, "tu", "xyscan"); settings.setValue("xyscan/Version", VERSION_NUMBER); // not used but good to have settings.setValue("xyscan/position", pos()); settings.setValue("xyscan/showToolTips", mShowTooltipsAction->isChecked()); settings.setValue("xyscan/lastOpenFileDirectory", mOpenFileDirectory); settings.setValue("xyscan/lastSaveFileDirectory", mSaveFileDirectory); settings.setValue("xyscan/recentFiles", mRecentFiles); settings.setValue("xyscan/crosshairColor", mCrosshairColor); } xyscan-3.31.orig/xyscanVersion.h0000644000175000017500000000117211564114250017126 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: November 24, 2010 //----------------------------------------------------------------------------- #ifndef xyscanVersion_h #define xyscanVersion_h #define VERSION "3.3.1" #define VERSION_NUMBER 3.31 #endif xyscan-3.31.orig/xyscan.rc0000644000175000017500000000007607561651332015750 0ustar georgeskgeorgeskIDI_ICON1 ICON DISCARDABLE "xyscan.ico" xyscan-3.31.orig/xyscanStateMachine.cpp0000644000175000017500000002302711377514733020420 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: April 22, 2009 //----------------------------------------------------------------------------- #include "xyscanStateMachine.h" xyscanStateMachine::xyscanStateMachine() {clear();} void xyscanStateMachine::clear() { mScanErrorXSelected = false; mScanErrorYSelected = false; mErrorXScanPrepared = false; mErrorYScanPrepared = false; mXYScanDone = false; mScanXLeftDone = false; mScanXRightDone = false; mScanYLowerDone = false; mScanYUpperDone = false; mErrorXScanSetupRemoved = true; mErrorYScanSetupRemoved = true; mDataWritten = false; } bool xyscanStateMachine::allowKeyLeft() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return true; if (mXYScanDone) return false; else return true; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return true; if (mScanXLeftDone && mScanXRightDone) return false; else return true; } else return true; } bool xyscanStateMachine::allowKeyRight() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return true; if (mXYScanDone) return false; else return true; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return true; if (mScanXLeftDone && mScanXRightDone) return false; else return true; } else return true; } bool xyscanStateMachine::allowKeyUp() { if (mScanErrorXSelected && !mScanErrorYSelected) { if (mDataWritten) return true; if (mXYScanDone) return false; else return true; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return true; if (!mXYScanDone) return true; if (mScanXLeftDone && mScanXRightDone && mErrorXScanSetupRemoved) return true; else return false; } else return true; } bool xyscanStateMachine::allowKeyDown() { if (mScanErrorXSelected && !mScanErrorYSelected) { if (mDataWritten) return true; if (mXYScanDone) return false; else return true; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return true; if (!mXYScanDone) return true; if (mScanXLeftDone && mScanXRightDone && mErrorXScanSetupRemoved) return true; else return false; } return true; } bool xyscanStateMachine::allowXYScan() { if (!mScanErrorXSelected && !mScanErrorYSelected) return true; else { if (mDataWritten) return true; if (mXYScanDone) return false; else return true; } } bool xyscanStateMachine::doPrepareErrorXScan() { if (mScanErrorXSelected) { if (mDataWritten) return false; if (mXYScanDone && !mErrorXScanPrepared) return true; else return false; } else return false; } bool xyscanStateMachine::doPrepareErrorYScan() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return false; if (mXYScanDone && !mErrorYScanPrepared) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mDataWritten) return false; if (!mErrorYScanPrepared && mScanXRightDone) return true; else return false; } else return false; } bool xyscanStateMachine::allowScanXLeft() { if (mScanErrorXSelected && !mScanErrorYSelected) { if (mErrorXScanPrepared && !mScanXLeftDone) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mErrorXScanPrepared && !mScanXLeftDone) return true; else return false; } else return false; } bool xyscanStateMachine::allowScanXRight() { if (mScanErrorXSelected && !mScanErrorYSelected) { if (mErrorXScanPrepared && mScanXLeftDone && !mScanXRightDone) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mErrorXScanPrepared && mScanXLeftDone && !mScanXRightDone) return true; else return false; } else return false; } bool xyscanStateMachine::allowScanYLower() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mErrorYScanPrepared && !mScanYLowerDone) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mErrorXScanSetupRemoved && mErrorYScanPrepared && !mScanYLowerDone) return true; else return false; } else return false; } bool xyscanStateMachine::allowScanYUpper() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mErrorYScanPrepared && mScanYLowerDone && !mScanYUpperDone) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (!mScanYUpperDone && mScanYLowerDone) return true; else return false; } else return false; } bool xyscanStateMachine::removeErrorXScanSetup() { if (mScanErrorXSelected && !mScanErrorYSelected) { if (mScanXRightDone && !mDataWritten) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mScanXRightDone && !mScanYLowerDone && !mErrorXScanSetupRemoved) return true; else return false; } else return false; } bool xyscanStateMachine::removeErrorYScanSetup() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mScanYUpperDone && !mDataWritten) return true; else return false; } else if (mScanErrorXSelected && mScanErrorYSelected) { if (mScanYUpperDone && !mErrorYScanSetupRemoved) return true; else return false; } else return false; } bool xyscanStateMachine::enableSettingsMenu() { if (mScanErrorYSelected) { if (mScanYUpperDone && !mDataWritten) return true; else return false; } else { if (mScanErrorXSelected) { if (mScanXRightDone && !mDataWritten) return true; else return false; } else return false; } } bool xyscanStateMachine::disableSettingsMenu() { if (mScanErrorXSelected) { if (mXYScanDone && !mDataWritten) return true; else return false; } else { if (mScanErrorYSelected) { if (mXYScanDone && !mDataWritten) return true; else return false; } else return false; } } bool xyscanStateMachine::allowWriteXY() { if (!mScanErrorXSelected && !mScanErrorYSelected) return true; else return false; } bool xyscanStateMachine::allowWriteXYErrorX() { if (mScanErrorXSelected && !mScanErrorYSelected) { if (mScanXRightDone && !mDataWritten) return true; else return false; } else return false; } bool xyscanStateMachine::allowWriteXYErrorY() { if (!mScanErrorXSelected && mScanErrorYSelected) { if (mScanYUpperDone && !mDataWritten) return true; else return false; } else return false; } bool xyscanStateMachine::allowWriteXYErrorXErrorY() { if (mScanErrorXSelected && mScanErrorYSelected) { if (mScanYUpperDone && !mDataWritten) return true; else return false; } else return false; } void xyscanStateMachine::setScanErrorXSelected(bool val) {mScanErrorXSelected = val;} void xyscanStateMachine::setScanErrorYSelected(bool val) {mScanErrorYSelected = val;} void xyscanStateMachine::setErrorXScanPrepared(bool val) {mErrorXScanPrepared = val; mErrorXScanSetupRemoved = false;} void xyscanStateMachine::setErrorYScanPrepared(bool val) {mErrorYScanPrepared = val; mErrorYScanSetupRemoved = false;} void xyscanStateMachine::setXYScanDone(bool val) {mXYScanDone = val;} void xyscanStateMachine::setScanXLeftDone(bool val) {mScanXLeftDone = val;} void xyscanStateMachine::setScanXRightDone(bool val) {mScanXRightDone = val;} void xyscanStateMachine::setScanYLowerDone(bool val) {mScanYLowerDone = val;} void xyscanStateMachine::setScanYUpperDone(bool val) {mScanYUpperDone = val;} void xyscanStateMachine::setErrorXScanSetupRemoved(bool val) {mErrorXScanSetupRemoved = val;} void xyscanStateMachine::setErrorYScanSetupRemoved(bool val) {mErrorYScanSetupRemoved = val;} void xyscanStateMachine::setDataWritten(bool val) {mDataWritten = val; if (mDataWritten) clear();} xyscan-3.31.orig/xyscanHelpBrowser.h0000644000175000017500000000226111377515102017740 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: July 16, 2007 //----------------------------------------------------------------------------- #ifndef xyscanHelpBrowser_h #define xyscanHelpBrowser_h #include class QPushButton; class QTextBrowser; class QTreeWidget; class QTreeWidgetItem; class xyscanHelpBrowser : public QWidget { Q_OBJECT public: xyscanHelpBrowser(const QString &, const QString &); private slots: void updateCaption(); void itemSelected(QTreeWidgetItem* item); private: void createIndex(const QString &); void showPage(const QString &); private: QTextBrowser *mTextBrowser; QTreeWidget *mTreeWidget; QPushButton *mHomeButton; QPushButton *mBackButton; QPushButton *mForwardButton; QPushButton *mCloseButton; }; #endif xyscan-3.31.orig/README0000644000175000017500000001074311564114637014777 0ustar georgeskgeorgesk======================================================================= xyscan 3.3 ======================================================================= A data thief for scientist. Copyright 2002-2011 Thomas S. Ullrich (thomas.ullrich@bnl.gov) This version: 3.3.1 (May 15, 2011) xyscan is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; See license.txt and gpl.txt. This directory contains all sources and files needed to built xyscan. Supported platforms are LINUX, Windows, and Mac OS X. Obtaining xyscan. Binary distributions are available from the xyscan web site: http://rhig.physics.yale.edu/~ullrich/xyscanDistributionPage If not available for your system you need to build it from scratch. Building xyscan from scratch ============================ This is straightforward. All what is needed is a C++ compiler and Qt. Requirements ------------ You need to have Qt 4.6 or higher installed. Linux/Unix ---------- qmake (shipped with Qt) makes it easy. After unpacking the tar ball: cd xyscan qmake -o Makefile xyscan.pro lrelease xyscan.pro make "lrelease" is necessary to create the French translation. If you do not need it you can skip it. I recommend to put the executable and the required directories (docs/) as well as license.txt and gpl.txt in the directory: /usr/local/xyscan To allow to launch the application from the command line there are several option. In what follows I assume that you used the above installation directory. Of course you can pick any location and name you want. Method 1: Start through a shell script To create the shell script: echo "/usr/local/xyscan/xyscan $*" > /usr/local/bin/xyscan chmod +x /usr/local/bin/xyscan This assumes that /usr/local/bin is in your PATH environment variable and that you have superuser privileges. If not put it in your $HOME/bin directory instead. Method 2: Add /usr/local/xyscan to your PATH variable. Do NOT link xyscan. That is ln -s /usr/local/xyscan/xyscan /usr/local/bin/xyscan will NOT work since xyscan will not find the required resources. Mac OS X -------- Here I assume that you have the Developer package installed and know a bit on how to work with Xcode. qmake (shipped with Qt) makes it easy. After unpacking the tar ball: qmake -spec macx-xcode xyscan.pro lrelease xyscan.pro This will create xyscan.xcodeproj. "lrelease" is necessary to create the French translation. Start Xcode and load xyscan.xcodeproj. Run build which will create the xyscan.app application bundle. Then you need to copy a couple of files into the application bundle: i) You then need to copy or move the directory 'docs' into the folder: xyscan.app/Contents/Resources/ ii) license.txt and gpl.txt files go directly into: xyscan.app/Contents/ iii) copy xyscan_fr.qm into xyscan.app/Contents/Resources/ folder" (French version only) iv) For the French version: create the directory xyscan.app/Contents/Resources/fr.lproj add a file localisation.plist into this directory with the following content: LprojCompatibleVersion 123 LprojLocale fr LprojRevisionLevel 1 LprojVersion 123 Then put xyscan.app in the 'Application' folder or wherever you see fit. Windows XP/Vista/7 ------------------ Trolltech dropped support of VC7 for the OpenSource version of Qt. Instead they recommend to use MinGW. You will need the open source version of Qt 4.6 (or higher). MinGW usually comes with it. The needed resource files are all in the tar ball. The xyscan.pro file includes also the resource file needed to assign the application icon. Make sure that MinGW and Qt bin folders are in your PATH variable. Unpack the tar ball. It unpacks into a directory "xyscan". Building xyscan: From the command line in the directory "xyscan" do 1) qmake xyscan.pro 2) lrelease xyscan.pro 3) mingw32-make (or whatever your make command is) Installation: Create a folder xyscan and add 1) xyscan.exe 2) the docs directory with all its content 3) the license.txt and gpl.txt files 4) the xyscan_fr.qm 5) xyscan.ico and this README (just in case) and put the folder wherever your local applications belong, typically: C:\Program Files xyscan-3.31.orig/gpl.txt0000644000175000017500000007621111225732460015436 0ustar georgeskgeorgeskGNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. This License refers to version 3 of the GNU General Public License. Copyright also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. The Program refers to any copyrightable work licensed under this License. Each licensee is addressed as you. Licensees and recipients may be individuals or organizations. To modify a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a modified version of the earlier work or a work based on the earlier work. A covered work means either the unmodified Program or a work based on the Program. To propagate a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To convey a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays Appropriate Legal Notices to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The source code for a work means the preferred form of the work for making modifications to it. Object code means any non-source form of a work. A Standard Interface means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The System Libraries of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A Major Component, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The Corresponding Source for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: * a) The work must carry prominent notices stating that you modified it, and giving a relevant date. * b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to keep intact all notices. * c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. * d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an aggregate if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: * a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. * b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. * c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. * d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. * e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A User Product is either (1) a consumer product, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, normally used refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. Installation Information for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. Additional permissions are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: * a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or * b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or * c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or * d) Limiting the use for publicity purposes of names of licensors or authors of the material; or * e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or * f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered further restrictions within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An entity transaction is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A contributor is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's contributor version. A contributor's essential patent claims are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, control includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a patent license is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To grant such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. Knowingly relying means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is discriminatory if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License or any later version applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONSxyscan-3.31.orig/images/0000755000175000017500000000000011571747200015353 5ustar georgeskgeorgeskxyscan-3.31.orig/images/xyscanIcon.png0000644000175000017500000000253311311545723020200 0ustar georgeskgeorgeskPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxW[lTU]s;J;E-%-$%X 1QA|%5(54H DhjQKJDd:mu}Mvϵ׹pEiƍzhܡsn7>C̶ݗFJi}]cD@p3C|XhioOX: s#PDo,.>C=?yS~lhoÃ=EUQ{rk0pٻ˶E+(0 K۬U xNqK{xqQv~ C}noRb :1<`: `}U9fl*s R(n\D+0ޤ o>o(!ʤqNM&9ݭ_@g?1N -h2ʂ@!`[?XLԯ&'u^a.;j9jۡN`ZtPy媋)c٣4Vu?9w:l$ )M&mkl#nUh^؁8WHO~¶ 6?ʁ*@6t5eFyqSkKYA <_)!%PwnO9Vmd*tqa1=Z]O|h-#:Jl/o`=$_ayLS 1g%B: ݽ)ዐ1 t>fOyiT3_sK7HhbL=-S*)p "z[jDP.1BQ48b(#' rN\eA3(ilVt;"nQ1׎E7h5 1E4DpEB۲/& &f˺LseqOQ)8jϖpDaHƶxr>y=+LBHuY(-ʹl)6^4oL}^@}̦Y+ur>À3\DHnuۘ~dyvq"}%%rV^;1&r=ḁv$}`|+IENDB`xyscan-3.31.orig/images/arrow_prev.png0000755000175000017500000000023210646316612020250 0ustar georgeskgeorgeskPNG  IHDR 2ϽtEXtSoftwareAdobe ImageReadyqe< H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATx]w`~,!vdA!@ޔ@m)P*ЖB(-AʦeH!ٱ!y?Ζ0B]t:dYO߽wߣBYæBW pjlZ.sYs7X> N[vZp?BZ*ftr'p=t^8sTQ,\AeMZ qjm8o %]\X N,e:Xtjk:)Y՜tVqI/Ոkr>@F@@@@@ 1`ĀF@@@@@@ 1`ĀF@@@@@@ 1`ĀF@@@@@@ 1` xihw/7c -̒JNEv!׊0Ӌȅ" x)!Db# 0b# 0b# `~i!"kؔBSb~RpH@@@@a`oFۼ'? 5?# 07ɺ^V4Dza5iлY-KD@`@``X,rL!|ւRSk))Ire KR$ː%''oP?8׮''%{0 `~~~lNH(bMϘ9]MOK=r=G^PVV8tH(۷/YU( rpΝE:\T ί]F!/ E}>{`Z/V^%tr8 >xOga@ǏEuV/B$ܽ{ر +7v="}#?u+7*ͷB]]|yff&^n*kڼR-׭WsJOӧQa3&~MIZ XfP$Ԫuwlz{{^ޢ7Qj!5j,Zܱ\!Dg,kWn8b֭2?įE~[߾3ODǨU*\!88([ݹF=tࢯ_KT>u*uYF0plаA=CnZLX4ZfW'|/Bj Ϯf*M#W.]<¦MEwa1l[H$z;vڿ8!iY;h@fD:tpv5%9}SDVȋV[Gsv$?NgOQ\**&:fƴR*ٚw6hjp䩎mM}{F_imژڑ xEGV[6>0g(0Yu5bG>0˲nuCP㌀XdfeYk~&~c p?rOu-Rdf^haM5N\P(8Z"55u5jV-ЯaøLoMMIVGƍ_?.jպ5{ؿy%''oټ[R?}qc}L׮FgSW\aWkaG["ޓp+a#9$ifB' kl7.(YUJJ`` wH(څ]?oyZgV. c#""kE_{mΜ"cEBJq׃yp}NvY#2Thar>(L[)|/W~]tiMy}v :uhuQ~r.B(r),k~u0]|jڷg뤧Z ~QcF-ti]ո/v٠S;mWq78\>v蛱#T*ա>9FL &RRD&ϐJBP$eۑW~KVQ"1`D*}oehܸg3w")&Mn#xϑٿ6Ąa#F {ח= бـuth6/CxBzD"Ydɺk/?p70,~,UryD0wILvp~6%H*n2 B\.T)>n˘oJ4̜p޼jodd.rISkӍZ| XjuڵUnS~}{P(b1^ةW1 |…Ə ##;GF@jJʅϟ;ZY bS]oE"QpHHQ?B*|*uҀ9֯p?ΝOu+ՠY#ADQ-̫&p0lJe|n 0n;1 8p7(>pkPx e`,kVEj?pǎ ܡSG֫wo.sڹ}0e rPL~nsRHHҾEDDHo< q0W $N\էNvӇK.>0def yyy%Q(X,`!s~bq@`@Ŏ;>ȡE( Jٵwg"h欟=үיS-!10{~V">=o^ OF,kh/.PES4%deh'.U@BS)#eKnsۆ/@;gjܤIK2[qqu5N˗4l/^(|//Ьyf-Z4oܙg}  t՚5RSe2,&::&::&:n'4`7矿~S+Vz3gDG2d8 bz\U=:UQ`BaAAltN?z& O4K=uI?{ЋŅBF)h ѓ:V.ZB $8"Fk@ e%B?$X,ƪ6G}ض}1ڵe֬XOդA%bZNKTTpH0߾͚8}Ɓ}"P X QNS\͛ÇP?Nu|rPFr{|p:}7N}Պܨիs@^^ޱGjŋE7R<jFqD"7GePP?G8pPL33ɔ8kT[!&:zE7Q?Hood,Fw)S/OHpApĂH((iLSHe1NVEG \PX@F#BkL^.ֹEQ^4MN@YNP<[N@ڽwrB|{@YXo'ܺUlk/]b p0eg/i6X8~.\fa`7X)\6xknRl#$@a,_^% \7o.i};mH[Vy߾\3gӄY?YeoBA%:uX/9?LKK㲨f-Z}s/縆-K *ǟ;sBU+x I*elRjU%:~\{:jaǘ#+NK&vLC'[3y$: zwE5"^㿞<\_yy&p^Mu?xĨQ%i2f 4bu?pg-qd$wSՇX'~Mѡ_O$d܉X_m:3Uᒦ-rINlْ㒦>$˓X C V͢to^[6oNOO 3tиI_49ꚃѢ7vn.c-Dg6, (h 쪽\ի$lʕl1i&8v9ѷ?4eMa J/_"paK6n,`W~^^ -txVjtO6}& 5snd9XWa(>){aa{ Je)_ SrKˡFVfMGWB?o%ac% "=-车}%YgD"j„wY|#Amٵ+ˇ>ۗI9*]PU)8H$1Q8K%F0jF꧟JR[|3;$co;v:s ߷ˡ XkƫYO%d`gfk0- oi9N,Þ6bVI}2+nTd:[- a-4gV1-5mСs m0 0^=V> (SrwK’SnDcUe7KxSrRRrrL&JI(K M9*q;΅Vv膒6Rv/GO+;@Bѭ.yo\];wB#j:.f\M;*HIIIII2T/HMINNIN&w{@j "%{ZTa| =,{vnA : 7݋]>vh >!\v@P|K,6~H@0X^ 1$" xgfH^1ǎ,Re{:{l|wia:u|;;j%K%"?d`[og|Asy0p@C%ƀ9!Tտϝ{UpbʨYS3W3O4ԡoi>'Pf/Bd'`sVМJKssɉVd5̎$N ,VܕXZϊDJKJj* ˊC,2˄;x .ibKfc32s4(8"l͊ f\lU{Y1%UϰO'D}Tp&Qr%BvKaʅXv@8Gڨ^8sFd[>}!jA@o]߹}C6m޿w& V޸qcزiӛX,wݲU HNN>ɨRn''%>}]"K( Y#6\el~*<~\P_YY^6m*cg0?^ lFO<=TZ-f8q`4És 1cL440 p' m2??>}fffmޮ}[oKbx/߾ c_R-QT3g8[S<n"fR9c3O{썂~:$ѓ& \ԍ~nPx\^%!ϯvF'B*XoBpŚRTRmݲeՊ2L$͛?>wݾ5-6XL`"|+R.`2|>ѣ -4UZcbQlfg9L Q)XҼ_EӔM=TQaF%2336jtI~XjKMkߡI&PܺukMXy#v豟fŗ.^\dI\Q= `Aup…G\`W0C„B'~ڼE HMIپmC]%sddjJի'|=E˖"H.:xpͪb}wlITod#"T* 7F k׌CgZ$$}Fufop*{%_M ~bqIӦ&==7u:u PnLEfuZ~͛5ou׭3+ ǭ#.]"1Oӧ YlD" DK× ҡÇ UEq* !aEFL -R${!:1Zc_nnnn&9x }\\F1yz< /iiױn|><|<3Cc{Yf9FH}PZ5_?ۉ4NFwVG=:0z˗. ?'~}>֥sqc f}֦E?#Ets%J~ftj5ksdW'TƦk􈑍7-%9WKTׯ'}{+V|ߨn&M!!!ףW,[FۀBjDwAGF!?F^^ީ'z5n5`zgt u^&g?8֭[BG^6-o\!333ORRaz<ިP(,^w#GYW(ZA՘_Z / ?|36r…a%>rd~D"Jq%ѣ  V*gN"ևj( an7oQֻ'Sՙ z="diD°0S$zqY0,7ɜr,5N~l)hظ o   +E|\wUPc6k&  O%+MիWnƦrwlffe2Y*fjJ^U+V:t*IVY#Jeˇ}z!!!#G 00Sf? ̆{YJ<{nnMnajľ/``O̚xfo>177òU8~茩Rjͧ#ǎg?ΡRkTȭf`Х+}ܹVڰaxJ!d 8 eZJ3Xdx}FH:Yz5 ;e=9//q0`8Oz [E4ȌS4m ֩[op{]<!5%-]ҬEs̽>'-"gV>r}ày V)Uܩ`]FUݲy qapp CBBJ劥d*W_ZFSV"yZ7a#Wlݲi_z٣gOǎ?~Ɨ-^ׂbG!PK/v)Sp-%gzJT5*I~3[gTswQ>\rrTսۤ)'MUd"'x03g|s˾8Z\=TӼ^ JHxRMmȦZ04E6| ^DE4Ջ6'B.dCt,)s)r%V edh@`ĵwvv-k{.fJ䔈['OC23>d_+LX".|5k/[G VT1S8~*EvӧBP(Z |玝saP(TB1PGjbSYbrnD(^j,,<\.?{Eg2H$C23Or:3($X܈=sF&D8%,#Sd?aņ捎pO8oz!%x^%:ˮh >}F:\!ցfīFd VLOlʢU 1`}y˧e韣cQ,+n2FJP踎Vmy}EwV RoӲjWͮжfQ-X-;2等5WؾqXYMgΎvtK5ڽ3z2jʬuxiHTW|GױF·p 604Macc`ŰltNcSa X.,΁Ce2$;}5`!Fd6dkؐ<9 ϘqLT$ !vV-KAszڢs3#E EPPCQ<x@(PCM_'/J7[S$5iy0Y84u.j i}2+RĺMO^9Y^hW'E͛˗LW)@`EQ)f]?(n r<ӧ}n.dz; }YF*s8NAFW{=!y +7nӧU*fjn. \ռ|j^ЯR-+ȏӀ-qg߰ݻz7u̬ѡ!'[6)bz?|Vh4M s2.s20p~B۴zH:N՚HVi 0:R3 ?$ Riopz;JRۛie6]x䭆yϞo!XHHP\֭f{y +SOE!SB<<=if/g8}lZ>>ZL >c~"@7"/C @@QȤaI;>"~R/Z2W͠iJ,YPQ׉0}AwkRU0!!.{!ػONjV~~ HTX?>G ?!M}[>\#LV7@V]g'==|(HH`'i 5ZFV,#ǙqˉItlk m˖wZVǙuz=:'!s椽?P->ӓjeNU|؍ Tȑeܢc .(^ш!ؤ1S `20n=bcJ3g˛8,:;c`RӏKwsՏc<Ԛ4Btt`4Q~`q| 9i *4U?%MedH<'*]Z~>lZF2~ C[/.ծmrVw\v-\!f4&Ci:¹lηq/I j1`oϞ>elD˦]\O-> zuis[͛Η)t% ` 0[հa SK_pA/>K/1S!&ϏAoY0jЛd^1LjVuVDj2ޜ!hD!kW7fg:w+օ*_12ezŠnxqsw74wzy=|[l5OOW/ra׮X]4&f`~ }綾ee.fvZ9b]'^1ry;w94 l"ij̵k*eJ9^\jj#DQi42ifF@@@1ݷߺ,>U,b̺jՊu/\״ ]r+W4ڒ;^k0T[Xݍ!CnF&R%uxxV{Xv( 5iƴZlS"s#cFhM~$^1>w\$-N+]2.E|aeʬMEM C mZ.mKŜJF@@>0(\Ҕ{wYջi]rL^jb1j#޼Rc ʾ$5I/^65Cp6|.qE*6/O 0 i sUG?wf^>XXY#bDبT) Ύ9dcEis9S`V|s8KJ2j ߵW45g4E1 QP,#L2C]6mϯeˬݫrej͛O(׌e?{Rnj*#! 0}d<'ZAp<5f 1!ғzK,Y#Cñ{F*ꃂ4vdZXQ<`0N鴻H_‚t{!dD9|/2<xx)4K$ }e`~_gK^IiXJ# x' KsUk={ʋU,6ܹS$uB* "Q_-)U^7tMנ] DFsY!vzy<̾pwH4aaչsAo( Fv#EEk_%"#'Xu>?\аA"Z#B 3/iha10c>0g3Y>,pIS֭cj= ]ӱF$ \?r]TDeEC,~A~?xo]s瞺p[ ) 6-žכ)q`Eyx@o *TPTKNƽ@E)Yd&+L0MA =lJ9))칛I㛘 рFC%iix@ @<ʡDJ&y[Bƥ""@wK@@XNnPMQC]fk{_!N1 jkKXؾkHXܭ@>EL``}^ѸhQ"=< ݺ=jz3d_P@Yfјt&S`PժeVR_IyZSq$MQ!TXM#* y11^fas Esҹk%z00C6M{ {!830ð[KXf˽ ϝ=;Un#.s͚iK2B;@@@c`l 8dVoVkNyeR.ou 8{:DerKz{|ݯ{cd @M۵ߵ`8AK&#F$(]Ev%%BHHzrz=`f4͟VXՐi\c|@0oa{!I&~M6kVR|kf {xz|Axf\@; :)@@@b`E{nʙ5e5-N\_`D4C3fC5_['NgiZ'ř0  ϳe%F@@@^0]yضm+KοJѻݹSY./>̽m=룏 yg@@@b`E{u-)own!Wka΅Uó(c!?hd4O6Fu-LLed]r.㪇2y(Lq~j4%/'Q] +UEz=F d\10o@<11qf!aѠ(^8*[(y ~3OwO*FbRކsv| ]yجYnyr/K:vc<4D^610(8k42"#NUUg.9۷+UPAIcy6]70'.C:wVo))_Ba` 3 iaz0:C3:Fg| z FB)5| +9>"@a*U=zDuc<%s7eVG̢_f?Yo>X0J XK10½J]ѭ[CBZrm  ̆p2{8GY(L~$ϳ `vl|`y`\7 z:G.)a`V[iTɖ]l!K&~FQ5r a-D' q110z~0^y c^^Ϻ >SkO> >&c>=he4E!H14 ӣ{TaY(oTZJ#┚=^ vc6Ioa(Dޯl8!BC_W#Q(|^ r1 Fڵkծ-ȥ O00尰h.`nc4'-`s.G!bC3<an862 дİ?a^z=s0[#BHSX0qiaOԇ)D34>2eC+L}lre1OYfQ4MkL| o?ds.;Y10g!Æm׎-9yꕫou[hq_Qmђ՘ꅅ [f&P8d.]D"L&;tحK׮"(99?ayzҷ]yq#&GD|ݤ8seSKKIkӶ-$%%XSL;)19scmv=vL  r."/sԉs~UAn]k9UUeΑ];G.FO1-]P{Bx:^XM~٥˂y1Æ:|z}u]ϑÆekVK$Çd֮H2lؗC?A*{P$r`8EOՐAe /_k~;w/du7HRzt=Tߴ1FV߰i#uQX` xx"rgG!(Ϝْz hiH2+az=׳ <0 8+@4 Ь#04Nh 8y-Q.nYpYshgz񐹜a`\{>O}}}}9$/ϔXS`؈k&dz5k[JG TT7[  q7  ))ju1P,ljͪU7b%IYJ$~޷_yAHNN_߿' 7??#%S)?NV )9#QݢnbsmHULt-ۜ68to@TrlӶmH=uONJBJ͛ڴk{)bhӶS 233333jƍ'~P(Zן^t?&M˗.;qبѣ{սkWOgUYy u E;v\pB Z^=i[hѤ)nA(.Z%[̚u˗kW4h=J5맟borJ"s)c3T7bb""8bFbbb#"`˖-11zJȁ\Lts T*|h<}-]u{/=5JerI4uR٠ACbޞ\6 X"MexdI灙] {L˜ig~`hD)h46 4MӘ1 g2qfN@S4M).Á&GmqWa3ILZOLjͪ< <0=cћGV#FjUBMW\ſ _??xU+V#12&Q#Ff*#G4[qǏٻWvڅVfv܉7k9s.^(B!{ı_}0~ܸ؛?dV+(C߷?L:u/?`C?nPٵ˹3g ,<RSR))ZlR[iR,3O_:Lefv5~l,6M6.[Ծ $%Zo'%&!70w! qv+UW=zV.[~/==Ob2бczzzZZZNq͚GB8vhZ=Pܱ#fܾ#55U.ϙZV;mTJRoAW(.[ϛ5*jQ[6mv"88xIII[6m*YJEw*v˺0a%mhKx<㙳a> e ZʹXmN2Ϯ2"(HQFHRcĦ8"\68[4EMє)M3h@)tpNFfx*ff8yM̉h8s0Hvhh||~ϯifoAAlHGd \xRwq pͺ׬{ͺuk֭  ƅQݻa5t`YA6!,W{:9`1Ogu- N/BsS}‡=FQ,Cx刦fN/sY_V`9X[Aa63M!hN:Wb/W :4 CM0acxr3v8ňdڴk~n@ 6cƾ={WSqsWp?_|-<,yŦ͚auŢiY@@͛qD,.]B. OʼnZĖ,,<gxD8l'9n~6~Uv(~Ʊ%Qݺe{gLƭ1"׏6xoP?9IIcY7hp% ?nV}r '|5ۻ\7WÆоcPNX|% ;vL(;&--(€ݼOpc@@ǝ;jj617nPT]vū$<"왳MQQMRiDg@רnweT:٧O^T*u֬ߠwC:yyIr.c=R\e_60}COhRv΅fi(V̺(QV S!s NQ 8ѤOF#M i1ZNJKe Gˆn;&BeDFx4M |`:>.iq00LheTBĴp~/n!bhq!d"Q?n'^86nt/Q~~~ݻw㌓'N@O?УgO??<}ǎ.^b 勗jP(0,p2Ye|2>LbJ*$_fF8 ;4E%ח%Yу(nMy`1Ɗ0$gaaxԳ|hZ gփ rYm[XzycڀCfN;]y #[6 ةg,ħdDFόF# h+E'E~Y&h$4 3(g0ӢPE)1é(F02⪼{QNǔr[IG*|fL̊i99{LS20ؒa"@)j z 7mTT /B022r'M:\Gވ)Hf]yfl˗`I@q;}V-[ڵkϝ)Hzso4dذb KbrbDI'}12l8j~{{{'%&M7#3D!#G$Oݾ={ѽGw\>㧙;tXloy8˥X,S[tӦf8hв%KfL&'O[3nlf֯[7aW^שs_xƎôi;|ߴHY766v5oRH~GDD rHLt[Q>vEDDYN!:x͛_PAmL:uqvzrS/ XVlM#mG3`Y#3}91W jff3d[ 3f4?X2E9= xhjq<_^زy͛FM7ndժWSg8~ߊ߰ySGצ /_BջCcG7Vׯ[QW ;oWUi)BP(wL!WL&N12YllჇJ:q䘘p߀@LtD*e_JrȠ*sʅKs{F@@xv9OBK`W.]ѫ&Uഖhu.^@\M֮_cO򽳱 _8w> 0E˖Ev٥ˬ~>| c#""ǮΘ6}WNNJff|&x/ X<ٲ)~8]'1ncOXblNO-g.i B~3fQzF4BBTj&ҬaYƹ<72ħ|%gǖ9%DNƌ+ Mֶݼ9u|_36v…iT)6HKMMMMB?~7rۼ "oob>U͘a/\@(qqq}>Ua\paȠh€_εo+_M-QVl&LJ%Hm %R! cR)C><f_Vڵ(,Qf+\*a}^,hM}m('"&Y",뿇+.@MؒMrWعcgBBnzxӠ/wP(;o߹}CtܹΑB[׍-[ `U֯<ӭ۴aW qb4q/==֭FEGϞbx;nEqO>VR%/bqO?=|} ,Xqν{^&%5jѲgad.]FiU#VXܙ2L"jVXjd˦k=-7I?}L&#ldhiWv,h %J3f؉raa8Hq|`GȪjs޽t?7pѣptO\V\zi!(8xk`ƴigNa3~D=Z?t\~=z8h0&1`i>}?_j5 ]vm_'N+_vh^W.[r5nҤ}^ZTh:u޹kԘb8--m B`A~~ ׫զgzN׭WW,G9֫שbX!Wؾ-55;#;#GQb$K䡃)Fv*gJ gmP(>rDPpJ:3g9\-~D"Qrr+fY2lC*U֭u˖Ei^k֭7` MDDݷg/K ))I˖,-uѣ{*j {!_?IƆ`/TJ՞ݻԉ{va=v}pa40*j4eVg''4lH(3ڡf|];44!>^ Θc&qQ#ifZVM6nق3ԩSg_9<:=-W?Ϟ5o5^wSj옅Kʤn=zܻom?܌˖NC=ٿ߿k+=APFMe[Ysi"oL¼۵oOf铧|)?mЮ}+zy7"=voܲyu1  ;v4cڴK/ᜓ?dYu=r9s5[N?#]>00% *E"Q#Tj5 >-ǖg}Tj5@+׬>r@-R@rrOf$'or,<"bQ1m_u6O{3:888)9bΐe3fƍX&߿WɉI2gNpHH0 A_,]x%p 7[k׾?,F7oom[>yd^ڶkwIٳ'sqv3~^I1+cc#"QpH} [7R9ct\gM7ޔ6YzYFx{; lРl\7ֶWC{vP!FS'O*vv۝<~3LJ۠QC\>}> zBHBZ*,,@SP B@H F:Z8P({ٽ~؞Y6KnɒAuD>g6oB.=|x7鞑Je'p<6l۴>s ae wc _0O28ԉm۷SBjPaEl5Rݽ}hM2– s+axyQEgmͱ %OU-pK%uٿ2׹s۳y{sWnFKTo(+L:y⤷wvzX~ ?{3_bthܤ [ҤIPn]H~cGaB7u?GOmꅅ`"99eVjJ6L"G,{ws4wSD"T:j̘Dn~bѭGn=z@RRkצL{mڵ]l)ײٵGϞxs {ɍǣ*Я5j$&&~pw/qնfee1_Y=~9o'mزnڰ9$T(vO:}1ܾ#:, wn0nq\.x#;~]^Xؒ@.]fׯh8 J7ń3e˖-۲yE"Qe?rmogN9zSpbRkW )1iS_{{vcL'c/E'~ " Q&r'wM \vl2y28u9wFd4m5h0"@F zFEZ- (j!Mh4hN-BN4 `Cn|@ws@n|7x<i) !i 8ְ,.OK͙Vgp`HO2_4 E*sxQ,m_vhVBuZ\֮9}?[____?LEfVV9Zj =-=O]N> nO'+ BaSO,Kj*-5z_E"Qll .[ۿ_Tn#G؀S߻M7))iOڽgOR٠a׮mܰZb=v]v0kVU6lݼDD;f&0uoц7l8u+7uڵz.{F4 4 cB0. цvy!~F@@@@@@؇Ϸ|H4M#E? #bR-@CЖ9d`V&V`pl$rsF;GF + h`&Bp's!єUef4aV(@+qp230̴pcVǝeϱ^ZO'չ !lAA|`6ebiʆq(ql;ߋ" 0w{,D\a9 5d."u700x ư J^(v%^֚{F@@@@@@7+I4 mPD0k>УF@@@@@JΙK+a`>3#L00X( EuΙ}ӧJrd\Ve>h˒RbocKy_f=aVVԹVk8nVB pꤗV yHʼnwO;?}B`~DcYg<5j[l‚Ir9^nTمN2=~]= hB4MrYTNT,]\͡R~,ɱuO.B \t\N,vsl!W.)Vݓ-ܿ7|ޯ@ȸCB^즦3g P,ՠ! i(!uDժMoVoQQQQuϏ%KYPHSSmjff~XOlo5鳡uV} ]ꘜvת6b@J7cVD)! EV(jϞ[Mwyy?!B]ߞǧVm4fx"hPP.?OD7x#C{v?Eן'ͭQ֓'{w? ˲o颔D%E6m}KFR/UlպFɑ K@q e`נ!B/BFnX'S(u={S Ǐ[yCZ||~B|>Bڞ PmڊZ*}@n^nڡ{WE-\7b4=?3"ʖE//m;`3ӧtTdUCst! @p4h JܦbjGq/t0u;sߪΞq@-[ixw[a!ZG#*q^^`KIijJӧ a!e2n=V)}{Zt۾2j.kn(t1f&Mj־޸*U3~ Ur|J=\!G;w/(l}''Tf _z 9ޥ%{jN6mZ:7鍘lo[[H>(t?wRyBwKNׯ@Ϟ+0)J(xRl@Ht0,HeU.7ʪT)ɚ[=z8QflŊP.O֭ryy~CB*fgdf@@۷z >*5?Onsr:wԨOb[=z<>`j˖O.S6H/Zϟ2e} $)Re5N&/]:B_d@Oi xӧjoSB!|g㳱re჋e~P)TKgfXSX77w]Ji'2Y]e}] wwT.h4bDA 7!B!V$Z+S)%Mgr77V+4<{bxʖEr77hiS<$ZMJ}LpblV5;@vDfT-f,o"!03*TysqDèO5L"oN[??_I3^dhziFhO/vK˖_dƽ{Ka&/)Sݥ~A4/S* KʔIrw_䈌="7/B랦hժhZ '<pm\m{qvl~ضx"E;*Fҍ*{ SȰbRt#GUM2sFLn&/VySn8zBU ǧ8~p;>lYF®J؟pz9~Stl~Ltaޢ5jWTwf*)QKN'kڵw[lI~rsm[q.|//ظm1;_5rK^dCul?GYsc}ו󂊽a]97IL*U  8Xנ&Dž/E7ٱ3Q#Y`ǫW@={ZNzij½5۷sP+FS'/m)4;uKэԨ{'QXxU+?۾}>99>99}vlW =<o$;ݼϯ߮]Żr?{vN8٤ nJ+!c @ R3˨Tgj>=SCEwyiZ7>Ux|}˩_^xf5jtZ|3pohh_9̬"Ν9/T/K|vԨgիO<(U*2=Kzjկ%S_0@/K tE.eyzn RM d~A/B_62r}JwS |pBJ]*4}CxpLz.Ųeg'FOKjvJ wRUp;PIxmdW메a*%MMyxT3<8X90*\2BOyOiiB*vF{r7~=ntQ99NNJ< ˕WgL&j:wmԪe)  >R"v0d|~ŲSBF^y~6-?{m)T[tsB.U(N J|;E6,T%h^|XR8HiMm·_{ޠaYoo~⥋SJ7KξQbPtNd@ڶ{{CD?ew?퇄QcBQݤڔ prYDb>Gd?>,Њ&T{ypBNݺ/I:}"KgfjeCCBK-'2|P*nӦ>]?8H%?,p 5kiJ $p5& ˖B%]&|// f|h؈yذb4$R٨c'*-tܘh*;PDbxxFu!:vͽC:u~FQ/7}lU2Ar ^PT)sG{'ի_i;VܮhqjPΝ[ - o)U*'gӠU-X`ӥJ]m!(,8ҾC\h(Sʻy-vĠ.-bP;txh4nn{[{pAyV)+<{>__@"U<|%aa(Y,ujsunFe+UL3izZlŊ{CD_?y&$!U@ï]]VHfV۷xu|YO&M uU<$1Pwʕh쩧'>֏.WL+|O<]N[PpۻMƓ~~[@B;[\>^XPxpRr!4}L\h-88#ǧyR>vWpw+, ,,n*%6 ʔ!}^^@~l9;9AdPPAA\!HetΎW@Px()QvSZ||E* Ku:P1tb I-77_"Dm*hPJ(dkny߽eҲe3x랞{u=ޢS!ve@ײDQ.#x >P/.]Zd0L~.2F(ހ]'N(zhO {HnyǎIJt&x*ЬaSh>vbTV4ezIb-[ 0iL={ >56kn"@anܧg),n`ʖ}P&´\*6%W0R>ƺuu-ZzZUC5:ݺuЬJW;vWwS< ,S>^*''tilni/JXp9evݣtn͛>ze:\Qp?>}r6lxZun37UʪUV|B!4IMmUYLK_^%\T韈yτB3\^}}+56֫ ߍ_>?ƹs={e*} W8nZc.[af@~YRWfzz >xP]*=b?SkE|xPH4W.۔+̣͎ +U1s>>k)^VVnnM&jeE>`T ndq,x8ln3M5n06jҥ10o&|}0qqXE!*z=:L*.?h<.6`J Œ*\S*ule\qVAò"W46$z%2z['rT5~~n⊲"feE٘K#b 7m p0-gOOZFH<P~>B=~>O^dS/^@jŐ= DQ䳼`-&9/\6w$ׯugڿr^PPh7^Qh*/"C{X?n#] 5Ws~}K*'{#SIٲQmN}FJŵOpfԯQ[qM8qn|_ۭ#_He\yؾ{eGv!/qϯ'y< xG_S+(PxW }"۷wWz@ǀ^*Ǥzy SSEqa\lkZ=@P6D1!EB^a#+hfKrR%FSBΒeLJc*YG(C m? X w@d4#WSҴ`dM4mx+˶A ^jE܀xs=zVlа,MW\3)OJST*u"o>uܸ~l9Tt"/~ie1*}ѽjqq*9,Y]\|> aC7l\+5jy h/gW޳g<-$! ?:skBǏC (({˩/(ؽ;zawOTyx`994\8yUA%KB_W)$ @iZS^^X;6[Skl{{Aa/\RFDq7իL9J=\٣PW];߽;ݿB'+ѶOld[4NM  H.o4-mӞZmXL(wsXYzzH:$%el@D_|7S/AͧY1Rz //iG8`ɗ ^:N7.9;k~UUk~b6#vv6t{y{f@5G6-\.W~Tj@LJJ+,||2=:u99 U'*x 6{!׮mut_u۰ԋ/kol{׿.n8^:нG׽{}POlK\:!)?Kwwܜ.]8".]Jʎ{_ɕnn;7NJ-8ZL(n[x) %kԸT=4i2eEKCڽk|@oryyy|78WJDlۮ]y|Jփja8Pڶ`uAA6Éy|)tCfyz-:!! tYu'޾}ҥOH6]825uυ jow>̋irvhL wWfq*qޥU~HOh-QJ&% Xhr==}V*NIDߌ/wsGʔٚ dOOp0n?VӓRNZ"Cd0NMd <#]JIBQNw>-h4;5:m[:/T)nF_ix{KOBѯe?<6kE8T [(9ho{/aS_bv˦U28u9wഅGou?BZ*ftr'kq@r~gOjތ[g܂"ǧ^8sTJ,eAQ}eMZ qܪN 2Í~*T`},s,pZoT+YTn Vu-s7檓[?}՜tVqRY8%#p!RR NJTŕ?)Rkb ~aRKX8>Р]~^ v@"AxR:zy۳AIrrnխ{nb^g*T)6lH.AT43@,yOC [^ڄzz׭rdzyDt 1`|ҥߟt*$\rr[ׅ RWؕy+T aZ:ORU N_>hUz=}S2.<}{Q[^~II`-?_ivŊ-W+ _'r^(ΪTfzz9 }o_4 @W]pwW^A$6|F* OW8mZmkRd4| {D@{W3`zBuoҤE0m%ضc۶2ŋuXeF=gbGQBʕ_Rt3:!vě?vl'DĖ-=͵zF?~yiS[A~ԂPt8zԦpЦΟ>߹cMv};m¨gOQ*#-_kS$dO_^)i.#2)H~cffGi|cKB/<S8C>* ˆerV.`{R^lKO1N%QZ^oխ Xpkgςԩ5][J=ЏANEwS'K\mG!R*șYJδH+[`H|Q*@xF"JLMwM.׈Ņb:4Jc'z !sꙙ鑩x^feyffVt _4OjÔO""^T Z/FVa+|í6%q#rLOz?4j<=[ i酞 UƭVLpTz:^?p ?xz7k;%ss}rsY/dfp&H>hҬ;W@1nnXq^ZM9S<ͽҋl/61"S}*bQeyy=r^_>?7?w_,V`#ϫ)P4UMtEZ%oY{Jȝ˖V^o5Mh0zy8DRfTGBGʖ]#ڄD )^QIdOOgWZdSDrֻ'Q9/--C'{fqk K1OKlSΈ Ɛh// !MQܗK X̙p,n Ъ=Si f0]\ 99L۶x*27~4s2/OBB+/]t)gp?r+_vmAǎǎkm͚nw{~1}eڵ2c+ a1Jŋ L+FH+e2H䖑T9Z oD"?ӲϹsU9?(+%%}ڴ-,*U~pW(B!O=kVl>ns3[Щ#G `L@uqѢASuܪUKݿ/ncyfݹ[f:ץљ[MLz_n$%R7f[zy>'Le?hӽ@Y̡/xb,Q>#Ng+{x5 %Yڽ@S:Ikd%rr֘h1re*pam~~P354+k姟F^YfΝB,ñg":C=psKIHַlYVС77OPM|w5] (RS3FS:xQ2؊G'Ot͛? I tکg@>_?7Ȑ~PTeRKxاIUrrfyyU͙޴كR޳._7(Nٲ'%!7(\.L9׷TH(SzxRRLOj*՘F<<1N׫y 7 x<^?V4Z5/..] V+<<.c{n&Ԫ]'7SV洐)+^n"T]eXxi=LxXYbx"^>zWdAJ51 M#dg43`2%Z4,+ssryygM3?O2>BJ ?_h//꟝ݩzaF={F]*|pX?Jrw6:]Ud|{M}4k"=D=\yb\3gLXܺ7oBݺZ_Q7ʕ ;wӫpѣPg&}IHP>|h_.}IKRI՞۷tX믟nۮYwK[HaÆ_}eWzzHt) .}hׯ/;/R郿gjvL]R^Y[sZEFnLJ{^(߶ Hw~Y!e`7]ǏſU@p}zPY~W>]©SVy k2u*׀sGn JeDkGe0(rJSR98W 7۵VVZ@YS2ٖoy*l٨n.\xz1 pɓ{ GUD:ݤɅmPCC:WR0yrrY =ވiwnl_uf{uI5;t:0uơӵj{j4Sw*Rz꩏j#uDeݴV3s?XiM&^Zmߘh萔MI=s^}jde[F"22:wNKj5>l7Q%7֭ϒ~k4 W*j\XQ6j"ãÇ~؀]._~oJnkTМjoR&h_Ыg*߶--PigitUzJlp.BȨ:;qy>l+vMV+hF"er+ /To8\۽F,.PjkʰvF@4`nL_b0 !y#Cas0a=)(p Mjm`SSǏ\I'OO@aa'}, wK"|BSqpE`x)윈?N>*#ǯ'Fr: EcL b\jwTNm&5uu]v:QdI͒%贙m={ƍ{V?N̙Sr]1՚1ǎ N)Z-wj$@XXqNAxo ٫|z\\QQMh5Fֻ ƕc:"#|(KK`֓.^2(tdvv5.[fϯ(?JډS)) PdQ Xt:,ߞ ] equ眞J:^=f u:$ C&(>XF@D$ SIT;_VI1^A,wJ=dTXrÙR'tPgL &2属ČLwݸgޠR,L2x 1M$ғJ:goH)\)%Fiɴ6?ӱyJ=LK)kd0.W#B> f6J+Rh:lf@7b<&x ~yyuny涶,{qkB<(w_}^$)V::CTT;睻@R38kvXii- st"#}W?.M>h_I L4*&P1 x Z[U]E-/-@&{յk<~Y6lOJJ+=SVx{DU{YTq*Wm閨~otY)* lW r}rmذ8f⧗eB=Gg3>^˟RFD (2@m]tRN5KȤVak$5Ch Ǵ!EEw< !{׫[•j4{̸vaZӇ]ґHkh֬1,Z1nkGcn}_Yŋ;8cL 4-_޴lyedʿ^ʭetOX1n&[cfwu %$8]3}('.]w].͍ bͺ2c3jsrCF_5G^raTvǧ"$bމ.p2/K>n#]-G|\VGg$}xTv熅3N/.[CFJY, ?=czhއMMnj`Tez[f!j˾9ZMV7mk:m}LfDnV;YaϨJS[FG Q*5+`Mul>[2&FN"N,i&ݶZUBOt0F"B(nws(}DbUyxSJ&?ӕ%dr1jE,]P >-Li9H+:0PY 7ʕEWv Aob:;#t$3a2<>HXRU|ЪaWGtƍẗ f϶s/ WWgFh{Ynj?pĢDؿ_zmFK|iI2ҥ/{zQ\RǏ7 -~}㪧~}W_զqjjoF_Uup vל9~[?f TWy1p0 V|9]3XeeC=0it}{BQD{@PnF0 e0;Hzp^:#fECW<5mXF@SWw\^M;+ d3sw޸O>}9>Ȓv~3u 3ϝ=J5 _r52mV/fK 8E>:2R\&H;?3j8jkhoyڟiP,T$RF6mgCbҰg?{.BTII2)I&cbm FbIM 徶|ίc榸RAG,>pŃ0YJ=xq/_"뎍uHQL&]VPҟCT"HdݎuRú N$*5$ 58VbSv99ii@JJ6S)X{2>u  t ?O:K 7us6AGii4%U+4ڏ'Y x%Y#4X̮c^F㗲m\^+ǵ5\c v;9XQB1ܑAq9xB3Cqxv%Uifl\_߆5`*p\+|"oSbLj6[ "T$ F[p!,hTtD,a;}aᗹ<PIgN?") DE;=,6~DB B :m&$i6'nw|9X !"]r/ 4J(@xɊr8ĝD"Uͦ)&Y\@8G;2 DDӁ'@H`1& 8 Jbh# H!B_8"@ Hτ_r*A9-Sn 2H)er*0҆z@`WRr7_Sy}ʩ ~ITFZXAč!ۋ._)DAbwR]^A$Nz`ADA= " nv׃W PXHHa ߭@#]uDĄ䤤䤔TrI ox|.>:thԡCOjO=c{HvVVC l"|dy^:|m]?"(,Ovk^tU##G M}Xܴ9ZZoiܙTʊs.x;HW#݇s5xk@_svl;6P^uWQ]JjmZ,߶L׮ϻRv+qWsT 5 ƆڦgF[Wih;=f}H粥ۢY3`2#CwSSt \_lc656654h֬Ѭ^PWW_[k.GD믫Mo7nv>[C/T`H++'xooH+}f64)2m {h޼u@EU&/F:)b0sT;ln"&yss~UODǔR(36ܴ̄|ѱÞXTtAb|q3< $&%&=QB"&&&$~̿h>RU˗=/G~l{o'(޳ _}ż~&<:<$[':yd3f@êUI6@ 4 @V׿:&36iN'RfMݼZuJ_[eKĉ1gjU&%{YepVkwFTT8]x8J1O"fnA"]Ƽ={h:={.-Y2h:ce[x==.%5D䃇jrs"1|l#,Yg=QQa'Kƍ;?e* (;r|PTdUU@~I@8:}zEZuܵs`ƕPrpdHkm]XT6[$'IgΌmlh'&{.]kjGsG.'<_dw{%>:;V5t),/)WNp XTUڳ 11۲s`B{55<łm5|T<ʊ-YDQ'=|:u[^(aTCz:dH`]?KK`&㓍J"q}B^N?|B(lҞniY {%ob`FEpT2_E6EugLgmͳi7?HU}]D"Lh( V\DNYvw˨Ե=+ s F:`(b0`;o^F|],9Ҝh7Kr8Vm>@i*$}.wgZ >PKv_a,ŹyPΐS˅LK-]YfzNO۶o7 mH+8/p,[b0`jjk'1`&}inU׎gTTǵge\aa_^N?JI뗶n:vU mm$ؑ lG:}B /,nm-j9utʔ>_z?(ȢىX Nm[:dA}0fv'.>)jj+W$u돬]~Llvc^$]+n=qqaSXK˿S'8AW7B^FooWLŪ6XgW_ p}Ƥ$a""DK;p䗔(_Ov2iip:?:<{ͭc laaQΙ35192haZM79;zNi)s2rKkj>}B[l-?/}>/`ER)iQʨsz`LJ.˧tu܂š[:sgͲO66ښ+<]g|B] ˟,*lݱfxf 2z.W|8eċ{u "8_ 7GDP=8?Bx˃ZϳX >jn!r:|-j+xGGohb *Ӝm61 4`RWOOTOT !T~& F&9s&L_l 0TT[2ƀ~1O +WMB|?s =!ׯ# zu_DEFZjj1.H!F#xs':͜ߍ -G@x ؇&O&562L/9"cloOu]*P)%>+S1k%Km>PBA3&=#+Uvł>&52룢˰'$ ++;s99_E_[I@&x'$jjJ+< o s4hØNߟ3'.-\{Bt "HJ//oNI(L)99^ ۉĪQp-/OϸaDWdd@EzB! K~hd(e<hLkmEe-c q-${Q>99޴ܑa_ϒvJQMD\f@_ʧo='׊KYl)ŵX4TsKYdkLN% tj4&`hg0P':,H$l6lLLRŘLTFK@5Nu ea3+trrDxJ,BB1;Cj&w E g`㇣& D\` x IDN'J%+\%Pv_ϗPo:dJHk$jqWl풸]_&jqPK+y3AuH1O=x]P7ȇ>!;' Raf5!a/JŚ̾i@k6xn*g`L7mՔM\ߑByυkq#\~lWxI&f.MVk•+?,?!v4%qHdv{.Jxv/䢿q>Ȍ@ :$j̫Wя!6`qKi#У d8FE ';@N=!MGV<ꑝU*UZ&Zri4c1#\QnMqW,;DI$6KXV ̢zqf~Ҩ[3Cu{Fn:W5aBex<*Fex|/+P]@r6mJb7~h&fwIP9A6bDEpWV *3$22O ` z~/<< ƍlm;,89H$}mH 1tH| èQ@+]($*bVu~>Q) *@N)eӦoF$oq E*}O7`f՘9j'ƎӨZ>77r_tAXf$30G^b`1rf70 ;Pְ3g;ju7)AKM&-^VɬRc6䇍B&>-'[p˖!Ή#7`K.$5͂éGf6HT,(8vӡ ,Xiid/ Xd#!jP*ĸ'bd=T&hk{wr~S*m"v~YߍDxL<. ?0\=#(_d4M <i&̄|彯TP#G * -se-((*͛?x]$#tiUBQ&3D*\=rWI*bJZmG{uҮ]ǙkYFWݷ`A3Ξc;CW"y/D}OY18BPkʨdVVjƏ.;a:K'ׯG®TW'r96nH<~__T&Hz͜9_(H9}_ ̈́\N$nj4rHj7ĦdV,ᇊ f:֚}b_e`D{nYv ݹ#cLÝ &&66uիݳN*Up51qՉysʮx=OL畗' uu6`g.K:C,d*3M 3HFp*29M`0j84p8agaGGRzeŁH$^H͐ɞjj0'jn}Nhkj5,^h_g0/qÝYzÝzz a8[2P?h p[:2?lnj"OLث_5Pm6 ]]O2ʽ&It&loh;==b:;1X!F#vB+ȆL50,VsPP=8ܘ;=c7`?w.@B::`f;A('߹^?X&23293cFHg'槟ѣӧ(mBO?bss=iij|akڴP9u'<•Cܵ -?Zl>:ݙ}%9?I$߸>͞՚99}xkJIFE4 ^sN6.:u%1-1ڪOJrXMK;s_^P:fY,4nMtTԻ"ʬ,UN2Egvvh,<<##qU&.jq&&փ&ø\-V:C.jllϗ'$Ƅ+Wh:8o777xB--cu8LP5.:tưT׭4ZCfDR3BUF\tu_8)9Zcz}FeR(T=aaf=23hQ-nETZT`#rjkE*uWZVuD::"!!5̾J%9tޫR/)NLj]섺:ɼ'\X ˷/u:d )ΒJGIa$w؊5ދw-\nXİ' >O3#e1#{ ŕyZUZ.8 |LR틋GҴ°pr8y|j<VfǘL9/a# /ge_)u&+Sߛќ,Xl=^OgH%FΈ6Zh tZwTt^cXl 2UI56DFFl|abZ(U]R^PnghRid2j9.׷b ` Z(ChN?IXhq+t:$ld{=iJȵXhDY=xGJ5bGO"eج+kα@_q_ X-@qK ;jN$H%CofƘ2bfR?$ }B+ߍmsvV E_GD~ ~lEMQAg/BA5! Mݶ&88"r*ADA=0ؼ&O_͠sps8QQ(W![C|Ižy_:5goqNOxs\oOMϿ@޽$=["̘1Syڴ7 Ĕ x!c AT*l"-E6sy@墅#_QNǝ:uyVznʊ(Íi8~kFf@r8ZS~4 W)Kq94ʅX 2Pm/- ր_AXQ\Ih 5\D)Ri q_XBE"=P˛HJofKiY鲞A5 Db%*%w}lo@墵uvJSA [)e4dTe?廅"_=^k"cI CZN=oEN|ο؀ z{7=93Qsy(%K)b4.0i [ɼ}SLE=[\ (!DdzZMr8mW`q)S0^Cz>mد=0VgbܹC% !@mۈw?(`Ν1 >)wtwF;G^^~g~`uJ7mB3yO򙕕?F@;[u:k`KR*WWxT_HrQt.Nכϧ?''NJNhRANJ"57- lH9~J6O#W;^~m׳O^^YJp(/s`KlJ3c}T=w`@t C"i3lQ#\RȵXr-Ab4>Vb0x2;i'6d|F>`~pRp˹\oTG;|la{;;Qʏ16[l2nA3xؠ_(K=ɓ-<y\<}OK曾Co8꫾*hq <* s;v8/mɝFt)ZMsڵ2z=uew$n@)x*%%\zBF[b""S,Bͤ&@1-q옋BQΞRF1*+Y@^5iƘׄRJNv)]Ӧ(J Pnd WSc:&OZdWWg'N 8){" t( x-%4n uabs"bGW]lc֤k׌,v1X%%674cd|#LFooZYH#J(䝑Qn4Bg0Dn*푑^i'75^<-*@Ȯi 6>5,5,\VaItpycHGqRFHD :u&cwdd/pc6_kB?X>J*-쮮0OOR"75W_ii.K洴ry?ff o]0Yy. ZF-r<~HÕB!oϐ!h$רCۜK)އѷtڏ L1bBsCx #LR2m ,QjV}l>DTd=_pD~ O9fxskt-?|E̿'Q+aJ40aY}˗wU/IonSӧq=? ׮] p_}~\OZ>|s0A&ie عSvGŘԖ1˖ z~Q0~:jkIR):ࣰOX6IJb#]J]9_}M%**䓄c`-1.P5؋,xj}evWj]W^{.ܞIsowuh0{CV|ݏ6, VK&˟Fo/L g `q^qqRcDuvc` @/` Q u6o,X#()SBBe{gn F1.8yƓppGQoGcKʕS<?!~_׸x1Xn:VX]RZp2Yќ~/͚77m&$5 x]Kÿ YYDdϞիLOlSä_{M}{?X톨cqK#'֭szS\R. / ##kkoeؿ}]zqEb zSQQQ7}z YYyvuzy'O[Ooad{b?cc-\8 .izȾvEG#a|ԩ_}N"^.11N@YBg i/p1'bN. Hjs 9 ;gάq=-aap|^ܹ#g_A]׮_$m2jiƟj^Yٺ3"D[^>vؼpPVVP4@"+1_{F==ZEF"cYmmг4AM}$'n -2%dXoL@Or8i4/?bgl?OnľiFӵ_GhPiJ@YTTXvKwB!?znxĉ+`?}y|#!a:$_oi|?v8RRK 8SnT m=y@…`OL)Sn8X=^#JKq( YY7q@}{ bqS(;6 Yfvt jo| RsERz$ {T87<ԄIe0q8,^mؼ'yW6++BD@$bgVGTԢ "##ZکHl`sN)U"ReҔܺe'O Ƹ^*ְ0lCUQQS 32&SXtM":Q$$(ѫKR(_~⤎ʌnxc|A-#P˚5V(;QQy*eRi)"V ;_eK6C{”*c㎗<Z 6V(ÐMs{7w67}Jk`ֆGP=\eٰ4 y6,ZSͦ?K$TZ6B4N{W)EAC}FClzC6lJ`2 yɓa7iRi_~? }'8vįZ0Bm.(7W X^|;>kH-GY`4k0[b"(S2I|/'"SmIk׶͛GVcrkj|~ҥ쉅Njnsh׆oӦHD"v3Ѐ4$&]f'@brSSyzz}|n_Zr<|F #*NJzn.*f$d*JR*Oz6|z>sgjn:\hDOKyp7Vd͐|Mp2>Kj㖵CI{i41mR1`0wzKdnd8oOUy|sF;K)+t4j:.7L~w3be B1Hil\'f"LJe1_jpzb"qٴCcz}<C'wy3TVB}w'zÿ2Hj7_y_v͙C̄_0S׭䎶1RB;ahZEEUh-TP(hmmt]z:ZX|l|O{WJV\d&5Uϔ[ ҬQFEB<1B {T1yDK0 ))+:FޞP_-P(r9!7CCb;"#Q(>!‚ GnHKlwΙ3KRR{x֑ Z1zSӼ㚛*oF`IJ$֍}O]H,!;]+-7vu ;пffF|[@D:dC Lv)&様c>II5i4g_%3YKs"oj>bޛ/6hz PZTq.s$r*& *Yna >47MAW =0ԑ? 4~d_>yz$270?>51.`.^t28!n`_,`f~c]o7IG0,^?Ӛ;u=))cLCHg(#t=h_?v k6ۅBнdIO.](`UU~I / _<0wNFwW~6NM T?74DEjuJ:5[W{ӴpM.?0ve|~DEҿbp]]G.Ngl6#]1aP?ҴinM+/GǮ{}W ~eGdԢC BRdGȑq`#"fuaԨmZGe l: 甖6y<(d<}並&өR/ݢC""˗­C4Vs`[G j2eOJӥoOTQLHd'K;ks7q,vw i=婔7vdY.sy3-90ݮ$O gu[ϑ:hN^I=ߐjk$>ސȵZ D9dz,2 ^Km4bkHĈӯ9zvvR>4 z[▾*D3by/o׃ÙBC)۰wt^Ф+DAϖ;LO?RT7q"tt +@,=Fxѕh|ހq\ bvu#t.ofj6PPoBlhpD*A/A@* n*p`L&\nC#Brj1r\ћImi . P џU]MKZ6MjoAhow(@J*BVz##j5EV&%IfRqI ,oj$?c|(crV SS=6.` --fBIF^eܤc^E9 phTDbM)::klݱcŲe3U%5N2(IGF}o}Û~'8nn\rYr9KM|OvAu zuakS{z>B q" XΝE†]Cyo޾3g }]@k* F)(!cr9sS:gr26foo+W}^9'}X66n|͛_@񞟣6o}=P̚kYy=哏USXUUEߟg)6]9z[;_u)kJ}i~{]Q:,+͘7ǣRF-@$vG@!ii1?ҰV-I9Ǖ"!z||7 ICo 0ҥ-x)z5+rFsGZ|J`hopL&dL2a!e1k6ÐORS(@RnY^&ox=Q[|N3{h R;hTH*o3rDqZ4vŚ "Q9a9b8)Dk6SݮY} 2_ę͕ Y-@_d"bz|NFcl`nw*n]eL9"HB9N'*SBtS(-?b}ţ}`AB0yr?|8+WpTv, ?\b V9Qim.r# ) >uu 7u`pWē3W@VH*%*bӯ!Kj4WuPӺpvWեKƍi>A&Vs'~&nnsZ퉍tԎ]p!Wwu"`Y>d' ˛RR[HA$gݳ˩K$7/X@m̫W&WIגgKjhe=::&3=\D7|Lvd>7o^YY\uqny`V^fs-m 4riǏ&0fo{j`OJʤgJk(asF-I>x|seΈ6^k377hoӣMg$[ZMFfb3z{̺?ؐR)Iiر "iZb]]+k6 ZY12jDNmn7cT**mb‡WvI ۃ t(\`45 3Cu_OhPj=f,F'g1_koo&֣2 V&)fLxB!_V7H Vۧ6{Ck lhmYV4l6!SxR lw,* k::`~]s`~DTU@aiiwiWnHšF;O*3g+Vd#}/ v<ߣN4Q\Cٺ7#UUrQ)tz{6-M1v'4DGkRSSݻ}q3]K^zQHJj?^iW˻?A"]s?iܸq?ﮞ:zTY'_z~k@͞-inn{EDYE N>x|„ ~1`0".N,-1vFE5$%M*:Wt3|I-,md]WޣxJzk Ѩ?^܊O^9::3_.\W|5!µ^i&c\⻭x<⧭#1`IJEN'e^>Hv:?q5Ea 2}bիCRpauF#Ŏ;۷˷msZL[KJFxք :2TM6Jk\TE6cF҆s4FGNMuϷ .TAC}<4X1AӴZ' '$͝[:w&,vbc̘ye Ր8LsJ˗t`](=9|Q] *J~G|xC6plz;#3J÷FǠ7:iR3 z7ibf2yшNO j&.[[.0)ۛ69I((m EN*{u'c6(PZSLm}q؜ܑ A.=A@m*q9cdX2>&}D3'5wn^OCwAılO>'<[SC޴?&{^^w5N?lݻw$7/KB<^&%o YgGnܺq+y&wzOwS(+W$O_}P͋:t(Nuᅅ`B?tLdrSYdx0;'_~Z0A"]mxx֡Cs>X(jl4q8N2l޼7@Ǟ\ӐHI׊Ob_9s͵h8FtLSJ#_}uqTEͨ('C,\?@ Ď{~HϰMM,=" oQ-?3}nm-uW>gOk$[Gۇ]II/81m2i4g%&S'<ݧA s9KR*}QѨ+Yh +ڂé)o.mhٙz-55wJ 30,X(\~j6']UH0%}ze6C&[`ND\vJ$fӾ kI6 v3;[0 V=Џ7cG-uG\o |q[6[t&leTZBJ1ex1a06?%e4\OJ=kH+@r8ZNiNg+ՇGtsIKn.4j;1 $ѣ5TD*UXqk(jk#))V^bOّz>kXpN& QS(j R d2xVk-cff`b]|"2(.3ap<"(nw 6PH*okъBۍ;Q@)F v%.>~3T`bף u&'ަ@}a`l >@6btF,r:6.#NXQvG ˕r<~ 4JE48Gj2Erj/"9L C $Έv: E2<r`Io  a(<lpA6z }߰_, "  " , " , " , " " " " " " "h" "h" "h" "h"  "  "  " , " , " 7nbGy6*IENDB`xyscan-3.31.orig/main.cpp0000644000175000017500000000330011475071717015540 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: November 19, 2010 //----------------------------------------------------------------------------- #include #include #include "xyscanWindow.h" #include "xyscanVersion.h" using namespace std; int main(int argc, char *argv[]) { QApplication app(argc, argv); Q_INIT_RESOURCE(xyscan); app.setApplicationVersion(VERSION); // // Set language and prepare translator // QLocale locale = QLocale::system(); QTranslator translator; QTranslator xyscanTranslator; if (locale.language() == QLocale::French) { QString path = qApp->applicationDirPath(); #if defined(Q_OS_MAC) path += "/../Resources/"; #endif bool rc = translator.load("qt_fr", QLibraryInfo::location(QLibraryInfo::TranslationsPath)); if (!rc) cerr << "xdvmp (main): Warning, failed to load french translation (qt_fr)." << endl; rc = xyscanTranslator.load("xyscan_fr",path); if (!rc) cerr << "xdvmp (main): Warning, failed to load french translation (xyscan_fr)." << endl; app.installTranslator(&translator); app.installTranslator(&xyscanTranslator); } // // Create and launch xyscan // xyscanWindow win; win.show(); return app.exec(); } xyscan-3.31.orig/license.txt0000644000175000017500000000123411474622772016301 0ustar georgeskgeorgeskxyscan 3.3.0 Copyright (C) 2002-2010 Thomas S. Ullrich This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . xyscan-3.31.orig/xyscan.pro0000644000175000017500000000215411373033235016133 0ustar georgeskgeorgesk#----------------------------------------------------------------------------- # Copyright (C) 2002-2010 Thomas S. Ullrich # # This file is part of "xyscan". # # This file may be used under the terms of the GNU General Public License. # This project is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License. # # Author: Thomas S. Ullrich # Last update: January 14, 2010 #----------------------------------------------------------------------------- TEMPLATE = app CONFIG += qt warn_on release QT += network macx: CONFIG += x86 RESOURCES += xyscan.qrc win32:RC_FILE += xyscan.rc win32: ICON += xyscan.ico macx: ICON += xyscan.icns macx:LIBS += -framework Cocoa HEADERS = xyscanWindow.h \ xyscanAbout.h \ xyscanVersion.h \ xyscanHelpBrowser.h \ xyscanMarkerMaps.h \ xyscanStateMachine.h \ xyscanUpdater.h SOURCES = main.cpp \ xyscanWindow.cpp \ xyscanAbout.cpp \ xyscanHelpBrowser.cpp \ xyscanStateMachine.cpp \ xyscanUpdater.cpp TRANSLATIONS = xyscan_fr.tsxyscan-3.31.orig/xyscan.ico0000644000175000017500000011402211311706552016104 0ustar georgeskgeorgesk RV00 h&bR  (x  hPNG  IHDR\rfiCCPICC ProfilexTkA6n"Zkx"IYhE6bk Ed3In6&*Ezd/JZE(ޫ(b-nL~7}ov r4 Ril|Bj A4%UN$As{z[V{wwҶ@G*q Y<ߡ)t9Nyx+=Y"|@5-MS%@H8qR>׋infObN~N>! ?F?aĆ=5`5_M'Tq. VJp8dasZHOLn}&wVQygE0  HPEaP@<14r?#{2u$jtbDA{6=Q<("qCA*Oy\V;噹sM^|vWGyz?W15s-_̗)UKuZ17ߟl;=..s7VgjHUO^gc)1&v!.K `m)m$``/]?[xF QT*d4o(/lșmSqens}nk~8X<R5 vz)Ӗ9R,bRPCRR%eKUbvؙn9BħJeRR~NցoEx IDATx lEq* &*+O5rĸG㒏"$nK>D \\ш"( rdy;ssk̙33g?ϧt9B Vf9꜁e /y `~=g /y lcϡ L?Vn9ۮiٶqU]ƹʊ9g`ժoj iw8Z| 0ZvBe / 592s*yX 3P B g&g` `|e휁@^j8s09e /+k ,TPÙ-y-_Y;g`2Lh h9 ,p`rF~`h6׶8 fN:Мf/Se )k ,d&~jת&>zkc]5ed \d*g`e /+ns930-@ԤIwJf$͜T>v&'˸ , `Hw0i6 #sN-v$yqmيw7g.նo8M|nK[lM+X榙[Y , ˼r"#Fd:8ޙ&I6}]a|QGE!2@ސXP`^ǫyhMVr70>8~ (;Hɐ{ѣ_/ (Ktjwo[vX*Kq6L1K(c9m.Tn]trgGm{ 75iMl'{ͪ)Ň֕6(vdyrS/>v vp[~[G>ˍ⥐71B2@Á{iv|=x'#tfb yUBLx֞WI[4yyMhU4rY}f&& ҽ$puC mpofL~j1a31p6 Ң!\{HuH\ / e2,h4 6 nnEk!쳓I#/E= V>0bnhK!>G?|r!q3y/f@:n &p9{gfy k<9ٽ9̀V*Њ8Zp[C^ ֓зzz*I& oc|$Aj(wSvur#q+ -e{U$#'ϧ'Ŝ?ỎOwuv+{~WIv74ќέ˖Vb,e탶Q|ۄmyO}ɽl Dc_UWr =./o^@>bsPE(<(p3, llKxvoB'Ԥ<~~CM~B3z1wBx?9i1qǘ=&1h8e3 h0[/[Z6ك5n,5y}I̤Ma3Y+˶Sr}-I]u2㪣G:1xNq4II}{ÞCp\ngwMOsZӰ<~5!tUqyPk s*Cy`d8u @CsC m!<>4[4Ϸ'0 dj*xïA71:"do'~vDavEv}2; =2Ypn7cO̩XR2RM2 Ԁ1_%]ctwvg[h% ŠO [ 4b?;"^"8?bu?K; J̘r4 5[|~ 4~ipu;`|A3:~_ۗ"Nbc9.ucءʰ[`C~=mR6|Esa |\~_.DE?X#:/'쟄4,0Ig@߇߇a`Q}X8x^^7/[? a=7 ^o.sGSmV's e.[6Jd插lۼ,l1+c׏ '?SEE0S~+,"~Y[ [Un!Sތ/S?e66IOX A!U9!\Ѭ[zN8n;ت`f7Sow ;m>r7OXɐ33PSmx(i~o8||##Xxkxn(l5B33 Le5(I`e%SY䀎ۇߌX۹cX6r㜁-[<|:vg,g`9g`j [S;5A@f @fL@[vN l"g`30`Od20@n>3|+<#|s27.lm!@3 t(z @lʞ9flЭ@ן˷&AZlP_`ԟYg:Kuhf@9V 6`v'b_˺ʩ%P]4YK!+Wg_9Npֶ߶gH ЭÁ.{s\* 0/˩:<\q7}?粨-(B`Bb*xQ<bۀ+o&jWmeEl [V'(9 w!kkwu˶UdsVٿ 8U1,*/xTg1OP TWQx*sOºG[7[EI/Z`߄~߄."POr 6VC_VQL/:1a F*ړɦl+G@? ?#G)ju]{ia.qk@V_|Ilo?3{YEXYy3!w]7Y3 kaR0+^ S)/ hU>|xuX;@Uq _zGՕa?. O-D,HE_x1Uy~ԞF-gOqݬBo/cNGkٖ!k.o4qu'}([8'w:mSX2_ '$nԢMvz#gŃ>d*g`6hV|v:Ӄ$+?wFw/xuII w.gPb~?*:p; `<|8\曼XT`[>AG]VBg& ==>]S$2!oCx##.r2ݦXi-[ШQ׎}vW"Φd~~ {@1<~嬓C8rigP@Xy{^Δ7 ܪ.,uK[v}D Կ`/e `܁T{&t߹ͿoXoSEaF9\ۚ|/эmѷU \s& m]2Q]yGk_Щɱd)gcRb^]x<,PC38f0GMaNDŽpR-_9߰C? ЏہAV8gE.G|/b__xiؔL!C>:]?.{} !` (+Ю"@G|<ZtgŷCG?ILJpB[~c+7u`vjɯNNs\#y'@:AN#]|bJo ,Kb.UM/q'8&? O L'!|th% kh友!YI{zv' o 6Yśn a/oq/rLRZyǴOaߏh?1?/gaveJX ܫeR4~gfG7S ᷺__8p]|yt %!CGTLݙaFt*DcK&GU.*<xM0;G }ӑ!\d_^¡#ưqQr\e#Oy9£^GѭeS@ТO<0K](漟q,&Këpa(l d;(U]]vڭrwA| '?*yy&DU'_Svd@*ƳJVǧqO-5=D~DI)O.'>js~ξ1xsUX&P*Gqn|piW&(21tⲃ94L*ǍyMO5]0^aPW"lOa5Kɀ8ziIuX? O~O ɼ^(m!hr?14)cr+N_ a',_{agÿ#AzCGn=cwWKO#1wONLBNrc#oϝ:vb,*UvOlp5/~'$fчwBR\qw[&4gK P oI[w-l:\Wc+o쨐S#h[jܰQ* U<m گ'N k@(.(x)\r/C=8L£K'ґTQSx=-)F뉲m_/'`Px o`يqW '1\P3s7;Bf󈭭s{x VPO8<2 %a4ul3Bx<([Ay۶.'&0nAeYx6קh?1/vrq]矼BDNIɫx??K{'<1CO{GO6};o>z[_++rFyzZƖ <!=mA\AKʞk-l.eυV}$g}NDZV9pP]4~풛W3C0X|Q>qco,Q^qၽ{X>:`Ӿ.|tZH gx_p_bm<ۜ%)$%:7/=MCt]F.Aܫ^ G}/E?v+`'3g;؜4]_G&2Ԥ1 7 F':/mIn6:'OUp d_wn{4< E^8 aWZ{+@_^jpwR8d𼎧BZV䋜O9w=ȵy[zO`=/g݊6mZos}S3x㺖]/~竣mG|M{ĻX @w c~stݦA WeMxkLjcW{t9$<7MgNS).G;8nO)O`g`9XG8Sb@FˁG `vzJ?cuOKVUd[&m|A 80| g!Z$rZk#;ê)=d&&OM)/> (n\\{:c MƾJgWfWO=\¾LM?4[FrPD=9qNZhG87[٫jPa{Κ$)DŽϫ~><ȇH5j{~<}_u4΁ƿ}:sBs $ir#@y&0 U~ {csp}/쎾 KYOznt'i}IY';sX[P>O ϗ£WpgzW4MbuFKK{al:*zsR`<7{"-GUN]wwmI oo߶僟mj7w}q^.m'T}ۨL+ϋ6gtCk?+9!\rI7}^^x)a`/* Nj"+ 4yWa^wzػ~gu!Q> i}0 V6[|lFGSB1O_`a{=٧ڷon;-Nm[kw?wGuyb6~1]߅p}k~gWF9QImm>~}LRi > ḰCJp ĩ]wGb&%~ץ3BQ|)1vՌt:ـ&(:讟/A^NoS{_\ݦUL۪i~SElpSS| ;~GV[٭#]gu)!.[]ȣ_wT5mLBo%K Ϸvׄp=//^,C zu &q:oƆMPKCx 5a^pu߰#uװ-v0 mϜ`|C@ cЊ#zdS{[P'Ga}^&U'/e;ktpwC8֡SXx§9=mtR h`9KU?wph߮1me[~qۂ>z%~;_}׎_ȯ'$dXr5@Nx=Nld n8*Ll_y&dh0|2']b?ik[{&0ා&;`[?oFG>I L ʝC_už/&s`X_I:Xm:ÿ q~5-*0=ȉw7m%q/~zgC)xVO:|)@0#nǂg>˚hxw' kߛ'ª{UGK_1m[]J{?1YgWָ;UY<;}?kM,1%I2q's&`kՅ7W+>#4f/W5VջZLRab1:g}L&4`3ׇb}xOQT`vS\{+3a;$NUx70;ۀOMw,C+.d!T7l1(V]D|wtW֞rVμv1Bŭ)E uۄϴטDg`po!578 h> J=0s kKc/+dab?,Og5[P)bIaR,xZu`gy_>lp(B0©9O)l-iG+/Y8NJe lCW[~wП"wvcKa|R1IiۏV`ce}G(H ~[K?ڭg {~n—(/Ei͍GYJVDA3ΞozhclW=Vj@E30]K?Vx{,p u ʘ}.䚋gv/|= #:urd}q̏'7?{N>p{Fcs]5p|9:KXD$H!oni_X3|ڎkE]_XYXq3^ѵjBF[hb*V V1딸'nwOׄO| ff1iͩiPWpB8V 傂S>8')#I\Ř>F6I2dJXr}|Zu? X{=/pU!qlk[NPТ`p%!| j4Y J|)]NSX1YمZ ru5S͆&ži#:d?,p<7Ͼ3"a1&Kɤ%x'D؀Q NA匓ʧ (?=럄jL 4w:yC-u" Wxi HzuXjּ̼Ѣ_aaoh])>=skS~z\+u+:+uk7硞/+ 1 <ß}K&L\A{>oң͋/)#Mq*Mɚǚ6qgo ա L! ~jSxM-Q7{YơeؑZ55X <&\l @?W|oS Ƀ.KhzUrd%nlx/7~m} .v*_E{^2#_]cH!?zcL bH] {0HXe~{^*gͦ },Zc!% pj|AXvۂ|}oXYQ<0I ⩿UshjPK? g20BE:#lb^f0 x3W_>~MJ9>RuC\ԅ|z5Y RG}u~T]&wl׫~BGkEE/+pqi6 MheNQE+:گЬ1/C:tNU^r'[ UW~+{h_ڨHWX >>cWd*◶Ow1gOe?3du|]o|i|Ko<74zbd'yVډ-aS!`V?dː30$G/1ݤ?`.Gp)e >ڍq(m2j=U֟:X]YiiNJ/Ю.m}&v >1`E1*mOI|_ &Ketz>ڕM{ɽ~ ["G),x*tchan'8Q%OmI”ɖ@ F8[RB*}Ƨ-TD{}$S:{H>x0=؅.a^eFͦWkl|n VǾ.urD 1V1dD acB?6le,g g`*8Ǣ)S:ZYqE'@G+/Ux/u! #61"㗑(KNl`Fy`̰-H?x/H_<5^t R{^n㖮bU=17æ*m~E-0XBRN3|{3<0)[I)]|bXI:fuk`N&P];plX}}lя[|j2Ŋ.,a_X/X@zj Uz`tĨ<| jaK@i>zWxhA {[޾d',7'&UI>lMvI_L- tF}l1J19@\X@@Y J:{hx*>n naډLGjtiT&. q?14X~{,,Ťf21dSS17VґLmmA!,~bҞM9N-?ّ>"XأX|tQ|.P]oՂ-ƌ04@+~%FEܣǼB0΋|*3-3<3;OW99S zQ+ZHUX[Vu^*A ~VVxɤFD# ~KWlh>#>ą=6`77%od_MW7V/UTdX']d^@\ãN y}a2OAj ZvI@$Mf$$lȮi' 2‡FF?HTS6b2` -9I%X[lS2xj :RzcxR4ѷy: ,>2aR0k^hGx|1]ɡeS>ɩ`joH<*M<ɭNʊ/OaS+^/#~a_&}z[GӲś[T$ ̬]ձv1@~3~@/a<]?ũD{92 t)FU_Dc {e?!Qk)B!BB$?bz4Xrb˔7:6[uWekYlY9L8%V@g@,/So%>'# _Q]:j /Ƚ^I|d`xL?ң.勶|]%pȁfӪq|'L:qX icLjLX&Jc~<_aK4OFohtЇLË=Y[V@(4X|U3S<~Q>ulRfIK'y}ooeI^h_i%V}R1lFJ^W2D;?*Q\#ݫ2Nh 1B~ʟ.uA8%<@-QlAeˡc}xͪ:m:ҦDSWy)ɀF<#N|MOψ Cߙc)mG F dyT2h$f{ =x 4yyLK_$Ķ'L n6 T\_EȅUȣ{ 3PoYΐہxU; VyWq=R.ITb]/Bɬ_O S<\xR%_Um)i7(®.~̷ALuyˊnr P26j;٠mʞ-G.^s@QX'#+I7yFƓb'xroǵj_K*& 돘C]#ujq5RǤθ9T^]xccd`/+h?KsXd&SS^nM0)Ϸ5-|Qo&sx/ޥaݏ;9~(N_qk% 33PyHeF<*xBVcQވ9۸LdQD-*U<M]]@WtgG`|XQ1 @ eŎ4bvKUꧮ!ޕ&}muѾy=tR f`L29SiWUOz: J@l)ˊOjVx 8!Oax$O|yXvCb*A{~Cut@ѣ.Y uXwa`a630<0|?:E~>db]O)sˋj/ZPǫZ.k^pP; I.Ra.>9~yn Wy'F2@axF/TV(rrVh `a;8}#]>>cQ|Xq +m ʀv@;"|x~U{l>Ij#/ќvy[%ޮd[ d\(]}HHO-յ`cz62+bq0`.t6\=2aO2lg=% v\^ţyX63Bvi Bfa:թcKmxXp }=|Bh-`UB 43344'+eOGN~U&-}Zڣ.U vkm@Sڡ/i-M׽<: ,iY:ť /q~mЧ-qB_BA\(j/ƒQXy<2q6/'>}# '=oYyX73r Y.FFE+><փo˅.=x)].t0}"A f kK3wIvdvQhZ],.vyvmձ eK c6MeqD/ND9'ƩZqxڅEvIU1MC_׳j-@haߧ߷ ]^~ҧ]p{6˖=e?S@?u!-i:4q?q6ҥxȅ}/]^.T>A fUw袏N\MnM/קA4E>yK-,#F^`͑\\ Nn'ҟ@,/,'Y&+킧 3r3O+wG<ѵBŧ=юM󐁱oS<~G'ţM܎:m=p@.P@ ( lU< ddW;4΁ ,@~4'S߽=-`c~]={{e=cQd_H`[ZIENDB`(0`    ? $'& ?)5:8/" ? (;KSPC0? 1H[eaQ;%?hysn\C* ?ªzucG, ?ª~yfJ. ?ª{gK. ? é|iL0 ?  è~kO2 ?   ƦpT6? $*+)$   '++($#Ȥw[>%?,8CGE=/# +7CGF@73̡eH. ? #6FW]\TC3 *>MZ_[RFAϠnS8"? &=Rhsvo\I1$.?WhuwobSNݟybH/?$=Sm|n\C3*.>QjzviZZmV=&?!pYI@DǪahfAvdL4@q{k]UTods~{mYA*@Cwy'f?vu{whR9ڔA3yɪhoa);wzs`HћDq.odg}ddnyzlVǢFЪ3'e3|uXA˪ntzsaI3hϪhnZ}՘w]G0zXrttgM vͪyf]`M7#gkdN Ъ"tj`L:( 'T[XO 8^sb·E9* SGʠM 'm\W,#ߪ/ؖI80Qf|  aqGF0(8Is`b4/ ACDFH~+B (ej~eN3# A 8۪@t^A, @ +~jN7? $X[ԥ|v[D* ?`^j_o !*****/  ?tO*? ê=X7+9]E>4$ ?s,$ r0+% ? q~ ?@9 f ??????( @   ?/ !#-@C4  A]aK)HHsY0q{`4p~b5  pe8 mm@1?@4# *:A<2jwL' 'E\cU; *G\cXHxh_8 )Npw\:(-Hi~}lXɡpO*QxYGYukMNzc>fxrHoxzsU3""w̪|fnɊĪqziGq-vArSMwuZWF^ߟnQ.eqb "vpcT: ~^Xv|`m2 B?U< ʪ7Qw   %, 7MlJ>  (XZwP-*ڪefA `F:UUULåܓ??J`dd۔,UUU4˞Ә?r%o.8# X Ph _(0  _?*'4QL* Ĝ:g9Eo> Dr@ !  AzI8NM2;PK;>[% Hpz\3&?h|k+hUp=~[7b,z֠|Z.ϪYܪuUܪupJ1Ho_2kLzdݣ;w˞c7vkЪl3U~@iTO], p_U OD#=(8AD)co>`!WsUULæ__otO)m{0  1 _?(    __%G,bpE yL + !+Y <n\'0fjtt-kqz|UޑJjʪvϖw=t¦QUc;ebh3BњK%1S@4Be/?x@b|RA???/U *!pyߪtD __xyscan-3.31.orig/xyscanStateMachine.h0000644000175000017500000000376511377515055020072 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: April 22, 2009 //----------------------------------------------------------------------------- #ifndef xyscanStateMachine_h #define xyscanStateMachine_h class xyscanStateMachine { public: xyscanStateMachine(); bool allowKeyLeft(); bool allowKeyRight(); bool allowKeyUp(); bool allowKeyDown(); bool allowXYScan(); bool doPrepareErrorXScan(); bool doPrepareErrorYScan(); bool allowScanXLeft(); bool allowScanXRight(); bool allowScanYLower(); bool allowScanYUpper(); bool removeErrorXScanSetup(); bool removeErrorYScanSetup(); bool enableSettingsMenu(); bool disableSettingsMenu(); bool allowWriteXY(); bool allowWriteXYErrorX(); bool allowWriteXYErrorY(); bool allowWriteXYErrorXErrorY(); void setScanErrorXSelected(bool); void setScanErrorYSelected(bool); void setErrorXScanPrepared(bool); void setErrorYScanPrepared(bool); void setXYScanDone(bool); void setScanXLeftDone(bool); void setScanXRightDone(bool); void setScanYLowerDone(bool); void setScanYUpperDone(bool); void setErrorXScanSetupRemoved(bool); void setErrorYScanSetupRemoved(bool); void setDataWritten(bool); private: bool mScanErrorXSelected; bool mScanErrorYSelected; bool mErrorXScanPrepared; bool mErrorYScanPrepared; bool mXYScanDone; bool mScanXLeftDone; bool mScanXRightDone; bool mScanYLowerDone; bool mScanYUpperDone; bool mErrorXScanSetupRemoved; bool mErrorYScanSetupRemoved; bool mDataWritten; private: void clear(); }; #endif xyscan-3.31.orig/xyscan.icns0000644000175000017500000031100011311546140016254 0ustar georgeskgeorgeskicnsis32 /?Ab||vU *!xL&2 bi Ud Kkww> qzus8mk__pD ߏBeRA???/S@43BQ;etڈk|U   (  vm2 BU< "pT: ^X^Q.eqb qvrSwuZ"fqziGxroxzsU3Q懋xYGukzc>)Npw\:(-Hi~}lXޒpO*'E\cU; *G\cXH˗_8 1?@4# *:A<2ȏwL'  ćm@  e8~b5{`4HsY0 A]aK)-@C4  !#  ?/it32 u*ȬC?Mϊ/Ooo cf|KKn ]Nr|fUJ*t_5  5_BzlE~68<sCOxK`#^]!$(-3:AGQW^f `8LQW]ciqzP[KRZ`flt}5a*T\bioxK^ekrzK3Zahnu}jEjqwrcsy$?\3sz[{5uV`FRqnL &y[]L^,4 {g-r^ 6KpOfxEl={gB~yPp#R.IMtK1O|aiA%Leb}'P *tW 4u j8/P Ftt A{ uHHR Nw| ^ " *a n/ }zwvt8mk@???????  ` ` p 2 P 4 " q &%$#  %&%$#! G,+*'$" G--,+)'$  7431.+(#  F555420-*%"  z><852,(" ?@@@><:51,(#  REA>93.($tHIIHGDA<71,'# ABDEGILzwtqlhc_[WTQ^z|}}|zxvrnhd`\WROLIFEBBA@@@???????????????????????????????????????@@@@@@@ !'1Qxpsx}}xph`UL@80(   $.6vv}}wme]RI=5-%  "+2:{{tjbZNE92*#  (/6Y{xqg^VJA5.'   #*1<~{slaXPD;0)"   &-7@xog]UL@7-&   !(19fɇ}sjbVME91(!  #,4?xne\QH@5.$  &-8@|rg^VJB9/(!  "(2;pޖ~xnbZQF=5,%  $.5>{si^VMB:2*#   )18Lɠ~wpdYQI>70(#   $+2:t褤~xrkfb]" 1BBCDDEFGHHIIII  %,4@u "! !(/ϫ0  R  $S$"  B  !꭪E)'%"  4&%#  ҫ/.+(%" b|--,*  2yt530,'$  44430  ꧢxlJ=:50,'# U>>><8  w̡wkD@<72-)" $EFFEB> (wkcdJFA;61)! MOPPNKF 晒wkcgRNHB<7.&  E}UWWVUQK tĒwld^UOIC=4+% Y\]]\ZVO %xmf`Z^XRLE<2+% fgbdeec`[S ñ܍{phb\k^YRLB80)#dhjkjgd^V S燑}rke_Wx`ZSI?70)!ekoppnkg`W woid[Wf_YOD<4-%4wjorsrpmh`W ڄzsmg^Ywd^TIB:2)$hosvvtqmh_V S}vpia[Ykd[PH@90*Zhntwyxuqmg\S ytmd^[[i_UME>4.mrwyzyupkeZO ~~yskc`_we[SKC:kpuy|{xtohbXL D~wngcb^jaZRJMspux{|zwqkd]RG {skgd_ge^WPnswz{|yung`XMB {~wojf`^le^lksvy{{zvqiaZRG; Czsmic_]icpoux{{zxsme]UMB7 ~ysngc`rvkswz{{yvpj`XPH=2||vrjfc`kpvz{|{wtmf[TLC8.Czxw~{vojeabquy||{ytpg`UME=2(}|wrpnnyqlhca}svy|}|zvpjaYNF>6,#y~yslgedcd~vpked_uxz|}}{xslf\TIA91'3}}xrle`][[\qysnhf`iy{}~~|yuphbXOD<4-#yxqkd^XUSRTVvqjha_|}{wrld]SJ?70(}|{rkd^VPMKJLOTyslhb_]~ytnh^VLD81*#2yzsib[ULFCA@ADIownjd`]h}wqkdZRG>3,%׵sz|sk`YRLC=:877:@Expkea^\ۍ{tmf^SK@7-&  "+3;FOWcktz{uleZSLE<6310149>DNU]gnw|}wpkea][XxqiaYNE;3)"  $-5=HPYdktz~zuoe^TLE>60-+*+.38>GOV`hpv{{vpkd_[YVkÓ~vme]UIA6.%  %.6>IQYcjrw{~}ztnh^WME>70*'%$%(-28@HOYajpuz~|yunia]YWSR嗖{rg_WNC:0(    &/6=HPWagosvyywurke_UND<5/)#  %*08?FOW`glqvyyywtqkf_ZVTPNPxnc[RI>5+%   &/5=GNV^dknpssqnjd^XOG=60*# $*29@IOX_ejorssqolhb[WSQMKK|vk_VME91(!  %.4;DKRY^cfhjjgd`YTNE>5/)##*07@FOTY_dhjjigea\WSNLHGGyqeYPG>3+"  #+18@FLSX]_`aa^[WQKE=7/)#$*09>FLQV[_`ba`^YUQMIGCAB}vmaTKB9.'  !).460)$$*27?DINSWXYYXVQOJGCB=<=yqh\OE<4)#  %)/6:?DGKLMNLJGC=94-(" ").49>BGKLMMMLHFB?<;867~vmdXKA90&  !&+158=@BDEECA>:62-'"  #'-16:>BCDEDDA>;965312{sjaSG=5-"  "&+/279:;<<:853.*'"  !&+/269:;<;;97420/,+,woe\OB90(   $'*-.0111/-+)%"  "%(+./0111/,+)'(&&&ulbYL?6-%  !$&'())('%$!  !$&'(((((&$#"! "|qi_UH;2*"     zof\RE8/'     xmdZPC6-%    }vkbXNA4+#    {ti`WL?3*"   zsh_UL>2)"  yrg^TJ=1(   xqf]SI<0'   ~xpf\RI;/'  ~wpe\RH;.&  }vod[QH:.&  }vod[QH:.%  ~|vod[QG:.%  }~|uncZPF:.%  |}|zslbYOF9-%  z|{yrkaXNE8,$  y{zwqj`WND7+$  uwvtng\TKB6*#  hrtsqkdZRI@5*"  (2;CKV^fjmonlf`VNF>2(!  %/8@HRYbfijigb[RKC;/%  $-5=DNU]`cedb]WNG?8-$  !*18?HNUX[\[ZUPHA:3*!  '-4:CIORTUUSOJC<6/'  $*06=CILNONMID=82,$  $*/5:@BDEDC@;51,&   %*049;<==<950+'"  #(,0133320-($   "&)+,,,+)&"   #$%%%%#          ic08i jP ftypjp2 jp2 Ojp2hihdrcolr"cdefjp2cOQ2R \ PXX`XX`XX`XXXPPXdKakadu-v5.2.1 h;DY>ݞs ~Ѿi-wتf%D( P[!7O;ʔ μΛ>LU m6Ȫ0]>X Kol\]gBD浦5.b 䣵zuEB7@33!E N)Ts[9"5)~\4ۦ@wHcBsimxNrX6}ciT9a opcNy*f<4_.4)Y:eoY)|L݇BՀdg#D:gnkl@!hv2Uzwa|G$~^A-ґ`$(0)9tq ;V(sYGj;"f B@Z!_k7P6"m?`FLv}\}ޚ$R4%k \#瀍I~o$`縿s[j+vSQSfl )ҙSKs>*w&?36d8pƻ޶aJQ{g'Hr9FʞۚI 8v-̮?(~4) /0L^O!q}fFgۄɱItf4} f6;~h04) G) =괧@S:#4Y] toǘ=gS3o^ شh2 2U*k|[GO&7+/*3@iӱJD;L`ݥBC*.LDs92XfJHܮrL,p{.Kկy&7o)^AgWCh|3P}O0>@d+ \)T$lc\'qI_ yf*n''@}.>@vP.DS[`c6FX^]l(˼kcXNKZ7@B0yVNTqyF:)DGr{JN?Ae]%B*OaGcPm})h̜"hy֥`W "%c`微DK Y;lG"i!][tqsQ5;+46Oe(VΣY]hZ@$LJ:뚐aMkpkLP+}V[qxkӘgE& ha: BmJTDX,?0XS"(3h`I~d |<ӻ8qV9@QƩ>E"5,PZ貒Cƥ(n8|ַKb>p hBo0/E:>ׄTu$L2ʹ_;՛Fbg5Y G~$-%E?~~|r$pdq?g5`cG]XbpD?u+ U24.6_$Wb3` iD]]bE5L,`D.K]/bC}y_5ez${+EeqGrɥJp\x'O 8UR[Wv"uWi݂Rʰ]޽x5d7F*ޒ#6,1%Aj""daa8O {*M؏>u&g64zrg%ER}%=3 aײ5HMi[#ikb۳~P-Do{{rY %>K&@S.q\Wzm. k? kd%w5t-5wG*v]Y F9B#_#3Y4K:|$23PE+? j}c[Dm-EqeZt?-pfj#nh#n} |Z>-Y)ֳC695* Z Nܒ`*8i>_y 7<ÂM;+ ˍh/NpT 2o. 1'OĴ $`XlqV:g-ZC-}<|x *'0t9lhnWcij48`κZO0ej'5Bu?\Zam0d聇T X8X-\]@"ţ8DNg lq# M :\[(7>r̎ @gC{;B1u-)yAm_hj3tZ)|#OPU,k5.vbۂKŸr^+b䥅85@hkCȠSȾ%ʻPkؕQ{+nɿH +:H' DPzj~5קxq L4w+iэu𴴊(6y Ԇd&XEߡD: Yl%ߐ+:UhT~|}Ga$)DA|8P S^j|fhz P!7QΊƅy~az|f2W4-h @ċ4(&"m_?✿)E[li\PbV me;@تafj.jڕU:Xqj01\_ȋX)]Y\/;u!!\FnoMmS`pulu0+' e֢QCfLHT~ o"7l)k(#1H&ey2h&ZRP=0LD"rrHM/M]ݭQh}4v+TؔrV=82QO@NGKM7O6 ĮGWЌJـy 7t4 .ʔ{ C+#N.]&Y;'XڢgC9!YFmrc8B)ɁmFb2 İwU5$?L F-DKqL~ϋ64L󜎅 DxTr,2;<4Ofv5ˣOW1ɣ8̛泸0>Iׁdv,_)j%,[}SvqT[,_=`Ul)3*]@ "z j/a2Ǐ[dI+;ÊHBBM6i@DœݪcWPЮă#{ϭ3v\,J[vS.km;.A֤l`l7v$d>=ҏת.f:\64VӗtWޝ_<7V*JMv5,t ^bֱMϼ+yϲQ4 CEc\\2WPeUTVBW|Vn󽭊#ȊisB"9C<> ""b8/cee5F,4j }]yg>f v-u{ƀ4!gc[YN+n:6:O뜏aH22CH#鶴t+^PH4͛RV~ :L͐yt16.k}KAVċ 3/7rkuG{mN5CV[}v&PrP(I7c _`ըՂ}=4RIOU i娝ak׍0z03շ kkss#˺[穱Le2 gLj#Fg8dn m$|G]~;A{B T7ljYNȚ~w:sܨPgl]+%"_WV?W倄-,P0& 8=ͥ_43`Zb [9GUЏ iH3(I-T)aA_B8I(0zd T ,q.HmMLږy;PФBPBu ?Cj]ڳ$7&abj9i^7[8@ ۛFNrK^UC1Zke2iAPniwªr_mӈk&lfJ<=IJԌ~)pm{k gE:Jr|HЀ (!}j4n-\aРr0 s5p`ÃCMtдV耣ةr^eVӢ0 eZ]9W¡!OGºBD\BLA*UeyV5hYoXk% Ӧ ᒌ| t q5 !QsұϘ{͆E å,6H yuKxID̏#Yj@zZ 檺BrG38}tsͻ :n4$j7J)X9{7$j,ƣϾ X1W~6-L._(͚{X%f+Xfrgz,L[+KѬ'rS3>UB2L?,~pOFd"+adզNFHᢋI)B#(ӿzğ `0m6hNg)ίk(4nՏZ#+0PFa;bJ7cD('Hf'X?i֮TyI StN0 ͙)/kwvnWsڎ\cH&jn{o}ZdDB4@]kĂzZ PNU#c OUٸ)ٌ172t ց l4 PMT˛fX,A?P7\Jg qAi|-ۀxM$+}I/ Lj!AĠF.wLQxYGܒ]lWZaWyKM>LDcJQ_=)ZסZ'E2lV-5qxss~D'ӄ>ޜ䜶cARV^TG!vRl\g%$=zD\E-72H}ޟ{6zk0䟓(kuCXY)a.Dڻ <؛sl2ʠmRD`:vo z iwpnx|@69_lj\cL/QAV6bZWh@Z\zo]l(O! {o%`]ǭ? 6P7P+z<w&<˒sE\_>nH,^5S ii (izR#0H)wzŊ$r͗9燪> i(xJ5˵qp!Ÿ<`F_*NcƬΈs0 o3D`wGBc ?LolK8xAQ@oaяx(ԖVFHESZb%2-ϸm@|'Jq#u/l|Na-A$eB:)laa'"wS |x FyѠWyee2V`?6X䦇VNC:&DI8oloXm((np͏~Cx/D/;13 rbAn2' *#o(?p-Z{P"V]B9wMr)#?9?QJYR#$vq TL Re8Fe(>\y-964DyM4Ȳ: ucHTy!CYcNTLիDw 9$`/7~i 0%S ju$_H~'!1l%Fo[ܔPQgP-{7h6+F֙^~Y\Rةq#V9}x[?&(!uB\NsM0?CUQH=O!sЙ`jVk(fK?N)W[c@~ hpۼTٷQ`^Ӵ")I8 l){<nYchzN_a!Jc~/Dͨ z3_纝U⹄;|W}1i@tIptNe9we-_#Сi>Hd@r0Ot[ŘaT0!EȢ6F]YـdU^Y4,RK9q0W_MZ8} s <&c=0%*VK×jj8&3|[bd9x'Ξ1/@k{e/ll|nۆlbZ1`F~>keYsbT`?w^ Ѓ}aEV SrFf\!45g9DBs;"6%lp~71k˟LtP.l 3짏vs /F/02za;3tBDFxE+2MHy2E[яln~viL! v3m@p )dzFʾ= ~PO׸!b&=`~@pQ/})#+ LWdl{:Z\\~7@xSKKc&=Ve4oCSϦAB$@D>mOMKa]$m/)k%~4}JZD uָxl] k㙢XAOWO )5u ޖ0mlWy7:l뇋=CԴ)5G]e/g V cס0E?irfϵqFTȅ>5<}OgT7u8w-~{D3P@x+BR+w 8*QZ-İ=|W3x\eIzFC%;)vn8V㈖H$.ug ioF6bM/B-]HLn!CyT+[;C"Xm/NFJ `/q MK *M^ - c~KT1s/#J_Bi4Hckgd_uS;*H am1vް4ےB3j?3 V8QMуX/|7(斱t@4odX8 %1w"-%t<9|ZlndE3<_0fs)]#2 ['4Q={5?1$Oj`)l߰Q}~^izSX!x&y%eBVR}ӟ<◾ Tf}/FG x 4=?h6Ɯ09'abUI4 Jܲ|8$K}Y{JT+1s9~B^J,BI$yi:RF{[!A92Yu%̗BmīwC:bHe‡uPyIVPJ>o9=ݑRһoA#b8iZPSiʞh~&! f?$u#+wdFqlAel ɫ1W4Ż\gW@aϞ;q2~ă!q7/bKZ;e=8#QJN *\|k YT/Bm4t^ԘLVRhk [9ڜ9ϷdQPE0(ճur%|M<th.M/,,}=6*HqRύI(,=?oz0sS撱;t_ܬ'A_HG" Q"0p )JuB86aNgJ. G6+r͆ה>bΌq`iiDŮR#dJ8N)*D{6ҹq[vJqtrƨps;Y&bnբ'F $rh3 ϳ5/V"m K=Z+ߡ}-eI#sT5fG3As-++Î /Fv fc Ax~?_ձ~mjaH$HɝrPj/g4/9cyqTP'V(n\>p,p}kajv8 8Q3FR_1wy[}S]ʋ57Bng#+1T6--o!fU\,(|MfLr: e@XPo"띋it_@mݞE%YUn~| W=vuDTz!ӹ]")і6Iʛn|2&h\W'l !P0/ڿJQ/;  ڱvrud+ыv{YyOjA~5 xy2QZw+}aB!]f%k{*ذcޫtLT@4ruɞRZϖ mx c`(%˥ Ur TNCjfzGV$1pVL`vp92JODY[_'(= |F@oZZn5hu@ ,i7M0uH4h)1y/H!b*j x2-rSZu>,;*S(L( ԰~Ģƭp \&ZwϪ*l겯Z~gCϩ=P8k`08HjG X5 B57ٚ7a\kivQU (6XkVznulQ[fI eؚo bhRL@#C A.kcݩݎ`JT2/֭;q c'IUVc~{zs,c/zͰ=at 8.k<]jw'n:Fz^/Zпk˭XEIgo%PuDɷ!CQCqf$dp2pDV*9 3:XtCCGI֛BBY^s\;RЋ[{3T/@ Ng=D伂Ԓcdm'';Unsڤwrr#b;f[<wٷVn;3aW\I)g^n?1puNQ%Xa# l^`ѶNHR[{5˥\2L#jDq)]cAa^-ʺzekqH^6|awdI$)v!2t@֬0fF 'ZY <}Sz=ܑPDj+#ւw翁LLb@FT>7q1xu^X7X?AVG;9=Tk?Fr1Y~R)D)B@L7)oiňl*@y8VrP>!g:YkI$I.(9i ,A)]j#G$)#-nyaY"-R. ֮A!F@!Өa+50/|$C'>ss\MSC-(Co]Z y vToIk”tŏk_;8i";N~(4\/UL#eх0ovY P}'k >i9YtUQ6w,a}ۥ [p??@7ZUVn O;/q֫K=:=$wb!eM=[Ǘ@n* ~W4Cn5]v| _^Ld45ꇮ m0G>rno1u\7j?!AqpCF7ko?(=P9d"h&[{/j'-ˋL[n k웶M2&h/X K5t?{ے6@&O^.ތT'OV#D57T~NIOzd,b2P:3k+ ”eJ{d8|ZKT|Es,x#ft0Ȇx "?\{!J jw`O`L}3n7roN;EL)F !N&ΘVn*̥5$D=ԋ:--9dZOc/"ݩ w`&ol+9s!jsq yCD$"ۭߟ9:CkGCB>4Fsaзe%0KKc!dbG#.n(U@躴,l/&`\u_y'ؽV1ƎM=~a>JJVrRJf׆I`Ba%i 6:%Aܱ[#zm8$tsv,ACg+K\yÒZU=KFs Aw@0樨RTjmAL |: VE} 3vѾDZ"\SwF{]p`V>u8Z􌪶N[찞Tt>GZDGf8!Eq"}o8 IEn'9Vр㎶dXSE9ԸMZX*ʌCp= [33.2PzcY`Ja?|1nu&@C4Dv<ċ^Ά1_e *›m#LcT6imvW$4 $8=DF|"vm N!a{ݡw6(k a\;T!}D' r!QVrsVBw,=+9<0Î)*Qd*W [Շ>Y, T'46Z~ku"aph&}QAN)̞3W"G6l͗TTV2N`W5/]:/I H2F)Eqr yn P| [gꃎm>d,n|>F4{Aʅ>-mDuK&8,ţOok5lOֹ !6pO'ˢV46L$1},~ރm]okvѿHa&@q,c@Q*x[.)?iFN"-׻"Ŝs⋇QvJBWb|r+:!'m$QCǴϳ8O#>Ĥ S;,vܭe=q}s ~3M &Kc~x-S HHKC60P5[R>MOQoXg I™.b+5@-,[##le#9JV 81f0juB~P,5  F].ps=6@F!y Jh cʨgM H³nLk"n;kpDDHkԨ>OhQCgpa;Hȸ8=_X 1~WIi9%?=M9z$<-ǣEb0P&h%M0iҨ&J eI`KVj@;}FbDEg"ciqk,i-uA_j k,9[~ ,ŨoJifxl 8GjiQ0佾AӺcH${PSQqe,zƩj|@-XS9x,NƆIrq6 Sք[iD/#6F[4鯣ؒ$@H]dF`s+.m"^y_s"Qr1Ti7.ć.FFOL#fl5 PSw?Ί XE/r^bb{zY* SwԿ$gl٥q1tۡ}5PiQDu)?MgDz#$]U,NEwH|cլ6I~q:=_4hvA+{rFBk'N+#L2F%9KxtV,KKo57[ّe|uTcp~'7%uB_zHDt}·s?7_+n248-45^ jIVbp ڑQdoł=}nBK'q4f#)@NΝ=9lu2Prװ+ȥBy1e Pk(bGxᆺ"/H1&B| !+ѭ@h.q;e^ ~I݀Е\q|VĶcLf%+o>$? 60ϭ5TaS#d#[ޠWPVU5@>Wq S_*nґege^YcW>)4yhubDF*X[h;<mne楤C>ι8֍sxy:lA05zv?h 8 To=-cZ* u)(9Ga=#UQ=L=0~ZiF7RĻh ?mjUJ%cr~oM;QTSLh=ȭkg.L$.J1a&iͽE ?[{**FJAc݊Mw`nk=C(&̼?)(Nmۍ/LNcR׽+h6uudSͱUz[oU;'v _ϓo/TJHF>/VX'\}F5QA8"mF+ QkQiu\ utS~y"'D*GQlme@mh;2s+gݭj>vp_ |^'蹨G&/(x* MC3OoWfM|`̇c$^NO:,p@.WnfA{vJG fB4˜ ĆJPƘi:c! .=T1MmJ9Hul=;PmjG"D24k%Ϫ[UH2H;u-ЭCJ~vΥwU~@1zBO3DPOaHt9pP0&MO,2F;AZh 'b*[^ܕ0Ыi!b(T>z#N+#,-`䋘_i!𢿃 aX4D>D"è%onшi9LP [c\ېY I@*W)^ ~ɘ"u޼x7WN.#z\@>˜EIgn};iy#)o;! ©BB_ HF%/G@@6IBXBIb|@`lzմ-c[ NcJ $0*>id,6{7s w@||RY0nS M ^$򩈘uQ4+S= Al/|?A ˗EBt^?Q#wlu4s{cF.ҼJR$'-q|`F%ѺhCHWI+ǯmk/VzU7aMXW 3lcEM'Ԛj6j@DE5_KHGMf )lIȪ5] ǡһN:4ceSw0c,2?{IC[?ӴP.'!$V3Pl엪϶W{܉KwJr]NiF('+T>1&9.$q[h;Ε /7P-ZF`v<ĐZ"isӄuB 7*9k/PpioIA$ˉ}J}oJ?ð~޵?n_WH_?oA߷Fn_VGͳ t :'[E2|<g[~+=wوTQfˮtE}x~MGמ\;ryje# ݽk@pagE;qRgڽz[ƅM[ίSlTFW9׻=})X{";Cw&-JI#us3K]AYl#3=,\Re%Ec5*vb|͎%Ji f̠'bH7a/e-0W]s+cxOU$W$w+fqzG@*fzPNc~!v ~FJMagۧ5:VmtfӄѯB,AX7qӛSX2[" nr뚅f?@ChβĖo^[N(12=>vdSI 1A&\̨|Y#86Y I ]wx#z@OxE^w<^ wOr 6l|n3?ʰ,P |W79Y6X!rLP[T.F##duNʮڦ͂Ui&MMZ,d* r)`0'#3M^CkC( =.r ,'j&D3bJآ'Us _jrJ<, N]T_Œ\5Jf\Ցm0/a TEU8Rdk\ߑ̡:6ֶu{y Z2^'X8<_A"kǝe)n^F[aXBFl_7nw:.:-.8镘ˮIɧMH,'d yw}dm,@g5 P,Uo- 'U_5Kz]e9[WеoZ;Y;=J:aUXaQ`}@: {sV;]L.[@A/wPD5 ƸX,'JWS0yf1xʨ`5\Bio56VEd<~/CWȶ|Yָl%:|!(ҷDn@>pL#hJg~V1֏ b먃6G9-J{  ;8q$g(=HTSLU> 7ڏK-O> M9}0.k37)zoB5e2:]rNq "MEpe.䁑3\AUFDMZu\|DǵB<+P~Anj'uOq<& P6"Y߹' vAn|p-g"_8=قdx/06uk#ΏRzmYU1t?1jMPGh\,s 'Xy: 9|Uw^^:RȠzTc2( Ϙ>=njf*q#g$۳>.!}|Vļ$L&[<0rIrldc . g_|=t2 ӄue\;ѻMh@#>=Pf7n>[8!E7bVulxxmQ[r9A=l^)f'Jqǣ.&}ύjT*#T2Xs1_yxɾ J;soϿo p{g{׍˧ۻI#gu̩r/tUl3Y{skx*2sF!_V Ig0bG q:u'#P:vsz!~1ӜltSU)C~dݗ+BwYjK?Z]Pr9bϺFP]`M8\Lg؃٨a9Ly]4b!3 w7sɸY(̱0StOvf*5ƿoO GhFJbGLu}Y]4@5tPTb+%(w'k.v7pوzQ15 .?ƲRF|tcb EbVX{0Aɴ-aE{Zb ’~<#Y/|ccf5/>{Y)Q*^=UM.Pg ӌr!ۓn;:χuu*ATM X5ļJ,1ysĖ6~1=t yC &kfri hdp6Mk.DW.ƒj䬗ϹŚkmDalT`fE+ lվ6鶄d/d1QQ{0 ?zqpϽ2Mlic'~6WA1d9H!\*(% ]HvaP%8 vp[g󮮽̡TQ<>{PզbȬCHS8J|( ?%{ҒĂ▾rۘSdg֐@MCEMRU AhL+Mγ+Bgd-Fh[A&P3`ϥUYX {zǙ{YD &RCBVqWHb>ጷ}M̡͂r o /UgNU#*q؂^sA5֜/L"V"U+0Ƙ$GR&JTt$K!,eаIv(r_mK{(m8hgBvTiy@Y|eFxrKFZEltuu5 R[cJx;!|f[$;FՇOt٧Bн6ڿ`T ,'_`F x{@Կ6WOm5vy/탡 ^Ցpm% r|hxnVݱ 6ʍZ @Au% A@ݐA?:EfzI ldTUIk&b.>&m?M"ԳBW`jkL0bJG>_T ļI51ִqolDP%\Úܶ7Bfo_DAk(IYܹOdXԺ>KL// 9_ĀNXTZXEW~'b@S!ouAZ3b#T3 ̍;Q0?򗇂O{-LF@]!Vk2@5=N溪*)WM}*IĞwr_pPoN Ϗ3_/XtcFk WK/sl] Q`yfմp!~;FL`ꝲzk_+D5wʈ4 4w:42~#)vomFIZrV!lQ]b*ܓ<1aL$J=)8%:Õ˙ QAjXMkNrCů-S.{9E HJ@v60J!pآ7;4UMDNA_R;w{ֺR}ץDHTgo&tk1N@"Cǝ}Otlغ)\0Hf뾛X=㼺m#"1&Y hPlƚz^R|6T;0mj[xJ=H@4 e7 X"ħmxXoH!KEJzl}}>]G5 L>sXD:o:.y޲BJEQK:y zß$VV"4r;q8x/0Zk=>p2PH'P؉8kb,>ΛT:+#U(P(jv 6:  D;l(v|U%]vߠX2(u<'oA#8M.뒚Ynuj)f]zyy|RZ݂35w]Nn; Lݽ}ҵEmI u*eO03*j#'gђ #uML=#17bvv'SC%_:&`uBo!c#n))ltei1AofUM+#²=SP!hc&x(5H4F&IŁw4AÿCZ^*`/ɤN™~HBu_yM NIҷ;#Xc7^Ҫ* Ij}Z)UvՐS#Cm"l*ܲ%栟Tܥ VQ=z>nØuX%*Rsc8 ofK%@kf pAL?,׻1I}b⅝xw9_xXjDqeX['7eڝF8;Ohc4kvJaL$L.nn!҄c($g3XNA&8*:m5!gb8zyog`)MGUY|ۖmQ#_K4Z1~;R.#pjH#ypFok@PnH AN9r ;ydu*0 t2v1VfGEzBpZ))s%Rd ɟ2f]+821F #N ǻfs3߼F S!X8Ftx_j(H^Rsd!H| ~mh$[6qΗf[DShxurr&6^rN, cŗ֥9S))&(:ڏB=8*WJ>(P}Np>XKZBKS`AP9_&!M\|2ߙxW!Dt$q9C`Y05pC6s79 ªPF^]3šw 6{m!:Ts <TqB8fm38bv&23d +W K .JԒPVoi>˻Hå?简FH^M%ےV')So{vͣoUi ~TRPt]Mm.Gu}J6gibɫ~OzV{'q?F& _dN~[aH_\zs_ ok%2%E@C@o~i=}1 n&ܐcPz;ȼڥd'a QT\#8Ӿ8{?#B3 ο]'mIu*k+ jlMR1Msx?DPH2,)]5g$aV TaR+P٠ `S2Oen^T|M=Gek-4Z)OەP) YI[-rѰO$5\ۈs~TRPpn]v&ݟaRbl W xY W@GK@Іg^1bcjͅ8RxaQ.w_[1ѐ\:$vWNHiSt.?XQcgCQ86&{sv2z[fu 'Je!{2PLDfn}ꔮr CХ"ƥךgbOvN5/i q9bJVeT=QfւRKG6I~Ɛæ2W#xA:}HE)>.pD}8add_CXK8aK,Kq@>2_ecQf],iQ9  пdڻWRKVy T͏$E#6A! I15uU͡"<P"KKG !`n0* .c'kv6k~`1B!? V5j1 :N̉28H6F6hbન +dlo].0\R z T53$Yv77!|8K&cUqPH /2}B="Z&<| B,~t"3`zP}ʈ|_YR@h鏰;*FQCs=pu`#Az;tNzDkrdM8VhE G.Iϩh,^R-'sФrϾ[CђxOCAʭK0L3n{Tz]1 vg RCx; gP= (0T?iR}Z2⓯$Xu#Q#oEyLdjLVF~()EmnD>9̷vr7sȶm,i%9>ZR:ŢԐl NE^8͒ n{z!34iZ,v7s Wi#I[!mHn'@`*?HĈ`Цϩ.چI=4YfR_ fp3qyW-/f'ꬫ*rWţ99dj ^ξV !ǡ%< 24u8b2HJ8xxi.fp\w?sv.jxSU%ef^MࠇٓZX#دt@߆y.^a^!bU)1<`YW؉^iZ.l MQa{ cMeC*mmVH}cPq ZJ~|Ɉ cj yK]nF1n&^x' bdljax@̭[`y^*@ C2%qQ3gw `/+gO'a\ J ILy |Mbi.a$6oG]2 Je ħqSjob=ZGVZX+rV="49?q)XOM"EVw il"6[=N\|Y&D ٜ݀Ht5棢؍+ER+VpA<%'7jZSk 8UQ R/\s<\rFj|I҂?ה@O=X{v;m73FƒB*m˴d+tj`v3coKU;*?SjݡNd*9.̼?b\ӔwU"18ntz?{,!%фׅC2qhAGL Bj__ZԒìkAU#7>3pGht~ #5B49]U_z,vuk/62JaČLTq_uJH +^!:uY d+u,j(jAUDa+xq ^Nc6S3n U{l& 0>Yuh @dGh!Zm^ׄz_d>+ ldeU;ʒRLBۤh*)DE m>84s\n%X_V&3d;m`:F'3`+tfn;s,0ZqMNS ^>PEљ\BlXlU*yO4gܼ-(7!l/ܫ 98HNgL墖 jr|y>7L̳pӆSg⫍!(5Vt5זgEPu}V 𲐖kJrO>b{ge8RWҢݷ*LM`y`PN/`M"mua2$&hngW1zq РVJLwO .~~ HV)@epMaFGb<{vG)gt-A6T,5VIalÄR2?ϗ=5'ˢ|զ` a".݁>eÆk44PbZC'}'y! !nS؋נA)f7ة u+Rj"uBRu'tT=ǖ4$FHXs?L,dv3:H088wN}V 6̃fHNinC9.1;nشlB`?~7}ǫR vhA;sr$ϤBOtսKdt;`1® +@F(*ZpVx2qb!M +!*Qn]o8&Wch{U 5nTĚ6~ĩ3Ϭw ASLY J! &HK:~%Mw17b[8#r>k$TpO+"'0ri[@!pќeT`GYZtAhՇK_lM!\ƣ~_H4($@D Tr^J ,dFPm;4ݦŻPH }-\d;$CRXKYr YR5`,&ZnV#hI0} }u0Pأ7E;2 koInWNK"gMVatɐm\LH){csj]q-^*z/4pT)2Gyd}o%kzx yx08Rɩ6wUKX7ygVm~SV%*/#eɖlܟxInɮԴ~R䜶H{]Q4*y\)@EBU>:v󷀆:?|W&kk4=5xpm\ʁ#"2rJEO8d άW&0APY[/HgFOjA ThWq3kgbe(v7ESom1](-;_d-F|̉j]OVMc4|lr"[dz=&ᗠώˆjV[D8I3 =߷Z9ѧj[Ap~okiɇxk!EG= |҇_׺ٿ QMZen5,%c-Q(q>DmʏP+zv&̜5q/h͉|7 vv<D;M2"G&%*; ,Z+ҁMyFGbb-8i ͺl&8r?4khMĽrN"M3"Q N!f݈ˆ"MpDs3%SYu}KɆy2p?s4cԵ$+5&7^:ބV퍣ys-> nn6!|<|]b>[yq1%I5_nko̴`F~t“:,mLd+d1 %;8 E!h&m1jq1ň}IOYH(jzVqJIR2:@JHzM)tkv/q0rG| .uo r(&#̗ z U\:$(h *VPm^ʝ¨ǽ')TN!Dtm熒_/XD59[4t/ȥ$G VqNF'щn.MBnKtm]6=_8 `3cp6`sk 'Wbi Xz$BeYa*}(fiObY@/`Az51j 9͆P!94E̗Ό"a%AL.^mt9wiwOD$MUHf\hjS=nq^:l{ ɥ:ї9C+)vl\onL;j÷v;& zq:tSxҢk! !T W]v:EzsB+S{01&C^Lm1 FX:P^U[xAA}΀o\2G0Xgh~j2*7Y<낍z$b\ze2rrtELW&Aڊr{RwwDXUOY|K n&Z%%YQ!Y'V"5J8voؗ]pwA㿤a0d;bA 9?1+h]|lD|fmcc\fˠUH -@nLۄшK#pQOQKQ)?-Ӫ7W J)jt.h1m1;7lD*:y\ե} hK?0H~5R. E1[( KV|g.|4)5>|K緘<_v$ j$eF2ۙF{HKnl5{MA(Kr/ ɏ%| jNŇ}QSg>}G^rT'3t Ȍ>R򗔼n,lg~/|{"UFfbHՍ>f6JYKium.մR8s9]ܿn܉hBg܁/|9b .=KlYe3#VReIC@ ټH<8A)4iXnvړxvL-%9د?ᯨ1R\Ӧ;h,2,O%l|gW`?7"3[[}w^D$@Qas MWtw?#rpC9y1͹}iLںr_ <6)|Wbgԑ3pOSqAI@ŒhX պ^ e!&Yñ|N]P CU `:պ{6ZQto!Z) DVTV3?x/C_ Y1p-@"s$8n0u7ŷy, 6[yN0̢K%ֿ͖TH&Ԝ!qRE}p㰱I)I֘8,%p}C.SɠCzw 1p:^'ba?U>Fо("%: 萭i]w#Z㭆2]e):2ݷ+vEˈOxT#k.ZAOoV{E)c?f3Lj@s)bI{%^_2I?8Y sgvpiWWF6ŹϤm\ՌP:#=ViS|yQ(a& 4}([&:orVA((: ϩ NN1Of}!:Zt*8S] >iX?A^rrzdVqg/ v]|bmz~6Imy΢grb'lI`IW& Gc-Oa-"}]z֥`\yw ݖfMkQ;Q`\!8#` ٟKב[OsC\ a}u[Kꁿ|Hh"YQ>T_1!-gVevFФ\c7"Lw8_D_aLjPIJ xC[Qwp[>;%nQ9 Xfo tl* ``k"Kh։vm0zۡ1뎐Y/jeAye A^c"FKҟ Gǃ_?^}3H(wXRʈd; @*g~"ޜoȋBR\`tbG+Җc& :NC.={dӼ8|nIL"!JWa3"XqiބE}SY; .n2&(3nynopQ+<%y&S|aM YZeI*܏\d@2;c¼"3ڵG {k1b'5voEQv zG xf#U,SD8;nLܥSyF_ֆGr>Qy8A|t޾OIqEkAʵq͙?EW;F2, cWvm6VAt>'t%7H¿XΣ1#ynBИ@R_2hoo( xP\;z6ܽW1?­Z!W)o^%?[ߦuq8I_; ˮrIw)%w1.6%UA<8F8:^:՘E.ܨdگƆ]UœeʇD72jbzHy-?g{o\P~ =?~&BҙG`&R\w&D*)J^`l$6'֬TZ{H\O]jBSn=zyMk鳘alSu(Hԉ h"i٣tz-߁ 5@Ĉ~8L!ٙM}qjnFƲL>c`bYT@~{y@6z"e78e4RKv2񌋣g:C > vOg2)$b$A&4*YlK.ϲwzQP,,FFhSriuɘ$%7H!P`v ۽ԋsM%3<` qq~Ls?U|ձϧ*} Gͳ EFiRS+'҈ Dž-{Ƌ-A ?Em4Qs>?tgͳU$IpR'l5v0PݳH T趠|+&c4{!j n(h1@~墻U$%i*,[=݁|_[3~2;vxc@cȩ1#RDJEI\ uyK`e9Ct@Pƕ}!!7HNY-fXR<[*%^0;?~90[U.2=rLۚG2אRXΣW/S^q6sJt뷈FJy }Imz9S$-%DPxoմ5Kϵu.@`=hލ;wélnFj~9{Ԍ*7.?osedHM¬OXjXT3Ɋ35` 1엎?[9y.L?'Lތ|UoE0W*ޞ/uՐT;/;o"mtV7Iku6udU4KS/Lwn ߖyZ)0134YzŸ >-A_O5Y]ko.N~eLªV T,~nQF&G֎cn|e(Ī0bShl8~G$eԣkK^'@E/T+ ~PoP<C}iPR$?w:aMa3cst[yU@X搻}h C|1zs}Ă#yHx@pTT%[Kium.ô8(%'cɂi Kua3 JZgxH[b%$%^4H:8U<5@H$gױŒ_ I!CNMOJ+ ؆'1;%VzN ̔ 6c )ad} 7sF(( s1]RM,VnVw~}t^>kۓۭm{:s_0e1ϥ4hNHBtbf=X-O`L[*ůC_n{PQ%:lEN:IkC]A?o҂Y GY#cl=AVkXŘ`lWi|,hd9kJ]"t#ͣ)L~L6mD:Aj `OP2èBH+p/!{ft8,F.4W(37MJf*w/VS1Mk>/qWF| ɸF2j6<Ĩ3_ 2ly*90QTʀgKRӈ?~I5TWq|p SJ2YمHi}ooAᷩfK/;~ !?F׍.K0Zm0?N=Kvi!~ K }2@h 3!^24{֘zDIAވ&O~GNdݏ.n҈{JjT7vH ʛt% 1/~1bpѽ$%" u.62=]c<[`9үkStμ4cItJ-clF.Gxpa<6Y4T)]!1,\*=i?eӇ;xV35.>ĉZ'Z%:ȯQyFs6Ά}NwܨvmSʪ) 4]' QHq ŹgG6|~6ΪFhAQoUӨߗ% qd`Z@~ ]w %Tt%MC4`rPpHxW(GM6%Pl4@ɥ'B_CҼ&(z6#].Fpտ;UJBLFɷ ?y>PQxg*)c/h zu"ޣjp؉(oc|S: aT_r%(?wGL[SJ8UXLc'":q'BN٨ߍxzHۨ~ޝ6_oo}Gͳ EFiRS9V,dX)QCw J7R$gσ͞*W&rz4wzEGGG+!RO_=I>}pQ[Sn?~ R#~ω3/ǽe4V谙f=[p |"+PjO隸kS\R|@Äa&,Qt*jyJޏT%~&Xܻ+K;EdAc|uN5U52W0T,HOm0?o<mi߶'Cg]KST7y!Ս0*/.&0K\ <8_>JA/C_cxoqFT2z*+Ft( >/~UGЂ *,\Zh)p9>)bC @ q8ĉ㤏2[` %&dWY?#kYL<$aZs:&<JkreB9l,ʆ FZINH5ˋ 0U^<0I6;?@FHu*eZ2|^'+ݹ7 5لIM/v@Alž|ބ{ i{JypθΦ]ŻP-Qhrw59sGf"S j5p5Qbql̬/H[23iLjWh0Pq_f f7@L_' #Fj~9 0?sI|;cR+;#0XӺ"Bɥɗay ל1^ls.sz}NTJv/ 5zJv.P7 ɜY}ǻ&l0ɼ=<ڝN6nfn1[{h԰࠸#MG=XP\&&)bS®`Vŭ-b(@Yw5xC\dV U1HH6WP `큲^ 䪡rckۆCPΙO: O:d$~BtCy;CPPC5E2[u{Bە`IX(e2&W7|ib(n nZ{F`;|u;O)8 8{poXvU=]v<.xOa[@U!@.b'8ńJf{0\m ] M~ VAQvm kpHDh]jiګ٤oErrNO$r3ti#zi?Ìψq {t`U>! BMg2p9.slU1pH1!j^&XRgD(vyϲco<)p~Bb'(84f`AQr$}W~ [\$jt*iE|}w8v 9-tr!?a JRM=QDL *Cy j<_:h1RPEHWS^if$Ē<:#vkL*I[7i>SԎEe2 rm|3Ƚ}%',]Rȇ~z\̓#>ǗX4h˩\.x88/Nf(1\k =µuyuSVX j gioL ImPBp2?.}𒨝M_TVI3=>7) #BNqs]{2B j&'Wf7+?w f(_G`$y' Pɏ1GŰwW4`p=}^|baQ4z>׀Fy5\wJ[8 \y7!yAӰ9#ݒNu-  MF3%Z-? DKEcHxln啼T*Bw$"wޅ,dTN_(MV@sH2A`0hcPZyʼnȩ5f`L2?rLeLkGoZW /ЊnucJ^ArxITU7(r,hᓩei'ޛżA`WE׎Y﮷A\.Ĩk ?C3ژ esį;% 8RW$_[nB- 3]N Tu%9qlpCD} D(JDf)VPDzg"%#sXǸP 8|K7!AxTt6} E>Pй W{JI6>UFWibœJ|6-+0̴m3ݎB%^v^CEf*Ǡ֦q3@v1aPc=qC "!A5q e w! AD'TC|ss{!Z@onO,Z .vTPA wwm𙀬Tn2:=]\[O_`Wg\Ďʣ21U%uiBb5*¤:B@2XY˜lPMS8sΛPoID'TV}Wdcމb^.Z('ݢ xE ?.waBp@e~IxhL;+DS~=|T&DN7?Qw YwL%>[0c>Qzi/l#guFкrڇj6Z) P|PeC|!+a(`}ma8m_0EtJӸ{  c4JmG}#A?&Uꎄ)ƝBUf@Ut&Bż&utaD/vv:0%&q;䋱O2epcP ަx a\)-ɤHF 4Ql82oٙvm!a`oޒCGy /n=$`M3cKˎH m=pĨ3A_+)A[79yLn ^[E"B9jYl#|t/W4FfofAտ1?o{Vo@>OtSi%o?`H TOty>/,#q=Zh[t<\7tf?}*F? tF/sIG?Q< TG)vu?4}+OgInKÁg2{IԴWzmUNi}cHe`܁g@|;2І]&٘EI\ uyK`D v>Z SHȦ]u@@%j[Kium.մxv ]\]uNKߩuupoմNðkk"#X Wa<ިV8(8ޙko(qu[PZ@"CWқlzŸxmYD@4_@i-մV][Kium.մV][Kȵlӏ][Kium.մV][KeHTszV][Kium.մV\;Gf/+6Ier $!^ڷ[z>Q:i\(P #R6>wt4$DҪX&>dwDkנXxۅNa`)x9@z Ǩ/:`'7Jr}c871Mk>/q+Ip9YA=CQylwqׯd;==TOxP(BpƫA#KTiQCv3&*xw;Pĩ# f:x>(HMA13z.M-7S@PX.mlFoV\AUOOr,"N~/>kˏnBtfi5!I5V*pP2uS\S-5_n)D(L7FMqYP˲F \ܛji T쑗$qӐ[NaT_*JWIdnٕv:MsHWé_of@l W5Ϭ[,Ҫ2?x'YxB 4A1*3 A&f3᳖$%'75u 0=D](^ЃF9C }P׀ol'!QI/v:bMv'FY'j:BXSAI uf![r$ (ⴑs>G@;nLXM&dל}zgPpb5so d VnH=9B@yvڨ?SEچt!b̸,A[pͨ$2Q2Ҫ"=oï8ܸ6"n0y`< a 8ˑ uÃ<̵:dIU)QD.r3Bߍh)B΅czO]'ÂiR0-h '?0 2~@S#r {m殘6:,c)k*gؔXBZjF!kYyy`[PrtNzqGug˜PI=aЇCŢpj$ 0m`q! I Yf}=] tu]LU^, sqX`AIFYzq [M3d+<l?U<"ai}9Ql |48q'G v^ 4V4Pd-\a/sa䳎zM <ݱu)3 jx h 0* R7?}|'KjpȮlo؂ePY֞7*lϪ)cc8Bn!Bff ADMV]L'AɞB|>Ǧ `]|WyAn"4PuUd\H֡SJ5g-36{<5"rqr0ouU%Jz][Kium/adE3{h &Ȉl_cEY҂(j!uJZ{|OHy~LӻwO~G~<>][[&!RKimN S%p7Oڡa`ڤseoղ0]R NܣyψD!E I@qy% "џETk_JO?CBq6u΋x6{¼"Xe s0PkuRv8 Kri|e[+'|ovv.Lr4qtp 8: ^m?v:ȧᕚ &&GZ'hU: QČ'SFB;)ņ.W6(/zA߈>ޝ#E2#m.0,k_ [i#Z X.ڭ[Rpv+D34m\dPhNzɯ.uNTbW" Ν P_ _- %nsj-34%XuJJIJˏ I7Ѐ꟱4 we+ǃviõN}d]tHhIꖿ$A6asS983d\$zu^~̇uR5$oQ]XDu o\__Yz2vneڗ}5SHK യxbc&:n.OBmT`ĵc[&R,mї<g!ɧlfmrp@P<-wp!'ZfwDtv~j~yFK@oE?F?\p;Uwk7Tb XN*Kzޢ߇Jh6 HȭAt蟺]`> 9OzA3BgvΌ0mՒ46)KM1 ŁTqJL8W 1! ӑ»TKQoۘa$o,!XJ ߜL;\gH;xCW'ǑZ`vTލB# U{qj@ߧv$ v_['[iy9yDL 1g¾HAqb{[LH)s^Dp k?-d~%BӋPr G(2jP 2ǟܗl,`yʤ1VGvX|⨸bpK%zzJ/zd sNvH H/2.E^sWȧp9zanvZHk\~35Z덐P7W5콂O]a'>f1+MX#_PS/:q [&C7ĒF"QѯyȠD xiBn}w >Kr-@d& H`&jB'V j ,ob&؁u8ٻaԙk`39BN@I(ۉhYSy/VNΌ1DǍWmR-~iuTG|E *i"yGC= ~&+aY'wQba4^ݠiUT>.`t.0kX<7AKUCGU &X.}7\2%ZgyX`mL" |nRt*U-3?ΚQ`i Yۦ <0Z֟Ap{_ ?1׃,LXƵplYMeį`TJdU}fBw%_Sy0D,Q&0c ”A:甽pW0̒C=ڹR5;Cڣd5zj{P/kzZFwDl4?sl!YӳQRݒ=΢$SZU3I3iiux&~.v4ޡmVlMYS;802 s(K[;hXT "K]6;+ iJ=F"6OL%D,7-˞[,kOO7j}U̯y1h+P z#}E x)sf.Atmj,* 2%J`6rKkS9sZı]"ţ ۦukP;e#*{WrO:@h7p< $%,#v|?enߘq, kV%`m52ф ISCsD(DQ$96cR*ŗ\S 3I 4pi"8T$}& BםtLgՇ'W57={<Ä5@NdZ\IWsIx*w]zs 4X%`z'ET+UN@lDotO. qqq6aPׇ~>`yjHo?]EhCzXdm+W+Oso=ٱjlXϰ@?!y 4^<D=t׈C*UGҚ]o V7Tg"sRR-(~lw P9AF/ʬ'= ^.񏉵Jok-c;?_4dŀs?lH$vTJF8;jQƬK%1أ nADkzeUB;AJ9)_(8C#0o*`ӥsG1R_-+AEd KС{|ӀS{:j%x#]:^J@w-[6+G`z| LEw92_AJm0guTx秅MlwOKrfqBJs9GuϜb¡Cd\qps(d&߬zE|{f:%QY3 Mﶻo)m\|}%J)Vn`~7ֵ>|83JȔB`VlEI t|4nRD'-#i%WKF0lM$jr2 r9n<iDVYĀڮ=jTAT)we !gODʰcVZ~`WYUk%4sJS@73 =VX/->y|#?F1UG SbS0 s[}HH8n2?a*Z+9[ಁ)hǨ&^j| 4 o,C@t[e;-0{uc7eAN.dԾoj xWO"9|3@잓By5@yjF,b0%M uw6 Q^Ht~E 2g/"Mك!:( %Ǚtgζ JMf BGs+2 yW`D;I9(mV/V޹=eۼAe罓rkUT\?8 5̫eAaWyZTx0H`sPN WJDT'Ό&u7ȳR4sCn*Y*VR0f; r2ĪϵԂ̮Zʂp5,Wj2MaKn`>[fz 0mxȓZSjUNOXaM Z+$MwU?$oP  Ft@f lI"O?3nñE5e[<]+ȶhDW8IW*RR,2<8C֝\,K>KeFl"6s>K%@ J/lvU|E 4|uNsզ,g?vL q յl;fD/T"Dj[ f]gEeW.n*árd%)c^,[.dqURp--ԍ: oi) ڂqOkMdd6KL=EO4-hC|E8;h<_|AM>}xiC{`>BG1N1gS샓%yVG1Ϻ~PJQk 'J 0z"Bx3?7G=j/`5QGwh5[G; 0~D[' \P_t"8j.:XS./L O"+x+&}z(6!. !^XлPzx0]"m(Caw|\`=9-k Mc3o[,7Yu&I( ,->%=e5$dOA˒ƾnu)'8sT F0 :M ۚ㲽x o4#~z=<Z|5mݝnipеO3xLYZ WHdvhRbq:<ĥq >Hl~{0OyY0|t(O0+OLD" oB@"JhEnF qɖn5ì}Lkg"3rFE@ @Ho* Q# "Jv% ,V~/07 m,X? ۯ3vS:)Qy͖{@ FOyIǍWEZed4ݳ3?nUcpuQwă+u7NY]|19(~GӲOPKGi9%@P%Uqxe^؇j֡"K`&\s~,^v[¯ jq6'lxʀ9?.gs;ʙ]rɠ\o%'S?Si7lO \C.)0$-ڐd@OV24l2 i˔xCC8!E18D#)@9~L_fFBUT;FAj|wpO=V~'&{44Fe\"sFꁿ.X+1}m&t*Wzesplh qh*2K>}zšckYsz+ h7X"eh?|f|yٹn▊_$ZQ%0,Պr} _Vf1-Y;J4Ц'^pLEjmB“:F4B$(0- o$L48G~(0Zʀwpvf0BYFg\dj5jn^Ė].P^n; S`DWG*MkQZO=۾~u$̈́H8熼a<2+xP#֧×֌km ,cb_^9j}M`1}Wh2!C-WޒݵZ|HiAųcok^70`[3~J y^sp!FZK[=kka^meiG ^3u6yzg)l2JƒxDul[A(EЏ;sz($A[ *ϵyGR@"yܹGs&#ޯGG ,HTVJ X.a~r*{0z7H4[#w(%xCς"tp1SGotngqWC_]̀sta# r#uPbE(4 =Wm&= hmO]VLuJp[puVQݭ  ߿IĀG Ui3@kyF'L4+ͳ)Nd!+⪫OiST'j Ɗ5;a%/Qix|;eD`:ˑ,Skt迌kZ&/+>^pWm542sپ0U-~ N qԍQתoI**` )ȩj {J .)/Lӈf]wn=[a/EwzK=w];V :PD{D+kBD^ gThYK(ZŠgB `迎)\zU Џ¥Z-|RCs{ENb6rv۰F? Գ& ;׎{.@vfNwH W~Ü"atw*, *2CӢ8 En^˜y8OnF/[@VG<Ϊ.H<Cu*=v;ʗ1]o12@n}det:F_jS0X1艢0 Ah!Oa $,1\`9:NYmq.2#NXiQ'Fo!-aoxS,Gsrh?CY`#Q4UhD~_|wD}(D[FzE rlٌE@wu_Y&Ꮒ'7<ݜ耖uG^#"~%3p.˄2K?~Ty4kP\7{LdQ1) {JC Sß|<:q+ `Z읢NY BStXxř<.kkŞ4I ĎQ:-/7gc*!+Xɕ(>.xmMJ8А+oYmE;Յ4mQ/eC)!%ja@x2rX[bU*"q _|8uU˖ bSSFr+xȔ-Ee&7dS~j[ @gJj} %7a%}ڥ( ˕`=@w)%S[|Bn6mnˏ~nOZЏ۳n~޿HI?s߷Rv7HXCEgoeȵ<ɵ^;~?,Źy3jPp?u1M)HL,/̜) &5CFĈ|ZMV{Tw %_^P` _Kҙ`_'gzkW4BQkL6Q@dafҚm.PedP4{/5iU,hcZf2@ݚ;9YL/t-B2^@wo533>M?53t*MБz[%N~ 9*gX}?0!? QsO?i%&)X7|!ml&T(X!S10A|ķE.qLfA5~J.)7b-<[Q%Mr[…lj7k@JCɉݺw|ZBW6z]NKinGr@'&x/3tծŲ 0xZpS Ft@f lI"QM! 8ʄ ؼ2uUK^ Z2, aj]-r9}a^>k"b0ϹQ_FfҋK"ML;IrZkK-c/g\5+ 7J``ll0;;.gTh.KUDԆ3yj@4``6.3(:gqq@EC6hGS?cQRiT ,8\oʉptd ƵRx<R80?Vzr~W>EU?hX3%<х!}2ZU UZ@ g^DD@sҡ UuQZX0?Z{ 4fxO{ @Mx_@3PzϽVR\'XB)Ѓաx9K\'dNyu&CMk 0 pGA19`+,VqE8 dqUaN5~Rb΅#p@ɰ4c3oL}߃Ѫe\؋S-?{1M _0ݸ5ZaD3U `PVn᥻qꍹG9eJ"EKY{G>'+a,[vR]1Yuf/'YW `D^hb6ihا6 1/մ*14R)gc*+̌(N4URJ%n_bn" Rف ?YYI&[iB_hJץVJR<_.*ɘL2 :ؽ}>yg[HZbvc0+|ד&i܉k^XopS b$Jv% ,V~/0M`? ۯ /+Q4gr!O6&p\HRG  ӼZ f׷I} abfkM@:#ouҩq rMUR%wu l9 (h$2lN5]* =` e @4w}pʂ k^SVmD?*pr|~n4-_i}*=qzxo\eԥEv{G+y S~to*{;dDYT/hĩm@s'(m7 +-bYKԧrEw7#U|T׀ޱ6|_#3oX:sei s(uFڍ/3Avj (\3-.CtHp u<ͽ pKuS>vIN&)W?5GH=h*P$d4OƂ9_;XőLqBuir3Ka}:3-l4vS#uBC|[P>\8cXq 7 X̸ƔA)skoF#MC0G@ThB A^t[4+Kbl|+A-<<&!fy_Hn) )3 SK5ۼIG]D9Pފ"+7rz`P(_j X,$a0 Rw1~<̐ -roI`%>5¾JŞgqv3:cn[RK7QRSLȄOb!x]Zݥ&zpwgܺyIʌi9c!yUm][R@ vY_DH E%1I b"bBX{ohgү:#s=GǤy&v.x{|ۿ@y/ڼVU[$C f7^MC GJ٪>.ǾaNh6'L>u O[Zo5?33Jp[pu]/i3`VINJҐD1nk < U5Xpr~W4qi~QS[RP[cZq&%hg~^FFO_p*eЈAP{9I=- pNq8DYCz$Tϗbe$h1<.\ YޚcƔo;|F8F? Գ2~`ń\}gL"Fٰ# ?/({.@vfN@CA"b$99,cLsXC)E)&RҶmkXZ6Q>3k;qnX6BڡY7WuȳL^T;Y"@{j'70E0ps9%yPBH:!,u*9TKE9 j6bbR\m~bjI~fKxԍֹ.I;$W;,ikQ7>8y$6N\blVތ=VA &m@TRՕT6]~n~c+պOy,ִQڅ<_$1Y,q"7y*a' C-&\z.,֢œ?5![bw c!#5e&f*YDQUFe?_w,ӲRZUEZUFSm`Z#"֥O A{rZuޚqlFHygzӸ1 ?7;\xf!@2C',ͨE]HnMs>ʸ#`$YVDtշVQ ȫ%yy]+Ԇ'"qE 7~%Y6n%xG5>X *H22TrۄV9׾ /;`ۊCXQ=<(K Lb66zŬp.)"RDAّ*MY~~3] 8 |H'x\wN6P2 E9>KQ?Fp>- c ˂~Cϳ>%Nc&&O4@f9y(IE<=l_+gB[(V("+ʧ{l;Sb|`ȹؘ k$gMx2_KʧmWUקD~$5$`UKRxfC;/[dsÒ!b}nPc]oK+auTԇI,MA5c?^` K"qCQUl@m1zwvل C'똫^˦s:)bh~ G&@ÆSx8D~r`!ﺨ'Ѩ;YuW@ qdQj~4r0?I 5Ƭ? $` @+q= $ օ\'n|W3I2 O hƫ0SaJ ]u02 K?fw4Jb;N =9%] 9# ggtl<wnDh!{Al|" -U$\P5-/D6v۶&;QD'DuFoRo=BTښuq0}BWݜ;!mQLb-˜T/ɏN;`EGAT{_1>p`Ǚ &"ii#ݥr($Ue2*1^8fS@E)&VHW^);|`p-imN+J/$qs| x>*A_B ?`3/՜? hg09|+~%0-Ho*>Hؽ^lvRaڧc^~5% ӷtxS+z_a9.݁X͈Þy0$tD5=H=@4_ Fǐ# 9 5$@ _iDŝ´"#eV)bQ =IݮmG}c%#!YVhx4t*x:b XweToqR/lvv{pOY+|G,󸛤+GӦ5%nű햛)%K_| TX^dJ}}# IG~53rF* ?h56p Lcv+pc3v:}dsDJg3 f;;Ж]KHJr+8CTOn.wlk^Ϧ V6X[#Q&[rY"P҃ѕ 8!E18D#)LTfFs7*~#}ʊ|D(S8jŬ N(@B؝)0:S^fGқҨ5T")B FUEhR9 *U0 #N@3X0-@|4LcL 247JЊ|G@Me#Xoqmؒsyx7ЎLnk'aT}*& [l.KyoRp*1c6h}kth!Oa$"̬zvP;,cR .ߡnc'VZ&V.>3n_oG?g?noۺ?z]/qs4iwvh&zJl>0u굿jm/t/S[_Vm;@[>{mestlfN_Zd G,p"OB \p#+rT1Ԇ'[fSTG>$B%3t R1F=~=0el48D/v-bZjs4Fl^C3Tq$m>56UBC_j #JPQ 7\!E~򴅲UUYeW[TP>ƈm?uh3sO56W m8=0U#4Ҿ@+w2auw@(&UfTWi%)W ؆7lmH8 6B-A33랴: qhr 8z\;#ѴBT 1bga;I6SPj?YEf@P *>ހ [$l+ՙ_/*M l6 al7ok91ۆɶ៟iK0/a~~~~h;Va~~~~~`a ;____Y"9(vҐ ;,ΉkuuwC18D؅5/ٗbDj7"hpǦd3S`\fza@Mi2<:ѧ$R]gXyZwɟ+)ݎ~'NT'>L:4\%fѬ!єfL1#*q7d }dQW#ҝ1աsAuhH- U"TKZVlΈ\pWK|&GY|s?9 @i1‶G+"'n(~w.F6JCO9VԠXOpk~;5GIPUg Sx#B&VPs#hx@-r6b7%Jx^[% !I-H[X6B#i\ ODyT5Pܧ " [%t Q[f4is" ޕ -(W xZC0!#B`JnP\O-X d}2eZK  u\fGvbB};Q0=gˀ0@PJ4N}/!H+2zEI_m6>V2C2盜uU 40leOf\Sys0b-u/ߵ)ҼLVha%فW] anBzHH2ѲVS>.ONH8NZ/ԩB)D<_uj9Sv A=m؅>D;XoË+N28&O? 5Y{)ߡSJzcH] *4}M2B֊j@`K&֎_O߶&6]êҧfUc.i 5ܸCCsh7߅0xPAEz&9V@=|,?D7DooH3I4/'*6]a7$ZV= 65.lxg1@s9%#bOjFHv"9qLͽ8H6]<;^V0xw%&L F.]0XڬGzoETiXZ0*x7LB,ۮ%eCpe=1oپaghOdB(F純d5OazɃ0JӮ&5޽HIcc|g;c6@yw6R9JuB3 "ph6⛩zWɚV(3`]4JsyK+W 8Rm) m#ƴ̏r O :1,rny)q`i w$ۚ8VAsC g^i+ۗ|ьKzݜIqp%*޷|w>㻸gr੽θBk-Qbu,iSۂt:P}qE ?(GPQصUkЦ"QTmKC`ѿ]FXh,8aZ"JUtr؏s]TDB}=2TG~vH!Ov!) GZge'C8:+ 3KԳq|bxj&^3T·Aŵ_c3M[ )`^I k .9wh12FDŽ.E2I߲:Ҹ" NA8p^qit-,PNejкgPot/`&ZvΫOB(6O 9,x<-a= +w%mA*ׅi ݅1C{h)32?P4>QW~V``E=XZA\p{DhU_H.,Wk^mL V.@9ln-:+f'!3'Vq&cE__b^8 *Zfe1|Q ɪg&RRqҎ~)vZ#87&,(=ǧGF[fL2I-:=Ք"$kkS"ٛ'Mt\vF+X{ 2gtj&th -{nFE|sRm7?KK{peD}*1xO1mhUkmf8WސȱU lL%craؓ0)n~AgIQ"m(1O q={lsNaȧbVT_jl gJcݠ+@lֵG4ѝ܉Z룺Z~1cBHS܃_# О wr#Pt%1?!q+V4SѬ L$/g!Ÿwh1N_E?|7lD˗y!|2 dTճ~~!@M;[ %,_l[@e=,%";Xot>6mV S|W@Qg(<dU'4y_YWa]M Al(T\-"RO+&p˯Le 3[b.o½㛨Soj.rEbרs9 )D"5ft,[0 ZCD )˘vM(m GrϾ B nv]}*h-e.0ɉWZJv:D$ĥw`Emc9O8ڿ)~԰ j/a,Xp,=ѡG$&#oy7'o֗_f!=WB]XLr&mkC4 s| mI>_R%/FN {CkuL!AHM̧$ UqPXiˌSY?Sm,m{&TmYC>!O R,A͗}LLEr4U z5 v0z<z HX怫fw+hŇlٶa^XɃgcٛB| M?c5Q1.R;$Za,n&:ѻvY1O$APYk^gMOco6zr; >i Kϱǟ^p'uV8z0flD&Y+N04$H)qP1c|0Gz*ABmh1-a!!jm"ß/{JG abyP?PW;i3ցHeb8klT-`PM:E ܨ@¥@hxt 5;#wMdo@EVAj$':Nd !/ 4^YM$utf:qw}U:=.[@7 ~6&)k}T=xJ_ÀآiZŠ<lhz4 nI( (D31G%Z0Uw}=k x}b9̀^& :1h`.7R `gF??R๬gema] II4tw5&g@8U21#usngZ3TBxX(TgU9v&No.A ' Ĩ L]O{kKe钾;%6=MLib# Mяe~2+cG[:*OqjuL{SL}MC}_:W1kFOQ>S"2zsNt-ݾ /$%Qy"bYjPd[،TR|罻C.S&ku\)H9ĉJ},5"}-_\ti<:Zi<ɽP!(m [s׶rCNIȋwrI1sjkdR,ŚJP,wv8 ~5ѷQy~7K΋RRK!_tC.Qwpd ܬQLk: |@!Er͏\Jox#4*)1I^CiQ{/{"<(Y"{dKEtNW4Go-Z .(k!/PN%Jm9Ib4&5,SoϹO6?UF[TS&K8ab:41᲋ѹjO[ M=쯁5S)i#fݭ tf"a_?7v p1kI܋*֥,os1н-uk]-QrZW*Ƽ.hڤ*qÁ7/N;=ߴ^@FCy|1*҅>oU=O[ɗeC YD^J3 JS/}5͈?| g/Ui%1h0!R%Dd@4\( -gKfJ K>eHo\C+~%ސ~9ϷBG%brCۋt٤RdM=k;+ID0*bVBZJ=V7|40t9KǦ5UϽmLkkUswiMD#=Va=@l.: ':p3˃U~"jӂKN)f^Mht,RZ`Lr3 Kd9k8ӝL|Eᙑ`[hq=f0 * xMwX֫bBތK!:,gYn~UJ`gI*o!l:6A<"wN a-_e$BˣF+0up&haЭbF+2ᶊfdiE,v'}:;iqL@91C¿wB}Lb|#'iy#Wk,H+˵&"8H=zl 5"hFAQDM$m] |0zBh-7Wb} ~_-0]fpؖFc @}ݑu"Vz輌W|N6t6\RPdu xY4I:w„QdLU0&[nࡵAATB!' \+ OWR)Bc.n= P.agʷQbBH ʾO)%t0E@4zhLT|޷DY_ұNjs[U`ғ¤~o۶DQ3H&D ] `u\DJ`[Q:A5xCCbYu5Ny‰ik{w憓{N_'θR2ZI%v寙gE)Fm]-?JƇ?[(/+ˇd)Ʋm*${ִ>]ZTU!P z[i}EiF_)ײ,N7 vIS@~yA#UKFD"x7Çf;LײExvV^It|$y̋Pi^_8;¾j^||p`-1J'{R,mh*c?xU *lOdA)~m-Kpj pÞi!kxr @0KjYΘɅIv }f4~[pSs0d!Hp;};nU+:Mi1{N%㳨S;q ΥfabMT4m)7vGCF-{q$4p9132AI nS 1l3K_9'{ydNMz _8ѧwRO78ǡ\\+8]8 V,♨:􋄹rӝLޱ\%xx2S4٘O~nV/kyyAs边 *c@&:7(kY7+PvLpb zX&#XSo» EЏWLѪAުe1hEqK,[w:Ň$ a>9 Elan@-U%|aAV߭9wޒbxB#2_eQ>8τh OfQhюsg;R[2^[R1+َ>pQ9&q"_z?p@J/%Xq'1W0ei.pL-JlPx:2t FD5qȎN/\<{]xoOnGvÈ0@[-}_ j Azsc.`V ~J `Q~Wsf gIXF? t z1RM@$fTI涻0-5(*sysƪ, J8c-r79`墱[tܯ;ҙX &i"k2 $~ ^>{auC9HKXlE8.]ׯq@jnvIw4$1TY%̊ 9rDKoax/F Y]95IɄo픳JoI!>#OP FB"AEY/i#o3e!̃Lzrj`m%n @u{j 57bSS Gk'9JnKf h_&f2ye΁ {d߉,WuarS>Kz xc1(_Y*ݦ>,dI0Yͨ=wu(?"0)@&m8G9h[w1W э->;]ӭ liJDNHG%5I ,UWnj,:;Ͷ9T+\ ttRа[ ̄(RLR$³iKj-j})9Ls$W7!.*Z8^ySt% xq(uI'(Ѕץ7y` 9_t~B80'D_-@B%%} g5L<F&_!7v&F\imwfyr2tS)k_` 31la9D ݻ1 k7aܒ=wefYJ;wan{1y.xVǼZ-V|ʁl5gHF> s"P?^-iIzkAo9 KQB;"E!ᕺq'҇SwxMWo* 1:gEG]BnBbƋoT+ ^HJnn & f${?|/.pΚe^-ܾ=vz_< #螚<1-%Ԧ`96`{ ) eFaZ,C^a3lZʼn*"Hs[xsa8Ub[s8SP4eQꓚ4wLon@³V||t6vp"L9#IW `rx%BN@-wg˷uwLkp ZXWa ]z 5x^{*)l)[DP|Fzf1N]@nH`>G͕v})/hƛdG L6,h|zHM+_u0oe yXgcrJ|a elGn@iJr ~+{s`y(ѯ.b 2[үEc'# ī"2{B;>`n6\\9N{=o+fM'*bej*]b1?eJ<ŀ: z?3..*'咼m}R*:pHDE튗ö%"p]tޏshQӋ6OPNÆނFhCJ YB簮- DL#F! EuT$=M[TNarI Wq3X'# r8xIE4DB.ǨNcn0;Ti(@A_&{E o<'NJnv!n -Heba7 hH"͜=R<" 13,mlj\hU;bzJ/+D/[<@ %TY Yw:W *&c=t \]%fZ73 6(Wu%?hN& u8 "AiQBw R>n5`X泤cALLA?OHs >0{N (uGɄ 6@w#[,CL*ٳsATb8%9(>2jxe2E*7fu7DHRz>Lvt5IӢsr.NvzG/}uCY [懑E$+ˆ`3 ܼ~|V\ticnV xyscan-3.31.orig/xyscanWindow.h0000644000175000017500000001240311425273073016754 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: April 26, 2010 //----------------------------------------------------------------------------- #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include "xyscanStateMachine.h" #include "xyscanUpdater.h" class QAction; class QListWidget; class QMenu; class QGraphicsView; class QGraphicsScene; class QLineEdit; class QPushButton; class QRadioButton; class QComboBox; class QTableWidget; class QGraphicsPixmapItem; class QGraphicsLineItem; class QGraphicsSceneDragDropEvent; class QDoubleSpinBox; class QLabel; class xyscanAbout; class xyscanHelpBrowser; class xyscanUpdater; class xyscanWindow : public QMainWindow { Q_OBJECT public: xyscanWindow(); ~xyscanWindow(); protected: bool eventFilter(QObject*, QEvent*); void closeEvent(QCloseEvent*); private slots: // File menu void open(); void openRecent(); void clearHistory(); void save(); void print(); void finish(); // Edit void editCrosshairColor(); void deleteLast(); void deleteAll(); void editComment(); void pasteImage(); // View void showPrecision(); // Help menu void checkForUpdates(); void about(); void help(); void showTooltips(); // Set Markers void setLowerXButton(); void setUpperXButton(); void setLowerYButton(); void setUpperYButton(); // axis scale, image scale and rotation ange void updateWhenAxisScaleChanged(); void rotateImage(double); void scaleImage(double); private: void createMenuActions(); void createMarkerActions(); void createMenus(); void createStatusBar(); void createDockWindows(); void createCoordinateWidget(QWidget*); void createSettingsWidget(QWidget*); void createTableWidget(QWidget*); void createTransformWidget(QWidget*); void createMarker(); void createCrosshair(); void createHelpBrowser(); void loadSettings(); void writeSettings(); void openFromFile(const QString&); void loadPixmap(QPixmap*); void updatePixelDisplay(); void updatePlotCoordinateDisplay(); void ensureCursorVisible(); void handleKeyEvent(QKeyEvent*); void handleDropEvent(QGraphicsSceneDragDropEvent*); bool readyForScan(); int numberOfMarkersSet(); void resetMarker(); QPointF scan(); void addToTable(double, double, double, double, double, double); private: enum {mXLower, mXUpper, mYLower, mYUpper}; enum {mNone=0, mAsymmetric, mAverage, mMax}; enum {mMaxRecentFiles = 5}; QGraphicsView *mImageView; QGraphicsScene *mImageScene; QMenu *mFileMenu; QMenu *mEditMenu; QMenu *mViewMenu; QMenu *mHelpMenu; QMenu *mRecentFilesMenu; QDockWidget *mCoordinateDock; QDockWidget *mSettingsDock; QDockWidget *mTableDock; QDockWidget *mTransformDock; QLineEdit *mPixelXDisplay; QLineEdit *mPixelYDisplay; QLineEdit *mPlotXDisplay; QLineEdit *mPlotYDisplay; QAction *mOpenAction; QAction *mSaveAction; QAction *mPrintAction; QAction *mFinishAction; QAction *mDeleteLastAction; QAction *mDeleteAllAction; QAction *mEditCommentAction; QAction *mEditCrosshairColorAction; QAction *mAboutAction; QAction *mHelpAction; QAction *mCheckForUpdatesAction; QAction *mSetLowerXAction; QAction *mSetUpperXAction; QAction *mSetLowerYAction; QAction *mSetUpperYAction; QAction *mPasteImageAction; QAction *mRecentFileAction[mMaxRecentFiles]; QAction *mClearHistoryAction; QAction *mShowPrecisionAction; QAction *mShowTooltipsAction; QPushButton *mSetLowerXButton; QPushButton *mSetUpperXButton; QPushButton *mSetLowerYButton; QPushButton *mSetUpperYButton; QLineEdit *mUpperYValueField; QLineEdit *mLowerYValueField; QLineEdit *mUpperXValueField; QLineEdit *mLowerXValueField; QRadioButton *mLogXRadioButton; QRadioButton *mLogYRadioButton; QComboBox *mErrorXModeComboBox; QComboBox *mErrorYModeComboBox; QDoubleSpinBox *mAngleSpinBox; QDoubleSpinBox *mScaleSpinBox; QTableWidget *mTableWidget; QString mOpenFileDirectory; QString mSaveFileDirectory; QString mUserComment; QString mCurrentSource; QStringList mRecentFiles; QGraphicsPixmapItem* mCurrentPixmap; QGraphicsPixmapItem* mPointMarker; QGraphicsLineItem* mMarker[4]; QGraphicsLineItem *mCrosshairH; QGraphicsLineItem *mCrosshairV; QLabel* mPlotInfoLabel; QColor mCrosshairColor; xyscanStateMachine mStateMachine; xyscanAbout *mAboutDialog; xyscanHelpBrowser *mHelpBrowser; xyscanUpdater mUpdater; double mMarkerPixel[4]; double mMarkerPlotCoordinate[4]; bool mDataSaved; double mImageAngle; double mImageScale; }; #endif xyscan-3.31.orig/docs/0000755000175000017500000000000011571747200015036 5ustar georgeskgeorgeskxyscan-3.31.orig/docs/en/0000755000175000017500000000000011571747200015440 5ustar georgeskgeorgeskxyscan-3.31.orig/docs/en/table.html0000644000175000017500000000324311470424357017422 0ustar georgeskgeorgesk Data Table

Data Table

The results of the scans (see Scanning) are stored in a table. The table is not visible at start up but can be popped up anytime using the View->Data Table toggle menu item (see Component Overview). It is a docking window so you can separate it form the main window.

The content of the current table can be saved in a text file (File->Save) or send to the printer (File->Print). See Save & Print for details. To delete the last entry use Edit->Delete Last, to erase the content of the whole table use Edit->Delete All.

xyscan-3.31.orig/docs/en/help.html0000644000175000017500000000450211470425455017262 0ustar georgeskgeorgesk Getting Help

Getting Help

xyscan comes with an detailed documentation. A simple help browser allows to navigate through the documentation - the one you are using right now. You can launch the browser and view the documentation at any time using Help->Documentation.

At the beginning it is also helpful to enable Tool Tips (is on by default). If enabled, rest with you mouse over an active element of the user interface and a small text window will pop up telling you what the specific widget does and what it is good for. Once you get more familiar with the program Tool Tips can become annoying. You can switch them off (and back on) at any time using the Help->Tool Tips menu item. xyscan remembers your settings.

If you have problems with xyscan it is worth checking for updates. This can be done using the Help->Check for Updates menu item. This feature is still in the experimental phase and might not work on all systems when you connect to the internet through a proxy.

If you think you found a bug please contact the author (thomas.ullrich@bnl.gov).

xyscan-3.31.orig/docs/en/axis.html0000644000175000017500000000230111470435342017265 0ustar georgeskgeorgesk Lin/Log Axes

Lin/Log Axes

If the x- and/or y- axes of the plot have a logarithmic scale, xyscan needs to know about this. Use the radio buttons in the Axis group in the Settings window (see undocked window below) to define the appropriate scale.

xyscan-3.31.orig/docs/en/serrors.html0000644000175000017500000000723211470424640020027 0ustar georgeskgeorgesk Data Points and Errors

Data Points and Errors

If you selected to scan also the error points (see Scan Settings) the work flow looks slightly different:

If scanning x-errors
After storing the data point using the Space key the horizontal part of the crosshair disappears from the screen in order to not obstruct the horizontal error bars. The original data point is marked by a green marker so you always know what point is the current one. Follow exactly the instructions in the status bar at the bottom of the main window. You need to scan the left error bar first and then the right one. Once both x-error bars are scanned the horizontal line of the crosshair is displayed again, the cross-shaped marker disappears, and the data point including the x-errors is displayed in the Data Table. If you have chosen to scan symmetric errors the left and right errors will be identical but are still listed twice. Note also that the crosshair gets positioned in its original position.
If scanning y-errors
After storing the data point using the Space key the vertical part of the crosshair disappears in order to not obstruct the vertical error bars. The original data point is marked by a blue cross so you always know what point is the current one. Follow exactly the instructions in the status bar at the bottom of the main window. You need to scan the lower error bar first and then the upper one. Once both y-error bars are scanned the vertical line of the crosshair is displayed again, the cross-shaped marker disappears, and the data point including the y-errors is displayed in the Data Table. If you have chosen to scan symmetric errors the upper and lower errors will be identical but are still listed twice. Note also that the crosshair is positioned also in its original position.
If scanning x- and y-errors
You are asked to first scan the x-error bars and then the y-error. Note that you cannot change any settings during this procedure.
xyscan-3.31.orig/docs/en/thanks.html0000644000175000017500000000335411473310172017616 0ustar georgeskgeorgesk Copyright Notice and License

Acknowledgements

As xyscan matures, the list of people who helped inproving it grows. Many thanks to Valeri Fine (BNL) for introducing the double-mouse click feature. It speeds up things substantially (version 3.0.3). Also thanks to Giorgio Torrieri (U Frankfurt) for pointing out problems the position dialog (version 3.0.2). There is lots of activity including xyscan into the Gentoo (Benjamin Bannier) and Fedora distributions as well as Fink. I am very grateful for all folks involved in this.

Finally I want to thank Jd Bourlier for his heroic efforts in translating every piece of text in xyscan into French. Without him the first multi-lingual version (3.3.0) would not have happened.

xyscan-3.31.orig/docs/en/tilted.png0000644000175000017500000014075411273415757017456 0ustar georgeskgeorgeskPNG  IHDRXntEXtSoftwareAdobe ImageReadyqe<IDATx \gfSAPD#P02ʿeUi "rm ~:3<3y}P$@+?X B/@ I*82Y,@ ?'UBf1;:: .d ٴFW9z#RtܥC#@t QsT!秧:q\)M<"F`25HuvvٗoIi^)Q(_16@ ORFuu‚ʄͫzcwȥuuFop3(Zųبu]v*dEx9I# 0ozmVÿ@ }aVA6l@Iee@S<#,{5J[cGڋwANYBk2Ts/g@:nj(N8~,2Wn$RDp1(r9a@`eA76zDG;UVa cMVft AQKu*3,DT*-,\; |yF,8btHӢgtZ8]exrIAgь^ gydBr9XqP\Td(wJ\\R9B\ ϳW#4+[֪t&RϾ3ߚ8 TBK3f9 rL_OO%BHhEs3!}FHV_$ho8Sg7 G R)dn9; rJ9|:łO# T&okWɔθRqA']BA OV5s'!=='v& ܽX؎Z0|Bn%p kW\Ȩ7Pw~Z)<2|zS$Z::[wƱ];ZPS]Ggs 6,G(LPpɯbJTB $y…!6S*eU<.G$4T&0f%4Y.NRڣh\$pҘ7А)/:3Ê{sdឯdv5AT EQ_D#uP+099Y[L&S__`d2Pe(Vs'/vD/7@t Uhyyyqq1! AVwu Μ9C!8U7^(B }M;hx:Pufff* 77aÆ&''ɓ cРA'OBuUuM=6!FN\L)ֶ*l-7r݆-V z15`n:ss~ְ@ũC?ntr2ħNJVn_qUhZXTy_?\]&_T8Fd3'::vߖ]C# i/ַU. tCr.31ƞ[Ugo/ G )/On 9Md8)#JW4v`?aW4+pF~~uUՀګJFeJZQugD1nzk 9T[SCi2T5adWGќd h wwCܾ#ٻFςCBu;Hayy9kNNNkM;a„۷o0D見sOwŋS7oެ%H$%%%VVVhjc2ps<9_F CqXq~!9"ª6'kP6JL |S}3njF f_ 򲮨74070llv:a֊:)FgpXHcrqˆjIc3Z$VYbZ_zXSSSCCCCi=9ss@!>!;we6lYTo``g=)!Ԁ갶7וԴ;:i{ M:tlU񁁁@@&{ryccc?4 ~F7!P!}D***ر#66Vk{ix^[]qB<hvǍԊ+###/"44TӄM + y"Ëyh[f@cbb4 #e>#\n BH/؂QQQK.ZM5Dy` 666j+FH!B|}7CG0Wj$ Qәc7d ŵ# ,cLDAvXgB>6N UO_DPW)puwʔˤEy N>I6Wf{L܁}- N]Iwe"1nP!^ E4<rsr\&J%Xf3&z2)҇#}ϜcưΤx H*@ "@9U!C+=FΞ91p,Z^%Gcʜ.]g|zoOjQVȭdP$/Jok3޾=6لI"K9sꆝ͜yd SrJo}cpiUdQ(t&`q7JLϡK*jYl-Zk1c;koV^~^=!NfWN* kQ~&tv9C+; N"yqđl+ʋ$xf2Fx9L+B.4r^ɇ>~~Zs1'sD0+2zTHCB) #C !nψ^(VyҀ2Fdf|=u,OrK=Βi!/X9фyEgo*D7C*G1FfTDPTR2rUGK=ȍaBjH_QLYܦ!,5rrlٱşRߑ"Fi$I:d dM8;B`jiVP1 /_[nk݅[A9b###1x> lDEE͝;. )S^WkX4DˮczOݘTbm/(a6f&Wh'N*7Oo;rYw^nue[˗L7Nv2ϝ>eS Yo8ߠ-^:YV}`׷gԼ*7_{qWԭ{ޙ9qٳ8{me`6.h T_t>!v7fvC%π{offbt9Eb``dRióQ.yfDkGA.Ԏ~7n6m;vˣӧOA|~ʟs/$IkkkeeJ%A J؁ijg,F˸$$>S( D#$R NS5*r᰺:!&KX F~AА?3g 0Jl aSS0 ETx ٻ*xg`` |@DҨIII*'[wA0R.YD  WT>&Elicgno.{0ˇ <=SZkcxZc-x91r3M2MbQdlfԘ ۏT 4fw :p|ƔY^դ6Vϱa氱Wҙ:5 !P MQޟA> DjFlݺv$P45mմ $: Q[֡suY'1=obg鿮i~s |fu{QM}ESlKe_A%›tn2vm h4PH9dT^BT{ovh:k|L?njb5*c7mYHKsϙ/ze[Wݟ_r?ҝYxY* 00[ү֙pOkS+UpZ 3O.,.Yzl?ENZO`*u=E{ԏI{]ugLL eMsl]tww4yb|@G3Y>.jzm[ !Otlwu/V&Cccf1)bXѩvwws{&.EF iW 揱mWlI/{ eU[FLq"fnݺMP] -|_S Wp3t:|[9%U&[Mt(arxj&o,\"UWPݸqejjj@,Lp5 .>hv/ڵk &hѳsf%ؗ&Rznx8\V#d8D L>Š+sϝK2Z2ݾ#+;A"$"UK`q¹Հ1x v]eլb_gެAg k dZ{M!RQ. ug<|=M8tsaoGi&Pkknެ51􌍍QhG`uz4P)_շ0ll,:[*snWiɚ6P`f`c%io/Z_kbn%ik,[O"F Z9ۛcPGmi#|#^1~?pXtjCM8 1vCm UOL\Rc/PZ^F{p'.0p6  GOSžW"!QjǩK.Uɡ|3 z@! zkH枱5ImTUU}Kw,))122\:99EGG5kǎ!$R)Jg1%&)Ș,-J G@ǬPR,8?B/jX?%]ο]@ h&P?P(vvvHJ'7Mk(ؾŹ5e{@soSyGo.[{g݂{~=vAmRw~..MiB^۲5|QZݼOUCF+3w9B !mMY9yo {mn[o B̂jN\Gks [1g`-t>#NZJJQ=Cx+orۊuSC Umll)  >7mtмG- ͔͛':LX4=|ӼWJZQs $/i V|0A1ѯ3sN qmP"/ȻaZMK+1Q}XԚQoM0Ϭ6LK1y7kZU$" âMt"i 7|N?$)3X7R70bRQ{eUHBYXZл4~w֦VSS2n!@srrRRR9p\B.y8;8d]QSXe711y'#{[_=mhWFD}@'eHkjRLe!ȅ\?0ZŠP0s *ViAcr\8m۶ c#A!sZ mi!ҝX458 p}Ȭ4IܙewdMQZ(HSGg@Z">=qv#a8a(u̻YU<lq6Icޤ_ GU3Ye :ĸnRW$]_Ȥϸ_(3>*-D?Q[J,*dbmbd (&IG}"3Ô:xaR4\ϕrEDRs!%1883o͚8zjryaf'ał9#dIųoq0&#M%MH II:˲:&ԧ0LRQ s-E~>B1ghf=]6%~UB9(D\LN5}USZZ#. w)>ݝ93^~%; |0rL;)!CǠ€d=JbN3G Rz8Q#p s Ґ_L]d) eU"U2o喽q￳ضus /{{#>> NJw(#nm?{YS5u]'Kn~7t^֪U>OK! & ŋ /5v3h"}waBR eA2$T],e_wlG{=0I/QHNuF^r`=I@a!ۯ maVc,}t$?M='6q+oqk)LMFgA77SIV$BUJ:&8{ [E _rc}<()~ 11 lD #iȅs+'"/s>p4`|o|D0. EH%O35\%11}DSC-Ђ- K o\wG[*B[CmIiGMl]̛ :, $- qg'&FJFVgdz1~ }N/ly:ge8qȲ >зCjn~e`'2s+0##cڵp%(X6.T!㨴<-=MDCxw?5"le|{z:Εf|^ue=RqttgmN>A}JQ ={ j̓\.:zA嗻p o(V*,F_C ~.޻A*He#ue|'r?רK2Tp!H~g744X'~ZLfffD"//aoooW ض5qvo~(s=5#E'T*{P*<\겲2===bkoop@3b뷩 ܫMK_H_GGGÛyF*I nn) 155?-<`$577 ?bhhXRR| KKKzH(sXm‰YKIJc|cLZXX<́J$sss"ش_2 .vxޮܝ@ Kwp~9D^4p3ȓ|I/lAOoP NJ(^J%ee|dPKMLіB) їÞ`@⁸fͺtȊ>rtf+XςO5 /\:'x*$+/\_R6M߲uˁ?Q*:+,F4ߴnҾZ<7_;G<(2.̳H<-[(8 !̒ BYWsE/M7x###Z_)wU95wN&zso9S;ziL8*c }볘͆J\|_y"/%~^D}6ݴ^ h bBPK2(poxf"9 K;m }$A&w31)g6_8ߑ4hˏf4{~̼>^JÚApW̙v% CGOUn'J;1'}`_S|,8kp!5F[# >ņg LEBE<:XE]5[J~f 7Ûz-/v4̚fɅoΧ:4&yżW<,N3l\`@n*xz]뙃=['ĢW.1LZRBR X嵄֟?=7yU۸;Έæ!&_t2)]>3T'N6+nΊٓgNwmO{d*Ks3yzVyWy F>-iI|k'n}uD|%0KyZ xuE);v7.99lk7:,ſ.3UnبĨ.6lV89>MqGo^vV"]:oԤԔSBq.#ˤS-y9vNjo6ՖԻ9aN7tyEv…cn޼ })&mIUdaf(&g osJz+#J82&Q@(Z*_ Ϸ4똾>kqOJJ$:bMZ `嫻 +fFqBe4J'JF $JӺ,PQcH, j~sXOSY}&NGvAz\L@chh(vl DԣF>V ": w~y7 \pt+ `kd2إu>~gҳBd wp7zԥ򠰉#uU{ wyg$NW֝T*ikk&&&-Yd͚5 n8hee>Ucŏtx.֔}~v?ߘ>[~P6mT߽eίXq_h^}kENN{iPMC{oASS=ן~2ɪԦc-Қ_lɗRpGo׮X<w6yFﻚ*wn*զ zryh}4d i2[ hj &w|T:srr l;?-}Umhݓ#u.+@F4˫xƂWVBi/%O6v `1D˥bR(9q]8nRr2~ s׊u]0qrգe3NA {M"g/:_E ͐:22+AqNeJ055tUNd9l!@Hqzdi q6yzv.,!g50pU>\Xn7}[Xw1D/ 6.hu.dL##: =Ntisr"10#0g_%Z0D"]_|ilcQk:r;q)-ä+x饃;s7]?lQ>E^;:B>GP `cP< JlTnÙ@0hsxD>@;^X1!Mb=@jm_u|=-,Fa\P31e 1__lhbؓ8ȗοRMMMQ653B KW Q\L(2 > l˽Kb#KG5bJiw3bWie;4x?QPjtiM ^E]^oAYRdu L>I=h۠Oi8R,**{}hB }ꀿ9oԮEU&nSjF ղJxֈ;|VY:tWdT%eådһ6M>G RHiBaOW@!|,]}T/$ERӁ(GDew@ xPke肇O*]TWJ mJ&tMS*^(j++`oo`FTPX͕X8%w,HLlR;::jkk|>NF`C!|Pe i`SSU<,֊yA!|ر<::J b.W*8?WTz!  .2\\ Od>b1ZGN}C>kbccm(A?ŋ@z%''C /DEEQK,9rH7akk!;xcpaPuHtر .X,pϝ;l2뺺~I(0$I5;;{ܹ2!tww'BEf2^(Y֭[EEE݌ /` j޾};ٳg?2ƍϟߣ3L9",/:qû n.%X{zƍtsss???Ps~ɓ'̙ vA筷755=x HUzA!o WJoe\( tzx$7k5ʝ+ nT5nc<.։ls5ySFEtY/Pk?~Syyy{{{PPӧNaa!x.\^[[D$z_aa yZH}RE`XߓE@a(K,={݌>>r9QA b)$9+(xަ'04QazI+L;nqRs*#747TYliiioo_[[{5PH s_~%::P{8R QQaӦM䰛444t3رcAaPǻu'"(@)֣Y2ͷu1yr7,G(˹FɖI6˔ ,8"KDtwk8N=?9;躽DTeիvvvw677111 03PWUUEFFYs}Z7no,!Ϸ'X[[(<гUVuEDDtttTTTaJw%RwӆV~ voپ,jg(G$A4ZjO+8#h:؄%%%'Np8U+L6a:h)+qTt;##cΜ9gϞ=tu$)) HtTTTxxwSt6z=zm޼9$$]RR(s+pGGGW( & ]%zJcAz8+ -7_Vu ;j"(11qP0`=aӫiyw?1 'QyHM6B yZFh,//Y''5>itwwF!g WA` :rڼT5uA&;5G///999UUU{g+W ?4w%"bq}}=AoA$a666ka/[pٲeЛL ZPuG.]ͅV\9?0g̘蠈i('=bĈăH$<C!A!DJ !5~ժUЛLGQK1GH2wwe˻GcZZZ(}$|a/ m}h4 , J,0>>|m/Uv#^@tP&`XXЛe˖͙3Gەyl֭Ӹ&@iB &+"7d,=p8s~ҡ8xvUTTt?|BB0~G|l /Z :GNq|7ǵXZO[{I  `O; c"cˍh>u{:K ҋPJAg+eAPK7Z@# 9U=u0 =fz_OA }Jc@DǕO~-!3ڂyWٔG T}G0݊]@5W\B`Jv4Npg3!#>!ʒ)YbRF 1^G NPGuQNNNg#> ޔ~ĵQ6d$#0/AњA%_~}%ϬD%HJ2Y(X,:ޝ9!  aw4ugFBKfX*2mjV\V[kG>V+ڊZVQQT( ( BAV7#a܄B8xssϝ~Rd!VUU!"rTV~١#*5`)t7c#R6]XXs㴴4d#fffBtJƜ)B}}}VV|*SY@PRRݯgyֶd+p_5fH$C&#⌽}Na-a$h޶%EW epvZ݃(Sf Y@̆E19ܥK-[ө]8/&QvnX0??;ZH_AP޾}PxA ZXX :…! /'i+VWSh7 BR:ATf=4E^[.ZhҥQ`y8yQ{G{&S+]=W*ǎ$˫n2]}lh=4O~7468y-picr777HHHg9켣b?:үE9>Q#2DHP0f'Aj۵=jbe9kiOךqF`RX Є csH-8q B x<*ᚩnm{"!!!R@|Ma2Qo55MbTǎ9MED(H An ?¹5uJF?ZY|Yo6;B{ ͍.Q{4CMDLc5>P h7tic@ᜱ{ԉePFoch#mH%['d'+|3[g"\/_7ݜ׏^G ;ʂxwq? Iۮ웯?7u,T 4]2'Q9Ucf>囸~SKCsVD9A+J "w6u3?w=- ʚ%cbg0icq) yY'Io2b2O[ʣ'sߗ)<>Zto.| G 2 C' cmsqݰ F\ۯՉIt[(h7s?,|_<<ID @kG2|˾ߒ.d)\F !/̙iC#a[$TH``x$kրs&lo,)7䜿]8|=`L??[ }:.6!1wdݿ_J(>w;c +"p8l!h[8]H}#|5z cAAv?xNsqU[$q$//G:ӑj%c\?f9n=3)f O"(8NM0ɰPK5ܨkyh ѶJ2tmS3=@i=/-`Ce,,\UZ-ERB,DX1XN":b WoGLrO"t清W,ˎfaETBTd=FIDNGſHUwrd: S"4^;ӵgO/ /Ynf d?>>>11ԩSӦMl!.n@"N:]!199#vdh#+h֨)b(iִ ag+OW*m>wW/uO훩ۏz`Ap|> !!ۘ/D~?F^mRpgoǤ$ 0"석n׮׉ Uv*9 htKٹ}2y?՗;jrlJVO;"YX8?wBF,u)DCvO ŐxӇ܀ArH;k cbf\upϯ^Q3Lmܸ4OndeeEEEuYm>p 5@sgKAv:*݆,oq#ʥr jgmgdb#oA&[oprr͛^ƍ!'tv byyؕb9eȖڛM\IXXYF L&nnnNNNõW,k]Hf3BViX_]U$v;:ؐJ 2n3ڞa!Uwۙ—9;Vߺw15u.vNNLnN1t VVVC ^4 ~W!HYf0!B111x^=h4=eby$t:7PzdG2BCC.PCoݺ4vX]]􍊊`oaaa$`#I~а5e3aGu Ctble6̌Fϛ7oNۛY'iݾ}b{D׮]svv9rd㢊t"Ե B4Ah ?"Տ]B;55U@?;Ͳx`0L6P#4>)..>L&i#@bFqG@0D(J͐'O 077rBc&՗[,'NF7GW@*3@»5!FBK _s{ CF "7dBCTA67elk=X-11QW[jpԵhf9uE3MH tyG`Ե˝1ct;qDuZ%0}0~iiiQ c jfÆ 1!0l27K, M?G,ZAAիcbbu2NVM>#{K}FDhdH*+ɟtaAۯEwFo`.z@ "##LjAv" fEl6b[Ы-**Bʘ󸼥4A~6ץo޼Yݥe( /⺺162@0"^0t;EXn]OԴGeLp?x y˼ 0bYYY/]@Ma-e9LAޭ\2!!aǎc߽{7|)~\\Bx,c9(4]{X'+VX|#0@)=k~#*B@LL BӚvZh#~W DW Gko=:|§!;;[퓒0.c DssADP(ۦMf0^lݺk; ૙™<Ǻ#˾k])7 4(Bvj322&L5spida X!A5IPu`2ctرc 7)UgL(q%ҡK\"ul*ŋuCHHNO:uƌu ~ztƎ,Y]] ]-[|'V:x fdɒJ%%%!kFAQ }Z.y1>(#2>"9e}&k ;sOOO]wk>6]UUk})$Yb`?񉉉t3<3qDPx˗/χ6tA$)Pܾ}vYA _ZZZ /2ANѹ3j-0ŮʉÁv4('H7s%v:[ۦ"<\nccL m|1,ܖV{rEz_(BMMMYYYs̱H$ $R \BpMX,vss?v5ȭȫnh\p租wu־%/O "E+F|c(9!&FDN s\pchooX$Dp3G#I!#EJ'_^gG"ē즛W?${!;wX,`/CŸ-)ucբ.TkO \p!L{AvRU|QseޙS..VhGcCX(ڴŋrlMAʬEm?ɻ^Q^m Ùu'yݻUkVN6y:{$?bvd2q:i h*–>,t J"nQ$w38깩ODjhNHp~T"0>>cGYؽ]s?kyǮn87 L(2LT}E{Z>;;Fy9s#@=fsrr:ˏިg(keg9qq_V{F`1[ܼWzFR( Q5p>zݎKZŰ<}r@BGč nuA/Dtfs\YQؖvvG]ƹnn7q\>}}'ނǗK)k>q(?U1a Oǹ3ېqSgCuc:{rs!a p=<L u!--ͷͫ<1 lŊIIIw.NR$T*XN13rJ^P)/<7{tpmO#yVv~N)]&U{Y;IUmy 76qknd],ЬÂzlD-4@Uח_3b~‰s_ss`2]n.V[b@R O bۯt]ǎvvvyfB"(\< x҃nakOwtqvqqR0ü@iox6( ^DdœlM3[XJQQ$yqc#eG<4Qi ]]&A>,@K](;Kkr"V39 *qVs+C-7KfCfwrLH$pf˞ISZ"BIFD"bTla3-%ȗNA;Ҿtހh(+㪩AĆo4?Ij>eWÖdHy6ί .OfSW{VM @j@ӦM+--sP-yY^t<ցʊ겲 ]ڪ{n>?~r'+}p%=8(JW_o}MRܪ`ný&~][7ovvv7Ɔƒ 'tv byyؕb9eȖڛM\IXX"`G&绹999΅p7G;kg7Yl̴r(͎?uu7"B"--MH&"?!gž`՝URPhE;G#7V~) 2e2l?``/uh2zLd#`Dź< " qpp_ࣹV(FW2|܃%ae*47kU??61Obv)n( z$ .U#&T9!7\fAbj2>RpaAAd@Wۺu+Y'*GBwWNc0˼a4mxCr.BpԨQW\innwuu5D"/++e9f XsG8Yf8Wȁq"b}ɨFbb"-$/:@kkqtVT*@ooo,("8P"JfE+WDPk@{Q<Е z'M-YES.iO5YIEdczzz.є>>>J Tqf2^O:m@hrD㟀 8Hx ZN>>gV#:։U?SF7iBZZ C3|T'@EsV&~~<ļXtcTYCcc i‰'BQZ,X9?Z[ˬk 6=vʆ99YPi~ZK\K.,9a;wnJJ hX6;;[`~ڪYۉ^^27@ FHCvD'u‚6-Eu)7߬PzNz._|N։^\"Q\:aMk&wG eWړݲ 2l҂sOh9.f"Ba45(/"B9W.ŋ񰠚 222t:7chtA/)w}@DB+;R*O1R bݢm߻fGbM@D- E'B#E *AdAʸFO pz3HFPlݺ=$ĩՀ g2!x6?' _fu=7 <:ROɦ'IF@0C"LMMQ?L8 `b. %"\ hDX\\~dSzDE@ }bڵ(0Dbb"]HXK)ӟlJ:˼ҲA_ BKl6M޹s„w_窞ܱ*A[߭ϜMp"#`C}K= G4M?!@tF\nYYzBݔ܍@[Zp$⹰?TN.g._G?;K%,Y~@sx3%T*P.ښzxx̞=N͊[_g4"˗ .zŋc%#xگ]8YDC!!!F6?^tI&1L2SY 6(++>'H4mЉ%(r8iӦ-]tŊzOzPQ2~>)G`d_:N(/$΅PmSm^{[>{pv] =DTO `DA}}}~~~BB6%A$}(n߾}asLjTttR epPÂ<U4 ..nq-2@&{H$2щ[}+Vٍ6Q{}5RIC;s 9$;YI,(w{,G$ P BPkw g͜ޢxH\[{綋EZo}~knc[*P 쪱ěPi}vEc~uYqIQꦭk rImyNrO$PbnƯȾ*lJz&$(zQaO~:JiJ~hy=#a||g}"F"BJbƌA"8͆VR)))+V\P@@]/jnpAv+Ļ>R>iR\((J DمWpLGE\=mA[{|8ziҸ~+;?^.*=݊.=m^VuXWO0*XXX=&ܽ_oW8qknL+ʒpK 4H$IQzP(b>Lo6ӂFkw;=晱 Wr$3I=IuSǧd;XO.k,`)ϐ#Bh4ҠOdX ٲeKVVy-Y͛QOPB4VWWxÆ kNɬ=$PZ^c l$sݨl9',}-:NYc8QTQaVJ2Ӟ#MznFI$BqVPygK+->#ފJ҄u%2UMmxs1nD;]x_"ј 'PG< #aBTUL$SnOxFt8Avaɋh(+ Z0//֭)Hff& ]ӫ"A$?ŲmS񂂂5|vv6_/O- mk8CA<ٕJBpx5E;/Pe&A +ee[[ݺt6T(#<%7p5t! ;|܈riEv70D`zP9kOiӳQS~ƪ[menT_/2f2&YX5_C<"QglB>v]#< :eݽ!]\\JKK[[[L&: l=&8-3B|H>WpF܏r%xehK4W܍| y $90$Q ^tN=GcX6Np86 iԻԘq =Y#`,[[px.^oT*UX\SSs̙1c`3cM @e!" Pc*:50H=# Q8 ZHAԅ,ͯJz%cbbnݺ_555rBqvv9r$ " E"^8FfBh?Dmچ,ͭJMM>}z゙I@iD'C*=])Wyʘ'YT 2$$$00P"Jd2JF,}sz=H]AOl;Ӓ%K\nO7G9 )G*|?Hi^Cݹ)fM'Un%%)TL h4N666PPs~lD=3&"4khǻ5kl޼S+V@~oT0pݗ^7uN\)|gOi~|z]Drr2 Ô $K{-8z"]$$$m©o F`Am.T v&S {,I/zA a!\U?*N@{}[zt;6An_c [޲Nņj ÂٯeX0L6Go,_Q/+9}Hpx999gΜa5nʪU}4˾^uPj@JnfA(_vh~zq6W atttOgڤ)ʣ\Ң}$Ǒ<|PLJJ~4sGovv|Ps^PVA(rWvȣw)YYͰ@Ú1=A~Gze^&3/qĉAt{-V ;m/,ػf {w\,_U*âdE"oz#f_[6Y=ȤnVÉ-_;NMy#HЬt9(ٿIpA~G > _"D/@vso9G}n [[2+DN^Gpp{8I8\kۼeDa9H[U'#::0! "čZlto^ ^:55'|Cd2/đm78t%$rwd@~5z%T 4G0rRl6;&&֭3f 8G p"W%%z2Xّz U?$4G0phHD ̈uUޥdKKo:(Fn/eŻd8/VQdf<ZgMF<]Ĝd]ϛ71zM[9uj!X~3|{<.o,5W?BՌ@=N'ue 'L(hAK;;;1-h8p/zuXv'_|r͚4-HWNr,<ͩA{}rǜ.v/cRQg ⵷u Žh'ON4)88XPYrxjAqEzM@lL[[ш+9uwn7jik=tإ7ow/ n)!4:lf׬Yb l2))in&-~G f]"t;=Rt /r{[Bmߞ=^6u떽=8GD*b;C'N~uJe}>(⤾P0]:}E;Y0ހ055u;%@mKQʺ]o9q2'}0 O4 dGԠqofW$t JE%Qkmeai+9֊^9wS"A&CGsbi=;BDNqyٿox{,(؋XOH޻o-VD滥wlxV+o9[sJ`e2쪶vBeE(woW4Wnz ԖlSsO$PbnƯȾ*l˿v֍+UsfLlk^TgӅޭ^wm^xC4 o f/[v-Σ}r 3 xF/aoECi zx禫F[ag3lxY|ԏ[ &+GȑOHߛǘ9Y2mk P5(B "BT8ソr߱B7◹ZV#({%(JS(,Pe(Uݍu_8_~Zu;6oUrjtY: N/@fؚ[o^.KE-} ApC4KXE*I 0eڋ]sll["#o?ǵ5]Ȳ DžѥR̩SjMgܞ`ZI وDҘ6L{~I Fs9at+1NSRp,2 ((^?M`A+p;}N'>uH"mm\]]P qS d98Xw[9t# Zx :01EEX]]ގ=a| h/66611qѢErsqOAJ*cXı9 ,0EG\/B8w.öƙlH&m䧽<씝1mb~멳׺SB!9faaA{{)haMwz;:Լ[ws J+@,l}#G9O,D[=wUUU6}= @u:z oTELx֪+W-O?B;Bn5Lq}~ʓ#C]^0#ކ$nF&,h[[H$3:=@dWՍQ^1:zvN3wl̓.VjeeBs3L&w.PhtF}j|\/ڊ8‘NY3DEx; >ɚ0cjܲB#ciLm ّJU|5u۷&M ub-HKR"]08ӐHMMQ;@a80zxxcQ2#m3ARYubAS@||ڵkMʊҦ̝/ɳ {y+)ݳfܠa\ǎШnFyfyy9\,PH7?B.wh09”a;p@bF6gYlg.\(rجd#Gɟh Tepa޽ai Ȃ .r]]e:;;nj' ѭDk :L~T14toz"]pQbO,G |K4ά>I|V atŻk) ]aQo]&1-H7()h7_0.3jԨ˗/r=vR` vLD(t&BS[?_ziCk}:ۧ<W.JϮ4br4/Q78݇~!>""Е iEl8*l#Ra+%Ж&O(tI>U o{ 4MED G*i"*`o`drG/{ٌ]e~0񀮤!Aˠ6G9Nhh(< u"&Ol6s:%υYNLz[yyH% i)F1?D,8ʌr# &%%:u*??ʕ1322bbbzB pWۆwX,c]U;AnWU|^Cig鶅ӕQiշ()@@DzjaM<޺u%K-^~=-͛W]]|rCͳg5jβ  k7쁎LAOw!\AGAab`e:hSRR\n xn .Йu,CsZD4uߩνMNtxpd;#MA D@Į]M@0"$&322pif T8Uyzz !*A_\6ku]r5TWN .޳|zh'&CvHQuF}}WPDXX Fjtɓa~i&\M{_( O*11q(^)03G덿jL勎N3Cܤo^{g;;T X41DA{{ٳ @~,$==" E 3l6˅I&m۶ .~нvZD4@E+a `D#2\HQOSc(A!҄#JeҼ s? Y1)°&?[֭[9sfӦM@iNOw6>ԊآֈWБ;‘DD`޷NǏW3}A ͣnQVLiӕR><Þ)Yfhۛ E./5> 'Y8󪪪4gzz:N",,, ꅗOP/<{J >bIS2T*U$aϥ&G"0Bf8 02*HvsW]H/I؉Ԙq& O[0DG b1z&:,aZZNްaC\\܍7eFLLL,//y.hDˉUck\uweE;zD{[;1A0 ) !!fffVWWr/˗/J/y(ԉy{I F F 6]TT0%B[&+o ̷vtWxҧFn嶴`4- =bCttN "4(LMM]z5HC9+8[Q0..U2arGNkYH""mŊIIIpJH$fggO>Zf`L` G>\=/%aCc#eEh..)owrڄ#"49p\ Liiifs-~Syŏ) 8SD HHK{lDE.R!>9] "T⫭[.99Y@L18c `,9/Of;ł3LSBbL3gΞven"B%Ly`JJJjjz͊+V\9zh<<==Q%C@k׮5k)Ϳ۶Ģ+8[E?S S~ I3G?( * S7q8ӦM۽{Iͫa K;3c,~W34) +++**;Q(2B>0Z088/.N 'xb̈́ϦRTo:bP^L&MktL&S:<`RRPό`8qЍr9JCajP($S /,,]ǧ B C7yggg5?"B$B.+HL fc$ u`l BRќiDzMUaqMTňA@0ʀU@dNMw7n01rWݢE㉳,y@@0] 9B!Ml¢9DpPx۶m[d WnŶsCu5VUUq\ogg`oooA+ĺu:oF8 p8b:ㄢ^X*dz+^S\Sxqd 644>8RsgmM" ,IƶiBDk] Ʋe˰dhB3Ђ\.x"P K8ƊD"=5Wl6igK+jLq.X_HH\ˍ7 *<_soyYvJmRB[Wi=[c̮N$I$WWW ? BR)DҪx(o}뭷ʒ rQG<6ξFuΚ;yQ.nnݺqB!J \)䡝}T%V]w:x2F3>fvw3wxՄd*V\mUUjhL7G<naa!EJA#h>LА Ikqd֔OM\"1ɩWN?|-8:6!Qe-0>]: ukW-ZU*^Tq>}~S~@Cr/>>(y<t@dmׅ t:>YD&:njvgB[9Ù-YbF&ՙ`]"PTl3kl)^>:v˥W*L޳בVq&W^՛5.sӮ_FrpVVVp.(PSy\@pΛw8#;)+8zn$cu֙y0{7. nzO'%%%$$PJET,X|h$g^ ]nckZZZ޽ Z vppP 3pqO d:*( k\HaE"$)+8g{PDNΝ;UC`A@Š`GfD?5Ɛftwu0lEF'\2f.T y"Dn]@ Θ1y" u,],D"ӻr QF1a>G@Ff-߭܂4i$uhq.+887n`2"h„ j&Z2BFdx>X?{jMw ~6.Hi OgH Yv-'/A ,i</&&Fp zI...3g9Msp'hIwSL< OcKX S;0Du!'///$3Wf }||`郏F"(#}%wAsG3s~wXp #_7}"B>@<ӦM`3fHKK.q5O@sYS v,frJlX4 D.Q>lm@1@.D[0!"ж6(K+DH)/pJN'L޻Si)Wk_|Ȃ埞xohb}sUo $v~+x3뗭b\xiǼ39Nb.3ag/8|-f.'fp@X{0fD?ܙ'jQMl3,|A||<|5 3jii4i_ z-.#wbrKavGGF17nLsu`L5- wkRJPf^R22ɦӥfuKBw51ag7S(o>ɒTSv 2p(3G)))$/gΜٴi&ˀ!p,qɔp2phU0a6XXP{}w=)>f, n888h>fAmA [*fL3p,yjc;s e_2i>c|UYU(uW[ Two-j Q^. Z<1U;wq6vޙ@Eq{ffU@]7bd!LјyM;L丆<%F%9ɘ7e|d4h%\Hdi^G_t7 h |TWU]w/lN*h})%Eh\J D J,}qUM=6PZI=+\=V]3CJ-qQw5k@wQ5}d,D6/Tz9sB3j.C~>Q]RwE#:Pӧ>|8;;{ڵ-};nܸu{c]"M:uꠌqc&tأR?L> @_#aQ¢:v~vozu>a y\ꎝ"4"Ȟ#r=,ܶY8L|֭Qhw:@eE˖-QYPd˱9޹LQQm w . ^LP>bƒ %-O9ԟ KFIf8H/X{hyVŻxzz4vB}6Hyx魸@9N m| <8gee!q@$ਟ#] - 0!TyoOUp+bbcc4R]i\}7(w%uCb1(P3p˲Mk pVu.=T ّ3Ї.ߡ.422˫$55X꼼2 v :\~KKK";&w`8ȉ6,\$wq7g E)8IꐐB%~h:-RYL꒒>A`)]rwǝce]O'*A,84n= !6>><77A'!GDz._%S <`˒:DJeݫ%\\+W틲0=IV<P Y|I٦9}`k+mjjr.f 7OKdٳgn˲}Mp`#GR{'7D׋bLpPBa Colp|I ޓ6l޼6mp ߆v^cio?hm?0 D4;; #G8!(sڗ˔IwX$Pn!R}4q}dFNw%p<~- HXQo(roHKK#Uk_BM?+-5XEP]I_,t/eǎ#H?Jvg͚5\y/x 'pg Ƚvɾ{#jh11142ܮs/M&tj-Tx܆ 84۶mY".]yS%\Mc؎{Wn"M"9A}a83Ȕ7\Mpf*0pi dԹf1T%4uhh}eK|h7?h.>z/&aD]U0°I B!˲TA$X)ӷ6XScr%I4,3]w}3R~Rf,.KP{ ^*uiss>Y/N68QF0C<: `(,,$ȼIdU?d1-=+ B%ܐ}4^` jR`׃Lj{QYx@!G  AFDO_Ye7~}?Iӣ%j2jכXmtZ kke{W" 2gzAO4o6AA\~ЭW}1l3'}I%@i: CDO-ڛO6(Ȑ](+4233As'Q}q9 {cǎ 9s@%&o&Ip@Ig}vʕgV%mp/"K;~7o$J]*ToxF r}Nx.廿K[ yw6O}.Gj_=xIk0ݕs27Ot2_oL@9}Q_޸ _\8"%gOF;VoIX"G"F#0[mFVD.Ǡ"I(Ϡ;w{ :X틲KXP~}']NsXۃˋh m9h},xR(jΗS}429Na2}$Pn>¿]uAŠ ` Aeqo澖\ZŦmEs>}+^2v$E=pe1DR7OY3n=6Lg٫/.&v@f=f1u)EG=ƫfGLj^8|" R$:aAAr^G7DEAhBƾHX?t8X;z[R?3FEq.JiG HE"!w22{PyH{G( Y@so~kMZı~~Wil#"Kny:kD_ k}|::*cJtn[a@}<"3Xݼˆ% }:̴40[5kW!/+))ٷoTU,eUb5?y BGx@?./ebUosuCP^R77bk@E l[ɏ-3]Dԭ'=Z\8W'|b#SFh߉%5Ϟ,k3TV61E"͈"8͸\j'S?=(.@mngwg=8) }W ^ŭ_/ *o֭ -^b AkA_odsDbp" |'T__Vr-ZX{KS+;HlqJw`v˫jJ#F:zDƕ?eYe *w0On]h0|{SPzvzuzx8h ?(n,xM=%.!!_!'TWW}v2ʭ$#ɠw&Pa-gB 0$ ˀa᝿~â"cF-o;iJ疯WPnU%]͝},*@'yWYPd@V3#9$رcN݁$9 r=pR0< QPʖx:u*k@R:]^'" CBPH.nr܉ YxQ !˶uC)"r߿֬YWzz:4xet5 SdF022rƍb /v!ʭ[r\)xI03W7o^II W1??񋋋XXXBA-$!~ .` " ( B  C#D tK.^% -YYQoB 2Zaaa]N>0ԞbeE]of+Jv@!D>ɏ NRGǏe'NJygBh6=rhmmjlޞ2}mQ)=?e1_(7PҨhdA"X:E]w}3R~D,LIJR"Tc֟g" ۿu?Iӣ%j2jכXmtZ kke{W" 2gzY,[57 zzE<<+}ۧTQ^bZ P 04KѢy;^ k;Jp֦vV0& AĽH|(mE;-3f<̱5QB@!a|֞r#s-Ozⅿ={u^Yby!ۻ>ՑFة!6Ghkk{`sO{cdۘ)qe.01n٨+,8p@jw٘"erG”'_}&:?svxERƒPQ,B9;-Ұ#/.&v@&5ȶ0`:` l\i4۔#azu@BA~G7æ%_yk7[RgE;ҎcE u&Q(Qqu"F%a R&rcӊ};rvS{Д~~M4hIˆ_{ #||VpC쿤mf":lʆlEHh὏ t5h6 EtPJ `Y :BA4ReEb#SBBGS3RF(U}dwcomx,?4._ޜBeEB!M/X)M\l|snS)d/R@1,XEw࣏[&E|=lYyC\E4 +eѽB\ĈI kUi_M|pި1A-UobĽ6)u 67s*ld@pI&9ljjJ ;Ϭ0Lr#l)T2-u7/T5W2zX," , l6C/L20$K6!~!unqȆ{KsxhKUm},aAm+# -@)[ZZHG27uV-$OF!DJQ زemmAb8...::z !Co̡"  $ 6Eo2L  ! "  ! "  ! .U[re.@ NގMត)bAiZ.[,l 7D$( <#q/M "  ! " Ȑ#Xb jM&2 P(jmii1 FABAA!DABAA!DA`\ °0BAd(ÇǏVq! 2Tח)9BAdy0111( RSN fN~EBAdP[[hBCCZmbb˗ccc_FP,6IENDB`xyscan-3.31.orig/docs/en/license.html0000644000175000017500000000332611470425342017752 0ustar georgeskgeorgesk Copyright Notice and License

Copyright Notice and License

Copyright 2002-2010 Thomas S. Ullrich

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses.

xyscan-3.31.orig/docs/en/errors.html0000644000175000017500000000536211470572164017653 0ustar georgeskgeorgesk Error Scan Mode

Error Scan Mode

xyscan provides an easy way to scan not only the data points but also the referring error bars. You can either treat the errors as asymmetric or symmetric depending on the values selected in the Error Scan Mode fields in the Settings window (see below). However, even in the symmetric case upper and lower (left and right) error bars are always scanned separately. xyscan provides different ways to derive symmetric errors from asymmetric ones.

The error scan modes are:

No Scan
No error scan will be performed.
Asymmetric
Lower and upper (left and right) error bars are scanned and stored separately.
Symmetric(mean)
Lower and upper (left and right) error bars are scanned separately but only the average (arithmetic mean) of both is recorded. Choose this option when the error are symmetric and you want to increase the precision on the error values.
Symmetric (max)
Lower and upper (left and right) error bars are scanned but only the largest of the two is stored. Choose this option when you want to play safe and especially if the image/plot is of pour quality.

xyscan-3.31.orig/docs/en/file.html0000644000175000017500000000274411470425512017251 0ustar georgeskgeorgesk Reading from File

Reading Images From File

You can open any supported file format from within xyscan by using the File->Open menu item. You can also drag an file (icon) from the desktop or from a file browser into the white scan area. Starting with version 3.0.1 xyscan supports drag and drop actions. xyscan remembers the 5 last scanned images. If you decide to rescan a plot again use the File->Open Recent submenu. To remove all files form the history list use File->Open Recent->Clear History.

xyscan-3.31.orig/docs/en/stilted.html0000644000175000017500000000511211470424427017776 0ustar georgeskgeorgesk Adjusting Plots

Rotating and Scaling Plots

Scanning Tilted Plots

Since version 3.2.0 xyscan does not allow scanning tilted plots any more but assumes perfectly aligned plots (i.e., not tilted w.r.t. the vertical or horizontal). Scanning tilted plots required precisely aligned markers (in x and y each) making the scanning of perfectly aligned plots (99% of all cases) more cumbersome. Instead xyscan allows now to rotate a plot once it is loaded before starting the scan. To do use the spin box (circled red below) in the Plot Adjustments dialog (View->Plot Adjustments). Units displayed are in degrees. Use the crosshair to check for horizontal and/or vertical alignment. The plot rotates around its center. Rotating a plot is disabled once a marker is set.

Note that xyscan cannot handle distorted plots of any kind other than tilts. It is strongly recommended to correct distortions beforehand using one of the many graphics manipulation programs on the market.

For convinience you can also scale (zoom in/out) the plot using the right spin box (circled blue above). Note, that zooming in will typically not increase the precision of the scan.

xyscan-3.31.orig/docs/en/index.html0000644000175000017500000000422711473310030017426 0ustar georgeskgeorgesk Home Page

xyscan 3.3 - Documentation

A Data Thief for Scientists. Often the exact numerical values of data points depicted in graphs and plots are not available in tabulated form. That's a well known problem for scientists and engineers and the only way out is to use a ruler and read the values off the plot. In general this results in poor precision. xyscan is written to overcome this problem. It is a tool that allows one to retrieve the numeric values of data points and errors with good accuracy.

xyscan can also be used for purposes other than scientific plots, e.g., for application where coordinates of shapes and curves are needed or coordinates and distances on maps.

What's New?

Getting Started

Copyright Notice and License

xyscan-3.31.orig/docs/en/workflow.html0000644000175000017500000000365611470423723020211 0ustar georgeskgeorgesk Workflow

Workflow

A typical scan proceeds as follows:

  1. Load the picture/plot you want to scan.
  2. Set the 4 markers, 2 on the x and 2 on y axis and tell xyscan about their position. This will allow xyscan to perform the necessary transformation from local into plot coordinates.
  3. Set axis scaling (linear or logarithmic) and define if and how you want to scan error bars.
  4. Scan the data points.
  5. Save or print your scan results.
xyscan-3.31.orig/docs/en/undocked_all.png0000644000175000017500000040312711273204225020573 0ustar georgeskgeorgeskPNG  IHDR9ZVtEXtSoftwareAdobe ImageReadyqe<IDATxWy.<}fӏz%qp@r!H 7'IHq. 6=&b.eI}v{wdI;Y6{YfϬY~*'lc*6ZYF"O%]8e盭8W^zrDT̻W)J<1!A*dMeYH&:ǒI%ueɱ]QEv\|=;672R.t{r696"Ib?`96(kR!Pեjmw]on~9j,+q5<=uwhO/M\5,'mټǓIe}`tvaC˲M2Raf2qUi6R%ImkfjEX\ZG=u3ạBxEQ**Zcv.F} ,(J&`R(H!I9H`-U(r q )GQَ⣍$jm 5aqݴs|I&ChUg&huIBdusaL*˒x~e t>R*"iY ^oZR:ʂF?A7Kc4[V71Z2=V" mTZTz}G!,vxFg.(TdS.$ *9N CGfxC3,  _]k"?ZiUUz:OoZ՛fL#YB1 iaa>n4:Ja*``T9VC"jLiGWWcb/4Jz<Ϣ0r%QT$q=Mc9nCuDՐ4lTDeRBb0VhS%MCNc a8N1𔩉l&HE2xq9B>`CP J NS''$I]-D ]1&s]"Ցr a&$ Yˡ#"+ 3eQV :JJ!`pSe`tf;.vf1J-9ôR!JleN$$^GDEyQ4I մ\)򌢵:ZLJ0Gy^!$0@I4ё``=4L^ĐIr*sd^+hC cЬcCACAN-,놁ϲ /H,MF%R"PV$tٓ -ᑋd>+y2PNձqTl\V]tvw`!?Z]GY.D<:F@P?tӀZ= 1ڟdѣq DX̃RNɤ@c.@jLM1lkCBc)tkIjM@D*%0DJh3,tD< ql CǓZ8ڱ.aQNZQUWSx'DǴWl8@><~fno&8 $m;B 퍢Qt4C@1-0#4p5n8%e֝IO\gMumh4(FGÆɂBzs^Bcbp"R|t @| QTbH/UH Ro0b(V*iJK&뺁ڀ 0)B% ?qA%\?膎L2<`-.Dwp*E ),Uu4Kj!qT : )?:ZiʎL**QI_UVFP ^ )2z*KG/gD^G>!ή-uCܦ~"WpH~N^OCQhǨƈAuC|$%:?<0d0P{0Yw*CGOv{h&* |rqɀdGO?$z2,n +P4DĊd8/w!fT x Q"%j@њc%HL $2jw4A!_@/j<b:6~bdN0.Cbatф'=AHT*P!H]a,'Q x\U7I$ Jv;Z=ߗ9.( [^]5B cc@ 8]|(N^B|(I/[]08Z5Cp| D >MQHUFPяDx@.Wf'Qt4.d:2P#5@LO gQ\6O؄n$4mm[ڝnנg 3S@3hVKvb-.rZ F1Q"# #/ q(Ds8 8 et23jۛC&ǚ( @MHOY疪cѭ{W!z$ 2 ˜N O w-洴H $=`:I"+Kp;g6fģb3Qf17O]wSh46Zo?Vϑч/+4913>3VșH?;cEKTjg}Tis,dEE`vb*NUѧL_xE :3v=v$|OeyL˞YʜufMvn)Mƞ߸AڠӮxr8YC09}LG=S5u:Bٹ;#*_UPANep@-,-.iz' p!Ɂa@ A,oHJ:k:T%00hLPRzLtr*aX]noM[4 D tsMw{l>A!AIaW0GłN#R\E^ *rڝ`\.M &'&FWG&d=mh ;=ͤy_= IJd2Ϯ՛x9NAY@,`Lp Kk@84 \'&"C0!F%+J)Fs\͠Y KfKd".$ 5Q^՘C8ǒ<M *4yoE.)M2@tWM``@+1̣t>dh:<{mրi^n(,id)Ϣ͛7hJ2)TU:d/Ld˅u>#W) C 8A⭋vEZALWE4%;ЮVP_dFγA ;-2qEo_g|ϲx/G| -@P&$'?sMiw}{Ǿmڼ wV!w1:7D?dz\AL"΂],<\P7]hAmh8:%IJi ǒ P![w\_\"A_j/,oٸY) Uw阢9$neY=k`oH~"0 ͇m;"aٮC⠎JxVoS 5ifΦ@6$ADF.Yhbz׭[N+&b~j^ߚk|>ō3^޵7P쑕yCksյοY^;]6 ,,t筯>WR".ݓJJ{?pU;}[ONM|;{p+n~,œ=$ApʠR4^XVk9ʴVGo‘v䉅%Db!^7Z)L>lDC@>ө?? %6>jubBN(#8zra fP@e }J&D̾V\}41]Bdg 0Ы+H̲+rIp6*+Ƨ %?Hȶ PJ0㣣dVE2\ qi )!?u0&痷}?l_Xf~rӺ/n]JWxD}ÓcCWoP=vp:BްAx^>?, !9q貦eBvf3>6B[! ۖ9,L%n7IIE '_8lAgө|6 zt{%$>=dA4ᛸX,˭nR*@P8^]#qBb1&d 7H 9YF'26{b=u|<9D$'(֫&^S_r|dZ\X^`$/ݽnz7~:|#qDAN(-94r&*Ln?mt&uI?8n;xZ*n dx5$*Tz*(`6졽yT v.+.#bٲEVPJ92Cei|_$B taTCzAVsf6l׶,Lj`,@MpѮO' †M"︔+WBf _3DzLi1",جϘ+539Uxf$5h#Swof"3V`8:y0׳3'VƼۿ}fԥ4V9зg?q'k][Pgoԏ-w=w퟼wנqdRCein%'vboW| <ʭvkXd,`DHOE 'C`7PAY b?L=:-mR1@Nuݜ$YZ$>TG%zX!M;xl4ʅ\4V_*=/#$z7{AQLd2(#^FG@xz':/F^HVyi*:wxPȒ<4dCsa 9G&'t:_@n]S(w#{nj,8YÊ"G@'Y<4e.7ؔ?Ӈ+gL tl*yO=Vh'*֟$ӏPA풅i$]rP3`{GKlؔtω0ڵS9NTJyN@P) @Ë!$ ڊh vȂ\?asCۉzw PUu8ڇ&)VŏŒY"O90\~?52Ni.zZm ,'LD\4Y)!kS 1 QlBSn|=~dQ-$/}QݲyC^Hdc>G=Vd2{F vE'J$;:B'{X͒]\ZI]I7̜\XSdu92R=?Hj @IW5byz]7z>4LZCT,TϗEJ5M)rZmwR{u' lk /eyr|_JcjGėI+BrOmo/DH4u~߿ZT~ιv}|^?vX2]ە7nԚE qܾH?SpS^Y|jS>`R.=7hQ}OJ;]\# /rn϶^K鉱j}=Cj$: hV1LrҞX' Z͞g3m Q)@ebS㣈 l+iMMiZaifeOޕós4d빙Rɘm)l<"}؀b 6P*Kg?sZuioIIM֬ᱞ8*2g131i{uqz[e\o[]JN{F^d qxZj:}j1O.kDSgbC}Id<@k##kpn5y97e~:$j5>H^+S{knWly[پ72G̫.:}B\[YӕX{^qUSEh[D2Ot.t8a~Bqpq9izpHC̥pB|`ԂqT[\ZtLx7=mz" z Y IPtLNگT' 6B:=z)21g&EQvȴ UFJQn ?yz>:x)Ě6]7!JJ&XOah}N0~])=ﭗgQ&po${e lڲJn5cm{]/ЍmݞyFկ{߻iӦ;vOOqwG0 p""% $)*~Q -䳆aL#T*zuD:M,15^T Wא N2T:VC–ɱɅ%͌؁n'T-14C6@!>jR!o%PJݙVY a_.E<]7|w;;g#<[nW]u]wݵua0n84؁",馛2 R.;=\.C,K\,* .;v#"/7`N7CjM"*D"~o#E)GYzPgyIj* t9c1Y76w{|,[l#HcefvÐ02_2 K=ȅB!?d.Z PS^e$Q2J,覙J&2Yn#BKa^!d"KyQ hDtĢTP f)NZ ͬTk :h!.=bظn _PlWrrutl˼~bMrx;6{n";?=v{K;vlo4v;B`x$٧SDeƏfx^O͙],8A _Z^|q2Jfj @ђ>{vn#pvZxN1p)f@T4O]1({?pT÷F+j}BGI%6a j/J]$POMMȲws5WmڴP ^WU8s۞gTsٓ(.ܽe ٦ȪDžn"#յ$'K|zð{mn\n_)0D" 6s,B-)%ɲhVQ AS'yE&l'rF A#ZkLZW׀OHbF{U.~R6b3 pY4M{[ߚf?G5j>A'L~ϧVϩ_ Hp/۫uӅBrxЍ^_i<Kb#C'@r1_ejM![E!]pyFc"u[7J4bL(JH.JR) G hH@LWshOo 6xNG={wĉO|sss_u]wa- 0<tx,ɼTcB$f,Ah=-!&I,sjwtȤZS>Ȓ3:5N )܅epxTtz%p&p)r.r`6~+w Hl'z!Xi!<]ht===}7nܸeExs0 0<3p41mmt~/!r>ὲV,,D!>ۉ.,~喫5R RgAVqaIF䈗h$3\BZ? 0}t$ '&`0/ L2M @ՕE>NqmH~˟=pd1; `:VE爯m/}p.킇 o߾a 0(rgq2V)x.(?z$j:Iv'buΜ#dϨAnɄJ-:nH 1u)"um-f˜Ӌ#p"RL8nad=eX:Wc'>ћnێm=rO}Yx*)ʲXP)%.^r͑E;*SVbLض=a-x{|nR.*5.lp_H5P$BWCK tАW+wu?xxed 0"hA6L0cX'{A!%{)Vőەz_Wk9tԇ1ފ%,fo\g|Β x+r^?׿9<AW Fq_;~׾zqZa.ퟋH!L_*r4>X ?R 0 '*a#+ v7]VltÊJzQ Ɲt*tDSI@ifr\%.#\6 4,!7L$xdUbe'f\6JsFB_+/96ˋ~6?}G?SLr{fƳ6q=rwNDaO^Pㇰ7 ?s Lw07(SDoj>>^g3/r'WȊ0$Z0q~0t2"K]l8 v\CO z)EXbYv-V#HjTD\H ~uɹMfl˞[XhڦD|bB"y]73+;~$32 pqx\l;B֞t}wbtdR&fAY2)0,-(A6L@+[Wd8$9x#&1Sf&Hfh왙O'1 Ų]XyS)4beBa ixbPxF߼_.thtmyu#mNQo>)WD6΋|?{غ#g[/}_}yݫ9a!PuA4m@|;ɖ8qɦENHZwVQkL\UX:2KbX.[\G˶yi/BtݑRat,I#ȇ1%;$Ib g ("c+%a?rAQo4W\;z믭\j 'oGn}:ڄj\ljv{Z ௭ao½jw<]|}e}=&;o¿5A3 ?A$ce dRIH&M\Fʒ1\FM)srj#qbr@q1JYqrr~ie$Gzat#uPH@WȳBvfI0I'doonwY̟cw}_juTv2k /|cpWC_|c7}%쌏09'7'l4ۋkla$'غ<)(Þ}a3g~mta O`]o_>?0 p']NfPJ|A ݞ6\}c'VuЅJ0R*B+P@8N7LbKf(xp!"JձIݺ-nW>8h+e* \d,&sbYNzU.OsߣsGyv ~n<}]_9z;w>==VzuW'o5Ns[y`>xJum;,Ϟ8umsI0 0< !|i+" : |\,'1Pϒ٪jG@r15M">aYNOˉI݀7?+R~qy5TΘD~|%u$K Ls0{~{MrE\s!1,xbI(@B8tiig|y~TӪr -^IDl{;sKLϲ:5 e=zH16:RIXP>A.K8cXd#IR&ZE<h}fz"H&ͺ>GIjXJF" n"gY|4-`O #Pk1,}S<~m[~r+>$>.O_ܧUXF)\%q};,&Jl9swr%cW&r,Ď XJU!+n-<~R!mĺA"kv7!5KYY?beNO_)J>iw{\)VA}Žȸjyo6 ڴcC!hAfxa OVE "֚ĒVoY D< Y<>V t@e䐊Gׁ=Lz|@N-ht;y{0۶˅<0C *{*u~Ȭ(b8jˤ f$98!SO0 m!߶}yKD?D W e5 0 爯 -O=~OUr175QIUӴ)bI?pdYQR1> (IĂ=Y8g_ȑ0ay t"鉅Sg!Ab;IWR>G_N j'*lƤnœ1!2FtS_<"_u5aУL&FG.*!{93ǩ/ɲ K+d%kn$]D ,= dvno]@mxGd"NmE עrV2d 1ǁ7Ёt͎K"oÒx!3V˲:yd29aga7D⧑!~LL.J!ڱZ;ёjw@\Zn,t >F px\ }v^i:iZk&cY*)2 UvKv maڎ 8㩔K5 0vl& 0ï_veV0 3jL=I 8nayF3=9Nj+Ul6lm+Z. Zx AȔ 8rLƑ8rYYKb0LFy4#IGJ\lq~~0'VFho (< ɰaҏ#߿Ya N==To< 2Gx2PUE4P'#ߑ 7"ɲ$/c Z7. t զM(liɱ p(8 SZo ɘ7 vm[ޞrH[iS6Lpєne1_%VJdT }bjxӛtm{pg~r>uݻ|:qC6M[޶seymQ44woۚvÖeݻw9xf{B1mA1G+L6NgZݶm{O>|IJ̨rܺuӏww3t9fVo߶ͥg!DA|CR)˟]P$_ NY jQ, t*Z#!] .l.W5+\vbGXLUFN&FIg}RڶRtޮ$I`ɛ-umuK#IBsѺ=}Xsp_GFKuܐQ ]q, ާ' G!eE3'Bkњyٞ< N0dpq,=]٧4>S옯|'&&Fm?U}/۪,$f^TFɑ0|eZ\}wۖ.JW>ODo;zyϿ궏^Zw^w$[?c?!%-?zϻ_tsWkΙW^k_p5CݻwG{/ߏۮ?7^3gW;?wٟ'e##:66zvxt!rQI>}ϵ;]HƱMiڠ#o+[6MY>Ί9x@k!aٴ,E>=0izQs<|.KA 4ˀ֍I8N <Ϳq_\}lF߾#t{ś;{FS_yQ֮M@ W,D{O)#Tz|2oXk]%Td;oxSX=m<?O˟=]{ʭSl| ٶc"zP=D^g!< H?]֍d V?k0Z+a/7"koᥗwCg;L6 ٟ׾|mq5}ol4{ݵ#OPxoϟu٣|%mvPhkm˳/j~H4m!( L}3g믝|$YpZ#oΞ5sgqi_꿟uYhomWDQHc7u,XX*S;jݛeq"%rf^(C>MӨanF/Ubdj<FK5 x(R5b0*QHȐK$݄`.%L)$L |E&> `0nbT@x'1vjG:nRI'g߻Ȍ+֟8}/yoz~u/vʙ>;¹?Ǒ阬u ɖN. mS/~Z|xB[_\v֔θ?vYxq<yti埸lܹ%m[J7}v|˭?;/^wm~k_?h\}:mg3# ?ht7I3~o ӽLihpr7^ ߼k! *.L^{np7qvG>P8 r?'5-֒ێ_0_Qa&pL*aYzksDLPtRĪڿTDP@Q҈n˫EvXwo.5Z$IAuZb( Gp`PbD, % ۔IӡjPn}jH>ffHu8 Xgwݰi4 ۿmn3ߙ*):`cW^w\uζaێ)J>zMa,CLiMs>5̙b%׿DMfJsOkώK;s>Xn6!#͞5HFU`l0r#aI'8{T*yG.Og==oo7| 7|o̘Ͽ>cQ|c9jq#̟7] GW4fLfӆcS,gck9-_@M؋^PM޷,Z| _z{,WSIU3oDar0WXcpCQ~p(XKFxC3t._Tj6رQcm֜Iq"p<",ȱcyE^d(Q((z nӜI×nnjlQ@kKVXցZ >͛ 80[TwWb+׀mJX8ŝ e[5;Pt?4c&|ˑs W_pVqx^" S54 L[ތqs0aͷ,o~mӦMinnY~os?ֶ/?deu~Ϲ{[Tg͂V5ߴi?eZ"&r^g0 _y_ _z8 ~r, |>#>o֖ %YVPupHTLK_e`4$ac,{ƭOP!#\Bd,j`b  q=BUJ.*4JpLʊ2܃ C+zBJ5pm 9AG=/~]96.^4m֬W{[6cF8(4AsyiO>c=L#?g?]d * ~znԧ8{ǿhL0(.{ǯ\zYd|-:%y*Ѷt&=eʤokON9ċ.e[_K/?_?~ŰQ/Yry_wmct$q LKR_Т%[,W2M,e4ฦt rlFUD,2{攭ۺG! P2 hZp`:Q2su\IoF7Q!ׯoooO$ n_~w SO 78]suO?5>n="Z~=2j#\-|@?pO!=4[;=`{p3d|_;101J)VԵ߉Ǣ7oCVku/J*Uv P h?D;yT XN hiot=#.ꒌL2`PF2e W5-)f-EIRM) L^a| @WT$ J ֻY`,c}EmY׽  #DBLܽ3wvmܽ}=Ch 8VWbPCX#rP9IpdKT DW ݀#{HE^d"70*PB EdtK4:]I3@_8lׄf*I7BIU&v+Jp1+uUѣqgY +uQP+w~u|(6Bi@!Z]p@&RIK<^A2 0<Oc4M/(#Uண4P}"`XB\J3`!R.!f@)RqTڋ4B6gґHRs-#U+ZbG (fG ] QkT&at]I{Բ_97tP Cn2bN* e80Z$H`$IXF82(5IvҔp]Zg|dǏ,Tkhz]PI (1fsr(͑L`L N&Սq,;/&l׆ ,P+MDZVB%\ ȅu BQ7h]GIQ(N;P4z՚pW2!Z߿;{.5e1$ t7I&'D{s cA"JMA#!`- z$ƶPFb"ʼ93T,+W(NۙN'˕Xc,!ꔌ#aTKJ*p >3:j/N@ t~STR%׻zsSJި \5%rUQv{v pTԷ}]4JYej;5:(՞Nwv8joڭ UD#؈jšBbh, q}|(c?AP}'h5Em$n@{`$,ER Jٴe; <E6mݮ4THSB]BYt аCsCI iQ5]  @,;E,Co * 1\ R(@T} yXclG |_>IR7HQ;L3+s_q.tQ?^,l{mcڏ}w=}7z}g4u_KC˶I?ђ_gANj¤ hXyl/ȥHx%lzqO"U2Ql6T@u{r=L$hwWVY4m,+Wm)qť|gI;i)Z~Oz%YM#vrU(g~>Fek &0޼N9eg̗cE,T6@xTu 0 2,4T p% {lz~KW`Io u{OCitp5@è %ZTj(h ϲ =Nrt2gIEeO$TܔAK?rj}͟cWo((tzO?w<ϊj_9cjֱן|hw[_j<ܥ/Y'_Cc3&oz8ĩᘫh=cqgJ/,9(˯?{u?}'^\ԃyOL/?Fǩ7:5XfضȥwE^XpbWW3ƍkuHi=Pa1MS ClK0+l;OE!%_ qtC,e% >3XpQ_@H(XdJ < :h MJmܘL^HˤLDCɒLW.t48b cZ +k7nnoɖȩXh 2E`JCۿE I<(տa%p qs_4rQ2=KTR0ifK~TFsvcL7'=gMQ{įCy\‹ߺ'>E0l4,gG1UUY&?K.rP !|ɡP_Jy7qe7E,[惗]L&+TLʗʠѢPq3)VpT@s("bV`QUcYiP7N4~lCU]bgxyPJpUZ!Racb{{Pw%.cC}6n簚[DZ}{|vn>Yǔ0,rݪ^IsIAx{26¡' ov}eŗ>8IQh˲AG#XuQF.$vw/ MģRţc["c-#kknX:u٠ JQeDC9.={[YFQA8  (5fo*p\PIR?{`CygP)}\Zв,YGe<@B~?z& ?1.H3H8$IΠ,4ePr,8R90[Z8b )GSxT 1褧w JUoJiP 9KțsdM[CA %ޗ'T'$P$hy΃rbFfu^~œ;u0,{}W]%;XMAbkyAc]v۱^WAEq'@EZє%dS靎][ yD U J>p((n:1RT5H Gŭ> &!`Dzbx`l{(N |JrY ryժջ`ͯ/&v2kB>毂 Qa5k: tSZ dC >TEOQ$>-]o4P:/@|2@*Wk4^6q_+ECls2P]Bq[˕`(eE1{PP\] Ef"a%-)M3t.M?M._t\h2[dڪ} <`冧ш}}&|d9Ҷ /2 ;I{JQ\h3N9V'6-3%IӟŗTx}EʛWwTx)LkǫKBpW' -(\{K|m{`A.4/"1lD5a?=T]Ҟ`#I(ЫÎ.o0 ^[w{׾ +)'\|΃CW9vP|=#E*Z([3AP$ SP0$AH[lD2B  hM4ږlC'Pգ ͱDXK' CD#a@"F4jC3vBw d<ٖ]f͙1,24LMIdjMbB$,*VA?5д"Gw;9`BXRxFnjg1$ʡD)GTFD9AiuE$@>:]GpLs6}QSTggፈfEo%33i۪*NPJJ$N'S( 1 PT  Xi @Y7)7T8b ,l09ۚX Ӵ| -㺡,C$$Qbl@~srP sC"ɒ,M4ALыfX8F !X,ddt"U;:p[vs4u 6/@WU1wv0|(8Q0&pirV< &Fb+`Z85dF9(/r\0zhk,+4M P‰ad @t&qh\8,*^?yTxpN4T=3a5I"@CPi, &)иx6FU4G81T2f5݀'J($(*V*_ˢ yh:}ƌIh [\ ñX e0}(]@M/#WŗwB@]Jl:  @r5ށ)6g3koR  ʝ=Նuڍ0]֦K[FQGжhia( AA3HhF;^`˫S ּ[uNi.؎y d~-' C,Y8vP*F=|!Th ݭذ *wt CsK~i'/tY5;`j( a{rk꺷e|ѦǠĚ4]FR@Q4 µd4B|t]xY)o Q;lxpI0\M;1lb @-Hx8vB4-8 U@';@G+l y!Opʕw̙_|joc!ybz+͙TYoxELe&) ̬5 A~p[TzѰr#($᠈蚡|s SUvqSnx#Ei4FS:eæظkׯoݶI_ݳȑk]a9sMs䒢(bӚur[&]l֢qS|b3߭ڸmw>>>{|9Jd|1CρC!N4!_("m5-4jpvIQAӲLKպ0:CaY;3f F&Bc}X,ʲLYX߽gfaX/+l+%04Z=*|U5P1JĀ !Foeykmn5ճMX6DRMg l5.:Bxc[ՙc2 ڥ553^UO>q©ܷ_.fEV Q,0(Y!l&`L"-W}ĀpYɄQKŢhvީގQc擄[?k/XPmІ|i VkdWe 导jƧӁ̫k_|[lx.찊د ?D8ʕZ:wss0PT $Mժa Jezv¢&N*}B-LΖ͛NfԸCִiڶWoܽuS8Rͺmiu٪иy'͙ӻ~9Iô1F) e#a|!ch$MѴc*H@ 1/<===r[nM7'NW]=Η8Qo_rsxKs|w'\}ŋ -=MM_>mjM%XDME!#^ <dTz~bE:vsSxEEb4/$Ec>rЛo41~̔)MQ3dWu7}".fŚXCXLbNࢠܶH(@_' ku4ЕR2 A;Dp ;[p/N4Eia8QD<8r+t;N[wGWQ!i[uS'y4t^pڬY!;[k@|eV &L &)N#g",]Jp Su]R76~L{2/":2灊"ƌѐonXڥhsbǏoD-`x,ҨעmhUIQ}Eg[0+exF@s1joy")Mn5Lrq $w24^6 w qAKSST*m߾}? ||,_R|ㅦ1--.i۸|Ŋ/J v`_|9P4( Ӵ"ϲ<_VJGa7`%/<2y f[wo'HF##puNafgD=uD1혀!;\X;Z%\ @NK`TښYZCAu2I4rʼnEBhXl*KClD+'O~gnvhCc„ ˖-{p8N;݋IYf9(wKܟzxݚM;APtSSJƢ|HE%$xM%jRjjhTfauT Mϕ^(*T"Jٶ;JCRdUի5ɲ20YJ(O0Fe8N}%{\{;$8NTe9@]p._A_R,[n1F%ąa@]@c-Yb5bn@ ʕ ض+j6]ǂX4 z*VULCltV{ܮJip s009iejc]+dtݭ:@NdD?+oUסQae+W\+9s]riPXbF q< P4(f&ITPdhZ4l'ϰG~!`$,$)0WA0 TO!iAp~WLӪhRXl&H{xxsfΙ;P-.TE\/V'#}9&qy%J&0J';n,˴6gŒ"+(פT2JMVYx$EP\&t-\588XV}tyt:F7e4F#b`UiᐐBRJ88r2 58HRx$*ySD\^jqŊUO=W=cH4z`V/}Mvxŗ#{&#A˲`֪54gJšvR㘦prY%IF>kRՂ #Y ʡ`YK X"+ dٺ[JJqz,i x]QD$AEQQbr\H۬u \6N)q_/쮉xmh` jȲ[^K}DLmFeQ4B#xoP]FŃ^Dfr4 ɨ?S.Wa鎗u{oKSZ40KuFeiT]Q`{]# ETm>qɼz{o8c.U6>^{펵q?x`8_X 8I)0fÐ]{&,CyEi (T *KxbLc󊜻IGzgɆ9+r"qdh "cѭ]=9+,d(K*GpUXM,뽩(>E3koxӟ83 C/bknu8 ˱#ED`2t._Dy\nJSQD4P*dY)wufҩdNQbgٕ`X Lw_6Nss\88䯣N!I]R};[̛ X˜YӒP~ra.)J&GI6n44f*1SkYm¢h$mfb.ghڌ oSQ@.d, <8>pHQU| A [Tu]>F 4rvCie2˲t,+ EUUMih,JTjiZK pwE~PehnqCBPB mˮ#P$M7%YX2~L;ESx4fƠ(Z|#%hdūdIg` P /FLζށ!%GK2,CJ P4 L `-eZU'" ;g9aKa)_$LE3w)[̓YE zM8ŽU_P7}C|1j(ŋ ,.`.b"I k9hcV#*oEA8ӭzPtS:9<DC"`!j #n@ ؤ:а,+>\Rk/]/=eڔ).i`~<:#u 6jMx6wCIPUyordW\i(s%C14y);yb)4=_mxΎqW~#@e5,~/xb&"1, b;C͜Z__X$ (RD@P-۶{ \@ЙfG1 S徾FP>~577 O34(kAaje[W>+a`p˜EsjȨRC)+6*9LE.uYQ-qCFC\$|)gܺ_ Dze˽x+W`F$zetCeDRdo`&:iM[D$7r"X(3['I H$`n`ˡEBሉ鄢m۶mذiorJO<z_F[PP(+JPa0RVպ+?p /*TNRxDΆ!"ń,Ck2w#Im9R˱-`N0 of3d2B8VKuIF9XH2eX4Sd[/y8aѐe͊C[wPTW2. e^jժÑHd_pP&M~?ҨYPpxlk/ƎkMZ@` =p(X(# DZpk .Lg9QsDZx4)FFR ϛ`zT봵@ضͲL`|ei0ZT  WմLZtMVSS)v±mP*N "Є5Xh-#yU_? ?qn6saeYfZdYiѓjSw3?xIx`o;k(MYEN67d2^g_V߯)6 PX4@hj4hka%I>*Jp|&X y"$/H/Pدd@4T") tLBSd$tapH;șAS8tlM{XSf}n%{Mag^2ԓF\p.m߽k̹K'lfⴖnZøjXd*֪$A '=wG4s\WV-<_ۗ<C-=`gzzzC+й%?ʯK|ц*0^#XNZD '_Au)I+DA(E9GYhFQD,~}ŗB\.J@TVR4'fqw> d8TTAyzN\q.cnl%NZ~vʿWJ6|ߠ^O'r/>cxW/=tLMǎ;yO}a/1c'yI P.e]HEwZqO=>qԍۋs4i<%8:^86Gb8CHn躷o96 E \ͽ_$3ou6<20ư ]$`0m$g|ŗ;rYt2_*!W7"rQIڦ4hJHxL\U5]Vh$DP]9`Buq92$#pG[&mx|u8}I'rf'9ܚ>efk"l; ~>}76>=HQ:^P .ܰ[Sf^7vM'?qbAAfc"M83Pҵ12 G8uQ| vDTVUm\g{6bDZtP@ch(d"P [`g붮^[z]?}O}}eAQUˆF&B1t}t5@ LTI2PPhZϱ CLpcDFy'?јi'_`_/+_//]6;tbʔ]`pۛf#ַф 4\pI'z入+H4Kf֭[0 tZ'_qO=28.tESu!`ivGBX$\T7m%6%)WX `]o->`oOM6le(ZN8qٲepI'Om whלo&HOmذk^i4`h\{@H BP$r Z` h\(tt kTo@eˆ߆ OH.b!BDArUӲ"OQ4@ˎI'u V.W3+(9Ϊ(q6vp2=y5 c;uYp)p_sYzƍCRЉ w(j3:AA-7 Inj ؎VM׫z('1AݔN{È0!"jנ(ؖujq*IЙrYYQx'mIR9 c+ZRCUl,H)y΋urbQCuTX`UUe=s`PC^r=pOHL7 G~:lt]jβhEFR5Tw\¶`>~rh4tf87f1p‹f'IDb#E*fc+dT*nڿ7񮼝ܑ^ՎMpp'ޡjZ!5+nz>e lo}*pXT 8PR簖n6yCn0a]}K_9sUW]忨rICUܰ5N14՜ IP7E5_-;)hM7i M"\仐jW3X$LcoqXf Ϧhԥx<ҔI(y^+FRs<֭;h/^'ugggXS8hmCOZ f{o?p/KXVhk} ^Axu{uqGYi¤XUZ pxGOcb__#,x+oC=}uE992&RF2T@STT>_*shL?, jG+`?0&Mh6LGwuz6m;N* 9HHZ%@p%ǷPYA`XfW^$z͇։E3o@C%1cWR a7]=Vu2Jgپ?'bs&m>Ylf?kk2hh`~qA>,UlW<= F8(b8? *j,bh\jC\޲'Ȏ+WcObg-;<s++<#⍢_yM,E;cx^*Ƒvip̓ibN<5 HN>3A6$)ܶSBED<~S2E2ֽi[6 PF᠀BUjEKt]kqlʑ3,\uRm0d0`1MQPT} eo׾͞IB2XL "" .(WA+WыWwիCO\@1 ,I {2!Lf鵺흯:L&L2/55UU,< #0#@<>_,c4(ʡC'^P(TQU4%>MXCK軲o8lc >>tTcp>ִiIR]]]O= F^|IiT~Ye656^rEьMX4NcO 2&8}H<-%W5dfm24LSC ^+Y@Ѡ:Q*hn* hۡ&CDP$1MB9T & MSHNX2قu51X>I “O<;36mڈ>ĊwWfVX񙻼RO7!qwߵ BOW =D]]7 N3KC9 Co;oXiFW⥏ kƟO~g?ew_j I&TzzȂ6 |6W(K In=* P*hpx&$GQl8ACVyjIy&a)YVbM$yg3O?%m[Y54 ~(8>;8ЅsuƝ[/]9nWo snr@9r-y^ a[~[G?(6FghY&&v'(iCT:'IK$ iU$I7L`'m"ɠ`c4{s`1TLGmy2Em߾}ͭuuuXCrBoN4 pp7`Q\.lHF;<ܽTf/ p0P5Dh}LXڶ.aa7nj?rUWGt9vY4^E.)YZeΙ3דּ?_1w}g,re-_0.W KJyQۦ'WsæMSڀG= ap:8_\Т>/3yh$\*IiB7_,5TmI].˺ E*NJhnz//%1>< Д5k\vepx&|5 6驧4 tnăNU, ֍ߔ|:qJSMLĮޔrؘM77U, Ǣ ]QI96Pd4J}xʭ]oZoZ%7|~4?Hc}bnYzt- "#Rʑij{^/fX ;+VdAaa/f@90e V y2lB5Ix@ɰ@I%Y\ò4`lapL,h{9hWW(޴[߽7_h9V6"sL> 8-Sw_I*nݺiӦk=$gؖ?=oFGz:h@ lԩׯ@݆ 7:)[:?ܱ/}?~m_~'Mʫ$JX$\Ղ&3 \vR*m45<VE"Ftd h+5rνz7|XU[S{̖-;,lnj:0M{{ڂ1 +RٓaPlH>POdE1B[>xг}42eI A(˙|3ʫ+ GeYt, Khib?)BkgsrǴӛ!Uizʿݹnwj[K0l/D4\m +|gO^2gUCug6kYv՚"Hk(_)JiHé>匁.&I_]7|e7/n^<ږBd`΢~Sc7bp"k-JӧuttgadW<`BnݰzX5|~Dgwϙs1een'2^ǁ\rg`<^!^<'%cwĢ H$2M3L|R~68ۏ<ŅbH8XsLfzTeZ6fi3W5^>/KyWq _߼krKyzӯNkoHR"=Rvͷ\S_bɓ[v*p ]YL_!qpƢs<^/}/[:DYrF7nxs|8{/qioOs/U7xԴsOOO9FCŲd; l}+\1Oҙ\sI>v@@(pkt {{b  /@C}|wq;@2cēML[`/,ŗ|Cڂ xx}IUB~ jȱek':E[ua / 4o$4|E HC,@M1N˧7Dp&_-Æi}i\I>IfYͲ wAPT@'N\jI&!";j朹xM,-X4Ay掎3f|m; sk/MWN[`UYvđ0E_P< Q<X*y-[tUuf8&eXur¾Z`Gc >1Iڶi,[`C\{+: c  Fd)Z ,;H,M u *F-=P$Wujζuۦ@͙Xh^94]}51*9N}ax5@ 0k֬k׶^8 3g 2VWA (|ĚpNP4lKsso&8M80l6 $X<Tw.)@LáaURO ];eɕG{͋H1˂ZiI_ؾ/q3<|{x3ǎ+O3BQtYRjZϣU͋ETDž$h O,89$/ >Wd }+W>7ߕ뮻ѯkwV<9r"{'Pó G\䶉ҹ&ҟ04-$A,C{G)e詧``O-zM7– ځKiiivɇ[TO!aa~ *3$CA4h"IZƜ4e{GWGWo$<(YQbYۏ^/ A D`(TV* ,K(5@66$n'p?ٖY}''˳.c <Tn.ɋE:۲rMD_*kz0U]#Q;5XN~{{]^_ɲ|wvvvH޸fӚu[7lodz'V5~^Mc"`Sc=jvB$ ER?ә\-s'O>enڨlm;PSg< 5`A8L.ϱ`eh<+# &k sϕ%)޸q .pAYh?|"[,꾟uӗ[_YԸɞ?,)*dt3l4 b&Z_%V588Jx!U 4Ež>Q8Nz~Q+24xP\)qiBeQYWOeBAA$dpORmdg徾+?0|4iҮ޻k5W_!rնr`8֊7ĤV#ε'7J[㻨۳y\D2%IU\(W(lMAؖEj*#uX-[n)V}P((⅃NQUq80<]+*P0$!z i^T&% mA*m?wy@bf^Cug(_ݹe˖3<+ w_x$˄7q5n?)UN- s^x<%z;k겨@M%gY/5y¸ Ȋ rsdJȑRqlT  r 7sPR45AS,8}4F0kH8m۶Ua0Ȅ~\s5T auv[dH^*?Ͼ{>X.͛-K5׭E~I>Ҳ+V4jL1 ʫ P]8 (_T5|^lMּ(۴EG1A' yء h`'hc>ϴX…e$t`j(PuuL} uwoR 5ǰ]Y.O~0|\jգ>o}nPeʕ=P0Zl5Z^N ?ɋ} A1>[ߘZ>Ò$_IɤaM/ i'O=DшBXVT8bw9U5Әp(HKc|a?2pѶRY >T(ˊ"+u5 6mB5H$GQ;s !g<Y Yׅ0Z&h42eILVuC*-,4Af0t sbQWaС ' /ӱ*(·P?VyqG``W>[o4Л/豉+d$04<$XTtd< .6hhu P:ϡ\m[W?]w[%"BQ7oZWWeL ›o9i$8:dhJ.nqhHszqYhn &֒/"k;B:iRM".lY p_ */$QDux{Z͚E3キފ9wy P.M3f34׈٤H|w-0Jf~KUWdQM*T+ن?P'b>7 Y. UլڶMzELBwƍoJV>L2&6ZwǢa]TKs.Lk4H3pk%I|e"R/7LnOG{2E,RE<tڇH˶Hz`$X^VQWU䃠K_PK(v, Ld0QCs,siL>=>p_voEGu28gP@֭6m( IZ$<Ƕy34MuE8{@ W:uV[-}|C~醛nA0͒O_9v˘DžC!| ~le.P&$Q6e<"OJq<۴[y')O+ Spm[^Μ#`Ι3דּ*n^@oY,ˎ#QddC &zY .Ic莮|^zl:)Qm:Q޴Ve93[zJMgts^_9ɳϙ7%ߞdp݄gy_8N_noЉ Si JdR,$1 hI7ο/^5?_Us׿};Cc|@.8 U--ykw~m]t¶W_۾#]< m@y")J@S2YJ(pwX1LDE&]I, K7P c'!.{ i_qWr^{nS *PozuN,Cjhɰ@lYVL yή^IFw`x,_ m-/<2y k `>E]ԆJ}|{9[~O[9g65[+qT4'mlNr=`]u]tsqdKqobvWO83;{ּS.K>mϤJ8sVsڄ_4*mxgL̽0`  "ڄiyQ`, R>a܇!\"=y0W/dP/MK|;SVR7VQ3v6IVɟ9ӛ{+|^'Z "0h땈F8Em9( h c( C/}误ѩE ~D8 m}TL|瀉FAC+4 JblO? q&G3b0JUėޕ9u͠sǴiݲ^x˯ɟ}M+{ㅻ``QU-r9:v;K#{rm8 %E36XCJ [PRM b8iKR& (Șej1T]`\ =X?{?q'9XcO3rntM.O:NoA'̝2-*2e͜y9nek/vĉV"bҤI{0j朹xMϮ gꆠ S7o1cF msY_m?HN1IeI`"֗JF$t&u s(3V%~$e־^D*k֬|ܰac%w Ù^6.P U.NPɓ' =LQ(SJ6-?o0BЌ3N2y󜳗}{jc= B|ѭ45[Vdxp$9X1L/+ ^2@j*KmϘ6X*a آU!qu2u]pڕh^@Z-k/efN=>J f͚vX8 3g6GW^,M p<?sa0ץL.`&Є~!>?45yFf>g{l5Ǚ7B;0kW=>ckDŽSO]_ɰTtKe)[(B0  h*n(@u4M d M 9U;\`T0*~`^@VDKP_M3%rY5XIRbdy7:v1 Q$bQ"  -bVA+g9˶נ;is({`r# L~fc{UrW_lZVWL@ǝz3=im'4uٕW__?ͷW;zKڍq jz"΀/|;1Mӝ/s[gwc]6_@Pl)PM0E~Ke) H8-ƍ6l7v5X *_wUM7~pB/H+/܏S9*IUɇ14i2 04VOeY> R$YK `,G xrLcG̓1LI(L#CSH8l9]72<{eI&02pVjphT'::p֜*)m" m9zyִ6G> +ފc?t6ITT9qX =΢:.ڷ9/`j4ֳ,TPWL^KYvuK$ǫ0Ke;~O 2$˱AFBl(ʂXvIV~A(ƣa"K$3W/K2Y z E3޾l^8Xl5wy3O[_i8Q*Y(oIMϙVˬS&ѾT:A~˲\ӤۛZ7h~6T1xr^HoF:ò_z񅚪ViDㄤin/<3|wx9%>8/n0kگ~_yhP,x%!v'd2,a2$p $d bţ8R:wyARԂci mEVټ_,u3/(jQGjgDE!MP{h$RFaم$WYł04SO.{i䉆e s.{]rp̡J1&#og twyB%8i? "8B -KJ$͍u4'm8hlE6X:TH Z0Ituk<8>O^QIk|똆",zAS(Qƃk- f8Vɖl{ ]T2v/x77=s(5\Igpd06hFx% $qH\#:HB?, ꦧ?E3*b 4Eb"I GVS;H1`eR))c(&dB " Be ,-IϪei %=azy!z ;m&5{#tm 8}|kɡJ!t Y0<Ǣ# E(%g?zPsF@)@DNx`PK 拄C=xnʧ[G0-48P M}Xuu7/$<0З~('yMQ_;cc"t (VQ];C(; X |ÒMlahz)b{kyC"YTܺRP /U352 ǰXޑ4Mןk /ģQ,s|Y Z!?EbIeE ew†bo.O4 HA(ҁ_%0r 5Ti gvvk&ּb# `Fj FYHTIMLi;iӖ~ d``nn],cTKr+UQiADT?5+P5I2 bmRLh24ƺ:#x$"I멧|K=Õ%|<1r|[kD<t]7ҩT& kS,Ke 5 lP.˓'nLӼYQi< l#X2& B@&)\ 9b#ϧ`b0`GFNX扴7vgy~kHrȊ뙜iSc"*((b62w$,clX# \Iˇ\մA/ uT,T34 P$ ii%I>ʲ!9ݟNPʽeFhPO8I`wEe$Eoڸln 3ւ.`#5!מ k(_Qȁ @Q@R71Mt M`@uP@ Ea IǑd69VlG"ܱX @:Nʒ |d|Z/%aZ4E9EXhFx46qƫWӧWݓN*5/;wyF2PQ@3pKSBMX&PCbE2d(/*%⁸z|N._phs%8<Տ|nH!螪KPH^Y բr(E RYlxx*0eR ƴb<_.[SN~?EQ;nݺvO|XD{/$ҹsvўN4Eɑ6yKIPeXC'n%j&:FQU-7˒RfSi2912M BUC~c* k7onmm}TB7ߜ4i@>]Q`0r9`K4{MbO0L7 Dá\Aܲ &`UU! fsyʲw0, ܽcLo<18a]i(.K3GTJ\/8zܨ0-5Z>"P\hwr{$]:JYǩ eY#T LIŒj%1 D LY. SijU[ۤZw@Vцm`,YHLw޸e15#GY͇*3 D/ݮy Z`X6p.Wg8iog*ԝʶHM]wݔ)SfϞ=h+ 5t*sJ9aKg}^=zuoX?xW}nH%{23܏DӲ~t4@P[(HF>/&@&GQ$qh\ >hzn}֫|oR jcmς! hm?eg\d霁nݺiӦCjq" ٿ=e8Oϛцp__O'(bQrԩׯ@۽۷|O9eK6KOZl vǐ߲b-wܳ6 0Ě 2$0" 2/|آ=X#`]2\%oN5mZ[ ,"ToY_^^}oӯ3y9Dۓlbҕ\p1 )MY :1ajcT7A\I2LE.d7KKxn>aE^3]5}ןo3 D<\i3K]%W_۾#]q\H7 ApQf6]*]*$Q,,z?3[]u6=+a0,Y~eT<.;={ά}˱Tۧ 37[V7qCys/OWyL PCQtf8JUlx0Wt4fH$ TXJM"A7ށ={= 7zuy3>zk:5[+qT4'mlNr=` 1]aYμRFs};_ x)ٳr\i8r_o-^ykFt@+ݩjZA6>@y:v2,҄gsc=@(zU+ "08%uu[]]ݦMx >r9@q{78SBrO=cZ|E6톪ᤘ_}e>^IDU]y[mMھTu\$kiPEA  ~@5ՙx,hI$E9`eYͰA K0,O℟ x Tj%M!s2)6z gLm "@œ  Ѕ^ps[_~:K얱TfтoN؏߽_t,fV#%-2URŏ|Rfq, $cQ w͋nTjkP)ъ+ Ų9|4&Mk cGG EQ]tQ{{wy=z/0'M+*1Ġ%XërB r$ɖel.2iu۷45WX$妳(8C]*|UY6fi3W5^>/KyWq _߼krKyzӯNkoH.aYVmc+Gek7̘ܲ6'!!E[Oy^xk$_z׷t8In_W{qFp'd?XzA5u^{'S[{Y|]/59 U]$ 淡W v|=}1NJŲ,09 S0aB%"3]3<㽜ǂ(zwoh Q-)`܌3={~ ۽9ʎD"H(s,ٛʀP[l[P0~pPL\f8Mm5+MY ӘE^"`Bawۜ3-O;:8-* .f<8AP'Z .=\X5s]/E]cuC ͛1cAb'~Qu?5Ţ:Qf'LLh$T_T$1 @Ri] 07pL  Y=njg(x6Fρ<2EhQ4/WΆՌr_P9n'#iˢɞ˔4D?'XMpȷxQL̘8i[gw\aAygԊM u:{>  z^,iP5}kX ~F+Q M E^{AH[62)QZ7RY9wF\F ӧMEyMut-eYh$S;{ݛeqe (6P4P_/^KfZ1,+_*Rc``bD"&=ϳ0X3vl ʼn(IEQe-Gu u\C>JʟX8%/llDiY PC39U7T:ՉRAโH@ `X|N?h}CDP$1MB9T~Քpwa?IR,Ilq캚X,Frima߾^ǥKΨ(v_ok6٪͉~A6[L1PiZlP {T2 =cohpx&3}(5l.I?$ 3% X ɞ$dmOrVx MF~4(FJ xF'DH~婧J]U̶}$?1WFXP0IIGeZ2%IFM$Ғ+Y}[0 ^`P(4;<9o LD4ݗa{SߞeP,ݢ 0_ "4>&L{^,Z.aaxD>>\ߏ3c`W1b>EUkcB|q:_8 Ôe.hXҙ<K%0 P:@hvtEAർ&_t7HR f-;<+0*WD;n|T}R7yM&Yl Znw5zӲ,A^č'# ']}1貋.<[S{}7oGhImpXѝJgE8,KWIT\`FܾVzuoe LYTE2 " l&f I ӄܾI OĢuYIKtÒrl~z2s|;t} b ـ"@"{ Ix  kd>r j'I( @W ݀=z(Ce&ߞ(4ئGL8O&yN\fX,KeŃt6犥x4"͠~'$N؎Ζ-ϫCצOT~ÓOQA^<8rժ+աRaf1sqf;^-jw< {ʋmY[Q#}uy\uσ c]tCohnU@ˡɱ,I+V[qRJEIp]N;x2 %14 K.\0ׯXpċ>ה3h9._~ٳxEWtg1r| POx2 t4 &ҩIFlB2#+ <,C^}.g} H$RS疗Ǥ^Exf\N H*۬d bР!GAA8IcVi|lw@CL,>pctDm`ff+c0wa'{̃8l( e$,A <FaqK #۬/ﲫAup"sqs-{Dqr覱7կc*)3 GVllj$={=ڶMbm9DAWt#0Ԝj62jnm7ds 0`4ctԁ e5D*{D*J&@?sp%l6A:A`H[2 ,3ՔiiF!C3`(\[טL .vM:@4GsKrx4{i~32JܻK8)%뾜{1ن!+21 C@3 c8CӡppB]Pf'su04@g$]tk@.nIc~"ԽhiCkܠ7 E""R?2deoݞc]Da*+(D!K.LR߹<$E5d!De'H9Pw]}&x}ɠb 4L:<vcU1t& nO5R44 ЊY?3<{z HBʫIОv.. d $hDctZ Ec QHae\'OWw©Ht0og^c{aFIo1D3~hIaPD9CRDZ4j }ŧUY塇|FY^^ͯ:o E+/kii~E.{Pϲ(-;nnGzsӺdQ8|Ҟt-,(6m,I'4kXP g5EP[V,,]BĶr@EͳO{饗'w:u.Wnm>n|?(fJƄ/p1-MAcq kɄ1FI:?1f>/Ck SA1V‚d:,WTU\v2JJregr#+"K#y?97PmV= FTUP#V>"M1d#By~e%ns{]C]C3x(E.U@tZ$$zǮw sŮe7?^:̣ ۂhCTqaM@[W]v:q]S;=u~ |)9̢(g/h`Xir:l$RI`eER_a;kbd*Dm4j}Gvuu87$4By|JâkӫFE7Rf\\9N3Yf,mڼrժӧK}ᏉmVM7=s(EE1N$Lva٭V ӡ@pД= M$An1$˲>/C/=0X,1fh>l^S/|9lk;L+}v{Ueo= .KFL?z}^ pL43*k?Y##nOdd ȊaZf0dYdWݺ- G^\׌D^v93>e򤙓'G/ lAXZ2o䲧_~8w.@| IR ;bj֮9ӻ:̀d"YazU iI_teW@Ht|~Rv+Jd1}@ 14MPL(j2-&pt7%5)9W:y7ZEK8ð6۸e͠'?>]1Գ>yTff7h YԞ_Oq3N:iӿ(I\' nW B&#(X"2 (@%EҲ3Gʫ\cI; -bx_BQ~R.;֡UUTbs?f(Zv T1s֜3{|hiZCtlG >EqG3,4 د o- LlphM쒿v0]de  =()d+WdbDRS6)_弹iaC_}?o15`(.^{,~?($֢h‘]F_C1{L?X" t/| a=JG(үTx>vAAEFr拤u>9<EXfnjSgXҢ̦¨0sILɌή\<y=FwGd]ֿc8,#GqĞQ&n_ea~ŜRμG1($ ڪ5ɬ X$+Cm$[qBFtPeh+I@ %?2@".XओN,mmmSN9Ͻj{SH7Q [R?9y]KNjjXUCd+'ʯYntߝ:[,"˫O {{M/zUXpڜѝa 4`JȒe  gY)AgVQ^_~~%Y=]K&2 U#NpMլN=~ң?SӠ9t L;oe$ŊT^~#zLӚfv:4$4" /8xu$v#uBQXTW3*8IY]kWwƌ20n%{n(RA}ziѰX%BUgX/҄*IL{0W`FfdFZ'2s%H]f|XTRtx[[yu 4ֵ֫&MfQP^Y:@Ϩ,ۆ7 M[StvT\~LRER)iY:lH*y *cٴͽ-Ym-x.x2)p\*ASFNQ$+;MKy."QFE]?bw~=Gu)C8]b}gazA+ :e7 :jۺ^/|>d`ݱzu ӱƯ]5//oh$ko\b˳쫥p)w1axК6 ~f_c1V{ٲep.~WrMQ(N&_͟?nXզZ`X~W_ы$"5hxUڵVuUU<{ZXv IR {^]ϜN@y_}M)Z"PI=h+)ieMDQǘ)y T L&ڸi  e ZQQFA=q:hfף*rRpuytTML]"IA=r;juFQ0xXvU 2 j~)KS($)hm&Fcqc|\;B6 );c0.b6_&0߲;~}?|<@Xu;**׷ UAJ]{}S (]0h,nfcピ`iPm\qQ^[׿ȺnwOX\。c*i}wd> iQλ0?`L 2 %2iig^HSx,yMR@3|^7A!y4U9"a-[?2먱 1ضM"n5T1v [/~՗Vh=n„#2k t '>SOohH#|%?ܼiM8twh8ԤIǝ{9: 6oW^yٕW乹Ov]'>~'HH/M6~|{/ܫnW 5UF͛w/{h8s w/ZŭӦ}⯒81 GRLiIq~PSQ^fZR˗8gϞIJiglټeVG;v=H8sT7VpVwsOor g())~,O),IS$iϳ&0PDevq4_^fh@%^{9<Ŝ   R)d7K$$PL#HĀc'; X( 'bkV]zO-/_Q{plok4uO5A./^8q '(~k) U{]WUWg2*П=eZkV{~ll؎.-ZWy@} ae+4$z<C= ($Ɠ)<-Lh L^wiaLP$ Ls74QS77h.%)֑H(jkhnZ4 YEX,8!yIg$[3؇v{iN8Rf% PL&a-` 6ꇏ8o°hg3~٧/<ƍ v\K/nkm6mU /,,z=(3u F*2wn9h-~МJ wdz(^ ~u4Pf1=G* pR0_] "sI{SfSFvC>b"?ة M&-€$!Aq9BRa c> n L8dGGb}]Q}O.`ijdf҅J!mަKJbJ׫10p*'?_V_E~4h ?w0^{O>}?<9O<ghz!h{ex?~jÆcnj^ೳ#'QjذùsϾ{>sW (̈CfU4[Ǣ0- /ϱ#+cP'ʊ +ʊx_gWe: 0\^Qѵw?[B,5rp@f`M-Kj{*inkE l0nDI GTh}ri/<Wh;kVtX,4"75!-I\p+TA[[?=)w;lUt)٥(2ꫯUgNSߴi3v:p0N{|Py*l-JXf;.[݈/[7'ope;SOv8GYaok+/uk֍NM=*nx+@I40H$bZAH&zߙ,^=~E/jdzZG%8h ".Ʋa\z'Ϋݲ cFqiG쎼>.8p@_ȕ:}KnM( oF:YDdC!E_G2 "ˇ?;ʣc|abTQa~AmimgQbF&If|D" @(T'+cGSm{<RuEs~8rm/3 GM]ƏW]](%Wr JDL:SЌ P`< iiJ"Tn|ڃ!@ yӍo\4UGf3`u nf&z/!1,X2%XH"6]p,_0@BKIÑ+LM}ȼP6ׇC_d1h &Z{֦GJ1Tb-y 2.rCLF!v!?v &Xhk[{40pG5!~Fdjr /xtKXGi2 6+Tن,k_-s~80B. r+{QaC8"[@#ׅ (X9k" |;'|z+[ ef/ll _QS{15^|k?`.:]_bX?Mpv9hȡ9^Q^Yi1,# EG5tnUZ#;߅qd  ɩZJ)T"a-.8_xƟ^7Kʆ zq30ys%Wb@N22S5SO&Mͭ>[̈ JJ1^?@ۀdDĘd_N z8\9 E( h 2,~s-MEVU`8RRTL0?yb<ˮ^P}Nܩ4?kjBrn3eA~Y  cGq 'M4!޼fKki;x-bPE}5[H{#_vcۇmP2f^g,8pG_ t(,,xM ympAX ]udB|UF*ҙH,u;)q9`0ʡI1αGڕ}MBb%26~ tkbZ$|`ewq% xtgP5#Z4%GF9pb =k c X .¸I^V7!@ ^iW^lތ;4\>8իk⢘^Eo.Z%oZbYgjٹ>h `{F\雂|mVPLU35DZd[ijmEB(C-ۭMQ '-Dave=,^7W+ '}XNPt~ u> HȻSʊjؑybwB @u_ fp!:>:x4U05R Xn7QT~4<^C fkk"#+nڢ[T)Y՘>x񂑣1%ij` `* 94u׻G:*m@ 8v4Dɪzw+dawhȂ9di߰)2)g6+Ҁ/axV(}%~~\9lxc1p8n&$A[ fq9My~o<U6 pK3CFncO?W_}YguS_n!mkZb&~~+uqYKe۸o8nrr"ax".Ī3Lؓ[dMnMBF#h$ _QZZܼ<ԐIVc|y~f/64kPF4p/9^ (6^^aI&a04=2O,[9(Ʋmߑ (Vt,˫+8EcuiZZ@G^=Kr|29`r^+-+҃|vttu]kY,xlٌ;sOxc U!N)G?PмmS;kK쯡lH8PMwP.wù&1nH;*ijP5%MZ{4'_|fifR Ñqn=RAb:mD55kp"}?^7u?A*#ütם%Fvut^tunɭJӟ'-5Ws QU]F38 ؙYn&I~+CqAMR( ܚ<`mV`2i@}Dӷ.Lb2ްSa{W*"*(HRL,l?@@Q*@A+m0İ(, -}$o> >}ly?h wm?#$ :-\[G(Z4 ʥm)7+XPMM,ưtRW45i(flC#LIj +Dv9ѐ TL xK4cv@tlÝ5}]u3U#2zQS@{RLKxPJ` }Đ0b7fa8fUk7}:(4DM qf :h߻!$(.Kx9g} >nsKthJ&nYKIz]XK.nO,X̀s Ht8lJ$(!"d2=tP?x4]C`3-r|{ 5T2 =Ϻf8`(t8ˠpaVP+x `瀧q| ǿˌ&kRKETM24|]'LJGG;:uHQ#͍ HC4?Ȇe0M5a6vf"5nؘg6DqUˡaF8N4aγj' `-3 X$Hmx85)a}SsAA>l8O>cs^ ;`֜('vsX[ZZ>O<`,UMjz2lss \{)x41i}`F"CMϘp BDTQVY(2ͭ wk*-, fAÅ- (Q|M٧DMw0 `P尗°_$I0 ȍ bāX|>i(d&=r-[6sÆu;~vj p8Ո g}҇ګ}s}p)NgQ2Gǝ'(nㆵ1rvL$T bl^M񤪨 Mm6=HdD") dYii"򅡰NMe@-}J>H$yt`'45J7Lt F pC3n pL D A˰[dʂP>e(fi|ihh ~'m6{ݓ()nI͛;w.P'dis7M7tl]'l6MhGǵKcHU&>h<J-3V!i\z\AGaDc 0^ 'b#Qpvs I 5r(%2f1Mhᨰ@# #6tA? ]STxoV.jX% X _jf0d($gEyD2 Os@e`<cXN$`T]veȐ!_[[[7m4i$LR}_{Оsiq5JPsɷRP8*|~ٴ+M$ C/P=N% ^KTF4X{s:L`6lA%-w %u &,[zF[qzce8F٤y :,,.Ӏ swnqDb$RC*m <Ǧ3"plVy)ܽm8κ=eqY*0T\G_h- D$T:'IPcCZ*-Ñ(JmraAL`Pغzxu%E*h6VGr\ BWIWb"e|JFJ_q# (M7dG>:Ю5R4K:,K4aȘ c޻)\24p \g,G-W*?xMpo\8![L%QTk 8\T]Cns;hlKP wAQ*j 7no(Y*(f9\5kԩS,Y@v=.+((xǀwf2hg`2{Z[[&>T\G_h 8LŔ2 ihӁRF24Euc@ye+T YQx{]<"/k !>nO=|HuG _v9S&|ife$I2K'w)>y?zfe1_^(ʺiom-fڋJK[k=>;;5izGCqgiir:!._C˰`DZmS.åMPYL6%3(A0j*ēIWX@ Fc`0 tؽgX.J*+p:>ٓ&'ӦM:r$r8`Ʈ3ƾPPsɷdcENr1mVD-;WPlB^H$ǰH$0E[C\pݨy#۳Æ Def>f1a-ܸ髻9__Mx?Zq#G|`R=>+|EJ lk$sYPH}؉ۯXX<T">[򖤞!{Eq2v" WUü^@XS7pjWk<&=x\{>Qs}z†P5`$bT:s<( l GlheE{8|繬ߜ,KfFy;`$ظۯ/_{tףa&V?%u 77W.v[C[lu* I! (<áV,PĆ9\2㧧7rM͆']GXl9kNN?hϾ5=vm:mh/P0b|93Mysf?儚Z"A GqIJf, 'AkdF )i\yPD;Hb e$YACoadxFqeY}h 裏y}''`%"ۼuކ@m&=x\;Fkڭ޷'  /T@Uddf8s4J^78i3mE*fZ:'e|p8 zdg\;k϶HO1CEVaXP&v|P\1.:i-pk`I<kYa)./P8I;'޸Qtײ膦i#F /9';7ֱq4E"N8)5A>~բ# Zw>9ռc/<ijUM<\q`d@2# 61,\ƌp¢6aa)@-o|OSI[_ n9k=g=gwyLahGb; ^V ԯh`ֶvdpO753r1U}(++ͽ\ĕ[S% uuW&KP$b.2@H߾~x\m; ȣh434 ,͡i;g$i觠+pbg|oCWQ# 8hݿ84fڵEp-ZQVnYPɓ|7HST"ŊFӤ5K(R I.J3,cKnxcÑFư .'1,ݰ,8(yT Ʒ umn[,%gv~AԬqKWC}' 6d֠1Z-]>w:<63Vy掎.4cz&7m A~WcƌaYwzg~œ'O~θfJr8y%ۂ @Qhmz=.*p Vk22}F$aZ94>ɓ'wۻ=рt`2x;ޣB@6( h 4(KDDIa^*#uK$ () *rgey=C&Lzѿx㍳f:|dҵoa3gq\I&vHs6l=O7UX6Chͭ 8aY7n-MTF/1;Z~v;$IR-,8\s[G 3*&rh"- ,<4ws{`0J+bܹ]{Z޽O>;|׻bŊׯCuYf'N_eYAv zඃJ gyߛ=^|ɵn_x~z,((x衇|GyθgFiDu E]" 0`K#7C H j>ȡ MhE7:BPEP8ܕom.c '%Emj (a448ˊc  ʤWYsA`bF"pj1Ө,>@ $| f l744ذa-2}SLs%,(e+(}ن#Зt:}뭷_|$o3fL/|UUU^~s=nnn減x"'`)d\8EqF z EХnۜ<LϱqɎJjdÐ c (uQ[y=1*phxdF¸n'*dw~}'ZZZ r܁;kVfy7.\X[[G$3,w\y睷uO?OǏ?y ̙3nX ct\ < fGcsm]CU6B3bSʚ$6,CkFF 9h c2 (Rp"?)뛒i D vyÆa9t=^2 <tb^oN^փGZP\.ZvիL@A߳ڡM6UWW|嗽͛ӟtҥݼv^iY H,.J!30%_qA(p͕+1"s)%ŕ>>{zrZD`}Ɖ98?wNmq  c$W3U$VN򺷶_W"ᠹb>Ųx>OM^>RTa=@U )[9f{|k'gb?^^zN|ϻ.]Ǐy]| _>`ʩ fG㭷jH.tw׾87_jכpnw~_Guu}__b~Av=ˊSnnj a.0H:tq`l"v)0ZBIUf)2fL~q5"ƿ~"/}{ Vi\-uNY5d)%W Ðݝ[{wX},5Z+,@!@c|<mg_y˰,4  s ӝ+d;[I$ӹJ}duK%Uq*t3AiH䋤 #wZI-=}D,Dp, 4r9F&HI+{2\Dx\GQbqf;gVjV `+ Y!WHEAh:C'&,d~}\"ܲ9Fs@xS 35> I̥:+=V'X|Jh hS!t6TT{a%I%^Iҙ\]ɩaiZ[Xmki3n+ n>HLd*-u eor&^$߉(Bi+,_kgB^Ƭ'8"o|Ch D .R$I@4# 2Il# ȫjT.< DZϦVjV^O:m}4  TǓ& kUb UaS,T9v_&c$_J{cpmn}hQ "0yQ܇xRHKMCJq!ĔdHPzc拉dƲ̆P6 "4kR+zx]4RưqYae|Dhm&*T[-è+{s] KW{)4]s=}=Ȧ͛XyT6d7rM߇.97僟J-IGljsN_>7ȒK9R)tlZak#ڹ؆o xr-X,stw:QzU5ϼ_@ Y|y 9&[Էu/O^_>ljU 4REc}Wu&yR tP6jfچӞ9$KfY%R, p( @b_6Gt2N$I{ݢ$x\.p8Z*{[.Lt?Z2>>~UWOccc˗/62D^Z&V`9ibrꖕ67Ke}^# ; ~X;!&|3,s[OK3,Ђn^p% ^M3B02k"UVH M0'Ӑx,pFK%c*!4UqGٜaC#M ]_jJccgO~_|L$j,IR+h12>ܘLg4p%EP(4GӹpR*J6NZ.8-VѓNmfHbZ}ʛI€S.)''T2L#*RHԢ*ʁ+b͚5`-> 媩p$:ݶoʰyTDĒe%Iu TP(`潯XdbhPǒsf1FbnwF6{|E3jxĩ.:4;_I^FE6uziՎK[["ۆ.O}eѦy^eYmZo|x3~ezfGqswRdؕdYB(/ʙl5`# .,^sAOgT" |Q<6DCd_[Vk4uЈq8RN.˳/nXE oJ<$ɿU5926!| j{E-_t8 FA'&`' ryJ._P?'^w*$B6+J44˙O ]}6r`[o]|n@@qiuKJvq,2t(CQ-:M<.ТRItDθj-_7/̃#-TUen7,S4ۚST6WD%qSˠE"A_LӴ#oZK6ԧ>u%|K_>3Y8Z9b2yaȲLIIUuӉ*nD,BQJr D:VH쐷6Kc$I~HYq:x{J%r t&E0F**±@HZ#ီ$(14udhhУMj lj~Ka%&'"ronl`.h7,2M7VZ9-Y_)n%5I2‚8zLxx=n g d *, $IR.IKQV&Poe9Gs?30 .304a]* dVH.=A9QngY=N]_|~41 6yA8dMCg x֪n^|ۑntYz5ϰ"yE>7T:Ñˡb$)/Kkʼ&4/a@=w]q# pYMvZAWi$2]5ܑrm1es8WUMg.L tרf7j Wjpc6dzcA/VLTrE*,M>NLWY\NZH\5G_dz$ڳU0\$@K~ (ãcSD{kXs:#`2Q\Ӏ1P, ku>tq Zu'3.?VPSX|w"\Oozfn̮ykz'2I -諟Gd $O]p64'S3wuD p?UOW4~zU0Q|`ͮQZ9tNx|L0˳^I &B& MLNCζfArZ*fzY baXSmN pLgDgF*w <79 7N.E MX"^t2Mײm/Mnd,XV^DP"y܊VNr:5Vt9E1-Y4l%  7؎,cjbCP(v;e˒{yUڎԫ2x&]ʑɦ!sb_gUu1 =o|N;j {?lh%-!!8qZ_>mQ_?mȋ<쇮:[ÛR|JPYW5ZZN?=yjyרjXNuVuuuS(N)67:]8e$?b&[Yx^ieT5,҈ 2CGߊElav:?=.^x_i͎=NsLcH^d0JfFڝd28v{̾ѱxvt=1}$Ξ'L@KoFs|zR˴ \vqy/ r$qT.y6HA&Y{?zuJRs|_q=52ٽ}lOU̥"VK>\}[_D\N"-haϞ_}B`kq}񱏟zF=bσUW=TCg[rhng2Ι;yuܝ3.ijE[)uL_.pj%4B475}hMP1[?hGu {$)kEZ5;.s,?-G!gM qE m44iYC/pxa@QlHJDRaGq8߱oxH;+z^ hPr~K4n, MEZs4<=h|ƎܝY.lIꏇU* 9,pP8IrىoNvډY',cghv,r $*DA֯A+έLΎȚ< sq:gk@f$Fm߁Z9l@A܀|I._P(@6`W*Ur0á@SC>k n¢Z A_Ե/o#_,P,K`8/HyIꤨEA\APv}\ |g_u\ j gB[)D]Aɑo5 Ti* T(KVp$/$hmj@^zy3 AŨjf~0??liC/ NnPDcJyPt0fG'bg55o޺Ţ*=tvpL>(4ÀIY,nB%ɒT<=> M:+()RfӵP?19-T]KbR9>ݾl.ORNU,O~DP%F'q#@J{_SIlcxIr:]^J*x2V\6 &? ?W|jOx_uv^Z^+3åm/oMd msX̀:x4a=Cd鲠Gm]ĺS wZ9f iͼNght6q*Ɏΐ]ٗϑ`d(570ucdjF$sѮ^0DDZ,eAy<^+UT 6 }*iokӥ8 *uŰ5\RU諡!vCЦ #,pKlgfr9ّ͗ E5Ԋg2/p:<ٌm>ޟ_ي֘+~˛;΃Z93 U뷿>—oIUM?{ׂqh<`BLT +%60okmBT<Y23U-jQ< }8xCVIt~ )ٜKQm 04TLQhN~֜Z!AJLӅJ[ytKiYժ6<:JOoWg$K-MpqguE)ln2#rÌcԘmV:X4wY tK-EwGh=O}drxÍt–=25Omͼk2<Ԋl F/T&(2<{1$ 219Ji6o뫯 <^EkZZȢ? 윈rMؒs^/:(^PU*Z9`è \zº-ͭ\sY]O>\M'u*rj'eVyQrb> z|֨jL-USX$l#;W&*x=n;6>:Hz,:gKsȘ(1oIK@R,Mtݘ7gVXf"矘ԀKsI'U,D$dj*`Ñ>rb ..B%d:΁Gbq'K8IˬK\'\,'8徺jR{oj`_4Ͽ]xߩJ[f=:>R w-+sh`"m\ޞx:SW,9 fRJ$s$^8"%l042Vt`o|AecCK<8% D[KS&  `*.b{F]$'pk^yq6 @QtNQݙSlfGlR+3.4LC9;Wrkz" ă:h$9 S&[KPٝmHpxd<΂^(h [TUPt&]/!즓Ql'#hom6o#PT:Z<2Kqڟ\C}4FO ^*),Ft>Ɔ@־Zjo(@RDft| 67փ@|^y'cĵFǹN0A>C$~_jy .api(ZSD >GG̒)@%iϟ3HbS$K/{(W(byU X+R+r[7 hije'kzE-_.^nbX"Й\ޞdsnj.[8 .Jx)١q|3Xd"Le āXXpec"$&xʌ4tn(q,޾AY._씤DB2ٗojʼ]SSIc*ܹCjcIt&ME~Pn8 YyΑ3v NQln=&si1*Q㮕ZZ90'U~:dTL& A Ma$!X!J:42XaN%p(@{Z\Ly@zȢL&b$aEX!Z* \oZk֮ن^B@Z> _ON%Qd|#cd F6SjdcHgsh0&Rii+I$%jZ5ȖH>CڛVSkVjV^ck7_,:P P@wl*+ޏzOEA `W*U-OB{ I'%荅biL6 \n𳠕p1KeG!p~/5yOr9 822>;Q`ůiY10ÜU7K\wzB~pyl*n#l-R+R+{#,v]Hv9j959E6ۻ١./t7@N86qvQI>ꬕFyм)S: 50  ٍH!FXzt|0 L;U$3̢NI `\NI \@'ĒJũxu<@lZp&Yp8PI\} /:} REsfgE3fwTSML51;s'O7T>5N-0A0"Rc<X"&l(AVYGYG}] FB zLbu +ZUԄѱ @@+0ζLiLA2'\ a'$1g Y9 *> ɒ~ZjjhMĦ@K8_ 2lSCex^̄ezedUqx齙?&jb:X7|>!R:>142PÝgzơFsٜSqV+Uhm02UUTY&1U by %8T_¯I`j` 0 &w!$YCA,j3$t~Qu2ػO.j)l.ҙ,` @rZ+@J`iko6Gr(Q|v=*%fwTSML51 fd2d$lelPPՊ vMHRY;F0@dk!(|.tLe1LBRj۶ 0oQ2.[k0L&'@/`Rc}c5ǥ`{%REMdYDx,D_WS>,suHdJWE'A?p5XLK2NbLR$Yf1;:,D*-+Hlذ@2w\qPÒdݒevph\!+,c1or:%QA0.ʼnItIliaG;ƙSd~rE/]~G Žr&V!+xh#k*Yh']gy^Fc.KC%4<4x Yw+dwȲ($\Baގ6q ˀ;|=a8Q6{HhU$ލ+QI{Nخ;bEcHpiFoN<<00 BgؤAv>5'= :ۚ J67ʲ45E#ab"6myw2'4$zXTqęlNq:AJHbc&1,c3ax 8}x[-۶nPJ:Rsnd {swTp{owq's툺u|ioxSq 2X@3L/*IeXf!v^H4Q2GVݵ)\(% u 7l<24:nB\NE7*|^6cPdp0@rgsv6&OND쯨JpCr4X,`.`! %eԏw:VY>+bqmK-SRi&!L6o2$8f򁃮nD#A{&|ir*RdCv{ T HV/YW.T 1 ɱRɒZ6xh6 ~ۀ>KIXIqe:p>BK.\f OCԠP*5>@Z'pxiO"q~cfW }3嬗׽0tS鸂GV?H?l&WP cqG5 #_ya:%1X|GP3&&ܑsي򲥋d3iZ9Un^tid6j^t,[}U龸+SVQ_Ӿ47EW5 ؓ`{x~ m x*O%" D jy=nL&+IUѢ $4KP(D*$ Plp# nhx}޽DґKQ|T"ʙX@QM3-[iU1q;SLK?9tC!&"'Ol`1-YAg$L$sih u>"%y˻\CPioÑ'WY,+tס>l޲MU˨L\EBU ̯AI7ۋ`or*Q(SKq`$N{cXjI6È-MZ._6@WI,kzDt꣨ @OƓ֦zxҴLT"tu 8b"\^-Bi֦,`JflM(7ޞvE` hr|*ڃ>ګUuwJN%]~4} jmW:;7ʂ:~|/w_s;ܟͽねŋ~t9MCӖ??J~_|WYqƩ';oƀK}r^.ɪ&b8k'+ް3}5|/.Zd'|KdT4 JB_yxF?_{7.뉬X ǮFOswr+ǝq鲹M0LB}X=|M6?*62IR{7j.g#=RpsrnML]LW[7^ݷ~%g-U, =oHL#Sș$zEW-<Ƴ.(m}z}ρg]pѼh82o1MUwmN]|ŕ+,Hް ]tͿo&+MK+M Rw)9{} Ytpy?߾w8=};^Odr'ُ}cZ7+noشԒ>'S}̢Oo8OM~j؅WcFʻˎ=vcw>/](pK.Z9Ag=V 8\iwܽwly:wpãl|ْ67٭THlko7}ڍ{döY~# m vzY&u :ZFǡ͝4Gr=BRlHR|Me/TiG M %Efu/4*L.WꉗW8@=hL֭(͍~7L0"3:rlnbIgITiz)+N'nʞBKc=h8_y JEۅ++P`p8|ƽiq,,돀pa:gzkvDUOojiQ(v7wL¯#}ug ^LX&E3f?8^ٛ+P@A MO kql9^=qUoF]):#[ aab-PW^kokDxhjhiɀYp;$d h0uX3Y7;hyA$qa4g9t:XOvǺO/ko#y:4G$!"Zh$J;bX}4Zq)da9ZFqFsf^7sG;x[`C0oTq]@gwLL{fz~n7q(최 S¾"!kPM*KTzf|2 k/󅬯t& i1 [1!áT%8@:O`Шqo cqƀLp-)K.4MpN#.% $Ri`*\mŦg0 뢃axq p%d%LGC$&BB19H,;Ni6 2UKnc_>$jSx,AWSML51o9#7Y6_FYD臇cUݳs<6A+1,R3M lq#MWndξaVjVj倦欪nˆZuƾbd"2QE̥h,b Jbզz\(Vi(IAJ?mܺ}~wD{kiYb)ˀKXi-MdhJ$YʻC@Gl$sIb]eXTYJy|""JRipg3g$TpZ{m&{+֛~{ TSMLorUtZ4Z IN52Bq-l *4dDCPx\DOiﱯ=7 &C #ct JNiV<ϑ/X/b'tV.JщX*̝](Rt ݹ)R73}d|d3"q7pr*I&S ۜnW($7s"35Ěsrlx-da_~/Lc#91U #էp9׭];<@.ۺ` Mkt5OR;^MMg̑C#MOc۶n$*gbW?*{@!38Fa"xAiP\ע(u"^eH,l67 :DJ]8 {#@2&yZc@Ф ~/[Kg$n.]\ʎi.$Fd1X€IE#0f]>n A >/ `._~yapTއ]>RWȷ[=*;nnnjn8^b=-(dNϘ Oi|-l٢+_cˉ;oWWk%|\OxrΝZ+clrmEo mx,50G}˷nۼP]f,1yu Vlw}3½h=j?즊{vstyuskn/;yڏHі{m#;!|ZB4ps3? ƠYzx="t5t+aU'lCRDUJ9MMGd]^}ɥVk tMֿ&S팫<Tfqװ/ۏ޴u?ڮ9^vuYeyXIG}VZeiJɎ_VϟR!o $Hs83k;CתcM:ߦRiO( [gk}K q^YmR_mhXxs~w:EjgyG1"͐-/^>B'~z7ig4R yݶ+np͍߽f#Stc$i,-ZܻnZxbk~˧Ia'6d$V͘P'/pME 3?vԳ.[t0܆[~u߽I]TkΛ[5FLJۺ",g)V<%ky> 4+- +8RD6ëˊ L:~,A&KQUdLb`@kYN~I-/T*z^[Ӑܬ0<^?lO73M-D%@ҷ-T A˥B@B.!1ѨHFdJM5 De2S~pZib!ix@ z&blZUVP'n~Ao F{nȪ0c+.(cj쉴N`5?q4<\࢚9D+ϛ~L.J͑͏q/+lwz[ۛ l._8Ρu3`dc(IUuתc7Z4c|1S~L_r$&@<$e3=>ܼ ;c퓉86N9)i_gKsy̧ҨsLAk/?qK߹J~ W RɧN+3.5=X_^5/VJ aH,!1|󮥍Gv48J]UUwX:%ShU@ǍJsm"NkBI(j>Аڼm+us=<ѓLoYT]_j`7_uílYw\XʙZ7GcԤv(OBT$>r<@i:+!*]=^_ZZTJjdR YIQk@S'8P$O䚌f Xp`$,I8>#s 9[K3 HN0YpG T(|sSHrI0#PǣD"@hF&{!r D@Gldj qqٱ.(qaTh?GWnR*++glp+n=o}Sjߺpc Ism++;u;s rq Wz?F .Es6{+frnquL{mQͼsB> (f1q?i|efYwK4]1,mqIm~wCCKk(!0^;w|uڹ3jmg oOBa׉rB.L6.7/Fr@>}[\m"RL斆9N\7o8RT5s)q36LU:㎛/NuĂjkkoԕilxx PSShKkO۴󖭝Q˴ yj'LI!Z,oWօSs^{_S5,^|<ԇ(Wjk9ES =}-0_MXpu Nj]zC3+~TCۿ6ʔh:}+e GzKCWr?fP dϼ~j%|{=\mW$M}yY1c' /k2Z@|xvFǨp']n,|؀SHl.&,W3j8l3`B #@S.E•eESL\$^TSLi9j@p$J-K% b~$"6BƩ7=X剑_yb0eN/{n,Je \m3[LFҴp&LbK,WJd24Tyre*f6x5rK 5:}`3%E^ST`"a]|m/ Af zm V| 性{p"^q, ӫV+Fz`j溗'ZD" p ϤSЌMfr蘟ha.1@xB.^>hs8R.cL p@TF`pBFx:jBT*$dC,R\p(%,ƾBF8u\`&#ji:.f.XRYɸtA,K8KDcKl15ϗJĘ3 rs/ G.ITp%!g;z^ŴDT"&N7@wO&Ȥ @- ])a&IEOT 9'Eh̢L`1] nĥac!*T$1*QÜBvIQptV;.V)B?R*Fr&Fh҉5=.Hai5vI2Y&dIuXlV4M36@p8nk K^+)Q>o .89l}# WbxOD^Qs #v@" HhiA/:Rl \[QM ƀ3J p s 8pM#) %#J :Dt70xW<"LII3MJJhK %.q-{yj%Xo动#\6\?%, a T\*U*jBkUJ^Att{ c8P1}/ p  f1* ` ^:c;M8e \:O*I&;ݸ ZwˢjprӅ:.<fLSel>% +Y&<$ v'!Xq" z[ZZk=]}B CZQh}G| iD$ς "aIQ|=\X`8 ˥c]. R*$kuDЅbn9DIE,ڝ9zNB=do}< (Ib01Ff 3ft\b18v_'XUS /~LH|~e.SW?^|{y~{7Z^ 8㌇ooյc|,wjk9×"Ok=1O+ˮK:.˯1dH:B3|ƧU?v;78̙2aqc긜Yp,n/4oz|™/g!~"*yWO;>8ko>op/ .?>d-%t\6mӪIA-Q UJ58@jcG Iw d HĨXOpA'dDNiB?ҩ4/D$\V?4z^=l7Ypf.7#$sgQJ4JDɨ߂ܜҒBGX5<>(5YbLA-jkʧֈE"f^S*H r GaD_:x8k%,A7侌r>Lj`Lp#¥V3RnGЍ,厽_8t hL5*@  o)A'o$e E@#Hmv{{>dZe K5Q@>ziLHDsB3dE&  b:S[ag6O#y<%EGZʋ v+# 49}훺QW[ĕI/ː4˒iO?? A&9GY0I*& &uu8ƖjS*uZ55;ټm+y߁9C٭49|G>|ei<VXJ3' 1$#VH"h6CY?(E,h'b(` @ 8!*RwJA!!H<>Iŧ+H*).E{g70)-t:ňB$[oAsQQ)tZ ' I/HLHB<2A&(h$RZ[`:.\D~uAY ҅3-g$+L"f$ ϙYQh-` b3M0DFWHS=^*Ǜ?}麺;L0QgAǧ2ĕR2~!r iїߏ}A/Dj@q4Gӥ|Iz:.S)tY24Se-?ط[>Mtx㔡:.B!{OYk~^n<.QM[JI#1de[ C'2)/Sݭ !k\0Jp^ރ+0I${~DJex~"{^^&\Sp vdo#Zt~"\X9r;Ȣr2f&-m|)rd$+:.)TXWBeo/\`IʹO_Q-AƯ2Նf2+g1.@Mc브e>)opֈmi˺hHxQgLhyQot <" R*1H0N$R:DQVA Gv:̪D"IH @ 9bP8]&Ceqa>!8\H$b\XIr$E"9&i5*nOE3zk>Y_i6[&B&4i+UD"`LA($ m;(7> 4SJ$axh4J3  CH"v,8\M>OS.R&8($A2pA0|BJIb6gy4 n:̇鵶uvU@Vp"ɣLo~IA.ǽE":4BÙL&mݸdwqaB.WCDž :{ 3;x$fH_j}.YBt=҉n;z;4]ҩ 퉎{pHVO42iX_v2RF?2dԌfMh4Ni6?wvvDבlE!:./QR\݊BBe}lr4J ըqEPӍ+XlhTA2ƈ1|: e2xJ 4bLssp8)؋>tL&e\ pd1:LR@eG347 EH. LSJP8I,-/?{DDbi;tX %4j`mͩ1~>P[bعe{É',%RG|'B]%syz:.5uӼ}W]:Hzȹ70ko=gf*X#rqRe4|u\0=xd;pFiJfVha}s}fFô^0xF%V-]w 7u-WǧS˥|֯\K|N䯟aj0wfv)"޾-/'0PN!Ii!`Gæ!`3=Ţ10GGQ€f|pvg$.7$்%dG.feTJ^&ȥR&ɨC=@LQqL!`F$hO\_+7P\˚>wǶ Z4(/c(ON{񐽢NW[[[=*AJĞTYv@w1ȋX)?. n2"S P ~&9&u\:.}DrG-T3F O~FAP7j{dD(\KܱnӤR(,/B=ѦH<i]s~$YYH<*bHz0FuX癌Z ^[T 4g]nr.NR)9gM& s_?kp_ IZ8fZ̢=P$EW`x{gO͎ZN/p8j;bB}mm |bRU*2p/ܠ%3ox|NnwZX.$ q^.s@Sxh9Ir-70!|g^uN{L1\J ΟL'v L|`:. yR.!?xtJ@}F{b "R*D>Ȥ˗C$>#!oRLF_o=;spq Y.Qǥ!M[Nו*U"_Y*_gSϾKۜFbs#1*u#?R*B!G,hB-ԟ>,i-6^D>)JDYfǑ9s0Yw]z:%8̀nc$Ix!X4Z!'x\. q\J{0pt$ڏAfHK|Q& G/q&(7|,踄BwWWC˓x(n߾MM?z+>8Dg q$Y*1~?oӻ]&F+Dh.h82ڷwpjnqrآ⪪n_LF 7|;m>}QvzG=)ţk X4:LeD.QT9LijSh#k󶭜ֽ{Ϲvڦ'">oJh#>dz-]LYb%|.qsf;]jw%Kb u pʀFMy^x|*6Ir0 |DzRr/SBw C bBV3O0&ZIu$C*{iBcЁNlRMx BѠcI9D#&a:.u{K8w;E^;Ot|u=3]fj:.V-m}M枞?~347h=O뻫fښvKn]8m=xé֢ZL|It\n9S舨>$r=]'ml 7ݲ|auuE*bZ/mKq-R[}6mݿpźA7Q͹ί֐69EuG9o$1WW;:?d;Fi.ҎNo,zX,1ke^t>hP$xs AAp :{zI$Ze1_8)2NΜ:B4Hs(a\B!L2")J-6]3!ok4ΜmJ%t*sȨI\\ 7&ԷN&6 i\ &c{{K [:+ʊ :~OAD=>f:c]f ~.d?M,g2i(E?uX[Bԙ& ┪r p(d1ϕfM|yʤ@Ȥ&tJ8r\ PI&FE 8b#%2B.cQ)&B.8k/LNqŮ< -ES !%b< EnH\"AEPҏL:ANIl.WVP djDPq+-!f4ӕ*%y;U^aKe#c{A\OdQyq2ݤSiaV ty9|^ M4EBD 4M%䃣ȉ0=TWO(!Ĉ#3<ڹP8pt:͌+JT\GVO.js5y"ފ$Йt 41ըnxϐTę:.8$wUqQPsvs :}uAy"Xz:66Z!/PdUK,'5S+S$SPO2>D]hFK#a 0%diYn'Se 012G 3x 44K}LkTWG[SSsGW++D&"f9wB8DrD- cq뒙AĻ{$7Bɀ^haMFo?Z2Qn 븠7 ħ%5n=C4Z߰ao9AEk?] _lj]{q iuEIVqë/]轿m/iƔc=yl F\GPP~Ì籯.Q%jI-fT,,~o!q<(rrge1t\v=w 'Z,\KU^5g[/c޺*X-[/^dYF>L+IDA%ABb8t Tȥ0wilf4Qow} hANOh~ɸ?tpG% c rY=s00\ li%Ql.+_'w^yo;|?wڿ{SU5ot"62GM"J%(m;yQO2:.Xɮ!Z,0??os㊛5Ύuiƍ,=d+sAW^}%Dlh2Ek*Dq`- A-]uk~z]Mei!P9Ԃ'1Q2YǨĹ}i(b!ip$TuXph)ӡt!K/ sGM$ G"@EiQU Q~!BHIvFC|t)Ibtψ>2x0JLǃM{zϝoPsu\䉸Ӵ}_ptvZ:pZDKT Vߺц-gKI&;kqt\OwRv?'$,YĘz͡ך?$ѩ /y|u\c<>ΣcOU;2_>H'4d/T;Ln̜-4sx}$qillFِQ}8\c2 jȼQ Z,m J޷yPs"(PBpsHpHGh sR$'^_gd))/k鴚Ң|bRJEb1Z4ST^#wѽ|>:QJ |Q"B'f6C gѼc6J| 4ֹ&ؠJ"" mb`$SR#`tJ$#df0 GrB'+YuǭǷmvx1r96gzEҺUw&|'?i^}]۝Ko^fG>Sۏ}QuNʁI-'WxewU%m;y,% ŕ=fj6>|O_n|O?ڴ9~- Y븼?\ ZȈ4vtri\'4 2+뷤ar;;}ݢ*+SL0a22GM2>w9g#̫>1,cb1B(7U3Z,47${\XʙZ7GcPn7_ux^0za?4^1^j0+./B %9=XBݔjgT8  rԃxmcӗ[zǾaFNc)6ox5M-P9DCdX`fIOZr[oDtukt"޻ʨLmsϺ5e2GYSH;7E8r\?ש>7O1Vq-[3*\K _#[m숪l+y߹r!˾f2u\JkgLbm$:,s#]sb;FourGw2xF:.n]4/nYy_}eLK 0޻:պfV7Ω%?8:g/k*b^DϿ(Hpp0j2Wx=? :r'*:׊!sAGh@S m^@Q)}IH8ˬAƩ2jF76e\ٗ%3z2ӥRFYfwTXWMDž\;<Ǖ)b1 r4KZp@Y#,B &\FEdXāAq ppT,Dx|f` YI$B5t "PCB*FkZiq!*^Bӆ:.eR dLf" _ =С 1a5t H6$w' DIK((0B„#hf27|xg<fŁ ?P*Α4"!I%F`fmc܅ˍQl^iI3iDZM#K :k] Lt[ Y1zNmQ?%dG(s؜Sd,e 4+UQQZFN!Nrψx~0,P pCrs-ˣQ+A$Hýr H4fy:k0ڜdXKVgIx\%$yQwÜ=7d_']GAqfI&A5xXi4. #OII3MJn-** ?T0ѓdH rm8Oę4\LPL"Mxv0B"0 _k5*1G~:tLA5 L%R1Q <"4āu`@Gy9F GSk;}-8G"ѝ+\E8х'=V $#HLd" SO ғ8NIŏ| AY+ 2vKf}$minjim̈́Lh"t\zz)Vd4T%=zbkUq9g5okC~8s3G'<[Zڳ`(3m, 25Cis=FqIn~>ВN5]ԅtav4Floɬ0f+28`(-AQm]&]MӠTjqH nJ$ r$LȥpA8N"2$ Ǡ4HH7Fcmh=z^?4PP߬ɨlj1?z،J eZ.Kl&hbpͲ.g2J'*9 3ft\P79~sb^q ӟ~ݯw|K[:}b *þ_iO6XgP]ǒ9S^:.gkk 3.=uPLMi/;?MZdݥq|u_Ͻ̗::h}ťs ]]0SEõkoi -evJyjCJ&fcU05(V?tѱּ_xkO=ifr _#B_]x|<~龬(tw žEe3d%-XtÌ\g&O4l'<5,VrS=9dEF57p{Rf 1+0㨡XѤ8އ]1oJϝe1t\Pl4|+W-gu3eb~VޢKwoq~ɲ2خh_l$|s8=}۷LVBA[tِe} w|ooVE6.E4qmB FqaCFDF7a nRtz~q$ Ld0p3 otot\ƭ?H3䘘x /zܤ5H[u$eFCG?K۷5F,;qyy JJJEĠSG"$^PR / ޠ `N?z=`0ƨGYD`.H4[Nz~r. P'ͭhx 6P[eEx3TW2.rsip[cslN;rA6D>ĹUy9zL[{|JiW(]=8Wܿe=怸oy`3jmgR<\g:.qCև٫[ MS3-[^|MÌE Vi [_V% 0_(!0^;2ӐaGןa׉2\5Gv*",]4̧4DqzIb3yq36LU:㎛/NuĂ X_KGuCR[qW3c-Ֆ_H?1qnhCǥz[..J=/o[Z⺚{w1.bB}Ek)+/eR T/ 8q)U%bdp/D"(D۟5$?\$/7^;臞K1ū2Lj^M\@D/hf6e\,dmRLPshCeH <8ÆĉK.QҘby|Sc~zZ,>`*;%ZrD,2^' zfJuU)";4E%Z2BcGXJjk;R<2#ed:.K&ryX_:I3Mi _,Do{o޼yQ-6gyIelH3MI[L%{F =rj%"%L`(דD([&Tժ)+ Ʒxr1hOR;qFA9BMun5z0.fDpIL2w{@k@u@>pѾ3h4{ 2Dގ\TNVvRc_;Va}dx&4i/@B&0xѢE̖Y,0 S+xxsU)Lo01FKB)ύ'ސW!?n2HbO$MȜlSaeLWQ~WWްեd|03Yi*oA@EB0Q/ˬ6NS= FuFf;p%[N!a1ًB/S)&6T*~*pT&ˤ{Tl}&|O#r"cW8a&`y(FP?"a"%lpήN@dP8D oot:'jeL"&bTJ(*o ;m1޹43# 7`3 g@) h1J5d#D>*Bj` <zvp|n0擖I, I$PVxfh$>_N Ba$ R.d[LAZ?άq+KNH;safVui'q~ㄣǞZk}!+H "TR?L'$Lܳ{=G2'.ɇ—%Ư/uOOt=]?xƣiNU nZ.}`㿌 t;]mVmD5:ƣi3"zj+,eU& ĮdYWAe:[Fغ-iYT싌S9r!j#z!EE ̾2k6E5yd="]{=-U]u<{vy}zq%^Kq'Ot=]5NQo/Jl?j?,[r_BTAbt:M9=+!%?*ܹF*FAϯ%A۳ db0y,Fiߊꩊ\UYnT<"v;Y[j5pr?b6@N)L0uML]q Rm:5҆?]Ot=]B___/s>dFy4SYan5dȒ]er)_R,awlQ6c, )b\P%`|IYᒒ*^ZVZo^a KV :M&3na60oJ<ۑ0xU?=)wںvb|?zK./8k([WcD)曷|2TY}:;1W˲5$x}$LG#E{;L?ϏϾa*%'O&$jE׷ViHd6#$VWmOs8*us;,iׯl<WTcG~|AijݽrwTNm顏dj|ysTQE il,{"kEj6uG=(}ǰO(8Dz%V%xw~%dCq+\ {hӕT.z-&A۽Ǥñ^נrMUVmTl?ICIMMIBH;ՏYcdzJjK&1~v -lph䂴.2UM Hj[:l{K.ЁP!(7=>^}@:T{0 ],?w- D?Jtx6Vu%>OӾU9 FMqY 6vXVhn >Q'դ!\BTUtUŐl\%PTV|)2 h1NS|P+ƃ{ǜ,#Xe( ]zi[(,w 'X|mԂx:+*ʼ1V/8vd!B)+׋w_@?/<ϥ{g"'N;ީG6 _MBq.Vl5t ,"&Nja (B>˥d0TXTِ]v4g{F鷿zW/ϻb⻦*ЬI4:A/tfbyfE٘y BUC֥TW=1qu`eZBy$~땬m!~N`ft B^ע,|0 ˬˎI04_=ߋUb#[7n[ZJ4l[NͺZ˗$*feFdLllxus .Il2Lr' sW\'J`^&W'C 1廹#T*&kn@W<̼}u6jϏ?Cp{l|Y[)4%UWo'Ta8ɸ.]yi[lc:v:aY.v:͒*t ˊ_&?0`f~ ͅfA@r:mk$QՎj0t:ߦYX@Q[QQ=m`G UXn46$xq(j&yE]%MiMJ/KfGm5 hTITu?9τx{{$D<ɗbWpMLǫ-[iV.yp6MM$k@e@mKlYqC)הmu&7c;3It写m[p 1CVK~A%.h">Lm6t{7d4( +i:f֛VsUc>H;87D'Zp[:ٶtzGcxкc Æt+qhT*eoG@0Fv)]2h`\^`d)D Sx{x2@[Q #^b&^ZbY*q6.*J_D{X,{l>NZ9<"KXvG'GLn"GAK)V⍼Bի +'BS[RoU8^c|/p}JU=wyT fT mnkF60gn%.n.ˤZwRwjkFgTotEl-j= $uk bLA{[rZ& AY((eőXߨI>%T0432$/>yRپCKuğsXPa'P.[F4dTo N;^H4 Xv+rz4X 4ۍHnM@[y<{N(%,NOS&>pv;0g_|*_ &)_l78YJM?ףe;.Ax{ے0kk˞+顰P%d%}v~8JbcSf:!4yQ48y Oɻί0?8yF㥥ĴXhqɑ\Z5_ȃˬTntDka4eY ipnz~yrt" ڶ5ΐ6+u*igQ q4Fկ (…zAZ S~"{Tj5ђw~I ۞vX~-QldʻZWɘf^d:ލt 굨qt 9ӭr-jsܢN+4#;CEȢ.36EĜUplLE.Q#Kϟëo.?p 0yhbS[=[zxߍc׭˻fgm*hHf9Z#WBAŞ-yF,?_"R+"=XPzk"y1d=+%Ws4(!vDYQ<{>.ID" Ü.&|hLG-V ݦ4U+1=;薷\tEX֫5H7ʎjXeX7'kծFA:&gKRn*bURt=N*2Ҹ`(vfתIZ4E*̊F“ z*ЊLJ}oUm5RrSTYk)UDes}{2x1lFh{mفB)jAX<7-@n[x5, d"zD++azcw) R£խ(rOvzX7%zROS `KôkpJFVu\k;J3m:pOu ЦƉđ~P2u),Ӕcxn5]V{fc=f-`;/x*ۮOZ kp^Z?x씳l dM]eqi9ժGH0my^"9e/^x /p!$KUl$ˊ#{ϗSu@/+~lD`ϴ -[1>hX,LkF#pNVyQ|-FmlRLY #BVLgg795uhJtpo^_}s%Id8xJ`,Q{]C y^0 ^fl5Zr ey,I7zEaۭ7C 9>$Rn GM׉ð#h5%M_JHPn4L0NTKASfw] lqu}p/+wE:82ng#s^0:jǫF/oOf(~w器mx?zcBW? D ELm[rըֻGE8/rq|<`j7w*J?axu;cXqw<`cm7q'U 'fZM <5P̗s; e5b`nXp[vQMR<~xxn5(~k5Z2*Dk|F D]I,4DLP$c*Lň#x0XhlJ-Q %C!ytĤӵP"s"{ӆ 1qE=~8 5d2yώa藺.خFk`(|duA M YfTD1Jv:LC5v[ӄVZ+s][Ez3[rnE`@b#.geADߠT<i4?B$πcPl]x:_hswW$fqί|-8F p3X^OT'JBKFrIU& 7TYxMoU,zb:&lG xQ}(L3uV*1c6%"Zkꊿ hۈ;?IQN1Cux$o㪵liYHi"YVC6(xZj~!%De,nkyVndzEAhI|(l$Ɋs!8_|m=^bk5#FOЀʐ&}6!(UF-T*R٭x(*,\U$;-:HSQ߳#IG8PTESb}zq.v. U#n ft. &2F8>> W_T;{(Vrx^_}2v.`.*U:.iHdxfsy}=p%m4 ֺmt.YtG*K8\P~OclQBˮHC:qf~~+bE A="h-k㵪 x|/)vTD,{1ȁ%pAZ%]ߍmBQl4TVsTN1Ji@wO2NŨ bŸO"oSި&eo1+.R 0K3$?Qϥ]hW |#EBUy7i!۶T+q`iI8>6(QO0/pjaIlpà{}(5C^Md2 &af+v t1q(EdOWz6`%8PY뷲xK*.xW׷V;EB^"i6rBLg3l -vKiɃ'd- 䃄b*dB<-iʮ+Zwzma[~\ Q?,b "ɚJID,Y"v47~{-'cŭxHj:}U9Ƞi |UX`mڊ ͝VوT *y0`B.|у'!8 d;AĝH;%lȔGjӵ2fbo /T0 d*݃vԒݝ^5eF' "W׷CWoW`KinCw Dl%ga K,8_p$kEפX:/q~uST}xh6ˁR ;|JZyKEZ[Vޞ]2 @c&KI֐-**']j+Yy=+D|E]8YvoW"QJD{nCKg"" sǬB P-%ޑAiVhE:ɔ/onyŇ` FIy*ǏoF zvM0ϾRJDRgKkb%8mIn^B1]E mf*5Te~|RH1q{'{ 0Ҥ2gIENDB`xyscan-3.31.orig/docs/en/settings.html0000644000175000017500000000276311470424537020201 0ustar georgeskgeorgesk Scan Settings

Scan Settings

After the image is loaded and the markers are set you need to tell xyscan if the axis of the plot are in linear or logarithmic scale. If you intend to scan not only the data points but also the referring errors (error bars) you need to define the error scan mode. All this is done in the Settings window.

Lin/Log Axes

Error Scan Mode

xyscan-3.31.orig/docs/en/coord.html0000644000175000017500000000403211470425562017435 0ustar georgeskgeorgesk Coordinate Systems

Coordinate Systems

xyscan uses 2 coordinate systems:

Local Coordinates
These are essentially the screen coordinates of the window in which the plot is displayed. The units are screen pixel. The upper left corner of the plot is defined as the origin (0,0) of the plot. x coordinate increases to the right, y increases downwards. They are displayed on the top of the Coordinate Display window once a plot is loaded.
Plot Coordinates
These are the coordinate of the plot/data points you want to scan. In order to transform local coordinates into plot coordinates, xyscan needs markers to be set along the axis. The user has to provide the position of the markers in plot coordinates.
xyscan-3.31.orig/docs/en/scanning.html0000644000175000017500000000352211470424715020131 0ustar georgeskgeorgesk Scanning

Scanning

Once all markers are set (and the scan settings are defined properly) the current cursor position in local and in plot coordinates are continuously displayed in the Coordinate Display window. They are, however, not recorded. This section explains how to record the data with and without errors and how to deal with tilted plots. Note, thet the instructions on what step to perform next are given in the status bar (bottom of the xyscan window). Follow them and you cannot go wrong.

Data Points

Data Points and Errors

Scanning Tilted Plots (Rotating and Scaling Plots)

xyscan-3.31.orig/docs/en/settings.png0000644000175000017500000006773411273061574020031 0ustar georgeskgeorgeskPNG  IHDR`*ktEXtSoftwareAdobe ImageReadyqe<o~IDATx]`E~='BOUP+b(-DEŊ `AB !˕[rw{{vvov^7 EQ 0 Ǣ '"IDT[Gøv300"A1\[ Θ̀ĸ8=Ԑ 1qD-<ϟ*F6-^56Hg aw0$$lj`IQEiĻo K֞B,6nG;|m5sG*W$li(I.%U w{Y"U0 ^@KAa_OicŀdxxБq, ҕҟ2vpް+B #" CHDo钑`1@+Z[6f=:xZ_.15%X-zoZ1kQz뤦w\oJJʊ\Qcbb(Cc'8* (0d2`pIM@XLT8& "|m9` (<5~Ҷ͵uDR&{cG>%D_ug--3ׄuqٿ-++3ÓCȺ?%9ه9?gdžl2ɿ~6s!W^}kt "-S"  XV`EIJsU* `q=sF`h*g~+>0 -!'t^w?Nc6F}UT"۞r K,K|%kvN}f6č2+4?1`cic>uLcHr/ nzdM&dCb8E~Ŭ<8!05{GbVG In m ԾSNq-}ZU@?fկ_7| ])) u '~[HhBuCjH*ԧ\;^~8 F[Z*Xx~|CƌoUudHH|jR|/]-5%9~-PDi fV[Yk`XQu/O{'9d1{6X&<#X] =v2&+v HE6<#3$%EE(z!xkm9b B`851_"y!sxcx'̓)'8=#:2F]i{ Q`K 7fC \'< saѹ1*P: Is!E{̠1!nyEqbG,F0k܆~@yf!<O[QSQt\ˡrg?ܔ3AHbY}/3I [7|Y q@!999uuu ô∃ӧO9X)jS"I2((-!>jjjh|_#fƧ֡{@*[lذaiii&x<++Mv<\:_9>'|*MI 9Cuʫb$D28&}#x~h4EbYB1客"f\ZZ k׮;T x9ljFisPh]?NQgiB/F}ѣG  ˰M d趭;icy\yC]H'Vju2dȦMfl#5BoaЫnmG>*N Q_2w˖EHS?DPڀ)ƴ:=E:V+MzoIJ FG0Ũ}k?t-?[.%6ЋD΀ lL9@ `K@F?c#}o -@FH0}3F*=8?LJ>|5m 1'_}7=~Sp1}b;`a9{4nCDQW 6_imON|4v.طY,O:c'gya/o=aum x=aTNHH`9xysǸz޹_}rue>qcpxg7{L;p@|%&&QޘI=NM}m{318/w`j%\]P7Ή;6+X Ƃgզ}S96^gNW@ ߔhz!*24W]:zs/=cΙŠB GED^6wax;)2$?\'bX Y|^E+Ā2;xP( *a(_fu? 8z;6xBDQoԠڈ^|{X)d^#H؎ .hjb+!V)GO&t@`Vs~w1ɾ!ɩ}֌;.bH絮! Icc#=#͉ˊ f .4Ww"ᴽ0LQzx# n~Wg[%6nؑO4y<}|r\C]]tR>j]]snxA=r/Oy5CUNqAD|;׃qb' թjKÒ11ĵ"ZZee%&Ai[(0=o~+f6{z@!ZW~Uu8Ek)/ݤP|x |7݋B^Mk#k~Xz44XڇOx?֗?pSDE GN<9zh6 c&tMќV#U'5K+77w׮]3Bc2Cg7@IO<T8eۡl6orIݫ5 7j$I\k5C hIhsiɉjIAA,f oca4">PFyFjZBXmzn VuI3a1c\~}eLqI˓yO I-ga( @-H3D7Xĉ'޽{u2H] Uz% \4H-('ԝD'81#ߥ~qb`Ƭ'N۷H#S_R C\\_ᶊ3N N ʦo81>p䄄Ymi*{ԕzs&%B9/";[';s3o.OŽ<I0gq[`d'k,dQ'Q$́\L Y^'A |bv=81iSVT: [–|>Ĵ"FEn-B0'4Fs=44 gsqɎQ;ju'ݬ|~!,g=Di7u'aIu'/N ;y``ɋNºN^"$;0{N8b`B10N bсqb0N ƉAC qb0ŅCaO8Vqb0N81Ɖ!0-10v Ɖ](Tyԥ2<8RoBL+bsdOND[lyv{}}=x*+ LZ32??fccFclllTT˲ <3xOXf甆N(dӦMiNZ-9x`Dd!C5 8O>1@W@JԢHIZ?0@#ʼn9 y/bTaxEs),(bICӢToHNQ_rիW4z-4WZlZ3-'lɛӺgץQyW̹ĉ@jJ *䓴Rw(/@$zP:Hh`0? 2|p,{ԁs"QjW!!!7t3Zk֬q+oDʥVofa8 gC *M%N 4Zt7s {?x mM*L(J;ZEO^l @F {dSr+Lz]эޘYHW?v޽iii4McQd-}'1 RKaJU0:?Ȇf!SPPo_=6Ȯwy~ysluTZ[OقO߾W fP\_Wefd5ur4 uMEiieKE[Y;#3xROqҬ[j*6I0lTgangy#k6.jy v)I\w7v>2~]_vxAi5x+_~mÕ̝ $%% qu&2iG?͟=O7Jxhۧ5%?Fe/s18ۭ'Fx@jlRJEyG0_M`ZĻO_ZULyg]^vEmEu{?źʚ17OcfrpKLyT2❛Vo?ϸ} Mu' p'")a< ]LZ{ #]~}y!sޝB{ &bbbN:nD?n I "􂖢}~:/*;my΂E2҂81@+3feC赟zќ3~:``_sC̘^鏾9w}o~&wXt7ߛ}ej(dQ@^w?gp-F3LJ+ ˋ^~ WƚElvZ~=?yzyxݶ`X"{mZjgbɄ~-gF`(qEްN6)05qb@&. RMVAE2dҍfv +b6lڰ;oPp&ȲWvM਍eG4>I /N E;̙/oBB:G 8 &(^a&)Na<Y=Yd}ӣ="SM^k(#,^݁z6PoZ=5hÏ=LՏ?8rĴE14Ātt{sÜK ![,Ƥ wˎ$YSvf҄hZdmI Ҋk~K\9k 3v`CFBic!' V괶:@{z= ,i/W|4Y;w9踸ntÎSUev2iHإ1"j4]ckɷx{g{|bi]p8^jVعԝD8~= DhHޞe}?7-\ ~p1;oz˃ Ћ}SZ푵>GcuӞ^dteny\0!!;  V>XhʛW%v6pJCG9<____YYG=­ϿñO'^gd<~KO V/\ t[+`x;)UGѮSzi:waw* 7O* 8 ݫ|vҩ~ސ@к>=q'HᑜS n= @da ꑀĘ`q;VIVT 8#cر####++MHk׮mhh8p ^L|o\66e2kdYޝ;K}#CY\q>;+FPeCha#r$2xh90BR.deyp I*u24cDpikDCQ`HA%110'vb`>1C`_0+֝0$; 1%Q; kJ"$;gIOya`IXwu'!Xw֝u'!F!81'С0'aX+cy81'vb`Ֆ Ɖ]'v``'v``ei|b3a3爷I% Z!'vAa<9B4yzv'=x3u 1r.yKq_qb2w*8 fbe]şӊꍢ:n>10-..޻wouuQl̛F | N:[NL3$ɘpW38Ĵ>d`F݃ON^+gƍ'OZ1K7E 6,==H )`kFJrWVwQyR-U8>Óq$ (S.jnr*?Ž0[xBB|BB0SRRS-z% αyzUw\PBCG?HbJCX7m8X1/a"RC"9qÇǎk4F4`'{.+ݷf8=xA|Ʊ˝6hɝ ~zpd1vU-zޜlgyK͢9\;޵% N#v lڵ@9/`6((80D`ZWD0@T%OH 1(((K]Fc04T[ £~Ʋ5zԮo-EA+5)''o߾Zo |+`8vƩSyg͞WjCjDP\wi³ܵsCC}RRrppCY; -fz\Y_p4-5Kwclڿ$ $MTC%y;H5nظKau 3$ɶQҴ˾{H /<ĆN& 9@3)n~0鯾Z82bulgdaxRRXJ'Y3[׭+ׯ?-2e=xǸC+?8 wLqƦMgsEViĺ:k0[t˛]!>N_pKV<!5$,-; qbw)Ue"b3;ǦNz`~ʅo8T#XNtmn߿}+M3YEvrʻ&߶8d ǠW~]z-) VS00'qLMCHLyı!02̾ivt7#<g躒^; bMնGԄ_*p ^sL>2{??tTƝ3|p3k|o`ьs$>vQZ=/>~GD?!i=m\qPuk#2zwbbewUK3*N:9r&IŐ o]r"!k"X,`Wd풁i:TdlW: X-vS h16 JHx7c M G H V;w;hZѣ۴ɓ'׬Y2--M( +lVUU)Z<2+*tjݚ'yin|͍#ԯ, GdX[KtiNO$R[[ӧٷ4ޗ817 'S R%;D)*TqPyBaϗRN'懹AaZ6hd*Mgkq00'10%`>1#$; 1$@ ; 1miG֝u'aIQs!$;С0';κixyI0Z7 1*Kdgd +z$0*Ĵ.FQg^rĸ[>ļmهcCۜw6eC$ b`iGƉ81'1j1Ɖ81uaO^ƟwxK#'gl%OL>IRчVF=h4MՁB`;P0rb1x;M-d>1AQQQMM\ i%y9kdddDD3뤟醅FnhVY#*s>w|b$IVTTNBBBjaM+++өS{9?d&b5\e{)1Ml#y&hlIC % 18A±㧣I q~"ݻ"=uqqUVXqׂ;z+GSՆ`c|ѹ\1'HCUYEM-c/G0LO<cZ C+K˪ͨTM\ʕ+?fMY^nE@?'y[k׮&7duiիgAqZC1Ygcw~@Qc!ry{dSor'#MrnZDUuxSϽ|Ր$Swj7vZ4!۷/(([nVhb\Sܟ>Z~ٟWeGBdR|+=1I@D^@v!s)9 u䯖,zћ_lNm!!uUxPUW*yЈ\Woa8K'x0F;NPA[jkD /0Ll3(r 2~Qjܸl+:0n &qAAA>}XBP _ǂk^w Avւdi￵;xX,'N@y+A1Z0og=NJ, 1twT@⚯_[W.؟9orE5OgjOߛ]왷wbww0jS׼6+9uj؍S~(m<6i7r5O{@Tܼ~ ޼uMu'6### /R ~[m^W$, ]x?ZW~'{BI3!#u$p#_؟!akQ3Sw81~vw/;}k5o>ȫ wWN>ڧ/f;t*soxw6Nn.\Տϸyd&k>9ܽwܝq }TIHrGDab0RDܳI'#I Eq{_(Ss]wGbMCɔ.?::R |TS|}vu'JAS1@ٝk:Cal"/ >5aw2QⰀYPm']\r; J (WM|i*Ro>d7/?9LV;-@6u!KʆO5Q|+{unBV-#RnZ6ʠ3* ʵVG#%[h07r>.OYy5|_jպȊEw5a:hcX!#SŴ 5R]ST%6d c~u$@) ZѬpZDCR"(DܱlCq 9=z^@p+pΦbMNizoa]tT. m>WPo #0x͛|vV-<1'ƱlPL5קJsŁbc̈F;[TtZ#-vah DxcD33HTr3,-  -yD146=<` "##ӷn ƥ[n`vzm F+,ms=3Nz5+NL-nﴳ![3")@53mpH*,,ܽ{7x`̴@獍YYY*i-%[^.t֬) 88#Ț}["ep<111<<0n ˆ74W'VQz1>_G hbަ'g0"Ab `NƴT-T0M:g?Y^Z֨tۡ0x:4`Ne s٘Qa޼"*oL3'ln1dG+Q*ꍧzwjRc䟭ӲgvΩ1,ݎiٜ bZ)7RCǕA \ļĴy|b01>]5dkb-U1mlĸ1]w1*!Fb`IXwb}_'!yYU7s;HEºZSɂu'aIyBa-H֝u' O'WIoa/ \ך5 h4Ilv6) OL.3b8Adj}*uŨ˽}{ŚO̹jbuH]rnRN7i[@0Qg2$Aq 1COSA tL{; R!pTTa@ \,qb:J]fPUᮃVp0N qbF%nNJOrIRܱ$`4dDQEޫ`<$7 vi;qbJWc-ˎa:7-Unа-nK^mHHZV~9)΀ZWpw1%fݫCac 'ybn>֪Wyպ}THdV9b}=:G w}->;I#Qe8AML}G@ҿТX^RPm1/J*u1 㹡b#GRWb=wSPr m#d=|/>^xnxPp^CGzي|E{skൕzWE6D 4Y >*wJIq3.$k {ٗU &=Unڌ(E`H[ W>1ou'ej9z(=zX,V 4`д_~eee~QFyH4@k7m-0R0GlܲpEUumu(<'⦻~C.o=wiyWTɂ[+u/`yk6mv\nA;e/Ys4 B <`mwi5±׮TPc0 cr7oܒ[^YUSۈHJ[z^qcV鑯ۂ>g]}X:Z>181DTT: X0B.!EQ8^^ $= uH Uv>TXtyg>#U]ؾ{3} o>q}S߾h7<-f="1դϨ PTZW K )nvnי 0/+=^XZ5iNc(A8WQzgcǧNri~_Jw6'ƊV!zc߰G3z}X]TRc|<|Hj828֝t-X 4`$X,N1Xd[jz8)6zYaŌ4_թȎu1GFn_:[[>j`AZ*2k/.$t[3 1%ň\&2j $'d8g0,64MEuXtm xFdx2 ;\}[o͑"FGw-[ep/t #'^#n_ c?ƧPZwg ;wܹs9(f@?~R>}s 2*w}y rM~]VC_9㆑ѷ^7 v`[{l'kD?_NoX^/R 0"[KupP`DjУIॅ𢄸,`K~^QtFk_SX,Mht}cMQY3~裂DA"1D^[N+txusmOhn-nK6@lٲd񉉉&DÇWZջw^z9NY(R7&4$HKeE 40/6Ξ5ྯd2*Zf\#QmEo4P*/d\_zv6⺌F|W-] }$wjXIȠ`,.a1&#(J~!xGovRcX4z,`r{(N:Iy[߾}޽{㣣2:thϞ=jSC5ǣ +C1ʯ_{hD2ujWPk|[deʌ4 x%%zY_=7nNF'DPyax~}2R$-c>mvJ: _o]k[QA=@x,qH+-Zdjm7*K@!G--->Uvzt={j*kxpvwgŅQو:@-++=~hqq1.]eg?ʹ ҵ5 "D>%qWsVwWI6N R 9&k.cMpx:Sg0@9FZ>Ύk`Ꚙ|b>=\m`Х$gTϐs`S0w9- "/F 1O b #0*.qbt:ybrX7ڥ\>X0kQ\y!K(kU;)^4M;}U!b. ,OW Mɟ:GC`5EO ;Ĵ-\ lĠȆQ-~Q1 ô$N`qmlv9>a LYn$ :ʼn߭77414k7o)8$,JL^8h~{[cI;15}?D;wͼ &\o W|T#cW{.\Qt}GΊzƗ=LxCXg.V|d!<{ s^okaIS>k[dM8M8~pq^9?5]qXM|9Í1 QÛ>ybz3߿<D~qW!;g38 Z+YWomk%7Lֆ 3xg+a{?.7=r3{ꉛ/GV8}ho9c?zȂ_GFt'Hw97Q#;͉:\,KWƘPxk֒]v@ww<_OqTe7 j\ĈOH 0hp~ib<Ĝk3aL^Cn8麫q^ kL@ψzb b<.OxrĤז,Ng[B2d:w[n aam'b{]sZSs'xA 3cۣ>ʔk=PW%eI? 9"$,n:'"v((Dq)GoG>E5Ĝ/u'0R*Dī޵}˦% ZV`vVia.&!-tKY磆nÂjPzhNDGDOw[v,!whoimZiw8Kr:݂PT6ط{dȐWhQl#S|xՊ?Ebo+n1s-3TYU)(.$XwPb${z(wx[C S)ioDƢ}G*ssJhh.ACEcTxj\602-%EO>kDxL얤O}ſkF pQYf!UW*ܷZK GP U;R<#uc" NٯGװ,o=9 Kۭa]; Q5Ըȼu@8Joۛ Ƨ_bT0^ Z`Rӈ4`@ZVC"jv͹uz119ӮFqn逃aTV!e9ʹ\ iY>18M6@EQo>1*1sa|C)sD1Fi'O*uCbEGL)L 4D)s(>u)a|lj!u'lg aTvѻwhA`4~E`G-qHGNK8IRǯŲud/RPWÜ[0Ү,BC,CHJ k?"Er0c*"ecv٥KZ׮i2[tH_3Q-pTVצ7 Ebz3fQ87Ij4FpRB_Fc94.F@x[TQd NR%c a:vgDxVr?(AaEvls(6>"s/o<بif3IRMGiݖpCx;FJСLiVRᇯGƎa"rVi$uQ1-~_FY[rO8e hM{7$^ٿNO~B,Niw-ߪIW xa}A10G9q EӼVӐ8i bmݡ 8 MӀ2xc{uԿ߿wLW"_ud'H+ Kթo])e9ruF(5hJXx AaIqI)М`80חmr쫟F=-+1aC{ExFʂ_{зkx:;_տl-2Q=,۳7upk};6UIe; P |aĮ^l(o{eMJj5`.wOV~AÏ?./9zG8eYI@p `8A@ ."c op nl`l"Vui7R JJ~}*3Evݓǎi3_,T! ;4w>'RRme^ђ.L嶂K(fO}_`1a[/3']6=L ˌD[jqlAI4h;g,vbF;%^ŏYzppH2rX]YګSLlDlzlmԚmGnូ>oz[>IwRsZ>몼[{ʬ$CB"f+_ӈdHXѱƃIA۬lh IEj1>G|b^Gf^tjא@ sv,]˗.%H PvHqoQX"Ϝ_.44cơmo;Ӧ>S%ffdžLxlS]w6ssjR06z#HhͿ=}^&ry!'%NaD>W6,Ƈ]})&zdragJન̙}ƾ&fRbYi[i+}z+m{i-f+M3 w 5PP/pYߙ{r?~sgwf}wL5vmN TMGÉV^"s!]FL 4O:d\PC"*ʏ*wבGKwn٩"Xp* `77dCHJH3*+5%%jŅ6A&jq̰|8\(> I# SE)"軟y׳כ|X;K;|7)=^]s͐U}uӄ`WmoΥhf"GnAD|&\E ;ɿ};B n0{hIWå3hz_ITndY" A}mΘ+]vEPTP@F4ւ;{`}h-ٔkn]M2;3,E,˱ L ˰p fAzԷWeU$N*U\sBM蒹&Hl*Qd*1 R\B޵Ð8ϩѳ%CRGl}_`FR[(D"\ܦy= NeChxqڶbS'$DVziauZqZ0*"M(kϐޔswYV[vLiQ"E13R4Ԃye N=+$is^I۷/LLX9RSSCrZ~-WINNիApmBsij>9cbg5{H\Ե_Gi`IqݻmHkrƾ}[lVQ*/gQ,:ֲ)"ga.'N0sTۨx KhGfiV?Ֆ6ڈ, >zF*mV a)*?_ Y=VS/WC۫7XfwHaMp:P*X^?TEfi&0ٹʮ,,*m13uv6)vUp <~eoa}>8]')TZ',PE 9IhV!`˯k>x!%lSD;]1''o.4iڸۧ v~o<9gLV _oaQUkTTsYE[R@hԭfں<Ʉ^^T {`QV;t)Mf͞'h|p?5|dl$s0VV(7I0eJt%xVݮ$ᯅ+8좌< p85Y DeE2$4dJd8SA?Re6lDI‰% O< T ކ$ 9>Rx? 6/E<:Ű8W.})ȷ|UGn* 2}h:v)IA/yde`DZS %>N̸6pD IcaLai,`/&1Wێ쌇F?;lgyPϑLLX7s;ۖϞy̞=ȫ|3"M$c PԋK'IWLJDžNMPobWL~)}M/ -̲S_Q}~/g_}[Fm~| &ߟ;3F25׺q߱)3u;ef&Ǯk!]>(Z^s}A15ᮧزlqok؝|90w> 8i-_&3q߸>{~4w ION m^^3%L[{$VkK`h mxdhx{EL"hʮul( }' p`WZoV,<ő}oPqI Sc|}7~Ĝ_~qx-zј76"=: .ũݏ"_anW;#wڸ8O ['츽r^огfkU{咧&-ԐMò.Y#[V~~ _w=ҧO|dܩo5MK_{ QWa";b0Lw-}zK??'r'~yUu?CݯUS܏SY,Sg㓓m_X1"#QYx]a ø.?y¡p4eWk$r;鮛Ԃ5*HrPtAIv`KmްM9K}E1yodPT]HNJN0jŪzuzz0Ggl Cp(Èa]yMgy=sݴXΣZa#2>ngMQL=Uzx%V">gz{^Ĭcށ|xDŽCΙ=1:E;Q8Kgb>q~zE2nzⱙ-N~{?ЎrQsZ{MUɎe%U5T2m2;nƼF8r`uhD}xN3Cܺ{L'obtP+X]u}\Ȣ3O=AsVE1!و?3E' ƐROC"T +ش&UI0ty?HJMQ* 8Spb>0ё YWo94f&:B x@,wP4͒vax@a`N;ͫ鉜XS0o/t/<~)LEP){g?0ed.LLݻw_VPgS)Z^30ti5 ₭-1pݑkWII8BŁ#cIQo!0U9Jɳ {)Py앦'F<{_Ţ56Hoׅ(1$&rsnee@!K>1Zg;zTθ 0AMnMخ0JhА5oúMșO.),ReDUbiz9Sjz9.~3iR`M]SC`bt1k!ooU]]5ouPJfr/RӻoSƐ̾=Ro(<"edO ;V/gJuԴ4=C!9Ku8.] /oi 2tD4QrM~;|c$FŇ`*'euY8e'zHK;ߟ{h"67?MQqapõa{$iRj]wn l=z0:ȭʹ0GYPPPRRR$@UR0B{ܘěϹ3]% IS[YqvȲ(Cjgy2ll'(8k-q.sp-H:Enf-?x=cu$꼺*:6v?^mTO#L5N$v,枳T)KkеSCo$UWw)V/פmi$7@gּˆq C^յ:KOL09PS&@ߨ%zMk⍗Zk>XQv'Q ϳ7 K9i𻠽*K3A^ݵ 4=xs^ҳ*oiL}KHwc6qa\ ||˲7j5Y;kB΃y>'\s!LaZ?O {-<~Cź,4RvmpXc#?OZb:G#w91 a֡1ĐX; =ؗ'k'AzbHO aZZ'։y mAÝj=#'u= kQV䘦K-4m#c -ANiJ xlZ'%D|oNz󨇉0ӡ1}F}!*eV$IHxN_\[9&xh'(N+JdifxgA+xAa-8!cEvR8CEi#;%N"L1M #LG/}m^zWۙ00j{ u]ml<U0'֎0xӚI0gy~Nw|dWeU^nN^^0ށ9g9_jZ8!gV!JG!T:BBBA |bnϰ3wDy[ɎIl|͡`,{865:W]ۡߥ)*lLyCcylb[7n|w_45eeWD/B}sY9rUV=^ǛQZR\ZRIܿh16^a;k+YPD JK|5^X(U[&nPĚںʕUOw|ߕ#K [,SF؈D<x<JphócNo)rީSQE/x /^FEJYVCr>˖}=ޕ+Ų 7׮<$HW5=Xkc#߾WPz =~V2qH>%S%eIOUoTs<]Xdev8>%ʛF7!L6y+=JzҵztJ)U%oa[?==V7wÚeBz"6x^m]惪O6[s L{U׎qNGō U\vWVzڙFM;B:/UvZmbiI=pfW7bl\Ua$^<ʪMvd\]-3_P0KO(߿hȬqiwsR0"CL.G)% ^,6:ٵTڲA_[F`CjMʺ'5.-~"xhk,to;:Jr 3O^(o/d(UM;\DEffSD7xK? ^+^9걍l¥"}[6lė4yԼ܅;WH^,;Y>}֟(tqշvWKɡ3}Ln?qq.حҏBt#G/*EzmiN2e]DO';ChWvmT Rl“F$@`Z(-7=_ zqU:ǤУfEưJ}-8J4N+O|gthfƼ 5'DE'lɂ"hz (ϱpw6>&Ԙ縧"W|)BM5%CL9LŏT,=؝,+GQ6kEz.BhG#~-r(XŶl S5QBzԠG? ,lZiIі- ?];Aʈg#lt>qב ב *!P!JGB&D-t5C !0JWV^{kf%<2eqI1ҁ(Ss !I!T:BBH3vcMm]ݾΩ`E9]~V#.׭9O !+!P!nsxI=։k5^][o@#$"|Lh4ND|!F$I2t-n*Tգg\3"?Nzg~'olM kF?'YP,J_'>j7T:b$6Z/6KYR}E ~Bkǧr)‡4@ a-BFU)F)EN 4o9Q JG C6IzRQQ/PU:Y]@0SɹOggpIrVƢ YTTIK RMm5'IMIA2/U*i(z-lwxMG $L؁GZ6o;+P  ?qQG9e> ;y6N$hi 4aI5(t)֚t&x(P%U*iZ9O(S(b?%69k]$}̄aHzv 79W}]\W.{H.p;qw;|eGȦcw.J1'ۭXH$6=wu߹Z%HՕrs۫V8`\Qbg,RÑmlٲrZgJkȮtK&eJ[rYm֯h=iưˣdחJiWVO}+\Fq s`v{*շϻE=';4fKI.$b8tlPl6i_{?x"YW|r^^6=+!BU)L%Ғb|Duw6lYC\?LݫĶs$ MdН1ĄJ?TtZǻ=![aw\g>IfBtuґFy(stJ3/nfU9S:6QԘZiށ7 $9 W*]?391% c4NmzwAnnN,Р3&o*9=Yig53H:c.Рc=P ̼1WopQmS3>:)).VLp&SK:%2]~tO-nӈW8B!S&v}͵/ocMa"NDga2P($ݞE,9rUʪrl6蛹9"JׇD dp*AP]21_3$CRtxmڭn +/jѠ#=†{ouŖsd茙C :t&::vZqYii?؝lsl2AGeb" n=2{:ܠQxP ۨ-l}'ڻnpg硣AG1=KҠF*wMf 42!D+s4hzhH>o".x<Ǣq#~U XY%SҒbuD'>#tȮp>;>Ȝa9kj7օ9fc#;._y#?i[.3\5ҥ Ҡ%ͪq0g؈/x|fxeĕ1W"e]HӶu!sr@ЙkeV7Ymr5GڐxGXEIiѠ33{z3s52h*ѕϣ+]k)fD :3do6:kNѩUx䮬+FG!cRvF_$VVCg:>jK }vC 7t wecrtGI^# p 8m/+j7eiI/iqUVz/Hx]99g~}ep;Mx5acDP;%L{y)Z{LT]" NMK:*_9m/wtq̽޽g9c:6jٮ-8uAOmw߇儭6zU9g#T:3~yc֤:̿Pg  vgN1}Jg8;?#_ɁH'W9Jg0.XCMkY-t{zźFfG̟ҧ0oY]U /Ep;x7w@遌e#钂 5k.U(+ڴ} E\,[:BK bz=-ql=[ڳ8f;NKRq:紵|1B#$f;~vp뻜Pvꤾ*g,PʽKMYUGtp f9c*?n?wt8պf][fxGPRMZՕ ^mޘ9}ru <^7>F) M~ʁ 8-z"m =MxaIL!P0GL3vM/,6?9=#z3Id.<<֟t΋ 7a*\w Hg.F1}>f?lwpVVKhs{B>J5:лMf;?.y)+w˾=Yi]?]sn3۷QzWSG@R2t1=VV@ưˏԩ 7ӿMx7ǩl#T:gγX*W Bw紵" Z+.)xڧ[B`Mm֯t+v(>s͛*]rQZRgIA4k8ZQ9'.ǃ{%,/zkFdvEc+=](8Ц30mS3փD4u?\}8xP43&^E sҵ*IQHπszo\/!CZO%ۨշ5pɎIV[gHMx G7“3ǨHl֤ϛKK6.Nژ{aqU#kt:?sܴEjEgv6.4gj茙O;w6 Ƀ^JiqlAťwRG];WWUʯu]3a0f]f|=#NtR v/M8LmKTJTm=H%K֍^OYnW3j?0.ژqT>E?,˳O| &r>'_=m͐cqo}0'^鑲5/7Z/ބY V:H':{4w& -v >lg7A V-|]fŐ'1!XҺF̙7f6|dѼ@4k+wN[+/[߆(i$ )"*O-D5T:3SV< lerc5z3Bse!b>5_ḍgמ2w\۱ٟK#$ȕSº+X,Cdp[,w#5{$nsg"7ڍ%*!W:ϣ+]k+!IAE5GYa#p*!DqdsWEpLF[Sx lx?E+Áo?My#.BG\G.?JQp5OO'Oǘ?zEEcef^2%ʿ_J,8V~~)o/T "fx==s)3x5q-}};`=qk&2GX?T:BL¿n$J#<F! |7V;ڸz S,E&vg:&Hi=i%M3]|Hb~ʝ3>vu l#饗St??k&p#1#:t>NL0ئTIENDB`xyscan-3.31.orig/docs/en/whatsnew.html0000644000175000017500000002457311476030104020171 0ustar georgeskgeorgesk What's New?

What's New in 3.3.0?

This is the first multi-lingual version of xyscan. The first language provided other than English is French. In addition two new features were added:

  1. As suggested by several users, I added the possibility to change the color of the crosshairs. The best choice is to pick a color that contrasts well with the color of the data points. The color can be changed via the Edit->Crosshairs Color... menu item.
  2. xyscan now allows to check for updates. This feature is still in the experimental phase. Checks are not done automatically but have to be triggered using Help->Check for Updates menu item.

Bug fixes: When zooming in a plot the scanning area lost it's scroll bars so that the markers could not be set anymore. This is fixed now. However I want to point out that zooming in does not necessarily increase the precision of the scan.

What's New in 3.2.2?

Only change compared to 3.2.1 is the addition of a new docking window (Plot Adjustements) that holds two spin boxes that allow to rotate and scale (zoom in/out) the current plot. Rotating is mandatory if you want to scan a tilted plot. Scaling was added for convinience but typically will not increase scanning precision. The docking window is not visible by default. To view use View->Plot Adjustements.

What's New in 3.2.1?

Starting with this version xyscan does not handle the scan of tilted plots any more. It assumes perfectly aligned plots (i.e., not tilted w.r.t. the vertical or horizontal). Scanning tilted plots required precisely aligned markers (in x and y each) making the scanning of perfectly aligned plots (99% of all cases) more cumbersome. Instead xyscan now allows to rotate a plot before the scan should that be necessary. To do so use the spin box in the Axis panel (next to the log buttons). Use the crosshair to check for horizontal and/or vertical alignment.

Due to this change, setting the markers is now much simpler. Instead of setting the markers exactly on the axis (which was necessary to determine the tilt) all one needs is to define the exact x (y) position for x (y) markers. The other coordinate is not relevant any more. The old square markers were replaced by gray lines.

Other changes:
When all markers are set and log is pressed the displayed numbers are now updated instantaneously (before the cursor had to me moved once).
Fixed bug in error scan handling. Error handling method (mean/average/asymmetric) selected for x was applied to the y errors and vice versa.
 

What was New in 3.1.0?

The crosshair can now be moved quickly to the current mouse pointer position by double-clicking the left mouse button. This speeds up the settings of the markers and the scanning considerably.

xyscan now allows you to store the scanned points in form of a ROOT macro . To do so the filename has to have the extension .C. For all other extensions (if any) the data will be written as before, that is as a table in plain text format.

Marker can now also be set via keyboard shortcuts : Ctrl+1, Ctrl+2, Ctrl+3, Ctrl+4, for lower, upper x, and lower and upper y, respectively.

Minor changes to the page layout of the printout.

What was New in 3.0.2?

Fixed typo in marker position dialog. Otherwise identical to 3.0.2.

What was New in 3.0.1?

Version 3.01 is the first release of a complete rewrite of xyscan. The previous version (2.09) is not supported any more. While the user graphical user interface changed quite a bit the basic workflow remains the same. Users that worked with xyscan before should have no problem to adapt to the new interface. The main new features are:

  • Mouse handling added
    • You now can move the cursor also with the mouse in addition to the standard method of using the arrow keys (see Moving the Cursor for more). This was one of the most requested features.
  • Drag an Drop added
    • Instead of using the File->Open command one can now drag and drop a file from the desktop or file browser (finder window) in the scan area to open it. See Loading Plots and Images for more.
  • Paste from clipboard
    • Probably the most powerful feature added. You now can paste a plot from the clipboard into xyscan. This means you can copy directly plots from Acrobat Reader or Power Point (or similar applications) into xyscan. See Loading Plots and Images for more.
  • Docking windows
    • xyscan is now using docking windows for the new settings window , the coordinate display, and the data table (see Component Overview).
  • Settings window
    • There is now a separate window that display the plot coordinate of the marker selected as well as the axis (lin/log) and the error bar scan mode selectors. Markers are not selected with menu commands any more but with buttons in the Settings window. See Setting Markers and Scan Settings for more.
  • Printing
  • New Help Browser (see Getting Help)
xyscan-3.31.orig/docs/en/markers.html0000644000175000017500000001124611470425215017773 0ustar georgeskgeorgesk Setting Markers

Setting the Markers

xyscan does not know anything about the content of the plot other than its size and the color/gray value of each pixel. In order to make a coordinate transformation, i.e. to translate the position of the cursor from local (pixel) to plot coordinates, it needs 4 positions (2 in x and 2 in y) in plot and local coordinates. From these, xyscan determines the transformation matrix. From then on it is simple mathematics and xyscan will display local and plot coordinates as you move the cursor over the plot.

There are 2 markers (gray lines) for the x-axis, x1 (leftmost-x) and x2 (rightmost-x), and 2 markers for the y-axis, y1 (lower-y) and y2 (upper-y).

To place a marker, move the cursor along the x- or y-axis and stop exactly at a point where you can clearly read of the coordinates in the plot (typically a tic mark or the end of the axis). For the x-marker it doesn't matter where you are in y, for the y-marker the x position is not relevant. After you positioned the cursor press the Set button of the referring marker in the Settings window (see Component Overview) or alternatively use a shortcut key (see below). An input dialog pops up where you can enter position of the marker in plot coordinates. For the example depicted in the figure above x1 = 0, x2 = 0.35, y1 = 0, and y2 = 1.2. You can place the markers in any order. Once a marker is set, the coordinate you assigned is displayed in the Settings window. If you think a marker is not properly placed you can set it again at any time. Once the first marker is set the rotation angle of the plot or the scale (see Rotating and Scaling Plots) cannot be changed anymore.

Once all 4 markers are set, xyscan will start to display the plot coordinates of the current cursor position in the Coordinates window (see Component Overview).

Hint: the further away x1 and x2 (y1 and y1) are from each other the higher the precision of the scan.

Shortcut keys are:
Ctrl+1 (Mac OS: Command+1): set lower x marker
Ctrl+2 (Mac OS: Command+2): set upper x marker
Ctrl+3 (Mac OS: Command+3): set lower y marker
Ctrl+4 (Mac OS: Command+4): set upper y marker

xyscan-3.31.orig/docs/en/xyscanLogo.png0000644000175000017500000001443711311545651020303 0ustar georgeskgeorgeskPNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<IDATx] Tu{y'jZP1U4jVM5Pck&F/m4QliF+y i+ QQDD^9]{gqr̝;3g{d-kYv-H1lI @2d-@2d-@ֶViΠEsJ 6ZLVWk "W'{  ii:мoZxb#XB{,8_=âd027*u: ѽJMs2Si]WA/sv2>^o ۊJ(rn;.ZZt_CO'Mk2W^՛AgHs}.~|`=mQ/D=!*mL>I'bc 4`\{.`O-4_puS2.Gg ʽ@Mk$@4mÀ/}YuU*$H^6M ơ3/K^'r݅ 2~mi$5P׋01'+wӯàKb??m +sV+c&;`0λ%`tQdž/O}_v ˀܛ_RE:W !9cHp. d:8IG@dO;w&`]zhdP#\S;'pܾ?^T!99?pyq{ l!'NQ {\ُPn$WI3ی$,bҟzx{κO> Ec2Q,z!Z&]Fk|lԞ% o:nW6Nǽ8,Y?i@#s>gbw @$f Tj&5o]Dq«M+$K U&QH=F1(ֈ.}GAO#ka0Zi%5z?uF鄱%g^j + m[+klJ6JY%F|ir!s} 5.c!!eqo&]xm}_N z4NGAt| |m۩wlNSG 븧5^.:=%k8cA;uk9;Jlw]^1 vXmjdߵ8ر;n~.P `ޕ/p9 lq벲<4l6>^sIi$HcFG}uP*Y4.jI?#7kjsI=fm@id3DޝD&RIF^v7͏Ľ93qfW,TDY=\@͢1`E_L(˫58v(f EksLnAuj%J\ 8o8d}{įg$~xmN&"2LJKA縧FF I=ulTЈ ;hx~ S>ukb)_Wb1&e"vǐ/\6W>Z[ `^GH?}ЇpX?@62'1 j)Pgyqu%Y Fs$ w~CUwXljZKńp=S!.UgU 7mo<r1 [аHEH$ǒ?Ͽ|k};-z6CR ɶ+ܾuo?aG `>nZ`ԟ?=] .FbqGXl9>8Q^pв ^,ajTv(0b8쪜b~6e L_sE6WDDf~"<vv ; ZD@X/S NW: <<ۍ!6n'$y׻^.,>ZKF."Z>@ӘHp ;ʾmNL+#rh 0dIn__pSo{PMȏkQMQ_6%p e{}syR/\(g֙]CqhBzٕEɓ݇>\ڙ;Cu9d,Qqi[0S͢:C0x8/򄾗~ "gIxIY3RŲw\`}8P{BYć'WGMyZ~p~$9v M!ܯ>x 6,PE1y~=.m}yߗ V) )3 !AcUg()BD|4F }:E=V Qq"s?Gl @T{͸]2۸6ƽd!IY@!;,[xUn'CS&q-N} #sJ1/"OH=Ț$|K_;orQǷwircp=cakS5'k ƀ}vn>3[qr-ty AjuO{>ms+yqf(_#9յzW1/ҏs$`ezX^>`7,'7l+G_$cpNl$zv9= iNQ_"`Sҏ񭧁_9g^lNK#:)GE&n6 ֺsq  yw5!;q pַR}fv#ImT93!OiWM|K!= |B~/p$~ARFs`$F: ]wIw/A*"  n'Z¶rp|;gY$u>Fe*ThN돘c8x|~2BoyA[. HV'!CQwLTU-]un*ՈWp`m.kW3^x,1*R;P]*@ݩ5U ['h\ˈry`W誺T-ܦpQR#U6llp]'j .q|Qؙ KZI@$TP_-'|P+^4f|Oilqb  MXIM-~TtRi*@s חQU*6UeMU8yT'TK(>H9l-7u nM^UE)ءwT#OFrJP9ޗ?e 45 )Ŝi?r@9O =uL$p 4\=K̭7$>`p[4S2)8$@ف6R%6. Ot"X?%N*S6# l~AvxԀ' 6,O'x ||0PKe h,fݼ{)Mxds,Ю =ؐVY gJr=&ZȒain+m&$i 4RT Oe3(0H D  [z:o+ RUPHhxj=1I`%2`K>nUs1&S#ֶ!^KD [0Ơ nQkI%6^zkȚ2#p >Lyi^Lc?كƟn`RU: Introduction

Introduction

The xyscan graphical user interface (GUI) consist of a single main window. The white scanning area is the only permanent part of the main window, all the other smaller windows can be removed, docked to the main windows, or kept floating (undocked) at any time. This section gives an overview of the main components of xyscan and the workflow of a typical scan.

Component Overview

Workflow

Coordinate Systems

xyscan-3.31.orig/docs/en/load.html0000644000175000017500000000261211470425244017245 0ustar georgeskgeorgesk Loading Plots & Images

Loading Plots & Images

The first step is to load the image or plot you want to scan. This section describes various ways of doing that and discusses the supported file formats.

Reading Images from File

Using the Clipboard

Supported File Formats

xyscan-3.31.orig/docs/en/clipboard.html0000644000175000017500000000352711470425604020273 0ustar georgeskgeorgesk Using the Clipboard

Using the Clipboard

You can paste any image previously copied to the system wide clipboard into xyscan using the Edit->Paste Image menu command.

This is an especially powerful feature that allows you to grab plots from PDF documents, Power Point, Keynote, OpenOffice, and many other applications and copy/paste them directly into xyscan. In Acrobat Reader use the snapshot tool to copy an rectangle to the clipboard. Remember that the plot will appear in xyscan in exactly the same size as you see it in the Acrobat Reader so try to zoom in to enlarge it. The larger the plot the more precise the scan will be. Note that you can increase the size of the plot after loading it using the Plot Adjustments dialog (see Rotating and Scaling Plots).

xyscan-3.31.orig/docs/en/overview.png0000644000175000017500000021173611273203047020021 0ustar georgeskgeorgeskPNG  IHDRu tEXtSoftwareAdobe ImageReadyqe<IDATx] @TU۞a_UP542-)3+[>Lˊ,-1 TJ0\AE`f߹.fV/B\ }eB r ' N m_#l:2"0t1~(@G9,[{g'!/XgN FCJޒ=OFBn^jF$Q-h)pks~_A_C= :Zk(YWf:"ԃkP k.AuQ HuM@=Mvŷ !V V:zsy@.K(=ݝR+jZ thảxrD Y@6E2@DFe KOH #BG!jދSTϦ"񁟒 (4ENz=dp/5p-!-9ZnFK˺t38eI/p\ a``~PbF$g8(dg} D'ha51lx9QAG"1/aMT&ނ~fA۰KP9S)[;)6x P,ȨDF W Qu KPdDRA9׀N>M ̯CE=s"ݒm֞0:0 ].8kDYc2{p|$rZCo_ԕdEApThdmD`! 1rv*B29%p\3(4a``~*:yD(IX?A6 h\?sjz"FB*ODLf9![Bd3"jv2p( l1dizй!2IQB(u3Z:9(t\(q  S< Q!h2IɑD!P_'V, ȵdCGAZbnW8n1$E`؅\d遣JCH́D3u2rH3K6¡9@'^)t@}s`]혘O@500b` B=zwreE(/GU*SOB T<`HZF'Ӌ7h nѲy^<3T(MZNkQl7?h9x`cKj4$x̯}o_uPw:qBreF> tv!n#д;_ E(-FiP!1rm]L4e:Pl;kP]4=rVZ4эKxD!r54tWNuKg wj;s@E}[PF4? Y(&-~{ W V{F1)R}I"zD(\T)FY^ < AfW@B̢J\غ{=d Ed(̈́4qR-4}`9 !.b,_10NnLFEkF]u:~ZP OU$˴)Nx*rhH,^ x| "1 P 9V2{BrSF^\Vwd~ְx4$r }e7֯}PPwrUwm;ِ"͞@{)cL7d#Pj3CO$x*R Xbcaif,!_xxx-A%W|kP~n-GB!A*555FYv655A؅:qBI>?؈zm`3⛆ec?me&nF֟7D#àkII U w^v4i][QkKщGkVoL߁n?a1z]P4vcYeE8=U4%\1;J+\BiLưR葠9#Y5t7Dwea4t9i@očӔ33'gԫWɣWVV:;;ށn^XP'9?wuwa_̼B\Q{w& kA4W x<UPERFEEw =L19x~Aԯr䊦r QL U L%:S34I$jSH ,--UkĮk1VaV6kUADIII+ԩSg̘AsNBB255rsEqa~Ś56m$|+0TׯdqjE*H>w7ަDͼ+i&c\.*05x+;??(^vAtkmBHFKڝN.<-|B/C862eJ^^gnn.`ihhxW޽Xb~\lM}[vn` !zTEՏCHE|A؂Š:ęr۲yF+[Cu۫(\h[X_Uxci7Ӽ\[J.=QtT**6ȵJ`m]~e2y,Xߦ#B`?%hHkDƆ:HZ,nnl]>w[ڇL =wNF ff7xXڜEUB iңٹrFw̹Aƴ[55uI"y6շ]f2SԺRJCcsssrˆ~~577=wPZ>\۩ ׍7=1KkΞ95UQMS|{)CCTII1һʸ/sg0oD+m5l[2軑0MM43Fve=h?|ʤL ::Zs cƾ:R=5*8|4wUiʎƎRF7wEi򪺲<~H· )ϥ)(_#F }לڴ ~э+P)F {zz&%%EFF2x&FҘ˻+;MFv* Rݬ ZVZPƺ5b$/v^E}bvjgnX7b xX䶁\UKWVvg`v0V4;yPSb``XXX8Y֗I-Y:3lٔ{EF/ 1 _V'j`KF!oCꊹ#:՟OaX,淴S&6:(lM,*Ωo<2!I\DaBF ̯r~anm:l=*e)3UNF W NLv}"z>tb##|d\+h_f]{1amYw+DJϡCFQ|hW_*ˋ66{5JUNIes?7;.1}c?γ#avϑ9%|&_&|'kX'hQ8BFWz_Q+Bn߻`Uo?K Kqx !i{.9T9cwU;r!te&RJ2bW6F+&`+7|J^~wH1FEFS5em~Ա=ʕ=8)sƋe'n{I*fDoFVA]Lćq#Rv;2n޴&.R./cu1!;d8g&}7XlT\`0l?0Ȧ[9GX7|rEܻlR0w>fy:>*"+Y L{ |Tg|^{v t'[B@ `2r%ʡX_.J,ٲX,I>~+j}Zڸy?aV>(Fz94&pEqYLLL\kjjh*tdlkkk}-[[[k?}15>Pe#ƾ=9oTx3u,>;#%! ktz#Vʲ0c npptsѝLt5ą(zu- <ȼ3f0Ǜׯ 3tcr{k`STTÝS}jS2jhƊ⍩˟=~${6OZ6`e7s|+߸M'LN+*tN;TuUeJŗ/]K9s|惇 Oȍݿ IvWg ܰ͛6vg3dٗ{1u W鳊%LIP󟗥]+tIs^n`?uKqZ#[j,MNw\Wvy}-K7~iݬi#}&z9ZX®YӦ:mpg'r95mMSRᓞy< wݛU/*݈s4NBtҤm/G-Y3&ӻiyY9oFoq'["l>8mEUvI$1qѮ6r*0߯>7K$h/-剥겒^q WͿ9Z6Jw O L 5 =u 󛅒Ҳ帊kByvǍ{׬uS3?>pi5]S*98fT?42J@J;Z׶b(07i=>}+_bBqljɲ<4Щebۭ{Oq_0G{hG&o̔in},J07ؾ3G-F )8 soϑেM!"dypAdzGzxh2p*Pe&C$ۺ3@[tՆ6 xUŨ9pcA7B>z%5Qԟ6Ht4܊2BaSS\9䶮l1Ԧ eӥ\% CfL.=u;`>.u$9T9c7OS9 @bה:bTjJiJڪG4'pPn]Z?Ӄ:4sٹzg%w!Sx(iDC_V;65s'u S󁨲Iߍ8>G*j+v30v..A8F?anw~:vSPz0bHF ̯4WKOu|.?4/]*ҡ3~=#:}5 S ˫RΕշ(!.Ԕeywyb%PSK=G\~2RyC_/W#*h">#]唺k랱)b`FZ7F]Ϲw.vTeĂ.cc#K|ϵn޾.]T,5UTWϼ};zD^vVÆzHY^PO="(-Γ-~3-6ljh*,j~ļ曊gR5c9}5gd<w)dxxzg@S\"Ÿd^}}FmٔUC\qefx@jAS</2岣P!ENBFٍJmf.z|T,n2a:0Rqۡw;?esFMجy7m@I\ښ݃Nټi#X}1 x+u;h<ԝ?q)Ν;Qu۶rʮz͚WV\FNtO 平pضsgO<|Ȉ:+W.-**smITQ ·`;xWD/%~nduԂ_~o0lb11a/_\g{vgܹɩo\ty?>#ou{D 3Q[??}Ks[j6ٺ Twֽ!cXL ^ÿ8Vq0TX]G_O_QW5>cZͤI-`$WǬ.eEԔG;cwe|3+}ݜ(S@@3Jk˨RAt(HFD7P16@[ 444ȧOwoS+z0Gan.,pc+#?{Z(RKcxk:# !cBfMpe\9!#ߛ'1ܘ`NV tϾ'2,zto?wsh8[#p|t铱%x?S ?MMJ%@ ŀDmز:7Չf(OL<5GoG+c䵓Id0KNJ&|ȸ m҃)]l3 G#C%dX,Fs!=]6y>u"ido^O}=KS6RQ6 T: KW<e]%)}>xƖ!ūffi]rǑwkL0  ze]kMuM+IH- K6KPW\u+W, Xr_ټycq QEEE ZkHNWSP^}嫯y R;$, Kq%6Ms@I\Ʉ,Cvd1,@g(XFώ ;t0xCs&޾M#CK$$<6k^Qa+r7n޴qmQ_um%O )P@nۇ;Q`G҈n܁)͎Pdh|ʇ ;N0^"*G rÇ9o#1_ҜQ_Q֭?mրwF.y5 ?`ö9x?_}#=i2.h'%Gסsowh=)!e4܁I)( 1I : HKǔX6{Ap1sQ_q|NFgDSW'RU`y';k ^}в__CHAOv|Np苈r,E_].e`PEXA膜;FQ R#dG ^A3#[FF?DF.9CH9Cu\L6-v;Ĉ#V,_)//J_Y((eDc)U1v]FEF=/9<jh)7nTŏ*|WKHG4b7++^&&&^H$466& r~`/Nm3,#U6`!WH:|ptp>lmm/Ԅ;__+vsmj^e{(w6ދ -nF 2pDXV͈&(+o]9^u]#AssUTCǴ*L-8nl%3(+4b2a5ђ6/((f]\\LXLq[Snn:w&#KKCMsv*yUKUSQqqQlLPf0XӲ/'2茗^}ݾk7/y?ƥk^v}OwOА}ײ?si]S)9Az/Vɧ_vzt<25 ø܉O<шK&W6ݾ.lYw2헟l[/>0קsL;cx>^dOΆ u[*΀x5J~@j=_nI+ܷ˧/{d,;.l8"Yb؂~í'͘y\kr ׏hIyf㚹@8m^O:@5.v܊JFD'E;pi3MN2k Joos1ʲgaӫ^8w}E3 b1鋱YȊ=-ټ9j2<9ZtsҤ^^encaD_jD;KoTH_ %bie"O7C%R ] y_xh?kGP]*;7٩3+*׶Oajgr=lon e7N EM`>8>DevQN8Ҧ~w㴱Q\GE{:gJ<5gm,*oI33s |fѓ0i)}l .j7޼[Pñn+w9.^p2皻i?SuIQ++0]3䩙ϣN3wq7'eũsqYEsWR{F"eZXښܗ d̢ٖq;~8f:C-R y96:X00ڴHBM ΕaT0MvhaTWeo)]cFP4jmyJ~J qr9!j1Jkv kbu)܄!ݜd'V=.pX 5oLAyyZvIkDxHmi尸Oh)2bDZm ;X]n' kFN627n`Y8e4邨'F9[ٚʹڱW>^Bgwu`1W3מ(qqu@uĿvRn^@'e{WCvOS: (0z9Q:d(3Hb9%=Gۍ>o80hF ;Q/re4Y3g$bQ#`\L/#;œy+40_5eө+>Be?y6m1+Q1.1t*X܊BaSS_2*̯": w}n\bFrK}pejɈ r||tTvݠWD}jϑ{'QD&Gڧ2QըqUX5#u1_<4{5?v|~nNUint QjԹ{¾g9֯=Yls4έMs92fq9m-41.TH=QQkKfϓ6;|^=O塳F WV82t*/ZF, Ms ~1),&dζkNv6D 3g2vѱB)6b`~5(9;\]9D|rҪ:߿qm"bVz;vB|NF:sG,ǻ}4wOes1|ق3s)],8'9׭ >W%P> (oŝ ֤>0e_SHj|u1!5 A¢M %>/DŽl7?Ymll<@,ChjjUP) 7==3()nX336ņ~t Bj3bA|X,q_61LjʇYZZ:::[_hilcOp<<<`|jgJi_f\6b잖Y.WdeG?QW -5!!֭[`ܸq?<ܹsǏgXBo ^%B zƯY\=--f{zzjTlN({ϪrJ5R:b@nsF@ooV@sV)LmJŭ^nGNfeE.5eÆ;4*>333'''00̌`ݿ?cժU aG4:uT__BXpaLLL{0&Pj\?gۇ;Frr6rCwp|V]扻]]y>lS7.;bjYT!ud9Kߟ`.D0v*!q㔯-n ~} i/<Ͽzd儏\"V^=㋱q ew/}dM3s͵n˾p3Ǩ}=P[[;rYfԀ>|8 PP^xdk~~>:x4)){@+;FtWyFdۛ6(ˎslp3+¹#:M+ dAڶu /oD\{0_`;?l=5Ҙ2u?t0[n.<>Hbas}Ō~M)m}Nc:~tX\z4<<(vر@͎ *=͆gC_A탿~NF!Pr`4ߑoV".W.K( d پ/s\Av4$"oV*<\/@2/4(ќ\*K>2LAJ06 }lL!_X\,=p(1< $PA^n[w;&3wRMjUR+^505T;RYSx,k?dXүХbKal%v*޽95-X=F+w6gddƟ)F| [[}DH2֯C_#݅ 7i'\ dIt_?7L_4(0>youeX1ͪK4b ۤ?VU꽺{.DYGB sA_B(޽OTA¶k-8@PSEer .HÁn&JO.=E#J./Q73P2Nӡ;/Ls MH0=Pמ^,2uȹ^q nݺd2+W-6 WIߤӸtmlSyU~XkkAch/s&ږ Y`@sP?Jl!۟Q`&+(llbA8ˏRrosEs A FIPǹ]lO 1(0wǰ7{ d{-9: i:i$RВ^%RP죏>* ^W+$P9ÊnTbȕ7тx8>GCFt8;|@r,]ݕ=w1){yn;q bG0ҝ|,>/h8tX8}@ YnC@"K21J;Or]$>*hPCuX]ЏbcccbbaFÆ&e/K_T:vE[|1%=v6s4fy"!LXES K,@t9dҸl(:U@ %lpn80+e ,SϻXvX};.9j4Xϑ`3ͯo"4>*3/BoӶb}E)Mxpesh'LIDrq|稘݊ehWmmdq HR/I#7V|ns)O4wSzFb<+5ϞZ~ +t*UAAdՃ9Gsmp&SUg%޿-\XDocq*n.Sp W[AZ6Ol{ [<T\y׊}2Iv- HyL>j:+lL #J 5oc G4 ix}5<A6ymV Y_?֦>kuojO9XTtGĵM}_ЃQ9bO$|D~Q xa`_Tzr驊sw(_6>6@FmJ!#J Ad14D E%OL7oV?׿0F5,~͙HX~_Ǎʤ[w]YouNmڷiXƢB`t-_̯Qу}r}#GWXcʡXÝKŜK7,Wt/v*֊*C{-7dI;sqɍ. hZzȋO*>Y[Re1~MȊ;; !%4~540Z.҆8C:>G)v]uGкHuz5bHFrGrIIX䪸 .ٷ/)+n tjX|isS݀EEEɩhw)a9]~;\xkkkьBT*tߖ` E =, a,(V1/(W`IK[:t_v'4 E0B##667+:ysT%ĥEUqtbk;>GH$P\C &td W^E qj* S9 ARw[369 fc̯ZT\?"myP_g۳ieeM?\G H2H|c(E̻MהǵC|Q233cX4f:N87ݒD+l4 xket͙H d^  ʘ}2 }55p5p X~%%]i: vn7K œ۝(st)>4ϡFm #l":O " T#A"=5,_FjI{bske.Yca+_P!~9.**t䴓W_p+hDx>gp| *g$,u005%i'|np|cӸrE{@;Ntu;ӭ\u&\9 v_E'9zZ a?Ѓ;/&nplBꏑi@4gtY ((b=M`W0 e h9鱟~"Cx4Z;em8>Gs1m:\8>G;9K;x :Cnlkkc2*JC#FDbll3y(S a6W3i6>cPP[X a;"9j֯ZsxxxXYY9@wܱ @P^WpQ<*.bD^<8bmpgJ7H)ۿ 41ks$ݗHI3h9JC\SU|8>G[FowܸEsSj̘ O~7oLNNr+Hp*vߦ^(>k~BOX)м5,^q\1L)6ڛi((_Ho\di$>G1qopF˭r_OޣQ?*$k n}'4w ښj|fIfA' ІP @9^^MMM=ߞԳezMlmmuwwhlhl"P]5j'۷55o4E J{|jFm֟+9 -#)cJA-mN"I*>>oӶ8"WRld @Fʇo dz??+>9%a6=~>fU^ӵ+]rK_rS;wRjAg_r݁v&f͚ƒe9 sJrsT5Ţ309NF7PWVkY~YCD/<eaaCp|WXf, [ Wj'tes7w6-3l5% "Ry|A^(>M`!C^˷˖Y @^4W");;J' JȊ[yA"Uz@ёr4bqYCb@J9T/h@lnx(usJhȨ3mNES1|zMFs mBH$6h39OmeI vu~?q nd}ƌs%"D" 2AƦЅWDE6<n,,Q#F /)ʻqxeVkݎYg_X>zq}*hid׉ep9 rֱ q1(X-Qޫ:uR %.(Zh #;x*g!A=#G ~֦l0>.h9$ŲkJ~Nvl0L-,7)r;kꋯ6ʉ6q|^f0]Y9_/\h +r _(EL)#&_|{.^2/|X/4...WAn=UY_;6<]_?+WTȗ͸5̽ZE@v :-H$l G@K@kD:D*s wmWCiw>s3/5biQ+^0~;dڞ%xlpH 9jD{;y}v#2٤42͞v]. h5Gg6}^itOMdxEzf@ DqkA75 xm)QȒ  OKNmi>vA_Sj#>@] &*EW:wIJ:?t̨ IFwwϫ>!ѣN΀ j8ٹ#fm!v2E^xM p Yq@@ rvKj4Ҳ N.*l% 6u|b 4i+PHިLR;W%H^XX8bĈ .P4J}ŲSи~򤬝8 {Ӄd999555s5*J]J(93_?Y;]d:\;I2gdcWECH;P)p$h\ 6ڎWJp[ȋ8Xz9EkW ťx褤$t~9rU%S9*^?U*i! ccc{P4@Njr'9Ͷ0kOnm: Sm_ cÇL3˰X Y&d}ApC!S9 sZ wvvF`\Z68"&t\-=1sh]j XZSާWΌ4K;t8Ӎ$ ļxUr`Hsbbb-vr)d+ypUr)Q3ALzeT0Vo>sG)بYC06v儼O7熙sZi3ȶ~1:Ҁo*,,,((XiLO1/ۋsc?sz5{xxyaSYq|:kwrV3hݨ6@fnK6`adJD277*:===sj^kA~X6OؽB(P S/;^} 3ݖ`N*Hq/rEo4eQQQ$rC %={u07dU39zШŒҶ30Sho^}NLJJ"#jn\Jɐ%u_fff{X٫J ](勲t}S\n|T/Mtu$_oN[P1er%Y9'>:b8%Hpx|{)GxM >±43S/p[c03w?L0;_2E²yoRZ{H~sF,p+1p9CΨ:u7^u:XȩMa~ Lls}HC'1ާʈ+ɺNQV8m':o޼:,om Onz'g=8e's h۵Wh%A2|Bz.kŲeRFǵNz?g*F S߂K}yNLIvra]=h {^u?L=5Y`Is57VF D~`Bv|}k:᭪T̩J}׆'sT0edd򚑑Ge644xJ$˪r|AS39|;~{̍dխj9" WEsc:jS{dہ ~={Ү^;9ozࡄd,$Uu 6''- ya솊cYlbB?2?YۣV S(s!fŨNLշ>ھ:h蔩~Ν>Ღ{x#'ntߟ^mr` 0U'LZ:?Ush:}]m S5 V5uvlŔ?8;;\޼5M ҕtww[x'|\V軪8Ae~d3X.&,fw w {Ǔ|5t&W @W^xLMQ޾?#}6hcg5/]θr͛6l޼I5701쒑~QYcWitKK|^,wreG?Quٶ} l74r)F#?,OOJJ)K)"BV&OSUIO@63s3oo着F^I/޽ynՉ%沜O EBv޽Vs"/o_jyrQְx+U+ hՓ!ק;r}Qz+k6<(nld7 `VQ=cŲvhu76m/߬COzGKxc+d}թ{6}|e<ϭHLr鋟27oSt`I-hss v JWpZ|ǥu'>z̤(D,oS[[;l0Z7a-w'-[euSt+3 sjwXt_|hT1b:ިԜC>wxR-Շݦ~l?Mĉ_ZOLLy!Iyӻ"^}}F̕~COӹSz̮{( ~{3w>{}8>G+Lt Ĥ3hvΫ{'fsx1='DrfEK7 [-9 ~NXljj",΄eʧ}}Ǔ&Y̘>1 QNHXL`[#cvg,z,_?ygO-5cNm0kbށHPڛ)VU3l6[]Ga,\(^[6YKovnt\?T,0+m%<.;4 aebtϿLNZ,ug|iرS#\팙TcŝەV( Wg;sꁌ|~EX]ḇ<:kn=({CT*HD"Fʛc?#njTMZ/_ϭ2eY.f~zrQAa_hI9]JUj4)M zu Q'6O6@.@s_[`4&]5'3~3a~6Xbd|{( ` YQ !(Ͷ$ |՛F}-X{JHZDhǺ uFXbb $:Y/ФӧlnNF괵q*0t`9/lsڧ,xEHJJꚽXv XֈTAWe(9t:Bx.5g̜h0Lݻw/]]]MLLԼ LhX\]]}=''SRe ccȄ.̼_mz,V_Eruh1_cccgCTXQѨdA=:]khgV={ t;~m{w%QU°ð"! Z)"ڢ-*XmY_XE{,r* MEvvf1 3N4o{qgPwww[[ۼSNMR_K L"T :έ>WndNgCh ֑u~lZXi}+(?"YrիWϯ40rX~`@`@$iOojM_=ƣ!O?9M=GsM(%b@~ԨQ2Z̤RCgeeu r:ZgSϼXŞ ?w>l{t 9`"uIIIè~)5>>~6P5 ΩңL5XwNjUNhωZ~뗤"%g~՟!Auh3ޤfvW~?A%R|.gYO>򖒿#r#2&+gfʊ+hW ~Eǣsd5kn-w՞vhPГk#ߜz=ʚKS_ yuS+ je<59T}\QH}FY?91B2 ˉNJe+SCMIIcn/K"QVjjgQ]*O {<hwO<+[tӮigB68Tͧg})ub-pȵ6K~;- U h%^)ZTl9-]bm~S,.1XE 蠍*='"Id~h#r0 y I_3Y2hϳC2q`$v^͸@䙽#@ԝ{#kFjd7|={{wp@:C}2w5e'U\/7 +ɯ}\ 3ö9F(Wܐe9چ~zGyL.;M]O<7\8A|xGUt}!<.8 [BA1d߲6'y/ª^m8o˩-`?G}5!!9A N6៣=ƍ.%WY3@E7n{HQ)G{^ߝ_CdwIEB-k*Uځ]5Lz ёs@+Cl9F[9EN4s byJ?b+uuu@L~MKKS15k,?G(z7%ZW/]ʊ'SV" 1xstP1ݝ@FZ٥r8+*e"}Ÿr.QH4J4P>/3]W3e(ѬDGf<]@Rk9o֟Yu¢㫧(I$C2yiiRGEEli99$tD8nҤ>Ud.9TH<<'/:z$Xߏ dx}GC[od-xbИ5GTZ@,;ܩ:K׻2UQC&r' EY@(O;K&D뱆\ jARTT~],?'q8VF >-syp(LTK7of- _ h#jwZRi.} M^ٷ̚&~kA3AVX~54H B(LU,5 ғ'OV3 vWٳO76 us MA+st ..̨(@]3! ̓?X"~f̷ڇY~5dSprrP(D;00+ѫ2~Zs+~N?@b_6㟿C'6ᾔ):Lu}nbǼ~LeeVl1J%!3X}QLtぉ 楊AQf⼱buk9S4a2sz;鶴̶6 P k?} .%YHer䄖Uh`5;3s?hrEMД'---vppg ֲ`8EGE<NOj7[uSSᨶw9M?G]kN2V+e-76.Pw˩L+~x~[E!7MRi@s,T9surrs"8?~@ggg6}P"X[1˯}7*sJF ߃ϡ{4Q']qS៉;8|f'L@c&pQw K8%8WYQx&{焨OMhș/8~͂)$@(;wy͛g̘jkZn\bg-v8,;ͯ<\{YV;9+?_hG5銣 h)7PsssK:c{R\׵PDsnl:qML5֖s0WpaZ$:$.g{AN;TpQ凄 wc4+á-e=~Y?WK/~"I7Cn;*z/^^+[O/v;d<2&yZ]}eM媆Μ5W.,~NvI76~˯,>~nW/Y^!絒.ʜKۻ@B'sSS]/hg'_gO{8YBc slRBGRVvNnpTyIElllr@J7e2Ȑ=;# Cr/_ 4kk<|Ί`OD>D_N8k-\Y7ط\b뉏wn6>cO*v 0gŏ? stc9y>vX@<Wdfc]?Qfem3B300eiQMd?k5I?窸",,Ӂ~ё%$_Nwvʹ\= .05юvC\PZ~ٳgG5Vԫ~[аZ*2o]kk+4hgg/F7exzqN?Wzw\Fo qvO{ԮCTݵC|vi1 ;z^5h09zއvWmFJ׸Ku/0>|8PlVVP,M<p9hKKŋ"##\ =6' (P}ªͯ3Lo,?G93[Zŭ> m%K5d%~N7Hs@@U[[{) N} 3JGEPJGG3x"eSqyzכ9@ٰ!C,wߘV>8n/ejʉ:3e5m2s5֮I{ ;@łf* Z%sJ'vRr+7/. IYPܿLw7^*6⭗sp(WaԶ5#a,n6&s:S>] 1yCNq9`WgEHopwAu3)Llذt9Db!+Š[<gNMe6@gFG:;e%KSg ּ K,XceG?Gr8"aHMy\!}=ʲwWYEEzcȼI"pޡպl)jꇦÂQ˸K6Neu|Ȋ$5m+L{GleIL:0O_{jUAQ=wEH>_QɃ<21~:ˊ.!pI̊oWf\H[,4Ɲ"+i=:No1&ɠuCbq {։ta-|8O}5}srEw>CRj}ĥ ]4x6ڣˬ>]v_ƢxPPp3LO` B6o@Q D2H2> *RP&䞻{ʕ+v?jΕ zL[ ?Yan~x2)Ѫg;UyQ?k"ע G'SȻB́)Y>!Mۢ,?'0?..V&kb<ÆPVv>+C}n&`iAdň+A jhƅO!N~aSz|%8O0 ]'Z}Ae%yC3ms Ym&uښj5MdlLc2KO]{5HW j68&4W/Sb7Ȋ 89W_5P,(8_*)ȫӀ2QaEnktAMm"s[ W'nA9>]㡫k@oѿNΌ@4ܧ ]N)UzʁS7Osk XA9>r63\Fs\!q!M%[N +24(ogk_if r Y\#'0뀚U vM\QS?‚fhj~Uõ3hpI "Fp@uL=N_.W+X"遁񙙙A T(Arr:nRܤQё,¡ C; ?6uaY>JY ,X_ f\t%1)2!scos ticAMj(---;;.))fSH?G{ ?کX,1'? 稂eeez)\P(]f}}=NE ٪Xr~EGXa\A+'\2[\T J*H 8d;+TR ݵh-?g7077 cV:\v-??? Qokk;r/W]qq pO.w"oG7;Cл2΢Q-N9:G}߽{=ܣ"+++@`\d`XXZZںu㻬?֍APe*.e!'^lp7쯻wn]G~ [g%ruR;DʼncOͬtɠrFaS_e2idddUUSo(?>~ J3rw#wγ׈%W_D(&' uhP^cbbTX8sc+bŷ-קW&*vpF*2Bdz95094>VT/\oy{Wq?7!yG彸q+1Χe˕pUʔJ<^c>'.M>>C cFN4btd0Bd++}SS t[\/RPӮs~g9C6~˯$TW$9XTV@7)vǍQ,ݳ3NV朚CE1}'4_d#lojj:Z<9Ϛ'p [U`;*l뫖YnxqN6|YsS'OR#j{{@ @Eh6'j9~G)V| x\<NOx[[[Z[ۤWpϒ;-?m ʵF8XRFz}Xj~/v(QY1A\ԓ {9rDɓX%f>cU/FVXDr~:ݾF*9ӆʢk| Kym)8`tM6p OƆв1d7͢Y+詧21 h,_oD2 Nzu<9-::3krk hgXnζGpLĘwR 6 ȷ+_Iƅ4(o*/&c P}-RAˎ n57ql<}M:ูM:I* \.Wd9\uW|扗AyUR{""+ m++`;h`Y&.4B m{D||has c̡Yˢ=$X<59VVVvoG%FP dJp tKi@L;*bnjnAM(N5T`eʐv+?Y`{&WpB6g9ԢR^YS=>kꊔ HX~EB=] *)sM!PƫrJ$,-OBgCƎoT/3[$%ku?^ZY?E<ܴ9lVe6OP.ipMIOpuFp((if63z>Y[w \\Dry*7Z'P8qq-,  AVLʯt~REDk0HÓuP\>?4ZHS[g/ߜk!sDKDC겦N訑q=O=82sd&Ӵʴ& j(P+g# ɼdoUPv_:1-h#(l]$A3%u ?md7u9Yﯠ?C-\T>۪6ᴫ4W Z0_ii2, 81q<`7* 1}N>ȴVWW;88&Oǂڬmll vvv,;_0~,G2,`|Kw^7}^$ uo:뮛7簠@V̈_ytv:fX_Ȇ2 KX=оڲC%*>zJ)VOBmq Dwa?>Q h8=`5N,GIw_һ?+P[DA ZC w^6#A .ki,.^޽*NRr OӢAm@39 RuP~ h?ult#?7Kg9='OW'1g^{gsLŲ +,7o&&[t0QGړ#KЕ8R3yfϹ)d2øX\,:iV24U:xN:+Y9x<7hr|_n:!k-.HZΞ,zu/YKs9zZ&`;2hkjh#Ad4[qDkCC! `oECJXc5XX38{c3G<{=kVϺo Wvw/RXvy???X>X*6J ^lzz-[BaRRR|||wyw|lm*@ox8 ?eL ys|;˯),Z*IRRR2330av=,+oݺAlLM}Lu 8Y 6l(x }n\olXV x-ͭ=W`9פ<7^Ї5(ko5jV4I[a>|ڏ(^^Sv9~H ϿZ䞻{wOAP%OJ7Fڲ7:20qܭ@]^wy:!S=Q)DyZ$;xJڳwO~\-W:6~n2kTQΌ BkAg!NNN Wdccy${9u̦={o;bc^9ez @ [0het:L)*RhR༳(i+C{9ݧW 񣢞i%bH};n b5nc\7_rQ?W93W ܺxt-UqyXXSN1jn۶谰rH驢Tusy<.G}Ǿ3oӡ~ #d_Y>9-@\ˤXDM-x0_uV]%x@-.*O$WPd/3nD 2ȝ@gg'>> 2(۶:$u,tzXϯa"ahÆ˗7)ɍ#ߓ|g X\yd>䁒adߨW=1H?*`UС?>''5 ȕPsZoV9G޽{wccc@@wܡB*""n)zkk<]Y_-Vc&oint.^l9bOȮsN/{_E69QQ}@c}{]AȐmwxHL':_Գ3f?sƽ@P ]?@p꾽ASkK(&. |gCԎ}#?=dgA[/@?,dRB#^{mz@ۋ F`Pe𯰇=GGX=OlK芣 {ie>2JzCRlhgksH & Z3Ggke]?H?*\gθeX9'sBz*lp" [ߥHcfJ-S\\ */R":)W h0 ~Kx?ᘹuu:QeAVX~05՝-mYÁ &]U+U8>4s}]I㤮Z8_R'ݷo͒yA[ݷwG"&;v `bDPg璈pr ᯵SMPP7h,mm fDasicClSD'5U5U'@Zz0V+_\'48̵?\4{O=*z݀JQG:ލ4qԷP ._}?|ז/nvW9.^BIuvvP~T[\D< N"6eH=*: ΂2{d4- 㟃8s!̠NJaƗ/I1x:u Z0QRri &ef WF0:gm"3PJ|fbɱFA'X(ժbZ M:1)*8݈і L jt_HPd2Nb:U9 mBsfdji0m'~NMMۚӱbڃ韓W;5)KmNf680q 2@Ev $uPtϮ]e\ܤ~ťpT{?M|f,4P@ LW v̠~HY"ZP J[OLrP{ܤ"~Xoz{Ϙq/*Gae 0wM,Y"TY&AߔYtYC$c),f]{M5ڟQ.'&(+_vd]k-]vƌ|Z\sL73 ˯'4JIN˹qnYr[NCC+ۃimmeVKWZE\XD;Q)n6j(0%hE?˼'g/ܛTL ګ>1OWjE4,cve(RGVZBp2'D๸*/^ē] enl\ʫa+02 k17"kطn s&͆efߤb>e*{i@dyuBAMv-**JJJtzz:nyb9 ZV_`APC;[[HJ)> J'nK!-* wXC8]xi:y Y cp#cZv67I_Yi1 ـ)/܂m$kVb#*?9+LUmN_:RI#zCʺ6UYCscm*CFz, jI2Y W“v.gR `fffrrrBBl2XVvDlQ7"{/q2!CmnO<|+.[*+v0:ϞeB Hys3ڮ*OQ hgkkG7RF{f)\S7)r1nݖNfWc.vb3Y\[×.soE兼lچt>ʠcuTvpg)xخٝp.B69]vpPטWǧѠ@mp*ə-fSF́P׎Z 7v@ۄA ZVV MM2a6FOȱcGV)/1(uor,E]&qI]f7M抓<$8 9V+6)y3~c455@i3{+U|jϔSe_~t"S/<`poTUD!AO˖-[ Ұ*96:ӸpLcbis8f0uj`Vb1S3f4d/҇늬$ 3ze+}qS`\P|2IEg@f@o9!oxŃ. < %  R8YETez;;yCQP5P,¯8J+@I097T& Vz 9*`eeL&%W<<Oڰ0 z%AA8*&L>|y0:?<́@u4ND(փ1%vvjR x0(k+ɆAȣ4np%H WZə2e *zU5^I]F+hM(;(:)16 Ixt]EO`WzU\DY `ìX/YiRh * Kv2+nurup !. RII(SӃ;E?W my<==}AL*?s@/<$b7@r4|BlRH xAMPĬP&*07w^3UtJ0MfL4'.H4X7N2WU 9@?XL%ր-͊ זS1s>*o]#u2gz9r\АQcÃLZZZ VVVhk(߼y g!kmZP8|߉cG>J}^$/:+0NV$?Y[[755YNIvGq{zSA%?8OP!A+242"0M[ ~Y#GoP[rM k݊7@mG/ [Ns0¬amz9rj|{Z5:Fa!C~sZٻutuj=uy7$顝7]fmooo&3۞rE"u-Zy+Wƌ",Z5Wx8=s'0Ҏω mT4vZd 礄]Dx0wb~ɩ>^n6;9F󝺱L3""nlB= CoDeM:dFpRƅEUN8/P쩲̆ɐp .P`ʛ6)tEjTgpz_8s}xbaq|.wy{Mnš&y_W!nut~^\}:K?j@_>Im}j]쫎|xϳ??{=]s6`ZmN=#9-W|Α-\aSXվkwco1{.k(vގ!v) kd0Չb̿#OǤd)xBYI4o*94x`o)F C 3p001~_^%}.^ %XҒvoR2{z P݉7V\Tڽ};>vk!nCʪlAMya^"сW*B>],, iG)^r_:c~X#Fqo vzJ;nml̞˶3lDGu՝uwq2`'G'q!%^m8wo*Ѓ{boQE5ȣiˉ?2ҏ1cܟ;ap2\T#ĮS!Vg!VXaZ YJ-v/gys/nydN"Apcc/ғǎN}V{ϣ$0~.<;  WJ c[KA{hpC$xZ{ ?KpkNrs넳zy}t⸅ Ҳ*4m=Gw>/Ⱦ|CÆ: Jr8uصmo;::*+5s˵.Rij$Lw: u Cxlڇ6PV!ǚ/nQQў=NJ233%W:_Ape= /S}cH_nlx!:W Q3)AzcpQJ60kQ[888Ʊa69dv8ܲy n= 1f9N8Q!v: 0,DYY7bF~ _a-%J%^osg+c,NNov後P OKBw :aiG. oʕ++Ƹ:$Q(WP~S H]d3ȸF -gݻoɒ+x+VcoSGhm |ښ1rGTUږ/ bÆqrUcNKtaLp^raT@@c 7~.++E3T@fR"]:x,ְlT7`lPS*st#!111R|g1 u(/<x|@eeO?8zMf%b9db>;KO///www4$TKKM %@͍v8y13dnX5C7j]}0!эQHau[l r- @_*̸P.\ tVC:>|P_qɭ9RRr<*R&41u/;!(gׁ蟇 &aA\pJʉI_0ָQkWZk1\Qe{c}u2%ϰ6iҹڣ8z(|V^ rb;tY!?Y|t\ 1+^ٸC^zv L@_^|TBiC%P8J3PQ< l %;X/!/<\r1A-eex--~uM4½C)u)8ɦyN' oc ;0UsHB_ zr™1nA4J%X/2(CPq@ٽA0B܈Bf(x.O'hP`Yu@9s znoXe (hN .<١e@ :(׾]D_^3=W .^#q->@r\gG+1L2lE84|prVXX8 t&ϱ?5Ȧ-%jIaN6~Ǔg'ɭM-!h@x/OS;7u p"+`M“Uƣ9@rO⟠b^H2p ݨUp-İ<+":M(/CxV!} e~L~O~oc(wMԟhUE…H~ȩ4vϯR۩-Sb6 9w&9I3 [c0Rp"P6]#f4T4+~~x2޷9AIMs*JN,¹7yf2d&PP򎇮aBv20=X,> ֲ]W7ԴJΆS}$*K"(kێ p>vW`s!g5KYqo1^!v>9@鸨5b~ jF65AƯ0z> if6NviH>hJ{hJ0I <@b E7@&+bߞ9rkWgZw!OƵbiM蠧 nxʱ8w?nRXwP {Ff%q:'jvƍQ#G! (oW+nLgC ΜdUNvub.5 z' bu^]1h`|oTGv1e瀒z>G&1O<1ѣoƪIPNmk-\9(߽_ j/P@9W\[D cg=݋ qk$WȃـhRyyQ PW⟠bY0+zܫ! Gach;;k:ځ\?Xqk]w$oct3ް   $`Y(?sGyv՟_%1AZA]n]?WY1F-QQ?Mabu!|\"toOls[PZ0q'|mקZK)<}1\b檂<hPX!8|n+yvɕz2^͕&Y=䨑PaM;;;^?ddd;00B{{+9+*ӑc٘+tdޘ 4NOx(d{zZOC;Z ~~+jJ4~k;J, 䊺,(Ԁ \#d"%P,vMf}X,6HV <_/^k+J̖e=BnM Qߟ HxuR8r9DJeee*rF Un3\ +++/_B#l+}{6U}GTWh]iuX!h4Fs< VlyP[aim51逺eTf_AE~>P:}B3rTZ,){.˄bYjQ y'P#s<y/BuP<5zTzj྆%===9ْ}{Z;쾶oq!;w @=#0xx`tVC9Z___XX#oMyiiu ]zbXW VNM&蛀^1YFӨI`73ȝsi뢦CdvHϸiFpnnIK=y;ŸFƖ~ָkA1TM. Sh)W (ȃ=\=p @(!B?\@((] tʉAv|cnԐovv }ȀS^0~$[ZZ@5TA2RPT{:B<9LuVc%k+JPZ+PfˡC^Ϥ#v2+jڌԀQT)+&Jùʤ2jFnz0N36xj%SA3C)1~TN7;4J*K3UU-b9AՠI d$2}\Y~5:kS j.0 ӸWIf[_q" IpP(ЁWf`Ѹ)E+q|CWopZW *6=Ul' / ˯L4r28-ͤ\ZAgD2L׍3"Z'`S4`CO՜m14hukiQ:nR9VDx bAQv`V,xamp[g|FIJ4фĆ Gki@ψZb$BT?@NZc.f/B aFrz7˄sFphn~9 Զ6jCUҬ!:})ѷO)Xí`+t&a~[sǀ~Κ|Y \.oYz546H޲fm_Ya=\s@IR9|\Y~c K.`LLK%$@BB@B SݍqWVz9[IX'#웏(nYCYPB ?k6Ϡ D]߄J(uQA %PB E(%PB{YtƐ6W\vT"d$%PȨp $I7CzݟLK{U l6.(J=hjBÑd]PҎd,wD 5doS?RD%PB{B(((j>mmm{EP0gY9:C=b:H,.PB;>uTSSHݻ݆ x? ؾf|@i4ڟVҿ_U=WM.Dp(.j|Nߢwg*IkFRcV^|XlX5 Εˏ,.^|h3v%`gggPϟ uUUU)))&MB0_ B&V~YsK|(r1~._xˏُbs- g[s x<^@@[[[B}eeqg6nx HTSSt~mo2 LȩB+Ĕ`+S_L'TZ\\)d+NL+++KKK@޿jQ@(e̞ɤ :yP(ADveL2urmPB I}W26S7}{ Nv(1GcSHFhrј_A5٩6v(ݕ5|SL_;6nߙ:ٕLݗL(0ItGo%ǯ&=gvѭݦջDNݬgLT!'˱H7cA3{*Lz :~pgaѮe)N-1WkxZxkceQi'Vf^IQ9aSx,KVitk8Agfd>3z23DTV%'FfCרBM4 į8Z V4rջ՝U-D"Pŀ4 SWW#]tY `2cEjFJ{WW2--ކ (|A3Kn$Ah&M]1e+\ݝ]liF&xRy* ҮR&]6Ye c8eX[g[́$"aWMvk?.n.>ΎVT@|e[S{T^zT*%HT*H$v@a׎s'QM@hu\W=E$tqW0]eZ&׭O]t@@]|;2;;eJ?RrH]&?}]+p E}P(x<.@ˬngboV6-.~QɄOw7n? m]z: CuU$< [;i5??_TZYY8WзlЧ-_k)`GXGN7BejP@AQz{]q rdopOqtNWN0 0-&LVjYZ-ꁂ]9Y :_%꒹yD' 66i}:zũlTv!"0kj xffoJ|=2ut <0$E(!Uh;ȈNQ-d2tzO0yf4yqq(!H[~W*RT)SSS_5njѮ%UQHx'~إTj]<^z祧dKy1.&效!!'KZ1>nZ& %֨G :nd磁lLJΨI^P` )E\˜X_~À>dRb>i rTiAHp^xt6JRXR D[32GEzuZoZ8"֙=U\ysETyE/~c'Κa6=9=b;IGqޜY`iȋ')kUFLuٻV^fżF4gM9ں &hXyn9SoDDj k+Rs#A[YY>O͓b4SX?۸>91Wd>hfOroS|R|o?q0NEmi gb$wN}F@ Gwqy -Ye~`!Z9owֽٓƃ^*e+ H177z)Ba:SOD~E_䁟|Q`$~EIO^ 7,*4!,5Qb-}̕ՌV]So]K"Q1x%"Q8 RJ(Fx+lJ^iි^~m CmԨϾv֪F~B@=db1 XUW(k Ai#Qkks3ݥ3np߽YԻOPӤekP-=a,'ccs`vVB ?D4sܲGRvqtc3 @-,lrs h~]E*UR_6o;,n1Â6a99PsꚘ?n& ջ-{jlj֍2%TДh| M[lJjO! '}Z2ahn5eૼÛ܍N81CGF/YPl+kk'Kq=I}BL2'0D$F.G26^ůG/Sa0FC*p'Vb0xK"wHE2HQvZ9oضE|o헫؈7:e #VFN\|W V&aK"_ىCw~Q6XN5V_}0)-3nogLKx-BRp*tx"^10$U rO*l?l_}ܥNKh|DeŵJRp 5 X JT'#TR$,,[ k7PnUoT^ 4^{ib-.iV&FA#vUAFmYe y~nfLMJ&?~U6^(=𫯿,4 2I($2*G DFZr G7_zs81pPN u8p` yD{[C==Mu@R0ؗ󊽭G#aeuM\9q߸,!S4Κ6-3!jD_x;ƤfѷKǒUEqSXpHt h8|AJjE$v?6]&l2uvFfvync,Z@/gLľnj`C3lS/˚-U_Z_W[{#"h$߿-$EytR-U[Fr0aa#,H#[ӳ ll{{E?ʯn ȾqrA K4~+<*3YyyI6$AfVO;ql'UV&EǏ[X|g~%EBvmMۤ[WנTJ0ۈH$jb*Wv3`\ڪr`L (r<$!H:)DH,k 8}rEE~~zJHJV!qZ) %Q-SF|?!D> H"@XU7@x%S8VB %H ) "#DD,u%?3fOD_$+ %p*BRB~ ڦ0XU5T\(gS(4R瀶n7SNZ&|!?}n1Vٳj[ץ.N?XRuCnN54ncq$A#[K柴S;pėڿĊCׯ8~"xٚLZ'Wfn7mmmn-:6m0nSCD1Րޯ'3Ղo "%;;;Хp8꾅EI9a}.Io ➆g &[聂fJB=s"bA zw<{GJgNń5aリ7Jݒ@&?!>`vI{9aUKW vUBԻ V}/LN˴);sÎQ& .kҜĬqߙ3w)~S$W/]0l2AoaHϩNT@|uAUC7t?}~6YDK#8YÆِ+.KN9}F&$sHPF4F cl!Y`,Fqe xcMWxѼ@oyM#L6m:e;~gTd> 0$1#-J}˝*DK7n4*$Wk[\Q[6&d{/bFYYK䐛w`)W wYJ^Ӑqƌ;4 G2$;^75Ѥ)r'v}߄Y# uQJY/_ܶ ǣ`Mɫ#劯w!=z >q-]P#S:2!U:TZÑHrзdtNƯA\&>w3z`T+aYI6Qkૄsw$y Hmmm}:X&lM2<@"ijɪ+<dz pp 1ڒ>mltwR4Hcg͎@"*^ [\tL~EiԈf 6 TSZ}EYZQ4ɵi?JH!I|B.5ww%:++> %FN% ^gfOQO' "ɰ&)8u%MulX]!Q ۅTc GP@o3]Ι5 O6?H,Jdǽh;L4Ij0^-hmi[_ cZ bPY?(ܹEh}@sȌQb1fl1ޱ ENnϢ&N-u4!Ff3W}Fk $Kx/:r.lLYMQwz~L&vsuڹ8d78=xk} RY9iUF˸qO84%_M4ҥK_russsquqMI)#AjV f6H}&~ֺ}zE#B|C2k$6e ~,tV$;g@C#5mhf)bjXflv9̵0#F{Ϡ# eזh*, >jmR& B6)'3?p t W>MUܝntWm˜dpX ;wM_ɤbI/ <ȍN8|4|Ӗm$q;QՍ`ԘyjTY- |pX Uا986_bS/1(/;70XRqf:;899X?s^@0g{Wy<79请l wdQIHUN5? z9zN2Á H?G;P__٣Z l/o jg2XANY7-Q]Q9=΢[[#Gp4Ç&&&ʫ,h&fr:t,Dn# szjO{/[/9ᣄu_B\.hW"%3[nL&IKinr`zR.6eϝe/ ZgケIfT=M`:zJ'?ٟGKPB̿yrLMM1MtwwGgzjLk!a|ZɌ^MHǽbKXkժm}-9?\7qr韯cBW9!Hkr9RQVQVӨԕdBJiVJ\U}RdgdXfX$<&&+x&ҋځgWA*V#U#WLVv擐Q}UqVq%v@9 hlljH+ﴤݔS$asŨs;nʨQ3[ 9۪&ʟ՗5D|N@R]'KԠZ8@@/WB2@<5.NK* ,Vt-KH{BVZTQ9`׷ź%gtOZ2+zi֡kx˅̝&<ωx"yz&^TBN׊9?=d7iK2YwCƈ9}#1GG^W[{Ss oaDٮ$NM]ŵ'@o޾ȝҘy&na~uғ&F%ϻz&\2ϟ5(s\Ե:䎭-];B!4LX讽yu7LD"6{=9I}ZtcP8ek>e'Zˑ 1(yb܀#ڌ#_\|.Xi V:s,/^:_\H]f9yQiЪ +>hU`جcGdWD؞9oпzvDf~+cb 2k l |3 JIM#J˪4 KK'{8qxb `, #.>^[Ba1_l=mLiRp䁠 g2ΖT+*00`W.Yi%|͚6Yh[v#ܦ"gؔ:~ĩ3ܡWЬl{k ,)6~t ]Z~iFߟFP6wFJbPVfY\@omlg0sPFj7vTj>ODs`r޳ϐAԩf3U%IKIs0DaÐB)y5 nQG?Biek;͔s7fT-Yw wTb0x() >IyɢEFgnΟJI^ʽ^s*dWQL8̾GLݕ@9DԹu}JRD2ܞ p 5)«Z!<JLR%lF),})b H_s [Ɖ<\ ήUn*Ye >>)&٬?^Wū΅d5Tm+o7nwiQT)>~Ԣ/8bABbvtb̥cTf>D;W~0TB5M8z;XeܾqC݃եR(F_?I0~8)[̈(i2[b1$,+SJH NJHZ=wYt?i FNVǗVUnF$Z$/;ymƬo~~X_bHxBѝk ؽ8+ne\XfK"u?^yJ[mK7#!Ҡ% ꚛ_7O6}`hD>pB[玺VIVNvqҌ.ie%%>{S32L&@2d3dT<@JwpHe+'a;?_nHu2}p}#Ҵ|>'-#;+YW_T]'uF"ueԨ],@߸~Ɂ&ωL,z[S[r+|Յ_ds, sGez@àP3$S4n*mw;yJsC]~YX+őixK>xу]J3s PU$p5o'݋ s1sC^WY샏O8}633(8L"h-0Fn8 ԴR%-xݟӅ%˸9X,vvvV(‰<`x{{#XLfRBV͍HSpL"(T`oڒJH!Ȍz=)dK2)h)rLI1;-ԈPE bJQX"(?I2cIpDJGbX Ir2u @o d*?XZL,526ªER)A#HB;5p DJ xdd2H)i`VI%I # u18Nݳ lIm%ϓy` od#Cgj1c#5R]jP&D pϮuZƒJ$k}_ԗ9BDdtTogu{j"bͅH$ց~>|~Ўuw>~x=Gm-V[4s[.Թ"K`J(G4e桱"xm t ygP(=-KLpϩA_cgd.iI1oQߋZt'8h5|:R.G,+J333kr| *!`6޿y?Nu_ndzn(K͐s']ela̯ٹoWq-w]3+m=m%M-ݫFa7r}M4GG\Re͇N,x[=}ҵ!P9 '٭}hNN4ݷ NF[H3"'?[e; c%=I%gNxid8u1>)5W{%F֥O^ue>p'CG !]ے?}Sݨ=P,]j=ݺ}k]+_+x^~ܢ>|v~РaX!Nf'^ѫ@ej[4a0iہuD5vTǨcx3{wGţ{9O`}{.ގ G~?Yh oN]o˥ gNhhmT%kkUӹ\s>]YYD`~8>_#^)Yf3iժ@bVe}v\vbf ?2# >״mX VxV=OKl$HE.-(j@@|@MI-b Ϋ`8S9/Hx38vb S7 7./ <`kZܵ#a22S>ݸ&55TŒoTm,)^F^ ϖMM8I%O07>M)V(řOVs_mUy{ݬi= %#K?Z­b7_u %VLqX3C$eH*𵵩n~E,*llnn`Tofs|nŐCMs0ZSݺ.+qm%~X#n+b]nY{xWRA˞}͘X >./^19#hI g;L`[)B]L!0BH'H?PE"H*Nͭ"bB 0LIrH(FK2*~4\Y)"QZv7 BTS >Ԅj\g2rIo'L:ge%ӇIGw Tk{JHڽy\.as2FAa-H;s|^Ilnnc~"]WgiM1Ѣ+WG, Ew^ﯚ,E$) +-"Yqi ވV] ͿQRs;{ݸlnzfogҒ KѩUosO=X.IeRxVYiqYMm ǥg߹yG6apY {wM2ƴ"rK3vl~L>-3ֶ& %R : 'XfܘR(`GVF8H&OِL.fbꦚ򔈇Odk޹dnx'KxT J3Nc)iC4R *]֖B6@]=SZ }!GR)Cbf0Ӄ>XX͔5s;"r^˫oH%XȄ-,gh 4<6p+=oGO=| X\Ty8~lVʳR jfت/>XS0)?GfueU5JyBJ1ڸf0̊y>Ō:]BFqvX2T\ ?ܞRX )Yn~{DחRMut*__/!CY{Nzj`%'9!=Ν$&^,=1yrU]9+$G&͙2fΔ޻2׎囯 X%^>slVeJ~Z/5^x8nٶ}wW,[4a¤;2DS{U$EG܏Ɯ?^&{@3-h:]&_$HL)H'T3$/^e6> ;Ry!/ |ΐ@᫗/>(gggW7O7CE?i(~ٵwh@ϡ^D1H}oUƭ1Ÿ#ܹucdckWD6 o0zkM0,+/7GBlrRJrٲo?_<>x~0d#RD"tQ) 0^;IRx%3 ///$!jy[UN%L BHDM֤;Q  .@tKdHa M8BE˄a0TjV%@ Q7ӆTRBQ(cmT\;XC¨JYۆ{D^Wf@|@k0UG_LPng*s} ڪE18gJ(Xn'P 'hk VRrrJuu)'OL0L&St2PT4"tߤ Ɂ.m+UmEh[ަ-6 pҿ&Xf oAv.h63ܿP'BZPa$sYwVBx~AИۭ<ښ* #J& ϘtpIC@*STm3F!#Hgd(75R̚]c+k7KiͯZ}r#?PߟSU7?:o"pUkVEcvm⽰O>`vI~oˏPA_Z|' Z8]*i4lNRva ݈.{ń{6mp{9UŠGCH! @VzŢ;1eM`ٺR{/]58z[VܻiASTjK+YvزBJXk/myʖ?9w&!,,[M[Z/VƭXKBoaJ4|6/lIvj(({bίW^PќwfLS2uKVԓf&&&޺u]>LKfJҕ?ߌIc9u4SHsM7ЍT65჏U-W7p̩̉ ^ugkVR >KergO?G%OXUSG_m[p5t2XXRU+u<tĥ_1rD$]=]ACIk FiO¼$U#u>6i3;!!^N_P1iѣ2ߘRREF8}sΟ=;-zi˩mz1Hs:پeʖN1o: wכ jZ8h ϻ 7GZǑR\?m}qjL$i6qovo/{@<%+6vMA2%֭ؒnx຺ZGC7b_ wHߦ̘} BXքŒE H5p `ev='/73^dgnnl0T֭M|mh}1oF5e UoP@UHNB2K;<mL3yّ}^Py6jrjȬHLx"ASA#$Lpz9tAA9mOvVR.-4Py8 @JD+꼜֦!L33Ֆw7}jۨD,%TR&۷/}Ig%B` p78u%M!#(ȿyЩk;oxmFϛ=eMHF,9U`> g¤IN! -Xl lY2`|%L;ׅ Dm1sd$Bv،Gp/n-& :k~X2Dsp1jtk}#:½M^1%qD :x`";${߯{-מVTQjAvAyuC`ᅱ3l)š ==jаOxPu~"LNxGɥoYG!~ P>N~~3+ mo^8#Ur@ͮ>a 9/nA9pHȥҚɛ?+^X`򦜂̜sRqvg">۠>}cnYOǛ b̚I9THgOʾ|UJ$>~a䬏} LXccc̘9j+F  0Pyuww2=f؇Ŵy/b54 շ2{'&2ݚx|eaLB5紷cGh-̱J*ayiAƖ2 Dbwv؇Nm=SpǮdE;Nʧ Z8m`nV/yչmVh ~vCEg&lz$:zaD-eIkׯsLJ*rLblf&Rs*z~^nN}}gj)t YėqWFo?vJJ3FԄM71( 3|-DPCIODwލԬrztq_\6"=L2 3ApdO2mļV 0 q---7ovqqį `4~E'~i>rokPB i]r'RXzAPB@*{wu{~my_YPz4eäQJG X)\_o&J(8ZGέ*fgiQB4  H$[9---&&&^]Jz%Yg^VeCT?AP$HUqG"@っR7̈́JoV^v렓AhkV Կ"EIw\R'#LbմvTo2"[dD :?S2uG$(ӐoMp^xdd̡ͿdLnD hc'2Q4utTl9/ԥBEk7@ԽNw1QUOmƧ/x?/4jC#g4k%;j[Q,vDI9({χAA1 4:fdyk^RŷR>?GO#hK.ע Mn%qopD&I/N 5S lߥ,i,b(@McGΝ8W)0fDN9~u*VHE\=+8;#yvBcI ¹k|ࢁ HlK:mF(5nC燁m jK-{z(JUȷO֗4{;tɞn Vedeyڦ?LQ,K2_$aSFg4L~d`jHauuJljOuuurL$caO7zf_l:fR)%Z伲f)ݔR? ɱ#&dq}BVǪʩ2? ۗɨI{(o 'Tm2*O8ebn`kg[|=*?SϟWZ{&bBz)Í7̴؎v}lKgPg]b1k̹5F&E{Oą> 1GjBGW>O^O*ڬv0#^_zoN.޴t?oӶvÖ. .nmyyne mX1iD ~Ӑz٩ Y8k+R{U3~9" YQyl5RGUZ:{RvVSVf\-Z33+hii4vܸ;VAhJoG>=y?L,~qqs9YQ:FW2f0i$##c{kt)gu㷟NX;? ڙys+ˊc4>؀ j/6n{%2!I?SN40ꯔ)qN\Դ)~IK_*=*0n G(&'.|; Z> 7?^Uzi(յ|Ez\+gVՁ.fmrfڔEϝ96f}a̍SqmP$ُ/+)rsE677߸q#22 'OF/N~Ok=?CWC^#KM]G }koo/$v֬Y,[|!_ۣtq%{BxȻUv4֭[ja^O}}$SHyO"]qȚpÚy>H˫&Rt}]Bm E4KP_ !>ȞܼLF!WBho4i R7ypy_fٮm[*9u+!GD3eXRlBd)tﲣIrcB3%Ab+7yԨL2ugȱ;Oe_ B_ !!IPa)O<:>.۝ZY eB}% XmfHF#Z !C=^atWF{=nܷ-1_ r84OM%Ŷ!WR2V4m5{mCutOmn]|NzB2637Cͯ΁5DxdYL]P8җe]^_Kl4 .,Ig-WC'v%DnFmmXq;gnwBnVRE!|TB>I \GqB]kq*Z#MlWG EwΣ{%iLor9hL &F^'C𜊸T>(f ̮x ]DѴgOm.d"`y 5"RTgi;qiPgB|^Yx>L#h!¤~qG!y."!…!K70-F.-3kZ $LNjϮS;Z 0u#Bt]Abh!@hNewv+b!K1$K>IpբFTQVJ+!d (\?#} E~uN5S& >g=aaP>|i@E!ѵX{.mx֋40C(=Nˋh>2&p&B` 䙮&)<,؈PG!k!%⼄SWLFQ.!q&vݿ pNoP_ !>%BBB+HbDIENDB`xyscan-3.31.orig/docs/en/doc.index0000644000175000017500000000251411323737270017241 0ustar georgeskgeorgesk#----------------------------------------------------------------------------- # Copyright (C) 2002-2010 Thomas S. Ullrich # # This file is part of "xyscan". # # This file may be used under the terms of the GNU General Public License. # This project is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License. # # Author: Thomas S. Ullrich # Last update: November 2, 2009 #----------------------------------------------------------------------------- 0,Home Page,index.html 0,Getting Started,started.html 1,Getting Help,help.html 1,What's New?,whatsnew.html 0,Introduction,intro.html 1,Component Overview,overview.html 1,Typical Workflow,workflow.html 1,Coordinate Systems,coord.html 0,Loading Plots and Images,load.html 1,Reading Images from File,file.html 1,Using the Clipboard,clipboard.html 1,Supported File Formats,supported.html 0,Moving the Cursor,navigate.html 0,Setting Markers,markers.html 0,Scan Settings,settings.html 1,Lin/Log Axis,axis.html 1,Error Scan Mode,errors.html 0,Scanning,scanning.html 1,Data Points,sdata.html 1,Data Points and Errors,serrors.html 1,Rotating and Scaling Plots,stilted.html 0,Data Table,table.html 0,Saving and Printing Results,saveprint.html 0,Note on Precision,precision.html 0,Copyright Notice and License,license.html 0,Acknowledgements,thanks.html xyscan-3.31.orig/docs/en/sdata.html0000644000175000017500000000305211470424675017430 0ustar georgeskgeorgesk Data Points

Data Points

To store the coordinates of the current cursor position (the values of the data points in x and y) press the space key. This will record the point in an internally kept table. Its content is displayed in the Data Table window. This docking window can be made visible by selecting the View->Data Table menu item.

If you make a mistake and want to delete the last scanned point select the Edit->Delete Last menu item. Edit->Delete All will erase all data points stored.

xyscan-3.31.orig/docs/en/started.html0000644000175000017500000000374111470424506020000 0ustar georgeskgeorgesk Getting Started

Getting Started

If you are using xyscan for the first time I strongly recommended that you take a couple of minutes and go step by step through this documentation. At least you should read the following chapters: Introduction, Loading Plots & Images, Moving the Cursor, Setting Markers, Scan Settings, and Scanning. Use a good quality plot and test things out as you read along.

If you were using xyscan (version 2) before you should be able to get familiar to the new interface and features rather quickly. Have, at a minimum, a look at the What's New? section.

Getting Help

What's New?

xyscan-3.31.orig/docs/en/precision.html0000644000175000017500000000363511470425004020321 0ustar georgeskgeorgesk Note on Precision

Note on Precision

The precision one can achieve depends pretty much on the quality of the plot and of course on how careful the scan is performed. For a high quality plot and a carefully conducted scan the precision is realistically not better than the equivalent of approximately one pixel. To get a feeling on the achievable precision select View->Current Precision. The information dialog that pops up displays the current precision corresponding to +/- one pixel in every direction. For logarithmic axis the errors will be of course asymmetric. Although not a perfect estimate, the errors shown should give you a feeling on the precision of the scan and how serious you should take the obtained values. This of course not applicable for distorted plots.

Note: zooming in on an already pixelated plot will typically not increase precision.

xyscan-3.31.orig/docs/en/overview.html0000644000175000017500000000621211470425066020176 0ustar georgeskgeorgesk Component Overview

Component Overview

Below is a screenshot of xyscan's main window with all the major windows docked to it. The exact layout will depend on the platform. The green labels point to the main components of xyscan. At startup the scan area is white and all panels except the data table are docked to the main window. Note the four markers (2 on the y and 2 on the x axis) and the two red lines called the crosshair. Their intersection defines the cursor position.

Scan Area
This is where the plot is displayed and the scan is performed
Coordinate Display Window
Shows the coordinates of the cursor in local and (if all 4 markers are set) in plot coordinates
Settings Window
Allows to set the markers and define various settings
Data Table
Displays all recorded scanned data points and error bars

The Coordinate Display, the Data Table, and the Settings Window are so called docking windows. You can detach and re-attach them from the main window at any time. If you close one of the docking windows use View menu in the menu bar to open them again. Below is a view of xyscan with its windows undocked.

xyscan-3.31.orig/docs/en/saveprint.html0000644000175000017500000000413511470424765020352 0ustar georgeskgeorgesk Saving and Printing Results

Saving and Printing Results

You can save the data collected in the scan to a simple text (ascii) file using File->Save. A file dialog allows you to specify file name and location of the file to be created. Details depend on the platform. The data is written in a simple self-explanatory format (table) preceded by a header that contains time and date, source file, user comments (see below) and other useful information. Alternatively you can store the data in form of a ROOT macro. To do so use file extension .C.

The File->Print command allows you to send the results to a printer. The print-out contains essentially the same information as when you save your result to file plus the scanned image itself.

You can add additional comments to the file and the print out. Edit->Comment launches a simple input dialog that allows to add a short comment, e.g. on the origin of the plot like publication, journal, author etc.

xyscan-3.31.orig/docs/en/markers.png0000644000175000017500000021623011273064040017607 0ustar georgeskgeorgeskPNG  IHDR3k$gtEXtSoftwareAdobe ImageReadyqe<:IDATx]`UmzH! NДHTTS< H@dL0WW‚bDt@]?/e5h-ǥ*DD[ BDp2.8QBQZx U "rpx%C)JJJ%+h4oMMMS*1+4#c" wC' !Cpd>:FA!hl _dD8ÀHBc@X%*p~jzwTwDu{-ZĥLv ysppX3rˌd11*5ږ},Xi>`ΘO?oW#%%!94= Ͽ,+D!럃C+,3$: Iy^C>8]x"#g%NBiY NQ7':*E&Uɸ{Vtf*bkqt Gh%"s8؋n;#?" .Ѡ PP/? 4cd4)L YѡC!BC>hHI]vlH1 -3!!TT{[ahaaAh卡 !Ak0:uo] onAb\YBA#D!#v]ZZ?ſ;YI+N5[p0pX((EAA]%c`>yq]u2lQFj5QXh~k>0p CCH-W':3Qo7Gf3eee/_СCy-))iݻ`r !AC4 02tG-mל>5=8 bcŌtE냒Y[:<{YxXL>]v15?V G;*HBEĢWBgͫ2aՕ!2:^?Wf&LɆ 뗁ꫯ0n8֯_/bڴi\pppppx.Ap[1#ԕ6q#Xjd9Z$ts)ET1Q>{yXVe%|нK4No0Tl`Uv::~?nݺ1!C(.$ cǎ_~&ȵ1j(799ǔ)S\|#2 it ǶO܉J1 &oR ^B1(MGb"k~,GG/?y={rsrp&Ft߂}G@W PtK?/Bǎˆ b)pR>rBi_~9vŮ= C>#a3pdg碶G%9 ICy8*qY磇(DFǢUUbθaAa}'Ү [WT}<.Ms;mH?4Ho>_LTT-ZĆѥK'2 u @2ơϱ`5Qv297lX&OBTLBYk]wEdt< u;v9Qؕy*oe„ɬZ 0`I)_ZZ^}Uq=KL:՘O' f 8g({ms?6!?3 ukEVooAW׸G`t:3k j3^j=aʠMǸDR/B1++ -CddYb>}Z-6nH eNդiZҥpT97p7#/km܊*u"?'gqC d-aIz,yz95RNm.f88888>&}K^gҝn5o[mm_ᱰ4,!oJirY6b/)-?Ҽk GUŞpY0[I4mK=[K]넋V!b&*"ZwsV':Vϰߚܔ֚p 0^-ŭٞn\pppppx$VRI.kj.X[vl~iy+K98888<'$C; ,e[x&?0kyp& 涴H 5-3 cܴY=tsp\.j/b߁3+۞ch*P[SO= V+y3ZV\"k\pppppx<~JKe[):bh! _t5^DE=ª0AdP i#e25|mJb QT.[`Vc160t5xѫs{x#B CS^=BDMHve ĭcH됉b'YUJ1D4-TV3mSnDWLmbUq68̤ĭ:$ݑ[m@BH cC)a8%X#x&66o Pooo$ 7]gҸ_nf5Pn%nF^ZakhOV>\pppppxX|۽)9Ŋ}h{T^ȅwh R7^8W#::bP{'P!*?ΓW0fHa# &&W]izˆ# v;AC/LjbcTw\` JĈWOlښJE~^!J*0a|O,]"~e7Tg?gN \Ұ3ѻ#n,zEtUx!H]Rl޼5aܨq1lݼmGps6fH9Y5ҋ٨W;x+UuǍC߸p\D}ms_\*:7o67MʶCCˬGQTV?/]>v?q:8Q$nOB;;se.f,`˖-x뭷/wf /+wy'BBBxqppp`F:FȸƔP;Fwc܎ǀÇ{L]4V{_ܥr }k㢌۱ŏ\Xg}۷,mݺuxꩧ'`ӦMXh^u^in-N'zår+'0c2{k9o.f,GAAbȑ#yfƲmppppp4o\mڒlrQur[靥7713jZ2SVS`?1kidѣpppp4#F4YX4K[-HLnA[Un[ҵIIIk֛p^bj 6%%PݻwKn3gI P_G3Tt%VٯGVVbVs[Zǹspؑf,=綍3m % kobAHrGn[BI­ɏݻWހU%(}qzF$s~L6JDϟ}'N#˾ҕ+jS ֎5[ˍ:v@@.Sn{r[uµjwyK#??걵1&"m*iJ/[\?9w*<6 !3b&dvIzR%mKPI /3k܆Z)-=!yq1 G{ӹu/8VlpQrf/M4dd+XOdq[keEd.s~c$h"g͚e[oK醑S| Y-:V{t9ȭm^n^nMn4u{JXg¹-sO>)ْM wfu9R~öϑ17mkךl/\P%ʘN(II_vl_sqCu%IdYZqs-YOF[>.n8-\ JNk]H-YgqL:vF'z(*z 6V6bj-_E#MydO&JmTngq+ wI3xoSH/HmYҋGbffZo-f< k enܪ܅ہem{Iދ?y8rKa˾CSp)=y bv{xrsh 2]_\x q VբB3Q\#;{QS׀#`0pq )'DYT% uH=qHS:I9iPXxIdY\HY.ԎWrWn_)ZD$E7~|˭=ncs[QlTn"nw|9Jo//w}|Yue86lljrƹ\TN?ˆA4cbE,YEElCx58^_3pR.?î3uXKسg;>x=J+{RQ) ©cqR(f\ͤSĒt7nLk\,H؜.hZ;e{4([;J6=wf}PpDMm5/\{>Qz2ϡ׈$̜u=݅n1xXt kl PQUk+Ce>|R`m2%q3K~U=d˗= /8ם-vr9N׺Z- wK=wJeP? Cw~_LTN;Mm#AYpzf|i #2.&3;ۉ~S˖ ?o{{7iNM?c+%G|p6u?*?ٹ(31oB1nP0ąjM9[gZ=l&Z:ʭwQs|4G W}}puߝ iM7ʏA ~fpv`2 plc]~/89pWo\9ڹ+5.Għ}׊3lS"g&""lEiI1|ڪ2"2"'QTA$rr ѷoz&1{sd{GZF!{#طVCdpdEfn:u A|xfes|.cv)DHM9b:"-)Ȫ AטN8h$vGu;JZ$yj&i|ɦj~Oܙ[!X͂ Jָf6a:fkU1V^:垙1βVXJmܕbZ#k԰Bg}us*nnQ`XXj`-VlNnKap+YAZ#[);~8m+V=2JM:Ǹ{*֖z@{ȭI} X܎ܿk]nÐ/kHͺ`b,n%k%լ:]n[ݏ> ׷ޒkyeN#[٠-h6-.NVa ֖̹Mz+{Lbܿъ>wpshCKVB544P__v߬׉<^^^yՈ4LF̌2K>–mx:8]b=wU۞3f:tF̮: gO PrJ.kfZC$"HYXi쬽miJ˖qڹ7V:v%vm5nye3aɪS_Ǐ"#"A,ԣq<%р?b:p6=SNCyg狿Ky,SV%pc.,Չ!ڄ$K<+Xzƙ4H=:z]ǎ-u~Cv+1C yίi=qyyY Bnr;E^%vZyZwus(K .nE]XwbR މ,xu/?x Ng`+QYY^7}i8WwajI?m|98RqZy?-vJ˫/>tg];wnurlw؉|E?b*r*m_D/̘u-b";`[1ֿbhH}}:ۏ:#wLN8Y^՟}Y$l0r+0Zu(}7FIC8u }; Tп{OwON_x/4w:⛥kqXvUO 9Wv{-5T`'Jr| .|Ƽ6OXuMv.N7ikq[k׋s:,ҁ&)#³Щqah"x *F/CQZdm2! .VXa#o0&ǚ@Y029kQR\Ǘ_!EeY!~ܸGKUsvΕ//GWQx~CL55])(cbg2㱿s a#pB.oߠ#!qr>8:_b{+rՊBf;"n{QmZn7A=JՊ-={wk={s.l6{Mn-\ͭ2mu5^(iFoooQ(g8 J}1p1?Uli}]jjE l3 ny.o9Uo`TV'r=*e",8 +&¿Ղ/;уۑ ꖈ3y(>=ctw\?&+_/VIv;ޠ$S[`#|R8-ǭ9m>hShynG;~f8[%7:bA) /栴FQ 6Ee@"9ygQ"潐?P@sعsϹkqh.X;4ueq.'վ[q;!i" M@cؾc'&\>q.;؁X_[LaϞS^27~+O3 -5}>}AL~B aָn{Bf;W߈CE t T&f;&Wv5 bQ4H8[`Q?~гG rV}(cC>|PǸc3nr$RvpZ|ܶq+X`y:: r>l~aM9'26FIݝ9Rչ 8ȭUpnĭόʭ­Ų)gVn[;t۵X֫ Psń:3=#u& -˷yfm=--/8םU˭i[@܈[kc[py[6sBngZr[-Jy鱯mbccUȹ]EE / (;]WT[Ug;rٱɛcGv F+^`/*o\1~,f͞(#_qۭ sˋ[dgĖ:ۢD `Ɲv _.ڇb[T70 ؞63FV~bsH?w$% CjjӞ|Qz 36!Ccamob1^c3cO#u9-pk]JsaԸ嫒 Ly^p! LmT f>&+/P,Vz R(C/?/mϿhM릣O>MR=,U+a|DQg4R~gN6U36[4YݡZn)'dfd|ffw놛nؔHN>N_QW^}]s'vk5 ab4,=E={b֬>w|iL[{,8Xʭ"N>wѲЃ3{iX MP[:ĭ圝m}At;ȰPcrw{ҒqWC&3 k>f}>'7VF+$|e}ޮr Dr .ܿNN!ڥih%!î+&c"LAA!"|Els+3g5Zw6kylxg w-9_S[kT=ۚǎ|U3ipqnRj ђc ܺkVifnKxe 4VݍӒJW=q1"  mN̘q-k|ݻqqL扽%DjIN[Mò7/ GC>6Gׂ,2_}=b fӛYchXh}Rܳf`j̸k.5rLSߚ;̤VX*5֖e+Tqwn0& Z8\bL_`o;!!ci9:+>h4p[ffoJUSɝbYeNL~=2k׬Ӌ1}+ِx 4X--`[ [֔^gx3 =S ej\Ʉ̶_w0acsg|۸EF׋%"ZےS:-4̝oS3Wlo}'"> iTVbGpAZv ^\ ^8l/CR$tRD9yV^#;tųp%zH݌n\co7)gYU).3޿}g'#-Xv ⩨f J,r& {ԭAj&6 `|ܣFB~vD&3FEqi؈= 76 lfIXSdڻOc>З['n15rR~iy~i6q<Ҹ_/L:q|KC>Zum[--~}lf34l$ B B`EcNfCHS3de9䁷_Q&d͑Lp+& ꥗⑚5( >?li䲷+q=qZta +d&?2tpƸ{tJӦN CZQF]kkO)\?i~c:t-)uϝZf, '%nClmkg@0LW?@_޺C Z@j/M^ٻDYsglqI5n/MLxޜ^Jy'yϝ˸&e[ܚgZGԖ&fH%4$DkL݄`>dY!1!N2๹ eF:d tZAC~tWp[(͹aXΙ!! JGIHAƑe$RsN22۵jAKTEd!Ta|Pƽsŏni8+RkWNNA\m˵YZܿZZwm ըGD~e>ٲ\&e7NPܬ_ f=Tsnr vzQ}Eo5ux3A9 :]-o<܈[g[ɧ-V?wrk_Z6\TUUCtt4 `GQlb#o6KYY5zN̘ (F%D0s[#zwu1a6i5g MA[ի嶟ڹut#nH5nA[絕[z-y(HsEBfɒ%Ɂ/jkkGyDP/{jjjX|۷oo AEE{j=J+{^*N3*,Iܮ,En{-6pkZ47&g3,3-Y-ӝ}>6 ̙nk+q4LprIEE A3w3Ƙo߾}HOOwlڴ ӦM_"~3f0ԋ4WvSC4sK ?϶eE.*xcmJ=KpiFnKVfFS U 5n<-UqLt y۠[l;a- bB}oz?^S''ֹcxy XYxw:`7P_$`ҟfb :S 0HFvwZZƍ~ٸ~k@jj*[FoKq9t6#++qGeni_yeI)ڏn[=ڒUVs29gc^[O;[+n?Z1'Er 9돔:tj]DEiLr=l%#q.! 1P[[ocfk=8]v_|/aO"UHNNf)1lj;߄f.}`o9ӆ{vġMߡ[q>#z Kwh)vxP>w nX,qO"8 &nKJ0n;ܚ]U)CtXGՁ3smJ)9'i;ibgŸU B.`Pb7w0Šn8" +jQ_t i/Mv`̈Y/[ }AG^>}ٳ?`lWyV3<_I-8\n}|/N^n 0 dz۾^n4cmU,3f聸fP/ԏ'ҳ덙F/0B78ካE`_t܌lHy\y ; [nloe$%%scb۶m ʼn'<3||,3&cAU&5sIȠ@l}66q}, :Ių_ޯbUPFIeviU_ UV[ us۞WuL܂rMx k>!2$RK}$w;v~;N|cc{ሏW cx*hjҤI>|8[DCIlh{Ȑ!ڵ+G+| 86|g%P ?OKO<{[&yV^V(6j2pRѴ&I^Zo?o2߼{c%,|L{oy,3^w>1s3pEI>8 #,q@<ƸL Fc܎p[I 5٫4LANu>Ӭ-oBܳF˄l}XDFx08Ƨz/  23n0ߴDTXv܁7<ߎbܳb>҆Ec=6dqXQH}cieb9ذ=a / sP7]ih xgiV.: h/'g^1X]<߷-1w6_}Q=<8 v~N*F茗dbYj<t}I|$P4`i] juê#:a++)hh,a$yE |N3$`2.M5e2/k~'?Ǚ|ep c&h-{4rvbzI@J2ޞ&c)LfFzq?YoC"],;afY^R9|0 OjMDL6T[Ǯެ̏ PR#3k.:k{cCN4]PCLĄŲ8Q=Dzbulx,C?cOx]<#X:Ny {`e~mؾGoT1;^x]Ȟ޵\VƯTO>7.bsX՘+cr/YΞײXp3MyȯAva6֊uBe"/"f($*;G9K@t1úFTX."n捽}淍"+g!FۭF9v̪WF]_TpmKY1n!b$H@,Edp`ē+OcMhec=[Kkvds^y玽&L6OY$<TĐZCW "͵ċM~fz4ɗ&92#KZ6YB6Z-0m]%rFITދ5'>bB$4 C8KKa[ޜ,\]/ hwgKօ39:АJJNJ1=p޸LLXS1ί~X>uұ6N%Ol!@x$H0XQ>dvFNɵ"Yݍ3XRcfrniݑD0M!& [E sFmva K wkˋ<[Sbi:C=pY  bOueKsEI&A' C|&"lzXImfxJMǰUK&?3:s+TV.7,8P;y6Ϲf9>ٱQ>6ӁJL+Ď˱ٰ}QekubKX :/36?S![uQ=ǙXYV.Hg_@&b>%;[Cˍ<ƚXGaLT,O{–c?6$JIl!;ϝZh|݆!mܤ5(XyzKqylVim-&fHe,4g<6@e'4HKؾe  5Y" hahfpצyFd K$Esf=:ﳡ$y:>+,Gˬs, C%1~LEݡl&|-M^ci*}{ Vo}YH^ř`fd}$`1;<IqhؐB9|3qs'-=wrkyk{Pk -Y }-Ln\Wr[jNn5 :iQO;獂cOٜ[@+.*œ WՇ` s؄b,.>jؿ?sl mƆiVP f6D$_*uv k G>[D~q؃&R޸| MϰņsƳEy `FlheHR, T͙! n4"$LŐwmLԨY;TK{mKpmK}Ym)]E-3Lhu&GF<҉V0]2xS5KWZZEi܃=zmrlY_~e[ 9fU%<]Ӵ"f&;p ɘX|0 q'2gbzކ#曬paw~z??8"Ɉ'cۖ%׾2x̟?иQo0OP^2K}z͇?2b,/Vui6MFC2iq",KIҩtily^B)!4g=a4t/!+=>04pkc+2T_T9OT_3oˮ`4%X4'm {%Xq!jD M%QI%?7k:sCXnvmٲ}nM7ʏilBc~ed˷OɎL j=Kd kFϨ^&~R(~_WPq*7UeS95|&O%Xi,t޵@Ή:2G͟fukMKb8܎<ӎ"tئK~~> NH &*ڱcGXAlkQ$6hCbw)Ο?om\3}1s\BWmK7mգSIKirerH:2WR/ES)*zmՄ⵴ۦ\6boߞ1`,Jʭ6ӸŋbF؉oqqqLМ_|Qњ ?Kj{zx:+/F p2%ynҵg܂ әMϵ APlb5ڦ(jeU{E߾}O44sL<ۆ,XIHlxc N$ q;cXұ3n}iQ FB~^tp "E9|>02_tK Ғ$ *73*eG4 @iM &,\X[ne՗'\5,t.9w1:QV=h[^.6Y<*[ܚ SXX܀{Py'Xv p4}cl g3E()e؞sEGP[W'tK]_O'7DAMC\j6:{nۢ՞ZYH[Zު5JsL<[IXO.f,ǏUKJ%OK2!cИL NL,rv G2kKim1q;͐E#:=Q"Q>l+"-aw7 U:"T+ %ˀ܆ .n~O96U,RXn5+3.3ZY4~ś^QD3;}b0ef9$hr\̋/5sSh8(4FMz+wäNT't4 oCͦי0)3җ@yB@xlxmo,D ͟m&><֦<ʄCnC-k(l6ӣ26>ob.W?e9-/HEO(~Ԇb"/d+&8}:|q>,^H#]Il Pi+79~ۼy3Ox 4`РAHN>&L4 w3$bҤa)qX!49XvqZi{={ֶ;Lf͞/i-̒'vX̽FĒۖ2 **ۗP#޵!$AKXcFCy(5"rK1Fgԋz祱Ҝ_g֘`{݆&?cho e&qcOX(+-eV}HNDL؁l1}0eL!Ɏ2W|$pX`X#&6 xi )ff%1 ûš~haiO3qאgd]5_1h2r6WF 4X}`y&F0xs}PN q&4ˇXd2}D]A!15db∁C U}8e22lOH$ƄZ;w :DP_ħ*̻nt4WW]:/_z> =rY-!=X~+7_5ZO JqSX.?# emr'O{N1FBa-͸d~:TygNfqHa4u<$6sGؓS?%*1~8pV6+ՙ1TDbmrD54.Ik34ĘVMK'1aBb@znr2il6FbD YmPtw}gg?'Vq}&4/,*YjBEVI:Ms&xػeiē eQ6,}tPn<1j15ᣣKQKV, a3} ieM ~mbZ>&n<N V@ J-8j6ĥy3K0,j\u.0މF1Sx)Yy֣jˊeEBDtǙAʪzw&~;7'] X6B=hUlEE9|}mu c޸Չ帀iݷ/~G-G"$ա ={DZZJ& xïc311˽L.ӹi.ˌXץm]<۹ W~n%z?o&b;L5-[4ͳnWuƞyYGX03,mrk q4,oƍ"hS4lKǪ[7H2Eƀ?9 ݿhQf !BCR$ bhОѕsZuMbEy|񷟱LiMHjLV;l0D;0w ?n Q;囷3|Wצ~˶΍/Ƅ.Ϣv:,ya9|>mZl ѪUX|X lsֹgʫoAbsW"11xgf"L !NDD QRIIqæػp64{"&1ny>c(n11*5fbp/HkBd&XJ}cZKj"F­?:Snzf3%3/ ]\csJۼ!GR}qq}'"l wkIv&5`- d pKYXנ0{#}!u2..z|ۧ^/Ip̐P0@>Fd\ pgz޲$-3; ;p;([ӣeO&飍~ {Kfv_'2K4BCsw"5wWSi1 Nw'6z<͆"NULZ"C3&+:6بx/2F 4]MoNG}1wѬSl[9bی¦!Mhۿ7]^= SàhPR'VѴ mDA,nKXd-č9$RsMRBI ;0d%5e`kw5ǏOCPwk䱕17[외 ymHu0ol4镡.a%y۸ i=Sw a 6mɼޒq{KeUvlxqetG+t?bOSTC%o!Hf^~ ҝ\ e'->{Tx^ʈՑ Bu!/$_%{ G@b1"n$UbϹTdA~'CGO}ս~me#])pHCdnKjKZb)X]TSZsoH2,Mגy0/e촂I~ >4 <[t3>=M$19P+5:"-&so؄NBʰJm}muǘ,|). Zi5NRg|$*<8*)Њ\zվ ?l*Sm)}I@*"nkI%.Zޢ)T$m/=bz%۠6q<L4i+ȭ o'.l*TH6NeQGwxЛԈ?U/|٫[pÐULff&բU>}u5%>zHbH 99[= lقSNK.\Dț"f;֭7ŠiҤ^!Ɍ4op溩 $cu&@e;{/N&I [Uh؞}U)Ѯպ&F&7g9|baild&Tr.a`""37T+NM>lb{އ$Vo3:GxGI+Ŧ\KݛdFNGzoaɁKݹV1ntu"'ELYu?Ф+]fX*,1uFH`Mv-Dd_{S1y1edd >>;v"2F(nz~ 8Y&rf|$3!2`q+̀7@q2W˜^ ׄ1-M.'%_ؾh{%ƿ\[Q8vM^-xzj Ay`;پ̺oWoۤߩ%liYI}a2R3';'F!~%/ 0 f"g|c:^]z6}TIU:g47I&Uk׮]c!ڈ\cR'bԹsguk0i-B䌈l#ЄL |&flI4Dh8ȣ+ u0ءC{DGׁpl0A`ۺ֬y8M=$~6Ic|fvRϯ'FNʪm~}@eL;F1[V,HW%]Ze٢D ҤLDjhZosD#")zZ@Ū-šѯcY7ؐq@%JƎ_4+t"]>vJ(Όӄā\v[ D|&t{=Bv0kNdj'R-;=ԍܹ5`ޞBA/a}o}W~W=N3&"`U"b\'y$Df,l҂gzWlYNC؁hDT5连 {{ycU@?} &yi#} g}25UfQ I6Ll=LZ*8(ݐ a$6BؕFz(cS&vwf+[z=NB>a_anR!FO_X_tffΎOTexכEm^tܪ};4ρ1[q44j~$p' ]rSR9IIކP:WDBi)p͛F[[/zxx؜kK֯Գ)j-ZʆwNb[=%}0HSMO#ákpßuqSel˩m .ㅸPz%]vMm=!Zer;xyFg 'ЋRy:ǗGDpy8Po%8m|=xf]̆Mh\54n/(un+O ] q%ہsm+x relc'm.>=2p U/^}Xa%nX6yq]WnTgRv̀8Q+qkzL B^D&|޵<Ϟʎ}vZvțY9'<^"^1) Dx|0=edY [)3Hs"' pʻ" Wrl;WeY؂}*؀Axw"c%#J~'2G-Ce7%7ݦHb@LQuk Z"cŨ'bx[^fRʂ-!2 ɌDGu]akX#l:,lIlc˨j; 3l mbUe>{9}ZLǣu㾡je a##5w-0U{F3J;2Q)^JFxya=l- q{U O<ѣG>>mY`;wL?OQlI[IlTa[Hj!UMZFOiEؔy;Qm6*H[k[ZAQZ؅3g'Q)&I#.ѱ@c]橤yݻw13Ӗ~cǎeͥ4т ۮ¶@lI "6m*a0Fc[iÖzxN G"n&6O/X1T'RM.߲t~V1)e*%22ʖ-);]>Fd+Df I>Ie\{惙f@9H laBS e !NN`ڨT l?ă4*a_ FjHSEE[LpͤIff۩͖ ^y#\~фFؼkxfuzVl($B*G:3cƻiKGeH$7,8HJ:l*)ؖ\Z|w;ܱrVN\]OIViT_aK` ?EEu5e)-8IxFuЪao<4QrW-͵z~M^IC︙]좢"!!2c(RRA-^W_}{%ڴnncI5/gCK q9oB*ǶL@hMj7}77ꠡ_OWH:Cx-ZGȈ3+R~bSVݏХn_LgX .5&V"b+RvZ4h ܹnݺFBwLLR(doyȌ͒ǣW^ɓWZ\=ly@Ycٳ۷o H¶*![er&i 6I_wV/[n$H sn5y081)8&į?bkߢ\˛@ϟ=_{u|4g:9{ݻm{ƽic;Y^͚%QF,ѽǯG_leä܁k8//M~aw?&)Df ̎;0x`gڧ(gĉ9$B60d}ach*-\o4 :-A[Dl(UEژP%H`e1mhݒQӡaW]^1jDǗF=k<}EJS2{4nوs}8mn¼9sqER<0Xf[܈+VY+&O ?Ư;{R m YQߛA222PvmN!5=0lmhW"t6 ON}y')a_8pkкb{,Yq6"?a"4O=0qaa77WFA{zy3TR{+QTKTĨN>+3*6V G.6*6,-"1 qlmX0}RcѧkbJ$+l(ܹtys>0 ovm7k04-bzI$|,:^Ժgpv ĵz5$ 06.LBf5G<HjժL^6&=[b/cVdi xY&qWH4J⨮Kd/`OfW+. =\ {e|=pug߭Yd!Ɍ,{tڮHn-[URNIo0iYCiVn/lլn6Si`IMPPٰʈGv [UPv~Ԥܹ51jxN^t)OHoz/_~^z űIhָgܳvUu8{r2SqtK%eS#x|ʇv/B1Gf͚^۟+g68B^}0f>3hھޟ+_V-Cw_=IGXT%`)X"; ~Le ^k i711OryzGrW5 Aj;J9.+V:q>ԁ*cn`qffﷰ"{1dV={93Q>r-dX)G⥗66מ{{]ןOR3V=Wm{,|m?@:L as/|AtLB@"G^5}.5%33IfSN!::p_\\ڿ?9/6 lw}?Wމނ=--ٹB>z"JH;\R ),G2CρSH*D8:( !uUDd,#YTSXXksޕ~K`)dgԸqc߶ڨϟĬ\{̤M뤲AI47Q΀â39@!!Ճk[9 @C6 ~QW+S4%-Lߐr` a[I)M#5Bs[ jGDM6hKI}o^M2Ha-866[nƍѹsg"GxwȰ*"CTK'Od*DDFzu5=K\!W^*ՆkU bO Ŗ$'W*Ʌk*\.k<%:Qٗ8z[ vݵH_Ol;u޲; a[/|oUe*}[5dĨyϿ$gYrMʵaVul9D\:t˗/gR IYȓ)..N86ݓ1hQ5jCfAZn͢VR:Xeg`=^]vyK_Nm/M!OcءC{DG10Qye6׿^Ҕ^4sPz{#Bڎ=&O}Y [ZH$R?^]8"i ?㿻bTvڔJݪT'd۶m[l+N!"3Lb Bt!")h$C,d{.Cn fąuk SKd{ :qT5?%/.'iKÌu!/wtc6PH"b[H*#dG:"0}Y#TA3Iq&RXmn_Bx>B#YP3`Fj Tta;D@+آUo6n(Jv2{_C=cߞuJvp%]+=h [G|VSQP[}JUH<u십\.\QFz&~=os1z{; aӧ/D fZpBjȝ$3l~yS9m'yv&YTR!lvdFgl V^dR TGR8nϟ-dFƑ_caqgZ^̖]lAbap;pqfm;vĨٟq^_,QsWz T=M&Y&p޵hTel޻ҒS =ʆM0^3Pv/_C/̎K6 >罢$ ;zEg :[ 4/t-mA:b+NR QCo~_x+ɐw\I;yۊ$bW;2Cf(7A ViK.a3Y*BBUvLJJ^{6"zIE:.$tku{GU9lw6춃ʊ-"4milORI)MFqA3vV'T#釞LE͓]+"Uzy";XXӓ""zDE2N4Q+:^M:CcCĒt XfjˮOxɏ܅'=n4]N.#D`[yWz<)]e1AlҺb` i^(j:Odj'R?9QH"C1jH:C(ӷƦf+~3O-"mR6dm̜ˣd[T}R3Mä֯ȾFPZ U4$ a_7n,RG_+s~<א7eNaHj.-H<\X9֬y3w@-imsp@[/l~R}*vRAIØ;Aor:ID#?6S,آjhrԩ3ZI|I3LÖ ?6xШIrxX)1p<W-R+hkElQeR[6~q [7i]!Vc$ 4}7' LٮTY2sU!RX;kX~9e$ֽ th^ö#cK(l[iI jɨɠlٔr, +Eq؝'Q#Bj ucSDIs)a٪doa)'o۽{w0XL$*4@U@HFfb NɂTHJ4P.~;ǰ#6q }gqt$RCR!"QHdȊ+obkv;ؼkxY=R͌K&MXs*+Vqꫯ:\zp- |'ǛK|/lAe a+wا- "jibW+ƈD)1j^[έ&0юduqHlVVlEʓ%'e)=2 ,ʕ+7y 60 J"9@$A cAvBbNv["(lKBR;%cH%FQŎxϋHkΎw+I[F:&Kӷ"i4$_ٱEW6rTB%bO?-Z8zO"/ ,J^+1 v$cŖjs3lIVo?%^\烉 -D6[%FUm`do+bM/Xt]g?֌:dw+Ϯ6\lvdF-!)Sk %BN7hy9̱=qf\(,*Σ;yI&([icBքѷmD+oXv2ΖI!S[\;__Xgt|$#UVaȐ!߿?jԨaB ''[nŢEVttP4hFUȹ;33%8YH\8VOQq 6ۘ,l?FdbѪNd_@w?l}Tr%54"9vѩS'Ԋp&e9tS :N~K.e˄~aaar3Kg"3& i3;GHJc^ZGD$f+IlnMD }z2#{bСLTXT‚Bw&`þT~{d*3$2-[d*+I.E[zA|lg;“[n9A[B rSmBPdwCO$@mr,hq5i_p,u1ˮe96,-/IO#9?#ž;U.h"ZymaMZl9yEgpwcHe g t/o`4$s{вPZ'-_fBl;oщzpm= _O$a_1|EQ8wڵk)dBw됐{ :tqFtT6\VlЫn^fxh(3M!vڅƍJⵔOS0i[8ٷ ԉ@VKcW/-)hwY'}! dee1BF´gڧ.e^ 7 :Y<4aKؖ%- ݹs4Fl(tkĶk~Ƕ[oճ%]U+l?BaO;T%]RlH[ /sT$`X+Xx7xex8'N^_y o?;\_S'qXtۈ?w_}p8Y' 1t DJgvum\o+Օ1jb$TFDL[\=!6k= ĬOC%ر%.a cjzX$)  ^6n]g.Y%mm(= Y }S{7FlԶd[}<$PC~9<}r($!CM͚5FRڎ݄3ޓdw֮]éh{86-En)rqyf,<R. \ZH]$jW ߈Tz2N`펴roS5BFd޴TZWzRЦuI_[~^ 8$R\r;lG*"9{cC866Ḯ8VP[.Yӓbk򰏘:4OϺ6O|.&ǻM[ǟrK;]߇6+"38x QODׁC `67h].R7C fș8rZjexeס%LC:i+|; If$L}D}V LgΜ/"hI[`6 ENA,/l{ XqO` IBAvUlr$B- =AF39eƍ8{w<ʉte/#/j"CŬQQQ]e)zc^At?`nV%4IfxR^co߾;y5>%;<Ҿ^>T ۫CaXo [5Rn4ޟ"lC=6'yߍccEX4]R̼=mh ^zi5lUwŃZou;PhlCplu=[sv]+Nx;bIo"jhY&RԵkWմf3/'=+/XrLbb"(DFRW/ߙ3g|LԞo=oȌAQ<:kVCo wG%UqOtZslな7$ uH8z =xy>mL&* 6o倍 aKf\uBdW0K(l"4111LդJh'q#rHDbD(m)!5`IEH2d`Lz '(=QrVz 6LF8cXYfrz" ڕ3dwEπ*+=7kތEN;/v*Zo}" %1fxǵ|H^YmvmeNj/#kE(VUsl_޲H2}$SU&صg2f󮱧I$Nu8 f̘ɿVC5K,% gb4m&,C;:|Q?|}} Xn1e,27X3k& aH(h"I'zyȌQyW' 6Mm*'Nce1}\$Dč$cKKBh9fz%fRʂ-!Ɍgd4 odsE“R.6awEr;Fn0Ӭ ^v"5;vyT9fu3ճ*`+%$qXT'XxcSz/_kbgu>?cǶLgmJ[Q=d?[VŒ}J|>m+AsSQ󮻰m$m&įvPYH[UW*-j'ǺM ޯ2cS}!2,Ɍk9 v&%rKTw?&^t>3{C,7t6_V++׍x=dgŸ4K,MpbȀhfFv6b"k%V&يm6kU3)b=OvHLɌq݀mes;7b 2O2zWwIү7\ -s:G6hf+*,m*?N㿻|ЖY/w3imSzixƩ [{mEV>IfPH0K.ѨytVZFrzwmj ̟we3)U_2:]mߝg]Xz{V^I1CɆY]]li~7s.[}D"ncZL ؚ!O_SnN< qad\ظj_A9Ke(+Y4dQqcc%0[+$6) >i`6_q萋8*2\z?R_v?_%y.!8N%zjeAl6&ToM}FakEl]uQ ^</~ܵ) E ڌ&Z Тs*36UlZP` djGa."] JMj kIgO홗Z>l4g)lDJBYŦiiiD5n-66Z[K~~>ԩÕwXq}z$$SzEIxf>lgެ^ M21Nq#]}jX)[%ĵ@BqvkȌKt[9]JpSㇴMO|_ &<M6G ^J]y%vυ.ڵkѪU+lH9 ڴx$hV)~XNNL܄LX $'6Ƕ76M~a"%5Bhk#X]SoWU( ާ+y!5ЦK~?F뼎R\s4r 糧NXGLt%#y8us~.N1TΜ9gbĽmزu;r ؽ=\;SDF"11C QRR[o*.ǑGQaaa;qW1۔>z]| GC eFf?3U,-sxQtĶ[Ũ6}1E TOڔxV5 G lj0I&b;{>q^VbE?GumF֭IQ}~Nţ/Nao^z%** _=aϡ0e$}]\t|bu[]޶'.2Zj1bĤ=5ցF]ԃy-͌xgie/g>wFi~j}w_>MWLtvۑ~"7V1EJe rr2u\K0D@jfpv}#*:ё5QݍFѦek4T-pjD7F+FUZw؆'Q͚5F$Dيen A| u1^:8{*]dH9ap.Iz$ ydgZP1vm݌#{ҿ%SBLmYZcdB9 *u"zFE4Qp9؎[u\22Ou-'nӦa۵mD1wbkXp@~[7`3[IU6A- a[D#0>hbk5x>'\|+3ޝ{R} s,;nGLEK _ǡQT "~-΢c^֡; =:}M/M$3d/E>t|;w_ۮ] бW]\r8z[;ƒ[\\BfרQ#gb7łoG^9 ѾSW8{\\n7q7lstL9"397[8*95[OlzN>`NLib1QT>QwkUgAlvG[VBlg:_ХZ,N yi'ӧO3m \;I9Շ3qnl٣PF~׋c-<:C2b#) ']veRHDHivvnXƍb-If_7b(9XF+e 6tzuM |uU>e@Ǖw% dCTG.b1[⪤?Y+\ٌ/ 0L*܎ϼS( yGٳڵzfUeSl=6b +GDM [mLreNbs]&Xބht (=z'qu%^yό3&RGk|o y3 ϲ>>y/WZd<1D,-I[G2Ćmlzby)vM@%z˲_%x5wŖvU83Tz8=; viεf~?sd oEŖűm̴~v]U3:zն)Z ݇޹[{mEV˱o`"(8"r [{㏵>#w|B6RoYĐ:qcQcܴ#<):6(]Q 3s>ld^ VJD^ez 1T&}IlM+@#JP"AEvE5g|zjP㉏9s̱"NbITؤja>"6T/~`Nh@[=oHF8خ\]ی&M4 =fLuDԱhGw`͒8;sl|R5abՕ[7,b;B3I^z,­QGzyz8[x0yK׊.!Df,3DLX,]-m?fF}@m> U3W[>3H;zY֎‰`CRF&*-,f=< 4Eۘvb7*+v t5(!Eʭ].yNz>,[4@eV]8Xẍ cbkD$ 6w`68(lk5b{wc e=៫|=gn%&bԨbicvIyc@X}XfF3T5I7VlrU;DfvUK'aеrzaV>{o>)[Țqܾ2"cAj`c՛}`x޻*c,x[c[@lZlm,bw>͉-:uWť+\-_'*x Cd%8vgb,.AjkE+d_=QW7l:ՔrI5d]`ۮm5GqcqheXY99L6V57i˵ڧh;s/>N R|&OF em;uN|aٮA$[(Qyv@"V{MHV~vL& l{kRG\テܡȸ Ec:ϻc 4g˾%дQ'촱zKhD$#۷G[pǰxohW~/šl#oĖmԨZaBآؽa$aLENduBao*MT8Bd b8M!2Tb7vBm`WQ%%1FfQQt|1~n J+,v,UWEX:u~]Vvv1+;"3N٪Oj^'n'Ό|Vx0Ķ l'0c{O`gN1re7BvIhY;woFp}XМG6pG6-pVԉ톸5MZo"F"``<+3  c4ҥKTImO(Y9l+&iqk͛P|&7g%Qdg(<;~ԛ7!!>[D#B(alS\k~W /xԍsoٳx 7+ [6GAcz c} Wz"akS?qyڴn.&yMt[zc{&j5QuoMMjV+c(z陧0|TomƜF9`#HfF;ӡI&M ..·Є$3fDll8A鉒m5 6,[ĶdgfᦸF>&ypXj)xajHbBhǥHuû츓zR=IGU¦N IfR$}Y{e6E[QH%8@:b +d^p;CotX(T 9sb6ھgrw?/(~>]]GWUe5qB5t'N#˛E5;/oubL0$3H6!ks! Ͱ`l~Cl= B *3AE~V9gz8zol4>N Q؂}Iln={ q5zFז73s [/ۊ'dJ Hf '!|ke]͎ۊHlI[m l,%h(|cwtОCͱSR;='̨%2zHQd_qTϯy${!Ɍ ^v [Ķ*6 `j`[DO uk4hޔE3ߵ`׬*W-+ws اC3"YQYM >1mHO0\g>56bU\tXT co<]5X1DIS)ls'i1͌ÅřiKEub×7-CE`g1J{J\2`ٿROk6wKgȳԧћyhQQN8ϻHv4sI>+F^6m`7n~>V>Ȍ塇gd!&?B#ʅ-[L(;$r [(؞׵c-ēm˪9s=+|HDWQ`řѮSիq0CGdGA̼|?z"'O!66arD]ڵ h׮{n4m sΝE&uZ(EyaںND5"3=Ne^2rO v 'IAl#[yBؒΤ63'e\ߧ7: ](vj]s=zdF7`CEӡ3PUOz%%%1l0$&&",,-[`ӦMݻ7LvK/DnZ+n{?Cz. [kk!RF#Ff͚lIe-[ZjaÆѺqTtN;'^@[ONF}^8\nzFfrV+O*}QY@` 0vbbS숪!0citOL ۸2hߨ}iIehBǹs$  FX|0 ^!>xz2N@NASz/lZ1-1Zxmk@+ѺaO}TCfXq+v,vIyce1)M٪>z5/LO<\j1lw;cLڎ4Ի(=rEo5V3\ul/rrr؄NR "2$DڵlO=}Zcwb+Oⷍqէ9zҰ@{GD!Y&qIZZm{H=uev4n gK1_#G';Y';O>nZ/+֋ d;f ޺d"ֱM1K4vM,l[>O؜w%8lzbDhY 6nD`K9o2an υLuB=`:oR- zIW$2DfI1$ c`Pus#~rSޫ6~^uϮǁlJʰ3$]:o~ކ/+YђŒ h64HuIo,FZv:pi$}5VsZпgԉlEWPsL"% Ė -`+NSOJB[ [&2:6 ے~a<ۑ~MrjMDZH<{q({^LZi4k Ya3/Z`B"Չb)c6B[Xi2Xo[fj3 su/*F>ѬI WR$"MF'Obƍ(((`ׯӾ={ϫW+rݫz=z4ٽszay7ߦ_Gfv}^;\/켽XNgd<7rK:tu² u:OKyغm:q+ynYY٬^y?yT_:ۚAty׮S񼛨}qay^KύhRP}˞qwM:+u?ͻvGVڄrnͻf)muڮ*GO^ӻ7s12`mZ[#22Oӕ=?ư0k4h ;K.fΣk1eQ({jF\+FRk?F{ژO_Ri>B)r۶]hӦm'jieQh HJѲeK4oޜ0S[W7Vmq]CիSKwB ˯WOd62mժkԾŰ0>\.Y$CObb"TDxQ>- *s7n!ՒHrFId"O~׳hm6LBVl^zR3,d+Ceĉffɘ?8WoL "rZ¶G*$𻲡Z L~b;Soޕ/ٳ/ZpSw\_& R/R`I- Ha,DVկbZͤfyț)R<@l9ضW[]YXĖ+v__Ǎņ.] ޗȔCI t8SOWa)ćflČz``PÇ:{-/lWNc۽ uNj$;m"q&כlz{܌!Hu;~wQT[ށ4IJAP"ޟ;³bAAD z ғ}slfggfg7sΝ[{򊹟;gVSP[ =v. 5Shy@ǎ3fHw8r-:,άEW¶آDlkSebHaEﱾ` :a۲"^ z{=qg1@QaX⠨syѲ3۴Fb4d[ i^\HLmmefFj+0[%#4g׌WgS6ٵ#mv;B^|9/UE杤|70la' Eذ[fhشԎ|qqﴞ/ aɰv:EԖ*+9s:__bIaTW$d%FAl%fQJFo|;O[oWX8;_ʜ8b$&͝gP[6{6RSgcc؊fVle&9lzfk.l[Qۥ[mR ,Yڡ$ K $,B 6I]##{L/taMόpV/&GW5AWigjWjC$h\3_Puƞa1COINï+W&a¶[kmc(5blV&ODNĶ^*66w']>|ItC*’&AM{ި@*FD<:ۖ|KE{ѵ'DBCŖ"Kq|زu;weMyUz8klL$snfۢÔ@Ttr~9an]w8RL,^^ޕ@vvnqrIMPkc.۽I[|5F}V"@j՘52D޽zYaHIIj41D^qw:F3=̬LUe#Z1L(;/\Mv ]1-퐗_z&l";vtxɛM!#Ͱmj:mAR˖v,5X d^LcccY9"E/^>3ۻaé G".>^OLu=Щt׈[NExn~9vv|~Ifn xWrvTcO3fPq9YYWWYh@xϟG7g",%|þGqAϹ$*<z\}p~x频{=|p`!Ϝ?*p$A-;IkgK )[03pCԉm2.-E}hihk\}2z:k+tζT6ت;[BW߲e?҄m6ص{^XTܼ|gK3Svٳ(ucƳwv ~yFHPZ"q {㘗p_xqDyժ5Xtáme3DŽ77ɮ{g>q(,(4W;nUA!U K%\7DlU츸Xlg;3v0UW AjD\*,ł9bߙL,i.e_oAڮmq_f;ťܤ.fυ?Sc gʯ0r*֒cv/Xjs_ Lr~rZOjɁ#善ĴR Šz&%!"a}Ǡ/-1-9s_3w hc*o|މأG_Xv=x̛#5(&h̛7ߠ`F\5w&ODNv. I/M~<,C#Fy&ΌRjj2z%݃ԋ!l:Ǔ,--e{ ǟ~fܻؔ71CcSY?.=ІmmaVN6 B뮝͑Ԏ5[b@$|~+FGv CӈPv]j?U^=:#?# ir4>(-+Cđt|#~n5 R-={:U VCiVGaA 4/hh^M܎38u!r9cMD#[O6ﳎԔ;FG6p9v;vb=4l[mco1Rc 5A'#5z >4CD (G43^U?2Dd*V֯ͰݹF~!"<ѼE7Ai,8@Dt^HLCyx.\&=2f~9MRH GA`d[I2^Eca6m& i*"1["p`Uc-l)-l|hDj쯿jwn.A37huwj]`Fe/"zfֶf;]Tθ?"&DJ.ߵĜqHб#4|5iv봾"bk[t:mvJl.ĄxF$1`t6IصηΊkR^acwIjY1]qz [|m}濫VqZCF8S㮡LUyL]N6 5 How]qFD3RS3Gk4l2,8^6MV-DH8l|mQ/cW6[Tǜmsp_͌bY;&a]a7lk% E8~rcjPQ]bpTy:÷U*JOI8Kʘ9ӳ榭?}1 {[E杸ٝo4ڗ3u[/p%^/WT^rpbk픶jR}M܀^r1b %qJq~]öl_%_?>y5-G ;\kϥֻTg^Wت:xjWaۄmEV֭Hҵ8~8z<@yy9z,'/^dJhdƉB;dHGa )U9F!MEl&#*;~ EAlS%Ƨ{M,'te\" 0}eX1 gwewkB ;N: [廒ŮVHXm6rhv`n35|9DF7N.i&f9PPRO4P-E 1IHHP#GYY6ٳgoJCoݺuHIIl%ȌZN ƥ"Қ2 [*}o߉}7--yiI#Ei88tĵl':vGWY1c(_ -[McG"7Tm]8tFmdOаlfmZ!'.kc9f&2cf44xWa#um ĂKpc%5J0w&xy{oȗ9i8%r'_XdaՀ Phx뭷0sLR-Q,,%Ҩif\ۺ;9BܠT%pDb36mfDiD44=m Y4/D.gX:\?Δb\7 _4ϰ߼ XѧubJjlu[/zFl 7b(R`/]k-Uؐwే$7U J7G!9 m)`AMif~S>ð7?vM0aR8'-Q{Ƨ;~ .a4 y bYړybk K?+7C*[{0jꍓgp! 9Aޒ E|^lqZ 1QRRo-+g_:Ɠ>%3|52*R@ԨV6Z2^˖x)t11KoLSf!}~I5g#O۷U [2ݗ -E1}g!G\8CXd %]q/F^q^Hכw4vH jg.† ت4 {b6:+n4͌x 4GlhMcź[oصy|Wtm$͗{|^{G7/Y!Np/vt:="ۡDžeX*Q&|&145o5-]Qz+.!c'e& "ƌO¿m!_aC-Xs\|F_w- 8<ŶPa3[-va؊ZPiPlѵJ6jޅtzAG$m,a+ AA3G?V!~ Rs~ !I)__OOTLde43:O<2a~A4 -]dtLzf$%NDhNkjY>]F1pHti ]/o˖-, hnݐlzO$ v3)ȹs0e|GxgϢy۷ooEa…;vBR-l예LHJiג! Wd[7jV(7a [|',EFb 4˸ϑ lʐ rCzqp:JםCޣ#jdcg/֑q5y"3.`oȎK`Ĩ~i56`F65הH}7~mjF2Ryש2N:fZ,1uD_x _m$SڶU`G`<!sAC ,pM8\o̜ř0D?o"3At>g&Ih; N= $W-Q[wD缯ЭpT^DIA6qBgxr^XnHE Եbd 7;馛L;hX3#Ė#L}s7n '|ӦMիiWѣGx-q5T -ex1//עli8mJAخ-rֈj:L2fD$#>KOǪaKT.7uJOJa ?|RK-I!rό8f7Dx]ʺ2K?2q.;feT̴G`TU\ oBbJe/gʧhxED lDnu\4/\7Lla2,\88w+!xGF!##BnzQ1_[ lazuX*-e-ľ\\Wp>… 7%Hn+=Ѫm+󻙢@YcGEE̴, #+M>r5t2KDR8;8z(Zh!Ij YYJݡCGBfNGZ$72o<ח㸎,6n7s s ++ӯL'Ƥ%^v2%% tk+srM7@aGc{@ߛp(-8<י czS\-N|Vg}u,E` <ſ2KowEɧ7ܣ?9\<.%o1Ñ{R8i|Tlݮ`sknn̅ edFL0Ȍ5/"y;wޑեSo"/b-Xlذ)҉Ɍ@8L3s(.OG.EF-P3 C9Y͌M;lR l>Ф#<`;J/^ѣuo(n#/kh?TkO=Pybj|Kщeb+434[5dV"c "y~.jV&::Z) 5i&A-k$!w߭TB"cىA@hSi [aDW9tN¶cc%F~mÒfk:uϞP][!zKl9{Ӱo2 [ѦfFVAZkȏPcAƭn@жlk]gfpgr$4 };Dfذa:ua z+Й@%t3Ngb؊;o[n2qpU*?Gb;*ߒ۠Sֶfb"E>[p=Zˋ-vDz[Il{I-c=0a8(\~o0 ?"'III}oMBDۗ#\.?9=/ʔ[HtV?ZmJ:+_ј_gE!zH` _fƷm`^'sSo[zv+=Y|:WFb"VԵz 'uLEV%QRŶF][Z(-D)oPF(&Mb 7m>7 &yn'MdF#O:DU^pCI CX^JWX&B=ؾ,Q&zOǦ:[,fJS7-\#)l5pƂ-WV$XFZ#B3k wle03X}yys-N[/MZDnH[r@ԛf:Y[/o6l6;/C؊$A[L(YX^ ;Yy{꘸|eoq( :fYf*aفmq^Um)-`E3#lf&RR ͑RJэ [])tJ8 CfT9{ݮ}6 E4Ŋ-#1nٺMyz'y5DONg 14[Λ/C"Xdfl"KAYvB珚2;O҃w]/7\kzyAH$ϯ8yF)֔?{_C,jTO@n/QL2uЬɐMS!YTw޾:f֭S&/g Ǵm6̐템JZN˗'`w I& 1ʉ71'gFqJl 02s[痘FfɱnKf4DM4qfFJ ELrD޽{+ lzEEͿCJj* >\Ƚ CTT^wÞ^ BEd!8'e>;>i9 ʷNyY}2IxN\WyuYBe"Wyk\ι]({*+gx _'"WX[Ve>2~pxT~$ǷĈ(o) 4} c3k$m/q r؟Q+32C|98qo&s}gGD߉Z-.o `E?Cav宻Bn=LA+])p?S3f:`m7 EB~twϞ="7d/3aeF48pdh gq /EV6,qN(GngeJ~HNl[Ƚ4 H>3\*CSNfF] 9 B&W?)S`ѢEN p%uMP/ߺuD"Mf)_6Oy5b՘7o W#61{-q̀w@v録,_+!dw-]S/W?qDZfgE "):z͓>AT=k\s(/ A[:~bNPAǗylY݆]1ʹIl ۷D>-q7e{ /u8Ν!ې^k: w,f ]EDh i^r)idxv"ބPsMcx$uDb̗fx!"MeUE>OReF᫯y"U4; I;V_KG+$}RzٲeXuHR>S~<6!n< i^^(Z3xٳjeĿs}a "##/OEq7uR"9ΩFH K /v!>)O{/$ŗi |/׺/?>ԡ1Z m]4Y!!E>Z! JϞ=vRZ5kw^ѧ+mBNv0ǎ'o_ޭ&Rl-|ȥ–:Ov4Dd]|VfJ$?UZp_;3cΙ q%lbxu9e[o,3JCv@!燿eW/C(v2)DHI$&vR!rCā5u_*_:6-Nwʷq H#M'TFԭoiSrE /bꐧJo{4rƎQ*%i!4D[P(dQMFFߌ jFCWJ]`K[|b{hMAMVdƌL#C1qx4DNӚ}lqGaKVpTy2Қ&!c_aG-&(i;L)MlĖ8[,ك-X-y9lhf;{?QkQh&ԹfFj Ϲ[*>Rl-`RkLQi!v[kQh&ԩfFN PN؃-bcۺV ܩifFM4D$A{=:Ͽjlf"MsG-ARɇ ?N8w՗+c؛]};tnBl=r̓Y>5A3,M4DMK" ۙjlN'3w;1ɕ gd"."_bJ*Dp/c7a<&s㺰n"?A~/5#rj|6ohRp""uǨ=D(/P{444fyz~rCB׈_O4q͋ZwJ+OcVP2C$ؙ1tMO L n? O:-G7{0l:҄b/q>}|kaX },˔?ύ~t?)=XW߷Gr|7Dh-^s <^W6\}m3xѵx{VË?? -1o~o3Aa/߻WY956ωl%i s`H_&C+#]6kLݚ}FN$4*q"D&YG`fƠCMٴ汚HBvM(DD0!m&ҳm͠>9pv7BC3LKJ4DFhBBw 'f&8)[H9ꞔfk Yz9{~/j1͙;gp5iw ֋mmnjHZl5 LKCЎ[vv/Ftu<\28Y|"Mb2C.7D4D M6Mā}KLdidȐ<:,5#>Wa|̮Ysou#;[&ҽ4JaIҨ@-V.ĀZTm)7GaKб[_P23[X#$$D0#Z.j&  l>^cv,&<}llHY*yޘNOemJJ BhvMKo)-ͪu2 2T>2-6-%b>d)/v oŻs33 = "5 f"ԟZˌ>dUK2?Qv`ļ8-7^yc^RrK I2/q\Y{w|dy^BuL))L(%BR[_zIKQ E_~3LGJD[H:$;&R֞V Aql)'x`yblaꤩC' v1t_5 JC7 2FuBo.|ƽ:u h}Cl7S:[F3>R-kNhwE? Jێof*~2&2@ĔfȒw`MFDpy"CYEO{'syc}̮ >T/(')J 4',=OPBX>ČH wfk ZRu)F4`XDF+,ᬵ1[îPULBx#Z: o˿˻>gF\h`& &EiwLs[Moo?$EtCi.=X^M,Z)큵RZl [k=Jض+)l4󦁠K_ciP,afZݓz:R f4ϲ(ٓ7§FS-\ˌa ْ!G^РOA7 2|]? KHNy-NWHk%*Fƥ_Uky\BM K=ʹrYwMBDQ, dz>Sb5Ғ!jE^%NWUOa0Ii(q饥*WĚ_B9bv,,*:aԂn#CoGkhRZkwVq4jʤd:͊_ߖ({ٱ-KvJΒ iVe̪4ς09:Y۱3_K_k]M:z݌E dlh Zrm1V"0j 䖄HYf4 VĆ$e4OwZjGDDd)F`/Y_6MV~53rJ϶==7 Zb 4S 8iQ"GI -$׌Q˚0a8Y/䈆R4}kUrr,4-b!2"Ҽ(I0Çjy {K5[4'l9×lAH!N'kG^6cG:֑_stZӒi9p6![`6æ[ օ_x%Iq].Y8J#E?2D~HHLքֈ$Ѳ7i|#FY^n-*24DznpѼwУlٍޥP{G$l[H[bbv!2 %vmZ&[:gM7k g2/M|:ٱ &(BDv\ӌJ#0,Hs+am/w^)RGb\H JxhE"-fQ) 4k JB*Y[8{V!d&-F_۴l[y![")<ѤSB>i(BLL5薳 /apomN+K9ri` TFdOƬb !г y`F-҈LP; "$"bM5Ö i0"GE'5R6}]bnCŶl"6 Vߍ"bqxbЬpu6<Ob̉QA4d`+$4-b,^KtӬVMfKq'W2-*)2oz$IOߴ4GDdMm&)DnlwFd hh<6l{HlH_^vd܃l}P(~o䍰*/dw $S>5DlDh7n"DU!{:NKviL6DY3{4H "!4K'j҆*iHSG.4t[5(:[n3[. `븃IZpa^ʻ hi!YyZ:Zd=z0E_4.> ڒ9&|f(ǫ&u_@Ci LLc .6 kѰkmǻ[ifPhݟ⏃dDHdvKڊ5^FŨ0FG#]֠!>Pݖ&ԵDmRbOX5ؙ{qyV}_~o0q!n&fi۵ةfpp<~a̜s{4yN()A|OG4qP20'sHPxبF~jfjB# 5rbPvoc3rmNR;YAaIl\~!P(P05D Elم'0*䁖I;#`'?T-"wȇL L H寉iFkf[[}ǶGd7uHft!wT^KͺkfeRA4h\}iۚebiȹCɊ&"CDTժ/ GW評T1͵V&N[#>ūelפ0I#CZj2dCBKWJBKZ4NDزѐYޮVTg[H4 ud JŽ6:$5ѤUm wOd>[MWKv5dkG⠢&`?M[t\m ȆM3A1r2CDdlLS,_׹::Z_'c>"045t lHxK[BM4!Bn޺#fZkB:+hw$#MڝgVni}ٖ{7fZ/3Qg"zW4g$ j"*¨r<IrDM\;!AƹdB䢁ڠ%VjÑvDnZ=\ibSH AݰՐX񵞓&M}vu :5g r([/Xvv"FJmޫn_hP4ɇ/4ogU6958up#? 6;FeU%:$t#+RPضu'ud0ܦxЧu?CȖHmަwg._r 48Z[;ll5d5/;s)2>I#E)ZAhP)rzL+Mܶp a^{hch4DM4i"[dm چ_S[l9͓rwDM4ѤQ8$SpV4lՄQ*YPM4DMFFB*(ۙRA\rڎƶ>D#3h&4xB4Ы]:qZͅjm6Vlh&hŞ]<vm<6Tl{V#3h&4xcO8z &bCjhk&ΓherЕZĭ*-FĶurmmG`+PK[[lJWְjS9||QQQᔊHK֫F7- {ߕb?4 ocÖ}$-Q_9lINK/RUz[TsĶrQYa;:߶`EsɷɖYckzCj pekZ ό^s<_V3sRl}X_Br pҌ gW'Nٜbb˷f.O|i ]QV¢"To?}yՊI6y.j:={"^8SKPZ^Sc.fwm[X %lW6]a;mZ/j /0;1~]LGw KnǀA{H/GfXg'ZNEUQ&~;ΞˇO@0*h];w#:GG썧ѥcܻ nEf(-Ƽ2 )!bί+KW7Bp>jm)xjܽW| eA=Ye|s[mBW9ρOx3DzcEy$Sa(}WbԮ .L=w LJC;1JmYKa#е N7f==سOۄ3gpBrbS얰KLMEwƒp`R|h \89'*t i cт%Mn ?.-YѾKm]k2GڡWʼMC!ˣ eXydG`8qiڬ ى=['مJg29b 8QrEǠURA3s"/K'wǥU]Y]s]+rp销n;JV]QO&MFl7ENbOVbͶLd_髎"kOb ˘Tt?,~8"FZ e1wrm2 Fs;6,Gv'ڤĠw^MDZcGӷQݣߑup6qd,} P4\SIJnQۊmˌ[vRCAyG_ÞyyŰ^ݐҺ- /b7*A\qzȨ&,+ĮCjHt}߶-: .^8k**=ٻ;2{!<2՗ѤwGDEU`J$7 ؾ{&C>:#"2 fe\Za&>hҡ-"#"s\ *)D42~>T5MEe [^Ll?&ƒ>Q]]™\9#8";",z/_] "4rF"5%{r+/Ãc&UMWD+GE(JChp^1˃QsƿV)mQ'&%*ODrjOO/F 4, ^2гg+$늜WE&,rܚ٬vAN9 [j` l9CW+lkIְmV؎hZQ7mNBBBf@ϑ@v]ط`S[qEPT\SPƫ9kЫgFӍ[a[sw,v9~1Fa[ *'åT;r \λ#q\:Ou8~)>^ވiڔ{1*Ai1e Spz..>'tHQY5#ˇ#:]<ޛo}s6l5㓗{~D\ˑ KQtLp K?2=#B#r2y!>|͎Cp_[d艂31S_~s$$0ެ=5>a= o#,xTڶ덣;MÁI?~fT6DmB 9/ 煲Xz 9($q !z7{7bqep:`_6ƔŹp|o-+S?xUbp)ޟ):1gί(*7<ϵW^)!Lc zztz6k*1= Si%V oJ-4`˝w%NT Rn౶l5ua;9[/\ۦeIOO.;;{"pꞞ6sǑ }U<<='9#6nZUYWM<7PULMzxIqkZtWqF|a~@ik Xťhwܠo|vF{1f%P.Eƞ0XvlUYJAɒ[-cCtZ zx CɏsT5gIg4 LgމEY4sQJY[=׹nZY5lp;9~8Ξ=͛m۶]bJ*seesӎ p6vII1}^5z"Ti}|߉#rOWîZ8]/\M1Źs5 Moving the Cursor

Moving the Cursor

Once the plot is loaded two thin lines become visible (see screenshot below). In the following they are referred to as crosshair. Both lines are exactly one pixel wide. The intersection between the vertical and the horizontal line defines the cursor position. The current x,y coordinates of the cursor are displayed in the Coordinate Display window. Move the cursor (crosshair) using the arrow-up, arrow-down, arrow-left and arrow-down keys. The step size is 1 pixel. If you want to move the cursor faster (in larger increments) press the Shift key together with the arrow key. Alternatively you can also use the mouse. Press the left mouse close to the cursor, i.e., the intersection of the crosshair lines, and drag it while keeping the mouse button pressed. Even quicker is double-clicking the left mouse button to make the crosshair step to the current mouse/pointer position.

Depending on the color scheme of the plot you are scanning the red default color of the crosshair might be not the best choice. Pick a color that contrasts well with the color of the data points. The color can be changed via the Edit->Crosshairs Color... menu item.

Hint: For moving the cursor quickly over the plot the mouse & double-click is certainly faster but use the arrow keys when placing the markers and especially when placing the cursor for the actual scan.

xyscan-3.31.orig/docs/en/supported.html0000644000175000017500000000774411470424406020365 0ustar georgeskgeorgesk Supported File Formats

Supported File Formats

What image/file formats xyscan supports depends slightly on the platform. By default, xyscan supports the following formats:

Format Description
BMP Windows Bitmap
GIF Graphic Interchange Format (optional)
JPG Joint Photographic Experts Group
JPEG Joint Photographic Experts Group
PNG Portable Network Graphics
PBM Portable Bitmap
PGM Portable Graymap
PPM Portable Pixmap
XBM X11 Bitmap
XPM X11 Pixmap

TIF and PNG works on most platforms tested. Note that you can load any format (PDF, EPS, ...) that is not directly supported in xyscan by using a browser (such as Acrobat Reader) that is able to display the file format. Simply copy/paste image from the browser into xyscan (see Using the Clipboard).

xyscan-3.31.orig/docs/fr/0000755000175000017500000000000011571747200015445 5ustar georgeskgeorgeskxyscan-3.31.orig/docs/fr/table.html0000644000175000017500000000427611470610264017430 0ustar georgeskgeorgesk Data Table

Tableau de valeurs

Les résultats de la Numérisation sont stockés dans un tableau de valeurs. Le tableau n'est pas visible au démarrage mais peut être affiché à tout moment en utilisant l'élément Affichage-> Tableau de valeurs (voir Présentation des composants). Il peut être détaché de la fenêtre principale.

Le contenu du tableau en cours peuvent être sauvegardé dans un fichier texte (Fichier-> Enregistrer) ou l'envoyé à l'imprimante (Fichier-> Imprimer). Voir Enregistrer ou imprimer pour plus de détails. Pour supprimer la dernière entrée, utiliser Édition-> Effacer le dernier point, pour effacer tout le contenu ddu tableau, utiliser Édition-> Supprimer tous les points.

xyscan-3.31.orig/docs/fr/help.html0000644000175000017500000000572511470620065017271 0ustar georgeskgeorgesk Getting Help

Obtenir de l'aide

xyscan est distribué avec une documentation détaillée. Un navigateur d'aide simple permet de naviguer dans la documentation - celui que vous utilisez actuellement. Vous pouvez lancer le navigateur et consulter la documentation à tout moment en utilisant la documentation Aide->Documentation.

Au début, il est également utile d'activer les bulles d'aide des outils (activées par défaut). Lorsque la souris survole un élément actif de l'interface utilisateur, une petite fenêtre de texte "pop up" vous informe sur l'utilisation du composant. Une fois que vous vous familiarisez avec le programme, les bulles d'aide peuvent devenir agaçantes. Vous pouvez les désactiver (ou ré-activer) à tout moment en sélectionnant l'entrée Bulles d'aides du menu Aide. xyscan sauvegarde vos paramètres.

Si vous avez des problèmes avec xyscan il convient de vérifier les mises à jour. Cela peut être fait en utilisant le menu Aide-> Vérifier les mises à jour. Cette fonctionnalité est encore en phase expérimentale et ne fonctionne pas sur tous les systèmes lorsque vous vous c onnectez à Internet via un proxy.

Si vous pensez avoir trouvé un bogue veuillez contacter l'auteur (thomas.ullrich@bnl.gov).

xyscan-3.31.orig/docs/fr/axis.html0000644000175000017500000000273611470616606017312 0ustar georgeskgeorgesk Lin/Log Axes

Echelle des axes lin/log

Si les axes x ou y ont une échelle logarithmique, il est nécessaire de paramètrer xyscan. Utilisez les cases à cocher du groupe Axes de la fenêtre Paramètres (voir la fenêtre détachée ci-dessous) pour appliquer l'échelle appropriée.

xyscan-3.31.orig/docs/fr/serrors.html0000644000175000017500000001053611470611213020027 0ustar georgeskgeorgesk Data Points and Errors

Points de données et erreurs

Si vous choisissez de traiter les erreurs (voir Paramètres de numérisation) le processus de numérisation est peu différent :

Numérisation des erreurs en x
Après le stockage des données point à l'aide de la touche Espace de la partie horizontale de la croix disparaît de l'écran afin de ne pas cacher les barres d'erreurs. Le point de donnée d'origine est représentée par un marqueur vert sur le point en cours. Suivez exactement les instructions dans la barre d'état au bas de la fenêtre principale. Vous devez numériser la première barre d'erreur à gauche puis la deuxième à droite. Une fois que les deux barres d'erreurs sont analysées, la ligne horizontale de la croix s'affiche à nouveau, le marqueur en forme de croix disparaît, et les données y compris l'erreur en x sont affichées dans le tableau de valeurs . Si vous avez choisi d'analyser les erreurs symétriques à gauche et à droite les erreurs seront identiques, mais répertoriées deux fois. Notez également que la croix se replace dans sa position initiale.
Numérisation des erreurs en y.
Après le stockage des données point à l'aide de la touche Espace de la partie verticale de la croix disparaît de l'écran afin de ne pas cacher les barres d'erreurs. Le point de donnée d'origine est représentée par un marqueur vert sur le point en cours. Suivez exactement les instructions dans la barre d'état au bas de la fenêtre principale. Vous devez numériser la première barre d'erreur en bas puis la deuxième en haut. Une fois que les deux barres d'erreurs sont analysées, la ligne verticale de la croix s'affiche à nouveau, le marqueur en forme de croix disparaît, et les données y compris l'erreur en y sont affichées dans le tableau de valeurs. Si vous avez choisi d'analyser les erreurs symétriques en haut et en bas les erreurs seront identiques, mais répertoriées deux fois. Notez également que la croix se replace dans sa position initiale.
Numérisation des erreurs en x et y
Vous devez numériser les erreurs en x puis en y. Vous ne pouvez pas modifier les paramètres au cours de cette procédure.
xyscan-3.31.orig/docs/fr/thanks.html0000644000175000017500000000377011473310242017623 0ustar georgeskgeorgesk Copyright Notice and License

Remerciements

Comme xyscan se développe, la liste des personnes qui ont contribué à l'améliorer grandit. Un grand merci à Valeri Fine (BNL) pour l'introduction de la fonction double-clic de la souris. Il accélère les choses sensiblement (version 3.0.3). Merci aussi à Giorgio Torrieri (U Francfort) pour avoir souligné les problèmes du dialogue de position (version 3.0.2). Il y a une forte acitivté, y compris pour l'introduction d' xyscan dans les distributions Gentoo (Benjamin Bannier) et Fedora ainsi que Fink. Je suis très reconnaissant envers tous les gens impliqués.

Enfin, je tiens à remercier Jd Bourlier pour ses efforts héroïques dans la traduction d'xyscan en français. Sans lui, la première version multilingue (3.3.0) n'aurait pas eu lieu.

xyscan-3.31.orig/docs/fr/tilted.png0000644000175000017500000014631011470663243017447 0ustar georgeskgeorgeskPNG  IHDR}tEXtSoftwareAdobe ImageReadyqe<jIDATx`GWn% $ww/ Ph)з{)-P(nw v%˹7 #Hia~/o:7;;3yFA)iAՊ@ yEQAhZJb|@ .)$j6I<;p`V@ M 7wJk?¹/Ӯ!&3MR,sD.^83h6h55ҴγYjA]=d{\\1 cPk/j2\"[Gt 8V/S|'3EQc~.X0 EZQyC7 6xOsVxz2H,iz+)Wwn/n?gQt6mS׏5= ƾK7ϻ":ǁ@ '.={IV*t~(+J >N9""㌪ZA܃pMi^Sk|-`)9Ŧ~ܰ2}i.)UUKڼU+J+Q⁝"u-?gcO rZ6 z^@yEHhJzI|v %_R!,4jKIKX'a(lH$O@%2e5(]:\?*9֕xO?W^z>TsbT4*H&)A.xTalQ@M(ʪF1NrIX(m-0,%LfZf3M R±:ā@ wCTyE5J[uj*ێ8TŀD#HmE;Nx&BeDl hp"(JGl 3y@tip8\.z^8fឝWx<&H6!^\Ir{%-&3sP(sGhh(:==@ OT2"@ ɲvhp-)Y!;; ٌ8gٙۮ a   !FZf1rB j8Na5`FAo}uw0͠qn]$mmuVUU~~~U+#F1%%%99 <:uܹcJ"hJ DјPw!{mFqA0A8??Tǡ2 n+Qt:P0Oԛ#kJ 1&#bzoiʪTR,44Ј&_$VΝ;Ϟ=+H|}}qׯϚ5UF/_(WWWQ{Q(#F`XPw!ٻA l??thFZN[ss˼,Y/izM&bs#5)Zfm$P90}L?ISsdo,/OfrҼ7嬐9P[[ܰ0???p*k8 \`j Hr׮]7m:;;C݅@-@hM&h2mؚP||feey{{7[q+>_UXbRiqr&)?'+f9(ySÆ ,% ߠ.mPZD(+`֜<%E^0Ul'wdӡaC{-UV[ ̬"MjtZL朝/urQTVU.DMՔSlY2Ԩ(gݲ"oU Qފ@!VGpK xĠ݆q]ogN;TǼv'jB171zXjF+~q{OT.ۧޮ֛,Yg2>IIx%0.բ?gÅl'1ƹ7sb:%gwݷYO]0j(j...VZZap$33K.Zrr2f dHXB hS3(fBPU:;TF<}qq7G3Ӌ#C>z[/Cqh? QW|2]ޠIP!/,g]2Ky}9G q ,֖L;Xv.W(_;݄ЮQg/됉S_߰;[iX︒F\+vbp좐FzSuh= /PZd퍫eHJ~M1w3}F] dtFGi`[ IK^_&;^ߺpau[ׯxc PV<՘_֖]Z)y68u/}ѳW3xTVZr.dG;z$<$t1j/oK GhhAx̘1EEEL~GPc|Pud2.bذaد_]v#eee;v1cŋMwAul]A t fCL[jwKjӣմ50P9hlc'7w$ߧ{VDO~gR1}^.Pm#zKĹRUf%;|wa.VPR9bIضmox^eK[F+}.7^A/Mtczʴwfql2j1͵5GS{++a[E{ʹb(ӍԤMc|iAC)jѢ4܊"Fa{|3bD8$4mPvBZiAH"e~=-8۫MA=<.ξhJ"H*j4 uý???„{}M< p8..D^^^}ٜ9s@`C6ګ]P`8^gJVuswG}es׆_8kqD =.UFб{_Ԭ!bG6R$bA!o#͂#P1Wps@f^QopR}$R*8W?pz%S)]ڼ#-*>?ƹ'rXm87MنC|'Tk;S(NN>z8߄VLҾ7i9t@o!`ۦa:X9y%f׻x۝NIou7t̑E}.~ ~S|sD4މ/8Y4FyS㺦,YүߵO5`u=#E4rԫcVڥ/Fv-.Q-NxsB,K>qR8 We+k,Nm'N{D١u~~G%Çxz2h , ϗJ999w %k« xyZU<ܧgL?N0xw!|hB @[W h_ͬ um/k>50>~UVE(2M]ߜV;rܡ#\<xu{vU MH(*rgL~hŗwl܊Fu ׀Z _Uam_չn(6~iXUUYZRpJdk47\3h'(+*KyQM #PԨaC݅@ 4f(ڳՈ7w {/zJ:Ly&>vk"YLվUϱ�u?d3ٓn Ĭ(.x%K_5z`%r{WÆ);qj>!o ozJv JHuBw!{x۵sVtᄏڥ &z+qϟFuKձ]3Ew!awI}OzK. HC'Ms>ml>ץrʕ?h +ULan^RdQmKLd.!™'%|vP#סbW'8N"5H']<ں3bd2}6RT,_rWeZ7233[n'J= > ]M-TVu 3'y2H[D`k:_t; %tŻvSW&wf_Ph|`Z [ZN]dB\'1q*;#͊9[u5Z U\T"U9 F <DfmMJʂ=Օy%{w-s=|.)˼th+~m Vuoׅw.^ Gnn|\P#wCӶ>9s_e8f}{ܔ m^Y?2ɔ$IsiAyn6_\]F <),!2J[[Oo*rBXVQS%^ qqs߸aw-/<KЭ,~bGG<N6iIϽH_1nЪ_d"5jZ٢)┞,BfگO_ly< ^tخ4"qg bqI\?& 3.?SuoFvqHZl]!-lhUPwmݾ1يٓB@ɉnݽuT\Ȃm ">Z>UKL9㉘-*fۑisWV}~%EX, E11MUpӥ /eQU <h@5}/Z"Yu̙3K.}wEu,[LR#Lx͚5@u6pLZϐFj1ժk+r7Kw8 ig"'G{kbX\)t(M[Ν~Ѷ[M`pGVTֈ$|/F@ U{1g1]./:{.M&9ηhy2z=Y#'gup_څr֜sHm̱4v"DS2%Pecze1-r8s$v6z* m߾=#TmE!r΄A9uxx8s~~~Ќ<:Wh-)+%<Ӣ+УOA|K{پnzۀ!*6ѫQ'oŽx=XB&$t(ǫGY'>l*8RYrS̒u)-"Z2r?~9fXgǶj/wfQmS7U+b)!ls)Mgy3ډ~v8ɝk9Fp-JMztp\}Æ4 |_ l=jD7ªyZO葽ؤvǖ?Z |=ĥE?UÆ٦ڵ뱤ƌ3zl9̟? |'-[1?c yyyƍ3s4yH$byU Eƀ |qn'c$I΃y4j%ul ZI Aֽb:I[L֋4H(=zyDZHf{0< 3ž={  رm,z9x1Z-1Z[Yr5wNE׎gᾜrgDS(ʋJgEA¬ȎZ~<7|MjJ"~ VWj@=̎ f:bܲe˂Ќ< 3WAAAcƌqFҰy{g ]0z?ebWjw,NJccuB 'm6w's0]̴--)7}\nH it{l8J&h"MG_g)"9q$R'ũ3 @eU3et[Gwl6~:1Qwv ;^9k D1###y&lf9r$HҥK B gy㎨[UY, ;IѳoձgܼW0Wr^w2m6m4ssh5Lk %"ދ\~DԍrFBx|Zג|p607gſ- miu&&96Gݸ8( }=ÎE9Ye˖ 4rd1H h{J7l6u{.iHʣKܼ=ү>2s\1˹ӑFQ~#k&7u/+,Q&7!!n 3.J:w @ ֲeKG< 8A{⤄ea4{KW~aim6B^YR(kNv uڎ23!GܚcIo_UzA{evEouW[N.Ljr.X}v [l_5pLғ:uG`8(597k?k,{ %iO?[_8 l~noΥurw=5?Lܞ mks|wKG`4رŋ̂+f0}ݮЄY"7O !.cl"/_m0|#ZkkXf~xlpPl~y n+s2{; l~h?uߣ?rv \–>ߦ]" 8lsJE#)Ӷk@{wq <$Og>3 /\%'5<>s gƌ3ʄ}01׬Yc#Ooe/V;OGYTNzyA8bv" F)nYY0b`C@߭ ,`V1c;vMOOGv@9ieH~:я mWJ&.x$mk48>!hy_kzi?< O|͚(ɟNWXUWmy nH7ƭs Q-As] $<<~aIffQsN` > v8ne9COr.+nE^b'9ɿu0SxSjEA={I8ȉ?773Z&g!?-놉F3\/z4e6 wnNf[s:k`h%5/}ܥ/ EŶ9(M3o^6W*u3`AvVGpdդ5\_.) e2'g\!YKkK*n>>n"yyl6DDDcu[aV;{zIJr yOoy?ao ɖ-[`CMIP(}Мڴ`NçN8bhW>PEB)(3}(Jg0躽I]O~Oҹ`O?yGv ƴ(rck߻eO8w#߭.//Qi,hk֬<;mGet阆5i-oa;ǤɊCWΜɸ %*}LENQNŌCWLL?/ے,Y9c!Gwߵ9DV;;9V/V5xK.7Q"4M/[dO>yd8 iUqwM4Ghry.>]O7y/fxjʇ6q׭X}-b،ɽ#?~}K+u%W`?]GN^TGȁ{PAWNa-Fl+iZ|ŬG;]:ɑۓv·ri[,\NKѢXOx7Hz=VmIM/nD3cZt_(T^G^hf߱[Sdj-Y=?6|4b홪+L93Mk 9gʴi.0d[[,,h*n\Ph# YwYc>nݚY|tR III`KR"9J٩EQUQ 1Y {I2S:zIKs'Myɚ'ߢ/T-X }KZ evѭ|1v5{ ! /4c>z hFϿS$Wgwg]ridͺ_O˿;g ~ /&fl%i+,iQadKQ7 ۾uh!j̗TUU+uIfNWWݞ Ѽ9yׯ!(! WϘz!nb1xQF`T |p%NA4AH~oكAlZ.Ϝ"uSO@Y 5k[@U+)ͺ^X̪%붨 l‚ECQu} \;u]Up BJ)oɤdԪ>B".8Pf_~-H@:zMm*B8NeۙEbbhZuea\Sw=7ڨ;oղ՛ _\/_~iڕ+Wi2WZWZ# BΞ+VܺsȀDU7J|K?wlC]LVʌ%[1 1W!c` wVdܴaͯOzEf|߂%nZr*vp=o̹RmKFpC}ll1Vڎ!rn53;"~Ղ6g'uNOEQ4Z_Yy.:ƛĽ}<G1g}QQOQQ'E \x3Wڴ ;2i=737_>wߵw,CR86lr9vyX/_"KD<^dPlhJt w5*Pd88yXio;9ĕǾUPiJw@A8WEZL%EJ),"REWTT9I_Z;cƌuY… 2r{%FHPPx]\d <,e3wݾOK,ƛ<}/0Fl1^x p+ww̨gW20çN̸>}A#||\8 ܳtBoO Y]{ǵ0!HS$Izx m6_ ']{ر QqfQmwzz8iHz? TGP[=*QT``x}@JE"C^…hYu<ՒY@a +g(inX;w%E6CDb ḖϬ2ZT˱J4_f7:Ѓ*{yaOf⺹q8/{NNY"MwA5~':4Uׯ9YH-˿bWGilc<g~6=bBa{V.rv#]P<ٳ@ dd|0JnNg~.P '؋Q-OYwKJJ!^o %`iD(F'ɵ)"$wj @y)-/LM- 6iFc  q(:IQ rU|W&( RCmOT(%*hΧ\KhI-k_)*hnأ)9ل8=&؂*ܝ&b2/?jjMR&-J YY>~|GYVh%e"/6*xDMYo9twƍ gA =yrt?1"Z,4mGsmc4Bqe5J2#Q 97"z dJ=Rlznryv}CVHL8FԾ Ւ#()2Ȟz&Q6qmc#ڵYg ,eNVtlP;t1k8gZjauSizuWft>}k6meD%/֡UUޥb@q+:]6d[YtjJoٳg+~3/tZ5Mu;j3"axfJS0mJdYႌM`w7G Gvn7#Ӭ#K>9ӏ.%+_x($E7t9i->i?J;==}%3|ۅ7ݲFǵڼrbm[g\繅xH6P0w]9OEvU`x`.mZ3)lh#b5kx6Em#̷-ї?0 Qѡ8vԇzimKOp݃ C1Cg!SKCJ fj..-񧌵:/F~g^^V媮TXcaYY\P7hjF]t@ւ&8E"₯[)+XWIBP){isfVIH϶_wxi3WT}}8yzsCiEKilnyt\ >̮hOeĔ[0i`.XZu/sp fR6 p f5Pߑ!G^wtPSYsu6)Bwnv7U^w@wXGD[*jW 6,jwۑ#+nݷQk}fēfPNΈlne(J-4]h}#npIDZd΢G[wuu-t yDGDWk5s$2fT:x++VW}9UnE?fD7AFk~$MW")?DQX \:=xw:۴#ja߭m+o88c*nOZP;5kVaRj&&WVb#Ɯ=YUWa.  Ȑzi˭ih쎍+-ZDfn7/eKf*]EPEY!a-{Op2ƥ*h楓wߠ,&-zd2f}mA%ܠڠ7MZIO(t6?ڻ@kA ޅ@FWn߾=ZL^Oy{{?"m6Yu>X-Զt+F XHݑJzlncOmRx?zYU}~aF H`ݿ^F36!p ֦{PTTd[JELhTk*ZI`cyl*wH+E)F uPk9TgLNl;lYbo~"!ƞϜ7<cHC:8<%)~/}@w}}}b1`[@Z^ٹ1oKq?w;0IViL9~HEߦi2Q C0N *UZ n089r+ML7,4fJHHyahwA+rػZ[}*!3by"2x]p֮G[Y"5|=U=8:YL < :/WKӈKL8n^b(m2$A^H]x\@|uZ]ȧ'mO;fsqes\4J.(3ُ?3!kXYm}΍:Ea2QZp|<C}_nv]%0sٔxy_UKBu{m?ˏ p8 rO T<veVzѥ܂хA C$Dv.6Oi[=wX_Bud]tj^rP`UiB )f)5mAÛWYkwnĦ[#fuFQ{u5U_֦]00jgf[h4ҥKaCp8 "ࡃ޷Gl?PK} JR9BS{)&>>km6g!/ؚwsLwcRRRnY[\tZ4s8ڷIݹeIj%iR 3C|>ˋi=<7kJovUMPdE@EŢ~Všҙ,Q[uZZ"vVb"ZA Brma7$! rr<qߎr{duS#âDfŻ))p*VENmRGi#΍Lޔ˓1%X [:[tJw y2mUdz\eVꯌQd[/5[fOǦFa[TTpP#L`0]T)d2rٓ?|NKJB'?N돎UΜ S\(,+mD#[)mMkhT/p>_{%#{dJo QDh4穪 ~~~։'.\6De 4p=Hw\ \VX,L&h~ai >}:""b̙(zM^hr\6{Y奋ʣ9z,ySo&Mqsg-YBBY*)UQNbQ^p0:Ӱ5ͭϾet[ʐTҿwK$)ʠ@%۔+VZXX+\.ݝ RN6 tW T*)7oQK+)ꇈr2ك1. Mx feulق axqZ)^)ye3|r@puF΃9;RlBԨhH%t+xr2qFÎ ʿb+0l}2ч /@1J|||\\]fwўP())^R_ST:)Dž6=\dwGQhA3\Q;ҥK7o&U8pTTTB1 *bŵe2٨J?tl QM Ewf3#fjaaw]sryC O)R6V qU)hYiaϩTOozPݓۙtA {})^+)X@?bxra l@0'ި(]۰X \3Np!kwO,pG r;a?0_ .~vv|\?4{,$n?ӝFIOOOHHp tR!&&T[K܈eڋRSSD|'O~woZ?|6WB (;bnQQEaǎ:D'?Yn=BIhLL rAU#uaKII6$$:f  Y*$aёwSSS]\\뛘P"n >ؠ:hq40Ǚ,Y/z۷B۶mNdpx TiR™ӧO'%%MNN>I D1,, 6wAz=<<; t733sΝޞԨ/cǎ|I9NvH$b duwӦM %&&&GRLOOy///=)ڴ4| ف{Vn۶ T022]x ZB[R{֭[ {g_(nBXYY]᪗ AJAGGx4={ E @ nXA%%\.wWT}}=Aݽ~Y8Z* \*B޽w߭ǔ6lpaxhA}(pF KIIѡSK*hkktv: a_lC`"j+VYYyFGG O͛7KJJ:;;gϞOJEZwUS5?x #t333@u֑=Yf۶mYYYK,]x136-,] vh w8:H!JYޙB;GMK \p._[@(**Zlӧ(<~t(at]-vڤ*GPPbc,L߭,0k~/R[.{̥ #nݼ]8#faޝ>z6џ-lb9Z+gNڙoM5+mB'9ݮ=6=b::: *;w\Fjnnnj;ںiժUK,anooH$p,l7#E L"@:3\0Aw2I>1%̆!,4;#3u A*^Y˳w41nQ^I XJ>fyCT.Xɴ| 1E-uM~VP%wsswT8t:mO{YG'8yqqq/ FL&qcE.QT[L+ idXer:cZS(T URCR8?4=ălhc,?nTJj~I+)Tz\ 0 hsT׃lviLlg}OC & `}U%> \^^o߾ݠ&IsVQAq3Fx~UoE ۀ*<ƒ9XQ%x- zon"EZɋOW@H05[RxunG3nH$BU_teF &2ZH|R/@opg洴Bihh {K0rK! B)BH|WzZ  Ϛ5K_ Xı%Cm۶LT)t!Y\\y<ޞ4tF &Ì" Z%77ט%222vqB 1wQ@,]%&==lR w2j^#&,P\\\ u]+iqܹ̈H%'zkk}bbbiRҫCRp>kEtk:&oj4!+eew\N7Gr \"FT !X |>yӦM!!!䅘XFE~xK=t=T8/W!`ד=C0%%E.EAP(Gː^3geeA9;7VȎWT(ZT,+!D#```DDDɓ%$$3 t& [aP Q0?3])JAXN,/,jBz|M۹s'kSSS6"q]lt7&&&774: +EK `2X5LR<Ȉa-\dUI s"eʪ!֭[IeF &V|fCOւCcaL')@wڵk YN&okmI*:ۭl4sJ:>|wiomcsXte{[;ѕZSO~-8y@@:h"p--# muv 75~Yd04{:N#qv1kmm%?:_Ϙ1 qMyJ4I?p_^B9Ck{0f1Jog [Y-^^!>wkx3m 'Hnnn|> ,i"7J .>άށ^CwuXGTY&iWIʜ5ė BHhe 5J*m20"d;>j.tcMp~ e.&0H#tn\A(Huo@!*;zdEݡ?ު<: =U&d{pyd2766kua)[ӽ~Z!hk]x:;WQnvt<EձmOz[~gK_]VQ1{4]kz[cn||8NLc0U&z4ܰYwy'쭙'>i"Ŕ3B4<\W? 7[?z\./qFh2B*Mg̘r^p{s&W q8:*y.Xkfd:;;;::jOXҿWt{g` ejß!44TKfpn &-\nqMXѡ#G?yLݛ!Vv Ot%kmnhg3W!L{J(C=@o!p!8 ѯ]22N^+kEƒpׯ7Bihte2T*{`7SU>YZ7 III*[6 acۼj;=].o߾80y5hq!#>kFэfTX,C_JY] ѩc/Y'xEWShcbbfduT#@ ZhS.\)j:r Ntsň.^Ǎp8* nJ}e.̚5 =n <oɒ%k׮=|;3r[?./ا}hycc&%%Tk6P tr[~z#\"S;#?wܚ5ky.JvvG:ndʷ["/?++K5(1q Ώ cBko>hBBBpKz=sLL 8ADqU&~Pu$=tLIIOO܌}}}0i^@M#UiUWwIy>HIBϏYgC16 F$&&j8~lBgDg"* ٻ䄻o X;Ǩ% aʈN|뾦=\DSŒZildEnTӴ!{Bjƍ~eee=G8V=†NI#ySRQ`=O>+ǻr lB & xhJ@AuqqqB_D,]8*LOOJMM:Ͱx#bb4^GmP{` KHe>sZ(.t.wu^S(Ra0]S bom4e+ wW$Y|#.b"#￵b/_D,_Gϳ; vڵ7n6g}}}FFƨ 5lC=dcxtiӦ988hFYXwG(ՍdTq^3sVf9J|y֝;w|R۶mazh`"" B @=7o(9Ricccuu5<;s4$ſ,WF0M>}5fq fO<n tzLz;ZH̽A3jkkCBB@ HSU>:M㉣[w]9sL8H$Һ( e" KӺ+獷G>ߤ|z wIOO'sddoŪ #ٹPcCxnG3:ZnggphÅSF"8o_{uD&oc6sOl˦*d^br{{{0\G@F&o=cߙs+ZM`p;S[lln 瓲}ԧ[D"aÆS_Ĝ?iqx21Bvʰ~O?~ꕶ"ek_k1~̓ )j['''<=NU P&MΔ/ywNsɑ}؉۞H$N 'sGNSV6ͭ⾞^%#׻rqղ?c>A< wsXYvuHֶn@8jڥc*AB(Ss /}bk"7[i7l a3uJM[d/q}\+Tbҟu='''dZvT>޸_O_E9ux iNg})3oii^ & W?^nز|Og\j  uu ommuvvֺ(|-¢P)TkřdړW]`?efpmaQIWO5aVYu>>>>..0G{\sfyζWɞ4 Vs =60ibn$KoڴT+쟕uիW[njPw9WW]af?֗f> 2Ʀq\Nb0FrK/iQ^~GJݐ&ŋi7PJBrbTn{zz\\\oY,Ц>w*::dXeL{'!n]nJI|o=r޶fdd-ZHsCo*k/({M GN U(N2eʤIhNԀBl; ji:[{0ҀECooՇy8^I˴JUU){b&%%׃݉ߥKݻW?)ޖW avAO0"'Dw0_KW=p:;;۫"wl6 prHdaq3W5PwAKw%1*ظ?:^< _n@"לpEPd}#U{KgJz1 XȆ(|OyNq,u*`YT\瓲Dw_/h~F 8!+`Ν; TfQQ^j=HSDJ)Z#0@nJ걱j}b<'|Կ6{4PqĘ}w C`xUaaa2/ʱr^N8O1q ԈmݺuN<{nL4;+\`x`${aȾ?,'{>RMѱ4>V^^^ GԷw9D<ͼt@OKK{9NHSG#B-*B/r5TңA EiO[қͰ㍲_PC YwOџ[__@ 5y9"aC0#C̕(,=f~nREbk׮ݶm<6rɢ <@ atR>~&¿f A7ԫZ5 S ׂ+uevӻ?+-FTF#>--ȑ#Pnٲ5uco!{k@󒣏=x^ޜ-Xٳ>>>6m"]YSt4WQR.T`4*40oDkH 4zp.w ʳUWJ#"uuuIIIx2yɁtAVn?Usw󗗗ރ6 ,sV/*ٱcnpqA˽F{P1fUA))v7&&ďBu̱I6?f-ŷ{xuo-u802G IQQY`Ъ5cW5~K.4vU`JTҋ$ǥTppH<׽D1R]{>naZȯ GTuwwlL&Z;dpCnbb"QQ/ke.z0B O`` SA1* 4kŹ<ݑ!V1vJ'O/BQ~ H$x,_35<#_ P ( ] +E-+||,ΝKMM=xٳgkkkAt$ϼb .'B5tMTUUU`͟?5>}:Hoee%tB .N$X K_ϸH\t~c' G!j?*J{nN ګz6a7VN\“wqƊ~=##5#>>,56W!Bt8>t!Fp&yJsХD\=E=!iec:AƉ>ޘ^:x_k^6NW\Mct:sJ]C:r]&)^T666C\TTJgYDݼ_QV]S;x#"+=/l^6]XuǑkAQGVi^֞9FOUKMx VE5i633 AӼRܿ\\ܦMmHcɊ.H5fB)ho"c:`kJSzSLh^ K/>l|æO..J.>wB8!?`ǩӼi @ҥ;LW?( '75M<#ăb'ƙ}A͇)l}벦%--r1U-[! pMt#Uo9k-ֺ+EV( @0.QݩnUMp7ťZoW_|{/X *pܹs'44TKzgpn &-\nm|"-77b#).`/_*}})ҥKEEE>7?ߔQ`BU"Sk ZG4ZFЌOxۛT ԭp6}4r ?}jFByƁP#uyi/R1j5 ]5/^L(E&3]P7>NdݍC.b{g{7,Yd۶meeebȼlj7@XNNNDhq #u7IS]LL@N@T41.a* B g̘fnyyyjj*زIIIuuu (t Ǒ;aB7{?<-Ɋ.6(߰\|@MD_$t,AWuuL;bH/\ %xSu PDFKI!nٲ/Ձ$MZNZD]>_[[:Џݑ  Xdn$$ tjXTmlZԨl$4<_$]hLSRRJKK5@mnRR5 vڽ{ٳ'>>4)Z{{@DGz0/ >tPӁe? 0FZ *4`.Y$22w# ;vC@hup{{{hr.[;ͷn'IrIǝ!s +@95;F"Eo +իn &,"nM CzĀ9F$78:_ع&/፰tW />Y;z` NO ZlٲD薍ܹ$v58Zo?>}TFSzAM+J-L_tH"PRRTM8w\jj*~u)nn8E#Rj)Bbd===pQ(T*jP.XXqjE 괰{=][ӸgY񏾤/5q^6l;vr0^r%"""<<6]p3gjJ% 3=L6J mݺ. va*jH*//S={ٔz1g;Fm4I/t^7V7w{ ZUUITFҦK-]!{kN䜊 DuQ1_O;xD Ђf{#?GrBW31-*0 L8W+&eݎV[[[6\5ej$v7ؙ_Idku-VLƅS)4P.l+6Zj)I/>y;;9wux42Htd4;^Rw%@Ƙe4Wky.Ujfww/Jvvx(!_8N_ 3bcO'Y\ 6oԕnjxd-^Y5IpZ8yD2BlonmUQ=Jյ ?2r̿QV.)7_TC<0>>>ȟyؾ};6-QV4ʝS[[kjk+7&O Fu8\bIqf_ůqQ %%%MMMM3+{ SENP4 M aϤO^Pt^9ge#6 &3_8!laݚo57e /Kn[%;;>웾vdNwK&o>:ť?^KZ:;[l KKK3A5M镗jE&(<:H9uTEEE'NP`F.C/pˠR eOknҢљ4&S jKzj b]k\,`L:q$I}bwN~;vn^Nݼ&Ϙ~ʓϯ dpم;183$@UY1?KH@=II½693933Te}i^rtMV=|ė'_տON~ᯏ~Sv/`LO{qGCM} }(T pr'''BtNmll$=k ̘5˫ȱ»F!4=)n59F}}4-ٳg̙: tt{+l?:NJMύpé]5JŌMr "ySc!+l{UWW- Ʀq\ggg|$vz̴axb( !,,L xT']Ke ZD*әT iwwV<zos_O޹s'j;L͛7gA=ݕ_&T&hzy]Vz TF ''C/֬788رcSL4ilutt0Lٰy}(*Ac;les M.CLKK-B/\re_hуQV ~xȱ][Xв?}p#PWWgz!<<ܬBp80IښU(1Ykkks@xl, )auGȆr# co?(-!tRAbnՈK4қ[NKŵ{9(w"c] q]U(UH`-Bp8}!/|>j Dܲe LE˰c cjY;Py E+Q]Eh`'󣨨tqq! 5h [ФLH1EwHU.pDYX0E%?|ˊ{Uב1ĺp"bJa~ ցP$IhfffΘ1ɓ[/4WCzRop*Vgd,jy5P(W G ,VwnKTfT<-.~5jns^)0%D穙cZzẃW ,ZkQիW?=EbcB"|$TWWZcͷ߯ޡpg?Q7Foje\6tWo(P>b8,\}ܩs xS^ÁStq2읃z3yK4sQQz\N40K8p!RZA(v(s<4XחEYO3gB~ټ~S 8T^d|ˌQAcfXlѣ|ux.Ek9rWXdvMVb({ZtL|DkFǾF1r,VblܥN9qe/_61 Ka) s܌uyyyk:*ޱ`ooO*"6鵵;v U*po,W{_4X}=/̑}ԧ ;H>%+|*%X cp}]_*6A%~U4MP +J58֦uD7??)xKVt M$n%c( BDLrZB*u ޖWAw?h7k&41 {mVPV50߁]"Rw⌙T9+++''';;{7n7yAv{?|L|{+(7?Jā> NWI.h3] ՆX^EOU3o9l8.3TTjPg Z >}Z_˦L|+;~Ԛw gM;vn`=4|IW5I讴꾒ܳ=},ᅱwan͙"~oǁmMM'}ށo^>Wt_~\u}sLUmvSbbIIINՖI{Ϛ[D;7m7)_;Ugq5θFBA* ǫ٧6C|iKX'&qqqWE'f<, 1n/=,oPp/)5tBf=itk"0C32B kA˖-@v_uw/hDܸKrTqBan@zoN GsJ)uF$ojWxHoյTtv( d?/5gSh?Vf]qɚi=wafSRR(caaD|ԧr3F_q%CTfYe{z/yڵ2䈷]O#1Pۯ̬h)˪w^&j/hBF ҥKcccy<m !|A; Ș1c٣؏=sN~yY1l!H XCK++I+1Y^˜>DnO|x L&)--:;;H$pE֚!X,f܂GGVwwT=Ɗe 0 %R8hYg{k%+ AqP(@h#~-Çm"_f{s>B{wHไu1PLRR l6P(jm|fT8999uuu?Y']U4G+ GTTX1#ƅQ"td"H-TF=^ %%2N||ŋ1_ T]^q? =goNnni~# 01{n<%%U 9Yz.?G`,DDD+ aF[40ZoGx`,5U5H){bbz-d#-fI_ŏ;Xtd8~ڔ1s%k*U׷H$ % J2immרLк駟rM6Tm0)<4[GYCJ,LtDC.TTT@2ʤʤΝ;7n܀-L3# jM!555;;x8酣3hd!5ڵkPv߾}72VzK ߱뉥Ht G||%#Gdɒy͟?ԩB1ͻR(/XOR|w(((6}Uuܺ0pwMb(Ÿ-ãθ!28sdd$H믿ݜm۶͜9Oxȑ!WXieK|%C{/#ѝiLH4KKJ[{FJ:ZJ˫kT OaxIekE32eꊗ ڪ.;څXs]5 SU&46Kt_n_f]σt]ȿsdP\xap(aJ"$q^.|;$Fq.]\> &I"g ;2:;|m-u?m"VL;b CXYYĊmU&2AÿB,ẍ~o}ģPd{o`<۷׮]Bm㨑 >>>`Zj_^꜇*}I97|F3"{/#5fxJr2cmmfvQ5T\97Gᝆ:dʼ9m'}\=ʼm%MBK˄Fe ؾZe"li,]0ߩ=} Sv7YqY؎E>m߾=...++KsgGGHugφ@2dd!Qz>Z\<`c-XRSӵk$Cj~֭[l 3B^TC >xseNM~!.o*Օ?tӯmxS$3+ֆ ؾW]&y'2t<(;A%]ҧX4*͂\.VQCCGU=I|FӔ[Đ Üww$htE)qU7E*T{L=apݡL\RRRe&oxxLގ[&) *e0ٯO>Uы[v BwA\10)t1X#? ՖT4˛oݎR3'@4ޗ S u{~_R$ڹI먞۟TXg;:: mbB(?"#e2{쎎(ӧC;d%L(NCZ\KH\T4˖-۽{7^OMMSqW^Qp+h{1ߥ75 wM9sx-x֜KẁY,h>A!> BpT/QLze OA[ srr,~~W2{.Z)* z7hʊ w9Y̍oCkP|> @Kϋ@*$E~~-7իCda/_eE3.l˾cZmZqb}H ]nyyx]}T*0...&&E۷×ŋM^h~}뭷__;\탧HAT~(qO7C~JZ-8R ܿa0bX"DR=9e(ݭ5q]6k]]ݻuuu͛IMZp/"\Y^p =jY@O#kV&9aB|?++oȇV 00p["Ҷ"a/FFYZY 0GhWV?` ,\Va1/Ľȇdu)A,Yg@,Y1;n>wРiچ^v02VM9KEwjJymWw{{WWO#{TWvd,R(0]}rEfz֎LHBwsrr :mڴ)...55)))֭#~Ì#(.?q^3 #͹@n9*# 騬0iri_%#kJϜip]47O^暎5l|zM|ۊ(F;ko|[֚{@0*^x!쌯inSN^,ZCmRZ5+ߌk S {v uuu%Ate[H"(<///Uár{?ieŵ Z09FF'##cǎft93~7ǭau*ΓCܾ@]蒾vJ؛.rEUhnLL ؑ f%Khe{ڵQQQȊ5- ?`@U)MҊ7yJaV[B{ցK#EnbXc￳F_.8k+h*bG`B]:h.T.;?0H sN>̤RL@<Fh4&g̰^NSN 81ƠS$^lw޹d7e= >/ttVmo_GNjC.T߸g2ZZxyF߁=\+5# ̘1`趎H.)m(rTneTLU<9.R\&Q`,`sH)H4Fɤ*oH)Az[Gd#""jkkqg @Rnn.]Tܠ,x< q~WP_ A|Jinݝ;w-Y$;;l644fԀ>+WLB!4(N$8]kjj2bF\ "B*qdd#G㓒xdߔ#7)gBB&im1)700#H#ooo7*`0 E?y8`̯A*)'''٘qx"*ţ5NL}vc!_*dxȖEb!!!Pqᅁ=...)) ƫ ~lQQQmm-Sf|w㠟իWoQa9Kȑ#xt億M6~o”_ t0'5l|2W7|S5&&tM"|@[P()/8~yFi}4 it)Gw DK*_mm -E Lm۶-FrGf.Wv^E|l}S*BBBX ImJ܂ 6{lY5xE?FAO?7GB71IW^dN:D;]3~qf)ԮK3t[[[ D"ɤ*NpΞ=[VVP(4j{`mnnnaa!j㛷[]wO'Gs<{nIBnɅ@!D@AEl+CI o!rQ"DLKMk]zPcȅ$Curd.GLB.'x~ke֞˻w>o{rCu^*ᡌ*?[*84jO=]sgHYt/|9gV)|T+o}[NγO9ss*U=t 60,|w;'Ew&D*^x~`V&jGaJXjUBBB~~~jj-[xRL466凡T++=tߢ̍{<25Z瞼wvssi m-z批_yz^hx8V/(3:))Ax[TTBWڼO Qڿ}Uya鳴ڳ#f7my~K]?_}O|奢'ޙokϘ ηͨ=E&oo',Ln+Jx/ufGva98r#k03-*X.1 6XQv6$2Zl)Cړk0my7vz[OVeﶴw+!:׺K۫+=w;C)@bd5_{f^wOz{8Fo|_n:q1W?_koHL{if']9¿~05*+x7pGה{nc{M ?>~ٚS5N_cjj5`Uo ^' F~_tvGo:!wժU/"0SR6)k/TB, 27=CIȱcǦN + `PY{q8Jwq'ƅ}u{\|pV  ֞:>nZJTq/w`?1=Vx?F?:6_2%m3RrD|?CX5 7 򦦦&<&<{lWWW XxdWN rx hE%&&*ce0̨y%^~#z2\̙3]ނfgAg~itttLL\z NOڿDbƍ駟^n]VVXt5;}4 [\wiή肪'{AwOcB4 L7<&f/;?ϯ͍Ms'nvv1'P_*J{PPPYRF ήf@4'hWBS\8Ayf?GBxsy<|q$㱷w2kn)~xolWćuy3TN:YVѴ/o,Y6%ސ7|R/X@Z*~NSeUWj.T|O|VSٹ]ٛ͟;_=^zw8,> nW&+IdZ`\LIyŲe.lGz~'vK-NiMc1($؄n䢢"Snդ(ƤDS.+~3kŊtp7Nnz[,N8o,\:x䯯MH}u ;Bڳ[ ##C9tbsr],@p8:::ݿ<'v~#L?ދNekɪ1=;F;KQ=moo!Os}L1]x}aFbϏ6$ʰ*ZGPG.qǽ%<$@R4]?p`ON, ㏝$B}jCS/\Q;'dDVk4|Bmſ,!}܇_ԪT]==&u`LGg``lklm݃Nؘ@갇dܗΨNݻw[(8]*{#}r,չK'XXr`"C_n݊eѪ`ȑ#111 h:u/~߾}bL.J250̈6+~X?|,r-B Ty_ Jmк;}* (Dԭ]yCXΨ1aEq:xܥ鯤D=2no8^zOjmXTl\4[5l͎ؔi3'sX߭.i&Hpͬ;o ~gV^^`&iر^&]?Npؗ˖-TdddĻ5$A mb\StCsss]sat/^899ٽiqǕ'ω3.n$_ :u*mDw }WvvYpF]}$1n+*j<8l= Rp %DJlvZuUD롻NHwQJ0|ٛy7o|i~a'NI!$PjYpՂsCbb"DE,E}y[Tn28|Dc(ehaz#_5A<(ٳg!z/1cU-j(~g_aHϜ9۟ QwQCSA0is#jK2YxdFDD6XPk4%999`F3mU)W4⮻`?xrkwk3CQLĴ}~ޏƽҽ̈́'O ֈ%K|p .E|լY| .@#EmK3ZJ J5FC!$N&IŻ8?&{W5P??zH J?/%Xx&M?~jw#4R=@ ZІ=77Wӏ{Lzp$^=NNNG8 F􇝸 GmddĻ3wk3H5N(F/ g UׯuݥVҎ;Ȣ *𳝸/'q_!D4gzʔ)j\uC(7z %y~x4ˏqƣsy[ZwΝ;wUA}iĕbhx]Oe͛ooċqMEk\C(B4СC@4Lj$FS[_^0Pz3""}twuϝ{P{Æ IIIo񆬗m{hdAEHr۶mXqeH9t ~5-PҞ.nT/Y@ ΉѰMXc477۷j? ׮]KCtt#czϘ1cE8޽{qz'ҕ[l9xϪoU2.s2xU75ή]|pb 2Pߡ:n%nG!3EEE81([9=n&/;EaX%hz0)8 9 _tGrwem1yt 0Cx!$) q#{7I"T999s΅+l2TQX%%%T9e@qsilZ1͎7b+KIOݻhPcJ_9qŧ#q| [Ͼ e0nxyfF%tQׂi(aaaԫ)j-Έ@ "}EJ;F /f7,GE]nm4˹QQ`X4pw\S]5WXoۥу r|.w!}edKw+ +^H!J#k UjKK˚5k$E/ӌ) M;΂]o[0E{˗/|ʔԜ'vQi*f|B.\X^^}vPh9bP4- R}{pywۣG0уʄ?gf";w >jqlr:?8> Q]wޥK;}tT ~U 9KcH\e; B  T"*"i9U2c'OxUxT~}*™ CY53W 0^aAQ6l@S{qFނa]R?HKF3.2fdd2St hsKBSNݥO.M:]r)R ^Vpw~< |9ÛaXwOĥTHO!#ܹ~jvo!Zϝ;28kAAJԥxI!2D GŒNKKIΐ*wvv6I5woU#W1v9GqBnrr̺fweuf525*r۷o@z=?YZkϑ#GbzEEE2aO(¤byB[ZZ Ѱ 爾uN*HѣGI_] uwRAyf2vXXOfXwqF(S˻vPBNΜ9SO8p 33^ڳgy&2hMm򺂜 eYYYrxù<~cHs64Uq尰aUSv3p/t 0f7uɁВM6M6ݴ2 Lhu A}MU0*}TG{"ZB>\3siE;mH';`OHT'xʕFN$Nfұ{+ݍ]({X^yTG}݃U_úxD Fĥ#J39f.$}ٹӂx=nQ[/"8qpy~&mS˃NSfUfF> 4jz T+1ð27!r.jUp岲 zQh 9ٶml(| R^^Dn͚54)6Tդҥu%B'TtreV{IOO,\J=[?)دaeF0dr߸qݻip,XZh,**mFGΚ5Rp|8psX`0yhO9Qg;Hi,Q~W&SUzQYݯ 3 .};}oʧDrBVw!7-o1!|/k"Ds/m dY8KA ? .$f.lo/2 s( JÊd| }(8#! XM,,~r#uFÂ.moA'hmQԆ`gfBCy5ي9)s4 qka{a lAH tchݵkWeeիa!ϟ5^?43yQ__!3g(mk?@~U ..u-F~fM`Ԓ"ˆ(rH8.iI nV 33?Bq96oLtOOOQQx]L&ҥKqp ^* BN6-++ELcɔae[ƍl"+СCr v'yTKzi4 ohϞ=Gk֬g(_``Xw)z}|#0]rHWxE{Z!??ȑ#׈$K]7.8s=q댌 pyy])7;$bae&A̗M{ǎzL$ߗ2/ ȯJpT(..J566R5kpY1l2 ˗/'w}ƃo~ʕM6qY1 0^@tsI!,8G6"U1auaƷ_ú0 0 07#<˰2 0 .02 0 ú0 0 .0p`*uaw.ú0 ;˄ 0 ӋbfSTj5W .0]F>#aU(?OFcff&dXwap̞=;>>^׳˰2 +ڮ {tfI߼HOpg1$@k(+ TMi4Jq+}z*Et-KEE*CV ƌåx_w[ZZ]600o5vbcc+mWJʴ㞼6=wK; 2$..%K.%l2Ҫ [TS",=Tii)+# |5ŲNS9ƍ &/0rloo?{lwwwDD`uMMMXB=O81o< CMM͹s>jػ0sl_.BL+Eػ4m| VrXXYԻi^Ƀg4vvvZ ݊ *嶶6[d2\R׿[TTTdee?_bO O(.HۀPA+zwpqM3M0OQ@\ JՌ&|EՄߎ;v֭ǎ`Ѱ[hh /ObgAtsauvIll,Z^ҫ9 h6Wh{\a *4kkk'LKZPeN_Czzzbb"|BGP_ S# ^ëWo$U Dw+g1 jKui`jA3Jׯ_J顪\mG2 0 ȭ-0 0uaaXwa梥n2 0촶 aa䦾… ~{t!.aT[[;mڴ'Ntww2 0nUUULL̹sRRRZ-.0 xх >eatbvh0zs"4666448r}| CК[:::zyTP(PA:eFQBa1TOƧUZzoKL^S8^%tWVD/T5L8ҥ+=v\H4Fuuv*ҳѓ&4_o =y\*LN>JN"=גlIx:*9 L2؄!=-gZ&O;kx/GSj#cMƤꗗNT]mKH}aW.UOJiTB ].^QE#l]Wuqt]>I5s|m[Zb4ǎ ՞ܥˆXN\_`㰡.kknH4O*)>LyuBBBZuxlgsC>.jEahjJzΜ9oT*S#TōZQ?irͅcS- 5=PBmttg+BT`Pv6)) M q5cǷרC"mWۃ"cC5C&4\H6ޔ[$Z+ l jRZ/#4,WI<\_IENDB`xyscan-3.31.orig/docs/fr/license.html0000644000175000017500000000375211470616221017760 0ustar georgeskgeorgesk Copyright Notice and License

Licence et copyright

Copyright 2002-2010 Thomas S. Ullrich

Ce programme est un logiciel libre, vous pouvez le redistribuer et / ou le modifier selon les termes de la Licence Publique Générale GNU telle que publiée par la Free Software Foundation; soit la version 3 de la Licence, ou toute version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite de COMMERCIALISATION ou D'ADAPTATION A UN USAGE PARTICULIER. Voir la Licence Publique Générale GNU pour plus de détails.

Vous devriez avoir reçu une copie de la Licence Publique Générale GNU avec ce programme. Sinon, voir http://www.gnu.org/licenses.

xyscan-3.31.orig/docs/fr/errors.html0000644000175000017500000000717711470616421017661 0ustar georgeskgeorgesk Error Scan Mode

Barres d'erreurs

xyscan fournit un moyen simple d'analyser non seulement les points de données, mais aussi les erreurs associées. Vous pouvez traiter les erreurs en mode asymétrique ou symétrique en fonction des options sélectionnées dans la partie Barres d'erreurs de la fenêtre Paramètres (voir ci-dessous).Cependant, même dans le cas symétrique, les barres d'erreurs sont toujours analysées séparément. xyscan propose différentes façons de traiter les erreurs symétriques à patir des erreurs asymétriques.

Les modes de traitement sont:

Aucune
Aucune analyse d'erreur ne sera effectuée.
Asymétriques
Les valeurs Inférieures et supérieures des barres d'erreurs (gauche et droite) sont numérisés et stockés séparément.
Symétriques (moyenne)
Les valeurs Inférieures et supérieures des barres d'erreurs (gauche et droite) sont analysées séparément, mais seulement la moyenne (moyenne arithmétique) des deux est enregistrée. Choisissez cette option lorsque les erreurs sont symétriques et vous souhaitez augmenter la précision sur les valeurs d'erreur.
Symétriques (max)
Les valeurs Inférieures et supérieures des barres d'erreurs (gauche et droite) sont analysées séparément, mais seules la plus grande des deux est stockée.Choisissez cette option par sécurité et surtout si l'image est de mauvaise qualité.

xyscan-3.31.orig/docs/fr/file.html0000644000175000017500000000356411470616267017270 0ustar georgeskgeorgesk Reading from File

Ouvrir une image à partir d'un fichier

Vous pouvez ouvrir n'importe quel format de fichier pris en charge au sein d'xyscan en utilisant l'entrée du menu Fichier-> Ouvrir. Vous pouvez également faire glisser un fichier (icône) depuis le bureau ou à partir d'un gestionnaire de fichier dans la zone blanche de numérisation. Depuis la version 3.0.1 xyscan supporte les actions de glisser-déposer. xyscan se souvient des 5 dernières images numérisées. Si vous décidez de numériser à nouveau une image, utilisez le sous-menu Fichier -> Fichiers récents. Pour supprimer l'historique des fichiers, utilisez Fichier-> Fichiers récents-> Effacer l'historique.

xyscan-3.31.orig/docs/fr/stilted.html0000644000175000017500000000540411470610431017777 0ustar georgeskgeorgesk Adjusting Plots

Rotation et mise à l'échelle

Numériser des graphiques inclinés

Depuis la version 3.2.0 xyscan ne permet que la numérisation de graphiques parfaitement alignés (par rapport à la verticale ou l'horizontale). xyscan permet de faire pivoter un graphique une fois chargé, avant de commencer la numérisation. Pour ce faire, utilisez la spinbox (encerclée en rouge ci-dessous) dans la boîte de dialogue Affichage->Ajustements graphiques. Les angles sont exprimés en degrés. Utilisez le viseur pour vérifier l'alignement horizontal et / ou vertical. Le graphique tourne autour de son centre. La rotation est désactivée une fois un marqueur défini.

Notez que xyscan ne peut pas traiter les graphiques déformés de toute nature que l'inclinaison. Il est fortement recommandé de corriger les distorsions au préalable en utilisant un des nombreux programmes de retouche d'images disponibles pour votre plateforme.

Vous pouvez également définir l'échelle (zoomer/dézommer) avec la spinbox de droite (encerclée en bleu ci-dessus). Notez que le zoom n'augmentera pas la précision de l'analyse.

xyscan-3.31.orig/docs/fr/index.html0000644000175000017500000000527111470616242017446 0ustar georgeskgeorgesk Home Page

xyscan 3.2 - Documentation

Un extracteur de données pour les scientifiques. Souvent, les valeurs numériques des points de données représentés dans les graphiques ne sont pas disponibles sous forme de tableaux. C'est un problème bien connu des scientifiques et des ingénieurs et la seule solution consiste à utiliser une règle et lire les valeurs sur les axes. En général, cela se traduit par une mauvaise précision. xyscan est écrit pour résoudre ce problème. C'est un outil qui permet de récupérer les valeurs numériques des points de données et les erreurs avec une bonne précision.

xyscan peut également être utilisé pour des applications autres que scientifiques, par exemple, pour obtenir les distances et coordonées des objets sur des cartes.

Quoi de neuf ?

Mise en route

Copyright - License

xyscan-3.31.orig/docs/fr/workflow.html0000644000175000017500000000440111470607545020211 0ustar georgeskgeorgesk Workflow

Processus

Processus typique d'une numérisation:

  1. Ouvrir une image du graphique à numériser.
  2. Définir les marqueurs, 2 sur l'axe des x et 2 sur l'axe des y et entrer leurs positions pour permettre à xyscan d'établir une échelle entre les deux systèmes de coordonnées.
  3. Choisir le type d'échelle des axes (linéaire ou logarithmique) et choisir comment utiliser les barres d'erreurs.
  4. Numériser les points de données
  5. Enregistrer ou imprimer les résultats de numérisation.
xyscan-3.31.orig/docs/fr/undocked_all.png0000644000175000017500000072037211470627276020622 0ustar georgeskgeorgeskPNG  IHDRdtEXtSoftwareAdobe ImageReadyqe<IDATx eYy߾r_++k鮮^hKKF&$p#8beḡ =a"@YjZݭꪮr63oi&&ܠj޻޳sۿk? lX*V*Zd|O&T󼕛+b)rh4PFGG/\H$ܹh4¡p2\[[ xnw|bb|llggX,r}ff:X(6[Mv+uzCi65??3溽޵W7M|>wПl6G=|綑J]V ngn`N#S(׹h$io I6n0:zXV0tT-ñz#QP`nQplQ3Ykebf{MAH.=pm]Z:O;;5;i ׯ4f*5N&yfpBXN6 v 6W ݝz}rjX5TʕVtV5Õssk׮moo 234QLbQ;vϜэua{dsD[ v%6t8Jwmcl1|ڦW__gMv4,۷oW5zE ׯ,X0 wA%vzV%^STk _,E&'ʋLn|`R)82,dN < <:*FGF*j7MWڝNޘaƧC0}ltuQk(KDbl|1-^3#jys'.\X}t=ax:5.cxNɤ\jR ՂĴ~px$de<C#fqg!$tT:L2X^ E[rB=39u1n<Fc'#f Xb4?l`76;3Y,DgÝdmtt 0ee0fE 1Lg "X~lxx^jJ=$q<:lYʞF"AYf[ imwCX5T4gC$A18C"29ՏYbCkk뜕 dkaZ={.'2oglb m`{^\eeܺ519A>ӜT8,pYz36lSņGGXq"eIfXnv%CCfb;fS5m1Ny : s݃nHXWqpӜΜ]z  VZJ$V֠#5?6vFo;_9[R qƈX f̆ڣ?YҼ}Hv1Zm^1Y!0cF]DR> q"?3#&'wGApLCENOOs N#JՁab6L,]e2 =?=ء$܂˝L 70pe21PD#ǖ1T6+\p3;4d4sfv "$ N0ipyuQ鹕0cg tF,[jd||od)2p&iw4;;reSx E}NV 5xlrbkkk!l$Ӱ!p&'bb쌁(@Uu@MӒ5)Ι\e:MQ*!KQ1zL\,ӽ}|h""d;k絎M`[3}΢9G j::1JͶ!b96e!v%4v23 ýR' uiblD\h3d45n,7DNLh4h-~A6:scIÑCsrfvdxSS=::bG,-- ,zF݉4C~pxX*sΨ<%w/^ k[,V*y `ʜnv|l%L0?vv: ߹s$cvKbffD2Nvl^3V[cuA+%v\rzi'W adS0,Fsss5N:#'oϖfK{bH׀ NMOKHBClQ6<14 y V >Ȓ:իϋ'8ʸ誓Pбq`1w, ,gxTKh<΢ 2Mɘ(2l=[Aʤ٪'naH&& hߍMv2"5S׫jP WoWԇGG8L| oiXL#?R$4mѮ[[3@o޼9?q )+'~.R,e{ 3'Q" 'o2ޔA,fN{Wño,/c|q[gY:%qOnI@l $obm}SIdIw"LQC]3XanXMNN GEIL4Bx9I94Ү8 @1ER ܩ"Mgi ca>&HLVF:$$1[Fk!)2 ' 2io&i-xip@0dBU¡Pbi7" 2Js!Ai-bϐiXN;6io5^o~\P}M1kLK*1r ̻%fX,Qkehksfrt6m$R j#QT\!$Ǝxmv+5;CGQ6B_tr~^"-c@RJc7rfUBBo!R>ں(6պd65OLD]0K&8*Bõ 4#v5mXZI`Pex&3/+PܼAd׎b o+++v.5YޑprVv+57 Gbl^ Z٤Z>p"> ap,Ջ3CAmǞ=r0d󰳳gP"n _鐉̐Mh933juVM[ fT*5 /@? IЫD: }:9$8619Ry~/&TkKbs{qIaґv;AILH~}c}wm[IֲLVvDj:XÙYVjw(!?:jG=`3@x6kFaժS*anVoUY3 fJ4 'Oiܵ7' Y|=<,Ym֌K5'>k)Bn1(*+m S6L(6~wh,?Z<8Z^±grq@.,>|ä#:&h(J`qq!O42_CAc}U2[ N;% VۡDvL:M+L]*zP9X"Lmll@%~3N>ÙHٱ>c (5ҡm2fah(g(ĩ4\BĀ{LũW9s_<'4]E.E #Bٵ]|t![yhS<4C鼻!#Bkv;t,q)q ƌI~L`s_7L0ީ̚_v,Vv7=tA{;&dF \6y*q m wvCQ_I183IY͚!$AvB Mb&:nmq]4bN%tj$B*qNbt;RF8U ƖrߢD̄ugd0q1 61BI:Gne8ɎfsF>%'>gJf5`=#\91OHUSg՚ J5[NTHI݂o~993H1Gڦl̃)wL#_ yS{mv'}f9s4kݓEmf=0s0&JuvX`+j;-$xZuQ-6fԝWO_nK Dbo&:1gEBf^*ʃ&O@Oĵhq'MR86>·F ZIZME m F4o^խM[3 g{1[3L d4_FOqj&cKܹa:h7O ffq=5=X=v?sR\z4H$.ހpfI`OvS0X'0Ϛ9D>HЎ9U {F7e$JsBvMSIrl(HĒKv(.fo1]YE~"bȦ6kpU"IT}Ī$2*BN`@,Ns{NPB!kįtAz$kZT 97hIfAv"Bn#6yH9ͣKS:kT2g6gZgYݙe}jbӡ 3H;]8ڸ,TKv 4p Y\9|Am Wx_eX *~@%uQV78h`:YIG9>6-Kóv`'X7XwuV0ú^#j,'mSrGavmmMhGF"LU:J4 EYfRhr5ŘuJFjxgMlkWswρ'} Nj d07P.,`c2=o{w|p. ޖR!|kd=1_'TvJFtN7<3Kj=~+Xfzabl~N]wwz[w6h~~g/;o%W}v=5%Z9=ÇSժk|mekV^UW?g^2[ )^f^\x\1}yfۋ&|o} ہXY]-|/zkwC#7>H" }9~;KCp$ؠtR7 EɍH&I 0;GG+_ LTPl*9h6QC6'{ro HrlS^t 1HDR_Pg}V`XKԁbOqB)rqΰs 3';6#sOYrCC:HJ[4= No0kKO,Ċ`211U1(}ffF+++ /^4Ngޚ)bD.\+WHܭ G& xΆ}P?X6A/pkiunnadĬrl@6lOf kms(Dܩ lP8}_"CVف&6spkԪp4JB07 M$⡁#qg ^AP!dC;,bDccn65e+\ٖK!EEB677]rb {gvgdd׾M`E߈Wf+h+M1Í'̻ ‡\F} sy8ZDyf$&)zά:ld:#:Nbow+n(Nq ݹB'+#YÃɉ 0#|d.oZNLd1 Ͻv$ DUB!; b#|I} :G|fӡ?.Q9k4:"=ŷ^♧[73ِ7̗[٬"LbccpAz"۞zp|#3}esBstP*wg7Wwo?pA9%aFΜ)zCW%oy7\r,#꛿w~#Yx_:'[_~c7kx ~lxWOw/>gO۵'zo=oyd <(np8S`"J/s\Pw.rK:0``R@e.MW@ K=ՒX&!ci97dV1%]@zt=23,o駟VҬ+XcVˡʹDk~pp#W؂OpZq-Ċ3q٥hkQ򉒘A9qE'J= E*r|"Q)Nie_MUEe4/&AZvcS;P?wn l*Uחk|˙Gsl(q/ Bm4#Ԁ±X:}&>3Fq!vitC ON‘D8$ڽTkW^n4zP8pw7h[[_?tK$r_Ǯfu\~6wtwni#lyK?S?{h6tCC3~#?{@>z~=< T|c9`8})gxi~qΎ9%FYjo}M견r VJbd0/,.|_,iQ{-v_b P^⌕EJw8T*ZQ]8Fꧭ-hGn@ݐgiiϟ?O2Ӵw\ZŽܡ9`@O C"=iѝ2 A[zGL59??ǯ(pϻ;ɳKq)a\4!ҎHP#&F\bRfsQ<к"4|fɛluDx㝎Rug3^̌XUj:81C}̍,?9‰@nˇqtkg&fZE JP\…á3K o)66.,--'g^@?ooO/}\>W~mko^i_7o??صPIW+岅cnrbz8nGO{ ۄR:1 `[DT`|lL:]DF1F\NK;;;>mj A,bRZIG6. D)##2#ZSHhE+ #09a[R U]*qAK$d24JC7nx_hXH6.SA׷XWM}`3#QZ/HBSF51)Mj9FX!5 1".QO+A4!,7= S8Ljɩ؃͑uLu;w^eNo;ynxuǓ蹴8 Fgoxn j<ϯ7?763=j/;?a+N3~[ p{ow>Op_7?D3 [cܥoɾ;~_}?gӽg_XʏyˌOXA7r@1&ϛQ彖P6kq u,j/%;;zU8RW>Z|\"H^*sAx>7纸vԧ>%r0Э & 614!M3Zbj{Er8}Gbq=Px_t4!>^uJȯ^u-qdZ`/ @y" ݾ}[xy)LDžIEǂG(wϜ9#~ūQR`oOL:TM IF++wy!B5۪W+4Pn;n }hf#h1lc\iz5~zotA7F _*r(r&ڳxXTU]yPphFAav6ճ?N,nMp4KW?'FTijYstdj.z-d[N^ "K%uZ[o%RjQ?qيKyuY\u&~A (YMQDYF@Cɍ"ky0LOO+bחEf.6 E[/\igVab-yrMg-ѬKbG]g'oL\6X 잌@e@uzB ޝuI,GP9[4H! F,#νpX4R*G-iZ冊#K [VS2e5E^kd z:_B->USўOKAH8 i\]5h~H|:i|5A34s. W5Xo0vg$7?-X( FK;q4}`$VlQyFK2S=DZI{WNK&TX, "8-Z~ؖW(\vooOZi~,9Iٳ|ni)c]U[9^,LVKn.JWot**[z]秦`oܹs9?:i4@"M/ !UANgtbzB}4پ5&F$ Rg juSvZ ^o(VpVuR񦦂ZCsYˠ />6 *ױM!]5%Ouqb˕\@ '&w"z߀W+Jl<@π(H W߬_9/>^='")剐LwaljVh^J"NW"1gӧ*Ne{O+ !ط1cv)Ю\C׿7nܐh]fr= ʠ9N~nsҸӜt iCZtʷ]czY» GvY.Nqf`mrr'1?˗p N?ox3)לN&r7W??[ go &''0җ!*[Wp \MZs8Lfkqe+6/J).LT(urMq]碯s}uuiW|+6:ˮx,E˃N> $fB?¦z' N͛7) dVsEv@fRlnPSEti.kdvda C.H'J:"zI}=Jnqڝ,s <::tg="9:;wn߾QYYJ :@2;;9c=%\7OpT.B+6-Y35lH ,ƪ90GFe \zU^Wyᇟ{9E`'8sAtP xvޑQaEn+|@Z@/=/u:ٻ&)`,+ɥ>`3_ &: 5EX2d.\ . 2yP_[[\~N[`zS6 nn0."+wl\'>\_\+ .D pFd= %ݽ=+&42<\trLn)~_[1l9ʵ p-Pfs~B Eŧzg^*x[.'tɟe.%r99sz)B0V^Q`ݮ9w7jH N{Nv-;x?ZXs`$2v(8{s&rmz'E}+%G@.< WI;;;2 lCQQ<}#/X,4M/[CbԪ2 鴃%(fzΡ)I  Z Lg\ZZ:T ʰ^)G=shsr/y&.__@,)櫰\}+~⊼䨦Ȧ U~6!773k@677eGRkQP, :?)u)upX7NH lçcOLLsfk@>KK1T(;z*>ooosh8uڝÃn'Uvtd$Z~,(A JP$G=^YM 4\/{xM%(A JP"l$uq˽l˝GQ3PaccC,\P_Ϲ_i/(.U~5twwnDCV3W~)1T^󖰚{M̷~V ¬fP~2unZ{[]fqݽ9[1k}=IT,~W}w.Dwrt:%9R+~Z!a"q]"_AnuVGl.hp\f)µO%(A JP͢c?O*~N4ׄ`nrKTRٷvQJ0sիWyJbd9d $/wsoO@\(@pX^\SQfI5@4~+6f~Oe'`&OqNPUYK9su L]kŔ˔O:oq̚Ğ bmeR7֕{kČ~ 4g}VA^='jVn m*Z`ߋ/Fw+<%ٵ \Izlc':>ʀN`hTr~r^ieL 9)Q (0 Zp+3a C ʺ$cLҤ* FUrˀ7-ven4J1jqp$2{=fڗ iPܻ|y9uz xN7J"Ic/ψA<-ԕ|Đϸ(XOPqp"urtJ[3[cIiV. I-53ݸ}4͊&zJS|V%C};reƯTm3r"PҵiZ'G&&vc[}U )#tbՖd{/..jf MDrk"g2T2U.jp\Y.Q >'cpE\pT\ FHkR(~IQ3Y>K,Tu\ށ^8Y[[S+:i60b.I䰿/;S`WJ5#@bRLe'WRBљ0@FL8He\,sr7]Rªsbʩ]7ȩ޽g;Ȅk{cf3m #HR"u7`%(A ʽYbf Cqsbr2'/OrcLl"۷#rR6KqIU+ͶGZg#^W|BlK,O7Jb.{{e&A^Fs1Ǘ+krXgq[BG<33øEvf  -vi]2 -D(+Zǧx֏S”%LΝ;ŋ4!orq5D7lg8PKe{ ]r9I;66~TvKPܛ%䅊 ;ms#0R[K:C)w-[k7t (-MƝK-$Vs{GGalii (RXV:CY)Hd&9bJbe /oQ(кR *"{=VUYWLx \^p puwa(^rp5ZR *;8fNJԥ|%g1^ʿMswh|l_#RY>57ёn[՝Wg7 `%(A ʽ\}s(ON7 | \vrV6{δ4&4R2 6B=~0v)y\derr[R+x9(e򅓙`UV4Vjja3?3o|݂Bʠg Gt%DYO:X똵;cyeqwU4ǀe&q)Q%G]RRpPME1 w}'S.19xg@]+b.Tt^Ih!}z8풊Sho_&rr4Ύ}8t@#[E (uDܹsgiqkkYYY$fVˬF<O$FәySνX|˷Wew~;?s;<(A +(=Z$lIbu7,0*IN3?P3[OSx"u࢙T>$8ES?aR;G¡ |vvvbbBvű QMA靜nvS$z‡%>s?l%b4/lDVg~.v9#c7ʕ+|B0Nć,@-jI^rxk:pH&de2Ypdp\>5_w?W~g>O|JPJ( Z$b8Os<\fG<dtORP~a U,Ϗu`\e0UnlsYEWvWIP's5::9Fi=dU un 97J8@ ^͢ 3>V >-Zx/)?4#̙3JPJr+ױxJuU v8tQRnlNϊ$"PٝmEHY!PGY>%u8%yn%uWs~N9+b栟:&ͺD]YgfffbWTe/s?뫰:!-1a E,IbAgphH@B9 ůӺ]iO)&DDt ȭ,pyuu;(ϑ_E}`jOg֤>O>?_ǃ0vAy%k{5ЌŌ Vk~~ؒ,.. `%{o#Q m".8$qҲ[@Dsssp<tr{`2Υ]AT51ыf]|ǁLH~GQ`8+,G00P4>Ӑ&4>˕|XayD3&T(:ze͛7D.jK,/?Sl;YYY.^ގ r(R14:,r6ADEy 1eGʍEqjL(/p½uoyk_m0}߽oz{{6'Z̓ëW'KmN4tA Wc7nwws7nlwM;:*<ܕ,הF\pJ #'FyrrR`Yң"92.SR3MeKr-//+;#&R^j ੖gAPA|TTo58 ׹. V$猭,V\AW5g{٣y[AEeJ!TN7q^X*y DS?HJ/|0' KCA_)d۫T^t({Q{TfrٯxX1e kyw[?^2nf/K/{_OMN{A۠ܣ%ǢH`>ƙXehes`lfQc`9`eB%rFڒ|Su9q~K p +'RP-64&'A_)J[nf _hmy%rRu080r2ʓq ҢImLK2ۇݻGWWW.?^dd.>Rs2wg_wfP2ay4VK3KgXk{Dplnn$H om,/}q}fELmL]Bdʿ X*G<_.O)[4%to`mYa$ù h!H;{lb.6LK /-e. RTrٲY(@%M"ʬORhe@QUVBo, T "曛ច=i=2ozt]%]B5\ºQ)f&DrɤE%Q5q]vO<\ 'ǡ8 I>?fwwwZv5" ߑ>-N\ M ^R>w+0%V v-\Xu+ ƒAqLP2vx^9wZFbN( N`WWxBY$M^6bJ*9_I *j)h}seu. nyJ Nj*ⅶO?%Do8U*Au+9|OSlG)Se(066 !k5A\jp" +i%2A+p%/KBxI>_f43 J>cDŽ 9+N46!dVM[ah(v)+?S??/|3;8A|×~Wo4cj=GK4@y 66778,~bQ骏% U86RHsEL渲*6h!ewXrߒ4쩘N+F D4cBnp q=<"e|g "B9`[v%/Ȫ@q2]X%+T2==Ms̼2pCօܓ oP'3'#I"P8J&%~vYؽƹ r[ʣ>2~?7կ~5#  <(A +B󣽮G͑׋NLLp&ʍvvwwd.r>\Օ%Ea^p1rKgI5ܬpE(3$PWnZh`pl #qiOC{d~~ɕz%Uy׫֊St\*GٹnKي.3._UCZHie.l9 \rq@Km+%u$iZXE'`@O i!ALn$wQV~Ԇ"QPVYuE8)`ɯRfKgŚKOu1܍FS`{'Qd=OEybҫ;|qrt)/WΝ;`^S<>77_,LPk;2n7%zA JPra,"O? '3[=W$dg&Trז< s}yddX ]XON[wzJKB.Wr+F`K.%mԩJ䧮t /R1^=RWS8{EP9Ն&ip;NO )IS:kaTRZ|'+.ݿm7npYV< k>Q 9r _Jދah2Fh@9 BtPܫ./{Pest&* d&/[ "\qL{<== kXp-%sZaɤqjKa( p& a~J*wsիWr+ (?Vٔ.⼩W63YAe561>kN!$f"dm௧{'k?I/* lnnBC0J>V D?11wMTC >нZknr]XSwDjvKPܛŔ~TxHhhKJ, C*^ߦs>LfS^%"-WIRhBc:l 3u?rTqtϟW3T<y&?EpK/Gi~Q('ٳg!;upQe|=@Qr% /X+MԱr*l4z=)Ύ22j:&֖yXtZmл9ջL6 [ZZ~Ƞ:ыfۑd|cy[)5*Φo˅m{' K "#8Sl`DQRH+QvY *l)w¼Uߕ333+êB]i4 GwrSX79ңN=sssj@=w\>) }tgSWs]rEsK~i& 'x?݋H()h.}ƻ;PS|`t1.¼.LG.L?!P OٳKo}zVp%(A.x,LlWRic>xjn^q6[ɶe.+h;^7%: rWJ("-I@eإܠ"AJb1 .(mC֖P\C ˪Nk|񯮮JϕUW˕S'J@4'3xȍzJ8M@CUX\@;(^ć,_nHv.mFHԡz4 qջw+H'3^LtW@|F$eћ=))뽄Cz6l.͈z'FqP]S7.Q\iӹU~Z~߰Jcy[q'0# wR5dw $… lcs[B>wxm r:Y"r ,:lK ;>d3(9ץ J^iX *u ༙u-t+tF^|2ϝ>u]2΋BiH;2wКr8݂֞!j/Z?2DgHPfgHbC܌,X[-\R||c pP(6 hl4sP<l$ ={Hvխ[q@hQ˗^#N9 e(+zph  vv#Йq kF7ь "q 0-&L0qBU5&hmyz89G58( FԟP\R5ŀfǏ0t$ 2A1\5FgAґz+Z[YAk(K:Z.H6FhGhMVC.jj怯HMJ!QQQP ~ b@q(]0J"F ')) M@-`CI#H4H,8}h2DA8ےe͘0*&L0q }5ePDDr'B Y<%r@(74FTDEJ 7b;1@EHYDb)@fh9 w ne` Є0؎n$<<|kރ`d0 Z/"!0MeؑoKP6X\P܃ &L !ˊa+.j J]P)6x$ w¿h8 KD9yhиhCS .gՃ搟fQL 6Q; @a"Qf34c(-|Evh,ũVͬ_t)==unPCQ\QD}Q$)ljhZ Ƞ9$XA)Ф:[Њs0t!Et ŮvaP GuM<4HW S-v5/? u`|n5\5^\_n„ "/4jX=^ IEED#54 >" t*l9<@a=ܓ|P {Ds(`.@HH4h;," "ע @yҀVf?^ xvH1 E(.OIIA7Z6Rk4Y|y6~q8GZu8 hG/\2ҡ!n4* <4nkvT9lG TQ5h:e[)\Ԯs o@ b.3 wV{8?gIxI cc5kL&LIdD"`((hEu5iX4 rpj#GK{Ca_\Mf7jrΞ= ./x~@XQТic؎l9r ER(J:]\آ745L q*Ft("H9rG3heyG uZOB(CE4 ISZ*%$)(RVӧOŊBV̉T=DfeV8mJ:+z9 G;gee#-~U+ Ť<= t_0#T FvGLL9Tpnws~ In^k)T ͅ =H}4&8pShc#ʂ{̂af^x@I{|>LSSSNtITMg3 a8Z3 ^lѢСCnjf4&L7@1ǃ6G b߀`ߙ3g]ZhUaчj,B(Q&EYd]ѧlV Jbb|ꢵd  L "MQH|K/j,QS3aaAvV II-jq"4hJu;nl=&$Td?oJ 1AhLSx1UW *Kaݑ%5wyl%v&8N#4hUOy h2<؎Z?`h^Nt=&-ԬѤŃ].2+0莠 CJ|~9#qW1AN.6: O^2\6L D^7,(}a e0c(}z1)`gR tp,NrLP+?;˝[;a ^$r E`oĢҜ5nEMĄ2.+"2kׯ.%ի׬Y brj+{HcDin9TPVa$~SO RZYU!>1x1}+#ѹP'$u"g`S5JE 言oYAK*&z+b^>~"snV0!}0a<β.r5<00 Zh}k222Zh  %Ǻ=P,yCf6̱Oߙ$s|g/Kdq$1zb+tB3BLx+zXxĪ/_rjGp9W%_PvQw Z'! x4$f0QVqqqa@!)]H\%Vet\anյY#?}4p=?mu4=nPW#>@mo<|pǍ&֍>`O{\9W{ At2̚W(Θݡ)_sJJJ VY=,6]X47&w\pFrj~Z&vTh#rVUQNM0aR1RqmY׮^*UtHr2G*4(YHJjE1&ꐘ=L-''-moiژ㇌c튧'=`Ͽeg޻ʓ-vgE/Kߤx{쪩}V~{.?{a#Nή卬Ysҗv/OnS~<>;ٕV>I9]W)\Q3 &L wEjFFFoիW<~AU@wDTΟ?4V*ZL?j;s$Q̑*4O9xbJlEQcƒ^s/&&^īԏsfNxRVrnh Npʅ ^Jx=>6>QfaШmzϱJMf~e[:ݿiqg-߃J! tvK*"#0a= Tաg0وoكC5HJj f~0!!!%5EQuiOVre]{:xh#c?ꨱfKkڡK(u~!r ou45%}CX T3ƽ22zHK`e h/Un3+rаzcmPKEUb1/ 'Nܲez%$ dv&LQcj+XߋE V+'~ B 9R EiB{T5ї&1&0JP~ Ikտ&nAEЌ& u؜.,y[^ǜ $y)q)*j\n„{(KGR<,b28 W\.Dm )\i^\F$t)d#@KE+VVdv\Loز(⎙>?ƌ;xp:hVpsބ AwJjuۮj D3Nfp <?Epu0EJ57d1omh%@eSX4pq;6t|өmg„Еy<^U%N=6rTfffDDvS~A׬YS!M/M2&LOLD)_'H"<<"((XWuXQU%EDfܐ:1a„ +t6AsrrH9,qgXE6"M0a„*&~XvhPE?>lVQ<^$ɂ tn&MjӦ́0aDUzbi,K2 _TLO9jX.\&LEl۶m̙۷oOOO7[Ä e#؛Ktǣ,ݥIbgIOI>Q1GMyEs/ܹ333#7; $#4hPn4 gMJؾyˮ?al'hԀ1/r;9677Om(ܾeb+رyԫck֨1oJ⠏2A廼 zG}XrEIѯ{%y%WZ#GV&5FEEʸr a۶nt[ "a~ a7~'._|t3OnL ZzG,r ^[hߗ{Y,ŋ`Bϗ^9{ZsmJw& 5NKՎuc^M'~)444';S\JAA&%`XTݻX\)NT5Y>7a|c X<1ԫsf<ظJ .=gĉϝ=Uׯ$7nXWreI *%Xf͛oim0bӯΝ\>FG7E]vx [Ν <|r9|(۷,Xqq,ݻG[6nDO6oXBUݺup:ZϞI5}ШS;aڭ{:U5zС]߾}*~i{l~cBBZ#0j˲Ί罔kZ3~]Jݻ޻v񃟫̙Uj޲/i4&|2oJ\ᇛ>Y.c&G25byF]?]V+eÖҙ<͚ƌ'P\{v{g_c;ѱ h~1l Aڱc{`gfff8lݺU:VhܸѦM0ﯽ:$--J[F~ф\QU_t8pUU(`tۭ'PXT"ujh`gh8τ3u|c8/ҹ:_](I /Tޕ:{B܃|/_f`D~Yiڦ3 󸕆ĕ@3ֵk5 3Y2.o;ٵk MU,4k'ݮIRxN`T 0ڻ~CU>DZ-lU5띿[ꛯ_)x{-zm4ˮ8z{= h7|c> 2Chb{m4c괷>8ah6o:9E:t?fUwMDN]۶ۇ=$0,նm;=}駝WC NǻYVVML\nW|EVRmכyS4e˷WT祋'^纣=z<駟 22K8**AP"I}Ŏ,W.k`v60p;" G_p~a 5kќEK8N^^ ^z"4<+`~ͪnY` t1|^,kN};k|>S6|ǎcccͦO,QdsǠBΓ'͚Kzӧ>€vrs|3;{UZeÆ/‚'viWp?<'~X%kyy.-[C[ࡀ睓΂/zB?X{K<ܼ322{N;!'7_s]T'X7cF}=a?:zx͚L04Pv >Mhh(UUKR8d#CoPF\GN_AvMtQ%jKYlNMS0{ c}HX1@U T=Hs_s6l0ឆ$zzp,$y4#x5M @K1/f͜xGڴ~q\˟6ubXx,5ӡS&>Z:p76o8laPPlm0LѺPD0AA ͦ,˰n:5ZL>]pzV~qHH0,I,:+IpF#02*RE8vÆMUVywѲU?R|9eA_pY$A=]5++ܹs4BKegg"N t 8W'_ZѼ^-Q l^M-J׊Ut&0Qb&M&M;ɲ ,пة>@"bfIEFTIv1g=v}DQw6lb!o"}m-S:Wl֒'_.>41ᬨ$A Sg~<(Gaׯ9jر}ѕ?qk$eyw$W._[\p/.3|Ę:u3,{|Ҵ)BTb,>H$3@˭ӧB];pH2Ow?'N t׭S 7w7y#X?mڴ~]!8|q^ѣkZ5ng3pϞ}NVyV:H-a]F~/`@ӈ~QOF~Adǁ;dlXev1(Knڠܿu^xˍ? ׆Tqr$9Ν=Z-~-6Zl9x\/=nCg%>HigV'*_U'O8#oj{ХKLv(?ϗϻ,~o%~Y,g̽BSdhKBIcu:r Կv`, ٳmLJشiEkH|R٬FJߗ_:{ ]qc%QZ;ԧ$g,#oЛeegKQ.&6ߕ^Eo ovCͫZ!yVg>)=JYk"h4>ZLӧO׬Yp,6E\ O=X~]`gX*0 PxTWY(_[IErշf]C纏_Ro-6yFRe]o~`Cw]W+ZS+&q K~5>ɍ37Y-6{wbƤJ=ek(6̆v{-@Lb&FP uA@qb7ntDu$IxӇioZuٝ%**>:5?&3+nN\CO7lNOCʈ kddrן8qrڵ驢שS;j5U,+@$il R|f;~On2yLnqAO]qDe8br;zz>T"3[*>nG`eAIhP0{ E+lJj 6aĽUT80jzZ +|Mˍ_OYMI# 7Wm۲DXǿeoB$r&L$CSC}CZ1@2TymejEݬD&RZlV C,Ksւ<$T7á8VEQ4N񃃯]f,HJF, 4P ,C˲2Ĝ ?޲^g2BVdO'ҫ7{rp}4CA ,CQ$B}L}m?NQ4CFWiܺIݛZU]5_{yXgVSfXܵdݞza\ rF݂)C`8p޾#Sliw'ϝ}s)7OzmIY*Ąkܹ9b4^-OWl/^8asS~nw@sl߭C_=ma?XF0kCa O^T&)nۏ?7o~nXQT,M4jc}tU\nDNJQ Zu}}9ch:> >e(u]:us֮9kRV8nڢKNFIp͜a%c8{>P{Mc:|ae޵Sל~>[~׋\A2w1-b jӓ`6g?^>;dS&n^/wmHo=_nK5kԫ_^~ea$P1xfNd0Q`ĺ{nGz-6}}<S*dϋuyy O׫ 2f~J ~4jW^iQZ5ڤ_ʁY;OiYI< UL8Wo= !/Z1֨]^ZCAXR~(^>Qs ?C`TK*K u=Q#o Ng?u^׽>e)zc7JfHbr ЪZpƴy |jgW3Vj߸Urjбz]0䑄iU _v| f!p݉sSih:*|{MwL.mM 6&0%\ ,e)ÜP{uᆬn=s: g;fgR~``x|>Wpxn "K#vI(_a%G[&Z)Lh*[klÈ 6L;~4 *x8gךYVaͺL߻]AK0B@Lm"[C7mhc})"~XSݺF.=v1+O6 3gXtyC:omyZZӧsrrϝqrl[_{us 0~Gma$r&O.'p$]~Vؽ@C p:kqq|h5#18ck.x㇛~AVnYTlo-IVf^E߱OKIяj^7/0.E S \(뜃'ބEXO~0.oDlla c]Qo~ׯ۷o?It %[Hs xIX'I&^/w &Y_cq|`fv ",a]Qj sB4aI7,[E8 Tq7l*$"&x{1nj 4\.]wUUK!Hq^VF T0lDt́EQӉ+(X| #ہTF`Y?ȶLa")+-6l,r;M*gYz]'k8N]O>ahhaԨQ^&LI.S^ 8TQ ޺fO*kC()#\Xw)D`'z{rٙń&F50qK+cԹc݌oDfƕ'O_`?Z{xQS&Lc| zzktt4KHQ\^nnL(gu~՗O\X1V$H\_.7mg$s݅&L/!IrditEj%TUյ"q㳲@YsY Mc Ώ>}2A? G^&LܩJnH\v}\(՜y=xR u7( -$Ir80c5x8h/NF'n0h=)Y~])N|5l]\L:c,3ax:ma8 ᢀSNND6hJj/3%~ #U/j$EM򅅇ŲJMJ-geMe IY8PdI#H {sDv _Nm^z IQ'KUF2Fbٶg#ny 7c67athȲLR4ZZNGFFV^N:ժT )8P?j).ZY3rқ[G[:c } Z8 Ӗi uY2v۹uMYVN!egpQ2N2B30h'hɽl?\?6qoynnիWn).]ZJJ+tySn32PbX8f 0aqy`@b1qtBEDDdffz^ϨR3NPvFkx+X9YbD,-cBkU4ca Erd;쒗 YXQBn6XNqOIp4~t, arxAe>;XP5Sg8+MSHq ܶ Y8BT$I*^}A_EYϒ(*f}u=._Ŋl F 8Fji]waA5*pvo@CU1r&L9fZIҳR$+z>}u֕+W^(,{l7}rV^AAkFjDwoxtg_1ߙߦ-Zz%_jUx'%;gU8uۃ+<}kcm CҦU?q^س5.,Ej¯T0y|Ỵ=k[l!}06Pww]tJfЦaix԰֭|͛{`_ݺӎ޶r˴Z1i}o,~R~Q'4[cm;D(~snՁi-]}w//>XCv<7k0פ0aAQQ8p>E mvv$),Ke$}~gңUXV`,ũ^ॆrޒw@MKg?szjaƽP$:ziSC_%mz4g-ϯ}uޞL3ՃǾۨIƱ7{\>N ׾W_w7Ma~;~dח'~;eJ/J5, ݞ9|6N xRw5tAv{<3ܾjμ6fuÇ{e'ZY1;fܰ|I&LcD)33v#f\^OX,0\KDѦfoұ结$^>tqCѤOjF{e. OMtZ@9R"-)v5m;.n>NJ9MYY|îfzU59zfK'$]|!Eg[6*&I*6b8cnZ#pRrrmoP)|v3FzͻW|qwU \Omظ~/v\h3ilx1#t >|ovq!UZ1t{M./0 ́^~aaz鑛0a*6 H vG|>q\``j5>\xK?|mIJ/y{oz YuoUdd¨s8%r"ܴ ͧ8x_Tmր81^P!'WFkd}Y8BC__&jMTƒ {]J=ڋW]4Mf{RR~صpraa;>C߼w55BOɻY/L(mF|`4?V1q/a~sVYG_TKe<keI3ĩ,0M"7aA,Z8kB40xMO-Mzރ?Ԩ~f|1b[tG#UP@>A~⥱7>p1rs?;ߚh "4U̱>=r ,, 1PW&8tsծW5}`ݛ֜&իOj) f]כ\Ū1X"{ _`ӇNadɣv+M+;#c1 h[Sr~[0hАk7ck_\ʒiL)n„ &M\n$ޮ A C[X&23y(EG+e*8M3*KJ&z7;M14)(K}^A8q"dI kaW_9!Hj6U_=PF2Prqb Z4 ~)aNPQBe}ըtt݌JOξj\:C8Wɽg>P~8 G(Q>G~SzS1(fӧk֬ V#FժUN1bDrnޛ| v֭Ԯrq4yʌ_~]JӦM#ѧ˯>>.ᗗ$˗̚| 8^ەo͜jՇs0/*Mo̼+ѣ; $vCO핟>{]W1Ҕ89˃ @qEa :o.2Y 'qLeAXHBlQH2ІR^P" o߾}K,>|x5j?~͚5ofs?^z,=E~|j*M"7a0pAv(*'Nsg; Artrk_(|)"//aw3ԩD) 5Y.^xe rPj?jf#Q$&S1a j„ +'ƜI)s2%##nܞ:z2Քhlmw T8}+ e=7oިQ0MVK=,|ݹ h?I( x4S|oD˖-_z饱cN0㠠+V/ݺԴ*_|~}ZT<'T?1 Ϛ/l|>ٸ>!.IE>B黛0aIQ!Ȓ 0. ]鱇¬mP~,DQrh=JWF]!.G|M62d+W\zu߾} گπq'߿vV+DN8m \oqlOM͝=?q8lҹ &4Ǯ_~ 8ң(}@ ovNH_ 4z:::n.7 %l*#l2x\`]r%))={_7nXˑ|>G,OiPKF`X–-_7sͺ`;gu7^ ;=o„ ce  :fWȼUSh_o]/U>d׷h/`B1~ HWVϖo\-IOVKHܺPnkTAk o!洺 &??SLph+sܒ(RLei; /ߤaF.]F1hР:u̜93!!!""k֬O<ѤI'ݻ.2`mi- OX?EBmV٬s$YVn6}p3>΄ 8p8-$Ʉ]ϲB$mv; 9J,4t;VB-Rٿt-r^u:==wKnLg:t#Sխ3O^ѯwq?qۏCg퉝:w~ikgk̙5{px$Z8Fo,X8 mGުgV)}}ׯ_yD>w+ޞ1cMxZk;>=瓟4o⾯{v~SMS}&ԹӠI9+{9}رcǏsθ8oر8o@7//_7_N}z ^_o" *}sv^/@] &np4e#E1==M47$i8JZ Cݽۭ W-eOD&ڵf17u[bV%WlÆM1:cz=p┋"B#ߜ:wfnK~u5\\k6zdY9Z ̺]KfIK9}pS`;e}cO7yZ_9jX&,anf^ӇssR~ڵoE=͟4qkM .xpEp!#hꌩ/-vYFm{}{׮]gذah9ҥKGƌecƌ~mӦMDߣZ,zw>-Y`}~즕x>~+Ö-[%yhvI&L  >HjR?!Zz1VdӪׯByW| GMdvܥ?zD$HQ0%3X݄  "`'*W\R%ժ(JdDDHH$I H䅊tS=|RGGkSzifrcCR892tTcoY9v};U;͟9 ?Oh ˻rA9t%aOp`'}Ѧ nEOgbemۗ^taCiҲ~O>Y5gW7vsK}aތ1CW 7˦h*zK׬b%I#I{󼹂܄ ScLxtttlؠ`}=%55---55… N@bW+Vz)prI7KV; d> rǽW ڲqFvoڰ$E;^~X}9zkevNYgҜ}.0LȻiclwyJkCvF.BPPjgo0^,ɥǞS>tmO1[PPW?YLiCif-Oφzm'2]6[s2nF4e>􄔜=WMܔ|ektɴ<2a"Os{ IU]U]չ{zrڙٜ`I  HxS@(((UD|*>fL $6qrB.u[U}O*5}Z"&N$񮮮RucƢ]̏6<_N~;ij1?>_&=&UXV'D+>}W~⇦ehV㜵b]o_q;?b+ {Nx;~{`%~{%xC/y{{a*8lr;=Yqk:\rP@!3hզ%'vtt0 ]FG_~2-B!]yZHixEH,K&x{ۖy^a|eX:5ŻO8l 9fE ]/5JJ}fƞ1[5f֭[~a".{w^zW}cW?߲隤zb-/{G>Ύ9N|?1:.4<~替UM씋>G޷>~V08~Sm?[@E=| E$B!mvđ0\+O80ŽK3zgg'֡aHt2Juid}&P\Ap;~7fW5}{+fge'| EwTZ|/vrq`Orߝ7+*V.wCאY OoTd럾8t~_{\Cc?dբ[@˅&fs9|s]'2 RScCT|)˗s<%r#{a_@gQOh`{ΗK<7)hOvO̲l6G,٬c[32300w{ (ۭ蘾fnL4 l w٧RIkײmsU^L"t.*f GFFyx_)q_q׾~9o9sJ* (}DNB@/f$GGGJD`8n$X HHW_}=xѰߐ/|W#oeZ:P@;J Z$ԔR1JZ&,fDRTk (]Mh7G[0Vլ\xy?/a (AP(/p_I$bQwP(m"| (]S,bCɉD$<Ӣ\,LĶ]nkn"³x|||rb"͛%ƪR]D2@((]CF8鍟9щuv+SE?!xYgP@¢8 X*HTHpx$W Hxe-2 qِk_RDw~]}%+dwLZ.Y75W8)K_@X ( E&N]`J" pH$TMJbq E#Ɔ !]_9{R`&qB5i傉f{@L qVm++B]׍xnrbu˖p{WuVy[ ]*?8 (mD%3L\-d\+JH$CG;::riTz>!=4-D$3D^=#Y_U DY501}}E B]t(+Ί++5M5_vB9\DoٷJc=l\ɲ4Z* 'xbPVF0 E`Е:= =+r=ic_,Wh NMSJb؂Re`=Tْ CZ}]3PMDgyh4Ap+w犣 jоI@ 2kRi#& tP*D¯D #T*Wf)gLNNaOUKQCC}oo6e@ؚCZ[[/b1_PE'G5ϧ5SIz˻FsKmCpx,؈|v* t96KQU  ơ2-T`nڑH/L$)&DPH4e;DSsK]}3J @G7m۶ZxѼul.;f&d$nEH,qB.6b0٩IA%*X""+v,QBu*[P˥tHFcxN~4N`|hٕ9^f:6: P0`;\ 5Lal5qȿ55BQX"/ɔ!80k\Qi3*/֛G6\4$ (@ط7mѱ`Mh =h|AWGǧ1*jѲE ZʪT*][od١pԈD0u,lQ#@;$>x]}]GǼ\A˫hhr@OkC؉4_W\U(B0&oUr._JKtccC k.oB>Ba`_8KkfŽL]cvjTvPCSH7ڎ `AR5uX"*x)*BWi"2* ȯHɴF$Z EпLOI[HfVC82@V/``H,A\(ZXkz˖M-7,Zݣ&T_(UhqaSSh\,KBͿWI3 [nT5 LTN ҼfcsK^[`ihj^pQ Xxɔp| W[O$.onD#WP[[[m]$.c # 0F(d=ϩ)B ngy>_șpz#Q ݢR7H Ú+h/ r9mۺz衡!Cx*;ڻ چ C x͛xGyĄpt}jj +2T#:|eAF~|WDw=\KUDԺD's]<'*3Kf2T[Y\T}Ch<<4-1u= + t,j5!".`Y"cCWDBVYE{Nt׋٩<~#[(ᦰbZw*APb*I?vJ@YH>>.FL9 1K%W:~,oFיvlMA: &־~I2Dch/6t `2M v^ǹ;p=[Os (z.";w.!ZW@0 OqU殲 p]=`33D(%¡s|E' @ FGGq!L(Bß A&SM wβhZ!p2B2kLID%dJҳmָ#/c2xc`t7%;]Ќ]'*3sǐc5 X8S\"@@aXI4@?8! !=]Y*Dqm"S4Us ȲKD}C=/)]{r똯>ؚL딃*z>c$mv쾾>`9 +ҰOLL` 0ȁF A4GÜ&''Yўb̑2SȻ˗/ 1Y,Xa4"=MSe̕& @*[3ioDܥ"M#1u }J'dj^^1w\'L%1+0hÀ?!^KG +\ Ub}kǡ/ߕvl.( }e:OZY[`0Q.Jss ۲es:d\`/yqUS[Z{{ n'6:JœahP@='i G D48FnM(l`3ZPY,. XAv[:;;:̌+8%\l6/`ܹ+lՊQ4*8qrn]i&1Nŵ@{ Rdx(lv +#2 &B^|ŋ[ZZe^aq@8BKǯ c.YS4d07 |)G%4I^8} ?` C^A" y4  yUD;665b)p gttHiႅmmCCߢHQv{ h#Ov]CӲe&[[[i͟/r_IRDxqKPX$|=hqKC:Ec]1D)"{TS>D4 ԟv~0m>]Q)@@vj Beƍ%>V`}}b`4F, 2 A=$j`""K26*{Yql*dV7ETi~x^!˂#C : c^Q=CHmmSSىqiJbl|6 (=T.=!!Cnmj4+ayJB&s*]{=n8"|\6አc7o %㦸[me ވnw6= I+Q]exn]]]tN}cc#0x||bxx;YLX('!aŨct"a`)R5\ eq&$1T@ B!ВѡkLVidd@,9d:rWf܌ ]Cl˛NC1j"MͿe}^ϙ3Yj 'pM7awjv%vm? (p@hk"6Lc=F=65̀ 잀+ 4#®JPV[ ux|b)Dp-$ːؼy3HL@l Qע74uSMqx ffNa~j<\n۶nh8EC;\V 8k8"k3b`tct絺L2m ky꽩Q9ј.4A}FlY9l/aZzH,h"s_kO{V\9ڵks=O~>BӕjqN-DJ fdN$DMOYFnƉtfK`"(!YG B3|V*oC?4 SU3 ,]Mh'뀿`TˠjKcd8Lb q!ٜԟ[Kt짖i38ʈ sN1$;U?ҢAKa[ne2*b&F6 » w '&|&M,X= jhCCڀ' KL!ZVı_L2as q娣/}PLE6H-]6%]hc&>Qb{+:}[fXHh,0H "O/T 3iSO[>aO_Xy;' ~渄Q1`0A.s0|LJxa.9"13 }܂|tY@?LC>qL`dքl6˙iLsrc T2jYL:ln_%\9q zu7D#FeG?on,gŀ (˥+;Q& 0ϘaQXYS\)TižO+9iVI]#qWu臾c .|W(I S GDu<.zK7E˾>t=P8+Jhzqqn걱JST'ik@W1q&1E &UBc05a'Xs uڵkq9xJ, vtBҥd0Ɋ'JH{2zN.:R5C{|5/| bYGk,s'!gcP@]Ti[P@VJVEIi8le9R$@Hpc8ӎ'RzfJ5\\߼y3G\wm436zz1U401iL ü*ёd2Ŭ/^L~=fcDNVjpIp/ {Ow\ LF]8,2y#:aɔԫwa,i=[ƬS]І- Ru -=?4)=^5=?ON;W>w򪫮6x;~_:pp4(;yG[2R7 Q7I(}N4WF,HB`,X|bxr2}h_Q[g|_-1)MUfo܌[w bKj TY>3=RiŘ< z-9766P6p<c@9g$󑡒&j"5z%2Ewm)1sNUgq!*SɁCxEf{Æ føFE5FTPNQQ3!]}>P̮Y vjMNےDUcUu1mԑG \wxUYqG"IJ5w-V:Vо"{^VDB%rO=\ ER&p=𵥥urr24.WvB2B$@bE3k0;Bd<#@)*&xMw"ROnB֤3<} cƄ!ہks̯NXX3[I =B2sL CK566 g~c 9s1hl3Adhz3'gGF:gB_Epnt##LkN 6{Bo , [ƝH6mZ|9}ꗬ-[~/_{)>EcOjzDOR:>zѩ)2= hhhD&30$QmٲE!׳Z3x1= #ET7O55̒F_wF|8ʸ@vLLhj9*kNL S@Q##OtQ1Gp;Ś4 > kɱd;(rsEax_\kQ[T*0 g)S hb Alt"32ѝc?89< "/,q0!u!g V-u f3j3%f[dYKJ!&B->c"zF˼YFQe8XJظә=3uttř8'2=;`k^MjJMNN30H`(STDxP iR߾'+Wk~|~_D{oWWw}/ڣ>[? h_ *w5զeک(N1b*5LBNTkVZ2(!0Ec ĢvQv %80 ̩R"5ÊVbRzZYӘOil b}hhhhm6,˒R!OV`ܹ4C`Tk֬]>UufgpUDc:i4˞bO?4C%VGmoo;Cp-!/}ɒ%ITG+BCUA3ZG0_&oUdJdDXL GE>->~MxNCxSƓSqF8$rm,yѥ7~:?h)M+g[xm+/ZEiKP@{6 V7 `IR<-[@Ĝ/idd"LJƴ+R^ZVXQ;65DAe Js]]g4Pbk… f|yջ]1qYImkK 3mjBL5 V(a!JX-:::p5ktwo / 񢁟yasΜaVbW\"T$+r^|r4Up_ Oєĺ1I. B"2E14[a%(cx$^9Mx \:pVX OUv}jY*G7xh?{-ڧO>Ľã|l7kԙrQԯTlX>&.T,EYY3pP 2 mL2QIev7%Kt|y;0 tO~VvIn1~ 7B3ƕU=qMEL"`L3 H{ƹ13PcO_tz @*},W!Q&<FOP1NE=x/Jj$q%(P@{9 *4=_4$V} `vqrp)!3h9 e*7Ա)>3ZbFpQ2^%Qzn[lp衇677CL U=}ўA c(K\G˪S3|Kf܇---8B6!uֱЋ8 dS5â=Z'S訦A`Xsg r-Bj,S)5w]2ˎkk9qMp<-#&#˹;f78?pVET(/8\yK"&lzSObB<(7O*hFvޗ>}^CM^QˮǙx?j;-^pw;33zyk*e-/^T+CC+%K%p(*Hli`'-|RĤ K07;9 L짔:&ʗU>1-9`0 YHݟiUho`q Ј~s9sB3.I';z".Z ,o]Ci: 48Ʌ0|zq3Ütʌa'oAp#mlV twwڵk_EcbH".r( i=M&bR;2lIXG]"{:u7K`AU}u'mŏPAHj7/L A0?ɹ N[}#>ږZmxׅRy4pZ=!_@/o"Y*DSL#{ HdȠ9L-]7yqVaqSЋ0ƴ@bV)W|ꩧp +V̙3ްa Z6ncMƦ&&b~4 DHҴ=(`w L&,-ZF(tgU쇂;1GX1n:22TB0. ®.|^@y pIdPS{䓨Tgjw*Ҏ^,c"\b,ʀ2KEaKVLz1?䓧~#x7pÞNE"Lƈd e'F#su%2ŢgbJE DHH0ܫ"Eilp=iO!xr摱G?u-)ARLVxlљh i G{9cXChB)´/a3t D`~P{<[Kvb+ØVʌKz ˦-Z]-\pݺu *S3ƝY!Bq./2&ЄkX\?>$r)pLΌdbᕕ1 mpp =`Aؘ1}\zgg'˧hqAk`9+Ԉ, NAGjMeɔs dx344,|>_z ,3F8}n~衿^{gjj;kэo]]_߸ϐo駟:hO9 ّ5/LT]Txuő:_n,Q~wTN5+m|Ƴ+=W**p͒YID̐^*E2SES6z,&ܮ4H'p p/Pc&*a7.g/q-c MuXv۶m1ܖyܨ?]hhmmEc[Zz @S=>y ^*aU&FV^bFtѠLeU* LW__O=]ɵads0}>a%1ŭF C;F?1lO"׊J2^Mg{U rْwl|X(0!B33_nƽ7S8]] GcχvhSScep4ϡ/? *tJtUy>7Yw# Őnj<k9gR6f3~ws=]"^J?>66|uכűcTM36o+wEzƊi%]AWG&ٱ{_c[geofRj/g/@ Ve9!MYQk担ԋd,iI#ʹ* uփ:X mD5qf.<6q/|;MVAK5!:cqT`ؐnB,Fu`L˕)\G:SaP,zzz{jU4E p0g-`$Vkx1YbMEXLS5)kҲmv& GlT*7W,Zpej1m3nO~/l[8EY=W7ew+^r[>t->BC~wk=qYgo;jʇj]n;X4|%L?lcl&Ì1<ń,6J2u€!0&>#dF$3QL_'Q R24Dj`6GBtnE0$9KfP&!3 PMq`fݸq#=ݨxr @a9= X?>TdRo|Fx,c$-ǩ!:]26ojl$K5\̉B c?#^J0}#ߣCr0s*"Y+ =+;$|Ro~˗ӟSS]]/;kxҎ!h"%MC_շ[3:nVd}ݦ6n8xy|;w.nǒhq &_|eL9qkWX҆BI s1wLO:F&O>06\hF\L8&''d:NX Hز, y@EJmO¦)^W ^2"nUGp܉oW_/AaψĿ׭[?ǣ"e#U*t疇=o0moopi ܎>qŋ?8͛7cvBDuLB<-<`? b`OuDnʱ0 N5U'LFTZ &S7!Հ1lCOciMZZ1S@5|@KH]cUW>r]oqq;ao'{aDR}\Dž,~*Aed2qu |*~˾?vmYlYs5sֈ/."Ec XoMV)bu׼ؗ2ɖ {VDWןxb qv h%zI,PEm\NXի/! Nl2 :<6RӲ:;;߰a .:Ӹ#R#P> ,@c lϦ;׷mFO>)M Mp 3JYhUݰ)ڣ%x X,VLGԧG$:&ޑzW*[81 ̔pK4L>GW655&CAq&c%P&焇Ű7܈IcLM26"n#d"ar!=J8]7Thm.wIr4 / ? EXqQ du7e^|嗊j۽-|[r%۲vW E\v%OG?#=(t+#r6W<W`tpؐ|<)tL#r3 >k?o ôU~M1e2 B6a2*6_0CLBF' (3HZka9<o3q,G \d*e60l`Ps,؊13λ:TD c=nA0-$|2*:1hYυSdZ`?d7p޼ygRhKatt*)1OIgjj0B]^dRַWj7`9^gxdbѢE?V`C_vŗ8,: z*s3dY ) Sв')HS AfWJ!S1:UG#"`R@z/ @Dܒ%KL(!]fݮ&;~蚇Z}~ƒ)SˆS}}?ΦJNyƕ_.eyV$ ʥ/x+\)7ƕG4ק5R`2(gOU@,`ZR˒LJoj.e1d$[$tZ)@2 I^͖ZM&Cm<⬞BQFnHFC7fh5Y QQ-S0J8=OY<+Ph:2czZƹIVɫ^h omm =DV`xtYgzvo"9댣g, \&CY*EK$gT$3྘o)wGkUʼ.*x0~> _QGqGZ6o5=zO硇z ~/]Z&dD1*,ғO>կ?-]xqyn9غ Y"U x>ɘ.s G̦\N%ZT̓ t@J|N eqL*ȧ(t01P c<P N#],]ʘotB2sc. QYљa?)SLXb`:=pR0Dpn荕qd4.z ɔ("`,yqvÆ ,`1ffN_' mY|VD@yΓF}sYwpD>#+OD ]cwЮyG젗zkg=&镋^*s۾[f]G#LMjCU)9˖TP@A14+K o֩:&HL5R3%XJXQZs-ȱ'| Š,d iP\Hf.mΜ_ K@Uθ2&"UDρedwh\x1,‘")@O`8  y1765Si\+uݎ iQ-I.)qTu Pfr|!RTPI^,9Ay%ӏ5/5i§4蓓S .S!kL3$y eYD"#$y02Oi.bAfD َKh;J_ڋ84sʹ XrA/[yc<[r.v9n*=m;ϝrd2 JΖYY<@hbb rtWpvaqiY GmmÏW^0o޼ tuuƅghH š}E*XMb|Db^Oo?C=1GF] XyV'h&wϙ~ ۶eS[1ꜘ#أr[ V .dpphtl s/2[ґcUЪb ڂ`0V)/l}EA`d{{;GnZɴ[$z~._Hc&| ִz{"[0.\@zb,&rOLfSSY,HK%0\i >2-E?S'\d[n[ZW(ّ|| y <=RS[R 6mKK#67jDdB G&b, S4@]mȰu654.FG=axv kM4|E8[OIYErlxxWue}00L|!ldDdW8H#a抡W?S|m™ oDP=餓d[vY5Vm#j!8rHrnhJEh=M %p5dI\|E%Vxo ~y~B&I (b QԷ,D]mHn:b1<Y=w='|_7w'MyobP,jxѥe-Vwɻ?r;4E-EFb#ۖ#j1 =V]`~B(67?xWW/COú-GSm1,z*yXg'w6/xI֮]ϽZoYg?ا)H t92<*422d^'?p~GbzGy]s'#?0a'~ݽS=NRC1UNtqwewy<h_j:f<`]5F (lttTVW;XRkjjTdH N5Y愉BQ|CO]uOc7E-MK:vAxUndnzgN%_t}w|量mMۿw=pA;&}P=ܴͯaH]y)婧zWXQ=ڊw[nu/z<__|>=VB (4%k(%^u"kڳ-B5}駍k i1u^Csƭ7C+熾xmKkP6Y7w?y]BĶJs{Xgv,;fqcy[.XєL5-~Ei<5fۙK M%/ͷߍ+5R]%BgJ=\NZlᇟvi<~[|ͻnx~;V~pL$=u>b8X! #ib|Ge\1A:c3x]] E ӕ̟?5bxA|2Zqܼ[9ٯJ;98aݖ ߌ]?h=ַdQ b>/ yX_y/ڶv$b^C]ډdn%/Utܒys]k`)F񯏬=׆eї GYUb׆;s:]eyEN}3SȈ]ʯxOot˷˷r8Ct&JdP_b5ƎBzXyO7- u4cΝ;폕zWܑ֤ёx+Xi~'"ug^urr_4{sۣcλ<9I-[R̓'4vgdBe'K?_u"[ЌgN,UxM-KMgBIozӛRU r 3<_×>rzi(?0LLMe''4YlZ'•Mo8AGZ|Ur<߭;G*+n]4+zެ*_Qe;8 Դt^` nj۳7{ie嬀v0vI߱rQ sUMT*, ؀#\V@o+p ZWp/>ONNm3_ʶf *w?FxKON_^YVNJ[ҋ4q]ӟK;sKjعsNsS{ ?&7%U%^Z]=MDsCY]#PrG/;coY= hPs݄`tlycchW,[oiʖ=k!,Шg8lH]uz@J}`(?6n^s>C9d۷jժ׽Bw{:>V޴xaW:x" ".cNx=-7tX,%rM7\>kG4 EaHYo`Nuj.5߼馕w5?G_\l"祴x#Ҷno "/w`^{4]ee4k.N@DB+\#<@뀯woM/@ HA|) ϮOXٱEE( Pwv7$y0_Ľ{̜:tmUۍ?fa`YNuiZ2r$S258ʼ<O;PD#UՓ]o)IU%1wn4#i,B3&k _ta T99S'I 1YOeeeEEE\\宪Ԟ1@!OY%;5CpĮ#wUW]`vtxPQ5Nцu- -b۶]h? u\UI}cǃhf,JP{r{miټpL@媪J_\f%8(vUUᰭn_f~kЋX˫Bt%ά&3y,Xlܸ)5sO{ر'|":/g)2Jь뗟g}շE.Z씸gKƸ]yM7ijW/\JJ{9e+6l,qm ]US&}15]E[;].'DY6Ϥz'NCA$qƫM`07= C\Ν+m߾<=zL6m˖-u pnjǟ^tI7ĸ3!EnC#Æ,;wJYԆ6E‘ .87H}{{hYvC!l$mp9 )Ck׎"]J)2j?xUV{ԏ!|>_qq5 7Xr'7o #<@@g,h2b*pxA~Y޸u}vJ\KI ,@iҤѣGgee}pǏ7DoFYw q-U+'{_w0x@\>LVfw*:w)+}9sLW"v@@8/7"H\|"X\nP(dŨ|Ғ$#ꫯˁRkg];x`oݞy࠳eQjYH2fѢF]18+%akV{?vqqp1Y$AxtiK5]spY~sű,SZṘ*|hV1kqu-wV9'Mjj8R|VP SK@8$j1%B!ۅ4zek6m҃K+4U¬}/:p#u*\U58Q(EQxYVV#IYn|ChJ2?ezD ,z=3}LPNu 䏵; $IMa̘s,-[rΜyO?$gpۅ9 g` + IR@H`(JJ23PwD@{n`qvS\"=A]hTcFhnn'[aG{(e|EŹ{s83,n7Q~r;],Z2fhhc"%5QUiNpt:dz 468WYY8EI(izii}Tͅ@͌y#GHԎpr{%-sc/kT 066YyHRBW0UVd! -˲/7Ox/{ڃMܴvz^3oمH6pVoN}K]5Dy j]H#5Wi&0EXN"ՉǎzM6m2OԞBҺwxj&כШ^N48Fyy/_^TṪ4Cu D'eK`|>ߝ}@/U)\=i~a`[cn&S$ŰU05?a[G"A8hW4It[v'|ٻwUt2x`PX 8ES9aMbD6`m]_~9sSSSks;CCc_JwSˊEֵK].o$d 8d\;=%E>W TmIw=A:t8s0~ |2@:(T||Xk/(3,U"1919RUc ^4Y梋.Ζeٞp([ÊUUR,X/*hi)I$ހILLK֭[xaÆP{^E[z3wY/Ib$F1p@$jjevdYjRYg)EsgX%#\o~3zAGahUU(?<_,E_[3,khy`XLbz_׵`;(rmCxQa^iW<Ϸk.C_A/edr8c$Ϝ.d vpO_Gp+mr2~%]`HE4^Xy;.]taСF;w)^>QۗnEoAPeUWE,NzE<h]z$y :@-z){ PY$1+o|C@8|Z e9N0DA0VZyX\s¡2q#/\6&LqCp35_6M+ݭu*ͽ] bl/o8WN JO]۷گ4ͯg2lIbcbb<I]v9:)j$oSsnf׳vs4wsG\65/>8I6n[O|0+;ӎ4j׼yϘnA1f[^oR ~73\Et ~ݹ 34c_߭붨ic0u3a]kg^ai]|cBcF}pu+hARbR(QUfʚW$``n399 wH֑xyo?Ƚ/?K6mLP>,}yf 赢.]\[W_} O7z_]UWz^vט]K{6䜝0`  ?\xfrw>ҍxDMbK:o&wDAA[y'B~ %9IU$jg3bNσt1~zݺC-=s{9_͚%Myo`Nݢa?x߰)1!>NU$C:M?gN=oƍi)z`gYich_Mr#t^ ~ֹnz9 ۷o֭FV!24''rڴig}6x>eN_p{Ž7૸xӦMVѣGFFF]o~$0ӹx.Շ(N'ikN;1 b#UmN}(dG 6zqpdIUKFTx3*G\a5f #aq77$3C #/EIS:u-F7Y-.S\2? p\E%1Cy!bqp~V$zXC @ _|io?(r7hР뢎KRvƖ*,,ڼysYYV]X:==[ rP8|'YSPPޖP ,\.w8RRR<Z}x<XˍnnݺeggWUUrr=ko,'ީwO{k׮۴i@3~co|NQo߾2{i#!|SnW wB|e[~ ꍉ=`(;ul>Yk֬_}dc"G24ze?11t9ছQcXkժhDIʊAah;0OZZZUѠBj411\u98B$|:P,{#|cj$=[y3d-qW|T3\ BXg' It"S MZ*11Lcp1M7A$PH[zOJa Pxp fxP41O"9'9q@;ufY0U7EQW\6r j|$z \e!8g=IPqiO|,AU1I>4㓨fQ3P "*Q' ,j4yŊ}7ϤDG"@a'zL/ED1ru76nۊ@2 #R NԎ; ^u㦍{s.\&K!D sfϮETW:A +΁ ܎hfm[ o! l ?A~̷~\a:dH?UcJ/$Hsl߳ޱcGߟ_Tv,\:69p?QI/Z_UfWgU!_\%xcbC!s X ~yYY}5Sq7RreW3{XsC+,<̳Z-_H|| ^1>Y?b) ׽=ګ'豱>'guH ^oJMQyES,A<4jd3$nG0ugջ4MiH{2vՒ~zk `9}JX;U%W2zH$9g 4Wd;-M"3(+(I))(l` 1+!iwL`nUŸ:g4A1ziN'Iѓ_$|q@}֭tm}OmX$ig߻KMm[OE #4˪*r02Wa8N%cCG^9B_$Z݀6#CϼjARtNF}' ^^|%@HP$nj?oC{[Vr_4)UZ $&%|2DZqCT)h4ff ѴIB ZfGhV"777`NMJJF?x~y`-ӌHr|J>~M;=e"EȄ"xvi&++t9GkG"eg;VLll,h0g#=ZB7]U2 ?rGhFp8%./fdd? |3{zmÕ`$YDt47-D>#W9w|!M4ڪ {MsMpŨ%RnMal? M#t"eq[*- lr)kMȘځGt98y"v]jEnXUDu N./8x0֍p8_,I}\>~-5#ɵŕpA.Xf}< o4ݠ) l;p@:]>stB!CeNo`E# SށGCiͷn(kH@V83Bcoy(vՋ[oE?{32,#J>~ȹYק<[Z^>Y*8y'|.$M0V8܎dwsD5 OKӑUpbLa%H( upͫlGy^ p̏.)+d@mh򍰒Zqh0>U(R뮾v "IrU-bs8nYs=$D"vrMyi`IO?q*||SOY 7ĺ˾v/# q 426&&< gh5fLD`F3={ ';AH.۝ݦM:5 a}3w嚒١S[@UUT˯_Ʉ"LA#Ct(rPFwd[nMLKKA?(.)1e:pE>Ĕ|ȟ>M C 9-6mJJJׯBCPdM‡B!>ǃbIN dIurtW5K53nA|k׎1E,RTT1aNDkyHT9f?ݯW/=WϘ؂!gR׬+zU )p[@a'IaȺyu҄q}qh״Vߛѣ|7m>yUo ?,!Xb{ݗG&Utj?V,Zhέ;ztJyhKSEbb"q`5FetZ靯<³nyWlg%ı)t[{g%8zk׮p}WqW49Tn۶mǎh{h_B 8i7#v+{tzD7! 4GPmp4,5[9n  kǚtp-*_?\T4g!tIplei2E8K"/iXC>.r_v\p?j  /d M8#,۰_EG ~xCɗ ݥٻK6lJMxڳ6hmEXdɚ5k:̤"P(\RR|YYyQQqQafz_4dJ?0u&ͼ9'+U#IIù%**sTMGhfq)KNʖ gDQ@D8)slY2Jۻ*ޟ虑>3gs=_|1xnev&t 9ˠGpRŒw~'%f'w%_锃!ʢzkIB4M5)PT""4hV?>c#Rbb>zR&ޔ),^}ŷ_qs,Gk_kۇw_z <@Quk?)[Pa.8WWnLO4uEwܛϸק2V.١}g=wۅT &dee͞=NѭcGMʕ˻wrיcW$)Wվf_=x_$\jĐ1G/þy|93]Q4Kt:SRRDQKHH|>,˚ۧv|99IP95[v-5W^yx$]Τ>]WK,9r$qV06j;ÃY1R[9)]zO'610qۓ/a4;t TԶm[p1k 98|,=1̱}SgoSNc"9߼X, 瑢! >0iҤe˖۠Kp+4/Ď47BS~}{;k$,WM豎Jxe}{*J4՝>=n܌"]м@>_,_nܸ/++KKK۷81Z#|"@nLQPh\z;aH49vxϞ=//NLL< js˖#&}LBqG\ Fd֬Ysrrg4_z?Vx:S;p,:BaNјI4QII :iuMCשKza*q *MN@ۙZ3-E:~ CSE(Bn]u730=b .VɩV9Da4Cf9NQUit:9am8˩)2K$Mp)Zk;Z!My eYT5$tXQ>GX yBk?qY}&v`i?/o.pw$Q!-󂁑>TwEe%U^^x ,Kb88f{^8-coD@!Q) nIs:EQN"L# P嗏}vn."Gr8^@z￟Wt5GP6=]@ `)2  ;e3;BRQu4];l{%4Y#!>i6ǴMj-Ud3/n* bcc[n%I24mIì!^$ ;cPw%ӾtHZRXx=aY^'wcvǻnjRJƇy̌1QXXH ۝(Acc}1U8B ~ٳlީxs?щm[#SKEڱ6YNɲ,‰ӡ/EѪb@|߾}EEE99|Uh{DdCp$'|g_n{^}MN3)Sg/ U70UΫLFgN `#TUdRNC,!с^${$1[qx/ 0Ӵn4n֡}N택hF"_paY'" w~Ћ$i _IͲ,R'̷,$@N,iyyy [i//1!>C#P(TRRyQp8G54 `1 !~Zu7Ӟk)1\QʲG n0 S01Mip1Y 1f!0ü]Pbu <_yCo͚5`pg˯kl1` zꜜ]-.FPKYYJsh{VUQ̉Ff)dg<{@0؏&3#E~  p*9,mRRdG R RM3\D);zk֭A|1p̖JA 9hHd={4Єլj]kMX+]MɉޅO?i75kP, ݺucNw7>ћ:Ͻ#/ F\ǞӍFK>#e;3Җt]A1K|k'_}9c#9tI:eYAȁF.(Pೃ~RU%J7VD4EhwgN.6Y`cIb]Vm z\DP h]G?GLk弙H|8X`k_tkl4Ą۴iw^0 ̭ G}rGCknfP{$9rY}/ѧ)1 uS tmIKj q4}0?\G*v94h"AM>Y2S]UUN ILX֞0c7oO_$2N8d&ns&"Z bccYsNh0(' s}_cӳaһg~g=YWC(E Z*fTsW?saDlPګ]Izp.# 8/ֹOuked0xs~9+wM=VF]; FyjFbBbmP(B,˶iKMڀe AWtI ^y(硇23èg3eތ:QEв` J[I'cX۶f)b|=\9^:M8k 1wٙ좛kMk j o1\R }>oŏWߡ }Pd]O?VO>(h?ѷ`tDk^ h;=yf(P~_qTa(6mM|w&p8_\^/w\{6֩Rt68ea8'񳾜&~.pjo}M+?Wesҧkdb6JҺ˲7o @.ۚVU+'sdF~Wb: ӐO=M+ =x>7|p˴:5|Տ ~{<h|7_|}0H# 4MHpو+4|lܸM5H\IvǟMEüߍV]E,9\;r#$mkR/G%s؞4q78A_ c5' 3N$fj 驩 Zd 8gqFv G句jIڻw ~\\LQ^;䩟ugY~"{r 񟕔W|ѧznc*6FAƒ6?Cr}9nTF'&=EQla*~ NC\]NӴ㽾;`o5v4t{&?ܕױciӦY1\{s8 i*G%s+ )SS|ވk[I8~yr 33T,JAۜ"8 T[>WVVNIC9:؉N\8 k~LÑFc<i"Eв@3={snE旖{ͼ؏uLhV9 {LWN<ǪkڵKOLMәP%8U:sV'B-Xr9)RO:x2F†%$$,WQYI0kyJLVg%W] ׮Y,;;UU0Xgy2g`X;ק&/DQcO:d;/U-pE@:B=afp3{("UG Iz}rKa24  c`Թ سSf)'utz}N' ƒ$rUc]1<,$- 4Y(ꫯ~g;v숏?s?C^3žxp,*.eˆ |u _r>VaJ:dFCĬ84mTu]FQ+p~ V骪PّYVk'7$WDVL'p 'Te֪&Ѐ,JN&upEQkBG7_=feRxyEzx>^=k$aGuD;hР^z "pÆ e*,]G۹Sp$q^ە~Fлw{`0lڴ VZ8pm6Mݓkݺ뀟t,ƍ;vl| /w_n'&&@9ӓ hvz`nݺع+or7lؔoʪvyySSje;wйsGx UM!4(>v)i:ڄmw`7aݺ )Iy~-ڿ`RR"4رc0ݛ6a]pS̢b('99ʁNСCeetE||܏6amH@@0^*>>aZMcbPj߾_́꠽&l߾ru봄]vggeA9A6n nӮ]w `Qaqi. ~񸳲++ȇNi7Awym(ucIzz븸;v}fdd&b|5MZa#7/TEPQQYRR唖U:M1j׮uX㲊7lMoDn5ܵKh6 v{nN^.wngB9'0pqImC] -{hB6Y{O͗DsLe ]q-=k/&)ͮ[2:ckcs_vVUVeeeH%WTU3hJp\hBj=Dx^UyPn†〴?m :2QELTz((:~ J z1m``Xao<KJNLNJmAz@*/.'8,-Pԭ[6-AAh ub 45S:m}Y??>Qo֬$VTT oOYbYRZ|?u7Ś&賲rsrpp os\WD (7Ypnbhӿ7+*~p|*YTT.V^Vل~P S(d P,5 J."'gpsM&)zp ^cƗ߀UO7K&߰ \2{N Az@v_7Cȶm;Lxrs̃ Uŏ~!pM/A“nXܳl֭#\̝lBA\[ ; MDqp+"?l/YllݺgA$E@0X_~`5ɬ&PԷށ׆ .]i n~շyioz /ԑ$tyw΍~UpkJ8`>\†r>\GBUΞ;w޴y \@@տi3U9g3@Fw?@Uk̮(((..W-c⁛+ˀ`4-n g:jYL.%KIfBϙ;2Ot)=JJjǽ1 ܂ 0vQ^^w--D4HKUgԡ}=:NhR98J)h]/:JZZZTeKn hG)V .:t(83f̈>ڪ̓IW<{'bX~H)+/*FBg%sN7QV\1<Ϲ`!j&Ÿp ?1ĈD3z GU h(ǜ㢜!Y?qb8mUM[@h9 ^:T.FS(]$ ײ$#vd19cjW 嘓ۤy ~ƻUNȚc MDs4ADZ41 3]Ma#~]?aX,&5M*/KR+(I'<y YV9`V24E?a9,ǐ v&@'+\ P]d}5aE'vof*Û`I (eI$1i&XjY b{^34Pp` HV,z3H"Hs80zM>;KmH' cFբ7>@4k$QI,@5,mV[}b ͟`W->^*F&ḙQn ,*ZbŦ^[tu^x}t.bz H }cҗ#NVp5n 0v_eE'iv@C7k Q0#O(z㸪k/mD>Xs 5ߚ e|rjȴ^UYZë\Lɡ&7VmT ԯ:TzM85xoM0+D.CMқ,Ǥ7]k:8 h+qeĔ&D;fVSlA"=/vۂJ5\Ƒܭ op QP꣰L]nme*.`$ꊆX&ʭeVm|(ɗo`rKٙ(;zkEE% JJJ6m+܊XlCFH2))GqqqJPMHHhl]n H{p r榝"̌D[Q Ur V,jѦW4>E?{W`E߼B;$TA@PDR)A`PAZ@X`;_L,)Apݹ}{=6h$7V5;;`\KI/K7aI` Ĩd 5F~ܹǏ׮]s{z;a9(JqqPM9vضmۚ5kVT5׭:h!G/9}7³q!uSd /WF%IQptGWXkR[p`9$ A0 @8?܅ Ý3φ-l' ԭ6S$I? 'O^:@NEI]q⹣G3zԗor8IW͜ULޙ}ǜulGDD PIްr-GoV]+N}1Ӝv;v(_|VVZ?k@geee;]9*h _u\MR3v͚5r=r,AWc:Yu;hvK(Q9@;iTiݩ -#nߵAD({14ʹ<ҿF]{=yyyQ.K7.߸![Uƶ _ԙ yN~sHpK9a 5B 0FQ_?{v{̕x{N_7={/x6߷l Ѷ|ُΟ;MTH"J™DŊj  R^ݸqH <CI5rcȯ>2+WQ"27+ɑ^vA#`NV9>==-($ pr=vD;kE~g rGА ~fkھv0ZRPڤQ-p} ^F`XA V=M#(d2:AO7 ŷnIufAXS@@#:JڽEx}/qfDv]D5\3e㦻6<(i0>|'_7o[!~-2a2͘ 4lؼQ(w&~LNf|' <0Ir" YR-#%ݲmGFFF֭8Aj5rM_kcHgIfn8c0pbw/2|3yyyxukW^!#GW~sd gF oܴ?Ջ6L[xQgN%@Xv+ jEX$&lq: W{r^QF$(FV D$NPĕ/_ի/^UsIV+n\rNNΒ%K4hyPPPlʈkpݾ-U/O8Q^ۄ;kv}#qe gMV5j p{ȑkiq@Zڵ /_RL@RWSTp{k`0Ԏ0!; H$Г2G~oBX;.#o71"s_ }ĉWR髯8SgJOy&Hb3#tQSf+ժכ? ۿgƆ|А`/Fl9sR)׫78uTJWl'_r˗PcŊ%W&ov-:vݻglN{kRz|eYB1a(^ǼVlڲ0bx,!**jyG>OfϞ۰aY>evʔymڶHҥWfM~uWzFƷlذ ysY6[|w|0ź&'=mSr9`  RL+x6$aTSOrNrEWE` Y#m,6mNDDW ٭qtޠF3qӒ}~\4wGE|:Cy ~:#۶( t$5b~! SO8T|={ڵ_LLͷX{kڴgΜر]r֬i䨱/ Scan Settings

Paramètres de numérisation

Lorsqu'une image graphique est chargée et que les marqueurs sont définis, you devez dire à xyscan si les axes du graphique ont une échelle linéaire ou logarithmique. Si vous souhaitez numériser les points de données et les erreurs associées (barres d'erreurs), vous devez définir le mode de numérisation des erreurs, dans la fenêtre Barres d'erreurs.

Echelles des axes

Barres d'erreurs

xyscan-3.31.orig/docs/fr/coord.html0000644000175000017500000000514211470616441017443 0ustar georgeskgeorgesk Coordinate Systems

Systèmes de coordonnées

xyscan utilise 2 systèmes de coordonnées:

Coordonnées locales
Ce sont essentiellement les coordonnées d'écran de la fenêtre dans laquelle le graphique est affiché. Les unités sont pixel. Le coin supérieur gauche du graphique est défini comme étant l'origine (0,0). L'axe des x (abscisses) augmente vers de la droite, l'axe des y (ordonnées) augmente vers le bas. Ils sont affichés sur le haut de la fenêtre affichage des coordonnées une fois le graphique chargé.
Coordonées du graphique
Ces sont les coordonnées dans le système de coordonnées du graphique que vous numérisez. Afin de transformer les coordonnées locales en coordonnées du graphique, xyscan a besoin des marqueurs pour définir une échelle. L'utilisateur doit fournir la position des marqueurs dans le système de coordonnées du graphique pour établir cette échelle.
xyscan-3.31.orig/docs/fr/scanning.html0000644000175000017500000000512411470611273020133 0ustar georgeskgeorgesk Scanning

Numérisation

Une fois tous les marqueurs sont définis (et les paramètres de numérisation correctement définis ) la position du curseur dans le système de coordonnées locales et en coordonnées du graphique sont affichées en continu dans la fenêtre affichage des coordonnées. Elles ne sont cependant pas enregistrées. Cette section explique comment enregistrer les données avec et sans gestion des erreurs et la façon de traiter des graphiques inclinés. Notez que les instructions sur les étapes à suivante sont indiquées dans la barre d'état (en bas de la fenêtre xyscan). Suivez-les et vous ne pouvez pas vous tromper.

Conseil: plus les points x1 et x2 (y1 et y2) sont éloignés, plus la précision sera grande.

Points de données

Points de données et erreurs

Numériser un graphique incliné (Rotation et mise à l'échelle)

xyscan-3.31.orig/docs/fr/settings.png0000644000175000017500000005214111470634071020015 0ustar georgeskgeorgeskPNG  IHDRkZ pHYs   cHRMz%u0`:o_FSIDATxy\ǟY~ WD(,*E\3w\* 暹gf53MM4MME25D͍\RPs;\Q1@ gΜ9s|<3F# lo8eYNQq P8aGq*lKblQTÇD"dZϞ={f͚%bɚOֵk8{b\]v˯Z0*z",[va{;wcǎ: T* ._A{w/ ؤO3`DU_>n*kQu6m œF ^|EX|eV8* ,\~7ڿ3US9n'8n};EHCfB]CtIIIf̈́B!A&9//j!5kVRRB4(3d*’{_cveͩޘ}V/;羳cgY6E ~LǗO٘&tv|p^H<}[Yzxxx]t1β,kH-ϻW v&HN* B@@A,24m(Laq(q ݫkGn;ło}Vl3KƦ?ckWSŒ[S4~=翌5Ɨw, }}"-9?pP1L浢 ;Wx5 GY@$"@(dq8H|S[Fd?N{8C,ɕoưO/wheY^3-6 _NZ^HY8uih7@B (\8e Ⅷ!eU-"GG>tjuQQH,D8,-.*RHHrFގ~Y1b-3`t˲,#YgcY뺍cY΁ a$[RXi 0r舑~#,B)ell R4#3`ok,>HYh/kM>0A&(ㅅ&_$C@ l9S$f8ٿ&@䄱Y7op*M q΃8N쾕'mBS!pB %fHH8o;.B 3!ZsC)ER*mڴqI&"feddnZT,r[$;'?O4l1]cYe/3g[7)#n,.˲8eYX}ػ⥰N`сxx𰮫_Y}2fKZꎷ9q}0 ȬEG7aI&)%%qDbZd4M#UP c1)G`E 9l f(sdrb\rf$8N"K  .09B$Jb9Irm@.8FH2dICH0J2d1>OMM-DB$IMGӴniY5 1`Y0}8,8Dz\Uĸ2aP q $[!ly(i^E4<Ʊ0^)J|[i;Q;B:y$*i-|T S!HH@ $$ x!+-;;;##l6bB4rRwfͪ-4\P( ˲6--- 0ww I׻T*~**MD]TT-$ jL&C"X0bT۴D "D#0 $ ?IT!IESK8$Ym!!@ !!HH@BB $$ @Gojtg{A=1qEQ-Z|j 2 SYZ|~@wvuuUe +ߧ $Qul,[\\Z\\lj,+JNS*D**z̛aVBQTRRٳg;u4~xV+˭@%ZK.mܸ188X  ;8x=q8^xHH ̖.,,={G ]W徾ڵݻwlllAAСCBa !5h4N4IPm1ĉoߞ" ϭa}rݜ ѫ;7gMKKIH{V/LJ? QHʮLV]wo:RvRۦQlVTbW5_+ptQ+t?_g ss"sߟ/]0|R>UU/rV,T*\Y7O'`|e8q.*itnTeޓF(qaPU{ZbcU)x+_}2Yr 4Mܚ֬ eq(!2.q"ҽU(zmB2Z<ΌZ+uhj@#ԚBh4ZV\l>^#:Z$aS)s*4c83e$W]X,&<(]H>1v 1鿭 3?;oGzBJfiAUFPRR̲~kaȊ_MK/Rf qko?xYHse6Ri%B\@$%}5:!ak.n3z?1t>]Q9ɇ]2 a://n;u"J%^qjXə{K9>gFT*5O#Bc;3|3}7PpEQ|n+1>mxZz7TQT͛W2#Gj8ev O 2}bV[ntx3$&.IIIk TG̿2F#Dr1Yޯ( ܿӦM:. @"((HV%#7W7G_>?BOOO\흚0L]M aA ӳK.-[TTUWQsT[H.i4^K&bl >L&J"*7NP AD"Ů ð,[-תTeaWaЗ0L3-`4mj~,D-@ !!HH @BB $$@ !!HHP YꢨPH Y@H@ l@ܻwO CWqEh Oqǟl3WqWWWWZ]?g*,y[$ ˲III6&˲"HTt:RYyNRBW0 SHHE%%%={SNǏjrܪTZi~-[FcffK6n*i68xRvÇ gϞQBUrovzP0tPPب#!5h4N4IPm1ĉoߞ" ϭa}rݜ ѫ=i:.:VTߟYo$777--m8c w6ޥӻFEE}sna9eYP8h[nV KݻaƦj-kv*ll/^h\il,_yYc9R'0hKx6DvYe k_ O'Xjb)ji{…ݯYƻ^\YeSVpcM?0e-s I᭘~)ˠnoVh_YL&S^^^۶mY)bL&0 40 C4EQE4\(0o]װbh`V7 4_dɛC^т*>eqBIvdZaX۶mM&S}eG.ILIˎ?`#WS_eN{;CٲcKl6s ;pH+^v;~cnnW!IR>'ubJEd<Ɯǽ/wњ}n_[7)?]~IR F*L&WW׊]{V/LJwsvuyhu|Oc}X@OAuɰwQԊ .5궓6E.tfJNǹWl VNZ8"E?k_"`9w}3.AbJe6+&L= >'Υ*Z"!̞J`+@@_MU=iIo( \%8poukݱoW&Kn#FW\1[SWך5-Dz,EU"$Cƅ:ND pSAHwQ[;v-nEJwX9FպDZ&3w) r}@RTj}F0o|3}7PpEQ|n+y6Ac\rv1&:~yh1/(7Ɵ TEXF(k*+d2%$$kN*VfאQ>7 7 8{tfVI&~'@[C:uu6LܭsaRT"0~EMD^^^;v6mJ*k8=ŬOZRS'%*O뇻bVKWKF?~OSz* {Kwo}/tڼyuPOv(*33311177wԩ^^^$IV}̺4}ΝM6ӳ1WYY% poVߍ6,\yD[ ,H\]j} MӹRF$J5 4M EsbJEd<ƜWx(ý x(jnuZruHn?rR>,Dh4TZS!Y"o2>c3"޽'-tQ!Q80BYpR VYve8hq5uuY7A,8NQT dȸp`tSGHVn!^՜G;tU ֔Z@krqPh4V\.wEPQ1  )yI!k?2`h؛!JBC?vo8aPFrU;+b2xW"2@ַ#ܲr:)WHc]G5#K-zM^w6GԖRi~~>o' IPRR̲BcQ=rnZ'Gv'.2N+qdHV9Vh^^T*LHִ_QfCK?M \@$%}=ރ]I>wzT]0 yyyv9І$IbJ;- 5w=5Y+HI׼CsjJR34 D8a37ӧE<g\Q2S𛨟MX#Ua?@n,õmރL}; !C: Cu$J۵k/nݚ\ǷE|eu6J΅Xrí#lwߍçF+Gb:*%4M11L :N*dinst1-:+0<)]O:@{޹SYvE6d!֏&OB "+##cǎӦMSTe ]VKjZxļ8h4zzzzyyDe뇻bq/ƿO\- @t\_r=:|CjjjkABڅܩSzyy$Y ݳMwٴi[Ϟ====a[UUaVV ܛ;Mӹ>>+0v+/r,X*sMXyvɃ#8˲>a+ 8v;EQM4M|}}/\Pm_8%P_<=ϟivl3N?W t†9g;2LyyyAAA,qдAَ;8uhݗssoh q'B5MWVJxXC_߫xO_0nMam۶MHH0Lb_AZGB߇;/y`u9p駺`^-vr, [rh4~ov>RF$J5 4M EsbJEd<ƜWx(ý x(jnuZB\v#'RMFJ& N0-W7Tzj姏0/?%F^>h',[Ǽ% nAPvRۦAl6T*X\+ptQ+t?_g ss"sߟ/]0|R>UUg| bJ2O&4wW^\\/% sSl~3@T%֧wIKz#]DHE80P(t=-11xtǾ],uq\rlnM]]klM˲8SU͟C:($]c>5el>- Fjrg[+?paS)s*4c83e$W]X,&|\Hc AmGRz)'DI*d!)JJYVh,J7Z8TM$EFi8@_ AB*gw<漼 a̰AO>WE󹭊)xڢkۼ͙vl=V< Z\~?9dHoRiv~֭[Fɹ^X}rbh\L@w;~UED<)?0&)!!AI' ɚu ;vG{5aόeII_B1Νʲe /yln:L:tQD"WFFƎ;MRNO@̵yqhDO\v{.`Ւt=qH%WsOrHMMm޼y"g3ܩSzyy$Y ݳMwٴi[Ϟ====a[= Mtnnn%#|||"=H?@j{왜f͚Mt:???jeee$%%ݿ}AAAZ/). P)˽SSS0 #BPxzzvҥe˖*T/dvIZ2Lf'AD"D"ɤRH$˛T E>$8K$X0 ˲u"9xJUfVߊeYaj1$oiÎ{XoVcQuD jA$$ @BB HH@ !!$$ @BB QBB*ʡB!D"F!hd^ Sq~T4m6juć6L& ‚h$Rd2YE;T8:k@ !!HH@BB ꑐi35TsOp}ն+VT$Rt`ɺsq'3MDjmɤns+Йfh4 .`Lh4q6fW@4PjB֚ۮS9Krplzb 迗wZ7#€nSk.p;sV L~\ȑP}kyE&* /l 6Ŀ %" _w]GyҬdm}5#w|3 /y0 d˗ށͣ>> &>ݑOHK[6@}g/vwDKMG- 6lԬ~)h;bSq7g1*Of\_2{Sb;yd!p=nr:3-Mo6H1);55E4>&;~͜nsqN bk`înf6=yE\2“4}lGguBѸ vN4raZV*@4v*a6Q1!9RۻYfRNNNZZ\.W(0t.fKKK0ݽzBnnn* ـhs6j 0Z-pGBB4r!,abi'$ AHEFaI$J㪰C$j-$Qu$$ @BB HHDBHe-KRRիW poҤNH$hTѳ|=߷nj9Y\y&M@^^O?t7og"TuMz]v3*yq\QQΝ;;t0uTRE4M bԨQ;w޹sgQQL W]Ke=n΄U׊h]tW'yA[xW٧C&DWf D5ytl͛ffjZfnڵӧm6[٣r=m+Կѽfl:鸽D٫NCt֙[O*\dkIhDH޽{۷lVf/n٬,?Ԡ|+;3/eØ}4գ͊+{V}(6 aLNџm_ $jX,Zv;% r\L;gVjv'tu晴#W~h#X*@}r}95[䵓flؚCoS}&lnҤX,V98 bZ§u>؝-E^>%В5n;{ϻagV-F,Xo#&xk)0v˘J䊨Ia0E$),E, B@ hf#M׎XVۦ/WO)6!8bG_ی^F>˨%5gH$tKRRR߾}ǎX,:r.!׆u7M\r~/֯"qX1~fa[^0ju,oZGl%|^MzP  JMMm޼y%CL&ݻwSRR222x_˖-YSTlT*HRhxz[߷M Wi{Edk>'2t #̞3Mi9bm𯯢ڃ!)mYy0c@hyu}~~zl@(3{':6M+8Sw mcv积L@ىk|Om~ l%!̿Ͽs=P{xq/oGSû}y沀!#sgII7MRm[{|}b=f4G䩾$hլNV==;tlρ(oPo&7V-huww`ʨ(Ն:}躀 =]fϟmk.BnVhEo&`;ܽ 737Y~Qr0XQI%)oG>~/?@! j˴:"zlHWzF'+0xȐaF:~r#^?:}sH;m|fYmHRAF,# Ƶ@,Ӫ8Vh `k† uD ]XzDmG诟l>*LTiliIb[GXn@n<ՐH8|ꞋO````K79&7?%t%yj;qUK\Z49J]!VA3Nݴ}]ښe(F;R(L˓={:HHSvjj6ˋ !V0ȯFz ^Q4m-G,} s*GW>}h4^챂5qiFrx'?⓹!^>GW}2oHFѸ{} ²<@ss֕}nk4;2kwm)BV^냤G@wڃpRi*h˟$[u_Ѽ)Q/_CVysWaf,4aE;pr 1,gSoqgGov9gv셰Y=^M5usjOoXw:AǰA|e aM4a,`aXؙMO v,l }c4M?i3ο8{k>rޙU^樞je7QG)d0t3ZݱSXhQZòl z w8ߨK0`w%3y{1޼wQkfōEè8q0 C#|@g;񳞅WwM94>8êlM6t?~\0 }7TFhQlVi1 tƲzԫ+`YY;6~3D /J1x'fGժnY BbLs&H%fYLZwh9 j'Y(nVjc83rTNReNBgZqfr( 9`ƊW>߾𥉉; ˩^]@ʢVo֑l 1 C$M4MhfhcVĭwίOZx~G28>a@KAvٷޝt~/1?1*yV}ws27O.V1 gY k{B~Vbl4pX ~ ɝIp.9ܹ3~sgZފۻKȪ~5U]M[ܰ1 :TZp=RTCXUve2]肽}K'"5ɱn;mr_$vfif0 ˲,)!cβ,0/Ɔ?lf1|ch4O`,jZFi=˲̋ h2?>#!M3'/oj>y/6/ ]v0LwI??ds&CoCKgY֞cqҔQ,˲%g 2㼨p[|s|a٬)!cן96YbJc7v_Wqp}²v3Y3Z(JqV3rW 76&ؘpLѮ7PēߕO͟" .@ M cLuf/XAҹr8XCYJ>T Mo`sn-cǑ>'ߝ%+x8aVnaec4.G',xrOS1KVb%@KYDL_㨣 uxmˏ0='|1v( :8- m-nb0:ק{kю:5o>Ul0ж:ߩv-z$x%LnJM;`hg]qh0r6.|/o̦Ɯ kzG 8(3`R`0p9㨄^ԗ{}#u:x+'Mw*5NRg%坝/|.9Z&~/nSci산Gcm/4+P:1x 1q,prF+k'+SvvXcǎ0Y{+[) u~Yw-۴kpW3  'qǷϭ.Sq2N o 2Ȯ/5n_og]G1}[7L{E%n^4*Z-:A:Lu&q 88z|kh/W8q2 ܒ ` 80JQs8Acqf]|}.vGf3ۃZ_zQ9V$}Z?+K5 씣У[k%$;t B^Edȴ??q$eLZbn="H $FsAO8F,c:&JOP:@@4@]o|$I`R@ I(@鲳srNo_guU?6fΕ"tL^ %}0*&-X19;? $2999|9>$=t]mH2vl@ r@.Hr1"t;03Εv"2@*"BR&EO1D詄$t {իW^~~BR;Ư^1_pareg޹GV'Y9tI􎈥7ۧë]c̨`?; )'D""piv|Ŝbc+]ڷMޙݳCrA|ḝ$$6`+KKͳLiWSh+Íe{Yix4*Nut7~#3 _ $K9G>}J\ 8Oo^I-L&/t\RA$$`\RfyQ*|R֢m|N&$I>TJ@8lV+iŌ@ 1Jqe˿.K]BR) ]$BX(b`DZ\"."D r@!։i'~c[֏+ëJ꧚m4)S:zq'=dR0m܌ -{pa>>>wg~CRpL}g~u;L:T~RE4- * "?WǵWf7EA*8"qIX,8NH@#"$J$deEvO9Aۼ~z'Qt(\ DCw< 11 / E"} n7}"H$j\^6KӽaNMίpbG=X= $8)*АbX () !Pʒ*>֎Ry$Ke%8ई()@*DT]=s :L\v\B)ebװBWFpea8a_dZj, 'OMMm޼y%=tFg )}2 1,K\\\hhh˖-yA7j_RBQp׺ )%M v8[ EVEB<1LIj-B Eǂ\0j(1sjZJ ,4pUmFJ^JÈ^m,2@>&uth%Go5ZAuV0?͛q0 p!?\cael宥+8g0v4Mgee;?DY:D-zD*yĝ*UJ+OHGH ;@>;dnXR#}xDT0ma0uUKpu}t!b-=r]Tr d`?+;qح.vݤAo^}UʋN4qV,UE^qqޢg7K)ͨ('R M p/'rJa,MoݹkBɽ &l]7j e322.Q0v˘Ұ( 4VƞiWo)\vQgG܇CLR@chYH&|~ ?BP4T_Ɯ)hP4bȂ#ИhR-dghXhֿB{/) 4W|+vRWtVg@cQ~eؐ_p@cN!9?/޺qʤwܨAp܃a=4qQ^f0h t 4K+rйeM +;pF}9O{eⰯ;,Xvpꅗw34A1ry ~$ޅs={#$VhlRGy H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_F!IDATx}TSgǟV0IŪ4.v NShrSJ=l-;gH]vvOfw#{B(4tխHH=MR5vG7//I9&{>ޞ灛^7ԵΔ4?+^z^@/ bjϥ%E24V*sި7 !ZUdҒbު) .]`NV*w~X\;Fǃm}DpORB/fMͭ==tKO v:lUR[vN:wrgy{7 ZQeuoiP%lR Lٜ~ Q{^>"Zà=PG7d h5z}~TfרjMfTJK|z1wuo*) &Ggm%Rc ^vElOqgiU.fj= HrBh bA vEl+ؓc0j:~Ouy,VwHoxJ o_*YRϵUnm3 E{tg{h:yZH,>s R*lVjq]Ǵ|s1 z1 zN|1[˟}S7`:ƻsAWyJ\wXSsk,K/Νu~B<`:RD%p<bX=uWxwkiAFՊ*C<-nSRSx4֨j !.Ks@G>o{Oyky!D*6je2j7zK^*2̦scQiiIчviԉDB)E6۝tӻ[+ Y>l-ױo2B\.7ug1آ>B^y>BL&lAK&s+bٓ%%ck9s D"aCt<-;l& +_MWU`/-[ U"p>W0vfm kUt-aݼŕv+Y.F^̊/}o/,A.Oe:yI%u:\F1(R$6s1{tӧLfYЋiiIϒWBljwJ25[7Fs?bB.O}Emq~s%+f{Kc2cQRs]\&5]'*ɌIОw>SL2TSs˫U;x+,;bѮ?U[n3tF 2R{;LW{x:A mF&#>H)O|b Sj *wѯ7x麱Ѣc$0iw~b:\VHSTSIUYmMq>c{ x0#N nuf})V;h/V{o94k/V9z_7Z]79xYا@t-kITmXv8vLz&q4jk޺"zNXdgQYr-Y$@/|0?'Ma8UK]N8|64ftT~=÷9N#8Զjjؙ\1Kw=SBgfgrǔh5T&aQ !dK'ۛarhz pw3\@/8ט0F@$Nݰ*;#>[uFp;DCN3 '1d'X ~eY\(Q& 5F>q9zѦ[RC[/7WRY$ni>_<.]7H޺g:\&:e5ב0t97#Y4 [PT1e"uf=!ToFj^r"o[WR4xmdbXLjtWZS3?EjUpwsBOl6ɦq^~D܍}?5Ý U+Oz"}^O+D?hki/VswpM>ϥR7vV j:$@!h:mveL1C咗u+ZLĭFfFخ ykbi̖+ҳݙ\A=CN vv2q!w$^r7́4WBǒ =oH'w^m?%-LXly5xq|$Gw7uY ܳ^= jpS'Ƶ U v\ 9UR 2' @X͉F'l<+GCtu^5]h}:ݮ$SQnFz8(#>+@5'z@];LYKH/D^`>Lqk) YK(ec$ʄ/@ojso?مFi0ҵXPu@/װ4󭲧`lxv.{'s%rm6Gn 3 ;+\um~zGǏʺs:p"B>]ԙ>Stp@/"FZif{&`FC; ^,q!mAs YLf1GoeOwLp|FX7>BaRx(O6Zt>|Ɉ*OQ˗t7G8Q]?؀tSGS?z6T[mk =ЋyzYФ~z'/ړկ6b}]y^Œ,^yb50>7XeO.v!jDs1>ݸ'`N+-l,: ;c\/ҝȿ4F%~N:c^G'CNakk~=~iȓI_rmc_vvǫSy!tfv]S&Q?+!V1n,lt>:a3h Ϙ1nϏdk=Y  -+N+A)OQ,3ɮ*+oO[oRS->G$tqe5 &Y3 aBu*l* ү<:q=cêl˼R[kND<͒;qs'wP6_oz[n#lzyG]?΍̦cUMthRnhv#9ST)zb)c)*&1oenע^D+D%gEx?TB<YGrN'+ԙL]̵JȦl@/ȔO-NS۵I=hyssR VeA/xQ6Ghp_K?.&4J ouEi@/EYOΫr):Aݸ>NAՙ|A/ j !_k/xDz:_0/v}A7,dNxԸPE', `5|.O~8II׻BSWeBn0 ǣCUs-q! F"z1 h5w8FQ6{5 [PSjpgYw28O,bĝebtVSa<ʲhD)QN^d B1>EQ叞jjg,c ITi_QTvcGǏXDVHv&W\&b j@/fy>|:)x7C˕ i wěi2K6O,f>JPo6C`i ;fmrS{3ʄG%ŞXTY9E;xYM}{oԌ ĩܞȞRa3aYFg+nQ1_mGǏ'_5d:|YŬO,^LPE+M>\HN:;} +9bQLciN:P63ht#ۆ^D)4hE 4YETKƑS,Ί)Ԍx/ъ:&t^m$?!Go;y}==YmYmc!&F 3-0Dʞ*{kh~d)rK/94ͅ*Hb5ck#' yGK+N^k.T-~`'2! 0O3B:.4y0ҵ,PNz扝4Jn:P#2dbЅ$NEU;7n>K&e9/٪q{Y\@/*MMy 9zv.YtB/b|B-J2}<^fd\VO'X4ł[%N1$C/ dX@W3w zeBމϦ/Usy^dMTY"¤*Zy^E{3'/SFnZU$\@/"b2Qyʟj{,s`)tB/@ƐhoN?hͧUrɔ ) Q mγU$NUH 6X|O<[%c$tB/@TJs`Z\dI"1baWxd2c=6s9ᘋa^/I\g^=s `>94PROfr @iݧOqFU#@/ @ SGb} w>LC' BG 5G_Y㝯r.`.D37 LҒb\"JU+d26õ.jzq{Z(|ٚgs+EާrchLc6~HB<[? g|S[,:%$o<8ӏ틧n dr . |MD_rzpq4{FCMfN?28_|_8!D^ )k>D : !jSxn g;, !NC\rd%&_vuk[ty**|^x/' 65p{2T&f/,i{G:]*H%wEx⫛ۣݒUDB\\"_/!)˜ߟ'[$.Yϵ'ozQa0[%E$Io_ܾ>sUmVdJ0ry*a)ݛ\iItȆ_D{"T\ $>dv4!zb@4_}Tҍs<ǡ{>˶1/$ڋR-Oȧߌ/'ݮtJK7,-UmIIư`řvrw\_BDN7tfu 0$ 0w;Eb!)ty@/BߜL&sJ- 婼q7tu{Z`2<47\E`xbRB!1G򇯨.], _)̷\Ro!΁aO;&zA^o|#hɓ7@/`nRW/ ܉_H? --eNte MӃB/[1Sdm~z@-̲z@ok=E(F#;tcJE1I#}uΎpo^2f$`M۷cu.^Qt,B&>.O{z4}3IBHG!Y)CBB~Kbn' ljnyUIE3]iյ*|bI{Z.c9 @x\܃X$v"P/74z&H,D,$4d cauO{EȐɤoivB!́ xa-!7 Ԩl1tn7~bGbh~u:L& ;_\"o{g @/ŒtyR5H@L03l7Y4t+7V;e@/9nNHQUb4KYmV#ctn0^D25i&d L&3'Ac+pExSRRS;=2dRzCl2iȐHIENDB`xyscan-3.31.orig/docs/fr/whatsnew.html0000644000175000017500000002510211473310265020171 0ustar georgeskgeorgesk What's New?

Quoi de neuf dans la version 3.3.0?

Il s'agit de la première version multilingue de xyscan. La première langue autre que l'anglais est le français. Il n'y a pratiquement pas de changement de fonctionnalité par rapport à 3.2.2. xyscan permet maintenant de vérifier les mises à jour. Cette fonctionnalité est encore en phase expérimentale. Les vérifications ne sont pas faite automatiquement, mais doivent être déclenchées à partir du menu Aide->Vérifier les mises à jour.

What's New in 3.2.2?

Only change compared to 3.2.1 is the addition of a new docking window (Plot Adjustements) that holds two spin boxes that allow to rotate and scale (zoom in/out) the current plot. Rotating is mandatory if you want to scan a tilted plot. Scaling was added for convinience but typically will not increase scanning precision. The docking window is not visible by default. To view use View->Plot Adjustements.

What's New in 3.2.1?

Starting with this version xyscan does not handle the scan of tilted plots any more. It assumes perfectly aligned plots (i.e., not tilted w.r.t. the vertical or horizontal). Scanning tilted plots required precisely aligned markers (in x and y each) making the scanning of perfectly aligned plots (99% of all cases) more cumbersome. Instead xyscan now allows to rotate a plot before the scan should that be necessary. To do so use the spin box in the Axis panel (next to the log buttons). Use the crosshair to check for horizontal and/or vertical alignment.

Due to this change, setting the markers is now much simpler. Instead of setting the markers exactly on the axis (which was necessary to determine the tilt) all one needs is to define the exact x (y) position for x (y) markers. The other coordinate is not relevant any more. The old square markers were replaced by gray lines.

Other changes:
When all markers are set and log is pressed the displayed numbers are now updated instantaneously (before the cursor had to me moved once).
Fixed bug in error scan handling. Error handling method (mean/average/asymmetric) selected for x was applied to the y errors and vice versa.

What was New in 3.1.0?

The crosshair can now be moved quickly to the current mouse pointer position by double-clicking the left mouse button. This speeds up the settings of the markers and the scanning considerably.

xyscan now allows you to store the scanned points in form of a ROOT macro. To do so the filename has to have the extension .C. For all other extensions (if any) the data will be written as before, that is as a table in plain text format.

Marker can now also be set via keyboard shortcuts: Ctrl+1, Ctrl+2, Ctrl+3, Ctrl+4, for lower, upper x, and lower and upper y, respectively.

Minor changes to the page layout of the printout.

What was New in 3.0.2?

Fixed typo in marker position dialog. Otherwise identical to 3.0.2.

What was New in 3.0.1?

Version 3.01 is the first release of a complete rewrite of xyscan. The previous version (2.09) is not supported any more. While the user graphical user interface changed quite a bit the basic workflow remains the same. Users that worked with xyscan before should have no problem to adapt to the new interface. The main new features are:

  • Mouse handling added
    • You now can move the cursor also with the mouse in addition to the standard method of using the arrow keys (see Moving the Cursor for more). This was one of the most requested features.
  • Drag an Drop added
    • Instead of using the File->Open command one can now drag and drop a file from the desktop or file browser (finder window) in the scan area to open it. See Loading Plots and Images for more.
  • Paste from clipboard
    • Probably the most powerful feature added. You now can paste a plot from the clipboard into xyscan. This means you can copy directly plots from Acrobat Reader or Power Point (or similar applications) into xyscan. See Loading Plots and Images for more.
  • Docking windows
    • xyscan is now using docking windows for the new settings window , the coordinate display, and the data table (see Component Overview).
  • Settings window
    • There is now a separate window that display the plot coordinate of the marker selected as well as the axis (lin/log) and the error bar scan mode selectors. Markers are not selected with menu commands any more but with buttons in the Settings window. See Setting Markers and Scan Settings for more.
  • Printing
  • New Help Browser (see Getting Help)
xyscan-3.31.orig/docs/fr/markers.html0000644000175000017500000001167711470616200020004 0ustar georgeskgeorgesk Setting Markers

Définir les marqueurs

xyscan ne sait rien d'autre sur le contenu du graphique que sa taille et la couleur / niveaux de gris de chaque pixel. Afin de faire une transformation de coordonnées, c'est à dire traduire la position du curseur du niveau local (pixel) dans coordonnées du graphique, il a besoin de 4 marqueurs (2 en x et 2 en y) dans les deux systèmes de coordonnées. xyscan calcule alors la matrice de transformation. Dès lors, ce sont des mathématiques simples et xyscan affiche les deux coordonnées lorsque vous déplacez le curseur sur le graphique.

Il ya 2 marqueurs (lignes grises) pour l'axe des x, x1 (à gauche) et x2 (à droite), et 2 marqueurs de l'axe des y, y1 (en bas) et y2 (en haut).

Pour placer un marqueur, déplacer le curseur le long de l'axe des x et des y, exactement en un point où vous pouvez clairement lire les coordonnées du graphique (généralement une graduation ou la fin de l'axe). Pour définir une position en x, une position précise du repère en y est inutile. Après avoir positionné le curseur et pressé sur le bouton Définir dans la fenêtre Paramètres (voir Présentation des omposants) ou utilisé un raccourci clavier (voir ci-dessous), un dialogue de saisie apparaît dans laquelle vous pouvez entrer la position du marqueur dans les coordonnées du graphique. Pour l'exemple représenté sur la figure ci-dessus x1 = 0, x2 = 0,35, y1 = 0 et y2 = 1,2. Vous pouvez placer des marqueurs dans n'importe quel ordre. Une fois un marqueur défini, les coordonnées que vous avez attribué est affiché dans la fenêtre Paramètres. Si vous pensez qu'un marqueur n'est pas placé correctement, vous pouvez le définir à nouveau à tout moment. Une fois le premier marqueur défini, l'angle de rotation du graphique ou l'échelle (voir Rotation et mise à l'échelle) ne peuvent plus être modifiés.

Conseil: plus les points x1 et x2 (y1 et y2) sont éloignés, plus la précision sera grande.

Raccourcis-clavier:
Ctrl+1 (Mac OS: Command+1): Définir le marqueur x1
Ctrl+2 (Mac OS: Command+2): Définir le marqueur x2

Ctrl+3 (Mac OS: Command+3): Définir le marqueur y1
Ctrl+4 (Mac OS: Command+4): Définir le marqueur y2

xyscan-3.31.orig/docs/fr/xyscanLogo.png0000644000175000017500000001443711311620012020271 0ustar georgeskgeorgeskPNG  IHDR>atEXtSoftwareAdobe ImageReadyqe<IDATx] Tu{y'jZP1U4jVM5Pck&F/m4QliF+y i+ QQDD^9]{gqr̝;3g{d-kYv-H1lI @2d-@2d-@ֶViΠEsJ 6ZLVWk "W'{  ii:мoZxb#XB{,8_=âd027*u: ѽJMs2Si]WA/sv2>^o ۊJ(rn;.ZZt_CO'Mk2W^՛AgHs}.~|`=mQ/D=!*mL>I'bc 4`\{.`O-4_puS2.Gg ʽ@Mk$@4mÀ/}YuU*$H^6M ơ3/K^'r݅ 2~mi$5P׋01'+wӯàKb??m +sV+c&;`0λ%`tQdž/O}_v ˀܛ_RE:W !9cHp. d:8IG@dO;w&`]zhdP#\S;'pܾ?^T!99?pyq{ l!'NQ {\ُPn$WI3ی$,bҟzx{κO> Ec2Q,z!Z&]Fk|lԞ% o:nW6Nǽ8,Y?i@#s>gbw @$f Tj&5o]Dq«M+$K U&QH=F1(ֈ.}GAO#ka0Zi%5z?uF鄱%g^j + m[+klJ6JY%F|ir!s} 5.c!!eqo&]xm}_N z4NGAt| |m۩wlNSG 븧5^.:=%k8cA;uk9;Jlw]^1 vXmjdߵ8ر;n~.P `ޕ/p9 lq벲<4l6>^sIi$HcFG}uP*Y4.jI?#7kjsI=fm@id3DޝD&RIF^v7͏Ľ93qfW,TDY=\@͢1`E_L(˫58v(f EksLnAuj%J\ 8o8d}{įg$~xmN&"2LJKA縧FF I=ulTЈ ;hx~ S>ukb)_Wb1&e"vǐ/\6W>Z[ `^GH?}ЇpX?@62'1 j)Pgyqu%Y Fs$ w~CUwXljZKńp=S!.UgU 7mo<r1 [аHEH$ǒ?Ͽ|k};-z6CR ɶ+ܾuo?aG `>nZ`ԟ?=] .FbqGXl9>8Q^pв ^,ajTv(0b8쪜b~6e L_sE6WDDf~"<vv ; ZD@X/S NW: <<ۍ!6n'$y׻^.,>ZKF."Z>@ӘHp ;ʾmNL+#rh 0dIn__pSo{PMȏkQMQ_6%p e{}syR/\(g֙]CqhBzٕEɓ݇>\ڙ;Cu9d,Qqi[0S͢:C0x8/򄾗~ "gIxIY3RŲw\`}8P{BYć'WGMyZ~p~$9v M!ܯ>x 6,PE1y~=.m}yߗ V) )3 !AcUg()BD|4F }:E=V Qq"s?Gl @T{͸]2۸6ƽd!IY@!;,[xUn'CS&q-N} #sJ1/"OH=Ț$|K_;orQǷwircp=cakS5'k ƀ}vn>3[qr-ty AjuO{>ms+yqf(_#9յzW1/ҏs$`ezX^>`7,'7l+G_$cpNl$zv9= iNQ_"`Sҏ񭧁_9g^lNK#:)GE&n6 ֺsq  yw5!;q pַR}fv#ImT93!OiWM|K!= |B~/p$~ARFs`$F: ]wIw/A*"  n'Z¶rp|;gY$u>Fe*ThN돘c8x|~2BoyA[. HV'!CQwLTU-]un*ՈWp`m.kW3^x,1*R;P]*@ݩ5U ['h\ˈry`W誺T-ܦpQR#U6llp]'j .q|Qؙ KZI@$TP_-'|P+^4f|Oilqb  MXIM-~TtRi*@s חQU*6UeMU8yT'TK(>H9l-7u nM^UE)ءwT#OFrJP9ޗ?e 45 )Ŝi?r@9O =uL$p 4\=K̭7$>`p[4S2)8$@ف6R%6. Ot"X?%N*S6# l~AvxԀ' 6,O'x ||0PKe h,fݼ{)Mxds,Ю =ؐVY gJr=&ZȒain+m&$i 4RT Oe3(0H D  [z:o+ RUPHhxj=1I`%2`K>nUs1&S#ֶ!^KD [0Ơ nQkI%6^zkȚ2#p >Lyi^Lc?كƟn`RU: Introduction

Introduction

L'interface utilisateur d'xyscan (GUI) est constituée d'une fenêtre principale. La zone blanche de numérisation est la seule partie permanente de la fenêtre principale, toutes les autres fenêtres plus petites peuvent être fermées, amarrées à la fenêtre principale, ou gardées flottantes (détachées) à tout moment. Cette section donne un aperçu des principaux composants d'xyscan et le processus typique d'une numérisation.

Présentation des composants

Processus

Systèmes de coordonnées

xyscan-3.31.orig/docs/fr/load.html0000644000175000017500000000322711470616212017252 0ustar georgeskgeorgesk Loading Plots & Images

Ouvrir une image graphique

La première étape est d'ouvrir l'image du graphique que vous voulez numériser. Cette section décrit les différents moyens de charger une image et les formats de fichiers supportés.

Ouvrir un graphique à partir d'un fichier

Utiliser le presse-papier

Formats d'images supportés

xyscan-3.31.orig/docs/fr/clipboard.html0000644000175000017500000000437611470620122020273 0ustar georgeskgeorgesk Using the Clipboard

Utiliser le presse-papier

Vous pouvez coller une image précédemment copiée dans le presse-papiers dans xyscan utilisant la commande Édition-> Coller une image depuis le menu Edition.

Il s'agit d'une fonctionnalité particulièrement intéressante qui vous permet d'utiliser des graphiques de documents PDF, Power Point, Keynote, OpenOffice, et bien d'autres applications et les copier/coller directement dans xyscan. Dans Acrobat Reader utiliser l'outil de capture pour copier un rectangle pour le presse-papiers. Rappelez-vous que l'image apparaît dans xyscan exactement de la même taille que vous voyez dans l'Acrobat Reader, donc essayez de zoomer pour l'agrandir. Plus l'image sera grande, plus l'analyse sera précise.

Notez que vous pouvez augmenter la taille du graphique en utilisant la fenêtre Ajustements graphiques (voir Rotation et mise à l'échelle).

xyscan-3.31.orig/docs/fr/overview.png0000644000175000017500000021061211470631702020020 0ustar georgeskgeorgeskPNG  IHDR/mL"tEXtSoftwareAdobe ImageReadyqe<,IDATx \TUgf}STE2%L35MJӖW%-[fjino j-hȠ((2l30f^fDgy>ýg瞻}U(  ݁GE@A  /AA$_  BAA   AA$_  HAA|!  AA  `LE@DH2+İbZjݪgQ2<^Q53&@;V5otg 5/VS`,*h&qEt,OaZ`TFJj&hlԀBCX;];}]L׎]vlJj?T cˍj96cTHeYAOʼnWƛ'ecz2!0F`t! Q0)oSbp xc)LN?~eRf p*uD]eI!)sp)鿢r/v93,^;ׅ)((( Xx7&!&sw@}_=_=~*haCTm.LߑV;-b,vp ƼR5tysϳ`X -'|-R)õe"2g4e6?/\9M*Z*$̕SMڸ] Ԙ4Ф樶˾7\lGh;|{;Rh(!>1cpR ;vC8#if50υ}j!l,g\Vxn(.P9F(5D/P썈m4e@Xul;#{jNP0yƆ)k 57sЃoY@B)$H"1Z[DaZRT=Foq~1XDý.lv!?t o=vG ޖLSF?x3BLܙF5vKbƔ6>f/3f e iA1 =y@`HJXpLu[8,(H 5J % _#6ݍd}! Ts8vSkӍN9%ɸ|Y.#Jeca~d"o~b%8*Su o`مKBC S圩0pܱ^ь Df nMcƮSEAÉ]I 8S|X b.\A`|h?|*Cf&A#W)R">س}SGQaHΚrG1&;%^Ȍ3샶bJlrX8$;fNYX byjsMQll,=A =V,6`yU B3Ufo؜1bo &}48 De2vِ/4~*R a^TlWV&^(?xgy[Ynbd vf($Z_ǰ]'{xg4YEaǂP1s(}BFpFt8/ S.抝곒 >>|Fg~[\T] . ^Lj23%. V2?wBbEhgw ܙ8 [7Tq% ~iE*T*.~BHjLj I+HN,Mw#-x1= ω Ak 2D[ b3-Uoj$1TEUi#|og嬺N=D#`[ .x.Cݞꦻ}! 8JDY@Bǫ XG~C0ʱ)?&q t͹S$_B?! A: B2A4p0 P$|zA$_~ H  Ah#qXYTA$_B(ȉgpF>U$_Bt ^B_HrEBE5Q[  ql''H'my[ t.mX?2f!uH҆7O-Mt** 3$ u ׏g盚xԵCKssD"t.ե =&ɨ44i盘лQ} c7'bnnNW &V(ϟ?___pom}w˗/߼yCP^~/Um##@'''Ɨ?~+{ÎE@H-,Lk$"k ##r3;; sdkRqTJE q%;;;WWWp/))QfeewdHH}`rLMMn BKkp#'HnVdg75֙Hݬ xWyzRYkz91={}?򥹹+**Ayֶvat\W @SSS/ÕJ 5N=hi>r3sLd-xF ͵XD9%4K*掃ϞpsyÿI9#OtײjΈG<{KVU^q*aM^8=/k E@+sw-l35QA_&PQ\nFWv]Y?e]b7,2\ uUW/Fxt${>W86J"~q\=+.\-(.ʱzdĕ›TăaOsk.~:g|镥.VVVZȈaV1h( \jjj@͠/vND_؆ ҧ^7ojBj/Fwy}]riSޕXJ2ic^ 3~kg^p7g)>ߓmV4dRȉ3M2z2 *j⁐+'ӗ|2w=IR U&)H0(p} _677G_|Aa$H7QT}諱/ \11;;ق|Y+I>>XJ {fVsEբޞ=2,og_uχ ng\'m2Ut֑SX:Tăy?0Hh}hbq5% ff_p]+1.i񿂍>(؊J-)qllМ)#JMۓBM]ZLs7 }ؘK|!'uzM tf8`G0 dp-A0%ysui : k(zLѣ?cEEs={RggS2>]t/2{77cOEdo~0IYf۞.{jݗz[eQvDKolll?Ջ۳gO>oiisNHd}!BgK oHEA:e}i*'_y E퍚ijɒ{@3#'M؛!WriChbbbrĉSNу=z_x1ҐI/' q19tKcen˓+c+ImGkv(cFM8{i]9` Ǝ dz!ooo\󨴮H71p^}Z#FZ'L/HdUk^_^qzkRCBWuiN &{7%Ju#L{BB'V~{i1A4?\~kA u62!H ^B?(+R즗,NSuJ BŒ8yAdz! ߏ>|f{p*_)lի"#g~-݊ʠN}!t8qy2AUaijdĹV_[].;v/Y}ee-_ʩ6xY˼,/OzXԗ\+nTy;k䵿/VBZN| *++cbbD"ц yyy 7(( Kl5a ڨ7r͟bQ/o6K"/ ; 蟽뻗.YWiuV!s}{NSCuR/m/9Uߵ \9x}!:5= bqRR!**JӗM/|(AC9š&ÁyhurYSg3yPOKd&rm;+秆iK;"C#ׅ B|..H||| ooJ*9[t0g7PQE忯VFJcGH^];\rr 77 >3h=`o߇|kxPTTTSSӡףgYcم% !"] 3O=صi7NXBEAu% 'iͬjd.WrwLʕ++1lH[=uc(A 2L"DwO>^ފ666XSSܬOWS.]MZJ$]4IJJb?/>rwx ؟@PӛI566v$P(455է%J4uF$..H.dg&x<3zvR &,,,ě̞!;li]rcoV^dTͱY(X Vv1Y_tiնk@0X3ӯZSR*ROyK~s߅mϳE=??2}y__>rdv3KNy~w|[=mN{uo}>Yw+>֗fD_#ՍmZja/;~G*a8zyg^o7_$d^+3cll~q볏8q>n'u:]}g}_yvoYim9wy95Ϟ;Gs 9.ڟ˗-ɸkwgjoVsY h*q&b$0jٙSɳٹv7#e?{b7t Y3f4%-ZQ ?W~>6y/̥ױ. $L/%_;w+׆_//t}G$ AW.i2qS $O(O)9n[ONn~E~ٱJũ36ʷf[{C£' &kiL+57[isc^ui_ǎɜLws@\XzMWL/D(7v#5 {ns1G^sWɫ-.`#0a:ޗ `ΕXxXx Z%WW$yVp[\z?FBVsJ%;7hTQZ,vJyBqzנ>]dխC!J|?Kxtߴu_T/]ǐ ZOܭ|e7ў ޡSʤAkV=7N›W~\;o_ya?^4DOcFo>5O+/yes9x麓_lݼpϤ'NۺzYk\8p+Ì8{XK/n}})WL|܈.#q_1ƣI>5i3ZPĔXxHLw2kXs8;:[Kw'% -d2fO߶1R|nYߝɲ߸y\WlݍBtK?o'@4V7Rrd߮mX"0Z3f{[4IאI_w圉/Rϥ3RXz#B|!+Z}[&p(w7 A k܌3,zGMop0>>}bPopk?񸯗X&Cm]=:"زm8&ONs$-}?sAxǽ\U볏Oس9 2kS_rRLo蒎tni/-8[哾GGG{{{.x< =; }:񦦦f;qIjz \V\ "￴)"BIewkZg2QUhbSAֺ MOMQW[ 憆7$_8Ǝ1oڂ0K9$v(L?s.WV]Uw#xMﭜ^_ƫW-xpk>ٹ=39Ju/];%Ҟ1UYչs‡*nsOYg 3[Nќyży/_Nz:ZMs~osQXӔ~]={{ߞ>O}s}3; f:7eU9x60<<0o> 7u!piə3jN|na cnku'&S~~{ZMPQ;Y˃}L1' 6<WD f'  &%vP&?w,}wr]v59{6-=z+gR}bę#+^|&?t؋Bˈ E6 Jh=H]_##+"dZw3mеwcb}n*pz?2D럩KWm>rƹg?Y9iK>z 5ט(Y_TߨVu_+W3VG~:9$Ԙ(™ݗW:w;,K//w͐?\l@lh{dhjZvcpg5>~, $ݮcjۣHjaf6#*_ mEKYM}":{uxD3.زaMw|S^S%m)~ӥl+&%:K~/fK_d笅s&'؉QdmFB[L05y_M3NqxOO}V~ntGǤTߧ vW@}U~cC o~Xx+4{aO|s*pS%9۾]?cyF̧j +rV$ |9-L0nuC#' &`!Ď%o|OگG/]븾ZIEC coVFyf$_W-x49A۳]78&_peذYNU;ݳ%n#le-aaC D"}1Vcg0ZKAi`qA`kkUׂ|Q3f~^`~!~!ʍH^ Ox^'>PpFF2^026* ~32/c~V%"kk( Pžd(!=UuyZfՄz$Ӳܹ 03U. P@[쭹00iBߔ/ l2/[뵻\ԄMuV(4+7՞3brMWsUCI2\o['N|) ua 6/|4zߝΫJd jbƣ_T2QgvߗR<_;{o@͟|aZv} X PVjE ڥ / k4ه/L{Y\nccT*էRKkdb)l%=Sz6rw]wK$yZ>g$Ѣ 52e;"zD#m;~\$g..3VʪU׀p)|^ىv! A(嗉p,lxNzaHnz|vͪL}AU+Bżݷ˗QuGŪZzzyy|:Sxt<,g$۔͝ܬQs Ɛiٱ˖ ]2+Z>.mgZhGDCvШVx`dߞo&/PS i9P f$ `weڷwTνrc[ ,;0AɗH+utbk甐Բ}9K[a@` SjV0YBk H~-BADy Л.3AAzn}H\I+`nӬANg/60Tp8,p AύGgKW'}y  t.5q~>oVB\.-& tAA>[_RKz?y_ZCY3$MHCA|nˑr|K~~=BAɗI._@gnعg |/̠! HW2+:b?'˗,/iS'O6#  q?l=SOzIBV}ߐ?b! }yT,3+#LyV|!vVOg3A֗I~4IÇ>qR4S^' HڂڪC+.^H„ *AGrqޗۿɝ<+ʫ& |uje6%~ȪeX` J--&f YG[$[%_;]l:1`P&?mbB/[w#~xq!R[?o:)\Wo@pUEisGW}46?c#fg UsFnupMiN :{Ϝ9/!CxZT ZYY=zĈfffdx3hZzl;)) XWk^Ka3=^3]qdM@gi7NnO@2eŵ۠EnCWY$qJkUKS^tbEzOLp !@CI[_tke ,/S'2.iLRBܡMaC]nxh갬NO,DF (k9{t:4z{=._,J+  hn޼%Bxdrرc(_@ܱxvaں{b̪NNli5:7?ư"`@p!$ެ82e_v:'U#(]!)~G yo=ˤ֥O/5$:cm2Ntzڹ׋S"MJϜ؉=\jeFska&T ^/ve󫯯ӧ|«>???22[wy|/pKR s.heA3]a}$' ,]qզ/aοٕ _bWXEw(wQ([Z0`:"_ l"v:x4ʋcjT0!kV,7<<vwGÌM*OQ ITT {ըxtԊ}&nub嫯v@ d!!!/`kk KÕ/bMMi.b ) y'_@N}=\ZoVu9.[xkŵ`uKSf#tLR$V } s3_`:'<263)ݢl3_(wz* E¹sfffVUUyyy3W}srrnܼiog׫W/>OŠ$^څsͨ1V=vdcW3NƬAf,XR Møs9<{oE9qѾ/&HWV/]zÕ/x{X5lRX3tۘK A, Ze)ޛ@(6 %E9{l8gDt(.CAdWf<{$YP&{/A_W @KV8y]V?g}+x^y}zdFM7ga٠,ɂaբyJdm63Ax< …NC@! p1Nj(ܙ /z{//\s> ݴ9\q6g3PD6- fMvT/F> ݾ!m9SZW4d.M $cVpNNNT ydX")RH?g 7;`X@|<웶_|(8AɗVV ;4?Y1j:҈k-D"F_oA|!B7Irrymm.bGt.kiiI M|QEWW.٘_9xa #F M2h3BAu8oj1chmݥƍTB5550t"Vir:ǗsEQ7`J q=4ƀ.Ƅ!Jݩ;~˗ׯS9|!;vanV.@]H+Nk9Cq 9fWf|&^cz6͘xTBr0t+ v fa chRڰy//3f5BV,3 T x.i֠*B rTt} =/8.ɗ,,\(-ITwq\ *.> ^-Ug枉 ^E`@uy K=`iZ۶E˖y_:w Krqi}E7ͧ*qiʬI,  8%UG6rv[:ԕi 333뻜ѣ{y]]Wn\.777x ׏Lx(bssL |}r 7<,#u]a+-@ 3.Gϗ fb "m0o s Յ]v@]\k?x[RIm*aZȷsg{rw=UmB/J999OZYuh/# G>3gzmkk ukd.D q$4ͱĶI^ڐZ $~J+@Ѥ/3pC}TZ6hNj2kvcVY0f~j[@1khc`2PU0ui7NҤ][8w@WWW^!!!\.I&c+ϗT9yi̕;cG^N9|V4!5q@@s HH YSNXaLP.dUO=Z!HALdކ{FMFr`@N<~sil'$TH1.B/&dgTbABjidץ qoxY|iX<h)pX]NG x?Ez뼹KUĦ&HD(gϕR_8 bʳ˜v h27 i gQ5'6= ~8o.kۯ'> .FwW_<Ւ7:c^\T nCx֡6)wkeI̛#cIsK@AD( ###HT[[>q;z\嶀*?-c" UvϨ.]- YM;(u@e/A= Na*qX2/(X;}D"<p,AH fTF/f B2.g}˃%B>Ӡ:_2I "hY2k7iEڍAanjmR=@6gVSzͅ9,Up8,=G>P\b+.*5۷o4D;3 饅؈qWs쬯\(?ѩ`??犛lm<RFR3+ilRt {wokB+g4AӸ A" zC Cj@&0$HT5tJΝi 6#%D n,k,A0?@<v-J]w̫A^-:lҡ~1E"Sږ@hƝmrT` P'LQ&42Aʯ.o9mXQ0N?ѣ0m[Q ڐH$B9du./Lt/NclqoœsZAj>>>죌 :2a?s\`/T(@@{`bʴԠ`l; FtauԂrX<2 jzH勦$HǞc)U@Y:=bJ]3k0+j=/a4ܡ iګv/Ydee1{FIuaaaUUkU袅V|3g44}u̎>-xQ o/Lː9MsHs#}麫f2/(v^ ؝{$`v.Q8J{JsXG&0&(גAH>1 pF*_&* //Ї2mCpi.þٛx9[Խ0KW+Kvqo}WPž4DReʔ)KO+xxx611rRߟ=RZPpr$ yLbŇ vm Gj鱃-#WI Mad Qp8RG![G'dؕ9#mBZA:3Qus@8#1=DPnTrK4i7Z,j }[X4#X[[:TillܣG77چ.W@(i[nִu؃~dH:C[q>(╇$#bXr♆!HM  >mRfwތ=nmhf; E' =jwjס@ΝG5㢕+Kq08y쀷ZMܗrx-8(&x }T%=zTզ*#e!ֺR 6V#ARAB 4`P gb8X?2.Pv!jo/mHUxs̬ FSoc}Q;n 1>=%_J$yZ;g]^^^|||llott4zσzjOT:GˑȪ4'e3 NdCҺB\A $N;E. vObd;Qڍ htq*&4]#ƞ4hbGaQ >.Hծz~fZ&wjPGNE%UNq0/MR< _*++Ek}aEVCn)hNj}!<:2OܚkW\ʸRVR "bXE爍ްaCBBB||<[z#NjK 5Ϲ^_x"H `m}Dݺg/*(Ò/:۷ߺ\<<<\,3J0KG/;|+XQGo"jE+(Y෶Ifˀ߾C"pqq _$*Q>usٱse6MGKShj:D׸PqJY}х[ deS`?5\ 뭘 6i;bŊ(YA*{YAlVu^Vl r4uw2k;d+}pjE/Δ]wA5_pDBo!-rsǝμmNIB_BqbH$ذgݭTe5gfJRƠV^;='z˜SWWU[0\Z"}).) DE GU T p}P-ՔP?G?4Ct6/ gVNT)i/PZ ,L)"bv!Oa;N Q~["0\]Rt 'WL I>=Ybfn;"y>jۻ]_6W ^z U9m)#E>PnʛC[66fKl=s翹o]]L&knRZ;Z&kx-~m %7N5>XPh&ct'VCCEMMMcc#(򆛱|pr ػeUrK37?$y<2cf*CgԖщP'O::i^P~h949rRp?B\4RV20NPL_89J Nrʼnh 5)H*#B8wa"ϸUY_\B8*D8-{Iv@RK,wD'ckLU]z 7 boo鼡p`_;Rjjx; QR=@բf}{߫Iִ4e֬_#> #r:(#(ɜxS/d_+*2emkV.FZa>okk{'|/,czϏLAmj?ޠrܜ]0l^zZp'sT@o\>x>I }!`)~>Ww!wi¨aRj`W[Sjec/ ԩS?uk^hjtiAo.\Ś DX'555 VR󗎛Kfs{:'YPˡWf5, O`mw[P?tH3+Y3~*Z \qT\,Ɓ{/CJhCN@ŁRYKHJJR +~U1 S\Rdcbz2{izLJpҚazk} j4x G"۳PZ \ĉy<ލSl j/l ;u^duPH@оZq4O#`Gѕ̮l>0dQ]q|dd㈚qc]z^lظekKx}!rDjw??7884YRvaxgkxy' ~M$–;&hkBϻbL<ƒ#G@:715Yϙ?G-- )Ӣ'2t)U ʬ[GPHR\n3f̭xZ}84 1 Z/U8?f;@=jLFةCz$_L3JѐͷpC]AA$_1CCٰqEBo 2N*#&.5|1iՅ^o y{dBnx>r6;'}AC1L aH:tʹoGc/^ȅO,e O& 2T)Cp1~wΉ}Xh[@xOFEh!8A))_]r{ٺ9,^٪e%4]%w!UWSionlV \ފ._&ugs[ڰq3hwt3oCjBC <4knnɩb{F&M^򅖭%C⋾‰lmNq݂R'u Ѿ9t_vm $AĉӧO|j.]:v(WWW ,,LiVJE/ƭ`&_R]UZx  ŷ|j0?2v.{ٳkgVa/N ̢Q\&11qMV:FBHyԩ\m=JkV4ӵd}a}oD3{ˊ}cbOŽ!ĴKBce2?/o5dA lHo=鎊7~̌ߖE;1: rX4441 [nCRy,+6?$L=w}yMsC)?+PX @j׍-5{6x[1{>2{&3$_(“AvȶIL8vP&4y˄F\ALUPǍNUi$w@$np8|!7W̿k҃Rۊz/vvv666me$6BY1U+O |bS; H988K{2xOHəu1W4abJ$7#ib89=ơ8>>СC5j~jQ >@ %?(~y!.|[uA~%4Z@.sΞOyYwbta}ɫA 0/G@ 7:2/\.߶m[CC;t:++oFhZ8L^Lrg \D j a#dO.URwX.LO:Q&, Kp @؇QޱiE)ⳑZ`2xڬ;&)]ڂxt !)Sx_ڔ6Z!1d, m½NbOA%@42GհHn}Q&U'UUYY'oz`{_f3hn~|ѫ!zb1(޷XVVs{W^5:}DKc{?ChҽldP$/ t(hEh(Rp \,ɗVUy'XraKR4J  z8<)wu[" _D)(B JNSpD7o;?i߮rm޻uISe8[&Ow0o#pBa]Ƅ*ފ[[6lQd.Ag$kUr`_(vK_PsnA7ךӾW! 4 /Pt \0}Cs/`"Fd q HepkF!KUU5h8>b=~^\YA,L&B_" mh +1)H«w rEp]Qp!Ytdd! qjR~^}HḫmI!{7!WZ œ/h;i?g)K՛g:)bBÏm?G҇kA·#fuy'Cp*NQ}Sj fJQ&9$t3/\B$ƾ.-zh>qP`b@ jft7/S]epb3/}wӀO뾰XƐ5/|yg=5i_ΒZWWWmkhh-=Amy<[[[V|XLrK)((HNNNHH0 @Q d vb] bbt "Sr]y|bb)//H$ꮹjH|jV <2"8%~ RVz;]?0~J#?yKHvΜ1{ }e졢h;䅞%ϫ< zC%؇!Fn##ݯHRV0qC!/=&EUKaaDS‚\AVT=HЦb0hűVf'V0BB*2]cT%K@ḕF =BC4 \Et\@l]].$1t߂ ;ht@L! 7}lظ>?9M^|mknwݽ&f|`=$Do-,b%yڏ. $3  蕥{c!2g*lҊRud *H> !mT.yavl c(=G ( >ޱ|;=&ӗFسg>su"dC P@10@ `Qۇ=J bՆ, [np%> 1k I8ʁ2T FM)|g#\SR~1ZAr9N+&SIvE󨏉n8|rnn@ 3cیVɩd>>>flΣ/ #z+}9h] B}8k]`c>*@? Gg|_ɠQ(` ·!;a!`@iA2ӑC^:/'BtW@#wԩ/>ȣ:m&Mj F {ウf:tPzz3Xf/\U8jYX76( HP1p؊(-і'Ӆ|"@ܤAP$NO J@@hvZZKil[ht(I!)MMMOp„ NNNV デ-wuo)EyL>OQ$_$_>bZR*-S[[+MVTjggʖѶ2_΅WlFMUr>qX_$ j@Fcaa7UWW 3l} }_x{?u[kHa1W5㯯O0/B)\Dh.2uacbp>Yٹ|Xleewʎ}iUΪRU@4Y|Ec%;ïJ'4gʗH}4 ^Q=,rЉQʸk>I 9s&DD23)SvGR {SIFTV={AB_յW9EWS=bxK̋ O=ܬGcc? 7>vX2fHd_Y< K^kQ66l|1D;BCQ%tBaaQaaqH8dDӦMknn}>v<73bii'ZZZ caa̳}|+ "/&UPci6u_BCK&nڪ/GM~ٙP1-SY[`iŧw)]QmZe8󟿼[U%fFG0kr4'f^immuA¬ A'],d{I [D"B \y O A E6nA?Ff-i ck J0g*FN$ɼGz_QF11A(_:@Hd w_nHq}I=MGw 8h/WJ4-TCG1HܴaǛs0`SqK_p] Z/džHy*xх>\u,PE$_@z$Q0##y&K!Vd$rxCO愆aDO*def3|_3nK;_#Խrʏ+jg<0}W?^|{WIIe&ш93KQ6eD'5yƳ~99Vfv}iۦ7uxSRUU}~O[k6$b}o& Qʏ_0FuIcm;7.YckN'O8F;+į)mq xb袓'co'N[+zM0iU_*+״\l=wNlu v}!#se c%̫Cgm}kyWec=%6VVgVIcq:C:fl5D=nsi3^wW}ߐK:)y5bSpjOc&Gj_fϜC WC2{xv|ܜK߿$_RUU3OW]-wOj)C%%%xZQ4h= @mM}C Z\٪ka,,yl;KvA,8g[NhՙkyI @dž|, .sR^^ Ym9 }b踞&}܅Cdۑ+go]'MdKA} _:ӧg̘1(Ez;Ӻ/݁:)2wǟ}qu{!OplfTS7#I\_'GyqRUSS uB!iekkܳFV/y|!w]O-Zm DdCp|I|VbVe12nظ9oKonFB7Awۤ*=z;wsϏxsl4ߜmuƆ_Od1c'NOS2kmlT}& >xn\sgOP4Ք,qvK},(eb<^4Gcչ|%U\[]?M쿜|0:J jnnO]$;S4Σ˗cOXX0'isWb W=ߒ>A47_\fica^sȝPcSË*JKMZ]^"v_4k*RqFZ+s/M Z̫?$|<\sʽ|+;>]#~O̖*Ұ+~y:jݗ6jk:тvo~Q~e9Hz[sӾ;āKL'̬!?tVHWD}\lWTcOywLV㲿U}fUZx%,\T|1jM)z} ve?WjǑw`1s_WPğ6.PwQ섒B{Wq!.1UEwɄBAߖB{j[^ۂK =W/Oms)䟯ɮ<* 73[y^}s~N뒝)"=f?2yPBaDDN.߷֏|qtt=ztw\Cј59u쫇5ٕAܰ#l4.6pgY&bj5U;T*w䯟㷘 a4)] ڥ)]EDgWΊlM9[cXi ! dg$K^KD, C- ueZ/~ɦ5+@-CBBaUJ1&ٕЀɾz4V^ɗX ]L(Ue"8(eI"$ʣaajV 5 6sSMIFBHpO$_n zxTZ~' P[pvDisB7=?/BPU]=8`{ϽRBXFA Cyy hlg̘ WAR?JB2i!dŻKzU β*r_etDB|ScKO?[D*0Y<á%4$jnM5LT3.lw0õ؎'2nBђqdѠ'P4tBjk}QgN"?w Ati-C\!Иµ \eL+J7ɗ[*z8^7,[F?\@ߋ0^$g*h@.ChJkB)* P9h 1&FUB] iw0e>vD:V#̒\RCSWJ'.T%-1.msOtǀXjMu&)wx(HURp/ nN9sڼd,#I8$e#Q0ݏl(C8ۯ 9j*V4@Ï#Q@d˷| dJ~U7k1K -**FY1 q؋fX+%7 B@(S'ݼsP34-!1uE)T,٣;'[[61m腥-ƙv`ȾZEc;+.pE*iX0>VhGfAAt٪n": ?cAÄgFT1o1;as'NOf{V,@$ V-iV`z#\$زq?lUМX RyWC/kSPl8 {VoI?hՙ.1  &r#ZY0/ KwFa'/HG!FSZZh7XSSj_cveڦa4kϰx6m[Rk; H"S @q2U 3da/~jMK/dҤcOg()l"^XƁEOB:c4d`ZA[8 ;S_1Rp/o`=crQ12C~.N҆L٘ ; da4 ϦVB$y]`IX&KZo7B:vL.mmHem}Ȍ(GA󞴌ijp„ a\|Y CSKJJ:4mڴ[#s D?8iP%ܩHCc8gb7~dt7{nW]m-(b@[ٔ4K@A2R%R@eI17jB2Yۢc^z\[]EoMcx8 A?А`)ko+eL0UwsYuWUk[F6kG;.8ޢB#p\nj|L,Ug{pٞ#rٱ| V5z9 !uJ킿Em#}^CچY Y`tM4 Ord&7뮖h|]oh:\QQQ|nŭKp~{ZB9sMu\-ª쫇1qj4haF]khL>A;vїYK/Kp5`RܐKƲs5Rø၎ak5|/fU*C<#T-<ðRpمEb"ٸ~i=[3?λ}'z%+;/ho[=~l5[v/[78y8-OkSVh^\8ϙa N6v ?3okn{3hndii+*+/_hyֺiĕ+Z+KL(SZoTtɽ0'wJjXFB]ufV^hTw漢 ;]\QY aBOo)O ɨ W~]]WZ\rMef&߳\U\7v;̌[ks#⃪YEcTvh45‵U'ٕzQ^/1gDV%# "  >x!d>$1s/`W.A8Ȕ-1ʴT0:NqfTpJ }Ձv[lyAbJ6KIUƍ[ҽ̹לĘ"7İ\,9^lma#UeM/62_,N:tr}bL_77CmCpF>!X0-LM#8 .---uuu36_ϟ{ok?$|<\s{Vv ⌬_-|Or/7UgTY՗E=t^[QvIW[{=Z_ X˄#l?'\okxWyغdytw:oOg54qE_|6ڍu6gی$9zP~{k_} s͟5K^<hP-~rأP\!-Xylt͒p^k5kꪯV4Oy8~j뷻Ϙ7R`aimg̞ůg&9ӵ]ulٗ!R 'jy]%V&E=ï?#YuVAN9_vǝ|mKKeiUTlP82a1 wAuxwc6ٵE@nj ?sRH" ?Kx8N<š/ {pge/8 Y{]wJ1_UՎV߯O<'܅c/|>m_d_*(6b{k>g?lzoDtISgr^ 9kowhĄ>r(8|Vtw' !v$`,F42Ilqy8G:y̜o; ]ԡ:;$0`o?~HKDUQw]2qɐYW aV=^&#`ҽ[bL{ ]w'|g!-ԟ*n@Lz  KhACwo ݽ%4 :ƦmtHmM 4Z6,, jNŊo~~תӵ7%7QeS:9Z[- '[[uh[tV|N8]awߛ6mײymijW5r6WU_xjV1֌pϞ=`zy}{ _p?6t6dDݩՂzEWqIdi:z ā"FW|CUuM\"= -]P8::?~ܹs7\-RSS{^J-ꆲCL[Լ¢.0eQȗA+555 G A!2p9~q.V-7%κyF>8|\$8p =.qV-C ]NA4T&AWO{Dz ;=;dmp<^$8 b$a]̵&6 Ru'yǿ;? XcX\ O_wm\/&`vnv "f *ø>6eBVwF 1%Zv+W5ưXZί]A˻#?ʀ8pLrSnұVt j ]Zq}|  _ڣ-8J<;;\N{_2!2c3 B8.<;xG!\;}i'=FvwZVyF~/^ [PTp1M\]5<T]?SoXT $.^WȚ Z@;pxfo,v(k+$sm{u]سppt`Q_1+H _JeRށVBBuBX7^zGήl<<`2gči\}Q\'(2j(8MG_%mq@ xp fv1 D/72bt7T6((mD[_W=B_Si!]V ,81 _ƽ."A/+{D cp.iKZKHUR>ِM;sv-b'-1JHfCFb].N@DryAA'''C lAـޥoh}C.zai>ſ1ε884fqP^Ѥ{9 Fq@@u_@,$^e+mR'NhHn/-c"~c«X?B"P0h-=XbM>z<⚯,]Yaa ԯT<7wv~Ѭ.۶AYHXg4//\@f4ZdAPh6k;J(O rt<MdETV^N`U/ [P.M}/pcܶe˷>>>?.lxcc'1sN1{9LۚK-Z|J'FYk!݉vҮTT2bk|w45T\עi4`!k87z8P!P.Z: mq~ vB ɑ8 ;S@ &s#V1p9+Vlq Ņ{ spWp'qn/}~ы-33"; x|=/sX +F+_IRMdm(CϦ$PH?"Kw}hHUUUIIIaaaGI^h-Dmp'q dn[a:պ1䢅h ٷ7;[6RlgvFF‡4f!Ӫ)l^^>Jr.< V .RGGcWʫ @ By -z Bp/0;{X{040}RXXTĵ/fOoE'-,~'axO<~}R}v S&ST0s/ [>m&thhaJ] yp!>7e R Y_h  nB  HAA'Vu>q,QFOB>>eڹڅ-^!kPbrA7U,۶W6.EM\?111l BXXX{6hy%y6U83tF6p>q|d!#_\4YUĽeP-@WUՠbߋMb߯h5Ӏcy@H50?QL@lگفaxlQ'dޔTnMD_AGD_)m0"$iK'e@s S4q -g>$BnyaNg:۴ r?fƲXS[R{4  ]pD<*p|hr_:,NgfAӌaI>>d;3gw[3eMɗHZZ|&&&Miu;܉';PF17?sg7Uk[.-e} a"7d]XXof>Z?U;{˘f6G|o7oy/6A ;Uw^)$Zu״haBA  /AA$_ 0UhVSuRRC,gQQQ%ŃK^ l]22%)C$_=#?95?L]x mkOO4×5~__ہp=dA`j-6+ҊR(/~`IX]r. OZ7p|A- >21h S ҇*-&qRv9~qhpć0Y5+Z8LGyBD饽uw{'%Kh D)㭞BJA@|@c BY;}郘(U`7cnE@b% _2 Y(+{Di[Evsndq@% khA 0g«} aE6Vh*P6/qzr7+!!!a̙oCF*P{U./xw`e:Nl~T, E4Y H ́I“@(R`_=ζQo;j0PNSԵAF{ &&?'˓Ȧ gA`- yay' -3zTȖ%dSwY-xd|tr[p64/WIr.N8#۹ȁ&OkQW*ko`Ee(I 181| 2;E`zr%7Vh heauaKVg&òacc }ūػꒌn/@lU@d2^ BlSw K+S OJ}lk z:W&7\" 1p:oPt ݔ0ez߂{{?-JڨğݹrqY8sGMI[bG`<~$5vBa (>qz2 %/3ŀV76I3KnbHA[W,2 }~Ƽ: [+ @-?"v;vj* HD"U@pv ;;(A#=f0$q@e•Gޱ ep)sn*8J>gDkA Mh>7h?ca.ȋvE#c:&L_g9CԌٔNI(*@WUچѠye[!qz2\Ƞ-A-kmmZ(YaaCw ep]^v6+RE>8β6J#C2UN8NA4Hu_0j†2lJfmϥVrX./ czP,%%%Ȇ'|>_,S=|o[S² B B yDAACw JSa /0LVA=:  BAџP1Y"6…|4׉ b(Cbhɗ5DP0xࢽpHA|!X*  B%"7I'$f:JO~v<N<݇paFv@ 3/5 ]?B 5sG88pb%~3Plc$/8Nٳ{)CP 6Akt-  B <_/H',SQ&d)Sd]sm6 !Z';R^+dW^W>"Lһi܇hSna s &p h(6%rWsO}xZÁ~Q@2Rp.8tN#k($AD@CwM2leG$aȅgm< H@0OdT32U KҊR$(DD A: \?r+s!K c}Y)HmJ#cj&,!7e(cwBP9  At saLhyh˻.\ )B@(u9P:*hѫC(R!A!6D ZVJ $=iG^@/LSP)0/TE!( c05A(d! Vx:R94vYS&W_xW0E~ [E%msS|v}7;: CE|UTœr T*vA&_;[geg*3w=!eLvwhDޣX>w4g:^]Ab/( k4ML5Xc=vEUzlWXy|tqy}Ν3C2m-;qsDtύv ).>9 c˃_Xl,ˑET6>ґ_gRrW'-\L_U LðH$ttt<XJqCfCl>ۗnT+82[b=}M?{/U ;A|dN`sG?7n? SԞwVe, ls7ƈjK{-q/\;Xȷ5y"矑u hEgpCʥar(}^kB< r^6@ h4C/_ E[[T}%GU{Tc).7Qvlגl:|#5˽^\@Jd_ L]7t9oL@)_2[cS?j$ꦸJq!՗ z]\Ce4{~ZH!_@6/D"[ZZw(,, mmm0`qZ7qD|p8~_dFp^B—rOMDO669\2ov 𪈈8{>Cnő/ܯ޾{@ `27ʕ+^2ldd{9]z0 .(W9Opz!\bY@#=ٹ2)/,t:w۴j9.;h SSS("ˎ;BCC}}}{WT@8g-b!N&-bi]ݍ3yk;wd?pޚub'J.?WWZ_ QtDTKG5r"u݇ݔ 2X0U2))z(%fUV{2ZJ KoQr!{O !&j(xw֭c[GMpf/XfBhJFnォcOt5a/Ext1l<:D?y+ʗ޿}gK2iV%O)~0DΘzE9*  vϐ!N&-!iɩ# SJ[陋e7-12`I*Iɍ08dlfW3 ̞f/pkj@S񑑡Eխ#-8g6_F\|!{7vxL~TJ>rT}\Ѵ#}-JB\]i]؝vJ"x?NUTԓId S d3C`gcweSfJCf^&M[dB3c9FQCwd.銌_걌Yq_~U`#7|>0Q]]mnZ|!? %G**0?(4-g;H8bχ *+. oV?rmD& jxbwi{%@5ERqWkaO q6FN3fWսF^&zZ-o011kHܰ Tu>v^Pȣ\>}jba\M)u2 zrǃ^Ν8]9~%]ޘi^yGFۻUg>hZWog/ފ̪3)z(x`RhB[RM|7gWg:p&r2ޞ.aކG"80:bAW =J $׺{8wއClpx*/)"3"둍iK{uAD6yiuhMdt8"8ɚ_SCOv_OHzRZ_Xl^^v^LR7Sf9V"qq0}adfZfc ah4? kQ;sEj Jqۥofzxn7w|zAU$i͝ +嫱6xuŷ hcRf 7v7ԙ(Ce]ErQH!(Vnc>xw2wO"'`F+# 2=[VPy'x .k|i()w2 E.갰0B2Cm^! oIlGg| 9uIWC+ީ3?uu)L̒ ;dH#HGUKQh ̇7'㙘Soe5o ٛd֠MT6%#N}eX{y#Fv ~3K%E]ֿغ)v ق4;ϱB")ɱYrR٘CWs`M/ȏq.̋T1F IGlS- 9֎&v?rμeLNǑeM鷮*jTɭ+D0Ĝ'aĸ~JD**ҧzF UpP@0̒zI>qyoiJz^(_E.C MC i܀+-PY5խHe96>Ա#F_J8ٱy`O/K OEhPI2'mN7T L0:hT);O?ܜME.d5p6)-gY7(7{ ߏ3Yk+x2>1azL?/ꆬqbgȢeV99\:}hohc~Cs_pCҷ>BC.mP/l, ikppvyx|~hV 7#j{_ ==xgx\pAw">~$[~-vɧkcW8MqIAQJ|ЊUZ1}qkʳ ~&,(zPLY]<4(3›-W3rX߉]n [?D^TTg?d9Y/Q&`a!%`+]^qymz,yxGvpw0҂7?3k&7zAҍ"K}Ҙ*VR\=q)ȹoY͢u :U"AuRȺ{@uM]ل|Q$'¸'w.\{/kgd1tr~O}` kA?`+n^ Azz%nG~@{}!u#R ~^6@ Lqނ򥟁F BRKF Eb@BoJ?|3  uW%O)m00#Zsݭ+ʌN*4$*"')Zh!8)AXQ^^n`jR],3cEU"?5/H+)˔~ڽ5TՔdg4YdI1E&fܴ:#c=!&8;'kd\V (yFJF"YIQg`|jh-N,141(.oZhI@H341T 8Y)YM%5B>)ze@&fzI3B&$4adNNJ"c./,aSiDL2Ќ{˕T86!o̤dV> !R]%R YĤ'9kԧɅ) :4( 1Njy wf\z)j:u5PR'RjR$#.zX:/Ԟu PЌAZsUklɓ6VAc K3C"BߊH5r2 ϳ01w?@JfvMC_ ]+_9f'&VuJeoG0VE$$Y\RU\zq[P"}Fe.ٳ?u6N5~Ҙ!<9z!U5~GQV{yp3nhhqsU5whll#$Şٰr?l4<@]*꤫L Nn-΅(sU3O&!nl]pzq(zSg 22Wxfht?HJ ]- M *IT4+T^UioV^Tޘ0=&1a!!o*n(/M+!C5Eqr<4^ Be]EVhС%DPxJ[^^U\Q\\PX[e5* a/d*ʗ|u|+~%ZsX^H6e%T4Xyٍz_ d#Fmv gwdL}j|Y]Ԋ0̈#g-p|RFʤk.8BRS\:~u+"t)ſquJ`# -] -遦{z_lte?"_(nRZ庋d+},T=x !zuS]w4qXYїWB}zA0p9_0F31boN?|o3.FUȳ4#޼뮸IDB^W ð8ܒޚ$2ې?XF楅Y!/ZUUZJ#c O/Jm ؔ.]X\$ѸL8gq݅E OB8=Cfc.zvWoYaFFV~y)z㮻L ..2Inbʩ/}1u%am samI+jҎwc764*M2ّH^b h/J(HLJjDHfQ9+1K\w3D$qPHxgaԖjܙܫ IIN|N"൐G~9URaJ6R4yn 84˒"ލN w'/9x:D#m۳V4xp6C݆N U}i3Jڏ$Q*26 :}C*2Tk+ _8J L-nzxh^aBWSI1gNlN;}cD|Atnm-w ٠<~x~Q~pa&89+\-deݎC Q\ErlcʤS,nM :rBS5)HƯ;[rBdv݁q^$ { VaK -X鮢T4Rr_|Pϒء!Q^H*% QÓ@ʗ 5D*9GdªZStά`Y\Qg3to UxՁCl1$s-XѼ\y$QGHL& e|dPPi䥔{'4BR8KlX")QH_UgDf*` |jr<[դ$zBgFRbl:5+; }r af^lv\wq2yUnv8z4b]4{(g"]ȒFg#ljVЉzPl|0ϡ#Mao6z"Ss_lC R7xQZ"T/InNyQ^hjo!SlJRRsjbč RZ``^ҩ6+IΝ?~h1a]qhx=BYUӠ|h6(`3dۧ!YlT+c(zP\D6(r%VOيhh;.9%;wȨ) J ]FmQK&e0F/,oPeV'BL|gU4SLlEH 0odo7灃\$ tt.XqiEe:IDLo,&tWTΚ3c)ü Dg /Kn^#ޙ=uxgKzvZ:L, 3 ҐClR4o[;0>S!*.@?p_Q!B*苹y5u#;0`d|=!Hx+\ѻ|-AuU(u՞nqvBj1KI*p+-HXyJLD^ʤ0;=kl^W%R9 bXXqX-5Ņm&\-]wkrJy]{9\#ú2 $>1MOM)[ %uQ 0ɢ*4ʌM8xy9LQ݄>D34Vfdf7 Q1 J*$'cdL&eV B!ǚfw -v"0k"i+Dhid9im2<^41eP]J3.LIͭ402&)I FƦ-6>?qjrR2), / B ڻMA,<%iqYIVTdni**(jCTTV0@t (L,FY]^XšLb@#;C&JR5 a* ٍKd9LTFz|*pT3'nMձE\~Q7Ԇduk:tOMp4UU*z( APqmyXTl6[ ]v-H3()7*0#hDZ;{T3o,K֐Zhͽ~jǁu>'CdYڌۅX3tsc~]Ayb-lJw62~Ϩi_=FPWR bMok* 4e7:x,UX*+ Y<%ӤDZV) wB)l JK$- k(h3>iYġr#/:+*˾y۰u|魢{!)ꠣk.u3"%!LP4|z@[\.R𲱩Wo੧⣡jgʗ>+sݩbw-Ї9Q2X%H#RrL8\}nSa)Ȅ\.g@Nx:(3w]+˺;60\8ޤO{fʥquF-tI4S!c\w9!`Kk$sa3FF.D3B-t7(b}t.]J%2ӳfe?NȔ:1ii\aM2uDiRdpW(;}=i:$G#%r̤;[g*U?s_Eʶ87 R]5(@A&t)qoufɒU,cu⊊:;okrfؙ_}ai&9bV)06knQFzZ@6qʹT\5Mgh7nvoby+)h/O [ΛjO,m16`z۸2y.4iOA6C]e]Jk`ȺCf k*;t!_uB x̴y~E ]TZ{gGkRRs=pb8Xy.6lĐ{ll?wTV|Ti+;ѷ4ِS- o;Nh瀰2l^ku.+qvϞ`rSoG͝? :>i$VW,'|df3Nbc@iOwĄ* ç#gd 8{iyӧNc5rq(H :{Ѵ0c訽rAgY[h!EG~biiihTJ"vRJXCHѯ z% +UXNîg) Ij,57BL1CP(8+(-|=SE0W8G[ Bx|Ƴ؋S@POU=$W zCڋ=T :B!-6o?j#t2u}S]}Xk7Pw{U9($-ss|.-ݾuFQ=x订W]zG״, "pGxK{HtH Ki‡;6q;(_@cD"A{B(~^6@xJ?ǗX? Āޔ~ oE\wf}cH*=+uJ^bʤbyÐL*Ste'-)@rLw]ENZ]ɻv%J H%I^1R$ޕkWº /=@ L>;$R(U) )XbuBES)"t"E ٕD ,U_!~p6_y[׫MlQh([+2亥%&_m[12+fʀSI}[+ǣȗ/niX;sL=IԊoGTtou6'ı-O/.gsIΉtٗ:(O|2}㽸]tD6_C@?8Ђ4_waǟ?=mgH2qǑO6KKnMp`\/þ4F*_}xOn>7]d0mVյ!t= =o{~*T|n߹`GK?7ݚtMDٿ-bVs%m[^b=}k+I1?N70='(BB%bܪl{ǯӧRx#t)tW{T!* ,3TEH~Չq~m=VooF9zԴv|wxwq \0 `?Lp0"|x0p?01N&cg̶c oj7xNJ(4b.'nIaqp~Z7gC{ =)ab][730|gg7JulƯں(-He][$":~;}7}ز?|쏳v&ϋ NZky~~gfݼ}E l24<@]*+=u=AJ={4|<]~ȯ>5lWl-nLDaԆDGG>8 ɛ2*yS8!1Z0xz$ 7ϴ3k|f~F[K9mvԆ ,wzLK**Vf:|c04F ofB744$vȝ֥2o˖?jsI{zɴ?T O8PWubۧ"*eh 2)o jkP0JOjz T?@3g;C`'"oms9G&)p[TAnknVAh-{wBs &2ۻmxm[!Ұ-"iIB`0Q BD$ּW+ZwWgMv7`R]LMM0i=;oX5A"萫pH. )`FvnDSn2AfOnIn5}mi"'d@#tETa4D,qN],IErL79&';lm-1ۓoCf2w{  {'8;ZaPOhK>SEo2nԸĈ8LLmu6ݒZϻzE B;))9x-'vE՞K'&-it}P} ]YS~)F\=ֽAcӈvly! }r?@@Ԝw褤8ޖ8咙.oJs0y@EKDLNUiBRNhOoE8t`GŜ(-~QW -jD W&,A2kO`9}/!7Js,gVOM:K:Fs>uq~5~AcC_O o۲cV.w:w?#a M4UT4M` 3$Җ;Aa.]>{,sVG2[dYc/#/Vx/d'~*0-E0FFɚEX/-5 ϾQzh'G֍pұ]Euh=q3{g*R.-;6U߸2ZsqiAX @. ):͆y[{a6UTaf]w!'NWo/TӢ"%»u 9c'>[(}"uyHbʰ4݉ב^uG5 `H%.98uK*}E CFyIIJrK>uEx.jt2\k; lOFZi?~-<-T6σk۶f)nOX9ө Sf?o^%^v0rtGLeU|~nJYv988~%PZ썛 Ƣ^kO}e qG>"麫>wxyqzع~kaͨ'_ߎٳ]0}O<8_\9{3ନ [Z!AGY-.ޛ`iÆ_?ٳz{Y]Ss8|ewnq~_nx0!4{˾d,\yЕkP+A7l׫iR&{V5D_t:]ޒf_qz4@;Ǔys4jgʠ0I d5w|ޣkN1d3ϛ3l ˒lȱ#7smj͉ y19 gPG|=M6MِW.9ǟKJ+\' v`$5`̙#ʌg7,٣5ZeC_dh3J x394]ʱ]hl//kjʍ$$E'ir¯؊|Drl43=Vey*<.ՄC5#u ie/#)nOC^|wWS8A,z{K{'[40ؚ93쒂Xb9 ÿ~gA6撶b>3rCLޔr%Ώ;:mL+&TU)Ew̛4ʡauؑ\aC󣢒mG7fSVCe@iOwaY|Ȉ$l`-3'>K>&3S'>pS L}ǏGhmX9𴐢 <O&ArW]Xd7h_=tBˮJ "hoϝ{|ݎ(ZO]oM/yӾ[2;lڱ`ͯ'uRR*}] JqQArtS#mv5,p֐x[lhAXTE. *uW/Ұ#*_1>~0fXty3^Y?.l}B7)(oAF~H4@wӂc!COut$~, 'IYУUK!]B{$cbu맘n*҉RqwIWNa}yS@ʗ.X {΃fCFMkpQԞoh4߿wKYw{r] 6?}^w⢓2dG;d &9t+% kOcћc딶=t~{P膭ل]`J餏#"Ytm ^ B˥S"ÏfՈHc ~E_C^@>=6\'r\ITJb˯qw0Tԥ6z ^; 9t4&> }菾/5$(Tu666juWPpx}꿽a&SHBPbdXou"g +1D'RB.U3$b1FӾEvr%OdxQ툊/Cw4jH!UhfG~)hK\4!%K"v{zví%2ehT xq݅$r&{ Hh٬Rd "+d@"u/z$^|D*]1H\w˩DFu "i?yU"@$tZUjnD$QhlĿga<_lH#z#i$S".#=n#k/< M7ȋjL_*.h/)a n*82D2^Ow ƐT`uFT2a5y& 1؝"1bO?uoAW܁MOٝga> B HxU]I8̆w,Q+,忀ן7p *uR,=6V(*]WOaH=O UTST@ JxRE AٰgoosĔd`:F;~RHSC%f*\=gW H՝%jzTPW=7k@y.?*|#W]*g~~i[h,`ۺd kÈlA>}ULҖv$N<ݘc8K9ZsÐl_顗߈GsUtwE=8s`b~j̀7c3aTzţ7Ǎvi%EۺbE=c\3ihyR|;lK{@ZK9 T8Vҗ_gͬ))/l1qٲ'J,@bx& iR 7mbϭʛ[.t5*R2V5Jhj+|?=? gc?`)=|(J Ҝh8Ip(B~:o€A);TeֲzgpƖfzڬЇyqp+»M6iTUt~–-[T1,Q,Ԉ;7ŭRgɿnpn?Z:| Qcgu-èd6s= b٧ m2q /|/!QCʯ oe4il AW}v>~qZ.T}.Q NY1߻;B#U:p$Ymp# K^Ŋ3dwDGHx7nTݔ)8sGXRT/)"ݐLgLt&FɄTkL6^Q?}kc"ԢWt DKOkW`0G $L>UD&`Ѡ#z" #w=DE,.hk4&wA&D|6]&cxkW&IJO^,Ύyy?,o[i)fԦ3[N{u@A4V| b+\ѹRyg]iOծs[}t;gg+>ꆶ3 E $PKB˪~b(Ҁ_uxseVw 80/Yw7\o+ &Nz2Ulw[C*__=k /Ⱥ;: %Hȡֽ1ss-r^b+v+N~ߤ== qMOW_ǪVC3/YIR܁qo揚MɄd/7Dї*/,~=w!:[e$x HjE6H:f؋@&J/5){EŒ'N ΁#r7=m $00x4}N"v?Wz-ބ2p3}QIyw8hj`|GJ٣]h8- }CU3s{fܡ`"󳹿UIHviiinDgrueٌ&k%?pт/$_w"phOtF,Sx?|Qֺy%X~ggI;UTgd8~f4RV_vQhVLmu%%Qk&o|xqЃ']߹ciHWҼw+ 6o󕞛xtPTQ?9'rݩk͵],rWڜ/v/^ĝ &"a 3c6|3C0<---ϟve?ef E"ٺs/6~Gy Df;%dvLz B!BZ*D-ZwY.}yD"_yT~==$PmJBpzt]ٱrb*fJ4E#4ҽ/7}/>nAp`4uxpO>7o^SSZ&2k,t 8pܹvBA &,, _&|L2Z E)1G|L 2urz\L$ `"PZ>?GG &Jl rte\ͪ!yTm\|R!40iX|V:0 <s#%$b6C{[ssAl43܋ÞܗUyZ23ܔ%Te$1LYkai婤s[ 9uAPRKg2517=C@O-JmY~x$m:eHF+YgͶn:e?m nVѕ *_Z9u0DY$G6<:/l_Ia)^*YH>gޛGV%s:!.뱜:.YVA#aNYk!dY,Km>R'ȒjZB~.RAj$|Q@Bd_X`({Ў=U[3iT0ZeOΖTeЩUyZgYhN ynSq%oAPrZb] G6F^!W䇤KCũP "Td`-̌Nۚ6=w[Mcލ18:FxSGW֓ \G8=h&I ZY: d1&N?YY"K6eVmUNO!T^`xMoQZH87%mçS,Q2[q 9t& 2J桖91cz9N"5fg 䖔}_MOn.D=̌qq f,fqwCEv',|t@NHYb_Iy d$a*z<,CrY/0j?^grvK$y\}h}xK8,f;s5"@Bd:Ej9iXe(K,JFxE6c2TPOTrIQM*- _`\aQ+I $_!M zJ%燏C0@"mٵHZy,NFx a1Sk$9r ?6DzUGs _NkX: tҤi]`7dr3X2K Kq 4@/$46Zn:EԌ"Cq:`ͭvzfڪdtLB#+/0eCY Data Points

Points de données

Pour stocker les coordonnées de la position actuelle du curseur (les valeurs des points de données en x et y) appuyez sur la barre d'espace. Le point est conservé dans une table interne. Son contenu est affiché dans la fenêtre Tableau de valeurs Cette fenêtre peut être affichée en sélectionnant l'élément Affichage-> Tableau de valeurs.

Si vous faites une erreur et que vous souhaitez supprimer le dernier point numérisé sélectionnez Édition-> Effacer le dernier point. Édition-> Effacer tous les points effacera toutes les données stockées.

xyscan-3.31.orig/docs/fr/started.html0000644000175000017500000000414211470611050017771 0ustar georgeskgeorgesk Getting Started

Mise en route

Si vous utilisez xyscan pour la première fois, je vous recommande de prendre quelques minutes pour suivre les étapes suivantes de la documentation: Introduction, Ouvrir une image graphique, Déplacer le curseur, Définir les marqueurs, Propriétés de numérisation, et Numériser. Utilisez un graphique de bonne qualité pour tester.

Si vous avez déjà utilisé xyscan (version 2) vous devez connaître l'interface et les principales caractéristiques. Au minimum, regardez la section Quoi de neuf?.

Obtenir de l'aide

Quoi de neuf?

xyscan-3.31.orig/docs/fr/precision.html0000644000175000017500000000433611470611376020336 0ustar georgeskgeorgesk Note on Precision

Notes sur la précision

La précision que l'on peut atteindre dépend très largement de la qualité du graphique et de la manière dont la numérisation est exécutée. Pour une image de haute qualité et une numérisation réalisée avec soin, la précision n'est pas meilleure que l'équivalent d'environ un pixel. Pour avoir une idée sur la précision possible sélectionnez Affichage-> Précision actuelle. La boîte de dialogue d'information qui apparaît affiche la précision courante correspondant à + / - un pixel dans chaque direction. Pour l'axe logarithmique les erreurs seront bien sûr asymétriques. Bien que n'étant pas une estimation parfaite, les erreurs montrées devrait vous donner une idée sur la précision de la numérisation et la validité des valeurs obtenues.

Note: la précision des images déformée (telles que numérisations anciennes ou photocopies) est naturellement moins bonne.

xyscan-3.31.orig/docs/fr/overview.html0000644000175000017500000000711411470617777020221 0ustar georgeskgeorgesk Component Overview

Présentation des composants

Voici une capture d'écran de la fenêtre principale xyscan avec toutes les fenêtres grandes amarrée à elle. Le tracé exact dépendra de la plate-forme. Les étiquettes vertes pointent les principaux composants d'xyscan. Au démarrage la zone de numérisation est en blanc et tous les panneaux, sauf la table de données, sont ancrés à la fenêtre principale. Notez les quatre marqueurs (2 sur l'axe des y et 2 sur l'axe des x) et les deux lignes rouges formant une croix. Leur intersection définit la position du curseur.

Zone de numérisation
C'est là que le graphique est affiché et le balayage est effectué
Fenêtre d'affichage des coordonnées
Affiche les coordonnées du curseur en pixels et (si tous les 4 marqueurs sont définis) dans les coordonnées du graphique
Fenêtre des paramètres
Permet de définir les repères et les différents paramètres
Le tableau de valeurs
Affiche les points numérisés et les barres d'erreur

L'affichage de coordonnées, le Tableau de valeurs, et la fenêtre des paramètres sont dites fenêtres d'accueil. Vous pouvez les détacher et les re-joindre à la fenêtre principale, à tout moment. Si vous fermez une des fenêtres d'accueil utilisez le menu Affichage dans la barre de menu pour les ouvrir à nouveau. L'image ci-dessous est une vue d'xyscan avec ses fenêtres détachées.

xyscan-3.31.orig/docs/fr/saveprint.html0000644000175000017500000000501411470611335020343 0ustar georgeskgeorgesk Saving and Printing Results

Enregistrer ou imprimer les résultats

Vous pouvez enregistrer les données recueillies lors de la numérisation dans un fichier texte (ASCII), en utilisant Fichier-> Enregistrer. Une boîte de dialogue de fichier vous permet de spécifier le nom du fichier et l'emplacement du fichier à créer. Les données sont écrites au format CSV avec une en-tête qui contient l'heure et la date, le fichier source, les commentaires des utilisateurs (voir ci-dessous) et d'autres informations utiles. Vous pouvez stocker les données sous forme d'une macro ROOT. Pour ce faire utiliser l'extension de fichier .C.

La commande Fichier-> Imprimer vous permet d'envoyer les résultats à une imprimante. La version imprimée contient essentiellement les mêmes informations que lorsque vous enregistrez votre fichier résultat et l'image numérisée elle-même.

Vous pouvez ajouter des commentaires supplémentaires au fichier et à l'impression. Edition-> Commentaires lance une boîte de dialogue qui permet d'ajouter un bref commentaire, par exemple sur l'origine du graphique comme la publication, revue, auteur, etc.

xyscan-3.31.orig/docs/fr/markers.png0000644000175000017500000023565611470632777017652 0ustar georgeskgeorgeskPNG  IHDR_5 tEXtSoftwareAdobe ImageReadyqe<;PIDATxXGǯqwrt鈈"͊EX5vSL4DM4K4`A:;8zG{wgg]v;3;C$I&I$XAA d2NS(WH  M +\D2mr"Àb0 sT%%%hARRV544Lfi.?~av6[W{4 !BZyH<ɉa"Qؔ55B)^)**zIII1(2QD,uvv666A8oˁDqP_Od <;d2T4 BP"ѣGZZZFFF,,,̄eNX,,)) JKMIp8NNNT*I:153-))GGG.A8ܼ|Dn +"1Kid,3|AƁ`$jQxa``b/U0xkkk#b(C";;tBեQiGQWWxxnBzH&aiXYXꙙrܐK2K |!hQE|G +MPF70yjZ:Z삜L~LPGS=?7O* M--t; Z(7 ^-B`EٌJtXE`F&LD"QD", K M@.drrnLZ&BLAYNv~(^5ls# {? ׃:w04E XYDYI\Q㻟߷>OÞ6OsvuC:Bآ V0AĨ! dX,&z(B̈μ A8֑\UL&RV$G4)$YEza0jt]{LEOxE2~#| O/g$d  Ho8<455BB6jjjDRDm R\\fq i?=r444 rsy%lj婯я܌\Aq;G~e!gٽKg`*H),feOPzx] d)2H$R T+YT4Aܢ#*uuueX|EԦ6L&"B!hrTIIJiӉ/f0 bqQJxs٢Ћ7tKtեۏ\{ qO_vbUwLuQahRyRr9L%(>A^v cAUb1 "D;-"E ULChRWIQ%$6D ^i^|M-OBPTX"&S\*Ⱦ}ՠ(r2l"!ɥo ac,Pimd* )6 !RAɒR nQD]@U)=ofi+*+c)yK J Py Ҁw(BO(z 7>DثJ34CLQg2/ e H!bl~tG]edrH%,TMfv9"REGFHzZDn莺4_"¥T{D¯ŜQzzzaa!N xQ) i'%%X[[T` Lr544JAcU={RTg͚l# ė:"} ,p8$Pr R-w?D$VgjЩ.-I{\vxCoXZZ*ϑ|]fddw'MdAARĆ!2IX٘R-CWNҬe'xK^WMuR]]!CD"100ؾ};gf\.wĉCO>666~;-" V"Hxo?GJ,\;}ԥg{|qlێKN~:qY1}ty\>-/#nϛ^H6'^_Ԯ3/x % >;wC||If.|u]'|;C mLAjNNNYY@픟fC^ 1>Q  EeݖAi1_DbH3+I{i΋;߿G|$~iai&9xppùhD_ d)&X,fM# {v>jjԳpWs_jwl޲$ɠW֭[[n}61SM} fc- RZt-מ)euenxKE.^&Uv?:VbHS%1Eq$mGCd+Cٯk𓁕ӂ:l}ig޼p1s-C,;;;wwyD"U\\`0uݧOm۶V qF}}#GjhhYg8OyGE7Io?#~"WŴr J̃+ɀaTi6By%*M\!ޤS>;\?~iddԡC1jjj*fÇϢw6ml6ֲ  %'IOVInTz/R:"ֹ=?60 ԥ*G>ݽA-DI=, Hm)..F' A##HA)AA>(YAAɂ  AA,  (YAfU2ImkxYe,eqAIO, HÑ|ᷫgZQCI9e}QE*  D.huw+DEQ19|?j1*"% O Bdө-w>FeA~73aEOrS˻/dII=\Qzo>߳gO9.]:t(==oA*I}[wHM;J^O' :Nf[Rz D+y_dR ; \z?ҽn* Er/%AAAmڵ+BCC8Я_?QAĀkڂ ѳޮP_mfoMt "&L#m{vf<{:IR>/lO_Du>Eh C&&&iii7q8@xӦMx T rbNc(T9I&'+_1Jd zE<3/ñt}tm N6Rr eJ ]ֲTP&Bx T es}ѢE"wPh0rRk:0y,W,+s Yl1gۖΜ3NTu{CM,-)Qryn+$kB4uM6U3gˁ}i3c##C3JOO/**㴈e5}JD.HMV N/oZ Əۆ553S9u괉[VvD`>s#D0#83<] g, =d 3kY_z޽࠼w.sz<ɦr2vܔ4&2L>05j,0e$ű#q3u ͛7ĨAA> KD! ּqy333^Z.XAi6IϏ++ "x),۶mK(YAAJJ hNd2Ȩ4Zk`iih\&s)\xAo%d2>_{{:naau^~~JGqZ,na1[N~. HkQҪg " ko TZ+w8A%#F\5,n[AI*H8Pe2ꉖd2D&km&w܎7 HEk߮<,꩹F9rޓOL9ry7^*Gl9||vɿ׎`ǥ91||F\(A08(w HK")3g ,3/!ȅE6n  Jdރm߳r3UCg\x'0U$=2ҝsfCTmd_:rDLOYgnFڜZq%G["~ǎrX/..\B,;x))Ĥ#z+rޯX?kg/՘l9ւ }t9䒓W۵oU]lzsr/unkʘnV$:׀sқN"khjܾSiH|X^GAeSo &䚿<_6$-[ к4sӊgҟ'V_`4p"cAjj]B7Z8? ;v2 H]?c϶~u^F}|+ Z=yDݲͫ$ɃDѼ1m$F9Ta|gTBv^zS 4(ivDIYϜke 3gv`ڹII/^>r(Yñ|Q!*ΝE#`2Ag{y`t6쪳eZ"f랎?{YtX,vXл>D22״?3q^:zNv`ixղ|&>. 4d}v~;ShښiWqub;χx"*$H$Prry($u-4'X8zX跲sR74uN>0qk&g 2 H=())A'i_0TʝVyFjn[Žpo\AAHCm^J8GAIK! y! 4]b6v0px GEAFQf;aӝ-SΝy⪕KBAFQGd;NWN -̴w> J}$Ώ)H$oݍzw?ɓ9|QUI¦HGܽ@"}5:)JB|pAZ͋Fm8xCy*̧wI^ {gXZ42$0[P姼۰H߹$K#2&JcϨ4ˋ;C^tods %A(s !Ro OC3k.StBV3lCd9 ٙIw#%Ѥ !~=:F=Կ[{# |L1"HPiK!#H (7l. է D.ݹ8lmkhΉċH[ZzC*͈N*z2vDQ'eGK1jӻEQV:^]K3$6zdꭤ%umv̝;~> ~U+T37bHjn``^ĵ_t08qp_N^Qߐw*Wy[ND[jwD`Z.P$TiSM~J^fqwHdY}!]ovw1/y1|{6UH,PȅiiƝ5I$uB2CƠoqk.1$=C=^Oŧz'oE#4krZS>k޽7S%H': -L^WI8u>;wi?fI[W,n_blFCil`R.b%l"ҡݔQ/R[uېz^_|3m]iS]:e0k?~Xm<_NJ z < ۽n[:s;Q/ēUtLAƤ3 <߁\;v\gb\''Jv)'jS%vaAdL*B?|$ajneddb(==а>g$H(T1MT*%SzʤRR7eRR$KPg|ܣ$MRzP?-**HRB!KeG_-vz?2VKQON}{9JvX25oB`\A4+/JΌRMw*'kի66yŲI5[TjQm1jKCr yBڧ:0 wͱnOn ^˂ 4, m{'m45Sʧ:pw>tx AitpA OxqN=7- Hͤ0V\N&ji_ZZKZMEڛmpA155edrF&t uuVU"?4)wݺu+7>>>A (JkvHPX{{PxZZ *6jʝpA,\СC$AÐJ;ð"D"Q-ULeH$~/}qA&kH.Sl$JE"xX"iĒpizA@Q3F\v>QK/gҕ ˤWO|iYny#G ~;r D6H0$"-f֔ZordiƽN '~Y>AAiN(#$JHR+F|O*X>zH/IT%K}4==?:1/fڵg Hu$?5eL~[e%:p͗+>1 BPLE%~/t6I~ogSO(жl>-_J4߾mze?\t4.FZ^Ū-!ߍ)k7S:u煊ϫl;qbT٩q߮fVic&@1|>C߀TvxSs{?ˊ`ֵ;nnc9TjZu;nr J&o_<* \  z{t(1lkň*TT#57bijƥgGiFF1!ϲ8VZ[~Ew;Y*8wx7D-Ou{qYPZe$_8|.641jں$'^<ܾה1ݬT ;GCE7'eALߵ~ąߛJrXK[;9yZjntv2kԠ_X:k6`hO7G7T3;~wzys&v)|z/}men:oubv?xhHеؕ)4s';4|E̹s~et kUyzzDg{s_?8w,=lUNm9RNmȰQzzzDjp{HJxLɗ}D&\DQ*4ẃΞgI'Yj˚|r܌Hr{ߙ>G9t^wغ?Opt2Ol4s mW{{PbiLN(Tj,x~I~֟z)C[0LfHd֏]oʰy{E};V%K}n~o"|ӧ.oLґ7YXOWWe>HkPA$._vG'ezRNT9!YxUjj*Alk7+)ǀ}Hv"&C7acBٶ΋o_o\UVse9~6r EwBždž~}썴$'$:W.eO_LJ/ffw5 \znhP,4;ų~ܰ(xoGD" \zy^}_4oYth/7~kl-/;ֲ HcBY(L!>KZZu|>?7/ɪ)BްddWԬr8"yo ѱ&&(%;w?neWي>[d2h$9= n vFPN% aA3diȄi4FyހQcqt4+.5k׉BmivkZE j,M:U4W.? %'zNv`i`J2سݙ_BpGvyp_% 4uBSW=v(5GNz6 iXj c[ּI#755V:SST;ԾMiJJJ u%rUewҬꗨ$H1u\ARςFޭ[gқvQ A,bHsgg胣;.Qİf٩cq~xyy]1kSSR 7h{?bTb*SRZel}=Bsjg MGp] (YµH{fffvve[\cG F߅wN&b|2f-Sc ܢ:SJ;:B[X_'t=E%0&6)6qXqq pIr# T 5ԞNߗ[>+Dġg_V|c 38!GuR=Vӻ;v1WuuXC|Py 1,)v@dL*B?|$?O45222l1g^TTdhhi|tzeoK+]7ϲ{W'ݟQ=NYlUr,P|p[top[Air%(* &=JeMgcS3dgf/*5:UqusJKs6#=ǺZ+oD$RB(1TQbkNL`'+xAi@j0/-vie|NynA \~W鹒]eRPٮ^wC}SH #6A6Jl E~/R2< 8.AAe ꄈPϲ>'rYSeR}?J?tQh R֝{(b^~(ۋ\z_HHּ>-;v T9>/l w Ai!J^}|,Rӓ,l cS@T v GD+$V ($Wܫlډiv%*>PǏ(<7#  -E9ߥ EW+ooեlR%\Ϯ:{vA!E$&/ލ4ML2~rsZ|>oYA%{`gy Yl X+oέ ֞Z(,/LNE%xA%K 0?c+ T3YU^Q# JW̽ V1܇P<4/22xUtg\zT]8 4?24,7nB(:{k92 #W &3BW#- dɲg)YɿOG g͵ۀt6 R SVH 3X=tR  *Pjod\n̳ R=퀙FcI]/ E3J E22xxk" H=%ˬ{3:leǎ=w2b2#dW[AA 2JH* 32x\[+F?U1ձqp!1G6F9k|?U٠JfVK˺#dATKMMUINIH!ٚV6.KO@tjv^ɛQÎoav~_ecD^yq;6 Y>FV!]!'ÇQK{A"*[*SqAP x#GGId*Zf䦏o籡Io?O%r_%3 x.?ؓTBcWp "Vcdžq0vCY)[&d&wrtj$H( *;x@yW϶P98TPV|)b#ҹyR61UOR•ϥry|!lp5[eNBbc3bkv (YĤ<ϟ':9|`˖0֣ DfNr;:(@L;F([+B_%"1/g'ތsDQ*!?#VRWUV@cDRCy3˓Ҟ6IWZ LSȧrAvqrWF'XsR7gTCAJYvկm|r^n] Cj0.ŧnG Wsk'l Y'L 6- lUxWPDlly5ׯԐ P<)}ǂwTwDʖ/U f`(As K!j/@(H986D$M ίkrN%<6A%Kk'l;nʉ(V1_: UV:z0P)TNe K"dR(Mc3b,/{:#erƌY>,DĖkW]j#'%d5&=BQBT5 21ډH~p P@Y/-wxmRP@tjVKZ222H㣩AФl'T&fw|5jGvm{agdphXU*ն;y0ZLF/4A uYɐCj)Y>*9!2a`dqHM6\.~̈|T*J? X5i"aav^*{M$o5ǖkyo ?0352i9 XdkRQ^Y m777CZ4> J>~zkkYf9833lzj@@)S<==MLL>U>32xD8::Vy1iy2TQ#Lcc߁>"^F&=;ߙ|y%}=מNWlje՛7o޲eKrrȑ#>v{^bŜ9s,X zP"RrYTDzyyd@oL&Xڷ?~TP>G+FyJeK/ ) @!_AoEQYB|]֝oJP dž>f"SN6nY5ju:!ԕ3gDFFfggtqѺ*fW^fffCٳbk,WBCC t]d soo]vU1\xxw'A̋ % 6O~c^oOۚ/-;R ף re#{aȾEGn*s${kSsa{z륵*_s&a_t5[eN cZr9-%OR5u?ӭhWVn_iuQ}7oXǵ7w;79y.?~ƺߒS2,[%?$Gs86?{/ ڨf-ߕoH$EWZ֭WDmFRsrrD"(YփqㆉGiӦO+hy͂STA ^RK5WPs#T%elnn4~5Y[:]*Xtksoh]"$b!æFs:SBM{sh&36!7 j׋#h Ҿ}B.^(!^v6lɓ'FC&tuu>yfΞW]"#uD#6=Ltpf&Jkh3 l )eTh{@.3;#57GIe2?UDŽGQ , s?𨰑is-;j]Ĥ&dӥ2([EӐݻw,,, ƩSbccA@ԩS'+v$`3p@ExWx{{{xxFEEM2_p8ħCK.?~<,l cB-~  -K_˲pp-hF"Icf.Hd822wBy/HۋJE4Bq^ ӝ IF]fuYΠPZK7n܅ 222D"GG#F@\]]ݻbIr9}}%.(+YCɁ#}׾}{~իuŞ ޹s~Dvj̈^$ HcށLFX*(jPTyy} L׾T dh= %jjjl6bUv=@Aiob+W$|XsRȑ_h_ٌPA6J H *Z悛W%j liU!{(Y vᄏ/ĈɀL(QJ{gC9MȗU\Mlkd aLB!i|P4 ']xQvVi]m> J* ^\Y{|gS[]&UR ( z{fK@CCGB> L&%K}HNI / g(lQ݆@>jw$ڕZ{EZ'FFF(YSAAAKss77WScbe&m 7ޞ+zs]{v@zʡŤGW";")c (ckN~㶏 2_WN\%3RH xZf\I'V|=4 ei]>z˃^4 cץGqS$VvaG{:stz3kԚӉH l&z̭2q(o?'υ^rxڱWj3ARU2éؿ/- M{5{} '2M0ٹ (YZbB'jٗ%.{ccߪ8~N /#[U1ބsg~Itj6S xW2~Ad2@vQĉ'0&l/p_u=t5 ԫmY{|bnvFjP(LMMD aa0&&&, %KK&#wr3I[3a%ʇhm<]0?T!&ƪi֐80EdQ~,9嚏^ 5Eƈ7֟jHdeeIR6M&HC!A 8::di|U>'Y l5TMtӤg+>y:Z4@\JڀsW~ \q톺jHÎP% ^t:iXbqZZJ$JU"m87/d tFMl:Tɸ#f2َ&^==ytrAq'<T45K5"̘zj[m6M[a0WipRWWGҒIMMTdѩizccҚ+յ+W@l|cz^xqʟ=dDY:7 z?G&Ir\T!_N=VyGjQMM 6&l "N׉|Fkf4(VƼP4{VZG=rIU=< U|.4qXSS"qv+*n@9}x3:}o:L&a]E){'_J;Z}|eS:l!Fx DW_bS p' uՈZNeFI>ODv)wENWՠې6lul"ARAa3!)}{{I{[r0z%BfkA>,{{[ŧ@;v!xN*RK;>XIACI+MP:j۫ޛNv#-ĺ+ӅϤ,nN4 ?ajC -?Lr;ͨq|a8$6uy{S~/ɇZ#[ϟ,\Qa|Aԍ cjVF֍1522vXâU8/'=KQ Jzr;Nv`M9\!1"Y5j7jOaSwP:忪\01M:K/ͨ iӄ-K-T쫜Neป'dN?,*$V#V+'as U߯] )+ө95r'U %\BqN_uh'"˩rzp;q;W) ̲]oLtr:-5u0mbWC:;v\gsg=dPɎ7EQYROeϘ7=Z22]uJi :Ș2GԨ'*MEUYl3MR~ըҌ qBz~4lbq]}uA((+D/*{Lyb^MvNvqPKZVV-H$33M6cȁР;G_x0rwe HRzEuʼnSϷql}ubwuioddH4=ݏ{rVB(2pmgF׾WdC>FQ󎾉y#kaIP,Vv,$gNDEc[jZ7 LjűxdEEERҤR,KOOBQKeITSS{9diiO7v+|<2͈'w3\#94d=An\o;]';]oQL5C!]_뛻ɁPҐ+4˳ZD\tE9V8>&CV@ I.|WWWv\UZZ* khHcA>Î} J!..uz n(3Q4 V6f:74)uWCcz3ӛ~Q\/@2tOEppU^˃nܸ<* LfڗZP oyo_AJzk]5MAn'Sۢr=  " V= |uP0&:mu]",:Yhw҅\IaUd Sp-MrAvgm:Ӱ{L&KNN622j׮*[r_` WOF%xޫ{kIBF$2֢ JA.#\}gQי94Zb^ܥD"Nnѧr rR``_{e<}i涋1j־1dBIWߔ_p0~oN7 UTx2n#d D:VE|z0VVuym ^hZw!I%.uHDRepppPUV{hǾwɺꭱ3JA"\景ʢ/C+*m3R/ =-U= N0tnO 26:6`ُ,sO$SG~؁@j(dIhuj˦f;+ǮNz\'l\J!I 8#ԟYgN9{JR]k!eXp,[uEP  ǠCFnf>dj([cȫ[ Lbq-F*:TGu`MHnO F?F\<\.ab(cD\jj4'4{LYYV] LPkGIQ__kt3yG5L&b)6W:Wi % | 8|!_equ6tƳ̈́d;~ g/%D0/T:TR'!}` O l";tQ d 3{O7w C( @T \& ^xhcl#5k;~=ttXY$I">ʦ2, X F!QZJ_,*pp`l "=6 5"V~ E<1pߗ/1/Dg7!,T٥ *nN0e鳗Vc{?lP(Aֳ+wA|HYCCWeQ.m} iݭ(m~sVFK36$WZLDBKm)%JAZ&^v^cOt'Y,\Zo 6 O8ջYf[::\.u!ӵVІCߟj䈌 eaYSk=iHH*xz ~J2Sg*#M\U]Wx<^pp=12F|A 77wssm&K:GenHB̥`ݱGupbp*F /ݬTf2i1+mkBXB9O+\HO ⇼ˮ#:u~ڢN`> jkWmBs,1$RQQ[)^8&&&.\h߾}vX͍,֥GkAbQXw?O,@beD#ӄBbi++evo{($H?߭N0`9}Q") :f 'P&g佼hI^ w,xǭB75fp]N<'9Eg>ҵ`:q> iРA-1N:GGGߺuA#D$RF"IA4Zn=I6i}= Ji8 R?,v+ƺm~;O(ؐ:uA(I֮N.0>8(=N 3Uv0 Wו?ҞB6AATy.ףz:*&%\zH@_GO82v{' 5tn'C h CCî]V7J}h4zu8JAAA v){Jy >~{tAQ̟ ? <}ۍiAD\dzC&;G!CAQYWժmvea-u:ZrT̰WbD{&/w=Ϲ;fP]G/O~b;kW_lFZҊr+ƌ>%\f85YN <ߣb1P#-洴inC] Fذ\ V^X=l(SHLLdXW@&u־ImyL[ZkKQBM&M'fZezj@gyVڃo{Ն:v&XWROcv'B oq.l? zu(\Ă9gs}f6xv{֛ͬw 7óBp]Y.zC dڬ=lll֭[^LM1>2~{v1ئY7֡v]yNwjճzZ*(ACM ,q_O.(gBB`(sV=c1p8ʔ%IY wcDZ?JDz.=d ^vO?TRR2n8KK5k֨ š0p]\{%Xvkam1[3Sn4ިY$]YiS2=T[y e؞,B}$8(\p洪Bn}'\ 92`<<EW}^Ǥ ϭ:,`xzBܹs_HO #GL6q'He~ʿ !ҭ2aVHc Gd vK (` aX!,{P{& 5/`.]Xl53\?߿?33Q~1t1m"Rm73S VR9wsP||qăHR[y ]F.A_bO&o  mT[?ʹXd : 5t%p<&¬F qCBΤfqZP]3I,&Q{5ZLa2\/^xA ht,Ug^ Y4Ac9ꊱQsHsb͂w %f9-|!H`|&%cΰd۠hn V}W`oE\{hQM#>p  Pڲ$&&۷oڴi֭U{i׆{\fzڢ:KJRL% 7KQ.kb*b5hW\F@(8sCס[ (h9Wu%,Gͧ-v(Y*c]I=ybxg{ 562x b&\eO1cg5v)))W"Y,3 SCX&Q1qjŶ# z얕YYY)sd2t?+V{$Y4zO֯ СhPZLM.|l ýH u怮C١>ZZZ|hG_4L< >"/l]W_cOO%++pk-0NiR7*Y33~ y~In_amm;Tdaԩ=wk_hW$#> a3U+󍌌x# so'(Ws'bLH"{|艈:s1dff::|yX,FҏGYñu!!!˨ ㇭.xsNj6(hⓏb&0|"\ =)[pq0Y3`C+d̈tWIԡFFZJʮ4ǓLƮ@KxPH ÖNf+79Z-gu}X,.//wsskiiQ]y~M+WĎ{o&4 6M}~BQM^YPT_Oŧ9Mfp_Y֊϶֚̚>7dWgGݕ,1؛lŶxٳtT*ɔHt<AOJ8LD c8c,^u_4;$ `lԖdW򰝿_q(Gm'C#V͸DCI} ,}ș򥋱CX.Q_gVVN\, YЍFnDGi14xǗe5Ax6no 644aDz=∽|XV$[!HYx" Jʶxe;!^;it&IW/ɐpAb+J:ݝÕ8Ík Ft"Q{0_g-ZMүHoK"p 8;Zx76nǎئft%F!_Pv#"ϴ L^͠U.ZKvv~bjޣP(BI lJB䒖oݦػze)2RW'0:2---uuuz'Wؠ*QK8qdWGXַ4RUs$K_=&&\RRRrԅXv6ߔ#4I?l79w5/> \_6/_?1ƄoFtbb KABwEĽOkBg+>3m𙃕6t|D):K&I$-Uݭgǰ%k'SHAںf on~ԕ5#Yr|юGj ;[9JlVv0?88bB\Em ~a?E_:6lv2kj3cG[_A?=3rbH?ߙ%1BX-xZJrk׮LZ^*)lH~"E ՏJiiիWy<jKm qIBqNƲTR1wO+Vfzjd s[[m[.`Ӧ#W6yRIIZ W\ݸY'OX%. тSP G{$_Uyߝ F{s rkhC$;LMM+**N>=x`ggv$V,,,,--W'Ӈxhڨm쬍s3u{KyNbራ*6yݦjI; ">3qqP-zCgK}HQ'Rn6B)_?pQbɶY~gɠwnD3máL'0ȧ?vB2dIzzzTTH$ꑸ7x<FX$ϤY=nudѽ򲮹У0??n1q3'"jkj;X.8KKkg$#Z^&[= H[p8^a!X^uX\", [}n`,| xL_ ]wAWJ+/F}K4]˓ix4HyʉVEhpy3cH4v+nTəSڂ A #3O[C\umNdz㽽2o6lj)"\brs-] 3{~'=W>)_jك8tJk>hdy`Kurl%M511YlQP|o|~"\%:xNNy+fN 6a]r!.$ Uݸ!kU6]Uo}~rל)Y<{{,=ޜY6J`\p~a<@ok4֖x!:2oz!2g&:?0dN\@fEP,<]H\#ezǎ` ̜4fND^(R-g-x`]ĐfdPCL9c:@tk X,єz\,\bKhu{ʯŗGm>2bnFi@a. fs+8Euu4.'7ehLxc]@u233-xebTmk0R cό84ST&͠{\~=/@' HwZ>9;b0}cVnL۰"f̶{n($T\@fC2x@|BBBopo{ 2d+Nmk5vYQK6 }go'+QR2@?۲̜9Ga=yfsbG˃7{p92fMom +I'l+LV[[[__/J{D"04t]]L{'J}5{b J:QY1vvً.&[Z3FmWZe7v9kJJJee%RA#DCMX,]]] :hnn O-9+GO?a֭C9~ Џ˭k76W~|%^HX\zz=>K||˗(Mڏhj@ǫVڼy3wx1(Z>+7MMM,X4J}#s_p/zޘ¿R}g"󍌌x|BU%J>D߿w-FkgKZƎˤt&YԘO(rYDJ$ xeL"( ǒeѢEDeL?_/T:W~>޾ID|#.Kx+ۏ=iw+- Y(Q\\.,DbA >{&$ZZZOPRЫ''6iW__ݖsm3'E9RI|ԄMtt@q *X÷hlr6 $K<~~onu höL\vi&A0LfQ[ItӲן{n5qr9A?IOa=fwLʓL&CԖڮF1N&a+kki8ΊqZ loIIp;̀UhKW-%f݃HlHxP(P$&Y_b;L.ix u҅ sզ(=Xk;JuL&+++H$X[ \cm)̏"mG?~iTՂWE߿h"@0y3fYF@xxҥKoܸh׆{"9-z*+ޱcwppwGub}pn4L>Ϸ7E=64ʁE[q4JJJ9GWT^^4T dTC]ů Y]Z׬nK~mr.HOa#"]9uDЕ/^SBPTkTIϱpYgeҍ-˲32DI&$Us8AJC&,gg<+['yE|.|C%@7fl"h2;= `jjZQQqHj',,,,--\-Ϣm\A,3||4K#1ᎹuN733iHuMPXv~Eee)O (qۗQLJ^|ubW3a„g=py+CQ_ 2dE%zdST.*W\y&m꙼v<)) Dd&Xv-5^t@@ڜN=s: yͱ] H[p8\/-)F:/׮b+SEL^pWJLlݫV&KҞ:U"`0: ]WWG&5FBIRz Y?lw;ΈFa~{o6W LjjFУ<"bcse?64J&Y5%%) &E"fhhᡦZX,nݦY(>H%c7qǢ-fm=;͡C=;qփA}AHUeQr,k}AjϺ^W^=zt| e---e>Jh/ZZ"}ۢ2\D9@@_kǁf)N./Db6wY2}c~XuK4½[-Mv6LYN<:pϽoofҌKir_w& A}*R-ԧnT-bͭE%u zb{xbvy%Um996#pRIXY (%tX?GMXDGG;88(SdzX`K9qf94"H%>6:G[+8-,sgSù c9տqCւy6lFk䃠g@@_L7v[V:;:d/kɶQsnji| E/'ljjRL&S.#ҡhKG͞?+31ǏxfA?4vKg ,fQ[꒥ES anǾv Z9$ .\ ip7: م=g pcsOܥ,vF nnn^tC\O+" D̲@ TLPRǓ.?hI33)OzL +-636=Đ14+>kXpk- w@Psɓsp;̀Uf͚GX:5)B HR`%䒖o 2!Qm],]hS(d2$@\fVlҦ!['~;Hw@X'~uMPXS<`c!Owwo&8ggM5d7Vp'_U,L+3F4̧A??xe~]~٨/f:]Ѭ}Գ/tWIn&~0Cަ 9XjIGZΞbCzY&I$`u=(q 3Nl#n=}Bs[s6Hx|F7==]stfhxYsdT,}ѱc*w-x:OR\k5f@/)?8s[#.YH^z㡶' L`m`A0|3 mkQĜ H`in~xg|7ja1a=333}}}M eBԴӃvvvYm7@b*;;;))Ҳ} S鬭k8Hb4 &hP(!CGEED !oooT 4䙴:gۍg򲮹#Ѷ䧠., IO쳪޾?X ƥq}lV|n0S =JwH$r+먕Z RlSH}|>3'6q嫂ыHT[dmfypw@=\){P.};`VxyX$CE}!Che4s:۴0zǁQ@c)**a3ōpzY[tjvoc5 x̂: HDDp(Jdeg϶̞}Cx'dӿb;eaaիAS-v{,~OAHm@K՗kG9@lYà EE%/z544BMMj+nrͬA;`;r/-_ZRJ"&}jndKԕ6\X-\A@y]_;ςIULMp;"o~kc7Ԁ/$ګ>2҂BW= @BVV6aꪪ',vCCCSStj$c$&&߸Lvj g&{(fC?/~WHHHWpppxx^j*5pH=y\. [t)/]HEap@4~'_5ܸqcڴi(=w\K2YY9O>ݖY\]duT[v3\>jՂ{j {5Y$tbJjs2` t X1$8W_cjR7Q5DVVNOĢ(`=>/]卥f~ Ɉ닿?S{ǂkt곷[Rï;j='㶇e|REm鑉oH碤dH`3D,_~ድQ}GGpZ֟pV}hZ OM!un$WfY qKiQj+'Ld)M >3Vq(oH+Vrtt6lFD[r ͪ96l XX,'R b߹z%1[i7KKϝj!㿌 & 2T{pX) dy"Z5̝;"-- nHRR[=gfʊXm7+._՚hhH"NN2"9p,O&,,G$\fΜ6m` ^&0h bzt_A$gWرc2j4/@ y~!Ĝbe &TH>o  ".,@fޡKsƈFzevt8q۲j>}dz ]$Kwht+8X' aajjórFnƗZ}". 333p /TVV677D]]]1{J,d_[`Frl74V+>\ (惔+1Q,ːa*``"HܹSWWkujddcUD"QJJ R- GtBDĹeVUWw9-jwUt 33r9"mfdd$$$;N\ {)EXWVY'㚛4 L#CmM%L7!pJnB9Ǐ'8AN-^Xf:TAyhk=REFFʝ3K^o_L(> Rcǎ0SBayy{]}DBf6mll\TTproO樛"PyAnY]-U_U_TMcMLZdf\=<|&Y%%"(J|VۿϘAI[rsjZ<;:PS)P:vHH겷q!!h `@a5%y?W\6ya455h4!~@000hhhh`X}/ݱH\}&H?.E;izcG9Gç9q5AEH"^B{I%Js}GB#S%¢sӯNH;.Vu[w iKsA24|z!"[-p[X h-LFN3Le,jd;gUnܪ^d$-,+`ҵ8LP$ %",_ќ>y{+x-}@'{kfrt@F6Mr(t~n(ɓƨ*++G_XY,gW*VWW ႞---X-<.59Ib0so\ZQKw}̹-:O=w#mGlY7XN褧>%"z޾MVw;csM)gfgs%av}RѴ2]\$K{K2MLZOY@QZMP_Saٳ'NEc/01164a̤ H\ihhT hin433#c8>>@ 544ܸq=Q3)N[m2W(xm[MWSLHVF{+ 'ᥚ'jILL$H%%%ׯ_n H`͝Zuf>7xVوygh猫M/؏$ fphʀY  [XsY0uOtDm_gO5WL}x^ QALFA9@?)+++$\n޼AP\]]]\\h4&Y<'LU>?kMDF&O[`c2xF{D8.Rcs?^0iTeKҊxJczeMLWy3boꠚ]MIY5⭷_YAzhKƋwBB13Wptn-GQ( j5RZ-X> muO]:@Ŭo*YEmAK{4ZOڬ,=EU~L-JsqLLOT2ӷD{o7bhodi$ u#/RNp F sC!"ܔj@53>8wxzB@ςcu7Fɡ%F\jP(7͏g׭RA:/ \95U^jmՃrNeg>7خ,+Z) û rϜy(3Dy~!tRMMM?qr9J]rN4ft?V_:]QF T q0Gl {ur1f\r(nr]kBX@.~5W$A~i?+oQ,6]GU )¬^ +?7Vw|/?nTF &PXw+戱A^Py}RL%㭳 *t M-͌Ku8M5uRqAvb`gí-_RligǦ[ffFܑ;XT4Ugd*./ R!I"sus2z\k3jݪ2}KӦfTSNf) X#$TϙH =< xroIٗ5~ԿٱIY _@9"v )_RS\kmr=|ʼp7*jQC9,k%eK: WLz膯'op?-=x i ͤ߾Q@{oc,'9-ؼ2rHt:w?\c,ypC"k'R@Pxs֮M濢ΛcEWDsɛ"Np[.GʌN.i:zZ_M{S%zu&ZqO6Ggٹ4:)^=irfZa:a=umѧ3Ct}Wm)sC u{@9c[I/zosz.)csUqc5ٮ1 F5 rk9ftAUXVǴp v bw2LLuqmK]Ni-B_6Y.^J" =ȱbe>l׍޳Ny0B$F!N.mg`, rE.CG^јQfAyUc>(4iX6^%Jg"Ղ^9J.jADM]zK5+k oo/iU 1 >2 *W>5PZß'qzlЕ/S"<]M>.R +S?|~iXX hMMMT*$ гE$v Y Ӛ*w}H33z56dJ=yz{vBk t:dad22AoNA>.++'/1͛ R%p%h S-Rr!c^nE$)^ Wr ?)Y$ܔ[DIØZt>HQRZZZj݂kRÃfsFWVVfeeis%xv޻{Rm Fv"&ǰ63y*˺oiyK,زH"ڴW(p~~>377Ejkkk+%P(h$INNΝ;w|}}@~|O_dE5 H4yI׼I:zYW~qGN\rv&_fd=ucN;R)z얖+5K d*V sFLjɶ&NVf?(n~ԩSQwd2s-@9mܳسc;e 3%t \3=}+ FM3 ={%N:se-?S v]go.I.eI,N%k><8z#/$ϧILElb D" HD R<|)K?szcOel_u0%9i *5>mdkVFVr>Q#7.8Բ2]G-z(Qd5zBz^H$V'%%:88ZRh4H0333$$gΝ'ЯAz%אA W]֔S~9Hh_;pRpKS3ݷ^K\2upΕێzu"tHK@&+ g2hO"vfҳc} έf|UB܌=++͝fNAq8mLעɵ2<|nj|EѴ~K.'MYܠ5~-VJɿӬ64y#Dɚ ^"'dX,)/7T"as MSNt?bKfȩ|"J qw2 . S8IgL9i؏~aNyCv밪tZLt5FNlm-*LzXF[@70bR)]KH|ש=ÎR]PYccsRQ::)~1f6e뎾4gr˫Ǝ{htPx.̰A%YzVքEe}_ eQ 9x2pHɯݴS[C^fi֖xk!]LDBz= ƒїsE^.<)jWgG*M1e2n#hZ43kSgW.s5cĿ9M#Q:MKKkokls?Jx*Ҙz}WGZӗG%x٘*Sy&)B k.MFO[Od˕:Np=HBYoXZPFH*MF2~~KS&#EgXCx r K\Y36 5ԭjfh4Lٳg?L&M/3=,JWLjZ2ӈ Gx1_>+^g(j|,=\/qҤ0}lJ3"KqrQs3E"jS`z6UΞЃP=.hl3ئ"ntлLM?0Ո%f*kkkl镤$DBP;XY[x{{U4ڣͮ;nNL$PII7iE%_}p/![ TK$%%;q?ok2tGKϮGoVAwU,p^IlLmǻ=x\ɩMϗJD"˫\H`inIYS ѱ96FkhL`(X^VT] Qz5k?m~<{wTXXDlX:^z@E~&,*/hdr=CH$]]],H@E$'pt3g=zCC3ZTK2jQ#>>!h݄mbA0oo/#z!}Z=bΎ8=0M3*pi`{p*6juZg QigCQm`c磼"Ԗu)N^TjQG+|a1Z( w@5t8F-dKK堋b|Չ",916eWSxŚѣTQa25㼤$uy}AxH[Wgv"=DnQ˞ODTP[h !i`%B;ψOv j}򣢢'Ü[ٳ4'>A{wo%5GN;{&Y[[ 6d!i_)}ͷރ۟dF,J$[u>[֤ht,) &9pH{woGGnH#z%+'gނdQ Aaj4 v?E>sN0"HO.!BGGPWܐDngăQ1!79qrVCZ,H+D@P+\<.Vg\Go.XCC!( z8D{.+/pJP]?!9ݷ_k]PPỊ\K1MAPU]_R=DĿ>)̝GQ{ͷVmކ0LDy9燏…4H!/un͇%4䞔i+U E_5Յ)KK^`ZSf43KvxM DWxAߛn ڽҳ!_|upY~[GbX·d'phx"!\Wz7!$ ~94Z8=x2h[: H3ꊊR4`&13 KKKܓ>+j%j_-_"KKՙ_P(SN'$PŒy+Oml[8D*?h~,}f wgC0gGJ̘1ޞOr@AAcI CnJ HhPpIlCUb;w% Enk{"NөGCITi Yةrk*KY_Y;Z1ïTmhhLfϔ{w;l“wܑdEp63wz*XRWIk݂>?/mB] QY.$P*.jmmW֖8iMB1%<{ )tWF4zꭹCˆw+ILy] Gб غpddALMMQ4,ƔYJ`1RYVVvҥ)Spv hhlkkӇCDB 0#Z'_yE hF=0]{OzAiigYz,;NQEVZ~`ߒrpL954ɔ3l ?܌$3:8wI{%{w߂QYY~QiSz1HM[__ T*ew;Z0E@M jjjܹcddګW/q\хZaiE6i2im20aƜxJ>#\, ^H&M&+TjT0ảG _!2s2y"\Q'rZIm8)d8 kx,AfVfw"H/NW)q7Gx!v}}1t>_؉WPZqK&o/rZ #/M` 0GY:; %)Ԩf5bw_߷9}_=uj} >rPdhe(SX#&/bt)6@tK}tBle]]9H^{xT*bnNFDU\()ycYDG Ѽt9*wȰGr/{GVz {y矯iʣU_|+ơivhe:9-{;sji~β&q8[@5T*Gz{٤74I]vL^Y, a8|ang[!Uy 4Ƙ8`33,EUm]͸ҹlܷNVT** %Q7ҭiJڂ&O,k-$LIS%sg,{I/Ο!,|,9h 49 w-C;{ɅWJ2zI_P+h&/D\O,YEL3,WP8HbqhhH Od:'1ȻOM9B.,;` x*KJYY QkO:n?}k%yo \RRta#y>WBvر{ 9~]y Q lS[?=n| l*= b!HHо\!-K$-OMMU=(Y 4;5Te }/s<6 p,&s̼(OF\0Y,s[WBK8aeaWR2S^NƦ{; #FFUW+\S)S9,n2qlv% ?{ޥ~_^|F{X\.5,ؒ #\skA*GAH$JHHغu)PKꐎ![cTa&puPC#=G҄Q)KKX3%pZ?h/ÇbW ]%o[= Ff+y{\`s9tURfj9L{pFkrqEJ'uyuN Ϋ1xf0&pi꘨8Oo% Ӌ'3oll̒av俴](ɨUj2mϛjsڔ!KG$]Akh="GA鱒ԃRr`=M mjk!އ5_J|&/%Hku|.2mmٴt! ^KzlTqpؚxȁ,%BHj ZHA(KJ; $@x{G҃klٺPI"Is Prr]#]NMD uuu(Y,.Y6FUM.Ӣ?DFF޽;##?D)X|ܹ[Kp}T6jq#~Ǒ zmH?Fde>0C @c!զ ^6^a 00;'] טחتHHu]p(;u_8OS׶[[sY=R gd=iG pBUxA^0`Uƌu֭X:g8qW^ʚ1cƶmG~j4+{V5,BգBXϿle`ֺ,m LiQ MyԚT BB`'Mw'$0\ZU G{I: M=ztNi~`ƙ6;S?fb;4W2[GTÃp:tڵڒٳȀ%Y v?ImI t^yDTKG?hK#tFXxؿ 20p_GGsVt4FUP2 |4:F[T5XAVPe^(aW]Ӏ7]rZ 3\^hFNMkdzԌk}5jVVּ{A\]knCS4qII+_`g?Eć<3ۓNdZZjk|HXMc&kSڦĪtVf[x"I)mC5X~$:<b)77ׯ`G}ly>>BAyJ KsmPɹ~Ç:֮]K:^ĉ:CsQPܪ=z\צÞHNX[wrOsmĞ3%˓ rn~%WSdٹkJknaUXsiGJ'Nϟ߰a ^AA,~SNoxzz~ǘEAD`<=tАիW_~cƌ!J1**dIsg[;Lw58yz\c4#'SˏS-ܹC8g3V\di7nh ǒ%Kh +Ł#883_@4w[s˴|gZÈG{q8|Ls=r2h8;\s1cy̅ H[yr l@ۇ jr  ]M  JAAvx.]5}¹4GVNp NHIMw|去C_)#ܦo;+|̙ʸ`?/OBll/lި\"qE%~ Ǝ!AA(YAXG$??jUL3S ={v _188Dg# ^bENuDJ(|D Uv5CtN{.Z s Z8?F8u3ӵ#U?FX6#Po/ĤxWW>L$uΣYp̘1ڵo Юӳj_:\|رcdQ;!AuV↔Zzv%?#؇Zgƌ=DMt~"Ie6*ŗ,YҎM{,Kj2Mtȑ#MMMŋ;Am؛LS$WDD`G<~hoUZVj[P0]clƱ,HWfQ-Zm6x+WN>ni Qˇ~$mذl 5 ګ[]D'D uA]6 zW7`CI8F2#$K"B)*`NӔӔ(NMI@|;wP( nI{yZɂcYBP:YYT*A2dN']`)?%b(L/ZH ]=RF GlIl= dhڑ%li ISabb"uxxxAtGm?F1XiqϬN3TEZGOIW'HSO=E'SSS]111_~> F J/ژn߾}ȑڵkoXXm>>AɂtoXnIڥ,X-CRGɆSWV\yƍP,իWávZhNSk*;SRR7n1q!!!3f1Bpl T%Gha]  6@j@{vҟ+P ֯_ߵ۹s¢cr- ғŝ9 ܙc2Zٰ!CfϞݵ1!NA9ik)cc+`K(H2 HÇ#db[_69 @YI$Tݿ{M)b( Y>CٰsI8ʏtt0OYrΔ+]V4mеkB Rorz'$\|yժUԏ'?IAPt8wƍK.}ͷPD>|ӚA_}~JN-^Cs;<#"?HxIvp,X,|_Ο"|y?(4_UmZk.R,mCb $Dhli~(iʆBmI-$J]fTT$w5~(~s+_~"v,HK=3;% v !  @ɂ  JAA, dA h/B؁ `?k׮m6p/ZSO'BAɂ }@̘1lՋzA!i7/_8 Hѻwo&,8 Hq%AAɂtonYx?Xԑ$psZ@!j;  (Yv=uF*n9XXB?GxB R>4Mц+tD^ k[8!&dAHruckq護>mΎ<ŇluSu>C΀cxS[8$wu!lA"I s FP|4mujg0gp}/2=;8ݡ߶C+!/l.qʞ#")7$h/컺Q덓ேߺ?5^rZTY寓va&\;5kR?Aym?O?O@. Kh}@܄ZPv*@ kWZ^:>YW{}wA|__:8[FW& B^ qxokpOxP &4yr(H"~܆NP eYgi'߫7ȋMW! #OM9G.YuJG;H/dp7.[,-Vc]KX'p=Y[I/*!s573j"Eo Vaхj 0Pg|7י_a0JJmMambKl ̉]=17j*-P3YVLzoqقj g.}*Oft68 n* XQȝmbM^Kx7| @PCz|+vHfoV`[w~'+'(?lKuKK@-ҵVSg.! ʄ7/+Mu!x3Dڛ9Qbb bi~)}fYFOdK728c2,!%^%N*j9|С1y%}[e=|Cnp4Y=nhO(0A}&SBD$'=gAH^Xp+;M~oAD 0FI :@~2;;yIdHPCϻh檣o^ X Ͻ/EY$?H=eY#YV GA= b %UOE|@ Dؚx8&eOIԔ tBټIKv3 >E4,E?pmvrvˆ i(V Ccb-}hF,%N^bPPQ,VBA xTA*^=5x@Oz&ʢ߂JSw,ou $aTuZÜyD% )wtF$Xkc ZA7ү?܍ž,;˩C]Y/W*gr4q Er d* }Ȣ9&0`PAMzGn{oA,?X2.aP&vd[y*Ivc;@LL`ΐwu>Dz2KGx;^m+!߈m3lYhf&qV>0p38 !H'KuT6{ᯓY/62PoiPg4AX4h۔kWI$NP8Ah IIcԠ??2XԑMGuk#~y=y誻 M˲o^J.C:O^E]þL>Ռ4"tʶCW W$?t/&n&4&5RlqmOr1>V"C=!;}, qk2A^A,=StmyPQCXpz+2Zem_]3| u 7i2}GP$jMj Ͻ!5e{n+yY =[d r"APH :c{/YEk=cHw+IvHk>97fՁdsһrL y9Fx:<(T84yO> :=`EvA[h%'鎭b(Y}% eAsLf[h TZ8[BkO G\ʊ.mիXA|{=,i 8i3}Pt{Ŷㅽ^gns1I̋v4dA>l=~o(' ] v ! AA%  (YAAP  dAA%  JAA, t;4-JaaB; :C-XDTU,KҪ*L\144P(r9AAdjZYd2Y]]AAfk$ZVAA=]ɢT* tuVIIE߾}g͚ejj͛N}\.2eʨQ)@ JyP+uPHkkj|ن2I#0,AXf EDDRn`0 ({%L&Y$v !HO8e߱+m?|@_!GK9'/Exz9ủ~&;[xh;}zXY<$%%EEE;::Off&AQΞ= _x؊)SǏ022Rʂ =a'7X`Q~3$"1`YMzS!Ȍ75/MR_w"`vC!v>G&:+UV)Όr'hQe/ 0 11fF길2!UͳjJEm73fOO텵\sKn]|z\a?xȿ fb!HOڵk<駟2dH|||zzȑ#GļKt:=44N* »,(Yb .b14:N==XQAuQA7W9I'N1:}`7qWbű&v[!.f\6WR]-(rRQ+k()4uej%U EuJ\ҒCC7cǙUʚa) #ϒJpb1[-Q7S.P(5ރ&񴒔) b\]ltL5yؤ@Y- ,Yzeܹ 1 =J~4ea^fvqi}zMͳ|Va6~eA ΄tvYQ^(*=叺ܨyՔj*+JGzvGGgjW~{mOz޳ gspkV>篛Wj:]XYggUH"v !HdȐ! /^2e M6 ȑ#_^!!!'N422" -o@"HX21 srުgwzͯ53GVS(˳<] ׼3q.m el`l󣣒$܈I/䎟:,>:w74sQҭ+b{-HWX{W=)ZrGX΀w_ot/l[).`@| MXj0D R+rͭɜZyhv*z}ʫᐎ:Y*37뻍`ЇWs?U{ض?zKe7튊tdd禋:zYq2"B6_Q0qs̍۷gϹDԵgo;_dϬeæ;"+GHȍsxWURX'"*gpGmo4~ASNߕ ):tϐZ}y$jlqr-2g- cF>tc3gfNfl?8~0n8Uvk\9> pK܄*bpL+EeP1v& IwяGm`1ϼ]Ghdq+r5gbM+Ŏc`,ׄ=3hei9Ҫz[ ܭtT,4qFdW`\Zf3=W``hT1ݜLv.JJuhGBqNkȪ,(Mχ n# s_K{~rW,we P[L706%vti&$yh+#*f榖by#P$H8n?* 3W*HXQ_T^#2Jr+U6v&|OL=mO^X$KTȜBF> &Ęs.`И^}o\R3yR120##FһNFMy$Yd+CZNP>Avэq x}i#d{]-}nPۋm·],gYNlaАlUjO) xϤo vp޵swX's 0g:͈N.=I>nC %oH:\V@ޮ14yjy9I&.vXs9CgS3?#Ӧ42՚)y5='] Ods/]KY~5ZznJ;y'`5y2潢X' >i E~L}ZF 2Թq\+E'ep [)W=[+"߻7;~*I?7_Nww5P0]?Α߹#gz6zl_hʧ: kO-Q&eWz~}%4gIՅtix6אHz9e"ݷHՂ7>z1Žܢύ".oov3:=# LY$&Thۅv65up۸}sS<]pK Mʿ~v^9pm[/*Lovڄ ٺ>~7tp=z./F=I&s϶3KXnz9lSlwoRʱw}"<5UI?Rž0a"/+=3?1=W9do`Xkw>S8n4#sW)Mok*=vf{X{tlsQ$|ǵ9/<>\MY6}'U}Ձ{.^2=|P;i1%I2կ̭+O.ˬP|2SƟ6=_d+̼& ӅscYclc5[6++++̋MY{ؕd&L\ ʧ09vo/'IyvBF1\bN M,1>J0,'3Z]=E.V៟~Jb<~b֘U,V[̴TffbkpTB,[V5vFb]jgUa픬Mʼ;Y6z0J*#cӭ<{9YUIS}U5ts/W.fܴ;u2ᷪPהV)$=k?u厽MYԻ>f *{UYzB|n%^nuE92Նv|]1r773T oiy~\|xJZ&ÑK{yاf\Z)UhiN[iδ05.)݁FS&FC7wq6J,uva^:I+ks=,MޥD$KF?% A;빝\,͎-xh2AAf%KNNNJPjjjq-3i6dI:h!vF4@;rs Yeh2AAf%q@ADoxrT"5)#kn+DJ%J*4[J7i|H%Y,oc gp@mXK2ru}WP.1+l.ʻA6~jq/yvρ&;bW*r{9:L5{;;?{𶿎'7}NCV⌊!<ɾlܝ!ԡOB)-;L򗝍4U+6?#!gbbW[ĉ eS^1KV[]5W{̜AFeF&ʧX*SuK2 <ϋs#S֛Y|{7ō׍?RUaYӫoy( }VZ6|5]g~ᓋ;hgsǕW}X5a\v#S>:v(x\PV::Ϛ#M>\*vo:!Ne/?j?2m2]<0wͦ'|\`^cc[gpXy Ϥ9X]?`Eg~UWT-N R'(GgnfpG\nEـ.{q(nNN9J*p(**cF4|_ho9sT:[4g [a5H#XV|¼C.b1~w' ʼ kV7)>w% M2e!5nڄaF**=#Ϭ70#zLU#Va&Σ'M9k,ov!Om3V{巎eTD˃XhK|}$w>NU2xl߂sK_{uSDۚqY”aQ9KhD^|ԼV*bveT(r:RVeu&܎ /WDWHYU.U6zX|ûțZ?u>UnF 2`.P^jWf.Y|Ɲ1L3yYhj~Py?d[D#e>l7prZSX^Y爔&S[_ϴatHlXI)/L,)Q<>hQqNj>f'TyX: IUe_5i efhl/f6cz%q(6ZhˣQ^,!e}[vsvN8d^]2BHȡw2;']5i6j0'|VYy"EcY)FT".KskϫR[{<"Z\|(艋Qj&#ϥ!qrr¾[>h)G%0.ST\̙9)Uj#K3WLSDST|ѧ+ߚд4MJZ]7f\c-(bOf\i/rP.˪%*{RY]}#RI}3%#g>>}49᷒d4v̅スȎ?UUwNol'}EQAEFel!3S عYM,F;94UCo?GylrTBFnmY{?Y=ÏN 2&Vr\/垣GSU%3Uhgs1qWVJ\,ʜ; }W5~~"DFAY=rΚw c0`OτO_,ysz(9%v;4!9^ˇM_sO? -}'@;e+\ sc_ ֯^8n?L45o\nc*zn( FF\TvqeaF|d2YnHgxGO^Nz~*3ip*Ӟd.̙:yIWćOLΨׯ{^Vy)׍\jFd ݆uqӮlZ *w:ű ~iw "#s~ÇqKeGHX~NҌ;S :u}O:jcA#|Aw5Y;s9NOx V>NXgC=(y ʠs\Cq 4e_wDqIKLs?Npؒ'jV'֯+]e:f\ ܣLmEPVVHM/My$lgfkly=Mb~m R}ͺR;MOmZ1k sEsfL;}NP_7qO7G+#+&y'/\'/?̮Cg+K%s~ö#9Sdg4LŒm"6y4]Z%JY\]I%tݝu^-%Ա<&[d 5c53e,6͢[&29FW*:᠝hU)z|>9Ur{o3:M± cgZ/qV˕l6Ao§aZ@p.}L)I8&QY CRqTntr5a7壒Ihl}wOqIo*\*U<һNܭ7%u4f荙۸ǐ/\Gt{<OCڏMg{?(7O:) SWo42ڹgj·h~f0J(ϹZ)𰛾1`If>P?D-[x?r#Znj¿Vh***khg3F;=f%KUUUP~&{;nO+0_8s)&^K9}5bu+g<}G.z:2\˶jX@W<cqYYϟ~YZm9xѝ14~B$.8x iGI M!:Tezy *m9.?^pXE`Ɣ_Hq]&8t0m{=pLYC/\ŅG0-Bd4 -\Wߢ̻M7Wpa8,3ÒcG2&={Gת䄃+RE 96y{ PXL1PZm5ɕ@[ǁB6`m:I+!AqNYFZۨcseaշYsϡ4I%^Il[; x>xI=ET1yرq=dذ ٖG‡ 3"S{ 3dlO禌o -d5N!~˾҄ , S`jMt۾<6~AgGQx$d^`'^U]/\Ÿj@0[ ܖa 9o}wlP[j=;l>!!veއ?m|q,wF4/v}һ0ܖW8X{%Mgdc0m̖Y7}Pt dW;l1 }fCg̻]h`'$ˉ>{ Th!6Fut~<g\>Z$f߼6Y=Z99rH2V7{( 9MӖ;/V2SI@!D3dj#Nzcou"nC8x DM@sVjZma6c~Nu \hlʝVYOSqe]fe Q(+-Ӌe,MUeHOœ*qqvqucqqqk]ެ?;Aה-JG[>ey%ޥѼ:gǢXTd'ލO+!p4>N qQ3t:ܽeK*oFÙK|,'v.{Խ>j~PWp~b8G-V?aGxn\o4s 5fE&7a@,m#9g1(pmUQiU~HrQMp2sS=Px!M>p#-cK.6^UXRfTip{Ki6f71VGaG$"Š [Ul ހ{b<B4W%ev̢hβv@]\lbs Y#"X I3|N LFd`nˬ0x{+0ieQgOp7@/G;N coil'A#sSCŽqSf ʦj6vKiͽB͘8̀sol W|yJW.bjiƈtwҍBOQ'?jK>vp]U)vK[O^;#]EYMzysz;SeS'gFJKq@RԲfK?8qwB+&-H員~vW9ŕn<fOXGN^>IR8ѹ Ě&/t:-OCM:=ڕLYcfVCK"\1Ziŷ-~X̩g%*l^_1괪;&V^盪~ 02s~x-jJq3`i7nKV'+8Ƞ7~Gn%_Z:o$|/^ɦ| z5) c Lzͬe(~DNw̞ڬx{yC\`e"zedΞʭm 42EE[&*Kz%TAϋ;v'V/kZO 9}G`4);^GMhQ#B0&:)3 ǜO(c;.;UV{%)+SggSޝj tK|NYMxxyE2Vs/fH_}_t'j޴/3tڜG6oLş楼Fm&;aHvn?"cg.2Ә1&tr`wHur86 !3-.m(h2ulٛv_35k~?r6.!o3ʂ?Ϛ Zus7D?̖F%]"ΘPlbG"][9kE+cYΌN ˪~}ސfMRdƲW "sW8MVCofK"T:nXDT\`B'VC}k2w!ڵkɶF|k75a05ve TʔL6ެ2 ,_o &lzozwR}_^=E"rpTH2tHd$ym%Og jal k1t&֕48{u/Z:i=~BLJJZs'}߬}+B 8Nke3T&EKKM ^!cȗܼ4Z#{ot%RVߎM~wKlA1=hȒ@\Poy;iLyN) iWנAlH"]FZgT[?͠7b`FzmͯLLz;lްSʂIq؊ܬ,{.몌&dJl-er@m~®9 ltsu tl߰ Ϳ}M,\ݜe? ذd8k'l͌4;Z8ffwk@`DLz-LDK9a^0sCzyb2wdYQ!C>%/+L+1 vxe')w=e/sWL]~-`76":͵7XAx9SX-g̶9MGEҗ=_m\{,rfG/4RKVS- A򲻻GO◫^;265gؘE?~9xoyq p~v9\k:>dzEWn\9ÃEYbty>@^~ܸv{j!LMOޕ%~&Ǯ>;b%e5e]˿>;ȫOx[u7$!'/3}W 4@zws#oqZW5\\\: ˻y*97 Ttf:=氬K0Ԁ4&b3l徏ɨa*mB 51Az[`R/kL&# Si!1Ԍ1tkh02l* :R^قhbX]Yȣ`tEOVF`ЭMz#Di)h4㪅,5,˲-V3!hP4ZMzg0 -&h,&n4aq &:C#VC0d T6FQhLJߢ3Xt ykuA( :Q~& ><ҿr }o:8LeЩ]Y(TJ4V=sЙOp S wv}*OS{ScR4Fg/q޶{W"PY g3IjjBb42 gQ sr9NLN`rV.^镍)r#Qdc}Π1llY ٤-/,Ԛ|҂fHd!zRR>/UfYCuaIBe p7oM=`+HFmg!V\[bFX>GV[SܢBIQSV]\b'&Ž{jL-K5 5*MVr71mLFaVxcuifv[fZ=bP6M2,|]Uqit[d[emhZFFmcg FVעpZY]jzbrQ /Fg\N7S%yeWcӟPkK gÔUUZh)l -,+j9:RSqaNqI-݆oâKs˫$zGx/^y{7pKr3!*NMM4sIqZR(cfUCZz@uP<޽jIڼ\Kˤ֕-ƨ\;~wUVZ|gsc(J~p^CSԳs+Q9l.q%! ojE7:G=u`G~uT$ º *Z{9[}C ׭'5F Il[[;Kש[*,mct&-J{,?y\/:F>gZ=?ܯ#L΀3![+𭃆- P&*A%Hbo$4sb^Uq+ZIҡ=(cR^Uܒ%$^?ZOۑZ(C]m d=m!PL'n:OFIM7WתIwEС֑|jm 5z] Z#J~DvlO&7N-|jOQ ʒ2ƌYyV1mT8VАo>{DʃHgO`q`|ޛ2z°@ 47˜<ؽy&'%ruX9#t]}mɝM: ؅BaBIĬ'M,˼Ow 9a̡FjLnBz}D'bDuBE%%Il[ɇF.2X-6d{ႉנc?lV]:s:Va9|rvB:IjFhjMwџ*lB;Z =6ǖMfl3͠cn8f!gB䇻Y9'_HNJ+laAλ!p>ЇQ~^#8r!*RVk9^;yߑG3fJ}ۿ4gɨⵏBm?q\qV4i{DY-u096LMͷU'ϥB%u뾣'P!E9urEI'&ڤh,}MUUE') N Q5zP3YԨKQ\Ѣ-W&3NXKLfQ3fmlE춙-8}D9lHVmY97+&9#0eX^0=Yo0%+euUowSm/N?C }30|ܜT~7fx)jUÎOdܱl !ɓm+‹y ң[ΐm. HVY9;_"o!y/yc}\zg'S2Z)@3 !B8L^[ר!tegMG OB~Wz+?l~pX_{v,g@S$&WinnVQޛo !!íwl8.SBA.#,q von-ݒrX ƌ ҆sBCq1 =ȱ<~K ÂH}F͚2ȋlDũO_NNZ6''oPx1yQmTKM7ީcoޭXv4r7խ6"Zq Cza~B"?wl{j ۹ߨ(ZEȎFޗ6u V}DB[{7/G8#٫tcX(-jC? uc0Α-q3}=G `G/;}kC" M{h ɪ1/3U1kF{]--gvX}w{Hȧ:z;v\&Fr}F NWf %!/R>P;vKɑZBhCk< {tt vΏwSi ?Wowv}8ͷ.\M1 /nϝ>~eYS è*ȕT*!SəQiˡ60 Rp ݣo#E錼e :>M`f3#4J+rֽI3cFʂ(?DP?cRYJQ3PE8NAvٌ4^f %b@ȃC08B~5/9?l[Hh8D=RUAD'fJ*ֽ',b-E?f0PiSc_HP{jIns'Iv ﰗ(4* 8opw,B¢ӑ{anPοֻtmo*䶏0y BA磮u`C^& 8!Ppg_BwwjjB{a8@@` PC. ;L& 8@U3V)#6Io;$U(?1cbys±dz&`dj 3?D۬\?9j3=Ñ>}!sѻZcg7j6D "=Oͨow 0[+ҭMm¿ٽG,̛ͫ7܍͜9s/Wqm*K}m5I'F2j 澯Z>i_-Zs;_nkA(rr234̙Q;NƓfd,i+v\ yx-d??T69iӉ<=r+ b%e%oFI~2n>!}wTgrYw8Xn^<{N,7͌P҈&nJ{gLNэӫ&_>%hfW/$]¬/Eo~lʚ4O[TgEE͚׀隿`E[{^ۯ}[b>n#sbtv(**t珷ƗJ2YjD }ÕM?}jRJ[a=GeKv|ZfҴ4]K8sNd MCԫtzƌ*o,NVkyM99y3\+Û?r1^o@U_}D :\q nԩzīom4d~aTò%jQͧ_z3gݣ_l:6(7}@`sIl[[5 ͠TdLe^%]W-]]fM.ٜ3.3yꆪK4xGZ*Wb7k斖S9^aЩҖS|s$^巷_:.~}ƒZ[7nt+gĻ?kȿSFުE +?ٌc(y&]tŕ-:ktآ?t.\X+9 oכ6KB.GU4eڊz<ٶ'jd$4]dJCWB‚wW dX+grYw8_Qv#9p*hGJs: l-ڜ۬w`qL"uFUuyFܾ?gdD߾i=lםӋ^S8եOY`-$^ #T[;;EGA/+HLH|rӿ6߫Sdfeݹ_$u;2Ɍrb/\ZzؐBO?J6ܷ<𽏭uox]3;8+bƺu\tJ f/o[fM03B%rF\|.\ 56,M3fsEf9hB^ZD~ɇ'ʪ䄡MǍ3B!iˎtG jOvf%KD3u+$VZ9̺]80b F?%/Ҟ־!bKwm;7x4R>Jz&rR 3/_UeqTc\ԊuM:tуkQ*)XӑjaӢtW&Qa~_^2s+oa@fw_$CL. 9m.Dr۔]ք<7bHES2kZO 5:2oM` ҖӨ3ZҎ@/,2n,p\Haz?Ys+bXlwvX."79h`1Rc{. }|G!CfL|cCܣp"9hGEaˮ~hqfVR"`Osˡ!fysM'Σ)faȄS9U ^<珻r73v|.6|#mSl{`ehE sc Ay%? T!Oq||FxkK8cw~iI!xvYrvv$hf]\Aۯ-V(=ƐNQ[n'ߵE\ Yhkr+ H-[ܟnJ7ljݾ;CƸݜTJG[+ ~n,1%sL\y[]TR(zE^v&4 ci-:fnݵ}C],]%=,?X=," 8]8C`3,"P˔E"t`^ 8!Pp)GWg-08@gܰ)ke&#@CeB`J5 |^:СnF;+LfԩrZPVVw%BD-U(Uif˕Z U3*T*3$BjV*`!(' :FZ0V8(5΂MJ`jc'=o63W J+ѠRh V<|&Ujjzh=/hŬ_Q?YG9ڗ>.2*ڒֲc7_h秥HCn'E|s.=;+֤(۵z}D[&ySNQIKHI9g -Z  of_Uh?|pAsBq45^⛕haC.xq=4F]` aF%,a풗WZ0wρC&M7ؖM'^V |wW*%̻IdJ~Kׯ~oCҪSǯPukkPyVQq偡n.Bn,MN̔X΀3o Cڏ֒Ru(ఱ'ɣ'B"/̧ƥ>?/W&$o񴡡'E  ,NH/x֙=A־bЧ,cټi## 2eL1{8b76Oz[ "°&:ᖲ7Q/u̍rڄPS8}VKJY0T 4k`гLJzKG(Tzw|#)^!Ct[u qVm FeNm6"0xr^+MNfF{RjJҩ Hi,- <ٶ3Xy7QȕÇ+~̊'6mּ #ϫIo7+6Ox1Dcٯ\\~F2&XdeYDl)hM&">@?[.22k\HsޯoPF2m$+˗H˚t!!k3&ʻ|L+n4($=,"sd+Aw\DEqa[WQ"4:y]wɦ̱,Ȑx-@>b\X:(,0Iݜx؅k"1rڻi.$0/ܓzZ(eDd+WI +s6C 0ջOhh(dbD1ĥZ_r+g N7!'N3zuc|ke]];ڣ0BhGX;Rp|GMeFQB}XLE܌riBS]W7q.SW'vVx֒p"gpĝrww ETYe'0\SSojmmKOt8;;`>u bR@@@@@@@=JYl ,@@@@@@@@ e,r,EF?!x2-p IYҏqWl?R~nu' &e%W(@S^h= G7PWФ&[8o[<@@@@@@@Q suyRK(=/+r#/x';{/̯o(Ãx,ı ]x?1̆j=q)#:8zܴls@\BQ5E'zþ35AЁm'3}Ev(4{S`UY$ϋG6;S`ӵY$Г r2JpBn.-!7e=}DZFvQ6(>;QJ8r-[_?{a"[1RE[SIL ](,役2׍ ^{mszI3g'6u+TS}nl;6+/T<Goލz. spMֆ"_S9jEm\),k]4{ ,~!/$V7ij^4H]o/nm%|;\ B=+ʋzJR쐨HSBDM~8s/17o-|NQ#'SVVqsm E-e-V}<)ZUPR;zJ||防`4qw߃OfIr1$KHe0 S [189wB,ȉ{NE )a?C.6 @8p? ,7R v`iu۞/NVf\Bbf=zwzue5Cfͦ&P_9D8ún "G<7Uh)/< 6׳Xs\ lK߶_B[h4&$$VxcȠn!!頻x#IO8 SJE}t5CM\ϏϦ]s2RKKy1!-7l\]SY AV񡚌" ݹuUs󚛱wLU~LG :|M) :6PV74Rr׌U!ȩMbkIM-~!-U Vp,_7ZlBFB*͓TF~2{'>Z%-uwh\b~z^uPhD`8Jvv+aR&BߦN;8!N8N ȣ8Ô8A _ |Bx3 0bY?Pu=ފr#r#bLݛKle7jy>u X_EE FOne![@@@@@@@_J|||ppN#H')B&qF5F>QF1)))00PѨT*>j(Kb2LHfY. BRrI D`<,IENDB`xyscan-3.31.orig/docs/fr/navigate.html0000644000175000017500000000575211470620504020135 0ustar georgeskgeorgesk Moving the Cursor

Déplacerle curseur

Une fois le graphique chargé, deux lignes rouges sont visibles (voir capture d'écran ci- dessous). Elles forment une croix et seront appelées dans la suite "curseur". Les deux lignes sont exactement un pixel de large. L'intersection entre la verticale et l'horizontale définit la position du curseur. Les coordonnées x, y du curseur sont affichées dans la fenêtre affichage des coordonnées. Déplacez le curseur (en forme de croix) en utilisant les touches flèche-haut, flèche-bas, flèche-gauche et flèche-droite. La valeur de l'incrément est de 1 pixel. Si vous souhaitez déplacer le curseur plus vite (dans les grandes tranches) appuyez sur la touche Shift et une touche flèche. Sinon, vous pouvez aussi utiliser la souris. Appuyez sur le bouton gauche de la souris à proximité du curseur, c'est à dire, l'intersection des lignes en forme de croix, et faites-le glisser tout en gardant le bouton enfoncé. C'est même plus rapide en double-cliquant sur le bouton gauche de la souris pour former croix à la position du curseur.

Conseil: Pour déplacer le curseur rapidement, le double-clic de la souris est certainement plus rapide , mais utilisez plutôt les flêches surtout lorsque vous placez le curseur pour la numérisation.

xyscan-3.31.orig/docs/fr/supported.html0000644000175000017500000001255111470610542020360 0ustar georgeskgeorgesk Supported File Formats

Formats d'images supportés

Les formats d'images supportés par xyscan dépendent de la plateforme utilisée. Par défaut, xyscan supporte les formats suivants:

Format Description
BMP Windows Bitmap
GIF Graphic Interchange Format (optional)
JPG Joint Photographic Experts Group
JPEG Joint Photographic Experts Group
PNG Portable Network Graphics
PBM Portable Bitmap
PGM Portable Graymap
PPM Portable Pixmap
XBM X11 Bitmap
XPM X11 Pixmap

Les fichiers TIF et PNG sont supportés par la plupart des plateformes testées. Notez que vous pouvez utiliser tous les formats (PDF, EPS, ...) qui ne sont pas directement supportés, en utilisant un afficheur externe, par simple copier/coller dans xyscan (voir Utiliser le presse-papier).

xyscan-3.31.orig/xyscanAbout.h0000644000175000017500000000204411377515113016557 0ustar georgeskgeorgesk//----------------------------------------------------------------------------- // Copyright (C) 2002-2010 Thomas S. Ullrich // // This file is part of "xyscan". // // This file may be used under the terms of the GNU General Public License. // This project is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License. // // Author: Thomas S. Ullrich // Last update: July 16, 2007 //----------------------------------------------------------------------------- #ifndef xyscanAbout_h #define xyscanAbout_h #include class xyscanAbout : public QDialog { Q_OBJECT public: xyscanAbout( QWidget* parent = 0, Qt::WindowFlags fl = 0 ); public slots: void accept(); void license(); private: QFrame* mLine; QPushButton* mButtonLicense; QPushButton* mButtonOk; QLabel* mTitlePixmapLabel; QHBoxLayout* mButtonLayout; QVBoxLayout* mLayout; QPixmap mTitlePixmap; QString mVersionText; bool mTitleShown; }; #endif xyscan-3.31.orig/xyscan.qrc0000644000175000017500000000034011173544650016121 0ustar georgeskgeorgesk images/arrow_next.png images/arrow_prev.png images/xyscanIcon.png images/xyscanSplash.png xyscan-3.31.orig/xyscan_fr.ts0000644000175000017500000010010211473256334016450 0ustar georgeskgeorgesk xyscanAbout &Ok &License &Licence About xyscan A propos d'xyscan Tit&le && Version Titre && Version Copyright (C) 2002-2009 Thomas S. Ullrich This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Title && &Version Titre && &Version xyscanHelpBrowser Help Aide Home Accueil Close Fermer Help: %1 Aide: %1 Cannot open the index descriptor file to setup the documentation. No online help will be available. Check your installation and reinstall if necessary. Le fichier d'index de la documentation est introuvable. Aucune aide ne sera disponible. xyscanUpdater Cannot check for updates. (Failed creating temporary file). Echec de la vérification des mises à jour. (Création du fichier temporaire impossible). xyscan Download of xml file failed. Cannot check for latest version (%1 %2). Make sure you are connected to a network and try again. Echec de téléchargement du fichier xml. Impossible de vérifier la dernière version (%1 %2). Vérifiez votre connection réseau et réessayez. Cannot connect to server to check for latest version (%1). Make sure you are connected to a network and try again. Impossible de vérifier la présence d'une nouvelle version (%1). Vérifiez votre connexion ou recommencez plus tard. Parsing of xml file failed. Cannot check for newer version. Try again later. Echec de l'analyse du fichier xml. Impossible de vérifier les mises à jour. Réessayez plus tard. <html>A new version of xyscan (%1) is available.<br>To download go to:<br><a href="%2">%2</a></html> <html>Une nouvelle version d'xyscan (%1) est disponible.<br>Téléchargez-la ici:<br><a href="%2">%2</a></html> You are running the latest version of xyscan (%1). Vous utilisez la dernière version d'xyscan (%1). Cannot check for latest version. (%1). Make sure you are connected to a network and try again. Impossible de vérifier la dernière version disponible (%1). Vérifiez votre connection internet et recommencez. xyscanWindow Usage: xyscan -v xyscan filename Utilisation: xyscan -v xyscan nom_de_fichier (build File ' Le fichier ' ' does not exist. ' n'existe pas. N/A Pixel: En pixel: x: y: Plot Coordinates: A l'échelle du graphe: Plot Adjustments Ajustements graphiques Plot &Adjustments &Ajustements graphiques Coordinates Coordonnées &Coordinate Display &Coordonnées Settings Paramètres &Settings Paramètre&s Data Table Tableau de valeurs &Data Table Tableau &de valeurs Cannot find the directory holding the documentation (docs). No online help will be available. Check your installation and reinstall if necessary. Le répertoire contenant la documentation est introuvable. Aucune aide ne sera disponible. Cannot find the index descriptor to setup the documentation. No online help will be available. Check your installation and reinstall if necessary. Le fichier d'index de la documentation est introuvable. Aucune aide ne sera disponible. &File &Fichier Open &Recent Fichiers &récents &Edit &Edition &View Affichage &Help Aide &Open... &Ouvrir... &Clear History Effacer l'historique &Save... Enregi&strer... &Print... Im&primer... &Quit xyscan &Quitter xyscan &Paste Image Coller une image Delete &Last Effacer &le dernier point Delete &All Eff&acer tous les points &Comment ... &Commentaires... &Current Precision Pré&cision &About xyscan &A propos d'xyscan &Documentation &Tool Tips Bulles d'aide &Check For Updates ... Vérifier les mises à jour... Ready Prêt Upper X: X<sub>2</sub> : Lower X: X<sub>1</sub> : Set Déf. undefined indéfini Lower Y: Y<sub>1</sub> : Upper Y: Y<sub>2</sub> : Axis: Axes: Log X Log Y Error Scan Mode: Barres d'erreurs: X-Error: Erreur (X): No Scan Aucune Asymmetric Asymétriques Symmetric (mean) Symétriques (moyenne) Symmetric (max) Symétriques (max) Y-Error: Erreur (Y): x y -dx +dx -dy +dy No plot loaded Aucun graphe chargé Rotate: Rotation: Scale: Echelle: xyscan - Comment xyscan - Commentaires The following comment will be written together with the data when saved to file or when printed: Les commentaires seront enregistrés avec les données et imprimés: You have unsaved data. Quitting now will cause loss of scanned data. Do you want to save the data? Vos données n'ont pas été enregistrées et seront perdues. Voulez-vous enregistrer vos données ? Scan x-error (-dx): move crosshair to end of left error bar and press [space] Erreur-x (-dx): Placez la barre d'erreur gauche et appuyez sur la touche [espace] Scan x-error (+dx): move crosshair to end of right error bar and press [space] Erreur-x (+dx): Placez la barre d'erreur droite et appuyez sur la touche [espace] Scan y-error (+dy): move crosshair to end of upper error bar and press [space] Erreur-y (+dy): Placez la barre d'erreur haute et appuyez sur la touche [espace] Scan y-error (-dy): move crosshair to end of lower error bar and press [space] Erreur-y (-dy): Placez la barre d'erreur basse et appuyez sur la touche [espace] Data point stored Point enregistré Data point and y-error stored Point et erreur-y enregistrés Data point and x-error stored Point et erreur-x enregistrés Data point, x- and y-errors stored Point et erreurs (x,y) enregistrés Cannot scan yet. Not sufficient information available to perform the coordinate transformation. You need to define 2 points on the x-axis (x1 & x1) and 2 on the y-axis (y1 & y2). Informations insuffisantes pour commencer l'aquisition. Vous devez définir 2 points sur l'axe des x (x1 et x2) and 2 points sur l'axe des y (y1 et y2). Sorry no help available. Documentation files are missing in this installation. Check your installation and reinstall if necessary. Aucune aide disponible. Les fichiers de documentation sont manquants. Vérifiez et réinstallez si nécessaire. Image loaded, no markers set Pas d'image chargée, aucun marqueur défini <html><table border="0"><tr><td>Info:<tr><td align="right">&nbsp;Dimensions:&nbsp;<td>%1x%2<tr><td align="right">&nbsp;Depth:&nbsp;<td>%3 bit<tr><td align="right">&nbsp;Alpha channel:&nbsp;<td>%4</table></html> <html><table border="0"><tr><td>Informations:<tr><td align="right">&nbsp;Dimensions:&nbsp;<td>%1x%2<tr><td align="right">&nbsp;Profondeur:&nbsp;<td>%3 bit<tr><td align="right">&nbsp;Canal alpha:&nbsp;<td>%4</table></html> Yes Oui No Non &%1 %2 Images ( *.%1 ) Open File Ouvrir un fichier File '%1' does not exist. Le fichier '%1' n'existe pas. Cannot load pixmap/image from file '%1'. Either the file content is damaged or the image file format is not supported. Impossible d'ouvrir le fichier image '%1'. Le fichier est peut-être corrompu ou son format n'est pas reconnu. Cannot load image from clipboard. Either the clipboard does not contain an image or it contains an image in an unsupported image format. Impossible de coller l'image depuis le presse-papier. Le presse-papier ne contient pas d'image ou le format n'est pas reconnu. xyscan Version %1 Date: %1 Scanned by: %1 Scanné par: %1 Source: %1 Comment: %1 Commentaire: %1 %1 xyscan - Print xyscan - Impression Save File Enregistrer le fichier Cannot write file %1: %2. Impossible d'enregistrer le fichier %1: %2. Data saved in ROOT macro '%1' Données enregistrées dans ROOT macro '%1' Data saved in '%1' Données enregistrées dans '%1' Error in calculating transformation. Markers on x-axis are less than two pixels apart. Cannot continue with current settings. Erreur lors du calcul de l'échelle. Les marqueurs sur l'axe x sont espacés de moins de deux pixels. Impossible de continuer. Error in calculating transformation. Markers on y-axis are less than two pixels apart. Cannot continue with current settings. Erreur lors du calcul de l'échelle. Les marqueurs sur l'axe y sont espacés de moins de deux pixels. Impossible de continuer. Error in calculating transformation. Logarithmic x-axis selected but negative (or zero) values assigned to markers. Cannot continue with current settings. Erreur lors du calcul de l'échelle. L'échelle logarithmique sur l'axe x ne peut être définie avec des valeurs négatives ou nulles. Impossible de continuer. Error in calculating transformation. Logarithmic y-axis selected but negative (or zero) values assigned to markers. Cannot continue with current settings. Erreur lors du calcul de l'échelle. L'échelle logarithmique sur l'axe y ne peut être définie avec des valeurs négatives ou nulles. Impossible de continuer. Enter the x-value at marker position: Entrer l'abscisse du marqueur: %1 is not a valid floating point number. %1 n'est pas un point de type" réel" valide. Ready to scan. Press space bar to record current cursor position. Prêt pour l'aquisition. Appuyez sur la barre d'espace pour enregistrer le point sélectionné. Enter the y-value at marker position: Entrer l'ordonnée du marqueur: Estimated precision at current point: dx = +%1 -%2 dy = +%3 -%4 Précision estimée pour le point sélectionné: dx = +%1 -%2 dy = +%3 -%4 Cannot determin precision yet. Place all 4 markers first. Impossible de déterminer la précision. Placez d'abord les 4 marqueurs. Scan area Zone d'acquisition Coordinates Display Window: Displays cursor position in local (pixel) and plot coordinates. Fenêtre d'affichage des coordonnées : Coordonnées locales (en pixel) et à l'échelle du graphe. Settings Window: Use to set axes marker, define axes, set log/lin scales, and set the error scan mode. Fenêtre des paramètres: Sert à définir les axes par l'utilisation de marqueurs, l'échelle linéaire ou logarithmique et la prise en compte des erreurs. Data Table Window: Window displaying the data table that holds all points (and errors) scanned so far. Fenêtre d'affichage des données: Affiche les données acquises et leurs erreurs dans un tableau de valeurs. Plot Adjustments: Window displaying info on the current plot and controls that allows to scale (zoom in/out) and rotate the plot. Fenêtre d'ajustement: Affiche des informations sur le graphe, permet d'ajuster le facteur de zoom et d'effectuer une rotation sur le graphe. Displays the x coordinate of the cursor in pixel (screen) units Affiche l'abscisse x du curseur en pixel Displays the y coordinate of the cursor in pixel (screen) units Affiche l'ordonnée y du curseur en pixel Displays the x coordinate of the cursor in plot units. When the point is recorded (space key) this coordinate gets stored in the data table. Affiche l'abscisse x du curseur avec l'échelle définie. Cette valeur est enregistrée dans le tableau de valeurs en appuyant sur la touche espace. Displays the y coordinate of the cursor in plot units. When the point is recorded (space key) this coordinate gets stored in the data table. Affiche l'ordonnée y du curseur avec l'échelle définie. Cette valeur est enregistrée dans le tableau de valeurs en appuyant sur la touche espace. Open file to read in image Ouvre un fichier image Save the scanned data in text file Enregistre les données acquises dans un fichier texte Print the plot together with the scanned data Imprime le graphe et les données acquises Quit xyscan Quitter xyscan Delete last scanned point from data table Effacer le dernier point du tableau de valeurs Delete all scanned point from data table. Effacer tous les points du tableau de valeurs. Write comment that will be added to the scanned data when saved to file. Les commentaires seront ajoutés lors de l'enregistrement des données acquises. Paste image from clipboard Coller une image depuis le presse-papier Clear list of recently opened files Effacer la liste des fichiers récemment ouverts Shows scan precision at current cursor point Affiche la précision du point sélectionné Switch on/off tool tips (Dés)activer les bulles d'aide Set marker to define the first (lower) position on the x-axis. Launches input dialog for the referring value in plot coordinates. Définit la première valeur sur l'axe des x. Permet d'entrer l'abscisse du point dans le système de coordonnées du graphe. Set marker to define the second (upper) position on the x-axis. Launches input dialog for the referring value in plot coordinates. Définit la deuxième valeur sur l'axe des x. Permet d'entrer l'abscisse du point dans le système de coordonnées du graphe. Set marker to define the first (lower) position on the y-axis. Launches input dialog for the referring value in plot coordinates. Définit la première valeur sur l'axe des y. Permet d'entrer l'ordonnée du point dans le système de coordonnées du graphe. Set marker to define the second (upper) position on the y-axis. Launches input dialog for the referring value in plot coordinates. Définit la deuxième valeur sur l'axe des y. Permet d'entrer l'ordonnée du point dans le système de coordonnées du graphe. x-axis value in plot coordinates assigned to the low-x marker (read only) Abscisse du premier point dans le système de coordonnées du graphe (lecture-seule) x-axis value in plot coordinates assigned to the upper-x marker (read only) Abscisse du deuxième point dans le système de coordonnées du graphe (lecture-seule) y-axis value in plot coordinates assigned to the low-y marker (read only) Ordonnée du premier point dans le système de coordonnées du graphe (lecture-seule) y-axis value in plot coordinates assigned to the upper-y marker (read only) Ordonnée du deuxième point dans le système de coordonnées du graphe (lecture-seule) Check if x-axis on plot has log scale Echelle logarithmique sur l'axe des x Check if y-axis on plot has log scale Echelle logarithmique sur l'axe des y Allows to rotate the plot if needed to align it for the scan. To be done before setting markers. Effectuer une rotation du graphe pour aligner les axes avant de placer les marqueurs. Allows to zoom in and out the plot. To be done before setting markers. (Dé)Zoomer sur le graphe avant de placer les marqueurs. Defines error scan mode Mode de traitement des erreurs Data table holding all poinst scanned so far Tableau de valeurs contenant tous les points acquis Marker for lower x-axis position Marqueur pour le point gauche de l'axe des x Marker for upper x-axis position Marqueur pour le point droit de l'axe des x Marker for lower y-axis position Marqueur pour le point bas de l'axe des y Marker for upper y-axis position Marqueur pour le point haut de l'axe des y Horizontal bar of crosshair cursor Barre d'erreur horizontale Vertical bar of crosshair cursor Barre d'erreur verticale Rotate current plot (degrees) Rotation du graphe (degrés) Scale (zoom in/out) the current plot Zoom avant/arrière sur le graphe Show dimension and depth of current plot Affiche la taille du graphe et la profondeur des couleurs Help browser for xyscan documenation Naviguer dans la documentation d'xyscan Crosshairs Color... Couleur de la croix... &Comment... &Commentaires... Horizontal bar of crosshairs cursor Axe horizontal du curseur Vertical bar of crosshairs cursor Axe vertical du curseur