From d79742a71e6eef5e4768e6c198fad98232bb56f3 Mon Sep 17 00:00:00 2001 From: shubell Date: Tue, 5 May 2015 10:35:45 +0200 Subject: [PATCH 01/34] Does not update location on some eu phones Sometimes you get the distance parameter with a comma like "0,1" --- servers/dotNet/UpdateLocation.aspx.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/servers/dotNet/UpdateLocation.aspx.cs b/servers/dotNet/UpdateLocation.aspx.cs index 2681400f..25463d1a 100755 --- a/servers/dotNet/UpdateLocation.aspx.cs +++ b/servers/dotNet/UpdateLocation.aspx.cs @@ -61,7 +61,8 @@ protected void Page_Load(object sender, EventArgs e) { directionDecimal = 0.0M; } - string distance = Request.QueryString["distance"]; + //sometimes in eu phones you get this with a comma + string distance = Request.QueryString["distance"].Replace(",", "."); string date = Server.UrlDecode(Request.QueryString["date"]); DateTime tempDateTime; From 34cb4352eb2732dd6b13fdcf928b0429ad4534c3 Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 8 Sep 2015 03:33:00 +0200 Subject: [PATCH 02/34] updated prcGetAllRoutesForMap regression error --- phoneClients/android/.idea/workspace.xml | 75 ++++++++---------- .../build/intermediates/model_data.bin | Bin 82635 -> 82635 bytes .../ios/GpsTracker/WSViewController.m | 2 +- servers/php/mysql/gpstracker-09-14-14.sql | 12 +-- 4 files changed, 39 insertions(+), 50 deletions(-) diff --git a/phoneClients/android/.idea/workspace.xml b/phoneClients/android/.idea/workspace.xml index 1b896940..206953da 100644 --- a/phoneClients/android/.idea/workspace.xml +++ b/phoneClients/android/.idea/workspace.xml @@ -40,7 +40,9 @@ - @@ -1029,7 +1018,6 @@ - @@ -1233,6 +1221,7 @@ + @@ -1470,13 +1459,12 @@ - + - @@ -1484,23 +1472,24 @@ - - + - - + + + + @@ -1508,15 +1497,15 @@ - - - + + + - + @@ -1529,8 +1518,8 @@ - + @@ -1902,14 +1891,6 @@ - - - - - - - - @@ -1934,11 +1915,17 @@ - + - - - + + + + + + + + + diff --git a/phoneClients/android/build/intermediates/model_data.bin b/phoneClients/android/build/intermediates/model_data.bin index 6bb624dae63512a4e144a4647fabd26ddca6ad95..46663a7f56c7480766c78b65b3dfd8082d536a81 100644 GIT binary patch delta 3055 zcmds(c~n$o7{=$FxiiSXj4%u%Xl$mEq5}vjAd2FesR&0D!37c2R6+y`bHf#JGKB~I z43A5j+cBkXo;j7~c1~Gtc{B4pQYZt85s0!1Ho zs0I1JN0;2#rft$z=}kI>u9`rRC|b3V!m#L)iPb$pli5f!nP3a=fDo-ai}585%myd; z-CZFU8F68OH_FCq#XW{n0bjQ&rez5Dwmq_1<%qdnRs&4?qY>imhOZVIu+3~jLVgjp zRwjz2Au~us&=o>N#grCYBsu3QhJcdIu$kR3ZGjOdy5wN%Zt3kl{N6OKE&kjXc+5+8 zQq0ZE%T;8`BioYS@|`dPQFjDjA_~9ikFq4a_))kMaXBkcdtNUtjP6C)J}wm-w&&op zJ)YPcj+DTlRC!Y)TmeG zuBya!I5KRGCPx}Wqn1?6NLnk)PEB4f%iaI(roSjRT8aZr!rK*I+z?-xqXJDvZDy)C zZpb`(*ajE$g;+kdoEpt%O)q=Y3hG8?z<+O`sLDK}lr24X>`iXzHt(M2NW#x0*+}o6 zfcnTJ?C7zM3V1$Rqik(HugSydU2_l;siE)WgpwfIA_Z!u#&Wzy49s~}NjkA;_F_$w zSUtVaASUGZRsunrWPc`m+^{}6Bk zDIJ@4kNcI>ioXNjKw2z!FSTcWPrj7-{|rQB`QHTMK>AX)bxy3!ylS`99Eh_UF@r5K z0r~3$!IrD|Z6F&f?=@2?T8spl8 z9>&eqaGriVcAwFkYNPkQ@YN`{IszWT^gYx0*Vb_1>Yu`U@W+b~A z#Fg94coM-@)mt9e^2^>2*%J5NeMKd`@L~X;@~78g(eA#HTU>!FKMXV8L4ka3o`l>1DR}#cxlr$J&o)Px7T&tl8 zw9@evZq0lJ(pk?c=`7Lnp!d93sz5zhus~`yT1|Qyfi0K2vhxB3vhAJ8WPcp3As1wi zijulbOjJ`8F zz@#*=!R^V|Ff=O7@+FTPnRCAuw>t1O+#hb4BQBq^$~tWOv6q(SnU^T!!%gPB@N=hi`N0KcL% zRvkiPtU@qNB7S-_v4dvn&!R&4zZMrdejN%SKb90qRU{9fc%8s@hmqcTrYpTjn6;}P uI~YzbY)M!0pj8byw5|##fm%o#I^`;!kp=KuZq~|fwA6+Ct*L!!I{gAhtmMW3 delta 3278 zcmds3dr*|u72mTjce5_+w+~#T7-<=l*Rreli~$5QK_rMKCisY=2_$Ghh-+OV8Wgow zLIe9FUI#RhX*0=?5Rh-kCX<;2X*Er-Q>-&-G6V!Wz7iEMB%L-@d%y3~lt*jhq?14T z&(62^-gEBxopXM_dph>$I`-(ASL(zTon1$nm|x+-k^KVlO{;M9WEitdpa+=ENx#A) z-Y|5VGVt(a0i8t?(K~*o=AnWj{KVV}ROF~VZv4@lrJJczsqSGfJ82swv10}b#}@Mn zeqe>PtCx1|K6o59Bv=;FOl-3pCJ#b|QrIu-b$F6f_yLt_{1yZMwMd^n6@(K`v>9dz zS!)aPrbc^J+QPL3MLw@86A>ZzVRg9)|0p*Ybx-E4+x(PQm5;&7iAc%OiA~m8ElzKE zkxg>YJ+$NYI_hekmX}1YGhl^gTE5sHe~BmqJMVX)c&7z>+`qu52~Xjdu^~9!9>OmV z=j-cbY-TnXOExqo|5QHu{O1--zmbK>n`|v{gM_2@d2okXknxFCU!vMUAwG1rhjI^5 za-hlGCiL$bM}=6jKNe-P^k@z>pt-scZ`s%CxPdB>Cuar1F-{CiTuwavOQ`?2j^%hr zz`%V|Snf2^!qQ>F=dA)_8m)LYa{*SR8Srf3Y{-)ibd_rG{W1pYjJ3HEgqaTg!H2glr8qn880pWjW6Y5jp!FYowrMa zw>!3=W}y?sDLpvY#gmq|K#WLD)4+COB`SVXgBid67KRT?#kyDH)x%C_!}WUAcNT4n z9#Sk~8V_)bRdBso&#kuVWklKNo3kC;e^;SdUsQmm+NaUb{IVRz<)sJjGP-$Ex@j9u zwdZJecvZ`I^%shk)m1bm;Ewk_BLm)X;0b@8M~Yc&%d3~-{aTK-==iHL!v2zU4F!p1 z;Vu#zIv>&T9(z)))}lZDh@iL#>bk0)iT{N9P&Mm%I+Bl-|j2xIc zlM`ew^JpkpX_>j@+t8vblzVJ);FOh|8cM)MV_Q_CzZrm zGn!6@-&qWBHpo7b@;`zm1S^^#g_$!-5v=r`5}?W2jFVLjxAJm#TjN zFH>bSrKs-WvX+vFGx-LC#DzPv;10A^9M+C;c<2_bU|DVFLb0hO%dD{L$04`+iyuaA zE@29?ficLg4MQgG|Lr~r)(8zif5{oq@`nv-@{ZC0&HB+gaM869=RPYRrUj0!a#;&j zePX{$EucTQj?n^5%P1|V?apET5SoXS9xMBnD3mH>r9kf)EBj&!xx~NrTp~<&2-tYe zh2Fjh%3#VLZo3YOPj%;C+X~=Asb4J6^f`J{ahh-TA1_S zzUy99252Y=3(q^y`^_@6o?pYhilynO8XAwo=bac7_L4`eyYP;dEf1nG!|^I=fV@KE#&T zsLVg~`2PTr6)op-Mk8_%pes*#aHKONwhPe3ek!tDo-UzDjUw>4=dh^Rv zOuk`6@J*wFx##*aj`;-{+2k7rJ%0c*3)ZocNGiZ*Wl79!;txIFK>N*!WAeck6RpOz z?mf7-HUaY=R%{5UGl2HR_e*5_DPf5 zT)AsbscB7MNKd=82hC7*Z~XoC>JIYNvt=RV#Y)h*eMVX=>PT=+Rlf&7~YFP z`0_#+QuJnaWE>gcyyytX<6=us-KZTN}~UIDl zLn{Iav3!BgX9 z4=UeRhbITqB+5~!n&~6H0Z7%L@j)(3=;;vi& zj=5=)G?;etu{n(m5SiHAM6!{bzyP0gUm&WKl_^k}NLn&TqX>Cbi%`FN8skfrK-Ub~ MZQ`(U=hFuICmJ-}Q~&?~ diff --git a/phoneClients/ios/GpsTracker/WSViewController.m b/phoneClients/ios/GpsTracker/WSViewController.m index 6fdde5db..b79dd96f 100644 --- a/phoneClients/ios/GpsTracker/WSViewController.m +++ b/phoneClients/ios/GpsTracker/WSViewController.m @@ -117,7 +117,7 @@ - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray NSTimeInterval secondsSinceLastWebsiteUpdate = fabs([lastWebsiteUpdateTime timeIntervalSinceNow]); if (firstTimeGettingPosition || (secondsSinceLastWebsiteUpdate > timeIntervalInSeconds)) { // currently one minute - if (location.horizontalAccuracy < 100.0 && location.coordinate.latitude != 0 && location.coordinate.longitude != 0) { + if (location.horizontalAccuracy < 500.0 && location.coordinate.latitude != 0 && location.coordinate.longitude != 0) { if (increasedAccuracy) { [self reduceTrackingAccuracy]; diff --git a/servers/php/mysql/gpstracker-09-14-14.sql b/servers/php/mysql/gpstracker-09-14-14.sql index 54667beb..376710cf 100644 --- a/servers/php/mysql/gpstracker-09-14-14.sql +++ b/servers/php/mysql/gpstracker-09-14-14.sql @@ -91,11 +91,13 @@ DELIMITER ; DELIMITER ;; CREATE DEFINER=`root`@`localhost` PROCEDURE `prcGetAllRoutesForMap`() BEGIN - SELECT DISTINCT(sessionId), MAX(gpsTime) gpsTime, - CONCAT('{ "latitude":"', CAST(latitude AS CHAR),'", "longitude":"', CAST(longitude AS CHAR), '", "speed":"', CAST(speed AS CHAR), '", "direction":"', CAST(direction AS CHAR), '", "distance":"', CAST(distance AS CHAR), '", "locationMethod":"', locationMethod, '", "gpsTime":"', DATE_FORMAT(gpsTime, '%b %e %Y %h:%i%p'), '", "userName":"', userName, '", "phoneNumber":"', phoneNumber, '", "sessionID":"', CAST(sessionID AS CHAR), '", "accuracy":"', CAST(accuracy AS CHAR), '", "extraInfo":"', extraInfo, '" }') json - FROM gpslocations - WHERE sessionID != '0' && CHAR_LENGTH(sessionID) != 0 && gpstime != '0000-00-00 00:00:00' - GROUP BY sessionID; +SELECT sessionId, gpsTime, CONCAT('{ "latitude":"', CAST(latitude AS CHAR),'", "longitude":"', CAST(longitude AS CHAR), '", "speed":"', CAST(speed AS CHAR), '", "direction":"', CAST(direction AS CHAR), '", "distance":"', CAST(distance AS CHAR), '", "locationMethod":"', locationMethod, '", "gpsTime":"', DATE_FORMAT(gpsTime, '%b %e %Y %h:%i%p'), '", "userName":"', userName, '", "phoneNumber":"', phoneNumber, '", "sessionID":"', CAST(sessionID AS CHAR), '", "accuracy":"', CAST(accuracy AS CHAR), '", "extraInfo":"', extraInfo, '" }') json +FROM (SELECT MAX(GPSLocationID) ID + FROM gpslocations + WHERE sessionID != '0' && CHAR_LENGTH(sessionID) != 0 && gpstime != '0000-00-00 00:00:00' + GROUP BY sessionID) AS MaxID +JOIN gpslocations ON gpslocations.GPSLocationID = MaxID.ID +ORDER BY gpsTime; END ;; DELIMITER ; /*!50003 SET sql_mode = @saved_sql_mode */ ; From 8baba8de6add4aa4827f28607559fa9ef012ac3f Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 8 Sep 2015 03:41:26 +0200 Subject: [PATCH 03/34] updated readme.md for version 4.04 --- README.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 74c8fbbf..6b28ad28 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -![gpstracker](https://raw.githubusercontent.com/nickfox/GpsTracker/master/gpstracker_small.png)Gps Tracker v4.0.3 +![gpstracker](https://raw.githubusercontent.com/nickfox/GpsTracker/master/gpstracker_small.png)Gps Tracker v4.0.4 ------------- -##### Google Map Gps Cell Phone Tracker Server +##### Google Map Gps Cell Phone Tracker -This project allows you to track cell phones periodically. For instance every minute or every five minutes. You can watch the cell phone being tracked in real time using Google Maps and you can store and reload routes easily. The map display page is built using bootstrap which makes the page responsive and also uses bootswatch which gives you the choice of 17 different themes. There are 4 clients, iOS, Android, Windows Phone and Java ME. +This project allows you to track cell phones periodically. For instance every minute or every five minutes. You can watch the cell phone being tracked in real time using Google Maps (and other map providers such as OpenStreetMaps) and you can store and reload routes easily. The map display page is built using bootstrap which makes the page responsive and also uses bootswatch which gives you the choice of 17 different themes. There are 4 clients, iOS, Android, Windows Phone and Java ME. You have the choice of two server stacks. You can choose one of: @@ -33,6 +33,13 @@ https://www.websmithing.com/2014/01/20/quick-start-guide-for-gpstracker-3/ ************* +Sep 8, 2015 - v4.0.4 + +Added support for Sqlite and PostgreSQL, thanks Brent Fraser +fixed prcGetAllRoutesForMap regression error + +************* + Nov 24, 2014 - v4.0.3 Added European decimal handling to updatelocation, thanks Wim From 6aabe6a8be1fbfd93fa0d8ccdee2221d052d119f Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 8 Sep 2015 03:46:47 +0200 Subject: [PATCH 04/34] removed bing map provider --- servers/php/js/maps.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/servers/php/js/maps.js b/servers/php/js/maps.js index 62728ddd..7b69688f 100644 --- a/servers/php/js/maps.js +++ b/servers/php/js/maps.js @@ -154,7 +154,7 @@ {attribution:'©2014 OpenStreetMap contributors'}); // need to get your own bing maps key, http://www.microsoft.com/maps/create-a-bing-maps-key.aspx - var bingMapsLayer = new L.BingLayer("AnH1IKGCBwAiBWfYAHMtIfIhMVybHFx2GxsReNP5W0z6P8kRa67_QwhM4PglI9yL"); + // var bingMapsLayer = new L.BingLayer("AnH1IKGCBwAiBWfYAHMtIfIhMVybHFx2GxsReNP5W0z6P8kRa67_QwhM4PglI9yL"); var googleMapsLayer = new L.Google('ROADMAP'); // this fixes the zoom buttons from freezing @@ -166,7 +166,7 @@ // this is the switcher control to switch between map types gpsTrackerMap.addControl(new L.Control.Layers({ - 'Bing Maps':bingMapsLayer, + // 'Bing Maps':bingMapsLayer, 'Google Maps':googleMapsLayer, 'OpenStreetMaps':openStreetMapsLayer }, {})); From 053aaf6f0bebc1055da09ce2d35b48828e39dcc1 Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 8 Sep 2015 03:50:08 +0200 Subject: [PATCH 05/34] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6b28ad28..597a335e 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ https://www.websmithing.com/2014/01/20/quick-start-guide-for-gpstracker-3/ Sep 8, 2015 - v4.0.4 Added support for Sqlite and PostgreSQL, thanks Brent Fraser + fixed prcGetAllRoutesForMap regression error ************* From c5a0622716407eec634470153a62276e0fb0ceb4 Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 8 Sep 2015 04:55:32 +0200 Subject: [PATCH 06/34] updated readme --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 597a335e..2ec0118b 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,7 @@ You have the choice of two server stacks. You can choose one of: Both stacks are now in the same download but you only need to use one. -By default the Tracker server is set up to use the included SQLite database. If you want to use one of the other supported database systems, edit the dbconnect.php file included with the Tracker Server. - -**Note:** This is only the server portion of the system. You will also need a client app running on your phone. Have a look at the Quick Start Guide in the link below for information on how to get the client apps. +By default the Tracker server is set up to use the included SQLite database. If you want to use one of the other supported database systems, edit the dbconnect.php file. If you need help, please go to: From 2ba9f7a0755b0d95c16c4682cb3d34829a624d45 Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 29 Sep 2015 14:37:56 +0200 Subject: [PATCH 07/34] updated to leaflet 0.7.5 --- servers/dotNet/DisplayMap-Blue.aspx | 4 +- servers/dotNet/DisplayMap-Dark.aspx | 4 +- servers/dotNet/DisplayMap.aspx | 4 +- servers/dotNet/js/leaflet-0.7.3/leaflet.js | 9 - .../images/layers-2x.png | Bin .../images/layers.png | Bin .../images/marker-icon-2x.png | Bin .../images/marker-icon.png | Bin .../images/marker-shadow.png | Bin .../leaflet-src.js | 15089 ++++++++-------- .../leaflet.css | 0 servers/dotNet/js/leaflet-0.7.5/leaflet.js | 9 + servers/php/displaymap-blue.php | 4 +- servers/php/displaymap-dark.php | 4 +- servers/php/displaymap.php | 4 +- servers/php/js/leaflet-0.7.3/leaflet.js | 9 - .../images/layers-2x.png | Bin .../images/layers.png | Bin .../images/marker-icon-2x.png | Bin .../images/marker-icon.png | Bin .../images/marker-shadow.png | Bin .../leaflet-src.js | 15089 ++++++++-------- .../leaflet.css | 0 servers/php/js/leaflet-0.7.5/leaflet.js | 9 + 24 files changed, 15102 insertions(+), 15136 deletions(-) delete mode 100644 servers/dotNet/js/leaflet-0.7.3/leaflet.js rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/layers-2x.png (100%) rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/layers.png (100%) rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/marker-icon-2x.png (100%) rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/marker-icon.png (100%) rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/marker-shadow.png (100%) rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/leaflet-src.js (96%) rename servers/dotNet/js/{leaflet-0.7.3 => leaflet-0.7.5}/leaflet.css (100%) create mode 100644 servers/dotNet/js/leaflet-0.7.5/leaflet.js delete mode 100644 servers/php/js/leaflet-0.7.3/leaflet.js rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/layers-2x.png (100%) rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/layers.png (100%) rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/marker-icon-2x.png (100%) rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/marker-icon.png (100%) rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/images/marker-shadow.png (100%) rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/leaflet-src.js (96%) rename servers/php/js/{leaflet-0.7.3 => leaflet-0.7.5}/leaflet.css (100%) create mode 100644 servers/php/js/leaflet-0.7.5/leaflet.js diff --git a/servers/dotNet/DisplayMap-Blue.aspx b/servers/dotNet/DisplayMap-Blue.aspx index 3081dbcd..0906f40c 100644 --- a/servers/dotNet/DisplayMap-Blue.aspx +++ b/servers/dotNet/DisplayMap-Blue.aspx @@ -10,10 +10,10 @@ - + - + - + diff --git a/servers/dotNet/DisplayMap-Dark.aspx b/servers/dotNet/DisplayMap-Dark.aspx index f0aa5288..f6e229dd 100644 --- a/servers/dotNet/DisplayMap-Dark.aspx +++ b/servers/dotNet/DisplayMap-Dark.aspx @@ -18,7 +18,7 @@ to change themes, select a theme here: http://www.bootstrapcdn.com/#bootswatch_tab and then change the word after 3.2.0 in the following link to the new theme name --> - + diff --git a/servers/dotNet/DisplayMap.aspx b/servers/dotNet/DisplayMap.aspx index 56845864..6f20a424 100755 --- a/servers/dotNet/DisplayMap.aspx +++ b/servers/dotNet/DisplayMap.aspx @@ -18,7 +18,7 @@ to change themes, select a theme here: http://www.bootstrapcdn.com/#bootswatch_tab and then change the word after 3.2.0 in the following link to the new theme name --> - + diff --git a/servers/php/displaymap-blue.php b/servers/php/displaymap-blue.php index fd53adce..1227d775 100644 --- a/servers/php/displaymap-blue.php +++ b/servers/php/displaymap-blue.php @@ -16,7 +16,7 @@ to change themes, select a theme here: http://www.bootstrapcdn.com/#bootswatch_tab and then change the word after 3.2.0 in the following link to the new theme name --> - + diff --git a/servers/php/displaymap-dark.php b/servers/php/displaymap-dark.php index 47812a1e..7db0f8a7 100644 --- a/servers/php/displaymap-dark.php +++ b/servers/php/displaymap-dark.php @@ -16,7 +16,7 @@ to change themes, select a theme here: http://www.bootstrapcdn.com/#bootswatch_tab and then change the word after 3.2.0 in the following link to the new theme name --> - + diff --git a/servers/php/displaymap.php b/servers/php/displaymap.php index fd44e8e5..d1b23b12 100644 --- a/servers/php/displaymap.php +++ b/servers/php/displaymap.php @@ -16,7 +16,7 @@ to change themes, select a theme here: http://www.bootstrapcdn.com/#bootswatch_tab and then change the word after 3.2.0 in the following link to the new theme name --> - + From 556f35c85c1ee45061c3041ed5464e7b7831cf44 Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 29 Sep 2015 21:05:17 +0200 Subject: [PATCH 09/34] added multi-user wordpress plugin --- servers/wordpress/README.md | 10 + .../gps-tracker/admin/assets/css/admin.css | 1 + .../gps-tracker/admin/assets/css/index.php | 1 + .../admin/assets/images/satellite.png | Bin 0 -> 4513 bytes .../gps-tracker/admin/assets/js/admin.js | 10 + .../gps-tracker/admin/assets/js/index.php | 1 + .../admin/class-gpstracker-admin.php | 141 + .../gps-tracker/admin/includes/index.php | 1 + .../gps-tracker/admin/views/admin.php | 12 + .../gps-tracker/assets/banner-1544x500.png | Bin 0 -> 34783 bytes .../gps-tracker/assets/banner-772x250.png | Bin 0 -> 34778 bytes .../wordpress/gps-tracker/assets/index.php | 1 + .../gps-tracker/assets/screenshot-1.png | Bin 0 -> 459254 bytes .../gps-tracker/assets/screenshot-2.png | Bin 0 -> 105143 bytes .../gps-tracker/assets/screenshot-3.png | Bin 0 -> 105045 bytes servers/wordpress/gps-tracker/gpstracker.php | 62 + ...lass-gpstracker-gamajo-template-loader.php | 208 + .../includes/class-gpstracker-setup.php | 242 + .../class-gpstracker-template-loader.php | 47 + .../wordpress/gps-tracker/includes/index.php | 1 + servers/wordpress/gps-tracker/index.php | 1 + .../gps-tracker/languages/gpstracker.pot | 31 + .../wordpress/gps-tracker/languages/index.php | 1 + servers/wordpress/gps-tracker/license.txt | 339 + .../gps-tracker/public/assets/css/dark.css | 110 + .../gps-tracker/public/assets/css/index.php | 1 + .../gps-tracker/public/assets/css/light.css | 143 + .../gps-tracker/public/assets/css/public.css | 117 + .../public/assets/images/ajax-loader.gif | Bin 0 -> 3208 bytes .../public/assets/images/ajaxloader.gif | Bin 0 -> 3208 bytes .../public/assets/images/ajaxloadersmall.gif | Bin 0 -> 1553 bytes .../public/assets/images/compassE.jpg | Bin 0 -> 1239 bytes .../public/assets/images/compassN.jpg | Bin 0 -> 1272 bytes .../public/assets/images/compassNE.jpg | Bin 0 -> 1255 bytes .../public/assets/images/compassNW.jpg | Bin 0 -> 1251 bytes .../public/assets/images/compassS.jpg | Bin 0 -> 1256 bytes .../public/assets/images/compassSE.jpg | Bin 0 -> 1248 bytes .../public/assets/images/compassSW.jpg | Bin 0 -> 1249 bytes .../public/assets/images/compassW.jpg | Bin 0 -> 1242 bytes .../public/assets/images/coolblue_small.png | Bin 0 -> 478 bytes .../public/assets/images/coolgreen2_small.png | Bin 0 -> 3676 bytes .../public/assets/images/coolgreen_small.png | Bin 0 -> 586 bytes .../public/assets/images/coolred_small.png | Bin 0 -> 466 bytes .../public/assets/images/coolshadow_small.png | Bin 0 -> 436 bytes .../assets/images/cooltransparent_small.png | Bin 0 -> 3158 bytes .../assets/images/gpstracker-man-blue.png | Bin 0 -> 7273 bytes .../public/assets/images/gpstracker-man.png | Bin 0 -> 4486 bytes .../gps-tracker/public/assets/index.php | 1 + .../public/assets/js/gpstracker-map.js | 441 + .../gps-tracker/public/assets/js/index.php | 1 + .../js/leaflet-0.7.5/images/layers-2x.png | Bin 0 -> 2898 bytes .../assets/js/leaflet-0.7.5/images/layers.png | Bin 0 -> 1502 bytes .../leaflet-0.7.5/images/marker-icon-2x.png | Bin 0 -> 4033 bytes .../js/leaflet-0.7.5/images/marker-icon.png | Bin 0 -> 1747 bytes .../js/leaflet-0.7.5/images/marker-shadow.png | Bin 0 -> 797 bytes .../assets/js/leaflet-0.7.5/leaflet-src.js | 9163 +++++++++++++++++ .../assets/js/leaflet-0.7.5/leaflet.css | 478 + .../public/assets/js/leaflet-0.7.5/leaflet.js | 9 + .../public/assets/js/leaflet-plugins/LICENSE | 22 + .../public/assets/js/leaflet-plugins/bing.js | 131 + .../assets/js/leaflet-plugins/google.js | 242 + .../gps-tracker/public/class-gpstracker.php | 220 + .../public/includes/class-gpstracker-ajax.php | 178 + .../includes/class-gpstracker-endpoint.php | 158 + .../gps-tracker/public/includes/index.php | 1 + servers/wordpress/gps-tracker/readme.txt | 108 + .../templates/shortcode-gpstracker-map.php | 32 + servers/wordpress/gps-tracker/uninstall.php | 44 + 68 files changed, 12710 insertions(+) create mode 100644 servers/wordpress/README.md create mode 100644 servers/wordpress/gps-tracker/admin/assets/css/admin.css create mode 100644 servers/wordpress/gps-tracker/admin/assets/css/index.php create mode 100644 servers/wordpress/gps-tracker/admin/assets/images/satellite.png create mode 100644 servers/wordpress/gps-tracker/admin/assets/js/admin.js create mode 100644 servers/wordpress/gps-tracker/admin/assets/js/index.php create mode 100644 servers/wordpress/gps-tracker/admin/class-gpstracker-admin.php create mode 100644 servers/wordpress/gps-tracker/admin/includes/index.php create mode 100644 servers/wordpress/gps-tracker/admin/views/admin.php create mode 100644 servers/wordpress/gps-tracker/assets/banner-1544x500.png create mode 100644 servers/wordpress/gps-tracker/assets/banner-772x250.png create mode 100644 servers/wordpress/gps-tracker/assets/index.php create mode 100644 servers/wordpress/gps-tracker/assets/screenshot-1.png create mode 100644 servers/wordpress/gps-tracker/assets/screenshot-2.png create mode 100644 servers/wordpress/gps-tracker/assets/screenshot-3.png create mode 100644 servers/wordpress/gps-tracker/gpstracker.php create mode 100644 servers/wordpress/gps-tracker/includes/class-gpstracker-gamajo-template-loader.php create mode 100644 servers/wordpress/gps-tracker/includes/class-gpstracker-setup.php create mode 100644 servers/wordpress/gps-tracker/includes/class-gpstracker-template-loader.php create mode 100644 servers/wordpress/gps-tracker/includes/index.php create mode 100644 servers/wordpress/gps-tracker/index.php create mode 100644 servers/wordpress/gps-tracker/languages/gpstracker.pot create mode 100644 servers/wordpress/gps-tracker/languages/index.php create mode 100644 servers/wordpress/gps-tracker/license.txt create mode 100644 servers/wordpress/gps-tracker/public/assets/css/dark.css create mode 100644 servers/wordpress/gps-tracker/public/assets/css/index.php create mode 100644 servers/wordpress/gps-tracker/public/assets/css/light.css create mode 100644 servers/wordpress/gps-tracker/public/assets/css/public.css create mode 100644 servers/wordpress/gps-tracker/public/assets/images/ajax-loader.gif create mode 100644 servers/wordpress/gps-tracker/public/assets/images/ajaxloader.gif create mode 100644 servers/wordpress/gps-tracker/public/assets/images/ajaxloadersmall.gif create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassE.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassN.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassNE.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassNW.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassS.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassSE.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassSW.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/compassW.jpg create mode 100644 servers/wordpress/gps-tracker/public/assets/images/coolblue_small.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/coolgreen2_small.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/coolgreen_small.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/coolred_small.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/coolshadow_small.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/cooltransparent_small.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/gpstracker-man-blue.png create mode 100644 servers/wordpress/gps-tracker/public/assets/images/gpstracker-man.png create mode 100644 servers/wordpress/gps-tracker/public/assets/index.php create mode 100644 servers/wordpress/gps-tracker/public/assets/js/gpstracker-map.js create mode 100644 servers/wordpress/gps-tracker/public/assets/js/index.php create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/layers-2x.png create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/layers.png create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/marker-icon-2x.png create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/marker-icon.png create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/marker-shadow.png create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet-src.js create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.css create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.js create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/LICENSE create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/bing.js create mode 100644 servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/google.js create mode 100644 servers/wordpress/gps-tracker/public/class-gpstracker.php create mode 100644 servers/wordpress/gps-tracker/public/includes/class-gpstracker-ajax.php create mode 100644 servers/wordpress/gps-tracker/public/includes/class-gpstracker-endpoint.php create mode 100644 servers/wordpress/gps-tracker/public/includes/index.php create mode 100644 servers/wordpress/gps-tracker/readme.txt create mode 100644 servers/wordpress/gps-tracker/templates/shortcode-gpstracker-map.php create mode 100644 servers/wordpress/gps-tracker/uninstall.php diff --git a/servers/wordpress/README.md b/servers/wordpress/README.md new file mode 100644 index 00000000..2027b763 --- /dev/null +++ b/servers/wordpress/README.md @@ -0,0 +1,10 @@ +This is the wordpress plugin that I have in the Wordpress repository. You can see it here: + +https://wordpress.org/plugins/gps-tracker/ + +It is MIT/GPLv2 or later versioned. I am using a dual license because most of the plugins in the Wordpress repo are GPLv2, as is Wordpress itself. My open source software is MIT licensed so it just made sense to dual license it. + +Put the gps-tracker directory into your Plugins directory of your Wordpress installation and then activate the plugin. Go to the settings page to get the URL that you need to enter into your Android client. Here is the Android client in the Google Play store: + +https://play.google.com/store/apps/details?id=com.websmithing.wp.gpstracker + diff --git a/servers/wordpress/gps-tracker/admin/assets/css/admin.css b/servers/wordpress/gps-tracker/admin/assets/css/admin.css new file mode 100644 index 00000000..a5854ad0 --- /dev/null +++ b/servers/wordpress/gps-tracker/admin/assets/css/admin.css @@ -0,0 +1 @@ +/* This stylesheet is used to style the admin option form of the plugin. */ \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/admin/assets/css/index.php b/servers/wordpress/gps-tracker/admin/assets/css/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/admin/assets/css/index.php @@ -0,0 +1 @@ +QWjvT7KAaf^ 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 Y%7bL!(IX94cHVn>+84A6HSB`_53haJmjD0& literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/admin/assets/js/admin.js b/servers/wordpress/gps-tracker/admin/assets/js/admin.js new file mode 100644 index 00000000..3270ed5b --- /dev/null +++ b/servers/wordpress/gps-tracker/admin/assets/js/admin.js @@ -0,0 +1,10 @@ +(function ( $ ) { + "use strict"; + + $(function () { + + // Place your administration-specific JavaScript here + + }); + +}(jQuery)); \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/admin/assets/js/index.php b/servers/wordpress/gps-tracker/admin/assets/js/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/admin/assets/js/index.php @@ -0,0 +1 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +/** + * Gps_Tracker_Admin Class + * + * @since 1.0.0 + */ +class Gps_Tracker_Admin { + + /** + * Instance of this class. + * + * @since 1.0.0 + * + * @var object + */ + protected static $instance = null; + + /** + * Slug of the plugin screen. + * + * @since 1.0.0 + * + * @var string + */ + protected $plugin_screen_hook_suffix = null; + + /** + * Initialize the plugin by loading admin scripts & styles and adding a + * settings page and menu. + * + * @since 1.0.0 + */ + private function __construct() { + /* + * Call $plugin_slug from public plugin class. + */ + $plugin = Gps_Tracker::get_instance(); + $this->plugin_slug = $plugin->get_plugin_slug(); + + // Load admin style sheet. + add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_styles' ) ); + + // Add the options page and menu item. + add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) ); + + // Add an action link pointing to the options page. + $plugin_basename = plugin_basename( plugin_dir_path( realpath( dirname( __FILE__ ) ) ) . $this->plugin_slug . '.php' ); + + add_filter( 'plugin_action_links_' . $plugin_basename, array( $this, 'add_action_links' ) ); + } + + /** + * Return an instance of this class. + * + * @since 1.0.0 + * + * @return object A single instance of this class. + */ + public static function get_instance() { + + // If the single instance hasn't been set, set it now. + if ( null == self::$instance ) { + self::$instance = new self; + } + + return self::$instance; + } + + /** + * Register and enqueue admin-specific style sheet. + * + * @since 1.0.0 + * + * @return null Return early if no settings page is registered. + */ + public function enqueue_admin_styles() { + + if ( ! isset( $this->plugin_screen_hook_suffix ) ) { + return; + } + + $screen = get_current_screen(); + if ( $this->plugin_screen_hook_suffix == $screen->id ) { + wp_enqueue_style( $this->plugin_slug .'-admin-styles', plugins_url( 'assets/css/admin.css', __FILE__ ), array(), Gps_Tracker::VERSION ); + } + + } + + /** + * Register the administration menu for this plugin into the WordPress Dashboard menu. + * + * @since 1.0.0 + */ + public function add_plugin_admin_menu() { + $this->plugin_screen_hook_suffix = add_menu_page( + __( 'Gps Tracker', $this->plugin_slug ), + __( 'Gps Tracker', $this->plugin_slug ), + 'manage_options', + $this->plugin_slug, + array( $this, 'display_plugin_admin_page' ), + plugins_url('assets/images/satellite.png', __FILE__) + ); + } + + /** + * Render the settings page for this plugin. + * + * @since 1.0.0 + */ + public function display_plugin_admin_page() { + include_once( 'views/admin.php' ); + } + + /** + * Add settings action link to the plugins page. + * + * @since 1.0.0 + */ + public function add_action_links( $links ) { + + return array_merge( + array( + 'settings' => '' . __( 'Settings', $this->plugin_slug ) . '' + ), + $links + ); + } +} diff --git a/servers/wordpress/gps-tracker/admin/includes/index.php b/servers/wordpress/gps-tracker/admin/includes/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/admin/includes/index.php @@ -0,0 +1 @@ + +

Gps Tracker Settings

+
+

To use this plugin, add this shortcode to any page or post:

+

[gps_tracker]

+

Download the Android app from the Google play store using your Android cell phone

+ +

and enter your user name and this url in the download website text box: +

+ +
+ \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/assets/banner-1544x500.png b/servers/wordpress/gps-tracker/assets/banner-1544x500.png new file mode 100644 index 0000000000000000000000000000000000000000..95da7f6b74428f56b261342c94c795f6d391ae70 GIT binary patch literal 34783 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 ZZ95xBP3Iy3afVP(vLBT`R7e;H{~xjh#$W&d literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/assets/banner-772x250.png b/servers/wordpress/gps-tracker/assets/banner-772x250.png new file mode 100644 index 0000000000000000000000000000000000000000..e02e849f31cead2f3b39e5162caca1bbeac8c42a GIT binary patch literal 34778 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 literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/assets/index.php b/servers/wordpress/gps-tracker/assets/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/assets/index.php @@ -0,0 +1 @@ +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
6Yt|@Ld-dw!as% zBbWeNdOil`A7;_~aBP|SOtdVWj=|OAFqzP{W=}+8ItRwES$#z_B~R5(SVn-jNVG!x zi#*a{9(Ym8SYte{jeRASM!rzuIOV%Oa1@h0Fsa+`j%E&Z1WZ5^%m`)*z+DzvFlYWG z8M0bt$p&cRira=3om+>*=a>|k>-W{QiWhfkY;UWd-3$}!R=GLq^`r@gWR-2?+LOPC z(PmB`SB#x|(%62ta;{%tvY0%N$uuE-j{{p@yl*lzUv2~?N1K@%}|#v)7A6{Yvm zw*_{Y95dF%&^TtimkCs&*A27dNnq{v4Y6gsXU{I^#}0O;FoMol@8P|9RNrT2)gSXN z*>fR{@FC>AknVC6NO+!-0E5W&| zZ0q~IZ7F$a_C^(h>U&k7Qu0gR7*~bH`zr2gTwi5~ZZ<)^H5=(FOi7IZ5~*|BjLF-{ zSsk$o5MHZo!sZqSc`60Q#EWbzbVm08eri#~o;Zt( zw*9Y*i!du9SE80<%)CWvR=5r*&2h{uqiT3Na;N+PcXJxZBo?;(-cGTeL34*0{*Z2u64n8&=R(;ZyxAtGchQ6`ZV1 z6}Nfy3u{vkVk(u%6&TU&NK)4@RUk}L2eF>4w7B}nYeOFO=p;-G63faIz^@(UxJibrjT_F^s*`Gal^= z18kp;V`gL#n`AqZ!E$xF3MEo+vVUMOPb)wB#6z)r-!-Aho3W9z5S%lqpXqjlW?)q6 ztybo#Mu3U}%W}%9Gk}foC4bu^OjF_kOqJcVE%nBZ?FY&KOdK2gQZx-vcf2|Xr)8RJSY`}aOSV2-d_dtm|Q!rjVXT3@xEANE4pXt zRBTyB#b)};aZT-W(LD9FXjwcTtt?R5*iLT4R8C3}nPdyC1P8dPv4kHrCKq932 zykl~O9e~w~4`Nd1fmnIsL$TV0uHxVgNEL65=523;2R%aiL1;3Iwb~rMo%>VbG&+m) zlT+e-og7TdlevtBI!&n-Ek$*uj!V^8NCa{mA?U_TZ4@G3C z7K7S8#L61}-xpZaQffmTq)9dCVys|C_Szq23wS)Hzxu%#(g!o`=s?wBpl4UiKJs^? zZ7T*8h2f?26Z4+u(ThgxeBv14JS@Zhs7fWCsjYIk|Zt814!^MG%y7-;#z05 zc(8>H`F|^#@Qvni)tJKqOo&Xq!B?uNXj&oNmELc}0n9}5CS1B<5=Qe5v+a9haq8LV z*#YTdpbZXUWctDk`sSB}+0g{>;-=OAeAc zQL3^wPUP~M|MK1eWgT+Z_;qQwgUJ^Vd!=bIhOKxpF<6EOT()KLN`Nk?WvVY&?q%Z2 zYSoEBSmbxc!OcpzbVsHnau$1puGTd>q>jt;&pZLcHpzDLk=WL@A1@yx)PX!;5S578 zhn+C2TiOn$uF1vKlQGqPh7;tY(HXr+9B~%kzK2uI9wcIwNYJCj#q-Bm@sH;=b1zKe zIdl;vh?=Nzq2VIL6`Or%-{*l0+H6}5UXwwhE#BLvayl8v(fzrg;mz30X%yEnY+8fy zwe5CTeqb(_1z*X`!7#OvNvRF zWgy;eN&BsBG9+$rl_7L{-c_k~>MGL-m6||-f$55&Ul&b&>j59JBkSX{6J^5F!&68n zRl2NTXMukZt|A1SHtA#FUxI9s%$$rCQaZMTwLh7-$ea1LeeAOAL%R3Q*t_>Uy1k>Z zd=V+&7zUdsALpRUQ%LO3f#WbKeAk9Ft_}BcElOk%U@7tqg=bdpKj3Z0Qlngy|aX({vDvk_Jz|0}RBUjDF%+Hmb z2yxEI)bVJ1jd7FsntD1G zIj!8562rrAZZp&Yd%L*&+<*ASY|q&f&*s9mn!IgZ&J|tFxKf-;99Oz&og4#YoC$A= zORl9r#M8%~5Z<|SdmK2hmy^g?Rv?*kkBhTHiyZgmml@Rm7-!g^N3^4gtHyCPPV1lK z`+P_7rmfNmgA}Gf2c!)xbrVRfEWoAl26u!?{uTaIxn6p;TAK_a-!*k%4o=mVlCCPZ zTuF>Mpw=6HB34H}AG0H0iUD+2^+eOfB4GvR6AO?0T=cy8Ung@ov~4%1!?(dGP31v6 zVe8_4aG)2HQh3ywnTx@GRK19+Eul6BO%>9%Gr`3}bzcMxm)8AT`jqs$DzCu0l)c%P z_K!OGbDVn56Yf+}X3=@bICV_Z-Y&QxjrH)MedV0#Ze}_hs8?DB()|6I?`sjR8gppJ z3y?KdY&KkEve7a>YXt+7aS<4X3NVe=3K26+0*#UOZv|Y;p=)_yVDe60)w)r|bSOs(XZ{PlF;^_6S&#jea z4Db$i?7?6#K4&>#p{pnqni%vgD8KI}J62vDC{kl^b$JbM9O$yl*2a?%j4VHccb#3R z4r~Kn93V-?uahn2>0Ev8M2e`3CiM{Yw&K>Z%+3P!Q=%!(x$Ps|5`V0J;t=iUU4;wc zg{Z+P5(pYc<_Jqmm=M9+fZsLZO}=dSlaMq|{CLw`egLEs(&l~ zORzTxK>d3sXoG*P4z;SPX!Io^-;rKIWV;(B@YR@6LT@=5npdi7eCjumZ%Rt+O94fSW98PK3{q|_y^IaH%$BWAf#*XKnkF}A95d1t6%P>_nytvTANS)li zRJthhgSjOO$fBSZY#nC-MESlQ$zpEz62HpU^2+(o;4}J@vGznaZs!K$jXQ2<8~XLJ z*n3+%w|-}Q;ryYvW6vb-)}Vj*YF}l%FfMYwpyKjgYm8aVsAvwQ2?O9Y^nT;aZ^ioa zzs|uLc3#kXlyTH+hShSbd}#$=#<(F|-SzF!cKgpE@;aQ1p>%R~n!|1AEju2Lb85D$ zn?pP-9;K0q>*V2hbeBr~KAS6pBpi!%0ml+LgG>_Y-U*D`Z@)eMG~0yj7dBD38s(Y{1ef93^xmNWxZFQgdP=uJUh=(Q*hq$13yn+~+tqZ>* zl_<}RW%<2%U0NUJ5a$c}zoTtF`{j~vGMoB0GUvDc-B|e4d!iG(YR|22cKO)uUq1Ug z(R}8=V<7wOaq--Vw0ro%(|BG1-c^|{VuuI&VjP3mTl$zI=(CmCb9mP(^Il0uU4X0V zNwwMxJwV%D%}@tZ1!Ie(aZZv^ zG|s&IEnrmxaPtndCH-p=t{QWwj+?8eqT6Mw%j!j5&Q*-ap{bi{J3#;`>6r(h9`Wz# zD=QxJ@MwPS&m;X(p?`Pnniy%m5TmX8qksBXbPZ!%8oimmzKNJP{^{6%+xwCbG=p@C zdu6DsK(+PIj1Ji8S)@V^;`$_>D{=;yD@F-J2{Mh#w!S*hp}2N0x{gqKerT2YrIB7E|j;6Pw03$kP|yt6MOy(ZlJsK@M6V?LF}{W+L!)yZd1D za1w3=|IBXF_^m55F5n)ub$izlXN~La&nNx}&-{Q6R86Y08+ZZtPCk=;pq|B-Gb>2^8}p zA}d+H_q#s`R}}&Y{_Gh0#tyQ7y&&~sA=cM{xvW;Dz|arPfhi4SG2H}X7lU_1Z5U=s zb45(XE2EEMU-5}py7*P3J11ct&m-kWXINcD7{)y4;$au83lvHqo=R^l6r6@BXlJ|H zck3K>@leOgv3q0X+5gI7t3Ter_&U}4=9r(lKHAv{s5PO^)4_sFztiNOLIh4jcPz5Q zGIu6cC%+ak_E5Co)ufI5I@v1LD@W2cC8fD5fc`e_@aC<;&3`M}uK%%=6gE+BcQa%R zx9@^RpyzfHW6Yi;R+8={Ug7`7n91=$Mvgsz=zQb?v#YZ`&QG_-bEDmH+aBz-vNO09 zCj#I5J?}`#kPE)*V4MTO@!|J699VY_6h2o7=D$!Mlb63X7v1hvlE2H}U-E2+`=cD) z)pl`!Nr}}=N=>2t1nXnF8tFm4sQ+oC4c1rMDf7Zj(y#jGnYzlWlnKp+fp0=$+;aV2 zh`F!)T(k{bM>^HFfE|m6*~kCy==sBMM}K@YnL`iA%;TC<2FZSKx5_Q$akiGHr?K9E z?&12(DWu`{5z7^-AtUc0)sAjYm7fDTg+FL)!_~TPgq2d_UT|46eZ^Xb)+5|~V=hOk zC?90q*X|<6MnkGL$V=Y*HO41?>ZdA(B1 zlcyi#^wWD{2&?xVOzG*_Bm{Pjo#9rDx-Tc^hGKS^11)LEpCQeh2U#lvjZSJ#=7M^2 z4-a!iMuAt3x$IOwMOPQZYiIg0cRdxqHFl9*K1 zNQW?abMDl0=_*mXhq)zHZ)2%D`85znc${pzog*{eTvJlfi*$`X z!1Z5Y@HQH47MBM4)|S}$GJ9Q7q>dS7zbDt1y}_27l3V#L(jn+;Y@^b?MbH~wYb^~6c=(Uq!*TlLMx)h}!h^>nPwahPbPn=SSx6vb;E z?h$`2z4YN`9j;WP&9}c_?(9PYp#5J9=2OpWBcsbfdWAF@b=h|%E_=G36*1tR@h(dB z#N@)1l}`4Z3*+o>CtjFBL^LdJP#92(x8;VYaSAmKvA9NBygD}$HT=;pj6RMXvQy~r zj$l&f3|Zku0EV$WC5x(YV4lT8DU?u*9Lrd!YtB#RkCODFu?&6NU;9X`T*T@Gl6tpb zYvi#`S`QdxozX39qD~z!v8_n0+{$k4#M~A4GNK-oanoBgf^SSQvEM zuJmvS>ES30;(qMgb}XL+?$+5I9EByofwKk>C#ojC7fSRBpm|kZU*4C(OLJr%YN~-V zsh(t?Q+ip5FsFkXrc2(Xjt{n5VVKfIna0E&+AN%3i*VJLLmS@sv#~Gr>^oNwPUr&E zfj5Y$fU;dtAXR-U)6&w()(82|tzeg{^#HcNPDbCbTa>!18HtJW&&N*8t6ap!l9OEO zV~{=(S;9${uiu7fySXb)G2nHdx5_G8iDBwU^4@x+q^W*iB8V*Ggqsq4l=dQ^%By*M zpXrEC{S6}J6*eT2^|Xwucy@BY9Zjs$V`~c?7CmIBC#HzH1wW~sn3Iq>oJVIy7-*`; z)ubnNJr%gJfNtf|Sh8{s`drCpS+pC%Yh2M8tXH^xAxScCN@j)qDxz@*oCDUaltpyR zI@l)75!%prO}eab!dV@kPF6-=dH74%m)ss_PM?nZKl{mK{uQ$yz5a%H^S6CxoQ`Rv zvr7;xwkzeFX@mWM(ITW$XJe*mgp-!rvB9eZj!FTG(oYWlIx)-EQD3&orq?f^lQkHO4M#@ut`abVjU(r%e2;l{DduZax}c$=TWyo8^tVe`+TvM$yM;RO?1XQvE0 zry$X7MUGK@Sgx1>#<#P)T3BBQpy%KZjYSx;{=OS7-De4ds5sy-kwNkR?LP|~*% zte>m)vgqH4ZoHxDr5&bi_?gCM+hlo-?=F9Cd`H6kMgpcS#%0W4G(oUUvoyFoO|cq^Sse8@->@;_-A{2W4v zdA4XZaO`wd;XsvCl^lz1a*GxQu14RBcWW?v%>#!qUvq7=?EgMfMAQ7)Sc4gBV*7T9 z9h-S3{boG5v}lJB$zBTwU0OMOrUX&E_8+4<>5r#byE&*)<0ziNGIQIKF|EE)TS%Ufd@0pPufAdP*s@+A6styo6&LIkFj`ZiPfnyFpthVNMC5j(AM41 zrXB1uJOiyO-cMdiVkn*`Y{*|TS1#Th3zqFR=lpU@?C66b>{!Fw3S0KjJ{M6==vr8q zo5qeV44I4K3dUt?x6Ff7IfL&EUh`kWbH1qF`JSIR_evr2B%zC6Ht5TD&T~BRrv&m* z?IvBx(l*;`s9t+hU_)HJO*9V%9GVH2X1dGkQo$@4Hs+$5jQlMhh^5c|Z_&xYCne1G zSa%1~!)HGn-TVJI-prJ|L#2lUN)IRJVruMs3@nd;3#b)PviQ9Q zJzvL=Ih{g9Dms)+c+LJ47#27R8zrF%N@V!l*^@!fll!#7RMjHEIW}o5^Q6q90<&Zc zNuv-21+CYlO;?RM6mX3{TPpyoxbj@mcrRjBCx2Y^4Q|~L=XLLfu19_YvirSQ>HyHP zdIv}{-hFMSN9Rbc?%a94z5nHsN%pJ+kV}BF^9(&w>&yIZQX=ff!vm{ ztSraD1PN6^-0hmGlD=yQ!X`})0efxY*}i$UV-}m(#^z<4cO!R8gVhs0g zjVGUcIR5p&{KfdofAs^bmU`of$G;YD|IY7@vu94l7asU*+;h)&VXto%=9|r8`m5B< zfsOIl)_rU(kJArxvC4LGtwm{_q@)D|dG^eM zv1|HB>^*!PFzn9>VVPB2JNCW|No11P+L1il7r<6Y3M4aHS1{)Ro-B-_T#W9cer*$O znfl6qd@sM-zRrOrm}WgmSe5HCK*IHsXNF$TH!coRnDjZX;wpt1mZVFS)V) z5|r#e7<>-|tb@}AwR$@e#^-u;UJ8mJOCqm%PJj2nz^=J!akQ4Te!e_sMASwIQ2Jxk>;bWK4)vy|N_6X4zV+Kp^aw zG)DsiyMn}Uwd-Ik-}rYhsdHDXVy{pgLdUv0F!~|xV4>$C`oh^0(9Jn^T=2ULZdc>X z{2K8&@9S~uM7#LbRMZOFh0R*tpw2scQIi2K&QL`BlqN*eyHX9BYTZKW3i)4fF>O=K`Re!zrFDZyEV)v<$vI zO$cq>c>qRnB+GH9$#V2LJ;b4&38aht;8FS)ulI?IhbC0Vl!h1V*{s8Bc_&T_tAt?o zr3;3&VqT0frax9|QlPXH%XQsMhHwP*9^=k*Jk8N89=rYnfJh>=D zGR$H4xdX$`{R6l+Lc-O@iQP30dbF;gT#o4i%aD}k)(#AIbDO#+JR<=D>;#DwFoPlK zM|7V$j;vaQlZK_y1jkO+c&v6TK=^^9nU&bli+2ljEG0Hma~G50-_pAsJ+gj}zeHCbhn3iRs&O*B zoox&4Od8x8Z?R8d*sY5BX}dBP9O#Dj_T$%;KG7VJ-Xyd+rb(PG^m&#b@XWsW_r$ai zi<9p5Hz1|&h*QjqyD^zI+|O8+kF5hpm9vYuqnyXk{k|b!!3q2|qzxBm(0>9)`nn;I zpb{vULven-s8jTHF;NjWzi40JUXYWb)^%xVJma^tgvNU!t-qn7 zLHTf{KPD4))%O()FH7s|D#^wx)4r$@4r(*>TEVKZ5SRm2x4rG9f7e!ob)mU@uo0^I zFJo4VbIYX3!VhM*JO!T|%B$ZQ+g*+iv=>(Y1_#5EW}w~v>2*RuO9(SPlG zV|~{jhDqH8Bj#?82V;&{nVf5s+|04d;<%b;Tv#c0VKj`N70i^E{;~azW812IR6S`G zuUhCH6X(R;#{96WSH})ToG%lV-|;@L&NUU7>e;JyK6B z#l^c!Z+>PSiTiqkX-!^9q|9E`f;EH*>PR~ev||mTF=Rc7kXf^&(iinI8|&Bjk@xj_ zxwv0n#k}0>|7NUS_yVv*U%Uec2b3lIzi|2!(Y^bR#Ps-ibPo@tiq!nfL^>`Is@AoK z-LskV9+u)j3I@!b(VJ>$#j+@vYe8~I&Gas%@S{}%k^trMEe;7U0YIqWa`}C}q(0(= z%&l{bQot^BBmKsostMLnUGr9OM7$APZaurO7hkiln5T1R&GyvGE%{%)zgLYp>_vA_ z$%rOY6tx?)N9PL5)s=vAYpnvj0CKQ6Np*9`;>2?(5BD%(u@%uIqe5`{RVtz`)I7+- zu*ZA|r)5{hz-V-9_#QXbnfB%WNc&pxsr<~?K#XIQdKA+v8un~Mf|!Ky0%AVw-U&vSyQ4F*r6-RiTO{WWwydG!LZx~VYjN*({K4-s+JX}4ls2bblK5*7$3RoxT`9I z&19qJPa@i%W|47_C-JHn_FhIh?8-UwBeRqovaROa+6ug6OqYa~YKljzF-QI(*OJ;EiTswW{sp#0+iG4~A3sBbN`3npy{hscN zp$SyF`Z;koKN7PO=V*74nrzu|UF_SceMb&3VViRLA}St32jb9HVHn`-NGwdBgN5PL zER60D#?t#(<4ulF@WUwmw*9$S96xtl5a5UPK+NLrcw|~VqzZ~u^)(C*4MWwdjkOX^ z{=}=45Y+F>7v(QtNIXfpkPr2@-jiAV;_b%0DU7d@SLJLngQlozQZgxN9mAX7`qZvu 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

x$-Q01TESds9GlYc}< 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�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

rMyh@xcpy2G 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 Sl_B;D_!H(A=PTyX`0;;szSZ^s literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/assets/screenshot-2.png b/servers/wordpress/gps-tracker/assets/screenshot-2.png new file mode 100644 index 0000000000000000000000000000000000000000..43b46f709aedc629d3127eddaa98e7781cdf6034 GIT binary patch literal 105143 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%0DZ}mEuk1aC(jo8+ujYGzl4u6up zYhEm%1n5Cbg^{TjJ{mI4N|h*(xXsQc9u1j-;orMWiF;o8vY4Uhj(+?hq@rDdXk^-6 zL7%UYXSHoqa?3~!qM5$7xFt?(dpu*X(TqJ4T7c+nYExicWta{)J$WNH4E59?bw3x< zN;$qBHq^uDO~-5214x;;WeyAmLyeHUl!5oPNtJTKkJ5GKqo2>AXObIye2pkkWIct3fecvE0d)s~D3GkM`EFZv1B*l1|SzgE@p4O8F+4OhAQRtA}N*{(Q^VMnvY|K&;1*ZG_unr1G5 z$Lik8#?5zp7SD4Qtp*}+p<0a&Qy{ZZ`ldNrIjf$`>@`HQUzb?GW1fqVzePW9+=?u3 zP@pZ=MN6tN81O4*uC6JX>N%u+lpCLhht=lFWnJ)26!+ma?Y`|6L*q`1ZO|0?zE8th zqqb|W3+gs49^KV)GvOm}hmTVNtV*J(N#5_WX4R>+MX9+bu&-z;iVAnm{2K@>P8-m_ z8|?V4$g%q{Zk~X<$a#j)+Ln0PwjuE^!qlRKi5p3;0<4%8XqCqnc`zE5v_-v@{XX1PEqEc2Kni=EpKin%Ndn`a(;QA(nCL+;R3R1p7LL^m-m6|8iIhQm`NW z=BNis&q27t8`}9=Sl*_P9-ofS2Gdz8z|=4kbn4$4v%1#=>Lh>Y6~M=zOG@fhZj#zr zA?N(UH^mwA&j&jN9dnq($QR?wGj@uodDaE6g{P_+7ZdB`Tyk60PhMYR^wWUz)o#1e z&lT@7BBgh3+>ZP{(>a^58c;sa)!tM0=$U|YA|THJja!hJGR+!4ECV}A6H|A@-fCb4 z8-z>i7*Da-3+tMmSsi|Xe{EABdfFUS{ZLo*V4txUZJV`iU@b0gUiz@Rz3EF~Sm%AERfq2%jZ^J=;QG($)B-OPeR-%!VfIpeb|P)~<;CI) z1iNO!2EdI{;(t=xKOjPgzE6SkRKz8ZewBu4k(8bp0~YBGtPl~Roj zZ-gN27b>X3!=I0+TIYB=$m}tgzBL%p#Cjk||{)>wL0RhfoK=fhLTg!o^ZO7T$ zPkX*Cyuh@&fmeu-7A;_RBHIJotgAP6JT`dIp;T`2r>J3Z+7JO7Asn_hMcV7*F*;N` z8byDV_&j*)*yEu9*@A7u1D-?BbEbs~0~1fna7d$e@My5L5ZUcW5jTgWs{-vS^fVyA z>aq~Txv^m3p-F~7fP+M=j7=fRE@FN@=SL=X?t$sP^ZP;2BcWV`YrRaWPQ?bh2SH+j022lbry2!D(Xu<8h)%85QYq^&m9`1SbuJttAcjf*+N19aLzUMSSF``nQ^ z2dDKjh(eVwzJpT~JbnZ0B&^SP2$-jk?id_qIDbxOiGjZi(hEmPYavt0kr}C4a;R&k z)PnyqSx|RZWE|YT$T+YT;t=jwvlbG#agTIkK-|Aq;W-=aEMra=Z}LogA@ioh@wOgV z`T^2uIcQPJL{`@pk8)Du7O%4izca>+a(T-#g1O{kfYo?dUZ`z-%W#W!--E!1XDnTBI!gKj@`kmTr8JyR?wMI1`R2|Bf$GGq$XXvl zmy2-CsBMhWfi;*{ubYq2JrOOFaM)0|_jjklgdJcYY`LYcPjYX)|HtHU2+_%9@CEHpf=E(@dl(*HYDy9+z6mY-;G#ykq0*YgNRa*R}YFRyHrtzGZnVn#Axmp|Jwj_y%z6glB&B&cl z?{F57sld+8#C~tl`BCA0KmgzUrn*~gwzckf{>kU-U`w@59SelipgjhDyHQ7wGcT$F zg)AyaTLUp`Js0*=n20z=XWzy^TaVM`&#V#!&HD$6cWVriyPU>X;U)}+WxMN z!Fmkx{4;|doxUyCp2e0-_056As3W2A(^PZHqtK z`8|f7@6>g{JNy|K!zwU_pEJgy$vi`w*-26J{_0lr0sF(oN)f-)tEWNqR$lMF@bz-6o9VP7@f8gcrn~lG3cXI z9LN}4ZEJg+gMT6T=ke%=&kzW)`^T!XHsKTueP_ZR#Rdkf0iL)75bB6ugnAYj(�Z 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

N20^y{A3a^ie%V?_2+TlkR7KROd+v=1{ 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%0D8`z;&>4d_8a7(ZQSXNVUJ-4#Z-<9zuJF&*V$$l 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 RF+QMiuD7roNU8mePPa1Du%OLrsHjM)v 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 Aj{pDw literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/gpstracker.php b/servers/wordpress/gps-tracker/gpstracker.php new file mode 100644 index 00000000..4d714bff --- /dev/null +++ b/servers/wordpress/gps-tracker/gpstracker.php @@ -0,0 +1,62 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + * + * @wordpress-plugin + * Plugin Name: Gps Tracker + * Plugin URI: https://www.websmithing.com/gps-tracker + * Description: Track Android cell phones in real time and store routes for later viewing. + * Version: 1.0.3 + * Author: Nick Fox + * Author URI: https://www.websmithing.com/hire-me + * Text Domain: gpstracker + * License: MIT/GPLv2 or later + * License URI: https://opensource.org/licenses/MIT, http://www.gnu.org/licenses/gpl-2.0.html + * Domain Path: /languages + * GitHub Plugin URI: https://github.com/nickfox/GpsTracker-Wordpress-Plugin + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +// Plugin version +if ( ! defined( 'GPSTRACKER_VERSION' ) ) { + define( 'GPSTRACKER_VERSION', '1.0.3' ); +} + +// Plugin Folder Path +if ( ! defined( 'GPSTRACKER_PLUGIN_DIR' ) ) { + define( 'GPSTRACKER_PLUGIN_DIR', plugin_dir_path( __FILE__ ) ); +} + +// Plugin Folder URL +if ( ! defined( 'GPSTRACKER_PLUGIN_URL' ) ) { + define( 'GPSTRACKER_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); +} + +// Public facing functionality + +require_once( GPSTRACKER_PLUGIN_DIR . 'public/class-gpstracker.php' ); + +// Register hooks that are fired when the plugin is activated or deactivated. +// When the plugin is deleted, the uninstall.php file is loaded. + +require_once GPSTRACKER_PLUGIN_DIR . 'includes/class-gpstracker-setup.php'; + +register_activation_hook( __FILE__, array( 'Gps_Tracker_Setup', 'activate' ) ); +register_deactivation_hook( __FILE__, array( 'Gps_Tracker_Setup', 'deactivate' ) ); + +add_action( 'plugins_loaded', array( 'Gps_Tracker', 'get_instance' ) ); + +// Admin and dashboard functionality + +if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) { + require_once( GPSTRACKER_PLUGIN_DIR . 'admin/class-gpstracker-admin.php' ); + add_action( 'plugins_loaded', array( 'Gps_Tracker_Admin', 'get_instance' ) ); +} diff --git a/servers/wordpress/gps-tracker/includes/class-gpstracker-gamajo-template-loader.php b/servers/wordpress/gps-tracker/includes/class-gpstracker-gamajo-template-loader.php new file mode 100644 index 00000000..914d292c --- /dev/null +++ b/servers/wordpress/gps-tracker/includes/class-gpstracker-gamajo-template-loader.php @@ -0,0 +1,208 @@ +get_template_file_names( $slug, $name ); + + // Return the part that is found + return $this->locate_template( $templates, $load, false ); + } + + /** + * Given a slug and optional name, create the file names of templates. + * + * @since 1.0.0 + * + * @param string $slug + * @param string $name + * + * @return array + */ + protected function get_template_file_names( $slug, $name ) { + if ( isset( $name ) ) { + $templates[] = $slug . '-' . $name . '.php'; + } + $templates[] = $slug . '.php'; + + /** + * Allow template choices to be filtered. + * + * The resulting array should be in the order of most specific first, to least specific last. + * e.g. 0 => recipe-instructions.php, 1 => recipe.php + * + * @since 1.0.0 + * + * @param array $templates Names of template files that should be looked for, for given slug and name. + * @param string $slug Template slug. + * @param string $name Template name. + */ + return apply_filters( $this->filter_prefix . '_get_template_part', $templates, $slug, $name ); + } + + /** + * Retrieve the name of the highest priority template file that exists. + * + * Searches in the STYLESHEETPATH before TEMPLATEPATH so that themes which + * inherit from a parent theme can just overload one file. If the template is + * not found in either of those, it looks in the theme-compat folder last. + * + * @since 1.0.0 + * + * @uses GpsTracker_Gamajo_Tech_Loader::get_template_paths() Return a list of paths to check for template locations. + * + * @param string|array $template_names Template file(s) to search for, in order. + * @param bool $load If true the template file will be loaded if it is found. + * @param bool $require_once Whether to require_once or require. Default true. + * Has no effect if $load is false. + * + * @return string The template filename if one is located. + */ + protected function locate_template( $template_names, $load = false, $require_once = true ) { + // No file found yet + $located = false; + + // Remove empty entries + $template_names = array_filter( (array) $template_names ); + // Try to find a template file + foreach ( $template_names as $template_name ) { + // Trim off any slashes from the template name + $template_name = ltrim( $template_name, '/' ); + + // Try locating this template file by looping through the template paths + foreach ( $this->get_template_paths() as $template_path ) { + if ( file_exists( $template_path . $template_name ) ) { + $located = $template_path . $template_name; + break; + } + } + } + + if ( $load && $located ) { + load_template( $located, $require_once ); + } + + return $located; + } + + /** + * Return a list of paths to check for template locations. + * + * Default is to check in a child theme (if relevant) before a parent theme, so that themes which inherit from a + * parent theme can just overload one file. If the template is not found in either of those, it looks in the + * theme-compat folder last. + * + * @since 1.0.0 + * + * @return mixed|void + */ + protected function get_template_paths() { + $theme_directory = trailingslashit( $this->theme_template_directory ); + + $file_paths = array( + 10 => trailingslashit( get_template_directory() ) . $theme_directory, + 100 => $this->get_templates_dir() + ); + + // Only add this conditionally, so non-child themes don't redundantly check active theme twice. + if ( is_child_theme() ) { + $file_paths[1] = trailingslashit( get_stylesheet_directory() ) . $theme_directory; + } + + /** + * Allow ordered list of template paths to be amended. + * + * @since 1.0.0 + * + * @param array $var Default is directory in child theme at index 1, parent theme at 10, and plugin at 100. + */ + $file_paths = apply_filters( $this->filter_prefix . '_template_paths', $file_paths ); + + // sort the file paths based on priority + ksort( $file_paths, SORT_NUMERIC ); + + return array_map( 'trailingslashit', $file_paths ); + } + + /** + * Return the path to the templates directory in this plugin. + * + * May be overridden in subclass. + * + * @since 1.0.0 + * + * @return string + */ + protected function get_templates_dir() { + return $this->plugin_directory . 'templates'; + } + +} diff --git a/servers/wordpress/gps-tracker/includes/class-gpstracker-setup.php b/servers/wordpress/gps-tracker/includes/class-gpstracker-setup.php new file mode 100644 index 00000000..386b4f78 --- /dev/null +++ b/servers/wordpress/gps-tracker/includes/class-gpstracker-setup.php @@ -0,0 +1,242 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +/** + * Gps_Tracker_Setup Class + * + * @since 1.0.0 + */ +class Gps_Tracker_Setup +{ + /** + * Fired when the plugin is activated. Create table for Gps Tracker and two stored procedures. + * One to get all the routes for display in the drop down box and the other to get a single + * route in geojson format to create the map and populate the markers. + * + * @since 1.0.0 + * @global $wpdb + * @global $charset_collate + * @return void + */ + public static function activate() + { + // clear the permalinks© + flush_rewrite_rules(); + + if ( ! current_user_can( 'activate_plugins' ) ) + return; + $plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; + check_admin_referer( "activate-plugin_{$plugin}" ); + + global $wpdb; + global $charset_collate; + require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); + $table_name = $wpdb->prefix . 'gps_locations'; + + $sql = "DROP TABLE IF EXISTS {$table_name}; + CREATE TABLE {$table_name} ( + gps_location_id int(10) unsigned NOT NULL AUTO_INCREMENT, + last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + latitude decimal(10,7) NOT NULL DEFAULT '0.0000000', + longitude decimal(10,7) NOT NULL DEFAULT '0.0000000', + user_name varchar(50) NOT NULL DEFAULT '', + phone_number varchar(50) NOT NULL DEFAULT '', + session_id varchar(50) NOT NULL DEFAULT '', + speed int(10) unsigned NOT NULL DEFAULT '0', + direction int(10) unsigned NOT NULL DEFAULT '0', + distance decimal(10,1) NOT NULL DEFAULT '0.0', + gps_time timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', + location_method varchar(50) NOT NULL DEFAULT '', + accuracy int(10) unsigned NOT NULL DEFAULT '0', + extra_info varchar(255) NOT NULL DEFAULT '', + event_type varchar(50) NOT NULL DEFAULT '', + UNIQUE KEY (gps_location_id), + KEY session_id_index (session_id), + KEY user_name_index (user_name) + ) $charset_collate;"; + + dbDelta($sql); + + $location_row_count = $wpdb->get_var( "SELECT COUNT(*) FROM {$table_name};" ); + + if ( 0 == $location_row_count ) { + $sql = "INSERT INTO {$table_name} VALUES (1,'2007-01-03 11:37:00',47.627327,-122.325691,'wordpressUser3','3BA21D90-3F90-407F-BAAE-800B04B1F5EB','8BA21D90-3F90-407F-BAAE-800B04B1F5EB',0,0,0.0,'2007-01-03 11:37:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + $sql = "INSERT INTO {$table_name} VALUES (2,'2007-01-03 11:38:00',47.607258, -122.330077,'wordpressUser3','3BA21D90-3F90-407F-BAAE-800B04B1F5EB','8BA21D90-3F90-407F-BAAE-800B04B1F5EB',0,0,0.0,'2007-01-03 11:38:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + $sql = "INSERT INTO {$table_name} VALUES (3,'2007-01-03 11:39:00',47.601703, -122.324670,'wordpressUser3','3BA21D90-3F90-407F-BAAE-800B04B1F5EB','8BA21D90-3F90-407F-BAAE-800B04B1F5EB',0,0,0.0,'2007-01-03 11:39:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + + $sql = "INSERT INTO {$table_name} VALUES (4,'2007-01-03 11:40:00',47.593757, -122.195074,'wordpressUser2','2BA21D90-3F90-407F-BAAE-800B04B1F5EC','8BA21D90-3F90-407F-BAAE-800B04B1F5EC',0,0,0.0,'2007-01-03 11:40:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + $sql = "INSERT INTO {$table_name} VALUES (5,'2007-01-03 11:41:00',47.601397, -122.190353,'wordpressUser2','2BA21D90-3F90-407F-BAAE-800B04B1F5EC','8BA21D90-3F90-407F-BAAE-800B04B1F5EC',0,0,0.0,'2007-01-03 11:41:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + $sql = "INSERT INTO {$table_name} VALUES (6,'2007-01-03 11:42:00',47.610020, -122.190697,'wordpressUser2','2BA21D90-3F90-407F-BAAE-800B04B1F5EC','8BA21D90-3F90-407F-BAAE-800B04B1F5EC',0,0,0.0,'2007-01-03 11:42:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + + $sql = "INSERT INTO {$table_name} VALUES (7,'2007-01-03 11:43:00',47.636631, -122.214558,'wordpressUser1','1BA21D90-3F90-407F-BAAE-800B04B1F5ED','8BA21D90-3F90-407F-BAAE-800B04B1F5ED',0,0,0.0,'2007-01-03 11:43:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + $sql = "INSERT INTO {$table_name} VALUES (8,'2007-01-03 11:44:00',47.637961, -122.201769,'wordpressUser1','1BA21D90-3F90-407F-BAAE-800B04B1F5ED','8BA21D90-3F90-407F-BAAE-800B04B1F5ED',0,0,0.0,'2007-01-03 11:44:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + $sql = "INSERT INTO {$table_name} VALUES (9,'2007-01-03 11:45:00',47.642935, -122.209579,'wordpressUser1','1BA21D90-3F90-407F-BAAE-800B04B1F5ED','8BA21D90-3F90-407F-BAAE-800B04B1F5ED',0,0,0.0,'2007-01-03 11:45:00','na',137,'na','wordpress');"; + $wpdb->query($sql); + } + + $procedure_name = $wpdb->prefix . "get_routes"; + $wpdb->query( "DROP PROCEDURE IF EXISTS {$procedure_name};" ); + + $sql = "CREATE PROCEDURE {$procedure_name}() + BEGIN + CREATE TEMPORARY TABLE temp_routes ( + session_id VARCHAR(50), + user_name VARCHAR(50), + start_time DATETIME, + end_time DATETIME) + ENGINE = MEMORY; + + INSERT INTO temp_routes (session_id, user_name) + SELECT DISTINCT session_id, user_name + FROM {$table_name}; + + UPDATE temp_routes tr + SET start_time = (SELECT MIN(gps_time) FROM {$table_name} gl + WHERE gl.session_id = tr.session_id + AND gl.user_name = tr.user_name); + + UPDATE temp_routes tr + SET end_time = (SELECT MAX(gps_time) FROM {$table_name} gl + WHERE gl.session_id = tr.session_id + AND gl.user_name = tr.user_name); + + SELECT + CONCAT('{ \"session_id\": \"', CAST(session_id AS CHAR), '\", \"user_name\": \"', user_name, '\", \"times\": \"(', DATE_FORMAT(start_time, '%b %e %Y %h:%i%p'), ' - ', DATE_FORMAT(end_time, '%b %e %Y %h:%i%p'), ')\" }') json + FROM temp_routes + ORDER BY start_time DESC; + + DROP TABLE temp_routes; + END;"; + + $wpdb->query( $sql ); + // $wpdb->print_error(); + + $procedure_name = $wpdb->prefix . "get_geojson_route"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $sql = "CREATE PROCEDURE {$procedure_name}( + _session_id VARCHAR(50)) + BEGIN + SET @counter := 0; + SELECT + CONCAT('{\"type\": \"Feature\", \"id\": \"', CAST(session_id AS CHAR), '\", \"properties\": {\"speed\": ', CAST(speed AS CHAR), ', \"direction\": ', CAST(direction AS CHAR), ', \"distance\": ', CAST(distance AS CHAR), ', \"location_method\": \"', CAST(location_method AS CHAR), '\", \"gps_time\": \"', DATE_FORMAT(gps_time, '%b %e %Y %h:%i%p'), '\", \"user_name\": \"', CAST(user_name AS CHAR), '\", \"phone_number\": \"', CAST(phone_number AS CHAR), '\", \"accuracy\": ', CAST(accuracy AS CHAR), ', \"geojson_counter\": ', @counter := @counter + 1, ', \"extra_info\": \"', CAST(extra_info AS CHAR), '\"}, \"geometry\": {\"type\": \"Point\", \"coordinates\": [', CAST(longitude AS CHAR), ', ', CAST(latitude AS CHAR), ']}}') geojson + FROM {$table_name} + WHERE session_id = _session_id + ORDER BY last_update; + END;"; + + $wpdb->query( $sql ); + + $procedure_name = $wpdb->prefix . "get_all_geojson_routes"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $sql = "CREATE PROCEDURE {$procedure_name}() + BEGIN + SET @counter := 0; + SELECT + session_id, + gps_time, + CONCAT('{\"type\": \"Feature\", \"id\": \"', CAST(session_id AS CHAR), '\", \"properties\": {\"speed\": ', CAST(speed AS CHAR), ', \"direction\": ', CAST(direction AS CHAR), ', \"distance\": ', CAST(distance AS CHAR), ', \"location_method\": \"', CAST(location_method AS CHAR), '\", \"gps_time\": \"', DATE_FORMAT(gps_time, '%b %e %Y %h:%i%p'), '\", \"user_name\": \"', CAST(user_name AS CHAR), '\", \"phone_number\": \"', CAST(phone_number AS CHAR), '\", \"accuracy\": ', CAST(accuracy AS CHAR), ', \"geojson_counter\": ', @counter := @counter + 1, ', \"extra_info\": \"', CAST(extra_info AS CHAR), '\"}, \"geometry\": {\"type\": \"Point\", \"coordinates\": [', CAST(longitude AS CHAR), ', ', CAST(latitude AS CHAR), ']}}') geojson + FROM (SELECT MAX(gps_location_id) ID + FROM {$table_name} + WHERE session_id != '0' && CHAR_LENGTH(session_id) != 0 && gps_time != '0000-00-00 00:00:00' + GROUP BY session_id) AS MaxID + JOIN {$table_name} ON {$table_name}.gps_location_id = MaxID.ID + ORDER BY gps_time; + END;"; + + $wpdb->query( $sql ); + + $procedure_name = $wpdb->prefix . "delete_route"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $sql = "CREATE PROCEDURE {$procedure_name}( + _session_id VARCHAR(50)) + BEGIN + DELETE FROM {$table_name} + WHERE sessionID = _sessionID; + END;"; + + $wpdb->query( $sql ); + + // make sure this is last AFTER the stored procedures or wrong table name gets used + $table_name = $wpdb->prefix . 'gps_logger'; + $sql = "DROP TABLE IF EXISTS {$table_name}; + CREATE TABLE {$table_name} ( + gps_logger_id int(10) unsigned NOT NULL AUTO_INCREMENT, + last_update timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + gps_action varchar(5) NOT NULL DEFAULT '', + phone_number varchar(50) NOT NULL DEFAULT '', + app_id varchar(50) NOT NULL DEFAULT '', + session_id varchar(50) NOT NULL DEFAULT '', + nonce varchar(50) NOT NULL DEFAULT '', + UNIQUE KEY (gps_logger_id) + ) $charset_collate;"; + + dbDelta( $sql ); + } + + /** + * Fired when the plugin is deactivated. + * + * @since 1.0.0 + * + */ + public static function deactivate() + { + if ( ! current_user_can( 'activate_plugins' ) ) + return; + $plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; + check_admin_referer( "deactivate-plugin_{$plugin}" ); + + // uncomment during development + + global $wpdb; + $table_name = $wpdb->prefix . 'gps_locations'; + $sql = "DROP TABLE IF EXISTS {$table_name};"; + $wpdb->query($sql); + + $table_name = $wpdb->prefix . 'gps_logger'; + $sql = "DROP TABLE IF EXISTS {$table_name};"; + $wpdb->query($sql); + + $procedure_name = $wpdb->prefix . "get_routes"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $procedure_name = $wpdb->prefix . "get_geojson_route"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $procedure_name = $wpdb->prefix . "get_all_geojson_routes"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $procedure_name = $wpdb->prefix . "delete_route"; + $wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + + $table_name = $wpdb->prefix . 'gps_logger'; + $sql = "DROP TABLE IF EXISTS {$table_name};"; + $wpdb->query($sql); + + delete_option( 'gpstracker_app_id' ); + + } +} \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/includes/class-gpstracker-template-loader.php b/servers/wordpress/gps-tracker/includes/class-gpstracker-template-loader.php new file mode 100644 index 00000000..c2767014 --- /dev/null +++ b/servers/wordpress/gps-tracker/includes/class-gpstracker-template-loader.php @@ -0,0 +1,47 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +/** + * GpsTracker_Template_Loader Class + * + * @since 1.0.0 + */ +class GpsTracker_Template_Loader extends GpsTracker_Gamajo_Template_Loader { + + /** + * Prefix for filter names. + * + * @since 1.0.0 + * @type string + */ + protected $filter_prefix = 'gpstracker'; + + /** + * Directory name where custom templates for this plugin should be found in the theme. + * + * @since 1.0.0 + * @type string + */ + protected $theme_template_directory = 'templates'; + + /** + * Reference to the root directory path of this plugin. + * + * @since 1.0.0 + * @type string + */ + protected $plugin_directory = GPSTRACKER_PLUGIN_DIR; + +} \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/includes/index.php b/servers/wordpress/gps-tracker/includes/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/includes/index.php @@ -0,0 +1 @@ +\n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.5.7\n" +"X-Poedit-KeywordsList: __;_e;_n;_x;esc_html_e;esc_html__;esc_attr_e;" +"esc_attr__;_ex:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_x:1,2c;_n:1,2\n" +"X-Poedit-Basepath: ../\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Poedit-SearchPath-0: .\n" + +#: class-gpstracker-admin.php:170 +msgid "Page Title" +msgstr "" + +#: class-gpstracker-admin.php:171 +msgid "Menu Text" +msgstr "" + +#: class-gpstracker-admin.php:197 +msgid "Settings" +msgstr "" diff --git a/servers/wordpress/gps-tracker/languages/index.php b/servers/wordpress/gps-tracker/languages/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/languages/index.php @@ -0,0 +1 @@ + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/assets/css/dark.css b/servers/wordpress/gps-tracker/public/assets/css/dark.css new file mode 100644 index 00000000..52482032 --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/css/dark.css @@ -0,0 +1,110 @@ + +body { + background-color: #555; + + background-image: url('../images/matrix.jpg'); background-repeat: repeat; + background-position: top left; background-attachment: fixed; +} +.container { + background-color: rgba(0,0,0,0.8); + border: 1px solid #000; + margin-top: 10px; +} +.col-sm-2 { + height: 50px; +} +.col-sm-4 { + height: 50px; + margin-bottom: 10px; +} +.col-sm-6 { + height: 50px; +} +.col-sm-8 { + height: 50px; +} +.col-sm-10 { + height: 50px; +} +.paddingright15 { + padding-right: 15px; +} +#mapdiv { + height: 475px; +} +#toplogo { + padding-top: 10px; + color: #33ffcc; +} +#messages { + padding-top: 17px; + text-align: right; + color: #33ffcc; +} +#routeSelect { + width: 100%; + background-color: #33ffcc; + color: #000; +} +#autorefresh { + width: 205px; + height: 44px; + background-color: #33ffcc; + color: #000; + white-space: nowrap; +} +#delete { + width: 205px; + height: 44px; + background-color: #33ffcc; + color: #000; +} +#refresh { + width: 205px; + height: 44px; + background-color: #33ffcc; + color: #000; +} +.deletediv { + text-align: center; +} +.autorefreshdiv { + text-align: center; +} +.refreshdiv { + text-align: center; +} +@media only screen and (min-width : 768px) { + .container { + margin-top: 25px; + } + .deletediv { + text-align: left; + } + + .autorefreshdiv { + text-align: center; + } + + .refreshdiv { + text-align: right; + padding-right: 15px; + } +} +#map-canvas { + border: 1px solid #000; + width: 100%; + height: 460px; + background-color: rgba(0,0,0,0.7); +} +#blankrow { + background-color: transparent; +} +#selectdiv { + height: 50px; +} +#halimage { + width: 37px; + height: 37px; + vertical-align: middle; +} diff --git a/servers/wordpress/gps-tracker/public/assets/css/index.php b/servers/wordpress/gps-tracker/public/assets/css/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/css/index.php @@ -0,0 +1 @@ +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 Btnb99Af5rT)t{mCEg5urg=A(g z{C|6SPb~9Xage|wB`SrZk2FOMYM!buln2sX?5Y+T78iB(Zu9cS7|LZyZ++}u$^oi1 z_j@S}bW9OzU2R+RMy&~OT>X-oZ98$jq#ogNfJ!BM-42wHGZk*6s2KD}U*IA%epmxb zm}|6BK9YoIF;*xSL!+z@<64lB7->LTW2Vi4ostCA(z&2XniwNIv}fFo-`MbG;)u4G z^p@F!)|9HhZprHd_vXjDoxs6WkK-6P0@lfxnGT>*p(QHoUV=u1FAqb@b%*W=a3{`LsH5k^AvQNL>6fPpy#oU(&MuH(*aEX4b35*} zn4n7)`I2U%=+Z=?BVZQ?vjQFW4gD@~XSOO6b{qu81`4&LFuU2(ilxW+1|ZkNMnWe79C$gs zWT?Ele|HR{JGPe)5BTW>0Ey?-Ls6S#GoV0tbt6ku7B&*0 z;i9QM$W1Rj*rRIdceL)rAOSl+sDe3LkB87<%){;ZdHp6|SNlopDXRx< zxBDF9-lTo&v`8$humFygUij@qgT=Qzhj8{ym2-{Xciwqq_Xwk%=O3B-MNAL_6e`3U zyxwmXex4`g0^1RYw~Dth3av3Dl^AAlpO3mG!nLr#&ZZ7c_wUboI+deC+&%TFjK2Lm z!Y&f1h|T_On%RCV&=4bx`!>(YezqGVhl&QpED?N6GV)HmzJ9&rh$x*i?*@o9#6QI< z5ZI_MRX;0+pY8$`j)eF#TlUyG(eE%E7S!rj;mj^M5vhUicPm zVWQ2z+imFyg}SRABmOBY_@osR!>7Ov!ioK`NB6_Rv}7Ud?35ed5Sb@?yND?kv~RCa wqs^a3Sh>&&L4)!LKI?D2&k@))k(LESaga|C278ChSzn3NWVkcuNoY&{0f?~U_5c6? literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/compassE.jpg b/servers/wordpress/gps-tracker/public/assets/images/compassE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e7ef93792ddc7bb00e5e286581230248fa7fc2ce GIT binary patch literal 1239 zcmex=9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT6)iJ|Gs@!zuaeeDW0EMyz;op_w9l5_o8ktV>bF_y;)21?KIof zi!PY>Dmz@hblC0k+c&vaYEJ~{J$`k3wR}*KZ`p6Il9ifQcNbk%T{b&*Z`GT%<##hn z=H8$9Tz+%Xx`_|D=dy=>RGYmj`~Awh_wVXxeK=9`Gs^cYPgh^dyOYud*235J#%-tx zez;cpsF}oEftcfGm;RCX{5FNXz4y36lU0c=pKJJ!%5`yBzjB{WTmO_d-E()f_D6|Z z>rOXKYP=cCwL^B3dzMzfQY*i;+%I=kZLOVqb=|IHEi?&tWo2j|u^16uB&{I=W3h$W*g|=Vlb69huPT}Sa=gr5YQvWlwtqZ7mTPQf` zX2+|bicc+7dADj;UO!x$Hz(`z?#w8!cdu@ntlzqJ+qv(XHr{lW4x0Y%vBd7T6-W0U zmD67MBl*#t{Q{=m?>S>mE{(9gEvcu{yLPQw&Yw3MtSuF``PU!X+x&3FuGvTbsqfk~ zPkMF7;>{cP?QCKeF}{0blkpVR+3%K2SorePJd2g@_axV@J#sCM?b3REwHdimOV93h zPR*bH`1FI*eG3Bw{8{?8Uijhdxb?%ccCqQ%DwA{5r)54>IBB!)=sY*&-G=I4*45a> zZF*(=t@pFPU-X-GvvW&sM%sRV(eH2dNNVTqrl}T3T~$j(&%9Z?W_!K1zViQ@0NEc9 A>Hq)$ literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/compassN.jpg b/servers/wordpress/gps-tracker/public/assets/images/compassN.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03f4998f14b73c88421418af3d017d544622e1d3 GIT binary patch literal 1272 zcmex=9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT6)iJ|Gs@!zuaeeDW0EMyz;op_w9l5_o8ktV>bF_y;)21?KIof zvwvJ(@p3+|o$#HgilS@0M%9OObz8VZw+nu@wDo3Xe`fQf>*Z=Gix~Uu>&tHCsxF%y zySKbrJNA22{CeGkA!iJyeAu#mviJM{45};UZ%$e_@getI_Rx=NvsY!mUwQZbT^+3t zCu)91`JUzJ>T7v-Qo6ue_}bpMJ)aK;zWC1|vQIiQ>gb(pxkZVL`iTrNk$0A}F0NbU z%=37mj7)R%ety%_XXAbMY`Xeq;hLA``Kfiv(xEpCfy7lt!$^LQKb^5RTYfyO*sj@jrG%sIxZ;a@K9?$2 z*dCuPU1xVS{&9UD{yF(q7!QH%dBJ9FdF-x zuV~!4lXLi|c|PjxnPIoUQ)>SAEb)(J3s=AV`0^g-rS*F6RC<&DUD>(a;AV7T)6W{o z!Yf)#oUh!YUhYv{aO+30bGP@_NuJv_pEmh4A!S~8(s^aUyE7*L3O&|-Wy7bQt4mcT i^@psRom+BKWq$P+cQs|fV8PIHMbGlfzV1Ks|0V#80~Z+p literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/compassNE.jpg b/servers/wordpress/gps-tracker/public/assets/images/compassNE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd8d380a08a3733d7784c493aa5cc9f41227e4b6 GIT binary patch literal 1255 zcmex=9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT6)iJ|Gs@!zuaeeDW0EMyz;op_w9l5_o8ktV>bF_y;)21?KIof zVH!4u59;}iU0LT%Ty}u5s6#~f)sdnzwSJzaH(p#?>>9GR`gF*&S-E9jUu}DRH?!Q& zXr(EK_OHA@6A%46+qKKRMXy9Q{K%}lmFxE{FRw4zu==p#=ck$GCPrFT!n;*+54`b@ z`dam&Uf{>)!}Y>8!HEz3`Co1qx?B0`^_m5Oz8NbH&RkR@7SrHX@j7n#hu<-~u5S5# zTQ*?*w|x^UzM1b}$k%R~)Of>6r2a_X)kzgKzUt9jw*xOOU%T7n%dVf=*5%fPKjZZE z3j6eIHci^)UtPIwzOB#gGH?Gr@$RA-x$X|_Z;Ir4pPW^n)qJON5c)10=a$x0{_32bfN0KthOJwEbKMqn zt2k9SRj=z(_;tUP`PotL7w@|z*u2_r%A69X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT5?}_t8Lt)@BSa^+a<&PGX%Kr*fYT^IYVc$f@K)P)N&m`Kl{Bs zf)mfy82?!K;nQ9Fhq8U=7ncn;XMDKD3@|UiD+L?^V<9SKhsUH%+u6 z#ja+p+OsxScc=1{-W{@?ujAH7*lB*a*8ga(t?wbFJ1g#|uW(|Rck|ckV}Bjl*=6~i zCx-r$%bq@K-|WiN)jyphFXi1k^~cR@^`-|)7L0vi|HNdED_hE1zW-DB@aNan(a~p(p5}brYZP3#JZ8hG z)l;=jJl>PHWHtXnna0Qse;hY&Xix7kIsKo3H)g@lTaT1gHw#`_^6@Fhm%Cej2OWLz zxPK|v#PGtf>{Z)3m+oDgyDjtHspCthrR~_WYstR#+Lr6Wm%V!JfB0GU5Br$yS97JV z-2U74>%8Edo94Wn-@XQ45j-f``(V5G{?0hF{afR|gjQRt71%|pcbOR_{AyIms=vFY zwmzs{=+(CC^O!H2a+aE~vaMH9yLVFH>%ACeqrQcK{>m#}$L??bB3;k>LLjri>+`N@ z(;huMe!kFnW2Q=eS(5*DzpDXDZB#jr?VB`pQfzL??d)YIBi~nlakolHx>c_ literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/compassS.jpg b/servers/wordpress/gps-tracker/public/assets/images/compassS.jpg new file mode 100644 index 0000000000000000000000000000000000000000..841f24c133d3c8234212e4146272e7f1462d3c63 GIT binary patch literal 1256 zcmex=9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT6)iJ|Gs@!zuaeeDW0EMyz;op_w9l5_o8ktV>bF_y;)21?KIm} z`Z5`_+!{ahA2E|Mo1dSYw=3noiiUXMjmqS!{VOfic0Ko+%O!Vh?d{Ah(`MewYr6e!Gp(0$0y{61#tUWcTDI@k+`E4-9a_)RetznbI~Pu@ zc;WYE;&$eZw%J!-&%ORfcWK3R*X@0u1Vx_|YDdMpFznbmfx-FMUq^PC5?el3_Ya?A z_FVmP`?PNSDXDXl%f5v_GTa(FomG{2(=O2h>y*B$!HfNtsz>#HxoaD>@7$~Fv1Vaq z?-Jfi7Hzh=JL&S{)<<`iNe5m~{4LYIxYF43*@EwKIk`W6hpE4nd~~{>x56vh)8ukt z;_6%H)A9uOWvFR>O05#L`Oe<;#-{M$&#$Yaqt6;W&H1|5D7bKW%!X5|r)r&eyeDtT zYW{^XjWOy+d7};=na}@Kp8v;w-#s6WEx6d;7QLfq+M<*vM*b37jt6Dl=EzNz_$6vM zBd*47Q{d*4z`HRz^qNK0FKmvwnHV*Uz7=?zimI-tlpITXdvV z=EhCN5;=$W#f3O9mc22$DIxhX;D_#|_m9GR*S`(_D;jt1|%V%P7n& z+vI6>tuk$15YOaOZz7*0S#K7q_qsGy^1+8qq5mvZ)?Uq;om+BKW&V1XqBPNr(4$wT RNtrD#Pu(}y{PmsxHvu?557Gbt literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/compassSE.jpg b/servers/wordpress/gps-tracker/public/assets/images/compassSE.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1253e8b868fff1b4861dd4b5f6c21a9df5851f29 GIT binary patch literal 1248 zcmex=9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xS{g6-mDlfcz=jWT%>~!K-G zLQ3fVwo5MxGj*4~tn#rkJ-d*zJZTm4;>YiWuYSH_Z}~d5?%Y%fx6t*K+DCOwZoPed zH8*?f+KX#6&J~m@t(Vwaz5ez7;>mw!i(PhHB( zNC_!XFY~zFcw^qyS6|y7-RI7XQ{DXOy`o^8`{$^57ls{MCltw^Yv*lW=9OpidYWWt(b7nn^4=>`6Tc`= z(ANJaeAe#P)de5dO{{+S(&Q?Hgro35W#Zt35+Uo`&MJ@so_UZ1}!r@pD@n*&4Y`MSzK z^<1z1h`lWTsD14Ex7Gi;)~BbOV?V9((e0Rze1J-?|L?8GVqeVSTlq-iYku1;zNNXV z1rC;0Eck8OliDaf`>gz)W5q3Q=U1!``cT%)-u8vVWJhXsd(fqr7>mPqeBMNPO5dF^ zx$mxZm_?N6hKQ^QNA2sPRIgnR+8t}=sebP-zq9R;)E{%aR!={Aj92^Um&|DQYrpSb H`F|4tJLC-j literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/compassSW.jpg b/servers/wordpress/gps-tracker/public/assets/images/compassSW.jpg new file mode 100644 index 0000000000000000000000000000000000000000..62ddf3d9bdf91cb423abf8db9b41f520d81f5b22 GIT binary patch literal 1249 zcmex=9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT6)iJ|Gs@!zuaeeDW0EMyz;op_w9l5_o8ktV>bF_y;)21?KIof zi!PY>Dmz@hblC0k+c&vaYEJ~{J$`k3wR}*KZ`p6Il9ifQcNbk%T{b&*Z`GT%<##hn z=H8$9Tz+%Xx`_|D=dy=>RGYmj`~Awh_wVXxeK=9`Gs^cYPgh^dyOYud*235J#_f=o zKe)VNen|V_Z(*8+tDH_NzcQRVDYMy4R>ZhCq08j1f5+qQHs z-?;yVS*K({P{7`nj?j;{RmxUOwF=GLwM9SU-Mnr4L$0pdWh**&dT`bht-!!ilV?}U zw=ehp@_yg3+TE(lk8>a0>0`Edf%7*@ez#9)lg~Q7v$=8m8s&ncIB-c|LD=LRKq3 zp4+!%<#9j$0PW@vF8c&O#BP{;k6u=Lnr0l0x?Xm5cm8eny5$QiwEZuy zF_GY#H#v7s|?fWWpUnxo6*mIeEMPZctr?{@ImFZC3Zp=a%(IX9$k9t zq{{8cr?V9X@jO*zpr5PhGlvPb?HxGHT=yahkYr<3UbkKb$@|Xn~>=}OR?WzCP)9>-IzJ1Lf)!g+R>la>q^Ik7`gV5Ph5koKT zDG`A;Q;y%&VK`^xT6)iJ|Gs@!zuaeeDW0EMyz;op_w9l5_o8ktV>bF_y;)21?KIof z_0E?};`wg4E`MnjHmi1@(<--x<=a=}Os2rNDZ0P4k40`vV-0%kn!<46T#Po<3{e?8?;DKb<2l<=s2= z$IWc@rUy$Fl!ZI3W6zm*t80qpxyh^De&x+u8=qd9y>7O)b-7Tkweh5nDRCW(c2@be>A!ducVwqtd6oFk%jjF@>QC!(L${Ruk$va?jlZM*i%~`We+E{e z`j4+p|49G#a!>wa>D?#SzKb*8x@q3Cd%_~Y{!-RP3y}f?Gd|ox8oaPV(Hg`LxNW2`Tf! zlg=v(-kmY|SJ=nHwSGN+mtI*m$?M(AShHLEW~)qoU)S*|J2^eJXva}~jiYs%^8arF E01Vg*ZU6uP literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/coolblue_small.png b/servers/wordpress/gps-tracker/public/assets/images/coolblue_small.png new file mode 100644 index 0000000000000000000000000000000000000000..597a53e1a84805abd7d71afa5e0feefc7ed24460 GIT binary patch literal 478 zcmV<40U`d0P)A!@8%YQaDf&U;eAf5rl z%*Yz1f+SQ`v;H&GU-{24^B)8Q+3M=~Fio>zCffn=K~>dkhTA2R8L$EMzG8-(H~T?M zHzptv&cedYa62lK0T;L#k<7r#$`4`&gES}z3hFa3NNM5J0Fo0DG6bQ|IS)-X3n0yzcw>#&51O)j$&ruV*mhvSxZyR=%{BpY8-SY zj^1zAKC>TnU`J&=WdJDaxIz;(4*(3x&Z?>gTB@oL1H7k$vzt8tXfmfiBA6JDaz#*T zuhhOj355u5@ZF_{e7L5`2{w$>3N)Y!4~6-v(P(h63!B-QG=NYMP+N5l#*kp#F#UHn zgSJLPHT9V>k}LgciS&%XQ+~lD_VIa4#8a;$-)xh;u2h0^x4JGsg^Rg&F8b1YdTX?VAENAm|os@QW>Ng zgK@IpWDW_OWsxfQ#WCkTt$nSD78#h?y4c^p{X`cK<4CjanS*7yMM|i1@UBFDrvm7b zT4dkhS)zAjoiYHwJjdxMaHJM4k9|1RdFES(!|r;8@eWS>a#FM2ceHX(z;jn%&z5eD+OK9;*_*kpUHckr=!->!^Dz8u{+peJDh5eb^fEXS>#D(1NVB^ zH&erJN%WzSPBmfjLFhQR9Ybiq;A8-gj1Voaf4VD&(`{>j7$$2_rA6D}sQ{>6pce2@ zx=Te|yvZic&{6l!sU*J4J67WEuesfGj22NIle)@KUCy7T_BV%wCL4fhZ(Hc%zOOXgtW7E_jWNGh4YZjw_cnO=XDfv^m`!Rb_*#9Mr9< zk#TGZ$es7Fe4a}og;}Zw3L6)E_^RnFLw29izK2MiH~%h_SYy5Pm zrtU9lew~vv=jUc zH~1nCEmW-JOE1IzI7YO^%qG_6W_ijB>JjYHHGY=%2HvmyUj9`)77`xPrQkQL!=#$P z#b)M7*t*}lOXD1?!K{tmYqlgy~1I|vwo@=WYila9Ny9TqKe*_V56EI=pqno2U z2xV`QG7QSs_ko79-D$DF3BPzaqWn&aA9g*FLn~Z>+ekn-tun|&%LQr)Q-IZ;PwbSl zL*aQaNGttPflP?CAZvn>LDEGShrTwyy2|KvS?#yTJIFh#&y1M!JqFN)snzM``n76A zZ6X4dD4FsjWva6zu_)d(c`@alpnlSD3L(WBo+)H~K0y0d-hLI8VI#89I4GywEK6gu zvPmIKOP!pZjC+71<05e(U!_|O1>YqECA>MQUx1u1{~-A6JfBMcvpXNED)lPmKH7g2 zJA=BCyVsvM-@0+`TkQtDy`cTgnTs?0Gkh}@T}CIG#B8=Djd-7t5=k|r*dJ1}Zz)rh zPcmiBR)_C|lXot8T)LkOO?F5ICC3)(ntBd$45k;l7wQj)xxieoE~74cgYcpl%5w@K zgOYA7bvV5ru~1$edADlU*puI0#lm%Vw37Ewtw+`04Crcj5BX>lt^Bw#KPxJ$9-D#9nY6u77+=(PDaSnL zTH96I*SDh96{l{($|KXY60~AE^^8Xb#!YOhDU}o^*I6f+RFQN|dv^I}45nCP=&5Y8 ze8>HqJCAoRGb%)*qtm&@xU5B%MT|ukMb2S_F*IoR%7yaX=8r98S4&%Bd$`M#ZAEY1 z*zBv40?`TI`eouZvSs-gSIzYr$|lPubPu*CPOA{%7g5WyHR9uYu_lx_$iDb(vZ{BT zG({_PPv}Lz*7J#UOs{Y+b8ikK6ZabTfG7{X@781$KRzCA2Pawkd1VcleoCG)U)=4{ z8;+UtZECs>2$Oif&JOo;b%xVYGUXQg$Q$M%kN$E!?Wh>T^Xo#Yn{% z#Zz^@bwxzPHuiw(z;}1-$MD+R?(m*I_$s)V{u@IsSOaWEtH>xpf0E`lxVaJ3SQC5> z@xfZaVt|WEWna}dOrBnv$&z!|n+Gl;RSa9YQ)TMs??(WO;?&htTWU08J3e%vqGPyp zxCk1Zs8;nsl%D!M^%QlT6toDYVp@Y_PJ-kqaGg8Nc~8I>U$FIIOebP$=_|w33S83S zQN_|n{HvLQZc1sKbtC51rL(8cota=ej6Bs;Fr!<#Vf~gc10GJSiP%e+Yr8xbvu?R< zzaI}y34IybrP`_MWwI&>dWny*58As3zFiJa)c!d`U?JV4z1j->{k)Q zMwMT-lvEI^MKnw0h^bb0IS;Owp2|k{#p_=5#yHfZKK!NoQ`SmE+=+!1A; z*=5+nKD#kZp7!WI)A^%w&tKX>nsD2(&i7aNexvk?D@#e(P^rbIx7P`ljn$Js>lS0( zA?})^Yuy^%G4`h?Jfg-244)d7*V#B#tj@Nnyj3xrtQGCO$>P@P#_6^^=1@`M@+k#s z)%O$E{Wa>VzToGC#R&}Y#?DyJX6SP5v(0CFgfG5ygwJF1)j!Z_IE>Zk`_eC#B{MzW zv%kNoxv^AdhP`>qhSfRNF1Au4|7ERqnG0(0`9khO5ML~Lwszs(o8|P6?VpD0C)@-2 zK{3>=w2Egr_}>L|Y#F$gD7&{}KTj4nQx>xqs_PvCtOL}RHP_=Qs4&#C_NLg|gVzRz zujF4zl4*)bXnQertKIY9%TLvNr;6qcBy-+wgRh>KUH{s?eQq^_Nq+QB6tQq#=pb|R z^?UOu^Q@uILy@m@Wt{Kn-kX>Y>`y<_dq!00@!|aq(qfFiJUmQ4O&xt=cLiQ|@6hVA!aQ;O zppUkI)k>-7?$raQ1KXvkY#|2yOBsbqB?p7s!wvmqy4Fof>7NR#7yk8nE4i;I)1Rxk=YS##}MOjFVx z&##l+9olrCv->vPPjFt%dmc4jRHw8Vbda@YyU`v$zofsdpPU(^M7U4C|J@Jf?l3#C z75ZaOLJs49bh)JW(!_WJ0OP6S1_H=WcmRM(%-IC(gVxiPv-Na`W9>X~_HaLUuOl`9 z$ot714c+a1un<3YHxF+)KLzNY47sE6F^qsh{-pT0DnQYC1`t(Gygfu3E(I5ZDl$MI z5P7_vgPf6?#&7x2mjcwu$Hz+!fglhFaDpV<6Yq!+mz9-8h)EzMBt(xGqTY8re6W6^ z9^M!JGV*UbYWCi?cxNvkXHO5vv0W_A^R|xy6ngCFKhN(t-M#+f$iw@0R!8|E{IFgK zakv=be~EmY9sV2M|4|*!{3ZJ{tG}GdAC*Q<6>pFA@x+^Wdb%kp+j`|3r^gP?6y%mw)dDMFv_oj;{a!x~-+AY;uv))(%NyhV%fl z6(Pe`LG#JT`#fC{#w6sB0OS{?t9jSD%V?oKDS043#_IJUL>!Uvzp`R4liL;sM$;7X9P4BO!iW}{X*vlvZg zbU9a$DU>}1qQ@o8wdPm8SQ#R`qG1%#^qKadvrT9aG)CtMV=jnesQ6-G+|^m+WJ RICFeNwbZYxm8#eT{|jyFpLzfQ literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/coolgreen_small.png b/servers/wordpress/gps-tracker/public/assets/images/coolgreen_small.png new file mode 100644 index 0000000000000000000000000000000000000000..462894b020a2116d4ad4f8fb250a367ddba7bc2f GIT binary patch literal 586 zcmV-Q0=4~#P)Ez;2p%A3dmZm8}R8#~>+K6|QdiB1~_c^ZqiK)#4zvJHbd!LW@d%rJ%zf}@Oh0}5T zR+trDwbUUYJQB2(wX}22(N4+HDLbW^6Q%`ozmR$?Ocbva;ofv%AGf2V|H;Sd^eQS( zD-36Z>vWwLo)j+^G5By0$swoONM+#lHEzTw_F5% zfG`Mu^~wLh3*b(;koK4wrr~7%OdfWh4Yj9Q&lcsfP8Rw8Ji}u&gls`8jf2EB*3eJG zdZW_7*2WgtTB~@b=9?xOYYm2*G(3~R?Uo;up+W`2G=9(8Oh9Xm^8ILSkF}foWTdRLg~dCIs4dhO-WKM}c(d1nv0dH1U}Y@ymU>}W2CC1iSe{zu`lN8L z-T7YfrpK1X^!WO?P9IHk5_DMm1!jw3Qw8c;DwBf$*+*?YYUKv=_>W%5+;#3$j=Qh@ z@q7-{)%d}YyXZhCgdjEybYkE|yc50&J^x%}8v`%li?AD;4mD8C*oaOI?}bdeg`WZp Y0ECXGBT+P?O#lD@07*qoM6N<$f<=}Sn*aa+ literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/coolred_small.png b/servers/wordpress/gps-tracker/public/assets/images/coolred_small.png new file mode 100644 index 0000000000000000000000000000000000000000..47384e29e52f03bbe19ad36fc4cb6581cc0f5654 GIT binary patch literal 466 zcmV;@0WJQCP)M2Z;gk3?ODk z)-V+$ktMD8{}@C0|9=cKz!=2Nmr;gknhi7A4u}tCODQr;epb$a4HV0CGxR^X3u3x4 z0f}&KW@d)yXJHJuKl=2yK&jR4;0g&2m@hhb`Fr@vp~#>OM^Mc z#5x7d|FboWV5a*J3c;Q799;i3xp+Z}FEKz;16~jVH5r6!2u2VP$OG{&s0LGFG=Sm; z6pNpLm=9f&1&an?JTkll;vY~=1T}!bd#FYRVl_MfVs2~_00E1DppZn3v;Y7A07*qo IM6N<$f@N2&P5=M^ literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/images/coolshadow_small.png b/servers/wordpress/gps-tracker/public/assets/images/coolshadow_small.png new file mode 100644 index 0000000000000000000000000000000000000000..3a89759fca2a68217f42a4ef95851a179df425aa GIT binary patch literal 436 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 aI`+Y7Z^kGSS=l134!d1^GZwfMxU)vEb$ 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 YAAAPQvMLyBH~;_u07*qoM6N<$g3LFUJOBUy literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/index.php b/servers/wordpress/gps-tracker/public/assets/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/index.php @@ -0,0 +1 @@ +'); + } + + function getAllRoutesForMap() { + // when the page first loads, get the routes from the DB and load them into the dropdown box. + + viewingAllRoutes = true; + //selectRoute.selectedIndex = 0; + showPermanentMessage('Please select a route below'); + + $.post( + map_js_vars.ajax_url, + { + 'action': 'get_all_geojson_routes', + 'get_all_geojson_routes_nonce': map_js_vars.get_all_geojson_routes_nonce + }, + function(response) { + loadGPSLocations(response); + } + ); + } + + function loadRoutesIntoDropdownBox() { + $.post( + map_js_vars.ajax_url, + { + 'action': 'get_routes', + 'get_routes_nonce': map_js_vars.get_routes_nonce + }, + function(response) { + loadRoutes(response); + }); + } + + function loadRoutes(json) { + // console.log(JSON.stringify(json)); + + if (json.length == 0 || json == '0') { + showMessage('There are no routes available to view'); + map.innerHTML = ''; + } + else { + // create the first option of the dropdown box + var option = document.createElement('option'); + option.setAttribute('value', '0'); + option.innerHTML = 'Select Route...'; + selectRoute.appendChild(option); + + // when a user taps on a marker, the position of the sessionID in this array is the position of the route + // in the dropdown box. it's used below to set the index of the dropdown box when the map is changed + sessionIDArray = []; + + // iterate through the routes and load them into the dropdwon box. + $(json.routes).each(function(key, value){ + var option = document.createElement('option'); + option.setAttribute('value', $(this).attr('session_id')); + option.innerHTML = $(this).attr('user_name') + " " + $(this).attr('times'); + selectRoute.appendChild(option); + + sessionIDArray.push($(this).attr('session_id')); + }); + + // need to reset this for firefox + selectRoute.selectedIndex = 0; + + showPermanentMessage('Please select a route below'); + } + } + + function getRouteForMap() { + $.post( + map_js_vars.ajax_url, + { + 'action': 'get_geojson_route', + 'session_id': $('#selectRoute').val(), + 'get_geojson_route_nonce': map_js_vars.get_geojson_route_nonce + }, + function(response) { + loadGPSLocations(response); + } + ); + } + + function loadGPSLocations(geojson) { + // console.log(JSON.stringify(geojson)); + + if (geojson.length == 0 || geojson == '0') { + showMessage('There is no tracking data to view'); + map.innerHTML = ''; + } + else { + var finalLocation = false; + + if (map.id == 'map-canvas') { + // clear any old map objects + document.getElementById('map-canvas').outerHTML = "

"; + + // use leaflet (http://leafletjs.com/) to create our map and map layers + var gpsTrackerMap = new L.map('map-canvas'); + + var openStreetMapsURL = ('https:' == document.location.protocol ? 'https://' : 'http://') + + '{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var openStreetMapsLayer = new L.TileLayer(openStreetMapsURL, + {attribution:'©2014 OpenStreetMap contributors'}); + + // need to get your own bing maps key, http://www.microsoft.com/maps/create-a-bing-maps-key.aspx + var bingMapsLayer = new L.BingLayer("AnH1IKGCBwAiBWfYAHMtIfIhMVybHFx2GxsReNP5W0z6P8kRa67_QwhM4PglI9yL"); + var googleMapsLayer = new L.Google('ROADMAP'); + + // this fixes the zoom buttons from freezing + // https://github.com/shramov/leaflet-plugins/issues/62 + L.polyline([[0, 0], ]).addTo(gpsTrackerMap); + + // this sets which map layer will first be displayed, go ahead and change it to bingMapsLayer or openStreetMapsLayer to see + gpsTrackerMap.addLayer(googleMapsLayer); + + // this is the switcher control to switch between map types (upper right hand corner of map) + gpsTrackerMap.addControl(new L.Control.Layers({ + 'Bing Maps':bingMapsLayer, + 'Google Maps':googleMapsLayer, + 'OpenStreetMaps':openStreetMapsLayer + }, {})); + } + + var locationArray = []; + + for (var i = 0; i < $(geojson.features).length; i++) { + var longitude = geojson.features[i].geometry.coordinates[0]; + var latitude = geojson.features[i].geometry.coordinates[1]; + + var tempLocation = new L.LatLng(latitude, longitude); + locationArray.push(tempLocation); + + if (i == ($(geojson.features).length) - 1) { + //gpsTrackerMap.setView(new L.LatLng(latitude, longitude), zoom); + finalLocation = true; + + if (!viewingAllRoutes) { + displayCityName(latitude, longitude); + } + } + + var marker = createMarker( + latitude, + longitude, + geojson.features[i].id, // session_id + geojson.features[i].properties.speed, + geojson.features[i].properties.direction, + geojson.features[i].properties.distance, + geojson.features[i].properties.location_method, + geojson.features[i].properties.gps_time, + geojson.features[i].properties.user_name, + geojson.features[i].properties.accuracy, + geojson.features[i].properties.extra_info, + gpsTrackerMap, finalLocation); + }; + + // fit markers within window + var bounds = new L.LatLngBounds(locationArray); + gpsTrackerMap.fitBounds(bounds); + + // restarting interval here in case we are coming from viewing all routes + if (autoRefresh) { + restartInterval(); + } + } + } + + // check to see if we have a map loaded, don't want to autoRefresh or delete without it + function hasMap() { + if (selectRoute.selectedIndex == 0) { // means no map + return false; + } + else { + return true; + } + } + + function createMarker(latitude, longitude, session_id, speed, direction, distance, locationMethod, gpsTime, + userName, accuracy, extraInfo, map, finalLocation) { + + var iconUrl; + + if (finalLocation) { + iconUrl = pluginUrl + 'public/assets/images/coolred_small.png'; + } else { + iconUrl = pluginUrl + 'public/assets/images/coolgreen2_small.png'; + } + + var markerIcon = new L.Icon({ + iconUrl: iconUrl, + shadowUrl: pluginUrl + 'public/assets/images/coolshadow_small.png', + iconSize: [12, 20], + shadowSize: [22, 20], + iconAnchor: [6, 20], + shadowAnchor: [6, 20], + popupAnchor: [-3, -25] + }); + + var lastMarker = ""; + + // when a user clicks on last marker, let them know it's final one + if (finalLocation) { + lastMarker = 'Final location'; + } + + // convert from meters to feet + accuracy = parseInt(accuracy * 3.28); + + var popupWindowText = "" + + "" + + "" + + "" + + "" + + "
  " + + "/" + lastMarker + + "
Speed: " + speed + " mph
Distance: " + distance + " mi 
Time: " + gpsTime + "
UserName: " + userName + " 
Accuracy: " + accuracy + " ft 
"; + + var gpstrackerMarker; + var title = userName + " - " + gpsTime + + // make sure the final red marker always displays on top + if (finalLocation) { + gpstrackerMarker = L.marker(new L.LatLng(latitude, longitude), {title: title, icon: markerIcon, zIndexOffset: 999}).bindPopup(popupWindowText).addTo(map); + } else { + gpstrackerMarker = L.marker(new L.LatLng(latitude, longitude), {title: title, icon: markerIcon}).bindPopup(popupWindowText).addTo(map); + } + + // if we are viewing all routes, we want to go to a route when a user taps on a marker instead of displaying popupWindow + if (viewingAllRoutes) { + gpstrackerMarker.unbindPopup(); + + gpstrackerMarker.on("click", function() { + viewingAllRoutes = false; + + var indexOfRouteInRouteSelectDropdwon = sessionIDArray.indexOf(session_id) + 1; + selectRoute.selectedIndex = indexOfRouteInRouteSelectDropdwon; + showPermanentMessage('Please select a route below'); + + if (autoRefresh) { + restartInterval(); + } + + $.post( + map_js_vars.ajax_url, + { + 'action': 'get_geojson_route', + 'session_id': session_id, + 'get_geojson_route_nonce': map_js_vars.get_geojson_route_nonce + }, + function(response) { + loadGPSLocations(response); + } + ); + }); // on click + } + } + + function getCompassImage(azimuth) { + if ((azimuth >= 337 && azimuth <= 360) || (azimuth >= 0 && azimuth < 23)) + return 'compassN'; + if (azimuth >= 23 && azimuth < 68) + return 'compassNE'; + if (azimuth >= 68 && azimuth < 113) + return 'compassE'; + if (azimuth >= 113 && azimuth < 158) + return 'compassSE'; + if (azimuth >= 158 && azimuth < 203) + return 'compassS'; + if (azimuth >= 203 && azimuth < 248) + return 'compassSW'; + if (azimuth >= 248 && azimuth < 293) + return 'compassW'; + if (azimuth >= 293 && azimuth < 337) + return 'compassNW'; + + return ""; + } + + function displayCityName(latitude, longitude) { + var lat = parseFloat(latitude); + var lng = parseFloat(longitude); + var latlng = new google.maps.LatLng(lat, lng); + reverseGeocoder = new google.maps.Geocoder(); + reverseGeocoder.geocode({'latLng': latlng}, function(results, status) { + + if (status == google.maps.GeocoderStatus.OK) { + // results[0] is full address + if (results[1]) { + reverseGeocoderResult = results[1].formatted_address; + showPermanentMessage(reverseGeocoderResult); + } else { + console.log('No results found'); + } + } else { + console.log('Geocoder failed due to: ' + status); + } + }); + } + + function deleteRoute() { + // comment out these two lines to get delete working + // var answer = confirm("Disabled here on test website, this works fine."); + // return false; + + var answer = confirm('This will permanently delete this route\n from the database. Do you want to delete?'); + + if (answer){ + $.post( + map_js_vars.ajax_url, + { + 'action': 'delete_route', + 'session_id': $("#selectRoute").val(), + 'delete_route_nonce': map_js_vars.delete_route_nonce + }, + function(response) { + map.innerHTML = ''; + selectRoute.length = 0; + + loadRoutesIntoDropdownBox(); + getAllRoutesForMap(); + } + ); + } + else { + return false; + } + } + + // message visible for 7 seconds + function showMessage(message) { + // if we show a message like start auto refresh, we want to put back our current address afterwards + var tempMessage = $('#messages').html(); + + $('#messages').html(message); + setTimeout(function() { + $('#messages').html(tempMessage); + }, 7 * 1000); // 7 seconds + } + + function showPermanentMessage(message) { + $('#messages').html(message); + } + + function turnOffAutoRefresh() { + showMessage('Auto Refresh Off'); + $('#autorefresh').val('Auto Refresh Off'); + + autoRefresh = false; + clearInterval(intervalID); + } + + function turnOnAutoRefresh() { + showMessage('Auto Refresh On (1 min)'); + $('#autorefresh').val('Auto Refresh On'); + autoRefresh = true; + + restartInterval(); + } + + function restartInterval() { + // remember that if someone is viewing all routes and then switches to a single route + // while autorefresh is on then the setInterval is going to be running with getAllRoutesForMap + // and not getRouteForMap + + clearInterval(intervalID); + + if (viewingAllRoutes) { + intervalID = setInterval(getAllRoutesForMap, 60 * 1000); // one minute + } else { + intervalID = setInterval(getRouteForMap, 60 * 1000); + } + } + + // for debugging, console.log(objectToString(map)); + function objectToString (obj) { + var str = ''; + for (var p in obj) { + if (obj.hasOwnProperty(p)) { + str += p + ': ' + obj[p] + '\n'; + } + } + return str; + } +}); + + + \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/assets/js/index.php b/servers/wordpress/gps-tracker/public/assets/js/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/js/index.php @@ -0,0 +1 @@ +?AfzNU07Ji0>J$I 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 literal 0 HcmV?d00001 diff --git a/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/marker-shadow.png b/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/images/marker-shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e773c715a9b508ebea055c4bb4b0a2ad7f6e52 GIT binary patch literal 797 zcmV+&1LFLNP)oNwbRQ6Eq$4M3RDU@$ z<4cV9zWLV=bA&uX9wCpA{{f^4$D#k>GcX53-UQqf>_LzMU@frMz|MwbfQGbY0?ccG zBj_wh0?6Tv;HWR0`x;m^Bm<;sCm_85SGspFBn6|A!tDh$nR`wGorGkyL7j?F3#OJq zIswLIz;iF7f|LMnF(pXPAY*GYpsw%&e_WjlnV`C$6@#Q7GZu1$Q8>&p8=(iJj8o|T~0u%hM*Yg_d(Av{WS$h&pM%nlEAonVL0;DkN|xc zn)9F+aMDk#VtAMb0c=kIb1pU-$e4$3pwo&qVh(Umlw3_IU_dFcFe(In6*x}D4LHLhFZ4N=V2ZR+>XHU5D&uY$npJ7Eu?{iAK>UxC?4uyg4+iD z!nst**H%2zhOBxc7C7Tv{f^`%hqT1KpU@Vf6+C2|bGaR(1~TU5D-1;&HXT~PMc2Lu z{Q%^i6vvox&EMFT7I_)R$xq1779I8kE@?|D*cLWnP0a@a)xJA`o*^$^V(yN)b`kV7 z=o@jbFF4j{KeuQh + var sources = Array.prototype.slice.call(arguments, 1), + i, j, len, src; + + for (j = 0, len = sources.length; j < len; j++) { + src = sources[j] || {}; + for (i in src) { + if (src.hasOwnProperty(i)) { + dest[i] = src[i]; + } + } + } + return dest; + }, + + bind: function (fn, obj) { // (Function, Object) -> Function + var args = arguments.length > 2 ? Array.prototype.slice.call(arguments, 2) : null; + return function () { + return fn.apply(obj, args || arguments); + }; + }, + + stamp: (function () { + var lastId = 0, + key = '_leaflet_id'; + return function (obj) { + obj[key] = obj[key] || ++lastId; + return obj[key]; + }; + }()), + + invokeEach: function (obj, method, context) { + var i, args; + + if (typeof obj === 'object') { + args = Array.prototype.slice.call(arguments, 3); + + for (i in obj) { + method.apply(context, [i, obj[i]].concat(args)); + } + return true; + } + + return false; + }, + + limitExecByInterval: function (fn, time, context) { + var lock, execOnUnlock; + + return function wrapperFn() { + var args = arguments; + + if (lock) { + execOnUnlock = true; + return; + } + + lock = true; + + setTimeout(function () { + lock = false; + + if (execOnUnlock) { + wrapperFn.apply(context, args); + execOnUnlock = false; + } + }, time); + + fn.apply(context, args); + }; + }, + + falseFn: function () { + return false; + }, + + formatNum: function (num, digits) { + var pow = Math.pow(10, digits || 5); + return Math.round(num * pow) / pow; + }, + + trim: function (str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); + }, + + splitWords: function (str) { + return L.Util.trim(str).split(/\s+/); + }, + + setOptions: function (obj, options) { + obj.options = L.extend({}, obj.options, options); + return obj.options; + }, + + getParamString: function (obj, existingUrl, uppercase) { + var params = []; + for (var i in obj) { + params.push(encodeURIComponent(uppercase ? i.toUpperCase() : i) + '=' + encodeURIComponent(obj[i])); + } + return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); + }, + template: function (str, data) { + return str.replace(/\{ *([\w_]+) *\}/g, function (str, key) { + var value = data[key]; + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); + }, + + isArray: Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); + }, + + emptyImageUrl: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' +}; + +(function () { + + // inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + + function getPrefixed(name) { + var i, fn, + prefixes = ['webkit', 'moz', 'o', 'ms']; + + for (i = 0; i < prefixes.length && !fn; i++) { + fn = window[prefixes[i] + name]; + } + + return fn; + } + + var lastTime = 0; + + function timeoutDefer(fn) { + var time = +new Date(), + timeToCall = Math.max(0, 16 - (time - lastTime)); + + lastTime = time + timeToCall; + return window.setTimeout(fn, timeToCall); + } + + var requestFn = window.requestAnimationFrame || + getPrefixed('RequestAnimationFrame') || timeoutDefer; + + var cancelFn = window.cancelAnimationFrame || + getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || + function (id) { window.clearTimeout(id); }; + + + L.Util.requestAnimFrame = function (fn, context, immediate, element) { + fn = L.bind(fn, context); + + if (immediate && requestFn === timeoutDefer) { + fn(); + } else { + return requestFn.call(window, fn, element); + } + }; + + L.Util.cancelAnimFrame = function (id) { + if (id) { + cancelFn.call(window, id); + } + }; + +}()); + +// shortcuts for most used utility functions +L.extend = L.Util.extend; +L.bind = L.Util.bind; +L.stamp = L.Util.stamp; +L.setOptions = L.Util.setOptions; + + +/* + * L.Class powers the OOP facilities of the library. + * Thanks to John Resig and Dean Edwards for inspiration! + */ + +L.Class = function () {}; + +L.Class.extend = function (props) { + + // extended class with the new prototype + var NewClass = function () { + + // call the constructor + if (this.initialize) { + this.initialize.apply(this, arguments); + } + + // call all constructor hooks + if (this._initHooks) { + this.callInitHooks(); + } + }; + + // instantiate class without calling constructor + var F = function () {}; + F.prototype = this.prototype; + + var proto = new F(); + proto.constructor = NewClass; + + NewClass.prototype = proto; + + //inherit parent's statics + for (var i in this) { + if (this.hasOwnProperty(i) && i !== 'prototype') { + NewClass[i] = this[i]; + } + } + + // mix static properties into the class + if (props.statics) { + L.extend(NewClass, props.statics); + delete props.statics; + } + + // mix includes into the prototype + if (props.includes) { + L.Util.extend.apply(null, [proto].concat(props.includes)); + delete props.includes; + } + + // merge options + if (props.options && proto.options) { + props.options = L.extend({}, proto.options, props.options); + } + + // mix given properties into the prototype + L.extend(proto, props); + + proto._initHooks = []; + + var parent = this; + // jshint camelcase: false + NewClass.__super__ = parent.prototype; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parent.prototype.callInitHooks) { + parent.prototype.callInitHooks.call(this); + } + + this._initHooksCalled = true; + + for (var i = 0, len = proto._initHooks.length; i < len; i++) { + proto._initHooks[i].call(this); + } + }; + + return NewClass; +}; + + +// method for adding properties to prototype +L.Class.include = function (props) { + L.extend(this.prototype, props); +}; + +// merge new default options to the Class +L.Class.mergeOptions = function (options) { + L.extend(this.prototype.options, options); +}; + +// add a constructor hook +L.Class.addInitHook = function (fn) { // (Function) || (String, args...) + var args = Array.prototype.slice.call(arguments, 1); + + var init = typeof fn === 'function' ? fn : function () { + this[fn].apply(this, args); + }; + + this.prototype._initHooks = this.prototype._initHooks || []; + this.prototype._initHooks.push(init); +}; + + +/* + * L.Mixin.Events is used to add custom events functionality to Leaflet classes. + */ + +var eventsKey = '_leaflet_events'; + +L.Mixin = {}; + +L.Mixin.Events = { + + addEventListener: function (types, fn, context) { // (String, Function[, Object]) or (Object[, Object]) + + // types can be a map of types/handlers + if (L.Util.invokeEach(types, this.addEventListener, this, fn, context)) { return this; } + + var events = this[eventsKey] = this[eventsKey] || {}, + contextId = context && context !== this && L.stamp(context), + i, len, event, type, indexKey, indexLenKey, typeIndex; + + // types can be a string of space-separated words + types = L.Util.splitWords(types); + + for (i = 0, len = types.length; i < len; i++) { + event = { + action: fn, + context: context || this + }; + type = types[i]; + + if (contextId) { + // store listeners of a particular context in a separate hash (if it has an id) + // gives a major performance boost when removing thousands of map layers + + indexKey = type + '_idx'; + indexLenKey = indexKey + '_len'; + + typeIndex = events[indexKey] = events[indexKey] || {}; + + if (!typeIndex[contextId]) { + typeIndex[contextId] = []; + + // keep track of the number of keys in the index to quickly check if it's empty + events[indexLenKey] = (events[indexLenKey] || 0) + 1; + } + + typeIndex[contextId].push(event); + + + } else { + events[type] = events[type] || []; + events[type].push(event); + } + } + + return this; + }, + + hasEventListeners: function (type) { // (String) -> Boolean + var events = this[eventsKey]; + return !!events && ((type in events && events[type].length > 0) || + (type + '_idx' in events && events[type + '_idx_len'] > 0)); + }, + + removeEventListener: function (types, fn, context) { // ([String, Function, Object]) or (Object[, Object]) + + if (!this[eventsKey]) { + return this; + } + + if (!types) { + return this.clearAllEventListeners(); + } + + if (L.Util.invokeEach(types, this.removeEventListener, this, fn, context)) { return this; } + + var events = this[eventsKey], + contextId = context && context !== this && L.stamp(context), + i, len, type, listeners, j, indexKey, indexLenKey, typeIndex, removed; + + types = L.Util.splitWords(types); + + for (i = 0, len = types.length; i < len; i++) { + type = types[i]; + indexKey = type + '_idx'; + indexLenKey = indexKey + '_len'; + + typeIndex = events[indexKey]; + + if (!fn) { + // clear all listeners for a type if function isn't specified + delete events[type]; + delete events[indexKey]; + delete events[indexLenKey]; + + } else { + listeners = contextId && typeIndex ? typeIndex[contextId] : events[type]; + + if (listeners) { + for (j = listeners.length - 1; j >= 0; j--) { + if ((listeners[j].action === fn) && (!context || (listeners[j].context === context))) { + removed = listeners.splice(j, 1); + // set the old action to a no-op, because it is possible + // that the listener is being iterated over as part of a dispatch + removed[0].action = L.Util.falseFn; + } + } + + if (context && typeIndex && (listeners.length === 0)) { + delete typeIndex[contextId]; + events[indexLenKey]--; + } + } + } + } + + return this; + }, + + clearAllEventListeners: function () { + delete this[eventsKey]; + return this; + }, + + fireEvent: function (type, data) { // (String[, Object]) + if (!this.hasEventListeners(type)) { + return this; + } + + var event = L.Util.extend({}, data, { type: type, target: this }); + + var events = this[eventsKey], + listeners, i, len, typeIndex, contextId; + + if (events[type]) { + // make sure adding/removing listeners inside other listeners won't cause infinite loop + listeners = events[type].slice(); + + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].action.call(listeners[i].context, event); + } + } + + // fire event for the context-indexed listeners as well + typeIndex = events[type + '_idx']; + + for (contextId in typeIndex) { + listeners = typeIndex[contextId].slice(); + + if (listeners) { + for (i = 0, len = listeners.length; i < len; i++) { + listeners[i].action.call(listeners[i].context, event); + } + } + } + + return this; + }, + + addOneTimeEventListener: function (types, fn, context) { + + if (L.Util.invokeEach(types, this.addOneTimeEventListener, this, fn, context)) { return this; } + + var handler = L.bind(function () { + this + .removeEventListener(types, fn, context) + .removeEventListener(types, handler, context); + }, this); + + return this + .addEventListener(types, fn, context) + .addEventListener(types, handler, context); + } +}; + +L.Mixin.Events.on = L.Mixin.Events.addEventListener; +L.Mixin.Events.off = L.Mixin.Events.removeEventListener; +L.Mixin.Events.once = L.Mixin.Events.addOneTimeEventListener; +L.Mixin.Events.fire = L.Mixin.Events.fireEvent; + + +/* + * L.Browser handles different browser and feature detections for internal Leaflet use. + */ + +(function () { + + var ie = 'ActiveXObject' in window, + ielt9 = ie && !document.addEventListener, + + // terrible browser detection to work around Safari / iOS / Android browser bugs + ua = navigator.userAgent.toLowerCase(), + webkit = ua.indexOf('webkit') !== -1, + chrome = ua.indexOf('chrome') !== -1, + phantomjs = ua.indexOf('phantom') !== -1, + android = ua.indexOf('android') !== -1, + android23 = ua.search('android [23]') !== -1, + gecko = ua.indexOf('gecko') !== -1, + + mobile = typeof orientation !== undefined + '', + msPointer = !window.PointerEvent && window.MSPointerEvent, + pointer = (window.PointerEvent && window.navigator.pointerEnabled && window.navigator.maxTouchPoints) || + msPointer, + retina = ('devicePixelRatio' in window && window.devicePixelRatio > 1) || + ('matchMedia' in window && window.matchMedia('(min-resolution:144dpi)') && + window.matchMedia('(min-resolution:144dpi)').matches), + + doc = document.documentElement, + ie3d = ie && ('transition' in doc.style), + webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23, + gecko3d = 'MozPerspective' in doc.style, + opera3d = 'OTransition' in doc.style, + any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d || opera3d) && !phantomjs; + + var touch = !window.L_NO_TOUCH && !phantomjs && (pointer || 'ontouchstart' in window || + (window.DocumentTouch && document instanceof window.DocumentTouch)); + + L.Browser = { + ie: ie, + ielt9: ielt9, + webkit: webkit, + gecko: gecko && !webkit && !window.opera && !ie, + + android: android, + android23: android23, + + chrome: chrome, + + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + opera3d: opera3d, + any3d: any3d, + + mobile: mobile, + mobileWebkit: mobile && webkit, + mobileWebkit3d: mobile && webkit3d, + mobileOpera: mobile && window.opera, + + touch: touch, + msPointer: msPointer, + pointer: pointer, + + retina: retina + }; + +}()); + + +/* + * L.Point represents a point with x and y coordinates. + */ + +L.Point = function (/*Number*/ x, /*Number*/ y, /*Boolean*/ round) { + this.x = (round ? Math.round(x) : x); + this.y = (round ? Math.round(y) : y); +}; + +L.Point.prototype = { + + clone: function () { + return new L.Point(this.x, this.y); + }, + + // non-destructive, returns a new point + add: function (point) { + return this.clone()._add(L.point(point)); + }, + + // destructive, used directly for performance in situations where it's safe to modify existing point + _add: function (point) { + this.x += point.x; + this.y += point.y; + return this; + }, + + subtract: function (point) { + return this.clone()._subtract(L.point(point)); + }, + + _subtract: function (point) { + this.x -= point.x; + this.y -= point.y; + return this; + }, + + divideBy: function (num) { + return this.clone()._divideBy(num); + }, + + _divideBy: function (num) { + this.x /= num; + this.y /= num; + return this; + }, + + multiplyBy: function (num) { + return this.clone()._multiplyBy(num); + }, + + _multiplyBy: function (num) { + this.x *= num; + this.y *= num; + return this; + }, + + round: function () { + return this.clone()._round(); + }, + + _round: function () { + this.x = Math.round(this.x); + this.y = Math.round(this.y); + return this; + }, + + floor: function () { + return this.clone()._floor(); + }, + + _floor: function () { + this.x = Math.floor(this.x); + this.y = Math.floor(this.y); + return this; + }, + + distanceTo: function (point) { + point = L.point(point); + + var x = point.x - this.x, + y = point.y - this.y; + + return Math.sqrt(x * x + y * y); + }, + + equals: function (point) { + point = L.point(point); + + return point.x === this.x && + point.y === this.y; + }, + + contains: function (point) { + point = L.point(point); + + return Math.abs(point.x) <= Math.abs(this.x) && + Math.abs(point.y) <= Math.abs(this.y); + }, + + toString: function () { + return 'Point(' + + L.Util.formatNum(this.x) + ', ' + + L.Util.formatNum(this.y) + ')'; + } +}; + +L.point = function (x, y, round) { + if (x instanceof L.Point) { + return x; + } + if (L.Util.isArray(x)) { + return new L.Point(x[0], x[1]); + } + if (x === undefined || x === null) { + return x; + } + return new L.Point(x, y, round); +}; + + +/* + * L.Bounds represents a rectangular area on the screen in pixel coordinates. + */ + +L.Bounds = function (a, b) { //(Point, Point) or Point[] + if (!a) { return; } + + var points = b ? [a, b] : a; + + for (var i = 0, len = points.length; i < len; i++) { + this.extend(points[i]); + } +}; + +L.Bounds.prototype = { + // extend the bounds to contain the given point + extend: function (point) { // (Point) + point = L.point(point); + + if (!this.min && !this.max) { + this.min = point.clone(); + this.max = point.clone(); + } else { + this.min.x = Math.min(point.x, this.min.x); + this.max.x = Math.max(point.x, this.max.x); + this.min.y = Math.min(point.y, this.min.y); + this.max.y = Math.max(point.y, this.max.y); + } + return this; + }, + + getCenter: function (round) { // (Boolean) -> Point + return new L.Point( + (this.min.x + this.max.x) / 2, + (this.min.y + this.max.y) / 2, round); + }, + + getBottomLeft: function () { // -> Point + return new L.Point(this.min.x, this.max.y); + }, + + getTopRight: function () { // -> Point + return new L.Point(this.max.x, this.min.y); + }, + + getSize: function () { + return this.max.subtract(this.min); + }, + + contains: function (obj) { // (Bounds) or (Point) -> Boolean + var min, max; + + if (typeof obj[0] === 'number' || obj instanceof L.Point) { + obj = L.point(obj); + } else { + obj = L.bounds(obj); + } + + if (obj instanceof L.Bounds) { + min = obj.min; + max = obj.max; + } else { + min = max = obj; + } + + return (min.x >= this.min.x) && + (max.x <= this.max.x) && + (min.y >= this.min.y) && + (max.y <= this.max.y); + }, + + intersects: function (bounds) { // (Bounds) -> Boolean + bounds = L.bounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xIntersects = (max2.x >= min.x) && (min2.x <= max.x), + yIntersects = (max2.y >= min.y) && (min2.y <= max.y); + + return xIntersects && yIntersects; + }, + + isValid: function () { + return !!(this.min && this.max); + } +}; + +L.bounds = function (a, b) { // (Bounds) or (Point, Point) or (Point[]) + if (!a || a instanceof L.Bounds) { + return a; + } + return new L.Bounds(a, b); +}; + + +/* + * L.Transformation is an utility class to perform simple point transformations through a 2d-matrix. + */ + +L.Transformation = function (a, b, c, d) { + this._a = a; + this._b = b; + this._c = c; + this._d = d; +}; + +L.Transformation.prototype = { + transform: function (point, scale) { // (Point, Number) -> Point + return this._transform(point.clone(), scale); + }, + + // destructive transform (faster) + _transform: function (point, scale) { + scale = scale || 1; + point.x = scale * (this._a * point.x + this._b); + point.y = scale * (this._c * point.y + this._d); + return point; + }, + + untransform: function (point, scale) { + scale = scale || 1; + return new L.Point( + (point.x / scale - this._b) / this._a, + (point.y / scale - this._d) / this._c); + } +}; + + +/* + * L.DomUtil contains various utility functions for working with DOM. + */ + +L.DomUtil = { + get: function (id) { + return (typeof id === 'string' ? document.getElementById(id) : id); + }, + + getStyle: function (el, style) { + + var value = el.style[style]; + + if (!value && el.currentStyle) { + value = el.currentStyle[style]; + } + + if ((!value || value === 'auto') && document.defaultView) { + var css = document.defaultView.getComputedStyle(el, null); + value = css ? css[style] : null; + } + + return value === 'auto' ? null : value; + }, + + getViewportOffset: function (element) { + + var top = 0, + left = 0, + el = element, + docBody = document.body, + docEl = document.documentElement, + pos; + + do { + top += el.offsetTop || 0; + left += el.offsetLeft || 0; + + //add borders + top += parseInt(L.DomUtil.getStyle(el, 'borderTopWidth'), 10) || 0; + left += parseInt(L.DomUtil.getStyle(el, 'borderLeftWidth'), 10) || 0; + + pos = L.DomUtil.getStyle(el, 'position'); + + if (el.offsetParent === docBody && pos === 'absolute') { break; } + + if (pos === 'fixed') { + top += docBody.scrollTop || docEl.scrollTop || 0; + left += docBody.scrollLeft || docEl.scrollLeft || 0; + break; + } + + if (pos === 'relative' && !el.offsetLeft) { + var width = L.DomUtil.getStyle(el, 'width'), + maxWidth = L.DomUtil.getStyle(el, 'max-width'), + r = el.getBoundingClientRect(); + + if (width !== 'none' || maxWidth !== 'none') { + left += r.left + el.clientLeft; + } + + //calculate full y offset since we're breaking out of the loop + top += r.top + (docBody.scrollTop || docEl.scrollTop || 0); + + break; + } + + el = el.offsetParent; + + } while (el); + + el = element; + + do { + if (el === docBody) { break; } + + top -= el.scrollTop || 0; + left -= el.scrollLeft || 0; + + el = el.parentNode; + } while (el); + + return new L.Point(left, top); + }, + + documentIsLtr: function () { + if (!L.DomUtil._docIsLtrCached) { + L.DomUtil._docIsLtrCached = true; + L.DomUtil._docIsLtr = L.DomUtil.getStyle(document.body, 'direction') === 'ltr'; + } + return L.DomUtil._docIsLtr; + }, + + create: function (tagName, className, container) { + + var el = document.createElement(tagName); + el.className = className; + + if (container) { + container.appendChild(el); + } + + return el; + }, + + hasClass: function (el, name) { + if (el.classList !== undefined) { + return el.classList.contains(name); + } + var className = L.DomUtil._getClass(el); + return className.length > 0 && new RegExp('(^|\\s)' + name + '(\\s|$)').test(className); + }, + + addClass: function (el, name) { + if (el.classList !== undefined) { + var classes = L.Util.splitWords(name); + for (var i = 0, len = classes.length; i < len; i++) { + el.classList.add(classes[i]); + } + } else if (!L.DomUtil.hasClass(el, name)) { + var className = L.DomUtil._getClass(el); + L.DomUtil._setClass(el, (className ? className + ' ' : '') + name); + } + }, + + removeClass: function (el, name) { + if (el.classList !== undefined) { + el.classList.remove(name); + } else { + L.DomUtil._setClass(el, L.Util.trim((' ' + L.DomUtil._getClass(el) + ' ').replace(' ' + name + ' ', ' '))); + } + }, + + _setClass: function (el, name) { + if (el.className.baseVal === undefined) { + el.className = name; + } else { + // in case of SVG element + el.className.baseVal = name; + } + }, + + _getClass: function (el) { + return el.className.baseVal === undefined ? el.className : el.className.baseVal; + }, + + setOpacity: function (el, value) { + + if ('opacity' in el.style) { + el.style.opacity = value; + + } else if ('filter' in el.style) { + + var filter = false, + filterName = 'DXImageTransform.Microsoft.Alpha'; + + // filters collection throws an error if we try to retrieve a filter that doesn't exist + try { + filter = el.filters.item(filterName); + } catch (e) { + // don't set opacity to 1 if we haven't already set an opacity, + // it isn't needed and breaks transparent pngs. + if (value === 1) { return; } + } + + value = Math.round(value * 100); + + if (filter) { + filter.Enabled = (value !== 100); + filter.Opacity = value; + } else { + el.style.filter += ' progid:' + filterName + '(opacity=' + value + ')'; + } + } + }, + + testProp: function (props) { + + var style = document.documentElement.style; + + for (var i = 0; i < props.length; i++) { + if (props[i] in style) { + return props[i]; + } + } + return false; + }, + + getTranslateString: function (point) { + // on WebKit browsers (Chrome/Safari/iOS Safari/Android) using translate3d instead of translate + // makes animation smoother as it ensures HW accel is used. Firefox 13 doesn't care + // (same speed either way), Opera 12 doesn't support translate3d + + var is3d = L.Browser.webkit3d, + open = 'translate' + (is3d ? '3d' : '') + '(', + close = (is3d ? ',0' : '') + ')'; + + return open + point.x + 'px,' + point.y + 'px' + close; + }, + + getScaleString: function (scale, origin) { + + var preTranslateStr = L.DomUtil.getTranslateString(origin.add(origin.multiplyBy(-1 * scale))), + scaleStr = ' scale(' + scale + ') '; + + return preTranslateStr + scaleStr; + }, + + setPosition: function (el, point, disable3D) { // (HTMLElement, Point[, Boolean]) + + // jshint camelcase: false + el._leaflet_pos = point; + + if (!disable3D && L.Browser.any3d) { + el.style[L.DomUtil.TRANSFORM] = L.DomUtil.getTranslateString(point); + } else { + el.style.left = point.x + 'px'; + el.style.top = point.y + 'px'; + } + }, + + getPosition: function (el) { + // this method is only used for elements previously positioned using setPosition, + // so it's safe to cache the position for performance + + // jshint camelcase: false + return el._leaflet_pos; + } +}; + + +// prefix style property names + +L.DomUtil.TRANSFORM = L.DomUtil.testProp( + ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform']); + +// webkitTransition comes first because some browser versions that drop vendor prefix don't do +// the same for the transitionend event, in particular the Android 4.1 stock browser + +L.DomUtil.TRANSITION = L.DomUtil.testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + +L.DomUtil.TRANSITION_END = + L.DomUtil.TRANSITION === 'webkitTransition' || L.DomUtil.TRANSITION === 'OTransition' ? + L.DomUtil.TRANSITION + 'End' : 'transitionend'; + +(function () { + if ('onselectstart' in document) { + L.extend(L.DomUtil, { + disableTextSelection: function () { + L.DomEvent.on(window, 'selectstart', L.DomEvent.preventDefault); + }, + + enableTextSelection: function () { + L.DomEvent.off(window, 'selectstart', L.DomEvent.preventDefault); + } + }); + } else { + var userSelectProperty = L.DomUtil.testProp( + ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); + + L.extend(L.DomUtil, { + disableTextSelection: function () { + if (userSelectProperty) { + var style = document.documentElement.style; + this._userSelect = style[userSelectProperty]; + style[userSelectProperty] = 'none'; + } + }, + + enableTextSelection: function () { + if (userSelectProperty) { + document.documentElement.style[userSelectProperty] = this._userSelect; + delete this._userSelect; + } + } + }); + } + + L.extend(L.DomUtil, { + disableImageDrag: function () { + L.DomEvent.on(window, 'dragstart', L.DomEvent.preventDefault); + }, + + enableImageDrag: function () { + L.DomEvent.off(window, 'dragstart', L.DomEvent.preventDefault); + } + }); +})(); + + +/* + * L.LatLng represents a geographical point with latitude and longitude coordinates. + */ + +L.LatLng = function (lat, lng, alt) { // (Number, Number, Number) + lat = parseFloat(lat); + lng = parseFloat(lng); + + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + this.lat = lat; + this.lng = lng; + + if (alt !== undefined) { + this.alt = parseFloat(alt); + } +}; + +L.extend(L.LatLng, { + DEG_TO_RAD: Math.PI / 180, + RAD_TO_DEG: 180 / Math.PI, + MAX_MARGIN: 1.0E-9 // max margin of error for the "equals" check +}); + +L.LatLng.prototype = { + equals: function (obj) { // (LatLng) -> Boolean + if (!obj) { return false; } + + obj = L.latLng(obj); + + var margin = Math.max( + Math.abs(this.lat - obj.lat), + Math.abs(this.lng - obj.lng)); + + return margin <= L.LatLng.MAX_MARGIN; + }, + + toString: function (precision) { // (Number) -> String + return 'LatLng(' + + L.Util.formatNum(this.lat, precision) + ', ' + + L.Util.formatNum(this.lng, precision) + ')'; + }, + + // Haversine distance formula, see http://en.wikipedia.org/wiki/Haversine_formula + // TODO move to projection code, LatLng shouldn't know about Earth + distanceTo: function (other) { // (LatLng) -> Number + other = L.latLng(other); + + var R = 6378137, // earth radius in meters + d2r = L.LatLng.DEG_TO_RAD, + dLat = (other.lat - this.lat) * d2r, + dLon = (other.lng - this.lng) * d2r, + lat1 = this.lat * d2r, + lat2 = other.lat * d2r, + sin1 = Math.sin(dLat / 2), + sin2 = Math.sin(dLon / 2); + + var a = sin1 * sin1 + sin2 * sin2 * Math.cos(lat1) * Math.cos(lat2); + + return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); + }, + + wrap: function (a, b) { // (Number, Number) -> LatLng + var lng = this.lng; + + a = a || -180; + b = b || 180; + + lng = (lng + b) % (b - a) + (lng < a || lng === b ? b : a); + + return new L.LatLng(this.lat, lng); + } +}; + +L.latLng = function (a, b) { // (LatLng) or ([Number, Number]) or (Number, Number) + if (a instanceof L.LatLng) { + return a; + } + if (L.Util.isArray(a)) { + if (typeof a[0] === 'number' || typeof a[0] === 'string') { + return new L.LatLng(a[0], a[1], a[2]); + } else { + return null; + } + } + if (a === undefined || a === null) { + return a; + } + if (typeof a === 'object' && 'lat' in a) { + return new L.LatLng(a.lat, 'lng' in a ? a.lng : a.lon); + } + if (b === undefined) { + return null; + } + return new L.LatLng(a, b); +}; + + + +/* + * L.LatLngBounds represents a rectangular area on the map in geographical coordinates. + */ + +L.LatLngBounds = function (southWest, northEast) { // (LatLng, LatLng) or (LatLng[]) + if (!southWest) { return; } + + var latlngs = northEast ? [southWest, northEast] : southWest; + + for (var i = 0, len = latlngs.length; i < len; i++) { + this.extend(latlngs[i]); + } +}; + +L.LatLngBounds.prototype = { + // extend the bounds to contain the given point or bounds + extend: function (obj) { // (LatLng) or (LatLngBounds) + if (!obj) { return this; } + + var latLng = L.latLng(obj); + if (latLng !== null) { + obj = latLng; + } else { + obj = L.latLngBounds(obj); + } + + if (obj instanceof L.LatLng) { + if (!this._southWest && !this._northEast) { + this._southWest = new L.LatLng(obj.lat, obj.lng); + this._northEast = new L.LatLng(obj.lat, obj.lng); + } else { + this._southWest.lat = Math.min(obj.lat, this._southWest.lat); + this._southWest.lng = Math.min(obj.lng, this._southWest.lng); + + this._northEast.lat = Math.max(obj.lat, this._northEast.lat); + this._northEast.lng = Math.max(obj.lng, this._northEast.lng); + } + } else if (obj instanceof L.LatLngBounds) { + this.extend(obj._southWest); + this.extend(obj._northEast); + } + return this; + }, + + // extend the bounds by a percentage + pad: function (bufferRatio) { // (Number) -> LatLngBounds + var sw = this._southWest, + ne = this._northEast, + heightBuffer = Math.abs(sw.lat - ne.lat) * bufferRatio, + widthBuffer = Math.abs(sw.lng - ne.lng) * bufferRatio; + + return new L.LatLngBounds( + new L.LatLng(sw.lat - heightBuffer, sw.lng - widthBuffer), + new L.LatLng(ne.lat + heightBuffer, ne.lng + widthBuffer)); + }, + + getCenter: function () { // -> LatLng + return new L.LatLng( + (this._southWest.lat + this._northEast.lat) / 2, + (this._southWest.lng + this._northEast.lng) / 2); + }, + + getSouthWest: function () { + return this._southWest; + }, + + getNorthEast: function () { + return this._northEast; + }, + + getNorthWest: function () { + return new L.LatLng(this.getNorth(), this.getWest()); + }, + + getSouthEast: function () { + return new L.LatLng(this.getSouth(), this.getEast()); + }, + + getWest: function () { + return this._southWest.lng; + }, + + getSouth: function () { + return this._southWest.lat; + }, + + getEast: function () { + return this._northEast.lng; + }, + + getNorth: function () { + return this._northEast.lat; + }, + + contains: function (obj) { // (LatLngBounds) or (LatLng) -> Boolean + if (typeof obj[0] === 'number' || obj instanceof L.LatLng) { + obj = L.latLng(obj); + } else { + obj = L.latLngBounds(obj); + } + + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof L.LatLngBounds) { + sw2 = obj.getSouthWest(); + ne2 = obj.getNorthEast(); + } else { + sw2 = ne2 = obj; + } + + return (sw2.lat >= sw.lat) && (ne2.lat <= ne.lat) && + (sw2.lng >= sw.lng) && (ne2.lng <= ne.lng); + }, + + intersects: function (bounds) { // (LatLngBounds) + bounds = L.latLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latIntersects = (ne2.lat >= sw.lat) && (sw2.lat <= ne.lat), + lngIntersects = (ne2.lng >= sw.lng) && (sw2.lng <= ne.lng); + + return latIntersects && lngIntersects; + }, + + toBBoxString: function () { + return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(','); + }, + + equals: function (bounds) { // (LatLngBounds) + if (!bounds) { return false; } + + bounds = L.latLngBounds(bounds); + + return this._southWest.equals(bounds.getSouthWest()) && + this._northEast.equals(bounds.getNorthEast()); + }, + + isValid: function () { + return !!(this._southWest && this._northEast); + } +}; + +//TODO International date line? + +L.latLngBounds = function (a, b) { // (LatLngBounds) or (LatLng, LatLng) + if (!a || a instanceof L.LatLngBounds) { + return a; + } + return new L.LatLngBounds(a, b); +}; + + +/* + * L.Projection contains various geographical projections used by CRS classes. + */ + +L.Projection = {}; + + +/* + * Spherical Mercator is the most popular map projection, used by EPSG:3857 CRS used by default. + */ + +L.Projection.SphericalMercator = { + MAX_LATITUDE: 85.0511287798, + + project: function (latlng) { // (LatLng) -> Point + var d = L.LatLng.DEG_TO_RAD, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + x = latlng.lng * d, + y = lat * d; + + y = Math.log(Math.tan((Math.PI / 4) + (y / 2))); + + return new L.Point(x, y); + }, + + unproject: function (point) { // (Point, Boolean) -> LatLng + var d = L.LatLng.RAD_TO_DEG, + lng = point.x * d, + lat = (2 * Math.atan(Math.exp(point.y)) - (Math.PI / 2)) * d; + + return new L.LatLng(lat, lng); + } +}; + + +/* + * Simple equirectangular (Plate Carree) projection, used by CRS like EPSG:4326 and Simple. + */ + +L.Projection.LonLat = { + project: function (latlng) { + return new L.Point(latlng.lng, latlng.lat); + }, + + unproject: function (point) { + return new L.LatLng(point.y, point.x); + } +}; + + +/* + * L.CRS is a base object for all defined CRS (Coordinate Reference Systems) in Leaflet. + */ + +L.CRS = { + latLngToPoint: function (latlng, zoom) { // (LatLng, Number) -> Point + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + pointToLatLng: function (point, zoom) { // (Point, Number[, Boolean]) -> LatLng + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + project: function (latlng) { + return this.projection.project(latlng); + }, + + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + getSize: function (zoom) { + var s = this.scale(zoom); + return L.point(s, s); + } +}; + + +/* + * A simple CRS that can be used for flat non-Earth maps like panoramas or game maps. + */ + +L.CRS.Simple = L.extend({}, L.CRS, { + projection: L.Projection.LonLat, + transformation: new L.Transformation(1, 0, -1, 0), + + scale: function (zoom) { + return Math.pow(2, zoom); + } +}); + + +/* + * L.CRS.EPSG3857 (Spherical Mercator) is the most common CRS for web mapping + * and is used by Leaflet by default. + */ + +L.CRS.EPSG3857 = L.extend({}, L.CRS, { + code: 'EPSG:3857', + + projection: L.Projection.SphericalMercator, + transformation: new L.Transformation(0.5 / Math.PI, 0.5, -0.5 / Math.PI, 0.5), + + project: function (latlng) { // (LatLng) -> Point + var projectedPoint = this.projection.project(latlng), + earthRadius = 6378137; + return projectedPoint.multiplyBy(earthRadius); + } +}); + +L.CRS.EPSG900913 = L.extend({}, L.CRS.EPSG3857, { + code: 'EPSG:900913' +}); + + +/* + * L.CRS.EPSG4326 is a CRS popular among advanced GIS specialists. + */ + +L.CRS.EPSG4326 = L.extend({}, L.CRS, { + code: 'EPSG:4326', + + projection: L.Projection.LonLat, + transformation: new L.Transformation(1 / 360, 0.5, -1 / 360, 0.5) +}); + + +/* + * L.Map is the central class of the API - it is used to create a map. + */ + +L.Map = L.Class.extend({ + + includes: L.Mixin.Events, + + options: { + crs: L.CRS.EPSG3857, + + /* + center: LatLng, + zoom: Number, + layers: Array, + */ + + fadeAnimation: L.DomUtil.TRANSITION && !L.Browser.android23, + trackResize: true, + markerZoomAnimation: L.DomUtil.TRANSITION && L.Browser.any3d + }, + + initialize: function (id, options) { // (HTMLElement or String, Object) + options = L.setOptions(this, options); + + + this._initContainer(id); + this._initLayout(); + + // hack for https://github.com/Leaflet/Leaflet/issues/1980 + this._onResize = L.bind(this._onResize, this); + + this._initEvents(); + + if (options.maxBounds) { + this.setMaxBounds(options.maxBounds); + } + + if (options.center && options.zoom !== undefined) { + this.setView(L.latLng(options.center), options.zoom, {reset: true}); + } + + this._handlers = []; + + this._layers = {}; + this._zoomBoundLayers = {}; + this._tileLayersNum = 0; + + this.callInitHooks(); + + this._addLayers(options.layers); + }, + + + // public methods that modify map state + + // replaced by animation-powered implementation in Map.PanAnimation.js + setView: function (center, zoom) { + zoom = zoom === undefined ? this.getZoom() : zoom; + this._resetView(L.latLng(center), this._limitZoom(zoom)); + return this; + }, + + setZoom: function (zoom, options) { + if (!this._loaded) { + this._zoom = this._limitZoom(zoom); + return this; + } + return this.setView(this.getCenter(), zoom, {zoom: options}); + }, + + zoomIn: function (delta, options) { + return this.setZoom(this._zoom + (delta || 1), options); + }, + + zoomOut: function (delta, options) { + return this.setZoom(this._zoom - (delta || 1), options); + }, + + setZoomAround: function (latlng, zoom, options) { + var scale = this.getZoomScale(zoom), + viewHalf = this.getSize().divideBy(2), + containerPoint = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng), + + centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale), + newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + + return this.setView(newCenter, zoom, {zoom: options}); + }, + + fitBounds: function (bounds, options) { + + options = options || {}; + bounds = bounds.getBounds ? bounds.getBounds() : L.latLngBounds(bounds); + + var paddingTL = L.point(options.paddingTopLeft || options.padding || [0, 0]), + paddingBR = L.point(options.paddingBottomRight || options.padding || [0, 0]), + + zoom = this.getBoundsZoom(bounds, false, paddingTL.add(paddingBR)); + + zoom = (options.maxZoom) ? Math.min(options.maxZoom, zoom) : zoom; + + var paddingOffset = paddingBR.subtract(paddingTL).divideBy(2), + + swPoint = this.project(bounds.getSouthWest(), zoom), + nePoint = this.project(bounds.getNorthEast(), zoom), + center = this.unproject(swPoint.add(nePoint).divideBy(2).add(paddingOffset), zoom); + + return this.setView(center, zoom, options); + }, + + fitWorld: function (options) { + return this.fitBounds([[-90, -180], [90, 180]], options); + }, + + panTo: function (center, options) { // (LatLng) + return this.setView(center, this._zoom, {pan: options}); + }, + + panBy: function (offset) { // (Point) + // replaced with animated panBy in Map.PanAnimation.js + this.fire('movestart'); + + this._rawPanBy(L.point(offset)); + + this.fire('move'); + return this.fire('moveend'); + }, + + setMaxBounds: function (bounds) { + bounds = L.latLngBounds(bounds); + + this.options.maxBounds = bounds; + + if (!bounds) { + return this.off('moveend', this._panInsideMaxBounds, this); + } + + if (this._loaded) { + this._panInsideMaxBounds(); + } + + return this.on('moveend', this._panInsideMaxBounds, this); + }, + + panInsideBounds: function (bounds, options) { + var center = this.getCenter(), + newCenter = this._limitCenter(center, this._zoom, bounds); + + if (center.equals(newCenter)) { return this; } + + return this.panTo(newCenter, options); + }, + + addLayer: function (layer) { + // TODO method is too big, refactor + + var id = L.stamp(layer); + + if (this._layers[id]) { return this; } + + this._layers[id] = layer; + + // TODO getMaxZoom, getMinZoom in ILayer (instead of options) + if (layer.options && (!isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom))) { + this._zoomBoundLayers[id] = layer; + this._updateZoomLevels(); + } + + // TODO looks ugly, refactor!!! + if (this.options.zoomAnimation && L.TileLayer && (layer instanceof L.TileLayer)) { + this._tileLayersNum++; + this._tileLayersToLoad++; + layer.on('load', this._onTileLayerLoad, this); + } + + if (this._loaded) { + this._layerAdd(layer); + } + + return this; + }, + + removeLayer: function (layer) { + var id = L.stamp(layer); + + if (!this._layers[id]) { return this; } + + if (this._loaded) { + layer.onRemove(this); + } + + delete this._layers[id]; + + if (this._loaded) { + this.fire('layerremove', {layer: layer}); + } + + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + + // TODO looks ugly, refactor + if (this.options.zoomAnimation && L.TileLayer && (layer instanceof L.TileLayer)) { + this._tileLayersNum--; + this._tileLayersToLoad--; + layer.off('load', this._onTileLayerLoad, this); + } + + return this; + }, + + hasLayer: function (layer) { + if (!layer) { return false; } + + return (L.stamp(layer) in this._layers); + }, + + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + invalidateSize: function (options) { + if (!this._loaded) { return this; } + + options = L.extend({ + animate: false, + pan: true + }, options === true ? {animate: true} : options); + + var oldSize = this.getSize(); + this._sizeChanged = true; + this._initialCenter = null; + + var newSize = this.getSize(), + oldCenter = oldSize.divideBy(2).round(), + newCenter = newSize.divideBy(2).round(), + offset = oldCenter.subtract(newCenter); + + if (!offset.x && !offset.y) { return this; } + + if (options.animate && options.pan) { + this.panBy(offset); + + } else { + if (options.pan) { + this._rawPanBy(offset); + } + + this.fire('move'); + + if (options.debounceMoveend) { + clearTimeout(this._sizeTimer); + this._sizeTimer = setTimeout(L.bind(this.fire, this, 'moveend'), 200); + } else { + this.fire('moveend'); + } + } + + return this.fire('resize', { + oldSize: oldSize, + newSize: newSize + }); + }, + + // TODO handler.addTo + addHandler: function (name, HandlerClass) { + if (!HandlerClass) { return this; } + + var handler = this[name] = new HandlerClass(this); + + this._handlers.push(handler); + + if (this.options[name]) { + handler.enable(); + } + + return this; + }, + + remove: function () { + if (this._loaded) { + this.fire('unload'); + } + + this._initEvents('off'); + + try { + // throws error in IE6-8 + delete this._container._leaflet; + } catch (e) { + this._container._leaflet = undefined; + } + + this._clearPanes(); + if (this._clearControlPos) { + this._clearControlPos(); + } + + this._clearHandlers(); + + return this; + }, + + + // public methods for getting map state + + getCenter: function () { // (Boolean) -> LatLng + this._checkIfLoaded(); + + if (this._initialCenter && !this._moved()) { + return this._initialCenter; + } + return this.layerPointToLatLng(this._getCenterLayerPoint()); + }, + + getZoom: function () { + return this._zoom; + }, + + getBounds: function () { + var bounds = this.getPixelBounds(), + sw = this.unproject(bounds.getBottomLeft()), + ne = this.unproject(bounds.getTopRight()); + + return new L.LatLngBounds(sw, ne); + }, + + getMinZoom: function () { + return this.options.minZoom === undefined ? + (this._layersMinZoom === undefined ? 0 : this._layersMinZoom) : + this.options.minZoom; + }, + + getMaxZoom: function () { + return this.options.maxZoom === undefined ? + (this._layersMaxZoom === undefined ? Infinity : this._layersMaxZoom) : + this.options.maxZoom; + }, + + getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number + bounds = L.latLngBounds(bounds); + + var zoom = this.getMinZoom() - (inside ? 1 : 0), + maxZoom = this.getMaxZoom(), + size = this.getSize(), + + nw = bounds.getNorthWest(), + se = bounds.getSouthEast(), + + zoomNotFound = true, + boundsSize; + + padding = L.point(padding || [0, 0]); + + do { + zoom++; + boundsSize = this.project(se, zoom).subtract(this.project(nw, zoom)).add(padding); + zoomNotFound = !inside ? size.contains(boundsSize) : boundsSize.x < size.x || boundsSize.y < size.y; + + } while (zoomNotFound && zoom <= maxZoom); + + if (zoomNotFound && inside) { + return null; + } + + return inside ? zoom : zoom - 1; + }, + + getSize: function () { + if (!this._size || this._sizeChanged) { + this._size = new L.Point( + this._container.clientWidth, + this._container.clientHeight); + + this._sizeChanged = false; + } + return this._size.clone(); + }, + + getPixelBounds: function () { + var topLeftPoint = this._getTopLeftPoint(); + return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + getPixelOrigin: function () { + this._checkIfLoaded(); + return this._initialTopLeftPoint; + }, + + getPanes: function () { + return this._panes; + }, + + getContainer: function () { + return this._container; + }, + + + // TODO replace with universal implementation after refactoring projections + + getZoomScale: function (toZoom) { + var crs = this.options.crs; + return crs.scale(toZoom) / crs.scale(this._zoom); + }, + + getScaleZoom: function (scale) { + return this._zoom + (Math.log(scale) / Math.LN2); + }, + + + // conversion methods + + project: function (latlng, zoom) { // (LatLng[, Number]) -> Point + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.latLngToPoint(L.latLng(latlng), zoom); + }, + + unproject: function (point, zoom) { // (Point[, Number]) -> LatLng + zoom = zoom === undefined ? this._zoom : zoom; + return this.options.crs.pointToLatLng(L.point(point), zoom); + }, + + layerPointToLatLng: function (point) { // (Point) + var projectedPoint = L.point(point).add(this.getPixelOrigin()); + return this.unproject(projectedPoint); + }, + + latLngToLayerPoint: function (latlng) { // (LatLng) + var projectedPoint = this.project(L.latLng(latlng))._round(); + return projectedPoint._subtract(this.getPixelOrigin()); + }, + + containerPointToLayerPoint: function (point) { // (Point) + return L.point(point).subtract(this._getMapPanePos()); + }, + + layerPointToContainerPoint: function (point) { // (Point) + return L.point(point).add(this._getMapPanePos()); + }, + + containerPointToLatLng: function (point) { + var layerPoint = this.containerPointToLayerPoint(L.point(point)); + return this.layerPointToLatLng(layerPoint); + }, + + latLngToContainerPoint: function (latlng) { + return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng))); + }, + + mouseEventToContainerPoint: function (e) { // (MouseEvent) + return L.DomEvent.getMousePosition(e, this._container); + }, + + mouseEventToLayerPoint: function (e) { // (MouseEvent) + return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(e)); + }, + + mouseEventToLatLng: function (e) { // (MouseEvent) + return this.layerPointToLatLng(this.mouseEventToLayerPoint(e)); + }, + + + // map initialization methods + + _initContainer: function (id) { + var container = this._container = L.DomUtil.get(id); + + if (!container) { + throw new Error('Map container not found.'); + } else if (container._leaflet) { + throw new Error('Map container is already initialized.'); + } + + container._leaflet = true; + }, + + _initLayout: function () { + var container = this._container; + + L.DomUtil.addClass(container, 'leaflet-container' + + (L.Browser.touch ? ' leaflet-touch' : '') + + (L.Browser.retina ? ' leaflet-retina' : '') + + (L.Browser.ielt9 ? ' leaflet-oldie' : '') + + (this.options.fadeAnimation ? ' leaflet-fade-anim' : '')); + + var position = L.DomUtil.getStyle(container, 'position'); + + if (position !== 'absolute' && position !== 'relative' && position !== 'fixed') { + container.style.position = 'relative'; + } + + this._initPanes(); + + if (this._initControlPos) { + this._initControlPos(); + } + }, + + _initPanes: function () { + var panes = this._panes = {}; + + this._mapPane = panes.mapPane = this._createPane('leaflet-map-pane', this._container); + + this._tilePane = panes.tilePane = this._createPane('leaflet-tile-pane', this._mapPane); + panes.objectsPane = this._createPane('leaflet-objects-pane', this._mapPane); + panes.shadowPane = this._createPane('leaflet-shadow-pane'); + panes.overlayPane = this._createPane('leaflet-overlay-pane'); + panes.markerPane = this._createPane('leaflet-marker-pane'); + panes.popupPane = this._createPane('leaflet-popup-pane'); + + var zoomHide = ' leaflet-zoom-hide'; + + if (!this.options.markerZoomAnimation) { + L.DomUtil.addClass(panes.markerPane, zoomHide); + L.DomUtil.addClass(panes.shadowPane, zoomHide); + L.DomUtil.addClass(panes.popupPane, zoomHide); + } + }, + + _createPane: function (className, container) { + return L.DomUtil.create('div', className, container || this._panes.objectsPane); + }, + + _clearPanes: function () { + this._container.removeChild(this._mapPane); + }, + + _addLayers: function (layers) { + layers = layers ? (L.Util.isArray(layers) ? layers : [layers]) : []; + + for (var i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + }, + + + // private methods that modify map state + + _resetView: function (center, zoom, preserveMapOffset, afterZoomAnim) { + + var zoomChanged = (this._zoom !== zoom); + + if (!afterZoomAnim) { + this.fire('movestart'); + + if (zoomChanged) { + this.fire('zoomstart'); + } + } + + this._zoom = zoom; + this._initialCenter = center; + + this._initialTopLeftPoint = this._getNewTopLeftPoint(center); + + if (!preserveMapOffset) { + L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0)); + } else { + this._initialTopLeftPoint._add(this._getMapPanePos()); + } + + this._tileLayersToLoad = this._tileLayersNum; + + var loading = !this._loaded; + this._loaded = true; + + this.fire('viewreset', {hard: !preserveMapOffset}); + + if (loading) { + this.fire('load'); + this.eachLayer(this._layerAdd, this); + } + + this.fire('move'); + + if (zoomChanged || afterZoomAnim) { + this.fire('zoomend'); + } + + this.fire('moveend', {hard: !preserveMapOffset}); + }, + + _rawPanBy: function (offset) { + L.DomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _getZoomSpan: function () { + return this.getMaxZoom() - this.getMinZoom(); + }, + + _updateZoomLevels: function () { + var i, + minZoom = Infinity, + maxZoom = -Infinity, + oldZoomSpan = this._getZoomSpan(); + + for (i in this._zoomBoundLayers) { + var layer = this._zoomBoundLayers[i]; + if (!isNaN(layer.options.minZoom)) { + minZoom = Math.min(minZoom, layer.options.minZoom); + } + if (!isNaN(layer.options.maxZoom)) { + maxZoom = Math.max(maxZoom, layer.options.maxZoom); + } + } + + if (i === undefined) { // we have no tilelayers + this._layersMaxZoom = this._layersMinZoom = undefined; + } else { + this._layersMaxZoom = maxZoom; + this._layersMinZoom = minZoom; + } + + if (oldZoomSpan !== this._getZoomSpan()) { + this.fire('zoomlevelschange'); + } + }, + + _panInsideMaxBounds: function () { + this.panInsideBounds(this.options.maxBounds); + }, + + _checkIfLoaded: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + }, + + // map events + + _initEvents: function (onOff) { + if (!L.DomEvent) { return; } + + onOff = onOff || 'on'; + + L.DomEvent[onOff](this._container, 'click', this._onMouseClick, this); + + var events = ['dblclick', 'mousedown', 'mouseup', 'mouseenter', + 'mouseleave', 'mousemove', 'contextmenu'], + i, len; + + for (i = 0, len = events.length; i < len; i++) { + L.DomEvent[onOff](this._container, events[i], this._fireMouseEvent, this); + } + + if (this.options.trackResize) { + L.DomEvent[onOff](window, 'resize', this._onResize, this); + } + }, + + _onResize: function () { + L.Util.cancelAnimFrame(this._resizeRequest); + this._resizeRequest = L.Util.requestAnimFrame( + function () { this.invalidateSize({debounceMoveend: true}); }, this, false, this._container); + }, + + _onMouseClick: function (e) { + if (!this._loaded || (!e._simulated && + ((this.dragging && this.dragging.moved()) || + (this.boxZoom && this.boxZoom.moved()))) || + L.DomEvent._skipped(e)) { return; } + + this.fire('preclick'); + this._fireMouseEvent(e); + }, + + _fireMouseEvent: function (e) { + if (!this._loaded || L.DomEvent._skipped(e)) { return; } + + var type = e.type; + + type = (type === 'mouseenter' ? 'mouseover' : (type === 'mouseleave' ? 'mouseout' : type)); + + if (!this.hasEventListeners(type)) { return; } + + if (type === 'contextmenu') { + L.DomEvent.preventDefault(e); + } + + var containerPoint = this.mouseEventToContainerPoint(e), + layerPoint = this.containerPointToLayerPoint(containerPoint), + latlng = this.layerPointToLatLng(layerPoint); + + this.fire(type, { + latlng: latlng, + layerPoint: layerPoint, + containerPoint: containerPoint, + originalEvent: e + }); + }, + + _onTileLayerLoad: function () { + this._tileLayersToLoad--; + if (this._tileLayersNum && !this._tileLayersToLoad) { + this.fire('tilelayersload'); + } + }, + + _clearHandlers: function () { + for (var i = 0, len = this._handlers.length; i < len; i++) { + this._handlers[i].disable(); + } + }, + + whenReady: function (callback, context) { + if (this._loaded) { + callback.call(context || this, this); + } else { + this.on('load', callback, context); + } + return this; + }, + + _layerAdd: function (layer) { + layer.onAdd(this); + this.fire('layeradd', {layer: layer}); + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return L.DomUtil.getPosition(this._mapPane); + }, + + _moved: function () { + var pos = this._getMapPanePos(); + return pos && !pos.equals([0, 0]); + }, + + _getTopLeftPoint: function () { + return this.getPixelOrigin().subtract(this._getMapPanePos()); + }, + + _getNewTopLeftPoint: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + // TODO round on display, not calculation to increase precision? + return this.project(center, zoom)._subtract(viewHalf)._round(); + }, + + _latLngToNewLayerPoint: function (latlng, newZoom, newCenter) { + var topLeft = this._getNewTopLeftPoint(newCenter, newZoom).add(this._getMapPanePos()); + return this.project(latlng, newZoom)._subtract(topLeft); + }, + + // layer point of the current center + _getCenterLayerPoint: function () { + return this.containerPointToLayerPoint(this.getSize()._divideBy(2)); + }, + + // offset of the specified place to the current center in pixels + _getCenterOffset: function (latlng) { + return this.latLngToLayerPoint(latlng).subtract(this._getCenterLayerPoint()); + }, + + // adjust center for view to get inside bounds + _limitCenter: function (center, zoom, bounds) { + + if (!bounds) { return center; } + + var centerPoint = this.project(center, zoom), + viewHalf = this.getSize().divideBy(2), + viewBounds = new L.Bounds(centerPoint.subtract(viewHalf), centerPoint.add(viewHalf)), + offset = this._getBoundsOffset(viewBounds, bounds, zoom); + + return this.unproject(centerPoint.add(offset), zoom); + }, + + // adjust offset for view to get inside bounds + _limitOffset: function (offset, bounds) { + if (!bounds) { return offset; } + + var viewBounds = this.getPixelBounds(), + newBounds = new L.Bounds(viewBounds.min.add(offset), viewBounds.max.add(offset)); + + return offset.add(this._getBoundsOffset(newBounds, bounds)); + }, + + // returns offset needed for pxBounds to get inside maxBounds at a specified zoom + _getBoundsOffset: function (pxBounds, maxBounds, zoom) { + var nwOffset = this.project(maxBounds.getNorthWest(), zoom).subtract(pxBounds.min), + seOffset = this.project(maxBounds.getSouthEast(), zoom).subtract(pxBounds.max), + + dx = this._rebound(nwOffset.x, -seOffset.x), + dy = this._rebound(nwOffset.y, -seOffset.y); + + return new L.Point(dx, dy); + }, + + _rebound: function (left, right) { + return left + right > 0 ? + Math.round(left - right) / 2 : + Math.max(0, Math.ceil(left)) - Math.max(0, Math.floor(right)); + }, + + _limitZoom: function (zoom) { + var min = this.getMinZoom(), + max = this.getMaxZoom(); + + return Math.max(min, Math.min(max, zoom)); + } +}); + +L.map = function (id, options) { + return new L.Map(id, options); +}; + + +/* + * Mercator projection that takes into account that the Earth is not a perfect sphere. + * Less popular than spherical mercator; used by projections like EPSG:3395. + */ + +L.Projection.Mercator = { + MAX_LATITUDE: 85.0840591556, + + R_MINOR: 6356752.314245179, + R_MAJOR: 6378137, + + project: function (latlng) { // (LatLng) -> Point + var d = L.LatLng.DEG_TO_RAD, + max = this.MAX_LATITUDE, + lat = Math.max(Math.min(max, latlng.lat), -max), + r = this.R_MAJOR, + r2 = this.R_MINOR, + x = latlng.lng * d * r, + y = lat * d, + tmp = r2 / r, + eccent = Math.sqrt(1.0 - tmp * tmp), + con = eccent * Math.sin(y); + + con = Math.pow((1 - con) / (1 + con), eccent * 0.5); + + var ts = Math.tan(0.5 * ((Math.PI * 0.5) - y)) / con; + y = -r * Math.log(ts); + + return new L.Point(x, y); + }, + + unproject: function (point) { // (Point, Boolean) -> LatLng + var d = L.LatLng.RAD_TO_DEG, + r = this.R_MAJOR, + r2 = this.R_MINOR, + lng = point.x * d / r, + tmp = r2 / r, + eccent = Math.sqrt(1 - (tmp * tmp)), + ts = Math.exp(- point.y / r), + phi = (Math.PI / 2) - 2 * Math.atan(ts), + numIter = 15, + tol = 1e-7, + i = numIter, + dphi = 0.1, + con; + + while ((Math.abs(dphi) > tol) && (--i > 0)) { + con = eccent * Math.sin(phi); + dphi = (Math.PI / 2) - 2 * Math.atan(ts * + Math.pow((1.0 - con) / (1.0 + con), 0.5 * eccent)) - phi; + phi += dphi; + } + + return new L.LatLng(phi * d, lng); + } +}; + + + +L.CRS.EPSG3395 = L.extend({}, L.CRS, { + code: 'EPSG:3395', + + projection: L.Projection.Mercator, + + transformation: (function () { + var m = L.Projection.Mercator, + r = m.R_MAJOR, + scale = 0.5 / (Math.PI * r); + + return new L.Transformation(scale, 0.5, -scale, 0.5); + }()) +}); + + +/* + * L.TileLayer is used for standard xyz-numbered tile layers. + */ + +L.TileLayer = L.Class.extend({ + includes: L.Mixin.Events, + + options: { + minZoom: 0, + maxZoom: 18, + tileSize: 256, + subdomains: 'abc', + errorTileUrl: '', + attribution: '', + zoomOffset: 0, + opacity: 1, + /* + maxNativeZoom: null, + zIndex: null, + tms: false, + continuousWorld: false, + noWrap: false, + zoomReverse: false, + detectRetina: false, + reuseTiles: false, + bounds: false, + */ + unloadInvisibleTiles: L.Browser.mobile, + updateWhenIdle: L.Browser.mobile + }, + + initialize: function (url, options) { + options = L.setOptions(this, options); + + // detecting retina displays, adjusting tileSize and zoom levels + if (options.detectRetina && L.Browser.retina && options.maxZoom > 0) { + + options.tileSize = Math.floor(options.tileSize / 2); + options.zoomOffset++; + + if (options.minZoom > 0) { + options.minZoom--; + } + this.options.maxZoom--; + } + + if (options.bounds) { + options.bounds = L.latLngBounds(options.bounds); + } + + this._url = url; + + var subdomains = this.options.subdomains; + + if (typeof subdomains === 'string') { + this.options.subdomains = subdomains.split(''); + } + }, + + onAdd: function (map) { + this._map = map; + this._animated = map._zoomAnimated; + + // create a container div for tiles + this._initContainer(); + + // set up events + map.on({ + 'viewreset': this._reset, + 'moveend': this._update + }, this); + + if (this._animated) { + map.on({ + 'zoomanim': this._animateZoom, + 'zoomend': this._endZoomAnim + }, this); + } + + if (!this.options.updateWhenIdle) { + this._limitedUpdate = L.Util.limitExecByInterval(this._update, 150, this); + map.on('move', this._limitedUpdate, this); + } + + this._reset(); + this._update(); + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + onRemove: function (map) { + this._container.parentNode.removeChild(this._container); + + map.off({ + 'viewreset': this._reset, + 'moveend': this._update + }, this); + + if (this._animated) { + map.off({ + 'zoomanim': this._animateZoom, + 'zoomend': this._endZoomAnim + }, this); + } + + if (!this.options.updateWhenIdle) { + map.off('move', this._limitedUpdate, this); + } + + this._container = null; + this._map = null; + }, + + bringToFront: function () { + var pane = this._map._panes.tilePane; + + if (this._container) { + pane.appendChild(this._container); + this._setAutoZIndex(pane, Math.max); + } + + return this; + }, + + bringToBack: function () { + var pane = this._map._panes.tilePane; + + if (this._container) { + pane.insertBefore(this._container, pane.firstChild); + this._setAutoZIndex(pane, Math.min); + } + + return this; + }, + + getAttribution: function () { + return this.options.attribution; + }, + + getContainer: function () { + return this._container; + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + setZIndex: function (zIndex) { + this.options.zIndex = zIndex; + this._updateZIndex(); + + return this; + }, + + setUrl: function (url, noRedraw) { + this._url = url; + + if (!noRedraw) { + this.redraw(); + } + + return this; + }, + + redraw: function () { + if (this._map) { + this._reset({hard: true}); + this._update(); + } + return this; + }, + + _updateZIndex: function () { + if (this._container && this.options.zIndex !== undefined) { + this._container.style.zIndex = this.options.zIndex; + } + }, + + _setAutoZIndex: function (pane, compare) { + + var layers = pane.children, + edgeZIndex = -compare(Infinity, -Infinity), // -Infinity for max, Infinity for min + zIndex, i, len; + + for (i = 0, len = layers.length; i < len; i++) { + + if (layers[i] !== this._container) { + zIndex = parseInt(layers[i].style.zIndex, 10); + + if (!isNaN(zIndex)) { + edgeZIndex = compare(edgeZIndex, zIndex); + } + } + } + + this.options.zIndex = this._container.style.zIndex = + (isFinite(edgeZIndex) ? edgeZIndex : 0) + compare(1, -1); + }, + + _updateOpacity: function () { + var i, + tiles = this._tiles; + + if (L.Browser.ielt9) { + for (i in tiles) { + L.DomUtil.setOpacity(tiles[i], this.options.opacity); + } + } else { + L.DomUtil.setOpacity(this._container, this.options.opacity); + } + }, + + _initContainer: function () { + var tilePane = this._map._panes.tilePane; + + if (!this._container) { + this._container = L.DomUtil.create('div', 'leaflet-layer'); + + this._updateZIndex(); + + if (this._animated) { + var className = 'leaflet-tile-container'; + + this._bgBuffer = L.DomUtil.create('div', className, this._container); + this._tileContainer = L.DomUtil.create('div', className, this._container); + + } else { + this._tileContainer = this._container; + } + + tilePane.appendChild(this._container); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + }, + + _reset: function (e) { + for (var key in this._tiles) { + this.fire('tileunload', {tile: this._tiles[key]}); + } + + this._tiles = {}; + this._tilesToLoad = 0; + + if (this.options.reuseTiles) { + this._unusedTiles = []; + } + + this._tileContainer.innerHTML = ''; + + if (this._animated && e && e.hard) { + this._clearBgBuffer(); + } + + this._initContainer(); + }, + + _getTileSize: function () { + var map = this._map, + zoom = map.getZoom() + this.options.zoomOffset, + zoomN = this.options.maxNativeZoom, + tileSize = this.options.tileSize; + + if (zoomN && zoom > zoomN) { + tileSize = Math.round(map.getZoomScale(zoom) / map.getZoomScale(zoomN) * tileSize); + } + + return tileSize; + }, + + _update: function () { + + if (!this._map) { return; } + + var map = this._map, + bounds = map.getPixelBounds(), + zoom = map.getZoom(), + tileSize = this._getTileSize(); + + if (zoom > this.options.maxZoom || zoom < this.options.minZoom) { + return; + } + + var tileBounds = L.bounds( + bounds.min.divideBy(tileSize)._floor(), + bounds.max.divideBy(tileSize)._floor()); + + this._addTilesFromCenterOut(tileBounds); + + if (this.options.unloadInvisibleTiles || this.options.reuseTiles) { + this._removeOtherTiles(tileBounds); + } + }, + + _addTilesFromCenterOut: function (bounds) { + var queue = [], + center = bounds.getCenter(); + + var j, i, point; + + for (j = bounds.min.y; j <= bounds.max.y; j++) { + for (i = bounds.min.x; i <= bounds.max.x; i++) { + point = new L.Point(i, j); + + if (this._tileShouldBeLoaded(point)) { + queue.push(point); + } + } + } + + var tilesToLoad = queue.length; + + if (tilesToLoad === 0) { return; } + + // load tiles in order of their distance to center + queue.sort(function (a, b) { + return a.distanceTo(center) - b.distanceTo(center); + }); + + var fragment = document.createDocumentFragment(); + + // if its the first batch of tiles to load + if (!this._tilesToLoad) { + this.fire('loading'); + } + + this._tilesToLoad += tilesToLoad; + + for (i = 0; i < tilesToLoad; i++) { + this._addTile(queue[i], fragment); + } + + this._tileContainer.appendChild(fragment); + }, + + _tileShouldBeLoaded: function (tilePoint) { + if ((tilePoint.x + ':' + tilePoint.y) in this._tiles) { + return false; // already loaded + } + + var options = this.options; + + if (!options.continuousWorld) { + var limit = this._getWrapTileNum(); + + // don't load if exceeds world bounds + if ((options.noWrap && (tilePoint.x < 0 || tilePoint.x >= limit.x)) || + tilePoint.y < 0 || tilePoint.y >= limit.y) { return false; } + } + + if (options.bounds) { + var tileSize = this._getTileSize(), + nwPoint = tilePoint.multiplyBy(tileSize), + sePoint = nwPoint.add([tileSize, tileSize]), + nw = this._map.unproject(nwPoint), + se = this._map.unproject(sePoint); + + // TODO temporary hack, will be removed after refactoring projections + // https://github.com/Leaflet/Leaflet/issues/1618 + if (!options.continuousWorld && !options.noWrap) { + nw = nw.wrap(); + se = se.wrap(); + } + + if (!options.bounds.intersects([nw, se])) { return false; } + } + + return true; + }, + + _removeOtherTiles: function (bounds) { + var kArr, x, y, key; + + for (key in this._tiles) { + kArr = key.split(':'); + x = parseInt(kArr[0], 10); + y = parseInt(kArr[1], 10); + + // remove tile if it's out of bounds + if (x < bounds.min.x || x > bounds.max.x || y < bounds.min.y || y > bounds.max.y) { + this._removeTile(key); + } + } + }, + + _removeTile: function (key) { + var tile = this._tiles[key]; + + this.fire('tileunload', {tile: tile, url: tile.src}); + + if (this.options.reuseTiles) { + L.DomUtil.removeClass(tile, 'leaflet-tile-loaded'); + this._unusedTiles.push(tile); + + } else if (tile.parentNode === this._tileContainer) { + this._tileContainer.removeChild(tile); + } + + // for https://github.com/CloudMade/Leaflet/issues/137 + if (!L.Browser.android) { + tile.onload = null; + tile.src = L.Util.emptyImageUrl; + } + + delete this._tiles[key]; + }, + + _addTile: function (tilePoint, container) { + var tilePos = this._getTilePos(tilePoint); + + // get unused tile - or create a new tile + var tile = this._getTile(); + + /* + Chrome 20 layouts much faster with top/left (verify with timeline, frames) + Android 4 browser has display issues with top/left and requires transform instead + (other browsers don't currently care) - see debug/hacks/jitter.html for an example + */ + L.DomUtil.setPosition(tile, tilePos, L.Browser.chrome); + + this._tiles[tilePoint.x + ':' + tilePoint.y] = tile; + + this._loadTile(tile, tilePoint); + + if (tile.parentNode !== this._tileContainer) { + container.appendChild(tile); + } + }, + + _getZoomForUrl: function () { + + var options = this.options, + zoom = this._map.getZoom(); + + if (options.zoomReverse) { + zoom = options.maxZoom - zoom; + } + + zoom += options.zoomOffset; + + return options.maxNativeZoom ? Math.min(zoom, options.maxNativeZoom) : zoom; + }, + + _getTilePos: function (tilePoint) { + var origin = this._map.getPixelOrigin(), + tileSize = this._getTileSize(); + + return tilePoint.multiplyBy(tileSize).subtract(origin); + }, + + // image-specific code (override to implement e.g. Canvas or SVG tile layer) + + getTileUrl: function (tilePoint) { + return L.Util.template(this._url, L.extend({ + s: this._getSubdomain(tilePoint), + z: tilePoint.z, + x: tilePoint.x, + y: tilePoint.y + }, this.options)); + }, + + _getWrapTileNum: function () { + var crs = this._map.options.crs, + size = crs.getSize(this._map.getZoom()); + return size.divideBy(this._getTileSize())._floor(); + }, + + _adjustTilePoint: function (tilePoint) { + + var limit = this._getWrapTileNum(); + + // wrap tile coordinates + if (!this.options.continuousWorld && !this.options.noWrap) { + tilePoint.x = ((tilePoint.x % limit.x) + limit.x) % limit.x; + } + + if (this.options.tms) { + tilePoint.y = limit.y - tilePoint.y - 1; + } + + tilePoint.z = this._getZoomForUrl(); + }, + + _getSubdomain: function (tilePoint) { + var index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length; + return this.options.subdomains[index]; + }, + + _getTile: function () { + if (this.options.reuseTiles && this._unusedTiles.length > 0) { + var tile = this._unusedTiles.pop(); + this._resetTile(tile); + return tile; + } + return this._createTile(); + }, + + // Override if data stored on a tile needs to be cleaned up before reuse + _resetTile: function (/*tile*/) {}, + + _createTile: function () { + var tile = L.DomUtil.create('img', 'leaflet-tile'); + tile.style.width = tile.style.height = this._getTileSize() + 'px'; + tile.galleryimg = 'no'; + + tile.onselectstart = tile.onmousemove = L.Util.falseFn; + + if (L.Browser.ielt9 && this.options.opacity !== undefined) { + L.DomUtil.setOpacity(tile, this.options.opacity); + } + // without this hack, tiles disappear after zoom on Chrome for Android + // https://github.com/Leaflet/Leaflet/issues/2078 + if (L.Browser.mobileWebkit3d) { + tile.style.WebkitBackfaceVisibility = 'hidden'; + } + return tile; + }, + + _loadTile: function (tile, tilePoint) { + tile._layer = this; + tile.onload = this._tileOnLoad; + tile.onerror = this._tileOnError; + + this._adjustTilePoint(tilePoint); + tile.src = this.getTileUrl(tilePoint); + + this.fire('tileloadstart', { + tile: tile, + url: tile.src + }); + }, + + _tileLoaded: function () { + this._tilesToLoad--; + + if (this._animated) { + L.DomUtil.addClass(this._tileContainer, 'leaflet-zoom-animated'); + } + + if (!this._tilesToLoad) { + this.fire('load'); + + if (this._animated) { + // clear scaled tiles after all new tiles are loaded (for performance) + clearTimeout(this._clearBgBufferTimer); + this._clearBgBufferTimer = setTimeout(L.bind(this._clearBgBuffer, this), 500); + } + } + }, + + _tileOnLoad: function () { + var layer = this._layer; + + //Only if we are loading an actual image + if (this.src !== L.Util.emptyImageUrl) { + L.DomUtil.addClass(this, 'leaflet-tile-loaded'); + + layer.fire('tileload', { + tile: this, + url: this.src + }); + } + + layer._tileLoaded(); + }, + + _tileOnError: function () { + var layer = this._layer; + + layer.fire('tileerror', { + tile: this, + url: this.src + }); + + var newUrl = layer.options.errorTileUrl; + if (newUrl) { + this.src = newUrl; + } + + layer._tileLoaded(); + } +}); + +L.tileLayer = function (url, options) { + return new L.TileLayer(url, options); +}; + + +/* + * L.TileLayer.WMS is used for putting WMS tile layers on the map. + */ + +L.TileLayer.WMS = L.TileLayer.extend({ + + defaultWmsParams: { + service: 'WMS', + request: 'GetMap', + version: '1.1.1', + layers: '', + styles: '', + format: 'image/jpeg', + transparent: false + }, + + initialize: function (url, options) { // (String, Object) + + this._url = url; + + var wmsParams = L.extend({}, this.defaultWmsParams), + tileSize = options.tileSize || this.options.tileSize; + + if (options.detectRetina && L.Browser.retina) { + wmsParams.width = wmsParams.height = tileSize * 2; + } else { + wmsParams.width = wmsParams.height = tileSize; + } + + for (var i in options) { + // all keys that are not TileLayer options go to WMS params + if (!this.options.hasOwnProperty(i) && i !== 'crs') { + wmsParams[i] = options[i]; + } + } + + this.wmsParams = wmsParams; + + L.setOptions(this, options); + }, + + onAdd: function (map) { + + this._crs = this.options.crs || map.options.crs; + + this._wmsVersion = parseFloat(this.wmsParams.version); + + var projectionKey = this._wmsVersion >= 1.3 ? 'crs' : 'srs'; + this.wmsParams[projectionKey] = this._crs.code; + + L.TileLayer.prototype.onAdd.call(this, map); + }, + + getTileUrl: function (tilePoint) { // (Point, Number) -> String + + var map = this._map, + tileSize = this.options.tileSize, + + nwPoint = tilePoint.multiplyBy(tileSize), + sePoint = nwPoint.add([tileSize, tileSize]), + + nw = this._crs.project(map.unproject(nwPoint, tilePoint.z)), + se = this._crs.project(map.unproject(sePoint, tilePoint.z)), + bbox = this._wmsVersion >= 1.3 && this._crs === L.CRS.EPSG4326 ? + [se.y, nw.x, nw.y, se.x].join(',') : + [nw.x, se.y, se.x, nw.y].join(','), + + url = L.Util.template(this._url, {s: this._getSubdomain(tilePoint)}); + + return url + L.Util.getParamString(this.wmsParams, url, true) + '&BBOX=' + bbox; + }, + + setParams: function (params, noRedraw) { + + L.extend(this.wmsParams, params); + + if (!noRedraw) { + this.redraw(); + } + + return this; + } +}); + +L.tileLayer.wms = function (url, options) { + return new L.TileLayer.WMS(url, options); +}; + + +/* + * L.TileLayer.Canvas is a class that you can use as a base for creating + * dynamically drawn Canvas-based tile layers. + */ + +L.TileLayer.Canvas = L.TileLayer.extend({ + options: { + async: false + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + redraw: function () { + if (this._map) { + this._reset({hard: true}); + this._update(); + } + + for (var i in this._tiles) { + this._redrawTile(this._tiles[i]); + } + return this; + }, + + _redrawTile: function (tile) { + this.drawTile(tile, tile._tilePoint, this._map._zoom); + }, + + _createTile: function () { + var tile = L.DomUtil.create('canvas', 'leaflet-tile'); + tile.width = tile.height = this.options.tileSize; + tile.onselectstart = tile.onmousemove = L.Util.falseFn; + return tile; + }, + + _loadTile: function (tile, tilePoint) { + tile._layer = this; + tile._tilePoint = tilePoint; + + this._redrawTile(tile); + + if (!this.options.async) { + this.tileDrawn(tile); + } + }, + + drawTile: function (/*tile, tilePoint*/) { + // override with rendering code + }, + + tileDrawn: function (tile) { + this._tileOnLoad.call(tile); + } +}); + + +L.tileLayer.canvas = function (options) { + return new L.TileLayer.Canvas(options); +}; + + +/* + * L.ImageOverlay is used to overlay images over the map (to specific geographical bounds). + */ + +L.ImageOverlay = L.Class.extend({ + includes: L.Mixin.Events, + + options: { + opacity: 1 + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = L.latLngBounds(bounds); + + L.setOptions(this, options); + }, + + onAdd: function (map) { + this._map = map; + + if (!this._image) { + this._initImage(); + } + + map._panes.overlayPane.appendChild(this._image); + + map.on('viewreset', this._reset, this); + + if (map.options.zoomAnimation && L.Browser.any3d) { + map.on('zoomanim', this._animateZoom, this); + } + + this._reset(); + }, + + onRemove: function (map) { + map.getPanes().overlayPane.removeChild(this._image); + + map.off('viewreset', this._reset, this); + + if (map.options.zoomAnimation) { + map.off('zoomanim', this._animateZoom, this); + } + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + this._updateOpacity(); + return this; + }, + + // TODO remove bringToFront/bringToBack duplication from TileLayer/Path + bringToFront: function () { + if (this._image) { + this._map._panes.overlayPane.appendChild(this._image); + } + return this; + }, + + bringToBack: function () { + var pane = this._map._panes.overlayPane; + if (this._image) { + pane.insertBefore(this._image, pane.firstChild); + } + return this; + }, + + setUrl: function (url) { + this._url = url; + this._image.src = this._url; + }, + + getAttribution: function () { + return this.options.attribution; + }, + + _initImage: function () { + this._image = L.DomUtil.create('img', 'leaflet-image-layer'); + + if (this._map.options.zoomAnimation && L.Browser.any3d) { + L.DomUtil.addClass(this._image, 'leaflet-zoom-animated'); + } else { + L.DomUtil.addClass(this._image, 'leaflet-zoom-hide'); + } + + this._updateOpacity(); + + //TODO createImage util method to remove duplication + L.extend(this._image, { + galleryimg: 'no', + onselectstart: L.Util.falseFn, + onmousemove: L.Util.falseFn, + onload: L.bind(this._onImageLoad, this), + src: this._url + }); + }, + + _animateZoom: function (e) { + var map = this._map, + image = this._image, + scale = map.getZoomScale(e.zoom), + nw = this._bounds.getNorthWest(), + se = this._bounds.getSouthEast(), + + topLeft = map._latLngToNewLayerPoint(nw, e.zoom, e.center), + size = map._latLngToNewLayerPoint(se, e.zoom, e.center)._subtract(topLeft), + origin = topLeft._add(size._multiplyBy((1 / 2) * (1 - 1 / scale))); + + image.style[L.DomUtil.TRANSFORM] = + L.DomUtil.getTranslateString(origin) + ' scale(' + scale + ') '; + }, + + _reset: function () { + var image = this._image, + topLeft = this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + size = this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(topLeft); + + L.DomUtil.setPosition(image, topLeft); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _onImageLoad: function () { + this.fire('load'); + }, + + _updateOpacity: function () { + L.DomUtil.setOpacity(this._image, this.options.opacity); + } +}); + +L.imageOverlay = function (url, bounds, options) { + return new L.ImageOverlay(url, bounds, options); +}; + + +/* + * L.Icon is an image-based icon class that you can use with L.Marker for custom markers. + */ + +L.Icon = L.Class.extend({ + options: { + /* + iconUrl: (String) (required) + iconRetinaUrl: (String) (optional, used for retina devices if detected) + iconSize: (Point) (can be set through CSS) + iconAnchor: (Point) (centered by default, can be set in CSS with negative margins) + popupAnchor: (Point) (if not specified, popup opens in the anchor point) + shadowUrl: (String) (no shadow by default) + shadowRetinaUrl: (String) (optional, used for retina devices if detected) + shadowSize: (Point) + shadowAnchor: (Point) + */ + className: '' + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + createIcon: function (oldIcon) { + return this._createIcon('icon', oldIcon); + }, + + createShadow: function (oldIcon) { + return this._createIcon('shadow', oldIcon); + }, + + _createIcon: function (name, oldIcon) { + var src = this._getIconUrl(name); + + if (!src) { + if (name === 'icon') { + throw new Error('iconUrl not set in Icon options (see the docs).'); + } + return null; + } + + var img; + if (!oldIcon || oldIcon.tagName !== 'IMG') { + img = this._createImg(src); + } else { + img = this._createImg(src, oldIcon); + } + this._setIconStyles(img, name); + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options, + size = L.point(options[name + 'Size']), + anchor; + + if (name === 'shadow') { + anchor = L.point(options.shadowAnchor || options.iconAnchor); + } else { + anchor = L.point(options.iconAnchor); + } + + if (!anchor && size) { + anchor = size.divideBy(2, true); + } + + img.className = 'leaflet-marker-' + name + ' ' + options.className; + + if (anchor) { + img.style.marginLeft = (-anchor.x) + 'px'; + img.style.marginTop = (-anchor.y) + 'px'; + } + + if (size) { + img.style.width = size.x + 'px'; + img.style.height = size.y + 'px'; + } + }, + + _createImg: function (src, el) { + el = el || document.createElement('img'); + el.src = src; + return el; + }, + + _getIconUrl: function (name) { + if (L.Browser.retina && this.options[name + 'RetinaUrl']) { + return this.options[name + 'RetinaUrl']; + } + return this.options[name + 'Url']; + } +}); + +L.icon = function (options) { + return new L.Icon(options); +}; + + +/* + * L.Icon.Default is the blue marker icon used by default in Leaflet. + */ + +L.Icon.Default = L.Icon.extend({ + + options: { + iconSize: [25, 41], + iconAnchor: [12, 41], + popupAnchor: [1, -34], + + shadowSize: [41, 41] + }, + + _getIconUrl: function (name) { + var key = name + 'Url'; + + if (this.options[key]) { + return this.options[key]; + } + + if (L.Browser.retina && name === 'icon') { + name += '-2x'; + } + + var path = L.Icon.Default.imagePath; + + if (!path) { + throw new Error('Couldn\'t autodetect L.Icon.Default.imagePath, set it manually.'); + } + + return path + '/marker-' + name + '.png'; + } +}); + +L.Icon.Default.imagePath = (function () { + var scripts = document.getElementsByTagName('script'), + leafletRe = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/; + + var i, len, src, matches, path; + + for (i = 0, len = scripts.length; i < len; i++) { + src = scripts[i].src; + matches = src.match(leafletRe); + + if (matches) { + path = src.split(leafletRe)[0]; + return (path ? path + '/' : '') + 'images'; + } + } +}()); + + +/* + * L.Marker is used to display clickable/draggable icons on the map. + */ + +L.Marker = L.Class.extend({ + + includes: L.Mixin.Events, + + options: { + icon: new L.Icon.Default(), + title: '', + alt: '', + clickable: true, + draggable: false, + keyboard: true, + zIndexOffset: 0, + opacity: 1, + riseOnHover: false, + riseOffset: 250 + }, + + initialize: function (latlng, options) { + L.setOptions(this, options); + this._latlng = L.latLng(latlng); + }, + + onAdd: function (map) { + this._map = map; + + map.on('viewreset', this.update, this); + + this._initIcon(); + this.update(); + this.fire('add'); + + if (map.options.zoomAnimation && map.options.markerZoomAnimation) { + map.on('zoomanim', this._animateZoom, this); + } + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + onRemove: function (map) { + if (this.dragging) { + this.dragging.disable(); + } + + this._removeIcon(); + this._removeShadow(); + + this.fire('remove'); + + map.off({ + 'viewreset': this.update, + 'zoomanim': this._animateZoom + }, this); + + this._map = null; + }, + + getLatLng: function () { + return this._latlng; + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + + this.update(); + + return this.fire('move', { latlng: this._latlng }); + }, + + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + this.update(); + + return this; + }, + + setIcon: function (icon) { + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + if (this._popup) { + this.bindPopup(this._popup); + } + + return this; + }, + + update: function () { + if (this._icon) { + this._setPos(this._map.latLngToLayerPoint(this._latlng).round()); + } + return this; + }, + + _initIcon: function () { + var options = this.options, + map = this._map, + animation = (map.options.zoomAnimation && map.options.markerZoomAnimation), + classToAdd = animation ? 'leaflet-zoom-animated' : 'leaflet-zoom-hide'; + + var icon = options.icon.createIcon(this._icon), + addIcon = false; + + // if we're not reusing the icon, remove the old one and init new one + if (icon !== this._icon) { + if (this._icon) { + this._removeIcon(); + } + addIcon = true; + + if (options.title) { + icon.title = options.title; + } + + if (options.alt) { + icon.alt = options.alt; + } + } + + L.DomUtil.addClass(icon, classToAdd); + + if (options.keyboard) { + icon.tabIndex = '0'; + } + + this._icon = icon; + + this._initInteraction(); + + if (options.riseOnHover) { + L.DomEvent + .on(icon, 'mouseover', this._bringToFront, this) + .on(icon, 'mouseout', this._resetZIndex, this); + } + + var newShadow = options.icon.createShadow(this._shadow), + addShadow = false; + + if (newShadow !== this._shadow) { + this._removeShadow(); + addShadow = true; + } + + if (newShadow) { + L.DomUtil.addClass(newShadow, classToAdd); + } + this._shadow = newShadow; + + + if (options.opacity < 1) { + this._updateOpacity(); + } + + + var panes = this._map._panes; + + if (addIcon) { + panes.markerPane.appendChild(this._icon); + } + + if (newShadow && addShadow) { + panes.shadowPane.appendChild(this._shadow); + } + }, + + _removeIcon: function () { + if (this.options.riseOnHover) { + L.DomEvent + .off(this._icon, 'mouseover', this._bringToFront) + .off(this._icon, 'mouseout', this._resetZIndex); + } + + this._map._panes.markerPane.removeChild(this._icon); + + this._icon = null; + }, + + _removeShadow: function () { + if (this._shadow) { + this._map._panes.shadowPane.removeChild(this._shadow); + } + this._shadow = null; + }, + + _setPos: function (pos) { + L.DomUtil.setPosition(this._icon, pos); + + if (this._shadow) { + L.DomUtil.setPosition(this._shadow, pos); + } + + this._zIndex = pos.y + this.options.zIndexOffset; + + this._resetZIndex(); + }, + + _updateZIndex: function (offset) { + this._icon.style.zIndex = this._zIndex + offset; + }, + + _animateZoom: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center).round(); + + this._setPos(pos); + }, + + _initInteraction: function () { + + if (!this.options.clickable) { return; } + + // TODO refactor into something shared with Map/Path/etc. to DRY it up + + var icon = this._icon, + events = ['dblclick', 'mousedown', 'mouseover', 'mouseout', 'contextmenu']; + + L.DomUtil.addClass(icon, 'leaflet-clickable'); + L.DomEvent.on(icon, 'click', this._onMouseClick, this); + L.DomEvent.on(icon, 'keypress', this._onKeyPress, this); + + for (var i = 0; i < events.length; i++) { + L.DomEvent.on(icon, events[i], this._fireMouseEvent, this); + } + + if (L.Handler.MarkerDrag) { + this.dragging = new L.Handler.MarkerDrag(this); + + if (this.options.draggable) { + this.dragging.enable(); + } + } + }, + + _onMouseClick: function (e) { + var wasDragged = this.dragging && this.dragging.moved(); + + if (this.hasEventListeners(e.type) || wasDragged) { + L.DomEvent.stopPropagation(e); + } + + if (wasDragged) { return; } + + if ((!this.dragging || !this.dragging._enabled) && this._map.dragging && this._map.dragging.moved()) { return; } + + this.fire(e.type, { + originalEvent: e, + latlng: this._latlng + }); + }, + + _onKeyPress: function (e) { + if (e.keyCode === 13) { + this.fire('click', { + originalEvent: e, + latlng: this._latlng + }); + } + }, + + _fireMouseEvent: function (e) { + + this.fire(e.type, { + originalEvent: e, + latlng: this._latlng + }); + + // TODO proper custom event propagation + // this line will always be called if marker is in a FeatureGroup + if (e.type === 'contextmenu' && this.hasEventListeners(e.type)) { + L.DomEvent.preventDefault(e); + } + if (e.type !== 'mousedown') { + L.DomEvent.stopPropagation(e); + } else { + L.DomEvent.preventDefault(e); + } + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + _updateOpacity: function () { + L.DomUtil.setOpacity(this._icon, this.options.opacity); + if (this._shadow) { + L.DomUtil.setOpacity(this._shadow, this.options.opacity); + } + }, + + _bringToFront: function () { + this._updateZIndex(this.options.riseOffset); + }, + + _resetZIndex: function () { + this._updateZIndex(0); + } +}); + +L.marker = function (latlng, options) { + return new L.Marker(latlng, options); +}; + + +/* + * L.DivIcon is a lightweight HTML-based icon class (as opposed to the image-based L.Icon) + * to use with L.Marker. + */ + +L.DivIcon = L.Icon.extend({ + options: { + iconSize: [12, 12], // also can be set through CSS + /* + iconAnchor: (Point) + popupAnchor: (Point) + html: (String) + bgPos: (Point) + */ + className: 'leaflet-div-icon', + html: false + }, + + createIcon: function (oldIcon) { + var div = (oldIcon && oldIcon.tagName === 'DIV') ? oldIcon : document.createElement('div'), + options = this.options; + + if (options.html !== false) { + div.innerHTML = options.html; + } else { + div.innerHTML = ''; + } + + if (options.bgPos) { + div.style.backgroundPosition = + (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px'; + } + + this._setIconStyles(div, 'icon'); + return div; + }, + + createShadow: function () { + return null; + } +}); + +L.divIcon = function (options) { + return new L.DivIcon(options); +}; + + +/* + * L.Popup is used for displaying popups on the map. + */ + +L.Map.mergeOptions({ + closePopupOnClick: true +}); + +L.Popup = L.Class.extend({ + includes: L.Mixin.Events, + + options: { + minWidth: 50, + maxWidth: 300, + // maxHeight: null, + autoPan: true, + closeButton: true, + offset: [0, 7], + autoPanPadding: [5, 5], + // autoPanPaddingTopLeft: null, + // autoPanPaddingBottomRight: null, + keepInView: false, + className: '', + zoomAnimation: true + }, + + initialize: function (options, source) { + L.setOptions(this, options); + + this._source = source; + this._animated = L.Browser.any3d && this.options.zoomAnimation; + this._isOpen = false; + }, + + onAdd: function (map) { + this._map = map; + + if (!this._container) { + this._initLayout(); + } + + var animFade = map.options.fadeAnimation; + + if (animFade) { + L.DomUtil.setOpacity(this._container, 0); + } + map._panes.popupPane.appendChild(this._container); + + map.on(this._getEvents(), this); + + this.update(); + + if (animFade) { + L.DomUtil.setOpacity(this._container, 1); + } + + this.fire('open'); + + map.fire('popupopen', {popup: this}); + + if (this._source) { + this._source.fire('popupopen', {popup: this}); + } + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + openOn: function (map) { + map.openPopup(this); + return this; + }, + + onRemove: function (map) { + map._panes.popupPane.removeChild(this._container); + + L.Util.falseFn(this._container.offsetWidth); // force reflow + + map.off(this._getEvents(), this); + + if (map.options.fadeAnimation) { + L.DomUtil.setOpacity(this._container, 0); + } + + this._map = null; + + this.fire('close'); + + map.fire('popupclose', {popup: this}); + + if (this._source) { + this._source.fire('popupclose', {popup: this}); + } + }, + + getLatLng: function () { + return this._latlng; + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + if (this._map) { + this._updatePosition(); + this._adjustPan(); + } + return this; + }, + + getContent: function () { + return this._content; + }, + + setContent: function (content) { + this._content = content; + this.update(); + return this; + }, + + update: function () { + if (!this._map) { return; } + + this._container.style.visibility = 'hidden'; + + this._updateContent(); + this._updateLayout(); + this._updatePosition(); + + this._container.style.visibility = ''; + + this._adjustPan(); + }, + + _getEvents: function () { + var events = { + viewreset: this._updatePosition + }; + + if (this._animated) { + events.zoomanim = this._zoomAnimation; + } + if ('closeOnClick' in this.options ? this.options.closeOnClick : this._map.options.closePopupOnClick) { + events.preclick = this._close; + } + if (this.options.keepInView) { + events.moveend = this._adjustPan; + } + + return events; + }, + + _close: function () { + if (this._map) { + this._map.closePopup(this); + } + }, + + _initLayout: function () { + var prefix = 'leaflet-popup', + containerClass = prefix + ' ' + this.options.className + ' leaflet-zoom-' + + (this._animated ? 'animated' : 'hide'), + container = this._container = L.DomUtil.create('div', containerClass), + closeButton; + + if (this.options.closeButton) { + closeButton = this._closeButton = + L.DomUtil.create('a', prefix + '-close-button', container); + closeButton.href = '#close'; + closeButton.innerHTML = '×'; + L.DomEvent.disableClickPropagation(closeButton); + + L.DomEvent.on(closeButton, 'click', this._onCloseButtonClick, this); + } + + var wrapper = this._wrapper = + L.DomUtil.create('div', prefix + '-content-wrapper', container); + L.DomEvent.disableClickPropagation(wrapper); + + this._contentNode = L.DomUtil.create('div', prefix + '-content', wrapper); + + L.DomEvent.disableScrollPropagation(this._contentNode); + L.DomEvent.on(wrapper, 'contextmenu', L.DomEvent.stopPropagation); + + this._tipContainer = L.DomUtil.create('div', prefix + '-tip-container', container); + this._tip = L.DomUtil.create('div', prefix + '-tip', this._tipContainer); + }, + + _updateContent: function () { + if (!this._content) { return; } + + if (typeof this._content === 'string') { + this._contentNode.innerHTML = this._content; + } else { + while (this._contentNode.hasChildNodes()) { + this._contentNode.removeChild(this._contentNode.firstChild); + } + this._contentNode.appendChild(this._content); + } + this.fire('contentupdate'); + }, + + _updateLayout: function () { + var container = this._contentNode, + style = container.style; + + style.width = ''; + style.whiteSpace = 'nowrap'; + + var width = container.offsetWidth; + width = Math.min(width, this.options.maxWidth); + width = Math.max(width, this.options.minWidth); + + style.width = (width + 1) + 'px'; + style.whiteSpace = ''; + + style.height = ''; + + var height = container.offsetHeight, + maxHeight = this.options.maxHeight, + scrolledClass = 'leaflet-popup-scrolled'; + + if (maxHeight && height > maxHeight) { + style.height = maxHeight + 'px'; + L.DomUtil.addClass(container, scrolledClass); + } else { + L.DomUtil.removeClass(container, scrolledClass); + } + + this._containerWidth = this._container.offsetWidth; + }, + + _updatePosition: function () { + if (!this._map) { return; } + + var pos = this._map.latLngToLayerPoint(this._latlng), + animated = this._animated, + offset = L.point(this.options.offset); + + if (animated) { + L.DomUtil.setPosition(this._container, pos); + } + + this._containerBottom = -offset.y - (animated ? 0 : pos.y); + this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x + (animated ? 0 : pos.x); + + // bottom position the popup in case the height of the popup changes (images loading etc) + this._container.style.bottom = this._containerBottom + 'px'; + this._container.style.left = this._containerLeft + 'px'; + }, + + _zoomAnimation: function (opt) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, opt.zoom, opt.center); + + L.DomUtil.setPosition(this._container, pos); + }, + + _adjustPan: function () { + if (!this.options.autoPan) { return; } + + var map = this._map, + containerHeight = this._container.offsetHeight, + containerWidth = this._containerWidth, + + layerPos = new L.Point(this._containerLeft, -containerHeight - this._containerBottom); + + if (this._animated) { + layerPos._add(L.DomUtil.getPosition(this._container)); + } + + var containerPos = map.layerPointToContainerPoint(layerPos), + padding = L.point(this.options.autoPanPadding), + paddingTL = L.point(this.options.autoPanPaddingTopLeft || padding), + paddingBR = L.point(this.options.autoPanPaddingBottomRight || padding), + size = map.getSize(), + dx = 0, + dy = 0; + + if (containerPos.x + containerWidth + paddingBR.x > size.x) { // right + dx = containerPos.x + containerWidth - size.x + paddingBR.x; + } + if (containerPos.x - dx - paddingTL.x < 0) { // left + dx = containerPos.x - paddingTL.x; + } + if (containerPos.y + containerHeight + paddingBR.y > size.y) { // bottom + dy = containerPos.y + containerHeight - size.y + paddingBR.y; + } + if (containerPos.y - dy - paddingTL.y < 0) { // top + dy = containerPos.y - paddingTL.y; + } + + if (dx || dy) { + map + .fire('autopanstart') + .panBy([dx, dy]); + } + }, + + _onCloseButtonClick: function (e) { + this._close(); + L.DomEvent.stop(e); + } +}); + +L.popup = function (options, source) { + return new L.Popup(options, source); +}; + + +L.Map.include({ + openPopup: function (popup, latlng, options) { // (Popup) or (String || HTMLElement, LatLng[, Object]) + this.closePopup(); + + if (!(popup instanceof L.Popup)) { + var content = popup; + + popup = new L.Popup(options) + .setLatLng(latlng) + .setContent(content); + } + popup._isOpen = true; + + this._popup = popup; + return this.addLayer(popup); + }, + + closePopup: function (popup) { + if (!popup || popup === this._popup) { + popup = this._popup; + this._popup = null; + } + if (popup) { + this.removeLayer(popup); + popup._isOpen = false; + } + return this; + } +}); + + +/* + * Popup extension to L.Marker, adding popup-related methods. + */ + +L.Marker.include({ + openPopup: function () { + if (this._popup && this._map && !this._map.hasLayer(this._popup)) { + this._popup.setLatLng(this._latlng); + this._map.openPopup(this._popup); + } + + return this; + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + togglePopup: function () { + if (this._popup) { + if (this._popup._isOpen) { + this.closePopup(); + } else { + this.openPopup(); + } + } + return this; + }, + + bindPopup: function (content, options) { + var anchor = L.point(this.options.icon.options.popupAnchor || [0, 0]); + + anchor = anchor.add(L.Popup.prototype.options.offset); + + if (options && options.offset) { + anchor = anchor.add(options.offset); + } + + options = L.extend({offset: anchor}, options); + + if (!this._popupHandlersAdded) { + this + .on('click', this.togglePopup, this) + .on('remove', this.closePopup, this) + .on('move', this._movePopup, this); + this._popupHandlersAdded = true; + } + + if (content instanceof L.Popup) { + L.setOptions(content, options); + this._popup = content; + content._source = this; + } else { + this._popup = new L.Popup(options, this) + .setContent(content); + } + + return this; + }, + + setPopupContent: function (content) { + if (this._popup) { + this._popup.setContent(content); + } + return this; + }, + + unbindPopup: function () { + if (this._popup) { + this._popup = null; + this + .off('click', this.togglePopup, this) + .off('remove', this.closePopup, this) + .off('move', this._movePopup, this); + this._popupHandlersAdded = false; + } + return this; + }, + + getPopup: function () { + return this._popup; + }, + + _movePopup: function (e) { + this._popup.setLatLng(e.latlng); + } +}); + + +/* + * L.LayerGroup is a class to combine several layers into one so that + * you can manipulate the group (e.g. add/remove it) as one layer. + */ + +L.LayerGroup = L.Class.extend({ + initialize: function (layers) { + this._layers = {}; + + var i, len; + + if (layers) { + for (i = 0, len = layers.length; i < len; i++) { + this.addLayer(layers[i]); + } + } + }, + + addLayer: function (layer) { + var id = this.getLayerId(layer); + + this._layers[id] = layer; + + if (this._map) { + this._map.addLayer(layer); + } + + return this; + }, + + removeLayer: function (layer) { + var id = layer in this._layers ? layer : this.getLayerId(layer); + + if (this._map && this._layers[id]) { + this._map.removeLayer(this._layers[id]); + } + + delete this._layers[id]; + + return this; + }, + + hasLayer: function (layer) { + if (!layer) { return false; } + + return (layer in this._layers || this.getLayerId(layer) in this._layers); + }, + + clearLayers: function () { + this.eachLayer(this.removeLayer, this); + return this; + }, + + invoke: function (methodName) { + var args = Array.prototype.slice.call(arguments, 1), + i, layer; + + for (i in this._layers) { + layer = this._layers[i]; + + if (layer[methodName]) { + layer[methodName].apply(layer, args); + } + } + + return this; + }, + + onAdd: function (map) { + this._map = map; + this.eachLayer(map.addLayer, map); + }, + + onRemove: function (map) { + this.eachLayer(map.removeLayer, map); + this._map = null; + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + getLayer: function (id) { + return this._layers[id]; + }, + + getLayers: function () { + var layers = []; + + for (var i in this._layers) { + layers.push(this._layers[i]); + } + return layers; + }, + + setZIndex: function (zIndex) { + return this.invoke('setZIndex', zIndex); + }, + + getLayerId: function (layer) { + return L.stamp(layer); + } +}); + +L.layerGroup = function (layers) { + return new L.LayerGroup(layers); +}; + + +/* + * L.FeatureGroup extends L.LayerGroup by introducing mouse events and additional methods + * shared between a group of interactive layers (like vectors or markers). + */ + +L.FeatureGroup = L.LayerGroup.extend({ + includes: L.Mixin.Events, + + statics: { + EVENTS: 'click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose' + }, + + addLayer: function (layer) { + if (this.hasLayer(layer)) { + return this; + } + + if ('on' in layer) { + layer.on(L.FeatureGroup.EVENTS, this._propagateEvent, this); + } + + L.LayerGroup.prototype.addLayer.call(this, layer); + + if (this._popupContent && layer.bindPopup) { + layer.bindPopup(this._popupContent, this._popupOptions); + } + + return this.fire('layeradd', {layer: layer}); + }, + + removeLayer: function (layer) { + if (!this.hasLayer(layer)) { + return this; + } + if (layer in this._layers) { + layer = this._layers[layer]; + } + + layer.off(L.FeatureGroup.EVENTS, this._propagateEvent, this); + + L.LayerGroup.prototype.removeLayer.call(this, layer); + + if (this._popupContent) { + this.invoke('unbindPopup'); + } + + return this.fire('layerremove', {layer: layer}); + }, + + bindPopup: function (content, options) { + this._popupContent = content; + this._popupOptions = options; + return this.invoke('bindPopup', content, options); + }, + + openPopup: function (latlng) { + // open popup on the first layer + for (var id in this._layers) { + this._layers[id].openPopup(latlng); + break; + } + return this; + }, + + setStyle: function (style) { + return this.invoke('setStyle', style); + }, + + bringToFront: function () { + return this.invoke('bringToFront'); + }, + + bringToBack: function () { + return this.invoke('bringToBack'); + }, + + getBounds: function () { + var bounds = new L.LatLngBounds(); + + this.eachLayer(function (layer) { + bounds.extend(layer instanceof L.Marker ? layer.getLatLng() : layer.getBounds()); + }); + + return bounds; + }, + + _propagateEvent: function (e) { + e = L.extend({ + layer: e.target, + target: this + }, e); + this.fire(e.type, e); + } +}); + +L.featureGroup = function (layers) { + return new L.FeatureGroup(layers); +}; + + +/* + * L.Path is a base class for rendering vector paths on a map. Inherited by Polyline, Circle, etc. + */ + +L.Path = L.Class.extend({ + includes: [L.Mixin.Events], + + statics: { + // how much to extend the clip area around the map view + // (relative to its size, e.g. 0.5 is half the screen in each direction) + // set it so that SVG element doesn't exceed 1280px (vectors flicker on dragend if it is) + CLIP_PADDING: (function () { + var max = L.Browser.mobile ? 1280 : 2000, + target = (max / Math.max(window.outerWidth, window.outerHeight) - 1) / 2; + return Math.max(0, Math.min(0.5, target)); + })() + }, + + options: { + stroke: true, + color: '#0033ff', + dashArray: null, + lineCap: null, + lineJoin: null, + weight: 5, + opacity: 0.5, + + fill: false, + fillColor: null, //same as color by default + fillOpacity: 0.2, + + clickable: true + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + onAdd: function (map) { + this._map = map; + + if (!this._container) { + this._initElements(); + this._initEvents(); + } + + this.projectLatlngs(); + this._updatePath(); + + if (this._container) { + this._map._pathRoot.appendChild(this._container); + } + + this.fire('add'); + + map.on({ + 'viewreset': this.projectLatlngs, + 'moveend': this._updatePath + }, this); + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + onRemove: function (map) { + map._pathRoot.removeChild(this._container); + + // Need to fire remove event before we set _map to null as the event hooks might need the object + this.fire('remove'); + this._map = null; + + if (L.Browser.vml) { + this._container = null; + this._stroke = null; + this._fill = null; + } + + map.off({ + 'viewreset': this.projectLatlngs, + 'moveend': this._updatePath + }, this); + }, + + projectLatlngs: function () { + // do all projection stuff here + }, + + setStyle: function (style) { + L.setOptions(this, style); + + if (this._container) { + this._updateStyle(); + } + + return this; + }, + + redraw: function () { + if (this._map) { + this.projectLatlngs(); + this._updatePath(); + } + return this; + } +}); + +L.Map.include({ + _updatePathViewport: function () { + var p = L.Path.CLIP_PADDING, + size = this.getSize(), + panePos = L.DomUtil.getPosition(this._mapPane), + min = panePos.multiplyBy(-1)._subtract(size.multiplyBy(p)._round()), + max = min.add(size.multiplyBy(1 + p * 2)._round()); + + this._pathViewport = new L.Bounds(min, max); + } +}); + + +/* + * Extends L.Path with SVG-specific rendering code. + */ + +L.Path.SVG_NS = 'http://www.w3.org/2000/svg'; + +L.Browser.svg = !!(document.createElementNS && document.createElementNS(L.Path.SVG_NS, 'svg').createSVGRect); + +L.Path = L.Path.extend({ + statics: { + SVG: L.Browser.svg + }, + + bringToFront: function () { + var root = this._map._pathRoot, + path = this._container; + + if (path && root.lastChild !== path) { + root.appendChild(path); + } + return this; + }, + + bringToBack: function () { + var root = this._map._pathRoot, + path = this._container, + first = root.firstChild; + + if (path && first !== path) { + root.insertBefore(path, first); + } + return this; + }, + + getPathString: function () { + // form path string here + }, + + _createElement: function (name) { + return document.createElementNS(L.Path.SVG_NS, name); + }, + + _initElements: function () { + this._map._initPathRoot(); + this._initPath(); + this._initStyle(); + }, + + _initPath: function () { + this._container = this._createElement('g'); + + this._path = this._createElement('path'); + + if (this.options.className) { + L.DomUtil.addClass(this._path, this.options.className); + } + + this._container.appendChild(this._path); + }, + + _initStyle: function () { + if (this.options.stroke) { + this._path.setAttribute('stroke-linejoin', 'round'); + this._path.setAttribute('stroke-linecap', 'round'); + } + if (this.options.fill) { + this._path.setAttribute('fill-rule', 'evenodd'); + } + if (this.options.pointerEvents) { + this._path.setAttribute('pointer-events', this.options.pointerEvents); + } + if (!this.options.clickable && !this.options.pointerEvents) { + this._path.setAttribute('pointer-events', 'none'); + } + this._updateStyle(); + }, + + _updateStyle: function () { + if (this.options.stroke) { + this._path.setAttribute('stroke', this.options.color); + this._path.setAttribute('stroke-opacity', this.options.opacity); + this._path.setAttribute('stroke-width', this.options.weight); + if (this.options.dashArray) { + this._path.setAttribute('stroke-dasharray', this.options.dashArray); + } else { + this._path.removeAttribute('stroke-dasharray'); + } + if (this.options.lineCap) { + this._path.setAttribute('stroke-linecap', this.options.lineCap); + } + if (this.options.lineJoin) { + this._path.setAttribute('stroke-linejoin', this.options.lineJoin); + } + } else { + this._path.setAttribute('stroke', 'none'); + } + if (this.options.fill) { + this._path.setAttribute('fill', this.options.fillColor || this.options.color); + this._path.setAttribute('fill-opacity', this.options.fillOpacity); + } else { + this._path.setAttribute('fill', 'none'); + } + }, + + _updatePath: function () { + var str = this.getPathString(); + if (!str) { + // fix webkit empty string parsing bug + str = 'M0 0'; + } + this._path.setAttribute('d', str); + }, + + // TODO remove duplication with L.Map + _initEvents: function () { + if (this.options.clickable) { + if (L.Browser.svg || !L.Browser.vml) { + L.DomUtil.addClass(this._path, 'leaflet-clickable'); + } + + L.DomEvent.on(this._container, 'click', this._onMouseClick, this); + + var events = ['dblclick', 'mousedown', 'mouseover', + 'mouseout', 'mousemove', 'contextmenu']; + for (var i = 0; i < events.length; i++) { + L.DomEvent.on(this._container, events[i], this._fireMouseEvent, this); + } + } + }, + + _onMouseClick: function (e) { + if (this._map.dragging && this._map.dragging.moved()) { return; } + + this._fireMouseEvent(e); + }, + + _fireMouseEvent: function (e) { + if (!this.hasEventListeners(e.type)) { return; } + + var map = this._map, + containerPoint = map.mouseEventToContainerPoint(e), + layerPoint = map.containerPointToLayerPoint(containerPoint), + latlng = map.layerPointToLatLng(layerPoint); + + this.fire(e.type, { + latlng: latlng, + layerPoint: layerPoint, + containerPoint: containerPoint, + originalEvent: e + }); + + if (e.type === 'contextmenu') { + L.DomEvent.preventDefault(e); + } + if (e.type !== 'mousemove') { + L.DomEvent.stopPropagation(e); + } + } +}); + +L.Map.include({ + _initPathRoot: function () { + if (!this._pathRoot) { + this._pathRoot = L.Path.prototype._createElement('svg'); + this._panes.overlayPane.appendChild(this._pathRoot); + + if (this.options.zoomAnimation && L.Browser.any3d) { + L.DomUtil.addClass(this._pathRoot, 'leaflet-zoom-animated'); + + this.on({ + 'zoomanim': this._animatePathZoom, + 'zoomend': this._endPathZoom + }); + } else { + L.DomUtil.addClass(this._pathRoot, 'leaflet-zoom-hide'); + } + + this.on('moveend', this._updateSvgViewport); + this._updateSvgViewport(); + } + }, + + _animatePathZoom: function (e) { + var scale = this.getZoomScale(e.zoom), + offset = this._getCenterOffset(e.center)._multiplyBy(-scale)._add(this._pathViewport.min); + + this._pathRoot.style[L.DomUtil.TRANSFORM] = + L.DomUtil.getTranslateString(offset) + ' scale(' + scale + ') '; + + this._pathZooming = true; + }, + + _endPathZoom: function () { + this._pathZooming = false; + }, + + _updateSvgViewport: function () { + + if (this._pathZooming) { + // Do not update SVGs while a zoom animation is going on otherwise the animation will break. + // When the zoom animation ends we will be updated again anyway + // This fixes the case where you do a momentum move and zoom while the move is still ongoing. + return; + } + + this._updatePathViewport(); + + var vp = this._pathViewport, + min = vp.min, + max = vp.max, + width = max.x - min.x, + height = max.y - min.y, + root = this._pathRoot, + pane = this._panes.overlayPane; + + // Hack to make flicker on drag end on mobile webkit less irritating + if (L.Browser.mobileWebkit) { + pane.removeChild(root); + } + + L.DomUtil.setPosition(root, min); + root.setAttribute('width', width); + root.setAttribute('height', height); + root.setAttribute('viewBox', [min.x, min.y, width, height].join(' ')); + + if (L.Browser.mobileWebkit) { + pane.appendChild(root); + } + } +}); + + +/* + * Popup extension to L.Path (polylines, polygons, circles), adding popup-related methods. + */ + +L.Path.include({ + + bindPopup: function (content, options) { + + if (content instanceof L.Popup) { + this._popup = content; + } else { + if (!this._popup || options) { + this._popup = new L.Popup(options, this); + } + this._popup.setContent(content); + } + + if (!this._popupHandlersAdded) { + this + .on('click', this._openPopup, this) + .on('remove', this.closePopup, this); + + this._popupHandlersAdded = true; + } + + return this; + }, + + unbindPopup: function () { + if (this._popup) { + this._popup = null; + this + .off('click', this._openPopup) + .off('remove', this.closePopup); + + this._popupHandlersAdded = false; + } + return this; + }, + + openPopup: function (latlng) { + + if (this._popup) { + // open the popup from one of the path's points if not specified + latlng = latlng || this._latlng || + this._latlngs[Math.floor(this._latlngs.length / 2)]; + + this._openPopup({latlng: latlng}); + } + + return this; + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + _openPopup: function (e) { + this._popup.setLatLng(e.latlng); + this._map.openPopup(this._popup); + } +}); + + +/* + * Vector rendering for IE6-8 through VML. + * Thanks to Dmitry Baranovsky and his Raphael library for inspiration! + */ + +L.Browser.vml = !L.Browser.svg && (function () { + try { + var div = document.createElement('div'); + div.innerHTML = ''; + + var shape = div.firstChild; + shape.style.behavior = 'url(#default#VML)'; + + return shape && (typeof shape.adj === 'object'); + + } catch (e) { + return false; + } +}()); + +L.Path = L.Browser.svg || !L.Browser.vml ? L.Path : L.Path.extend({ + statics: { + VML: true, + CLIP_PADDING: 0.02 + }, + + _createElement: (function () { + try { + document.namespaces.add('lvml', 'urn:schemas-microsoft-com:vml'); + return function (name) { + return document.createElement(''); + }; + } catch (e) { + return function (name) { + return document.createElement( + '<' + name + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">'); + }; + } + }()), + + _initPath: function () { + var container = this._container = this._createElement('shape'); + + L.DomUtil.addClass(container, 'leaflet-vml-shape' + + (this.options.className ? ' ' + this.options.className : '')); + + if (this.options.clickable) { + L.DomUtil.addClass(container, 'leaflet-clickable'); + } + + container.coordsize = '1 1'; + + this._path = this._createElement('path'); + container.appendChild(this._path); + + this._map._pathRoot.appendChild(container); + }, + + _initStyle: function () { + this._updateStyle(); + }, + + _updateStyle: function () { + var stroke = this._stroke, + fill = this._fill, + options = this.options, + container = this._container; + + container.stroked = options.stroke; + container.filled = options.fill; + + if (options.stroke) { + if (!stroke) { + stroke = this._stroke = this._createElement('stroke'); + stroke.endcap = 'round'; + container.appendChild(stroke); + } + stroke.weight = options.weight + 'px'; + stroke.color = options.color; + stroke.opacity = options.opacity; + + if (options.dashArray) { + stroke.dashStyle = L.Util.isArray(options.dashArray) ? + options.dashArray.join(' ') : + options.dashArray.replace(/( *, *)/g, ' '); + } else { + stroke.dashStyle = ''; + } + if (options.lineCap) { + stroke.endcap = options.lineCap.replace('butt', 'flat'); + } + if (options.lineJoin) { + stroke.joinstyle = options.lineJoin; + } + + } else if (stroke) { + container.removeChild(stroke); + this._stroke = null; + } + + if (options.fill) { + if (!fill) { + fill = this._fill = this._createElement('fill'); + container.appendChild(fill); + } + fill.color = options.fillColor || options.color; + fill.opacity = options.fillOpacity; + + } else if (fill) { + container.removeChild(fill); + this._fill = null; + } + }, + + _updatePath: function () { + var style = this._container.style; + + style.display = 'none'; + this._path.v = this.getPathString() + ' '; // the space fixes IE empty path string bug + style.display = ''; + } +}); + +L.Map.include(L.Browser.svg || !L.Browser.vml ? {} : { + _initPathRoot: function () { + if (this._pathRoot) { return; } + + var root = this._pathRoot = document.createElement('div'); + root.className = 'leaflet-vml-container'; + this._panes.overlayPane.appendChild(root); + + this.on('moveend', this._updatePathViewport); + this._updatePathViewport(); + } +}); + + +/* + * Vector rendering for all browsers that support canvas. + */ + +L.Browser.canvas = (function () { + return !!document.createElement('canvas').getContext; +}()); + +L.Path = (L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? L.Path : L.Path.extend({ + statics: { + //CLIP_PADDING: 0.02, // not sure if there's a need to set it to a small value + CANVAS: true, + SVG: false + }, + + redraw: function () { + if (this._map) { + this.projectLatlngs(); + this._requestUpdate(); + } + return this; + }, + + setStyle: function (style) { + L.setOptions(this, style); + + if (this._map) { + this._updateStyle(); + this._requestUpdate(); + } + return this; + }, + + onRemove: function (map) { + map + .off('viewreset', this.projectLatlngs, this) + .off('moveend', this._updatePath, this); + + if (this.options.clickable) { + this._map.off('click', this._onClick, this); + this._map.off('mousemove', this._onMouseMove, this); + } + + this._requestUpdate(); + + this.fire('remove'); + this._map = null; + }, + + _requestUpdate: function () { + if (this._map && !L.Path._updateRequest) { + L.Path._updateRequest = L.Util.requestAnimFrame(this._fireMapMoveEnd, this._map); + } + }, + + _fireMapMoveEnd: function () { + L.Path._updateRequest = null; + this.fire('moveend'); + }, + + _initElements: function () { + this._map._initPathRoot(); + this._ctx = this._map._canvasCtx; + }, + + _updateStyle: function () { + var options = this.options; + + if (options.stroke) { + this._ctx.lineWidth = options.weight; + this._ctx.strokeStyle = options.color; + } + if (options.fill) { + this._ctx.fillStyle = options.fillColor || options.color; + } + + if (options.lineCap) { + this._ctx.lineCap = options.lineCap; + } + if (options.lineJoin) { + this._ctx.lineJoin = options.lineJoin; + } + }, + + _drawPath: function () { + var i, j, len, len2, point, drawMethod; + + this._ctx.beginPath(); + + for (i = 0, len = this._parts.length; i < len; i++) { + for (j = 0, len2 = this._parts[i].length; j < len2; j++) { + point = this._parts[i][j]; + drawMethod = (j === 0 ? 'move' : 'line') + 'To'; + + this._ctx[drawMethod](point.x, point.y); + } + // TODO refactor ugly hack + if (this instanceof L.Polygon) { + this._ctx.closePath(); + } + } + }, + + _checkIfEmpty: function () { + return !this._parts.length; + }, + + _updatePath: function () { + if (this._checkIfEmpty()) { return; } + + var ctx = this._ctx, + options = this.options; + + this._drawPath(); + ctx.save(); + this._updateStyle(); + + if (options.fill) { + ctx.globalAlpha = options.fillOpacity; + ctx.fill(options.fillRule || 'evenodd'); + } + + if (options.stroke) { + ctx.globalAlpha = options.opacity; + ctx.stroke(); + } + + ctx.restore(); + + // TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature + }, + + _initEvents: function () { + if (this.options.clickable) { + this._map.on('mousemove', this._onMouseMove, this); + this._map.on('click dblclick contextmenu', this._fireMouseEvent, this); + } + }, + + _fireMouseEvent: function (e) { + if (this._containsPoint(e.layerPoint)) { + this.fire(e.type, e); + } + }, + + _onMouseMove: function (e) { + if (!this._map || this._map._animatingZoom) { return; } + + // TODO don't do on each move + if (this._containsPoint(e.layerPoint)) { + this._ctx.canvas.style.cursor = 'pointer'; + this._mouseInside = true; + this.fire('mouseover', e); + + } else if (this._mouseInside) { + this._ctx.canvas.style.cursor = ''; + this._mouseInside = false; + this.fire('mouseout', e); + } + } +}); + +L.Map.include((L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? {} : { + _initPathRoot: function () { + var root = this._pathRoot, + ctx; + + if (!root) { + root = this._pathRoot = document.createElement('canvas'); + root.style.position = 'absolute'; + ctx = this._canvasCtx = root.getContext('2d'); + + ctx.lineCap = 'round'; + ctx.lineJoin = 'round'; + + this._panes.overlayPane.appendChild(root); + + if (this.options.zoomAnimation) { + this._pathRoot.className = 'leaflet-zoom-animated'; + this.on('zoomanim', this._animatePathZoom); + this.on('zoomend', this._endPathZoom); + } + this.on('moveend', this._updateCanvasViewport); + this._updateCanvasViewport(); + } + }, + + _updateCanvasViewport: function () { + // don't redraw while zooming. See _updateSvgViewport for more details + if (this._pathZooming) { return; } + this._updatePathViewport(); + + var vp = this._pathViewport, + min = vp.min, + size = vp.max.subtract(min), + root = this._pathRoot; + + //TODO check if this works properly on mobile webkit + L.DomUtil.setPosition(root, min); + root.width = size.x; + root.height = size.y; + root.getContext('2d').translate(-min.x, -min.y); + } +}); + + +/* + * L.LineUtil contains different utility functions for line segments + * and polylines (clipping, simplification, distances, etc.) + */ + +/*jshint bitwise:false */ // allow bitwise operations for this file + +L.LineUtil = { + + // Simplify polyline with vertex reduction and Douglas-Peucker simplification. + // Improves rendering performance dramatically by lessening the number of points to draw. + + simplify: function (/*Point[]*/ points, /*Number*/ tolerance) { + if (!tolerance || !points.length) { + return points.slice(); + } + + var sqTolerance = tolerance * tolerance; + + // stage 1: vertex reduction + points = this._reducePoints(points, sqTolerance); + + // stage 2: Douglas-Peucker simplification + points = this._simplifyDP(points, sqTolerance); + + return points; + }, + + // distance from a point to a segment between two points + pointToSegmentDistance: function (/*Point*/ p, /*Point*/ p1, /*Point*/ p2) { + return Math.sqrt(this._sqClosestPointOnSegment(p, p1, p2, true)); + }, + + closestPointOnSegment: function (/*Point*/ p, /*Point*/ p1, /*Point*/ p2) { + return this._sqClosestPointOnSegment(p, p1, p2); + }, + + // Douglas-Peucker simplification, see http://en.wikipedia.org/wiki/Douglas-Peucker_algorithm + _simplifyDP: function (points, sqTolerance) { + + var len = points.length, + ArrayConstructor = typeof Uint8Array !== undefined + '' ? Uint8Array : Array, + markers = new ArrayConstructor(len); + + markers[0] = markers[len - 1] = 1; + + this._simplifyDPStep(points, markers, sqTolerance, 0, len - 1); + + var i, + newPoints = []; + + for (i = 0; i < len; i++) { + if (markers[i]) { + newPoints.push(points[i]); + } + } + + return newPoints; + }, + + _simplifyDPStep: function (points, markers, sqTolerance, first, last) { + + var maxSqDist = 0, + index, i, sqDist; + + for (i = first + 1; i <= last - 1; i++) { + sqDist = this._sqClosestPointOnSegment(points[i], points[first], points[last], true); + + if (sqDist > maxSqDist) { + index = i; + maxSqDist = sqDist; + } + } + + if (maxSqDist > sqTolerance) { + markers[index] = 1; + + this._simplifyDPStep(points, markers, sqTolerance, first, index); + this._simplifyDPStep(points, markers, sqTolerance, index, last); + } + }, + + // reduce points that are too close to each other to a single point + _reducePoints: function (points, sqTolerance) { + var reducedPoints = [points[0]]; + + for (var i = 1, prev = 0, len = points.length; i < len; i++) { + if (this._sqDist(points[i], points[prev]) > sqTolerance) { + reducedPoints.push(points[i]); + prev = i; + } + } + if (prev < len - 1) { + reducedPoints.push(points[len - 1]); + } + return reducedPoints; + }, + + // Cohen-Sutherland line clipping algorithm. + // Used to avoid rendering parts of a polyline that are not currently visible. + + clipSegment: function (a, b, bounds, useLastCode) { + var codeA = useLastCode ? this._lastCode : this._getBitCode(a, bounds), + codeB = this._getBitCode(b, bounds), + + codeOut, p, newCode; + + // save 2nd code to avoid calculating it on the next segment + this._lastCode = codeB; + + while (true) { + // if a,b is inside the clip window (trivial accept) + if (!(codeA | codeB)) { + return [a, b]; + // if a,b is outside the clip window (trivial reject) + } else if (codeA & codeB) { + return false; + // other cases + } else { + codeOut = codeA || codeB; + p = this._getEdgeIntersection(a, b, codeOut, bounds); + newCode = this._getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } + } + }, + + _getEdgeIntersection: function (a, b, code, bounds) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max; + + if (code & 8) { // top + return new L.Point(a.x + dx * (max.y - a.y) / dy, max.y); + } else if (code & 4) { // bottom + return new L.Point(a.x + dx * (min.y - a.y) / dy, min.y); + } else if (code & 2) { // right + return new L.Point(max.x, a.y + dy * (max.x - a.x) / dx); + } else if (code & 1) { // left + return new L.Point(min.x, a.y + dy * (min.x - a.x) / dx); + } + }, + + _getBitCode: function (/*Point*/ p, bounds) { + var code = 0; + + if (p.x < bounds.min.x) { // left + code |= 1; + } else if (p.x > bounds.max.x) { // right + code |= 2; + } + if (p.y < bounds.min.y) { // bottom + code |= 4; + } else if (p.y > bounds.max.y) { // top + code |= 8; + } + + return code; + }, + + // square distance (to avoid unnecessary Math.sqrt calls) + _sqDist: function (p1, p2) { + var dx = p2.x - p1.x, + dy = p2.y - p1.y; + return dx * dx + dy * dy; + }, + + // return closest point on segment or distance to that point + _sqClosestPointOnSegment: function (p, p1, p2, sqDist) { + var x = p1.x, + y = p1.y, + dx = p2.x - x, + dy = p2.y - y, + dot = dx * dx + dy * dy, + t; + + if (dot > 0) { + t = ((p.x - x) * dx + (p.y - y) * dy) / dot; + + if (t > 1) { + x = p2.x; + y = p2.y; + } else if (t > 0) { + x += dx * t; + y += dy * t; + } + } + + dx = p.x - x; + dy = p.y - y; + + return sqDist ? dx * dx + dy * dy : new L.Point(x, y); + } +}; + + +/* + * L.Polyline is used to display polylines on a map. + */ + +L.Polyline = L.Path.extend({ + initialize: function (latlngs, options) { + L.Path.prototype.initialize.call(this, options); + + this._latlngs = this._convertLatLngs(latlngs); + }, + + options: { + // how much to simplify the polyline on each zoom level + // more = better performance and smoother look, less = more accurate + smoothFactor: 1.0, + noClip: false + }, + + projectLatlngs: function () { + this._originalPoints = []; + + for (var i = 0, len = this._latlngs.length; i < len; i++) { + this._originalPoints[i] = this._map.latLngToLayerPoint(this._latlngs[i]); + } + }, + + getPathString: function () { + for (var i = 0, len = this._parts.length, str = ''; i < len; i++) { + str += this._getPathPartStr(this._parts[i]); + } + return str; + }, + + getLatLngs: function () { + return this._latlngs; + }, + + setLatLngs: function (latlngs) { + this._latlngs = this._convertLatLngs(latlngs); + return this.redraw(); + }, + + addLatLng: function (latlng) { + this._latlngs.push(L.latLng(latlng)); + return this.redraw(); + }, + + spliceLatLngs: function () { // (Number index, Number howMany) + var removed = [].splice.apply(this._latlngs, arguments); + this._convertLatLngs(this._latlngs, true); + this.redraw(); + return removed; + }, + + closestLayerPoint: function (p) { + var minDistance = Infinity, parts = this._parts, p1, p2, minPoint = null; + + for (var j = 0, jLen = parts.length; j < jLen; j++) { + var points = parts[j]; + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + var sqDist = L.LineUtil._sqClosestPointOnSegment(p, p1, p2, true); + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = L.LineUtil._sqClosestPointOnSegment(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + getBounds: function () { + return new L.LatLngBounds(this.getLatLngs()); + }, + + _convertLatLngs: function (latlngs, overwrite) { + var i, len, target = overwrite ? latlngs : []; + + for (i = 0, len = latlngs.length; i < len; i++) { + if (L.Util.isArray(latlngs[i]) && typeof latlngs[i][0] !== 'number') { + return; + } + target[i] = L.latLng(latlngs[i]); + } + return target; + }, + + _initEvents: function () { + L.Path.prototype._initEvents.call(this); + }, + + _getPathPartStr: function (points) { + var round = L.Path.VML; + + for (var j = 0, len2 = points.length, str = '', p; j < len2; j++) { + p = points[j]; + if (round) { + p._round(); + } + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + return str; + }, + + _clipPoints: function () { + var points = this._originalPoints, + len = points.length, + i, k, segment; + + if (this.options.noClip) { + this._parts = [points]; + return; + } + + this._parts = []; + + var parts = this._parts, + vp = this._map._pathViewport, + lu = L.LineUtil; + + for (i = 0, k = 0; i < len - 1; i++) { + segment = lu.clipSegment(points[i], points[i + 1], vp, i); + if (!segment) { + continue; + } + + parts[k] = parts[k] || []; + parts[k].push(segment[0]); + + // if segment goes out of screen, or it's the last one, it's the end of the line part + if ((segment[1] !== points[i + 1]) || (i === len - 2)) { + parts[k].push(segment[1]); + k++; + } + } + }, + + // simplify each clipped part of the polyline + _simplifyPoints: function () { + var parts = this._parts, + lu = L.LineUtil; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = lu.simplify(parts[i], this.options.smoothFactor); + } + }, + + _updatePath: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + + L.Path.prototype._updatePath.call(this); + } +}); + +L.polyline = function (latlngs, options) { + return new L.Polyline(latlngs, options); +}; + + +/* + * L.PolyUtil contains utility functions for polygons (clipping, etc.). + */ + +/*jshint bitwise:false */ // allow bitwise operations here + +L.PolyUtil = {}; + +/* + * Sutherland-Hodgeman polygon clipping algorithm. + * Used to avoid rendering parts of a polygon that are not currently visible. + */ +L.PolyUtil.clipPolygon = function (points, bounds) { + var clippedPoints, + edges = [1, 4, 2, 8], + i, j, k, + a, b, + len, edge, p, + lu = L.LineUtil; + + for (i = 0, len = points.length; i < len; i++) { + points[i]._code = lu._getBitCode(points[i], bounds); + } + + // for each edge (left, bottom, right, top) + for (k = 0; k < 4; k++) { + edge = edges[k]; + clippedPoints = []; + + for (i = 0, len = points.length, j = len - 1; i < len; j = i++) { + a = points[i]; + b = points[j]; + + // if a is inside the clip window + if (!(a._code & edge)) { + // if b is outside the clip window (a->b goes out of screen) + if (b._code & edge) { + p = lu._getEdgeIntersection(b, a, edge, bounds); + p._code = lu._getBitCode(p, bounds); + clippedPoints.push(p); + } + clippedPoints.push(a); + + // else if b is inside the clip window (a->b enters the screen) + } else if (!(b._code & edge)) { + p = lu._getEdgeIntersection(b, a, edge, bounds); + p._code = lu._getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +}; + + +/* + * L.Polygon is used to display polygons on a map. + */ + +L.Polygon = L.Polyline.extend({ + options: { + fill: true + }, + + initialize: function (latlngs, options) { + L.Polyline.prototype.initialize.call(this, latlngs, options); + this._initWithHoles(latlngs); + }, + + _initWithHoles: function (latlngs) { + var i, len, hole; + if (latlngs && L.Util.isArray(latlngs[0]) && (typeof latlngs[0][0] !== 'number')) { + this._latlngs = this._convertLatLngs(latlngs[0]); + this._holes = latlngs.slice(1); + + for (i = 0, len = this._holes.length; i < len; i++) { + hole = this._holes[i] = this._convertLatLngs(this._holes[i]); + if (hole[0].equals(hole[hole.length - 1])) { + hole.pop(); + } + } + } + + // filter out last point if its equal to the first one + latlngs = this._latlngs; + + if (latlngs.length >= 2 && latlngs[0].equals(latlngs[latlngs.length - 1])) { + latlngs.pop(); + } + }, + + projectLatlngs: function () { + L.Polyline.prototype.projectLatlngs.call(this); + + // project polygon holes points + // TODO move this logic to Polyline to get rid of duplication + this._holePoints = []; + + if (!this._holes) { return; } + + var i, j, len, len2; + + for (i = 0, len = this._holes.length; i < len; i++) { + this._holePoints[i] = []; + + for (j = 0, len2 = this._holes[i].length; j < len2; j++) { + this._holePoints[i][j] = this._map.latLngToLayerPoint(this._holes[i][j]); + } + } + }, + + setLatLngs: function (latlngs) { + if (latlngs && L.Util.isArray(latlngs[0]) && (typeof latlngs[0][0] !== 'number')) { + this._initWithHoles(latlngs); + return this.redraw(); + } else { + return L.Polyline.prototype.setLatLngs.call(this, latlngs); + } + }, + + _clipPoints: function () { + var points = this._originalPoints, + newParts = []; + + this._parts = [points].concat(this._holePoints); + + if (this.options.noClip) { return; } + + for (var i = 0, len = this._parts.length; i < len; i++) { + var clipped = L.PolyUtil.clipPolygon(this._parts[i], this._map._pathViewport); + if (clipped.length) { + newParts.push(clipped); + } + } + + this._parts = newParts; + }, + + _getPathPartStr: function (points) { + var str = L.Polyline.prototype._getPathPartStr.call(this, points); + return str + (L.Browser.svg ? 'z' : 'x'); + } +}); + +L.polygon = function (latlngs, options) { + return new L.Polygon(latlngs, options); +}; + + +/* + * Contains L.MultiPolyline and L.MultiPolygon layers. + */ + +(function () { + function createMulti(Klass) { + + return L.FeatureGroup.extend({ + + initialize: function (latlngs, options) { + this._layers = {}; + this._options = options; + this.setLatLngs(latlngs); + }, + + setLatLngs: function (latlngs) { + var i = 0, + len = latlngs.length; + + this.eachLayer(function (layer) { + if (i < len) { + layer.setLatLngs(latlngs[i++]); + } else { + this.removeLayer(layer); + } + }, this); + + while (i < len) { + this.addLayer(new Klass(latlngs[i++], this._options)); + } + + return this; + }, + + getLatLngs: function () { + var latlngs = []; + + this.eachLayer(function (layer) { + latlngs.push(layer.getLatLngs()); + }); + + return latlngs; + } + }); + } + + L.MultiPolyline = createMulti(L.Polyline); + L.MultiPolygon = createMulti(L.Polygon); + + L.multiPolyline = function (latlngs, options) { + return new L.MultiPolyline(latlngs, options); + }; + + L.multiPolygon = function (latlngs, options) { + return new L.MultiPolygon(latlngs, options); + }; +}()); + + +/* + * L.Rectangle extends Polygon and creates a rectangle when passed a LatLngBounds object. + */ + +L.Rectangle = L.Polygon.extend({ + initialize: function (latLngBounds, options) { + L.Polygon.prototype.initialize.call(this, this._boundsToLatLngs(latLngBounds), options); + }, + + setBounds: function (latLngBounds) { + this.setLatLngs(this._boundsToLatLngs(latLngBounds)); + }, + + _boundsToLatLngs: function (latLngBounds) { + latLngBounds = L.latLngBounds(latLngBounds); + return [ + latLngBounds.getSouthWest(), + latLngBounds.getNorthWest(), + latLngBounds.getNorthEast(), + latLngBounds.getSouthEast() + ]; + } +}); + +L.rectangle = function (latLngBounds, options) { + return new L.Rectangle(latLngBounds, options); +}; + + +/* + * L.Circle is a circle overlay (with a certain radius in meters). + */ + +L.Circle = L.Path.extend({ + initialize: function (latlng, radius, options) { + L.Path.prototype.initialize.call(this, options); + + this._latlng = L.latLng(latlng); + this._mRadius = radius; + }, + + options: { + fill: true + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + return this.redraw(); + }, + + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + projectLatlngs: function () { + var lngRadius = this._getLngRadius(), + latlng = this._latlng, + pointLeft = this._map.latLngToLayerPoint([latlng.lat, latlng.lng - lngRadius]); + + this._point = this._map.latLngToLayerPoint(latlng); + this._radius = Math.max(this._point.x - pointLeft.x, 1); + }, + + getBounds: function () { + var lngRadius = this._getLngRadius(), + latRadius = (this._mRadius / 40075017) * 360, + latlng = this._latlng; + + return new L.LatLngBounds( + [latlng.lat - latRadius, latlng.lng - lngRadius], + [latlng.lat + latRadius, latlng.lng + lngRadius]); + }, + + getLatLng: function () { + return this._latlng; + }, + + getPathString: function () { + var p = this._point, + r = this._radius; + + if (this._checkIfEmpty()) { + return ''; + } + + if (L.Browser.svg) { + return 'M' + p.x + ',' + (p.y - r) + + 'A' + r + ',' + r + ',0,1,1,' + + (p.x - 0.1) + ',' + (p.y - r) + ' z'; + } else { + p._round(); + r = Math.round(r); + return 'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r + ' 0,' + (65535 * 360); + } + }, + + getRadius: function () { + return this._mRadius; + }, + + // TODO Earth hardcoded, move into projection code! + + _getLatRadius: function () { + return (this._mRadius / 40075017) * 360; + }, + + _getLngRadius: function () { + return this._getLatRadius() / Math.cos(L.LatLng.DEG_TO_RAD * this._latlng.lat); + }, + + _checkIfEmpty: function () { + if (!this._map) { + return false; + } + var vp = this._map._pathViewport, + r = this._radius, + p = this._point; + + return p.x - r > vp.max.x || p.y - r > vp.max.y || + p.x + r < vp.min.x || p.y + r < vp.min.y; + } +}); + +L.circle = function (latlng, radius, options) { + return new L.Circle(latlng, radius, options); +}; + + +/* + * L.CircleMarker is a circle overlay with a permanent pixel radius. + */ + +L.CircleMarker = L.Circle.extend({ + options: { + radius: 10, + weight: 2 + }, + + initialize: function (latlng, options) { + L.Circle.prototype.initialize.call(this, latlng, null, options); + this._radius = this.options.radius; + }, + + projectLatlngs: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + }, + + _updateStyle : function () { + L.Circle.prototype._updateStyle.call(this); + this.setRadius(this.options.radius); + }, + + setLatLng: function (latlng) { + L.Circle.prototype.setLatLng.call(this, latlng); + if (this._popup && this._popup._isOpen) { + this._popup.setLatLng(latlng); + } + return this; + }, + + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + }, + + getRadius: function () { + return this._radius; + } +}); + +L.circleMarker = function (latlng, options) { + return new L.CircleMarker(latlng, options); +}; + + +/* + * Extends L.Polyline to be able to manually detect clicks on Canvas-rendered polylines. + */ + +L.Polyline.include(!L.Path.CANVAS ? {} : { + _containsPoint: function (p, closed) { + var i, j, k, len, len2, dist, part, + w = this.options.weight / 2; + + if (L.Browser.touch) { + w += 10; // polyline click tolerance on touch devices + } + + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + if (!closed && (j === 0)) { + continue; + } + + dist = L.LineUtil.pointToSegmentDistance(p, part[k], part[j]); + + if (dist <= w) { + return true; + } + } + } + return false; + } +}); + + +/* + * Extends L.Polygon to be able to manually detect clicks on Canvas-rendered polygons. + */ + +L.Polygon.include(!L.Path.CANVAS ? {} : { + _containsPoint: function (p) { + var inside = false, + part, p1, p2, + i, j, k, + len, len2; + + // TODO optimization: check if within bounds first + + if (L.Polyline.prototype._containsPoint.call(this, p, true)) { + // click on polygon border + return true; + } + + // ray casting algorithm for detecting if point is in polygon + + for (i = 0, len = this._parts.length; i < len; i++) { + part = this._parts[i]; + + for (j = 0, len2 = part.length, k = len2 - 1; j < len2; k = j++) { + p1 = part[j]; + p2 = part[k]; + + if (((p1.y > p.y) !== (p2.y > p.y)) && + (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x)) { + inside = !inside; + } + } + } + + return inside; + } +}); + + +/* + * Extends L.Circle with Canvas-specific code. + */ + +L.Circle.include(!L.Path.CANVAS ? {} : { + _drawPath: function () { + var p = this._point; + this._ctx.beginPath(); + this._ctx.arc(p.x, p.y, this._radius, 0, Math.PI * 2, false); + }, + + _containsPoint: function (p) { + var center = this._point, + w2 = this.options.stroke ? this.options.weight / 2 : 0; + + return (p.distanceTo(center) <= this._radius + w2); + } +}); + + +/* + * CircleMarker canvas specific drawing parts. + */ + +L.CircleMarker.include(!L.Path.CANVAS ? {} : { + _updateStyle: function () { + L.Path.prototype._updateStyle.call(this); + } +}); + + +/* + * L.GeoJSON turns any GeoJSON data into a Leaflet layer. + */ + +L.GeoJSON = L.FeatureGroup.extend({ + + initialize: function (geojson, options) { + L.setOptions(this, options); + + this._layers = {}; + + if (geojson) { + this.addData(geojson); + } + }, + + addData: function (geojson) { + var features = L.Util.isArray(geojson) ? geojson : geojson.features, + i, len, feature; + + if (features) { + for (i = 0, len = features.length; i < len; i++) { + // Only add this if geometry or geometries are set and not null + feature = features[i]; + if (feature.geometries || feature.geometry || feature.features || feature.coordinates) { + this.addData(features[i]); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return; } + + var layer = L.GeoJSON.geometryToLayer(geojson, options.pointToLayer, options.coordsToLatLng, options); + layer.feature = L.GeoJSON.asFeature(geojson); + + layer.defaultOptions = layer.options; + this.resetStyle(layer); + + if (options.onEachFeature) { + options.onEachFeature(geojson, layer); + } + + return this.addLayer(layer); + }, + + resetStyle: function (layer) { + var style = this.options.style; + if (style) { + // reset any custom styles + L.Util.extend(layer.options, layer.defaultOptions); + + this._setLayerStyle(layer, style); + } + }, + + setStyle: function (style) { + this.eachLayer(function (layer) { + this._setLayerStyle(layer, style); + }, this); + }, + + _setLayerStyle: function (layer, style) { + if (typeof style === 'function') { + style = style(layer.feature); + } + if (layer.setStyle) { + layer.setStyle(style); + } + } +}); + +L.extend(L.GeoJSON, { + geometryToLayer: function (geojson, pointToLayer, coordsToLatLng, vectorOptions) { + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry.coordinates, + layers = [], + latlng, latlngs, i, len; + + coordsToLatLng = coordsToLatLng || this.coordsToLatLng; + + switch (geometry.type) { + case 'Point': + latlng = coordsToLatLng(coords); + return pointToLayer ? pointToLayer(geojson, latlng) : new L.Marker(latlng); + + case 'MultiPoint': + for (i = 0, len = coords.length; i < len; i++) { + latlng = coordsToLatLng(coords[i]); + layers.push(pointToLayer ? pointToLayer(geojson, latlng) : new L.Marker(latlng)); + } + return new L.FeatureGroup(layers); + + case 'LineString': + latlngs = this.coordsToLatLngs(coords, 0, coordsToLatLng); + return new L.Polyline(latlngs, vectorOptions); + + case 'Polygon': + if (coords.length === 2 && !coords[1].length) { + throw new Error('Invalid GeoJSON object.'); + } + latlngs = this.coordsToLatLngs(coords, 1, coordsToLatLng); + return new L.Polygon(latlngs, vectorOptions); + + case 'MultiLineString': + latlngs = this.coordsToLatLngs(coords, 1, coordsToLatLng); + return new L.MultiPolyline(latlngs, vectorOptions); + + case 'MultiPolygon': + latlngs = this.coordsToLatLngs(coords, 2, coordsToLatLng); + return new L.MultiPolygon(latlngs, vectorOptions); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + + layers.push(this.geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, pointToLayer, coordsToLatLng, vectorOptions)); + } + return new L.FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } + }, + + coordsToLatLng: function (coords) { // (Array[, Boolean]) -> LatLng + return new L.LatLng(coords[1], coords[0], coords[2]); + }, + + coordsToLatLngs: function (coords, levelsDeep, coordsToLatLng) { // (Array[, Number, Function]) -> Array + var latlng, i, len, + latlngs = []; + + for (i = 0, len = coords.length; i < len; i++) { + latlng = levelsDeep ? + this.coordsToLatLngs(coords[i], levelsDeep - 1, coordsToLatLng) : + (coordsToLatLng || this.coordsToLatLng)(coords[i]); + + latlngs.push(latlng); + } + + return latlngs; + }, + + latLngToCoords: function (latlng) { + var coords = [latlng.lng, latlng.lat]; + + if (latlng.alt !== undefined) { + coords.push(latlng.alt); + } + return coords; + }, + + latLngsToCoords: function (latLngs) { + var coords = []; + + for (var i = 0, len = latLngs.length; i < len; i++) { + coords.push(L.GeoJSON.latLngToCoords(latLngs[i])); + } + + return coords; + }, + + getFeature: function (layer, newGeometry) { + return layer.feature ? L.extend({}, layer.feature, {geometry: newGeometry}) : L.GeoJSON.asFeature(newGeometry); + }, + + asFeature: function (geoJSON) { + if (geoJSON.type === 'Feature') { + return geoJSON; + } + + return { + type: 'Feature', + properties: {}, + geometry: geoJSON + }; + } +}); + +var PointToGeoJSON = { + toGeoJSON: function () { + return L.GeoJSON.getFeature(this, { + type: 'Point', + coordinates: L.GeoJSON.latLngToCoords(this.getLatLng()) + }); + } +}; + +L.Marker.include(PointToGeoJSON); +L.Circle.include(PointToGeoJSON); +L.CircleMarker.include(PointToGeoJSON); + +L.Polyline.include({ + toGeoJSON: function () { + return L.GeoJSON.getFeature(this, { + type: 'LineString', + coordinates: L.GeoJSON.latLngsToCoords(this.getLatLngs()) + }); + } +}); + +L.Polygon.include({ + toGeoJSON: function () { + var coords = [L.GeoJSON.latLngsToCoords(this.getLatLngs())], + i, len, hole; + + coords[0].push(coords[0][0]); + + if (this._holes) { + for (i = 0, len = this._holes.length; i < len; i++) { + hole = L.GeoJSON.latLngsToCoords(this._holes[i]); + hole.push(hole[0]); + coords.push(hole); + } + } + + return L.GeoJSON.getFeature(this, { + type: 'Polygon', + coordinates: coords + }); + } +}); + +(function () { + function multiToGeoJSON(type) { + return function () { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON().geometry.coordinates); + }); + + return L.GeoJSON.getFeature(this, { + type: type, + coordinates: coords + }); + }; + } + + L.MultiPolyline.include({toGeoJSON: multiToGeoJSON('MultiLineString')}); + L.MultiPolygon.include({toGeoJSON: multiToGeoJSON('MultiPolygon')}); + + L.LayerGroup.include({ + toGeoJSON: function () { + + var geometry = this.feature && this.feature.geometry, + jsons = [], + json; + + if (geometry && geometry.type === 'MultiPoint') { + return multiToGeoJSON('MultiPoint').call(this); + } + + var isGeometryCollection = geometry && geometry.type === 'GeometryCollection'; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + json = layer.toGeoJSON(); + jsons.push(isGeometryCollection ? json.geometry : L.GeoJSON.asFeature(json)); + } + }); + + if (isGeometryCollection) { + return L.GeoJSON.getFeature(this, { + geometries: jsons, + type: 'GeometryCollection' + }); + } + + return { + type: 'FeatureCollection', + features: jsons + }; + } + }); +}()); + +L.geoJson = function (geojson, options) { + return new L.GeoJSON(geojson, options); +}; + + +/* + * L.DomEvent contains functions for working with DOM events. + */ + +L.DomEvent = { + /* inspired by John Resig, Dean Edwards and YUI addEvent implementations */ + addListener: function (obj, type, fn, context) { // (HTMLElement, String, Function[, Object]) + + var id = L.stamp(fn), + key = '_leaflet_' + type + id, + handler, originalHandler, newType; + + if (obj[key]) { return this; } + + handler = function (e) { + return fn.call(context || obj, e || L.DomEvent._getEvent()); + }; + + if (L.Browser.pointer && type.indexOf('touch') === 0) { + return this.addPointerListener(obj, type, handler, id); + } + if (L.Browser.touch && (type === 'dblclick') && this.addDoubleTapListener) { + this.addDoubleTapListener(obj, handler, id); + } + + if ('addEventListener' in obj) { + + if (type === 'mousewheel') { + obj.addEventListener('DOMMouseScroll', handler, false); + obj.addEventListener(type, handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + + originalHandler = handler; + newType = (type === 'mouseenter' ? 'mouseover' : 'mouseout'); + + handler = function (e) { + if (!L.DomEvent._checkMouse(obj, e)) { return; } + return originalHandler(e); + }; + + obj.addEventListener(newType, handler, false); + + } else if (type === 'click' && L.Browser.android) { + originalHandler = handler; + handler = function (e) { + return L.DomEvent._filterClick(e, originalHandler); + }; + + obj.addEventListener(type, handler, false); + } else { + obj.addEventListener(type, handler, false); + } + + } else if ('attachEvent' in obj) { + obj.attachEvent('on' + type, handler); + } + + obj[key] = handler; + + return this; + }, + + removeListener: function (obj, type, fn) { // (HTMLElement, String, Function) + + var id = L.stamp(fn), + key = '_leaflet_' + type + id, + handler = obj[key]; + + if (!handler) { return this; } + + if (L.Browser.pointer && type.indexOf('touch') === 0) { + this.removePointerListener(obj, type, id); + } else if (L.Browser.touch && (type === 'dblclick') && this.removeDoubleTapListener) { + this.removeDoubleTapListener(obj, id); + + } else if ('removeEventListener' in obj) { + + if (type === 'mousewheel') { + obj.removeEventListener('DOMMouseScroll', handler, false); + obj.removeEventListener(type, handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + obj.removeEventListener((type === 'mouseenter' ? 'mouseover' : 'mouseout'), handler, false); + } else { + obj.removeEventListener(type, handler, false); + } + } else if ('detachEvent' in obj) { + obj.detachEvent('on' + type, handler); + } + + obj[key] = null; + + return this; + }, + + stopPropagation: function (e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else { + e.cancelBubble = true; + } + L.DomEvent._skipped(e); + + return this; + }, + + disableScrollPropagation: function (el) { + var stop = L.DomEvent.stopPropagation; + + return L.DomEvent + .on(el, 'mousewheel', stop) + .on(el, 'MozMousePixelScroll', stop); + }, + + disableClickPropagation: function (el) { + var stop = L.DomEvent.stopPropagation; + + for (var i = L.Draggable.START.length - 1; i >= 0; i--) { + L.DomEvent.on(el, L.Draggable.START[i], stop); + } + + return L.DomEvent + .on(el, 'click', L.DomEvent._fakeStop) + .on(el, 'dblclick', stop); + }, + + preventDefault: function (e) { + + if (e.preventDefault) { + e.preventDefault(); + } else { + e.returnValue = false; + } + return this; + }, + + stop: function (e) { + return L.DomEvent + .preventDefault(e) + .stopPropagation(e); + }, + + getMousePosition: function (e, container) { + if (!container) { + return new L.Point(e.clientX, e.clientY); + } + + var rect = container.getBoundingClientRect(); + + return new L.Point( + e.clientX - rect.left - container.clientLeft, + e.clientY - rect.top - container.clientTop); + }, + + getWheelDelta: function (e) { + + var delta = 0; + + if (e.wheelDelta) { + delta = e.wheelDelta / 120; + } + if (e.detail) { + delta = -e.detail / 3; + } + return delta; + }, + + _skipEvents: {}, + + _fakeStop: function (e) { + // fakes stopPropagation by setting a special event flag, checked/reset with L.DomEvent._skipped(e) + L.DomEvent._skipEvents[e.type] = true; + }, + + _skipped: function (e) { + var skipped = this._skipEvents[e.type]; + // reset when checking, as it's only used in map container and propagates outside of the map + this._skipEvents[e.type] = false; + return skipped; + }, + + // check if element really left/entered the event target (for mouseenter/mouseleave) + _checkMouse: function (el, e) { + + var related = e.relatedTarget; + + if (!related) { return true; } + + try { + while (related && (related !== el)) { + related = related.parentNode; + } + } catch (err) { + return false; + } + return (related !== el); + }, + + _getEvent: function () { // evil magic for IE + /*jshint noarg:false */ + var e = window.event; + if (!e) { + var caller = arguments.callee.caller; + while (caller) { + e = caller['arguments'][0]; + if (e && window.Event === e.constructor) { + break; + } + caller = caller.caller; + } + } + return e; + }, + + // this is a horrible workaround for a bug in Android where a single touch triggers two click events + _filterClick: function (e, handler) { + var timeStamp = (e.timeStamp || e.originalEvent.timeStamp), + elapsed = L.DomEvent._lastClick && (timeStamp - L.DomEvent._lastClick); + + // are they closer together than 500ms yet more than 100ms? + // Android typically triggers them ~300ms apart while multiple listeners + // on the same event should be triggered far faster; + // or check if click is simulated on the element, and if it is, reject any non-simulated events + + if ((elapsed && elapsed > 100 && elapsed < 500) || (e.target._simulatedClick && !e._simulated)) { + L.DomEvent.stop(e); + return; + } + L.DomEvent._lastClick = timeStamp; + + return handler(e); + } +}; + +L.DomEvent.on = L.DomEvent.addListener; +L.DomEvent.off = L.DomEvent.removeListener; + + +/* + * L.Draggable allows you to add dragging capabilities to any element. Supports mobile devices too. + */ + +L.Draggable = L.Class.extend({ + includes: L.Mixin.Events, + + statics: { + START: L.Browser.touch ? ['touchstart', 'mousedown'] : ['mousedown'], + END: { + mousedown: 'mouseup', + touchstart: 'touchend', + pointerdown: 'touchend', + MSPointerDown: 'touchend' + }, + MOVE: { + mousedown: 'mousemove', + touchstart: 'touchmove', + pointerdown: 'touchmove', + MSPointerDown: 'touchmove' + } + }, + + initialize: function (element, dragStartTarget) { + this._element = element; + this._dragStartTarget = dragStartTarget || element; + }, + + enable: function () { + if (this._enabled) { return; } + + for (var i = L.Draggable.START.length - 1; i >= 0; i--) { + L.DomEvent.on(this._dragStartTarget, L.Draggable.START[i], this._onDown, this); + } + + this._enabled = true; + }, + + disable: function () { + if (!this._enabled) { return; } + + for (var i = L.Draggable.START.length - 1; i >= 0; i--) { + L.DomEvent.off(this._dragStartTarget, L.Draggable.START[i], this._onDown, this); + } + + this._enabled = false; + this._moved = false; + }, + + _onDown: function (e) { + this._moved = false; + + if (e.shiftKey || ((e.which !== 1) && (e.button !== 1) && !e.touches)) { return; } + + L.DomEvent.stopPropagation(e); + + if (L.Draggable._disabled) { return; } + + L.DomUtil.disableImageDrag(); + L.DomUtil.disableTextSelection(); + + if (this._moving) { return; } + + var first = e.touches ? e.touches[0] : e; + + this._startPoint = new L.Point(first.clientX, first.clientY); + this._startPos = this._newPos = L.DomUtil.getPosition(this._element); + + L.DomEvent + .on(document, L.Draggable.MOVE[e.type], this._onMove, this) + .on(document, L.Draggable.END[e.type], this._onUp, this); + }, + + _onMove: function (e) { + if (e.touches && e.touches.length > 1) { + this._moved = true; + return; + } + + var first = (e.touches && e.touches.length === 1 ? e.touches[0] : e), + newPoint = new L.Point(first.clientX, first.clientY), + offset = newPoint.subtract(this._startPoint); + + if (!offset.x && !offset.y) { return; } + if (L.Browser.touch && Math.abs(offset.x) + Math.abs(offset.y) < 3) { return; } + + L.DomEvent.preventDefault(e); + + if (!this._moved) { + this.fire('dragstart'); + + this._moved = true; + this._startPos = L.DomUtil.getPosition(this._element).subtract(offset); + + L.DomUtil.addClass(document.body, 'leaflet-dragging'); + this._lastTarget = e.target || e.srcElement; + L.DomUtil.addClass(this._lastTarget, 'leaflet-drag-target'); + } + + this._newPos = this._startPos.add(offset); + this._moving = true; + + L.Util.cancelAnimFrame(this._animRequest); + this._animRequest = L.Util.requestAnimFrame(this._updatePosition, this, true, this._dragStartTarget); + }, + + _updatePosition: function () { + this.fire('predrag'); + L.DomUtil.setPosition(this._element, this._newPos); + this.fire('drag'); + }, + + _onUp: function () { + L.DomUtil.removeClass(document.body, 'leaflet-dragging'); + + if (this._lastTarget) { + L.DomUtil.removeClass(this._lastTarget, 'leaflet-drag-target'); + this._lastTarget = null; + } + + for (var i in L.Draggable.MOVE) { + L.DomEvent + .off(document, L.Draggable.MOVE[i], this._onMove) + .off(document, L.Draggable.END[i], this._onUp); + } + + L.DomUtil.enableImageDrag(); + L.DomUtil.enableTextSelection(); + + if (this._moved && this._moving) { + // ensure drag is not fired after dragend + L.Util.cancelAnimFrame(this._animRequest); + + this.fire('dragend', { + distance: this._newPos.distanceTo(this._startPos) + }); + } + + this._moving = false; + } +}); + + +/* + L.Handler is a base class for handler classes that are used internally to inject + interaction features like dragging to classes like Map and Marker. +*/ + +L.Handler = L.Class.extend({ + initialize: function (map) { + this._map = map; + }, + + enable: function () { + if (this._enabled) { return; } + + this._enabled = true; + this.addHooks(); + }, + + disable: function () { + if (!this._enabled) { return; } + + this._enabled = false; + this.removeHooks(); + }, + + enabled: function () { + return !!this._enabled; + } +}); + + +/* + * L.Handler.MapDrag is used to make the map draggable (with panning inertia), enabled by default. + */ + +L.Map.mergeOptions({ + dragging: true, + + inertia: !L.Browser.android23, + inertiaDeceleration: 3400, // px/s^2 + inertiaMaxSpeed: Infinity, // px/s + inertiaThreshold: L.Browser.touch ? 32 : 18, // ms + easeLinearity: 0.25, + + // TODO refactor, move to CRS + worldCopyJump: false +}); + +L.Map.Drag = L.Handler.extend({ + addHooks: function () { + if (!this._draggable) { + var map = this._map; + + this._draggable = new L.Draggable(map._mapPane, map._container); + + this._draggable.on({ + 'dragstart': this._onDragStart, + 'drag': this._onDrag, + 'dragend': this._onDragEnd + }, this); + + if (map.options.worldCopyJump) { + this._draggable.on('predrag', this._onPreDrag, this); + map.on('viewreset', this._onViewReset, this); + + map.whenReady(this._onViewReset, this); + } + } + this._draggable.enable(); + }, + + removeHooks: function () { + this._draggable.disable(); + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _onDragStart: function () { + var map = this._map; + + if (map._panAnim) { + map._panAnim.stop(); + } + + map + .fire('movestart') + .fire('dragstart'); + + if (map.options.inertia) { + this._positions = []; + this._times = []; + } + }, + + _onDrag: function () { + if (this._map.options.inertia) { + var time = this._lastTime = +new Date(), + pos = this._lastPos = this._draggable._newPos; + + this._positions.push(pos); + this._times.push(time); + + if (time - this._times[0] > 200) { + this._positions.shift(); + this._times.shift(); + } + } + + this._map + .fire('move') + .fire('drag'); + }, + + _onViewReset: function () { + // TODO fix hardcoded Earth values + var pxCenter = this._map.getSize()._divideBy(2), + pxWorldCenter = this._map.latLngToLayerPoint([0, 0]); + + this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x; + this._worldWidth = this._map.project([0, 180]).x; + }, + + _onPreDrag: function () { + // TODO refactor to be able to adjust map pane position after zoom + var worldWidth = this._worldWidth, + halfWidth = Math.round(worldWidth / 2), + dx = this._initialWorldOffset, + x = this._draggable._newPos.x, + newX1 = (x - halfWidth + dx) % worldWidth + halfWidth - dx, + newX2 = (x + halfWidth + dx) % worldWidth - halfWidth - dx, + newX = Math.abs(newX1 + dx) < Math.abs(newX2 + dx) ? newX1 : newX2; + + this._draggable._newPos.x = newX; + }, + + _onDragEnd: function (e) { + var map = this._map, + options = map.options, + delay = +new Date() - this._lastTime, + + noInertia = !options.inertia || delay > options.inertiaThreshold || !this._positions[0]; + + map.fire('dragend', e); + + if (noInertia) { + map.fire('moveend'); + + } else { + + var direction = this._lastPos.subtract(this._positions[0]), + duration = (this._lastTime + delay - this._times[0]) / 1000, + ease = options.easeLinearity, + + speedVector = direction.multiplyBy(ease / duration), + speed = speedVector.distanceTo([0, 0]), + + limitedSpeed = Math.min(options.inertiaMaxSpeed, speed), + limitedSpeedVector = speedVector.multiplyBy(limitedSpeed / speed), + + decelerationDuration = limitedSpeed / (options.inertiaDeceleration * ease), + offset = limitedSpeedVector.multiplyBy(-decelerationDuration / 2).round(); + + if (!offset.x || !offset.y) { + map.fire('moveend'); + + } else { + offset = map._limitOffset(offset, map.options.maxBounds); + + L.Util.requestAnimFrame(function () { + map.panBy(offset, { + duration: decelerationDuration, + easeLinearity: ease, + noMoveStart: true + }); + }); + } + } + } +}); + +L.Map.addInitHook('addHandler', 'dragging', L.Map.Drag); + + +/* + * L.Handler.DoubleClickZoom is used to handle double-click zoom on the map, enabled by default. + */ + +L.Map.mergeOptions({ + doubleClickZoom: true +}); + +L.Map.DoubleClickZoom = L.Handler.extend({ + addHooks: function () { + this._map.on('dblclick', this._onDoubleClick, this); + }, + + removeHooks: function () { + this._map.off('dblclick', this._onDoubleClick, this); + }, + + _onDoubleClick: function (e) { + var map = this._map, + zoom = map.getZoom() + (e.originalEvent.shiftKey ? -1 : 1); + + if (map.options.doubleClickZoom === 'center') { + map.setZoom(zoom); + } else { + map.setZoomAround(e.containerPoint, zoom); + } + } +}); + +L.Map.addInitHook('addHandler', 'doubleClickZoom', L.Map.DoubleClickZoom); + + +/* + * L.Handler.ScrollWheelZoom is used by L.Map to enable mouse scroll wheel zoom on the map. + */ + +L.Map.mergeOptions({ + scrollWheelZoom: true +}); + +L.Map.ScrollWheelZoom = L.Handler.extend({ + addHooks: function () { + L.DomEvent.on(this._map._container, 'mousewheel', this._onWheelScroll, this); + L.DomEvent.on(this._map._container, 'MozMousePixelScroll', L.DomEvent.preventDefault); + this._delta = 0; + }, + + removeHooks: function () { + L.DomEvent.off(this._map._container, 'mousewheel', this._onWheelScroll); + L.DomEvent.off(this._map._container, 'MozMousePixelScroll', L.DomEvent.preventDefault); + }, + + _onWheelScroll: function (e) { + var delta = L.DomEvent.getWheelDelta(e); + + this._delta += delta; + this._lastMousePos = this._map.mouseEventToContainerPoint(e); + + if (!this._startTime) { + this._startTime = +new Date(); + } + + var left = Math.max(40 - (+new Date() - this._startTime), 0); + + clearTimeout(this._timer); + this._timer = setTimeout(L.bind(this._performZoom, this), left); + + L.DomEvent.preventDefault(e); + L.DomEvent.stopPropagation(e); + }, + + _performZoom: function () { + var map = this._map, + delta = this._delta, + zoom = map.getZoom(); + + delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta); + delta = Math.max(Math.min(delta, 4), -4); + delta = map._limitZoom(zoom + delta) - zoom; + + this._delta = 0; + this._startTime = null; + + if (!delta) { return; } + + if (map.options.scrollWheelZoom === 'center') { + map.setZoom(zoom + delta); + } else { + map.setZoomAround(this._lastMousePos, zoom + delta); + } + } +}); + +L.Map.addInitHook('addHandler', 'scrollWheelZoom', L.Map.ScrollWheelZoom); + + +/* + * Extends the event handling code with double tap support for mobile browsers. + */ + +L.extend(L.DomEvent, { + + _touchstart: L.Browser.msPointer ? 'MSPointerDown' : L.Browser.pointer ? 'pointerdown' : 'touchstart', + _touchend: L.Browser.msPointer ? 'MSPointerUp' : L.Browser.pointer ? 'pointerup' : 'touchend', + + // inspired by Zepto touch code by Thomas Fuchs + addDoubleTapListener: function (obj, handler, id) { + var last, + doubleTap = false, + delay = 250, + touch, + pre = '_leaflet_', + touchstart = this._touchstart, + touchend = this._touchend, + trackedTouches = []; + + function onTouchStart(e) { + var count; + + if (L.Browser.pointer) { + trackedTouches.push(e.pointerId); + count = trackedTouches.length; + } else { + count = e.touches.length; + } + if (count > 1) { + return; + } + + var now = Date.now(), + delta = now - (last || now); + + touch = e.touches ? e.touches[0] : e; + doubleTap = (delta > 0 && delta <= delay); + last = now; + } + + function onTouchEnd(e) { + if (L.Browser.pointer) { + var idx = trackedTouches.indexOf(e.pointerId); + if (idx === -1) { + return; + } + trackedTouches.splice(idx, 1); + } + + if (doubleTap) { + if (L.Browser.pointer) { + // work around .type being readonly with MSPointer* events + var newTouch = { }, + prop; + + // jshint forin:false + for (var i in touch) { + prop = touch[i]; + if (typeof prop === 'function') { + newTouch[i] = prop.bind(touch); + } else { + newTouch[i] = prop; + } + } + touch = newTouch; + } + touch.type = 'dblclick'; + handler(touch); + last = null; + } + } + obj[pre + touchstart + id] = onTouchStart; + obj[pre + touchend + id] = onTouchEnd; + + // on pointer we need to listen on the document, otherwise a drag starting on the map and moving off screen + // will not come through to us, so we will lose track of how many touches are ongoing + var endElement = L.Browser.pointer ? document.documentElement : obj; + + obj.addEventListener(touchstart, onTouchStart, false); + endElement.addEventListener(touchend, onTouchEnd, false); + + if (L.Browser.pointer) { + endElement.addEventListener(L.DomEvent.POINTER_CANCEL, onTouchEnd, false); + } + + return this; + }, + + removeDoubleTapListener: function (obj, id) { + var pre = '_leaflet_'; + + obj.removeEventListener(this._touchstart, obj[pre + this._touchstart + id], false); + (L.Browser.pointer ? document.documentElement : obj).removeEventListener( + this._touchend, obj[pre + this._touchend + id], false); + + if (L.Browser.pointer) { + document.documentElement.removeEventListener(L.DomEvent.POINTER_CANCEL, obj[pre + this._touchend + id], + false); + } + + return this; + } +}); + + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + +L.extend(L.DomEvent, { + + //static + POINTER_DOWN: L.Browser.msPointer ? 'MSPointerDown' : 'pointerdown', + POINTER_MOVE: L.Browser.msPointer ? 'MSPointerMove' : 'pointermove', + POINTER_UP: L.Browser.msPointer ? 'MSPointerUp' : 'pointerup', + POINTER_CANCEL: L.Browser.msPointer ? 'MSPointerCancel' : 'pointercancel', + + _pointers: [], + _pointerDocumentListener: false, + + // Provides a touch events wrapper for (ms)pointer events. + // Based on changes by veproza https://github.com/CloudMade/Leaflet/pull/1019 + //ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + + addPointerListener: function (obj, type, handler, id) { + + switch (type) { + case 'touchstart': + return this.addPointerListenerStart(obj, type, handler, id); + case 'touchend': + return this.addPointerListenerEnd(obj, type, handler, id); + case 'touchmove': + return this.addPointerListenerMove(obj, type, handler, id); + default: + throw 'Unknown touch event type'; + } + }, + + addPointerListenerStart: function (obj, type, handler, id) { + var pre = '_leaflet_', + pointers = this._pointers; + + var cb = function (e) { + + L.DomEvent.preventDefault(e); + + var alreadyInArray = false; + for (var i = 0; i < pointers.length; i++) { + if (pointers[i].pointerId === e.pointerId) { + alreadyInArray = true; + break; + } + } + if (!alreadyInArray) { + pointers.push(e); + } + + e.touches = pointers.slice(); + e.changedTouches = [e]; + + handler(e); + }; + + obj[pre + 'touchstart' + id] = cb; + obj.addEventListener(this.POINTER_DOWN, cb, false); + + // need to also listen for end events to keep the _pointers list accurate + // this needs to be on the body and never go away + if (!this._pointerDocumentListener) { + var internalCb = function (e) { + for (var i = 0; i < pointers.length; i++) { + if (pointers[i].pointerId === e.pointerId) { + pointers.splice(i, 1); + break; + } + } + }; + //We listen on the documentElement as any drags that end by moving the touch off the screen get fired there + document.documentElement.addEventListener(this.POINTER_UP, internalCb, false); + document.documentElement.addEventListener(this.POINTER_CANCEL, internalCb, false); + + this._pointerDocumentListener = true; + } + + return this; + }, + + addPointerListenerMove: function (obj, type, handler, id) { + var pre = '_leaflet_', + touches = this._pointers; + + function cb(e) { + + // don't fire touch moves when mouse isn't down + if ((e.pointerType === e.MSPOINTER_TYPE_MOUSE || e.pointerType === 'mouse') && e.buttons === 0) { return; } + + for (var i = 0; i < touches.length; i++) { + if (touches[i].pointerId === e.pointerId) { + touches[i] = e; + break; + } + } + + e.touches = touches.slice(); + e.changedTouches = [e]; + + handler(e); + } + + obj[pre + 'touchmove' + id] = cb; + obj.addEventListener(this.POINTER_MOVE, cb, false); + + return this; + }, + + addPointerListenerEnd: function (obj, type, handler, id) { + var pre = '_leaflet_', + touches = this._pointers; + + var cb = function (e) { + for (var i = 0; i < touches.length; i++) { + if (touches[i].pointerId === e.pointerId) { + touches.splice(i, 1); + break; + } + } + + e.touches = touches.slice(); + e.changedTouches = [e]; + + handler(e); + }; + + obj[pre + 'touchend' + id] = cb; + obj.addEventListener(this.POINTER_UP, cb, false); + obj.addEventListener(this.POINTER_CANCEL, cb, false); + + return this; + }, + + removePointerListener: function (obj, type, id) { + var pre = '_leaflet_', + cb = obj[pre + type + id]; + + switch (type) { + case 'touchstart': + obj.removeEventListener(this.POINTER_DOWN, cb, false); + break; + case 'touchmove': + obj.removeEventListener(this.POINTER_MOVE, cb, false); + break; + case 'touchend': + obj.removeEventListener(this.POINTER_UP, cb, false); + obj.removeEventListener(this.POINTER_CANCEL, cb, false); + break; + } + + return this; + } +}); + + +/* + * L.Handler.TouchZoom is used by L.Map to add pinch zoom on supported mobile browsers. + */ + +L.Map.mergeOptions({ + touchZoom: L.Browser.touch && !L.Browser.android23, + bounceAtZoomLimits: true +}); + +L.Map.TouchZoom = L.Handler.extend({ + addHooks: function () { + L.DomEvent.on(this._map._container, 'touchstart', this._onTouchStart, this); + }, + + removeHooks: function () { + L.DomEvent.off(this._map._container, 'touchstart', this._onTouchStart, this); + }, + + _onTouchStart: function (e) { + var map = this._map; + + if (!e.touches || e.touches.length !== 2 || map._animatingZoom || this._zooming) { return; } + + var p1 = map.mouseEventToLayerPoint(e.touches[0]), + p2 = map.mouseEventToLayerPoint(e.touches[1]), + viewCenter = map._getCenterLayerPoint(); + + this._startCenter = p1.add(p2)._divideBy(2); + this._startDist = p1.distanceTo(p2); + + this._moved = false; + this._zooming = true; + + this._centerOffset = viewCenter.subtract(this._startCenter); + + if (map._panAnim) { + map._panAnim.stop(); + } + + L.DomEvent + .on(document, 'touchmove', this._onTouchMove, this) + .on(document, 'touchend', this._onTouchEnd, this); + + L.DomEvent.preventDefault(e); + }, + + _onTouchMove: function (e) { + var map = this._map; + + if (!e.touches || e.touches.length !== 2 || !this._zooming) { return; } + + var p1 = map.mouseEventToLayerPoint(e.touches[0]), + p2 = map.mouseEventToLayerPoint(e.touches[1]); + + this._scale = p1.distanceTo(p2) / this._startDist; + this._delta = p1._add(p2)._divideBy(2)._subtract(this._startCenter); + + if (this._scale === 1) { return; } + + if (!map.options.bounceAtZoomLimits) { + if ((map.getZoom() === map.getMinZoom() && this._scale < 1) || + (map.getZoom() === map.getMaxZoom() && this._scale > 1)) { return; } + } + + if (!this._moved) { + L.DomUtil.addClass(map._mapPane, 'leaflet-touching'); + + map + .fire('movestart') + .fire('zoomstart'); + + this._moved = true; + } + + L.Util.cancelAnimFrame(this._animRequest); + this._animRequest = L.Util.requestAnimFrame( + this._updateOnMove, this, true, this._map._container); + + L.DomEvent.preventDefault(e); + }, + + _updateOnMove: function () { + var map = this._map, + origin = this._getScaleOrigin(), + center = map.layerPointToLatLng(origin), + zoom = map.getScaleZoom(this._scale); + + map._animateZoom(center, zoom, this._startCenter, this._scale, this._delta, false, true); + }, + + _onTouchEnd: function () { + if (!this._moved || !this._zooming) { + this._zooming = false; + return; + } + + var map = this._map; + + this._zooming = false; + L.DomUtil.removeClass(map._mapPane, 'leaflet-touching'); + L.Util.cancelAnimFrame(this._animRequest); + + L.DomEvent + .off(document, 'touchmove', this._onTouchMove) + .off(document, 'touchend', this._onTouchEnd); + + var origin = this._getScaleOrigin(), + center = map.layerPointToLatLng(origin), + + oldZoom = map.getZoom(), + floatZoomDelta = map.getScaleZoom(this._scale) - oldZoom, + roundZoomDelta = (floatZoomDelta > 0 ? + Math.ceil(floatZoomDelta) : Math.floor(floatZoomDelta)), + + zoom = map._limitZoom(oldZoom + roundZoomDelta), + scale = map.getZoomScale(zoom) / this._scale; + + map._animateZoom(center, zoom, origin, scale); + }, + + _getScaleOrigin: function () { + var centerOffset = this._centerOffset.subtract(this._delta).divideBy(this._scale); + return this._startCenter.add(centerOffset); + } +}); + +L.Map.addInitHook('addHandler', 'touchZoom', L.Map.TouchZoom); + + +/* + * L.Map.Tap is used to enable mobile hacks like quick taps and long hold. + */ + +L.Map.mergeOptions({ + tap: true, + tapTolerance: 15 +}); + +L.Map.Tap = L.Handler.extend({ + addHooks: function () { + L.DomEvent.on(this._map._container, 'touchstart', this._onDown, this); + }, + + removeHooks: function () { + L.DomEvent.off(this._map._container, 'touchstart', this._onDown, this); + }, + + _onDown: function (e) { + if (!e.touches) { return; } + + L.DomEvent.preventDefault(e); + + this._fireClick = true; + + // don't simulate click or track longpress if more than 1 touch + if (e.touches.length > 1) { + this._fireClick = false; + clearTimeout(this._holdTimeout); + return; + } + + var first = e.touches[0], + el = first.target; + + this._startPos = this._newPos = new L.Point(first.clientX, first.clientY); + + // if touching a link, highlight it + if (el.tagName && el.tagName.toLowerCase() === 'a') { + L.DomUtil.addClass(el, 'leaflet-active'); + } + + // simulate long hold but setting a timeout + this._holdTimeout = setTimeout(L.bind(function () { + if (this._isTapValid()) { + this._fireClick = false; + this._onUp(); + this._simulateEvent('contextmenu', first); + } + }, this), 1000); + + L.DomEvent + .on(document, 'touchmove', this._onMove, this) + .on(document, 'touchend', this._onUp, this); + }, + + _onUp: function (e) { + clearTimeout(this._holdTimeout); + + L.DomEvent + .off(document, 'touchmove', this._onMove, this) + .off(document, 'touchend', this._onUp, this); + + if (this._fireClick && e && e.changedTouches) { + + var first = e.changedTouches[0], + el = first.target; + + if (el && el.tagName && el.tagName.toLowerCase() === 'a') { + L.DomUtil.removeClass(el, 'leaflet-active'); + } + + // simulate click if the touch didn't move too much + if (this._isTapValid()) { + this._simulateEvent('click', first); + } + } + }, + + _isTapValid: function () { + return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance; + }, + + _onMove: function (e) { + var first = e.touches[0]; + this._newPos = new L.Point(first.clientX, first.clientY); + }, + + _simulateEvent: function (type, e) { + var simulatedEvent = document.createEvent('MouseEvents'); + + simulatedEvent._simulated = true; + e.target._simulatedClick = true; + + simulatedEvent.initMouseEvent( + type, true, true, window, 1, + e.screenX, e.screenY, + e.clientX, e.clientY, + false, false, false, false, 0, null); + + e.target.dispatchEvent(simulatedEvent); + } +}); + +if (L.Browser.touch && !L.Browser.pointer) { + L.Map.addInitHook('addHandler', 'tap', L.Map.Tap); +} + + +/* + * L.Handler.ShiftDragZoom is used to add shift-drag zoom interaction to the map + * (zoom to a selected bounding box), enabled by default. + */ + +L.Map.mergeOptions({ + boxZoom: true +}); + +L.Map.BoxZoom = L.Handler.extend({ + initialize: function (map) { + this._map = map; + this._container = map._container; + this._pane = map._panes.overlayPane; + this._moved = false; + }, + + addHooks: function () { + L.DomEvent.on(this._container, 'mousedown', this._onMouseDown, this); + }, + + removeHooks: function () { + L.DomEvent.off(this._container, 'mousedown', this._onMouseDown); + this._moved = false; + }, + + moved: function () { + return this._moved; + }, + + _onMouseDown: function (e) { + this._moved = false; + + if (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; } + + L.DomUtil.disableTextSelection(); + L.DomUtil.disableImageDrag(); + + this._startLayerPoint = this._map.mouseEventToLayerPoint(e); + + L.DomEvent + .on(document, 'mousemove', this._onMouseMove, this) + .on(document, 'mouseup', this._onMouseUp, this) + .on(document, 'keydown', this._onKeyDown, this); + }, + + _onMouseMove: function (e) { + if (!this._moved) { + this._box = L.DomUtil.create('div', 'leaflet-zoom-box', this._pane); + L.DomUtil.setPosition(this._box, this._startLayerPoint); + + //TODO refactor: move cursor to styles + this._container.style.cursor = 'crosshair'; + this._map.fire('boxzoomstart'); + } + + var startPoint = this._startLayerPoint, + box = this._box, + + layerPoint = this._map.mouseEventToLayerPoint(e), + offset = layerPoint.subtract(startPoint), + + newPos = new L.Point( + Math.min(layerPoint.x, startPoint.x), + Math.min(layerPoint.y, startPoint.y)); + + L.DomUtil.setPosition(box, newPos); + + this._moved = true; + + // TODO refactor: remove hardcoded 4 pixels + box.style.width = (Math.max(0, Math.abs(offset.x) - 4)) + 'px'; + box.style.height = (Math.max(0, Math.abs(offset.y) - 4)) + 'px'; + }, + + _finish: function () { + if (this._moved) { + this._pane.removeChild(this._box); + this._container.style.cursor = ''; + } + + L.DomUtil.enableTextSelection(); + L.DomUtil.enableImageDrag(); + + L.DomEvent + .off(document, 'mousemove', this._onMouseMove) + .off(document, 'mouseup', this._onMouseUp) + .off(document, 'keydown', this._onKeyDown); + }, + + _onMouseUp: function (e) { + + this._finish(); + + var map = this._map, + layerPoint = map.mouseEventToLayerPoint(e); + + if (this._startLayerPoint.equals(layerPoint)) { return; } + + var bounds = new L.LatLngBounds( + map.layerPointToLatLng(this._startLayerPoint), + map.layerPointToLatLng(layerPoint)); + + map.fitBounds(bounds); + + map.fire('boxzoomend', { + boxZoomBounds: bounds + }); + }, + + _onKeyDown: function (e) { + if (e.keyCode === 27) { + this._finish(); + } + } +}); + +L.Map.addInitHook('addHandler', 'boxZoom', L.Map.BoxZoom); + + +/* + * L.Map.Keyboard is handling keyboard interaction with the map, enabled by default. + */ + +L.Map.mergeOptions({ + keyboard: true, + keyboardPanOffset: 80, + keyboardZoomOffset: 1 +}); + +L.Map.Keyboard = L.Handler.extend({ + + keyCodes: { + left: [37], + right: [39], + down: [40], + up: [38], + zoomIn: [187, 107, 61, 171], + zoomOut: [189, 109, 173] + }, + + initialize: function (map) { + this._map = map; + + this._setPanOffset(map.options.keyboardPanOffset); + this._setZoomOffset(map.options.keyboardZoomOffset); + }, + + addHooks: function () { + var container = this._map._container; + + // make the container focusable by tabbing + if (container.tabIndex === -1) { + container.tabIndex = '0'; + } + + L.DomEvent + .on(container, 'focus', this._onFocus, this) + .on(container, 'blur', this._onBlur, this) + .on(container, 'mousedown', this._onMouseDown, this); + + this._map + .on('focus', this._addHooks, this) + .on('blur', this._removeHooks, this); + }, + + removeHooks: function () { + this._removeHooks(); + + var container = this._map._container; + + L.DomEvent + .off(container, 'focus', this._onFocus, this) + .off(container, 'blur', this._onBlur, this) + .off(container, 'mousedown', this._onMouseDown, this); + + this._map + .off('focus', this._addHooks, this) + .off('blur', this._removeHooks, this); + }, + + _onMouseDown: function () { + if (this._focused) { return; } + + var body = document.body, + docEl = document.documentElement, + top = body.scrollTop || docEl.scrollTop, + left = body.scrollLeft || docEl.scrollLeft; + + this._map._container.focus(); + + window.scrollTo(left, top); + }, + + _onFocus: function () { + this._focused = true; + this._map.fire('focus'); + }, + + _onBlur: function () { + this._focused = false; + this._map.fire('blur'); + }, + + _setPanOffset: function (pan) { + var keys = this._panKeys = {}, + codes = this.keyCodes, + i, len; + + for (i = 0, len = codes.left.length; i < len; i++) { + keys[codes.left[i]] = [-1 * pan, 0]; + } + for (i = 0, len = codes.right.length; i < len; i++) { + keys[codes.right[i]] = [pan, 0]; + } + for (i = 0, len = codes.down.length; i < len; i++) { + keys[codes.down[i]] = [0, pan]; + } + for (i = 0, len = codes.up.length; i < len; i++) { + keys[codes.up[i]] = [0, -1 * pan]; + } + }, + + _setZoomOffset: function (zoom) { + var keys = this._zoomKeys = {}, + codes = this.keyCodes, + i, len; + + for (i = 0, len = codes.zoomIn.length; i < len; i++) { + keys[codes.zoomIn[i]] = zoom; + } + for (i = 0, len = codes.zoomOut.length; i < len; i++) { + keys[codes.zoomOut[i]] = -zoom; + } + }, + + _addHooks: function () { + L.DomEvent.on(document, 'keydown', this._onKeyDown, this); + }, + + _removeHooks: function () { + L.DomEvent.off(document, 'keydown', this._onKeyDown, this); + }, + + _onKeyDown: function (e) { + var key = e.keyCode, + map = this._map; + + if (key in this._panKeys) { + + if (map._panAnim && map._panAnim._inProgress) { return; } + + map.panBy(this._panKeys[key]); + + if (map.options.maxBounds) { + map.panInsideBounds(map.options.maxBounds); + } + + } else if (key in this._zoomKeys) { + map.setZoom(map.getZoom() + this._zoomKeys[key]); + + } else { + return; + } + + L.DomEvent.stop(e); + } +}); + +L.Map.addInitHook('addHandler', 'keyboard', L.Map.Keyboard); + + +/* + * L.Handler.MarkerDrag is used internally by L.Marker to make the markers draggable. + */ + +L.Handler.MarkerDrag = L.Handler.extend({ + initialize: function (marker) { + this._marker = marker; + }, + + addHooks: function () { + var icon = this._marker._icon; + if (!this._draggable) { + this._draggable = new L.Draggable(icon, icon); + } + + this._draggable + .on('dragstart', this._onDragStart, this) + .on('drag', this._onDrag, this) + .on('dragend', this._onDragEnd, this); + this._draggable.enable(); + L.DomUtil.addClass(this._marker._icon, 'leaflet-marker-draggable'); + }, + + removeHooks: function () { + this._draggable + .off('dragstart', this._onDragStart, this) + .off('drag', this._onDrag, this) + .off('dragend', this._onDragEnd, this); + + this._draggable.disable(); + L.DomUtil.removeClass(this._marker._icon, 'leaflet-marker-draggable'); + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _onDragStart: function () { + this._marker + .closePopup() + .fire('movestart') + .fire('dragstart'); + }, + + _onDrag: function () { + var marker = this._marker, + shadow = marker._shadow, + iconPos = L.DomUtil.getPosition(marker._icon), + latlng = marker._map.layerPointToLatLng(iconPos); + + // update shadow position + if (shadow) { + L.DomUtil.setPosition(shadow, iconPos); + } + + marker._latlng = latlng; + + marker + .fire('move', {latlng: latlng}) + .fire('drag'); + }, + + _onDragEnd: function (e) { + this._marker + .fire('moveend') + .fire('dragend', e); + } +}); + + +/* + * L.Control is a base class for implementing map controls. Handles positioning. + * All other controls extend from this class. + */ + +L.Control = L.Class.extend({ + options: { + position: 'topright' + }, + + initialize: function (options) { + L.setOptions(this, options); + }, + + getPosition: function () { + return this.options.position; + }, + + setPosition: function (position) { + var map = this._map; + + if (map) { + map.removeControl(this); + } + + this.options.position = position; + + if (map) { + map.addControl(this); + } + + return this; + }, + + getContainer: function () { + return this._container; + }, + + addTo: function (map) { + this._map = map; + + var container = this._container = this.onAdd(map), + pos = this.getPosition(), + corner = map._controlCorners[pos]; + + L.DomUtil.addClass(container, 'leaflet-control'); + + if (pos.indexOf('bottom') !== -1) { + corner.insertBefore(container, corner.firstChild); + } else { + corner.appendChild(container); + } + + return this; + }, + + removeFrom: function (map) { + var pos = this.getPosition(), + corner = map._controlCorners[pos]; + + corner.removeChild(this._container); + this._map = null; + + if (this.onRemove) { + this.onRemove(map); + } + + return this; + }, + + _refocusOnMap: function () { + if (this._map) { + this._map.getContainer().focus(); + } + } +}); + +L.control = function (options) { + return new L.Control(options); +}; + + +// adds control-related methods to L.Map + +L.Map.include({ + addControl: function (control) { + control.addTo(this); + return this; + }, + + removeControl: function (control) { + control.removeFrom(this); + return this; + }, + + _initControlPos: function () { + var corners = this._controlCorners = {}, + l = 'leaflet-', + container = this._controlContainer = + L.DomUtil.create('div', l + 'control-container', this._container); + + function createCorner(vSide, hSide) { + var className = l + vSide + ' ' + l + hSide; + + corners[vSide + hSide] = L.DomUtil.create('div', className, container); + } + + createCorner('top', 'left'); + createCorner('top', 'right'); + createCorner('bottom', 'left'); + createCorner('bottom', 'right'); + }, + + _clearControlPos: function () { + this._container.removeChild(this._controlContainer); + } +}); + + +/* + * L.Control.Zoom is used for the default zoom buttons on the map. + */ + +L.Control.Zoom = L.Control.extend({ + options: { + position: 'topleft', + zoomInText: '+', + zoomInTitle: 'Zoom in', + zoomOutText: '-', + zoomOutTitle: 'Zoom out' + }, + + onAdd: function (map) { + var zoomName = 'leaflet-control-zoom', + container = L.DomUtil.create('div', zoomName + ' leaflet-bar'); + + this._map = map; + + this._zoomInButton = this._createButton( + this.options.zoomInText, this.options.zoomInTitle, + zoomName + '-in', container, this._zoomIn, this); + this._zoomOutButton = this._createButton( + this.options.zoomOutText, this.options.zoomOutTitle, + zoomName + '-out', container, this._zoomOut, this); + + this._updateDisabled(); + map.on('zoomend zoomlevelschange', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend zoomlevelschange', this._updateDisabled, this); + }, + + _zoomIn: function (e) { + this._map.zoomIn(e.shiftKey ? 3 : 1); + }, + + _zoomOut: function (e) { + this._map.zoomOut(e.shiftKey ? 3 : 1); + }, + + _createButton: function (html, title, className, container, fn, context) { + var link = L.DomUtil.create('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + var stop = L.DomEvent.stopPropagation; + + L.DomEvent + .on(link, 'click', stop) + .on(link, 'mousedown', stop) + .on(link, 'dblclick', stop) + .on(link, 'click', L.DomEvent.preventDefault) + .on(link, 'click', fn, context) + .on(link, 'click', this._refocusOnMap, context); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-disabled'; + + L.DomUtil.removeClass(this._zoomInButton, className); + L.DomUtil.removeClass(this._zoomOutButton, className); + + if (map._zoom === map.getMinZoom()) { + L.DomUtil.addClass(this._zoomOutButton, className); + } + if (map._zoom === map.getMaxZoom()) { + L.DomUtil.addClass(this._zoomInButton, className); + } + } +}); + +L.Map.mergeOptions({ + zoomControl: true +}); + +L.Map.addInitHook(function () { + if (this.options.zoomControl) { + this.zoomControl = new L.Control.Zoom(); + this.addControl(this.zoomControl); + } +}); + +L.control.zoom = function (options) { + return new L.Control.Zoom(options); +}; + + + +/* + * L.Control.Attribution is used for displaying attribution on the map (added by default). + */ + +L.Control.Attribution = L.Control.extend({ + options: { + position: 'bottomright', + prefix: 'Leaflet' + }, + + initialize: function (options) { + L.setOptions(this, options); + + this._attributions = {}; + }, + + onAdd: function (map) { + this._container = L.DomUtil.create('div', 'leaflet-control-attribution'); + L.DomEvent.disableClickPropagation(this._container); + + for (var i in map._layers) { + if (map._layers[i].getAttribution) { + this.addAttribution(map._layers[i].getAttribution()); + } + } + + map + .on('layeradd', this._onLayerAdd, this) + .on('layerremove', this._onLayerRemove, this); + + this._update(); + + return this._container; + }, + + onRemove: function (map) { + map + .off('layeradd', this._onLayerAdd) + .off('layerremove', this._onLayerRemove); + + }, + + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + addAttribution: function (text) { + if (!text) { return; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + removeAttribution: function (text) { + if (!text) { return; } + + if (this._attributions[text]) { + this._attributions[text]--; + this._update(); + } + + return this; + }, + + _update: function () { + if (!this._map) { return; } + + var attribs = []; + + for (var i in this._attributions) { + if (this._attributions[i]) { + attribs.push(i); + } + } + + var prefixAndAttribs = []; + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); + } + if (attribs.length) { + prefixAndAttribs.push(attribs.join(', ')); + } + + this._container.innerHTML = prefixAndAttribs.join(' | '); + }, + + _onLayerAdd: function (e) { + if (e.layer.getAttribution) { + this.addAttribution(e.layer.getAttribution()); + } + }, + + _onLayerRemove: function (e) { + if (e.layer.getAttribution) { + this.removeAttribution(e.layer.getAttribution()); + } + } +}); + +L.Map.mergeOptions({ + attributionControl: true +}); + +L.Map.addInitHook(function () { + if (this.options.attributionControl) { + this.attributionControl = (new L.Control.Attribution()).addTo(this); + } +}); + +L.control.attribution = function (options) { + return new L.Control.Attribution(options); +}; + + +/* + * L.Control.Scale is used for displaying metric/imperial scale on the map. + */ + +L.Control.Scale = L.Control.extend({ + options: { + position: 'bottomleft', + maxWidth: 100, + metric: true, + imperial: true, + updateWhenIdle: false + }, + + onAdd: function (map) { + this._map = map; + + var className = 'leaflet-control-scale', + container = L.DomUtil.create('div', className), + options = this.options; + + this._addScales(options, className, container); + + map.on(options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + map.whenReady(this._update, this); + + return container; + }, + + onRemove: function (map) { + map.off(this.options.updateWhenIdle ? 'moveend' : 'move', this._update, this); + }, + + _addScales: function (options, className, container) { + if (options.metric) { + this._mScale = L.DomUtil.create('div', className + '-line', container); + } + if (options.imperial) { + this._iScale = L.DomUtil.create('div', className + '-line', container); + } + }, + + _update: function () { + var bounds = this._map.getBounds(), + centerLat = bounds.getCenter().lat, + halfWorldMeters = 6378137 * Math.PI * Math.cos(centerLat * Math.PI / 180), + dist = halfWorldMeters * (bounds.getNorthEast().lng - bounds.getSouthWest().lng) / 180, + + size = this._map.getSize(), + options = this.options, + maxMeters = 0; + + if (size.x > 0) { + maxMeters = dist * (options.maxWidth / size.x); + } + + this._updateScales(options, maxMeters); + }, + + _updateScales: function (options, maxMeters) { + if (options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + + if (options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters); + + this._mScale.style.width = this._getScaleWidth(meters / maxMeters) + 'px'; + this._mScale.innerHTML = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + scale = this._iScale, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + + scale.style.width = this._getScaleWidth(miles / maxMiles) + 'px'; + scale.innerHTML = miles + ' mi'; + + } else { + feet = this._getRoundNum(maxFeet); + + scale.style.width = this._getScaleWidth(feet / maxFeet) + 'px'; + scale.innerHTML = feet + ' ft'; + } + }, + + _getScaleWidth: function (ratio) { + return Math.round(this.options.maxWidth * ratio) - 10; + }, + + _getRoundNum: function (num) { + var pow10 = Math.pow(10, (Math.floor(num) + '').length - 1), + d = num / pow10; + + d = d >= 10 ? 10 : d >= 5 ? 5 : d >= 3 ? 3 : d >= 2 ? 2 : 1; + + return pow10 * d; + } +}); + +L.control.scale = function (options) { + return new L.Control.Scale(options); +}; + + +/* + * L.Control.Layers is a control to allow users to switch between different layers on the map. + */ + +L.Control.Layers = L.Control.extend({ + options: { + collapsed: true, + position: 'topright', + autoZIndex: true + }, + + initialize: function (baseLayers, overlays, options) { + L.setOptions(this, options); + + this._layers = {}; + this._lastZIndex = 0; + this._handlingClick = false; + + for (var i in baseLayers) { + this._addLayer(baseLayers[i], i); + } + + for (i in overlays) { + this._addLayer(overlays[i], i, true); + } + }, + + onAdd: function (map) { + this._initLayout(); + this._update(); + + map + .on('layeradd', this._onLayerChange, this) + .on('layerremove', this._onLayerChange, this); + + return this._container; + }, + + onRemove: function (map) { + map + .off('layeradd', this._onLayerChange, this) + .off('layerremove', this._onLayerChange, this); + }, + + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + this._update(); + return this; + }, + + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + this._update(); + return this; + }, + + removeLayer: function (layer) { + var id = L.stamp(layer); + delete this._layers[id]; + this._update(); + return this; + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = L.DomUtil.create('div', className); + + //Makes this work on IE10 Touch devices by stopping it from firing a mouseout event when the touch is released + container.setAttribute('aria-haspopup', true); + + if (!L.Browser.touch) { + L.DomEvent + .disableClickPropagation(container) + .disableScrollPropagation(container); + } else { + L.DomEvent.on(container, 'click', L.DomEvent.stopPropagation); + } + + var form = this._form = L.DomUtil.create('form', className + '-list'); + + if (this.options.collapsed) { + if (!L.Browser.android) { + L.DomEvent + .on(container, 'mouseover', this._expand, this) + .on(container, 'mouseout', this._collapse, this); + } + var link = this._layersLink = L.DomUtil.create('a', className + '-toggle', container); + link.href = '#'; + link.title = 'Layers'; + + if (L.Browser.touch) { + L.DomEvent + .on(link, 'click', L.DomEvent.stop) + .on(link, 'click', this._expand, this); + } + else { + L.DomEvent.on(link, 'focus', this._expand, this); + } + //Work around for Firefox android issue https://github.com/Leaflet/Leaflet/issues/2033 + L.DomEvent.on(form, 'click', function () { + setTimeout(L.bind(this._onInputClick, this), 0); + }, this); + + this._map.on('click', this._collapse, this); + // TODO keyboard accessibility + } else { + this._expand(); + } + + this._baseLayersList = L.DomUtil.create('div', className + '-base', form); + this._separator = L.DomUtil.create('div', className + '-separator', form); + this._overlaysList = L.DomUtil.create('div', className + '-overlays', form); + + container.appendChild(form); + }, + + _addLayer: function (layer, name, overlay) { + var id = L.stamp(layer); + + this._layers[id] = { + layer: layer, + name: name, + overlay: overlay + }; + + if (this.options.autoZIndex && layer.setZIndex) { + this._lastZIndex++; + layer.setZIndex(this._lastZIndex); + } + }, + + _update: function () { + if (!this._container) { + return; + } + + this._baseLayersList.innerHTML = ''; + this._overlaysList.innerHTML = ''; + + var baseLayersPresent = false, + overlaysPresent = false, + i, obj; + + for (i in this._layers) { + obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + } + + this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; + }, + + _onLayerChange: function (e) { + var obj = this._layers[L.stamp(e.layer)]; + + if (!obj) { return; } + + if (!this._handlingClick) { + this._update(); + } + + var type = obj.overlay ? + (e.type === 'layeradd' ? 'overlayadd' : 'overlayremove') : + (e.type === 'layeradd' ? 'baselayerchange' : null); + + if (type) { + this._map.fire(type, obj); + } + }, + + // IE7 bugs out if you create a radio dynamically, so you have to do it this hacky way (see http://bit.ly/PqYLBe) + _createRadioElement: function (name, checked) { + + var radioHtml = '= 0) { + this._onZoomTransitionEnd(); + } + }, + + _nothingToAnimate: function () { + return !this._container.getElementsByClassName('leaflet-zoom-animated').length; + }, + + _tryAnimatedZoom: function (center, zoom, options) { + + if (this._animatingZoom) { return true; } + + options = options || {}; + + // don't animate if disabled, not supported or zoom difference is too large + if (!this._zoomAnimated || options.animate === false || this._nothingToAnimate() || + Math.abs(zoom - this._zoom) > this.options.zoomAnimationThreshold) { return false; } + + // offset is the pixel coords of the zoom origin relative to the current center + var scale = this.getZoomScale(zoom), + offset = this._getCenterOffset(center)._divideBy(1 - 1 / scale), + origin = this._getCenterLayerPoint()._add(offset); + + // don't animate if the zoom origin isn't within one screen from the current center, unless forced + if (options.animate !== true && !this.getSize().contains(offset)) { return false; } + + this + .fire('movestart') + .fire('zoomstart'); + + this._animateZoom(center, zoom, origin, scale, null, true); + + return true; + }, + + _animateZoom: function (center, zoom, origin, scale, delta, backwards, forTouchZoom) { + + if (!forTouchZoom) { + this._animatingZoom = true; + } + + // put transform transition on all layers with leaflet-zoom-animated class + L.DomUtil.addClass(this._mapPane, 'leaflet-zoom-anim'); + + // remember what center/zoom to set after animation + this._animateToCenter = center; + this._animateToZoom = zoom; + + // disable any dragging during animation + if (L.Draggable) { + L.Draggable._disabled = true; + } + + L.Util.requestAnimFrame(function () { + this.fire('zoomanim', { + center: center, + zoom: zoom, + origin: origin, + scale: scale, + delta: delta, + backwards: backwards + }); + // horrible hack to work around a Chrome bug https://github.com/Leaflet/Leaflet/issues/3689 + setTimeout(L.bind(this._onZoomTransitionEnd, this), 250); + }, this); + }, + + _onZoomTransitionEnd: function () { + if (!this._animatingZoom) { return; } + + this._animatingZoom = false; + + L.DomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim'); + + this._resetView(this._animateToCenter, this._animateToZoom, true, true); + + if (L.Draggable) { + L.Draggable._disabled = false; + } + } +}); + + +/* + Zoom animation logic for L.TileLayer. +*/ + +L.TileLayer.include({ + _animateZoom: function (e) { + if (!this._animating) { + this._animating = true; + this._prepareBgBuffer(); + } + + var bg = this._bgBuffer, + transform = L.DomUtil.TRANSFORM, + initialTransform = e.delta ? L.DomUtil.getTranslateString(e.delta) : bg.style[transform], + scaleStr = L.DomUtil.getScaleString(e.scale, e.origin); + + bg.style[transform] = e.backwards ? + scaleStr + ' ' + initialTransform : + initialTransform + ' ' + scaleStr; + }, + + _endZoomAnim: function () { + var front = this._tileContainer, + bg = this._bgBuffer; + + front.style.visibility = ''; + front.parentNode.appendChild(front); // Bring to fore + + // force reflow + L.Util.falseFn(bg.offsetWidth); + + var zoom = this._map.getZoom(); + if (zoom > this.options.maxZoom || zoom < this.options.minZoom) { + this._clearBgBuffer(); + } + + this._animating = false; + }, + + _clearBgBuffer: function () { + var map = this._map; + + if (map && !map._animatingZoom && !map.touchZoom._zooming) { + this._bgBuffer.innerHTML = ''; + this._bgBuffer.style[L.DomUtil.TRANSFORM] = ''; + } + }, + + _prepareBgBuffer: function () { + + var front = this._tileContainer, + bg = this._bgBuffer; + + // if foreground layer doesn't have many tiles but bg layer does, + // keep the existing bg layer and just zoom it some more + + var bgLoaded = this._getLoadedTilesPercentage(bg), + frontLoaded = this._getLoadedTilesPercentage(front); + + if (bg && bgLoaded > 0.5 && frontLoaded < 0.5) { + + front.style.visibility = 'hidden'; + this._stopLoadingImages(front); + return; + } + + // prepare the buffer to become the front tile pane + bg.style.visibility = 'hidden'; + bg.style[L.DomUtil.TRANSFORM] = ''; + + // switch out the current layer to be the new bg layer (and vice-versa) + this._tileContainer = bg; + bg = this._bgBuffer = front; + + this._stopLoadingImages(bg); + + //prevent bg buffer from clearing right after zoom + clearTimeout(this._clearBgBufferTimer); + }, + + _getLoadedTilesPercentage: function (container) { + var tiles = container.getElementsByTagName('img'), + i, len, count = 0; + + for (i = 0, len = tiles.length; i < len; i++) { + if (tiles[i].complete) { + count++; + } + } + return count / len; + }, + + // stops loading all tiles in the background layer + _stopLoadingImages: function (container) { + var tiles = Array.prototype.slice.call(container.getElementsByTagName('img')), + i, len, tile; + + for (i = 0, len = tiles.length; i < len; i++) { + tile = tiles[i]; + + if (!tile.complete) { + tile.onload = L.Util.falseFn; + tile.onerror = L.Util.falseFn; + tile.src = L.Util.emptyImageUrl; + + tile.parentNode.removeChild(tile); + } + } + } +}); + + +/* + * Provides L.Map with convenient shortcuts for using browser geolocation features. + */ + +L.Map.include({ + _defaultLocateOptions: { + watch: false, + setView: false, + maxZoom: Infinity, + timeout: 10000, + maximumAge: 0, + enableHighAccuracy: false + }, + + locate: function (/*Object*/ options) { + + options = this._locateOptions = L.extend(this._defaultLocateOptions, options); + + if (!navigator.geolocation) { + this._handleGeolocationError({ + code: 0, + message: 'Geolocation not supported.' + }); + return this; + } + + var onResponse = L.bind(this._handleGeolocationResponse, this), + onError = L.bind(this._handleGeolocationError, this); + + if (options.watch) { + this._locationWatchId = + navigator.geolocation.watchPosition(onResponse, onError, options); + } else { + navigator.geolocation.getCurrentPosition(onResponse, onError, options); + } + return this; + }, + + stopLocate: function () { + if (navigator.geolocation) { + navigator.geolocation.clearWatch(this._locationWatchId); + } + if (this._locateOptions) { + this._locateOptions.setView = false; + } + return this; + }, + + _handleGeolocationError: function (error) { + var c = error.code, + message = error.message || + (c === 1 ? 'permission denied' : + (c === 2 ? 'position unavailable' : 'timeout')); + + if (this._locateOptions.setView && !this._loaded) { + this.fitWorld(); + } + + this.fire('locationerror', { + code: c, + message: 'Geolocation error: ' + message + '.' + }); + }, + + _handleGeolocationResponse: function (pos) { + var lat = pos.coords.latitude, + lng = pos.coords.longitude, + latlng = new L.LatLng(lat, lng), + + latAccuracy = 180 * pos.coords.accuracy / 40075017, + lngAccuracy = latAccuracy / Math.cos(L.LatLng.DEG_TO_RAD * lat), + + bounds = L.latLngBounds( + [lat - latAccuracy, lng - lngAccuracy], + [lat + latAccuracy, lng + lngAccuracy]), + + options = this._locateOptions; + + if (options.setView) { + var zoom = Math.min(this.getBoundsZoom(bounds), options.maxZoom); + this.setView(latlng, zoom); + } + + var data = { + latlng: latlng, + bounds: bounds, + timestamp: pos.timestamp + }; + + for (var i in pos.coords) { + if (typeof pos.coords[i] === 'number') { + data[i] = pos.coords[i]; + } + } + + this.fire('locationfound', data); + } +}); + + +}(window, document)); \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.css b/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.css new file mode 100644 index 00000000..ac0cd174 --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.css @@ -0,0 +1,478 @@ +/* required styles */ + +.leaflet-map-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-pane, +.leaflet-tile-container, +.leaflet-overlay-pane, +.leaflet-shadow-pane, +.leaflet-marker-pane, +.leaflet-popup-pane, +.leaflet-overlay-pane svg, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + -ms-touch-action: none; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container img { + max-width: none !important; + } +/* stupid Android 2 doesn't understand "max-width: none" properly */ +.leaflet-container img.leaflet-image-layer { + max-width: 15000px !important; + } +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-tile-pane { z-index: 2; } +.leaflet-objects-pane { z-index: 3; } +.leaflet-overlay-pane { z-index: 4; } +.leaflet-shadow-pane { z-index: 5; } +.leaflet-marker-pane { z-index: 6; } +.leaflet-popup-pane { z-index: 7; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 7; + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-tile, +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + -o-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-tile-loaded, +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } + +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + -o-transition: -o-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile, +.leaflet-touching .leaflet-zoom-animated { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-clickable { + cursor: pointer; + } +.leaflet-container { + cursor: -webkit-grab; + cursor: -moz-grab; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-container, +.leaflet-dragging .leaflet-clickable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + } + + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline: 0; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-container a.leaflet-active { + outline: 2px solid orange; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a, +.leaflet-bar a:hover { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } + + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } +.leaflet-control-zoom-out { + font-size: 20px; + } + +.leaflet-touch .leaflet-control-zoom-in { + font-size: 22px; + } +.leaflet-touch .leaflet-control-zoom-out { + font-size: 24px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.7); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover { + text-decoration: underline; + } +.leaflet-container .leaflet-control-attribution, +.leaflet-container .leaflet-control-scale { + font-size: 11px; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + font-size: 11px; + white-space: nowrap; + overflow: hidden; + -moz-box-sizing: content-box; + box-sizing: content-box; + + background: #fff; + background: rgba(255, 255, 255, 0.5); + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 19px; + line-height: 1.4; + } +.leaflet-popup-content p { + margin: 18px 0; + } +.leaflet-popup-tip-container { + margin: 0 auto; + width: 40px; + height: 20px; + position: relative; + overflow: hidden; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + padding: 4px 4px 0 0; + text-align: center; + width: 18px; + height: 14px; + font: 16px/14px Tahoma, Verdana, sans-serif; + color: #c3c3c3; + text-decoration: none; + font-weight: bold; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover { + color: #999; + } +.leaflet-popup-scrolled { + overflow: auto; + border-bottom: 1px solid #ddd; + border-top: 1px solid #ddd; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } +.leaflet-oldie .leaflet-popup-tip-container { + margin-top: -1px; + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } diff --git a/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.js b/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.js new file mode 100644 index 00000000..c469495a --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/js/leaflet-0.7.5/leaflet.js @@ -0,0 +1,9 @@ +/* + Leaflet, a JavaScript library for mobile-friendly interactive maps. http://leafletjs.com + (c) 2010-2013, Vladimir Agafonkin + (c) 2010-2011, CloudMade +*/ +!function(t,e,i){var n=t.L,o={};o.version="0.7.5","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?void(o=!0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),void t.apply(i,a))}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,n){var o=e[n];if(o===i)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;it;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=!t.PointerEvent&&t.MSPointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled&&t.navigator.maxTouchPoints||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix&&!c,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&(m||"ontouchstart"in t||t.DocumentTouch&&e instanceof t.DocumentTouch);o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;ni||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n));s=e.maxZoom?Math.min(e.maxZoom,s):s;var a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,this.fire("viewreset",{hard:!i}),a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-(1/0),o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_;return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395", +projection:o.Projection.Mercator,transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-(1/0));for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||in;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=this._getTileSize(),o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(it.max.x||nt.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this._getTileSize())._floor()},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;e.detectRetina&&o.Browser.retina?i.width=i.height=2*n:i.width=i.height=n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i="shadow"===e?o.point(n.shadowAnchor||n.iconAnchor):o.point(n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){return this._icon&&this._setPos(this._map.latLngToLayerPoint(this._latlng).round()),this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;is?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t,t._source=this):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,i.dashArray?t.dashStyle=o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):t.dashStyle="",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this.fire("remove"),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color),t.lineCap&&(this._ctx.lineCap=t.lineCap),t.lineJoin&&(this._ctx.lineJoin=t.lineJoin)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill(e.fillRule||"evenodd")),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click dblclick contextmenu",this._fireMouseEvent,this))},_fireMouseEvent:function(t){this._containsPoint(t.layerPoint)&&this.fire(t.type,t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return void(this._parts=[n]);this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,e){if(!e)return new o.Point(t.clientX,t.clientY);var i=e.getBoundingClientRect();return new o.Point(t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop)},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&500>n||t.target._simulatedClick&&!t._simulated?void o.DomEvent.stop(t):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!(t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(o.DomEvent.stopPropagation(t),o.Draggable._disabled||(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),this._moving)))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return void(this._moved=!0);var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.Browser.touch&&Math.abs(s.x)+Math.abs(s.y)<3||(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,o.DomUtil.addClass(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget)))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(){o.DomUtil.removeClass(e.body,"leaflet-dragging"),this._lastTarget&&(o.DomUtil.removeClass(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null);for(var t in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[t],this._onMove).off(e,o.Draggable.END[t],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],"function"==typeof n?s[a]=n.bind(h):s[a]=n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n); +case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta,!1,!0)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return void(this._zooming=!1);var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),void o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this))},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange,this).off("layerremove",this._onLayerChange,this)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,void this.fire("step")):void this._onTransitionEnd()},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a,r){r||(this._animatingZoom=!0),o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),o.Util.requestAnimFrame(function(){this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a}),setTimeout(o.bind(this._onZoomTransitionEnd,this),250)},this)},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1))}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth);var i=this._map.getZoom();(i>this.options.maxZoom||i.5&&.5>n?(t.style.visibility="hidden",void this._stopLoadingImages(t)):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),void clearTimeout(this._clearBgBufferTimer))},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document); \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/LICENSE b/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/LICENSE new file mode 100644 index 00000000..f371b7d6 --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2011-2012, Pavel Shramov +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are +permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/bing.js b/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/bing.js new file mode 100644 index 00000000..9c1d7aaa --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/bing.js @@ -0,0 +1,131 @@ +/* +Copyright (c) 2011-2012, Pavel Shramov +All rights reserved. +https://github.com/robertharm/leaflet-plugins +License in same folder as this file +*/ + +L.BingLayer = L.TileLayer.extend({ + options: { + subdomains: [0, 1, 2, 3], + type: 'Road', + attribution: 'Bing', + culture: '' + }, + + initialize: function(key, options) { + L.Util.setOptions(this, options); + + this._key = key; + this._url = null; + this.meta = {}; + this.loadMetadata(); + }, + + tile2quad: function(x, y, z) { + var quad = ''; + for (var i = z; i > 0; i--) { + var digit = 0; + var mask = 1 << (i - 1); + if ((x & mask) != 0) digit += 1; + if ((y & mask) != 0) digit += 2; + quad = quad + digit; + } + return quad; + }, + + getTileUrl: function(p, z) { + var z = this._getZoomForUrl(); + var subdomains = this.options.subdomains, + s = this.options.subdomains[Math.abs((p.x + p.y) % subdomains.length)]; + return this._url.replace('{subdomain}', s) + .replace('{quadkey}', this.tile2quad(p.x, p.y, z)) + .replace('{culture}', this.options.culture); + }, + + loadMetadata: function() { + var _this = this; + var cbid = '_bing_metadata_' + L.Util.stamp(this); + window[cbid] = function (meta) { + _this.meta = meta; + window[cbid] = undefined; + var e = document.getElementById(cbid); + e.parentNode.removeChild(e); + if (meta.errorDetails) { + if (window.console) console.log("Leaflet Bing Plugin Error - Got metadata: " + meta.errorDetails); + return; + } + _this.initMetadata(); + }; + var url = document.location.protocol + "//dev.virtualearth.net/REST/v1/Imagery/Metadata/" + this.options.type + "?include=ImageryProviders&jsonp=" + cbid + + "&key=" + this._key + "&UriScheme=" + document.location.protocol.slice(0, -1); + var script = document.createElement("script"); + script.type = "text/javascript"; + script.src = url; + script.id = cbid; + document.getElementsByTagName("head")[0].appendChild(script); + }, + + initMetadata: function() { + var r = this.meta.resourceSets[0].resources[0]; + this.options.subdomains = r.imageUrlSubdomains; + this._url = r.imageUrl; + this._providers = []; + if (r.imageryProviders) { + for (var i = 0; i < r.imageryProviders.length; i++) { + var p = r.imageryProviders[i]; + for (var j = 0; j < p.coverageAreas.length; j++) { + var c = p.coverageAreas[j]; + var coverage = {zoomMin: c.zoomMin, zoomMax: c.zoomMax, active: false}; + var bounds = new L.LatLngBounds( + new L.LatLng(c.bbox[0]+0.01, c.bbox[1]+0.01), + new L.LatLng(c.bbox[2]-0.01, c.bbox[3]-0.01) + ); + coverage.bounds = bounds; + coverage.attrib = p.attribution; + this._providers.push(coverage); + } + } + } + this._update(); + }, + + _update: function() { + if (this._url == null || !this._map) return; + this._update_attribution(); + L.TileLayer.prototype._update.apply(this, []); + }, + + _update_attribution: function() { + var bounds = this._map.getBounds(); + var zoom = this._map.getZoom(); + for (var i = 0; i < this._providers.length; i++) { + var p = this._providers[i]; + if ((zoom <= p.zoomMax && zoom >= p.zoomMin) && + bounds.intersects(p.bounds)) { + if (!p.active && this._map.attributionControl) + this._map.attributionControl.addAttribution(p.attrib); + p.active = true; + } else { + if (p.active && this._map.attributionControl) + this._map.attributionControl.removeAttribution(p.attrib); + p.active = false; + } + } + }, + + onRemove: function(map) { + for (var i = 0; i < this._providers.length; i++) { + var p = this._providers[i]; + if (p.active && this._map.attributionControl) { + this._map.attributionControl.removeAttribution(p.attrib); + p.active = false; + } + } + L.TileLayer.prototype.onRemove.apply(this, [map]); + } +}); + +L.bingLayer = function (key, options) { + return new L.BingLayer(key, options); +}; \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/google.js b/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/google.js new file mode 100644 index 00000000..60196b2c --- /dev/null +++ b/servers/wordpress/gps-tracker/public/assets/js/leaflet-plugins/google.js @@ -0,0 +1,242 @@ +/* +Copyright (c) 2011-2012, Pavel Shramov +All rights reserved. +https://github.com/robertharm/leaflet-plugins +License in same folder as this file +*/ + +var adsense_status = 'disabled'; + +L.Google = L.Class.extend( { + includes: L.Mixin.Events, + + options: { + minZoom: 0, + maxZoom: 18, + tileSize: 256, + subdomains: 'abc', + errorTileUrl: '', + attribution: '', + opacity: 1, + continuousWorld: false, + noWrap: false, + mapOptions: { + backgroundColor: '#dddddd' + } + }, + + // Possible types: SATELLITE, ROADMAP, HYBRID, TERRAIN + initialize: function(type, options) { + L.Util.setOptions(this, options); + + this._ready = google.maps.Map !== undefined; + if (!this._ready) L.Google.asyncWait.push(this); + + this._type = type || 'ROADMAP'; + }, + + onAdd: function(map, insertAtTheBottom) { + this._map = map; + this._insertAtTheBottom = insertAtTheBottom; + + // create a container div for tiles + this._initContainer(); + this._initMapObject(); + + if (adsense_status == 'enabled') { + this._initAdSense(); + } + + // set up events + map.on('viewreset', this._resetCallback, this); + + this._limitedUpdate = L.Util.limitExecByInterval(this._update, 150, this); + map.on('move', this._update, this); + + map.on('zoomanim', this._handleZoomAnim, this); + + //20px instead of 1em to avoid a slight overlap with google's attribution + map._controlCorners.bottomright.style.marginBottom = '20px'; + + this._reset(); + this._update(); + }, + + onRemove: function(map) { + this._map._container.removeChild(this._container); + this._map.off('viewreset', this._resetCallback, this); + this._map.off('move', this._update, this); + this._map.off('zoomanim', this._handleZoomAnim, this); + map._controlCorners.bottomright.style.marginBottom = '0em'; + }, + + getAttribution: function() { + return this.options.attribution; + }, + + setOpacity: function(opacity) { + this.options.opacity = opacity; + if (opacity < 1) { + L.DomUtil.setOpacity(this._container, opacity); + } + }, + + setElementSize: function(e, size) { + e.style.width = size.x + 'px'; + e.style.height = size.y + 'px'; + }, + + _initContainer: function() { + var tilePane = this._map._container, + first = tilePane.firstChild; + + if (!this._container) { + this._container = L.DomUtil.create('div', 'leaflet-google-layer leaflet-top leaflet-left'); + this._container.id = '_GMapContainer_' + L.Util.stamp(this); + this._container.style.zIndex = 'auto'; + } + + tilePane.insertBefore(this._container, first); + + this.setOpacity(this.options.opacity); + this.setElementSize(this._container, this._map.getSize()); + }, + + _initMapObject: function() { + if (!this._ready) return; + this._google_center = new google.maps.LatLng(0, 0); + var map = new google.maps.Map(this._container, { + center: this._google_center, + zoom: 0, + tilt: 0, + mapTypeId: google.maps.MapTypeId[this._type], + disableDefaultUI: true, + keyboardShortcuts: false, + draggable: false, + disableDoubleClickZoom: true, + scrollwheel: false, + streetViewControl: false, + styles: this.options.mapOptions.styles, + backgroundColor: this.options.mapOptions.backgroundColor + }); + + var _this = this; + this._reposition = google.maps.event.addListenerOnce(map, 'center_changed', + function() { _this.onReposition(); }); + this._google = map; + + google.maps.event.addListenerOnce(map, 'idle', + function() { _this._checkZoomLevels(); }); + + //Reporting that map-object was initialized. + this.fire('MapObjectInitialized', { mapObject: map }); + }, + + _checkZoomLevels: function() { + //setting the zoom level on the Google map may result in a different zoom level than the one requested + //(it won't go beyond the level for which they have data). + // verify and make sure the zoom levels on both Leaflet and Google maps are consistent + if (this._google.getZoom() !== this._map.getZoom()) { + //zoom levels are out of sync. Set the leaflet zoom level to match the google one + this._map.setZoom( this._google.getZoom() ); + } + + // this._resetCallback(this._container); + }, + + _resetCallback: function(e) { + this._reset(e.hard); + }, + + _reset: function(clearOldContainer) { + this._initContainer(); + }, + + _update: function(e) { + if (!this._google) return; + this._resize(); + + var center = e && e.latlng ? e.latlng : this._map.getCenter(); + var _center = new google.maps.LatLng(center.lat, center.lng); + + this._google.setCenter(_center); + this._google.setZoom(Math.round(this._map.getZoom())); + + this._checkZoomLevels(); + }, + + _resize: function() { + var size = this._map.getSize(); + if (this._container.style.width === size.x && + this._container.style.height === size.y) + return; + this.setElementSize(this._container, size); + this.onReposition(); + }, + + + _handleZoomAnim: function (e) { + var center = e.center; + var _center = new google.maps.LatLng(center.lat, center.lng); + + this._google.setCenter(_center); + this._google.setZoom(Math.round(e.zoom)); + }, + + + onReposition: function() { + if (!this._google) return; + google.maps.event.trigger(this._google, 'resize'); + }, + + _initAdSense: function() { + var adUnitDiv = document.createElement('div'); + adUnitDiv.className = "leaflet-control"; + adUnitDiv.style.margin = "0"; + adUnitDiv.style.clear = "none"; + var user_adsense = new String; + user_adsense.format = google.maps.adsense.AdFormat["HALF_BANNER"]; + user_adsense.position = google.maps.ControlPosition["TOP_CENTER"]; + user_adsense.cposition = "TOP_CENTER"; + user_adsense.backgroundColor = "#c4d4f3"; + user_adsense.borderColor = "#aaa"; + user_adsense.titleColor = "#0000cc"; + user_adsense.textColor = "#000000"; + user_adsense.urlColor = "#009900"; + user_adsense.channelNumber = "6961715451"; + user_adsense.publisherID = "pub-7095775186404141"; + + var adUnitOptions = { + format: user_adsense.format, + position: user_adsense.position, + backgroundColor: user_adsense.backgroundColor, + borderColor: user_adsense.borderColor, + titleColor: user_adsense.titleColor, + textColor: user_adsense.textColor, + urlColor: user_adsense.urlColor, + map: this._google, + visible: true, + channelNumber: user_adsense.channelNumber, + publisherId: user_adsense.publisherID + } + //info: dont load ads on minimaps + var size = this._map.getSize(); + if (size.x > 150) { + this._adUnit = new google.maps.adsense.AdUnit(adUnitDiv, adUnitOptions); + } + } +}); + +L.Google.asyncWait = []; +L.Google.asyncInitialize = function() { + var i; + for (i = 0; i < L.Google.asyncWait.length; i++) { + var o = L.Google.asyncWait[i]; + o._ready = true; + if (o._container) { + o._initMapObject(); + o._update(); + } + } + L.Google.asyncWait = []; +}; \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/public/class-gpstracker.php b/servers/wordpress/gps-tracker/public/class-gpstracker.php new file mode 100644 index 00000000..8de64d07 --- /dev/null +++ b/servers/wordpress/gps-tracker/public/class-gpstracker.php @@ -0,0 +1,220 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +if ( ! class_exists( 'Gps_Tracker' ) ) : + +/** + * Main Gps_Tracker Class + * + * @since 1.0.0 + */ +class Gps_Tracker { + + /** + * Plugin version, used for cache-busting of style and script file references. + * + * @since 1.0.0 + * @var string + */ + const VERSION = '1.0.3'; + + /** + * Unique identifier for your plugin. + * + * The variable name is used as the text domain when internationalizing strings + * of text. Its value should match the Text Domain file header in the main + * plugin file. + * + * @since 1.0.0 + * @var string + */ + protected $plugin_slug = 'gpstracker'; + + /** + * Instance of this class. + * + * @since 1.0.0 + * @var object + */ + protected static $instance = null; + + /** + * Gps Tracker Endpoint Object + * + * @var object + * @since 1.0.0 + */ + public $gpstracker_endpoint; + + /** + * Gps Tracker Ajax Object + * + * @var object + * @since 1.0.0 + */ + public $gpstracker_ajax; + + /** + * Initialize the plugin by setting localization and loading public scripts + * and styles. + * + * @since 1.0.0 + */ + private function __construct() { + $this->includes(); + $this->gpstracker_endpoint = new Gps_Tracker_Endpoint(); + $this->gpstracker_ajax = new Gps_Tracker_Ajax(); + + // load plugin text domain + add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); + + // load public-facing style sheet and javascript + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); + add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); + + // to use this plugin, add this shortcode to any page or post: [gps_tracker] + add_shortcode( 'gps_tracker', array( $this,'gpstracker_map_shortcode' ) ); + } + + /** + * Return the plugin slug. + * + * @since 1.0.0 + * @return string + */ + public function get_plugin_slug() { + return $this->plugin_slug; + } + + /** + * Return an instance of this class. + * + * @since 1.0.0 + * @return object A single instance of this class. + */ + public static function get_instance() { + // If the single instance hasn't been set, set it now. + if ( null == self::$instance ) { + self::$instance = new self; + } + + return self::$instance; + } + + /** + * Throw error on object clone + * + * The whole idea of the singleton design pattern is that there is a single + * object therefore, we don't want the object to be cloned. + * + * @since 1.0.0 + * @access protected + * @return void + */ + public function __clone() { + // Cloning instances of the class is forbidden + _doing_it_wrong( __FUNCTION__, __( 'not good.', 'gpstracker' ), '1.0.0' ); + } + + /** + * Disable unserializing of the class + * + * @since 1.0.0 + * @access protected + * @return void + */ + public function __wakeup() { + // Unserializing instances of the class is forbidden + _doing_it_wrong( __FUNCTION__, __( 'not good.', 'gpstracker' ), '1.0.0' ); + } + + /** + * Include required files. + * + * @access private + * @since 1.0.0 + * @return void + */ + private function includes() { + require_once GPSTRACKER_PLUGIN_DIR . 'includes/class-gpstracker-gamajo-template-loader.php'; + require_once GPSTRACKER_PLUGIN_DIR . 'includes/class-gpstracker-template-loader.php'; + require_once GPSTRACKER_PLUGIN_DIR . 'public/includes/class-gpstracker-ajax.php'; + require_once GPSTRACKER_PLUGIN_DIR . 'public/includes/class-gpstracker-endpoint.php'; + } + + /** + * Gps Tracker Map Shortcode + * + * Displays the map, dropdown boxes and buttons for Gps Tracker + * + * @since 1.0.0 + * @return string + */ + public function gpstracker_map_shortcode() { + $templates = new GpsTracker_Template_Loader(); + + ob_start(); + $templates->get_template_part( 'shortcode', 'gpstracker-map' ); + return ob_get_clean(); + } + + /** + * Load the plugin text domain for translation. + * + * @since 1.0.0 + */ + public function load_plugin_textdomain() { + $domain = $this->plugin_slug; + $locale = apply_filters( 'plugin_locale', get_locale(), $domain ); + + load_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain . '/' . $domain . '-' . $locale . '.mo' ); + load_plugin_textdomain( $domain, FALSE, basename( plugin_dir_path( dirname( __FILE__ ) ) ) . '/languages/' ); + } + + /** + * Register and enqueue public-facing style sheet. + * + * @since 1.0.0 + */ + public function enqueue_styles() { + wp_enqueue_style( $this->plugin_slug . '-leaflet-styles', plugins_url( 'assets/js/leaflet-0.7.5/leaflet.css', __FILE__ ), array(), self::VERSION ); + wp_enqueue_style('gpstracker-bootstrap', '//maxcdn.bootstrapcdn.com/bootswatch/3.3.5/superhero/bootstrap.min.css', false, '3.3.0', 'all'); + wp_enqueue_style( $this->plugin_slug . '-light-styles', plugins_url( 'assets/css/light.css', __FILE__ ), array(), self::VERSION ); + } + + /** + * Register and enqueues public-facing JavaScript files. + * + * @since 1.0.0 + */ + public function enqueue_scripts() { + wp_enqueue_script( $this->plugin_slug . '-gpstracker-google-maps', '//maps.google.com/maps/api/js?v=3&sensor=false&libraries=adsense', array(), self::VERSION ); + wp_enqueue_script( $this->plugin_slug . '-gpstracker-map-js', plugins_url( 'assets/js/gpstracker-map.js', __FILE__ ), array('jquery'), self::VERSION ); + wp_enqueue_script( $this->plugin_slug . '-gpstracker-leaflet-js', plugins_url( 'assets/js/leaflet-0.7.5/leaflet.js', __FILE__ ), array('jquery'), self::VERSION ); + wp_enqueue_script( $this->plugin_slug . '-gpstracker-google-js', plugins_url( 'assets/js/leaflet-plugins/google.js', __FILE__ ), array('jquery'), self::VERSION ); + wp_enqueue_script( $this->plugin_slug . '-gpstracker-bing-js', plugins_url( 'assets/js/leaflet-plugins/bing.js', __FILE__ ), array('jquery'), self::VERSION ); + + wp_localize_script( $this->plugin_slug . '-gpstracker-map-js', 'map_js_vars', array( + 'plugin_url' => GPSTRACKER_PLUGIN_URL, + 'ajax_url' => admin_url('admin-ajax.php'), + 'get_routes_nonce' => wp_create_nonce('get-routes-nonce'), + 'get_geojson_route_nonce' => wp_create_nonce('get-geojson-route-nonce'), + 'get_all_geojson_routes_nonce' => wp_create_nonce('get-all-geojson-routes-nonce'), + 'delete_route_nonce' => wp_create_nonce('delete-route-nonce') + ) + ); + } +} +endif; // End if class_exists diff --git a/servers/wordpress/gps-tracker/public/includes/class-gpstracker-ajax.php b/servers/wordpress/gps-tracker/public/includes/class-gpstracker-ajax.php new file mode 100644 index 00000000..abdf8335 --- /dev/null +++ b/servers/wordpress/gps-tracker/public/includes/class-gpstracker-ajax.php @@ -0,0 +1,178 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +/** + * Gps_Tracker_Ajax Class + * + * @since 1.0.0 + */ +class Gps_Tracker_Ajax { + + /** + * Set up the Gps Tracker Ajax Class + * + * @since 1.0.0 + */ + public function __construct() { + add_action( 'wp_ajax_get_routes', array( $this, 'get_gps_routes' ) ); + add_action( 'wp_ajax_nopriv_get_routes', array( $this, 'get_gps_routes' ) ); + add_action( 'wp_ajax_get_all_geojson_routes', array( $this, 'get_all_geojson_routes' ) ); + add_action( 'wp_ajax_nopriv_get_all_geojson_routes', array( $this, 'get_all_geojson_routes' ) ); + add_action( 'wp_ajax_get_geojson_route', array( $this, 'get_geojson_route' ) ); + add_action( 'wp_ajax_nopriv_get_geojson_route', array( $this, 'get_geojson_route' ) ); + add_action( 'wp_ajax_delete_route', array( $this, 'delete_gps_route' ) ); + add_action( 'wp_ajax_nopriv_delete_route', array( $this, 'delete_gps_route' ) ); + + + } + + /** + * Get all gps routes from the database, triggered when the plugin shortcode is executed + * + * @access public + * @since 1.0.0 + */ + public function get_gps_routes() { + //exit(var_dump($_POST)); + + if ( ! wp_verify_nonce( $_POST['get_routes_nonce'], 'get-routes-nonce' ) ) { + exit; + } else { + header( 'Content-Type: application/json' ); + + global $wpdb; + $procedure_name = $wpdb->prefix . 'get_routes'; + $gps_routes = $wpdb->get_results("CALL {$procedure_name};"); + + if ( 0 == $wpdb->num_rows ) { + echo '0'; + exit; + } + + $json = '{"routes": ['; + + foreach ($gps_routes as $route) { + $json .= $route->json; + $json .= ','; + } + + $json = rtrim($json, ','); + $json .= ']}'; + + echo $json; + exit; + } + } + + /** + * Gets a single gps route in geojson format from the database, triggered by selecting + * a route in the route dropdown box under the map. + * + * @access public + * @since 1.0.0 + */ + public function get_geojson_route() { + if ( ! wp_verify_nonce( $_POST['get_geojson_route_nonce'], 'get-geojson-route-nonce' ) ) { + exit; + } else { + header( 'Content-Type: application/json' ); + + global $wpdb; + $session_id = $_POST['session_id']; + $procedure_name = $wpdb->prefix . 'get_geojson_route'; + $gps_locations = $wpdb->get_results($wpdb->prepare( + "CALL {$procedure_name}(%s);", + array( + $session_id + ) + )); + + if ( 0 == $wpdb->num_rows ) { + echo '0'; + exit; + } + + $json = '{"type": "FeatureCollection", "features": ['; + + foreach ( $gps_locations as $location ) { + $json .= $location->geojson; + $json .= ','; + } + + $json = rtrim($json, ','); + $json .= ']}'; + + echo $json; + exit; + } + } + + + /** + * Get all routes in geojson format when page loads or when called from view all button + * + * @access public + * @since 1.0.0 + */ + public function get_all_geojson_routes() { + if ( ! wp_verify_nonce( $_POST['get_all_geojson_routes_nonce'], 'get-all-geojson-routes-nonce' ) ) { + exit; + } else { + header( 'Content-Type: application/json' ); + global $wpdb; + $procedure_name = $wpdb->prefix . 'get_all_geojson_routes'; + $gps_locations = $wpdb->get_results("CALL {$procedure_name};"); + + if ( 0 == $wpdb->num_rows ) { + echo '0'; + exit; + } + + $geojson = '{"type": "FeatureCollection", "features": ['; + + foreach ( $gps_locations as $location ) { + $geojson .= $location->geojson; + $geojson .= ','; + } + + $geojson = rtrim($geojson, ','); + $geojson .= ']}'; + + echo $geojson; + exit; + } + } + + /** + * Deletes a gps route from the database using the Delete button under the map + * + * @access public + * @since 1.0.0 + */ + public function delete_gps_route() { + if ( ! wp_verify_nonce( $_POST['delete_route_nonce'], 'delete-route-nonce' ) ) { + exit; + } else { + global $wpdb; + $session_id = $_POST['session_id']; + $table_name = $wpdb->prefix . 'gps_locations'; + + $wpdb->delete( $table_name, array( 'session_id' => $session_id ) ); + + exit; + } + } +} +?> diff --git a/servers/wordpress/gps-tracker/public/includes/class-gpstracker-endpoint.php b/servers/wordpress/gps-tracker/public/includes/class-gpstracker-endpoint.php new file mode 100644 index 00000000..3c8c4cd3 --- /dev/null +++ b/servers/wordpress/gps-tracker/public/includes/class-gpstracker-endpoint.php @@ -0,0 +1,158 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) exit; + +/** + * Gps_Tracker_Endpoint Class + * + * @since 1.0.0 + */ +class Gps_Tracker_Endpoint { + + /** + * Set up the Gps Tracker Endpoint Class + * + * @since 1.0.0 + */ + public function __construct() { + add_action( 'init', array( $this, 'add_gpstracker_endpoint' ) ); + add_action( 'template_redirect', array( $this, 'process_gpstracker_query' ), -1 ); + add_filter( 'query_vars', array( $this, 'gpstracker_query_vars' ) ); + } + + /** + * Registers a new rewrite endpoint for accessing the API + * + * @access public + * @param array $rewrite_rules WordPress Rewrite Rules + * @since 1.0.0 + */ + public function add_gpstracker_endpoint( $rewrite_rules ) { + add_rewrite_endpoint( 'gpstracker', EP_ROOT ); + } + + /** + * Listens for the GET requests and then processes the request + * + * @access public + * @global $wp_query + * @since 1.0.0 + * @return void + */ + public function process_gpstracker_query() { + global $wp_query; + + if ( ! isset($wp_query->query_vars['gpstracker'] ) ) { + return; + } + + switch ( $wp_query->query_vars['gpstracker'] ) { + case 'nonce': + $session_id = isset($wp_query->query_vars['sessionid']) ? $wp_query->query_vars['sessionid'] : '0'; + $session_id_pattern = '/^[0-9a-fA-F]{8}(?:-[0-9a-fA-F]{4}){3}-[0-9a-fA-F]{12}$/'; + + if ( preg_match($session_id_pattern, $session_id) ) { + echo wp_create_nonce($session_id); + } else { + echo '0'; + } + + break; + case 'location': + $session_id = isset($wp_query->query_vars['sessionid']) ? $wp_query->query_vars['sessionid'] : '0'; + $wpnonce = isset($wp_query->query_vars['wpnonce']) ? $wp_query->query_vars['wpnonce'] : '1'; + + if ( ! wp_verify_nonce($wpnonce, $session_id) ) { + echo '0'; + exit; + } + + $latitude = isset($wp_query->query_vars['latitude']) ? $wp_query->query_vars['latitude'] : '0.0'; + $latitude = (float)str_replace(",", ".", $latitude); // to handle European locale decimals + $longitude = isset($wp_query->query_vars['longitude']) ? $wp_query->query_vars['longitude'] : '0.0'; + $longitude = (float)str_replace(",", ".", $longitude); + $user_name = isset($wp_query->query_vars['username']) ? $wp_query->query_vars['username'] : 'wordpressUser'; + $phone_number = isset($wp_query->query_vars['phonenumber']) ? $wp_query->query_vars['phonenumber'] : '867-5309'; + $speed = isset($wp_query->query_vars['speed']) ? $wp_query->query_vars['speed'] : '0'; + $direction = isset($wp_query->query_vars['direction']) ? $wp_query->query_vars['direction'] : '0'; + $distance = isset($wp_query->query_vars['distance']) ? $wp_query->query_vars['distance'] : '0'; + $distance = (float)str_replace(",", ".", $distance); + $gps_time = isset($wp_query->query_vars['gpstime']) ? urldecode($wp_query->query_vars['gpstime']) : '0000-00-00 00:00:00'; + $location_method = isset($wp_query->query_vars['locationmethod']) ? $wp_query->query_vars['locationmethod'] : '0'; + $accuracy = isset($wp_query->query_vars['accuracy']) ? $wp_query->query_vars['accuracy'] : '0'; + $extra_info = isset($wp_query->query_vars['extrainfo']) ? urldecode($wp_query->query_vars['extrainfo']) : ''; + $event_type = isset($wp_query->query_vars['eventtype']) ? $wp_query->query_vars['eventtype'] : 'wordpress'; + + global $wpdb; + $table_name = $wpdb->prefix . 'gps_locations'; + + $wpdb->insert( + $table_name, + array( + 'latitude' => $latitude, + 'longitude' => $longitude, + 'user_name' => $user_name, + 'phone_number' => $phone_number, + 'session_id' => $session_id, + 'speed' => $speed, + 'direction' => $direction, + 'distance' => $distance, + 'gps_time' => $gps_time, + 'location_method' => $location_method, + 'accuracy' => $accuracy, + 'extra_info' => $extra_info, + 'event_type' => $event_type + ), + array( + '%f', '%f', '%s', '%s', '%s', '%d', '%d', '%f', '%s', '%s', '%d', '%s', '%s' + ) + ); + + echo date('Y-m-d H:i:s'); + break; + } + + exit; + } + + /** + * Registers query vars for API access + * + * @access public + * @since 1.0.0 + * @param array $vars Query vars + * @return array $vars New query vars + */ + public function gpstracker_query_vars( $query_vars ) { + $query_vars[] = 'latitude'; + $query_vars[] = 'longitude'; + $query_vars[] = 'username'; + $query_vars[] = 'phonenumber'; + $query_vars[] = 'sessionid'; + $query_vars[] = 'speed'; + $query_vars[] = 'direction'; + $query_vars[] = 'distance'; + $query_vars[] = 'gpstime'; + $query_vars[] = 'locationmethod'; + $query_vars[] = 'accuracy'; + $query_vars[] = 'extrainfo'; + $query_vars[] = 'eventtype'; + $query_vars[] = 'wpnonce'; + return $query_vars; + } +} +?> diff --git a/servers/wordpress/gps-tracker/public/includes/index.php b/servers/wordpress/gps-tracker/public/includes/index.php new file mode 100644 index 00000000..e71af0ef --- /dev/null +++ b/servers/wordpress/gps-tracker/public/includes/index.php @@ -0,0 +1 @@ + +
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ \ No newline at end of file diff --git a/servers/wordpress/gps-tracker/uninstall.php b/servers/wordpress/gps-tracker/uninstall.php new file mode 100644 index 00000000..f9388851 --- /dev/null +++ b/servers/wordpress/gps-tracker/uninstall.php @@ -0,0 +1,44 @@ + + * @license MIT/GPLv2 or later + * @link https://www.websmithing.com/gps-tracker + * @copyright 2014 Nick Fox + */ + +// If uninstall not called from WordPress, then exit +if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) { + exit; +} + +// delete gps tracker table and two stored procedures + +global $wpdb; +$table_name = $wpdb->prefix . 'gps_locations'; +$sql = "DROP TABLE IF EXISTS {$table_name};"; +$wpdb->query($sql); + +$table_name = $wpdb->prefix . 'gps_logger'; +$sql = "DROP TABLE IF EXISTS {$table_name};"; +$wpdb->query($sql); + +$procedure_name = $wpdb->prefix . "get_routes"; +$wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + +$procedure_name = $wpdb->prefix . "get_geojson_route"; +$wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + +$procedure_name = $wpdb->prefix . "get_all_geojson_routes"; +$wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + +$procedure_name = $wpdb->prefix . "delete_route"; +$wpdb->query("DROP PROCEDURE IF EXISTS {$procedure_name};"); + +$table_name = $wpdb->prefix . 'gps_logger'; +$sql = "DROP TABLE IF EXISTS {$table_name};"; +$wpdb->query($sql); + +delete_option( 'gpstracker_app_id' ); \ No newline at end of file From 4d8847cab6024097e61a2c69bc47024f6cb787da Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Tue, 29 Sep 2015 21:10:35 +0200 Subject: [PATCH 10/34] updated readme --- servers/wordpress/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers/wordpress/README.md b/servers/wordpress/README.md index 2027b763..d020ba93 100644 --- a/servers/wordpress/README.md +++ b/servers/wordpress/README.md @@ -2,7 +2,7 @@ This is the wordpress plugin that I have in the Wordpress repository. You can se https://wordpress.org/plugins/gps-tracker/ -It is MIT/GPLv2 or later versioned. I am using a dual license because most of the plugins in the Wordpress repo are GPLv2, as is Wordpress itself. My open source software is MIT licensed so it just made sense to dual license it. +It is MIT/GPLv2 or later licensed. I am using a dual license because most of the plugins in the Wordpress repo are GPLv2, as is Wordpress itself. My open source software is MIT licensed so it just made sense to dual license it. Put the gps-tracker directory into your Plugins directory of your Wordpress installation and then activate the plugin. Go to the settings page to get the URL that you need to enter into your Android client. Here is the Android client in the Google Play store: From b63812baa0820117996a773c7e2016cce6c0f05c Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Wed, 30 Sep 2015 14:14:24 +0200 Subject: [PATCH 11/34] updated android dependencies and changed deprecated LocationClient to GoogleApiClient --- .../libraries/android_async_http_1_4_6.xml | 11 - .../libraries/android_async_http_1_4_9.xml | 11 + .../.idea/libraries/appcompat_v7_20_0_0.xml | 13 -- .../.idea/libraries/appcompat_v7_21_0_3.xml | 10 + .../.idea/libraries/httpclient_4_3_6.xml | 11 + ...es_4_3_23.xml => play_services_6_5_87.xml} | 6 +- .../libraries/support_annotations_20_0_0.xml | 11 - .../libraries/support_annotations_21_0_3.xml | 11 + .../.idea/libraries/support_v4_20_0_0.xml | 11 - .../.idea/libraries/support_v4_21_0_3.xml | 10 + phoneClients/android/.idea/workspace.xml | 220 ++++++++++-------- phoneClients/android/app/app.iml | 13 +- phoneClients/android/app/build.gradle | 16 +- .../gpstracker/LocationService.java | 50 ++-- .../gpstracker/LoopjHttpClient.java | 11 +- .../build/intermediates/dex-cache/cache.xml | 54 +++-- 16 files changed, 258 insertions(+), 211 deletions(-) delete mode 100644 phoneClients/android/.idea/libraries/android_async_http_1_4_6.xml create mode 100644 phoneClients/android/.idea/libraries/android_async_http_1_4_9.xml delete mode 100644 phoneClients/android/.idea/libraries/appcompat_v7_20_0_0.xml create mode 100644 phoneClients/android/.idea/libraries/appcompat_v7_21_0_3.xml create mode 100644 phoneClients/android/.idea/libraries/httpclient_4_3_6.xml rename phoneClients/android/.idea/libraries/{play_services_4_3_23.xml => play_services_6_5_87.xml} (60%) delete mode 100644 phoneClients/android/.idea/libraries/support_annotations_20_0_0.xml create mode 100644 phoneClients/android/.idea/libraries/support_annotations_21_0_3.xml delete mode 100644 phoneClients/android/.idea/libraries/support_v4_20_0_0.xml create mode 100644 phoneClients/android/.idea/libraries/support_v4_21_0_3.xml diff --git a/phoneClients/android/.idea/libraries/android_async_http_1_4_6.xml b/phoneClients/android/.idea/libraries/android_async_http_1_4_6.xml deleted file mode 100644 index 775371d0..00000000 --- a/phoneClients/android/.idea/libraries/android_async_http_1_4_6.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/android_async_http_1_4_9.xml b/phoneClients/android/.idea/libraries/android_async_http_1_4_9.xml new file mode 100644 index 00000000..ccea99d5 --- /dev/null +++ b/phoneClients/android/.idea/libraries/android_async_http_1_4_9.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/appcompat_v7_20_0_0.xml b/phoneClients/android/.idea/libraries/appcompat_v7_20_0_0.xml deleted file mode 100644 index ff9c6c14..00000000 --- a/phoneClients/android/.idea/libraries/appcompat_v7_20_0_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/appcompat_v7_21_0_3.xml b/phoneClients/android/.idea/libraries/appcompat_v7_21_0_3.xml new file mode 100644 index 00000000..751a9d92 --- /dev/null +++ b/phoneClients/android/.idea/libraries/appcompat_v7_21_0_3.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/httpclient_4_3_6.xml b/phoneClients/android/.idea/libraries/httpclient_4_3_6.xml new file mode 100644 index 00000000..a479d143 --- /dev/null +++ b/phoneClients/android/.idea/libraries/httpclient_4_3_6.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/play_services_4_3_23.xml b/phoneClients/android/.idea/libraries/play_services_6_5_87.xml similarity index 60% rename from phoneClients/android/.idea/libraries/play_services_4_3_23.xml rename to phoneClients/android/.idea/libraries/play_services_6_5_87.xml index 0f3af435..5007d58d 100644 --- a/phoneClients/android/.idea/libraries/play_services_4_3_23.xml +++ b/phoneClients/android/.idea/libraries/play_services_6_5_87.xml @@ -1,8 +1,8 @@ - + - - + + diff --git a/phoneClients/android/.idea/libraries/support_annotations_20_0_0.xml b/phoneClients/android/.idea/libraries/support_annotations_20_0_0.xml deleted file mode 100644 index 7eacba55..00000000 --- a/phoneClients/android/.idea/libraries/support_annotations_20_0_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/support_annotations_21_0_3.xml b/phoneClients/android/.idea/libraries/support_annotations_21_0_3.xml new file mode 100644 index 00000000..6fbaa909 --- /dev/null +++ b/phoneClients/android/.idea/libraries/support_annotations_21_0_3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/support_v4_20_0_0.xml b/phoneClients/android/.idea/libraries/support_v4_20_0_0.xml deleted file mode 100644 index 0db4e14e..00000000 --- a/phoneClients/android/.idea/libraries/support_v4_20_0_0.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/phoneClients/android/.idea/libraries/support_v4_21_0_3.xml b/phoneClients/android/.idea/libraries/support_v4_21_0_3.xml new file mode 100644 index 00000000..447a9ed1 --- /dev/null +++ b/phoneClients/android/.idea/libraries/support_v4_21_0_3.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android/.idea/workspace.xml b/phoneClients/android/.idea/workspace.xml index 206953da..263bb2e3 100644 --- a/phoneClients/android/.idea/workspace.xml +++ b/phoneClients/android/.idea/workspace.xml @@ -41,7 +41,22 @@ - + + + + + + + + + + + + + + + + @@ -95,8 +110,8 @@ @@ -107,29 +122,23 @@ - + - + + + - - + + - - - - - - - - - - - - - + + + + + @@ -493,19 +502,19 @@ + @@ -1018,6 +1030,7 @@ + @@ -1220,7 +1233,6 @@ - @@ -1244,6 +1256,8 @@ + + @@ -1459,37 +1473,37 @@ - + + + - + + - + + - - - - @@ -1497,15 +1511,15 @@ - - - + + + - + @@ -1518,8 +1532,8 @@ - + @@ -1550,7 +1564,9 @@ - + + + @@ -1558,7 +1574,9 @@ - + + + @@ -1573,7 +1591,9 @@ - + + + @@ -1595,7 +1615,9 @@ - + + + @@ -1614,14 +1636,14 @@ + + + - - - @@ -1649,7 +1671,9 @@ - + + + @@ -1665,7 +1689,9 @@ - + + + @@ -1681,7 +1707,9 @@ - + + + @@ -1697,7 +1725,9 @@ - + + + @@ -1826,13 +1856,6 @@ - - - - - - - @@ -1866,15 +1889,15 @@ + + + - - - @@ -1883,49 +1906,64 @@ - + - - + + + + + + + + + - + - - + + + + + - + - - + + - + - - + + + - + - - - + + + + + - + - - - + + + + + diff --git a/phoneClients/android/app/app.iml b/phoneClients/android/app/app.iml index 8e8cc92c..a6f39867 100644 --- a/phoneClients/android/app/app.iml +++ b/phoneClients/android/app/app.iml @@ -79,13 +79,14 @@ - + - - - - - + + + + + + diff --git a/phoneClients/android/app/build.gradle b/phoneClients/android/app/build.gradle index 215eab7a..af6ff705 100644 --- a/phoneClients/android/app/build.gradle +++ b/phoneClients/android/app/build.gradle @@ -1,15 +1,15 @@ apply plugin: 'android' android { - compileSdkVersion 20 - buildToolsVersion "20.0.0" + compileSdkVersion 21 + buildToolsVersion "21.1.2" defaultConfig { applicationId "com.websmithing.gpstracker" minSdkVersion 10 - targetSdkVersion 20 - versionCode 13 - versionName "4.0.2" + targetSdkVersion 21 + versionCode 14 + versionName "4.0.3" } buildTypes { release { @@ -22,7 +22,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:appcompat-v7:20.0.0' - compile 'com.loopj.android:android-async-http:1.4.6' - compile 'com.google.android.gms:play-services:4.3.23' + compile 'com.android.support:appcompat-v7:21.0.3' + compile 'com.google.android.gms:play-services:6.5.87' + compile 'com.loopj.android:android-async-http:1.4.9' } diff --git a/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LocationService.java b/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LocationService.java index 472dbbe6..3d4362d1 100644 --- a/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LocationService.java +++ b/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LocationService.java @@ -10,11 +10,11 @@ import android.util.Log; import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.GooglePlayServicesClient; import com.google.android.gms.common.GooglePlayServicesUtil; -import com.google.android.gms.location.LocationClient; +import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationServices; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; @@ -25,9 +25,11 @@ import java.util.Date; import java.util.TimeZone; +//import com.google.android.gms.common.GooglePlayServicesUtil; + public class LocationService extends Service implements - GooglePlayServicesClient.ConnectionCallbacks, - GooglePlayServicesClient.OnConnectionFailedListener, + GoogleApiClient.ConnectionCallbacks, + GoogleApiClient.OnConnectionFailedListener, LocationListener { private static final String TAG = "LocationService"; @@ -38,7 +40,7 @@ public class LocationService extends Service implements private boolean currentlyProcessingLocation = false; private LocationRequest locationRequest; - private LocationClient locationClient; + private GoogleApiClient googleApiClient; @Override public void onCreate() { @@ -63,10 +65,15 @@ private void startTracking() { Log.d(TAG, "startTracking"); if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) { - locationClient = new LocationClient(this,this,this); - if (!locationClient.isConnected() || !locationClient.isConnecting()) { - locationClient.connect(); + googleApiClient = new GoogleApiClient.Builder(this) + .addApi(LocationServices.API) + .addConnectionCallbacks(this) + .addOnConnectionFailedListener(this) + .build(); + + if (!googleApiClient.isConnected() || !googleApiClient.isConnecting()) { + googleApiClient.connect(); } } else { Log.e(TAG, "unable to connect to google play services."); @@ -140,12 +147,12 @@ protected void sendLocationDataToWebsite(Location location) { LoopjHttpClient.get(uploadWebsite, requestParams, new AsyncHttpResponseHandler() { @Override - public void onSuccess(int statusCode, org.apache.http.Header[] headers, byte[] responseBody) { + public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) { LoopjHttpClient.debugLoopJ(TAG, "sendLocationDataToWebsite - success", uploadWebsite, requestParams, responseBody, headers, statusCode, null); stopSelf(); } @Override - public void onFailure(int statusCode, org.apache.http.Header[] headers, byte[] errorResponse, Throwable e) { + public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] errorResponse, Throwable e) { LoopjHttpClient.debugLoopJ(TAG, "sendLocationDataToWebsite - failure", uploadWebsite, requestParams, errorResponse, headers, statusCode, e); stopSelf(); } @@ -177,9 +184,8 @@ public void onLocationChanged(Location location) { } private void stopLocationUpdates() { - if (locationClient != null && locationClient.isConnected()) { - locationClient.removeLocationUpdates(this); - locationClient.disconnect(); + if (googleApiClient != null && googleApiClient.isConnected()) { + googleApiClient.disconnect(); } } @@ -197,26 +203,20 @@ public void onConnected(Bundle bundle) { locationRequest.setFastestInterval(1000); // the fastest rate in milliseconds at which your app can handle location updates locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); - locationClient.requestLocationUpdates(locationRequest, this); + LocationServices.FusedLocationApi.requestLocationUpdates( + googleApiClient, locationRequest, this); } - /** - * Called by Location Services if the connection to the - * location client drops because of an error. - */ @Override - public void onDisconnected() { - Log.e(TAG, "onDisconnected"); + public void onConnectionFailed(ConnectionResult connectionResult) { + Log.e(TAG, "onConnectionFailed"); stopLocationUpdates(); stopSelf(); } @Override - public void onConnectionFailed(ConnectionResult connectionResult) { - Log.e(TAG, "onConnectionFailed"); - - stopLocationUpdates(); - stopSelf(); + public void onConnectionSuspended(int i) { + Log.e(TAG, "GoogleApiClient connection has been suspend"); } } diff --git a/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LoopjHttpClient.java b/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LoopjHttpClient.java index 2c6453e0..2cae24a2 100644 --- a/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LoopjHttpClient.java +++ b/phoneClients/android/app/src/main/java/com/websmithing/gpstracker/LoopjHttpClient.java @@ -6,13 +6,6 @@ import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; -import org.apache.http.Header; - -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.util.Locale; - public class LoopjHttpClient { private static AsyncHttpClient client = new AsyncHttpClient(); @@ -24,17 +17,19 @@ public static void post(String url, RequestParams requestParams, AsyncHttpRespon client.post(url, requestParams, responseHandler); } - public static void debugLoopJ(String TAG, String methodName,String url, RequestParams requestParams, byte[] response, Header[] headers, int statusCode, Throwable t) { + public static void debugLoopJ(String TAG, String methodName,String url, RequestParams requestParams, byte[] response, cz.msebera.android.httpclient.Header[] headers, int statusCode, Throwable t) { Log.d(TAG, client.getUrlWithQueryString(false, url, requestParams)); if (headers != null) { Log.e(TAG, methodName); Log.d(TAG, "Return Headers:"); + /* for (Header h : headers) { String _h = String.format(Locale.US, "%s : %s", h.getName(), h.getValue()); Log.d(TAG, _h); } + */ if (t != null) { Log.d(TAG, "Throwable:" + t); diff --git a/phoneClients/android/build/intermediates/dex-cache/cache.xml b/phoneClients/android/build/intermediates/dex-cache/cache.xml index f3d79c14..3304e811 100644 --- a/phoneClients/android/build/intermediates/dex-cache/cache.xml +++ b/phoneClients/android/build/intermediates/dex-cache/cache.xml @@ -2,40 +2,46 @@ + revision="21.1.2" + sha1="81d42bf983a8741f4888a6e333e454e4a5e0eeb7"/> + revision="21.1.2" + sha1="386a4339ffe52d5d63e80f9bed8d2b1d1a418249"/> + revision="21.1.2" + sha1="526a9f794eab830eae4f23a62c572878b3f491ab"/> + revision="21.1.2" + sha1="01ec05bfbafcc07646ba813000bf2ef11742dd03"/> + revision="21.1.2" + sha1="4b74cefe1f0c1b819e7260c8627a14674e37fd35"/> + revision="21.1.2" + sha1="2c91c949a45a21cdecf26e03951e46c7beec9ad8"/> + From 015a27398f95c239c5f23ceee9c7313964f4d198 Mon Sep 17 00:00:00 2001 From: Nick Fox Date: Wed, 30 Sep 2015 14:44:49 +0200 Subject: [PATCH 12/34] added wordpress android client --- phoneClients/README.md | 7 + phoneClients/android-wp/.gitignore | 4 + phoneClients/android-wp/.idea/.name | 1 + phoneClients/android-wp/.idea/compiler.xml | 23 + .../.idea/copyright/profiles_settings.xml | 3 + phoneClients/android-wp/.idea/encodings.xml | 5 + phoneClients/android-wp/.idea/gradle.xml | 18 + .../libraries/android_async_http_1_4_9.xml | 11 + .../.idea/libraries/appcompat_v7_21_0_3.xml | 10 + .../.idea/libraries/httpclient_4_3_6.xml | 11 + .../.idea/libraries/play_services_6_5_87.xml | 10 + .../libraries/support_annotations_21_0_3.xml | 11 + .../.idea/libraries/support_v4_21_0_3.xml | 11 + phoneClients/android-wp/.idea/misc.xml | 115 ++ phoneClients/android-wp/.idea/modules.xml | 11 + .../.idea/scopes/scope_settings.xml | 5 + phoneClients/android-wp/.idea/vcs.xml | 8 + phoneClients/android-wp/GpsTracker.iml | 15 + .../android-wp/GpsTracker/GpsTracker.iml | 8 + phoneClients/android-wp/GpsTrackerProject.iml | 8 + phoneClients/android-wp/README.md | 1 + phoneClients/android-wp/android-wp.iml | 19 + phoneClients/android-wp/android.iml | 12 + phoneClients/android-wp/app/.gitignore | 26 + phoneClients/android-wp/app/app.iml | 92 ++ phoneClients/android-wp/app/build.gradle | 28 + .../android-wp/app/proguard-rules.txt | 17 + .../app/src/main/AndroidManifest.xml | 39 + .../wp/gpstracker/GpsTrackerActivity.java | 324 ++++ .../gpstracker/GpsTrackerAlarmReceiver.java | 14 + .../wp/gpstracker/GpsTrackerBootReceiver.java | 32 + .../wp/gpstracker/LocationService.java | 232 +++ .../wp/gpstracker/LoopjHttpClient.java | 48 + .../main/res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4486 bytes .../main/res/drawable-mdpi/ic_launcher.png | Bin 0 -> 2460 bytes .../main/res/drawable-xhdpi/ic_launcher.png | Bin 0 -> 6396 bytes .../main/res/drawable-xxhdpi/ic_launcher.png | Bin 0 -> 11209 bytes .../main/res/drawable-xxxhdpi/ic_launcher.png | Bin 0 -> 16395 bytes .../res/drawable/green_tracking_button.xml | 23 + .../main/res/drawable/red_tracking_button.xml | 23 + .../main/res/layout/activity_gpstracker.xml | 89 ++ .../app/src/main/res/values-w820dp/dimens.xml | 6 + .../app/src/main/res/values/dimens.xml | 6 + .../app/src/main/res/values/strings.xml | 20 + .../app/src/main/res/values/styles.xml | 8 + phoneClients/android-wp/build.gradle | 16 + .../build/intermediates/dex-cache/cache.xml | 47 + .../appcompat-v7/19.1.0/AndroidManifest.xml | 21 + .../appcompat-v7/19.1.0/R.txt | 582 ++++++++ .../appcompat-v7/19.1.0/classes.jar | Bin 0 -> 358583 bytes .../19.1.0/res/anim/abc_fade_in.xml | 20 + .../19.1.0/res/anim/abc_fade_out.xml | 20 + .../19.1.0/res/anim/abc_slide_in_bottom.xml | 20 + .../19.1.0/res/anim/abc_slide_in_top.xml | 19 + .../19.1.0/res/anim/abc_slide_out_bottom.xml | 19 + .../19.1.0/res/anim/abc_slide_out_top.xml | 19 + .../res/color/abc_search_url_text_holo.xml | 21 + .../abc_ab_bottom_solid_dark_holo.9.png | Bin 0 -> 144 bytes .../abc_ab_bottom_solid_light_holo.9.png | Bin 0 -> 144 bytes .../abc_ab_bottom_transparent_dark_holo.9.png | Bin 0 -> 135 bytes ...abc_ab_bottom_transparent_light_holo.9.png | Bin 0 -> 134 bytes .../abc_ab_share_pack_holo_dark.9.png | Bin 0 -> 2866 bytes .../abc_ab_share_pack_holo_light.9.png | Bin 0 -> 2862 bytes .../abc_ab_solid_dark_holo.9.png | Bin 0 -> 146 bytes .../abc_ab_solid_light_holo.9.png | Bin 0 -> 145 bytes .../abc_ab_stacked_solid_dark_holo.9.png | Bin 0 -> 146 bytes .../abc_ab_stacked_solid_light_holo.9.png | Bin 0 -> 146 bytes ...abc_ab_stacked_transparent_dark_holo.9.png | Bin 0 -> 139 bytes ...bc_ab_stacked_transparent_light_holo.9.png | Bin 0 -> 133 bytes .../abc_ab_transparent_dark_holo.9.png | Bin 0 -> 155 bytes .../abc_ab_transparent_light_holo.9.png | Bin 0 -> 145 bytes .../abc_cab_background_bottom_holo_dark.9.png | Bin 0 -> 149 bytes ...abc_cab_background_bottom_holo_light.9.png | Bin 0 -> 145 bytes .../abc_cab_background_top_holo_dark.9.png | Bin 0 -> 147 bytes .../abc_cab_background_top_holo_light.9.png | Bin 0 -> 147 bytes .../abc_ic_ab_back_holo_dark.png | Bin 0 -> 602 bytes .../abc_ic_ab_back_holo_light.png | Bin 0 -> 546 bytes .../abc_ic_cab_done_holo_dark.png | Bin 0 -> 713 bytes .../abc_ic_cab_done_holo_light.png | Bin 0 -> 737 bytes .../drawable-hdpi/abc_ic_clear_disabled.png | Bin 0 -> 1774 bytes .../res/drawable-hdpi/abc_ic_clear_normal.png | Bin 0 -> 1945 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 1504 bytes .../abc_ic_clear_search_api_holo_light.png | Bin 0 -> 1540 bytes .../abc_ic_commit_search_api_holo_dark.png | Bin 0 -> 597 bytes .../abc_ic_commit_search_api_holo_light.png | Bin 0 -> 616 bytes .../19.1.0/res/drawable-hdpi/abc_ic_go.png | Bin 0 -> 1415 bytes .../abc_ic_go_search_api_holo_light.png | Bin 0 -> 1252 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 0 -> 144 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 148 bytes .../abc_ic_menu_share_holo_dark.png | Bin 0 -> 467 bytes .../abc_ic_menu_share_holo_light.png | Bin 0 -> 505 bytes .../res/drawable-hdpi/abc_ic_search.png | Bin 0 -> 2558 bytes .../abc_ic_search_api_holo_light.png | Bin 0 -> 2271 bytes .../res/drawable-hdpi/abc_ic_voice_search.png | Bin 0 -> 2070 bytes .../abc_ic_voice_search_api_holo_light.png | Bin 0 -> 1833 bytes .../abc_list_divider_holo_dark.9.png | Bin 0 -> 78 bytes .../abc_list_divider_holo_light.9.png | Bin 0 -> 76 bytes .../drawable-hdpi/abc_list_focused_holo.9.png | Bin 0 -> 191 bytes .../abc_list_longpressed_holo.9.png | Bin 0 -> 154 bytes .../abc_list_pressed_holo_dark.9.png | Bin 0 -> 159 bytes .../abc_list_pressed_holo_light.9.png | Bin 0 -> 159 bytes ...abc_list_selector_disabled_holo_dark.9.png | Bin 0 -> 189 bytes ...bc_list_selector_disabled_holo_light.9.png | Bin 0 -> 189 bytes .../abc_menu_dropdown_panel_holo_dark.9.png | Bin 0 -> 1273 bytes .../abc_menu_dropdown_panel_holo_light.9.png | Bin 0 -> 1289 bytes .../abc_menu_hardkey_panel_holo_dark.9.png | Bin 0 -> 875 bytes .../abc_menu_hardkey_panel_holo_light.9.png | Bin 0 -> 850 bytes .../abc_spinner_ab_default_holo_dark.9.png | Bin 0 -> 316 bytes .../abc_spinner_ab_default_holo_light.9.png | Bin 0 -> 318 bytes .../abc_spinner_ab_disabled_holo_dark.9.png | Bin 0 -> 316 bytes .../abc_spinner_ab_disabled_holo_light.9.png | Bin 0 -> 316 bytes .../abc_spinner_ab_focused_holo_dark.9.png | Bin 0 -> 507 bytes .../abc_spinner_ab_focused_holo_light.9.png | Bin 0 -> 510 bytes .../abc_spinner_ab_pressed_holo_dark.9.png | Bin 0 -> 450 bytes .../abc_spinner_ab_pressed_holo_light.9.png | Bin 0 -> 450 bytes .../abc_tab_selected_focused_holo.9.png | Bin 0 -> 147 bytes .../drawable-hdpi/abc_tab_selected_holo.9.png | Bin 0 -> 148 bytes .../abc_tab_selected_pressed_holo.9.png | Bin 0 -> 147 bytes .../abc_tab_unselected_pressed_holo.9.png | Bin 0 -> 145 bytes ...c_textfield_search_default_holo_dark.9.png | Bin 0 -> 110 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 105 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 108 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 103 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 114 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 111 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 114 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 112 bytes .../abc_ab_bottom_solid_dark_holo.9.png | Bin 0 -> 134 bytes .../abc_ab_bottom_solid_light_holo.9.png | Bin 0 -> 134 bytes .../abc_ab_bottom_transparent_dark_holo.9.png | Bin 0 -> 123 bytes ...abc_ab_bottom_transparent_light_holo.9.png | Bin 0 -> 123 bytes .../abc_ab_share_pack_holo_dark.9.png | Bin 0 -> 2851 bytes .../abc_ab_share_pack_holo_light.9.png | Bin 0 -> 122 bytes .../abc_ab_solid_dark_holo.9.png | Bin 0 -> 133 bytes .../abc_ab_solid_light_holo.9.png | Bin 0 -> 133 bytes .../abc_ab_stacked_solid_dark_holo.9.png | Bin 0 -> 134 bytes .../abc_ab_stacked_solid_light_holo.9.png | Bin 0 -> 133 bytes ...abc_ab_stacked_transparent_dark_holo.9.png | Bin 0 -> 127 bytes ...bc_ab_stacked_transparent_light_holo.9.png | Bin 0 -> 123 bytes .../abc_ab_transparent_dark_holo.9.png | Bin 0 -> 139 bytes .../abc_ab_transparent_light_holo.9.png | Bin 0 -> 133 bytes .../abc_cab_background_bottom_holo_dark.9.png | Bin 0 -> 127 bytes ...abc_cab_background_bottom_holo_light.9.png | Bin 0 -> 124 bytes .../abc_cab_background_top_holo_dark.9.png | Bin 0 -> 130 bytes .../abc_cab_background_top_holo_light.9.png | Bin 0 -> 128 bytes .../abc_ic_ab_back_holo_dark.png | Bin 0 -> 466 bytes .../abc_ic_ab_back_holo_light.png | Bin 0 -> 438 bytes .../abc_ic_cab_done_holo_dark.png | Bin 0 -> 566 bytes .../abc_ic_cab_done_holo_light.png | Bin 0 -> 552 bytes .../drawable-mdpi/abc_ic_clear_disabled.png | Bin 0 -> 1775 bytes .../res/drawable-mdpi/abc_ic_clear_normal.png | Bin 0 -> 1869 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 740 bytes .../abc_ic_clear_search_api_holo_light.png | Bin 0 -> 743 bytes .../abc_ic_commit_search_api_holo_dark.png | Bin 0 -> 511 bytes .../abc_ic_commit_search_api_holo_light.png | Bin 0 -> 532 bytes .../19.1.0/res/drawable-mdpi/abc_ic_go.png | Bin 0 -> 1538 bytes .../abc_ic_go_search_api_holo_light.png | Bin 0 -> 570 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 0 -> 122 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 131 bytes .../abc_ic_menu_share_holo_dark.png | Bin 0 -> 332 bytes .../abc_ic_menu_share_holo_light.png | Bin 0 -> 355 bytes .../res/drawable-mdpi/abc_ic_search.png | Bin 0 -> 2280 bytes .../abc_ic_search_api_holo_light.png | Bin 0 -> 1541 bytes .../res/drawable-mdpi/abc_ic_voice_search.png | Bin 0 -> 1937 bytes .../abc_ic_voice_search_api_holo_light.png | Bin 0 -> 794 bytes .../abc_list_divider_holo_dark.9.png | Bin 0 -> 78 bytes .../abc_list_divider_holo_light.9.png | Bin 0 -> 76 bytes .../drawable-mdpi/abc_list_focused_holo.9.png | Bin 0 -> 171 bytes .../abc_list_longpressed_holo.9.png | Bin 0 -> 151 bytes .../abc_list_pressed_holo_dark.9.png | Bin 0 -> 158 bytes .../abc_list_pressed_holo_light.9.png | Bin 0 -> 158 bytes ...abc_list_selector_disabled_holo_dark.9.png | Bin 0 -> 172 bytes ...bc_list_selector_disabled_holo_light.9.png | Bin 0 -> 171 bytes .../abc_menu_dropdown_panel_holo_dark.9.png | Bin 0 -> 839 bytes .../abc_menu_dropdown_panel_holo_light.9.png | Bin 0 -> 836 bytes .../abc_menu_hardkey_panel_holo_dark.9.png | Bin 0 -> 567 bytes .../abc_menu_hardkey_panel_holo_light.9.png | Bin 0 -> 562 bytes .../abc_spinner_ab_default_holo_dark.9.png | Bin 0 -> 266 bytes .../abc_spinner_ab_default_holo_light.9.png | Bin 0 -> 266 bytes .../abc_spinner_ab_disabled_holo_dark.9.png | Bin 0 -> 262 bytes .../abc_spinner_ab_disabled_holo_light.9.png | Bin 0 -> 262 bytes .../abc_spinner_ab_focused_holo_dark.9.png | Bin 0 -> 407 bytes .../abc_spinner_ab_focused_holo_light.9.png | Bin 0 -> 407 bytes .../abc_spinner_ab_pressed_holo_dark.9.png | Bin 0 -> 348 bytes .../abc_spinner_ab_pressed_holo_light.9.png | Bin 0 -> 348 bytes .../abc_tab_selected_focused_holo.9.png | Bin 0 -> 148 bytes .../drawable-mdpi/abc_tab_selected_holo.9.png | Bin 0 -> 151 bytes .../abc_tab_selected_pressed_holo.9.png | Bin 0 -> 150 bytes .../abc_tab_unselected_pressed_holo.9.png | Bin 0 -> 155 bytes ...c_textfield_search_default_holo_dark.9.png | Bin 0 -> 106 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 100 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 105 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 98 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 107 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 107 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 109 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 109 bytes .../abc_ab_bottom_solid_dark_holo.9.png | Bin 0 -> 165 bytes .../abc_ab_bottom_solid_light_holo.9.png | Bin 0 -> 166 bytes .../abc_ab_bottom_transparent_dark_holo.9.png | Bin 0 -> 153 bytes ...abc_ab_bottom_transparent_light_holo.9.png | Bin 0 -> 152 bytes .../abc_ab_share_pack_holo_dark.9.png | Bin 0 -> 2875 bytes .../abc_ab_share_pack_holo_light.9.png | Bin 0 -> 2869 bytes .../abc_ab_solid_dark_holo.9.png | Bin 0 -> 163 bytes .../abc_ab_solid_light_holo.9.png | Bin 0 -> 163 bytes .../abc_ab_stacked_solid_dark_holo.9.png | Bin 0 -> 163 bytes .../abc_ab_stacked_solid_light_holo.9.png | Bin 0 -> 163 bytes ...abc_ab_stacked_transparent_dark_holo.9.png | Bin 0 -> 158 bytes ...bc_ab_stacked_transparent_light_holo.9.png | Bin 0 -> 152 bytes .../abc_ab_transparent_dark_holo.9.png | Bin 0 -> 171 bytes .../abc_ab_transparent_light_holo.9.png | Bin 0 -> 160 bytes .../abc_cab_background_bottom_holo_dark.9.png | Bin 0 -> 166 bytes ...abc_cab_background_bottom_holo_light.9.png | Bin 0 -> 161 bytes .../abc_cab_background_top_holo_dark.9.png | Bin 0 -> 174 bytes .../abc_cab_background_top_holo_light.9.png | Bin 0 -> 161 bytes .../abc_ic_ab_back_holo_dark.png | Bin 0 -> 741 bytes .../abc_ic_ab_back_holo_light.png | Bin 0 -> 661 bytes .../abc_ic_cab_done_holo_dark.png | Bin 0 -> 970 bytes .../abc_ic_cab_done_holo_light.png | Bin 0 -> 915 bytes .../drawable-xhdpi/abc_ic_clear_disabled.png | Bin 0 -> 2531 bytes .../drawable-xhdpi/abc_ic_clear_normal.png | Bin 0 -> 3299 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 1315 bytes .../abc_ic_clear_search_api_holo_light.png | Bin 0 -> 1447 bytes .../abc_ic_commit_search_api_holo_dark.png | Bin 0 -> 703 bytes .../abc_ic_commit_search_api_holo_light.png | Bin 0 -> 712 bytes .../19.1.0/res/drawable-xhdpi/abc_ic_go.png | Bin 0 -> 1983 bytes .../abc_ic_go_search_api_holo_light.png | Bin 0 -> 836 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 0 -> 167 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 184 bytes .../abc_ic_menu_share_holo_dark.png | Bin 0 -> 699 bytes .../abc_ic_menu_share_holo_light.png | Bin 0 -> 935 bytes .../res/drawable-xhdpi/abc_ic_search.png | Bin 0 -> 3784 bytes .../abc_ic_search_api_holo_light.png | Bin 0 -> 3037 bytes .../drawable-xhdpi/abc_ic_voice_search.png | Bin 0 -> 3053 bytes .../abc_ic_voice_search_api_holo_light.png | Bin 0 -> 1414 bytes .../abc_list_divider_holo_dark.9.png | Bin 0 -> 83 bytes .../abc_list_divider_holo_light.9.png | Bin 0 -> 83 bytes .../abc_list_focused_holo.9.png | Bin 0 -> 203 bytes .../abc_list_longpressed_holo.9.png | Bin 0 -> 158 bytes .../abc_list_pressed_holo_dark.9.png | Bin 0 -> 163 bytes .../abc_list_pressed_holo_light.9.png | Bin 0 -> 163 bytes ...abc_list_selector_disabled_holo_dark.9.png | Bin 0 -> 190 bytes ...bc_list_selector_disabled_holo_light.9.png | Bin 0 -> 188 bytes .../abc_menu_dropdown_panel_holo_dark.9.png | Bin 0 -> 1881 bytes .../abc_menu_dropdown_panel_holo_light.9.png | Bin 0 -> 1903 bytes .../abc_menu_hardkey_panel_holo_dark.9.png | Bin 0 -> 1220 bytes .../abc_menu_hardkey_panel_holo_light.9.png | Bin 0 -> 1178 bytes .../abc_spinner_ab_default_holo_dark.9.png | Bin 0 -> 406 bytes .../abc_spinner_ab_default_holo_light.9.png | Bin 0 -> 405 bytes .../abc_spinner_ab_disabled_holo_dark.9.png | Bin 0 -> 393 bytes .../abc_spinner_ab_disabled_holo_light.9.png | Bin 0 -> 393 bytes .../abc_spinner_ab_focused_holo_dark.9.png | Bin 0 -> 659 bytes .../abc_spinner_ab_focused_holo_light.9.png | Bin 0 -> 655 bytes .../abc_spinner_ab_pressed_holo_dark.9.png | Bin 0 -> 582 bytes .../abc_spinner_ab_pressed_holo_light.9.png | Bin 0 -> 583 bytes .../abc_tab_selected_focused_holo.9.png | Bin 0 -> 147 bytes .../abc_tab_selected_holo.9.png | Bin 0 -> 153 bytes .../abc_tab_selected_pressed_holo.9.png | Bin 0 -> 147 bytes .../abc_tab_unselected_pressed_holo.9.png | Bin 0 -> 149 bytes ...c_textfield_search_default_holo_dark.9.png | Bin 0 -> 126 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 126 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 125 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 127 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 128 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 128 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 114 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 126 bytes .../abc_ab_bottom_solid_dark_holo.9.png | Bin 0 -> 330 bytes .../abc_ab_bottom_solid_light_holo.9.png | Bin 0 -> 337 bytes .../abc_ab_bottom_transparent_dark_holo.9.png | Bin 0 -> 332 bytes ...abc_ab_bottom_transparent_light_holo.9.png | Bin 0 -> 322 bytes .../abc_ab_share_pack_holo_dark.9.png | Bin 0 -> 326 bytes .../abc_ab_share_pack_holo_light.9.png | Bin 0 -> 316 bytes .../abc_ab_solid_dark_holo.9.png | Bin 0 -> 345 bytes .../abc_ab_solid_light_holo.9.png | Bin 0 -> 344 bytes .../abc_ab_stacked_solid_dark_holo.9.png | Bin 0 -> 336 bytes .../abc_ab_stacked_solid_light_holo.9.png | Bin 0 -> 341 bytes ...abc_ab_stacked_transparent_dark_holo.9.png | Bin 0 -> 335 bytes ...bc_ab_stacked_transparent_light_holo.9.png | Bin 0 -> 333 bytes .../abc_ab_transparent_dark_holo.9.png | Bin 0 -> 352 bytes .../abc_ab_transparent_light_holo.9.png | Bin 0 -> 329 bytes .../abc_cab_background_bottom_holo_dark.9.png | Bin 0 -> 378 bytes ...abc_cab_background_bottom_holo_light.9.png | Bin 0 -> 374 bytes .../abc_cab_background_top_holo_dark.9.png | Bin 0 -> 334 bytes .../abc_cab_background_top_holo_light.9.png | Bin 0 -> 322 bytes .../abc_ic_ab_back_holo_dark.png | Bin 0 -> 1411 bytes .../abc_ic_ab_back_holo_light.png | Bin 0 -> 1170 bytes .../abc_ic_cab_done_holo_dark.png | Bin 0 -> 2390 bytes .../abc_ic_cab_done_holo_light.png | Bin 0 -> 1952 bytes .../drawable-xxhdpi/abc_ic_clear_disabled.png | Bin 0 -> 5693 bytes .../drawable-xxhdpi/abc_ic_clear_normal.png | Bin 0 -> 5578 bytes ...c_clear_search_api_disabled_holo_light.png | Bin 0 -> 3569 bytes .../abc_ic_clear_search_api_holo_light.png | Bin 0 -> 3948 bytes .../abc_ic_commit_search_api_holo_dark.png | Bin 0 -> 1359 bytes .../abc_ic_commit_search_api_holo_light.png | Bin 0 -> 1390 bytes .../19.1.0/res/drawable-xxhdpi/abc_ic_go.png | Bin 0 -> 3593 bytes .../abc_ic_go_search_api_holo_light.png | Bin 0 -> 1884 bytes ..._ic_menu_moreoverflow_normal_holo_dark.png | Bin 0 -> 637 bytes ...ic_menu_moreoverflow_normal_holo_light.png | Bin 0 -> 623 bytes .../abc_ic_menu_share_holo_dark.png | Bin 0 -> 2810 bytes .../abc_ic_menu_share_holo_light.png | Bin 0 -> 2683 bytes .../res/drawable-xxhdpi/abc_ic_search.png | Bin 0 -> 9655 bytes .../abc_ic_search_api_holo_light.png | Bin 0 -> 5573 bytes .../drawable-xxhdpi/abc_ic_voice_search.png | Bin 0 -> 7179 bytes .../abc_ic_voice_search_api_holo_light.png | Bin 0 -> 3844 bytes .../abc_list_divider_holo_dark.9.png | Bin 0 -> 134 bytes .../abc_list_divider_holo_light.9.png | Bin 0 -> 130 bytes .../abc_list_focused_holo.9.png | Bin 0 -> 227 bytes .../abc_list_longpressed_holo.9.png | Bin 0 -> 169 bytes .../abc_list_pressed_holo_dark.9.png | Bin 0 -> 174 bytes .../abc_list_pressed_holo_light.9.png | Bin 0 -> 174 bytes ...abc_list_selector_disabled_holo_dark.9.png | Bin 0 -> 302 bytes ...bc_list_selector_disabled_holo_light.9.png | Bin 0 -> 301 bytes .../abc_menu_dropdown_panel_holo_dark.9.png | Bin 0 -> 3331 bytes .../abc_menu_dropdown_panel_holo_light.9.png | Bin 0 -> 3386 bytes .../abc_menu_hardkey_panel_holo_dark.9.png | Bin 0 -> 2064 bytes .../abc_menu_hardkey_panel_holo_light.9.png | Bin 0 -> 2007 bytes .../abc_spinner_ab_default_holo_dark.9.png | Bin 0 -> 668 bytes .../abc_spinner_ab_default_holo_light.9.png | Bin 0 -> 668 bytes .../abc_spinner_ab_disabled_holo_dark.9.png | Bin 0 -> 626 bytes .../abc_spinner_ab_disabled_holo_light.9.png | Bin 0 -> 626 bytes .../abc_spinner_ab_focused_holo_dark.9.png | Bin 0 -> 1145 bytes .../abc_spinner_ab_focused_holo_light.9.png | Bin 0 -> 1162 bytes .../abc_spinner_ab_pressed_holo_dark.9.png | Bin 0 -> 1019 bytes .../abc_spinner_ab_pressed_holo_light.9.png | Bin 0 -> 1009 bytes .../abc_tab_selected_focused_holo.9.png | Bin 0 -> 152 bytes .../abc_tab_selected_holo.9.png | Bin 0 -> 157 bytes .../abc_tab_selected_pressed_holo.9.png | Bin 0 -> 152 bytes .../abc_tab_unselected_pressed_holo.9.png | Bin 0 -> 166 bytes ...c_textfield_search_default_holo_dark.9.png | Bin 0 -> 239 bytes ..._textfield_search_default_holo_light.9.png | Bin 0 -> 233 bytes ...field_search_right_default_holo_dark.9.png | Bin 0 -> 215 bytes ...ield_search_right_default_holo_light.9.png | Bin 0 -> 208 bytes ...ield_search_right_selected_holo_dark.9.png | Bin 0 -> 181 bytes ...eld_search_right_selected_holo_light.9.png | Bin 0 -> 181 bytes ..._textfield_search_selected_holo_dark.9.png | Bin 0 -> 190 bytes ...textfield_search_selected_holo_light.9.png | Bin 0 -> 192 bytes .../19.1.0/res/drawable/abc_ic_clear.xml | 23 + .../res/drawable/abc_ic_clear_holo_light.xml | 23 + .../abc_item_background_holo_dark.xml | 27 + .../abc_item_background_holo_light.xml | 27 + ...lector_background_transition_holo_dark.xml | 21 + ...ector_background_transition_holo_light.xml | 21 + .../drawable/abc_list_selector_holo_dark.xml | 28 + .../drawable/abc_list_selector_holo_light.xml | 29 + .../res/drawable/abc_search_dropdown_dark.xml | 23 + .../drawable/abc_search_dropdown_light.xml | 23 + .../res/drawable/abc_spinner_ab_holo_dark.xml | 26 + .../drawable/abc_spinner_ab_holo_light.xml | 26 + .../drawable/abc_tab_indicator_ab_holo.xml | 35 + .../abc_textfield_searchview_holo_dark.xml | 23 + .../abc_textfield_searchview_holo_light.xml | 23 + ...c_textfield_searchview_right_holo_dark.xml | 23 + ..._textfield_searchview_right_holo_light.xml | 23 + .../res/layout-v11/abc_action_bar_decor.xml | 28 + .../res/layout-v11/abc_simple_decor.xml | 32 + .../layout-v14/abc_activity_chooser_view.xml | 29 + .../res/layout/abc_action_bar_decor.xml | 26 + .../layout/abc_action_bar_decor_include.xml | 56 + .../layout/abc_action_bar_decor_overlay.xml | 60 + .../19.1.0/res/layout/abc_action_bar_home.xml | 39 + .../19.1.0/res/layout/abc_action_bar_tab.xml | 23 + .../res/layout/abc_action_bar_tabbar.xml | 23 + .../res/layout/abc_action_bar_title_item.xml | 51 + .../abc_action_bar_view_list_nav_layout.xml | 23 + .../layout/abc_action_menu_item_layout.xml | 31 + .../res/layout/abc_action_menu_layout.xml | 25 + .../19.1.0/res/layout/abc_action_mode_bar.xml | 25 + .../res/layout/abc_action_mode_close_item.xml | 33 + .../res/layout/abc_activity_chooser_view.xml | 29 + .../abc_activity_chooser_view_include.xml | 68 + .../abc_activity_chooser_view_list_item.xml | 52 + .../res/layout/abc_expanded_menu_layout.xml | 22 + .../layout/abc_list_menu_item_checkbox.xml | 27 + .../res/layout/abc_list_menu_item_icon.xml | 29 + .../res/layout/abc_list_menu_item_layout.xml | 59 + .../res/layout/abc_list_menu_item_radio.xml | 25 + .../res/layout/abc_popup_menu_item_layout.xml | 62 + .../abc_search_dropdown_item_icons_2line.xml | 89 ++ .../19.1.0/res/layout/abc_search_view.xml | 159 ++ .../19.1.0/res/layout/abc_simple_decor.xml | 32 + .../support_simple_spinner_dropdown_item.xml | 25 + .../19.1.0/res/values-af/values.xml | 21 + .../19.1.0/res/values-am/values.xml | 21 + .../19.1.0/res/values-ar/values.xml | 21 + .../19.1.0/res/values-bg/values.xml | 21 + .../19.1.0/res/values-ca/values.xml | 21 + .../19.1.0/res/values-cs/values.xml | 21 + .../19.1.0/res/values-da/values.xml | 21 + .../19.1.0/res/values-de/values.xml | 21 + .../19.1.0/res/values-el/values.xml | 21 + .../19.1.0/res/values-en-rGB/values.xml | 21 + .../19.1.0/res/values-en-rIN/values.xml | 21 + .../19.1.0/res/values-es-rUS/values.xml | 21 + .../19.1.0/res/values-es/values.xml | 21 + .../19.1.0/res/values-et-rEE/values.xml | 21 + .../19.1.0/res/values-fa/values.xml | 21 + .../19.1.0/res/values-fi/values.xml | 21 + .../19.1.0/res/values-fr-rCA/values.xml | 21 + .../19.1.0/res/values-fr/values.xml | 21 + .../19.1.0/res/values-hi/values.xml | 21 + .../19.1.0/res/values-hr/values.xml | 21 + .../19.1.0/res/values-hu/values.xml | 21 + .../19.1.0/res/values-hy-rAM/values.xml | 21 + .../19.1.0/res/values-in/values.xml | 21 + .../19.1.0/res/values-it/values.xml | 21 + .../19.1.0/res/values-iw/values.xml | 21 + .../19.1.0/res/values-ja/values.xml | 21 + .../19.1.0/res/values-ka-rGE/values.xml | 21 + .../19.1.0/res/values-km-rKH/values.xml | 21 + .../19.1.0/res/values-ko/values.xml | 21 + .../19.1.0/res/values-land/values.xml | 27 + .../19.1.0/res/values-large-v14/values.xml | 11 + .../19.1.0/res/values-large/values.xml | 38 + .../19.1.0/res/values-lo-rLA/values.xml | 21 + .../19.1.0/res/values-lt/values.xml | 21 + .../19.1.0/res/values-lv/values.xml | 21 + .../19.1.0/res/values-mn-rMN/values.xml | 21 + .../19.1.0/res/values-ms-rMY/values.xml | 21 + .../19.1.0/res/values-nb/values.xml | 21 + .../19.1.0/res/values-nl/values.xml | 21 + .../19.1.0/res/values-pl/values.xml | 21 + .../19.1.0/res/values-pt-rPT/values.xml | 21 + .../19.1.0/res/values-pt/values.xml | 21 + .../19.1.0/res/values-ro/values.xml | 21 + .../19.1.0/res/values-ru/values.xml | 21 + .../19.1.0/res/values-sk/values.xml | 21 + .../19.1.0/res/values-sl/values.xml | 21 + .../19.1.0/res/values-sr/values.xml | 21 + .../19.1.0/res/values-sv/values.xml | 21 + .../19.1.0/res/values-sw/values.xml | 21 + .../19.1.0/res/values-sw600dp/values.xml | 22 + .../19.1.0/res/values-th/values.xml | 21 + .../19.1.0/res/values-tl/values.xml | 21 + .../19.1.0/res/values-tr/values.xml | 21 + .../19.1.0/res/values-uk/values.xml | 21 + .../19.1.0/res/values-v11/values.xml | 77 + .../19.1.0/res/values-v14/values.xml | 246 ++++ .../19.1.0/res/values-vi/values.xml | 21 + .../19.1.0/res/values-w360dp/values.xml | 9 + .../19.1.0/res/values-w480dp/values.xml | 17 + .../19.1.0/res/values-w500dp/values.xml | 9 + .../19.1.0/res/values-w600dp/values.xml | 18 + .../19.1.0/res/values-w720dp/values.xml | 9 + .../19.1.0/res/values-xlarge/values.xml | 27 + .../19.1.0/res/values-zh-rCN/values.xml | 21 + .../19.1.0/res/values-zh-rHK/values.xml | 21 + .../19.1.0/res/values-zh-rTW/values.xml | 21 + .../19.1.0/res/values-zu/values.xml | 21 + .../appcompat-v7/19.1.0/res/values/values.xml | 1308 +++++++++++++++++ .../play-services/4.3.23/AndroidManifest.xml | 9 + .../play-services/4.3.23/R.txt | 176 +++ .../play-services/4.3.23/classes.jar | Bin 0 -> 1881748 bytes .../play-services/4.3.23/proguard.txt | 20 + .../res/color/common_signin_btn_text_dark.xml | 18 + .../color/common_signin_btn_text_light.xml | 18 + ...common_signin_btn_icon_disabled_dark.9.png | Bin 0 -> 1811 bytes ..._signin_btn_icon_disabled_focus_dark.9.png | Bin 0 -> 1846 bytes ...signin_btn_icon_disabled_focus_light.9.png | Bin 0 -> 1846 bytes ...ommon_signin_btn_icon_disabled_light.9.png | Bin 0 -> 1811 bytes .../common_signin_btn_icon_focus_dark.9.png | Bin 0 -> 2100 bytes .../common_signin_btn_icon_focus_light.9.png | Bin 0 -> 2075 bytes .../common_signin_btn_icon_normal_dark.9.png | Bin 0 -> 2050 bytes .../common_signin_btn_icon_normal_light.9.png | Bin 0 -> 2049 bytes .../common_signin_btn_icon_pressed_dark.9.png | Bin 0 -> 2224 bytes ...common_signin_btn_icon_pressed_light.9.png | Bin 0 -> 2331 bytes ...common_signin_btn_text_disabled_dark.9.png | Bin 0 -> 1927 bytes ..._signin_btn_text_disabled_focus_dark.9.png | Bin 0 -> 1957 bytes ...signin_btn_text_disabled_focus_light.9.png | Bin 0 -> 1957 bytes ...ommon_signin_btn_text_disabled_light.9.png | Bin 0 -> 1927 bytes .../common_signin_btn_text_focus_dark.9.png | Bin 0 -> 2206 bytes .../common_signin_btn_text_focus_light.9.png | Bin 0 -> 2182 bytes .../common_signin_btn_text_normal_dark.9.png | Bin 0 -> 2185 bytes .../common_signin_btn_text_normal_light.9.png | Bin 0 -> 2158 bytes .../common_signin_btn_text_pressed_dark.9.png | Bin 0 -> 2374 bytes ...common_signin_btn_text_pressed_light.9.png | Bin 0 -> 2483 bytes .../ic_plusone_medium_off_client.png | Bin 0 -> 1187 bytes .../ic_plusone_small_off_client.png | Bin 0 -> 841 bytes .../ic_plusone_standard_off_client.png | Bin 0 -> 1498 bytes .../ic_plusone_tall_off_client.png | Bin 0 -> 1140 bytes ...common_signin_btn_icon_disabled_dark.9.png | Bin 0 -> 1202 bytes ..._signin_btn_icon_disabled_focus_dark.9.png | Bin 0 -> 1236 bytes ...signin_btn_icon_disabled_focus_light.9.png | Bin 0 -> 1236 bytes ...ommon_signin_btn_icon_disabled_light.9.png | Bin 0 -> 1202 bytes .../common_signin_btn_icon_focus_dark.9.png | Bin 0 -> 1389 bytes .../common_signin_btn_icon_focus_light.9.png | Bin 0 -> 1362 bytes .../common_signin_btn_icon_normal_dark.9.png | Bin 0 -> 1369 bytes .../common_signin_btn_icon_normal_light.9.png | Bin 0 -> 1345 bytes .../common_signin_btn_icon_pressed_dark.9.png | Bin 0 -> 1465 bytes ...common_signin_btn_icon_pressed_light.9.png | Bin 0 -> 1521 bytes ...common_signin_btn_text_disabled_dark.9.png | Bin 0 -> 1309 bytes ..._signin_btn_text_disabled_focus_dark.9.png | Bin 0 -> 1316 bytes ...signin_btn_text_disabled_focus_light.9.png | Bin 0 -> 1316 bytes ...ommon_signin_btn_text_disabled_light.9.png | Bin 0 -> 1309 bytes .../common_signin_btn_text_focus_dark.9.png | Bin 0 -> 1461 bytes .../common_signin_btn_text_focus_light.9.png | Bin 0 -> 1463 bytes .../common_signin_btn_text_normal_dark.9.png | Bin 0 -> 1463 bytes .../common_signin_btn_text_normal_light.9.png | Bin 0 -> 1455 bytes .../common_signin_btn_text_pressed_dark.9.png | Bin 0 -> 1556 bytes ...common_signin_btn_text_pressed_light.9.png | Bin 0 -> 1623 bytes .../ic_plusone_medium_off_client.png | Bin 0 -> 751 bytes .../ic_plusone_small_off_client.png | Bin 0 -> 581 bytes .../ic_plusone_standard_off_client.png | Bin 0 -> 996 bytes .../ic_plusone_tall_off_client.png | Bin 0 -> 789 bytes ...common_signin_btn_icon_disabled_dark.9.png | Bin 0 -> 2438 bytes ..._signin_btn_icon_disabled_focus_dark.9.png | Bin 0 -> 2457 bytes ...signin_btn_icon_disabled_focus_light.9.png | Bin 0 -> 2457 bytes ...ommon_signin_btn_icon_disabled_light.9.png | Bin 0 -> 2438 bytes .../common_signin_btn_icon_focus_dark.9.png | Bin 0 -> 2886 bytes .../common_signin_btn_icon_focus_light.9.png | Bin 0 -> 2908 bytes .../common_signin_btn_icon_normal_dark.9.png | Bin 0 -> 2847 bytes .../common_signin_btn_icon_normal_light.9.png | Bin 0 -> 2888 bytes .../common_signin_btn_icon_pressed_dark.9.png | Bin 0 -> 3133 bytes ...common_signin_btn_icon_pressed_light.9.png | Bin 0 -> 3301 bytes ...common_signin_btn_text_disabled_dark.9.png | Bin 0 -> 2569 bytes ..._signin_btn_text_disabled_focus_dark.9.png | Bin 0 -> 2571 bytes ...signin_btn_text_disabled_focus_light.9.png | Bin 0 -> 2571 bytes ...ommon_signin_btn_text_disabled_light.9.png | Bin 0 -> 2569 bytes .../common_signin_btn_text_focus_dark.9.png | Bin 0 -> 2939 bytes .../common_signin_btn_text_focus_light.9.png | Bin 0 -> 2947 bytes .../common_signin_btn_text_normal_dark.9.png | Bin 0 -> 2931 bytes .../common_signin_btn_text_normal_light.9.png | Bin 0 -> 2944 bytes .../common_signin_btn_text_pressed_dark.9.png | Bin 0 -> 3255 bytes ...common_signin_btn_text_pressed_light.9.png | Bin 0 -> 3384 bytes .../ic_plusone_medium_off_client.png | Bin 0 -> 1598 bytes .../ic_plusone_small_off_client.png | Bin 0 -> 1205 bytes .../ic_plusone_standard_off_client.png | Bin 0 -> 2074 bytes .../ic_plusone_tall_off_client.png | Bin 0 -> 1741 bytes ...common_signin_btn_icon_disabled_dark.9.png | Bin 0 -> 4988 bytes ..._signin_btn_icon_disabled_focus_dark.9.png | Bin 0 -> 5092 bytes ...signin_btn_icon_disabled_focus_light.9.png | Bin 0 -> 5092 bytes ...ommon_signin_btn_icon_disabled_light.9.png | Bin 0 -> 4988 bytes .../common_signin_btn_icon_focus_dark.9.png | Bin 0 -> 6558 bytes .../common_signin_btn_icon_focus_light.9.png | Bin 0 -> 6216 bytes .../common_signin_btn_icon_normal_dark.9.png | Bin 0 -> 6530 bytes .../common_signin_btn_icon_normal_light.9.png | Bin 0 -> 6234 bytes .../common_signin_btn_icon_pressed_dark.9.png | Bin 0 -> 7015 bytes ...common_signin_btn_icon_pressed_light.9.png | Bin 0 -> 7352 bytes ...common_signin_btn_text_disabled_dark.9.png | Bin 0 -> 5637 bytes ..._signin_btn_text_disabled_focus_dark.9.png | Bin 0 -> 5572 bytes ...signin_btn_text_disabled_focus_light.9.png | Bin 0 -> 5572 bytes ...ommon_signin_btn_text_disabled_light.9.png | Bin 0 -> 5637 bytes .../common_signin_btn_text_focus_dark.9.png | Bin 0 -> 6958 bytes .../common_signin_btn_text_focus_light.9.png | Bin 0 -> 6647 bytes .../common_signin_btn_text_normal_dark.9.png | Bin 0 -> 6975 bytes .../common_signin_btn_text_normal_light.9.png | Bin 0 -> 6713 bytes .../common_signin_btn_text_pressed_dark.9.png | Bin 0 -> 7569 bytes ...common_signin_btn_text_pressed_light.9.png | Bin 0 -> 7944 bytes .../ic_plusone_medium_off_client.png | Bin 0 -> 5828 bytes .../ic_plusone_small_off_client.png | Bin 0 -> 4279 bytes .../ic_plusone_standard_off_client.png | Bin 0 -> 7439 bytes .../ic_plusone_tall_off_client.png | Bin 0 -> 6204 bytes .../drawable/common_signin_btn_icon_dark.xml | 18 + .../drawable/common_signin_btn_icon_light.xml | 18 + .../drawable/common_signin_btn_text_dark.xml | 18 + .../drawable/common_signin_btn_text_light.xml | 18 + .../4.3.23/res/values-af/strings.xml | 31 + .../4.3.23/res/values-am/strings.xml | 31 + .../4.3.23/res/values-ar/strings.xml | 31 + .../4.3.23/res/values-be/strings.xml | 36 + .../4.3.23/res/values-bg/strings.xml | 31 + .../4.3.23/res/values-ca/strings.xml | 31 + .../4.3.23/res/values-cs/strings.xml | 31 + .../4.3.23/res/values-da/strings.xml | 31 + .../4.3.23/res/values-de/strings.xml | 31 + .../4.3.23/res/values-el/strings.xml | 31 + .../4.3.23/res/values-en-rGB/strings.xml | 31 + .../4.3.23/res/values-en-rIN/strings.xml | 31 + .../4.3.23/res/values-es-rUS/strings.xml | 31 + .../4.3.23/res/values-es/strings.xml | 31 + .../4.3.23/res/values-et-rEE/strings.xml | 31 + .../4.3.23/res/values-fa/strings.xml | 31 + .../4.3.23/res/values-fi/strings.xml | 31 + .../4.3.23/res/values-fr-rCA/strings.xml | 31 + .../4.3.23/res/values-fr/strings.xml | 31 + .../4.3.23/res/values-hi/strings.xml | 31 + .../4.3.23/res/values-hr/strings.xml | 31 + .../4.3.23/res/values-hu/strings.xml | 31 + .../4.3.23/res/values-hy-rAM/strings.xml | 31 + .../4.3.23/res/values-in/strings.xml | 31 + .../4.3.23/res/values-it/strings.xml | 31 + .../4.3.23/res/values-iw/strings.xml | 31 + .../4.3.23/res/values-ja/strings.xml | 31 + .../4.3.23/res/values-ka-rGE/strings.xml | 31 + .../4.3.23/res/values-km-rKH/strings.xml | 31 + .../4.3.23/res/values-ko/strings.xml | 31 + .../4.3.23/res/values-lo-rLA/strings.xml | 31 + .../4.3.23/res/values-lt/strings.xml | 31 + .../4.3.23/res/values-lv/strings.xml | 31 + .../4.3.23/res/values-mn-rMN/strings.xml | 31 + .../4.3.23/res/values-ms-rMY/strings.xml | 31 + .../4.3.23/res/values-nb/strings.xml | 31 + .../4.3.23/res/values-nl/strings.xml | 31 + .../4.3.23/res/values-pl/strings.xml | 31 + .../4.3.23/res/values-pt-rBR/strings.xml | 31 + .../4.3.23/res/values-pt-rPT/strings.xml | 31 + .../4.3.23/res/values-pt/strings.xml | 31 + .../4.3.23/res/values-ro/strings.xml | 31 + .../4.3.23/res/values-ru/strings.xml | 31 + .../4.3.23/res/values-sk/strings.xml | 31 + .../4.3.23/res/values-sl/strings.xml | 31 + .../4.3.23/res/values-sr/strings.xml | 31 + .../4.3.23/res/values-sv/strings.xml | 31 + .../4.3.23/res/values-sw/strings.xml | 31 + .../4.3.23/res/values-th/strings.xml | 31 + .../4.3.23/res/values-tl/strings.xml | 31 + .../4.3.23/res/values-tr/strings.xml | 31 + .../4.3.23/res/values-uk/strings.xml | 31 + .../4.3.23/res/values-vi/strings.xml | 31 + .../4.3.23/res/values-zh-rCN/strings.xml | 31 + .../4.3.23/res/values-zh-rHK/strings.xml | 31 + .../4.3.23/res/values-zh-rTW/strings.xml | 31 + .../4.3.23/res/values-zu/strings.xml | 31 + .../4.3.23/res/values/ads_attrs.xml | 22 + .../4.3.23/res/values/colors.xml | 14 + .../4.3.23/res/values/maps_attrs.xml | 26 + .../4.3.23/res/values/strings.xml | 111 ++ .../4.3.23/res/values/version.xml | 4 + .../build/intermediates/model_data.bin | Bin 0 -> 115337 bytes phoneClients/android-wp/gpstracker3.2.1.png | Bin 0 -> 107346 bytes phoneClients/android-wp/gradle.properties | 18 + .../gradle/wrapper/gradle-wrapper.properties | 6 + phoneClients/android-wp/gradlew | 164 +++ phoneClients/android-wp/gradlew.bat | 90 ++ phoneClients/android-wp/settings.gradle | 1 + phoneClients/android/.idea/workspace.xml | 116 +- .../build/intermediates/model_data.bin | Bin 82635 -> 83135 bytes 627 files changed, 9317 insertions(+), 77 deletions(-) create mode 100644 phoneClients/README.md create mode 100644 phoneClients/android-wp/.gitignore create mode 100644 phoneClients/android-wp/.idea/.name create mode 100644 phoneClients/android-wp/.idea/compiler.xml create mode 100644 phoneClients/android-wp/.idea/copyright/profiles_settings.xml create mode 100644 phoneClients/android-wp/.idea/encodings.xml create mode 100644 phoneClients/android-wp/.idea/gradle.xml create mode 100644 phoneClients/android-wp/.idea/libraries/android_async_http_1_4_9.xml create mode 100644 phoneClients/android-wp/.idea/libraries/appcompat_v7_21_0_3.xml create mode 100644 phoneClients/android-wp/.idea/libraries/httpclient_4_3_6.xml create mode 100644 phoneClients/android-wp/.idea/libraries/play_services_6_5_87.xml create mode 100644 phoneClients/android-wp/.idea/libraries/support_annotations_21_0_3.xml create mode 100644 phoneClients/android-wp/.idea/libraries/support_v4_21_0_3.xml create mode 100644 phoneClients/android-wp/.idea/misc.xml create mode 100644 phoneClients/android-wp/.idea/modules.xml create mode 100644 phoneClients/android-wp/.idea/scopes/scope_settings.xml create mode 100644 phoneClients/android-wp/.idea/vcs.xml create mode 100644 phoneClients/android-wp/GpsTracker.iml create mode 100644 phoneClients/android-wp/GpsTracker/GpsTracker.iml create mode 100644 phoneClients/android-wp/GpsTrackerProject.iml create mode 100644 phoneClients/android-wp/README.md create mode 100644 phoneClients/android-wp/android-wp.iml create mode 100644 phoneClients/android-wp/android.iml create mode 100644 phoneClients/android-wp/app/.gitignore create mode 100644 phoneClients/android-wp/app/app.iml create mode 100644 phoneClients/android-wp/app/build.gradle create mode 100644 phoneClients/android-wp/app/proguard-rules.txt create mode 100644 phoneClients/android-wp/app/src/main/AndroidManifest.xml create mode 100644 phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerActivity.java create mode 100644 phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerAlarmReceiver.java create mode 100644 phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerBootReceiver.java create mode 100644 phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LocationService.java create mode 100644 phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LoopjHttpClient.java create mode 100755 phoneClients/android-wp/app/src/main/res/drawable-hdpi/ic_launcher.png create mode 100755 phoneClients/android-wp/app/src/main/res/drawable-mdpi/ic_launcher.png create mode 100755 phoneClients/android-wp/app/src/main/res/drawable-xhdpi/ic_launcher.png create mode 100755 phoneClients/android-wp/app/src/main/res/drawable-xxhdpi/ic_launcher.png create mode 100755 phoneClients/android-wp/app/src/main/res/drawable-xxxhdpi/ic_launcher.png create mode 100644 phoneClients/android-wp/app/src/main/res/drawable/green_tracking_button.xml create mode 100644 phoneClients/android-wp/app/src/main/res/drawable/red_tracking_button.xml create mode 100644 phoneClients/android-wp/app/src/main/res/layout/activity_gpstracker.xml create mode 100644 phoneClients/android-wp/app/src/main/res/values-w820dp/dimens.xml create mode 100644 phoneClients/android-wp/app/src/main/res/values/dimens.xml create mode 100644 phoneClients/android-wp/app/src/main/res/values/strings.xml create mode 100644 phoneClients/android-wp/app/src/main/res/values/styles.xml create mode 100644 phoneClients/android-wp/build.gradle create mode 100644 phoneClients/android-wp/build/intermediates/dex-cache/cache.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/AndroidManifest.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/R.txt create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/classes.jar create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/anim/abc_fade_in.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/anim/abc_fade_out.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/anim/abc_slide_in_bottom.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/anim/abc_slide_in_top.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/anim/abc_slide_out_bottom.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/anim/abc_slide_out_top.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/color/abc_search_url_text_holo.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_bottom_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_bottom_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_bottom_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_bottom_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_share_pack_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_share_pack_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_stacked_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_stacked_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_stacked_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_stacked_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ab_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_cab_background_bottom_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_cab_background_bottom_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_cab_background_top_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_cab_background_top_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_ab_back_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_ab_back_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_cab_done_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_cab_done_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_clear_disabled.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_clear_normal.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_clear_search_api_disabled_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_clear_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_commit_search_api_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_commit_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_go.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_go_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_menu_moreoverflow_normal_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_menu_share_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_menu_share_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_voice_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_ic_voice_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_divider_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_divider_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_longpressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_selector_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_list_selector_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_menu_dropdown_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_menu_dropdown_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_menu_hardkey_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_menu_hardkey_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_focused_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_focused_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_spinner_ab_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_tab_selected_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_tab_selected_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_tab_selected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_tab_unselected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_right_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_right_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_right_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_right_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-hdpi/abc_textfield_search_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_bottom_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_bottom_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_bottom_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_bottom_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_share_pack_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_share_pack_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_stacked_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_stacked_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_stacked_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_stacked_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ab_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_cab_background_bottom_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_cab_background_bottom_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_cab_background_top_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_cab_background_top_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_ab_back_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_ab_back_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_cab_done_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_cab_done_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_clear_disabled.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_clear_normal.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_clear_search_api_disabled_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_clear_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_commit_search_api_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_commit_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_go.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_go_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_menu_moreoverflow_normal_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_menu_share_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_menu_share_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_voice_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_ic_voice_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_divider_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_divider_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_longpressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_selector_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_list_selector_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_menu_dropdown_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_menu_dropdown_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_menu_hardkey_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_menu_hardkey_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_focused_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_focused_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_spinner_ab_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_tab_selected_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_tab_selected_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_tab_selected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_tab_unselected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_right_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_right_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_right_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_right_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-mdpi/abc_textfield_search_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_bottom_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_bottom_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_bottom_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_bottom_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_share_pack_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_share_pack_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_stacked_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_stacked_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_stacked_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_stacked_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ab_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_cab_background_bottom_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_cab_background_bottom_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_cab_background_top_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_cab_background_top_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_ab_back_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_ab_back_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_cab_done_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_cab_done_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_clear_disabled.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_clear_normal.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_clear_search_api_disabled_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_clear_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_commit_search_api_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_commit_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_go.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_go_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_menu_share_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_menu_share_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_voice_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_ic_voice_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_divider_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_divider_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_longpressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_selector_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_list_selector_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_menu_dropdown_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_menu_hardkey_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_focused_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_focused_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_spinner_ab_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_tab_selected_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_tab_selected_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_tab_selected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_tab_unselected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_right_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_right_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_right_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xhdpi/abc_textfield_search_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_bottom_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_bottom_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_bottom_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_bottom_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_share_pack_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_share_pack_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_stacked_solid_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_stacked_solid_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_stacked_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_stacked_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_transparent_dark_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ab_transparent_light_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_cab_background_bottom_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_cab_background_bottom_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_cab_background_top_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_cab_background_top_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_ab_back_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_ab_back_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_cab_done_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_cab_done_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_clear_disabled.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_clear_normal.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_clear_search_api_disabled_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_clear_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_commit_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_go.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_go_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_menu_moreoverflow_normal_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_menu_share_holo_dark.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_menu_share_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_voice_search.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_ic_voice_search_api_holo_light.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_divider_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_divider_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_longpressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_selector_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_list_selector_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_menu_dropdown_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_menu_hardkey_panel_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_disabled_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_focused_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_spinner_ab_pressed_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_tab_selected_focused_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_tab_selected_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_tab_selected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_tab_unselected_pressed_holo.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_right_default_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_right_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_selected_holo_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable-xxhdpi/abc_textfield_search_selected_holo_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_ic_clear.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_ic_clear_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_item_background_holo_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_item_background_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_list_selector_background_transition_holo_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_list_selector_background_transition_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_list_selector_holo_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_list_selector_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_search_dropdown_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_search_dropdown_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_spinner_ab_holo_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_spinner_ab_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_tab_indicator_ab_holo.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_textfield_searchview_holo_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_textfield_searchview_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_textfield_searchview_right_holo_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/drawable/abc_textfield_searchview_right_holo_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout-v11/abc_action_bar_decor.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout-v11/abc_simple_decor.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout-v14/abc_activity_chooser_view.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_decor.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_decor_include.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_decor_overlay.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_home.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_tab.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_tabbar.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_title_item.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_bar_view_list_nav_layout.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_menu_item_layout.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_menu_layout.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_mode_bar.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_action_mode_close_item.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_activity_chooser_view.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_activity_chooser_view_include.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_activity_chooser_view_list_item.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_expanded_menu_layout.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_list_menu_item_checkbox.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_list_menu_item_icon.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_list_menu_item_layout.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_list_menu_item_radio.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_popup_menu_item_layout.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_search_dropdown_item_icons_2line.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_search_view.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/abc_simple_decor.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/layout/support_simple_spinner_dropdown_item.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-af/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-am/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ar/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-bg/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ca/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-cs/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-da/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-de/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-el/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-en-rGB/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-en-rIN/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-es-rUS/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-es/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-et-rEE/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-fa/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-fi/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-fr-rCA/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-fr/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-hi/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-hr/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-hu/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-hy-rAM/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-in/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-it/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-iw/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ja/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ka-rGE/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-km-rKH/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ko/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-land/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-large-v14/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-large/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-lo-rLA/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-lt/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-lv/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-mn-rMN/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ms-rMY/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-nb/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-nl/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-pl/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-pt-rPT/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-pt/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ro/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-ru/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-sk/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-sl/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-sr/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-sv/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-sw/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-sw600dp/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-th/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-tl/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-tr/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-uk/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-v11/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-v14/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-vi/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-w360dp/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-w480dp/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-w500dp/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-w600dp/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-w720dp/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-xlarge/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-zh-rCN/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-zh-rHK/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-zh-rTW/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values-zu/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.android.support/appcompat-v7/19.1.0/res/values/values.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/AndroidManifest.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/R.txt create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/classes.jar create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/proguard.txt create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/color/common_signin_btn_text_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/color/common_signin_btn_text_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_icon_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/common_signin_btn_text_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/ic_plusone_medium_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/ic_plusone_small_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/ic_plusone_standard_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-hdpi/ic_plusone_tall_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_icon_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/common_signin_btn_text_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/ic_plusone_medium_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/ic_plusone_small_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/ic_plusone_standard_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-mdpi/ic_plusone_tall_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_icon_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/common_signin_btn_text_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/ic_plusone_medium_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/ic_plusone_small_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/ic_plusone_standard_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xhdpi/ic_plusone_tall_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_icon_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_disabled_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_disabled_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_disabled_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_disabled_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_focus_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_focus_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_normal_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_normal_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_pressed_dark.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/common_signin_btn_text_pressed_light.9.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/ic_plusone_medium_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/ic_plusone_small_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/ic_plusone_standard_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable-xxhdpi/ic_plusone_tall_off_client.png create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable/common_signin_btn_icon_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable/common_signin_btn_icon_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable/common_signin_btn_text_dark.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/drawable/common_signin_btn_text_light.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-af/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-am/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ar/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-be/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-bg/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ca/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-cs/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-da/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-de/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-el/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-en-rGB/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-en-rIN/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-es-rUS/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-es/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-et-rEE/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-fa/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-fi/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-fr-rCA/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-fr/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-hi/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-hr/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-hu/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-hy-rAM/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-in/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-it/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-iw/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ja/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ka-rGE/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-km-rKH/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ko/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-lo-rLA/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-lt/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-lv/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-mn-rMN/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ms-rMY/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-nb/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-nl/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-pl/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-pt-rBR/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-pt-rPT/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-pt/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ro/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-ru/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-sk/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-sl/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-sr/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-sv/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-sw/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-th/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-tl/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-tr/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-uk/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-vi/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-zh-rCN/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-zh-rHK/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-zh-rTW/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values-zu/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values/ads_attrs.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values/colors.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values/maps_attrs.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values/strings.xml create mode 100644 phoneClients/android-wp/build/intermediates/exploded-aar/com.google.android.gms/play-services/4.3.23/res/values/version.xml create mode 100644 phoneClients/android-wp/build/intermediates/model_data.bin create mode 100644 phoneClients/android-wp/gpstracker3.2.1.png create mode 100644 phoneClients/android-wp/gradle.properties create mode 100644 phoneClients/android-wp/gradle/wrapper/gradle-wrapper.properties create mode 100644 phoneClients/android-wp/gradlew create mode 100644 phoneClients/android-wp/gradlew.bat create mode 100644 phoneClients/android-wp/settings.gradle diff --git a/phoneClients/README.md b/phoneClients/README.md new file mode 100644 index 00000000..e703c24e --- /dev/null +++ b/phoneClients/README.md @@ -0,0 +1,7 @@ +Just a note about the 2 android clients (android and android-wp). The android-wp client is for the wordpress plugin and the android client is for the php website. They will not work if they are swapped. I may decide to create one client for both later but don't feel like doing it right now. + +The difference between the two is that the wordpress client gets a "nonce" from the wordpress plugin: + +https://codex.wordpress.org/WordPress_Nonces + +This is used for added security so that apps that have not been properly verified will not be able to send updates to the plugin. A nice safety feature. \ No newline at end of file diff --git a/phoneClients/android-wp/.gitignore b/phoneClients/android-wp/.gitignore new file mode 100644 index 00000000..d6bfc95b --- /dev/null +++ b/phoneClients/android-wp/.gitignore @@ -0,0 +1,4 @@ +.gradle +/local.properties +/.idea/workspace.xml +.DS_Store diff --git a/phoneClients/android-wp/.idea/.name b/phoneClients/android-wp/.idea/.name new file mode 100644 index 00000000..1fd74d19 --- /dev/null +++ b/phoneClients/android-wp/.idea/.name @@ -0,0 +1 @@ +android \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/compiler.xml b/phoneClients/android-wp/.idea/compiler.xml new file mode 100644 index 00000000..217af471 --- /dev/null +++ b/phoneClients/android-wp/.idea/compiler.xml @@ -0,0 +1,23 @@ + + + + + + diff --git a/phoneClients/android-wp/.idea/copyright/profiles_settings.xml b/phoneClients/android-wp/.idea/copyright/profiles_settings.xml new file mode 100644 index 00000000..e7bedf33 --- /dev/null +++ b/phoneClients/android-wp/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/encodings.xml b/phoneClients/android-wp/.idea/encodings.xml new file mode 100644 index 00000000..e206d70d --- /dev/null +++ b/phoneClients/android-wp/.idea/encodings.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/phoneClients/android-wp/.idea/gradle.xml b/phoneClients/android-wp/.idea/gradle.xml new file mode 100644 index 00000000..736c7b5c --- /dev/null +++ b/phoneClients/android-wp/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/phoneClients/android-wp/.idea/libraries/android_async_http_1_4_9.xml b/phoneClients/android-wp/.idea/libraries/android_async_http_1_4_9.xml new file mode 100644 index 00000000..ccea99d5 --- /dev/null +++ b/phoneClients/android-wp/.idea/libraries/android_async_http_1_4_9.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/libraries/appcompat_v7_21_0_3.xml b/phoneClients/android-wp/.idea/libraries/appcompat_v7_21_0_3.xml new file mode 100644 index 00000000..751a9d92 --- /dev/null +++ b/phoneClients/android-wp/.idea/libraries/appcompat_v7_21_0_3.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/libraries/httpclient_4_3_6.xml b/phoneClients/android-wp/.idea/libraries/httpclient_4_3_6.xml new file mode 100644 index 00000000..a479d143 --- /dev/null +++ b/phoneClients/android-wp/.idea/libraries/httpclient_4_3_6.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/libraries/play_services_6_5_87.xml b/phoneClients/android-wp/.idea/libraries/play_services_6_5_87.xml new file mode 100644 index 00000000..aa875560 --- /dev/null +++ b/phoneClients/android-wp/.idea/libraries/play_services_6_5_87.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/libraries/support_annotations_21_0_3.xml b/phoneClients/android-wp/.idea/libraries/support_annotations_21_0_3.xml new file mode 100644 index 00000000..6fbaa909 --- /dev/null +++ b/phoneClients/android-wp/.idea/libraries/support_annotations_21_0_3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/libraries/support_v4_21_0_3.xml b/phoneClients/android-wp/.idea/libraries/support_v4_21_0_3.xml new file mode 100644 index 00000000..1948aeea --- /dev/null +++ b/phoneClients/android-wp/.idea/libraries/support_v4_21_0_3.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/misc.xml b/phoneClients/android-wp/.idea/misc.xml new file mode 100644 index 00000000..8fef058f --- /dev/null +++ b/phoneClients/android-wp/.idea/misc.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + localhost + 5050 + + + + diff --git a/phoneClients/android-wp/.idea/modules.xml b/phoneClients/android-wp/.idea/modules.xml new file mode 100644 index 00000000..28638108 --- /dev/null +++ b/phoneClients/android-wp/.idea/modules.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/phoneClients/android-wp/.idea/scopes/scope_settings.xml b/phoneClients/android-wp/.idea/scopes/scope_settings.xml new file mode 100644 index 00000000..922003b8 --- /dev/null +++ b/phoneClients/android-wp/.idea/scopes/scope_settings.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/.idea/vcs.xml b/phoneClients/android-wp/.idea/vcs.xml new file mode 100644 index 00000000..a5dd0864 --- /dev/null +++ b/phoneClients/android-wp/.idea/vcs.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/phoneClients/android-wp/GpsTracker.iml b/phoneClients/android-wp/GpsTracker.iml new file mode 100644 index 00000000..8c0cc179 --- /dev/null +++ b/phoneClients/android-wp/GpsTracker.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/phoneClients/android-wp/GpsTracker/GpsTracker.iml b/phoneClients/android-wp/GpsTracker/GpsTracker.iml new file mode 100644 index 00000000..9d3a5058 --- /dev/null +++ b/phoneClients/android-wp/GpsTracker/GpsTracker.iml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/phoneClients/android-wp/GpsTrackerProject.iml b/phoneClients/android-wp/GpsTrackerProject.iml new file mode 100644 index 00000000..9d3a5058 --- /dev/null +++ b/phoneClients/android-wp/GpsTrackerProject.iml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/phoneClients/android-wp/README.md b/phoneClients/android-wp/README.md new file mode 100644 index 00000000..fda350c7 --- /dev/null +++ b/phoneClients/android-wp/README.md @@ -0,0 +1 @@ +This project was built with *android studio* and is close to the original version but uses GET instead of POST to update the wordpress plugin. diff --git a/phoneClients/android-wp/android-wp.iml b/phoneClients/android-wp/android-wp.iml new file mode 100644 index 00000000..0bb6048a --- /dev/null +++ b/phoneClients/android-wp/android-wp.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + diff --git a/phoneClients/android-wp/android.iml b/phoneClients/android-wp/android.iml new file mode 100644 index 00000000..edb62a65 --- /dev/null +++ b/phoneClients/android-wp/android.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/phoneClients/android-wp/app/.gitignore b/phoneClients/android-wp/app/.gitignore new file mode 100644 index 00000000..3a36c6e7 --- /dev/null +++ b/phoneClients/android-wp/app/.gitignore @@ -0,0 +1,26 @@ +# Built application files +*.apk +*.ap_ + +# Files for the Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +#Log Files +*.log diff --git a/phoneClients/android-wp/app/app.iml b/phoneClients/android-wp/app/app.iml new file mode 100644 index 00000000..a2ed29e3 --- /dev/null +++ b/phoneClients/android-wp/app/app.iml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/phoneClients/android-wp/app/build.gradle b/phoneClients/android-wp/app/build.gradle new file mode 100644 index 00000000..0e2f230f --- /dev/null +++ b/phoneClients/android-wp/app/build.gradle @@ -0,0 +1,28 @@ +apply plugin: 'android' + +android { + compileSdkVersion 21 + buildToolsVersion "21.1.2" + + defaultConfig { + applicationId "com.websmithing.wp.gpstracker" + minSdkVersion 10 + targetSdkVersion 21 + versionCode 4 + versionName "1.0.3" + } + buildTypes { + release { + debuggable false + runProguard false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:21.0.3' + compile 'com.google.android.gms:play-services:6.5.87' + compile 'com.loopj.android:android-async-http:1.4.9' +} diff --git a/phoneClients/android-wp/app/proguard-rules.txt b/phoneClients/android-wp/app/proguard-rules.txt new file mode 100644 index 00000000..cb8998dd --- /dev/null +++ b/phoneClients/android-wp/app/proguard-rules.txt @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /Applications/Android Studio.app/sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} \ No newline at end of file diff --git a/phoneClients/android-wp/app/src/main/AndroidManifest.xml b/phoneClients/android-wp/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..69b917d2 --- /dev/null +++ b/phoneClients/android-wp/app/src/main/AndroidManifest.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerActivity.java b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerActivity.java new file mode 100644 index 00000000..c977abd6 --- /dev/null +++ b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerActivity.java @@ -0,0 +1,324 @@ +package com.websmithing.wp.gpstracker; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.graphics.Color; +import android.os.Bundle; +import android.os.SystemClock; +import android.support.v7.app.ActionBarActivity; +import android.util.Log; +import android.view.View; +import android.view.inputmethod.EditorInfo; +import android.widget.Button; +import android.widget.EditText; +import android.widget.RadioGroup; +import android.widget.Toast; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GooglePlayServicesUtil; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import java.util.UUID; +import java.util.Date; + +public class GpsTrackerActivity extends ActionBarActivity { + private static final String TAG = "GpsTrackerActivity"; + + // use the websmithing defaultUploadWebsite for testing and then check your + // location with your browser here: https://www.websmithing.com/gpstracker/displaymap.php + private String defaultUploadWebsite; + + private static EditText txtUserName; + private static EditText txtWebsite; + private static Button trackingButton; + + private boolean currentlyTracking; + private RadioGroup intervalRadioGroup; + private int intervalInMinutes = 1; + private AlarmManager alarmManager; + private Intent gpsTrackerIntent; + private PendingIntent pendingIntent; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_gpstracker); + + defaultUploadWebsite = getString(R.string.default_upload_website); + + txtWebsite = (EditText)findViewById(R.id.txtWebsite); + txtUserName = (EditText)findViewById(R.id.txtUserName); + intervalRadioGroup = (RadioGroup)findViewById(R.id.intervalRadioGroup); + trackingButton = (Button)findViewById(R.id.trackingButton); + txtUserName.setImeOptions(EditorInfo.IME_ACTION_DONE); + + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + currentlyTracking = sharedPreferences.getBoolean("currentlyTracking", false); + + boolean firstTimeLoadindApp = sharedPreferences.getBoolean("firstTimeLoadindApp", true); + if (firstTimeLoadindApp) { + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean("firstTimeLoadindApp", false); + editor.putString("appID", UUID.randomUUID().toString()); + editor.apply(); + } + + intervalRadioGroup.setOnCheckedChangeListener( + new RadioGroup.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(RadioGroup radioGroup, int i) { + saveInterval(); + } + }); + + trackingButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View view) { + trackLocation(view); + } + }); + } + + private void saveInterval() { + if (currentlyTracking) { + Toast.makeText(getApplicationContext(), R.string.user_needs_to_restart_tracking, Toast.LENGTH_LONG).show(); + } + + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + + switch (intervalRadioGroup.getCheckedRadioButtonId()) { + case R.id.i1: + editor.putInt("intervalInMinutes", 1); + break; + case R.id.i5: + editor.putInt("intervalInMinutes", 5); + break; + case R.id.i15: + editor.putInt("intervalInMinutes", 15); + break; + } + + editor.commit(); + } + + private void startAlarmManager() { + Log.d(TAG, "startAlarmManager"); + + Context context = getBaseContext(); + alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); + gpsTrackerIntent = new Intent(context, GpsTrackerAlarmReceiver.class); + pendingIntent = PendingIntent.getBroadcast(context, 0, gpsTrackerIntent, 0); + + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + intervalInMinutes = sharedPreferences.getInt("intervalInMinutes", 1); + + alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, + SystemClock.elapsedRealtime(), + intervalInMinutes * 60000, // 60000 = 1 minute + pendingIntent); + } + + private void cancelAlarmManager() { + Log.d(TAG, "cancelAlarmManager"); + + Context context = getBaseContext(); + Intent gpsTrackerIntent = new Intent(context, GpsTrackerAlarmReceiver.class); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, gpsTrackerIntent, 0); + AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); + alarmManager.cancel(pendingIntent); + } + + // called when trackingButton is tapped + protected void trackLocation(View v) { + if (!saveUserSettings()) { + return; + } + + if (!checkIfGooglePlayEnabled()) { + return; + } + + if (currentlyTracking) { + stopTracking(); + } else { + startTracking(); + } + + setTrackingButtonState(); + } + + private void startTracking() { + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + String sessionID = UUID.randomUUID().toString(); + editor.putString("sessionID", sessionID); + currentlyTracking = true; + editor.putBoolean("currentlyTracking", true); + editor.putFloat("totalDistanceInMeters", 0f); + editor.putBoolean("firstTimeGettingPosition", true); + + Date now = new Date(); + editor.putLong("startTime", now.getTime()); // in milliseconds + editor.commit(); + + getWordpressNonce(sessionID); + startAlarmManager(); + } + + private void stopTracking() { + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + currentlyTracking = false; + editor.putBoolean("currentlyTracking", false); + editor.putString("sessionID", ""); + editor.putLong("startTime", 0); + editor.commit(); + + cancelAlarmManager(); + } + + private boolean saveUserSettings() { + if (textFieldsAreEmptyOrHaveSpaces()) { + return false; + } + + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + + switch (intervalRadioGroup.getCheckedRadioButtonId()) { + case R.id.i1: + editor.putInt("intervalInMinutes", 1); + break; + case R.id.i5: + editor.putInt("intervalInMinutes", 5); + break; + case R.id.i15: + editor.putInt("intervalInMinutes", 15); + break; + } + + editor.putString("userName", txtUserName.getText().toString().trim()); + editor.putString("defaultUploadWebsite", txtWebsite.getText().toString().trim()); + + editor.commit(); + + return true; + } + + private boolean textFieldsAreEmptyOrHaveSpaces() { + String tempUserName = txtUserName.getText().toString().trim(); + String tempWebsite = txtWebsite.getText().toString().trim(); + + if (tempWebsite.length() == 0 || hasSpaces(tempWebsite) || tempUserName.length() == 0 || hasSpaces(tempUserName)) { + Toast.makeText(this, R.string.textfields_empty_or_spaces, Toast.LENGTH_LONG).show(); + return true; + } + + return false; + } + + private boolean hasSpaces(String str) { + return ((str.split(" ").length > 1) ? true : false); + } + + private void displayUserSettings() { + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + intervalInMinutes = sharedPreferences.getInt("intervalInMinutes", 1); + + switch (intervalInMinutes) { + case 1: + intervalRadioGroup.check(R.id.i1); + break; + case 5: + intervalRadioGroup.check(R.id.i5); + break; + case 15: + intervalRadioGroup.check(R.id.i15); + break; + } + + txtWebsite.setText(sharedPreferences.getString("defaultUploadWebsite", defaultUploadWebsite)); + txtUserName.setText(sharedPreferences.getString("userName", "")); + } + + private boolean checkIfGooglePlayEnabled() { + if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) { + return true; + } else { + Log.e(TAG, "unable to connect to google play services."); + Toast.makeText(getApplicationContext(), R.string.google_play_services_unavailable, Toast.LENGTH_LONG).show(); + return false; + } + } + + private void getWordpressNonce(String sessionID) { + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + final SharedPreferences.Editor editor = sharedPreferences.edit(); + + final RequestParams requestParams = new RequestParams(); + requestParams.put("gpstracker", "nonce"); + requestParams.put("sessionid", sessionID); // uuid + requestParams.put("phonenumber", sharedPreferences.getString("appID", "")); // uuid + + // http://codex.wordpress.org/Glossary#Nonce + + final String uploadWebsite = sharedPreferences.getString("defaultUploadWebsite", defaultUploadWebsite); + + LoopjHttpClient.get(uploadWebsite, requestParams, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) { + String wordpressNonce = new String(responseBody); + + LoopjHttpClient.debugLoopJ(TAG, "getWordpressNonce - success", uploadWebsite, requestParams, responseBody, headers, statusCode, null); + + if (wordpressNonce.equals("0")) { + Toast.makeText(getApplicationContext(), R.string.security_token_error, Toast.LENGTH_LONG).show(); + editor.putString("wordpressNonce", "0"); + Log.e(TAG, "getWordpressNonce1: 0"); + + stopTracking(); + setTrackingButtonState(); + + } else { + editor.putString("wordpressNonce", wordpressNonce); + // Log.e(TAG, "getWordpressNonce2: " + wordpressNonce); + } + editor.commit(); + } + @Override + public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] errorResponse, Throwable e) { + Toast.makeText(getApplicationContext(), R.string.reachability_error, Toast.LENGTH_LONG).show(); + LoopjHttpClient.debugLoopJ(TAG, "getWordpressNonce - failure", uploadWebsite, requestParams, errorResponse, headers, statusCode, e); + editor.putString("wordpressNonce", "0"); + editor.commit(); + } + }); + } + + private void setTrackingButtonState() { + if (currentlyTracking) { + trackingButton.setBackgroundResource(R.drawable.green_tracking_button); + trackingButton.setTextColor(Color.BLACK); + trackingButton.setText(R.string.tracking_is_on); + } else { + trackingButton.setBackgroundResource(R.drawable.red_tracking_button); + trackingButton.setTextColor(Color.WHITE); + trackingButton.setText(R.string.tracking_is_off); + } + } + + @Override + public void onResume() { + Log.d(TAG, "onResume"); + super.onResume(); // Always call the superclass method first + + displayUserSettings(); + setTrackingButtonState(); + } + +} diff --git a/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerAlarmReceiver.java b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerAlarmReceiver.java new file mode 100644 index 00000000..121e4106 --- /dev/null +++ b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerAlarmReceiver.java @@ -0,0 +1,14 @@ +package com.websmithing.wp.gpstracker; + +import android.content.Context; +import android.content.Intent; +import android.support.v4.content.WakefulBroadcastReceiver; + +// make sure we use a WakefulBroadcastReceiver so that we acquire a partial wakelock +public class GpsTrackerAlarmReceiver extends WakefulBroadcastReceiver { + private static final String TAG = "GpsTrackerAlarmReceiver"; + @Override + public void onReceive(Context context, Intent intent) { + context.startService(new Intent(context, LocationService.class)); + } +} diff --git a/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerBootReceiver.java b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerBootReceiver.java new file mode 100644 index 00000000..65b51b7a --- /dev/null +++ b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/GpsTrackerBootReceiver.java @@ -0,0 +1,32 @@ +package com.websmithing.wp.gpstracker; + +import android.app.AlarmManager; +import android.app.PendingIntent; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.SystemClock; + +public class GpsTrackerBootReceiver extends BroadcastReceiver { + private static final String TAG = "GpsTrackerBootReceiver"; + @Override + public void onReceive(Context context, Intent intent) { + AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); + Intent gpsTrackerIntent = new Intent(context, GpsTrackerAlarmReceiver.class); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, gpsTrackerIntent, 0); + + SharedPreferences sharedPreferences = context.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + int intervalInMinutes = sharedPreferences.getInt("intervalInMinutes", 1); + Boolean currentlyTracking = sharedPreferences.getBoolean("currentlyTracking", false); + + if (currentlyTracking) { + alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, + SystemClock.elapsedRealtime(), + intervalInMinutes * 60000, // 60000 = 1 minute, + pendingIntent); + } else { + alarmManager.cancel(pendingIntent); + } + } +} diff --git a/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LocationService.java b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LocationService.java new file mode 100644 index 00000000..fc695d23 --- /dev/null +++ b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LocationService.java @@ -0,0 +1,232 @@ +package com.websmithing.wp.gpstracker; + +import android.app.Service; +import android.content.Context; +import android.content.Intent; +import android.content.SharedPreferences; +import android.location.Location; +import android.os.Bundle; +import android.os.IBinder; +import android.util.Log; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GooglePlayServicesUtil; +import com.google.android.gms.common.api.GoogleApiClient; +import com.google.android.gms.location.LocationListener; +import com.google.android.gms.location.LocationRequest; +import com.google.android.gms.location.LocationServices; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; + +public class LocationService extends Service implements + GoogleApiClient.ConnectionCallbacks, + GoogleApiClient.OnConnectionFailedListener, + LocationListener { + + private static final String TAG = "LocationService"; + + // use the websmithing defaultUploadWebsite for testing and then check your + // location with your browser here: https://www.websmithing.com/gpstracker/displaymap.php + private String defaultUploadWebsite; + + private boolean currentlyProcessingLocation = false; + private LocationRequest locationRequest; + private GoogleApiClient googleApiClient; + + @Override + public void onCreate() { + super.onCreate(); + + defaultUploadWebsite = getString(R.string.default_upload_website); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + // if we are currently trying to get a location and the alarm manager has called this again, + // no need to start processing a new location. + if (!currentlyProcessingLocation) { + currentlyProcessingLocation = true; + startTracking(); + } + + return START_NOT_STICKY; + } + + private void startTracking() { + Log.d(TAG, "startTracking"); + + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + String wordpressNonce = sharedPreferences.getString("wordpressNonce", "0"); + + if (wordpressNonce.equals("0")) { + Log.e(TAG, "startTracking wordpressNonce: 0"); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putBoolean("currentlyTracking", false); + editor.putString("sessionID", ""); + editor.commit(); + return; + } + + if (GooglePlayServicesUtil.isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) { + + googleApiClient = new GoogleApiClient.Builder(this) + .addApi(LocationServices.API) + .addConnectionCallbacks(this) + .addOnConnectionFailedListener(this) + .build(); + + if (!googleApiClient.isConnected() || !googleApiClient.isConnecting()) { + googleApiClient.connect(); + } + } else { + Log.e(TAG, "unable to connect to google play services."); + } + } + + protected void sendLocationDataToWebsite(Location location) { + // formatted for mysql datetime format + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + dateFormat.setTimeZone(TimeZone.getDefault()); + Date date = new Date(location.getTime()); + + SharedPreferences sharedPreferences = this.getSharedPreferences("com.websmithing.gpstracker.prefs", Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sharedPreferences.edit(); + + float totalDistanceInMeters = sharedPreferences.getFloat("totalDistanceInMeters", 0f); + + boolean firstTimeGettingPosition = sharedPreferences.getBoolean("firstTimeGettingPosition", true); + + if (firstTimeGettingPosition) { + editor.putBoolean("firstTimeGettingPosition", false); + } else { + Location previousLocation = new Location(""); + previousLocation.setLatitude(sharedPreferences.getFloat("previousLatitude", 0f)); + previousLocation.setLongitude(sharedPreferences.getFloat("previousLongitude", 0f)); + + float distance = location.distanceTo(previousLocation); + totalDistanceInMeters += distance; + editor.putFloat("totalDistanceInMeters", totalDistanceInMeters); + } + + editor.putFloat("previousLatitude", (float)location.getLatitude()); + editor.putFloat("previousLongitude", (float)location.getLongitude()); + editor.commit(); + + final RequestParams requestParams = new RequestParams(); + requestParams.put("gpstracker", "location"); + requestParams.put("latitude", Double.toString(location.getLatitude())); + requestParams.put("longitude", Double.toString(location.getLongitude())); + requestParams.put("username", sharedPreferences.getString("userName", "")); + requestParams.put("phonenumber", sharedPreferences.getString("appID", "")); // uuid + requestParams.put("sessionid", sharedPreferences.getString("sessionID", "0")); // uuid + Double speedInMilesPerHour = location.getSpeed()* 2.2369; + requestParams.put("speed", Integer.toString(speedInMilesPerHour.intValue())); + Float direction = location.getBearing(); + requestParams.put("direction", Integer.toString(direction.intValue())); + + if (totalDistanceInMeters > 0) { + requestParams.put("distance", Float.toString(totalDistanceInMeters / 1609)); // in miles + } else { + requestParams.put("distance", 0); // in miles + } + + try { + requestParams.put("gpstime", URLEncoder.encode(dateFormat.format(date), "UTF-8")); + } catch (UnsupportedEncodingException e) {} + + requestParams.put("locationmethod", location.getProvider()); + Double accuracyInFeet = location.getAccuracy()* 3.28; + requestParams.put("accuracy", Integer.toString(accuracyInFeet.intValue())); + + Double altitudeInFeet = location.getAltitude() * 3.28; + requestParams.put("extrainfo", Integer.toString(altitudeInFeet.intValue())); + + requestParams.put("eventtype", "android-wp"); + requestParams.put("wpnonce", sharedPreferences.getString("wordpressNonce", "1")); + + final String uploadWebsite = sharedPreferences.getString("defaultUploadWebsite", defaultUploadWebsite); + + LoopjHttpClient.get(uploadWebsite, requestParams, new AsyncHttpResponseHandler() { + @Override + public void onSuccess(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] responseBody) { + LoopjHttpClient.debugLoopJ(TAG, "sendLocationDataToWebsite - success", uploadWebsite, requestParams, responseBody, headers, statusCode, null); + stopSelf(); + } + @Override + public void onFailure(int statusCode, cz.msebera.android.httpclient.Header[] headers, byte[] errorResponse, Throwable e) { + LoopjHttpClient.debugLoopJ(TAG, "sendLocationDataToWebsite - failure", uploadWebsite, requestParams, errorResponse, headers, statusCode, e); + stopSelf(); + } + }); + } + + @Override + public void onDestroy() { + super.onDestroy(); + } + + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public void onLocationChanged(Location location) { + Log.d(TAG, "onLocationChanged"); + + if (location != null) { + Log.e(TAG, "position: " + location.getLatitude() + ", " + location.getLongitude() + " accuracy: " + location.getAccuracy()); + + // we have our desired accuracy of 500 meters so lets quit this service, + // onDestroy will be called and stop our location updates + if (location.getAccuracy() < 500.0f) { + stopLocationUpdates(); + sendLocationDataToWebsite(location); + } + } + } + + private void stopLocationUpdates() { + if (googleApiClient != null && googleApiClient.isConnected()) { + googleApiClient.disconnect(); + } + } + + /** + * Called by Location Services when the request to connect the + * client finishes successfully. At this point, you can + * request the current location or start periodic updates + */ + @Override + public void onConnected(Bundle bundle) { + Log.d(TAG, "onConnected"); + + locationRequest = LocationRequest.create(); + locationRequest.setInterval(1000); // milliseconds + locationRequest.setFastestInterval(1000); // the fastest rate in milliseconds at which your app can handle location updates + locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); + + LocationServices.FusedLocationApi.requestLocationUpdates( + googleApiClient, locationRequest, this); + } + + @Override + public void onConnectionFailed(ConnectionResult connectionResult) { + Log.e(TAG, "onConnectionFailed"); + + stopLocationUpdates(); + stopSelf(); + } + + @Override + public void onConnectionSuspended(int i) { + Log.e(TAG, "GoogleApiClient connection has been suspend"); + } +} diff --git a/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LoopjHttpClient.java b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LoopjHttpClient.java new file mode 100644 index 00000000..d95f332c --- /dev/null +++ b/phoneClients/android-wp/app/src/main/java/com/websmithing/wp/gpstracker/LoopjHttpClient.java @@ -0,0 +1,48 @@ +package com.websmithing.wp.gpstracker; + +import android.util.Log; + +import com.loopj.android.http.AsyncHttpClient; +import com.loopj.android.http.AsyncHttpResponseHandler; +import com.loopj.android.http.RequestParams; + +public class LoopjHttpClient { + private static AsyncHttpClient client = new AsyncHttpClient(); + + public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) { + //client.getHttpClient().getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true); + client.get(url, params, responseHandler); + } + + public static void post(String url, RequestParams requestParams, AsyncHttpResponseHandler responseHandler) { + client.post(url, requestParams, responseHandler); + } + + //public static void debugLoopJ(String TAG, String methodName, byte[] response, Header[] headers, int statusCode, Throwable t) { + public static void debugLoopJ(String TAG, String methodName,String url, RequestParams requestParams, byte[] response, cz.msebera.android.httpclient.Header[] headers, int statusCode, Throwable t) { + + Log.d(TAG, client.getUrlWithQueryString(false, url, requestParams)); + + if (headers != null) { + Log.e(TAG, methodName); + Log.d(TAG, "Return Headers:"); + /* + for (Header h : headers) { + String _h = String.format(Locale.US, "%s : %s", h.getName(), h.getValue()); + Log.d(TAG, _h); + } + */ + + if (t != null) { + Log.d(TAG, "Throwable:" + t); + } + + Log.e(TAG, "StatusCode: " + statusCode); + + if (response != null) { + Log.d(TAG, "Response: " + new String(response)); + } + + } + } +} diff --git a/phoneClients/android-wp/app/src/main/res/drawable-hdpi/ic_launcher.png b/phoneClients/android-wp/app/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..eb79cdbdfe86cc2317f5a90f202778628f4548cf GIT binary patch literal 4486 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 YAAAPQvMLyBH~;_u07*qoM6N<$g3LFUJOBUy literal 0 HcmV?d00001 diff --git a/phoneClients/android-wp/app/src/main/res/drawable-mdpi/ic_launcher.png b/phoneClients/android-wp/app/src/main/res/drawable-mdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..bcd3176fe66e94699c0ba95f21ce880811754e73 GIT binary patch literal 2460 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 KMNUMnLSTX+s{Dxn literal 0 HcmV?d00001 diff --git a/phoneClients/android-wp/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/phoneClients/android-wp/app/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..8270c3dd58633648ef7e368756f5b8c9305ac83f GIT binary patch literal 11209 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 literal 0 HcmV?d00001 diff --git a/phoneClients/android-wp/app/src/main/res/drawable-xxxhdpi/ic_launcher.png b/phoneClients/android-wp/app/src/main/res/drawable-xxxhdpi/ic_launcher.png new file mode 100755 index 0000000000000000000000000000000000000000..2cbd539caa3ac22877639420b99a1c2a41c054b6 GIT binary patch literal 16395 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%0AnQ8$^Vv!_e*wJ+4L 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 ccGoMo + + + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/app/src/main/res/drawable/red_tracking_button.xml b/phoneClients/android-wp/app/src/main/res/drawable/red_tracking_button.xml new file mode 100644 index 00000000..0a5089da --- /dev/null +++ b/phoneClients/android-wp/app/src/main/res/drawable/red_tracking_button.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/phoneClients/android-wp/app/src/main/res/layout/activity_gpstracker.xml b/phoneClients/android-wp/app/src/main/res/layout/activity_gpstracker.xml new file mode 100644 index 00000000..d8d005e1 --- /dev/null +++ b/phoneClients/android-wp/app/src/main/res/layout/activity_gpstracker.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + +