[arch-commits] Commit in gpsbabel/trunk (5 files)

Balló György bgyorgy at archlinux.org
Wed Jun 19 11:39:48 UTC 2019


    Date: Wednesday, June 19, 2019 @ 11:39:48
  Author: bgyorgy
Revision: 482341

upgpkg: gpsbabel 1.6.0-1

Update to new version

Modified:
  gpsbabel/trunk/PKGBUILD
  gpsbabel/trunk/drop-map.patch
Deleted:
  gpsbabel/trunk/0008-Correctly-read-diff-and-terr-from-geo-format.patch
  gpsbabel/trunk/build-fix.patch
  gpsbabel/trunk/fix-map.patch

---------------------------------------------------------+
 0008-Correctly-read-diff-and-terr-from-geo-format.patch |   29 
 PKGBUILD                                                |   35 
 build-fix.patch                                         |   58 
 drop-map.patch                                          |   77 
 fix-map.patch                                           | 2183 --------------
 5 files changed, 44 insertions(+), 2338 deletions(-)

Deleted: 0008-Correctly-read-diff-and-terr-from-geo-format.patch
===================================================================
--- 0008-Correctly-read-diff-and-terr-from-geo-format.patch	2019-06-19 11:05:37 UTC (rev 482340)
+++ 0008-Correctly-read-diff-and-terr-from-geo-format.patch	2019-06-19 11:39:48 UTC (rev 482341)
@@ -1,29 +0,0 @@
-From 4cecea61aa5a33f4accfa109d0b73d7878462962 Mon Sep 17 00:00:00 2001
-From: Robert Lipe <robertlipe at users.noreply.github.com>
-Date: Sat, 14 Oct 2017 21:59:24 -0500
-Subject: [PATCH 8/8] Correctly read diff and terr from geo format.
-
-Thank you, Rick Richardson.
----
- geo.cc | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/geo.cc b/geo.cc
-index 5c785f38..e6f4560a 100644
---- a/geo.cc
-+++ b/geo.cc
-@@ -74,9 +74,9 @@ void GeoReadLoc()
-         waypt_add_url(wpt,
-                       reader.readElementText(), a.value("text").toString());
-       } else if (current_tag == "/loc/waypoint/difficulty") {
--        wpt->gc_data->diff = reader.readElementText().toInt() * 10;
-+        wpt->gc_data->diff = reader.readElementText().toDouble() * 10;
-       } else if (current_tag == "/loc/waypoint/terrain") {
--        wpt->gc_data->terr = reader.readElementText().toInt() * 10;
-+        wpt->gc_data->terr = reader.readElementText().toDouble() * 10;
-       } else if (current_tag == "/loc/waypoint/container") {
-         wpt->gc_data->container = wpt_container(reader.readElementText());
-       }
--- 
-2.14.3
-

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2019-06-19 11:05:37 UTC (rev 482340)
+++ PKGBUILD	2019-06-19 11:39:48 UTC (rev 482341)
@@ -4,9 +4,9 @@
 # Contributor: William Rea <sillywilly at gmail.com>
 
 pkgname=gpsbabel
-pkgver=1.5.4
-_pkgver=1_5_4
-pkgrel=5
+pkgver=1.6.0
+_pkgver=1_6_0
+pkgrel=1
 pkgdesc="Read, write and manipulate GPS waypoints in a variety of formats"
 arch=('x86_64')
 url="https://www.gpsbabel.org/"
@@ -15,35 +15,20 @@
 makedepends=('imagemagick' 'qt5-tools')
 source=(https://github.com/gpsbabel/$pkgname/archive/${pkgname}_$_pkgver.tar.gz
         gpsbabel.appdata.xml
-        build-fix.patch
-        drop-map.patch
-        fix-map.patch
-        0008-Correctly-read-diff-and-terr-from-geo-format.patch)
-sha256sums=('8cd740db0b92610abff71e942e8a987df58cd6ca5f25cca86e15f2b00e190704'
+        drop-map.patch)
+sha256sums=('ad56796f725dcdb7f52d9a9509d4922f11198c382fe10fc2d6c9efa8159f2090'
             '5eb52ab0c4bdde61c747856e849f9bce9ca660e942c15f730a4330a38fd6a39a'
-            '537752bd5d097d836d4d5a77b4f7a5ea68d408d6a648511e4a98865d2742fb46'
-            '69b4fad0bc5b33e332dc79c1c65482f942bf5a596b2d82b3d6a565cdd444b6ee'
-            'e00530f3b40a6c516cb45c59bbdfd5f4a801f7bb55e02205e7fc975c262db3a1'
-            '384e1603179be2d6cc0b2837da7eb11002e5aefd72c1dbc2ed2697ef4058289f')
+            '5377f1a6f0d52d93f7d604c171ce1f6b18bb389c9e4c67ff4910c4079a2696fd')
 
 prepare() {
   cd $pkgname-${pkgname}_$_pkgver
 
-  # Fix build
-  patch -Np1 -i ../build-fix.patch
-
-  # Drop map
+  # Remove map due to heavy WebEngine dependency
   patch -Np1 -i ../drop-map.patch
 
-  # Fix map
-  # patch -Np1 -i ../fix-map.patch
-
-  # Correctly read diff and terr from geo format
-  patch -Np1 -i ../0008-Correctly-read-diff-and-terr-from-geo-format.patch
-
   # Fix path
   sed -i 's|langPath_ = QApplication::applicationDirPath();|langPath_ = "/usr/share/gpsbabel";|' gui/mainwindow.cc
-  # sed -i 's|baseFile =  QApplication::applicationDirPath() + "/gmapbase.html";|baseFile = "/usr/share/gpsbabel/gmapbase.html";|' gui/map.cc
+  sed -i 's|baseFile =  QApplication::applicationDirPath() + "/gmapbase.html";|baseFile = "/usr/share/gpsbabel/gmapbase.html";|' gui/map.cc
 
   convert gui/images/appicon.png +set date:create +set date:modify -background none -gravity center -extent 512x512 gui/images/appicon.png
 }
@@ -65,11 +50,11 @@
   make DESTDIR="$pkgdir" install
 
   # GUI
-  install -Dm755 gui/objects/gpsbabelfe-bin "$pkgdir"/usr/bin/gpsbabelfe-bin
+  install -Dm755 gui/objects/gpsbabelfe "$pkgdir"/usr/bin/gpsbabelfe
   install -Dm644 gui/images/appicon.png "$pkgdir"/usr/share/icons/hicolor/512x512/apps/gpsbabel.png
   install -Dm644 gui/gpsbabel.desktop "$pkgdir"/usr/share/applications/gpsbabel.desktop
   install -Dm644 ../$pkgname.appdata.xml "$pkgdir/usr/share/metainfo/$pkgname.appdata.xml"
-  # install -Dm644 gui/gmapbase.html "$pkgdir"/usr/share/gpsbabel/gmapbase.html
+  install -Dm644 gui/gmapbase.html "$pkgdir"/usr/share/gpsbabel/gmapbase.html
   install -dm755 "$pkgdir"/usr/share/gpsbabel/translations/
   install -Dm644 gui/*.qm "$pkgdir"/usr/share/gpsbabel/translations/
 }

Deleted: build-fix.patch
===================================================================
--- build-fix.patch	2019-06-19 11:05:37 UTC (rev 482340)
+++ build-fix.patch	2019-06-19 11:39:48 UTC (rev 482341)
@@ -1,58 +0,0 @@
-diff -wbBur gpsbabel-1.5.4/tef_xml.cc gpsbabel-1.5.4.my/tef_xml.cc
---- gpsbabel-1.5.4/tef_xml.cc	2017-01-02 08:05:19.000000000 +0300
-+++ gpsbabel-1.5.4.my/tef_xml.cc	2017-02-16 16:20:22.788961096 +0300
-@@ -72,11 +72,11 @@
-   bool valid = false;
- 
-   foreach(QXmlStreamAttribute attr, *attrv) {
--    if (attr.name().compare("Comment", Qt::CaseInsensitive) == 0) {
--      if (attr.value().compare("TourExchangeFormat", Qt::CaseInsensitive) == 0) {
-+    if (attr.name().compare((QString&)"Comment", Qt::CaseInsensitive) == 0) {
-+      if (attr.value().compare((QString&)"TourExchangeFormat", Qt::CaseInsensitive) == 0) {
-         valid = true;
-       }
--    } else if (attr.name().compare("Version", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"Version", Qt::CaseInsensitive) == 0) {
-       version = attr.value().toString().toDouble();
-     }
-   }
-@@ -95,9 +95,9 @@
- {
-   route = route_head_alloc();
-   foreach(QXmlStreamAttribute attr, *attrv) {
--    if (attr.name().compare("Name", Qt::CaseInsensitive) == 0) {
-+    if (attr.name().compare((QString&)"Name", Qt::CaseInsensitive) == 0) {
-       route->rte_name = attr.value().toString().trimmed();
--    } else if (attr.name().compare("Software", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"Software", Qt::CaseInsensitive) == 0) {
-       route->rte_desc = attr.value().toString().trimmed();
-     }
-   }
-@@ -248,20 +248,20 @@
-     QString attrstr = attr.value().toString();
-     QByteArray attrtext = attrstr.toUtf8();
- 
--    if (attr.name().compare("SegDescription", Qt::CaseInsensitive) == 0) {
-+    if (attr.name().compare((QString&)"SegDescription", Qt::CaseInsensitive) == 0) {
-       wpt_tmp->shortname = attrstr.trimmed();
--    } else if (attr.name().compare("PointDescription", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"PointDescription", Qt::CaseInsensitive) == 0) {
-       wpt_tmp->description = attrstr.trimmed();
--    } else if (attr.name().compare("ViaStation", Qt::CaseInsensitive) == 0 &&
--               attr.value().compare("true", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"ViaStation", Qt::CaseInsensitive) == 0 &&
-+               attr.value().compare((QString&)"true", Qt::CaseInsensitive) == 0) {
-       wpt_tmp->wpt_flags.fmt_use = 1;  /* only a flag */
- 
-       /* new in TEF V2 */
--    } else if (attr.name().compare("Instruction", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"Instruction", Qt::CaseInsensitive) == 0) {
-       wpt_tmp->description = attrstr.trimmed();
--    } else if (attr.name().compare("Altitude", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"Altitude", Qt::CaseInsensitive) == 0) {
-       wpt_tmp->altitude = attrstr.toDouble();
--    } else if (attr.name().compare("TimeStamp", Qt::CaseInsensitive) == 0) {
-+    } else if (attr.name().compare((QString&)"TimeStamp", Qt::CaseInsensitive) == 0) {
-       /* nothing for the moment */
-     }
-   }

Modified: drop-map.patch
===================================================================
--- drop-map.patch	2019-06-19 11:05:37 UTC (rev 482340)
+++ drop-map.patch	2019-06-19 11:39:48 UTC (rev 482341)
@@ -1,6 +1,6 @@
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/advdlg.cc gpsbabel-gpsbabel_1_5_4/gui/advdlg.cc
---- gpsbabel-gpsbabel_1_5_4.orig/gui/advdlg.cc	2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/advdlg.cc	2018-01-12 12:14:50.428923572 +0100
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/advdlg.cc gpsbabel-gpsbabel_1_6_0/gui/advdlg.cc
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/advdlg.cc	2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/advdlg.cc	2019-06-19 13:08:12.030299296 +0200
 @@ -37,7 +37,6 @@
  {
    ui_.setupUi(this);
@@ -7,9 +7,9 @@
    ui_.synthShortNames->setChecked(synthShortNames);
 -  ui_.previewGmap->setChecked(previewGmap);
    ui_.debugCombo->setCurrentIndex(debugLevel+1);
+ #if defined (Q_OS_WIN)
    ui_.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QIcon(":images/ok"));
-   ui_.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon(":images/cancel"));
-@@ -48,7 +47,6 @@
+@@ -50,7 +49,6 @@
  void AdvDlg::acceptClicked()
  {
    synthShortNames_ = ui_.synthShortNames->isChecked();
@@ -17,9 +17,9 @@
    debugLevel_ = ui_.debugCombo->currentIndex()-1;
    accept();
  }
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/advui.ui gpsbabel-gpsbabel_1_5_4/gui/advui.ui
---- gpsbabel-gpsbabel_1_5_4.orig/gui/advui.ui	2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/advui.ui	2018-01-12 12:13:29.919780546 +0100
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/advui.ui gpsbabel-gpsbabel_1_6_0/gui/advui.ui
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/advui.ui	2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/advui.ui	2019-06-19 13:08:12.030299296 +0200
 @@ -38,13 +38,6 @@
      </widget>
     </item>
@@ -34,21 +34,23 @@
      <layout class="QHBoxLayout" name="horizontalLayout">
       <item>
        <widget class="QComboBox" name="debugCombo">
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/app.pro gpsbabel-gpsbabel_1_5_4/gui/app.pro
---- gpsbabel-gpsbabel_1_5_4.orig/gui/app.pro	2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/app.pro	2018-01-12 12:05:45.541885058 +0100
-@@ -15,13 +15,7 @@
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/app.pro gpsbabel-gpsbabel_1_6_0/gui/app.pro
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/app.pro	2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/app.pro	2019-06-19 13:10:54.800233673 +0200
+@@ -11,14 +11,8 @@
+ QT += core \
        gui \
        network \
-       xml \
+-      xml
 -
--greaterThan(QT_MINOR_VERSION, 5) {
--  QT += webenginewidgets
+-qtHaveModule(webenginewidgets) {
+-  QT += webenginewidgets webchannel
 -  DEFINES += HAVE_WEBENGINE
 -} else {
 -  QT += webkit webkitwidgets 
 -}
-+      widgets \
++      xml \
++      widgets
  
  unix:DESTDIR = objects
  unix:MOC_DIR = objects
@@ -78,29 +80,18 @@
  HEADERS += optionsdlg.h
  HEADERS += preferences.h
  HEADERS += processwait.h
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/main.cc gpsbabel-gpsbabel_1_5_4/gui/main.cc
---- gpsbabel-gpsbabel_1_5_4.orig/gui/main.cc	2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/main.cc	2018-01-12 12:05:45.541885058 +0100
-@@ -29,7 +29,6 @@
- #include <QTextCodec>
- 
- #include "mainwindow.h"
--#include "gmapdlg.h"
- 
- #ifdef _WIN32
- const char *pathSeparator = ";";
-diff -Naur gpsbabel-gpsbabel_1_5_4.orig/gui/mainwindow.cc gpsbabel-gpsbabel_1_5_4/gui/mainwindow.cc
---- gpsbabel-gpsbabel_1_5_4.orig/gui/mainwindow.cc	2017-01-02 06:05:19.000000000 +0100
-+++ gpsbabel-gpsbabel_1_5_4/gui/mainwindow.cc	2018-01-12 12:05:45.601886984 +0100
-@@ -38,7 +38,6 @@
- #include "donate.h"
- #include "filterdlg.h"
- #include "formatload.h"
--#include "gmapdlg.h"
- #include "help.h"
- #include "optionsdlg.h"
- #include "preferences.h"
-@@ -976,24 +975,6 @@
+diff -Naur gpsbabel-gpsbabel_1_6_0.orig/gui/mainwindow.cc gpsbabel-gpsbabel_1_6_0/gui/mainwindow.cc
+--- gpsbabel-gpsbabel_1_6_0.orig/gui/mainwindow.cc	2019-05-02 10:26:47.000000000 +0200
++++ gpsbabel-gpsbabel_1_6_0/gui/mainwindow.cc	2019-06-19 13:12:30.790606265 +0200
+@@ -62,7 +62,6 @@
+ #include "donate.h"                    // for Donate
+ #include "filterdlg.h"                 // for FilterDialog
+ #include "formatload.h"                // for FormatLoad
+-#include "gmapdlg.h"                   // for GMapDialog
+ #include "help.h"                      // for ShowHelp
+ #include "optionsdlg.h"                // for OptionsDlg
+ #include "preferences.h"               // for Preferences
+@@ -1027,24 +1026,6 @@
      formatList_[fidx].bumpWriteUseCount(1);
    }
  
@@ -125,18 +116,18 @@
    ui_.outputWindow->clear();
    ui_.outputWindow->appendPlainText("gpsbabel " + args.join(" "));
  
-@@ -1005,14 +986,6 @@
+@@ -1056,14 +1037,6 @@
    ui_.outputWindow->appendPlainText(outputString);
    if (x) {
      ui_.outputWindow->appendPlainText(tr("Translation successful"));
 -    if (babelData_.previewGmap_) {
 -      this->hide();
--      GMapDialog dlg(0, tempName, babelData_.debugLevel_ >=1 ? ui_.outputWindow : 0);
+-      GMapDialog dlg(nullptr, tempName, babelData_.debugLevel_ >=1 ? ui_.outputWindow : nullptr);
 -      dlg.show();
 -      dlg.exec();
 -      QFile(tempName).remove();
 -      this->show();
 -    }
+   } else {
+     ui_.outputWindow->appendPlainText(tr("Error running gpsbabel: %1\n").arg(errorString));
    }
-   else
-     ui_.outputWindow->appendPlainText(tr("Error running gpsbabel: %1\n").arg(errorString));

Deleted: fix-map.patch
===================================================================
--- fix-map.patch	2019-06-19 11:05:37 UTC (rev 482340)
+++ fix-map.patch	2019-06-19 11:39:48 UTC (rev 482341)
@@ -1,2183 +0,0 @@
-From e1e9151eab24f4addb79f3128866ad49ae5ef639 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Sat, 2 Dec 2017 20:25:58 -0700
-Subject: [PATCH 1/7] get gui map preview working with webengine.
-
----
- gui/.gitignore    |  2 ++
- gui/app.pro       |  6 ++++--
- gui/gmapbase.html | 12 ++++++------
- gui/map.cc        | 47 ++++++++++++++++++++++++++---------------------
- gui/map.h         |  5 ++++-
- 5 files changed, 42 insertions(+), 30 deletions(-)
-
-diff --git a/gui/.gitignore b/gui/.gitignore
-index 0b02c28d..bb724360 100644
---- a/gui/.gitignore
-+++ b/gui/.gitignore
-@@ -4,3 +4,5 @@
- /makelinuxdist.sh
- /objects/
- /tmp/
-+/release/
-+/debug/
-diff --git a/gui/app.pro b/gui/app.pro
-index 78761a06..335fc802 100755
---- a/gui/app.pro
-+++ b/gui/app.pro
-@@ -1,8 +1,10 @@
- # $Id: app.pro,v 1.19 2010-11-01 03:30:42 robertl Exp $
- #
- 
--CONFIG += qt release 
--#CONFIG += qt debug console
-+CONFIG += qt
-+CONFIG(debug, debug|release) {
-+  CONFIG += console
-+}
- 
- # For Mac, x86 and x64, but not PPC binary.   Ignored on other OSes.
- # macx:CONFIG -= x86_64 
-diff --git a/gui/gmapbase.html b/gui/gmapbase.html
-index a85faa10..39d008eb 100644
---- a/gui/gmapbase.html
-+++ b/gui/gmapbase.html
-@@ -7,7 +7,7 @@
-     <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
-       type="text/javascript"></script>
-     <script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js">
--    </script>"
-+    </script>
-     <script type="text/javascript">
-       var greenDotIcon = new GIcon();
-       
-@@ -398,12 +398,12 @@
- 
- 
-       function load() {
--      if (GBrowserIsCompatible()) {
--        //var map = new GMap2(document.getElementById("map"));
--        //map.setCenter( new GLatLng(0,0), 2 );
--        //var mgr = new MarkerManager(map);
-+         if (GBrowserIsCompatible()) {
-+            if (typeof qt != 'undefined') {
-+               new QWebChannel(qt.webChannelTransport, function(channel) { mclicker = channel.objects.mclicker; });
-+            }
-+         }
-       }
--    }
- 				  
- 
-     </script>
-diff --git a/gui/map.cc b/gui/map.cc
-index 23cee4d7..9ea04d66 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -69,7 +69,17 @@ Map::Map(QWidget *parent,
-   manager_ = new QNetworkAccessManager(this);
-   connect(this,SIGNAL(loadFinished(bool)),
- 	  this,SLOT(loadFinishedX(bool)));
--  this->logTimeX("Start map constuctor");
-+  this->logTime("Start map constuctor");
-+
-+#if HAVE_WEBENGINE
-+  MarkerClicker *mclicker = new MarkerClicker(this);
-+  QWebChannel* channel = new QWebChannel(this);
-+  this->page()->setWebChannel(channel);
-+  channel->registerObject(QStringLiteral("mclicker"), mclicker);
-+  connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-+  connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
-+#endif
-+
-   QString baseFile =  QApplication::applicationDirPath() + "/gmapbase.html";
-   if (!QFile(baseFile).exists()) {
-     QMessageBox::critical(0, appName,
-@@ -90,7 +100,7 @@ Map::~Map()
- //------------------------------------------------------------------------
- void Map::loadFinishedX(bool f)
- {
--  this->logTimeX("Done initial page load");
-+  this->logTime("Done initial page load");
-   if (!f)
-     QMessageBox::critical(0, appName,
- 			  tr("Failed to load Google maps base page"));
-@@ -134,28 +144,23 @@ static QString fmtLatLng(const LatLng &l) {
- //------------------------------------------------------------------------
- void Map::showGpxData()
- {
-+
-+#if !defined(HAVE_WEBENGINE)
-   MarkerClicker *mclicker = new MarkerClicker(this);
--#if HAVE_WEBENGINE
--  QWebChannel* channel = new QWebChannel(this);
--  this->page()->setWebChannel(channel);
--  channel->registerObject(QStringLiteral("mclicker"), mclicker);
--//  this->addToJavaScriptWindowObject("mclicker", mclicker);
--#else
-   this->page()->mainFrame()->addToJavaScriptWindowObject("mclicker", mclicker);
--#endif
-   connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
--  connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTimeX(const QString &)));
--
-+  connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
-+#endif
-   // It is appreciably faster to do the encoding on the C++ side.
-   int numLevels = 18;
-   double zoomFactor = 2;
-   PolylineEncoder encoder(numLevels, zoomFactor, 0.00001);
- 
- 
--  this->logTimeX("Start defining JS string");
-+  this->logTime("Start defining JS string");
-   QStringList scriptStr;
-   scriptStr
--    << "mclicker.logTime(\"Start JS execution\");"
-+    << "mclicker.logTimeX(\"Start JS execution\");"
-     << "var map = new GMap2(document.getElementById(\"map\"));"
-     << "var bounds = new GLatLngBounds;"
-     << "var waypts = [];"
-@@ -169,7 +174,7 @@ void Map::showGpxData()
-     << "var pn = map.getPane(G_MAP_MARKER_PANE);"
-     << "pn.style.KhtmlUserSelect='none';"
-     << "pn.style.KhtmlUserDrag='none';"
--    << "mclicker.logTime(\"Done prelim JS definition\");"
-+    << "mclicker.logTimeX(\"Done prelim JS definition\");"
-     << QString("var zoomFactor = %1;").arg(zoomFactor)
-     << QString("var numLevels = %1;").arg(numLevels)
-     ;
-@@ -195,7 +200,7 @@ void Map::showGpxData()
-     << "   GEvent.bind(waypts[i], \"click\", ftemp, ftemp.clicked);"
-     << "   map.addOverlay(waypts[i]);"
-     << "}"
--    << "mclicker.logTime(\"Done waypoints definition\");"
-+    << "mclicker.logTimeX(\"Done waypoints definition\");"
-     ;
- 
-   // Tracks
-@@ -231,7 +236,7 @@ void Map::showGpxData()
-     << "   bounds.extend(trkbound.getSouthWest());"
-     << "   bounds.extend(trkbound.getNorthEast());"
-     << "}"
--    << "mclicker.logTime(\"Done track definition\");"
-+    << "mclicker.logTimeX(\"Done track definition\");"
-     ;
- 
-   // Routes
-@@ -263,17 +268,17 @@ void Map::showGpxData()
-     << "   bounds.extend(rtebound.getSouthWest());"
-     << "   bounds.extend(rtebound.getNorthEast());"
-     << "}"
--    << "mclicker.logTime(\"Done route definition\");"
-+    << "mclicker.logTimeX(\"Done route definition\");"
-     ;
- 
-   scriptStr
-     << "map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));"
--    << "mclicker.logTime(\"done setCenter\");"
-+    << "mclicker.logTimeX(\"Done setCenter\");"
-     ;
- 
--  this->logTimeX("Done defining JS string");
-+  this->logTime("Done defining JS string");
-   evaluateJS(scriptStr);
--  this->logTimeX("Done JS evaluation");
-+  this->logTime("Done JS evaluation");
- }
- 
- //------------------------------------------------------------------------
-@@ -288,7 +293,7 @@ void Map::markerClicked(int t, int i){
- }
- 
- //------------------------------------------------------------------------
--void Map::logTimeX(const QString &s)
-+void Map::logTime(const QString &s)
- {
-   //  fprintf(stderr, "Log: %s:  %d ms\n", s.toStdString().c_str(), stopWatch.elapsed());
-   if (textEdit_) {
-diff --git a/gui/map.h b/gui/map.h
-index baa57e91..20dd949a 100644
---- a/gui/map.h
-+++ b/gui/map.h
-@@ -44,6 +44,9 @@ public slots:
-   void clickedX(int t, int i) {
-     emit markerClicked(t, i);
-   }
-+  void logTimeX(const QString &s) {
-+    emit logTime(s);
-+  }
- 
- signals:
-   void markerClicked(int t, int i);
-@@ -87,7 +90,7 @@ class Map : public QWebView
-   void frameTrack(int i);
-   void frameRoute(int i);
- 
--  void logTimeX(const QString &);
-+  void logTime(const QString &);
-   
-  signals:
-   void waypointClicked(int i);
-
-From 5583695da76991e34ebe93aca619c7aee94386de Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 10:39:24 -0700
-Subject: [PATCH 2/7] update to google maps api v3.
-
----
- gui/gmapbase.html | 553 +++++++++++++++---------------------------------------
- gui/map.cc        | 164 ++++++++--------
- 2 files changed, 243 insertions(+), 474 deletions(-)
-
-diff --git a/gui/gmapbase.html b/gui/gmapbase.html
-index 39d008eb..73a14f53 100644
---- a/gui/gmapbase.html
-+++ b/gui/gmapbase.html
-@@ -4,412 +4,167 @@
-   <head>
-     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-     <title>Google Maps JavaScript</title>
--    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
--      type="text/javascript"></script>
-+    <script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBx9CSaJaOdcC5SV2LmaZZB6EOxFm1hLH4"
-+            type="text/javascript"></script>
-     <script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js">
-     </script>
-     <script type="text/javascript">
--      var greenDotIcon = new GIcon();
--      
--      greenDotIcon.image =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuF1F01CYAAABhSURBVAjX" + 
--      "Vc07EYNgFAXh7/41WhCAjLigjgBKTDA4SIeDJD4igjqXgvc2p9jZOQE+aqlDgx96YYpNfFEJV9rw" + 
--      "9sLjEIlAmguaWxHHVmX7WIsr6V/Q34qTsQgTWsx7IQ14LpGFGBx6omuVAAAAAElFTkSuQmCC" + 
--      "";
--      
--      greenDotIcon.shadow =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHCAYAAADebrddAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuO2OsuMUAAABSSURBVBjT" + 
--      "tc2xCYNgGAbh5wt/YZUiA4g4QiZwcifJDCIu8FoKPxZJkSuPg6skvuXhB/4Xt15UFYwYMGHDjk/r" + 
--      "wheW7vjEluSKq2rG++Z+JFnhBAGmEETSZHQ5AAAAAElFTkSuQmCC" + 
--      "";
--      
--      greenDotIcon.transparent =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAvJ2621csAAAA5SURBVAjX" + 
--      "ZY3BDQAgDAKPxv2n0rnwZ1vLh4QLINvoKDBdArFJoM4ncHqMhtLjhf+nK/z+ANYIy8IFAWkMmzto" + 
--      "LrsAAAAASUVORK5CYII=" + 
--      "";
--      
--      greenDotIcon.mozPrintImage      
--      "data:image/gif;base64,"+
--      "R0lGODdhBwAHAOMAAATCBITWhDTKNLzavBTGFNTe1AzGDEzOTOTi5ATGBJzWnNzi3FzOXAAAAAAA" + 
--      "AAAAACwAAAAABwAHAAAEGhCNQ4RaI4GdwuFAYhChtglaogJKyB1LYMIRADs=" + 
--      "";
--      
--      greenDotIcon.printImage =
--      "data:image/gif;base64,"+
--      "R0lGODlhBwAHAKEAAATCBATGBP///wAAACH5BAEAAAIALAAAAAAHAAcAAAINVIAQp8ePlot0WpVA" + 
--      "AQA7" + 
--      "";
--      
--      greenDotIcon.printShadow =
--      "data:image/gif;base64,"+
--      "R0lGODlhCwAHAIAAAISChP///yH5BAEAAAEALAAAAAALAAcAAAIMjI+py+0JQoxoSlMAADs=" + 
--      "";
--      
--      greenDotIcon.iconSize = new GSize(7,7);
--      greenDotIcon.shadowSize = new GSize(11,7);
--      greenDotIcon.iconAnchor = new GPoint(4,4);
--      greenDotIcon.infoWindowAnchor = new GPoint(4,0);
--      greenDotIcon.imageMap = [6,0,6,1,6,2,6,3,6,4,6,5,6,6,0,6,0,5,0,4,0,3,0,2,0,1,1,0];
--      
--      var redDotIcon = new GIcon();
--      
--      redDotIcon.image =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQEfHu83AQcAAABjSURBVAjX" + 
--      "Vc0xEYNQFETR836NFgQgAxfUCEiJiUwc0GGBOpGACOo8isDks80Wd+5uwIc2eaDDhilY4gQrmnDL" + 
--      "EG9m9BdIxK/3gq424t9NOT/kfVLyLZhqo8qrBAsG7JeRPDEes/UYQBcqkmIAAAAASUVORK5CYII=" + 
--      "";
--      
--      redDotIcon.shadow =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAAAsAAAAHCAYAAADebrddAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuO2OsuMUAAABSSURBVBjT" + 
--      "tc2xCYNgGAbh5wt/YZUiA4g4QiZwcifJDCIu8FoKPxZJkSuPg6skvuXhB/4Xt15UFYwYMGHDjk/r" + 
--      "wheW7vjEluSKq2rG++Z+JFnhBAGmEETSZHQ5AAAAAElFTkSuQmCC" + 
--      "";
--      
--      redDotIcon.transparent =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAvJ2621csAAAA5SURBVAjX" + 
--      "ZY3BDQAgDAKPxv2n0rnwZ1vLh4QLINvoKDBdArFJoM4ncHqMhtLjhf+nK/z+ANYIy8IFAWkMmzto" + 
--      "LrsAAAAASUVORK5CYII=" + 
--      "";
--      redDotIcon.mozPrintImage      
--      "data:image/png;base64,"+
--      "R0lGODdhBwAHAOMAAMwCBNyGhNQyNNy6vNQWFMwKDOTW1NRKTOTe3NQCBNyanNQKDNRaXOTi5AAA" + 
--      "AAAAACwAAAAABwAHAAAEGrCNQ4RCAyTAw9lgQWhkInAgoKQJgwTFxhgRADs=" + 
--      "";
--      redDotIcon.printImage =
--      "data:image/png;base64,"+
--      "R0lGODlhBwAHAKEAAMwCBNQCBP///wAAACH5BAEAAAIALAAAAAAHAAcAAAIMVAB3yaGMnmtQ0lUA" + 
--      "ADs=" + 
--      "";
--      redDotIcon.printShadow =
--      "data:image/png;base64,"+
--      "R0lGODlhCwAHAIAAAISChP///yH5BAEAAAEALAAAAAALAAcAAAIMjI+py+0JQoxoSlMAADs=" + 
--      "";
--      
--      redDotIcon.iconSize = new GSize(7,7);
--      redDotIcon.shadowSize = new GSize(11,7);
--      redDotIcon.iconAnchor = new GPoint(4,4);
--      redDotIcon.infoWindowAnchor = new GPoint(4,0);
--      redDotIcon.imageMap = [6,0,6,1,6,2,6,3,6,4,6,5,6,6,0,6,0,5,0,4,0,3,0,2,0,1,1,0];
--      var blueIcon = new GIcon();
--      blueIcon.image = 
--      "data:image/png;base64,"+
--      "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" + 
--      "AAAAAElFTkSuQmCC" + 
--      "";      
--
--      blueIcon.shadow = 
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMJYUL+TEAAAEmSURBVFjD" + 
--      "7ZetbgJBFEbPEBTpE6DQqyrQpJKgEPuY1U1ln6CqIQh0gyAEQRAV3JptA9v5Hyhscr/kus3knNlv" + 
--      "JrtGROhyenQ8KqACKqACKqACKqACKqACt0u/dAFjTHffQAT8+JrwIoLJ/SOLgK+BD8cmrYCvUngg" + 
--      "TyAA/wBMI5ZZNJMNn3UGAvB1wlJVjkB7w/s3gn8DNqXwSQIe+KqZnxxPen9snYFXYF9amzOumDPg" + 
--      "ga+BZ8f1PL9U732MQQEHfA94BN4zqpQkEeTz2tnhZ8BL4RkAWDYVA/gEdqnwXgEHvKsyFTAARhn1" + 
--      "XtgkYq93q4AFfggcbLtkyaiRsWULrEtr8+fh07lANYo/D1ImBP90z/BnAq1M/vurMgf+V6CVeVfg" + 
--      "RYRveXcZHbtZkpsAAAAASUVORK5CYII=" + 
--      "";
--
--      blueIcon.printImage =
--      "data:image/gif;base64,"+
--      "R0lGODlhIAAgAOcAAAQCBARu3AQ+fHx+fDw+PARWtERurAQeRASG9DRGZJSu3ARKlDRuvAR67AQi" + 
--      "ZHyWzFRWVCRWtDyG5DxWvDQCBBRKnAQubAwWBBxyzAQ6pJSWlARi1FxunBR65CxizERmnAQujHSS" + 
--      "zCSO7FyKzAQCLCQiJCRClNTS1ASC9ARCpJSm3ExinISKjKyqpARKtGRiZBxSnKSinAwODAR25Bxe" + 
--      "rAQqVAx67Bx2zFR6vARSvAQCFARezDx6zByK7DRWxBxOnBQ2bAQSPBRmxDRizAQ2nFyW3CROjJSS" + 
--      "lLSytAxOrARy3BQ6hExOTARWxAQqhHye1FRedFSa5AQuhBRy5Aw+pJyWlDxmtAQynCSa/ARGtExq" + 
--      "pIyKhDRKjAQmVAyS/CxGfCR+3AR+7AQqbFxeXCxetFSGzAwudAQ+pARq3FRuvCRq1AQylDSO5GyO" + 
--      "zARGrKyurAROtFxqdKSmpAwuXAx+7GSCxAQGFDyCzBxOrAQWPCxKpBxClARaxBxu3JyalERqtDQy" + 
--      "NKS25DR6zGyW1CxezBR25DRq1CxWpCxqxISChERCRFxaXFRSVERivAyK9ExmrISi1ESG3HySxGSK" + 
--      "xER6xCxOlFRqnFxuxAwCBERuvBRKrCyO7AyC9Ax25Bw6hDRKbHya1AQydAwaDFR+xBRqzIyOjDxa" + 
--      "vARm1GRmZLS2tBxy3ARu5BR67AQulAQCNARCrKyqrBxSpKSipAQqXAQCHByK9BxOpAQSRAxOtARy" + 
--      "5IyKjAQmXAR+9AQqdAQ+rAROvAx+9ARazJyanP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMMALAAAAAAgACAA" + 
--      "AAj+AIcJHDjwBMGDCBMqRIJEocOHA2W9gEgxoTACFTMKBHSEAgASrnRofDiGxYcQkEBNMgBD5MiD" + 
--      "W6AEUpByUJEobAS8JCjnk4oHbUaUicQGSw8xOwXG+NKmDg5KgsD0cFTIVlIAVSrhMMAAkZBOKID1" + 
--      "0ZO05CErZHDl2NAARachJpKWihOhgi8XwZSg4NXH1IGkLRJQyZAlx6m2HTxwSTpMDhA8FWLRwOCF" + 
--      "byMHjKvMCTIQwBJBhvas6bJzka6Dva440dIqQwo7L0sNICgKxBrVGdw0KZBnJKyJA1ODkELETY4d" + 
--      "aJQs0CiHycALUmwTefUrGJoZKDgJqfAX4hEIA8WPXGl1xRccPqdy7e3UR80QPSY8mZm16yCEUqUG" + 
--      "YpJy5YyLJunxgoIN7RHiwwQTpLHCLQgdkQhCFiTRxAartNXJFGoYeMkKlriE0BuoJKTDDzTc0MMm" + 
--      "EvBghRaW1AARLIxABAAttACg0RFjMOYQE/jpqJAwD/qYUCohCokQLIsYiZAw4Ck5kAyKlOBkZzZO" + 
--      "GRAAOw==" + 
--      "";
--      
--      blueIcon.mozPrintImage = 
--      "data:image/gif;base64,"+
--      "R0lGODdhIAAgAOcAAAQGBAR25Hx6fAQ+pERCRKy2vER6xARaxJSWlFRedCR+3CxGfFyKzBxerMzO" + 
--      "zJyWlDxmtASG9AROtLy6tBx2zGR2lARq3KympAQqhFxqdExmrAR+7ISKjBxOnCxqrAQujARGrFSC" + 
--      "rJSm3CSO7GyKrMTGxDRizDxalHyWzERenNza3ARWtBRqzKSutHyOrCxOlKS25FR2rARi1JyenDRu" + 
--      "vLzCzAx+7Bxu3AQ2nAw+pLSytDR6zByK7AxOrGyGrARy3BxWpGyOzERmpFR+xAx25ARCpFSa5Cxe" + 
--      "tNTW1Ly+xBR25BQ2bExqpJSSlAQynBRKrCSa/DRWxHye1KyurFx6rERqtBxyzLS2tDyCzISChDRG" + 
--      "ZARezIyatBxClNTS1JyalARSvLy+vARu3KyqtFxuxASC9IyKjBxOrAQylARKtESG3DSO5MzKzExi" + 
--      "pOTi5HySxFR6vBRmxKSinAyC9BSS/HSCrGyW1CxezBR65FxupDxWvERuvAR67Hx+fAQ+rARazFRm" + 
--      "hCxKpGx+rFSGzBRy5FRuvGSCxCxWpBQ6hDyG5DRq1CxqxJSu3CRWtExmlERivISStCRq1FyW3AyK" + 
--      "9HSSzISi1GSKxHSKpMTCxCyO7ARWxDx6zBxy3KyqrHya1ERilAQ6pAx67ERurDRKbFxynAQuhNze" + 
--      "3FR6rARm1IyetIyOjCxizDxavMzO1AROvLy6vAR+9BxOpAQulARGtMTGzKSuvAx+9LSyvByK9AxO" + 
--      "tARy5ARCrKyutLS2vJyanARu5KSipBR67AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIAAgAAAI/gDduDEl" + 
--      "kODAgwgNKizIcODCgyrYJGz48OHEgVeAHSRYkaJHjgJnaBTIEORFkwYLemmCBAkvXiVSekQ4U+AV" + 
--      "DkLeVJJiaU+IMCk7WuR4JQEMRpU82ZFkJBMJUzJJSjVZUMcoESiCMBikZg0UHlwmggxKc8YCrXAM" + 
--      "7NgxaQ6eWDSlkkTpBsmXF3BEQVjEgkgEG5ECzd1IVWYYDocgHMkFRgafMsFWpRBb0uOVDI2eDJBw" + 
--      "QFcZWDdYFaA5lPQELUVAgWjMJ4KSVXnGfmwo8MKSJx2ANKBAhw+hR6QGXxROEAGgXhzDINqhqMuH" + 
--      "WnEXWizBYfAnJxiYyBpQpMTGmgrD7vRBiOSDE+w4Zq1YgXymRfFzHTkp9QHH6i2/foToSLwTgo30" + 
--      "oYHDLq5sYUEAZZQRxyktUKYQAlcUdAkaaDjhB2eoeAaLEoREskogQvjgQgU1NFSCKkGV4sQAaWgi" + 
--      "gy6wlEEEJ5HcoceNhQjiwEMl9DGWKSf04OIvG8jY4R1RFNIGJEBNNRB8cplSAgkeWMFDJolsAgEV" + 
--      "qUAnHUJTICDbd2HwcksrTkYnEIRq0vXdSW44oAoSg8nkJpwElZAFacQ5SFuePvIpV2VxJXSFKnV+" + 
--      "RxWfD80wQ5uD2hnlQDMQ0ISiiX5JqEBsAFCobIu6GRAAOw==" + 
--      "";
--
--      blueIcon.printShadow = 
--      "data:image/gif;base64,"+
--      "R0lGODlhMAAgAIAAAISChP///yH5BAEAAAEALAAAAAAwACAAAAI6jI+py+0Po5y02ouz3rz7D4bi" + 
--      "SJbmiabqyrYd4CLwHNApjddobu96foIpeisey0g0IXWxkLD5bEqbBQA7" + 
--      "";
--
--      blueIcon.transparent = 
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMOggD9MQAAARUSURBVFjD" + 
--      "xZdbaBxVGIC/c3Z3dmdnJ91Nazdr1sZ6oUJT7dauGGz7IkiNSotCH6q1D2oFn/IifdO8iaBvweJj" + 
--      "oSIiJSCFegEFKRZUkLaktxRDs9mkaTZ7md3ZmdmdnfFhQ2lI29h2k/zwP8w5B/7v/Lf5D77vs5xe" + 
--      "uHBB/p9zD6KSZeTUqVNyYmKClZJlAcrlMqOjo2sHYNs24+PjawOwc2dWOraNdeYMQggpxHNSiB1S" + 
--      "iKTsFIDwff+um4ffPSSf6d/Or9fWk+1/gq51cequYGa+yrX8LFfzBaZPfoLvz3gr4oH+/q38NXaD" + 
--      "w2++zKZ0EqSk5UFE76JvSz8v7X2d7V/8SWjPp3JFAHp7e8nNOcyX60zOmuQLNlNFh3zZZcrwmKgK" + 
--      "rFiS3teGCG376IEggvfa9FouthdjctagWLUxHDDcIAYBKqEA1YCKWWmhlB16ntzdWQ8IIaRjm3iR" + 
--      "FLnZGvmCTb7cYNpwuW5AzlGYbYRp1GzUukm82aSjHjj0ztvMGzYovUwV6pRsn5wBphSwPgShGAHf" + 
--      "I9KwSdTKWFapsx7IZLZz8d+buGiM52tcvm5iuhKiGmg6RFSUZgPNMtHrRa5eO91ZgHS6l/PjBpM3" + 
--      "axQqLoTDEFZB1SCmE8An4ljEqwb16hj+5I9eR0PQcptMVcIkUgrCNxChFmgegXicSk839dkK0bpJ" + 
--      "Sszzy9jYAzeiuwIYRo2GXWDu9y/xS2e925Mz8eJnZPe+gu1GuDhxCRIZlKffko3xk15HQnDw4EFZ" + 
--      "NW3K57/xbjcOILd+TMnu5o/vfiYt/iY/F4JYnGbfPpTwRtkRgGw2S7VqLFmPPqpLL5gE4UEkwQ+/" + 
--      "XYcuvZ2Y3Ztp7juO8shu+dAA6XSaXC63ZN1JHAGpg1eDVgXW9YEWhWgM1Cgkt9A8dJzg4Ih8KIBG" + 
--      "o8Hc3Nzi2/co0g/EwTNBxCC8AaILxjW9rdEodKcID7xH4oOzsvvVr6V4bK+87yQslUqoqroYqvt9" + 
--      "/GAK/CYEAqBpoC0Yjy6EQYsRcZtELBNVS6Jt3sPjPTvYNnhcWlYZy6lSNedpuEVct4V75YS3hO7A" + 
--      "gQPScRwGBgYWe+DKMaQ7DTLUvvUt1dsgMZ0QEHEswg0b1bFQrRphq0o8lia14Vl2Pb+LXTu34dyY" + 
--      "xr1ywrvjPDAyMiILhQLDw8N3LKlw5qhUNr1ALZJq375rHehdyFAIzTJRbQvNsVDrJppt8lQyhFGf" + 
--      "QgkVGT02vGR2CN4pAc+dO3fXmDn/fO6JwEa5+Y2jNNU+CG5CiWtoAjSliSIKyMYNotEqXXGD7386" + 
--      "TfPSaNvoVx8unwOO41AsFu+ZuX7rprf4zxmRsHHhK4fv+7f2v+XI/XXCQqFALBa7r2bi+3ZnRrL9" + 
--      "+/dL27bJZDKsliwCGBwcpFarMTQ05K0JQDqdZmZmhtWURQCWZVGpVNYOoFQq4bruqgLcqgJd12U2" + 
--      "m2UlH6L3fBkJIWS7pHxvNQH+A1CDKAII3hWoAAAAAElFTkSuQmCC" + 
--      "";
--
--      blueIcon.iconSize = new GSize(32,32);
--      blueIcon.shadowSize = new GSize(48,32);
--      blueIcon.iconAnchor = new GPoint(4,32);
--      blueIcon.infoWindowAnchor = new GPoint(16,0);
--      blueIcon.imageMap = [9,0,9,1,9,2,9,3,13,4,16,5,17,6,18,7,18,8,18,9,18,10,18,11,17,
--      12,17,13,18,14,19,15,20,16,21,17,24,18,30,19,29,20,27,21,24,22,20,23,5,24,5,
--      25,4,26,4,27,4,28,4,29,4,30,3,31,2,31,2,30,3,29,3,28,3,27,3,26,3,25,4,24,4,
--      23,4,22,4,21,4,20,5,19,5,18,5,17,5,16,5,15,6,14,6,13,6,12,6,11,6,10,6,9,7,
--      8,7,7,7,6,7,5,7,4,8,3,8,2,8,1,9,0]; 
--      
--      var redIcon = new GIcon();
--      redIcon.image =
--      "data:image/png;base64,"+
--      "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" + 
--      "";
--
--      redIcon.shadow = "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcBFGF7h0YAAAEpSURBVFjD" + 
--      "7Zc/S8RAEEffSiqLqyyvEhGr48orrC1ShnxMsRbxU1jIcZXFVWIhcoiIMDZRkpj9n1MDM7BFIAzv" + 
--      "ZX+zbIyIMOU6YOKlAiqgAiqgAiqgAiqgAirwd1XkNjDGTHcHAuCX+4QXEUzqH1kAfA3cWXZ5A3zk" + 
--      "wgNpAh74Q6AMaHPfrGT4pBnwwFcRsTxJEeh/8GJE+Dqi1S3wnAsfJeCAPwUWref3pu/QTlwDu9zY" + 
--      "dLhCZsABXwOXltOtGiv3LkavgAP+DFgnRClKwsvntBuGvwBuMmeAnsQWeImFdwpY4CvgynKizIDj" + 
--      "hHh/iTwArzHwVoEB+CPgLXAA543MUD0Bj7mx+fFye40QjezrQczywZ//Z/iOQK9Wv32rTIH/FuhV" + 
--      "ORV4EeETEmkXA+M0hOsAAAAASUVORK5CYII=" + 
--      "";
--
--      redIcon.printImage = "data:image/gif;base64,"+
--      "R0lGODlhIAAgAMYAAAQCBISGhHwODHx+fLQWFERCREQGBJQqLLQyNMzOzJwSFEw2PJyipNQaHGQO" + 
--      "DCQmJDxeXCwGBJSSlIwSFLQuLFQWFJQ2NLxeXFQKDKQiJFxaXOQyNOxydGRmZAwODMQaHKQqLKwW" + 
--      "FKyurOQmJGweJIwaHNxSVIyOjEQODKQaHHQODJSalJQSDGxiZOQ+PNxeXBQCBIyKjIQaHLwWFExO" + 
--      "TEwGBJwqLKQSFKyqrNwiJDwCBMQqLGRiZISKjIQSFKSipNweHGQWFJQ+PFwKDGRaXOQ6POxWVJya" + 
--      "nJQWFMwuLAwCBISGjHwSFLQaHERGREQKDJQuLMRCRPz+/JwWFFwyNNQeHGwODCwqLDQGBJSWlIwW" + 
--      "FFwSFJQ6PKwiJFxeXOQ2NGxqbBQWFMwaHKwqLLSytOQuLORSVHQSFJSanJQSFORGROxiZBwCBLwa" + 
--      "HFRWVEwKDJwuLKQWFDwGBMwmJKSmpFwODP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5" + 
--      "BAEAAHYALAAAAAAgACAAAAf+gHaCg4MJhIeIiYpkIoqOj4M/PJCUiUcFlZmCThIQADAwSpqPXjEW" + 
--      "Fy8mUSAyMKOIAUQca2ZqRRsbSQ6vhD9URi5lOUBAOSMNb7yCRyTCDR/QDWJtTMpXaBPTIdtNH20h" + 
--      "PspePSxxaT5Mad0EcSrKMS1pKg4qE3EfMyFTWMp0C1ZDrKTr1iSOAGV2flRgIsCHli5z8qWQowxA" + 
--      "ljdsBsHYQiFEEAwUX5WSQujJGwNQatRxEOHViQGEIrx5g+FJQHQhM+GYNMjAzDcBBdhrByDTDxqD" + 
--      "ZM7E4EDolBDeFKjgBymLhkFyMNCkN+FpmxlNtsVhYsVBjSc5BWmIgSbpE6ZnKnywCNHmKwF9CtIo" + 
--      "GHOAKiEJMAmxeRO3HIEPBAre2GvDgqtEIjokYsOkRJcdSZJQsAFHCApIdNw8AgBAiZKimbLwRJjI" + 
--      "TYwsrBUdCRwbERnJtRHhuJr70ArevQV5KPAg+CDSYYwHAgA7";
--      
--      redIcon.mozPrintImage = "data:image/gif;base64,"+
--      "R0lGODdhIAAgAOcAABQSFHx+fIQSFJRSVLwWFLSytEw2PIQ2NJSWlKQSFEwKDORGRMwuLFwyNMzO" + 
--      "zGwODKSmpJx6fIxubNQaHJwqLKQiJJQSDHROTFwKDISKjLQuLNza3MTCxNxeXOQuLLxeXMQqLIw+" + 
--      "PLSipLQWFGweJLSmpGRaXJR+fJxWVKSipNzW1HwODKRmZNwiJJwSFFwSFOQ6PISGhIQaHMwaHLy6" + 
--      "vJyanKQaHEwSFNxSVNTW1KQqLEQGBIwSFMQaHHRCRJQuLJSalKwWFNTOzHQODKyurKSKjJxqbNwe" + 
--      "HJQWFHxWVGQODJSSlOTi5MzKzOxydOQ2NJQ+PLSurHxeXJxeXOxWVISChKRKTLwaHLS2tERCRKQW" + 
--      "FFQKDMRCRKyqrLSChNQeHKwiJJQSFHxSVFwODIyOjLQyNNze3MTGxOxiZOQyNMwmJLQaHLSqrGxi" + 
--      "ZKRaXHwSFKxydOQmJJwWFGQWFOQ+PISGjMS+vFQWFORSVKwqLEQKDIwWFJwuLJSanNTS1HQSFJxu" + 
--      "bJRCRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIAAgAAAI/gCZMDEj" + 
--      "kOBAgwgLKhy4kGBChhscPJzYUOFELF0YaqS4USBDhwJrQPjYsSTHgg4QOHBQIAqHiiY1ymSCpU6g" + 
--      "Dx1wcNGBggZHgwWBOiRiwgkaPAtgpHnCAJDHpx6BzmRCpAEVOh7iHDnSIs6XIiBBWiRJEAKJNHFm" + 
--      "9Fg7YcYaGVOlLhSYA4iAGQRGBNEyoseVEW/IjhVLkEYGC1rCvBEQZk2PEVoOPCU8OSqWNjxWKBnC" + 
--      "Q4vfIHLYHBwrUyoWAw8wPHjT+LEWKCVhJoRw480bGUjAqCEQxIaUimGjRgWSpADDAi/KBJmzpURC" + 
--      "uRPPZCB5QcGOHwowKHkpVWxDGjEQ4ApRoGCLHgxDBLyJQpI0UPAak5DPvrpzkCk5hJcuSASIQz96" + 
--      "kLfFZjzIEcQVPcgxAATPNYQADQydsEV5BLpwYF5B7PVGCBJEIMEZYp1BhhkG5XDDgOlZcOBja4Am" + 
--      "BxIW5OFGEw9xEIBYKviQohaOjbCGFgm4kAcFcNghnEM2HsmEHSz8AAYIDDCgAQVWeCFCcAv1B91H" + 
--      "NERBRBNxlYQAFoLF9NFDDDlARn6xUSRURWcEsB9lDdLJRJxzvalfR29isUSdbbaXZw0pyBXTm8ER" + 
--      "lEIWCJSppKDRAUBiZd6ZiVBAADs=";
--
--      redIcon.printShadow = "data:image/gif;base64,"+
--      "R0lGODlhMAAgAIAAAISChP///yH5BAEAAAEALAAAAAAwACAAAAI5jI+py+0Po5y02ouz3rz7D4bi" + 
--      "SJbmiabqyrYd4CLwHNApjddobu96foIpeisey0g0IXWxkLAJjUYLADs=";
--
--      redIcon.transparent = "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" + 
--      "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcBLT5+D04AAAQkSURBVFjD" + 
--      "xZdNbFVFFIC/Off29VL63m2htaW9LNwQI1VBGtIFblg0MW5INJgQ2LmykmhwrysW7kUSFm5c+/OW" + 
--      "ulSiCYvGpEIgkNKmpZS+1/b99c199945LmgbahEKPtuTnGQyM8n55vzNDKrK83RyclJ2su9lVHiO" + 
--      "FItFmZmZ4f+S5wJUq1WKxeLeAVhrmZ6e3huA8fFxsdaSDUcYY6TfGBkwRrqMkXYB+M9aPHToEPVa" + 
--      "g/fv3eXLCxcYEkHqdcrLy3w3MiL3ymWuPHzIoqp7WQCjqv+6ePnyZZmeuslXg6+QVKu4lRVctYo2" + 
--      "Gmgc44swby1XZ2e5Vqm4tnsgiiJuf/8DpC3SR49wq6tkjQZpkqCq+CL053JcLBQ409UlP66tubYC" + 
--      "OFXypRWaSYtmtUojSVhTJQU8IC9CK0koZRlvB0F7k3BkZERsq8XhyirzpRLTccz9LGM+TZlLU8rO" + 
--      "UXGOVedYU0XbnYQnTpxgZbVOSMrd1KPiHAtpCsYw6HmEImSqWFXqzrGaZe0FOHr0KDO3/qLLCH/G" + 
--      "MWXn6BWhX4RQhP0iJM5hVWmq8ru17Q3B8PAw81M3uZ2mLGQZncYQGENehF4RUCUGGs4xn2X8Eceu" + 
--      "rQCZKnL/Lv2+T+T7DHgeB3I5+vJ5BvJ5EueIVTG5HD83Gu1tRMYY+frqN2T1Bt+2YmbTdPN0PcbI" + 
--      "ewcP8uHhw6QLC/wWxwz4Pu8EgfxqrWuLB86fP0+z3uCntcYW4wCjQUCj2eTKrVssDQzwoF4nFOH1" + 
--      "XI43cjlpC8CxY8eo1WoAW4y/lctJYAwKBJ5H8c4dCusVMeT7fNDdzVgQyH8GiKKIubm5bfP9nodv" + 
--      "DBmQqnLA9wnXAUIRXvV9Pg1DPgtDMTu8sJ66KUkSSqXSVq90dMiGcV+VLmMoGENoDAWRTR30PM7s" + 
--      "38+1vj4+7+mRk52d8sJJWKlUyOfzW+Z6PI99xuBU8Y15fGrPI9wYr6uq0gQOeB4nRXgzl+OL3l6p" + 
--      "OEdNlSVrqXkeLVWuW+u20Z07d06stZw6dWrLfCnLsKp4xlDwPAoij40/EQIDxEBLlXS9S8aqDHoe" + 
--      "r3ke70YR40eOEFvL9fWK2eaBsbExlpeXuXTp0pYEnEoSN+R5MhoEDIjQJUJ+A0KEDsCq0lo32swy" + 
--      "kiyjb2iIJVXi7m4mbtxgUdV98qwQRFHE1NTUU+P1IMscwLDvy0dhSNbZiQkCwn376PB9AlUeAY0s" + 
--      "I/V9kkKBK5OT/FKrOYCLO8mBVqvFysrKMzN3/oneYIwRAbqBFFgD9IkX0scv2gnL5TJhGO64jvU/" + 
--      "PMe2leHZs2fFWsvx48fZLdkCcPr0aWq1GhMTE25PAKIoYnFxkd0U+ecnpFKp7B1AuVzGOberAJtV" + 
--      "EIahjI6OMjs7u6sAmx+Tjdurr6+PpaWlXXPD3/FDQDWrWIGPAAAAAElFTkSuQmCC";
--
--      redIcon.iconSize = new GSize(32,32);
--      redIcon.shadowSize = new GSize(48,32);
--      redIcon.iconAnchor = new GPoint(4,32);
--      redIcon.infoWindowAnchor = new GPoint(16,0);
--      redIcon.imageMap = [9,0,9,1,9,2,9,3,13,4,16,5,17,6,18,7,18,8,18,9,18,10,18,11,17,
--      12,17,13,18,14,19,15,20,16,21,17,24,18,30,19,29,20,27,21,24,22,20,23,5,24,5,25,
--      4,26,4,27,4,28,4,29,4,30,3,31,2,31,2,30,3,29,3,28,3,27,3,26,3,25,4,24,4,23,4,
--      22,4,21,4,20,5,19,5,18,5,17,5,16,5,15,6,14,6,13,6,12,6,11,6,10,6,9,7,8,7,7,7,
--      6,7,5,7,4,8,3,8,2,8,1,9,0];      
--      
--      
--      function MarkerHandler(t, i) {
--        this.type = t;
--        this.number = i;
--      }
--      
--      MarkerHandler.prototype.clicked = function () {
--        mclicker.clickedX(this.type, this.number);
--      }
--
--      function RTPolyline(l, stp, enp, ckobj) {
--         var s  = new GMarker(stp, {title:nm,icon:greenDotIcon});
--         var e  = new GMarker(enp, {title:nm,icon:redDotIcon});
--
--         this.line = l;
--         this.start = s;
--         this.end = e;
--         GEvent.bind(this.line,  "click", ckobj, ckobj.clicked);
--         GEvent.bind(this.start, "click", ckobj, ckobj.clicked);
--         GEvent.bind(this.end,   "click", ckobj, ckobj.clicked);
--         map.addOverlay(l);
--         map.addOverlay(s);
--         map.addOverlay(e);
--      }
--
--      RTPolyline.prototype.hide = function () {
--         this.line.hide();
--         this.start.hide();
--         this.end.hide();
--      }
--
--      RTPolyline.prototype.show = function () {
--         this.line.show();
--         this.start.show();
--         this.end.show();
--      }
--      RTPolyline.prototype.getBounds = function () {
--         return this.line.getBounds();
--      }
--
--
--      function load() {
--         if (GBrowserIsCompatible()) {
--            if (typeof qt != 'undefined') {
--               new QWebChannel(qt.webChannelTransport, function(channel) { mclicker = channel.objects.mclicker; });
--            }
--         }
--      }
--				  
-+/*jslint
-+    this, for
-+*/
-+var greenDotIcon = {};
-+var redDotIcon = {};
-+var blueIcon = {};
-+var redIcon = {};
-+function initialize() {
-+    greenDotIcon.url =
-+            "data:image/png;base64," +
-+            "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+            "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQAuF1F01CYAAABhSURBVAjX" +
-+            "Vc07EYNgFAXh7/41WhCAjLigjgBKTDA4SIeDJD4igjqXgvc2p9jZOQE+aqlDgx96YYpNfFEJV9rw" +
-+            "9sLjEIlAmguaWxHHVmX7WIsr6V/Q34qTsQgTWsx7IQ14LpGFGBx6omuVAAAAAElFTkSuQmCC" +
-+            "";
-+    greenDotIcon.size = new google.maps.Size(7, 7);
-+    greenDotIcon.anchor = new google.maps.Point(4, 4);
-+
-+    redDotIcon.url =
-+            "data:image/png;base64," +
-+            "iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+            "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFEQEfHu83AQcAAABjSURBVAjX" +
-+            "Vc0xEYNQFETR836NFgQgAxfUCEiJiUwc0GGBOpGACOo8isDks80Wd+5uwIc2eaDDhilY4gQrmnDL" +
-+            "EG9m9BdIxK/3gq424t9NOT/kfVLyLZhqo8qrBAsG7JeRPDEes/UYQBcqkmIAAAAASUVORK5CYII=" +
-+            "";
-+    redDotIcon.size = new google.maps.Size(7, 7);
-+    redDotIcon.anchor = new google.maps.Point(4, 4);
-+
-+    blueIcon.url =
-+            "data:image/png;base64," +
-+            "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+            "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcMBidsiEMAAASrSURBVFjD" +
-+            "xZZbbBRlGIafPe/szLa7hdKWbqAVExppjBUrWEu5MYoolKiQbIAbORgTjTTBGGOi8cKYaLxSE7nR" +
-+            "EGONqBTkoiCKirWRpDFCKTRtw0K32wPd7ml2d2Z2Zme9aDG0QeSwtF/yZ5Lv/5P3+fO+/5eBW6je" +
-+            "3t4a7lFZ/+/AsWPH6kOh0AsLBpBIJD7t6OgwFgxAVdWWwcHB2L0CsN9sc/XqR5ZoqorS1fUdUAIP" +
-+            "1oHNCZFhuDp8zwFWPVDXnMpq+Pd8kXyz/j57SamPrGFhbEpmKDLBQCR6fPT7t1+D8YE7BbDdbHP7" +
-+            "9uCLZ/omm4LbglZBcKEaBVQd8g43wqKlVK2sv9+5fterUcUrmcO/nSx6Bqqrq5vCkxpTiSzDExki" +
-+            "UZWRmEYkYTCSMgnJFhSpgupn9u2317+8t+gAZt5oUk2J4YkUY1MZRmMKowmdSKrASNbGqCEwnsyT" +
-+            "TWhUrlh3oNgZ8GhqBtNdRXgiTSJrkMpbkU2YAmTJieZy4dQUSrMZSnSdkWIC7NyxvWkqpYKzmpFo" +
-+            "lrhaIJyCjNUCixzgkLAVTNw5FX86gaLEzxfVgoaGh5ouXLqKgchgJE3/lQwZwwoeEUQvuAWceg5R" +
-+            "yeDNxhgY6nypqACBQPXj5wZTDF9NE00a4HKBSwBBBMmLjQJuTcEnp8jKfd2ET3QXNQN5Q28aSbrw" +
-+            "VzmxFFJYHHkD0bTbfD6SlWVmdiJp9WQzVFmmONnX91fRB1EqlZZyavTw5OmP3iPx5/UCdf61719s" +
-+            "3PAkquHmQugi+Btecdif69CHDp8qigXBYHCtnFFJ9rY/P0cc66rXP4yrZXR/8yMBSw+RSQdIPvTl" +
-+            "rT87nOWBogA0NjY2yXLKnNsXqiSfaa94FosJbj8//HIFSrzTwSyrRW89GHYsbn70rgECgcD6cDj8" +
-+            "69y+5t97AKsXzDTkk1C6HEQPeCQQPFCxEn3nwTO2pz/+8q4Acrlc8+TkZNes21c4PAWbbxtmBiwS" +
-+            "uBaDZ0Zc9E4vjwfKqnA9tmuHb3d3wb/hs6MEnnritkMYj8fLBEH4YxZU2e59BXsVFHSw2UAUQZwR" +
-+            "98zYIEq4DR23kkEQKxBrWzbXVD68WZ8IoiiJHkWTu+XM1FjOiFUbRv5AfuCr85a54lu3bq1fs2ZN" +
-+            "r81mE9va2rLX+l4r9syqd3XTsXRa3FsC3lLw+qa/JaU4rFZEJYOgZhFnlqDI2M0CFKwsrbQgZy/1" +
-+            "dB75ehOxn8ZvaEFLS0uTLMtcLw4gmxhm7zsWpzl4WvI7QfKDpxTEEhC9WK023EoWp6ri1jSciopT" +
-+            "UaitECgtjVFePnDo0CfBFZ2f72q8Jn5DCwKBwLqzZ8/2/Jdnub8/WJ87V15Tu+mNt3Rh+RbsyxY7" +
-+            "fSKiBUSnjtMSxZobx+ORh0p8qVPfnujsMPqPHL/lDGia1hyLxY7cNLrm5OXQ0f17gD3TDVcdLPEB" +
-+            "BoQvA9E7noTRaLRGkqTfb2+caP0Qvvu/4tbW1mWqqtLQ0NDNPNUsgI0bNzan02na2trGFwQgEAis" +
-+            "Gxsb62ceaxaAoijNyWSya8EA4vF4vWEYg/MJ8O8rkCRpS3t7O6FQKMECVSWgzLfoP0Pf/kzVF9v7" +
-+            "AAAAAElFTkSuQmCC" +
-+            "";
-+    blueIcon.size = new google.maps.Size(32, 32);
-+    blueIcon.anchor = new google.maps.Point(4, 32);
-+
-+    redIcon.url =
-+            "data:image/png;base64," +
-+            "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A" +
-+            "/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFDBcGFC46EYEAAASQSURBVFjD" +
-+            "xZdbbBRVGMf/57Lbod2dgXZrSzskaAg21GARXLek8YFYA2oIQcHUQKLGRI1oIPaNBy9vPhDjCyHx" +
-+            "gfhmmihpMSSiD2pIqRCpklIuttRiL7Dtbju7szvXc44PbElBUgGX9ktOMvl/k3y/+W6ZA9yD9ff3" +
-+            "r8ZDMvpfL3R3d68fHR19ackAcrncZz09PVgyANd1t46MjOQeFgBfyNne3m66rgvRaJ4E8EgCeIwC" +
-+            "PA9MOMDVhw6wcuXKlJ0v4OXhoZGP9+7VGigFtW1kslkMpdMYzmS+O3z9+sE0cP5BAdhCzt27d79x" +
-+            "deDC5s6mx3lNGKLCshDJ5aA7DlYDSBrG2u3V1e9K142d87wfyp4B0zSTl789BoQ+wnQacnYWolBA" +
-+            "GARQSoFTitpoFO/reudUEAx3O86RsgJIpTbHp2fgBD6cXA6FIEBRKYSl1MUphR8EmBYCT2naobIC" +
-+            "NDc3L3d9n6+yZjEeOLCUQlEpBFIiABCjFBKAV9IVUFnWEmzcuDE1M2vDQIihkMGSEpNhCBCCesZg" +
-+            "UAqhFFylYEuJWSHOlRWgubk5OXrxAioJxR+eh4yUWEEpaimFQSmqKEUgJVyl4CiF0657oKyLqLGx" +
-+            "sXV8YBCXwxCTQqCCEGiEIE4pVlAKKAUPQEFKjAvR+6vv/1LWDAilkvSvIdRyjhVKQSOkGI9EtERV" +
-+            "Fa3jHDO5HDwAJBrFScs6X+5FxO2CXS3sQtdR3/v8byH65hwGsOnFmpqzr65ahXByEqc8D3Wcv9NG" +
-+            "yLFTnneyLCXYs2dPyrEL6C4WOuYHB4BNmnaw4Dg4fPEipurqMGHbMCjFumj0+ycikTVlAWhpaUnm" +
-+            "8/kcIUTO19dHIvUaITsUAI0x9Fy5Ar00EQ2c45VY7M9nKiqe/d8Apmm2jo2N9d6p1zJ2iBMCASBU" +
-+            "CtWcwygBGJTiUc6x3zB+3q/rR3GPe+GuAEEQpKanp0/P157kvJoT8poAwJVCJSHQCYFBCHRKb516" +
-+            "xrCjqur1LxOJwoeG8c3T0ejW+25Cy7LMeDx+Zr62nLE3lxECqRQ4ITe/mjEYc8+lo5SCA6CaMSQp" +
-+            "3bk+Gt05HASwpOzLK3VmynXH84zV+Ep91et5g//KQEdHR4vrumhra7ut+aaFOOIqVWSEQGcMOqU3" +
-+            "g88rAQHgAfCVQljakp5SqGcMTYyltpnmB8+vXbvNc90vej1v8K4ZSKVSyWw2Kzs7O2fn6xfC0M5K" +
-+            "WbNJ047XUfpcJaWIz0FQiggAVyn4paCOEAiEQKKhAVNKwYvFvn7v7NlP0sClBUtgmmbrwMBA791K" +
-+            "Mymle7xYbP+Nsaa3DOOAqKh4gWiaaSxbhgjn0JRCGkBBCIScXwp0/afD/f3Hf7TtE/fcA77vJ2dm" +
-+            "Zk4s1DgTQlz6NJt9e66RKdAUA5aHQFgExgBMPPAmzGQy6wzD+Og+RllKYPBB/1pva8Jdu3atcV0X" +
-+            "GzZs6MMi2W0AW7ZsSebzeezbt29sSQBM02y9cePG71hEo3dcQpKWZfUtGUAmk0lKKUcWE+DWFOi6" +
-+            "vr2rqwvXrl3LYonMBDCVSCT4Ygb9B9fYD7KPxTs8AAAAAElFTkSuQmCC" +
-+            "";
-+    redIcon.size = new google.maps.Size(32, 32);
-+    redIcon.anchor = new google.maps.Point(4, 32);
-+
-+    setupWebChannel();
-+}
-+
-+
-+function MarkerHandler(t, i) {
-+    this.type = t;
-+    this.number = i;
-+}
-+
-+MarkerHandler.prototype.clicked = function () {
-+    mclicker.clickedX(this.type, this.number);
-+};
-+
-+function RTPolyline(map, l, stp, enp, nm, ckobj) {
-+    var s = new google.maps.Marker({map: map, position: stp, title: nm, icon: greenDotIcon});
-+    var e = new google.maps.Marker({map: map, position: enp, title: nm, icon: redDotIcon});
-+
-+    this.line = l;
-+    this.start = s;
-+    this.end = e;
-+    this.bounds = calcBounds(l.getPath());
-+    attachHandler(l, ckobj);
-+    attachHandler(s, ckobj);
-+    attachHandler(e, ckobj);
-+}
-+
-+RTPolyline.prototype.hide = function () {
-+    this.line.setVisible(false);
-+    this.start.setVisible(false);
-+    this.end.setVisible(false);
-+};
-+
-+RTPolyline.prototype.show = function () {
-+    this.line.setVisible(true);
-+    this.start.setVisible(true);
-+    this.end.setVisible(true);
-+};
-+
-+RTPolyline.prototype.getBounds = function () {
-+    return this.bounds;
-+};
-+
-+function calcBounds(path) {
-+    var bounds = new google.maps.LatLngBounds();
-+    path.forEach(function (e,n) {
-+        bounds.extend(e);
-+    });
-+    return bounds;
-+}
-+
-+function attachHandler(object, handler) {
-+    object.addListener("click", function () {
-+        handler.clicked();
-+    });
-+}
-+
-+function setupWebChannel() {
-+    if (typeof qt != "undefined") {
-+        new QWebChannel(qt.webChannelTransport, function (channel) {mclicker = channel.objects.mclicker;});
-+    }
-+}
-+
-+google.maps.event.addDomListener(window, "load", initialize);
- 
-     </script>
-+
-   </head>
- 
--  <body style="height:100%; -khtml-user-select:none;" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
-+  <body style="height:100%; -khtml-user-select:none;"  topmargin="0" leftmargin="0">
-     <div id="map" style="width:100% ; height:100%"></div>
-   </body>
- </html>
-diff --git a/gui/map.cc b/gui/map.cc
-index 9ea04d66..d384a1f6 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -27,8 +27,10 @@
- #include <QNetworkAccessManager>
- #if HAVE_WEBENGINE
- #include <QWebEngineView>
-+#include <QWebEnginePage>
- #include <QWebChannel>
- #else
-+#include <QWebView>
- #include <QWebFrame>
- #include <QWebPage>
- #endif
-@@ -73,21 +75,22 @@ Map::Map(QWidget *parent,
- 
- #if HAVE_WEBENGINE
-   MarkerClicker *mclicker = new MarkerClicker(this);
--  QWebChannel* channel = new QWebChannel(this);
-+  QWebChannel* channel = new QWebChannel(this->page());
-   this->page()->setWebChannel(channel);
-+  // Note: A current limitation is that objects must be registered before any client is initialized.
-   channel->registerObject(QStringLiteral("mclicker"), mclicker);
-   connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-   connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
- #endif
- 
--  QString baseFile =  QApplication::applicationDirPath() + "/gmapbase.html";
-+  QString baseFile =  QApplication::applicationDirPath() + "/gmapbasev3.html";
-   if (!QFile(baseFile).exists()) {
-     QMessageBox::critical(0, appName,
- 			  tr("Missing \"gmapbase.html\" file.  Check installation"));
-   }
-   else {
-     QString urlStr = "file:///" + baseFile;
--    load(QUrl(urlStr));
-+    this->load(QUrl(urlStr));
-   }
- }
- 
-@@ -138,7 +141,7 @@ static QStringList makeLiteralVar(const QString &name, const string &s)
- 
- //------------------------------------------------------------------------
- static QString fmtLatLng(const LatLng &l) {
--  return  QString("%1, %3").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
-+  return  QString("{lat: %1, lng: %3}").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
- }
- 
- //------------------------------------------------------------------------
-@@ -146,6 +149,7 @@ void Map::showGpxData()
- {
- 
- #if !defined(HAVE_WEBENGINE)
-+  // Historically this was done here in showGpxData.
-   MarkerClicker *mclicker = new MarkerClicker(this);
-   this->page()->mainFrame()->addToJavaScriptWindowObject("mclicker", mclicker);
-   connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-@@ -160,21 +164,22 @@ void Map::showGpxData()
-   this->logTime("Start defining JS string");
-   QStringList scriptStr;
-   scriptStr
--    << "mclicker.logTimeX(\"Start JS execution\");"
--    << "var map = new GMap2(document.getElementById(\"map\"));"
--    << "var bounds = new GLatLngBounds;"
-+    << "//mclicker.logTimeX(\"Start JS execution\");"
-+    << "var map = new google.maps.Map(document.getElementById(\"map\"));"
-+    << "var bounds = new google.maps.LatLngBounds();"
-     << "var waypts = [];"
-     << "var rtes = [];"
-     << "var trks = [];"
--    << "map.enableScrollWheelZoom();"
--    << "map.enableContinuousZoom();"
--    << "map.addControl(new GLargeMapControl());"
--    << "map.addControl(new GScaleControl());"
--    << "map.addControl(new GMapTypeControl());"
--    << "var pn = map.getPane(G_MAP_MARKER_PANE);"
--    << "pn.style.KhtmlUserSelect='none';"
--    << "pn.style.KhtmlUserDrag='none';"
--    << "mclicker.logTimeX(\"Done prelim JS definition\");"
-+    << "var idx;"
-+    << "//map.enableScrollWheelZoom();"
-+    << "//map.enableContinuousZoom();"
-+    << "//map.addControl(new GLargeMapControl());"
-+    << "//map.addControl(new GScaleControl());"
-+    << "//map.addControl(new GMapTypeControl());"
-+    << "//var pn = map.getPane(G_MAP_MARKER_PANE);"
-+    << "//pn.style.KhtmlUserSelect='none';"
-+    << "//pn.style.KhtmlUserDrag='none';"
-+    << "//mclicker.logTimeX(\"Done prelim JS definition\");"
-     << QString("var zoomFactor = %1;").arg(zoomFactor)
-     << QString("var numLevels = %1;").arg(numLevels)
-     ;
-@@ -185,8 +190,8 @@ void Map::showGpxData()
-   int num=0;
-   foreach (const  GpxWaypoint &pt, gpx_.getWaypoints() ) {
-     scriptStr
--      << QString("waypts[%1] = new GMarker(new GLatLng(%2), "
--		 "{title:\"%3\",icon:blueIcon});")
-+      << QString("waypts[%1] = new google.maps.Marker({map: map, position: %2, "
-+		 "title: \"%3\", icon: blueIcon});")
-       .arg(num)
-       .arg(fmtLatLng(pt.getLocation()))
-       .arg(stripDoubleQuotes(pt.getName()));
-@@ -194,86 +199,85 @@ void Map::showGpxData()
-   }
- 
-   scriptStr
--    << "for( var i=0; i<waypts.length; ++i ) {"
--    << "   bounds.extend(waypts[i].getPoint());"
--    << "   var ftemp = new MarkerHandler(0, i);"
--    << "   GEvent.bind(waypts[i], \"click\", ftemp, ftemp.clicked);"
--    << "   map.addOverlay(waypts[i]);"
-+    << "for (idx = 0; idx < waypts.length; idx += 1) {"
-+    << "    bounds.extend(waypts[idx].getPosition());"
-+    << "    attachHandler(waypts[idx], new MarkerHandler(0, idx));"
-     << "}"
--    << "mclicker.logTimeX(\"Done waypoints definition\");"
-+    << "//mclicker.logTimeX(\"Done waypoints definition\");"
-     ;
- 
-   // Tracks
-   num = 0;
-   foreach (const GpxTrack &trk, gpx_.getTracks()) {
--    vector <LatLng> epts;
-+    vector <LatLng> pts;
-+    QString path;
-     foreach (const GpxTrackSegment seg, trk.getTrackSegments()) {
-       foreach (const GpxTrackPoint pt, seg.getTrackPoints()) {
--	epts.push_back(pt.getLocation());
-+        pts.push_back(pt.getLocation());
-       }
-     }
--    string encPts, encLevels;
--    encoder.dpEncode(encPts, encLevels, epts);
-+    // maps v3 Polylines do not use encoded paths.
-+    foreach (const LatLng ll, pts) {
-+      path.append(fmtLatLng(ll));
-+      path.append(QLatin1String(", "));
-+    }
-+    path.chop(2);
- 
-     scriptStr
--      << QString("var startPt = new GLatLng(%1);").arg(fmtLatLng(epts[0]))
--      << QString("var endPt = new GLatLng(%1);").arg(fmtLatLng(epts[epts.size()-1]))
--      << QString("var idx = %1;").arg(num)
--      << QString("var nm = \"%1\";").arg(stripDoubleQuotes(trk.getName()))
--      << makeLiteralVar("encpts", encPts)
--      << makeLiteralVar("enclvs", encLevels)
--
--      << "var trk   = GPolyline.fromEncoded({color:\"#0000E0\", weight:2, opacity:0.6,"
--      <<                   "points:encpts, zoomFactor:zoomFactor, levels:enclvs, numLevels:numLevels});"
--      << "trks[idx] =  new RTPolyline(trk, startPt, endPt, new MarkerHandler(1, idx));"
-+      << QString("trks[%1] = new RTPolyline(\n"
-+                 "    map,\n"
-+                 "    new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+                 "    new google.maps.LatLng(%3),\n"
-+                 "    new google.maps.LatLng(%4),\n"
-+                 "    \"%5\",\n"
-+                 "    new MarkerHandler(1, %1)\n);"
-+                ).arg(num).arg(path).arg(fmtLatLng(pts.front())).arg(fmtLatLng(pts.back())).arg(stripDoubleQuotes(trk.getName()))
-+      << QString("bounds.union(trks[%1].getBounds());").arg(num)
-       ;
-     num++;
-   }
- 
-   scriptStr
--    << "for( var i=0; i<trks.length; ++i ) {"
--    << "   var trkbound = trks[i].getBounds();"
--    << "   bounds.extend(trkbound.getSouthWest());"
--    << "   bounds.extend(trkbound.getNorthEast());"
--    << "}"
--    << "mclicker.logTimeX(\"Done track definition\");"
-+    << "//mclicker.logTimeX(\"Done track definition\");"
-     ;
- 
-   // Routes
-   num = 0;
-   foreach (const GpxRoute &rte, gpx_.getRoutes()) {
--    vector <LatLng> epts;
-+    vector <LatLng> pts;
-+    QString path;
-     foreach (const GpxRoutePoint &pt, rte.getRoutePoints()) {
--      epts.push_back(pt.getLocation());
-+      pts.push_back(pt.getLocation());
-+    }
-+    // maps v3 Polylines do not use encoded paths.
-+    foreach (const LatLng ll, pts) {
-+      path.append(fmtLatLng(ll));
-+      path.append(QLatin1String(", "));
-     }
--    string encPts, encLevels;
--    encoder.dpEncode(encPts, encLevels, epts);
-+    path.chop(2);
-+
-     scriptStr
--      << QString("var startPt = new GLatLng(%1);").arg(fmtLatLng(epts[0]))
--      << QString("var endPt = new GLatLng(%1);").arg(fmtLatLng(epts[epts.size()-1]))
--      << QString("var idx = %1;").arg(num)
--      << QString("var nm = \"%1\";").arg(stripDoubleQuotes(rte.getName()))
--      << makeLiteralVar("encpts", encPts)
--      << makeLiteralVar("enclvs", encLevels)
--      << "var rte = GPolyline.fromEncoded({color:\"#8000B0\", weight:2, opacity:0.6,"
--      << "                       points:encpts, zoomFactor:zoomFactor, levels:enclvs, numLevels:numLevels});"
--      << "rtes[idx] = new RTPolyline(rte, startPt, endPt, new MarkerHandler(2, idx));"
-+      << QString("rtes[%1] = new RTPolyline(\n"
-+                 "    map,\n"
-+                 "    new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+                 "    new google.maps.LatLng(%3),\n"
-+                 "    new google.maps.LatLng(%4),\n"
-+                 "    \"%5\",\n"
-+                 "    new MarkerHandler(2, %1)\n);"
-+                ).arg(num).arg(path).arg(fmtLatLng(pts.front())).arg(fmtLatLng(pts.back())).arg(stripDoubleQuotes(rte.getName()))
-+      << QString("bounds.union(rtes[%1].getBounds());").arg(num)
-       ;
-     num++;
-   }
- 
-   scriptStr
--    << "for( var i=0; i<rtes.length; ++i ) {"
--    << "   var rtebound = rtes[i].getBounds();"
--    << "   bounds.extend(rtebound.getSouthWest());"
--    << "   bounds.extend(rtebound.getNorthEast());"
--    << "}"
-     << "mclicker.logTimeX(\"Done route definition\");"
-     ;
- 
-   scriptStr
--    << "map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));"
--    << "mclicker.logTimeX(\"Done setCenter\");"
-+    << "map.setCenter(bounds.getCenter());"
-+    << "map.fitBounds(bounds);"
-+    << "//mclicker.logTimeX(\"Done setCenter\");"
-     ;
- 
-   this->logTime("Done defining JS string");
-@@ -326,12 +330,13 @@ void Map::hideAllTracks()
- }
- 
- //------------------------------------------------------------------------
-+// TACKY: we assume the waypoints list and JS waypts[] are parallel.
- void Map::showWaypoints(const QList<GpxWaypoint> &waypoints)
- {
-   QStringList scriptStr;
-   int i=0;
-   foreach(const GpxWaypoint &pt, waypoints) {
--    scriptStr << QString("waypts[%1].%2();").arg(i++).arg(pt.getVisible()?"show":"hide");
-+    scriptStr << QString("waypts[%1].setVisible(%2);").arg(i++).arg(pt.getVisible()?"true":"false");
-   }
-   evaluateJS(scriptStr);
- }
-@@ -341,7 +346,7 @@ void Map::hideAllWaypoints()
-   QStringList scriptStr;
-   scriptStr
-     << "for( var i=0; i<waypts.length; ++i ) {"
--    << "   waypts[i].hide();"
-+    << "   waypts[i].setVisible(false);"
-     << "}"
-     ;
-   evaluateJS(scriptStr);
-@@ -372,8 +377,8 @@ void Map::hideAllRoutes()
- //------------------------------------------------------------------------
- void Map::setWaypointVisibility(int i, bool show)
- {
--  evaluateJS(QString("waypts[%1].%2();\n")
--	     .arg(i).arg(show?"show": "hide"));
-+  evaluateJS(QString("waypts[%1].setVisible(%2);\n")
-+	     .arg(i).arg(show?"true": "false"));
- }
- 
- //------------------------------------------------------------------------
-@@ -401,7 +406,7 @@ void Map::setRouteVisibility(int i, bool show)
- //------------------------------------------------------------------------
- void Map::panTo(const LatLng &loc)
- {
--  evaluateJS(QString("map.panTo(new GLatLng(%1));").arg(fmtLatLng(loc)));
-+  evaluateJS(QString("map.panTo(new google.maps.LatLng(%1));").arg(fmtLatLng(loc)));
- }
- 
- //------------------------------------------------------------------------
-@@ -419,22 +424,24 @@ void Map::resizeEvent ( QResizeEvent * ev)
- //------------------------------------------------------------------------
- void Map::setWaypointColorRed(int i)
- {
--  evaluateJS(QString("waypts[%1].setImage(redIcon.image)").arg(i));
-+  evaluateJS(QString("waypts[%1].setIcon(redIcon)").arg(i));
- }
- 
- //------------------------------------------------------------------------
- void Map::setWaypointColorBlue(int i)
- {
--  evaluateJS(QString("waypts[%1].setImage(blueIcon.image)").arg(i));
-+  evaluateJS(QString("waypts[%1].setIcon(blueIcon)").arg(i));
- }
- 
- //------------------------------------------------------------------------
- void Map::frameTrack(int i)
- {
-   QStringList scriptStr;
-+
-   scriptStr
--    << QString("var trkbound = trks[%1].getBounds();").arg(i)
--    << "map.setCenter(trkbound.getCenter(), map.getBoundsZoomLevel(trkbound));"
-+    << QString("map.setCenter(trks[%1].getBounds().getCenter());").arg(i)
-+    << QString("map.fitBounds(trks[%1].getBounds());").arg(i)
-+    
-     ;
-   evaluateJS(scriptStr);
- }
-@@ -445,8 +452,8 @@ void Map::frameRoute(int i)
- {
-   QStringList scriptStr;
-   scriptStr
--    << QString("var rtebound = rtes[%1].getBounds();").arg(i)
--    << "map.setCenter(rtebound.getCenter(), map.getBoundsZoomLevel(rtebound));"
-+    << QString("map.setCenter(rtes[%1].getBounds().getCenter());").arg(i)
-+    << QString("map.fitBounds(rtes[%1].getBounds());").arg(i)
-     ;
-   evaluateJS(scriptStr);
- }
-@@ -455,6 +462,13 @@ void Map::frameRoute(int i)
- //------------------------------------------------------------------------
- void Map::evaluateJS(const QString &s, bool upd)
- {
-+QFile data("output.txt");
-+if (data.open(QFile::WriteOnly | QIODevice::Append)) {
-+    QTextStream out(&data);
-+    out << s;
-+    out << '\n';
-+}
-+data.close();
- #if HAVE_WEBENGINE
-   this->page()->runJavaScript(s);
- #else
-
-From 99ae1f4e7e73e094be3cac98fca89314ee3d7810 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 10:49:24 -0700
-Subject: [PATCH 3/7] add debug clicker logging back, restore page name.
-
----
- gui/map.cc | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/gui/map.cc b/gui/map.cc
-index d384a1f6..e4d3c1e7 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -83,7 +83,7 @@ Map::Map(QWidget *parent,
-   connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
- #endif
- 
--  QString baseFile =  QApplication::applicationDirPath() + "/gmapbasev3.html";
-+  QString baseFile =  QApplication::applicationDirPath() + "/gmapbase.html";
-   if (!QFile(baseFile).exists()) {
-     QMessageBox::critical(0, appName,
- 			  tr("Missing \"gmapbase.html\" file.  Check installation"));
-@@ -164,7 +164,7 @@ void Map::showGpxData()
-   this->logTime("Start defining JS string");
-   QStringList scriptStr;
-   scriptStr
--    << "//mclicker.logTimeX(\"Start JS execution\");"
-+    << "mclicker.logTimeX(\"Start JS execution\");"
-     << "var map = new google.maps.Map(document.getElementById(\"map\"));"
-     << "var bounds = new google.maps.LatLngBounds();"
-     << "var waypts = [];"
-@@ -179,7 +179,7 @@ void Map::showGpxData()
-     << "//var pn = map.getPane(G_MAP_MARKER_PANE);"
-     << "//pn.style.KhtmlUserSelect='none';"
-     << "//pn.style.KhtmlUserDrag='none';"
--    << "//mclicker.logTimeX(\"Done prelim JS definition\");"
-+    << "mclicker.logTimeX(\"Done prelim JS definition\");"
-     << QString("var zoomFactor = %1;").arg(zoomFactor)
-     << QString("var numLevels = %1;").arg(numLevels)
-     ;
-@@ -203,7 +203,7 @@ void Map::showGpxData()
-     << "    bounds.extend(waypts[idx].getPosition());"
-     << "    attachHandler(waypts[idx], new MarkerHandler(0, idx));"
-     << "}"
--    << "//mclicker.logTimeX(\"Done waypoints definition\");"
-+    << "mclicker.logTimeX(\"Done waypoints definition\");"
-     ;
- 
-   // Tracks
-@@ -238,7 +238,7 @@ void Map::showGpxData()
-   }
- 
-   scriptStr
--    << "//mclicker.logTimeX(\"Done track definition\");"
-+    << "mclicker.logTimeX(\"Done track definition\");"
-     ;
- 
-   // Routes
-@@ -277,7 +277,7 @@ void Map::showGpxData()
-   scriptStr
-     << "map.setCenter(bounds.getCenter());"
-     << "map.fitBounds(bounds);"
--    << "//mclicker.logTimeX(\"Done setCenter\");"
-+    << "mclicker.logTimeX(\"Done setCenter\");"
-     ;
- 
-   this->logTime("Done defining JS string");
-
-From 3aff1296e36d47ca493d2d0b16d38871beaa37d2 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 12:29:25 -0700
-Subject: [PATCH 4/7] improve js debug & cleanup unused map stuff.
-
----
- gui/map.cc | 76 ++++++++++++++++++++++++--------------------------------------
- gui/map.h  |  8 +++++++
- 2 files changed, 37 insertions(+), 47 deletions(-)
-
-diff --git a/gui/map.cc b/gui/map.cc
-index e4d3c1e7..9bed4a32 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -37,10 +37,15 @@
- #include <QApplication>
- #include <QCursor>
- #include <QFile>
-+#include <QTextStream>
- 
- #include <math.h>
-+#include <string>
-+#include <vector>
- #include "appname.h"
--#include "dpencode.h"
-+
-+using std::string;
-+using std::vector;
- 
- //------------------------------------------------------------------------
- static QString stripDoubleQuotes(const QString s) {
-@@ -92,6 +97,14 @@ Map::Map(QWidget *parent,
-     QString urlStr = "file:///" + baseFile;
-     this->load(QUrl(urlStr));
-   }
-+
-+#ifdef DEBUG_JS_GENERATION
-+  dbgdata_ = new QFile("mapdebug.js");
-+  if (dbgdata_->open(QFile::WriteOnly | QIODevice::Truncate)) {
-+    dbgout_ = new QTextStream(dbgdata_);
-+  }
-+#endif
-+
- }
- 
- //------------------------------------------------------------------------
-@@ -99,6 +112,16 @@ Map::~Map()
- {
-   if (busyCursor_)
-     QApplication::restoreOverrideCursor();
-+#ifdef DEBUG_JS_GENERATION
-+  if (dbgout_) {
-+    delete dbgout_;
-+    dbgout_ = NULL;
-+  }
-+  if (dbgdata_) {
-+    delete dbgdata_;
-+    dbgdata_ = NULL;
-+  }
-+#endif
- }
- //------------------------------------------------------------------------
- void Map::loadFinishedX(bool f)
-@@ -115,30 +138,6 @@ void Map::loadFinishedX(bool f)
-   busyCursor_ = false;
- }
- 
--//------------------------------------------------------------------------
--
--static QStringList makeLiteralVar(const QString &name, const string &s)
--{
--  QStringList out;
--  out << QString("var %1 = ").arg(name);
--
--  QString ws = "\"";
--  for (unsigned int i=0; i<s.length(); i++) {
--    if (s[i] =='\\') {
--      ws += s[i];
--    }
--    ws += s[i];
--    if (ws.length() > 5120) {
--      ws += "\" + ";
--      out << ws;
--      ws = "\"";
--    }
--  }
--  ws += "\";";
--  out << ws;
--  return out;
--}
--
- //------------------------------------------------------------------------
- static QString fmtLatLng(const LatLng &l) {
-   return  QString("{lat: %1, lng: %3}").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
-@@ -155,11 +154,6 @@ void Map::showGpxData()
-   connect(mclicker, SIGNAL(markerClicked(int, int )), this, SLOT(markerClicked(int, int)));
-   connect(mclicker, SIGNAL(logTime(const QString &)), this, SLOT(logTime(const QString &)));
- #endif
--  // It is appreciably faster to do the encoding on the C++ side.
--  int numLevels = 18;
--  double zoomFactor = 2;
--  PolylineEncoder encoder(numLevels, zoomFactor, 0.00001);
--
- 
-   this->logTime("Start defining JS string");
-   QStringList scriptStr;
-@@ -171,17 +165,7 @@ void Map::showGpxData()
-     << "var rtes = [];"
-     << "var trks = [];"
-     << "var idx;"
--    << "//map.enableScrollWheelZoom();"
--    << "//map.enableContinuousZoom();"
--    << "//map.addControl(new GLargeMapControl());"
--    << "//map.addControl(new GScaleControl());"
--    << "//map.addControl(new GMapTypeControl());"
--    << "//var pn = map.getPane(G_MAP_MARKER_PANE);"
--    << "//pn.style.KhtmlUserSelect='none';"
--    << "//pn.style.KhtmlUserDrag='none';"
-     << "mclicker.logTimeX(\"Done prelim JS definition\");"
--    << QString("var zoomFactor = %1;").arg(zoomFactor)
--    << QString("var numLevels = %1;").arg(numLevels)
-     ;
- 
-   mapPresent_ = true;
-@@ -462,13 +446,11 @@ void Map::frameRoute(int i)
- //------------------------------------------------------------------------
- void Map::evaluateJS(const QString &s, bool upd)
- {
--QFile data("output.txt");
--if (data.open(QFile::WriteOnly | QIODevice::Append)) {
--    QTextStream out(&data);
--    out << s;
--    out << '\n';
--}
--data.close();
-+#ifdef DEBUG_JS_GENERATION
-+  *dbgout_ << s;
-+  *dbgout_ << '\n';
-+  dbgout_->flush();
-+#endif
- #if HAVE_WEBENGINE
-   this->page()->runJavaScript(s);
- #else
-diff --git a/gui/map.h b/gui/map.h
-index 20dd949a..c25653f4 100644
---- a/gui/map.h
-+++ b/gui/map.h
-@@ -29,8 +29,12 @@
- #endif
- #include <QPlainTextEdit>
- #include <QTime>
-+#include <QFile>
-+#include <QTextStream>
- #include "gpx.h"
- 
-+//#define DEBUG_JS_GENERATION
-+
- class QNetworkAccessManager;
- 
- 
-@@ -98,6 +102,10 @@ class Map : public QWebView
-   void routeClicked(int i);
-   
-  private:
-+#ifdef DEBUG_JS_GENERATION
-+  QFile *dbgdata_;
-+  QTextStream *dbgout_;
-+#endif
-   QNetworkAccessManager *manager_;
-   const Gpx &gpx_;
-   bool mapPresent_;
-
-From dd5931ab1e8d77d89e79b49d1176947b5443e3a3 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 16:08:50 -0700
-Subject: [PATCH 5/7] update gmapbase.html for modern stds compliance.
-
----
- gui/gmapbase.html | 17 +++++++----------
- 1 file changed, 7 insertions(+), 10 deletions(-)
-
-diff --git a/gui/gmapbase.html b/gui/gmapbase.html
-index 73a14f53..d0be535b 100644
---- a/gui/gmapbase.html
-+++ b/gui/gmapbase.html
-@@ -1,14 +1,11 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
--  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
-+<!DOCTYPE html>
-+<html style="height: 100%">
-   <head>
-     <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
-     <title>Google Maps JavaScript</title>
--    <script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBx9CSaJaOdcC5SV2LmaZZB6EOxFm1hLH4"
--            type="text/javascript"></script>
--    <script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js">
--    </script>
--    <script type="text/javascript">
-+    <script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBx9CSaJaOdcC5SV2LmaZZB6EOxFm1hLH4"></script>
-+    <script src="qrc:///qtwebchannel/qwebchannel.js"></script>
-+    <script>
- /*jslint
-     this, for
- */
-@@ -164,7 +161,7 @@
- 
-   </head>
- 
--  <body style="height:100%; -khtml-user-select:none;"  topmargin="0" leftmargin="0">
--    <div id="map" style="width:100% ; height:100%"></div>
-+  <body style="height: 100%; margin: 0">
-+    <div id="map" style="width: 100%; height: 100%"></div>
-   </body>
- </html>
-
-From 716989222715498c502a40e1e270b47fd2d16d66 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Thu, 7 Dec 2017 16:30:13 -0700
-Subject: [PATCH 6/7] delete obsolete & unused html files.
-
----
- gui/basepage.html |  29 ----
- gui/testx.html    | 121 ---------------
- gui/testy.html    | 449 ------------------------------------------------------
- 3 files changed, 599 deletions(-)
- delete mode 100644 gui/basepage.html
- delete mode 100644 gui/testx.html
- delete mode 100644 gui/testy.html
-
-diff --git a/gui/basepage.html b/gui/basepage.html
-deleted file mode 100644
-index 70ef378d..00000000
---- a/gui/basepage.html
-+++ /dev/null
-@@ -1,29 +0,0 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
--  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
--  <head>
--    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
--    <title>Google Maps JavaScript</title>
--    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
--      type="text/javascript"></script>
--    <script type="text/javascript">
--
--    //<![CDATA[
--
--    function load() {
--      if (GBrowserIsCompatible()) {
--        var map = new GMap2(document.getElementById("map"));
--		map.setCenter( new GLatLng(0,0),2 );
--        map.enableContinuousZoom();
--        map.disableDragging();
--      }
--    }
--
--    //]]>
--    </script>
--  </head>
--
--  <body style="height:100%" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
--    <div id="map" style="width:100% ; height:100%"></div>
--  </body>
--</html>
-diff --git a/gui/testx.html b/gui/testx.html
-deleted file mode 100644
-index aeae96e2..00000000
---- a/gui/testx.html
-+++ /dev/null
-@@ -1,121 +0,0 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
--  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
--  <head>
--    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
--    <title>Google Maps JavaScript</title>
--    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
--      type="text/javascript"></script>
--    <script type="text/javascript">
--
--myuri="data:image/png;base64,"+
--"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAP///wDg4OAA" +
--"4ODgAODg4ADg4OAA4ODgAODg4ADg4OAA4ODgBNXV1RbPz88A0NDQAN3a1QCBj6MAAB9WAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQn" +
--"XAD///8AAP///wCWlpYAlpaWAJaWlgCWlpYAlpaWAJaWlgCUlJQAoqKiPJWVlWR6enoAg4F9AGZv" +
--"fAAMLWAAAiVbAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdc" +
--"AAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBkZGQAZGRkAGRkZABkZGQAZGRkAGRkZABgYGAAh4eH" +
--"p2VlZYNHREAANz9KAAQkWAACJVsABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wA" +
--"BCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cA" +
--"Z2dnAGdnZwBkZGQGj4+P62xqZ3BFTl0AByhaAAElWwAEJ1sABCdcAAQnXAAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBn" +
--"Z2cAZ2dnAGdnZwBnZ2cAZ2dnAGdnZwBpaWkmlJOQ/T5JWUIBIFgSACJbMgImXTYAI1ooACBWCgEi" +
--"VgAEJlsABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdc" +
--"AAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGZmZgB0c3JOfIGJ/z1ajdtvibr1eZPD" +
--"/3KPxP9fgrz9Pmqp4xlIh6MDJ142AyNWAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wA" +
--"BCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGRkZACAf3x8" +
--"ZXGF/4mgz/+lueH/kanZ/4Oh1v92nNj/aJzf/1Wc6f8vhtn/CT19gwMjVgAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBn" +
--"Z2cAZ2dnAGNjYwCKiISrV2iH/32Yz/99mc//b5DL/2GKzP9Th8//RYfX/ziQ5/8unv//H4bq/wcy" +
--"cGwDJVgABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP//" +
--"/wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGRkZAKOjYrVSGCL/26OzP9hhMT/VH3D/0d5xv85ec3/Kn7a" +
--"/xyK7/8Rivf/GH/w/xtQp9sDI1UIBCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wA" +
--"BCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZ2dnAGpqaRyJior1OlmS/1d8w/9Hcbv/" +
--"O228/yppwf8Za83/DXbh/wWF9f8Jf/H/IHHg/yxPqe8DJVgYBCdcAAQnXAAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZmZmAHRzckJ8" +
--"gYf/LFKZ/z5puP8oXLP/EFGz/wNUvf8AYtH/AHns/wKE9v8QeOj/MGbT/yM/jMUBJFYABCdcAAQn" +
--"XAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdn" +
--"ZwBnZ2cAZGRkAIB+e2xpc4P/Hkuf/xtQrP8DQqr/AEiz/wBYxf8Abd3/AIL1/wiA8v8ccN//OFu+" +
--"/w4taGICJlkABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8A" +
--"AP///wBnZ2cAZ2dnAGdnZwBnZ2cAY2NjAIyKhZ1NX37/Azqg/wA7pv8ARrL/AFLA/wBi0/8AeOv/" +
--"AoT3/w956v8vaNX/K0aOxQAkVgIEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAE" +
--"J1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAZGRkAJOQi8kxTX//C0Kl/xRLofkW" +
--"UKTtF1qw7xdvzf0QivP/B4T3/xpw4P88YL//DS9rmwIlWAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQn" +
--"XAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBnZ2cAaGhoEpKR" +
--"j/EgO2bDCC5oVgosXiQGKFoQByhaDgwuYUwWSZb/KnbM/zdy1/8nSZ7/AC6O/wQoYFAEJlkABCdc" +
--"AAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dn" +
--"AGdnZwBmZmYAcHBwNo6Ojf9iZ20uHThiAAAjWgAEJ1wABCZZAAIoaIEAK5T/DTeP/z9gov8FM5T/" +
--"ADyo/wFAm+8EJ1s0BCVZAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD/" +
--"//8AAP///wBnZ2cAZ2dnAGdnZwBkZGQAe3t7ZoSEhfF7encMenp8ABk2YgAAJFsABCdZGAEuhekA" +
--"Mpz/AC+S/wMthf8AOaH/AEev/wBWxP8CT63rBClgRAQiUwAEJ1sABCdcAAQnXAAEJ1wABCdcAAQn" +
--"XAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBjY2MAhYWFnX19fc1+fX0Ae3x9ABMy" +
--"YAABJFkABCllfAAwk/8AMJH/AS+N/wA2nf8ARKz/AFG7/wBezP8Ab+H/AW3V/QNFjaEEJVggAyNV" +
--"AAMmWgAEJ1wABCdcAAQnXAAEJ1wABCdcAAQnXAD///8AAP///wBnZ2cAZ2dnAGdnZwBkZGQAjY2N" +
--"z3h4eJuIhoQAW2Z2AAAjWgAEJ1skAi1+8QEwk/8AMJL/ADWc/wBCqv8AT7j/AFzJ/wBp2P8Aduf/" +
--"AYX5/wmD9/8QZMb1DkGKqQcsZU4CJVgSASRWAAElWAACJVkABCdcAAQnXAD///8AAP///wBnZ2cA" +
--"Z2dnAGdnZwBoaGgMj4+P8XZ2dmSLiYYAOk1sAAAhWAAEKWZqADKa/wAxmP8AM5r/AD+n/wBNtv8A" +
--"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";
--
--var myIcon = new GIcon();
--//myIcon.image = 'icons/image.png';
--myIcon.image = myuri;
--myIcon.shadow = 'icons/shadow.png';
--myIcon.iconSize = new GSize(32,32);
--myIcon.shadowSize = new GSize(48,32);
--myIcon.iconAnchor = new GPoint(0,32);
--myIcon.infoWindowAnchor = new GPoint(16,0);
--myIcon.printImage = 'icons/printImage.gif';
--myIcon.mozPrintImage = 'icons/mozPrintImage.gif';
--myIcon.printShadow = 'icons/printShadow.gif';
--myIcon.transparent = 'icons/transparent.png';
--myIcon.imageMap = [9,0,9,1,9,2,9,3,14,4,16,5,17,6,18,7,19,8,19,9,18,10,18,11,18,12,17,13,18,14,19,15,20,16,22,17,25,18,30,19,29,20,27,21,25,22,22,23,19,24,21,25,25,26,26,27,23,28,6,29,6,30,6,31,1,31,1,30,1,29,3,28,3,27,3,26,3,25,3,24,4,23,4,22,4,21,4,20,4,19,5,18,5,17,5,16,5,15,5,14,6,13,6,12,6,11,6,10,6,9,6,8,7,7,7,6,7,5,7,4,7,3,8,2,8,1,8,0];
--    //<![CDATA[
--    function load() {
--      if (GBrowserIsCompatible()) {
--        var map = new GMap2(document.getElementById("map"));
--		map.setCenter( new GLatLng(0,0),2 );
--        map.enableContinuousZoom();
--        map.disableDragging();
--        var marker = new GMarker(new GLatLng(45, -90));
--        map.addOverlay(marker);
--        var marker2 = new GMarker(new GLatLng(0, 0), {icon:myIcon});
--        map.addOverlay(marker2);
--      }
--    }
--
--    //]]>
--    </script>
--  </head>
--
--  <body style="height:100%" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
--    <div id="map" style="width:100% ; height:100%"></div>
--  </body>
--</html>
-diff --git a/gui/testy.html b/gui/testy.html
-deleted file mode 100644
-index 3341b113..00000000
---- a/gui/testy.html
-+++ /dev/null
-@@ -1,449 +0,0 @@
--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
--  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
--<html xmlns="http://www.w3.org/1999/xhtml" style="height:100%">
--  <head>
--    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
--    <title>Google Maps JavaScript</title>
--    <script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAN6d3-kz3XqyJq-W9n7IYzhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxT_28W9HdpKXQF8sGkCU0sQpcudOQ"
--      type="text/javascript"></script>
--    <script src="http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js"> </script>
--    <script type="text/javascript">
--
--      var blueIcon = new GIcon();
--      blueIcon.image = 
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANPT0yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs7OzLLKysnQAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo6Oj" + 
--      "wWFhYXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAm5ub/zw8PF4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzMzQWlJOT/zMAAAoAAAAOAAAuNgAAMTwAABYeAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeXVxShomM/0Rln/t5kcH/h6DR" + 
--      "/32c0v9kicX/QG6u/xpTmrcAABgmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "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" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE9PTx6MjIz/j4+PGAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmVqA" + 
--      "gID/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAALW1tZdnZ2fXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrNNYWFibAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJubm/9UVFR2AAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMUEFB" + 
--      "Qf8gICBmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAGAAAAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAz867BuDoBEAAAAASUVORK5CYII=" + 
--      "";
--      
--      blueIcon.shadow = 
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAYK0lEQVR4AQEgGN/nAP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wAA////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAA////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAA////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AAP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAKAAAACoAAAAqAAAAKgAAACoAAAAqAAAABgAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAABUAAAAVAAAAFQAAABUAAAA" + 
--      "VAAAAFQAAABUAAAAVAAAAFQAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wAA////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFQA" + 
--      "AABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8AAP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABU" + 
--      "AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/" + 
--      "//8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAFQAAABUAAAAVAAAAFIAAABUAAAAVAAA" + 
--      "AFIAAABUAAAAVAAAAFQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wAA////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAABAAAAFQAAABUAAAAVAAAAFQAAABUAAAAKgAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP//" + 
--      "/wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAACAAAAMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAA" + 
--      "VAAAAFQAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8A////AP///wD///8A" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAVAAAAFQA" + 
--      "AABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAAAsAAAAKgAAACoAAAAQAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wAA////AP//" + 
--      "/wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAqAAAANAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABUAAAAVAAAAFQAAABU" + 
--      "AAAAVAAAAFQAAAAqAAAAKgAAABAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8AAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAABoA" + 
--      "AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACoAAAAqAAAAKgAA" + 
--      "ACoAAAAqAAAAKgAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8A////AP///wD///8AAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wAA////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8AAP///wD///8AAAAAAAAAAAAAAAAAAAAAPgAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAD///8AAAAAAAAA" + 
--      "AAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wBJdBZJOfZP2gAAAABJRU5ErkJggg==" + 
--      "";
--      blueIcon.iconSize = new GSize(32,32);
--      blueIcon.shadowSize = new GSize(48,32);
--      blueIcon.iconAnchor = new GPoint(4,32);
--      blueIcon.infoWindowAnchor = new GPoint(16,0);
--      blueIcon.printImage =
--      "data:image/png;base64,"+
--      "R0lGODlhIAAgAOcAAAQCBARu3AQ+fHx+fDw+PARWtERurAQeRASG9DRGZJSu3ARKlDRuvAR67AQi" + 
--      "ZHyWzFRWVCRWtDyG5DxWvDQCBBRKnAQubAwWBBxyzAQ6pJSWlARi1FxunBR65CxizERmnAQujHSS" + 
--      "zCSO7FyKzAQCLCQiJCRClNTS1ASC9ARCpJSm3ExinISKjKyqpARKtGRiZBxSnKSinAwODAR25Bxe" + 
--      "rAQqVAx67Bx2zFR6vARSvAQCFARezDx6zByK7DRWxBxOnBQ2bAQSPBRmxDRizAQ2nFyW3CROjJSS" + 
--      "lLSytAxOrARy3BQ6hExOTARWxAQqhHye1FRedFSa5AQuhBRy5Aw+pJyWlDxmtAQynCSa/ARGtExq" + 
--      "pIyKhDRKjAQmVAyS/CxGfCR+3AR+7AQqbFxeXCxetFSGzAwudAQ+pARq3FRuvCRq1AQylDSO5GyO" + 
--      "zARGrKyurAROtFxqdKSmpAwuXAx+7GSCxAQGFDyCzBxOrAQWPCxKpBxClARaxBxu3JyalERqtDQy" + 
--      "NKS25DR6zGyW1CxezBR25DRq1CxWpCxqxISChERCRFxaXFRSVERivAyK9ExmrISi1ESG3HySxGSK" + 
--      "xER6xCxOlFRqnFxuxAwCBERuvBRKrCyO7AyC9Ax25Bw6hDRKbHya1AQydAwaDFR+xBRqzIyOjDxa" + 
--      "vARm1GRmZLS2tBxy3ARu5BR67AQulAQCNARCrKyqrBxSpKSipAQqXAQCHByK9BxOpAQSRAxOtARy" + 
--      "5IyKjAQmXAR+9AQqdAQ+rAROvAx+9ARazJyanP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMMALAAAAAAgACAA" + 
--      "AAj+AIcJHDjwBMGDCBMqRIJEocOHA2W9gEgxoTACFTMKBHSEAgASrnRofDiGxYcQkEBNMgBD5MiD" + 
--      "W6AEUpByUJEobAS8JCjnk4oHbUaUicQGSw8xOwXG+NKmDg5KgsD0cFTIVlIAVSrhMMAAkZBOKID1" + 
--      "0ZO05CErZHDl2NAARachJpKWihOhgi8XwZSg4NXH1IGkLRJQyZAlx6m2HTxwSTpMDhA8FWLRwOCF" + 
--      "byMHjKvMCTIQwBJBhvas6bJzka6Dva440dIqQwo7L0sNICgKxBrVGdw0KZBnJKyJA1ODkELETY4d" + 
--      "aJQs0CiHycALUmwTefUrGJoZKDgJqfAX4hEIA8WPXGl1xRccPqdy7e3UR80QPSY8mZm16yCEUqUG" + 
--      "YpJy5YyLJunxgoIN7RHiwwQTpLHCLQgdkQhCFiTRxAartNXJFGoYeMkKlriE0BuoJKTDDzTc0MMm" + 
--      "EvBghRaW1AARLIxABAAttACg0RFjMOYQE/jpqJAwD/qYUCohCokQLIsYiZAw4Ck5kAyKlOBkZzZO" + 
--      "GRAAOw==" + 
--      "";
--      
--      blueIcon.mozPrintImage = 
--      "data:image/png;base64,"+
--      "R0lGODdhIAAgAOcAAAQGBAR25Hx6fAQ+pERCRKy2vER6xARaxJSWlFRedCR+3CxGfFyKzBxerMzO" + 
--      "zJyWlDxmtASG9AROtLy6tBx2zGR2lARq3KympAQqhFxqdExmrAR+7ISKjBxOnCxqrAQujARGrFSC" + 
--      "rJSm3CSO7GyKrMTGxDRizDxalHyWzERenNza3ARWtBRqzKSutHyOrCxOlKS25FR2rARi1JyenDRu" + 
--      "vLzCzAx+7Bxu3AQ2nAw+pLSytDR6zByK7AxOrGyGrARy3BxWpGyOzERmpFR+xAx25ARCpFSa5Cxe" + 
--      "tNTW1Ly+xBR25BQ2bExqpJSSlAQynBRKrCSa/DRWxHye1KyurFx6rERqtBxyzLS2tDyCzISChDRG" + 
--      "ZARezIyatBxClNTS1JyalARSvLy+vARu3KyqtFxuxASC9IyKjBxOrAQylARKtESG3DSO5MzKzExi" + 
--      "pOTi5HySxFR6vBRmxKSinAyC9BSS/HSCrGyW1CxezBR65FxupDxWvERuvAR67Hx+fAQ+rARazFRm" + 
--      "hCxKpGx+rFSGzBRy5FRuvGSCxCxWpBQ6hDyG5DRq1CxqxJSu3CRWtExmlERivISStCRq1FyW3AyK" + 
--      "9HSSzISi1GSKxHSKpMTCxCyO7ARWxDx6zBxy3KyqrHya1ERilAQ6pAx67ERurDRKbFxynAQuhNze" + 
--      "3FR6rARm1IyetIyOjCxizDxavMzO1AROvLy6vAR+9BxOpAQulARGtMTGzKSuvAx+9LSyvByK9AxO" + 
--      "tARy5ARCrKyutLS2vJyanARu5KSipBR67AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAIAAgAAAI/gDduDEl" + 
--      "kODAgwgNKizIcODCgyrYJGz48OHEgVeAHSRYkaJHjgJnaBTIEORFkwYLemmCBAkvXiVSekQ4U+AV" + 
--      "DkLeVJJiaU+IMCk7WuR4JQEMRpU82ZFkJBMJUzJJSjVZUMcoESiCMBikZg0UHlwmggxKc8YCrXAM" + 
--      "7NgxaQ6eWDSlkkTpBsmXF3BEQVjEgkgEG5ECzd1IVWYYDocgHMkFRgafMsFWpRBb0uOVDI2eDJBw" + 
--      "QFcZWDdYFaA5lPQELUVAgWjMJ4KSVXnGfmwo8MKSJx2ANKBAhw+hR6QGXxROEAGgXhzDINqhqMuH" + 
--      "WnEXWizBYfAnJxiYyBpQpMTGmgrD7vRBiOSDE+w4Zq1YgXymRfFzHTkp9QHH6i2/foToSLwTgo30" + 
--      "oYHDLq5sYUEAZZQRxyktUKYQAlcUdAkaaDjhB2eoeAaLEoREskogQvjgQgU1NFSCKkGV4sQAaWgi" + 
--      "gy6wlEEEJ5HcoceNhQjiwEMl9DGWKSf04OIvG8jY4R1RFNIGJEBNNRB8cplSAgkeWMFDJolsAgEV" + 
--      "qUAnHUJTICDbd2HwcksrTkYnEIRq0vXdSW44oAoSg8nkJpwElZAFacQ5SFuePvIpV2VxJXSFKnV+" + 
--      "RxWfD80wQ5uD2hnlQDMQ0ISiiX5JqEBsAFCobIu6GRAAOw==" + 
--      "";
--      blueIcon.printShadow = 
--      "data:image/png;base64,"+
--      "R0lGODlhMAAgAIAAAISChP///yH5BAEAAAEALAAAAAAwACAAAAI6jI+py+0Po5y02ouz3rz7D4bi" + 
--      "SJbmiabqyrYd4CLwHNApjddobu96foIpeisey0g0IXWxkLD5bEqbBQA7" + 
--      "";
--      blueIcon.transparent = 
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////ANPT0wL///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8As7OzArKysgL///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wD///8Ao6Oj" + 
--      "AmFhYQL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8Am5ubAjw8PAL///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD/" + 
--      "//8A////AP///wD///8A////AP///wAzMzQClJOTAjMAAAIAAAACAAAuAgAAMQIAABYC////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wBeXVwChomMAkRlnwJ5kcECh6DR" + 
--      "An2c0gJkicUCQG6uAhpTmgIAABgC////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AP///wCKiYcC" + 
--      "UV50AqO34gKXrdgCh6LTAnqa0gJsltMCX5XaAlWb5gIwjOICBD1+Av///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD/" + 
--      "//8A////AP///wClpKICNEltApCn2AJ5ls0CbI7LAl6IywJRhs8CQ4fYAjSO5wInmPkCH4juAgQs" + 
--      "aQL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP//" + 
--      "/wD///8A////AP///wD///8A////AP///wCjoZ4CLEd5AnKQygJgg8ICUnzCAkR4xgI2eM4CJ33b" + 
--      "AhqK8AIPifYCFXjnAhxPpgL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8AAP///wD///8A////AP///wD///8A////AAAAAAKcmZMCKk+SAlV5vgJFb7oC" + 
--      "N2y8AipqwgIXas4CCnbhAgOE9wIJfe4CHm7cAixKoQL///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AF1cWwKJ" + 
--      "i4sCKlWmAjlltAIoXbMCC0+zAgBRvQIAZNMCAHvtAgOD9QIRd+YCL2LMAiZBkAL///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP//" + 
--      "/wD///8A////AI6NiwJfaXUCJlWxAhRKqAIAPqgCAEu1AgBbyAIAb+ACAIP2Agl+7wIcbtsCPFi6" + 
--      "AgAdRwL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "AP///wD///8A////AP///wD///8A////AKqppgIxRGcCCD+lAgA7pAIARa8CAFK+AgBk0wIAe+0C" + 
--      "A4P1AhF35gIsYc0CMkuPAv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AKeloQIVNW4CGU6rAhpNnQIb" + 
--      "UqECG12tAh50zgIPk/8CBXzwAhtt2wJFYroCACBkAv///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8A////AJmX" + 
--      "lQIPLVoCABA4Av///wD///8A////AAAAAAIROIcCOoDNAjJp1QIbQZECADGVAgUkUgL///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////" + 
--      "AP///wD///8AWVlZAoyMjQL///8A////AP///wD///8A////AAIrdQIAMJkCACmHAk5qoQIALJYC" + 
--      "AD2lAgBDoQIFBhUC////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8AAP///wD///8A////AP///wD///8Ajo6OAn9/fwL///8A////AP///wD///8ACRkMAgAvjAIA" + 
--      "MZcCADGYAgApggIAOqMCAEewAgBVwgIAVbYCBRQ8Av///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8AqqqqAmJiYgL///8A////AP//" + 
--      "/wD///8AAipyAgAxmQIAL4sCAC6JAgA4oQIARa0CAFG8AgBezAIAbN0CAHHdAgNJkwL///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AP///wD///8ApKSk" + 
--      "Ak1NTQL///8A////AP///wAJFwUCAS2CAgAvjgIAMJcCADWdAgBCqwIAT7kCAFzJAgBp2QIAducC" + 
--      "AIP2AgqC9gIQZMYCEUiYAgAcRwL///8A////AP///wD///8A////AP///wD///8AAP///wD///8A" + 
--      "////AP///wD///8Ak5OTAlZWVgL///8A////AP///wADKWkCADGbAgAwlgIAM5oCAECoAgBNtwIA" + 
--      "WsYCAGbWAgBz5AIAgfMCCH/xAhJ25gIbb90CJmnWAjFgygIsSaACI0CQAho5gwINLnACBypeAgMm" + 
--      "WwL///8AAP///wD///8A////AP///wBVVVUCjIyMAo+PjwL///8A////AP///wANAgACAi2BAgAy" + 
--      "mwIAPaYCAEq0AgBXwwIAZNMCAHHiAgB/8QIFgfMCEHjoAhlw3gIkaNQCL2DKAjhXvQI8VbwCPFS+" + 
--      "AlZsvwJJYp0CABJEAv///wD///8AAP///wD///8A////AP///wCTk5MCf39/Av///wD///8A////" + 
--      "AP///wD///8A////AAYwdgIMTqwCAFbFAgBh0gIAb+ECAHzvAgKB9AINeOkCFnDgAiFp1wIqX8wC" + 
--      "NVfBAlluxgJLZKoCUWmYAgAAGAL///8A////AP///wD///8AAP///wD///8A////AP///wCvr68C" + 
--      "ZGRkAv///wD///8A////AP///wD///8A////AP///wAAAhUCIU+MAhxfqwIcc8kCIozsAi2N7wI4" + 
--      "h+QCPnnMAkBqtAJKaacCWG+ZAgQoUAL///8A////AP///wD///8A////AP///wD///8AAP///wD/" + 
--      "//8A////AP///wCoqKgCUlJSAv///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8AAAAHAgAAHQIAAB0CAAAAAv///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8AAP///wD///8A////AP///wCUlJQCXl5eAv///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8AAP///wD///8A////AE9PTwKMjIwCj4+PAv///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AJmZmQKA" + 
--      "gIAC////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP//" + 
--      "/wD///8A////ALW1tQJnZ2cC////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8AAP///wD///8A////AKysrAJYWFgC////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8AAP///wD///8A////AJubmwJUVFQC////AP///wD/" + 
--      "//8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//" + 
--      "/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAP///wD///8ADAwMAkFB" + 
--      "QQIgICAC////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////" + 
--      "AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "AP///wD///8AAAAAAgAAAAL///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A" + 
--      "////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD/" + 
--      "//8A////AP///wD///8AVS7w8bXTfrgAAAAASUVORK5CYII=" + 
--      "";
--      blueIcon.imageMap = [9,0,9,1,9,2,9,3,13,4,16,5,17,6,18,7,18,8,18,9,18,10,18,11,17,12,17,13,18,14,19,15,20,16,21,17,24,18,30,19,29,20,27,21,24,22,20,23,5,24,5,25,4,26,4,27,4,28,4,29,4,30,3,31,2,31,2,30,3,29,3,28,3,27,3,26,3,25,4,24,4,23,4,22,4,21,4,20,5,19,5,18,5,17,5,16,5,15,6,14,6,13,6,12,6,11,6,10,6,9,7,8,7,7,7,6,7,5,7,4,8,3,8,2,8,1,9,0]; 
--      
--      var redIcon = new GIcon(blueIcon);
--      redIcon.image =
--      "data:image/png;base64,"+
--      "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAQK0lEQVR4AQEgEN/vAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM/PzyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsbGxLrCwsGwAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo6Oj" + 
--      "t2JiYmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAm5ub/0FBQV4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFRUUck5OT/z5cXRgAAAAWFAAAOBYAADwJAAAiAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABeXl5Uh4aI/5E5Ofe+XV3/2F9f" + 
--      "/9pTU//HQUH/oysr/4AYGLMWAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACFhYWL" + 
--      "ZFlb/+5xcf/pY2P/51JS/+VERP/kOTn/4zIy/+c0NP/MLCz/ZA4OiwAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAChoaHBXjM0/+5VVf/lPz//4y8v/+AkJP/cHx//2x4e/98gIP/hJib/0Rwc/08J" + 
--      "CWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfoKD7ax8j/+UuLv/cICD/0Rsb/8caGv/DGhr/xhoa" + 
--      "/9McHP/NGxv/uRgY/4EREfUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrKxCXmpr/iBAT/8oaGv+7GRn/" + 
--      "sRgY/6wWFv+nFhb/sxgY/8QaGv+9GRn/rxcX/4AREf8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF5eXkiG" + 
--      "io7/lRAP/6YWFv+XFBT/fhAQ/34REf+WFBT/thgY/8EZGf+1GBj/oxUV/3AODs0AAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAImJiX5qYWP/kBER/3cPD/9kDQ3/dQ8P/4oSEv+lFhb/wRoa/7wYGP+tFxf/mhQU" + 
--      "/zcGBj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSkpLdPNTn/aQ0N/14MDP9rDg7/fRAQ/5cUFP+2GBj/" + 
--      "wRkZ/7UYGP+iFRX/fxERxQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGjo+1RFRX/fhER/3oQEP+C" + 
--      "ERH1jxYW/ashIf/NJSX/vBcX/64XF/+jGxv/OQYGlwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJWY" + 
--      "l/9OCQqpHQMDOAAAAAAAAAAAAAAAAA8AADRaExP/sTAw/6oXF/9nFBT/UAoK/zwHB0YAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAXFxcPIyMjP////8CAAAAAAAAAAAAAAAAAAAAAEMICK9PCgr/RwcH/5UuLv9NCAj/" + 
--      "XwwM/2YNDf8sBQUkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjIyMcn9/f/EAAAAAAAAAAAAAAAAAAAAALgUFGEsJCf9O" + 
--      "Cgr/TwoK/0cICP9bCwv/bg4O/4AREf+AERH/NwcHPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqKioq2NjY7cAAAAAAAAAAAAA" + 
--      "AAAAAAAAQwgIpU8KCv9LCgr/SwkJ/1kMDP9qDg7/fRAQ/48TE/+hFRX/pxYW/3AODp8AAAAKAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo6Oj" + 
--      "409PT34AAAAAAAAAAAAAAAAvBAQSRwkJ/0wKCv9PCQn/VQoK/2cNDf95Dw//ixIS/50VFf+vFxf/" + 
--      "vxkZ/8AZGf+bFBT/cw8PrTUGBkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAlJSU/1xcXEgAAAAAAAAAAAAAAAA/Bwd0UAoK/04JCf9TCgr/ZAwM/3YQEP+I" + 
--      "ERH/mhQU/6wXF/++GRn/vhgY/7YYGP+tFxf/qRYW/6EVFf9+EBD/bw4Ox2INDZFNBQV2QAgIiToH" + 
--      "ByoAAAAAAAAAAAAAAAAAAAAAAAAAAABZWVkwjIyM/5iYmBAAAAAAAAAAAAAAAAArBAQMSAkJ9VEK" + 
--      "Cv9hDQ3/cg4O/4UREf+XFBT/qRYW/7sZGf+/GRn/txgY/7AXF/+pFhb/oRUV/5oUFP+WExP/lxER" + 
--      "/6spKf+TKyu/OQAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACRkZFmf39//QAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAGQICCE0KCrt4Dw//ghER/5ITE/+mFRX/uBgY/8AZGf+4GBj/sRcX/6kWFv+gExP/" + 
--      "mxAQ/64qKv+ZKSn/kjU1pxYAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACtra2f" + 
--      "ZWVlwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAwMofhISmY8aGuOnIiL/xysr/8wvL//I" + 
--      "Li7/si4u/54rK/+aLy/XlT09l0QMDEoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAACnp6fVVFRUiwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAACAgAAKg4AADoKAAA2AAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUlJT/Y2NjVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVVVSSMjIz/lJSUHAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJeXl1p/" + 
--      "f3//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAALOzs5NoaGjPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKurq8lZWVmXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJiYmP9XV1d2AAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OTkJC" + 
--      "Qv8kJCRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAHAAAAOsUFBQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + 
--      "AAAAAAAAAAAAAAAAAAAAakHkz/3IBgAAAAAASUVORK5CYII=" + 
--      "";
--      
--
--    function load() {
--      if (GBrowserIsCompatible()) {
--        var map = new GMap2(document.getElementById("map"));
--		map.setCenter( new GLatLng(0,0),2 );
--        map.enableContinuousZoom();
--        map.disableDragging();
--        var marker = new GMarker(new GLatLng(45, -90));
--        map.addOverlay(marker);
--        var mgr = new MarkerManager(map);
--        var marker2 = new GMarker(new GLatLng(0, 0), {icon:redIcon});
--        map.addOverlay(marker2);
--        var pn = map.getPane(G_MAP_MARKER_PANE);
--      //var div = document.getElementById(pn);
--        pn.style.KhtmlUserSelect='none';
--        pn.style.KhtmlUserDrag='none';
--      }
--    }
--
--
--    </script>
--  </head>
--
--  <body style="height:100%; -khtml-user-select:none;" onload="load()" onunload="GUnload()" topmargin="0" leftmargin="0">
--    <div id="map" style="width:100% ; height:100%"></div>
--  </body>
--</html>
-
-From 707f3f6f21b74e47e23fc6409a22018bcffe3ed0 Mon Sep 17 00:00:00 2001
-From: tsteven4 <tsteven4 at gmail.com>
-Date: Fri, 8 Dec 2017 08:20:30 -0700
-Subject: [PATCH 7/7] gui map js beautification and corrections.
-
----
- gui/map.cc | 56 ++++++++++++++++++++++++++++++++++----------------------
- 1 file changed, 34 insertions(+), 22 deletions(-)
-
-diff --git a/gui/map.cc b/gui/map.cc
-index 9bed4a32..a4fe2a26 100644
---- a/gui/map.cc
-+++ b/gui/map.cc
-@@ -143,6 +143,28 @@ static QString fmtLatLng(const LatLng &l) {
-   return  QString("{lat: %1, lng: %3}").arg(l.lat(), 0, 'f', 5) .arg(l.lng(), 0, 'f', 5);
- }
- 
-+//------------------------------------------------------------------------
-+static QString makePath(const vector <LatLng> &pts) {
-+    // maps v3 Polylines do not use encoded paths.
-+    QString path;
-+    int lncount = 0;
-+    bool someoutput = false;
-+    foreach (const LatLng ll, pts) {
-+      if (lncount == 0) {
-+        if (someoutput) {
-+          path.append(QChar(','));
-+        }
-+        path.append(QLatin1String("\n            "));
-+      } else if (lncount == 1) {
-+        path.append(QLatin1String(", "));
-+      }
-+      path.append(fmtLatLng(ll));
-+      someoutput = true;
-+      lncount = (lncount + 1) % 2;
-+    }
-+    return path;
-+}
-+
- //------------------------------------------------------------------------
- void Map::showGpxData()
- {
-@@ -200,17 +222,12 @@ void Map::showGpxData()
-         pts.push_back(pt.getLocation());
-       }
-     }
--    // maps v3 Polylines do not use encoded paths.
--    foreach (const LatLng ll, pts) {
--      path.append(fmtLatLng(ll));
--      path.append(QLatin1String(", "));
--    }
--    path.chop(2);
-+    path = makePath(pts);
- 
-     scriptStr
-       << QString("trks[%1] = new RTPolyline(\n"
-                  "    map,\n"
--                 "    new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+                 "    new google.maps.Polyline({\n        map: map,\n        strokeColor: \"#0000E0\",\n        strokeWeight: 2,\n        strokeOpacity: 0.6,\n        path: [%2\n        ]\n    }),\n"
-                  "    new google.maps.LatLng(%3),\n"
-                  "    new google.maps.LatLng(%4),\n"
-                  "    \"%5\",\n"
-@@ -233,17 +250,12 @@ void Map::showGpxData()
-     foreach (const GpxRoutePoint &pt, rte.getRoutePoints()) {
-       pts.push_back(pt.getLocation());
-     }
--    // maps v3 Polylines do not use encoded paths.
--    foreach (const LatLng ll, pts) {
--      path.append(fmtLatLng(ll));
--      path.append(QLatin1String(", "));
--    }
--    path.chop(2);
-+    path = makePath(pts);
- 
-     scriptStr
-       << QString("rtes[%1] = new RTPolyline(\n"
-                  "    map,\n"
--                 "    new google.maps.Polyline({map: map, strokeColor: \"#0000E0\", strokeWeight: 2, strokeOpacity: 0.6, path: [%2]}),\n"
-+                 "    new google.maps.Polyline({\n        map: map,\n        strokeColor: \"#8000B0\",\n        strokeWeight: 2,\n        strokeOpacity: 0.6,\n        path: [%2\n        ]\n    }),\n"
-                  "    new google.maps.LatLng(%3),\n"
-                  "    new google.maps.LatLng(%4),\n"
-                  "    \"%5\",\n"
-@@ -306,8 +318,8 @@ void Map::hideAllTracks()
- {
-   QStringList scriptStr;
-   scriptStr
--    << "for( var i=0; i<trks.length; ++i ) {"
--    << "   trks[i].hide();"
-+    << "for (idx = 0; idx < trks.length; idx += 1) {"
-+    << "    trks[idx].hide();"
-     << "}"
-     ;
-   evaluateJS(scriptStr);
-@@ -329,8 +341,8 @@ void Map::hideAllWaypoints()
- {
-   QStringList scriptStr;
-   scriptStr
--    << "for( var i=0; i<waypts.length; ++i ) {"
--    << "   waypts[i].setVisible(false);"
-+    << "for (idx = 0; idx < waypts.length; idx += 1) {"
-+    << "    waypts[idx].setVisible(false);"
-     << "}"
-     ;
-   evaluateJS(scriptStr);
-@@ -352,8 +364,8 @@ void Map::hideAllRoutes()
- {
-   QStringList scriptStr;
-   scriptStr
--    << "for( var i=0; i<rtes.length; ++i ) {"
--    << "   rtes[i].hide();"
-+    << "for (idx = 0; idx < rtes.length; idx += 1) {"
-+    << "    rtes[idx].hide();"
-     << "}"
-     ;
-   evaluateJS(scriptStr);
-@@ -408,13 +420,13 @@ void Map::resizeEvent ( QResizeEvent * ev)
- //------------------------------------------------------------------------
- void Map::setWaypointColorRed(int i)
- {
--  evaluateJS(QString("waypts[%1].setIcon(redIcon)").arg(i));
-+  evaluateJS(QString("waypts[%1].setIcon(redIcon);").arg(i));
- }
- 
- //------------------------------------------------------------------------
- void Map::setWaypointColorBlue(int i)
- {
--  evaluateJS(QString("waypts[%1].setIcon(blueIcon)").arg(i));
-+  evaluateJS(QString("waypts[%1].setIcon(blueIcon);").arg(i));
- }
- 
- //------------------------------------------------------------------------



More information about the arch-commits mailing list