diff --git a/app/Console/Commands/AcarsReplay.php b/app/Console/Commands/AcarsReplay.php index 435fd71f..93861eac 100644 --- a/app/Console/Commands/AcarsReplay.php +++ b/app/Console/Commands/AcarsReplay.php @@ -2,16 +2,15 @@ namespace App\Console\Commands; -use GuzzleHttp\Client; - use Illuminate\Console\Command; use Illuminate\Database\Eloquent\Collection; +use GuzzleHttp\Client; use App\Facades\Utils; class AcarsReplay extends Command { - protected $signature = 'phpvms:replay {files} {--manual} {--write-all}'; + protected $signature = 'phpvms:replay {files} {--manual} {--write-all} {--no-submit}'; protected $description = 'Replay an ACARS file'; /** @@ -64,11 +63,13 @@ class AcarsReplay extends Command $pft = Utils::hoursToMinutes($flight->planned_hrsenroute, $flight->planned_minenroute); + $flight_number = substr($flight->callsign, 3); + $response = $this->httpClient->post('/api/pirep/prefile', [ 'json' => [ 'airline_id' => 1, - 'flight_number' => '6028', - 'aircraft_id' => 1, # TODO: Lookup + 'flight_number' => $flight_number, + 'aircraft_id' => 1, 'dpt_airport_id' => $flight->planned_depairport, 'arr_airport_id' => $flight->planned_destairport, 'altitude' => $flight->planned_altitude, @@ -84,6 +85,7 @@ class AcarsReplay extends Command /** * Mark the PIREP as filed * @param $pirep_id + * @return mixed */ protected function filePirep($pirep_id) { @@ -187,8 +189,8 @@ class AcarsReplay extends Command $this->postUpdate($pirep_id, $update); - # we're done - if($updates->count() === 0) { + # we're done and don't put the "no-submit" option + if($updates->count() === 0 && !$this->option('no-submit')) { $this->filePirep($pirep_id); } })->filter(function ($updates, $idx) { diff --git a/app/Database/migrations/2017_06_28_195426_create_pirep_tables.php b/app/Database/migrations/2017_06_28_195426_create_pirep_tables.php index 1ec2393f..28c7c992 100644 --- a/app/Database/migrations/2017_06_28_195426_create_pirep_tables.php +++ b/app/Database/migrations/2017_06_28_195426_create_pirep_tables.php @@ -56,13 +56,6 @@ class CreatePirepTables extends Migration $table->timestamps(); }); - Schema::create('pirep_events', function(Blueprint $table) { - $table->bigIncrements('id'); - $table->string('pirep_id', 12); - $table->string('event', 64); - $table->dateTime('dt'); - }); - /* * Financial tables/fields */ diff --git a/app/Http/Controllers/Api/AcarsController.php b/app/Http/Controllers/Api/AcarsController.php index 60810dbb..30e50587 100644 --- a/app/Http/Controllers/Api/AcarsController.php +++ b/app/Http/Controllers/Api/AcarsController.php @@ -3,41 +3,40 @@ namespace App\Http\Controllers\Api; use Log; -use App\Models\Acars; use Illuminate\Http\Request; use App\Http\Controllers\AppBaseController; +use App\Models\Acars; +use App\Services\GeoService; use App\Repositories\AcarsRepository; use App\Repositories\PirepRepository; -use App\Http\Resources\Acars as AcarsResource; - class AcarsController extends AppBaseController { - protected $acarsRepo, $pirepRepo; + protected $acarsRepo, $geoSvc, $pirepRepo; public function __construct( + GeoService $geoSvc, AcarsRepository $acarsRepo, PirepRepository $pirepRepo ) { + $this->geoSvc = $geoSvc; $this->acarsRepo = $acarsRepo; $this->pirepRepo = $pirepRepo; } + /** + * Return all of the flights (as points) in GeoJSON format + */ public function index(Request $request) { - /*PirepResource::withoutWrapping(); - return new PirepResource($this->pirepRepo->find($id));*/ - } - - /** - * Return the current ACARS map data in GeoJSON format - * @param Request $request - */ - public function geojson(Request $request) - { + $pireps = $this->acarsRepo->getPositions(); + $positions = $this->geoSvc->getFeatureForLiveFlights($pireps); + return response(json_encode($positions), 200, [ + 'Content-type' => 'application/json' + ]); } } diff --git a/app/Http/Controllers/Api/PirepController.php b/app/Http/Controllers/Api/PirepController.php index 0ebc42f7..cbfbb8ca 100644 --- a/app/Http/Controllers/Api/PirepController.php +++ b/app/Http/Controllers/Api/PirepController.php @@ -181,4 +181,13 @@ class PirepController extends AppBaseController AcarsResource::withoutWrapping(); return new AcarsResource($update); } + + /** + * @param $id + * @param Request $request + */ + public function geojson($id, Request $request) + { + $pirep = $this->pirepRepo->find($id); + } } diff --git a/app/Http/Controllers/Frontend/AcarsController.php b/app/Http/Controllers/Frontend/AcarsController.php new file mode 100644 index 00000000..15de8b53 --- /dev/null +++ b/app/Http/Controllers/Frontend/AcarsController.php @@ -0,0 +1,37 @@ +acarsRepo = $acarsRepo; + $this->geoSvc = $geoSvc; + } + + /** + * + */ + public function index(Request $request) + { + $pireps = $this->acarsRepo->getPositions(); + $positions = $this->geoSvc->getFeatureForLiveFlights($pireps); + + return $this->view('acars.index',[ + 'pireps' => $pireps, + 'positions' => $positions, + ]); + } +} diff --git a/app/Models/Pirep.php b/app/Models/Pirep.php index 693edcd0..c812b8a0 100644 --- a/app/Models/Pirep.php +++ b/app/Models/Pirep.php @@ -93,7 +93,8 @@ class Pirep extends BaseModel public function acars() { - return $this->hasMany('App\Models\Acars', 'pirep_id'); + return $this->hasMany('App\Models\Acars', 'pirep_id') + ->orderBy('created_at', 'desc'); } public function aircraft() @@ -118,12 +119,8 @@ class Pirep extends BaseModel public function comments() { - return $this->hasMany('App\Models\PirepComment', 'pirep_id'); - } - - public function events() - { - return $this->hasMany('App\Models\PirepEvent', 'pirep_id'); + return $this->hasMany('App\Models\PirepComment', 'pirep_id') + ->orderBy('created_at', 'desc'); } public function fields() @@ -141,14 +138,17 @@ class Pirep extends BaseModel return $this->user(); } - public function route() + /** + * Relationship that holds the current position, but limits the ACARS + * relationship to only one row (the latest), to prevent an N+! problem + */ + public function position() { - return []; + return $this->hasOne('App\Models\Acars', 'pirep_id')->latest(); } public function user() { return $this->belongsTo('App\Models\User', 'user_id'); } - } diff --git a/app/Models/PirepEvent.php b/app/Models/PirepEvent.php deleted file mode 100644 index 4193d122..00000000 --- a/app/Models/PirepEvent.php +++ /dev/null @@ -1,45 +0,0 @@ - 'string', - 'required' => 'integer', - ]; - - /** - * Validation rules - * - * @var array - */ - public static $rules - = [ - 'name' => 'required', - ]; - - public function pirep() - { - return $this->belongsTo('App\Models\Pirep', 'pirep_id'); - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index b24c3db1..54cd2d9c 100755 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -66,10 +66,7 @@ class RouteServiceProvider extends ServiceProvider protected function mapApiRoutes() { Route::group([ - 'middleware' => [ - 'api', - 'api.auth', - ], + 'middleware' => ['api'], 'namespace' => $this->namespace."\\Api", 'prefix' => 'api', 'as' => 'api.', diff --git a/app/Repositories/AcarsRepository.php b/app/Repositories/AcarsRepository.php index bfe8c1b1..f4f3c6d1 100644 --- a/app/Repositories/AcarsRepository.php +++ b/app/Repositories/AcarsRepository.php @@ -3,12 +3,16 @@ namespace App\Repositories; use App\Models\Acars; +use App\Models\Pirep; +use App\Models\Enums\PirepState; +use App\Models\Enums\PirepStatus; + use App\Repositories\Traits\CacheableRepository; use Prettus\Repository\Contracts\CacheableInterface; -class AcarsRepository extends BaseRepository implements CacheableInterface +class AcarsRepository extends BaseRepository //implements CacheableInterface { - use CacheableRepository; + //use CacheableRepository; public function model() { @@ -19,4 +23,30 @@ class AcarsRepository extends BaseRepository implements CacheableInterface { return $this->findWhere(['pirep_id' => $pirep_id]); } + + /** + * Get all of the PIREPS that are in-progress, and then + * get the latest update for those flights + * @return Pirep + */ + public function getPositions() + { + return Pirep::with(['airline', 'position']) + ->where(['state' => PirepState::IN_PROGRESS]) + ->get(); + + /*return Pirep::with(['acars' => function($q) { + return $q->limit(1); + }])->where(['state' => PirepState::IN_PROGRESS])->get();*/ + } + + /** + * @return $this + */ + public function getAllAcarsPoints() + { + return Pirep::with('acars')->where([ + 'state' => PirepState::IN_PROGRESS + ]); + } } diff --git a/app/Routes/api.php b/app/Routes/api.php index e97ce731..e9c8470b 100755 --- a/app/Routes/api.php +++ b/app/Routes/api.php @@ -1,28 +1,28 @@ ['api.auth']], function () +{ + Route::match(['get'], 'airports/{id}', 'AirportController@get'); + Route::match(['get'], 'airports/{id}/lookup', 'AirportController@lookup'); + Route::match(['get'], 'pirep/{id}', 'PirepController@get'); Route::match(['post'], 'pirep/prefile', 'PirepController@prefile'); Route::match(['post'], 'pirep/{id}/file', 'PirepController@file'); @@ -30,9 +30,6 @@ Route::group([], function () Route::match(['get'], 'pirep/{id}/acars', 'PirepController@acars_get'); Route::match(['post'], 'pirep/{id}/acars', 'PirepController@acars_store'); - Route::match(['get'], 'acars', 'AcarsController@index'); - Route::match(['get'], 'acars/geojson', 'AcarsController@geojson'); - # This is the info of the user whose token is in use Route::match(['get'], 'user', 'UserController@index'); #Route::match(['get'], 'user/bids', 'UserController@index'); diff --git a/app/Routes/web.php b/app/Routes/web.php index 4718d158..54a18424 100755 --- a/app/Routes/web.php +++ b/app/Routes/web.php @@ -8,8 +8,10 @@ Route::get('/', 'HomeController@index')->name('home'); Route::group([ 'namespace' => 'Frontend', 'prefix' => '', 'as' => 'frontend.' ], function() { - Route::get('/r/{id}', 'PirepController@show')->name('pirep.show.public'); - Route::get('/p/{id}', 'ProfileController@show')->name('profile.show.public'); + Route::get('r/{id}', 'PirepController@show')->name('pirep.show.public'); + Route::get('p/{id}', 'ProfileController@show')->name('profile.show.public'); + + Route::get('livemap', 'AcarsController@index')->name('livemap.public'); }); /** @@ -22,7 +24,7 @@ Route::group([ Route::resource('dashboard', 'DashboardController'); Route::get('flights/search', 'FlightController@search')->name('flights.search'); - Route::match(['post'], '/flights/save', 'FlightController@save')->name('flights.save'); + Route::post('flights/save', 'FlightController@save')->name('flights.save'); Route::resource('flights', 'FlightController'); Route::resource('profile', 'ProfileController'); diff --git a/app/Services/GeoService.php b/app/Services/GeoService.php index aef9cc4d..b25c7af4 100644 --- a/app/Services/GeoService.php +++ b/app/Services/GeoService.php @@ -139,6 +139,32 @@ class GeoService extends BaseService return $coords; } + /** + * Determine the center point between two sets of coordinates + * @param $latA + * @param $lonA + * @param $latB + * @param $lonB + * @return array + * @throws \League\Geotools\Exception\InvalidArgumentException + */ + public function getCenter($latA, $lonA, $latB, $lonB) + { + $geotools = new Geotools(); + $coordA = new Coordinate([$latA, $lonA]); + $coordB = new Coordinate([$latB, $lonB]); + + $vertex = $geotools->vertex()->setFrom($coordA)->setTo($coordB); + $middlePoint = $vertex->middle(); + + $center = [ + $middlePoint->getLatitude(), + $middlePoint->getLongitude() + ]; + + return $center; + } + /** * Read an array/relationship of ACARS model points * @param Pirep $pirep @@ -171,12 +197,42 @@ class GeoService extends BaseService # Convert to a feature $route_line = new Feature(new LineString($route_line), [], 1); + # TODO: Draw the plane icon from the last point + return [ 'line' => new FeatureCollection([$route_line]), 'points' => new FeatureCollection($route_points) ]; } + /** + * Return a single feature point for the + */ + public function getFeatureForLiveFlights($pireps) + { + $flight_points = []; + + /** + * @var Pirep $pirep + */ + foreach($pireps as $pirep) { + + /** + * @var $point \App\Models\Acars + */ + $point = $pirep->position; + $flight_points[] = new Feature( + new Point([$point->lon, $point->lat]), [ + 'gs' => $point->gs, + 'alt' => $point->altitude, + 'heading' => $point->heading ?: 0, + 'popup' => 'Flight: ' . $pirep->ident, + ]); + } + + return new FeatureCollection($flight_points); + } + /** * Return a FeatureCollection GeoJSON object * @param Flight $flight @@ -300,30 +356,4 @@ class GeoService extends BaseService 'actual_route_points' => $actual_route['points'], ]; } - - /** - * Determine the center point between two sets of coordinates - * @param $latA - * @param $lonA - * @param $latB - * @param $lonB - * @return array - * @throws \League\Geotools\Exception\InvalidArgumentException - */ - public function getCenter($latA, $lonA, $latB, $lonB) - { - $geotools = new Geotools(); - $coordA = new Coordinate([$latA, $lonA]); - $coordB = new Coordinate([$latB, $lonB]); - - $vertex = $geotools->vertex()->setFrom($coordA)->setTo($coordB); - $middlePoint = $vertex->middle(); - - $center = [ - $middlePoint->getLatitude(), - $middlePoint->getLongitude() - ]; - - return $center; - } } diff --git a/bower.json b/bower.json index dc1c56d7..e85bd4a6 100644 --- a/bower.json +++ b/bower.json @@ -10,7 +10,9 @@ "icheck": "1.0.2", "popper.js": "^1.12.0", "rivets": "0.9.6", - "select2": "4.0.3" + "select2": "4.0.3", + "leaflet": "1.2.0", + "leaflet-ajax": "2.1.0" }, "license": "MIT", "homepage": "https://github.com/nabeelio/phpvms", diff --git a/public/assets/img/acars/aircraft.png b/public/assets/img/acars/aircraft.png new file mode 100755 index 00000000..8d123e5c Binary files /dev/null and b/public/assets/img/acars/aircraft.png differ diff --git a/public/assets/img/acars/aircraft1.png b/public/assets/img/acars/aircraft1.png new file mode 100644 index 00000000..6a9de05c Binary files /dev/null and b/public/assets/img/acars/aircraft1.png differ diff --git a/public/assets/img/acars/atc.png b/public/assets/img/acars/atc.png new file mode 100755 index 00000000..094de41a Binary files /dev/null and b/public/assets/img/acars/atc.png differ diff --git a/public/assets/system/js/system.js b/public/assets/system/js/system.js index 6a79097d..bee090b3 100644 --- a/public/assets/system/js/system.js +++ b/public/assets/system/js/system.js @@ -9,6 +9,7 @@ const phpvms = (function() { set_marker: false, }); + let feature_groups = []; /*var openaip_airspace_labels = new L.TileLayer.WMS( "http://{s}.tile.maps.openaip.net/geowebcache/service/wms", { maxZoom: 14, @@ -31,7 +32,9 @@ const phpvms = (function() { transparent: true }); - const openaip_cached_basemap = new L.TileLayer("http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png", { + feature_groups.push(opencyclemap_phys_osm); + + /*const openaip_cached_basemap = new L.TileLayer("http://{s}.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_basemap@EPSG%3A900913@png/{z}/{x}/{y}.png", { maxZoom: 14, minZoom: 4, tms: true, @@ -41,7 +44,10 @@ const phpvms = (function() { transparent: true }); - const openaip_basemap_phys_osm = L.featureGroup([opencyclemap_phys_osm, openaip_cached_basemap]); + feature_groups.push(openaip_cached_basemap); + */ + + const openaip_basemap_phys_osm = L.featureGroup(feature_groups); let map = L.map('map', { layers: [openaip_basemap_phys_osm], @@ -75,7 +81,13 @@ const phpvms = (function() { layer.bindPopup(popup_html); }; - const pointToLayer = function (feature, latlng) { + /** + * Show each point as a marker + * @param feature + * @param latlng + * @returns {*} + */ + const pointToLayer = (feature, latlng) => { return L.circleMarker(latlng, { radius: 12, fillColor: "#ff7800", @@ -116,7 +128,6 @@ const phpvms = (function() { // Draw the route points after if (opts.route_points !== null) { - console.log(opts.route_points); let route_points = L.geoJSON(opts.route_points, { onEachFeature: onFeaturePointClick, pointToLayer: pointToLayer, @@ -196,20 +207,66 @@ const phpvms = (function() { * @private */ const _render_live_map = (opts) => { + opts = _.defaults(opts, { - route_points: null, - planned_route_line: null, - actual_route_points: null, - actual_route_line: null, + update_uri: '/api/acars', + positions: null, render_elem: 'map', + aircraft_icon: '/assets/img/acars/aircraft.png', }); - let map = draw_base_map(opts); + let flightPositions = null; + const map = draw_base_map(opts); + + const aircraftIcon = L.icon({ + iconUrl: opts.aircraft_icon, + iconSize: [48, 48], + iconAnchor: [0, 0], + popupAnchor: [-3, -76], + }); + + const updateMap = () => { + + console.log('reloading flights from acars...'); + + /** + * AJAX UPDATE + */ + + let flights = $.ajax({ + url: opts.update_uri, + dataType: "json", + error: console.log + }); + + $.when(flights).done(function (flightGeoJson) { + + if (flightPositions !== null) { + flightPositions.clearLayers(); + } + + flightPositions = L.geoJSON(flightGeoJson, { + onEachFeature: onFeaturePointClick, + pointToLayer: function(feature, latlon) { + return L.marker(latlon, { + icon: aircraftIcon, + rotationAngle: feature.properties.heading + }); + } + }); + + flightPositions.addTo(map); + map.fitBounds(flightPositions.getBounds()); + }); + }; + + updateMap(); + setTimeout(updateMap, 10000); }; return { - render_route_map: _render_route_map, render_airspace_map: _render_airspace_map, render_live_map: _render_live_map, + render_route_map: _render_route_map, } })(); diff --git a/public/assets/vendor/leaflet-ajax/.bower.json b/public/assets/vendor/leaflet-ajax/.bower.json new file mode 100644 index 00000000..cb8ba9e7 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/.bower.json @@ -0,0 +1,32 @@ +{ + "name": "leaflet-ajax", + "version": "2.1.0", + "homepage": "https://github.com/calvinmetcalf/leaflet-ajax", + "authors": [ + "Calvin Metcalf " + ], + "description": "AJAX and JSONP in Leaflet", + "main": "dist/leaflet.ajax.js", + "keywords": [ + "leaflet", + "ajax", + "jsonp" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ], + "_release": "2.1.0", + "_resolution": { + "type": "version", + "tag": "v2.1.0", + "commit": "26f31a90c684dd54a06feee7d56fadd9b020d4cc" + }, + "_source": "https://github.com/calvinmetcalf/leaflet-ajax.git", + "_target": "2.1.0", + "_originalSource": "leaflet-ajax" +} \ No newline at end of file diff --git a/public/assets/vendor/leaflet-ajax/README.md b/public/assets/vendor/leaflet-ajax/README.md new file mode 100644 index 00000000..25fe7b2a --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/README.md @@ -0,0 +1,78 @@ +leaflet-ajax +=========== + +[![js-semistandard-style](https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg?style=flat-square)](https://github.com/Flet/semistandard) + + +Allows you to call JSON via an Ajax call with a jsonp fallback. + +```javascript +var geojsonLayer = new L.GeoJSON.AJAX("geojson.json"); +``` +for jsonp add the option "dataType" and set it to "jsonp" +``` javascript +var geojsonLayer = L.geoJson.ajax("http:webhost.fake/geojson.jsonp",{dataType:"jsonp"}); +``` +Note that data starts to download when the layer is created NOT when it’s added to the map in order to get a head start. + +You may pass either a url string or an array of url strings if you want to download multiple things (handy +if your downloading data from an ESRI based thing which will have separate line, point, and poly features). + +As you see you can also use lower case methods without creating new objects + +For weirder jsonp you can set "callbackParam" for if you need to change the name of the callback parameter to something besides "callback", e.g. [Mapquest Nominative Open](http://open.mapquestapi.com/nominatim/) uses "json_callback" instead of "callback". + +If you want to be able to load stuff from the file system (with appropriate custom flags set) set local to true. + +If you want to set headers to the XMLHttpRequest set the 'headers' option equal to an object. + +Gives off three events `data:loading`, `data:progress` and `data:loaded`. + +- `data:loading` fires before we start downloading things, note if the constructor is given a url it won't wait to be added to the map +to start downloading the data, but it does do an async wait so you have time to add a listener to it (and so [leaflet.spin](https://github.com/makinacorpus/Leaflet.Spin) will work with it). +- `data:progress` is called each time a file is downloaded and passes the downloaded geojson as event data. +- `data:loaded` is called when all files have downloaded, this is mainly different from `data:progress` when you are downloading multiple things. + +You can also add a middleware function which is called after you download the data but before you add it to leaflet: + +```javascript +var geojsonLayer = L.geoJson.ajax("route/to/esri.json",{ + middleware:function(data){ + return esri2geoOrSomething(json); + } + }); +``` + +addUrl does not clear the current layers but adds to the current one, e.g.: + +```javascript +var geojsonLayer = L.geoJson.ajax("data.json"); +geojsonLayer.addUrl("data2.json");//we now have 2 layers +geojsonLayer.refresh();//redownload the most recent layer +geojsonLayer.refresh("new1.json");//add a new layer replacing whatever is there +``` + +last but now least we can refilter layers without re adding them + +```javascript +var geojsonLayer = L.geoJson.ajax("data.json"); +geojsonLayer.refilter(function(feature){ + return feature.properties.key === values; +}); +``` + +Behind the scenes are two new classes L.Util.ajax = function (url) for same origin requests and L.Util.jsonp = function (url,options) cross origin ones. Both return promises, which have an additional abort method that will abort the ajax request. + +```js +L.Util.ajax("url/same/origin.xml").then(function(data){ + doStuff(data); +}); +//or +L.Util.jsonp("http://www.dif.ori/gin").then(function(data){ + doStuff(data); +}); +``` + +In related news `L.Util.Promise` is now a constructor for a promise, it takes one argument, a resolver function. + +Some of the jsonp code inspired by/taken from [this interesting looking plugin](https://github.com/stefanocudini/leaflet-search) that I have failed to make heads nor tails of (the plugin, not the jsonp code) diff --git a/public/assets/vendor/leaflet-ajax/bower.json b/public/assets/vendor/leaflet-ajax/bower.json new file mode 100644 index 00000000..41b1a0ce --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/bower.json @@ -0,0 +1,23 @@ +{ + "name": "leaflet-ajax", + "version": "2.1.0", + "homepage": "https://github.com/calvinmetcalf/leaflet-ajax", + "authors": [ + "Calvin Metcalf " + ], + "description": "AJAX and JSONP in Leaflet", + "main": "dist/leaflet.ajax.js", + "keywords": [ + "leaflet", + "ajax", + "jsonp" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/public/assets/vendor/leaflet-ajax/dist/leaflet.ajax.js b/public/assets/vendor/leaflet-ajax/dist/leaflet.ajax.js new file mode 100644 index 00000000..abc30e77 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/dist/leaflet.ajax.js @@ -0,0 +1,575 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o element; its readystatechange event will be fired asynchronously once it is inserted + // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called. + var scriptEl = global.document.createElement('script'); + scriptEl.onreadystatechange = function () { + nextTick(); + + scriptEl.onreadystatechange = null; + scriptEl.parentNode.removeChild(scriptEl); + scriptEl = null; + }; + global.document.documentElement.appendChild(scriptEl); + }; + } else { + scheduleDrain = function () { + setTimeout(nextTick, 0); + }; + } +} + +var draining; +var queue = []; +//named nextTick for less confusing stack traces +function nextTick() { + draining = true; + var i, oldQueue; + var len = queue.length; + while (len) { + oldQueue = queue; + queue = []; + i = -1; + while (++i < len) { + oldQueue[i](); + } + len = queue.length; + } + draining = false; +} + +module.exports = immediate; +function immediate(task) { + if (queue.push(task) === 1 && !draining) { + scheduleDrain(); + } +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],3:[function(require,module,exports){ +(function (global){ +'use strict'; +var jsonp = require('./jsonp'); +var Promise = require('lie'); + +module.exports = function (url, options) { + options = options || {}; + if (options.jsonp) { + return jsonp(url, options); + } + var request; + var cancel; + var out = new Promise(function (resolve, reject) { + cancel = reject; + if (global.XMLHttpRequest === undefined) { + reject('XMLHttpRequest is not supported'); + } + var response; + request = new global.XMLHttpRequest(); + request.open('GET', url); + if (options.headers) { + Object.keys(options.headers).forEach(function (key) { + request.setRequestHeader(key, options.headers[key]); + }); + } + request.onreadystatechange = function () { + if (request.readyState === 4) { + if ((request.status < 400 && options.local) || request.status === 200) { + if (global.JSON) { + response = JSON.parse(request.responseText); + } else { + reject(new Error('JSON is not supported')); + } + resolve(response); + } else { + if (!request.status) { + reject('Attempted cross origin request without CORS enabled'); + } else { + reject(request.statusText); + } + } + } + }; + request.send(); + }); + out.catch(function (reason) { + request.abort(); + return reason; + }); + out.abort = cancel; + return out; +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./jsonp":5,"lie":1}],4:[function(require,module,exports){ +(function (global){ +'use strict'; +var L = global.L || require('leaflet'); +var Promise = require('lie'); +var ajax = require('./ajax'); +L.GeoJSON.AJAX = L.GeoJSON.extend({ + defaultAJAXparams: { + dataType: 'json', + callbackParam: 'callback', + local: false, + middleware: function (f) { + return f; + } + }, + initialize: function (url, options) { + this.urls = []; + if (url) { + if (typeof url === 'string') { + this.urls.push(url); + } else if (typeof url.pop === 'function') { + this.urls = this.urls.concat(url); + } else { + options = url; + url = undefined; + } + } + var ajaxParams = L.Util.extend({}, this.defaultAJAXparams); + + for (var i in options) { + if (this.defaultAJAXparams.hasOwnProperty(i)) { + ajaxParams[i] = options[i]; + } + } + this.ajaxParams = ajaxParams; + this._layers = {}; + L.Util.setOptions(this, options); + this.on('data:loaded', function () { + if (this.filter) { + this.refilter(this.filter); + } + }, this); + var self = this; + if (this.urls.length > 0) { + new Promise(function (resolve) { + resolve(); + }).then(function () { + self.addUrl(); + }); + } + }, + clearLayers: function () { + this.urls = []; + L.GeoJSON.prototype.clearLayers.call(this); + return this; + }, + addUrl: function (url) { + var self = this; + if (url) { + if (typeof url === 'string') { + self.urls.push(url); + } else if (typeof url.pop === 'function') { + self.urls = self.urls.concat(url); + } + } + var loading = self.urls.length; + var done = 0; + self.fire('data:loading'); + self.urls.forEach(function (url) { + if (self.ajaxParams.dataType.toLowerCase() === 'json') { + ajax(url, self.ajaxParams).then(function (d) { + var data = self.ajaxParams.middleware(d); + self.addData(data); + self.fire('data:progress', data); + }, function (err) { + self.fire('data:progress', { + error: err + }); + }); + } else if (self.ajaxParams.dataType.toLowerCase() === 'jsonp') { + L.Util.jsonp(url, self.ajaxParams).then(function (d) { + var data = self.ajaxParams.middleware(d); + self.addData(data); + self.fire('data:progress', data); + }, function (err) { + self.fire('data:progress', { + error: err + }); + }); + } + }); + self.on('data:progress', function () { + if (++done === loading) { + self.fire('data:loaded'); + } + }); + }, + refresh: function (url) { + url = url || this.urls; + this.clearLayers(); + this.addUrl(url); + }, + refilter: function (func) { + if (typeof func !== 'function') { + this.filter = false; + this.eachLayer(function (a) { + a.setStyle({ + stroke: true, + clickable: true + }); + }); + } else { + this.filter = func; + this.eachLayer(function (a) { + if (func(a.feature)) { + a.setStyle({ + stroke: true, + clickable: true + }); + } else { + a.setStyle({ + stroke: false, + clickable: false + }); + } + }); + } + } +}); +L.Util.Promise = Promise; +L.Util.ajax = ajax; +L.Util.jsonp = require('./jsonp'); +L.geoJson.ajax = function (geojson, options) { + return new L.GeoJSON.AJAX(geojson, options); +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./ajax":3,"./jsonp":5,"leaflet":undefined,"lie":1}],5:[function(require,module,exports){ +(function (global){ +'use strict'; +var L = global.L || require('leaflet'); +var Promise = require('lie'); + +module.exports = function (url, options) { + options = options || {}; + var head = document.getElementsByTagName('head')[0]; + var scriptNode = L.DomUtil.create('script', '', head); + var cbName, ourl, cbSuffix, cancel; + var out = new Promise(function (resolve, reject) { + cancel = reject; + var cbParam = options.cbParam || 'callback'; + if (options.callbackName) { + cbName = options.callbackName; + } else { + cbSuffix = '_' + ('' + Math.random()).slice(2); + cbName = '_leafletJSONPcallbacks.' + cbSuffix; + } + scriptNode.type = 'text/javascript'; + if (cbSuffix) { + if (!global._leafletJSONPcallbacks) { + global._leafletJSONPcallbacks = { + length: 0 + }; + } + global._leafletJSONPcallbacks.length++; + global._leafletJSONPcallbacks[cbSuffix] = function (data) { + head.removeChild(scriptNode); + delete global._leafletJSONPcallbacks[cbSuffix]; + global._leafletJSONPcallbacks.length--; + if (!global._leafletJSONPcallbacks.length) { + delete global._leafletJSONPcallbacks; + } + resolve(data); + }; + } + if (url.indexOf('?') === -1) { + ourl = url + '?' + cbParam + '=' + cbName; + } else { + ourl = url + '&' + cbParam + '=' + cbName; + } + scriptNode.src = ourl; + }).then(null, function (reason) { + head.removeChild(scriptNode); + delete L.Util.ajax.cb[cbSuffix]; + return reason; + }); + out.abort = cancel; + return out; +}; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"leaflet":undefined,"lie":1}]},{},[4]); diff --git a/public/assets/vendor/leaflet-ajax/dist/leaflet.ajax.min.js b/public/assets/vendor/leaflet-ajax/dist/leaflet.ajax.min.js new file mode 100644 index 00000000..c430b017 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/dist/leaflet.ajax.min.js @@ -0,0 +1 @@ +!function e(t,n,r){function a(i,s){if(!n[i]){if(!t[i]){var l="function"==typeof require&&require;if(!s&&l)return l(i,!0);if(o)return o(i,!0);var u=new Error("Cannot find module '"+i+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[i]={exports:{}};t[i][0].call(c.exports,function(e){var n=t[i][1][e];return a(n?n:e)},c,c.exports,e,t,n,r)}return n[i].exports}for(var o="function"==typeof require&&require,i=0;i0&&new r(function(e){e()}).then(function(){i.addUrl()})},clearLayers:function(){return this.urls=[],n.GeoJSON.prototype.clearLayers.call(this),this},addUrl:function(e){var t=this;e&&("string"==typeof e?t.urls.push(e):"function"==typeof e.pop&&(t.urls=t.urls.concat(e)));var r=t.urls.length,o=0;t.fire("data:loading"),t.urls.forEach(function(e){"json"===t.ajaxParams.dataType.toLowerCase()?a(e,t.ajaxParams).then(function(e){var n=t.ajaxParams.middleware(e);t.addData(n),t.fire("data:progress",n)},function(e){t.fire("data:progress",{error:e})}):"jsonp"===t.ajaxParams.dataType.toLowerCase()&&n.Util.jsonp(e,t.ajaxParams).then(function(e){var n=t.ajaxParams.middleware(e);t.addData(n),t.fire("data:progress",n)},function(e){t.fire("data:progress",{error:e})})}),t.on("data:progress",function(){++o===r&&t.fire("data:loaded")})},refresh:function(e){e=e||this.urls,this.clearLayers(),this.addUrl(e)},refilter:function(e){"function"!=typeof e?(this.filter=!1,this.eachLayer(function(e){e.setStyle({stroke:!0,clickable:!0})})):(this.filter=e,this.eachLayer(function(t){e(t.feature)?t.setStyle({stroke:!0,clickable:!0}):t.setStyle({stroke:!1,clickable:!1})}))}}),n.Util.Promise=r,n.Util.ajax=a,n.Util.jsonp=e("./jsonp"),n.geoJson.ajax=function(e,t){return new n.GeoJSON.AJAX(e,t)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./ajax":3,"./jsonp":5,leaflet:void 0,lie:1}],5:[function(e,t,n){(function(n){"use strict";var r=n.L||e("leaflet"),a=e("lie");t.exports=function(e,t){t=t||{};var o,i,s,l,u=document.getElementsByTagName("head")[0],c=r.DomUtil.create("script","",u),f=new a(function(r,a){l=a;var f=t.cbParam||"callback";t.callbackName?o=t.callbackName:(s="_"+(""+Math.random()).slice(2),o="_leafletJSONPcallbacks."+s),c.type="text/javascript",s&&(n._leafletJSONPcallbacks||(n._leafletJSONPcallbacks={length:0}),n._leafletJSONPcallbacks.length++,n._leafletJSONPcallbacks[s]=function(e){u.removeChild(c),delete n._leafletJSONPcallbacks[s],n._leafletJSONPcallbacks.length--,n._leafletJSONPcallbacks.length||delete n._leafletJSONPcallbacks,r(e)}),i=-1===e.indexOf("?")?e+"?"+f+"="+o:e+"&"+f+"="+o,c.src=i}).then(null,function(e){return u.removeChild(c),delete r.Util.ajax.cb[s],e});return f.abort=l,f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{leaflet:void 0,lie:1}]},{},[4]); diff --git a/public/assets/vendor/leaflet-ajax/example/colleges.geojson b/public/assets/vendor/leaflet-ajax/example/colleges.geojson new file mode 100644 index 00000000..35030b0b --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/colleges.geojson @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"geometry": {"type": "Point", "coordinates": [-71.123723098996251, 42.379003083976961]}, "type": "Feature", "id": 0, "properties": {"UNDERGRAD": 43, "CITYST": "Cambridge, MA", "OBJECTID": 72.0, "URL": "http://www.longy.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "166489", "ZIPCODE": "02138", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C, M", "L_TYPE": "CB", "ADDRESS": "One Follen St", "COLLEGE": "Longy School Of Music", "L_METH": "IN-WEBSITE", "GRAD": 137, "MAIN_TEL": "(617) 876-0956"}},{"geometry": {"type": "Point", "coordinates": [-71.308156671517793, 42.643612284195882]}, "type": "Feature", "id": 1, "properties": {"UNDERGRAD": 79, "CITYST": "Lowell, MA", "OBJECTID": 73.0, "URL": "http://www.lowellacademy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166498", "ZIPCODE": "01852", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "136 Central St", "COLLEGE": "Lowell Academy Of Hairdressing", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(978) 453-3235"}},{"geometry": {"type": "Point", "coordinates": [-71.335470511910415, 42.642686861490787]}, "type": "Feature", "id": 2, "properties": {"COLL_BD_ID": "3911", "ZIPCODE": "01854", "CAMPUS": "Lowell", "PLUS_FOUR": "2894", "ON_CAMPUS": "32%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "166513", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 2700, "MAIN_TEL": "(978) 934-4000", "OBJECTID": 74.0, "URL": "http://www.uml.edu", "UNDERGRAD": 6708, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Lowell, MA", "COMMENTS": "3 campuses - North, West & South", "COLLEGE": "University of Massachusetts Lowell", "ADDRESS": "One University Avenue", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-72.591413990809812, 42.103972389122625]}, "type": "Feature", "id": 3, "properties": {"UNDERGRAD": 32, "CITYST": "Springfield, MA", "OBJECTID": 75.0, "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166586", "ZIPCODE": "01103", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "266 Bridge St", "COLLEGE": "Mansfield Beauty Schools", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 788-7575"}},{"geometry": {"type": "Point", "coordinates": [-71.003189986400074, 42.245020012674154]}, "type": "Feature", "id": 4, "properties": {"UNDERGRAD": 80, "CITYST": "Quincy, MA", "OBJECTID": 76.0, "URL": "http://www.universities.com/Schools/M/Mansfield_Beauty_Schools_Quincy.asp", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166595", "ZIPCODE": "02169", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "AM", "ADDRESS": "200 Parking Way", "COLLEGE": "Mansfield Beauty Schools", "L_METH": "IN", "GRAD": 0, "MAIN_TEL": "(617) 479-1090"}},{"geometry": {"type": "Point", "coordinates": [-70.889192596577189, 42.465397453154281]}, "type": "Feature", "id": 5, "properties": {"UNDERGRAD": 0, "CITYST": "Swampscott, MA", "OBJECTID": 77.0, "COLL_BD_ID": "9100", "URL": "http://www.mariancourt.edu", "TYPE": "PRI", "DESCRIPTN": "Junior College, Two-year, Roman Catholic Church, Coed", "NCES_ID": "166601", "ZIPCODE": "01907", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A", "L_TYPE": "CB", "ADDRESS": "35 Little's Point Road", "COLLEGE": "Marian Court College", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 595-6768"}},{"geometry": {"type": "Point", "coordinates": [-72.52661202214162, 42.385966503941596]}, "type": "Feature", "id": 6, "properties": {"COLL_BD_ID": "3917", "ZIPCODE": "01003", "CAMPUS": "Main", "PLUS_FOUR": "9291", "ON_CAMPUS": "59%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "166629", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 5592, "MAIN_TEL": "(413) 545-0111", "OBJECTID": 78.0, "URL": "http://www.umass.edu", "UNDERGRAD": 18064, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Amherst, MA", "COLLEGE": "University of Massachusetts Amherst", "ADDRESS": "37 Mather Drive", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.039282258260698, 42.313421975552998]}, "type": "Feature", "id": 7, "properties": {"COLL_BD_ID": "3924", "ZIPCODE": "02125", "CAMPUS": "Boston", "PLUS_FOUR": "3393", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "166638", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 287-5000", "OBJECTID": 79.0, "URL": "http://www.umb.edu", "UNDERGRAD": 7804, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "University of Massachusetts Boston", "ADDRESS": "100 Morrissey Boulevard", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.263647089436418, 42.311992679353089]}, "type": "Feature", "id": 8, "properties": {"UNDERGRAD": 0, "CITYST": "Wellesley Hills, MA", "OBJECTID": 80.0, "COLL_BD_ID": "3294", "URL": "http://www.massbay.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "166647", "ZIPCODE": "02481", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "L_SRC_2": "www.collegeboard.com", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "ADDRESS": "50 Oakland Street", "COLLEGE": "Massachusetts Bay Community College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(781) 239-3000"}},{"geometry": {"type": "Point", "coordinates": [-71.101118639152133, 42.336681251420849]}, "type": "Feature", "id": 9, "properties": {"COLL_BD_ID": "3512", "ZIPCODE": "02115", "ON_CAMPUS": "17%", "DESCRIPTN": "College Of Health Sciences College Of Pharmacy Four-year Coed", "NCES_ID": "166656", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 292, "MAIN_TEL": "(617) 732-2800", "OBJECTID": 81.0, "URL": "http://www.mcp.edu", "UNDERGRAD": 387, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D, P", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Massachusetts College of Pharmacy & Health Science", "ADDRESS": "179 Longwood Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.098763007690863, 42.336786941283293]}, "type": "Feature", "id": 10, "properties": {"COLL_BD_ID": "3516", "ZIPCODE": "02115", "ON_CAMPUS": "28%", "DESCRIPTN": "College Of Art Four-year Coed", "NCES_ID": "166674", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 149, "MAIN_TEL": "(617) 879-7000", "OBJECTID": 82.0, "URL": "http://www.massart.edu", "UNDERGRAD": 1386, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Massachusetts College of Art", "ADDRESS": "621 Huntington Avenue", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.0933365347625, 42.359388762628264]}, "type": "Feature", "id": 11, "properties": {"COLL_BD_ID": "3514", "ZIPCODE": "02139", "PLUS_FOUR": "4307", "ON_CAMPUS": "94%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "166683", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 6228, "MAIN_TEL": "(617) 253-1000", "OBJECTID": 83.0, "URL": "http://www..mit.edu", "UNDERGRAD": 4109, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Cambridge, MA", "COLLEGE": "Massachusetts Institute of Technology", "ADDRESS": "77 Massachusetts Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-70.621791357649272, 41.740744523808893]}, "type": "Feature", "id": 12, "properties": {"COLL_BD_ID": "3515", "ZIPCODE": "02532", "ON_CAMPUS": "99%", "DESCRIPTN": "Four-year, Coed", "NCES_ID": "166692", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 21, "MAIN_TEL": "(508) 830-5000", "OBJECTID": 84.0, "URL": "http://www.maritime.edu", "UNDERGRAD": 9623, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CB", "L_METH": "IN-WEBSITE", "CITYST": "Buzzards Bay, MA", "COLLEGE": "Massachusetts Maritime Academy", "ADDRESS": "101 Academy Drive", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.761761550933102, 42.277610354685613]}, "type": "Feature", "id": 13, "properties": {"UNDERGRAD": 775, "CITYST": "Worcester, MA", "OBJECTID": 85.0, "URL": "http://www.umassmed.edu", "TYPE": "PUB", "DESCRIPTN": "4-year or above", "NCES_ID": "166708", "ZIPCODE": "01605", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D, P", "L_TYPE": "CB", "ADDRESS": "55 Lake Avenue North", "COLLEGE": "University of Massachusetts Medical Center", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(508) 856-1542"}},{"geometry": {"type": "Point", "coordinates": [-71.181316187943196, 42.278648886701426]}, "type": "Feature", "id": 14, "properties": {"UNDERGRAD": 184, "CITYST": "Boston, MA", "OBJECTID": 86.0, "URL": "http://www.mspp.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "166717", "ZIPCODE": "02132", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D", "L_TYPE": "CB", "ADDRESS": "221 Rivermoor St", "COLLEGE": "Massachusetts School Of Professional Psychology", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 327-6777"}},{"geometry": {"type": "Point", "coordinates": [-71.002580990039348, 42.246608861856338]}, "type": "Feature", "id": 15, "properties": {"UNDERGRAD": 56, "CITYST": "Quincy, MA", "OBJECTID": 87.0, "URL": "http://www.massschoolofbarbering.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166805", "ZIPCODE": "02169", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "1585 Hancock St", "COLLEGE": "Massachusetts Sch Of Barbering And Mens Hairstyling", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(617) 770-4444"}},{"geometry": {"type": "Point", "coordinates": [-70.989445624381176, 42.076140868108368]}, "type": "Feature", "id": 16, "properties": {"COLL_BD_ID": "3549", "ZIPCODE": "02302", "PLUS_FOUR": "3996", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "166823", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 1488, "MAIN_TEL": "(508) 588-9100", "OBJECTID": 88.0, "URL": "http://www.massasoit.mass.edu", "UNDERGRAD": 4923, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Brockton, MA", "COMMENTS": "Also in Canton", "COLLEGE": "Massasoit Community College", "ADDRESS": "One Massasoit Boulevard", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.124055562628357, 42.667733543078832]}, "type": "Feature", "id": 17, "properties": {"COLL_BD_ID": "3525", "ZIPCODE": "01845", "ON_CAMPUS": "72%", "DESCRIPTN": "College Of Business, Liberal Arts College, 4-year, Roman Catholic", "NCES_ID": "166850", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 15, "MAIN_TEL": "(978) 837-5000", "OBJECTID": 89.0, "URL": "http://www.merrimack.edu", "UNDERGRAD": 2389, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "North Andover, MA", "COLLEGE": "Merrimack College", "ADDRESS": "315 Turnpike Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.070588015948701, 42.370096934830677]}, "type": "Feature", "id": 18, "properties": {"UNDERGRAD": 0, "CITYST": "Cambridge, MA", "OBJECTID": 1.0, "URL": "http://www.hult.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "164368", "ZIPCODE": "02141", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M", "L_TYPE": "CB", "ADDRESS": "One Education Street", "COLLEGE": "Hult International Business School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 746-1990"}},{"geometry": {"type": "Point", "coordinates": [-71.056919728459363, 42.353897135481262]}, "type": "Feature", "id": 19, "properties": {"COLL_BD_ID": "3376", "ZIPCODE": "02110", "DESCRIPTN": "Two-year, Coed", "NCES_ID": "164438", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 951-2350", "OBJECTID": 2.0, "URL": "http://www.finance.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CB", "L_METH": "IN-VERB", "CITYST": "Boston, MA", "COMMENTS": "Moved Nov. 1 2004 to 10 High St.", "COLLEGE": "New England College of Finance", "ADDRESS": "110 High St.", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.559467895844151, 42.112115827137664]}, "type": "Feature", "id": 20, "properties": {"COLL_BD_ID": "3002", "ZIPCODE": "01109", "CAMPUS": "Main", "ON_CAMPUS": "55%", "DESCRIPTN": "Liberal Arts College, University, Four-year, Coed", "NCES_ID": "164447", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 407, "MAIN_TEL": "(413) 737-7000", "OBJECTID": 3.0, "URL": "http://www.aic.edu", "UNDERGRAD": 1188, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Springfield, MA", "COLLEGE": "American International College", "ADDRESS": "1000 State Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.518598502141629, 42.369432330606102]}, "type": "Feature", "id": 21, "properties": {"COLL_BD_ID": "3003", "ZIPCODE": "01002", "PLUS_FOUR": "5000", "ON_CAMPUS": "98%", "DESCRIPTN": "Liberal Arts College Four-year Coed", "NCES_ID": "164465", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(413) 542-2000", "OBJECTID": 4.0, "URL": "http://www.amherst.edu", "UNDERGRAD": 1617, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Amherst, MA", "COLLEGE": "Amherst College", "ADDRESS": "PO Box 5000, Boltwood Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.188467141140009, 42.324556747206309]}, "type": "Feature", "id": 22, "properties": {"UNDERGRAD": 717, "CITYST": "Newton Centre, MA", "OBJECTID": 5.0, "URL": "http://www.ants.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "164474", "ZIPCODE": "02459", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D, P", "L_TYPE": "CB-ADMIN", "ADDRESS": "210 Herrick Rd", "COLLEGE": "Andover Newton Theological School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 964-1100"}},{"geometry": {"type": "Point", "coordinates": [-71.919190851046054, 42.329907470627695]}, "type": "Feature", "id": 23, "properties": {"COLL_BD_ID": "3005", "ZIPCODE": "01612", "PLUS_FOUR": "1198", "ON_CAMPUS": "60%", "DESCRIPTN": "Liberal Arts College Four-year Roman Catholic Church Coed", "NCES_ID": "164492", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 416, "MAIN_TEL": "(508) 849-3300", "OBJECTID": 6.0, "URL": "http://www.annamaria.edu", "UNDERGRAD": 699, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL", "L_METH": "IN-WEBSITE", "CITYST": "Paxton, MA", "COLLEGE": "Anna Maria College", "ADDRESS": "50 Sunset Lane", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.099801351473573, 42.348359848021211]}, "type": "Feature", "id": 24, "properties": {"COLL_BD_ID": "3777", "ZIPCODE": "02215", "PLUS_FOUR": "2598", "ON_CAMPUS": "27%", "DESCRIPTN": "College Of Art Four-year Coed", "NCES_ID": "164526", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 31, "MAIN_TEL": "(617) 585-6600", "OBJECTID": 7.0, "URL": "http://www.aiboston.edu", "UNDERGRAD": 511, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Art Institute of Boston at Lesley University", "ADDRESS": "700 Beacon Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.829990782684149, 42.289941104585971]}, "type": "Feature", "id": 25, "properties": {"COLL_BD_ID": "3009", "ZIPCODE": "01609", "PLUS_FOUR": "1296", "ON_CAMPUS": "89%", "DESCRIPTN": "Liberal Arts College, Four-year, Roman Catholic Church, Coed", "NCES_ID": "164562", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 279, "MAIN_TEL": "(508) 767-7000", "OBJECTID": 8.0, "URL": "http://www.assumption.edu", "UNDERGRAD": 2123, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "FD", "L_METH": "IN-WEBSITE", "CITYST": "Worcester, MA", "COLLEGE": "Assumption College", "ADDRESS": "500 Salisbury Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.687221092423385, 42.445346819050904]}, "type": "Feature", "id": 26, "properties": {"COLL_BD_ID": "3010", "ZIPCODE": "01561", "ON_CAMPUS": "61%", "DESCRIPTN": "Liberal Arts College, Four-year, Seventh Day Adventist, Coed", "NCES_ID": "164571", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(978) 368-2000", "OBJECTID": 9.0, "URL": "http://www.atlanticuc.edu", "UNDERGRAD": 825, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "South Lancaster, MA", "COLLEGE": "Atlantic Union College", "ADDRESS": "PO Box 1000, 338 Main St.", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.262700065331018, 42.3010041030482]}, "type": "Feature", "id": 27, "properties": {"COLL_BD_ID": "3075", "ZIPCODE": "02457", "PLUS_FOUR": "0310", "ON_CAMPUS": "85%", "DESCRIPTN": "College Of Business, Four-year, Coed", "NCES_ID": "164580", "L_ACC_EST": 500, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 1625, "MAIN_TEL": "(781) 235-1200", "OBJECTID": 10.0, "URL": "http://www.babson.edu", "UNDERGRAD": 1717, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Wellesley, MA", "COLLEGE": "Babson College", "ADDRESS": "Babson Park", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.778222579362307, 42.269029798993309]}, "type": "Feature", "id": 28, "properties": {"UNDERGRAD": 177, "CITYST": "Worcester, MA", "OBJECTID": 11.0, "URL": "http://www.bancroftsmt.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "164599", "ZIPCODE": "01604", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Corner of Putnam & Shrewsbury Streets", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "333 Shrewsbury St", "COLLEGE": "Bancroft School Of Massage Therapy", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 757-7923"}},{"geometry": {"type": "Point", "coordinates": [-71.110064356694593, 42.253815825546198]}, "type": "Feature", "id": 29, "properties": {"UNDERGRAD": 117, "CITYST": "Boston, MA", "OBJECTID": 12.0, "URL": "http://www.boston.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "164614", "ZIPCODE": "02136", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C, A, B", "L_TYPE": "FD-ADMIN", "ADDRESS": "950 Metropolitan Ave.", "COLLEGE": "Boston Baptist College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 364-3510"}},{"geometry": {"type": "Point", "coordinates": [-72.58337736671956, 42.05512582597845]}, "type": "Feature", "id": 30, "properties": {"COLL_BD_ID": "3078", "ZIPCODE": "01106", "ON_CAMPUS": "65%", "DESCRIPTN": "College Of Business, Liberal Arts College, Four-year, Women only", "NCES_ID": "164632", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 72, "MAIN_TEL": "(413) 565-1000", "OBJECTID": 13.0, "URL": "http://www.baypath.edu", "UNDERGRAD": 1242, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CB", "L_METH": "IN-VERB", "CITYST": "Longmeadow, MA", "COMMENTS": "Women only", "COLLEGE": "Bay Path College", "ADDRESS": "588 Longmeadow Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.076973273441126, 42.35179178839465]}, "type": "Feature", "id": 31, "properties": {"COLL_BD_ID": "3120", "ZIPCODE": "02116", "ON_CAMPUS": "19%", "DESCRIPTN": "Junior College Two-year Coed", "NCES_ID": "164641", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 236-8000", "OBJECTID": 14.0, "URL": "http://www.baystate.edu", "UNDERGRAD": 512, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "FD", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Bay State College", "ADDRESS": "122 Commonwealth Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.113995974658366, 42.183061616725006]}, "type": "Feature", "id": 32, "properties": {"UNDERGRAD": 192, "CITYST": "Canton, MA", "OBJECTID": 15.0, "URL": "N/A", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "164678", "ZIPCODE": "02021", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "225 Turnpike St", "COLLEGE": "Bay State School Of Technology", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 828-3434"}},{"geometry": {"type": "Point", "coordinates": [-71.812035227808281, 42.269200030502873]}, "type": "Feature", "id": 33, "properties": {"COLL_BD_ID": "3079", "ZIPCODE": "01609", "ON_CAMPUS": "40%", "DESCRIPTN": "Liberal Arts College Four-year Coed", "NCES_ID": "164720", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(508) 791-9241", "OBJECTID": 16.0, "URL": "http://www.beckercollege.edu", "UNDERGRAD": 1279, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Worcester, MA", "COLLEGE": "Becker College", "ADDRESS": "61 Sever Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.219911470905103, 42.387545994114554]}, "type": "Feature", "id": 34, "properties": {"COLL_BD_ID": "3096", "ZIPCODE": "02452", "PLUS_FOUR": "4705", "ON_CAMPUS": "79%", "DESCRIPTN": "College Of Business Four-year Coed", "NCES_ID": "164739", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 1329, "MAIN_TEL": "(781) 891-2000", "OBJECTID": 17.0, "URL": "http://www.bentley.edu", "UNDERGRAD": 4273, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Waltham, MA", "COLLEGE": "Bentley College", "ADDRESS": "175 Forest Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.089528427721817, 42.346516841010391]}, "type": "Feature", "id": 35, "properties": {"COLL_BD_ID": "3107", "ZIPCODE": "02215", "ON_CAMPUS": "20%", "DESCRIPTN": "College Of Music Four-year Coed", "NCES_ID": "164748", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 266-1400", "OBJECTID": 18.0, "URL": "http://www.berklee.edu", "UNDERGRAD": 3799, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Berklee College of Music", "ADDRESS": "1140 Boylston Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-73.315212070489395, 42.459751920930806]}, "type": "Feature", "id": 36, "properties": {"COLL_BD_ID": "3102", "ZIPCODE": "02101", "PLUS_FOUR": "5786", "DESCRIPTN": "Community College Two-year Coed Open admission", "NCES_ID": "164775", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(413) 499-4660", "OBJECTID": 19.0, "URL": "http://www.berkshirecc.edu", "UNDERGRAD": 1722, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Pittsfield, MA", "COLLEGE": "Berkshire Community College", "ADDRESS": "1350 West Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.096397626494323, 42.34859913245819]}, "type": "Feature", "id": 37, "properties": {"UNDERGRAD": 245, "CITYST": "Boston, MA", "OBJECTID": 20.0, "URL": "http://www.blainebeautyschools.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "164845", "ZIPCODE": "02215", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "FD", "ADDRESS": "530 Commonwealth Ave", "COLLEGE": "Blaine The Beauty Career School-Boston", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(508) 370-7447"}},{"geometry": {"type": "Point", "coordinates": [-71.085798964515618, 42.348395519316988]}, "type": "Feature", "id": 38, "properties": {"UNDERGRAD": 0, "CITYST": "Boston, MA", "OBJECTID": 21.0, "COLL_BD_ID": "1168", "URL": "http://www.the-bac.edu", "TYPE": "PRI", "DESCRIPTN": "Coed", "NCES_ID": "164872", "ZIPCODE": "02115", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "B, M", "L_TYPE": "CB", "ADDRESS": "320 Newbury Street", "COLLEGE": "Boston Architectural Center", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 262-5000"}},{"geometry": {"type": "Point", "coordinates": [-71.132000570504275, 42.339224489509967]}, "type": "Feature", "id": 39, "properties": {"UNDERGRAD": 122, "CITYST": "Brookline, MA", "OBJECTID": 22.0, "URL": "http://www.bgsp.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "164915", "ZIPCODE": "02446", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D, P", "L_TYPE": "EL", "ADDRESS": "1581 Beacon St", "COLLEGE": "Boston Graduate School Of Psychoanalysis Inc", "L_METH": "IN", "GRAD": 0, "MAIN_TEL": "(617) 277-3915"}},{"geometry": {"type": "Point", "coordinates": [-71.16936683910599, 42.335738482672291]}, "type": "Feature", "id": 40, "properties": {"COLL_BD_ID": "3083", "ZIPCODE": "02467", "ON_CAMPUS": "73%", "DESCRIPTN": "University Four-year Roman Catholic Church Coed", "NCES_ID": "164924", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 552-8000", "OBJECTID": 23.0, "URL": "http://www.bc.edu", "UNDERGRAD": 8851, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D, P", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Chestnut Hill, MA", "COLLEGE": "Boston College", "ADDRESS": "140 Commonwealth Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.090045946051248, 42.34589586570857]}, "type": "Feature", "id": 41, "properties": {"COLL_BD_ID": "3084", "ZIPCODE": "02215", "ON_CAMPUS": "29%", "DESCRIPTN": "Four-year Coed", "NCES_ID": "164933", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 130, "MAIN_TEL": "(617) 536-6340", "OBJECTID": 24.0, "URL": "http://www.bostonconservatory.edu", "UNDERGRAD": 407, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Boston Conservatory", "ADDRESS": "8 The Fenway", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.099016258279207, 42.350460281121784]}, "type": "Feature", "id": 42, "properties": {"COLL_BD_ID": "3087", "ZIPCODE": "02215", "CAMPUS": "Charles River Campus", "ON_CAMPUS": "74%", "DESCRIPTN": "University Four-year Coed", "NCES_ID": "164988", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 9379, "MAIN_TEL": "(617) 353-2000", "OBJECTID": 25.0, "URL": "http://www.bu.edu", "UNDERGRAD": 15780, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D, P", "L_TYPE": "FD-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Boston, MA", "COLLEGE": "Boston University", "ADDRESS": "121 Bay State Road", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.257812982799734, 42.366477722958841]}, "type": "Feature", "id": 43, "properties": {"COLL_BD_ID": "3092", "ZIPCODE": "02454", "PLUS_FOUR": "9110", "ON_CAMPUS": "84%", "DESCRIPTN": "University Four-year Coed", "NCES_ID": "165015", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 1810, "MAIN_TEL": "(781) 736-2000", "OBJECTID": 26.0, "URL": "http://www.brandeis.edu", "UNDERGRAD": 3118, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Waltham, MA", "COLLEGE": "Brandeis University", "ADDRESS": "PO Box 9110, 415 South St.", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-70.964695035719302, 41.990139933822981]}, "type": "Feature", "id": 44, "properties": {"COLL_BD_ID": "3517", "ZIPCODE": "02325", "ON_CAMPUS": "31%", "DESCRIPTN": "Liberal Arts College Teachers College/College Of Education Four-year", "NCES_ID": "165024", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 2029, "MAIN_TEL": "(508) 531-1000", "OBJECTID": 27.0, "URL": "http://www.bridgew.edu", "UNDERGRAD": 7158, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Bridgewater, MA", "COLLEGE": "Bridgewater State College", "ADDRESS": "Plymouth Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.120178135906514, 41.721259430430486]}, "type": "Feature", "id": 45, "properties": {"COLL_BD_ID": "3110", "ZIPCODE": "02720", "DESCRIPTN": "Community College Two-year Coed", "NCES_ID": "165033", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(508) 678-2811", "OBJECTID": 28.0, "URL": "http://www.bristol.mass.edu", "UNDERGRAD": 6115, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Fall River, MA", "COMMENTS": "Satellite campus in New Bedford", "COLLEGE": "Bristol Community College", "ADDRESS": "777 Elsbree Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-70.991368877241101, 42.08753287258709]}, "type": "Feature", "id": 46, "properties": {"UNDERGRAD": 406, "CITYST": "Brockton, MA", "OBJECTID": 29.0, "URL": "http://www.brocktonhospital.com", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "165060", "ZIPCODE": "02302", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CF", "ADDRESS": "680 Centre St", "COLLEGE": "Brockton Hospital School Of Nursing", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(508) 941-7040"}},{"geometry": {"type": "Point", "coordinates": [-71.070152584310335, 42.375946634069152]}, "type": "Feature", "id": 47, "properties": {"COLL_BD_ID": "3123", "ZIPCODE": "02129", "PLUS_FOUR": "2925", "DESCRIPTN": "Community College Two-year Coed", "NCES_ID": "165112", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 228-2000", "OBJECTID": 30.0, "URL": "http://www.bhcc.mass.edu", "UNDERGRAD": 5380, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Bunker Hill Community College", "ADDRESS": "250 New Rutherford Avenue", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.072969945719151, 42.355390038732772]}, "type": "Feature", "id": 48, "properties": {"UNDERGRAD": 64, "CITYST": "Boston, MA", "OBJECTID": 31.0, "URL": "http://www.buteraschool.com", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "165149", "ZIPCODE": "02116", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "EL", "ADDRESS": "111 Beacon St", "COLLEGE": "Butera School Of Art", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 536-4623"}},{"geometry": {"type": "Point", "coordinates": [-71.110965656841131, 42.368849281814882]}, "type": "Feature", "id": 49, "properties": {"COLL_BD_ID": "3612", "ZIPCODE": "02138", "DESCRIPTN": "Teachers College/College Of Education Four-year Coed", "NCES_ID": "165167", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(800) 877-4723", "OBJECTID": 32.0, "URL": "http://www.cambridgecollege.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB", "L_METH": "IN-VERB", "CITYST": "Cambridge, MA", "COMMENTS": "Satellite campuses in MA, CA, VA and PR.", "COLLEGE": "Cambridge College", "ADDRESS": "1000 Massachusetts Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-70.336810761966774, 41.691559744956209]}, "type": "Feature", "id": 50, "properties": {"COLL_BD_ID": "3289", "ZIPCODE": "02668", "PLUS_FOUR": "1599", "DESCRIPTN": "Community College Two-year Coed", "NCES_ID": "165194", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(508) 362-2131", "OBJECTID": 33.0, "URL": "http://www.capecod.mass.edu", "UNDERGRAD": 2967, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "West Barnstable, MA", "COLLEGE": "Cape Cod Community College", "ADDRESS": "2240 Iyanough Road", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.137145947166843, 42.493269056574356]}, "type": "Feature", "id": 51, "properties": {"UNDERGRAD": 137, "CITYST": "Woburn, MA", "OBJECTID": 34.0, "URL": "http://www.catherinehinds.edu", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "165255", "ZIPCODE": "01801", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Pkg lot.pond north side", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "300 Wildwood Avenue", "COLLEGE": "Catherine Hinds Institute Of Esthetics", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 935-3344"}},{"geometry": {"type": "Point", "coordinates": [-71.064976832590915, 42.277223449959365]}, "type": "Feature", "id": 52, "properties": {"COLL_BD_ID": "3287", "ZIPCODE": "02124", "PLUS_FOUR": "5698", "DESCRIPTN": "College Of Hlth Sciences Junior Coll. Two-year Roman Catholic Church", "NCES_ID": "165264", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 296-8300", "OBJECTID": 35.0, "URL": "http://www.laboure.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CB", "L_METH": "IN-VERB", "CITYST": "Boston, MA", "COLLEGE": "Laboure College", "ADDRESS": "2120 Dorchester Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.824235699090266, 42.249624692727416]}, "type": "Feature", "id": 53, "properties": {"COLL_BD_ID": "3279", "ZIPCODE": "01610", "PLUS_FOUR": "1477", "ON_CAMPUS": "77%", "DESCRIPTN": "Liberal Arts College University Four-year Coed", "NCES_ID": "165334", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 894, "MAIN_TEL": "(508) 793-7711", "OBJECTID": 36.0, "URL": "http://www.clarku.edu", "UNDERGRAD": 2075, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Worcester, MA", "COMMENTS": "Corner of Main & Maywood", "COLLEGE": "Clark University", "ADDRESS": "50 Main Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.684250553558627, 42.50556173588965]}, "type": "Feature", "id": 54, "properties": {"UNDERGRAD": 16, "CITYST": "Conway, MA", "OBJECTID": 37.0, "URL": "http://www.csld.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "165495", "ZIPCODE": "01341", "L_ACC_EST": 500, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M", "L_TYPE": "EL", "ADDRESS": "332 South Deerfield Rd", "COLLEGE": "Conway School Of Landscape Design", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 369-4044"}},{"geometry": {"type": "Point", "coordinates": [-71.115013715660808, 42.238724000648332]}, "type": "Feature", "id": 55, "properties": {"COLL_BD_ID": "3285", "ZIPCODE": "02186", "ON_CAMPUS": "67%", "DESCRIPTN": "College Of Nursing, Liberal Arts College, Four-year, Coed", "NCES_ID": "165529", "L_ACC_EST": 500, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 333-2210", "OBJECTID": 38.0, "URL": "http://www.curry.edu", "UNDERGRAD": 2501, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Milton, MA", "COLLEGE": "Curry College", "ADDRESS": "1071 Blue Hill Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.0824032957008, 42.391060084739273]}, "type": "Feature", "id": 56, "properties": {"UNDERGRAD": 944, "CITYST": "Somerville, MA", "OBJECTID": 39.0, "URL": "http://www.computered.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "165556", "ZIPCODE": "02145", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "5 Middlesex Ave", "COLLEGE": "Computer-ed Institute-Somerville", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 776-3500"}},{"geometry": {"type": "Point", "coordinates": [-71.398053748666669, 42.085651710865669]}, "type": "Feature", "id": 57, "properties": {"UNDERGRAD": 2653, "CITYST": "Franklin, MA", "OBJECTID": 40.0, "COLL_BD_ID": "3352", "ON_CAMPUS": "84%", "TYPE": "PRI", "DESCRIPTN": "Junior College, Liberal Arts College, Two-year, Coed", "NCES_ID": "165574", "ZIPCODE": "02038", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "URL": "http://www.dean.edu", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A, B", "L_TYPE": "CB-ADMIN", "ADDRESS": "99 Main Street", "COLLEGE": "Dean College", "L_METH": "IN-WEBSITE", "GRAD": 0}},{"geometry": {"type": "Point", "coordinates": [-71.124654684018097, 41.699866778766435]}, "type": "Feature", "id": 58, "properties": {"UNDERGRAD": 67, "CITYST": "Fall River, MA", "OBJECTID": 41.0, "URL": "http://www.diman.mec.edu", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "165608", "ZIPCODE": "02723", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CL-CAMPUS", "ADDRESS": "251 Stonehaven Rd", "COLLEGE": "Diman Regional Technical Institute", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(508) 678-2891"}},{"geometry": {"type": "Point", "coordinates": [-71.289979631368041, 42.461493741023048]}, "type": "Feature", "id": 59, "properties": {"UNDERGRAD": 415, "CITYST": "Bedford, MA", "OBJECTID": 42.0, "URL": "http://www.ecat.edu", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "165635", "ZIPCODE": "01730", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "formerly East Coast Aero Tech", "DEGREES": "C", "L_TYPE": "CB-ADMIN", "ADDRESS": "150 Hanscom Drive", "COLLEGE": "WyoTech", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 274-8448"}},{"geometry": {"type": "Point", "coordinates": [-71.011937163408774, 42.271915732346272]}, "type": "Feature", "id": 60, "properties": {"UNDERGRAD": 688, "CITYST": "Quincy, MA", "OBJECTID": 43.0, "COLL_BD_ID": "3365", "URL": "http://www.enc.edu", "TYPE": "PRI", "DESCRIPTN": "Liberal Arts College, Four-year, Church Of The Nazarene, Coed", "NCES_ID": "165644", "ZIPCODE": "02170", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A, B, M", "L_TYPE": "CB", "ADDRESS": "23 East Elm Avenue", "COLLEGE": "Eastern Nazarene College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 745-3000"}},{"geometry": {"type": "Point", "coordinates": [-71.065276922716109, 42.351955683226343]}, "type": "Feature", "id": 61, "properties": {"COLL_BD_ID": "3367", "ZIPCODE": "02116", "PLUS_FOUR": "4624", "ON_CAMPUS": "48%", "DESCRIPTN": "Four-year Coed", "NCES_ID": "165662", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 984, "MAIN_TEL": "(617) 824-8500", "OBJECTID": 44.0, "URL": "http://www.emerson.edu", "UNDERGRAD": 3009, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Boston, MA", "COLLEGE": "Emerson College", "ADDRESS": "120 Boylston Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.102420745768072, 42.341132665169027]}, "type": "Feature", "id": 62, "properties": {"COLL_BD_ID": "3368", "ZIPCODE": "02115", "ON_CAMPUS": "48%", "DESCRIPTN": "Liberal Arts College Four-year Roman Catholic Church Coed", "NCES_ID": "165671", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 735-9715", "OBJECTID": 45.0, "URL": "http://www.emmanuel.edu", "UNDERGRAD": 1628, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Boston, MA", "COLLEGE": "Emmanuel College", "ADDRESS": "Box 7103, 400 The Fenway", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.236645944245225, 42.370544139066688]}, "type": "Feature", "id": 63, "properties": {"UNDERGRAD": 141, "CITYST": "Waltham, MA", "OBJECTID": 46.0, "URL": "http://www.blainebeautyschools.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "165680", "ZIPCODE": "02453", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "314 Moody St", "COLLEGE": "Blaine The Beauty Career School-Waltham", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 899-1500"}},{"geometry": {"type": "Point", "coordinates": [-70.840151181700094, 42.553951874805421]}, "type": "Feature", "id": 64, "properties": {"COLL_BD_ID": "3369", "ZIPCODE": "01915", "ON_CAMPUS": "88%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "165699", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 923, "MAIN_TEL": "(978) 927-0585", "OBJECTID": 47.0, "URL": "http://www.endicott.edu", "UNDERGRAD": 1755, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Beverly, MA", "COLLEGE": "Endicott College", "ADDRESS": "376 Hale Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.125009931750967, 42.376718135284769]}, "type": "Feature", "id": 65, "properties": {"UNDERGRAD": 85, "CITYST": "Cambridge, MA", "OBJECTID": 48.0, "URL": "http://www.episdivschool.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "165705", "ZIPCODE": "02138", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D, P", "L_TYPE": "CL-CAMPUS", "ADDRESS": "99 Brattle St", "COLLEGE": "Episcopal Divinity School", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(617) 868-3450"}},{"geometry": {"type": "Point", "coordinates": [-71.157729003785178, 41.698870812091577]}, "type": "Feature", "id": 66, "properties": {"UNDERGRAD": 103, "CITYST": "Fall River, MA", "OBJECTID": 49.0, "URL": "http://www.rob-roy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "165750", "ZIPCODE": "02720", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "3 campuses-Worcester, New Bedford, Taunton", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "260 S Main St", "COLLEGE": "Rob Roy Academy-Fall River", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 672-4751"}},{"geometry": {"type": "Point", "coordinates": [-71.073985654803181, 42.355284240548841]}, "type": "Feature", "id": 67, "properties": {"COLL_BD_ID": "3391", "ZIPCODE": "02116", "ON_CAMPUS": "40%", "DESCRIPTN": "Junior College Liberal Arts College Two-year Coed", "NCES_ID": "165802", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 236-8800", "OBJECTID": 50.0, "URL": "http://www.fisher.edu", "UNDERGRAD": 555, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Boston, MA", "COLLEGE": "Fisher College", "ADDRESS": "118 Beacon Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.788760134562423, 42.589849887334552]}, "type": "Feature", "id": 68, "properties": {"COLL_BD_ID": "3518", "ZIPCODE": "01420", "PLUS_FOUR": "2697", "ON_CAMPUS": "41%", "DESCRIPTN": "Liberal Arts College, Teachers College/College Of Education, Four-year", "NCES_ID": "165820", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 1466, "MAIN_TEL": "(978) 345-2151", "OBJECTID": 51.0, "URL": "http://www.fsc.edu", "UNDERGRAD": 3157, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Fitchburg, MA", "COLLEGE": "Fitchburg State College", "ADDRESS": "160 Pearl Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.435790096987446, 42.297898600987885]}, "type": "Feature", "id": 69, "properties": {"COLL_BD_ID": "3519", "ZIPCODE": "01701", "PLUS_FOUR": "9101", "ON_CAMPUS": "46%", "DESCRIPTN": "Liberal Arts College, Teachers College/College Of Education, Four-year", "NCES_ID": "165866", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(508) 620-1220", "OBJECTID": 52.0, "URL": "http://www.framingham.edu", "UNDERGRAD": 3892, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Framingham, MA", "COLLEGE": "Framingham State College", "ADDRESS": "PO Box 9101, 100 State Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.070128073235452, 42.345987069263266]}, "type": "Feature", "id": 70, "properties": {"UNDERGRAD": 544, "CITYST": "Boston, MA", "OBJECTID": 53.0, "COLL_BD_ID": "3394", "URL": "http://www.bfit.edu", "TYPE": "PRI", "DESCRIPTN": "Technical College Two-year Coed", "NCES_ID": "165884", "ZIPCODE": "02116", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A, B", "L_TYPE": "CB", "ADDRESS": "41 Berkeley Street", "COLLEGE": "Benjamin Franklin Institute of Technology", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 423-4630"}},{"geometry": {"type": "Point", "coordinates": [-70.820756336566191, 42.589155448097166]}, "type": "Feature", "id": 71, "properties": {"COLL_BD_ID": "3417", "ZIPCODE": "01984", "ON_CAMPUS": "87%", "DESCRIPTN": "Liberal Arts College, Four-year, Nondenominational, Coed", "NCES_ID": "165936", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 43, "MAIN_TEL": "(978) 927-2300", "OBJECTID": 54.0, "URL": "http://www.gordon.edu", "UNDERGRAD": 1621, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Wenham, MA", "COLLEGE": "Gordon College", "ADDRESS": "255 Grapevine Road", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-70.84300003973307, 42.606100043004993]}, "type": "Feature", "id": 72, "properties": {"UNDERGRAD": 1899, "CITYST": "South Hamilton, MA", "OBJECTID": 55.0, "URL": "http://www.gordonconwell.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "165945", "ZIPCODE": "01982", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D, P", "L_TYPE": "FD", "ADDRESS": "130 Essex St", "COLLEGE": "Gordon-Conwell Theological Seminary", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(978) 468-7111"}},{"geometry": {"type": "Point", "coordinates": [-72.628983671852424, 42.598324377409213]}, "type": "Feature", "id": 73, "properties": {"UNDERGRAD": 2079, "CITYST": "Greenfield, MA", "OBJECTID": 56.0, "COLL_BD_ID": "3420", "URL": "http://www.gcc.mass.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "165981", "ZIPCODE": "01301", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "L_SRC_2": "www.collegeboard.com", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "ADDRESS": "One College Drive", "COLLEGE": "Greenfield Community College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(413) 775-1000"}},{"geometry": {"type": "Point", "coordinates": [-72.540106667250242, 42.593059138900692]}, "type": "Feature", "id": 74, "properties": {"UNDERGRAD": 156, "CITYST": "Turners Falls, MA", "OBJECTID": 57.0, "URL": "http://www.hallmark.edu", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166009", "ZIPCODE": "01376", "L_ACC_EST": 500, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB2", "ADDRESS": "241 Millers Falls Rd", "COLLEGE": "Hallmark Institute Of Photography", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 863-2478"}},{"geometry": {"type": "Point", "coordinates": [-72.530439053551916, 42.325011179667506]}, "type": "Feature", "id": 75, "properties": {"COLL_BD_ID": "3447", "ZIPCODE": "01002", "ON_CAMPUS": "95%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "166018", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(413) 549-4600", "OBJECTID": 58.0, "URL": "http://www.hampshire.edu", "UNDERGRAD": 1325, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Amherst, MA", "COLLEGE": "Hampshire College", "ADDRESS": "893 West Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.120906640385655, 42.375674131808132]}, "type": "Feature", "id": 76, "properties": {"COLL_BD_ID": "3434", "ZIPCODE": "02138", "ON_CAMPUS": "96%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "166027", "L_ACC_EST": 100, "L_SRC_1": "IN-WEBSITE", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 495-1000", "OBJECTID": 59.0, "URL": "http://www.harvard.edu", "UNDERGRAD": 6597, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "FD-ADMIN", "L_METH": "IN-KNOW", "CITYST": "Cambridge, MA", "COLLEGE": "Harvard College", "ADDRESS": "8 Garden Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.188851031843384, 42.325513716129457]}, "type": "Feature", "id": 77, "properties": {"UNDERGRAD": 0, "CITYST": "Newton Centre, MA", "OBJECTID": 60.0, "COLL_BD_ID": "3435", "URL": "http://www.hebrewcollege.edu", "TYPE": "PRI", "DESCRIPTN": "Four-year, Jewish, Coed", "NCES_ID": "166045", "ZIPCODE": "02459", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "ADDRESS": "160 Herrick Road", "COLLEGE": "Hebrew College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 559-8600"}},{"geometry": {"type": "Point", "coordinates": [-71.129251303258897, 42.317032436583617]}, "type": "Feature", "id": 78, "properties": {"COLL_BD_ID": "3449", "ZIPCODE": "02445", "ON_CAMPUS": "90%", "DESCRIPTN": "Liberal Arts College, Seminary College, Four-year, Coed", "NCES_ID": "166054", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 731-3500", "OBJECTID": 61.0, "URL": "http://www.hchc.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, P", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Brookline, MA", "COLLEGE": "Hellenic College/Holy Cross", "ADDRESS": "50 Goddard Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.791896409583828, 42.577314105321427]}, "type": "Feature", "id": 79, "properties": {"UNDERGRAD": 80, "CITYST": "Fitchburg, MA", "OBJECTID": 62.0, "URL": "N/A", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166063", "ZIPCODE": "01420", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "276 Water St", "COLLEGE": "Henris School Of Hair Design", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(978) 342-6061"}},{"geometry": {"type": "Point", "coordinates": [-71.81055335890504, 42.238364672909306]}, "type": "Feature", "id": 80, "properties": {"COLL_BD_ID": "3282", "ZIPCODE": "01610", "PLUS_FOUR": "2395", "ON_CAMPUS": "87%", "DESCRIPTN": "Liberal Arts College Four-year Roman Catholic Church Coed", "NCES_ID": "166124", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(508) 793-2011", "OBJECTID": 63.0, "URL": "http://www.holycross.edu", "UNDERGRAD": 2748, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Worcester, MA", "COLLEGE": "College of the Holy Cross", "ADDRESS": "One College Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.650062649196954, 42.195323465123586]}, "type": "Feature", "id": 81, "properties": {"UNDERGRAD": 0, "CITYST": "Holyoke, MA", "OBJECTID": 64.0, "COLL_BD_ID": "3437", "URL": "http://www.hcc.mass.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "166133", "ZIPCODE": "01040", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "L_SRC_2": "www.collegeboard.com", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "ADDRESS": "303 Homestead Avenue", "COLLEGE": "Holyoke Community College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(413) 538-7000"}},{"geometry": {"type": "Point", "coordinates": [-71.076315030026265, 42.350980093368825]}, "type": "Feature", "id": 82, "properties": {"UNDERGRAD": 869, "CITYST": "Boston, MA", "OBJECTID": 65.0, "COLL_BD_ID": "3473", "URL": "http://www.gibbscollege.com", "TYPE": "PRI", "DESCRIPTN": "Junior College Two-year Coed", "NCES_ID": "166276", "ZIPCODE": "02116", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A", "L_TYPE": "CB", "ADDRESS": "126 Newbury Street", "COLLEGE": "Gibbs College", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 578-7100"}},{"geometry": {"type": "Point", "coordinates": [-72.62236820709073, 42.105640968174001]}, "type": "Feature", "id": 83, "properties": {"UNDERGRAD": 53, "CITYST": "West Springfield, MA", "OBJECTID": 66.0, "URL": "http://www.labaronacademy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166294", "ZIPCODE": "01089", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "11 Central St", "COLLEGE": "Kay Harvey Academy Of Hair Design", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 732-7117"}},{"geometry": {"type": "Point", "coordinates": [-71.059830597171214, 42.053411025071348]}, "type": "Feature", "id": 84, "properties": {"UNDERGRAD": 50, "CITYST": "Brockton, MA", "OBJECTID": 67.0, "URL": "http://www.labaronacademy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166319", "ZIPCODE": "02401", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "240 Liberty St", "COLLEGE": "La Baron Hairdressing Academy-Brockton", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 583-1700"}},{"geometry": {"type": "Point", "coordinates": [-70.929387313643701, 41.634075960931717]}, "type": "Feature", "id": 85, "properties": {"UNDERGRAD": 75, "CITYST": "New Bedford, MA", "OBJECTID": 68.0, "URL": "http://www.labaronacademy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166328", "ZIPCODE": "02740", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Corner of Eighth & Union", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "281 Union St", "COLLEGE": "La Baron Hairdressing Academy-New Bedford", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 993-1309"}},{"geometry": {"type": "Point", "coordinates": [-71.241644199464275, 42.343040574159765]}, "type": "Feature", "id": 86, "properties": {"COLL_BD_ID": "3481", "ZIPCODE": "02466", "ON_CAMPUS": "77%", "DESCRIPTN": "College Of Business, Liberal Arts College, Four-year, Coed", "NCES_ID": "166391", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 18, "MAIN_TEL": "(617) 243-2000", "OBJECTID": 69.0, "URL": "http://www.lasell.edu", "UNDERGRAD": 1081, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Newton, MA", "COLLEGE": "Lasell College", "ADDRESS": "1844 Commonwealth Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.111407961333128, 42.426766133574567]}, "type": "Feature", "id": 87, "properties": {"UNDERGRAD": 256, "CITYST": "Medford, MA", "OBJECTID": 70.0, "URL": "http://www.lmregisnurse.org", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "166407", "ZIPCODE": "02155", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CB", "ADDRESS": "170 Governors Ave", "COLLEGE": "Lawrence Memorial Hospital School Of Nursing", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(781) 306-6600"}},{"geometry": {"type": "Point", "coordinates": [-71.117234951058421, 42.380256481176737]}, "type": "Feature", "id": 88, "properties": {"COLL_BD_ID": "3483", "ZIPCODE": "02138", "PLUS_FOUR": "2790", "ON_CAMPUS": "66%", "DESCRIPTN": "Liberal Arts College, Teachers College/College Of Education, Four-year", "NCES_ID": "166452", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 5848, "MAIN_TEL": "(617) 868-9600", "OBJECTID": 71.0, "URL": "http://www.lesley.edu", "UNDERGRAD": 1027, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Cambridge, MA", "COLLEGE": "Lesley University", "ADDRESS": "29 Everett Street,", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.095481205079366, 42.336463399191878]}, "type": "Feature", "id": 89, "properties": {"COLL_BD_ID": "3958", "ZIPCODE": "02115", "ON_CAMPUS": "41%", "DESCRIPTN": "College Of Engineering, Technical College, Four-year", "NCES_ID": "168227", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 442-9010", "OBJECTID": 137.0, "URL": "http://www.wit.edu", "UNDERGRAD": 3273, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CL", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Wentworth Institute of Technology", "ADDRESS": "550 Huntington Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-73.208500893139501, 42.712038858766469]}, "type": "Feature", "id": 90, "properties": {"COLL_BD_ID": "3965", "ZIPCODE": "01267", "ON_CAMPUS": "93%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "168342", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 57, "MAIN_TEL": "(413) 597-2211", "OBJECTID": 143.0, "URL": "http://www.williams.edu", "UNDERGRAD": 1974, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Williamstown, MA", "COLLEGE": "Williams College", "ADDRESS": "33 Stetson Court", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.809602155314181, 42.274900478086202]}, "type": "Feature", "id": 91, "properties": {"COLL_BD_ID": "3969", "ZIPCODE": "01609", "ON_CAMPUS": "83%", "DESCRIPTN": "College Of Engineering, Liberal Arts College, Four-year, Coed", "NCES_ID": "168421", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 1004, "MAIN_TEL": "(508) 831-5000", "OBJECTID": 144.0, "URL": "http://www.wpi.edu", "UNDERGRAD": 2764, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Worcester, MA", "COLLEGE": "Worcester Polytechnic Institute", "ADDRESS": "100 Institute Road", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.83535439675498, 42.260099580424516]}, "type": "Feature", "id": 92, "properties": {"COLL_BD_ID": "3524", "ZIPCODE": "01602", "PLUS_FOUR": "2597", "ON_CAMPUS": "18%", "DESCRIPTN": "Liberal Arts College, Teachers College/College Of Education, Four-year", "NCES_ID": "168430", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 805, "MAIN_TEL": "(508) 929-8000", "OBJECTID": 145.0, "URL": "http://www.worcester.edu", "UNDERGRAD": 3982, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB", "L_METH": "IN-WEBSITE", "CITYST": "Worcester, MA", "COLLEGE": "Worcester State College", "ADDRESS": "486 Chandler Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.104138441371063, 42.182133907301591]}, "type": "Feature", "id": 93, "properties": {"UNDERGRAD": 47, "CITYST": "Canton, MA", "OBJECTID": 146.0, "URL": "http://www.bluehills.org", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "243799", "ZIPCODE": "02021", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "800 Randolph St", "COLLEGE": "Blue Hills Regional Technical School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(781) 828-5800"}},{"geometry": {"type": "Point", "coordinates": [-70.989618421729404, 41.663409529370611]}, "type": "Feature", "id": 94, "properties": {"UNDERGRAD": 264, "CITYST": "North Dartmouth, MA", "OBJECTID": 147.0, "URL": "http://www.snesl.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "262138", "ZIPCODE": "02747", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "P", "L_TYPE": "CB", "ADDRESS": "333 Faunce Corner Rd", "COLLEGE": "Southern New England School Of Law", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 998-9600"}},{"geometry": {"type": "Point", "coordinates": [-71.125987761435113, 42.414678364033364]}, "type": "Feature", "id": 95, "properties": {"UNDERGRAD": 82, "CITYST": "Medford, MA", "OBJECTID": 148.0, "URL": "http://www.elizabethgrady.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "362782", "ZIPCODE": "02155", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "222 Boston Avenue", "COLLEGE": "Elizabeth Grady School Of Esthetics", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 391-9380"}},{"geometry": {"type": "Point", "coordinates": [-72.543733596086057, 42.150784932893806]}, "type": "Feature", "id": 96, "properties": {"UNDERGRAD": 128, "CITYST": "Springfield, MA", "OBJECTID": 149.0, "URL": "http://www.uds-mass.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "364308", "ZIPCODE": "01104", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "365 Cadwell Dr 1st Fl", "COLLEGE": "Sanford-Brown Institute", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 739-4700"}},{"geometry": {"type": "Point", "coordinates": [-71.188409323171157, 42.20006358102021]}, "type": "Feature", "id": 97, "properties": {"UNDERGRAD": 0, "CITYST": "Norwood, MA", "OBJECTID": 150.0, "COLL_BD_ID": "2699", "URL": "http://www.itt-tech.edu", "TYPE": "PRI", "DESCRIPTN": "Technical College, Two-year, Coed", "NCES_ID": "366580", "ZIPCODE": "02062", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A", "L_TYPE": "CB", "ADDRESS": "333 Providence Highway", "COLLEGE": "ITT Technical Institute: Norwood", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(781) 278-7200"}},{"geometry": {"type": "Point", "coordinates": [-71.308258038731552, 42.642078040044048]}, "type": "Feature", "id": 98, "properties": {"UNDERGRAD": 180, "CITYST": "Lowell, MA", "OBJECTID": 151.0, "URL": "http://www.blainebeautyschools.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "367130", "ZIPCODE": "01852", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "231 Central St", "COLLEGE": "Blaine The Beauty Career School-Lowell", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(978) 459-9959"}},{"geometry": {"type": "Point", "coordinates": [-71.067626515218009, 42.426280897041472]}, "type": "Feature", "id": 99, "properties": {"UNDERGRAD": 74, "CITYST": "Malden, MA", "OBJECTID": 152.0, "URL": "http://www.libsbeautyschool.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "368993", "ZIPCODE": "02148", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "384 Main St", "COLLEGE": "Learning Institute For Beauty Sciences", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 324-3400"}},{"geometry": {"type": "Point", "coordinates": [-71.199623170875427, 42.682097154429634]}, "type": "Feature", "id": 100, "properties": {"UNDERGRAD": 582, "CITYST": "Andover, MA", "OBJECTID": 153.0, "URL": "http://www.mslaw.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "369002", "ZIPCODE": "01810", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "P", "L_TYPE": "CB", "ADDRESS": "500 Federal St Woodland Park", "COLLEGE": "Massachusetts School Of Law", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(978) 681-0800"}},{"geometry": {"type": "Point", "coordinates": [-71.067311541279039, 42.427948914926958]}, "type": "Feature", "id": 101, "properties": {"UNDERGRAD": 99, "CITYST": "Malden, MA", "OBJECTID": 154.0, "URL": "http://www.newenglandhairacademy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "373678", "ZIPCODE": "02148", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "492-500 Main St", "COLLEGE": "New England Hair Academy", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 324-6799"}},{"geometry": {"type": "Point", "coordinates": [-71.807659337878576, 42.263636898393088]}, "type": "Feature", "id": 102, "properties": {"UNDERGRAD": 180, "CITYST": "Worcester, MA", "OBJECTID": 155.0, "URL": "http://www.rob-roy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "373696", "ZIPCODE": "01609", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Corner Oxford & Pleasant Streets", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "150 Pleasant St", "COLLEGE": "Rob Roy Academy-Worcester", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 799-2111"}},{"geometry": {"type": "Point", "coordinates": [-70.578731121630369, 41.745267753080505]}, "type": "Feature", "id": 103, "properties": {"UNDERGRAD": 40, "CITYST": "Bourne, MA", "OBJECTID": 156.0, "URL": "http://www.uppercapetech.com", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "373711", "ZIPCODE": "02532", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "220 Sandwich Rd", "COLLEGE": "Upper Cape Cod Regional Vocational Technical School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(508) 759-7711"}},{"geometry": {"type": "Point", "coordinates": [-70.280648902693073, 41.65537372266931]}, "type": "Feature", "id": 104, "properties": {"UNDERGRAD": 109, "CITYST": "Hyannis, MA", "OBJECTID": 157.0, "URL": "http://www.blainebeautyschools.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "381635", "ZIPCODE": "02601", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "18 Center St", "COLLEGE": "Blaine The Beauty Career School-Hyannis", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 771-1680"}},{"geometry": {"type": "Point", "coordinates": [-71.396555967427759, 42.659335856919093]}, "type": "Feature", "id": 105, "properties": {"UNDERGRAD": 79, "CITYST": "Tyngsboro, MA", "OBJECTID": 158.0, "URL": "http://www.gltech.mec.edu", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "382416", "ZIPCODE": "01879", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "250 Pawtucket Blvd", "COLLEGE": "Greater Lowell Technical School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(978) 441-4870"}},{"geometry": {"type": "Point", "coordinates": [-71.286836490297659, 42.611362706059637]}, "type": "Feature", "id": 106, "properties": {"UNDERGRAD": 101, "CITYST": "Tewksbury, MA", "OBJECTID": 159.0, "URL": "http://www.salterschool.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "391564", "ZIPCODE": "01876", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "515 Woburn Street", "COLLEGE": "The Salter School-Tewksbury", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(978) 934-9009"}},{"geometry": {"type": "Point", "coordinates": [-71.076620045235416, 42.42744668722554]}, "type": "Feature", "id": 107, "properties": {"UNDERGRAD": 245, "CITYST": "Malden, MA", "OBJECTID": 160.0, "URL": "http://www.blainebeautyschools.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "407179", "ZIPCODE": "02148", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "347 Pleasant St", "COLLEGE": "Blaine The Beauty Career School-Malden", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 397-7400"}},{"geometry": {"type": "Point", "coordinates": [-71.21803403970128, 42.547659967580522]}, "type": "Feature", "id": 108, "properties": {"UNDERGRAD": 41, "CITYST": "Billerica, MA", "OBJECTID": 161.0, "URL": "http://www.shawsheen.tec.ma.us", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "412535", "ZIPCODE": "01821", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "100 Cook St", "COLLEGE": "Shawsheen Valley Regional Vocational Technical School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(978) 667-2111"}},{"geometry": {"type": "Point", "coordinates": [-73.106666782333889, 42.664616596300043]}, "type": "Feature", "id": 109, "properties": {"UNDERGRAD": 51, "CITYST": "North Adams, MA", "OBJECTID": 162.0, "URL": "http://www.mccanntech.org", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "419095", "ZIPCODE": "01247", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "70 Hodges Cross Rd", "COLLEGE": "Charles H Mccann Technical School", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 663-5383"}},{"geometry": {"type": "Point", "coordinates": [-71.083269950944199, 42.348570041023194]}, "type": "Feature", "id": 110, "properties": {"UNDERGRAD": 89, "CITYST": "Boston, MA", "OBJECTID": 163.0, "URL": "http://www.libsbeautyschool.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "419101", "ZIPCODE": "02116", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "FD", "ADDRESS": "867 Boylston St", "COLLEGE": "Learning Institute For Beauty Sciences", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(617) 424-6565"}},{"geometry": {"type": "Point", "coordinates": [-71.044113340256345, 42.071110841527975]}, "type": "Feature", "id": 111, "properties": {"UNDERGRAD": 69, "CITYST": "Brockton, MA", "OBJECTID": 164.0, "URL": "http://www.ailanoschool.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "419147", "ZIPCODE": "02301", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "541 West St", "COLLEGE": "Ailano School Of Cosmetology", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 583-5433"}},{"geometry": {"type": "Point", "coordinates": [-72.557280784863195, 42.188138670209696]}, "type": "Feature", "id": 112, "properties": {"UNDERGRAD": 0, "CITYST": "Chicopee, MA", "OBJECTID": 165.0, "URL": "http://www.porterchester.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "425782", "ZIPCODE": "01022", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "134 Dulong Cir", "COLLEGE": "Porter And Chester Institute", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 593-3339"}},{"geometry": {"type": "Point", "coordinates": [-71.055603430314278, 42.097156901382384]}, "type": "Feature", "id": 113, "properties": {"UNDERGRAD": 303, "CITYST": "Brockton, MA", "OBJECTID": 166.0, "URL": "http://www.ceitraining.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "425889", "ZIPCODE": "02301", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "EL", "ADDRESS": "375 Westgate Dr", "COLLEGE": "Computer-ed Institute-Brockton", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 941-0730"}},{"geometry": {"type": "Point", "coordinates": [-71.007612604174057, 41.640172128233857]}, "type": "Feature", "id": 114, "properties": {"UNDERGRAD": 0, "CITYST": "North Dartmouth, MA", "OBJECTID": 167.0, "URL": "http://www.bostonbartender.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "425922", "ZIPCODE": "02747", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "497 State Rd Rt 6", "COLLEGE": "Boston Bartenders School Of America", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 984-4515"}},{"geometry": {"type": "Point", "coordinates": [-73.239661138484394, 42.447993557811223]}, "type": "Feature", "id": 115, "properties": {"UNDERGRAD": 183, "CITYST": "Pittsfield, MA", "OBJECTID": 168.0, "URL": "http://www.mildred-elley.edu", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "425986", "ZIPCODE": "01201", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "505 East Street", "COLLEGE": "Empire Education Corporation Dba Mildred Elley", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 499-8618"}},{"geometry": {"type": "Point", "coordinates": [-71.064188988500959, 42.352896151096445]}, "type": "Feature", "id": 116, "properties": {"UNDERGRAD": 162, "CITYST": "Boston, MA", "OBJECTID": 169.0, "COLL_BD_ID": "3630", "URL": "http://www.urbancollege.edu", "TYPE": "PRI", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "429128", "ZIPCODE": "02111", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A", "L_TYPE": "FD", "ADDRESS": "178 Tremont Street, Seventh Fl", "COLLEGE": "Urban College of Boston", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 292-4723"}},{"geometry": {"type": "Point", "coordinates": [-71.06924902971852, 42.362513390196263]}, "type": "Feature", "id": 117, "properties": {"UNDERGRAD": 12, "CITYST": "Boston, MA", "OBJECTID": 170.0, "URL": "N/A", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "431594", "ZIPCODE": "02114", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "P", "L_TYPE": "FD", "ADDRESS": "Fruit St", "COLLEGE": "Massachusetts General Hospital Dietetic Internship", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 726-2589"}},{"geometry": {"type": "Point", "coordinates": [-71.860808773997803, 42.560681338638304]}, "type": "Feature", "id": 118, "properties": {"UNDERGRAD": 33, "CITYST": "Fitchburg, MA", "OBJECTID": 171.0, "URL": "http://www.montytech.net", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "433040", "ZIPCODE": "01420", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "1050 Westminster St Rte 2a", "COLLEGE": "Montachusett Regional Vocational Technical School", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(978) 345-9200"}},{"geometry": {"type": "Point", "coordinates": [-72.603812285628379, 42.12096531027337]}, "type": "Feature", "id": 119, "properties": {"UNDERGRAD": 3, "CITYST": "Springfield, MA", "OBJECTID": 172.0, "URL": "http://www.baystatehealth.com", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "433156", "ZIPCODE": "01199", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "In Bay State Med Ctr", "DEGREES": "M", "L_TYPE": "CL-CAMPUS", "ADDRESS": "360 Birnie Avenue", "COLLEGE": "Baystate Medical Center Midwifery Education Prog", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(413) 794-0000"}},{"geometry": {"type": "Point", "coordinates": [-71.780924507013623, 42.255833444856634]}, "type": "Feature", "id": 120, "properties": {"UNDERGRAD": 41, "CITYST": "Worcester, MA", "OBJECTID": 173.0, "URL": "http://www.universities.com/Schools/H/Hair_In_Motion_Beauty_Academy.asp", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "434344", "ZIPCODE": "01604", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "73 Hamilton St", "COLLEGE": "Hair In Motion Beauty Academy", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 756-6060"}},{"geometry": {"type": "Point", "coordinates": [-71.152051022746861, 42.208847319370186]}, "type": "Feature", "id": 121, "properties": {"UNDERGRAD": 62, "CITYST": "Westwood, MA", "OBJECTID": 174.0, "URL": "http://www.fine-ne.com", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "436599", "ZIPCODE": "02090", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Entrance is on northeast corner of building", "DEGREES": "A", "L_TYPE": "FD", "ADDRESS": "77 University Ave", "COLLEGE": "Funeral Institute Of The Northeast", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(781) 461-9080"}},{"geometry": {"type": "Point", "coordinates": [-72.543578030513714, 42.140919058232527]}, "type": "Feature", "id": 122, "properties": {"UNDERGRAD": 374, "CITYST": "Springfield, MA", "OBJECTID": 175.0, "URL": "http://www.branfordhall.edu", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "438805", "ZIPCODE": "01104", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "112 Industry Avenue", "COLLEGE": "Branford Hall Career Institute", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(413) 781-2276"}},{"geometry": {"type": "Point", "coordinates": [-71.118984974974737, 42.495619719742827]}, "type": "Feature", "id": 123, "properties": {"UNDERGRAD": 0, "CITYST": "Woburn, MA", "OBJECTID": 176.0, "COLL_BD_ID": "3184", "URL": "http://www.itt-tech.edu", "TYPE": "PRI", "DESCRIPTN": "Technical College, Two-year, Coed", "NCES_ID": "439136", "ZIPCODE": "01801", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A", "L_TYPE": "CB", "ADDRESS": "10 Forbes Road", "COLLEGE": "ITT Technical Institute: Woburn", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 937-8324"}},{"geometry": {"type": "Point", "coordinates": [-72.626890049466937, 42.14552996120235]}, "type": "Feature", "id": 124, "properties": {"UNDERGRAD": 0, "CITYST": "West Springfield, MA", "OBJECTID": 177.0, "URL": "http://www.universities.com/Schools/W/Western_Mass_Precision_Institute.asp", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "440013", "ZIPCODE": "01089", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "No Ans 11/12", "DEGREES": "N/A", "L_TYPE": "AM", "ADDRESS": "122 Doty Cir", "COLLEGE": "Western Mass Precision Institute", "L_METH": "IN", "GRAD": 0, "MAIN_TEL": "(413) 781-0166"}},{"geometry": {"type": "Point", "coordinates": [-71.000032890055124, 42.210612181493374]}, "type": "Feature", "id": 125, "properties": {"UNDERGRAD": 512, "CITYST": "Braintree, MA", "OBJECTID": 178.0, "URL": "http://www.phoenix.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "440420", "ZIPCODE": "02184", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Satellite campuses: Woburn, Boston & Westborough", "DEGREES": "B, M", "L_TYPE": "CB", "ADDRESS": "100 Grossman Dr-ste 201", "COLLEGE": "University Of Phoenix-Boston", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 843-0844"}},{"geometry": {"type": "Point", "coordinates": [-71.317514652808512, 42.623718379882185]}, "type": "Feature", "id": 126, "properties": {"UNDERGRAD": 458, "CITYST": "Lowell, MA", "OBJECTID": 179.0, "URL": "http://www.ceitraining.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "440952", "ZIPCODE": "01852", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "211 Plain St", "COLLEGE": "Lincoln Educational Services Dba Cei", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(978) 458-4800"}},{"geometry": {"type": "Point", "coordinates": [-70.61196820092654, 41.562390199174374]}, "type": "Feature", "id": 127, "properties": {"UNDERGRAD": 230, "CITYST": "Falmouth, MA", "OBJECTID": 180.0, "URL": "http://www.ngs.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "441478", "ZIPCODE": "02540", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M", "L_TYPE": "CB", "ADDRESS": "186 Jones Rd", "COLLEGE": "National Graduate School Of Quality Systems Mgmt", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(800) 838-2580"}},{"geometry": {"type": "Point", "coordinates": [-71.264297354498822, 42.293718792612175]}, "type": "Feature", "id": 128, "properties": {"COLL_BD_ID": "2824", "ZIPCODE": "02492", "PLUS_FOUR": "1245", "DESCRIPTN": "College Of Engineering, Four-year, Coed", "NCES_ID": "441982", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(781) 292-2300", "OBJECTID": 181.0, "URL": "http://www.olin.edu", "UNDERGRAD": 300, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Needham, MA", "COLLEGE": "Franklin W. Olin College of Engineering", "ADDRESS": "Olin Way", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.073042363318223, 42.427392512837308]}, "type": "Feature", "id": 129, "properties": {"UNDERGRAD": 130, "CITYST": "Malden, MA", "OBJECTID": 182.0, "URL": "http://www.salterschool.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "442815", "ZIPCODE": "02148", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "2 Florence St", "COLLEGE": "The Salter School-Malden", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(781) 324-5454"}},{"geometry": {"type": "Point", "coordinates": [-71.422158087240064, 42.297806626960359]}, "type": "Feature", "id": 130, "properties": {"UNDERGRAD": 111, "CITYST": "Framingham, MA", "OBJECTID": 183.0, "URL": "http://www.blainebeautyschools.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "443678", "ZIPCODE": "01701", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "624 Worcester Rd", "COLLEGE": "Blaine The Beauty Career School-Framingham", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 370-7447"}},{"geometry": {"type": "Point", "coordinates": [-71.581872213558668, 42.286448266582823]}, "type": "Feature", "id": 131, "properties": {"UNDERGRAD": 17, "CITYST": "Westborough, MA", "OBJECTID": 184.0, "URL": "http://www.university-of-phoenix-campus.com", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "443915", "ZIPCODE": "01581", "L_ACC_EST": 16, "MAIN_TEL": "(508) 614-4100", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB", "SITE": "1", "ADDRESS": "One Research Drive", "COLLEGE": "University Of Phoenix-Cental Mass.", "L_METH": "IN-VERB", "GRAD": 0, "CAMPUS": "Central Mass. Campus"}},{"geometry": {"type": "Point", "coordinates": [-72.557652892844899, 42.117718790382632]}, "type": "Feature", "id": 132, "properties": {"CITYST": "Springfield, MA", "OBJECTID": 185.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "164447", "SITE": "2", "L_ACC_EST": 16, "L_BASE": "DOQ", "COLLEGE": "American International College", "L_TYPE": "CB", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Edgewood Gardens"}},{"geometry": {"type": "Point", "coordinates": [-71.193165213978546, 42.478170116121944]}, "type": "Feature", "id": 133, "properties": {"CITYST": "Burlington, MA", "OBJECTID": 186.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167358", "SITE": "2", "L_ACC_EST": 16, "L_BASE": "DOQ", "COLLEGE": "Northeastern University", "L_TYPE": "CB", "ADDRESS": "South Bedford Street", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Burlington Campus"}},{"geometry": {"type": "Point", "coordinates": [-70.908987113953941, 42.423462042207007]}, "type": "Feature", "id": 134, "properties": {"CITYST": "Nahant, MA", "OBJECTID": 187.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167358", "SITE": "3", "L_ACC_EST": 16, "L_BASE": "DOQ", "COLLEGE": "Northeastern University", "L_TYPE": "CB", "ADDRESS": "Nahant Road", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Marine Science Center"}},{"geometry": {"type": "Point", "coordinates": [-71.195434335110789, 42.257130915354814]}, "type": "Feature", "id": 135, "properties": {"CITYST": "Dedham, MA", "OBJECTID": 188.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167358", "SITE": "4", "L_ACC_EST": 16, "L_BASE": "DOQ", "COLLEGE": "Northeastern University", "L_TYPE": "CB", "ADDRESS": "370 Common Street", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Dedham Campus"}},{"geometry": {"type": "Point", "coordinates": [-71.052858719301113, 42.357523816094634]}, "type": "Feature", "id": 136, "properties": {"CITYST": "Boston, MA", "OBJECTID": 189.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167358", "SITE": "5", "L_ACC_EST": 16, "L_BASE": "DOQ", "COMMENTS": "Batterymarch Building", "COLLEGE": "Northeastern University", "L_TYPE": "FD", "ADDRESS": "89 Broad Street", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Downtown Boston Campus"}},{"geometry": {"type": "Point", "coordinates": [-71.063507655774217, 42.350632754461131]}, "type": "Feature", "id": 137, "properties": {"CITYST": "Boston, MA", "OBJECTID": 190.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "168148", "ZIPCODE": "02111", "L_ACC_EST": 16, "SITE": "2", "L_BASE": "DOQ", "COMMENTS": "School of Medicine", "COLLEGE": "Tufts University", "L_TYPE": "CB", "ADDRESS": "136 Harrison Avenue", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Boston Campus"}},{"geometry": {"type": "Point", "coordinates": [-71.677013948811293, 42.246213433559646]}, "type": "Feature", "id": 138, "properties": {"CITYST": "North Grafton, MA", "OBJECTID": 191.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "168148", "ZIPCODE": "01536", "L_ACC_EST": 100, "SITE": "3", "L_BASE": "DOQ", "COLLEGE": "Tufts University", "L_TYPE": "CL", "ADDRESS": "200 Westboro Road", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "School of Veterinary Med"}},{"geometry": {"type": "Point", "coordinates": [-71.104113259832459, 42.335568397345675]}, "type": "Feature", "id": 139, "properties": {"OBJECTID": 192.0, "PLUS_FOUR": "6092", "URL": "http://www.hms.harvard.edu", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02115", "L_ACC_EST": 16, "SITE": "2", "L_SRC_1": "IN-WEBSITE", "L_BASE": "DOQ", "COLLEGE": "Harvard University", "L_TYPE": "CB", "ADDRESS": "25 Shattuck St.", "CITYST": "Boston, MA", "L_METH": "IN-KNOW", "GRAD": 0, "CAMPUS": "Medical School"}},{"geometry": {"type": "Point", "coordinates": [-71.091460597835876, 42.349367561456667]}, "type": "Feature", "id": 140, "properties": {"CITYST": "Boston, MA", "OBJECTID": 193.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167783", "SITE": "3", "L_ACC_EST": 16, "L_BASE": "DOQ", "COLLEGE": "Simmons College", "L_TYPE": "CB", "ADDRESS": "419 Commonwealth Ave.", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "School of Management"}},{"geometry": {"type": "Point", "coordinates": [-71.073669735797623, 42.337032435280314]}, "type": "Feature", "id": 141, "properties": {"CITYST": "Boston, MA", "OBJECTID": 194.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "164988", "SITE": "2", "L_ACC_EST": 100, "L_BASE": "DOQ", "COLLEGE": "Boston University", "L_TYPE": "CL", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Medical Campus"}},{"geometry": {"type": "Point", "coordinates": [-71.103529949824591, 42.335066454559914]}, "type": "Feature", "id": 142, "properties": {"CITYST": "Boston, MA", "OBJECTID": 195.0, "URL": "http://www.hsph.harvard.edu/", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02115", "L_ACC_EST": 16, "MAIN_TEL": "(617) 432-1031", "L_SRC_1": "IN-WEBSITE", "L_BASE": "DOQ", "COLLEGE": "Harvard University", "L_TYPE": "CB", "SITE": "3", "ADDRESS": "677 Huntington Ave", "L_METH": "IN-KNOW", "GRAD": 0, "CAMPUS": "School of Public Health"}},{"geometry": {"type": "Point", "coordinates": [-71.113952969097951, 42.375838265684344]}, "type": "Feature", "id": 143, "properties": {"CITYST": "Cambridge, MA", "OBJECTID": 196.0, "URL": "http://www.gsd.harvard.edu", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02138", "L_ACC_EST": 16, "SITE": "4", "L_SRC_1": "IN-WEBSITE", "L_BASE": "DOQ", "COLLEGE": "Harvard University", "L_TYPE": "CB", "ADDRESS": "48 Quincy Street", "L_METH": "IN-KNOW", "GRAD": 0, "CAMPUS": "Graduate School of Design"}},{"geometry": {"type": "Point", "coordinates": [-71.119524144515637, 42.379226318274561]}, "type": "Feature", "id": 144, "properties": {"CITYST": "Cambridge, MA", "OBJECTID": 197.0, "URL": "http://www.law.harvard.edu", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02138", "L_ACC_EST": 16, "SITE": "5", "L_SRC_1": "IN-WEBSITE", "L_BASE": "DOQ", "COLLEGE": "Harvard University", "L_TYPE": "CB", "ADDRESS": "1563 Mass Ave.", "L_METH": "IN-KNOW", "GRAD": 0, "CAMPUS": "Law School"}},{"geometry": {"type": "Point", "coordinates": [-71.121766859098997, 42.366566170717739]}, "type": "Feature", "id": 145, "properties": {"CITYST": "Boston, MA", "OBJECTID": 198.0, "URL": "http://www.hbs.edu", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02163", "L_ACC_EST": 100, "SITE": "6", "L_SRC_1": "IN-WEBSITE", "L_BASE": "DOQ", "COLLEGE": "Harvard University", "L_TYPE": "CF", "ADDRESS": "Soldiers Field Road", "L_METH": "IN-KNOW", "GRAD": 0, "CAMPUS": "Business School"}},{"geometry": {"type": "Point", "coordinates": [-71.122039462208136, 42.37137242950412]}, "type": "Feature", "id": 146, "properties": {"CITYST": "Cambridge, MA", "OBJECTID": 199.0, "URL": "http://www.ksg.harvard.edu", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02138", "L_ACC_EST": 100, "MAIN_TEL": "(617) 495-1100", "L_SRC_1": "IN-WEBSITE", "L_BASE": "DOQ", "COLLEGE": "Harvard University", "L_TYPE": "CF", "SITE": "7", "ADDRESS": "79 JFK Street", "L_METH": "IN-KNOW", "GRAD": 0, "CAMPUS": "School of Government"}},{"geometry": {"type": "Point", "coordinates": [-71.128005239237922, 42.381539332003996]}, "type": "Feature", "id": 147, "properties": {"CITYST": "Cambridge, MA", "OBJECTID": 200.0, "URL": "http://cfa-www.harvard.edu", "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "166027", "ZIPCODE": "02138", "L_ACC_EST": 16, "CAMPUS": "Center for Astrophysics", "L_BASE": "DOQ", "COLLEGE": "Harvard-Smithsonian", "L_TYPE": "CB", "SITE": "8", "ADDRESS": "60 Garden St.", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 495-7461"}},{"geometry": {"type": "Point", "coordinates": [-71.105083074399872, 42.341279585307319]}, "type": "Feature", "id": 148, "properties": {"CITYST": "Boston, MA", "OBJECTID": 201.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167783", "SITE": "2", "L_ACC_EST": 16, "L_BASE": "DOQ", "COLLEGE": "Simmons College", "L_TYPE": "CB", "ADDRESS": "Brookline Ave.", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Residence Campus"}},{"geometry": {"type": "Point", "coordinates": [-71.297364172693221, 42.322996400499683]}, "type": "Feature", "id": 149, "properties": {"CITYST": "Weston, MA", "OBJECTID": 202.0, "TYPE": "PRI", "UNDERGRAD": 0, "NCES_ID": "167358", "SITE": "6", "L_ACC_EST": 16, "L_BASE": "DOQ", "COMMENTS": "Conference Center", "COLLEGE": "Northeastern University", "L_TYPE": "CB", "ADDRESS": "Westcliff Road", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Henderson House"}},{"geometry": {"type": "Point", "coordinates": [-70.03702547500464, 41.297587402367732]}, "type": "Feature", "id": 150, "properties": {"CITYST": "Nantucket, MA", "OBJECTID": 203.0, "URL": "http://www.umassmarine.net", "TYPE": "PUB", "UNDERGRAD": 0, "NCES_ID": "166638", "SITE": "2", "L_ACC_EST": 500, "L_BASE": "DOQ", "COLLEGE": "University of Massachusetts", "L_TYPE": "EL", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Nantucket Field Station"}},{"geometry": {"type": "Point", "coordinates": [-70.944107235622909, 42.460717162941023]}, "type": "Feature", "id": 151, "properties": {"UNDERGRAD": 0, "CITYST": "Lynn", "OBJECTID": 204.0, "URL": "http://www.northshore.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167312", "ZIPCODE": "01901", "L_ACC_EST": 16, "MAIN_TEL": "(781) 593-6722", "L_BASE": "DOQ", "COMMENTS": "McGee Building", "COLLEGE": "North Shore Community College", "L_TYPE": "CB", "SITE": "2", "ADDRESS": "300 Broad Street", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Lynn Campus"}},{"geometry": {"type": "Point", "coordinates": [-70.885963249983391, 42.557977817585197]}, "type": "Feature", "id": 152, "properties": {"UNDERGRAD": 0, "CITYST": "Beverly", "OBJECTID": 205.0, "URL": "http://www.northshore.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167312", "ZIPCODE": "01915", "L_ACC_EST": 100, "MAIN_TEL": "(978) 236-1200", "L_BASE": "DOQ", "COMMENTS": "Cummings Center - Suite 121E", "COLLEGE": "North Shore Community College", "L_TYPE": "CB", "SITE": "3", "ADDRESS": "181 Elliott Street", "L_METH": "IN-WEBSITE", "GRAD": 0, "CAMPUS": "Beverly Campus"}},{"geometry": {"type": "Point", "coordinates": [-71.053915613587023, 42.374946987979207]}, "type": "Feature", "id": 153, "properties": {"UNDERGRAD": 621, "CITYST": "Boston, MA", "OBJECTID": 90.0, "URL": "http://www.mghihp.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "166869", "ZIPCODE": "02129", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Located in old Charlestown Navy Yard", "DEGREES": "M, D, C", "L_TYPE": "CB", "ADDRESS": "36 1st Avenue", "COLLEGE": "MGH Institute Of Health Professions", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(617) 726-3140"}},{"geometry": {"type": "Point", "coordinates": [-71.275031153890552, 42.524908264269968]}, "type": "Feature", "id": 154, "properties": {"COLL_BD_ID": "3554", "ZIPCODE": "01730", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "166887", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(781) 280-3200", "OBJECTID": 91.0, "URL": "http://www.middlesex.cc.ma.us", "UNDERGRAD": 9801, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Bedford, MA", "COMMENTS": "Also Lowell Campus", "COLLEGE": "Middlesex Community College", "ADDRESS": "Springs Road", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-70.876750973065484, 42.550299597436002]}, "type": "Feature", "id": 155, "properties": {"COLL_BD_ID": "9101", "ZIPCODE": "01915", "ON_CAMPUS": "56%", "DESCRIPTN": "College Of Art, Four-year, Coed", "NCES_ID": "166911", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(978) 922-8222", "OBJECTID": 92.0, "URL": "http://www.montserrat.edu", "UNDERGRAD": 383, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CL-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Beverly, MA", "COLLEGE": "Montserrat College of Art", "ADDRESS": "PO Box 26, 23 Essex St.", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.575845281294917, 42.256078221354969]}, "type": "Feature", "id": 156, "properties": {"COLL_BD_ID": "3529", "ZIPCODE": "01075", "ON_CAMPUS": "95%", "DESCRIPTN": "Liberal Arts College, Four-year, Women only", "NCES_ID": "166939", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 4, "MAIN_TEL": "(413) 538-2000", "OBJECTID": 93.0, "URL": "http://www.mtholyoke.edu", "UNDERGRAD": 2097, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "South Hadley, MA", "COMMENTS": "Women only", "COLLEGE": "Mount Holyoke College", "ADDRESS": "50 College Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.192971931670783, 42.294323224853407]}, "type": "Feature", "id": 157, "properties": {"COLL_BD_ID": "3530", "ZIPCODE": "02459", "ON_CAMPUS": "52%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "166948", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 928-4500", "OBJECTID": 94.0, "URL": "http://www.mountida.edu", "UNDERGRAD": 1253, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Newton Centre, MA", "COLLEGE": "Mount Ida College", "ADDRESS": "777 Dedham Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.983921114141239, 42.593301711700995]}, "type": "Feature", "id": 158, "properties": {"COLL_BD_ID": "3545", "ZIPCODE": "01440", "PLUS_FOUR": "1000", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "166957", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(978) 632-6600", "OBJECTID": 95.0, "URL": "http://www.mwcc.mass.edu", "UNDERGRAD": 3378, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CB", "L_METH": "IN-WEBSITE", "CITYST": "Gardner, MA", "COMMENTS": "Multiple campuses", "COLLEGE": "Mt. Wachusett Community College", "ADDRESS": "444 Green Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.128584915460877, 42.392648514607274]}, "type": "Feature", "id": 159, "properties": {"UNDERGRAD": 183, "CITYST": "Cambridge, MA", "OBJECTID": 96.0, "URL": "http://www.mtiweb.edu", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "166975", "ZIPCODE": "02140", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "122 Rindge Ave", "COLLEGE": "Muscular Therapy Institute", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 576-1300"}},{"geometry": {"type": "Point", "coordinates": [-71.096835470271998, 42.338627148428294]}, "type": "Feature", "id": 160, "properties": {"COLL_BD_ID": "3794", "ZIPCODE": "02115", "ON_CAMPUS": "14%", "DESCRIPTN": "College Of Art, Four-year, Coed", "NCES_ID": "166984", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 97, "MAIN_TEL": "(617) 267-6100", "OBJECTID": 97.0, "URL": "http://www.smfa.edu", "UNDERGRAD": 640, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "FD", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "School of the Museum of Fine Arts", "ADDRESS": "230 The Fenway", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.141871207211381, 42.346561689995681]}, "type": "Feature", "id": 161, "properties": {"UNDERGRAD": 1419, "CITYST": "Brighton, MA", "OBJECTID": 98.0, "URL": "http://www.bryman-institute.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "167020", "ZIPCODE": "02135", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Multiple campuses", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "1505 Commonwealth Ave", "COLLEGE": "Bryman Institute", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 783-9955"}},{"geometry": {"type": "Point", "coordinates": [-70.925552921287235, 41.672100813713442]}, "type": "Feature", "id": 162, "properties": {"UNDERGRAD": 65, "CITYST": "New Bedford, MA", "OBJECTID": 99.0, "URL": "http://www.rob-roy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "167039", "ZIPCODE": "02720", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "COMMENTS": "Corner of Clifford & Acushnet", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "1872 Acushnet Ave", "COLLEGE": "Rob Roy Academy-New Bedford", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 995-8711"}},{"geometry": {"type": "Point", "coordinates": [-71.086398233793517, 42.340957844328585]}, "type": "Feature", "id": 163, "properties": {"COLL_BD_ID": "3659", "ZIPCODE": "02115", "ON_CAMPUS": "40%", "DESCRIPTN": "College Of Music, Four-year, Coed", "NCES_ID": "167057", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 328, "MAIN_TEL": "(617) 585-1100", "OBJECTID": 100.0, "URL": "http://www.newenglandconservatory.edu", "UNDERGRAD": 384, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "New England Conservatory of Music", "ADDRESS": "290 Huntington Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.086662878236822, 42.35175626258404]}, "type": "Feature", "id": 164, "properties": {"UNDERGRAD": 412, "CITYST": "Boston, MA", "OBJECTID": 101.0, "URL": "http://www.neco.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "167093", "ZIPCODE": "02115", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "P", "L_TYPE": "FD", "ADDRESS": "424 Beacon Street", "COLLEGE": "New England College of Optometry", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 266-2030"}},{"geometry": {"type": "Point", "coordinates": [-71.152388092374068, 42.374765611359706]}, "type": "Feature", "id": 165, "properties": {"UNDERGRAD": 259, "CITYST": "Watertown, MA", "OBJECTID": 102.0, "URL": "http://www.nesa.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "167181", "ZIPCODE": "02472", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M", "L_TYPE": "CB", "ADDRESS": "40 Belmont Street", "COLLEGE": "New England School Of Acupuncture Inc", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 926-1788"}},{"geometry": {"type": "Point", "coordinates": [-71.066358190472243, 42.350725826094518]}, "type": "Feature", "id": 166, "properties": {"UNDERGRAD": 1040, "CITYST": "Boston, MA", "OBJECTID": 103.0, "URL": "http://www.nesl.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "167215", "ZIPCODE": "02116", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "P", "L_TYPE": "CB", "ADDRESS": "154 Stuart St", "COLLEGE": "New England School Of Law", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 451-0010"}},{"geometry": {"type": "Point", "coordinates": [-71.096410036587713, 42.34907002797916]}, "type": "Feature", "id": 167, "properties": {"UNDERGRAD": 143, "CITYST": "Boston, MA", "OBJECTID": 104.0, "URL": "http://www.nesop.com", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "167224", "ZIPCODE": "02215", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "FD", "ADDRESS": "537 Commonwealth Ave", "COLLEGE": "New England School Of Photography", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 437-1868"}},{"geometry": {"type": "Point", "coordinates": [-71.142166729626865, 42.331003341581848]}, "type": "Feature", "id": 168, "properties": {"COLL_BD_ID": "3639", "ZIPCODE": "02445", "ON_CAMPUS": "35%", "DESCRIPTN": "College Of Business, Liberal Arts College, Four-year, Coed", "NCES_ID": "167251", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 730-7000", "OBJECTID": 105.0, "URL": "http://www.newbury.edu", "UNDERGRAD": 1133, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Brookline, MA", "COLLEGE": "Newbury College", "ADDRESS": "129 Fisher Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.929172923493326, 42.041825089968391]}, "type": "Feature", "id": 169, "properties": {"COLL_BD_ID": "3666", "ZIPCODE": "01571", "ON_CAMPUS": "80%", "DESCRIPTN": "College Of Business, Liberal Arts College, Four-year, Coed", "NCES_ID": "167260", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 345, "MAIN_TEL": "(508) 213-1560", "OBJECTID": 106.0, "URL": "http://www.nichols.edu", "UNDERGRAD": 1327, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Dudley, MA", "COLLEGE": "Nichols College", "ADDRESS": "Box 5000, Center Road", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-73.104191203780516, 42.693246400161726]}, "type": "Feature", "id": 170, "properties": {"COLL_BD_ID": "3521", "ZIPCODE": "01247", "PLUS_FOUR": "4100", "ON_CAMPUS": "49%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "167288", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(413) 662-5000", "OBJECTID": 107.0, "URL": "http://www.mcla.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "North Adams, MA", "COLLEGE": "Massachusetts College of Liberal Arts", "ADDRESS": "375 Church Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.054759961129065, 42.365927568724047]}, "type": "Feature", "id": 171, "properties": {"UNDERGRAD": 150, "CITYST": "Boston, MA", "OBJECTID": 108.0, "URL": "http://www.nbss.org", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "167297", "ZIPCODE": "02113", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "39 North Bennet St", "COLLEGE": "North Bennet Street School", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 227-0155"}},{"geometry": {"type": "Point", "coordinates": [-70.968714207482265, 42.590067551641233]}, "type": "Feature", "id": 172, "properties": {"UNDERGRAD": 0, "CITYST": "Danvers, MA", "OBJECTID": 109.0, "URL": "http://www.northshore.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167312", "ZIPCODE": "01923", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "L_SRC_2": "www.collegeboard.com", "DEGREES": "A", "L_TYPE": "CB", "ADDRESS": "1 Ferncroft Road", "COLLEGE": "North Shore Community College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(978) 762-4000"}},{"geometry": {"type": "Point", "coordinates": [-71.117093987027459, 42.332122741074862]}, "type": "Feature", "id": 173, "properties": {"COLL_BD_ID": "3636", "ZIPCODE": "02445", "PLUS_FOUR": "7295", "ON_CAMPUS": "19%", "DESCRIPTN": "Proprietary, College Of Art, Technical College, Four-year, Coed", "NCES_ID": "167321", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 739-1700", "OBJECTID": 110.0, "URL": "http://www.neia.artinstitutes.edu", "UNDERGRAD": 1037, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CB", "L_METH": "IN-KNOW", "CITYST": "Brookline, MA", "COLLEGE": "Ai The New England Institute of Art and Design", "ADDRESS": "10 Brookline Place West", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.088747399377596, 42.339951101226276]}, "type": "Feature", "id": 174, "properties": {"COLL_BD_ID": "3667", "ZIPCODE": "02115", "CAMPUS": "Main Campus", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "167358", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 3675, "MAIN_TEL": "(617) 373-2000", "OBJECTID": 111.0, "URL": "http://www.northeastern.edu", "UNDERGRAD": 14492, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D, P", "L_TYPE": "CL", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Northeastern University", "ADDRESS": "360 Huntington Avenue", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.050948534148745, 42.796204270014599]}, "type": "Feature", "id": 175, "properties": {"COLL_BD_ID": "3674", "ZIPCODE": "01830", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167376", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(978) 556-3000", "OBJECTID": 112.0, "URL": "http://www.necc.mass.edu", "UNDERGRAD": 5390, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "FD", "L_METH": "IN-WEBSITE", "CITYST": "Haverhill, MA", "COMMENTS": "N/A", "COLLEGE": "Northern Essex Community College", "ADDRESS": "100 Elliott Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-72.600753307424796, 42.141868531027065]}, "type": "Feature", "id": 176, "properties": {"COLL_BD_ID": "3283", "ZIPCODE": "01013", "ON_CAMPUS": "48%", "DESCRIPTN": "Liberal Arts College, Four-year, Roman Catholic Church, Coed", "NCES_ID": "167394", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(413) 594-2761", "OBJECTID": 113.0, "URL": "http://www.elms.edu", "UNDERGRAD": 830, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Chicopee, MA", "COLLEGE": "College Of Our Lady Of The Elms", "ADDRESS": "291 Springfield Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.154435174323041, 42.321618057322539]}, "type": "Feature", "id": 177, "properties": {"COLL_BD_ID": "3689", "ZIPCODE": "02467", "ON_CAMPUS": "73.5%", "DESCRIPTN": "Liberal Arts College, Four-year, Women only", "NCES_ID": "167455", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 731-7000", "OBJECTID": 114.0, "URL": "http://www.pmc.edu", "UNDERGRAD": 487, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-KNOW", "CITYST": "Chestnut Hill, MA", "COLLEGE": "Pine Manor College", "ADDRESS": "400 Heath Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.304185869800008, 42.339014505269482]}, "type": "Feature", "id": 178, "properties": {"UNDERGRAD": 69, "CITYST": "Weston, MA", "OBJECTID": 115.0, "URL": "http://www.blessedjohnxxiii.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "167464", "ZIPCODE": "02493", "L_ACC_EST": 100, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M", "L_TYPE": "CL-CAMPUS", "ADDRESS": "558 South Ave", "COLLEGE": "Blessed John Xxiii National Seminary", "L_METH": "IN", "GRAD": 0, "MAIN_TEL": "(781) 899-5500"}},{"geometry": {"type": "Point", "coordinates": [-71.001794445701734, 42.252697606809029]}, "type": "Feature", "id": 179, "properties": {"UNDERGRAD": 0, "CITYST": "Quincy, MA", "OBJECTID": 116.0, "COLL_BD_ID": "3713", "URL": "http://www.quincycollege.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167525", "ZIPCODE": "02169", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "www.collegeboard.com", "L_BASE": "DOQ", "L_SRC_2": "nces.ed.gov", "DEGREES": "A", "L_TYPE": "CB-ADMIN", "ADDRESS": "34 Coddington Street", "COLLEGE": "Quincy College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 984-1700"}},{"geometry": {"type": "Point", "coordinates": [-71.79492734096182, 42.313766354554879]}, "type": "Feature", "id": 180, "properties": {"UNDERGRAD": 0, "CITYST": "Worcester, MA", "OBJECTID": 117.0, "COLL_BD_ID": "3714", "URL": "http://www.qcc.mass.edu", "TYPE": "PUB", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167534", "ZIPCODE": "01606", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "L_SRC_2": "www.collegeboard.com", "DEGREES": "A", "L_TYPE": "CB-ADMIN", "ADDRESS": "670 West Boylston Street", "COLLEGE": "Quinsigamond Community College", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(508) 854-4262"}},{"geometry": {"type": "Point", "coordinates": [-71.11921047862225, 42.352005220854309]}, "type": "Feature", "id": 181, "properties": {"UNDERGRAD": 184, "CITYST": "Boston, MA", "OBJECTID": 118.0, "URL": "http://www.retstech.com", "TYPE": "PRI", "DESCRIPTN": "2-year", "NCES_ID": "167543", "ZIPCODE": "02215", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "965 Commonwealth Ave", "COLLEGE": "Rets Technical Center", "L_METH": "IN-KNOW", "GRAD": 0, "MAIN_TEL": "(617) 783-1197"}},{"geometry": {"type": "Point", "coordinates": [-71.308945803440963, 42.350991242604273]}, "type": "Feature", "id": 182, "properties": {"COLL_BD_ID": "3723", "ZIPCODE": "02493", "PLUS_FOUR": "1571", "ON_CAMPUS": "49%", "DESCRIPTN": "Liberal Arts College, Four-year, Roman Catholic Church, Women only", "NCES_ID": "167598", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 283, "MAIN_TEL": "(781) 768-7000", "OBJECTID": 119.0, "URL": "http://www.regiscollege.edu", "UNDERGRAD": 800, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Weston, MA", "COLLEGE": "Regis College", "ADDRESS": "235 Wellesley Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.091800052684732, 42.332571202589641]}, "type": "Feature", "id": 183, "properties": {"COLL_BD_ID": "3740", "ZIPCODE": "02120", "PLUS_FOUR": "3400", "DESCRIPTN": "Community College, Two-year, Coed", "NCES_ID": "167631", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 427-0060", "OBJECTID": 120.0, "URL": "http://www.rcc.mass.edu", "UNDERGRAD": 2202, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Roxbury Crossing, MA", "COLLEGE": "Roxbury Community College", "ADDRESS": "1234 Columbus Avenue", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.162382855288143, 42.343957542468601]}, "type": "Feature", "id": 184, "properties": {"COLL_BD_ID": "3295", "ZIPCODE": "02135", "ON_CAMPUS": "100%", "DESCRIPTN": "Liberal Arts College Seminary,4-year, Roman Catholic Church, Men O", "NCES_ID": "167677", "L_ACC_EST": 100, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(617) 254-2610", "OBJECTID": 121.0, "URL": "http://www.sjs.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, P", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Brighton, MA", "COLLEGE": "St. John's Seminary College", "ADDRESS": "127 Lake Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-70.893041892459237, 42.504367692037434]}, "type": "Feature", "id": 185, "properties": {"COLL_BD_ID": "3522", "ZIPCODE": "01970", "PLUS_FOUR": "5353", "ON_CAMPUS": "15%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "167729", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(978) 542-6000", "OBJECTID": 122.0, "URL": "http://www.salemstate.edu", "UNDERGRAD": 0, "SITE": "1", "L_BASE": "DOQ", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Salem, MA", "COLLEGE": "Salem State College", "ADDRESS": "352 Lafayette Street", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.814926111197224, 42.313163932729644]}, "type": "Feature", "id": 186, "properties": {"UNDERGRAD": 452, "CITYST": "Worcester, MA", "OBJECTID": 123.0, "URL": "http://www.salterschool.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "167738", "ZIPCODE": "01606", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB-ADMIN", "ADDRESS": "155 Ararat St", "COLLEGE": "The Salter School-Worcester", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 853-1074"}},{"geometry": {"type": "Point", "coordinates": [-71.099854537180107, 42.339336052579988]}, "type": "Feature", "id": 187, "properties": {"COLL_BD_ID": "3761", "ZIPCODE": "02115", "CAMPUS": "Main Campus", "PLUS_FOUR": "5898", "ON_CAMPUS": "75%", "DESCRIPTN": "Liberal Arts College, Four-year, Women only", "NCES_ID": "167783", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 521-2000", "OBJECTID": 125.0, "URL": "http://www.simmons.edu", "UNDERGRAD": 1555, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "FD", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Simmons College", "ADDRESS": "300 The Fenway", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-73.381033672059161, 42.20852842901003]}, "type": "Feature", "id": 188, "properties": {"COLL_BD_ID": "3795", "ZIPCODE": "01230", "PLUS_FOUR": "1990", "ON_CAMPUS": "85%", "DESCRIPTN": "Liberal Arts College Four-year Coed", "NCES_ID": "167792", "L_ACC_EST": 16, "L_SRC_1": "www.collegeboard.com", "L_SRC_2": "nces.ed.gov", "GRAD": 0, "MAIN_TEL": "(413) 528-0771", "OBJECTID": 126.0, "URL": "http://www.simons-rock.edu", "UNDERGRAD": 392, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Great Barrington, MA", "COLLEGE": "Simon's Rock College of Bard", "ADDRESS": "84 Alford Road", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.639957959375948, 42.318150422001722]}, "type": "Feature", "id": 189, "properties": {"COLL_BD_ID": "3762", "ZIPCODE": "01063", "ON_CAMPUS": "88%", "DESCRIPTN": "Liberal Arts College, Four-year, Women only", "NCES_ID": "167835", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 477, "MAIN_TEL": "(413) 585-2700", "OBJECTID": 127.0, "URL": "http://www.smith.edu", "UNDERGRAD": 2682, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Northampton, MA", "COMMENTS": "Women only", "COLLEGE": "Smith College", "ADDRESS": "Elm Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.081865996084346, 42.010103191366959]}, "type": "Feature", "id": 190, "properties": {"UNDERGRAD": 131, "CITYST": "South Easton, MA", "OBJECTID": 128.0, "URL": "http://www.sersd.org", "TYPE": "PUB", "DESCRIPTN": "less-than-2-year", "NCES_ID": "167871", "ZIPCODE": "02375", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "250 Foundry St", "COLLEGE": "Southeastern Technical Institute", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(508) 238-1860"}},{"geometry": {"type": "Point", "coordinates": [-72.556773791507993, 42.101606606312622]}, "type": "Feature", "id": 191, "properties": {"COLL_BD_ID": "3763", "ZIPCODE": "01109", "ON_CAMPUS": "87%", "DESCRIPTN": "College Of Health Sciences, Liberal Arts College, Four-year, Coed", "NCES_ID": "167899", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(413) 748-3000", "OBJECTID": 129.0, "URL": "http://www.spfldcol.edu", "UNDERGRAD": 2133, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Springfield, MA", "COLLEGE": "Springfield College", "ADDRESS": "263 Alden Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.006094186227386, 41.628646873123749]}, "type": "Feature", "id": 192, "properties": {"COLL_BD_ID": "3786", "ZIPCODE": "02747", "CAMPUS": "Dartmouth", "PLUS_FOUR": "2300", "ON_CAMPUS": "48%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "167987", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 925, "MAIN_TEL": "(508) 999-8000", "OBJECTID": 131.0, "URL": "http://www.umassd.edu", "UNDERGRAD": 6850, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "North Dartmouth, MA", "COLLEGE": "University of Massachusetts Dartmouth", "ADDRESS": "285 Old Westport Road", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.076872946412209, 42.057228180259393]}, "type": "Feature", "id": 193, "properties": {"COLL_BD_ID": "3770", "ZIPCODE": "02357", "PLUS_FOUR": "0100", "ON_CAMPUS": "76%", "DESCRIPTN": "Liberal Arts College, Four-year, Roman Catholic Church, Coed", "NCES_ID": "167996", "L_ACC_EST": 500, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 15, "MAIN_TEL": "(508) 565-1000", "OBJECTID": 132.0, "URL": "http://www.stonehill.edu", "UNDERGRAD": 2474, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M,", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Easton, MA", "COLLEGE": "Stonehill College", "ADDRESS": "320 Washington Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.062375898705668, 42.358925896206621]}, "type": "Feature", "id": 194, "properties": {"COLL_BD_ID": "3771", "ZIPCODE": "02108", "ON_CAMPUS": "21%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "168005", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 1955, "MAIN_TEL": "(617) 573-8000", "OBJECTID": 133.0, "URL": "http://www.suffolk.edu", "UNDERGRAD": 3893, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, D, P", "L_TYPE": "FD", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Suffolk University", "ADDRESS": "8 Ashburton Place", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.092284506657819, 41.902120826342724]}, "type": "Feature", "id": 195, "properties": {"UNDERGRAD": 81, "CITYST": "Taunton, MA", "OBJECTID": 134.0, "URL": "http://www.rob-roy.com", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "168032", "ZIPCODE": "02780", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "1 School St", "COLLEGE": "Rob Roy Academy-Taunton", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 822-1405"}},{"geometry": {"type": "Point", "coordinates": [-71.125415511723745, 42.401128865204527]}, "type": "Feature", "id": 196, "properties": {"COLL_BD_ID": "3901", "ZIPCODE": "02155", "ON_CAMPUS": "75%", "DESCRIPTN": "University, Four-year, Coed", "NCES_ID": "168148", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 2963, "MAIN_TEL": "(617) 628-5000", "OBJECTID": 135.0, "URL": "http://www.tufts.edu", "UNDERGRAD": 4874, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M, D, P", "L_TYPE": "CB", "L_METH": "IN-WEBSITE", "CITYST": "Medford, MA", "COLLEGE": "Tufts University", "ADDRESS": "169 Holland St.", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.305798970273926, 42.293500875178118]}, "type": "Feature", "id": 197, "properties": {"COLL_BD_ID": "3957", "ZIPCODE": "02481", "PLUS_FOUR": "8203", "ON_CAMPUS": "94%", "DESCRIPTN": "Liberal Arts College, Four-year, Women only", "NCES_ID": "168218", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(781) 283-1000", "OBJECTID": 136.0, "URL": "http://www.wellesley.edu", "UNDERGRAD": 2291, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Wellesley, MA", "COLLEGE": "Wellesley College", "ADDRESS": "106 Central Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.520579238467846, 42.116138780994973]}, "type": "Feature", "id": 198, "properties": {"COLL_BD_ID": "3962", "ZIPCODE": "01119", "PLUS_FOUR": "2684", "ON_CAMPUS": "78%", "DESCRIPTN": "Four-year, Coed", "NCES_ID": "168254", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 727, "MAIN_TEL": "(413) 782-3111", "OBJECTID": 138.0, "URL": "http://www.wnec.edu", "UNDERGRAD": 3135, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A, B, M, P", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Springfield, MA", "COLLEGE": "Western New England College", "ADDRESS": "1215 Wilbraham Road", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-72.795916816313834, 42.131528140878913]}, "type": "Feature", "id": 199, "properties": {"COLL_BD_ID": "3523", "ZIPCODE": "01086", "PLUS_FOUR": "1630", "ON_CAMPUS": "56%", "DESCRIPTN": "Liberal Arts College, Teachers College/College Of Education, Four-year", "NCES_ID": "168263", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 645, "MAIN_TEL": "(413) 572-5300", "OBJECTID": 139.0, "URL": "http://www.wsc.ma.edu", "UNDERGRAD": 4033, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Westfield, MA", "COLLEGE": "Westfield State College", "ADDRESS": "577 Western Avenue", "TYPE": "PUB"}},{"geometry": {"type": "Point", "coordinates": [-71.123224574092831, 42.376568616485123]}, "type": "Feature", "id": 200, "properties": {"UNDERGRAD": 175, "CITYST": "Cambridge, MA", "OBJECTID": 140.0, "URL": "http://www.wjst.edu", "TYPE": "PRI", "DESCRIPTN": "4-year or above", "NCES_ID": "168272", "ZIPCODE": "02138", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "M, D, P", "L_TYPE": "CB", "ADDRESS": "3 Phillips Pl", "COLLEGE": "Weston Jesuit School Of Theology", "L_METH": "IN-WEBSITE", "GRAD": 0, "MAIN_TEL": "(617) 492-1960"}},{"geometry": {"type": "Point", "coordinates": [-71.184094332789243, 41.966751693264513]}, "type": "Feature", "id": 201, "properties": {"COLL_BD_ID": "3963", "ZIPCODE": "02766", "ON_CAMPUS": "97%", "DESCRIPTN": "Liberal Arts College, Four-year, Coed", "NCES_ID": "168281", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(508) 286-7722", "OBJECTID": 141.0, "URL": "http://www.wheatoncollege.edu", "UNDERGRAD": 1549, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B", "L_TYPE": "CB-ADMIN", "L_METH": "IN-WEBSITE", "CITYST": "Norton, MA", "COLLEGE": "Wheaton College", "ADDRESS": "26 East Main Street", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-71.105782056337148, 42.34210115931397]}, "type": "Feature", "id": 202, "properties": {"COLL_BD_ID": "3964", "ZIPCODE": "02215", "ON_CAMPUS": "70%", "DESCRIPTN": "Liberal Arts College, Teachers College/College Of Education, Four-year", "NCES_ID": "168290", "L_ACC_EST": 16, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(617) 734-5200", "OBJECTID": 142.0, "URL": "http://www.wheelock.edu", "UNDERGRAD": 587, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "B, M", "L_TYPE": "CL", "L_METH": "IN-KNOW", "CITYST": "Boston, MA", "COLLEGE": "Wheelock College", "ADDRESS": "200 The Riverway", "TYPE": "PRI"}},{"geometry": {"type": "Point", "coordinates": [-70.645372134956602, 41.549082284674604]}, "type": "Feature", "id": 203, "properties": {"UNDERGRAD": 44, "CITYST": "Falmouth, MA", "OBJECTID": 124.0, "URL": "http://www.sea.edu", "TYPE": "PRI", "DESCRIPTN": "less-than-2-year", "NCES_ID": "167774", "ZIPCODE": "02540", "L_ACC_EST": 16, "SITE": "1", "L_SRC_1": "nces.ed.gov", "L_BASE": "DOQ", "DEGREES": "C", "L_TYPE": "CB", "ADDRESS": "171 Woods Hole Road", "COLLEGE": "Sea Education Association Inc", "L_METH": "IN-VERB", "GRAD": 0, "MAIN_TEL": "(508) 540-3954"}},{"geometry": {"type": "Point", "coordinates": [-72.580486533120066, 42.108564635075993]}, "type": "Feature", "id": 204, "properties": {"COLL_BD_ID": "3791", "ZIPCODE": "01102", "PLUS_FOUR": "9000", "DESCRIPTN": "Community College, Technical College, Two-year, Coed", "NCES_ID": "167905", "L_ACC_EST": 100, "L_SRC_1": "nces.ed.gov", "L_SRC_2": "www.collegeboard.com", "GRAD": 0, "MAIN_TEL": "(413) 781-7822", "OBJECTID": 130.0, "URL": "http://www.stcc.edu", "UNDERGRAD": 4648, "SITE": "1", "L_BASE": "DOQ", "DEGREES": "A", "L_TYPE": "CL-CAMPUS", "L_METH": "IN-WEBSITE", "CITYST": "Springfield, MA", "COLLEGE": "Springfield Technical Community College", "ADDRESS": "One Armory Square", "TYPE": "PUB"}}]} diff --git a/public/assets/vendor/leaflet-ajax/example/counties.geojson b/public/assets/vendor/leaflet-ajax/example/counties.geojson new file mode 100644 index 00000000..9d0a0648 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/counties.geojson @@ -0,0 +1 @@ +{"type":"FeatureCollection","features":[{"geometry": {"type": "Polygon", "coordinates": [[[-72.999553207299769, 42.701356308602939], [-72.997947896143842, 42.701207222881692], [-72.950753259743522, 42.704936960386796], [-72.949735418809922, 42.705228284760494], [-72.949176224677728, 42.70476829676506], [-72.949023226819079, 42.704607525730353], [-72.948893885296201, 42.704429712095347], [-72.948788071758557, 42.704234587446493], [-72.948712717285488, 42.704063389821307], [-72.948676807013257, 42.703839839415387], [-72.948702599978006, 42.703634692858969], [-72.948774692309755, 42.7034469726783], [-72.948871052076441, 42.703173417699773], [-72.948958183677007, 42.703008017002063], [-72.949077513809812, 42.702746058228939], [-72.949204336167327, 42.702512635679206], [-72.94938534368886, 42.70227340196432], [-72.949565942891326, 42.702074777634238], [-72.949731546238226, 42.70182403220759], [-72.949912140983102, 42.701625317301257], [-72.950116572329577, 42.701375164775115], [-72.950320136066267, 42.701188045395092], [-72.950578215095291, 42.700977733664558], [-72.950850729686721, 42.700848269357948], [-72.951161825586624, 42.700724532442315], [-72.951441927698241, 42.700611897574625], [-72.951690912840746, 42.700510276499315], [-72.951964080326988, 42.700335244886901], [-72.952222454895661, 42.70009053343508], [-72.95248876695554, 42.699840769644247], [-72.95277089993381, 42.699562626256615], [-72.95323231275664, 42.699188235144284], [-72.953474669895115, 42.698995580485565], [-72.953600506522804, 42.698842023754473], [-72.953749725604723, 42.698654500733007], [-72.953869247995584, 42.698386231593631], [-72.953879846391331, 42.698158225999315], [-72.95382821753735, 42.697952340528047], [-72.953660807712339, 42.697717029527873], [-72.953385438300259, 42.697452644358513], [-72.953209181852685, 42.697320351104807], [-72.953002323470116, 42.697136673435026], [-72.952680451033146, 42.696877372604604], [-72.95239750840669, 42.696601826187454], [-72.952206510656211, 42.696412365858926], [-72.952100364457678, 42.696229132244554], [-72.951925163175019, 42.695999498609012], [-72.951726788298458, 42.695775827722649], [-72.951621086986719, 42.695569449705424], [-72.951515153222431, 42.695368836814339], [-72.951416811171867, 42.695179832531394], [-72.951357620989896, 42.69496845878772], [-72.951298945572546, 42.694705309805109], [-72.951366216840697, 42.694282932767187], [-72.951447684791859, 42.693952210666588], [-72.951567642735085, 42.693644593781578], [-72.951663424439261, 42.69340534494966], [-72.951822722813105, 42.693057259269288], [-72.951949921799681, 42.692772689318957], [-72.952092543825728, 42.692516555870029], [-72.952328666744364, 42.692192263406163], [-72.952493291280007, 42.692027596297073], [-72.952736277583099, 42.691789287935542], [-72.952854158387012, 42.691635291268447], [-72.952980090095451, 42.691470569426905], [-72.953121498607331, 42.691294308785693], [-72.953224347522294, 42.691123664504175], [-72.953389272843467, 42.69092468974457], [-72.95356202513527, 42.690731738769962], [-72.953835976766541, 42.690481784466698], [-72.954086285098484, 42.690259766897753], [-72.954366660553504, 42.690118940212834], [-72.954738637550591, 42.690086710207879], [-72.955087317627402, 42.690060354251287], [-72.955466537384709, 42.690051079134001], [-72.955892036189255, 42.690058686355464], [-72.956464222370101, 42.690113331971816], [-72.957129161139378, 42.690157352339298], [-72.957431131770107, 42.690153546017989], [-72.957795600298937, 42.690087008270162], [-72.958159866907707, 42.690048652190512], [-72.958454453901112, 42.690010633798281], [-72.958781210821272, 42.689881005446352], [-72.959053950783058, 42.689716674955903], [-72.959335054913026, 42.689518385851756], [-72.959678571355482, 42.689274921818537], [-72.959896723129404, 42.689161876950337], [-72.960083749994993, 42.689048684552766], [-72.960271115500888, 42.688918561373924], [-72.960560217745893, 42.688697119690865], [-72.960825278807008, 42.68854413596528], [-72.961074854401687, 42.688391797481287], [-72.961370897344295, 42.688227706977415], [-72.961713335194446, 42.688069781565076], [-72.96200116089905, 42.687951349973915], [-72.962304470225902, 42.687827049720291], [-72.962576264149874, 42.687748794093338], [-72.962793773750519, 42.687692562518421], [-72.96310426876795, 42.687614986363208], [-72.963422452239712, 42.687547935933509], [-72.96380228916621, 42.687492438508222], [-72.964042256756912, 42.68748885961265], [-72.964382119366917, 42.687530111812372], [-72.964776743299396, 42.687543659275299], [-72.965194133264887, 42.687586267633719], [-72.965603513579964, 42.687656976313633], [-72.965935262817695, 42.687727047371709], [-72.966329243741527, 42.687786244470857], [-72.966653349240715, 42.687873876849736], [-72.967077149231741, 42.688008050794075], [-72.967408725697439, 42.688112422453628], [-72.967739874999012, 42.688245519146591], [-72.968040677535683, 42.688338485378246], [-72.96831847580944, 42.688397440407151], [-72.968904670653146, 42.688566098498931], [-72.969352619457837, 42.688631262111663], [-72.969669344220023, 42.688684677317973], [-72.970132179008516, 42.688807089809927], [-72.970533865111705, 42.688871756767149], [-72.970773194109711, 42.688913728841584], [-72.971004931711676, 42.688954626586224], [-72.971336929326185, 42.689019097065547], [-72.971584044554774, 42.68905475609435], [-72.971955162289589, 42.689085504624536], [-72.972334078090512, 42.689110480569347], [-72.972566033538186, 42.689134536233965], [-72.972821497645796, 42.689135783661825], [-72.97314651322344, 42.689126060580222], [-72.973456795359425, 42.689070877555238], [-72.973674079248227, 42.689020840635052], [-72.973914858156789, 42.688947455273109], [-72.97421016784061, 42.688857528216637], [-72.974420282874135, 42.688762024499496], [-72.974692345299061, 42.68864880397274], [-72.97491826743105, 42.688530049192792], [-72.975106221280313, 42.688343083084469], [-72.975240208086063, 42.688155094685527], [-72.975366054418515, 42.687979094382626], [-72.975438226198477, 42.687767675634419], [-72.97547920649626, 42.687579253261056], [-72.975521873143578, 42.687254589039341], [-72.975524568309439, 42.687026050257053], [-72.975535521995852, 42.686774987768366], [-72.975599670583449, 42.686580597470744], [-72.975663752948662, 42.686404214619984], [-72.97576732948923, 42.686153050099463], [-72.975855545900686, 42.685902621751403], [-72.975965975622628, 42.685719974873287], [-72.976131373956548, 42.685492779995457], [-72.976296334082349, 42.685293770648059], [-72.976493708461931, 42.684957586418314], [-72.976682384051244, 42.684718838947767], [-72.976809260456008, 42.68445720186714], [-72.97694405289721, 42.684194923274219], [-72.977055341331791, 42.683955543183494], [-72.977127302744634, 42.683761592137479], [-72.977145811051159, 42.683510342575929], [-72.977148424196685, 42.683299360961108], [-72.977105581705814, 42.68300784007964], [-72.977022979433627, 42.682790024345117], [-72.976940188170573, 42.682590127606083], [-72.976865720397086, 42.682349699459593], [-72.976628903031752, 42.682096669774644], [-72.976476968756216, 42.681862272768676], [-72.976286225612881, 42.68163287287058], [-72.976096950624623, 42.681294333398135], [-72.975944693806596, 42.681082448158826], [-72.975823749677758, 42.680847654809916], [-72.975748232772588, 42.68068709894586], [-72.975650916325392, 42.680429495168717], [-72.975622950181204, 42.680183970831521], [-72.975618052688745, 42.679938692186525], [-72.975667541901856, 42.67968146504144], [-72.975599959770889, 42.679515765871685], [-72.975842699274352, 42.67928308152397], [-72.97602999045327, 42.679152392360649], [-72.976309839283971, 42.67904527999238], [-72.976651045809149, 42.67897897859163], [-72.977077212983957, 42.678929687267846], [-72.977340120885174, 42.678948295569292], [-72.977610824903863, 42.678961131504124], [-72.978739388897139, 42.679058701120084], [-72.979690320288796, 42.679126391809824], [-72.979968924796538, 42.679122284826676], [-72.980317009786276, 42.679135834303572], [-72.980842493537438, 42.679189876150986], [-72.981453376749641, 42.679227605467666], [-72.981901995684936, 42.679235359982648], [-72.982342963341893, 42.67925500528041], [-72.982760798577004, 42.679245774747002], [-72.983209552213154, 42.679254062665237], [-72.983704984584961, 42.679239241286083], [-72.984068962721508, 42.679212600547736], [-72.984471527670536, 42.679192305672665], [-72.984827619081258, 42.679188272234704], [-72.985152902156386, 42.679155912803935], [-72.985478208633467, 42.67913489639399], [-72.985973730031134, 42.679103227831504], [-72.986222376762797, 42.679019000780151], [-72.986516992427127, 42.678974697180891], [-72.986749908697462, 42.678901295247499], [-72.986967268889941, 42.678851231613109], [-72.987339881943754, 42.678756403962929], [-72.987696545033586, 42.678683748606062], [-72.987921478902678, 42.678639257801983], [-72.988223876548744, 42.678583595419546], [-72.988464005686154, 42.678562496746231], [-72.988905563780321, 42.678524667849949], [-72.989145791601288, 42.67849744418816], [-72.989440280476032, 42.678453134706885], [-72.989775093948126, 42.678272083666421], [-72.989885519985322, 42.678101847061804], [-72.989842708841252, 42.677798534872373], [-72.989736792891549, 42.677592282096853], [-72.989600212556041, 42.677368957847264], [-72.988876130116523, 42.675800444897298], [-72.988696112436116, 42.675313789913311], [-72.988621905029817, 42.675044644165013], [-72.988640476841439, 42.674787808522026], [-72.988728613326373, 42.674536829401085], [-72.988955978599733, 42.674281175597947], [-72.989282458656106, 42.67414588000365], [-72.989624264495902, 42.674044688854174], [-72.989965295425506, 42.673977809579711], [-72.990591970510806, 42.673998990373683], [-72.991449459094568, 42.67410614311742], [-72.9923071820686, 42.674207614370282], [-72.993056945437871, 42.674268788224396], [-72.993606204235462, 42.674271865548725], [-72.994077473275567, 42.674325377077921], [-72.994356078786154, 42.674332489360808], [-72.994665645501229, 42.674322904447756], [-72.994960220516916, 42.67427290728812], [-72.995294702257368, 42.674120564659354], [-72.995458982762941, 42.673978886526626], [-72.995615834954734, 42.673796788965973], [-72.995718088382077, 42.67364303818399], [-72.99579021164709, 42.673443399749743], [-72.995639220432111, 42.673117359790773], [-72.995227081267458, 42.672635338125673], [-72.994951659741503, 42.672376721810032], [-72.993373842852264, 42.671015097417239], [-72.99192538590377, 42.669847605784874], [-72.989818905911122, 42.668077429521951], [-72.988944713066104, 42.667410108822089], [-72.988722725275977, 42.667226688143693], [-72.988392422555634, 42.667013150153402], [-72.98816188887514, 42.666886109765819], [-72.987854106389889, 42.666747728810989], [-72.987554218055934, 42.666597451199685], [-72.987115207652877, 42.66642978564839], [-72.985520847894193, 42.665826805164883], [-72.98486599700685, 42.665595460337173], [-72.98414837792501, 42.665454411792339], [-72.98330740988898, 42.665261011732632], [-72.982813220758246, 42.665178940334819], [-72.982451191957338, 42.665056997152377], [-72.982119485813058, 42.664968966919851], [-72.981641512984766, 42.664829330917946], [-72.981317730446676, 42.664730572807343], [-72.981071629554364, 42.664614972268723], [-72.980763995719059, 42.664476570771086], [-72.980426253600825, 42.66424059718593], [-72.980072644257632, 42.664056055194081], [-72.979904108536928, 42.663923702811388], [-72.97974335817932, 42.663779996247435], [-72.979582721293767, 42.663630705901973], [-72.979352830774346, 42.663451870410505], [-72.979153713218935, 42.663279483170307], [-72.978724321367551, 42.662963647142369], [-72.978463548099015, 42.662773410627999], [-72.977865924840614, 42.662295951817697], [-72.977567852135252, 42.661997609533984], [-72.977354294348032, 42.661744913466684], [-72.977033031952018, 42.661440653711473], [-72.976833721215399, 42.661290683466341], [-72.976618814272825, 42.661141452379916], [-72.976403613491883, 42.661031659552776], [-72.976141937337559, 42.660921919820318], [-72.975764434499695, 42.660793941327029], [-72.975447757517401, 42.660752427945852], [-72.975130146994374, 42.660790785776364], [-72.974803583531425, 42.660926043530957], [-72.974467773377597, 42.661192597828169], [-72.973576454546148, 42.661981590484082], [-72.972685198789705, 42.662748156314912], [-72.97253660927673, 42.662878348123591], [-72.972255879688532, 42.66305974191706], [-72.971944360496849, 42.663223520405779], [-72.971648147732665, 42.663410691974434], [-72.97127487935343, 42.663568502402001], [-72.971010060292386, 42.66372105971795], [-72.970528561961032, 42.663872862525608], [-72.970164145095751, 42.66394502451071], [-72.969908168715193, 42.664006262484314], [-72.969404003515891, 42.664112251536629], [-72.969179097968492, 42.664156256479323], [-72.968675667775159, 42.664199749528869], [-72.968212164797876, 42.664145406602266], [-72.967965141075183, 42.664104158092478], [-72.967733391308244, 42.664074419458835], [-72.967247026595842, 42.663991732303693], [-72.96701539953952, 42.663961990680853], [-72.96673716998292, 42.663937431813103], [-72.966489839234171, 42.663924814800041], [-72.966110859606573, 42.663916658574024], [-72.965785851143963, 42.663926363503499], [-72.96555346823483, 42.663947947778091], [-72.965119476255069, 42.664002969354819], [-72.964740300784825, 42.664017859745776], [-72.964367959154288, 42.664095775925134], [-72.964096381601806, 42.664168362814117], [-72.963855561426797, 42.66424686180995], [-72.963667755111345, 42.664417513591857], [-72.963518954804385, 42.664576326831131], [-72.963346100976182, 42.664786763637309], [-72.963209069606492, 42.665226242395583], [-72.963034746554712, 42.665567786245603], [-72.962820571298437, 42.666000408050984], [-72.962654890032553, 42.666262522189967], [-72.962551580075043, 42.666478739898601], [-72.962401910973128, 42.666695003930201], [-72.96228386122165, 42.666859728585123], [-72.962002586652616, 42.667098454706121], [-72.961792848597554, 42.667165841952148], [-72.96150573763866, 42.667226914590131], [-72.961250287799103, 42.667248691690084], [-72.960871393594942, 42.667229262772914], [-72.960431167632578, 42.667163970297523], [-72.960168540799287, 42.667134066411869], [-72.959913795256384, 42.667081013785754], [-72.959597423956623, 42.667021986419783], [-72.958754408182827, 42.66700616054208], [-72.958182117459955, 42.666980160681746], [-72.957811344254239, 42.666931988641196], [-72.95736301425049, 42.666901089530768], [-72.957054662771583, 42.66681944573466], [-72.956730784843529, 42.666720530337209], [-72.956361113758362, 42.666598602352003], [-72.956068465546267, 42.666494249688846], [-72.955799003657262, 42.666390144419147], [-72.955560399105238, 42.666285649887044], [-72.955368196686337, 42.666193535344668], [-72.955176400001491, 42.666060900309489], [-72.95496995969782, 42.665854171695898], [-72.954886952383376, 42.665693696640645], [-72.954812809606366, 42.665436413955852], [-72.95479805709229, 42.664750634376716], [-72.954754685015033, 42.664510340699138], [-72.954719542005705, 42.664224926638397], [-72.954661526978498, 42.663910539552134], [-72.954609383697871, 42.663744633852126], [-72.954559174894001, 42.663430148419792], [-72.954532044851476, 42.663127166854181], [-72.954542301194735, 42.66292167120632], [-72.954583325781812, 42.662733164740438], [-72.954586525082703, 42.662470406499857], [-72.954604917842261, 42.662242210179514], [-72.954702681968911, 42.661843211121742], [-72.95472887912419, 42.661614916258216], [-72.954808453959856, 42.661426554547141], [-72.954889762520963, 42.661112664069258], [-72.954953649230049, 42.660947548339152], [-72.955066043299951, 42.660616970187505], [-72.955193715748507, 42.66030357597252], [-72.955281759227162, 42.660070090344036], [-72.95534604887257, 42.659864454092528], [-72.955371375444642, 42.659693611348366], [-72.955460483687858, 42.65937962199898], [-72.955518599937719, 42.659054768707847], [-72.955586659918296, 42.658563857971018], [-72.955656631925137, 42.657913023123434], [-72.955666766543814, 42.65646281213985], [-72.955628938154064, 42.655771109011802], [-72.955638023457283, 42.655045682286577], [-72.955580336433044, 42.654703110084782], [-72.955479063324944, 42.654448419680804], [-72.955282285130721, 42.653787438984708], [-72.955103129623524, 42.653260746508089], [-72.954890771016906, 42.652928044591178], [-72.954641450829598, 42.652447251976113], [-72.954421842621855, 42.652080337545286], [-72.954300485355915, 42.651879829119785], [-72.954233082742761, 42.651702320390093], [-72.954081299369861, 42.651472933669453], [-72.95391390966121, 42.651243743134167], [-72.95359130002926, 42.651058731173343], [-72.953244691071518, 42.650948838346835], [-72.952912796193246, 42.650895120667563], [-72.952650118858372, 42.65086520107824], [-72.952584773481561, 42.65053343750521], [-72.95104085357157, 42.641317602804705], [-72.950979503420328, 42.640952024591833], [-72.954559871616226, 42.628612807564892], [-72.955577556142885, 42.625093139057057], [-72.975341993164477, 42.556052110933784], [-72.979005118408296, 42.541725325979804], [-72.968563240645864, 42.540027041500927], [-72.97863745207448, 42.500097120866066], [-72.979262835469882, 42.497847772477499], [-72.986515943777988, 42.466741655529361], [-72.988078919770729, 42.466979258023038], [-72.992657237231072, 42.449119214069675], [-72.999500730287082, 42.423253442395847], [-73.009496660958931, 42.387697345417486], [-73.011741186662235, 42.379667688424554], [-73.065908870809409, 42.38911562198102], [-73.068574841576805, 42.380716064227201], [-73.067995921964823, 42.375104663531843], [-73.064286650869221, 42.339771143759279], [-73.06298455989986, 42.329535697533885], [-73.06301630181504, 42.329243704880504], [-73.062847339807419, 42.329055290382691], [-73.062539699673337, 42.328877675074217], [-73.062301387094593, 42.328740806810174], [-73.061870633692038, 42.328545683817531], [-73.061186014483766, 42.328242083624048], [-73.060601288379061, 42.328047426457395], [-73.060347704920815, 42.327881497416563], [-73.060101623857136, 42.327744189879304], [-73.059793955345143, 42.32762392547275], [-73.059540167748636, 42.327469252897544], [-73.059094153384862, 42.327240110216074], [-73.058602043809955, 42.327011500883351], [-73.057633011232653, 42.326529938538251], [-73.057233024660292, 42.326341224812737], [-73.056964051223048, 42.326175496975885], [-73.056733350050067, 42.326061025155205], [-73.05606412983991, 42.325774564811738], [-73.055302327107682, 42.325562018609631], [-73.055071425050514, 42.325528045091517], [-73.054671391780033, 42.325396140660047], [-73.054294355976907, 42.325246995679656], [-73.054040754815091, 42.325138500968492], [-73.053802389487473, 42.325017913993889], [-73.053533291453718, 42.324846507226866], [-73.053271896554705, 42.324731813155751], [-73.052994906070154, 42.324634257402906], [-73.052672048962606, 42.32446249476272], [-73.052433631934036, 42.324359374128328], [-73.052195205894421, 42.324216273841806], [-73.051880153257486, 42.324016219795084], [-73.05164967962186, 42.323821236044175], [-73.051104765412191, 42.323203329949038], [-73.050797832494993, 42.322849009054167], [-73.050636889896836, 42.322614276353235], [-73.05045264155811, 42.322448470947769], [-73.050229528227533, 42.322310832839179], [-73.049922141330327, 42.322150649440282], [-73.049676145222463, 42.321990177715008], [-73.049491699576677, 42.321875608180193], [-73.049238077204478, 42.321715778618653], [-73.048945761590218, 42.321601041512622], [-73.048653164795425, 42.32162353364123], [-73.048414573067305, 42.321646467980784], [-73.048099154848501, 42.321554460817381], [-73.047891310373444, 42.321480183224104], [-73.047637423813043, 42.321428405840386], [-73.047406799898454, 42.32129086349444], [-73.047191687902725, 42.321182285927875], [-73.046968631749564, 42.321056436523918], [-73.046638030998139, 42.320884130976971], [-73.046376945231358, 42.320701434594369], [-73.046177543972064, 42.320461000323185], [-73.045978327821999, 42.32012376657044], [-73.045886446249696, 42.319963464691376], [-73.045733242506117, 42.319711693290394], [-73.045441185693448, 42.319482678876611], [-73.045079617510169, 42.319408122307287], [-73.044764072158387, 42.319384810979933], [-73.04451763085406, 42.319379119008076], [-73.044170719945768, 42.319527310014813], [-73.043831638005216, 42.31961848736799], [-73.043515796584913, 42.319692513458016], [-73.043215132946571, 42.3197720075894], [-73.042898961905834, 42.319932117601169], [-73.042652077665295, 42.320097509892733], [-73.04241308588665, 42.320188509957838], [-73.042204973240331, 42.320257124568435], [-73.041873917103587, 42.320279575331767], [-73.041588950754971, 42.320296364471979], [-73.041250235224027, 42.320273354263243], [-73.040973014743358, 42.320284365265778], [-73.040618792094946, 42.320272276281003], [-73.040426814057767, 42.320106558787529], [-73.040281108405139, 42.319917710215591], [-73.040189317122085, 42.319740564666382], [-73.040043688615697, 42.319534876444031], [-73.039913525236017, 42.319351401595846], [-73.039760060460765, 42.319122766939863], [-73.039629792786826, 42.318939923477252], [-73.039499632250696, 42.318716558948722], [-73.03946199765727, 42.318476197263919], [-73.039539676032405, 42.318287776537034], [-73.039594231437462, 42.318076524395792], [-73.039366556211448, 42.317041284822693], [-73.039230940483876, 42.316109441995209], [-73.03920130942646, 42.315744082794808], [-73.039148018541937, 42.315578216368237], [-73.039079326134356, 42.315417598620272], [-73.038925873131788, 42.315228852104362], [-73.038795479343207, 42.315080315894406], [-73.038503545092951, 42.314914312959516], [-73.03827284205552, 42.314851579767421], [-73.037796004919187, 42.314645189457408], [-73.037496284148105, 42.314513054465891], [-73.036036563983799, 42.31361413383032], [-73.035076343428642, 42.312949929488404], [-73.034868969169921, 42.312818174871204], [-73.034623354368577, 42.312595266493368], [-73.034477439350567, 42.312446392536167], [-73.034316580027848, 42.31225152571615], [-73.034163085407783, 42.312120220980908], [-73.033955626327085, 42.311959742066307], [-73.033825145787347, 42.311816874248841], [-73.03364136082584, 42.311536861406189], [-73.033534091645222, 42.311370542332526], [-73.033388534019039, 42.311176100332638], [-73.033196804204465, 42.310958592841018], [-73.033043578270224, 42.310752997315902], [-73.032828919328495, 42.310495275862877], [-73.032652654329127, 42.310295029591366], [-73.032391577688244, 42.310089160899686], [-73.032192141694978, 42.309848703450491], [-73.032023272274188, 42.309728316098578], [-73.031784961245265, 42.309590755541464], [-73.03153137334651, 42.309453488166923], [-73.031254666514087, 42.309333366440249], [-73.030701082391303, 42.309161196038957], [-73.030324511442075, 42.308954610188287], [-73.030009303463359, 42.308857509105898], [-73.029778635825807, 42.308759821915544], [-73.029409563637842, 42.308622376583614], [-73.029009509907866, 42.308593394315807], [-73.028663289945428, 42.308513000094528], [-73.028324818743954, 42.308426919089918], [-73.028055678308959, 42.308363506443783], [-73.027709489807592, 42.308294364368876], [-73.027417330542121, 42.308196949806835], [-73.027201993487353, 42.308110939432837], [-73.026894463372813, 42.308024983267089], [-73.026517054724209, 42.308024325212912], [-73.026170221092187, 42.30818992986746], [-73.025830637456068, 42.308389653600443], [-73.025599039837061, 42.308595326119651], [-73.02530559343505, 42.308897535130022], [-73.025035556732703, 42.309068779939764], [-73.024742738580485, 42.309165590538392], [-73.024519199960793, 42.309222582548593], [-73.024172584540239, 42.309296964330635], [-73.023841019288469, 42.309381770558026], [-73.023617693374106, 42.309427502573186], [-73.023309534568767, 42.309507044501679], [-73.02306301646486, 42.309546869910129], [-73.022731953336674, 42.309546755543288], [-73.022370312404561, 42.309505985676552], [-73.022039764519434, 42.309386015063623], [-73.021724641771002, 42.309236485166814], [-73.021494239965193, 42.309093846457714], [-73.021294518902678, 42.308950711049867], [-73.021048926893542, 42.308761450147919], [-73.020857115511291, 42.308583902854132], [-73.02059585930165, 42.308429244816864], [-73.020388224228824, 42.308360498189181], [-73.020057462889383, 42.308337321164956], [-73.019788012048934, 42.308331340889474], [-73.019410671807563, 42.308353799649296], [-73.019202280720847, 42.308496121952274], [-73.018917068548163, 42.308621991036375], [-73.018685540225277, 42.308775873607395], [-73.018538657042413, 42.308918462198562], [-73.018353106177486, 42.309158447915415], [-73.018167351225514, 42.309415274053528], [-73.018051191920719, 42.309655422884191], [-73.017973366175028, 42.309855086047342], [-73.01786477818321, 42.310072083602535], [-73.017741027371372, 42.310243629489449], [-73.017594114072821, 42.310420613597714], [-73.017454746642116, 42.310603710819692], [-73.017261798343384, 42.310763203747776], [-73.016968839186589, 42.310859995879412], [-73.016660918322586, 42.310853885701015], [-73.016406938860854, 42.310830765067891], [-73.016007431198361, 42.310647576830682], [-73.015769461881348, 42.310446948888277], [-73.015470131637073, 42.310206700449477], [-73.015247568142186, 42.310000825857053], [-73.015063612415673, 42.309811369877345], [-73.014825893967398, 42.309560132548349], [-73.014542161335967, 42.309256555970371], [-73.014074850311147, 42.308621698468549], [-73.013806979388562, 42.308169430175603], [-73.01354638016376, 42.307889227729312], [-73.013231994182703, 42.307591724482378], [-73.013001876959578, 42.307327957425414], [-73.012818236379928, 42.307059706146823], [-73.012642020212098, 42.306807654625175], [-73.012396533563731, 42.306595953499603], [-73.011966369920557, 42.306366872739773], [-73.011636024297886, 42.306177626861292], [-73.011482715745018, 42.306005770905834], [-73.011344821756467, 42.305834252023722], [-73.011191595929063, 42.305645466289086], [-73.011053799947604, 42.305467822851575], [-73.010777632770726, 42.305210329769984], [-73.010516702592525, 42.304981269401679], [-73.01021695025166, 42.304838349654403], [-73.009940455146747, 42.30468891052989], [-73.009694307682665, 42.304631906334876], [-73.009448104832913, 42.304603085804708], [-73.009109305570988, 42.304608076573778], [-73.008847728171645, 42.30459071207401], [-73.00856276647896, 42.30463047113966], [-73.008269877588575, 42.304704099673359], [-73.008038809821869, 42.304755575862039], [-73.007715265222856, 42.304840860696032], [-73.007438081114074, 42.304840535811479], [-73.007168646349839, 42.304834525941757], [-73.006884026981382, 42.304822501628152], [-73.006537407446601, 42.304850638353457], [-73.006105689523437, 42.305044307962042], [-73.005897381700635, 42.305129697764308], [-73.005612160386903, 42.305255623927422], [-73.005434466605436, 42.305409314438322], [-73.005518256076911, 42.305678345286815], [-73.005663113329462, 42.306015818823418], [-73.005754799580203, 42.306198574950123], [-73.005846559552978, 42.306358909130097], [-73.005876392960957, 42.306593169928803], [-73.005806449530851, 42.306753372472862], [-73.005682474173739, 42.30699307055577], [-73.005265832251524, 42.307250109405366], [-73.005026801706848, 42.307375338739007], [-73.004656879401011, 42.307500570885395], [-73.004263692902796, 42.307591259809733], [-73.003947425944688, 42.307779447459382], [-73.003777497331015, 42.307933663843102], [-73.003692050885292, 42.30815646754121], [-73.003668008468992, 42.308385310864949], [-73.003613399973844, 42.308568362195913], [-73.003558705871043, 42.308768252616197], [-73.003542650154245, 42.308945216750381], [-73.003541743222215, 42.309162411870012], [-73.003548495242867, 42.30943137141427], [-73.003493491016258, 42.309699968466077], [-73.003261478264619, 42.309967999973729], [-73.002968310784624, 42.310133371744001], [-73.00269833963867, 42.310259000656529], [-73.002443796038989, 42.310395772584933], [-73.002335369179207, 42.310550262949938], [-73.002109709280248, 42.311178379673379], [-73.001931287022344, 42.3115325088962], [-73.001845577469538, 42.31179583357121], [-73.001721645792031, 42.311966823638954], [-73.001312573284523, 42.31226372728942], [-73.001111841991076, 42.312383405216003], [-73.000803337328776, 42.31253708587942], [-73.000212628836792, 42.31274631493541], [-73.001858103019003, 42.251096418112482], [-73.004311804991161, 42.251423835916384], [-73.004610378321672, 42.250088984533477], [-73.007919816398299, 42.238452390183674], [-73.034832029114739, 42.143675216794236], [-73.070801989353953, 42.148206762725373], [-73.070761177177587, 42.147995171952594], [-73.070620067367628, 42.147715709774467], [-73.070478225114144, 42.147396816987651], [-73.070322468038583, 42.14718058789218], [-73.070281792444703, 42.146969535354238], [-73.070241330347471, 42.146786664507445], [-73.070177154447606, 42.146535412869426], [-73.07022757262223, 42.146255036854114], [-73.070324384829192, 42.145991404133134], [-73.070383777829178, 42.145819501440876], [-73.07041986004289, 42.145624866167147], [-73.07041704325465, 42.145378987020734], [-73.070315532192751, 42.145208118511853], [-73.07022109125441, 42.145019774016504], [-73.070234500460117, 42.14484282845919], [-73.070745209824864, 42.144553352959875], [-73.07163578966977, 42.143958630408129], [-73.071825771028429, 42.143802945224614], [-73.071937865539255, 42.143550987467719], [-73.071919508432984, 42.143293435179395], [-73.071747158548419, 42.142968839063286], [-73.071606161809228, 42.142718101361488], [-73.071472937762735, 42.142473380090109], [-73.071393298887799, 42.142228013949357], [-73.071321918308527, 42.142022965549209], [-73.071250142433158, 42.14177749149102], [-73.071154759950744, 42.141492360244882], [-73.071090810512999, 42.141269740725619], [-73.070958135682204, 42.141076338043611], [-73.070779465730311, 42.140877262411273], [-73.07071574723723, 42.140683454514253], [-73.070644022885816, 42.140449685462315], [-73.070572652734, 42.140249769126605], [-73.070339244834713, 42.139965358246499], [-73.070176547026819, 42.139829725955124], [-73.069990004354722, 42.139625174104154], [-73.069772830617907, 42.1394148285654], [-73.069579539583572, 42.139284657162023], [-73.06934023998339, 42.139143319405292], [-73.069092922739188, 42.138990835090745], [-73.068945103147456, 42.138820599479182], [-73.068804824038381, 42.138632341128805], [-73.068725334587199, 42.138387511429158], [-73.068769071152914, 42.138203937480803], [-73.068797256400842, 42.137998154749319], [-73.068809874879648, 42.137769533129259], [-73.068722837195594, 42.137547228417773], [-73.068674834897777, 42.137381929206981], [-73.068572978483431, 42.137211063907422], [-73.068486569350029, 42.137028821266867], [-73.068445700616053, 42.136829026414567], [-73.068404520814951, 42.136577458856749], [-73.068378921532826, 42.136383578158764], [-73.068369204022062, 42.136200825979707], [-73.068281619153552, 42.135926841515946], [-73.068271604842948, 42.135727164570667], [-73.068475856016065, 42.135508256394708], [-73.068689125901003, 42.13537530918272], [-73.068940644240271, 42.135248051085242], [-73.069153964114747, 42.135126988483542], [-73.069350397657971, 42.134885673991668], [-73.069447773176876, 42.134684526419491], [-73.069452836293664, 42.134473387109985], [-73.069411863157868, 42.134244959014971], [-73.069463386740111, 42.134073164152746], [-73.069597756994781, 42.133763453136254], [-73.069679249562526, 42.133516958898959], [-73.06970730884413, 42.133311177450672], [-73.069681413841863, 42.133071196928938], [-73.069601511813431, 42.132780179247227], [-73.069552659246213, 42.132546186131748], [-73.069542123701538, 42.132305995160742], [-73.069516402569022, 42.132077898393973], [-73.069468471379835, 42.131900712232628], [-73.069427930689585, 42.131723965100718], [-73.069309385350536, 42.131416007397306], [-73.069252709395329, 42.131159069266772], [-73.069181003415196, 42.13092538897007], [-73.069063813671818, 42.130726009077186], [-73.068868693991647, 42.130447284246465], [-73.068774848748802, 42.130281982350041], [-73.068634585383947, 42.130088680962388], [-73.068416719365743, 42.129809636701076], [-73.068376306090798, 42.129632977501473], [-73.068266758893046, 42.129439165162026], [-73.068233026854259, 42.129170566557477], [-73.068169121447866, 42.128953707695814], [-73.068081787069673, 42.128679629446303], [-73.067963789808701, 42.128417856967452], [-73.067868461279772, 42.128138395093472], [-73.067750501912386, 42.127887877751903], [-73.067571879129261, 42.127688796712683], [-73.067323797368132, 42.127444561578834], [-73.067121893701255, 42.127228419277451], [-73.067020318651103, 42.127063221720789], [-73.066925529183266, 42.126829855764598], [-73.066831573422846, 42.126664553838992], [-73.06676067852932, 42.126487680604754], [-73.066666602782163, 42.126322380188917], [-73.066578827355372, 42.126020212197382], [-73.066607152006256, 42.125820010647757], [-73.066620138539037, 42.12562569178138], [-73.066648759552692, 42.125442414985514], [-73.066654144710455, 42.125253783185308], [-73.066607926466759, 42.125086657660638], [-73.066479455290988, 42.124782254588361], [-73.066378768325833, 42.124593992305549], [-73.06627020363014, 42.124365856774119], [-73.066131154158654, 42.124206213408989], [-73.065807684161413, 42.123950128967593], [-73.065615366008373, 42.123842449772212], [-73.065291946021247, 42.123632377238685], [-73.064999515910415, 42.123462491665052], [-73.064706900036683, 42.123240830888506], [-73.064491107788598, 42.123019741131685], [-73.064259742462539, 42.122775271315263], [-73.064089795706707, 42.122554185158826], [-73.063966110219496, 42.122354978960203], [-73.063819068186987, 42.122076670035106], [-73.063679682506162, 42.121809602341251], [-73.063402137762168, 42.121531453271324], [-73.063147477726829, 42.121259114486747], [-73.062977902746411, 42.121111770135393], [-73.062808380137653, 42.120981263609423], [-73.062523570066702, 42.12077128709916], [-73.062353979205355, 42.120618269108832], [-73.06212269555229, 42.120391173295317], [-73.06189893081158, 42.120169737295612], [-73.061736601093557, 42.119947913586962], [-73.061551508926229, 42.119754584640077], [-73.061342592275835, 42.119418675595405], [-73.06120336000248, 42.119196536347225], [-73.061102453633282, 42.118968832023278], [-73.061093438154245, 42.118700524878136], [-73.061122833316418, 42.11845474629866], [-73.061205600374933, 42.118111980107827], [-73.061342353502667, 42.117854652977847], [-73.061517500097111, 42.117579873471726], [-73.061700723802232, 42.117368016447791], [-73.061822491961635, 42.117185091688718], [-73.062013384081865, 42.116990058406721], [-73.062188828979814, 42.116801358644878], [-73.062379839725367, 42.116606323092249], [-73.062586214975255, 42.116445925811448], [-73.062800291864335, 42.116274167188692], [-73.062998841359246, 42.116090733804967], [-73.063197631705251, 42.115941694740989], [-73.063435002565626, 42.115827067232637], [-73.063679817697448, 42.115700451162219], [-73.063932473918541, 42.115568144580699], [-73.064131536082172, 42.115464663938553], [-73.064399245586145, 42.115310179259914], [-73.06461366062257, 42.115206488076765], [-73.06483582586965, 42.115171936816054], [-73.065081016253359, 42.115085293449411], [-73.065372108987219, 42.114981723743618], [-73.06570147195464, 42.114860701332631], [-73.065938905067185, 42.114802887153616], [-73.066284050724747, 42.114733424369874], [-73.066628901234637, 42.114647125758808], [-73.066996653534986, 42.114543043657093], [-73.067387336088743, 42.114422348061005], [-73.067648325300524, 42.114427240967295], [-73.067962169903979, 42.114295168432385], [-73.06829173662662, 42.114202320419977], [-73.068636355778096, 42.114087293801148], [-73.068935382620623, 42.11400665830913], [-73.069226429398839, 42.113926131349167], [-73.06959396270716, 42.113764593670943], [-73.069854265203475, 42.113643965124837], [-73.07018323114454, 42.113483044118489], [-73.070436001136855, 42.113385569558524], [-73.070757345516199, 42.113224661305331], [-73.070979392401114, 42.113127066539327], [-73.071231515533455, 42.112920461798815], [-73.071422595361483, 42.112788442642078], [-73.07152927055526, 42.112622642881277], [-73.071666391749844, 42.112450752279855], [-73.071880365929857, 42.112295906361439], [-73.072094739075922, 42.112186528420132], [-73.072331523641154, 42.112020112640863], [-73.07253031317137, 42.111848004725076], [-73.072697762029875, 42.111601947710454], [-73.072796611005046, 42.111447510036058], [-73.072933742569361, 42.111246982623086], [-73.073001337655697, 42.110978163857503], [-73.073030896820256, 42.110789829189045], [-73.072899242188598, 42.110532751194242], [-73.072821441973261, 42.110355345793344], [-73.072659310280613, 42.110127411122789], [-73.072497098700808, 42.109945041264638], [-73.072173558684227, 42.109694018504854], [-73.071911726690715, 42.109517517581601], [-73.071803485729049, 42.109346202263872], [-73.071748581736969, 42.109140927480581], [-73.07170926034749, 42.108964253977618], [-73.071715575430943, 42.108706361884984], [-73.071782748888396, 42.108352004385537], [-73.071896488002594, 42.108071296788999], [-73.072071527965491, 42.107819553333243], [-73.072254162230152, 42.107527814363337], [-73.072406813587577, 42.107373178561282], [-73.072651572079835, 42.107177927168756], [-73.072888474738136, 42.107017091153359], [-73.073133408279716, 42.10690224856932], [-73.073347887638661, 42.106827264550439], [-73.073715320811502, 42.106683273385656], [-73.073990969601908, 42.106568547164258], [-73.074328085661648, 42.106469994320989], [-73.074580983600015, 42.106418072265619], [-73.074787420054108, 42.106291959104112], [-73.07490931354539, 42.106131079443074], [-73.074977615617883, 42.105959590419822], [-73.075045624872644, 42.105776309162607], [-73.075052258310251, 42.105570819791666], [-73.075051317554866, 42.105381733158922], [-73.075004230881305, 42.105199404351573], [-73.074964970858034, 42.105010844670126], [-73.074940621463227, 42.104765260008101], [-73.074946956154108, 42.104513580395476], [-73.074914795985634, 42.104216325853514], [-73.074867554502958, 42.103993567809027], [-73.074751591998208, 42.103793636207293], [-73.074650314394631, 42.103508047574508], [-73.074532959772029, 42.103090940488229], [-73.074415918711551, 42.102691298170072], [-73.074314786696206, 42.102445598254249], [-73.074167615211778, 42.102171805953645], [-73.074059135087865, 42.101966187884337], [-73.074042136410597, 42.101646212813201], [-73.074018057117271, 42.101440605481109], [-73.0730686288627, 42.094239677484033], [-73.061732274479908, 42.070597019539647], [-73.061439626703475, 42.070368599079814], [-73.061209081135019, 42.070237752912647], [-73.060978434194155, 42.070112580672379], [-73.060877967680241, 42.069958618606918], [-73.060769585540626, 42.069752987025161], [-73.060653357958742, 42.069478846048597], [-73.060514240480671, 42.069261747004788], [-73.060405946845577, 42.069044857936142], [-73.060182426318207, 42.068810989610384], [-73.060028325898259, 42.068662800531762], [-73.059766922133548, 42.068480685030579], [-73.059540022131998, 42.068365003972872], [-73.059286266604744, 42.068194038918122], [-73.059086243891031, 42.068080242026959], [-73.058724762109236, 42.067823486944043], [-73.05855556159834, 42.067709809697426], [-73.058362751682353, 42.067476060044747], [-73.058246955576379, 42.067327347131048], [-73.058184849074308, 42.067150348668434], [-73.058153223147954, 42.066944840400161], [-73.058205998975552, 42.066756102610178], [-73.058312312878371, 42.066532958108155], [-73.058487502345571, 42.066275017800422], [-73.058617171177019, 42.06613205751686], [-73.058861384141679, 42.065879930223375], [-73.059136143207255, 42.065621803329364], [-73.059387898052989, 42.06531275205905], [-73.0597156305883, 42.064894067417313], [-73.060561677936207, 42.063811598354818], [-73.061026319120444, 42.063147284025675], [-73.061148143159372, 42.062975702436049], [-73.061300548680535, 42.062774978320711], [-73.061407287441128, 42.062609185168519], [-73.061575027688676, 42.062403118731503], [-73.061665723756448, 42.06217955347946], [-73.061741509544049, 42.061939352678984], [-73.061702159888085, 42.061739533478701], [-73.061601777502077, 42.061573774635171], [-73.060709658204644, 42.061004595663746], [-73.059179723501614, 42.060093455291131], [-73.058910213483173, 42.059860121175731], [-73.058710585097771, 42.059751451213977], [-73.058387890164255, 42.059620774200937], [-73.058011515953822, 42.059479030822331], [-73.057765826011405, 42.059393948444743], [-73.057389523102643, 42.059274713995904], [-73.057028701607933, 42.059121499838028], [-73.0567296691884, 42.059127818951268], [-73.056491439812874, 42.059031466713002], [-73.056146393516627, 42.059009144618692], [-73.055839479826545, 42.058969914430207], [-73.055578759178971, 42.058941941849483], [-73.055195000917038, 42.058868365698366], [-73.054857214128404, 42.058772282143423], [-73.054642111840181, 42.058653009726456], [-73.054411359021401, 42.058481721874394], [-73.054249584221722, 42.0583393025696], [-73.054064824433141, 42.058116692609744], [-73.053955963984663, 42.057825516100586], [-73.053924263089257, 42.057556884305846], [-73.053984289484532, 42.057293850613114], [-73.054052262743156, 42.057059344100793], [-73.054066723093271, 42.056865005082273], [-73.054096724788891, 42.056693507198162], [-73.054064776028255, 42.056390030338903], [-73.054017390685502, 42.056127284511518], [-73.054001242460998, 42.055921474828295], [-73.05397744635664, 42.055738911229454], [-73.053938480290327, 42.055573392518681], [-73.05389869952478, 42.055275694935695], [-73.05390525362148, 42.054990244994627], [-73.053995377024933, 42.054589389799354], [-73.05412375038533, 42.054097517384548], [-73.054607102614753, 42.0505971022152], [-73.054667423750118, 42.050351443000288], [-73.054720220676487, 42.050134070900974], [-73.054765451103265, 42.049967948672553], [-73.054871863270478, 42.049779113499007], [-73.055047613779792, 42.049589876461035], [-73.055230777547933, 42.049412334405496], [-73.055451990899925, 42.049199966641105], [-73.055735044359338, 42.049016563475718], [-73.055941556396718, 42.048924338184385], [-73.056155225666089, 42.048695142596443], [-73.056384666003083, 42.048557490736094], [-73.056529641762666, 42.048414323857294], [-73.056643844298236, 42.048208451939715], [-73.056688651738767, 42.047956248909941], [-73.056702638765529, 42.047624592776295], [-73.056663416477363, 42.047419097063916], [-73.056570435635521, 42.047144635673632], [-73.056454296596058, 42.046876612470719], [-73.056376911087909, 42.046711076696717], [-73.056276346392849, 42.04651659060832], [-73.056129864142363, 42.046282207415061], [-73.055968122457429, 42.046105482030001], [-73.055798672048809, 42.045900045952145], [-73.055521884311503, 42.045711917304594], [-73.05526834191339, 42.045570206838789], [-73.055021967819528, 42.045301701195754], [-73.054944489409976, 42.045107440520809], [-73.054958991222307, 42.044924896709375], [-73.054950175643668, 42.044638574771611], [-73.054941218889894, 42.044341538831695], [-73.054970977244309, 42.044135735430885], [-73.054962271278455, 42.043878587233117], [-73.054969017352946, 42.043695068215541], [-73.054975632848226, 42.043432128818068], [-73.054974783882102, 42.04324925329469], [-73.054935254234749, 42.042986400720871], [-73.054903803079412, 42.042792054763446], [-73.054718777347048, 42.04254693766012], [-73.054541401407207, 42.042278664098234], [-73.054155250295935, 42.041599006518474], [-73.054077705027211, 42.04141654243174], [-73.054015182012563, 42.041176513810555], [-73.053829952684666, 42.040868364638655], [-73.053644622223501, 42.040565889563716], [-73.053474589207866, 42.040286258730291], [-73.053054815787405, 42.039826500805312], [-73.124579570660543, 42.042019799542942], [-73.127148398393913, 42.042068842266517], [-73.172095232886178, 42.043355789345377], [-73.232903125428166, 42.045042727792378], [-73.249545408313296, 42.045561655453675], [-73.296260141116036, 42.047019873941345], [-73.340611260019216, 42.048224149337628], [-73.37463116158122, 42.049153230816856], [-73.426050635791668, 42.050421221289206], [-73.436630455287002, 42.050489128426953], [-73.487256805937903, 42.049743808970277], [-73.497022010179322, 42.04959684506597], [-73.499599816205333, 42.057993629549721], [-73.508239575183097, 42.086117490720198], [-73.499630452263816, 42.109615433519267], [-73.494055570050961, 42.125095454778737], [-73.493356334034047, 42.126905959736106], [-73.483128507414747, 42.154898315503203], [-73.476101028703155, 42.174023096382911], [-73.460089565565028, 42.217552858868928], [-73.448186533124911, 42.250099983906701], [-73.443016691494535, 42.264171778499623], [-73.4312512542283, 42.296171757855355], [-73.426682813244327, 42.308588375911114], [-73.414256753931113, 42.342329964718509], [-73.410827486748957, 42.351654402870416], [-73.402198884842761, 42.375104171357691], [-73.383578258076966, 42.425491334465939], [-73.382050251536512, 42.429622530698538], [-73.374536876329771, 42.449927099610782], [-73.356056782348972, 42.500117318599798], [-73.352381400005711, 42.510019542181098], [-73.331799833528521, 42.565631314923429], [-73.309816259857996, 42.625102472044212], [-73.308342282756598, 42.629060384703692], [-73.30700125938165, 42.632660527067372], [-73.273589967398024, 42.722226946397619], [-73.264774623605518, 42.745814337187475], [-73.249597934083369, 42.745595164800577], [-73.163569846540241, 42.743987320925591], [-73.14260946012385, 42.743583959933986], [-73.124555229654888, 42.74324408150752], [-73.048412361039098, 42.741700695592826], [-73.022958614398974, 42.741213102884288], [-73.023699449318642, 42.702737785796309], [-72.999553207299769, 42.701356308602939]]]}, "type": "Feature", "id": 0, "properties": {"COUNTY": "BERKSHIRE", "AREA_ACRES": 605697.0, "OBJECTID": 2.0, "FIPS_ID": 25003}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.995062305847114, 41.914952273397169], [-70.994656315975135, 41.914891414140257], [-70.994380745650673, 41.914892445241151], [-70.994159836708619, 41.915007973062572], [-70.994100297710318, 41.915219293103156], [-70.994079732512034, 41.915516859862727], [-70.994020883746728, 41.915808134570312], [-70.993914944780386, 41.916002862422907], [-70.993541380455071, 41.916153726704323], [-70.993105680061561, 41.91619005874184], [-70.992837368583579, 41.916156814778951], [-70.992591721115829, 41.916078022810012], [-70.992277464069062, 41.915971464418085], [-70.992069990904042, 41.915852324987597], [-70.991915815547259, 41.915716045435154], [-70.991784323341349, 41.915516841653755], [-70.991649735454828, 41.914980530387538], [-70.991421084432204, 41.914102204687332], [-70.991329954213455, 41.913211525958395], [-70.991186020251916, 41.912367430366935], [-70.991004153238379, 41.911624906004889], [-70.990823111925565, 41.910945499774193], [-70.990781831066741, 41.910590755069528], [-70.990724724245979, 41.910104847754596], [-70.990774370406072, 41.909624008331782], [-70.990915783315018, 41.909062455853096], [-70.990973637328338, 41.908655302126988], [-70.991078049512552, 41.908334430035417], [-70.991168462733413, 41.9080759802576], [-70.99131129215742, 41.907789042534567], [-70.991515516445261, 41.907496255624359], [-70.991674748699396, 41.907283129978879], [-70.991887157281667, 41.907082035215652], [-70.99213813679782, 41.906880571408855], [-70.992496077230726, 41.906672289619991], [-70.992785531040965, 41.906482249866208], [-70.992653636495859, 41.906259905882514], [-70.992385380674889, 41.906209824206954], [-70.992140401242565, 41.906142828677346], [-70.99184921658042, 41.906081389283585], [-70.991658495716806, 41.906208211016128], [-70.991407429568412, 41.906375369772647], [-70.99133996344689, 41.906552889825839], [-70.991019020416417, 41.906595397065395], [-70.990591241549623, 41.906689107333975], [-70.990375815990774, 41.906558764668894], [-70.990092359966809, 41.906480338536667], [-70.989909396923622, 41.906601069577768], [-70.98967945052793, 41.906493169656741], [-70.989547863522617, 41.906293962600294], [-70.989416075176322, 41.906059820612064], [-70.989224051308639, 41.90595767154656], [-70.988901547759852, 41.905804248036986], [-70.988618242843998, 41.905782721495008], [-70.988158087162873, 41.905676038093645], [-70.987837240449494, 41.905676850254267], [-70.987312381771702, 41.905837639566684], [-70.977163258307456, 41.875149053919067], [-70.976949464012364, 41.873573523792707], [-70.975159479485981, 41.866548702273057], [-70.973711266080414, 41.860947455635653], [-70.976417945283757, 41.858733134035241], [-70.977211400198954, 41.857952917545298], [-70.978213037908333, 41.857220376642353], [-70.979771635360791, 41.856490277938327], [-70.982985264752315, 41.85542166116209], [-70.986158185708788, 41.854011174050505], [-70.986348140706355, 41.853722203109811], [-70.987871104576541, 41.85232340566737], [-70.987654140733966, 41.852213217658729], [-70.987829256409697, 41.851941104420817], [-70.988554755285904, 41.851197599467937], [-70.989382692336576, 41.850532249681791], [-70.989793311841836, 41.850233546442979], [-70.990025766629074, 41.850092778908547], [-70.990554300695564, 41.849895980471878], [-70.99135174821248, 41.849500588747809], [-70.992750639433524, 41.848807326796617], [-70.995457640090933, 41.847209935839274], [-70.995943036970061, 41.846859230118035], [-70.996377345429195, 41.846588248883315], [-70.999489418058957, 41.844275593160063], [-71.00745377577573, 41.838479344273125], [-71.036625577445477, 41.816532056728548], [-71.014610276101422, 41.799622235797948], [-71.026258252172539, 41.778922388893285], [-70.999489278572767, 41.781982910968964], [-70.985850499342433, 41.783628924476801], [-70.921903217668131, 41.791338551930643], [-70.90738337197007, 41.763492043851826], [-70.904488123415007, 41.757936869639089], [-70.886417527234272, 41.76023596026657], [-70.882773910524307, 41.750104542767723], [-70.87449113261728, 41.726680588645003], [-70.865070558869576, 41.700276686981411], [-70.858208629548884, 41.681084926128804], [-70.845219710075853, 41.644729532018602], [-70.843360279880457, 41.628445090848501], [-70.843967244949269, 41.628892031727069], [-70.8445470900716, 41.629503672333442], [-70.845584246776909, 41.630378512910802], [-70.846193776927421, 41.630648171892823], [-70.846773027582884, 41.630557502115785], [-70.847779193252151, 41.630262282367205], [-70.848266781515932, 41.629921224045184], [-70.848388616093331, 41.629730051753477], [-70.848297098563592, 41.629253947192034], [-70.847839208686224, 41.628271079172464], [-70.847716993063131, 41.627381254086806], [-70.847838040542243, 41.626901956949133], [-70.848143094494219, 41.626806915877012], [-70.849850744469776, 41.627076633990171], [-70.850521407395817, 41.627399021478176], [-70.85088737140174, 41.627699317022696], [-70.851284854653272, 41.628773576391559], [-70.851804300261065, 41.629620643995715], [-70.852810247989453, 41.630351809874988], [-70.853359316235483, 41.630622166510712], [-70.853725489238016, 41.630940551525995], [-70.853908910328869, 41.631126171583347], [-70.854274189461975, 41.631129327343515], [-70.854335133887176, 41.630786449347312], [-70.853359158009027, 41.629640213163633], [-70.853359015074233, 41.629298068640317], [-70.85357210448187, 41.629159721883994], [-70.853877480750953, 41.629163708840643], [-70.854852539127407, 41.629544073775939], [-70.855370549899007, 41.629454723493403], [-70.855400949321421, 41.629022084148623], [-70.855248839551479, 41.628790004490661], [-70.854790817842385, 41.628500365389769], [-70.85366304447858, 41.628698795140131], [-70.853357972389261, 41.628676801761245], [-70.853235623384492, 41.628516828859475], [-70.853571250386892, 41.628151293477806], [-70.854028375809207, 41.628017754722272], [-70.854363775737781, 41.627769174867005], [-70.854394004053134, 41.627354092157482], [-70.854058150836536, 41.62705334904004], [-70.853784101622423, 41.627121030394619], [-70.853693044742982, 41.627581956554259], [-70.853326896620146, 41.627488666011459], [-70.853204321028031, 41.627220736427155], [-70.853204469157646, 41.626481797105392], [-70.853875040182757, 41.625732714229251], [-70.85439309197001, 41.626183595664799], [-70.855064307522696, 41.627262186715051], [-70.856162882475374, 41.628424319084928], [-70.856438484253076, 41.629527131864791], [-70.856438902444069, 41.63046406751446], [-70.855951517649075, 41.630598074878385], [-70.855646279113969, 41.631080298432771], [-70.855158941136438, 41.631673495498973], [-70.855159926594837, 41.633159664847128], [-70.855343185409524, 41.633958078887261], [-70.855709160530282, 41.634167870639075], [-70.855983477320393, 41.634028695765764], [-70.856227523033951, 41.633367219663725], [-70.856227014195767, 41.632403812377888], [-70.856348723934175, 41.631996450215105], [-70.856836162714558, 41.631583414511724], [-70.857323968999481, 41.631539443492812], [-70.857416355924485, 41.63240207728645], [-70.857813161654136, 41.632864052282926], [-70.857934852353424, 41.633366700222147], [-70.858423074149002, 41.633916976090816], [-70.858666625667922, 41.633984798088314], [-70.858941235642007, 41.633827610218674], [-70.859245855349371, 41.633777555699439], [-70.860100438457565, 41.634322055148424], [-70.860923675779446, 41.634641817734888], [-70.86141189308978, 41.634642850248355], [-70.861777584052589, 41.634510477284699], [-70.862204297607903, 41.634143717086403], [-70.862783740227243, 41.633359676145119], [-70.863088413917879, 41.633291604114412], [-70.863515210770245, 41.633590578576111], [-70.863759177117416, 41.633568804417358], [-70.86394184309296, 41.633133773757187], [-70.86412497422242, 41.632977772350863], [-70.865161638223583, 41.632906493401293], [-70.865223171167457, 41.633526926780213], [-70.865710810799428, 41.633888088533965], [-70.865771742902297, 41.634436578089613], [-70.865711410054601, 41.634941533193739], [-70.865406890668297, 41.635126662180603], [-70.864857901297825, 41.635190044488574], [-70.864339457329436, 41.635126371620508], [-70.864096118869938, 41.635193079396423], [-70.864248281733595, 41.63553328255815], [-70.865559460015859, 41.635583914854628], [-70.865834090227921, 41.63571429097837], [-70.865773396552328, 41.636291904542972], [-70.865530282131729, 41.636565703410334], [-70.865560865060104, 41.63697950712848], [-70.865866234091015, 41.637496676616699], [-70.865988860681355, 41.63860257343763], [-70.866080925091296, 41.638807922564027], [-70.866537993504096, 41.63917008055445], [-70.866905108753926, 41.639307722038339], [-70.86717874482602, 41.639285655436169], [-70.867332057727111, 41.639148030620582], [-70.867392175922745, 41.638894548829143], [-70.86711747102828, 41.638503066798982], [-70.867300179861303, 41.63825702018304], [-70.867300214229246, 41.638022922339871], [-70.866598178477659, 41.637430977305264], [-70.866445282368758, 41.636884316824904], [-70.866627661796883, 41.636610718149093], [-70.867145911114676, 41.636404266297582], [-70.86705417876351, 41.635874153865871], [-70.866657278724347, 41.635376736221247], [-70.866809573139847, 41.635050117325846], [-70.866869378119205, 41.633518098584815], [-70.866961005785853, 41.633318274901434], [-70.866991003267273, 41.632651622645987], [-70.866592785659932, 41.631307302815507], [-70.866104652153339, 41.630621916186513], [-70.865007542773071, 41.630342349057493], [-70.864853955675997, 41.630182754583991], [-70.864732542305447, 41.629707757450149], [-70.864975256617953, 41.629109192095214], [-70.866041366195972, 41.628191175177108], [-70.866041567362927, 41.627758995251405], [-70.865614428623616, 41.627351982944532], [-70.865247999331459, 41.627321755725497], [-70.864669497389855, 41.627898727243149], [-70.864334060649256, 41.627877133842794], [-70.864181140132231, 41.62762705422287], [-70.863935471914544, 41.625793952485374], [-70.863447681748028, 41.625792932822471], [-70.863082402462609, 41.625889298071861], [-70.862838067658117, 41.625721989289076], [-70.862685572954661, 41.625454352621624], [-70.86280755992648, 41.625110101857963], [-70.862837349950681, 41.624865996436874], [-70.862623590809875, 41.624617194306644], [-70.862227281512133, 41.624335854510406], [-70.86183035698096, 41.624297071562196], [-70.861342104504629, 41.624656191227118], [-70.860916400292524, 41.624663342734181], [-70.8599702208938, 41.623858934235976], [-70.859543952195878, 41.62383906606528], [-70.859055155347335, 41.623928059572094], [-70.85829367979801, 41.623949694399052], [-70.857958132173422, 41.623630416522246], [-70.857500360909484, 41.622971634688753], [-70.856981554462877, 41.622691834922094], [-70.855579041887992, 41.622264676827484], [-70.855365706141995, 41.62206088214301], [-70.855303071380035, 41.62047640180748], [-70.854997264963259, 41.618923765743808], [-70.854356810828449, 41.618420419805496], [-70.854447632956379, 41.617707386014068], [-70.854353895761776, 41.615628691114672], [-70.853957799145107, 41.614788548507391], [-70.853835242463518, 41.613962295103114], [-70.853103038427889, 41.613271591636646], [-70.852584675273235, 41.612613615137846], [-70.851609179893643, 41.611746482198392], [-70.851334280747281, 41.611264921878387], [-70.849626315189624, 41.610346859112227], [-70.84947377321339, 41.610187339390542], [-70.849472907753253, 41.60824197669789], [-70.849594622154541, 41.607609527428039], [-70.850020758314784, 41.606828095985193], [-70.849958827651022, 41.60602757545346], [-70.849745857212696, 41.605499635670178], [-70.849684152850074, 41.604996151110115], [-70.850232496529912, 41.604239638447389], [-70.850353743328498, 41.60323803065404], [-70.850231523380018, 41.602799027682309], [-70.849987545300976, 41.602667617733708], [-70.849621602039207, 41.602592323156891], [-70.849103563518227, 41.602799325349075], [-70.848615792722626, 41.603167306304655], [-70.848219685516668, 41.603191506219062], [-70.847823875534729, 41.602892110397661], [-70.847640740611212, 41.602570344366505], [-70.847792836007613, 41.601982549887119], [-70.848493695651626, 41.601998365229285], [-70.850536080267673, 41.602433864520627], [-70.850932379899987, 41.602733253634874], [-70.851023773103904, 41.602912140559063], [-70.850811199830048, 41.604131479028389], [-70.850628486967125, 41.604629604864364], [-70.851146709316112, 41.604630313990739], [-70.852212657480834, 41.6035772803098], [-70.852182860693503, 41.602965483743368], [-70.851998989557657, 41.60279723515589], [-70.851754839027251, 41.602575880250306], [-70.851571560743537, 41.602254570033672], [-70.851632119673852, 41.601379927974662], [-70.852150401384179, 41.600471251007875], [-70.852149322375027, 41.599759946064111], [-70.852667457194244, 41.59895868114382], [-70.85263670174831, 41.598571973808205], [-70.852361845534276, 41.598387450738656], [-70.851386250873716, 41.59847534535858], [-70.851233973592272, 41.598315739346646], [-70.85126449895354, 41.597540507856586], [-70.851111339849012, 41.597065764233683], [-70.851141395863181, 41.595804325832198], [-70.851018664418731, 41.595274652666717], [-70.85077516436823, 41.595098768304247], [-70.850378925201554, 41.595140982266116], [-70.849861018279753, 41.595482955011306], [-70.849800726488837, 41.596105041588501], [-70.849373525550774, 41.596148155361448], [-70.848642602803125, 41.595898614572512], [-70.848306902483856, 41.595967009231643], [-70.84818537190931, 41.596311337178008], [-70.84830759947593, 41.596534881949729], [-70.848307963299405, 41.596994077073724], [-70.848063758405985, 41.597087756181203], [-70.84775907166312, 41.596948699903876], [-70.847393040768964, 41.596144090800898], [-70.845564925189279, 41.596335621321721], [-70.845595236808464, 41.596632380650185], [-70.846388088813825, 41.597700471404806], [-70.8464192754073, 41.598546466511046], [-70.846266904122274, 41.599278317941398], [-70.846358307385387, 41.599466212561431], [-70.846877117004965, 41.599899126523248], [-70.846876923683638, 41.600106212499654], [-70.846359197592108, 41.600060467612231], [-70.845444476534951, 41.599165537993123], [-70.844529693982238, 41.597775302351252], [-70.844163035320122, 41.597339924373955], [-70.843888373970856, 41.596858346777125], [-70.843522702871766, 41.596584950546038], [-70.839256237175064, 41.597131421480334], [-70.838495021255028, 41.597413403109009], [-70.838007682204434, 41.597772427389629], [-70.837550746536635, 41.598392106624019], [-70.837277366410305, 41.599378678698862], [-70.836606703041227, 41.600109745028767], [-70.836119720304097, 41.601414702208857], [-70.836119581895261, 41.602098989842034], [-70.836454952727991, 41.602552849111433], [-70.836760414438174, 41.602628913650889], [-70.837644052493189, 41.602416805995396], [-70.838039838546322, 41.602121987038025], [-70.838619028086029, 41.601572166435808], [-70.838953607656251, 41.601476782266367], [-70.839868593613801, 41.601642458850051], [-70.840112905522176, 41.601890401672385], [-70.840113205032225, 41.602350137033028], [-70.839351012209633, 41.602965259401749], [-70.838832322815449, 41.60312719223127], [-70.837583011405187, 41.60319194697734], [-70.837095836109327, 41.603379806242017], [-70.836791217976753, 41.603673533403963], [-70.836821219694301, 41.60415874292066], [-70.837065458477994, 41.604587308005243], [-70.837035701061694, 41.604912351472464], [-70.836517009837479, 41.605118662561473], [-70.836212696230817, 41.605069615526631], [-70.83575539121658, 41.604527345975463], [-70.83557246797163, 41.604179000208148], [-70.835449805183487, 41.603514883272958], [-70.834931643289707, 41.603081920867503], [-70.834047448245201, 41.60212342062097], [-70.833681731980306, 41.601913108996385], [-70.833041813852205, 41.60205845784084], [-70.832341223780375, 41.601844465200166], [-70.831944721240461, 41.60194117666861], [-70.831639565594458, 41.602675442843015], [-70.831670235625396, 41.603242232298207], [-70.831884269035214, 41.603860250870802], [-70.83176182061753, 41.604753788215341], [-70.831793603236392, 41.606329009668968], [-70.831549539565856, 41.606495315131149], [-70.83130565679015, 41.606471911085706], [-70.8310007454442, 41.606215759197234], [-70.830604012921512, 41.605528593975045], [-70.829506981221897, 41.604186142759396], [-70.828744044165319, 41.603613318793784], [-70.828378419972168, 41.603177805734383], [-70.828074084449725, 41.602606516169949], [-70.827555549469508, 41.602145965731012], [-70.826549738559081, 41.601801826518695], [-70.826001265874282, 41.601531792019195], [-70.824965125861965, 41.601233018031948], [-70.824752072608234, 41.600984147580803], [-70.824538367245538, 41.60045615489517], [-70.824110804542002, 41.599995048761308], [-70.823318849455092, 41.599475947996048], [-70.823379656779068, 41.599034043154802], [-70.823500995022243, 41.598743762610098], [-70.824294202144031, 41.597938770270773], [-70.824263504222301, 41.597596983361242], [-70.824080212009306, 41.597302729298754], [-70.824080010500026, 41.596662827681236], [-70.824659384581423, 41.596068149951947], [-70.823988211918774, 41.593962850816297], [-70.823713238805922, 41.593435662607391], [-70.823682457652168, 41.59240958584865], [-70.823469244397486, 41.592133700437515], [-70.823042316957299, 41.591834031951493], [-70.821671397178108, 41.591883209709863], [-70.821397195076258, 41.591761191422719], [-70.820910241602874, 41.591309802320566], [-70.820391572666779, 41.591236921534133], [-70.820026185900971, 41.591333146973383], [-70.819630149486457, 41.591627361530023], [-70.818928617216329, 41.591809987443995], [-70.818441907718395, 41.59224996624414], [-70.81795406214863, 41.592266757122459], [-70.817526991897125, 41.592039097386646], [-70.817131586780079, 41.591676569190973], [-70.816155327479109, 41.591764066963428], [-70.816034352684028, 41.591378425838869], [-70.816399428227655, 41.590390744005312], [-70.816430621733403, 41.5900302390232], [-70.816582106557419, 41.589613643638671], [-70.816948708982991, 41.589346814407179], [-70.819416520114672, 41.588379669158464], [-70.820147747613092, 41.587881544680329], [-70.820939735420097, 41.587058471215691], [-70.821579483765973, 41.585751699263504], [-70.821730949179212, 41.584857265198671], [-70.821578408986142, 41.582887312282203], [-70.821669426590276, 41.582661049929776], [-70.821944271773859, 41.582503503456117], [-70.823863441656414, 41.582868881792528], [-70.826331183904159, 41.583162660371627], [-70.828250971339614, 41.583690576620093], [-70.828921662797441, 41.583968075948519], [-70.829805557237336, 41.584557370053645], [-70.830292958154772, 41.585035825002777], [-70.830506287751021, 41.585266679246566], [-70.834225642944105, 41.589313773621789], [-70.83635934580613, 41.592080247641981], [-70.8364809833744, 41.592240235179261], [-70.836694453265821, 41.592948279460401], [-70.837091331039076, 41.593365310461813], [-70.837579589537938, 41.594050825512404], [-70.837853791315666, 41.594803070044108], [-70.837884832024898, 41.595396961068261], [-70.838036542017662, 41.595781586688027], [-70.83834236221702, 41.595947687168128], [-70.839774344523448, 41.596195247558555], [-70.842973818440242, 41.595873269852717], [-70.843278916471405, 41.595760235333117], [-70.843278346614056, 41.595535137313568], [-70.84306515845951, 41.595259289367824], [-70.842821209400668, 41.594848836525394], [-70.842181034495837, 41.594210905095387], [-70.841936482548419, 41.593638288778308], [-70.842028749010623, 41.593249949438842], [-70.842302514472735, 41.593290430845116], [-70.842515880196316, 41.593431224459181], [-70.842698441739515, 41.593815482008267], [-70.843156380814108, 41.594294160369699], [-70.845137481066502, 41.595487342825976], [-70.847270350438805, 41.595119205429576], [-70.848092696892735, 41.594457646457109], [-70.848915266218086, 41.59379608313651], [-70.849584890424509, 41.593406633034526], [-70.850346409006079, 41.592718778903233], [-70.850377229835928, 41.592376271143223], [-70.850132674393095, 41.592163823941128], [-70.850164072885093, 41.591776300623927], [-70.850346902430161, 41.591665339107507], [-70.850437618644349, 41.591294451731095], [-70.851107143762732, 41.590059176994068], [-70.85217280748337, 41.589105185382657], [-70.852598924885015, 41.588440794307438], [-70.853055876532139, 41.587892996157159], [-70.853238086982714, 41.586773062939685], [-70.853237229835784, 41.585349920566067], [-70.853145071764629, 41.58489245402923], [-70.852991800690162, 41.58269745026557], [-70.853113113649442, 41.582488263017623], [-70.853692032039419, 41.582172464167463], [-70.854331117401571, 41.582216075088724], [-70.855063114394227, 41.582357540770346], [-70.855642217058133, 41.582653989984721], [-70.85643454365372, 41.583379954034875], [-70.857105843400731, 41.584683630033062], [-70.857258841414307, 41.584960821659109], [-70.857565229268346, 41.587819543080045], [-70.857779562631819, 41.588140388941497], [-70.858663200245743, 41.5890987003257], [-70.858877355948636, 41.589761686325652], [-70.85905997817153, 41.589992853222988], [-70.859731837589905, 41.592044460118032], [-70.859732605339559, 41.593395030784983], [-70.859977466432369, 41.593760523024464], [-70.860465133818593, 41.594265769442835], [-70.861989529477142, 41.595366587253878], [-70.863422575201355, 41.596117976386971], [-70.863849680555035, 41.596687065853096], [-70.864002328938071, 41.59769355172628], [-70.864155557665498, 41.598195199096658], [-70.86510155828654, 41.598972561974094], [-70.866077637072465, 41.599730996884176], [-70.866320615442106, 41.600159491027455], [-70.866260313877092, 41.600664986591745], [-70.86607818485902, 41.600875019101416], [-70.864737859328955, 41.601464033936175], [-70.864371340122901, 41.601469907687864], [-70.864280567153614, 41.601309582940615], [-70.864493190799863, 41.600783421293208], [-70.864492487520309, 41.600576330594606], [-70.864248801463646, 41.6001839336503], [-70.864126272817629, 41.599573782692396], [-70.863669270725552, 41.598933037000485], [-70.863302220458422, 41.598064998246578], [-70.863058165916243, 41.597880133572694], [-70.862509799091427, 41.597924868438248], [-70.86251050216886, 41.598312034656487], [-70.86281555916446, 41.598658770295543], [-70.86281690053849, 41.600874246142332], [-70.863609839764905, 41.601014286466082], [-70.863853562673356, 41.601559839171372], [-70.863458913826364, 41.602862636089952], [-70.86345919468414, 41.60379957009534], [-70.864161172766956, 41.605057815597718], [-70.864222434660505, 41.605291175991134], [-70.864711832151471, 41.606589285657236], [-70.865078107078489, 41.60734881995981], [-70.866207291891911, 41.609086638007007], [-70.866299635598196, 41.610156350805411], [-70.866695974684191, 41.610888405736638], [-70.867215776853357, 41.611438280122577], [-70.867581782656615, 41.61196370651956], [-70.867887760866282, 41.612967618144488], [-70.868741135684743, 41.6140882883183], [-70.869199176053684, 41.614359773959251], [-70.869381444616579, 41.61497871407861], [-70.869352200841433, 41.615438284275527], [-70.869169455046332, 41.615756363740168], [-70.869200281197337, 41.616305134490041], [-70.869322735227883, 41.616492642232281], [-70.869414397111683, 41.616968099624785], [-70.869385097535996, 41.618139597332359], [-70.869112045314253, 41.619170724420101], [-70.869112445194958, 41.62015267773495], [-70.869509618970369, 41.621199318674485], [-70.869479611847026, 41.621407319374221], [-70.868839889057412, 41.622300274434984], [-70.868871349271274, 41.623101154121578], [-70.869819991226208, 41.625103633149067], [-70.870307797970298, 41.625626844163321], [-70.872138591014746, 41.626866525088481], [-70.872809014629951, 41.627089737720453], [-70.873237024777282, 41.627461252491798], [-70.874486899454084, 41.627935702123402], [-70.878169363560843, 41.629057244699695], [-70.878900521990431, 41.629531057934997], [-70.879235277684415, 41.62985927268064], [-70.880301661944998, 41.630355255256411], [-70.881917307782118, 41.630904816356157], [-70.882984475761774, 41.631049631231875], [-70.883410911647474, 41.631394087635655], [-70.884386837986611, 41.631531101356927], [-70.885575007025807, 41.63212439360349], [-70.88679356574346, 41.632491753146631], [-70.887190217610836, 41.632854042073788], [-70.887525353603465, 41.632948136497959], [-70.888013684456922, 41.632534342515505], [-70.888653721028874, 41.632533284100646], [-70.88917149532503, 41.632767913806113], [-70.889841837863344, 41.632810859790553], [-70.889628794996099, 41.632120929081346], [-70.889629770148133, 41.631553157840592], [-70.88993452474466, 41.631233449636184], [-70.89005746954156, 41.630132320017424], [-70.890850571841796, 41.629038654750943], [-70.891247301670845, 41.62819442711033], [-70.891703961250741, 41.627710128692485], [-70.891979074007921, 41.626958076678378], [-70.892497620032202, 41.62633679892329], [-70.893534210541873, 41.625536498038521], [-70.893713535066468, 41.625088347502313], [-70.893957192620704, 41.624904529655822], [-70.895695394940546, 41.624380311061081], [-70.896000095346011, 41.624123072666762], [-70.900603893950574, 41.624173281852158], [-70.902554521888774, 41.623997353079218], [-70.903072842210122, 41.624312956133657], [-70.903285971392677, 41.624543040299962], [-70.905420488368094, 41.624310043361483], [-70.905694286384815, 41.624701427179929], [-70.905663560594789, 41.624908892824728], [-70.90526699305839, 41.625086893603324], [-70.903227774643327, 41.625430774021275], [-70.902983613755666, 41.625632616451711], [-70.902800856867259, 41.626005311870394], [-70.90304472511886, 41.628999797054348], [-70.903378906716171, 41.629453989452806], [-70.903836649181983, 41.629527250228605], [-70.904781090186191, 41.629412359127876], [-70.904872068974456, 41.629888323056704], [-70.903866169336283, 41.630004063182561], [-70.903348364853116, 41.630760452403578], [-70.903317929290466, 41.631283140046477], [-70.903622183034699, 41.63169215586278], [-70.90380497693836, 41.63180620160859], [-70.904079683354354, 41.632360201327998], [-70.904932697628041, 41.632931364829837], [-70.905207125493988, 41.633026259712842], [-70.905877065718201, 41.632907041630283], [-70.907096898528181, 41.633112032154457], [-70.907554156221892, 41.633707582244078], [-70.907737023357711, 41.634307823944916], [-70.907888452009104, 41.634440877618552], [-70.908498855164424, 41.634466564272664], [-70.908620297359789, 41.635221259192377], [-70.908072193353206, 41.63540127289501], [-70.908102813357743, 41.635698015493062], [-70.908772662001311, 41.635902914367605], [-70.90874205969466, 41.63611047149459], [-70.907340148107622, 41.636431178751018], [-70.907065532118821, 41.637507404423893], [-70.907461792954123, 41.637914638511404], [-70.907431123583407, 41.638167753886471], [-70.90672988060912, 41.638395313142922], [-70.906790020308478, 41.638808718542293], [-70.907736002427214, 41.639630739421392], [-70.908894013201845, 41.640890536090616], [-70.909290454991947, 41.641099682319648], [-70.909411947555711, 41.641305148468753], [-70.909412112660789, 41.64210648182879], [-70.908345061849261, 41.642403100137528], [-70.90819194940994, 41.642540780859314], [-70.908222343939343, 41.642810420965219], [-70.908466950946078, 41.643175804926834], [-70.908923799791268, 41.643681849749207], [-70.909289574750957, 41.644666238431356], [-70.909563487238941, 41.645031231968133], [-70.909594192835897, 41.645463030606528], [-70.909715996181689, 41.645739897633582], [-70.910112529961353, 41.645994690248202], [-70.91224684241098, 41.646499236394504], [-70.912856873930465, 41.646813556892646], [-70.913161180914727, 41.647087490694027], [-70.913192016466908, 41.647573311306985], [-70.912765221411519, 41.648075857567662], [-70.912674148474508, 41.648437787599065], [-70.912795324562012, 41.648732745492445], [-70.91313055447894, 41.649078328654397], [-70.913831920418104, 41.649607493998559], [-70.914441954779861, 41.64976820210002], [-70.915661551580612, 41.649748004365676], [-70.916515279730959, 41.650066978332781], [-70.917125855409282, 41.65018265609497], [-70.917705041492596, 41.650911594103313], [-70.918040466990291, 41.651437778223666], [-70.918040207515347, 41.65191497467098], [-70.917766001876956, 41.652351872823878], [-70.91706442268999, 41.653011763864122], [-70.916607577985857, 41.653109632820943], [-70.915814566939375, 41.652789260961491], [-70.914411251232522, 41.653083128688365], [-70.914411344467183, 41.65333523372334], [-70.915112772612162, 41.653863850950138], [-70.915417482935936, 41.654137780549704], [-70.917450945054327, 41.654426790100409], [-70.917552384705942, 41.654822933624025], [-70.91730815674606, 41.655367488820126], [-70.916832535128833, 41.65532399400179], [-70.915295067100246, 41.655184375474981], [-70.915203168446496, 41.655663351775651], [-70.916545575478537, 41.655893088520635], [-70.91651543333812, 41.656578388026773], [-70.915234235789626, 41.656716948081694], [-70.915142888143308, 41.656925274951845], [-70.915173362813135, 41.657492126626089], [-70.913922989513395, 41.657972432182042], [-70.913556315993389, 41.658248577449335], [-70.913403740013692, 41.658521234052436], [-70.913404293020577, 41.659259543118999], [-70.913282287695282, 41.659693884227039], [-70.913281295677749, 41.660351781975002], [-70.912153921151869, 41.661289101939843], [-70.912183630753333, 41.661792834377934], [-70.912458424887419, 41.661797135363749], [-70.913037797645146, 41.661517049251565], [-70.914288801513877, 41.660740173320697], [-70.915051193576602, 41.660493072874324], [-70.91529518006891, 41.660885449323587], [-70.915233945555002, 41.661634155048866], [-70.915294703390401, 41.664037293501607], [-70.915177968935126, 41.664315809084748], [-70.914958523940783, 41.664835816656385], [-70.915020114788035, 41.665204115967761], [-70.915691003758553, 41.665778220501977], [-70.91584374808194, 41.666000676892509], [-70.916056782033138, 41.666708563644804], [-70.916026281288666, 41.667510909656023], [-70.915873383892446, 41.668566892591841], [-70.915874077608194, 41.669503284219665], [-70.915690556637827, 41.669848985373449], [-70.915660219632286, 41.671263585627898], [-70.915629437027022, 41.671741165485685], [-70.915446375962347, 41.671996291099525], [-70.915202578555764, 41.672090657727338], [-70.914348025983259, 41.672131910543428], [-70.913982482096216, 41.672380962124386], [-70.913982590082625, 41.672867164224961], [-70.914378842003018, 41.673527017379556], [-70.914592299514311, 41.673874759666603], [-70.91456129014685, 41.674415454256007], [-70.914286631316145, 41.674600237695913], [-70.913890602384427, 41.674714706372754], [-70.913524270939391, 41.674694270790752], [-70.912670035309731, 41.674095617514659], [-70.912334593498798, 41.674164204398167], [-70.912365238568469, 41.67437090833571], [-70.913189010556366, 41.675384118459718], [-70.913250188284877, 41.675653465523908], [-70.913554634191982, 41.675927398180789], [-70.914927325837411, 41.676633875622706], [-70.915446360585548, 41.677003445668348], [-70.915842378905296, 41.677141165953763], [-70.91620852324499, 41.677486267539507], [-70.916329808527223, 41.677684971884226], [-70.916547970983473, 41.678046240084775], [-70.916968586996873, 41.678740603051644], [-70.91724580724771, 41.679198332322393], [-70.917520860955392, 41.678905498970614], [-70.917581812781677, 41.678120775887614], [-70.91733756565182, 41.677800973343857], [-70.916879875489698, 41.675772789265316], [-70.916513598136291, 41.675337651815809], [-70.916513962916852, 41.674284217482139], [-70.916788392054798, 41.673847233046821], [-70.91810071074795, 41.672384634499522], [-70.918130743841459, 41.671789461530857], [-70.919289714434555, 41.670464542468643], [-70.919320395961236, 41.670166945777112], [-70.919015660061234, 41.669568352786825], [-70.918985300593633, 41.668614342662856], [-70.919198205409288, 41.668151197625747], [-70.91922895963792, 41.667673616778437], [-70.918893305831475, 41.666805293630766], [-70.918740996086456, 41.665133153325556], [-70.918405362236555, 41.664264828709399], [-70.918284284954041, 41.663240035250467], [-70.918404992086934, 41.662734192678137], [-70.918558468261764, 41.662506552689983], [-70.918954635736938, 41.662301491358321], [-70.919991679970451, 41.662167226442911], [-70.921029087306877, 41.662483140366604], [-70.921302809499849, 41.66246031328879], [-70.922949725381244, 41.66174838224503], [-70.922980575542013, 41.661522905350594], [-70.922553775692037, 41.661106567910416], [-70.921851965006738, 41.660857110958609], [-70.921729383184825, 41.660697211855904], [-70.92185169173095, 41.660541979312782], [-70.922644725587972, 41.660195402427952], [-70.922614743045955, 41.659925678626003], [-70.921577349363119, 41.659970468410719], [-70.921090044699596, 41.659834103730446], [-70.920205059418649, 41.659966362536089], [-70.919930901968186, 41.659826487308422], [-70.92002263179306, 41.659005364776711], [-70.919595876597427, 41.658733616171652], [-70.919107272302909, 41.657723874456444], [-70.919229139895293, 41.657154470655676], [-70.919046490324149, 41.656815267679235], [-70.91883327387049, 41.65662960189011], [-70.91791856372744, 41.656510126560455], [-70.917917613132389, 41.655915335204938], [-70.918344976242324, 41.655800473371499], [-70.918588963216664, 41.655625067722795], [-70.918344889498201, 41.655440323685596], [-70.91849768784347, 41.654545774027071], [-70.919747612653126, 41.654408098362786], [-70.919747811208225, 41.653975920327554], [-70.920266110523286, 41.653561600817291], [-70.920754185895021, 41.652400895935806], [-70.921241917145466, 41.651780501083053], [-70.920998000784124, 41.651685260569195], [-70.920967648062984, 41.651298485886088], [-70.921120201281511, 41.650359543498681], [-70.921272245564438, 41.650086784047595], [-70.921669038686829, 41.649909268266939], [-70.921974257188282, 41.649237791307733], [-70.922309361016318, 41.648898522895735], [-70.922004519034672, 41.64839951787873], [-70.922096174103359, 41.648073598519893], [-70.922462097312575, 41.647617347795681], [-70.92249219839853, 41.647274818751292], [-70.922279042798635, 41.646566403104138], [-70.922431959650581, 41.646248628179407], [-70.922949287955404, 41.645879850755648], [-70.922919370665809, 41.645151027184014], [-70.922522606180891, 41.645076352866703], [-70.921181120522732, 41.644873701258511], [-70.921425220982073, 41.642105216176745], [-70.92389426150946, 41.641649558867996], [-70.923802572907107, 41.641101577574652], [-70.921546943049364, 41.641373742426318], [-70.921425167144974, 41.641195299191899], [-70.920815448577216, 41.63547761767299], [-70.920205587754168, 41.635470007445704], [-70.918407186538545, 41.635634684307263], [-70.918254457739437, 41.635061085493874], [-70.918223744069309, 41.634215117713644], [-70.920449272584491, 41.634006973118467], [-70.920937580059871, 41.633917803237701], [-70.920876483831378, 41.633441374774776], [-70.920113894067768, 41.633165665109949], [-70.918163291848003, 41.633234481967328], [-70.918132320430288, 41.632865800689494], [-70.920480153030169, 41.632664494185484], [-70.920358189192839, 41.632296970394322], [-70.918132251818705, 41.6324509983803], [-70.917918867775171, 41.632292971019901], [-70.917919545650705, 41.632112900061557], [-70.918925092688667, 41.631997033753194], [-70.919017440796111, 41.631355989812739], [-70.919718126033899, 41.631335348327319], [-70.919717614511441, 41.630875615189304], [-70.917949425826194, 41.630833352512468], [-70.917949647779722, 41.630347152081967], [-70.918589813519873, 41.630210329708646], [-70.918438323598508, 41.629528062361146], [-70.917736791454047, 41.629485665392053], [-70.917645399820557, 41.629163313820044], [-70.918132726234589, 41.629020038695415], [-70.918072030422593, 41.628660749200449], [-70.916913276418015, 41.628725130986879], [-70.916792075134126, 41.628448184694648], [-70.916242568312171, 41.628475166696845], [-70.915968826104191, 41.628200317310316], [-70.914778856499865, 41.625091240776314], [-70.914474227225227, 41.624456619480611], [-70.914504830976071, 41.623997046387082], [-70.914657405510127, 41.623859354685905], [-70.914748705467886, 41.623677499139973], [-70.914749040305324, 41.6226960937366], [-70.915236782963532, 41.620887232720314], [-70.915206983261541, 41.620248354470057], [-70.91456563944574, 41.620196072812831], [-70.914230874551819, 41.620012022517749], [-70.913895456708346, 41.619991205588683], [-70.913378083485142, 41.620224884767929], [-70.911791993633528, 41.621799635251804], [-70.911487070174928, 41.621984884529738], [-70.909840398059913, 41.623326907869007], [-70.90865126370737, 41.624013475771399], [-70.907645937259488, 41.624363259016548], [-70.906730623833525, 41.624477245071816], [-70.906639602576533, 41.624289942374773], [-70.906639352200628, 41.6239027802038], [-70.908377371348294, 41.623189288892945], [-70.909566948933474, 41.622440330536776], [-70.910176180296105, 41.621916774645811], [-70.910542079810995, 41.62170366338151], [-70.912981133048135, 41.61928581664673], [-70.913255927416458, 41.618785907424176], [-70.913286725277629, 41.618371264273975], [-70.913164794501398, 41.617706609509789], [-70.912920744880623, 41.617314316976525], [-70.912525182268709, 41.617024153609385], [-70.909842591979881, 41.615645560146724], [-70.909202869022124, 41.615098140774499], [-70.908623286400385, 41.614756315937512], [-70.908502057218271, 41.614073651835838], [-70.908319432024783, 41.613608468452775], [-70.90783187921393, 41.612995385896184], [-70.907100873999099, 41.611854852629463], [-70.906277648625306, 41.611256308205945], [-70.905607165386769, 41.611006281177133], [-70.905455458883978, 41.610819200246809], [-70.904876169085895, 41.610477987793523], [-70.904936889953873, 41.609792310628308], [-70.904206084962951, 41.608858845422176], [-70.903749545303313, 41.607822191411358], [-70.903597515911116, 41.606473623403538], [-70.903140570935008, 41.605328919546551], [-70.9022572048369, 41.603938240271653], [-70.902013787753262, 41.602951590131845], [-70.901831154197097, 41.602675474512843], [-70.901892376496789, 41.601900304293466], [-70.901709404312683, 41.601327063126277], [-70.901314405637436, 41.600505101809709], [-70.901405365147852, 41.600206206504055], [-70.902076054896412, 41.599636829361948], [-70.902533083432203, 41.598863831145664], [-70.902899386063694, 41.597605772772745], [-70.903113462075154, 41.59737730206767], [-70.903143583225642, 41.597079796555477], [-70.903143666575218, 41.596890718396693], [-70.902565028196975, 41.595954619581192], [-70.90207707637687, 41.595404535283436], [-70.900645479616287, 41.594221463955087], [-70.90055469026106, 41.593439370184072], [-70.899915109156353, 41.592729740323655], [-70.899854426542845, 41.592460387916859], [-70.900311627543786, 41.591858470639018], [-70.900891010289556, 41.591515423281614], [-70.901774662941719, 41.591428961484965], [-70.902140196518189, 41.591522003403192], [-70.902443967923702, 41.591678916014168], [-70.902443712390038, 41.592156113039792], [-70.902779425164866, 41.592322196462206], [-70.908477331613909, 41.593263091987566], [-70.909330326329396, 41.593537101481481], [-70.910335402119188, 41.594033565902713], [-70.910609139828907, 41.594290421981491], [-70.911127956745617, 41.595182231033256], [-70.911828360634374, 41.596233173403839], [-70.912376965421572, 41.597764396037626], [-70.912559308872858, 41.598454664884919], [-70.91316782013115, 41.59943471418957], [-70.913686518650906, 41.59973226406143], [-70.912955695583321, 41.600330030436851], [-70.912863671265086, 41.600763985243269], [-70.913045909803429, 41.601310192939316], [-70.91332038984315, 41.601791689544612], [-70.914081973687786, 41.602526542103043], [-70.915087051548099, 41.603554273982866], [-70.915331325283915, 41.604810921460505], [-70.915757250775457, 41.605605440576497], [-70.91621482865186, 41.606047894584869], [-70.916428424770928, 41.606593717502122], [-70.917067992796703, 41.607168736973378], [-70.917098510848291, 41.607690569803509], [-70.917707562333277, 41.608562552020821], [-70.9177375532973, 41.609499093880252], [-70.917859534860568, 41.609911009270419], [-70.918926031089143, 41.610892831759784], [-70.920084475802952, 41.611647769068675], [-70.921090959000523, 41.612612877910898], [-70.921273086279641, 41.612997094237635], [-70.921364427257558, 41.613868669976263], [-70.921669017665835, 41.614350209099591], [-70.9222179210512, 41.614323198429197], [-70.929320387342443, 41.613366421250831], [-70.929868285379513, 41.613114185728385], [-70.930203912602863, 41.61281145292763], [-70.930204081241698, 41.612334256405106], [-70.929899162082776, 41.611600634509308], [-70.930173048151445, 41.610254240597293], [-70.931507298575312, 41.608342589487087], [-70.931513790268241, 41.607719654376105], [-70.931209037801139, 41.607076074037174], [-70.931056546416002, 41.60589015064987], [-70.930813114147611, 41.605245795721167], [-70.93014184546378, 41.60460874956005], [-70.92974565955187, 41.603876920317553], [-70.929746281898574, 41.602985555001652], [-70.930142221017661, 41.601952112985678], [-70.930233387649082, 41.600536734619915], [-70.930080836430747, 41.600008081310669], [-70.928983666071019, 41.598297538202246], [-70.928983553171037, 41.598108459428673], [-70.928434607461895, 41.59691999904382], [-70.927825387595377, 41.596371667356685], [-70.92764295209345, 41.593258791361613], [-70.927703364648963, 41.592618750774172], [-70.927825451213096, 41.592418492557997], [-70.92919676337138, 41.591549147681278], [-70.929532003484525, 41.591156378280388], [-70.929776160849897, 41.590674824296485], [-70.929928395438495, 41.589996887610468], [-70.930628084615805, 41.588688103899116], [-70.931146862138704, 41.58754497897759], [-70.931329459270586, 41.586902667232607], [-70.931177258013065, 41.585554228247673], [-70.931237673638705, 41.584868537192939], [-70.931420382164646, 41.584253237310079], [-70.931695037818216, 41.583843861845928], [-70.933247998980391, 41.582151537543567], [-70.933278211998214, 41.581827014140721], [-70.933613279563417, 41.580821439121678], [-70.933857401081454, 41.580295308185065], [-70.934223703802289, 41.580000640916573], [-70.935411419414848, 41.579269325745521], [-70.936932951618374, 41.578100182039627], [-70.937755937731097, 41.57730292773617], [-70.938029991690726, 41.57711808703408], [-70.938304984727552, 41.577167797112821], [-70.938700642303587, 41.577322816041033], [-70.938944437662386, 41.577553074966033], [-70.939035925031718, 41.578101042718004], [-70.939737431999433, 41.579700953483794], [-70.940132929905673, 41.580342797172655], [-70.940620867924139, 41.580712642504167], [-70.941229279006237, 41.580936768005792], [-70.94308867641071, 41.580896378354041], [-70.943331917572721, 41.581828374372002], [-70.943758580029723, 41.583154010032345], [-70.943911702688624, 41.58441239822681], [-70.944673282919325, 41.58441729402427], [-70.944855738954189, 41.584549279805493], [-70.944947374241735, 41.584755102219461], [-70.944795407148192, 41.584937855066237], [-70.944064061911774, 41.585400220681457], [-70.944155871107029, 41.586083241355453], [-70.944399261736351, 41.58642153090711], [-70.944856235353797, 41.586359568335041], [-70.945587680445882, 41.585941676411935], [-70.946349485018388, 41.585992120755975], [-70.946837174846024, 41.586496993477525], [-70.946806198475343, 41.586695464508423], [-70.946593183781587, 41.586906644551284], [-70.946715038885017, 41.587363546123044], [-70.947568906416635, 41.587907383654894], [-70.947995536007284, 41.588458683635572], [-70.948208667122941, 41.589013447131052], [-70.948544037079571, 41.589439960506013], [-70.949062419053561, 41.589881406034621], [-70.949458113331374, 41.590379068361756], [-70.949885049522067, 41.590633240189725], [-70.950585510950333, 41.590836962081944], [-70.951622277025209, 41.591432253908607], [-70.952109860016179, 41.591847156068205], [-70.952963039464791, 41.593354255880946], [-70.953390264478401, 41.593536386117371], [-70.954791067732302, 41.593602270800112], [-70.955340174461526, 41.593881138024997], [-70.955767334567184, 41.594495436595118], [-70.956194152379723, 41.594812069619493], [-70.956407780237029, 41.595276782650892], [-70.957047855174807, 41.596004641250225], [-70.957444393131041, 41.597150546059524], [-70.95762703095383, 41.597282601950582], [-70.958205910497483, 41.597308413078267], [-70.958450013914174, 41.597448593917733], [-70.959547455466776, 41.59856460583498], [-70.960705510555741, 41.599481192321129], [-70.960645439006171, 41.599734721579615], [-70.960066720185182, 41.60028453047542], [-70.96006694140533, 41.600599661127333], [-70.961559965692672, 41.600601703353377], [-70.961803556057035, 41.600534159067585], [-70.961712229631004, 41.60013981453578], [-70.96168039242454, 41.598933167907646], [-70.961284381666275, 41.59808494316291], [-70.961284102169429, 41.597904327577496], [-70.960918013690957, 41.597307266581161], [-70.96112996182751, 41.594926792772029], [-70.960948201416727, 41.594704709659865], [-70.960429539774793, 41.594794535798179], [-70.960155111262154, 41.594339716011035], [-70.960184432986765, 41.593835107766019], [-70.960703159218596, 41.593466168327851], [-70.960702756898144, 41.593286092379095], [-70.959940874138383, 41.593190725859188], [-70.959636115199672, 41.593033963011365], [-70.959604896859616, 41.592782251084998], [-70.959879674341863, 41.592597271031536], [-70.95978776341903, 41.592274951709214], [-70.959787231761098, 41.592067864024585], [-70.960154147401596, 41.592007212311685], [-70.960885599128858, 41.592211017719841], [-70.961098540874886, 41.592090477940054], [-70.961250535316765, 41.591772647798003], [-70.961250750086649, 41.591547556280091], [-70.961037230588573, 41.591452004755908], [-70.960671497336548, 41.591458192517763], [-70.960366747249367, 41.59157154270418], [-70.959727196810832, 41.591663582436176], [-70.958172868751461, 41.591248763149373], [-70.958233276100842, 41.590743133113186], [-70.958690501807069, 41.590014932024111], [-70.959146528993827, 41.589782377276414], [-70.959634697065255, 41.589720053747847], [-70.959756678638129, 41.590059893117981], [-70.960152773693238, 41.590107424634709], [-70.96091390887959, 41.589688945335503], [-70.961432408561961, 41.589599116422065], [-70.962711773303866, 41.590306921968946], [-70.963138904496034, 41.59093019637082], [-70.963565498892976, 41.591174770979762], [-70.963839736050787, 41.591152385704106], [-70.963869871211799, 41.590016981312125], [-70.964234401987895, 41.589164430117066], [-70.963990776229068, 41.588826182492205], [-70.963989828681775, 41.587907800689493], [-70.96365427673372, 41.58721968500322], [-70.963562441237102, 41.586672276674548], [-70.963045095642457, 41.586212894947607], [-70.96213064677886, 41.58578710604467], [-70.961095093598701, 41.585417548675139], [-70.961003493744883, 41.585229747108826], [-70.961581957600103, 41.585121024285108], [-70.961551383854854, 41.58463531003332], [-70.961033374668091, 41.584229938070031], [-70.960819002729721, 41.583270026687487], [-70.960483840500359, 41.58296960261616], [-70.95996666397059, 41.582951388817641], [-70.959082467085096, 41.58308331815045], [-70.95807721328076, 41.583037470334709], [-70.956584489725287, 41.583585238021733], [-70.95615882499834, 41.583889867253262], [-70.95597585830842, 41.584253101018639], [-70.955976104690052, 41.584478194805897], [-70.955854518728543, 41.584659937515262], [-70.95558065998118, 41.584781796145123], [-70.954665853580451, 41.584842685420227], [-70.953203519247651, 41.584660084218832], [-70.9514067164002, 41.585375139596245], [-70.947964557819503, 41.58615358335269], [-70.947689804956582, 41.585834326964729], [-70.94765887004931, 41.585555601779312], [-70.950035410664753, 41.584912111718317], [-70.950096299229571, 41.58462257709089], [-70.94960839343976, 41.583820594996993], [-70.949486266764481, 41.583156519964113], [-70.949760237465355, 41.58173814255337], [-70.94975967349653, 41.580729094247609], [-70.949393540104154, 41.579951921077956], [-70.949089045453249, 41.578534071418922], [-70.948844972801439, 41.578331384462167], [-70.948692659307255, 41.577874877617646], [-70.948326782578988, 41.577349715723358], [-70.948113851323015, 41.576344767878162], [-70.947626100894169, 41.575632274551246], [-70.947626047155921, 41.575263122449172], [-70.947443235709187, 41.574743889779981], [-70.947229381685304, 41.574279158256068], [-70.946862810144452, 41.573393929802748], [-70.946832581642724, 41.573187237504207], [-70.946192711726553, 41.572225764658], [-70.945765912881328, 41.57197157901458], [-70.943420671492092, 41.5698499115422], [-70.942414523359531, 41.568678455728516], [-70.941531462027314, 41.56790087828945], [-70.939186442487994, 41.566211301216093], [-70.937449980509967, 41.564628684304218], [-70.93705396316436, 41.563950903194026], [-70.936596598351898, 41.562670647904412], [-70.936535640285811, 41.561546051630906], [-70.93641417083056, 41.561386173170611], [-70.936717581160565, 41.558346134055498], [-70.9365961161309, 41.557682047816876], [-70.936138619792132, 41.557131090746907], [-70.935286131622121, 41.556488221086056], [-70.935285800971229, 41.556308145376612], [-70.93562151491453, 41.556149368205126], [-70.936047684698153, 41.555736774440078], [-70.936808804894625, 41.554868902403484], [-70.936931278409872, 41.55429948469979], [-70.936960868508734, 41.552173584730312], [-70.936595036935344, 41.550703084746743], [-70.936290942098395, 41.550023415805192], [-70.935925454718515, 41.549633360600907], [-70.934768416797297, 41.54874353202166], [-70.933762326963617, 41.54766149481317], [-70.932027009996389, 41.544574637544606], [-70.929926408307693, 41.541332316113554], [-70.928860348962644, 41.540143599630163], [-70.928221485097637, 41.539136469445815], [-70.928312667952866, 41.538909584833235], [-70.928769393761812, 41.53883922390812], [-70.929682483875609, 41.538994626926893], [-70.93026185545159, 41.539201290109908], [-70.931600919890897, 41.539890033755235], [-70.932635767016166, 41.540277868068017], [-70.93440182949, 41.540482511151062], [-70.936867493919252, 41.540459293781552], [-70.937781234332462, 41.540299504847496], [-70.938602813259621, 41.540276559437181], [-70.940460511126631, 41.540254757883133], [-70.942622011152835, 41.539776939597694], [-70.944357202532728, 41.539134927899674], [-70.946426741670649, 41.537281271966258], [-70.946913590748267, 41.53650770589477], [-70.94724828650439, 41.535979198103604], [-70.947187007118799, 41.535359354972464], [-70.947065208365302, 41.535045883128952], [-70.947065271101749, 41.534649720553105], [-70.947247405011652, 41.53387232760327], [-70.947307869149284, 41.532502348936831], [-70.94770412170223, 41.530973648468994], [-70.947734111542374, 41.530469046939388], [-70.947947329898767, 41.529780760842947], [-70.948190645613167, 41.529506790888838], [-70.950138358212016, 41.529095319896285], [-70.951569030874055, 41.528684109749356], [-70.954369140529579, 41.527771934821772], [-70.954825572751091, 41.527835983403179], [-70.954308728631375, 41.528070387006615], [-70.953456326217903, 41.528706178229541], [-70.951325322470638, 41.529579880309996], [-70.950290723662903, 41.529966535450072], [-70.950047321410835, 41.530195580998551], [-70.95007767321755, 41.530582256834194], [-70.9503515966355, 41.530902134436687], [-70.951051253745021, 41.531403514751844], [-70.953335437350503, 41.532526494780733], [-70.954492008581013, 41.532551776858426], [-70.955588091265099, 41.532983543801173], [-70.956015570259638, 41.533075089905168], [-70.956319537684337, 41.532979756447943], [-70.956287826486005, 41.532070771810524], [-70.956105610838108, 41.531614672055497], [-70.956044100824826, 41.529868831010866], [-70.956439705696937, 41.529096408435343], [-70.956561021084283, 41.528382816320551], [-70.956408807964095, 41.527611191421954], [-70.956073271580436, 41.527292744006154], [-70.955220556827754, 41.527334213183202], [-70.955464107501342, 41.526717548379708], [-70.955311412898652, 41.525891807228206], [-70.955189350562719, 41.525479932649418], [-70.954763482411707, 41.524613533025438], [-70.95473229300228, 41.524406838450496], [-70.953635830585256, 41.521507418293929], [-70.953269622618322, 41.52012700913923], [-70.953178324861412, 41.519074757785937], [-70.952782544927445, 41.518045889051528], [-70.952600109769563, 41.517454727084555], [-70.952599045778214, 41.516653393239217], [-70.952903334345777, 41.515234528024656], [-70.953146453479761, 41.514707813343549], [-70.953420268813886, 41.514387880754128], [-70.953633104653335, 41.514321377981325], [-70.954120776136236, 41.514349025246815], [-70.954637313037026, 41.514574350124697], [-70.955672522394934, 41.515691816366797], [-70.956160520183303, 41.516430747945911], [-70.956404667326268, 41.517687392327083], [-70.95707425111155, 41.518828483813316], [-70.957257275373948, 41.518987464051968], [-70.957287490200144, 41.519239171666364], [-70.957714378425266, 41.521825811774221], [-70.957745740010893, 41.523401067181837], [-70.957928365969025, 41.524586465248007], [-70.958294396399666, 41.525733392372317], [-70.958690321506836, 41.526491591411755], [-70.959665063110222, 41.528474166612838], [-70.960152666632723, 41.528907043274721], [-70.960944334663509, 41.52941609287857], [-70.96298424238239, 41.530074568060641], [-70.963471259205193, 41.530552986216648], [-70.963563301366634, 41.531037369558824], [-70.963958843919258, 41.531336900124202], [-70.964354802800656, 41.531429346404735], [-70.965998236179587, 41.531536130201019], [-70.967185369253713, 41.531948045124267], [-70.968221025551571, 41.532479617335461], [-70.968312315953597, 41.532640400634577], [-70.968373904289152, 41.533593999260077], [-70.968923410676155, 41.535331401856766], [-70.969136905740783, 41.535886127219072], [-70.969441366219556, 41.536294967432916], [-70.969411712054224, 41.536620132055035], [-70.969107491280738, 41.536688488320209], [-70.968345591793422, 41.536458119763637], [-70.967980593081833, 41.536500347766143], [-70.967919192051809, 41.536780254770136], [-70.968467783250404, 41.537257229046098], [-70.96843721440581, 41.537735361601143], [-70.968315364996812, 41.538007152555579], [-70.967038508438776, 41.538974734161279], [-70.967068951127857, 41.539334484430384], [-70.967769615627603, 41.540231927806715], [-70.967769813146816, 41.540439013584709], [-70.966887037366106, 41.541048833215548], [-70.966522055017592, 41.541460118000913], [-70.966065237582015, 41.54191832918697], [-70.966187687262035, 41.542195138232763], [-70.966826835025827, 41.542148621357647], [-70.967740067304277, 41.542519806618913], [-70.968592292153232, 41.542676321332685], [-70.96938402520523, 41.542627172786119], [-70.969688685193219, 41.542378744147513], [-70.969932764699223, 41.542311185855482], [-70.970906639015794, 41.542583047881479], [-70.970815561669795, 41.543061529547245], [-70.971181499520284, 41.543316418322533], [-70.971151498640793, 41.54352453387488], [-70.970268557552586, 41.543935667720184], [-70.969994339814193, 41.544255729576669], [-70.968898262022577, 41.544598330017152], [-70.96731578754013, 41.544643317861038], [-70.967285025321615, 41.54486934623197], [-70.968046533217674, 41.54521622741828], [-70.968686403637903, 41.545880994811561], [-70.968717102404497, 41.547411135274956], [-70.968352666127174, 41.547912555618332], [-70.968351906762805, 41.548119636943539], [-70.968930550025775, 41.548091912448648], [-70.969600306542773, 41.547612265306732], [-70.969722548947544, 41.547366945532644], [-70.969691353315085, 41.546313908624398], [-70.969843510734151, 41.545987065002912], [-70.970543464490063, 41.545606053808967], [-70.971273857772488, 41.544962812632988], [-70.971669603948754, 41.544758200342386], [-70.972703903167869, 41.544479392547906], [-70.973983034647276, 41.543952938129962], [-70.975139718772198, 41.543887972520217], [-70.975170300797345, 41.543563441009645], [-70.974773451620337, 41.5431738170766], [-70.974317331933733, 41.543172876529091], [-70.973617859933583, 41.543544999323565], [-70.973373025309087, 41.543062706924594], [-70.974133589428973, 41.542284622583324], [-70.974255328819666, 41.541805109902413], [-70.9741937969346, 41.541139722708337], [-70.973889760235011, 41.540847945310631], [-70.973340689370275, 41.540479039525053], [-70.972305341613691, 41.540136593554713], [-70.97184896982526, 41.539819882534047], [-70.971026112615931, 41.539491918706879], [-70.9703871090218, 41.539539090012283], [-70.96999117693899, 41.539653659931297], [-70.969717963976294, 41.539955718322943], [-70.969444320399134, 41.540410836756941], [-70.969170531909683, 41.54055019452565], [-70.968652614775323, 41.540459985721412], [-70.968287103274363, 41.539998005843451], [-70.9681948956013, 41.539657684690376], [-70.968316435610092, 41.539250296836975], [-70.968560181028693, 41.538831596137918], [-70.969016367744075, 41.538328984003179], [-70.969321328668102, 41.538215612963747], [-70.96959544810457, 41.538237692551228], [-70.969838833352071, 41.538512901677109], [-70.970873611234367, 41.538513227556258], [-70.970903288271018, 41.537458764284999], [-70.970781211272509, 41.537091925283512], [-70.969959100691938, 41.536070042889286], [-70.969897615556249, 41.535332623955306], [-70.969958164219605, 41.534647456029056], [-70.970171204384243, 41.534373838136212], [-70.971539918410159, 41.533206407775602], [-70.971782946764492, 41.532869360736846], [-70.972208382116591, 41.530970931970899], [-70.972786074899105, 41.530573582932718], [-70.973730007941953, 41.530692129935218], [-70.975191215189966, 41.530649374892391], [-70.975830212179616, 41.530899388485203], [-70.976469775487672, 41.531330014920144], [-70.977596811465517, 41.531904690168496], [-70.977566218193928, 41.532085793465029], [-70.976957920653888, 41.532726125155946], [-70.976897603851469, 41.533186745448937], [-70.976623714647658, 41.533344217884562], [-70.976380393685446, 41.533294655952162], [-70.976379185223607, 41.53231324928344], [-70.976014104172179, 41.532310484187683], [-70.974766514213698, 41.532790917235936], [-70.97455374817909, 41.533019526254073], [-70.974371781715561, 41.533437355076316], [-70.973519257733102, 41.53411822449501], [-70.972879940041395, 41.5342103364965], [-70.972484600947169, 41.534694158788163], [-70.972485494661996, 41.53515335086982], [-70.972971732186991, 41.535360983398469], [-70.973428834051091, 41.535308542317509], [-70.973885329996236, 41.534877311605655], [-70.974889618845722, 41.53459897591771], [-70.975559440990793, 41.534308282246492], [-70.976076470532504, 41.534443474027597], [-70.976472650410315, 41.534968055643546], [-70.977874498179403, 41.536339740322411], [-70.977966279208417, 41.536914687352898], [-70.977326890452261, 41.537439000926703], [-70.976626773983782, 41.537577043115924], [-70.975408860242922, 41.537318778276202], [-70.975256345303052, 41.536934246363927], [-70.975074174223309, 41.53682031788049], [-70.974678238805282, 41.536953001410524], [-70.974282538389062, 41.537319780446147], [-70.973308000990642, 41.537894830188478], [-70.973218473986549, 41.539310244297965], [-70.973432197416415, 41.539405774511053], [-70.973858204943539, 41.539290701760336], [-70.974283048699192, 41.538148661766648], [-70.974496305714496, 41.538081581285454], [-70.974740460236518, 41.538104590173752], [-70.975136097856947, 41.53828712398694], [-70.975744386156904, 41.538330451280082], [-70.976414949142438, 41.538760050442193], [-70.976658651262312, 41.538648087895034], [-70.976809823476046, 41.538303223339867], [-70.97705352757697, 41.5381907197457], [-70.977357967566647, 41.538492034402985], [-70.978302668380437, 41.538943772635236], [-70.978515919438067, 41.538877224802619], [-70.978698129544753, 41.538486941716208], [-70.979033283016435, 41.538490190941097], [-70.980006909092666, 41.538716325391448], [-70.98134652163472, 41.538513117943452], [-70.981499528191037, 41.539123275970162], [-70.981834705211426, 41.539405631091256], [-70.983082724157697, 41.539653879667704], [-70.983752646059955, 41.540156001946244], [-70.983844460810161, 41.540451289902421], [-70.983723142681455, 41.540768748202794], [-70.983814771557988, 41.541622803659543], [-70.984698303975676, 41.542255904395091], [-70.98485058330624, 41.542514370561477], [-70.985034938667624, 41.543717738244524], [-70.985552479290249, 41.544249050635507], [-70.985796810898989, 41.54473131406445], [-70.987593748639028, 41.545456941254834], [-70.988264130215825, 41.545598351315604], [-70.988872494683903, 41.545461534729554], [-70.989359794653978, 41.545462016747372], [-70.989877570957091, 41.545759214699316], [-70.99027300529589, 41.545752617278048], [-70.99057723826931, 41.545459112351459], [-70.991400097405347, 41.545733451895394], [-70.991917703211044, 41.545705967213642], [-70.992435397920758, 41.546075722692585], [-70.993958647755008, 41.547309812627454], [-70.994263149081391, 41.547421464367766], [-70.99450683074555, 41.547327470733912], [-70.99432320394439, 41.546691354073744], [-70.993865730990848, 41.545978565664115], [-70.993835142580622, 41.545708859311851], [-70.995267127015765, 41.546161456297334], [-70.99718561629993, 41.546551544337746], [-70.997976850126832, 41.546798684963363], [-70.998221094819314, 41.546983799688533], [-70.99831313729895, 41.547810833252875], [-70.998435200896239, 41.54803367317475], [-70.998983402301775, 41.548402452883671], [-70.999529520515949, 41.54867046966362], [-71.000596808926659, 41.548057247155207], [-71.00096134001133, 41.54809603508928], [-71.001174894097346, 41.548191512034826], [-71.001113606524115, 41.548489444300657], [-71.000473121607357, 41.549563737365709], [-71.00053315840394, 41.550364697878983], [-71.000654766921272, 41.550524507677515], [-71.000776343318378, 41.551396147383556], [-71.000349025131428, 41.552151746424002], [-71.000317862805048, 41.553089071517562], [-71.000499949358769, 41.553563735855263], [-71.000498824964168, 41.554599693310792], [-70.999736613039843, 41.555964355801578], [-70.99973561159527, 41.556261472565339], [-71.000132259465317, 41.556245752161296], [-71.000558640516985, 41.555598823707513], [-71.000863891990051, 41.555097580944761], [-71.001351216391484, 41.554981053597473], [-71.001747213926066, 41.555217427509227], [-71.002294401995002, 41.555973884534275], [-71.002079464893256, 41.55821206492071], [-71.002840329132638, 41.558856279780088], [-71.00299192166915, 41.55907870374449], [-71.002717070852626, 41.559786539575462], [-71.001955682969623, 41.560565351870082], [-71.001833376912444, 41.560954854467866], [-71.001802264976092, 41.561595058886056], [-71.002136659684368, 41.561958382901665], [-71.002166230551111, 41.562904438269769], [-71.003444570491226, 41.5640889754686], [-71.003382383523643, 41.565306450083192], [-71.003443574876016, 41.565485620587204], [-71.003808825867353, 41.565506394757236], [-71.004175221846097, 41.565193406673366], [-71.004175534080915, 41.564022390626448], [-71.00426769234852, 41.563453310776652], [-71.004023827817008, 41.562899060515505], [-71.003507018104642, 41.562466336810466], [-71.003384619533961, 41.56223449733762], [-71.003385914709057, 41.561711749877531], [-71.003630669811599, 41.561004861524822], [-71.003752242676995, 41.560290771521338], [-71.004331918206503, 41.559397978183107], [-71.004393008530755, 41.559171442371984], [-71.004180000397426, 41.558643797874439], [-71.004180798329898, 41.558076029950335], [-71.004363266286703, 41.557685707090535], [-71.004456315102544, 41.556287213309091], [-71.004548369279519, 41.556132841913865], [-71.004427474515168, 41.555351246088357], [-71.004153666579796, 41.555076609377167], [-71.003270771187374, 41.554623107415367], [-71.002752920284678, 41.554163904689894], [-71.002601040424963, 41.553887457096252], [-71.00269319213011, 41.553272820041194], [-71.002327991919287, 41.552513831317683], [-71.002328846510125, 41.552126047010091], [-71.002450482797371, 41.551943715760451], [-71.002694059955161, 41.551894722412463], [-71.003059554924974, 41.552059468840362], [-71.003272281657303, 41.552542095928523], [-71.00375913830662, 41.55288528364396], [-71.004246966059199, 41.552948729506561], [-71.004459967023962, 41.552746536496642], [-71.004706619361698, 41.54901280136712], [-71.005255054878461, 41.547804739401784], [-71.005348732208745, 41.546568854289958], [-71.005500810903115, 41.546088901025797], [-71.005836410026959, 41.545542309024455], [-71.006324472998827, 41.54510154192301], [-71.006385555404378, 41.544920023492985], [-71.006203243154701, 41.544581053029233], [-71.005807003809338, 41.544506759432615], [-71.004771812083618, 41.544578779918417], [-71.00431496546895, 41.544298753050732], [-71.004315543104099, 41.544100134682694], [-71.005046764714564, 41.543132639542321], [-71.005077532671876, 41.542888504212051], [-71.004286290141366, 41.543001559625317], [-71.003737287505643, 41.543434668571749], [-71.003249514293032, 41.543497271795111], [-71.002640622798054, 41.543291483291334], [-71.001972644778078, 41.542654876927088], [-71.000937446157465, 41.54217709853166], [-71.00002485700611, 41.541346456432422], [-70.999780864639789, 41.541008284280458], [-70.99950743798118, 41.540940722165516], [-70.999394928702316, 41.540278456435004], [-70.999293868902868, 41.539807569056663], [-70.999491699517392, 41.539442082127358], [-70.999217423633851, 41.53943808144421], [-70.998730602252508, 41.539734674694806], [-70.998366536571851, 41.540515305416569], [-70.998336428922073, 41.540993447316644], [-70.997911239386639, 41.541864923689843], [-70.997576319416638, 41.541951858053913], [-70.997150181396293, 41.541842467572302], [-70.996815546573814, 41.54209137699997], [-70.996784887864834, 41.542271854753025], [-70.996572795585493, 41.542527518881478], [-70.99495957043429, 41.543123059798482], [-70.994563575442427, 41.5433548528245], [-70.994503335352832, 41.54365341652462], [-70.994686528196013, 41.543857354880693], [-70.99468606697333, 41.544037426282436], [-70.99416945552008, 41.54424446119004], [-70.993803725721833, 41.544178634973584], [-70.993255023489425, 41.543926965557198], [-70.99203665070894, 41.543128567365983], [-70.991641066171354, 41.543171274918102], [-70.991093131036138, 41.543172241532346], [-70.990210959298722, 41.544015709728441], [-70.98957174143176, 41.544432048877496], [-70.989175907520192, 41.544474746764045], [-70.988627582010309, 41.544358021719439], [-70.988019085700714, 41.543882586315924], [-70.987500592525762, 41.543378291983998], [-70.987134355126685, 41.542808326048934], [-70.986463979961428, 41.542027018073178], [-70.986250500907573, 41.541643395939133], [-70.986127825452115, 41.540547183222202], [-70.985761697358981, 41.539743117651], [-70.985943611162256, 41.539100718813316], [-70.985547798117182, 41.538801264260449], [-70.985334698853663, 41.538327605308766], [-70.985425296065117, 41.538073662114755], [-70.985668597455202, 41.537934667464363], [-70.986795320127612, 41.537824969755007], [-70.987068824842169, 41.537639920025491], [-70.987099342683351, 41.537360403731654], [-70.98609343851551, 41.536063196700404], [-70.986123490806207, 41.535603064810999], [-70.986366682039446, 41.53558111601302], [-70.986824202235695, 41.535924154408953], [-70.987615477530653, 41.535964913857633], [-70.987950476094525, 41.535760961549833], [-70.988284872486688, 41.535332003715531], [-70.988436668493364, 41.534960205852762], [-70.988223560623865, 41.534756662611571], [-70.988223297065787, 41.534234448293631], [-70.988739939875444, 41.533685301294888], [-70.986911861168053, 41.532428873894126], [-70.98493223648299, 41.531580315811382], [-70.98453745286794, 41.531695571562814], [-70.984324480568276, 41.532401392857651], [-70.984477909459557, 41.533065030242497], [-70.984691012337819, 41.533475665125181], [-70.984691139818665, 41.534204963519649], [-70.985087287133055, 41.534846562400801], [-70.985118597801218, 41.535170296562725], [-70.985210555605661, 41.53588029338448], [-70.984937431675348, 41.537091759776011], [-70.984663563715003, 41.5373662094797], [-70.98438967485167, 41.53786638041904], [-70.984146748334297, 41.538032925297976], [-70.983903410417696, 41.537937910940464], [-70.983871653468427, 41.537551148847406], [-70.984145632526975, 41.537114545300064], [-70.984389429435453, 41.536362765352585], [-70.98441837876473, 41.535326303458895], [-70.984357482367386, 41.535120652983217], [-70.983778332107079, 41.53491435760256], [-70.983201122275659, 41.535329772049316], [-70.982226552624027, 41.53541824905863], [-70.981556919370149, 41.535924981119088], [-70.981252975530907, 41.536020382159009], [-70.980461053658203, 41.535764117326607], [-70.979822024015732, 41.53528849769851], [-70.979669302837621, 41.535030022413139], [-70.979668647726527, 41.534372750758386], [-70.980489792510127, 41.533224040729479], [-70.981006645244562, 41.532818988725062], [-70.981158721010104, 41.532195098732259], [-70.981339773107294, 41.530921905650544], [-70.981187231765745, 41.529501958771114], [-70.980425154145408, 41.528515451391108], [-70.980090303819225, 41.528422170642763], [-70.979390217052597, 41.528407166958395], [-70.97838673691291, 41.528703552955079], [-70.977899084491455, 41.528585433575977], [-70.97789898135072, 41.528333330068286], [-70.978902850111766, 41.527487635960604], [-70.979632293270598, 41.526187700045035], [-70.981456321118728, 41.523832582790959], [-70.98224627429552, 41.52259422234161], [-70.982854645552123, 41.521926222232977], [-70.983462697247845, 41.521132796297863], [-70.983979263149166, 41.520123853503094], [-70.983979497211223, 41.519484593746249], [-70.983826487202421, 41.519190198106173], [-70.98336956680339, 41.518477369258022], [-70.983248043810718, 41.518245511614644], [-70.983126095865984, 41.517635587652158], [-70.983367525766823, 41.516010353509181], [-70.983244925860063, 41.515570866261314], [-70.982849307499251, 41.515118340230572], [-70.981296597174122, 41.513974540201581], [-70.981296135949464, 41.513587380131938], [-70.981417857630646, 41.513378060815043], [-70.981294826911153, 41.511957709295096], [-70.981932031398046, 41.509830081203496], [-70.982510241104535, 41.509100091047308], [-70.98317951566294, 41.508899388222972], [-70.9844568855886, 41.508895114841714], [-70.986952858122379, 41.509464654691399], [-70.989904875094467, 41.509899965149451], [-70.991792080761286, 41.510695713488218], [-70.992979226504787, 41.511017322765639], [-70.995291660668585, 41.511427664168181], [-70.999474372602137, 41.511787249174155], [-71.000540388387705, 41.511858303133643], [-71.000814044661325, 41.511772892060321], [-71.00629280866498, 41.511614536812068], [-71.006322380588941, 41.511974271538243], [-71.005409534000151, 41.512341697468528], [-71.004069706147689, 41.512545185036657], [-71.003338542418561, 41.512728813239555], [-71.001390946231254, 41.512772043555572], [-70.999506461106236, 41.512540907141322], [-70.998610894149294, 41.512729902218553], [-70.99778948112008, 41.51293281398145], [-70.996968651384194, 41.51344238718638], [-70.99669569132908, 41.514032627561576], [-70.996908900993304, 41.514767371352505], [-70.997396793570147, 41.515181991066349], [-70.997396740224033, 41.515479111735559], [-70.997122779656095, 41.515799238842582], [-70.997123148787153, 41.516042339410191], [-70.997245573500152, 41.516256718859495], [-70.997002533356749, 41.517170054059392], [-70.998890199872505, 41.517623546026869], [-70.999163467152073, 41.517484025065329], [-70.999285278534288, 41.517256679856104], [-70.999405963516352, 41.516345051168912], [-70.998918991138595, 41.51640763838126], [-70.998401721317762, 41.516713728735141], [-70.998006269780078, 41.516684338934873], [-70.99818853720592, 41.516141053638243], [-70.998431033779198, 41.515524204246518], [-70.998826313284354, 41.515130329642837], [-70.998826015524941, 41.514923244082837], [-70.998491172694528, 41.5146050159589], [-70.997790664542748, 41.514310919660865], [-70.997699426153076, 41.514015105884766], [-70.998124574493758, 41.513278686565023], [-70.998876907516049, 41.513086721902212], [-70.99950156774716, 41.513167720491325], [-71.000020795874889, 41.513282014892987], [-71.002029619208628, 41.513670712190589], [-71.003703046761999, 41.513596379923627], [-71.005134435970959, 41.513048905961597], [-71.006169874721962, 41.512940870897609], [-71.006687361271716, 41.512706775669848], [-71.00741915473067, 41.511909799571633], [-71.007814089006089, 41.511659951049843], [-71.010828186614276, 41.510976371381226], [-71.016033062548829, 41.510083648148104], [-71.018011374392842, 41.509670607550071], [-71.019777294055373, 41.509081063003059], [-71.020569017221732, 41.508715801521952], [-71.020933958406886, 41.508366740819042], [-71.021177511042737, 41.507912004195319], [-71.020873398453119, 41.507430646023636], [-71.020812816710247, 41.506882338201251], [-71.020935061155342, 41.50651991737751], [-71.021635140506831, 41.505894866641057], [-71.022032045720181, 41.504870123635307], [-71.022175076153744, 41.504674266735556], [-71.02239773781757, 41.504367999815592], [-71.02318890909352, 41.504002718099983], [-71.027662927830164, 41.502671425121527], [-71.028454116652142, 41.502378226165426], [-71.030280915444678, 41.501301405302478], [-71.032502981595542, 41.500505297482647], [-71.034030631590724, 41.500085079528958], [-71.034274049075975, 41.499912128949092], [-71.034836798904649, 41.499584184192038], [-71.035353852954373, 41.499198516303132], [-71.035855205252858, 41.498830338943151], [-71.036448039388901, 41.498364033443167], [-71.036804276249114, 41.497956363238274], [-71.037069137305238, 41.497531482329769], [-71.037410075623654, 41.497135002387523], [-71.037955895582968, 41.496491756112], [-71.038099732630926, 41.49629093053786], [-71.038288781711557, 41.495997911519659], [-71.038402267293009, 41.495837478396247], [-71.038415709698825, 41.495550497266734], [-71.038314711603974, 41.495207408246792], [-71.038237431679931, 41.495029812190765], [-71.0381125414129, 41.494612345543523], [-71.038171894955283, 41.494302502066169], [-71.038206978717483, 41.493804113744027], [-71.038311722792031, 41.493460151127799], [-71.038393337338434, 41.493018675011918], [-71.03845233165913, 41.492675156373146], [-71.038427112296048, 41.492302483474546], [-71.038371160511801, 41.491907266476723], [-71.03833928442647, 41.49164432074852], [-71.038276060660507, 41.491294632491119], [-71.038220451009778, 41.490968564709959], [-71.038188373085575, 41.49073379948959], [-71.038057265002038, 41.490499171482924], [-71.037864551130781, 41.490156248564112], [-71.03768062025344, 41.489990552576792], [-71.037350510530302, 41.489688215331569], [-71.036982479198173, 41.489414353887682], [-71.036713903195221, 41.489197710382278], [-71.036483527709223, 41.488997518906984], [-71.036077957040007, 41.488815788335856], [-71.035719133178148, 41.488776685105464], [-71.035527803801244, 41.48869144778886], [-71.035305442654163, 41.48852622081089], [-71.035152244772362, 41.488400712747421], [-71.034891507185037, 41.488177884507863], [-71.034600296664152, 41.488012914037547], [-71.034384996805869, 41.487749844724924], [-71.034482938534055, 41.48750318702794], [-71.034756444791739, 41.487302267616982], [-71.034999914761372, 41.487181176683301], [-71.035311438901601, 41.486921888183701], [-71.035538667788913, 41.48662912035482], [-71.035742596351469, 41.486296280598609], [-71.03594718544602, 41.486020796320823], [-71.036226922546135, 41.485619028134501], [-71.036385495756292, 41.485331560185237], [-71.036384628514583, 41.485136808113133], [-71.036435771589652, 41.484770119197911], [-71.036380603764471, 41.48450095528861], [-71.036249359600333, 41.484238143029209], [-71.036133787105967, 41.484043552187401], [-71.035986939048158, 41.483786348094874], [-71.035863717034218, 41.483540495026212], [-71.035770626461783, 41.483300437433982], [-71.035662250316975, 41.483071481692306], [-71.035645955396902, 41.482824985629641], [-71.0355837794921, 41.482647989814517], [-71.03550602084627, 41.482407364525358], [-71.035512377471377, 41.482223986615637], [-71.035434669685543, 41.481943385370663], [-71.035861338334541, 41.481850594009238], [-71.036318729582888, 41.481797362543041], [-71.036601028726039, 41.481750706965649], [-71.037165106599943, 41.481662973834609], [-71.037416755520624, 41.481616101121453], [-71.037713593980968, 41.481512148964967], [-71.037942943353912, 41.481585652744606], [-71.0381505761722, 41.481831847257894], [-71.038304160016338, 41.481985534205037], [-71.038733670075942, 41.482379479748865], [-71.038834247974307, 41.4825453754069], [-71.038926759354538, 41.482734197436564], [-71.039005585594481, 41.483094662959843], [-71.039099406100505, 41.483501377971926], [-71.039215417808506, 41.483735943648874], [-71.039270274715335, 41.484033286218953], [-71.039286881826882, 41.484204962830951], [-71.039334167477094, 41.484422952653517], [-71.03937423990817, 41.48479505528654], [-71.039390673268116, 41.485041011117914], [-71.039400043733977, 41.485270101483508], [-71.039385990432322, 41.48545966084032], [-71.03948729055206, 41.485842726150956], [-71.039587863405302, 41.486060391980772], [-71.039673037595293, 41.486254855904853], [-71.039758483415582, 41.486494969265685], [-71.039797757435664, 41.486678532532693], [-71.039699770714321, 41.486867751384771], [-71.039563608654419, 41.487137307652254], [-71.039535166057959, 41.487429810155142], [-71.039581860124954, 41.487647257271178], [-71.039744395180918, 41.488024358615696], [-71.039914564013017, 41.488339095534087], [-71.039946795347518, 41.48861995942918], [-71.039940135468456, 41.488797213888702], [-71.040017606507064, 41.488997858819801], [-71.040156578230565, 41.489271952530892], [-71.040333751377119, 41.489512347225507], [-71.040556900770383, 41.489820545120054], [-71.040695675331918, 41.490072578471654], [-71.040622375480396, 41.490559648151759], [-71.040547220801471, 41.490737165255453], [-71.040358191182904, 41.49106449178273], [-71.040252618119709, 41.491225499064228], [-71.039865615167315, 41.49167357130176], [-71.039394987789123, 41.492093121378232], [-71.039259612979038, 41.492351426044713], [-71.039032606773219, 41.492696063230873], [-71.038927429606773, 41.493034352433341], [-71.03878495608042, 41.493429933096067], [-71.038687611318537, 41.493727827629804], [-71.038613511229357, 41.494123686110157], [-71.038492311148218, 41.494341531212704], [-71.038440286661725, 41.49454840311256], [-71.038502946273766, 41.494794007016793], [-71.03860317852417, 41.494977278491255], [-71.03873427007612, 41.495165807421081], [-71.039056742741238, 41.495502503185769], [-71.039287343643338, 41.495725649537327], [-71.039625541124579, 41.49610805616777], [-71.039841035362429, 41.496451068464161], [-71.040110066288932, 41.496793667123491], [-71.040425285486705, 41.497125287744488], [-71.04068608319605, 41.497347473106096], [-71.040893901202637, 41.497593123035735], [-71.04127716001976, 41.497890082487835], [-71.041522596338211, 41.498084112464774], [-71.04183020914482, 41.498409485898733], [-71.042205662341132, 41.498677148860075], [-71.042474640910569, 41.49896301876003], [-71.042973120427334, 41.499327964259678], [-71.043340959738856, 41.499573083682556], [-71.043693013546132, 41.499798510500874], [-71.044004473085934, 41.499956155801328], [-71.044315809920235, 41.500114429777796], [-71.044523875827821, 41.500193506810632], [-71.045739842182826, 41.500919212489912], [-71.047413470651293, 41.501898292992998], [-71.050759781747928, 41.503568799782833], [-71.056663406497748, 41.505742806663839], [-71.064058540900021, 41.507529417163838], [-71.066463353841655, 41.508035540626217], [-71.068198350692697, 41.508193507103741], [-71.0716059663077, 41.508258194037737], [-71.078332356343793, 41.508785880930013], [-71.08009743152985, 41.509150319977927], [-71.082806430769949, 41.509362353281318], [-71.084114571688261, 41.509636093137878], [-71.085271036250347, 41.50975007953592], [-71.087858779680985, 41.50967622463299], [-71.089440322233273, 41.509701675736999], [-71.090262889710075, 41.509902728073214], [-71.090505990555215, 41.510042621343267], [-71.090597689796908, 41.510482418409168], [-71.089867791661518, 41.51200922598828], [-71.089229251799452, 41.512471232599481], [-71.088255326579173, 41.512444023506099], [-71.085789185566526, 41.511848733338411], [-71.084511954912969, 41.511917173404825], [-71.082046129131214, 41.512880508620242], [-71.079702768900304, 41.513679928199387], [-71.079246207874291, 41.513778446576381], [-71.07711575539814, 41.513798618786453], [-71.075837690268017, 41.513659965109696], [-71.072398392476984, 41.513775899582313], [-71.070572339514484, 41.514115103440432], [-71.068928701777168, 41.514829161374315], [-71.067893346469788, 41.514847732851692], [-71.067284826398506, 41.515147035549546], [-71.066462877638145, 41.51535098180873], [-71.064911172605079, 41.515198734390275], [-71.063875633218032, 41.514803101780096], [-71.06290260015156, 41.514324957355846], [-71.062506372134337, 41.513845698144294], [-71.062050049592074, 41.512835531941469], [-71.062050761571854, 41.512538415051218], [-71.06153351712193, 41.511628672146628], [-71.060315300342694, 41.510686500993046], [-71.059189660604233, 41.510274179576449], [-71.059036941688305, 41.510709091621074], [-71.058732902199111, 41.5109397531103], [-71.058306459714544, 41.511028670514996], [-71.058094460834553, 41.510852274407377], [-71.057911213573021, 41.51043235177044], [-71.056937644189162, 41.509909135388497], [-71.05584259456171, 41.509685436046702], [-71.055263222526122, 41.509839559819547], [-71.055019913988318, 41.51005136170297], [-71.055050692542139, 41.510690740019079], [-71.055385167983076, 41.51068475810002], [-71.055994305066164, 41.510367514363821], [-71.056419477294313, 41.510323528791744], [-71.056572196159991, 41.510618454266655], [-71.056663300063917, 41.511301375261205], [-71.056206815146922, 41.511714928292591], [-71.055720035888442, 41.511624697930344], [-71.055171703556653, 41.511463275609501], [-71.05480722299518, 41.511442668534137], [-71.054502757384796, 41.511835382422831], [-71.054502464397089, 41.512015453858439], [-71.054776058602869, 41.51230806513346], [-71.056115535748987, 41.512563163258697], [-71.05660193583941, 41.512743966917071], [-71.056602329425104, 41.513068099078417], [-71.056115066218041, 41.513824749887227], [-71.055810876679615, 41.514073410341659], [-71.055749852563565, 41.514236407263397], [-71.055353617185702, 41.514595000375969], [-71.054744921189553, 41.514894235357957], [-71.053862969752359, 41.51491886288462], [-71.053588151713726, 41.515059049122122], [-71.053070750553275, 41.515491978045823], [-71.052523685264404, 41.515402667090669], [-71.05215824885488, 41.515310018767565], [-71.051884208322747, 41.514738376849536], [-71.051518129716229, 41.514960851025592], [-71.051062625915975, 41.514969224077213], [-71.050787869041258, 41.515099769914094], [-71.05081856524356, 41.515351993122408], [-71.051062215956932, 41.515626487605644], [-71.051062098610686, 41.515951158123528], [-71.05072752485637, 41.51615520693958], [-71.050148976566149, 41.516318401843954], [-71.049357717339532, 41.51628762141582], [-71.047227591314595, 41.515722087977572], [-71.044792410118546, 41.514648206425214], [-71.043392391638477, 41.514483937880534], [-71.042752939480224, 41.514233763394024], [-71.041961693179957, 41.513635161992198], [-71.041323593203728, 41.512628679127538], [-71.04080584591658, 41.51221466883802], [-71.04010674370646, 41.510983381470126], [-71.040046212422723, 41.51070519385776], [-71.039681014711789, 41.51001826610814], [-71.039224164649255, 41.509701914884815], [-71.039072349945286, 41.509542564193758], [-71.039164190450563, 41.508513731689995], [-71.039621319831411, 41.507505469311269], [-71.039651691283723, 41.507162373920465], [-71.039498925275225, 41.506885972664271], [-71.03910386403588, 41.506541690262978], [-71.038739043664179, 41.505124386011893], [-71.038009131520155, 41.504461900285065], [-71.037461599209323, 41.504237369802325], [-71.035666187270422, 41.504160798592402], [-71.035422287118379, 41.503985399745702], [-71.035361893405877, 41.503824167407245], [-71.035422661832214, 41.502561656108647], [-71.035241024358569, 41.50224074289391], [-71.034815372959955, 41.502058925788234], [-71.034144707319072, 41.502467010079464], [-71.033810492909623, 41.502310864810781], [-71.033262862599187, 41.502104320822269], [-71.032593602935705, 41.502170263502812], [-71.032318898133084, 41.502427355869266], [-71.032379422637717, 41.502930728674201], [-71.032196682460821, 41.50304198065291], [-71.030919588050452, 41.502812697447737], [-71.030523481586044, 41.502882548047189], [-71.030340719383361, 41.503110844280734], [-71.030370321392212, 41.503615170665796], [-71.03049204703332, 41.5039369243176], [-71.030857656717004, 41.504254734490232], [-71.031344222615374, 41.504525683990167], [-71.032531313726409, 41.50496446612236], [-71.032835891851846, 41.505310109760906], [-71.033139788294989, 41.505881380972383], [-71.033017377186468, 41.506523016825568], [-71.032743468778236, 41.507095871263651], [-71.032743610490684, 41.507438010172926], [-71.033168850320322, 41.507844924270756], [-71.035389886407231, 41.508787537434941], [-71.035876543863736, 41.509400696014247], [-71.036454657394927, 41.509840815809476], [-71.037033294799784, 41.510109955899296], [-71.038766778612327, 41.512241333460906], [-71.039771704447546, 41.512836232250194], [-71.039983814253986, 41.513174728703639], [-71.040044977155674, 41.513615614660253], [-71.040440294628326, 41.513797289010334], [-71.041230917793243, 41.514531493108606], [-71.041352874599454, 41.514781206756751], [-71.041353141410198, 41.51519600541733], [-71.040683241760021, 41.514982250745177], [-71.040226778741371, 41.514990486391262], [-71.039922413154002, 41.515104049244329], [-71.04050030073688, 41.515670288471028], [-71.04098751121505, 41.516220311596541], [-71.041717884657515, 41.516405587044062], [-71.042021807769018, 41.516589137613842], [-71.043269769356883, 41.51663018151374], [-71.043787361938527, 41.516584994319608], [-71.044061059058578, 41.516336873593524], [-71.044548139104165, 41.516202064207519], [-71.045157538440947, 41.51620054668286], [-71.045735160147231, 41.516541667092035], [-71.046709212221813, 41.516659187753881], [-71.046739927036256, 41.516838842914623], [-71.046983229605416, 41.517483034079994], [-71.047226546371135, 41.517667949348436], [-71.048048232866407, 41.517599195515686], [-71.04844458670928, 41.51769143985512], [-71.049053097238655, 41.518329155840306], [-71.049357073628215, 41.518918390622154], [-71.049813555593019, 41.519883590909181], [-71.049782740312139, 41.520433230580245], [-71.049356630738558, 41.520549216939337], [-71.049021749358602, 41.520384110623354], [-71.0486265968118, 41.520391003160285], [-71.048261348388692, 41.520523433992778], [-71.048260391606931, 41.52111821033408], [-71.048382546060864, 41.521260503736421], [-71.048108045106702, 41.522012925373026], [-71.047895414778395, 41.522196653103691], [-71.04710405799112, 41.52237303052604], [-71.047073524197003, 41.52260808366362], [-71.047256295434195, 41.522785014059323], [-71.047255964461698, 41.523154161834583], [-71.046678052258642, 41.523335799360098], [-71.046708230707111, 41.523659510603018], [-71.046981839032838, 41.523952140550982], [-71.047803236680551, 41.524207517916153], [-71.047772601713234, 41.524847734493598], [-71.047316297624562, 41.525468336922131], [-71.047559044528455, 41.525806310954991], [-71.047589662320178, 41.5260855457487], [-71.047346585877335, 41.52640483598875], [-71.047285001139969, 41.527253183203754], [-71.047863508504676, 41.527756271421389], [-71.047802509379409, 41.52909982111003], [-71.047376505160003, 41.529836961722452], [-71.047284340374787, 41.530586777321211], [-71.047527586553159, 41.531365931669256], [-71.048349512531075, 41.532648351867422], [-71.048502015479102, 41.53292519016675], [-71.049141279972375, 41.534049313977107], [-71.049567032354361, 41.534798306118084], [-71.050145367363569, 41.536328336749079], [-71.05099663625046, 41.538826884912893], [-71.05145343313886, 41.539719510632771], [-71.051726860496998, 41.540975967905723], [-71.051787512380258, 41.542875974894443], [-71.052031782771195, 41.543403111629502], [-71.051970866170535, 41.543836756611519], [-71.051544579667407, 41.544726974099348], [-71.051665874737694, 41.545599095465491], [-71.05136024205423, 41.546577664250968], [-71.051725530506317, 41.5469223258143], [-71.051695298330088, 41.548913721335936], [-71.052974441070816, 41.550864090971054], [-71.053614422090376, 41.55168143810895], [-71.054892907272375, 41.553604772073562], [-71.055563090277204, 41.554844857273409], [-71.055684571312739, 41.555960073236555], [-71.055897418110618, 41.556622673336378], [-71.056049433884994, 41.557034643795085], [-71.056293146162574, 41.557516750798385], [-71.056414936889254, 41.558001172212307], [-71.05671972328156, 41.558319740638048], [-71.057176069813778, 41.558546071822668], [-71.057298172555534, 41.55879576861598], [-71.057237498396432, 41.559301446541937], [-71.056871856182781, 41.559686636627077], [-71.056932045974236, 41.559892784705852], [-71.059764513188554, 41.559778919889496], [-71.06006977639008, 41.559944419246953], [-71.060191714561256, 41.560167731586134], [-71.060221765329203, 41.560924153519849], [-71.060862494763526, 41.561660429382705], [-71.061744891589981, 41.562049823711838], [-71.061989054618209, 41.56236985457145], [-71.062080043246254, 41.562755651160664], [-71.062384440505994, 41.563191249993096], [-71.062659082370274, 41.564087629584527], [-71.062932692400139, 41.564767377023756], [-71.063115575675013, 41.565268322741609], [-71.063298881816337, 41.565391117041706], [-71.063724418200124, 41.565293712489357], [-71.063755822708742, 41.564977625411416], [-71.064059825770443, 41.564170716377262], [-71.064486834719375, 41.56339687150107], [-71.064303919602438, 41.562688304066256], [-71.063876943631129, 41.562119436129493], [-71.063602902796504, 41.561133565942569], [-71.063937833357258, 41.559091567452967], [-71.064486073108327, 41.558730194564596], [-71.064943021429244, 41.558748782876641], [-71.065308537168278, 41.558868940539661], [-71.065491462819708, 41.559045751690888], [-71.065643377644022, 41.559394143245015], [-71.065917034111351, 41.559785677231908], [-71.066587948117331, 41.560196824677128], [-71.066831399633699, 41.560606878673795], [-71.066923320465506, 41.560929649385351], [-71.067105646221407, 41.561179024905954], [-71.067470648592888, 41.561289089520329], [-71.069177011435642, 41.561249386999663], [-71.06963384404429, 41.561448658832667], [-71.069695088500779, 41.561771851211006], [-71.069785819766679, 41.562202748447746], [-71.070060774689182, 41.562549259083731], [-71.070913381979864, 41.563029135943815], [-71.071004977879085, 41.564513910836887], [-71.071979614509218, 41.564928964128647], [-71.072040674880853, 41.565910049905142], [-71.071340054139341, 41.567057621545295], [-71.070456839868356, 41.567236068004732], [-71.070456750183396, 41.567857318355728], [-71.070852329215924, 41.568814279277802], [-71.071005621515226, 41.569000603328988], [-71.071096490280411, 41.569485432007184], [-71.071067075505255, 41.571747483571258], [-71.070518098323973, 41.573370024803751], [-71.070549244832222, 41.574035781230236], [-71.070975818539139, 41.574542226964617], [-71.071036947706872, 41.575243570805867], [-71.070793042710463, 41.576320294202624], [-71.070854660193362, 41.576805552783505], [-71.071219738899913, 41.577348319958595], [-71.071250119019865, 41.577789612702773], [-71.070762902137943, 41.578491766887197], [-71.069117809986153, 41.57980060975256], [-71.068477850988288, 41.580190378934134], [-71.06835592429492, 41.580435805010026], [-71.068539852579804, 41.580901361235611], [-71.068508948570795, 41.581198904062177], [-71.067900135363502, 41.581786328142876], [-71.067412284212722, 41.582110853310354], [-71.067442650843873, 41.582479577827328], [-71.06777797325266, 41.582545590265035], [-71.068204245674551, 41.582817320386177], [-71.068234567516257, 41.583068907196406], [-71.067168528473019, 41.583826828372544], [-71.066985627337772, 41.584397862337042], [-71.067961012207121, 41.584263099941403], [-71.068478930692862, 41.584514919297618], [-71.067351256941578, 41.585517416822377], [-71.067626162290694, 41.586044005691669], [-71.06759593682429, 41.586666312085136], [-71.067107952941583, 41.586774118054784], [-71.065858582610915, 41.586454223344617], [-71.065553508709272, 41.586522835338648], [-71.065584478305183, 41.587278719152685], [-71.065736957823887, 41.587483054418819], [-71.066559211890748, 41.587459723693229], [-71.067230440035686, 41.587672697529214], [-71.068814264399961, 41.587644415730502], [-71.069057863271809, 41.587693779553376], [-71.069210480243129, 41.587825991506882], [-71.069119243654114, 41.588107009160701], [-71.067870612689021, 41.588471956149732], [-71.067321425661717, 41.588743396487047], [-71.066803952002175, 41.58911282465381], [-71.066315710443504, 41.590229663809694], [-71.064914316868766, 41.590687453098617], [-71.064670617689515, 41.59130434932738], [-71.0653105029523, 41.592040595812229], [-71.065310487566279, 41.593067550800164], [-71.065280366340176, 41.594077013594053], [-71.064762504349545, 41.595077766169354], [-71.064731830101749, 41.596114237671806], [-71.065341726842192, 41.597670780548256], [-71.065463472350686, 41.599155225999461], [-71.065829254776247, 41.599517850184967], [-71.065982101313551, 41.5998847919276], [-71.065555288654039, 41.600225299225755], [-71.062141808323631, 41.601899209810057], [-71.062049982487096, 41.602171216104281], [-71.062080418895846, 41.603999702839531], [-71.061989270584817, 41.604487798880584], [-71.061410125186839, 41.605308768161173], [-71.061410457596409, 41.606065705610092], [-71.061532196829148, 41.606243997299579], [-71.06137985101843, 41.60675094470303], [-71.061197104811711, 41.606862244545255], [-71.060770510204847, 41.606933165957258], [-71.060099523997422, 41.607549030894653], [-71.059672997034298, 41.607574390038735], [-71.058911082052617, 41.607020502506053], [-71.058576137247215, 41.606882436664492], [-71.05811841651412, 41.60690883926555], [-71.058088061364231, 41.607413465498027], [-71.058361910389721, 41.607661049781605], [-71.058728226814921, 41.607825618730473], [-71.059185236775036, 41.608304045161141], [-71.059672911094736, 41.608232195851642], [-71.060191495144664, 41.608078891074371], [-71.060922884277744, 41.608119444398767], [-71.060953218627233, 41.608506718203785], [-71.060160674765839, 41.60970113793514], [-71.060099634507523, 41.61013415697321], [-71.059795253965035, 41.610590543559496], [-71.059398813041994, 41.610930515534037], [-71.059155147453595, 41.611349410533293], [-71.059093653728084, 41.612125736226147], [-71.058575231164127, 41.612720215297223], [-71.057996049868848, 41.61319911909365], [-71.057965877941029, 41.613659268032201], [-71.05827038908545, 41.614248479669754], [-71.058270650315265, 41.614662648300389], [-71.058575927100023, 41.614828781076568], [-71.059063015329514, 41.614918997491763], [-71.059338014681572, 41.615283541078959], [-71.059459803846153, 41.61638020674814], [-71.059703791371803, 41.616475150180314], [-71.060251543820698, 41.616032760847318], [-71.060069315095546, 41.615279081022472], [-71.059185245483278, 41.614574542034397], [-71.059063529486892, 41.614252189657471], [-71.059002499713188, 41.613793847726591], [-71.059124417987448, 41.613494409349258], [-71.059672451429691, 41.613042930304054], [-71.060099419417625, 41.611963606305274], [-71.060617934479026, 41.611142949221289], [-71.06223336759362, 41.609402476517964], [-71.062416530641826, 41.608669385342701], [-71.06241614910806, 41.60711058344689], [-71.06229488983783, 41.606545678207667], [-71.062263833498363, 41.605789252715752], [-71.062751256283462, 41.604960543248879], [-71.062690738929064, 41.603160212662161], [-71.0629646855527, 41.60249724802992], [-71.063360524126395, 41.602129620414026], [-71.064001091062707, 41.601757798594285], [-71.064732260179298, 41.601555768769352], [-71.066042785426802, 41.601054326290893], [-71.066651681506912, 41.600962741991381], [-71.067139742766997, 41.600575735019639], [-71.067231476754088, 41.60038475710256], [-71.067383648848704, 41.599841156640068], [-71.066682730045599, 41.598466601806372], [-71.066591191569884, 41.598008687786361], [-71.066804925623487, 41.597230147869162], [-71.067170240925975, 41.596862931052314], [-71.068083906085789, 41.596819768849777], [-71.068450121933651, 41.597029324396466], [-71.070157184513874, 41.597205783493969], [-71.070522282988932, 41.597136215373034], [-71.070552583122804, 41.596892691492741], [-71.070369967814969, 41.596544190691461], [-71.069912277864191, 41.596363556965784], [-71.068724657882214, 41.596159264814929], [-71.06826705642996, 41.595717519282786], [-71.068205828350202, 41.594943514016713], [-71.068327865859828, 41.594418975843986], [-71.068358342268624, 41.593616597428721], [-71.068236702373369, 41.592339329456777], [-71.068448800501926, 41.591993495215171], [-71.068997176197087, 41.591650017159971], [-71.070977689366956, 41.590731308789948], [-71.071709269417383, 41.58997947445954], [-71.072166586587855, 41.58904310873605], [-71.072105979912038, 41.587990535652281], [-71.071587465315062, 41.58645913412677], [-71.071678336225929, 41.585926011391081], [-71.071891926810935, 41.584579602829223], [-71.071769543085935, 41.584302279813777], [-71.071404051381805, 41.584011704776657], [-71.071250786103775, 41.58370833421305], [-71.071343271399911, 41.583274257841232], [-71.072378554437364, 41.582246703181632], [-71.073048676609744, 41.581792829486673], [-71.073688624451123, 41.581655136283267], [-71.074420200893158, 41.582272917484907], [-71.074754458493516, 41.582771079695405], [-71.074846754302115, 41.583463624440192], [-71.074999202190412, 41.583982984184665], [-71.075303895043774, 41.584076951094609], [-71.075608120910275, 41.582359564654951], [-71.075060013948047, 41.581288334360245], [-71.073901377825251, 41.580191763889509], [-71.073901435176523, 41.579750586086568], [-71.074479879365569, 41.577965533255423], [-71.074510333738743, 41.577352229854903], [-71.074358028750723, 41.576760210646484], [-71.074570874245296, 41.575747559382229], [-71.074479549703355, 41.575199706437353], [-71.073930446660654, 41.574578648379457], [-71.073503964952195, 41.574396975199967], [-71.073260533863177, 41.574167548718648], [-71.07326071897225, 41.573761845728569], [-71.07365703934336, 41.572962010709098], [-71.074204440327065, 41.572249445787527], [-71.074234955266775, 41.57169916816143], [-71.074082065751696, 41.571467921907782], [-71.073808191132557, 41.571292404205309], [-71.073199344533151, 41.571150561949636], [-71.072711195782489, 41.570924806280139], [-71.072498180996604, 41.570667401203693], [-71.072467373767708, 41.570145614776912], [-71.073229282684039, 41.568996555464039], [-71.073472095444416, 41.568127536671341], [-71.074477899611779, 41.566532534653469], [-71.074751803531498, 41.565888180517462], [-71.074629362210786, 41.563944018229307], [-71.074811471507573, 41.563075849845518], [-71.074568073827905, 41.562323675418703], [-71.074354720319491, 41.56204826525309], [-71.073806626674312, 41.561562895022881], [-71.072923094321496, 41.560560713023591], [-71.071978138346097, 41.559803101302855], [-71.071461086468759, 41.559001538834529], [-71.070942363442626, 41.558361942990942], [-71.069846359051766, 41.557471569230898], [-71.069358713468532, 41.556831543788782], [-71.069176340578849, 41.556393635658807], [-71.068780632502779, 41.554562685683841], [-71.068444990428958, 41.553604774683514], [-71.067835732941745, 41.552733066830861], [-71.066892101334034, 41.550794771201012], [-71.066465224406357, 41.550378975043529], [-71.066190991937276, 41.549582276654746], [-71.065155632262915, 41.54814106632886], [-71.064698297873448, 41.547149544776978], [-71.063967726006624, 41.546333533354044], [-71.063633458573875, 41.544979453299732], [-71.063419888908285, 41.544839075952645], [-71.063024606667227, 41.54401714424678], [-71.062902518318737, 41.543379667256019], [-71.062750527438482, 41.543085293456542], [-71.06272027318613, 41.541986733964876], [-71.062536436795881, 41.541530261859208], [-71.062171066120044, 41.541158533978226], [-71.062201482319594, 41.539969091337611], [-71.061867061856205, 41.538875570550076], [-71.061653581320456, 41.538708179254485], [-71.061531770486454, 41.538296332881281], [-71.061623578616619, 41.53796130235736], [-71.061623218189851, 41.536717629254404], [-71.062201095234329, 41.535482490237705], [-71.062658918802441, 41.535032362711519], [-71.063450458050056, 41.534775384580037], [-71.063998237137369, 41.534522056827946], [-71.064332474532137, 41.534110883794149], [-71.064424355189345, 41.530271188663725], [-71.064607004872173, 41.529700158976183], [-71.064941368953171, 41.529054260209129], [-71.064972039169461, 41.528648674268396], [-71.064698294794411, 41.528167011330972], [-71.063967123661243, 41.527594185180078], [-71.063967651726884, 41.526864893307042], [-71.064576634519113, 41.525898800900656], [-71.065002907209845, 41.525512739189061], [-71.065611168030046, 41.525285476237627], [-71.065915379167976, 41.52498276769218], [-71.066312348492431, 41.524002889928425], [-71.066220255742309, 41.522563038473464], [-71.066616275897118, 41.521348521685916], [-71.067042006095562, 41.520575294583523], [-71.068046511039611, 41.51956621443189], [-71.068594250273122, 41.51869152517844], [-71.068807172662957, 41.518507219856744], [-71.069720560196529, 41.518445950466464], [-71.069903513902275, 41.519406700057466], [-71.070208485644201, 41.51968021499399], [-71.070481370401538, 41.519539981235965], [-71.070572807147371, 41.517943895156073], [-71.07042067001548, 41.516387943647516], [-71.070602913387134, 41.51604253412679], [-71.070876380445682, 41.51590230170023], [-71.071851061240551, 41.516110275268616], [-71.072216465309808, 41.516499889389294], [-71.072794521550833, 41.517570706659313], [-71.073311859693362, 41.518011579428986], [-71.074560235288004, 41.518484454395711], [-71.075046676314003, 41.518854344877326], [-71.075838846977263, 41.519767754150088], [-71.076295410908855, 41.520111056922303], [-71.077331228200265, 41.520434547738212], [-71.078182853862174, 41.521004944162627], [-71.078700143413457, 41.522356237966349], [-71.079248708157408, 41.522742637419874], [-71.07946166909889, 41.522513294199257], [-71.079887588243608, 41.521505926057792], [-71.080252646107283, 41.521228704821887], [-71.080679839243288, 41.521122240534375], [-71.084362672364037, 41.522010218737023], [-71.084880008390002, 41.522487683117674], [-71.085823742516794, 41.523632339260203], [-71.086403405487744, 41.524072208644604], [-71.086706877591851, 41.524797024737282], [-71.087650814026546, 41.526013695185625], [-71.088017353224316, 41.52679095780114], [-71.087956962243311, 41.527891430623896], [-71.088596321673279, 41.529492521634346], [-71.088596980036328, 41.529744625271661], [-71.088992710149043, 41.530683515369475], [-71.089633415640847, 41.532419569775371], [-71.089694457193232, 41.534039900950027], [-71.089968529700045, 41.534503497069743], [-71.090333794016672, 41.534911059009538], [-71.090790691668076, 41.535137257136313], [-71.091673522061711, 41.535166276480304], [-71.093287172673755, 41.534064624655009], [-71.094777399445022, 41.532803325928498], [-71.095265350711671, 41.532533247666017], [-71.096178181955963, 41.532777885556449], [-71.09712244319843, 41.533418246378481], [-71.097397534966902, 41.533746773572901], [-71.097671837824322, 41.535003119816871], [-71.09831049783358, 41.535523089257502], [-71.098737517809369, 41.536028801767088], [-71.099468493136101, 41.536582854454522], [-71.100290677300961, 41.536828849866843], [-71.100990720911682, 41.537311925346494], [-71.100991735102255, 41.538708028750776], [-71.101601403943249, 41.539256058908784], [-71.102758660717129, 41.540531874303902], [-71.103886550106523, 41.541583565471619], [-71.103856535170323, 41.541980159860536], [-71.103521872908203, 41.542959304645599], [-71.103643913238031, 41.543146555711829], [-71.104710339250772, 41.543622423085552], [-71.105166860731615, 41.543577823107512], [-71.105287837501592, 41.543413387642076], [-71.105653491788402, 41.542749471752856], [-71.106292620036143, 41.542728640676422], [-71.106658503949873, 41.543001187449619], [-71.106840891679539, 41.543394016457377], [-71.107206660173233, 41.543784148421061], [-71.107816111207086, 41.544168908718198], [-71.108029545679443, 41.544444796102347], [-71.10803031247552, 41.545201101988155], [-71.107665340804971, 41.546577393776793], [-71.107665541426428, 41.547073133268441], [-71.107848530966038, 41.547213861616342], [-71.108304870791258, 41.547124320292944], [-71.109614651440609, 41.54650587151832], [-71.110435985249026, 41.546229040468248], [-71.110954402247089, 41.546138531042608], [-71.111776129900065, 41.546249927281515], [-71.113177799727069, 41.54709771918094], [-71.113542565944684, 41.54702801289509], [-71.114090222813005, 41.546639929400001], [-71.114821458431692, 41.546455047384882], [-71.116769918721161, 41.546383399436529], [-71.117227151929811, 41.546662883139376], [-71.117379067875291, 41.546912705036391], [-71.117532463230674, 41.547918834389499], [-71.11789816428788, 41.548074207406344], [-71.118964163200729, 41.548189794653823], [-71.119146981734474, 41.548303493310776], [-71.119482167671123, 41.548855547732011], [-71.119634666114251, 41.549312451451371], [-71.119635477639946, 41.549862214316505], [-71.119757382140818, 41.550021896398903], [-71.120001633435123, 41.550044682886259], [-71.120610144799556, 41.549862143836471], [-71.121554487732041, 41.550024478986174], [-71.12243752090842, 41.549954309427378], [-71.12335081636347, 41.550342786937648], [-71.124539203037415, 41.550320882437774], [-71.124508307483751, 41.549907154738804], [-71.124051436254106, 41.549699640509381], [-71.122467461666602, 41.54928697181159], [-71.122040391275704, 41.548926037089338], [-71.121583679747957, 41.54794312301896], [-71.121520638916621, 41.54723270882802], [-71.121246564268148, 41.546336476497004], [-71.121215543161739, 41.545562693323888], [-71.121397797575597, 41.545081608417398], [-71.121396193107671, 41.543730432286722], [-71.121213052178533, 41.543247048202005], [-71.120908526435443, 41.542721031897486], [-71.120634323806016, 41.542519155557549], [-71.120360137344065, 41.542496900495962], [-71.119294859679286, 41.543183189241226], [-71.118564199698241, 41.543179116156651], [-71.11859438612062, 41.542637831054982], [-71.11904977041543, 41.54185433573452], [-71.119050118448541, 41.541332127869488], [-71.118714175263989, 41.540914583426535], [-71.117800943401662, 41.54064311523274], [-71.11743502502982, 41.540370694195403], [-71.117221579060654, 41.539771235027352], [-71.116703305137364, 41.539266905173371], [-71.114661854206759, 41.537899369679565], [-71.11408347336878, 41.537810700265993], [-71.113323091361082, 41.537996108140973], [-71.113108924730298, 41.537900840597729], [-71.112926354882177, 41.537534401736231], [-71.112804172113428, 41.537050671500225], [-71.112377626372549, 41.53652637645397], [-71.111950861388493, 41.53613839363576], [-71.110519437312234, 41.535930280153039], [-71.109910736287375, 41.535590014629186], [-71.109271303907676, 41.534493337050435], [-71.108905502454974, 41.534193787865036], [-71.10735194198881, 41.533510903353701], [-71.106773352566265, 41.533034590716262], [-71.106042490008576, 41.531912728029276], [-71.105554487962166, 41.53138153113099], [-71.104914504933575, 41.531131706210282], [-71.103331298849994, 41.530998423502837], [-71.102783686507308, 41.530810313898108], [-71.102326741658899, 41.530512675285578], [-71.102083688745154, 41.530174728373275], [-71.101900013725114, 41.529556256656797], [-71.101655657261205, 41.52910125732167], [-71.101382033324896, 41.528709810419812], [-71.100833493035722, 41.528251489745436], [-71.100071581578064, 41.527292174242518], [-71.099127538814372, 41.525687912140356], [-71.098731872694017, 41.525370757417221], [-71.098213981593844, 41.525191104008556], [-71.097818209513932, 41.524892042959685], [-71.097756797231156, 41.524406800851104], [-71.097818123025718, 41.524180217234786], [-71.097847751847425, 41.523467866789872], [-71.097665052090008, 41.522894409633381], [-71.09729927088199, 41.522324714498737], [-71.096903045631464, 41.520538972560978], [-71.096841810661658, 41.520179691107501], [-71.096445398400334, 41.519493467701331], [-71.096141353169187, 41.519264504805264], [-71.095653881804878, 41.519057306935629], [-71.095015144102561, 41.519015143438395], [-71.094679767504971, 41.518759594180892], [-71.094649468924345, 41.518435896220829], [-71.094831515653155, 41.51823450528498], [-71.095470362418496, 41.517384862713321], [-71.095865179194291, 41.515945061679354], [-71.096139333537536, 41.515534752809593], [-71.096625865387892, 41.515030570463097], [-71.09732591842824, 41.514459076863972], [-71.097842547347724, 41.513431706528642], [-71.097871694131484, 41.510656448088319], [-71.096471227682898, 41.509699885587388], [-71.096105813369576, 41.50923769091029], [-71.095740526056161, 41.508965201490156], [-71.093244568531574, 41.508208982449972], [-71.092513968033614, 41.508051048908335], [-71.091722946688435, 41.507713901533251], [-71.090657387031172, 41.50743599269525], [-71.090018054377822, 41.507411805732325], [-71.089500639908991, 41.507502222060801], [-71.088831177007663, 41.50771246343988], [-71.088314340395925, 41.507730847587979], [-71.088101543563994, 41.507257385803015], [-71.088343773438112, 41.507045599581694], [-71.090960927618283, 41.506061245908754], [-71.091478091054412, 41.505763739090369], [-71.092086407272731, 41.50523867636393], [-71.092633817423319, 41.504985751107228], [-71.093638489988862, 41.504282570549456], [-71.094581195809042, 41.504094616218453], [-71.096254914757822, 41.504162979226699], [-71.097168527586135, 41.504028921533212], [-71.097807414378394, 41.504233769070026], [-71.09868980068758, 41.504208802156093], [-71.09914569954843, 41.504047178371337], [-71.100545533461741, 41.503976755021903], [-71.101550030306527, 41.504210419024446], [-71.102584897567041, 41.503912427765904], [-71.103710239434619, 41.503837582267003], [-71.104440765608814, 41.503635299476834], [-71.105018095849644, 41.503084129509546], [-71.106113960335904, 41.50230687684607], [-71.107909059534592, 41.501733532797452], [-71.10857845839314, 41.501415045910441], [-71.110464232426295, 41.500930299686061], [-71.112016390804911, 41.500730246047176], [-71.112715877359875, 41.500501333493453], [-71.113384998028607, 41.500083868152615], [-71.113772421462144, 41.499946172163995], [-71.114274812786391, 41.499709286023155], [-71.114645826936012, 41.49931213772436], [-71.114949232394451, 41.499024512611378], [-71.115390038623062, 41.498730509838168], [-71.115632152818691, 41.498437633119281], [-71.115759430045017, 41.498122398258914], [-71.115841438815238, 41.497846895909497], [-71.115823413161962, 41.497497405418223], [-71.115753699957551, 41.497279912628102], [-71.115720956919617, 41.497028331371467], [-71.11576515614648, 41.496787004708068], [-71.11599172662504, 41.496448516450073], [-71.116572215078847, 41.496503330892935], [-71.116825143616609, 41.496622942813488], [-71.117223140214222, 41.49677563671451], [-71.117544009829373, 41.496808771641426], [-71.117949106713638, 41.496915928747178], [-71.118590983516754, 41.496999751045415], [-71.119011480026003, 41.497055185467616], [-71.11942426279667, 41.497139223873944], [-71.119935499573401, 41.497120139376747], [-71.120217671458477, 41.497136300372475], [-71.120468976972617, 41.49716748344543], [-71.120584307929249, 41.497672700546239], [-71.120780190533495, 41.500109907341887], [-71.122548622460201, 41.522142016388457], [-71.124477871981355, 41.537308224593623], [-71.126227624984097, 41.551553193823359], [-71.127713356991862, 41.563256005430063], [-71.131620285250989, 41.593752697559758], [-71.138351674191526, 41.603690620293314], [-71.140305904386722, 41.604903845372029], [-71.141954126849782, 41.612562742174369], [-71.140271851711731, 41.623858572120426], [-71.138885024140521, 41.625101804437939], [-71.135481754961788, 41.628312522591223], [-71.134468079537413, 41.644030102465287], [-71.132666811853042, 41.660369802780991], [-71.153710764783796, 41.664233624831013], [-71.176189592077478, 41.668319937769098], [-71.1759216665304, 41.671549210736259], [-71.195676865020545, 41.675225462041759], [-71.19529158025901, 41.67677025464544], [-71.195445026767842, 41.67816396897809], [-71.19529268054842, 41.680067817457676], [-71.195140292950185, 41.680592947985254], [-71.19471275566967, 41.681393749932916], [-71.194072162455981, 41.681964836842589], [-71.192760084964945, 41.682854906396521], [-71.192241454420042, 41.683332945242306], [-71.191752828056352, 41.684063163181513], [-71.18958693466935, 41.685969454593881], [-71.189525293011059, 41.686790862849193], [-71.188914386686349, 41.686991774828883], [-71.188609464188929, 41.686834998833064], [-71.188182170001397, 41.686969512626099], [-71.187663785567068, 41.687457075221133], [-71.186412133787783, 41.68921041090934], [-71.183116017363631, 41.693039055107583], [-71.182749765535476, 41.693352619701315], [-71.182139963868039, 41.694111720485516], [-71.181773007083095, 41.695578278060907], [-71.18146823196119, 41.695845281886662], [-71.181162730074021, 41.695896196974374], [-71.180704991656242, 41.6956890017928], [-71.180155906842657, 41.695852315464151], [-71.180003207315792, 41.696287389332781], [-71.180094197377016, 41.696493106817584], [-71.179972432594838, 41.696675627166513], [-71.179270038300785, 41.696625840828531], [-71.178629049021268, 41.696692099638128], [-71.178079374050213, 41.696945977673067], [-71.177560703971352, 41.697315907021846], [-71.177255623784006, 41.698042711594468], [-71.176889124206895, 41.698275134495525], [-71.175820740636567, 41.698637371527603], [-71.173317554765148, 41.699802299817385], [-71.171333176333405, 41.700542803465211], [-71.171027585650961, 41.700791769973669], [-71.170935989643922, 41.701595074861366], [-71.170692021155062, 41.701798030253222], [-71.17023419969729, 41.701977946795935], [-71.168707577130164, 41.702069761660198], [-71.168402903035812, 41.702138652178292], [-71.168371355048635, 41.702823912968277], [-71.167516950729691, 41.704200679120959], [-71.167058399847591, 41.704515544304002], [-71.166387844464381, 41.704888400004663], [-71.165013528573255, 41.704445979059358], [-71.164677474733679, 41.704470289583625], [-71.164707516792674, 41.704766956131408], [-71.165348728573463, 41.705502635245146], [-71.165440763798941, 41.70591535994587], [-71.164341037155452, 41.706558129309812], [-71.164096896428859, 41.70658054830114], [-71.161045201553364, 41.704998665334507], [-71.160709288005492, 41.705040971743735], [-71.160769790732488, 41.705571283174393], [-71.160709332347551, 41.705824823997972], [-71.160189937800297, 41.70623068679086], [-71.159823170296008, 41.70710239879525], [-71.159456292619993, 41.707857602907659], [-71.15908977018411, 41.708747320473854], [-71.159058264863859, 41.709089902333204], [-71.159486225469593, 41.709343283744545], [-71.159456040307461, 41.709686500128399], [-71.15902836764046, 41.709964330981769], [-71.158875247351261, 41.710354897902484], [-71.15881407953735, 41.7107615865743], [-71.158356323547991, 41.711607721058343], [-71.158355574190111, 41.711815341471713], [-71.158966454179989, 41.711974735979972], [-71.159485022041508, 41.712613832165104], [-71.159515140248132, 41.712937511060346], [-71.159240687519201, 41.713005927391421], [-71.15844656082875, 41.712777287370606], [-71.158019366895317, 41.712893591615796], [-71.157744094155078, 41.71307004489482], [-71.157744403394716, 41.713259121100592], [-71.158476522786003, 41.713848803563245], [-71.15838463045047, 41.714607079793318], [-71.159026132151538, 41.71522574853941], [-71.159727299171749, 41.715654436305442], [-71.159452912785923, 41.715956316287546], [-71.158659081031956, 41.716025427268917], [-71.158292097566218, 41.71624887568381], [-71.158169968698175, 41.716413364648638], [-71.158170635154363, 41.717052621078189], [-71.158414310922524, 41.717372439483242], [-71.158352869372692, 41.717806047749889], [-71.157467286487858, 41.717994172587197], [-71.157009276486633, 41.718561189616779], [-71.157008981453018, 41.718795281898622], [-71.157436663033423, 41.719021659186396], [-71.158169594594483, 41.719224191945472], [-71.158108130159192, 41.719504198876095], [-71.157650329889179, 41.720008734465146], [-71.157466338416157, 41.720480328924367], [-71.15728338218085, 41.720646344603502], [-71.15697712604198, 41.721237407850637], [-71.156703088225186, 41.721422775955247], [-71.155878266098895, 41.721654379010602], [-71.155542006290659, 41.721922389212153], [-71.155359477123497, 41.722520034892128], [-71.155083822004542, 41.723003142723506], [-71.151723917277309, 41.724507136948169], [-71.151296242513496, 41.724849134588702], [-71.15053205002144, 41.725673950863168], [-71.149676945923531, 41.726131676331157], [-71.148607217530625, 41.726953288389403], [-71.147752895114905, 41.727438012652094], [-71.146652588841363, 41.728260141882039], [-71.146499876419583, 41.728533646971506], [-71.146041597926995, 41.728857522813726], [-71.144696755999917, 41.729423351287934], [-71.143750969208682, 41.72970229840363], [-71.142254604173516, 41.729910361648649], [-71.14200997939605, 41.730023218082216], [-71.142009347750502, 41.730779517383851], [-71.142375690620071, 41.73151166973372], [-71.14268074583056, 41.731920579893973], [-71.142771605243141, 41.732287761099876], [-71.142619257553605, 41.732534341453494], [-71.141641150988548, 41.732993871499183], [-71.141244142318897, 41.733334757672353], [-71.141030118988212, 41.733753290158866], [-71.140602410032244, 41.734229671337154], [-71.139777088136114, 41.73489386914067], [-71.13934949354676, 41.735027569507757], [-71.138188899244511, 41.735139854085283], [-71.137792324575159, 41.735462182289368], [-71.13785238301044, 41.735830349906387], [-71.138035374597976, 41.736268776136768], [-71.138066240789456, 41.736655398219632], [-71.137362789705037, 41.737037523406364], [-71.135896305177411, 41.737452681090225], [-71.133879489095889, 41.738643692088715], [-71.132778793472056, 41.739510615005365], [-71.132351635022189, 41.740041078759916], [-71.131708735594202, 41.74125106452842], [-71.131677134802899, 41.741936405482292], [-71.131524770849765, 41.742236902334696], [-71.13152384568393, 41.742939179182471], [-71.131340940057683, 41.743240207445766], [-71.130087707364879, 41.743876028833348], [-71.129721056266007, 41.744225347052094], [-71.129476533470154, 41.744680403464628], [-71.129445970053936, 41.74499596982092], [-71.128742047041058, 41.745910332692389], [-71.128191814634036, 41.746235548096763], [-71.127916716281646, 41.746528886964725], [-71.126845627419669, 41.748999748651094], [-71.127473449406494, 41.750136255768716], [-71.12766708802404, 41.750289949897862], [-71.128430094243626, 41.751114018792357], [-71.128825780276131, 41.753286793467147], [-71.129100612305933, 41.753768300068614], [-71.129374326818152, 41.75475391305109], [-71.129250730009858, 41.75568430139635], [-71.12876119954224, 41.756350682757308], [-71.127354755464424, 41.757539065462645], [-71.127048470212443, 41.757995535237647], [-71.126955810892227, 41.75893385550188], [-71.126435782892614, 41.759871855460077], [-71.125763438941604, 41.760307493015162], [-71.125273884283388, 41.76074030667116], [-71.125243578581461, 41.761334983522836], [-71.12530349184992, 41.761658229189607], [-71.125059245376733, 41.761906104573377], [-71.124503237663561, 41.762164296794445], [-71.123770249407244, 41.762232196454043], [-71.123463960443758, 41.762048861937679], [-71.123250209865333, 41.761773545916107], [-71.123188341158055, 41.761314698679833], [-71.123035623034312, 41.761110532344581], [-71.122455408595599, 41.761130489649034], [-71.121874988607303, 41.761753773584537], [-71.120989838319801, 41.76243681538925], [-71.120684743016554, 41.762964760617713], [-71.120532835271646, 41.763697506733152], [-71.119126890452662, 41.763741164342584], [-71.118058590663523, 41.76463515533861], [-71.117386931982281, 41.764998627297977], [-71.116347989021875, 41.765342401733967], [-71.115889669062682, 41.765443768425328], [-71.114667988363479, 41.765715422634173], [-71.112681461799298, 41.765824022431524], [-71.111856628175445, 41.766055308611023], [-71.110848944996306, 41.766767656426815], [-71.110605509822861, 41.767086992288846], [-71.109321701278063, 41.767813598669946], [-71.106360049738129, 41.770039086050922], [-71.10596267597488, 41.77072198506238], [-71.106085439820149, 41.770863675874814], [-71.106604049141481, 41.770746170106619], [-71.110819548513476, 41.768137812145241], [-71.111614220448871, 41.768204089191052], [-71.111919870532262, 41.768432471292826], [-71.111981657600737, 41.768872777088809], [-71.110180172728349, 41.770725868342211], [-71.109325086426551, 41.771840464902112], [-71.10935614837247, 41.772326765118663], [-71.109508750565254, 41.772783139823268], [-71.10972305570246, 41.773121508575194], [-71.109906559664267, 41.773442304506894], [-71.110396361469554, 41.773829964073855], [-71.110762922799537, 41.773994451868141], [-71.1115575901988, 41.774132757711151], [-71.112322097896566, 41.774425186800585], [-71.112780549818496, 41.77504745280789], [-71.113361708886231, 41.775568212556131], [-71.113361854948721, 41.775802306234027], [-71.113056597190678, 41.776078130251193], [-71.112109379168587, 41.77655489082818], [-71.110948156117047, 41.776855433239277], [-71.110612806029039, 41.777132228432478], [-71.110583154637126, 41.778384795801891], [-71.110766649009435, 41.778868194896056], [-71.11082738737538, 41.779046763341405], [-71.111164123420735, 41.77968941818655], [-71.111163921813599, 41.779959524770916], [-71.110401747588895, 41.781541552175241], [-71.109149630190686, 41.782663342705156], [-71.108722337809638, 41.783509293638758], [-71.107561494143269, 41.78444896759644], [-71.106065132380891, 41.785891130747153], [-71.105209780799427, 41.786420552792471], [-71.104261956232222, 41.787077318202144], [-71.102826765195644, 41.789319890214678], [-71.102063973939465, 41.790216417085418], [-71.102004110728984, 41.792388862581625], [-71.101606432391435, 41.792801638016265], [-71.099681768861799, 41.794034597671313], [-71.09900929439101, 41.794155492654419], [-71.09815363268622, 41.794153019369965], [-71.097297335952575, 41.794060501806598], [-71.096716674879929, 41.793854787719283], [-71.095463125608063, 41.792715353581116], [-71.095309530287111, 41.792366999822264], [-71.0941781606208, 41.791225734133761], [-71.093596791774914, 41.790947882743403], [-71.092496695649189, 41.790815113430121], [-71.092404846935892, 41.791275678642265], [-71.092955190008297, 41.792022692266222], [-71.093780938974916, 41.792845504845985], [-71.093964745846918, 41.793058284273393], [-71.094148753285225, 41.793901945346704], [-71.094057542209256, 41.794263474399344], [-71.093782184887445, 41.794521346453266], [-71.093690914236944, 41.79547765204741], [-71.09424152127491, 41.795755843421247], [-71.094822846613894, 41.796483870328451], [-71.094884422478472, 41.797473943167077], [-71.094639937534097, 41.798135917783604], [-71.094242347476367, 41.798521657260679], [-71.091889347235266, 41.79985253998418], [-71.09164434434426, 41.79989334914746], [-71.091094499588351, 41.799849151261732], [-71.090238431615219, 41.799504481159659], [-71.088219477666328, 41.797811284411132], [-71.087394374177649, 41.797448157225595], [-71.086629555910619, 41.797308621676983], [-71.085590505029359, 41.796580059951225], [-71.084275697115359, 41.795964198552511], [-71.083939744083693, 41.79569115438364], [-71.083939316055179, 41.794889293106429], [-71.084091959147642, 41.794544292403863], [-71.084245014027545, 41.794135817687533], [-71.084702293847542, 41.793605102692034], [-71.084702747535232, 41.792740219444084], [-71.084824148137272, 41.791980938734007], [-71.085221637359993, 41.791613238734747], [-71.085710795583751, 41.791523901489022], [-71.086230465728605, 41.791775638890606], [-71.086658406165157, 41.791794658618556], [-71.087116998988435, 41.791687647488423], [-71.087269690008625, 41.791387210507757], [-71.086902570385831, 41.791042573592883], [-71.086902002358912, 41.790628406374672], [-71.087086072484652, 41.79021941002101], [-71.086596228383797, 41.789859201349287], [-71.086565553503647, 41.789282860470436], [-71.086198518874284, 41.788983239459938], [-71.085740641569885, 41.78898274655841], [-71.085495519731666, 41.788806825499243], [-71.085312094283609, 41.788485990502423], [-71.085036422113191, 41.788346511861654], [-71.084547801222655, 41.788301424461231], [-71.084363931368415, 41.788160658147191], [-71.084242435046065, 41.78795592346917], [-71.084272579804463, 41.787612816462214], [-71.085250572155928, 41.786586008560377], [-71.085250083304302, 41.786216859457411], [-71.084944778904415, 41.78582580232991], [-71.084944421786901, 41.785510675248112], [-71.085678317472997, 41.784794678874277], [-71.08573901422686, 41.783838898146776], [-71.086074936022371, 41.783291979952246], [-71.086044090364368, 41.782743188871457], [-71.085463391900078, 41.782879553300774], [-71.085004576972707, 41.783104053708307], [-71.084790886373298, 41.78333349725699], [-71.084669012960262, 41.784389805060613], [-71.08442495400503, 41.78468207214928], [-71.083813833601951, 41.785071498378841], [-71.083813896253687, 41.785486294206351], [-71.083660605126866, 41.785786184245701], [-71.083049428654689, 41.78632920752753], [-71.083080905200845, 41.786832983747217], [-71.083232803289604, 41.787226366134732], [-71.083324990240556, 41.787792218939799], [-71.083264355135242, 41.788234884006016], [-71.08347833264618, 41.788960455479234], [-71.083753725538628, 41.789234900723201], [-71.085037275840577, 41.789788259960872], [-71.085374559276715, 41.790241377743854], [-71.085190565514495, 41.790470299822424], [-71.084671784849562, 41.790749772762354], [-71.084274048126005, 41.791063448399406], [-71.083846397139496, 41.791683675768901], [-71.083663141840475, 41.793236666230897], [-71.083356858170134, 41.793305324865123], [-71.08308247609996, 41.793057893248495], [-71.082838211187664, 41.792215703888083], [-71.082379494119337, 41.791935452885554], [-71.081798033134433, 41.792027318369691], [-71.079170030432749, 41.792948346855816], [-71.078833306241208, 41.793126094541094], [-71.078466697468912, 41.794312673169145], [-71.078467154125235, 41.794771858104404], [-71.078650911152423, 41.794930640630227], [-71.079261942401445, 41.794865911034698], [-71.079506565625351, 41.794753188412777], [-71.079903846107158, 41.794863236671972], [-71.080057359800279, 41.795212151343286], [-71.079965577198266, 41.796123426817637], [-71.080118691254015, 41.796606763515989], [-71.081494433981518, 41.797816053201117], [-71.081585621864775, 41.798093788567371], [-71.08198344038172, 41.798933752207091], [-71.082320384537951, 41.799350863116203], [-71.08259534110168, 41.800084492275502], [-71.082381534163304, 41.80037686600371], [-71.082534796454738, 41.800860289821884], [-71.08351284084857, 41.801815456588336], [-71.083911207490928, 41.802394221340315], [-71.084094458857223, 41.80367006774685], [-71.084248322151765, 41.805117325089469], [-71.083270430478791, 41.807243732657483], [-71.083515041723928, 41.807968784821625], [-71.083944032059662, 41.807861767994225], [-71.084585555144258, 41.806625034213688], [-71.084921274408856, 41.806258730753846], [-71.085471779833895, 41.806005302136214], [-71.085807624855576, 41.80602624068176], [-71.086296604293992, 41.806278405862464], [-71.086694702761122, 41.806758120167849], [-71.086980882663838, 41.806774373381963], [-71.087368027439496, 41.806511340087781], [-71.087490075876403, 41.806004699997672], [-71.087886794449417, 41.805636987928949], [-71.088283774281976, 41.805134851939933], [-71.088773531412315, 41.804837250548971], [-71.089140082806239, 41.804704598903328], [-71.090698988591186, 41.804558856440885], [-71.091432825328397, 41.804383668112919], [-71.094642898259167, 41.804243777564373], [-71.095193681251502, 41.804449935912523], [-71.095438419521727, 41.804832916626999], [-71.095255419634441, 41.805701112451921], [-71.095255791780488, 41.806097811464255], [-71.095897839344445, 41.806185082929197], [-71.096080785402194, 41.806046716021207], [-71.096141671594694, 41.805838228780942], [-71.096784421877956, 41.805204581225134], [-71.097944961535546, 41.804742204748834], [-71.09815858343039, 41.80458485512461], [-71.097791843690374, 41.80385310145941], [-71.097638321810209, 41.803486834545659], [-71.097699700365183, 41.803008150798206], [-71.098096865928198, 41.802595387095984], [-71.09748543635861, 41.802065980164066], [-71.097179118704162, 41.801792539846161], [-71.096995955538219, 41.801453087728213], [-71.096383677972099, 41.800851643138017], [-71.096230545048016, 41.800350231612931], [-71.096413444784702, 41.800121287997619], [-71.097514588740253, 41.799713897734598], [-71.097972632005522, 41.799318186093764], [-71.098003024441994, 41.798867574017635], [-71.098675146458703, 41.798179457980339], [-71.098705260172935, 41.797332146933265], [-71.099102426031692, 41.796874361843287], [-71.101607641665922, 41.794747586127393], [-71.102340648693286, 41.793832861198979], [-71.103011959498332, 41.792117768193897], [-71.10350075195629, 41.790902365459182], [-71.103775440492086, 41.790491406851082], [-71.104783526833913, 41.789806673177836], [-71.10545567171684, 41.788659334819229], [-71.110129974810135, 41.785546136108671], [-71.110313483074705, 41.785182658912504], [-71.110984828035612, 41.784359414388], [-71.11101497740313, 41.784169361660936], [-71.11144234288129, 41.783603593953885], [-71.111870948933827, 41.783307396108668], [-71.112420275231074, 41.783098761962478], [-71.112878546734422, 41.783027210548951], [-71.114346451914287, 41.783351814656669], [-71.114469633793746, 41.784746075418298], [-71.114653842071036, 41.785796695842173], [-71.115358429716807, 41.788152971525676], [-71.115665354733636, 41.789886114900256], [-71.116063021379532, 41.790437213579438], [-71.11719498322023, 41.79110107327012], [-71.117775623365588, 41.79173894448008], [-71.11808184309939, 41.792336998022385], [-71.118541043266191, 41.79290522075523], [-71.118602837654421, 41.793597532263277], [-71.11805364921355, 41.794535486031172], [-71.117290194876304, 41.79494591908221], [-71.116801310707686, 41.795153069406659], [-71.116464449341748, 41.795429336513372], [-71.116312446663855, 41.796477201046955], [-71.116007657713297, 41.797140728419429], [-71.11591729280137, 41.799060975835381], [-71.115795329385094, 41.799613204077986], [-71.115918530416309, 41.80075482197843], [-71.115705028616986, 41.801281351552781], [-71.115338764444758, 41.801279035777924], [-71.115063273789048, 41.801049595170994], [-71.114237003476362, 41.799911811639369], [-71.113930643420076, 41.799953541422866], [-71.11374775702987, 41.800389595144736], [-71.113778690420006, 41.80068627763697], [-71.114421346804022, 41.801305197928251], [-71.115492229584831, 41.802150018794784], [-71.116073813130811, 41.803085019024799], [-71.116409927866485, 41.803520572778311], [-71.116410608509582, 41.803727656949242], [-71.116655929676483, 41.8042546507697], [-71.11668667254429, 41.80478596473052], [-71.117238989203528, 41.806955969800434], [-71.117239551966179, 41.807865332011431], [-71.116995917485767, 41.808257249376446], [-71.116445577879489, 41.80860095585804], [-71.115222328545499, 41.809056015827672], [-71.114122851586728, 41.810274534083113], [-71.113450462496743, 41.810755027620552], [-71.112564562993768, 41.811077859666028], [-71.111708135887241, 41.81128256838128], [-71.111310701159908, 41.811488296197538], [-71.110944072509525, 41.811990165087991], [-71.110517269155849, 41.813043205761957], [-71.108897116284538, 41.813730393979867], [-71.108194043103339, 41.814373986117353], [-71.107461302539889, 41.815396792139076], [-71.107491916307907, 41.815585342211115], [-71.107584373422128, 41.815953186098028], [-71.107828391577954, 41.816335506823997], [-71.108349473930161, 41.816776762009347], [-71.108349612657037, 41.817479670945623], [-71.108166147187887, 41.817780029849494], [-71.108136249551364, 41.818258286362592], [-71.108472955683823, 41.818621296343366], [-71.109818304333658, 41.818785721253143], [-71.110247217987933, 41.819129323621908], [-71.1116538484779, 41.818878061641797], [-71.112325604397412, 41.818874675296655], [-71.11354967199776, 41.819014514166732], [-71.114773749473486, 41.819811509934134], [-71.114773947791846, 41.820775431954239], [-71.114652537204492, 41.821984920315337], [-71.114622387280207, 41.822652162140464], [-71.114775396627138, 41.823127076754659], [-71.114990072572638, 41.823356852349065], [-71.115509932760276, 41.823699030979846], [-71.116519410958219, 41.824130639491038], [-71.116825948375478, 41.824359009786548], [-71.117040580234018, 41.82495900764264], [-71.117071393564302, 41.825480777282642], [-71.116491405321653, 41.826446710729741], [-71.114565358893117, 41.827409810175212], [-71.114046231164494, 41.827797998542934], [-71.113893214273347, 41.828278090512626], [-71.113924698377872, 41.829142538653393], [-71.113313991815104, 41.829721199030558], [-71.112946305327043, 41.829926403307439], [-71.11086692531228, 41.830423526428952], [-71.109736113141764, 41.831003273052758], [-71.108940534594211, 41.831684188034174], [-71.10771855578183, 41.833652940978318], [-71.107260638825366, 41.833841520187406], [-71.107352410168872, 41.834344414772033], [-71.107260889859674, 41.834543798569236], [-71.106619049678145, 41.8350964758598], [-71.106681541466742, 41.836266613623266], [-71.106864943750608, 41.836650437312812], [-71.107354363451918, 41.837019558130329], [-71.107721872750602, 41.838183992067755], [-71.108243757949126, 41.838778309722684], [-71.108824510951578, 41.839650316373351], [-71.109651201607591, 41.840473012089205], [-71.110264096479625, 41.841686625694074], [-71.110386995473689, 41.842342594155028], [-71.110353479439198, 41.843394274536799], [-71.11032696306674, 41.844226382154716], [-71.110480459061733, 41.844565710007736], [-71.110764038020108, 41.844839575601895], [-71.111148653772958, 41.845210573098775], [-71.111428646498837, 41.845481093471214], [-71.111962902457208, 41.846254426184373], [-71.112243998852961, 41.846661621899599], [-71.112562345720448, 41.847121884505917], [-71.112532292182081, 41.847609144459575], [-71.112135770497147, 41.848499148139453], [-71.11146338382234, 41.849187342071296], [-71.110638346959007, 41.850418555273393], [-71.109445307793308, 41.851269273674951], [-71.107671262783541, 41.851932240140165], [-71.106815769135281, 41.852714314212626], [-71.106815077479396, 41.853119471439186], [-71.106968929750096, 41.853557754005088], [-71.107794846682367, 41.854218395376911], [-71.108040733602422, 41.854673379236601], [-71.108010703473582, 41.855385726576785], [-71.107735326084054, 41.855985136240129], [-71.106788809423477, 41.857633488217196], [-71.106697596660126, 41.858499764907208], [-71.106452805217103, 41.859134841080966], [-71.105841067812207, 41.859686447317877], [-71.105137575133895, 41.859960873836108], [-71.104487038935503, 41.860181998566055], [-71.103864860197802, 41.860393674299573], [-71.103791672876085, 41.860561696184092], [-71.103801486623695, 41.860843090993505], [-71.103811047436054, 41.861145823315042], [-71.103938730241879, 41.861492362786223], [-71.104313487158564, 41.863597700730935], [-71.104345413084388, 41.865110406286455], [-71.104223631703846, 41.865752026178555], [-71.103948901158233, 41.866622165437313], [-71.103705407223075, 41.868221158917279], [-71.10260445442718, 41.869979772616581], [-71.102543730535359, 41.870368333898163], [-71.102207357923007, 41.870878742862168], [-71.101871370867713, 41.871191524533984], [-71.101075684018468, 41.871584361262997], [-71.099790095624158, 41.871743004115366], [-71.098015439547581, 41.872090785841195], [-71.095719319629765, 41.872204762710545], [-71.093822774792798, 41.872392684816404], [-71.093149264296741, 41.872639053504571], [-71.092690451015642, 41.87312468850363], [-71.092507308449612, 41.873488678102717], [-71.09250710113335, 41.873803801277482], [-71.093426340988728, 41.875111512423565], [-71.094711402037589, 41.875105909247587], [-71.094097984255626, 41.874216340619604], [-71.093945786788353, 41.873921473495912], [-71.093976008108115, 41.873488870904893], [-71.094313063551752, 41.873167652823668], [-71.094802146642138, 41.8729780651799], [-71.095934883931662, 41.872822808829895], [-71.097893223219657, 41.872750944895998], [-71.098658173866482, 41.872844843483996], [-71.100280760563308, 41.872680011273566], [-71.101382763167237, 41.872389540204082], [-71.102238766728931, 41.87202284176329], [-71.102758527796382, 41.87167972670769], [-71.103248288259579, 41.871220539444792], [-71.103462685084111, 41.870856101180003], [-71.103644724943351, 41.869708782825185], [-71.10474634964234, 41.868652437232939], [-71.104807335280711, 41.868335813956477], [-71.104927081011539, 41.86574825142732], [-71.105170643810851, 41.8637621034053], [-71.105109240656688, 41.862844159977165], [-71.104833302499443, 41.862047471649035], [-71.104802454005736, 41.861408653520023], [-71.10495511708946, 41.861126200839507], [-71.105995428198014, 41.860765154470492], [-71.106607262590103, 41.860374981490537], [-71.107432202261734, 41.859251839766657], [-71.107615574355393, 41.858771321220786], [-71.10788974726178, 41.857469000931644], [-71.108714306510095, 41.855868120562533], [-71.1089272119425, 41.85481039409644], [-71.109417102198492, 41.854242598089463], [-71.109263668625388, 41.853831240943393], [-71.108498509248577, 41.853511783016103], [-71.1083759857883, 41.852892368711672], [-71.108681716810949, 41.852661576481928], [-71.110516982389456, 41.851835028831061], [-71.111281425097516, 41.851361618637299], [-71.112503775010538, 41.849230766468658], [-71.1127306007416, 41.848662692643664], [-71.112869509483275, 41.848314276689024], [-71.112953220079874, 41.84797350638123], [-71.113005328844977, 41.847760389138372], [-71.112942541747856, 41.847451264415511], [-71.11305233778846, 41.846581714137464], [-71.112837312533841, 41.846278735447157], [-71.112561535806137, 41.845590198366459], [-71.11188766358292, 41.845044273320305], [-71.111643167115346, 41.844382310544418], [-71.111580639708905, 41.843419258000026], [-71.11222264836745, 41.842687112762057], [-71.112222006701131, 41.842416373813521], [-71.111701944553957, 41.841867638906685], [-71.111426863716616, 41.841386182833034], [-71.111303449647778, 41.840694739730509], [-71.110966644656372, 41.840286720960364], [-71.109773405608621, 41.83937157537239], [-71.109527368924518, 41.838889673477233], [-71.109129377038244, 41.838410491668206], [-71.108700563324433, 41.837265029646552], [-71.108667828386132, 41.835320149462127], [-71.108821065762982, 41.835029230007954], [-71.108850230044112, 41.833650075125661], [-71.109033591438632, 41.833078977933148], [-71.109552864772709, 41.832285652659316], [-71.110530927285737, 41.831529276915987], [-71.111387153153899, 41.831224996319307], [-71.113038133949075, 41.831041535384522], [-71.11435389578287, 41.830450046810007], [-71.115026807977856, 41.829995930017098], [-71.115240176607756, 41.829668020260335], [-71.115300673001045, 41.828459496824912], [-71.115697764083336, 41.827866600871566], [-71.117255851232528, 41.826837602422785], [-71.117500606574481, 41.82649115642144], [-71.117724970393922, 41.825650076124532], [-71.117926942189257, 41.824888871936182], [-71.117866036230836, 41.824727684236471], [-71.118049645119882, 41.824318637470419], [-71.118049018434917, 41.823679382720748], [-71.11761988700502, 41.823038691856617], [-71.117619321746915, 41.822650996698037], [-71.117374673316917, 41.822078990455303], [-71.116823456891325, 41.821386746527104], [-71.116790658713953, 41.818891479408833], [-71.116178015158283, 41.817911992080063], [-71.116147922765464, 41.817732359964431], [-71.115902570781671, 41.817502483090941], [-71.115626372591521, 41.816219715019606], [-71.11483100116763, 41.81581070009738], [-71.114860920626541, 41.815260503302433], [-71.115227660868669, 41.814758082114807], [-71.115288612395048, 41.814370054076797], [-71.115685855241395, 41.813957229771809], [-71.115745448631657, 41.813334473961717], [-71.11599010944883, 41.812996494328701], [-71.115990302716881, 41.812744395149771], [-71.116387561449557, 41.812466621945362], [-71.117732339135998, 41.811964688187089], [-71.118007177225891, 41.811689379981132], [-71.118770300207927, 41.810359946849928], [-71.119045729156284, 41.810084548093513], [-71.119197463470314, 41.809603904471395], [-71.119319132917198, 41.808070373513438], [-71.119593863307657, 41.807344792788228], [-71.119837704802222, 41.806430033489931], [-71.120783295256416, 41.804692163116158], [-71.120813894051167, 41.804159883961944], [-71.12075134868499, 41.802656710543516], [-71.120689601486177, 41.802396482047797], [-71.120383450604749, 41.802078087145468], [-71.120352392642985, 41.801736388313969], [-71.120566302754099, 41.801074257780662], [-71.120565997483055, 41.800660092581531], [-71.120473455805651, 41.800499971152234], [-71.119800035778653, 41.799926540584423], [-71.11961579468128, 41.798920947402252], [-71.1202579555179, 41.798557813884145], [-71.120594139706682, 41.798010886028699], [-71.120593928428704, 41.797479674655307], [-71.120471298542725, 41.79730144588634], [-71.120593294218708, 41.796614789512901], [-71.121784968024613, 41.796385737459175], [-71.121753138316933, 41.79542224974147], [-71.121966674588464, 41.794715637593875], [-71.122546821588969, 41.79420939868757], [-71.123004584263299, 41.793542938946509], [-71.122972825400197, 41.792931221272454], [-71.122972775025062, 41.792084255085932], [-71.123827572139206, 41.790942545418289], [-71.123918838671486, 41.790256324207583], [-71.124161848559353, 41.789747253500273], [-71.124191997574286, 41.789224065488668], [-71.124466609317594, 41.788515939288551], [-71.124497343040744, 41.788281407435576], [-71.124221542430661, 41.787556791163993], [-71.12419062999993, 41.787188082923926], [-71.124068097615762, 41.786892811757895], [-71.123395617765482, 41.785995366110875], [-71.123394749000681, 41.785653227395933], [-71.123179640934268, 41.785125807206661], [-71.122690968612389, 41.784621070789825], [-71.122598499130035, 41.784370375160904], [-71.122658740815098, 41.783072349003348], [-71.121343436596248, 41.782060756035065], [-71.121190678485249, 41.78185595717882], [-71.121250012092915, 41.780188241581222], [-71.121371698545389, 41.779384536599935], [-71.1212792557467, 41.778583991323316], [-71.121156683590243, 41.778361285520653], [-71.118893453171495, 41.776096721121164], [-71.118923792395393, 41.775709038346591], [-71.119442068797099, 41.77417683052434], [-71.12002160827025, 41.77364359174684], [-71.120296714372358, 41.773233135197223], [-71.120357025824717, 41.77263747912356], [-71.120265491202815, 41.772476730271251], [-71.120265296742289, 41.771882493204572], [-71.120600626526752, 41.7718403030537], [-71.120906633516782, 41.771996633377334], [-71.121059263661166, 41.772299931548005], [-71.121182648320996, 41.773072939155035], [-71.121457926507219, 41.77362586357907], [-71.12213063950594, 41.773847603773568], [-71.122588695884758, 41.7735958511809], [-71.122863020656794, 41.773213026893849], [-71.122953950121342, 41.771949945383206], [-71.123533811404585, 41.771353754887109], [-71.123717566568374, 41.770989716857649], [-71.124449772739254, 41.77041752432018], [-71.124806374753305, 41.770028213862325], [-71.124746545500273, 41.769137202519907], [-71.125266658004051, 41.768406833176591], [-71.12541964252091, 41.768016220675193], [-71.12566423314523, 41.767651839299305], [-71.126520697624699, 41.766942196695886], [-71.126520559864545, 41.76655450203139], [-71.126338389557588, 41.766323773163293], [-71.126460509688499, 41.765862199846687], [-71.127194962789517, 41.765344018669069], [-71.127316986029498, 41.76506251575772], [-71.127439857317981, 41.764429335585639], [-71.12756187825579, 41.764147742366859], [-71.127868717863862, 41.764033949379758], [-71.128846560193196, 41.763925764931493], [-71.130342406884836, 41.764492811923631], [-71.130953178478364, 41.764517301000872], [-71.134437114978212, 41.764109866930021], [-71.134620784222093, 41.763809376461118], [-71.134713477280769, 41.762573392276416], [-71.134225471177828, 41.761861624123199], [-71.134165394579853, 41.760908222437187], [-71.133860824322511, 41.76033713725284], [-71.133768242893836, 41.760104457243685], [-71.133494183062709, 41.758911771849711], [-71.133800952245025, 41.757797394767529], [-71.133709304180712, 41.757402653205972], [-71.133771071462434, 41.756717409127383], [-71.134445840495474, 41.754938578204673], [-71.135272084867296, 41.75347310266411], [-71.135363675983541, 41.75299395513953], [-71.135272404891111, 41.752743273296872], [-71.13502783260688, 41.752261338449841], [-71.134906518097424, 41.751777007086787], [-71.134937076764245, 41.751226716218561], [-71.13515154088239, 41.750979804842018], [-71.136159416079764, 41.750564362161398], [-71.136343564324847, 41.750065881640737], [-71.136255588950633, 41.748392014653056], [-71.136438533483641, 41.747955924950844], [-71.136713496947152, 41.747680482323275], [-71.137477481816546, 41.747287929369712], [-71.138547064711773, 41.746556366480448], [-71.138639294291252, 41.745554470277177], [-71.138792289918754, 41.745371552604254], [-71.140044696591573, 41.744978729785856], [-71.14044241693648, 41.744610839182556], [-71.140534665518217, 41.743428869868616], [-71.141207280459668, 41.742831172124802], [-71.142215216439467, 41.742460694368326], [-71.14197190303743, 41.741987782050636], [-71.141910800591319, 41.741457458959552], [-71.145273263778961, 41.736880656720992], [-71.145670639364397, 41.736495370016051], [-71.145853807517014, 41.736131294675189], [-71.146220673442357, 41.735718810393401], [-71.147320584318891, 41.735166791164268], [-71.148481194162613, 41.734415249284716], [-71.149398299492262, 41.734136714682663], [-71.151718697910383, 41.733976098569194], [-71.151994840203216, 41.733637597838765], [-71.152117241631998, 41.732284103507602], [-71.153156164956101, 41.72917428437745], [-71.153432920804192, 41.727277082092534], [-71.153799654345036, 41.726937142052606], [-71.154654141210855, 41.726434455942936], [-71.155325842744475, 41.725926078226031], [-71.155937693613524, 41.724969047296376], [-71.156274016225581, 41.724692032514938], [-71.157190349421597, 41.724323397445289], [-71.157984891838112, 41.72380420949608], [-71.158503870092176, 41.723325696340233], [-71.15917613084558, 41.722475251891183], [-71.159969817242072, 41.721928946835675], [-71.161558006917616, 41.721150907767623], [-71.164703136762697, 41.719046623506379], [-71.165467067091413, 41.718221712191848], [-71.166353075831921, 41.71751077859129], [-71.166688759823714, 41.716441416329673], [-71.167024996672552, 41.716047953451088], [-71.167727575463417, 41.715593074601031], [-71.168978718056948, 41.71506496813118], [-71.169772839948038, 41.714563074081916], [-71.170567331595052, 41.714196769492006], [-71.172551181688419, 41.713808046490264], [-71.173101034163281, 41.713599123372568], [-71.173375924477142, 41.713395621247209], [-71.173712391170895, 41.71268701417695], [-71.174750049157012, 41.711657993633033], [-71.175574860313532, 41.711129136265242], [-71.177314646773752, 41.710672648105508], [-71.177711314427285, 41.710142560833724], [-71.178139321014697, 41.709782458306954], [-71.178688756963538, 41.709574137174442], [-71.17981809576456, 41.709525548852291], [-71.181497167330377, 41.709736801444102], [-71.18235301974174, 41.710053687850127], [-71.184245311225183, 41.711107869056114], [-71.18598509350754, 41.711813339783333], [-71.187603490189488, 41.71208898032917], [-71.189587916137782, 41.711744440101917], [-71.1900149763717, 41.711493503841425], [-71.190045729398008, 41.710925192081923], [-71.189862027133643, 41.710351884462206], [-71.189222094459979, 41.710076070379166], [-71.188336238714356, 41.709966685927164], [-71.188030858969043, 41.709684487733618], [-71.187847456463416, 41.70930025264645], [-71.187817613421842, 41.708571421797373], [-71.188579696611825, 41.708087856592307], [-71.189984391283545, 41.708088359739293], [-71.191205689082906, 41.708272291152156], [-71.191632656807613, 41.708407962015428], [-71.192029476346832, 41.708292530122044], [-71.193158594239037, 41.707306897270598], [-71.19358611847673, 41.707100426595943], [-71.194318397499416, 41.707032617843886], [-71.194593780955174, 41.707585906231174], [-71.194654861230575, 41.708683425330896], [-71.194807945880527, 41.70893305472022], [-71.195235956098742, 41.710213338508858], [-71.195266927775151, 41.711681003351046], [-71.194960752138371, 41.712614843892986], [-71.194533672782029, 41.713073420938194], [-71.193709316774203, 41.713710459347823], [-71.192823476042889, 41.714060922134948], [-71.192335823026937, 41.714791145304631], [-71.191969739676793, 41.717122620195575], [-71.191725042142551, 41.718748812622998], [-71.191115103224263, 41.718886714703878], [-71.190656766760185, 41.718886550656066], [-71.189740708276389, 41.718561639991826], [-71.189527297889398, 41.71838548879208], [-71.189526971494701, 41.718106377217907], [-71.191542146415614, 41.715112585840124], [-71.191541570911937, 41.714833473594751], [-71.191358452080806, 41.714656777388427], [-71.191053129295227, 41.714653698285517], [-71.188488885895495, 41.718018007522772], [-71.188580108206324, 41.718286653544155], [-71.188580420954878, 41.718493736527606], [-71.189191404552531, 41.718932079157916], [-71.190077015534058, 41.719365584438286], [-71.191572944695963, 41.719661722748164], [-71.192428129314663, 41.719680873020444], [-71.192824864017766, 41.719322341615943], [-71.193098942628879, 41.716227023673021], [-71.193221225803882, 41.715936447933927], [-71.193770878251769, 41.716160135910719], [-71.19435101178928, 41.716644556388047], [-71.19462557944837, 41.717125813702644], [-71.194656449116607, 41.717782616805309], [-71.19453449300488, 41.718659056918383], [-71.194290004166717, 41.719249214814262], [-71.194137685039067, 41.719387280574168], [-71.194168653203675, 41.720098015414877], [-71.194993256421952, 41.720785128975642], [-71.194962639410363, 41.721056234405715], [-71.194412361523391, 41.721129578364099], [-71.193557801372179, 41.720875811744975], [-71.193099580354726, 41.720848647175728], [-71.192794145923585, 41.720962618912537], [-71.192489459288282, 41.721220648949192], [-71.192458905143425, 41.721626267214162], [-71.193008389745287, 41.722219734800021], [-71.193008000972995, 41.72275094426373], [-71.192550996065336, 41.72286792792795], [-71.192183806517193, 41.722676690377412], [-71.190107566185006, 41.72119393246453], [-71.189344122475603, 41.721037710741669], [-71.189466492282349, 41.721674416884021], [-71.190077258531076, 41.722933249504806], [-71.190260136125559, 41.723163878396008], [-71.190748975989422, 41.723299180120158], [-71.190993407657785, 41.723501253615041], [-71.190902175077014, 41.723827385325102], [-71.190382964102653, 41.724080865588739], [-71.190260480735375, 41.724902738317127], [-71.190412670132687, 41.725242406690263], [-71.190779609171116, 41.725586709888198], [-71.190962674570059, 41.725979402335845], [-71.190993262835988, 41.726960874230969], [-71.191482330190183, 41.727528344777653], [-71.19212292889091, 41.727804057280174], [-71.191665432887547, 41.728587840085574], [-71.191085307593127, 41.728580685449757], [-71.191115515659831, 41.729517138357501], [-71.191359839192387, 41.729746761579214], [-71.19175735777857, 41.729937543534668], [-71.191878871532836, 41.730187091132308], [-71.191329239848884, 41.731278995595133], [-71.190597386778151, 41.731076679995631], [-71.190352113710517, 41.731216108766986], [-71.190169335550465, 41.733067014701525], [-71.189772268340107, 41.733597144034569], [-71.188490237759737, 41.734504714995431], [-71.188093229703469, 41.734944172760009], [-71.187787887800653, 41.735490932910309], [-71.187512418254315, 41.735630813028088], [-71.187328731105495, 41.735535771374224], [-71.187207127838974, 41.735330606281686], [-71.186749087290451, 41.735123435639821], [-71.1867189115993, 41.734781217087907], [-71.186596847849941, 41.734621608111212], [-71.186230230167013, 41.734646438754204], [-71.186077047233141, 41.734802498565394], [-71.186200041755583, 41.735971590583475], [-71.186107723526163, 41.73638775111106], [-71.185375333805538, 41.737555113006081], [-71.185252588960395, 41.73848493227068], [-71.18583275947519, 41.738672187820526], [-71.186321653529845, 41.739014590570655], [-71.186687732693215, 41.739178202713695], [-71.186840370452643, 41.739355902752436], [-71.186803649578067, 41.739637163187609], [-71.186761714001108, 41.739952172635746], [-71.18671900729457, 41.740277263937791], [-71.186693168536152, 41.740471939969609], [-71.186729497257204, 41.7408591932044], [-71.186076482984291, 41.740910876221506], [-71.186046296119997, 41.741280479393247], [-71.186565655184367, 41.741739381078432], [-71.186596817282322, 41.742126079904843], [-71.186993308376756, 41.742514863566363], [-71.187207577592247, 41.742997142940716], [-71.187176944370378, 41.74338538252065], [-71.186993660969975, 41.743865939367147], [-71.187333947900882, 41.744147155012939], [-71.187665512284298, 41.743754158870921], [-71.188795380305805, 41.743867545488705], [-71.189162803213364, 41.743959664935161], [-71.189535339154659, 41.744484058180582], [-71.189763468245076, 41.744518983398983], [-71.190262280516805, 41.744416259872764], [-71.190506435254846, 41.744294835306235], [-71.190383839101415, 41.74359447510151], [-71.189986578318567, 41.743358671547732], [-71.189040651899347, 41.742998201111114], [-71.188245953227991, 41.742517759202585], [-71.187696887484236, 41.741762746817223], [-71.186932335866047, 41.741047655383674], [-71.187134654325689, 41.740311629729689], [-71.187451652745054, 41.739452119483772], [-71.18784853583638, 41.738282204344337], [-71.188643020361212, 41.737438584605123], [-71.189345591191966, 41.736136697058747], [-71.189741955784115, 41.73590368495065], [-71.190139113860667, 41.735878295842895], [-71.190475489013522, 41.736042985483984], [-71.190780503752535, 41.739334616698443], [-71.190536860612923, 41.739726690342721], [-71.190414229452927, 41.740548472450619], [-71.190994551813887, 41.740636752848808], [-71.191147409245275, 41.740498692693102], [-71.191543604797005, 41.739607873492147], [-71.191574425371414, 41.738328370491828], [-71.191757564473775, 41.737892193495625], [-71.191788846033333, 41.737188829925834], [-71.191726863540566, 41.736631611630486], [-71.191911142084564, 41.736132412511068], [-71.191911183061038, 41.735376113196722], [-71.191299924735276, 41.734784094039895], [-71.191146406436857, 41.734390402035785], [-71.19120776200397, 41.73395668661766], [-71.192490786428777, 41.732382824257762], [-71.192459853435039, 41.731942106224281], [-71.192189935266512, 41.731783274289995], [-71.192783983554818, 41.730325760720845], [-71.193497719108493, 41.730345691306454], [-71.193955461177268, 41.729633930171396], [-71.193864233980676, 41.729383295773289], [-71.192849227885887, 41.729029963438194], [-71.192896131820461, 41.727948581786194], [-71.193344513390898, 41.72803307324952], [-71.193344059675027, 41.72727614219724], [-71.193619703386489, 41.726613501460506], [-71.193680362714645, 41.726269818459841], [-71.193864300414262, 41.725932679416665], [-71.194962894886302, 41.725056069550519], [-71.195360114887606, 41.724624961871925], [-71.195817699062232, 41.723706110834009], [-71.195787213206231, 41.721905316234235], [-71.195867166262232, 41.721418256788958], [-71.195905286151245, 41.721185976543815], [-71.19595479682134, 41.720883318809364], [-71.196003318647584, 41.720586330659025], [-71.196152876764543, 41.719663864245121], [-71.196367076380639, 41.719299251023052], [-71.196793764991753, 41.718903691035926], [-71.197770717591581, 41.717668838702579], [-71.200823480986259, 41.714673042214081], [-71.200976084079528, 41.714057869281739], [-71.201708115814625, 41.712359196271798], [-71.202043784059626, 41.711289281100356], [-71.203234590838278, 41.710581650225073], [-71.203600874116248, 41.710079485231283], [-71.204088801491721, 41.709799393217168], [-71.206225014024213, 41.709047006476212], [-71.208057618080559, 41.708543019952707], [-71.209094872609555, 41.708469145252977], [-71.20958360447402, 41.708585728915729], [-71.209980505513172, 41.709001445079764], [-71.21007228170329, 41.709774274565149], [-71.210316679070743, 41.709985940350535], [-71.210897663830409, 41.710191168069933], [-71.21300335988532, 41.710600486476224], [-71.21559876022323, 41.711622692448493], [-71.215996400319256, 41.712155525648342], [-71.216576786124705, 41.712612732479812], [-71.216668200586028, 41.712835798201425], [-71.216698889771621, 41.713367084726016], [-71.21651522984574, 41.713595678117791], [-71.216149142489101, 41.713666254148606], [-71.216027248000813, 41.713461119106789], [-71.21569072558674, 41.713179458027767], [-71.215721291209718, 41.712683167981169], [-71.215019575303444, 41.71254356888582], [-71.214103820279547, 41.713110747986455], [-71.213585291683799, 41.71389554536804], [-71.213616154857149, 41.714462847458961], [-71.214073692268627, 41.714715016891716], [-71.214501232298616, 41.714716089935933], [-71.215111723501138, 41.714352975109556], [-71.215721607344392, 41.714124908934387], [-71.215905312884374, 41.714238452277982], [-71.215874750748483, 41.714734112110506], [-71.215753093144457, 41.714988789270784], [-71.215143077233719, 41.715379459624565], [-71.2143485560497, 41.715403308970167], [-71.213188267287578, 41.71512866409153], [-71.212791720671589, 41.715262717761107], [-71.212212426575462, 41.716111461196782], [-71.2114181536015, 41.716982796106734], [-71.210288897316957, 41.717625933569884], [-71.209128614989154, 41.717846443389334], [-71.208487334933452, 41.718147502914562], [-71.207297192144878, 41.719269354210006], [-71.206809093971671, 41.72007166630118], [-71.206504249800432, 41.721554758121329], [-71.206688177801482, 41.722380228604649], [-71.206901937902828, 41.722493323640357], [-71.207390175640768, 41.722582904449546], [-71.207633790669135, 41.720478947487429], [-71.207816901279486, 41.72025036692844], [-71.208122096700365, 41.720208382857059], [-71.210749080323595, 41.721968531139986], [-71.212856012528107, 41.723044748033395], [-71.218109596051647, 41.724889560354278], [-71.219422845289188, 41.725080168210965], [-71.220765953070128, 41.725810507343837], [-71.223972987968637, 41.726586420690012], [-71.224156503625565, 41.726699950093419], [-71.224033689695986, 41.727224739851501], [-71.223118277876338, 41.727044697242604], [-71.222842991132893, 41.727085623905353], [-71.222691210592075, 41.727358782372612], [-71.222660217625133, 41.727909004218347], [-71.222844477074915, 41.728211611983305], [-71.222660853856127, 41.728620826654101], [-71.222233639779148, 41.728827497307002], [-71.221896831534437, 41.728779946721673], [-71.221682847672042, 41.728045094081395], [-71.221682108786595, 41.726973038836128], [-71.221468415495821, 41.726724918484273], [-71.22079685289674, 41.726467842775293], [-71.220064122231321, 41.726292725158352], [-71.21902547799003, 41.726537764620481], [-71.216644056158302, 41.726791795731337], [-71.216186267155635, 41.726953349838929], [-71.215758362325957, 41.726907804838412], [-71.215605751566883, 41.726766698137112], [-71.215605954841166, 41.726288969824765], [-71.215422096098123, 41.725905318976125], [-71.214628133934767, 41.72539796199721], [-71.214536387330099, 41.725219911709978], [-71.214200162819296, 41.725235454706194], [-71.213345758169297, 41.725855092637651], [-71.211818587291347, 41.726569271438727], [-71.21120897766086, 41.726707282050377], [-71.210231131701477, 41.727158937253535], [-71.210201066435459, 41.727348475715615], [-71.211208817224417, 41.727248035459837], [-71.212766008161523, 41.727614367665879], [-71.213041089188138, 41.727915600075931], [-71.21383495452956, 41.728368315964673], [-71.215485539976257, 41.729471426615916], [-71.215485575761818, 41.730084208844204], [-71.21518073146791, 41.730685064449531], [-71.214752839869263, 41.730981110747933], [-71.214814848673058, 41.73200704136967], [-71.215059065724432, 41.732281721029494], [-71.215211644350134, 41.732972045077858], [-71.21551721322291, 41.733155671125651], [-71.215212318041054, 41.733656857291301], [-71.214479701650419, 41.734248086992302], [-71.214051913471934, 41.734138970889632], [-71.213655694401567, 41.734254481277354], [-71.212647402777094, 41.734959260835325], [-71.211639711881219, 41.735392845877911], [-71.210602117002864, 41.736268600787916], [-71.210112871420066, 41.73637710977313], [-71.209807850408822, 41.73631105710416], [-71.208433242478264, 41.735508480088441], [-71.206692510488949, 41.734920489136272], [-71.206111992210296, 41.734985978892034], [-71.204859874403567, 41.735577515700982], [-71.204279579040687, 41.735697018071939], [-71.203760361039457, 41.735553862473886], [-71.203363354272128, 41.735651868158484], [-71.20336350600563, 41.735903968241949], [-71.202630970698763, 41.736241942108471], [-71.202203274549959, 41.736656068662839], [-71.201867007619356, 41.736589912992862], [-71.201531645979173, 41.73640725262451], [-71.201317364653704, 41.736474847753286], [-71.200462118535668, 41.737779197898845], [-71.200157213174691, 41.73855999460347], [-71.200187941520667, 41.73990160600362], [-71.200462714203141, 41.740292903479357], [-71.200494102236547, 41.741418431001577], [-71.200616278972959, 41.741641050129637], [-71.201318988803081, 41.742195443663405], [-71.20159358285153, 41.742577103833035], [-71.201746697889277, 41.743538634796771], [-71.202082877825504, 41.743631260944113], [-71.202418516714616, 41.743633849101215], [-71.202815721954082, 41.743400793751952], [-71.20305957043422, 41.743080633018337], [-71.203090938167762, 41.742539420881428], [-71.202296176642406, 41.741870542813956], [-71.201899276143294, 41.740751892820967], [-71.201837162927788, 41.740203053309891], [-71.202142988346068, 41.7389900837277], [-71.202905737868193, 41.737849164281371], [-71.202875210784384, 41.737408540676007], [-71.202783599892626, 41.737230481303669], [-71.202505404197325, 41.736954516053387], [-71.202836976929746, 41.736479903756511], [-71.203798451446374, 41.736127308265317], [-71.205440160147248, 41.73697177879496], [-71.206906709287722, 41.737069469881718], [-71.207120522543818, 41.737155553787311], [-71.207181801544976, 41.737685840665073], [-71.207456714741724, 41.737869949698513], [-71.208036915340031, 41.737984613410148], [-71.2089833301239, 41.737822720952501], [-71.209319818906053, 41.737843208100308], [-71.209624882529269, 41.737954279951005], [-71.209900031714952, 41.738299997516279], [-71.209961229560292, 41.73864165831511], [-71.210266919383358, 41.738986822502632], [-71.210755729635508, 41.739058472877552], [-71.211274024255204, 41.738165554859975], [-71.211885091382854, 41.736955584129987], [-71.212465496259099, 41.736196790760602], [-71.21295322938829, 41.735781606724458], [-71.214174823844203, 41.735145426931346], [-71.214693029137266, 41.734685294175598], [-71.214693355285704, 41.734477672978024], [-71.215429551654495, 41.733811541261481], [-71.215987404512475, 41.733215908157554], [-71.216556344274267, 41.733288813996396], [-71.216586433153864, 41.732873554833148], [-71.216463456665281, 41.732714066036095], [-71.216493827251824, 41.732370836042989], [-71.216677739162449, 41.73198918284492], [-71.217256929344842, 41.731617605131177], [-71.218539395162367, 41.731159890316036], [-71.220311018938375, 41.731089976337671], [-71.221196805799366, 41.730523213952132], [-71.221837113094594, 41.730294649075191], [-71.22269264442437, 41.730268554705766], [-71.2236698114706, 41.73052023871675], [-71.224371960699997, 41.730470170082356], [-71.224616139128273, 41.730789846849888], [-71.225136279949936, 41.730887891812444], [-71.225777366711725, 41.73058727825655], [-71.225929622497532, 41.730314116860917], [-71.225898495983245, 41.729332654538233], [-71.226356296439988, 41.728296636249283], [-71.226386520714456, 41.727890468731104], [-71.224490206111057, 41.727354146067277], [-71.224668111010331, 41.726790143522528], [-71.225713661155552, 41.726976069449208], [-71.225530432834773, 41.726654921276833], [-71.225499617364036, 41.726358269880791], [-71.225621759971375, 41.725986627418685], [-71.225528899599652, 41.725528932954369], [-71.225712260411157, 41.724642524606629], [-71.226108371796826, 41.723860168840446], [-71.226139244260736, 41.723498930410905], [-71.225894283439558, 41.723170251573094], [-71.225679939126977, 41.722625020184466], [-71.225557853916754, 41.721753631883963], [-71.225250759949404, 41.718939909904798], [-71.224669667158324, 41.718005467590437], [-71.224730825909475, 41.717616751823762], [-71.225218557729008, 41.717066462182522], [-71.225218500420155, 41.716129551803789], [-71.22582692805635, 41.713883550800652], [-71.225918362656188, 41.713269278116115], [-71.225826553226284, 41.713018578029633], [-71.225963137321386, 41.712411166701763], [-71.236057322206207, 41.723635439650636], [-71.249446641742168, 41.738727543554994], [-71.259213728700956, 41.750125124768886], [-71.261045890047811, 41.752127227779091], [-71.283782664588941, 41.76176762535799], [-71.282451846790579, 41.763245001343975], [-71.28220759277896, 41.763637358486854], [-71.282145511546958, 41.764386153037329], [-71.282268293089388, 41.764527653068441], [-71.282237418936745, 41.764870898474314], [-71.282145503222921, 41.76491736100936], [-71.281839368633925, 41.765643809853323], [-71.281869622960855, 41.765940443891175], [-71.282266841712513, 41.76632889525834], [-71.282266463860921, 41.766968775016167], [-71.282175074689206, 41.767177302019597], [-71.281532478932263, 41.767748965891109], [-71.281410714200689, 41.767976611538273], [-71.281410123226365, 41.768570842988751], [-71.28156327259596, 41.768801897026087], [-71.281501140900673, 41.769280585279184], [-71.281226289269725, 41.770240643773839], [-71.28137893781026, 41.770724335931646], [-71.282265031182277, 41.771868309371641], [-71.282844802676166, 41.77195611973], [-71.283120436128058, 41.771752354798728], [-71.283242413925393, 41.771497697199059], [-71.283211636940209, 41.771246080232686], [-71.282814836755151, 41.770794608452405], [-71.282753860042092, 41.77026436478571], [-71.282815424243395, 41.769101407044424], [-71.282968665002599, 41.768918207244752], [-71.283458059006421, 41.768944438322833], [-71.283793973130798, 41.769189882046888], [-71.28394632279749, 41.769375913723479], [-71.284526371492547, 41.769553661290857], [-71.285107406316115, 41.769010585740048], [-71.28513850452569, 41.768775472375339], [-71.284711212565909, 41.768415065068574], [-71.284496988923209, 41.768068024430718], [-71.284497439109344, 41.767293182057642], [-71.28602674983189, 41.764551700645377], [-71.286363201493771, 41.763590035376971], [-71.286329369677134, 41.762847181145823], [-71.316360162993476, 41.775568032381912], [-71.317762718379981, 41.776162264819959], [-71.32807612507716, 41.780527616960491], [-71.328313161416588, 41.7806360164181], [-71.328473618342585, 41.78077293129386], [-71.328626704542714, 41.78096736726976], [-71.328680675629499, 41.781161023828396], [-71.328719066492283, 41.781378246131638], [-71.328765582593263, 41.781795268449684], [-71.328789755209982, 41.782201092824792], [-71.329175139994405, 41.782705867538787], [-71.329278272888956, 41.782195073087713], [-71.329308610439014, 41.782006044890622], [-71.329506508618863, 41.78186336544973], [-71.329667468984525, 41.781994156996632], [-71.329790050759726, 41.78226273468438], [-71.329859255433007, 41.782474420430646], [-71.329783490548664, 41.782828325160992], [-71.329692447738722, 41.78313709943923], [-71.32976172962384, 41.783320064165714], [-71.329853613299434, 41.783508194593402], [-71.329823650115117, 41.78378275678579], [-71.329793926092734, 41.784102877063461], [-71.3298625944077, 41.784290882764843], [-71.329924221631686, 41.784548204907644], [-71.33010076117597, 41.784884929231573], [-71.330216234363505, 41.785250913515604], [-71.330277727979208, 41.785559375161192], [-71.33024020538393, 41.785736508252924], [-71.330095270600523, 41.785953546844198], [-71.329866587224402, 41.786268328355298], [-71.329836848518141, 41.786548473023913], [-71.329646954272775, 41.7870225839943], [-71.329609331684068, 41.787371413548826], [-71.329609786724347, 41.787696710839029], [-71.329602831111146, 41.787913864960281], [-71.329526613113586, 41.788074103388269], [-71.329427612456357, 41.788251234256919], [-71.329695608581929, 41.788490768099514], [-71.330084996544969, 41.788593268953235], [-71.330291657948663, 41.788781479991009], [-71.33036099241933, 41.788947607817406], [-71.330468224528758, 41.789113161733184], [-71.330720140992909, 41.789158553695017], [-71.330903739361403, 41.789289377039317], [-71.33082801856682, 41.789489592615901], [-71.331034024811188, 41.789563636900411], [-71.331286065839379, 41.789426166645001], [-71.331538553082154, 41.789620655648662], [-71.331737116620801, 41.789734663211483], [-71.332035309904711, 41.789842514845098], [-71.332310826675339, 41.790156422283737], [-71.332395614273281, 41.790396220235863], [-71.33225077987079, 41.79057382632994], [-71.332037324735978, 41.79067705224049], [-71.331747158097443, 41.790854443428081], [-71.331892459811613, 41.791002675411512], [-71.332159873876591, 41.791105439340065], [-71.332343434268097, 41.791208169357375], [-71.332465774281332, 41.791350694619126], [-71.332626734324819, 41.791538924222074], [-71.332901882423315, 41.791629903171696], [-71.332971212174456, 41.791801611535789], [-71.332780598869633, 41.791956102232135], [-71.332666381840028, 41.792156262513409], [-71.332895785614937, 41.792258428679823], [-71.332774017412703, 41.792401765901154], [-71.332804700074206, 41.792584131816795], [-71.333003363659472, 41.792664284121649], [-71.33295797973534, 41.792858423138746], [-71.332935453434658, 41.79305304581721], [-71.33317246880452, 41.793052312556618], [-71.333417230858416, 41.793218064857832], [-71.333478506942569, 41.793480426376938], [-71.333654920990071, 41.793697308203996], [-71.333754154195447, 41.793891568456544], [-71.334022051711258, 41.794045558601184], [-71.334060994927952, 41.794245402976088], [-71.334106978894908, 41.794513864254242], [-71.334260084202057, 41.794673899113775], [-71.334527636964395, 41.794730559496465], [-71.334841335553392, 41.794901540762766], [-71.33503246308571, 41.795061629664907], [-71.335322924192525, 41.795147042718305], [-71.335720069000232, 41.795106559846879], [-71.335964368928884, 41.795083232484799], [-71.336354041007937, 41.795094506772784], [-71.336598358637104, 41.795111153614918], [-71.336820073936664, 41.795168283324315], [-71.337003639257432, 41.795276587963755], [-71.337271368556856, 41.795407521242325], [-71.337852375971991, 41.795738147406553], [-71.338150645531186, 41.795783588814551], [-71.338471529932505, 41.795783503788265], [-71.338738917750902, 41.795908760921023], [-71.338953184849387, 41.796010893426811], [-71.33934276250038, 41.796062132887371], [-71.33946513159529, 41.796250838551963], [-71.339648999180497, 41.796433418199754], [-71.33985539102774, 41.796558586878284], [-71.340031405606851, 41.79670685154295], [-71.340169067704679, 41.796843807789642], [-71.340299347495503, 41.79699813027613], [-71.340422576280062, 41.797277951497364], [-71.340400028855896, 41.79748950212165], [-71.340408416040304, 41.797792301482971], [-71.340569092122934, 41.797917404837058], [-71.340821196593225, 41.798048938123443], [-71.341149926535024, 41.798236759479884], [-71.341211359917736, 41.798402239313717], [-71.341150911888505, 41.798614367512975], [-71.340990804206527, 41.798791333099153], [-71.340830934408402, 41.798968929036945], [-71.340808445228575, 41.799157430852006], [-71.340969329240053, 41.799345648427909], [-71.341130071141606, 41.799591217622144], [-71.34112274362856, 41.799779650587027], [-71.341207421590909, 41.799985228360548], [-71.341299694864745, 41.80018505440519], [-71.341246367062723, 41.800436537826634], [-71.3411626960132, 41.800648003422566], [-71.34116318807267, 41.800837077519667], [-71.34101886313168, 41.801197016153722], [-71.340828403058069, 41.801431381463345], [-71.340684054769284, 41.801654646573716], [-71.340722507684546, 41.801820094518547], [-71.340875739374852, 41.801991374927219], [-71.340891081031785, 41.802208650680143], [-71.340807762346316, 41.802373928562417], [-71.340746751153702, 41.802568588942599], [-71.340571849635893, 41.802882836547212], [-71.340319950387567, 41.803094696351963], [-71.340144864163975, 41.803289106524069], [-71.339757674749194, 41.804329636772046], [-71.339705095693276, 41.804758309246701], [-71.339651892371279, 41.805004119847801], [-71.339614269643661, 41.805226903398157], [-71.339714184230473, 41.805403782506708], [-71.339783312566908, 41.805621043949088], [-71.33962345364624, 41.805929819073121], [-71.339761443844182, 41.806135382798772], [-71.3397160568788, 41.806335106512869], [-71.339510075821437, 41.80651263571685], [-71.339380783432659, 41.806724035720656], [-71.339160222277201, 41.807290314578985], [-71.33913046310181, 41.807638617729417], [-71.339245465109826, 41.807798591943907], [-71.339375694100497, 41.807981096226158], [-71.339315116185006, 41.808238780851376], [-71.339308028396403, 41.808472861663439], [-71.347440034070786, 41.823221570457704], [-71.345179950297634, 41.827607181767995], [-71.335368359812406, 41.835607077204102], [-71.342389381184447, 41.844563657558353], [-71.334468779198374, 41.861500296100431], [-71.333994012539449, 41.862514206539252], [-71.338467748897685, 41.875104128822926], [-71.340863252752527, 41.881798677792652], [-71.338749878330475, 41.898584339400337], [-71.374513720983273, 41.894340825986902], [-71.381525616912228, 41.893446264550875], [-71.381466071221396, 41.914836086794075], [-71.381295536577156, 41.985077531671912], [-71.374546263709078, 41.985178905046403], [-71.364305491696683, 41.985278040012496], [-71.325711415220482, 42.000124020079802], [-71.288299929246293, 42.014616504586435], [-71.24949398504225, 42.029629412651168], [-71.178358531774748, 42.057458153759761], [-71.168608616996536, 42.06123253618923], [-71.138675648267224, 42.072814243931845], [-71.124473220966522, 42.078294332631124], [-71.080577175169594, 42.095522257186964], [-71.069718373402821, 42.049746606372601], [-71.058115411558305, 42.000115497724302], [-71.054784911385397, 41.985026286235033], [-71.054255709647549, 41.982671527879859], [-71.04953137356199, 41.963091234862986], [-71.043988536873528, 41.9603203951228], [-71.010592260869203, 41.940107722491426], [-70.99965470648462, 41.92952619476236], [-70.99987492359439, 41.929258223151784], [-70.999873414697433, 41.92898973067156], [-70.999574228235346, 41.928704808424378], [-70.997849558125438, 41.928159907291892], [-70.997312485906377, 41.927984226489123], [-70.996951891581176, 41.927828408060989], [-70.996713347909022, 41.927652958382865], [-70.996334225095765, 41.927141956166921], [-70.995978335062304, 41.926605845212407], [-70.995714367147528, 41.926063926756747], [-70.995588804388987, 41.925690264955485], [-70.995563379171045, 41.925353599741051], [-70.995545723548503, 41.92504064817939], [-70.995566391077531, 41.92469923455775], [-70.995670762498406, 41.924429588768817], [-70.995944390348498, 41.924161230198223], [-70.9963100814348, 41.92392875103581], [-70.996591788203688, 41.923735876359224], [-70.996812147921815, 41.923525263829156], [-70.99700128159833, 41.923284081335481], [-70.997121906419679, 41.92303143249093], [-70.99712770435211, 41.92275513884703], [-70.997141061128588, 41.922468164243945], [-70.997015009080187, 41.922064699962654], [-70.996913372619304, 41.921790814242257], [-70.996804017455204, 41.921517434851467], [-70.996795309254125, 41.921337865523562], [-70.996784727048777, 41.920937700739813], [-70.99695504988685, 41.920192326125729], [-70.997184257768566, 41.91919502077814], [-70.997293402408559, 41.918471254863064], [-70.997303521375287, 41.917799993896502], [-70.997244806520214, 41.917159402129819], [-70.997096087068485, 41.916696684729985], [-70.996886551448696, 41.916303026401103], [-70.996631344903648, 41.915983985971202], [-70.996315107258738, 41.91565450175424], [-70.996037469351123, 41.915398385963584], [-70.995822105676041, 41.915239872969167], [-70.995445787148938, 41.915069934288262], [-70.995062305847114, 41.914952273397169]], [[-71.074339913654214, 41.792054270740245], [-71.074003787371495, 41.791870692101242], [-71.073392354905934, 41.791872906967001], [-71.072414212368471, 41.79282758450541], [-71.072108698379836, 41.792995255408684], [-71.071191625790277, 41.793038537548547], [-71.070182451175228, 41.792876543135023], [-71.069449173463738, 41.792926176476207], [-71.069173975969491, 41.7930573094132], [-71.069021445795727, 41.793267236898181], [-71.069143918012884, 41.793589038359293], [-71.070213697047976, 41.793542927215746], [-71.071130773751861, 41.793697191857333], [-71.071833431227915, 41.793657696749698], [-71.072567496389368, 41.793401598528625], [-71.073178221762305, 41.793381378192393], [-71.074186873503265, 41.793768343922302], [-71.075502022018085, 41.794456352093945], [-71.076602318887055, 41.794454322182858], [-71.076816071972047, 41.794225524353564], [-71.076571847904063, 41.793860512210692], [-71.075348143727084, 41.792918415262065], [-71.074675569112387, 41.792507414288117], [-71.074339913654214, 41.792054270740245]], [[-70.994199151104581, 41.513850998179947], [-70.993621419196103, 41.513788817405008], [-70.993165156592951, 41.51387789763244], [-70.992982676538574, 41.513989088089446], [-70.992921590642354, 41.514169968689295], [-70.993074417709053, 41.515203281966102], [-70.993836373419924, 41.515982168799873], [-70.994080065480986, 41.516509339665475], [-70.994901853251406, 41.51682875878894], [-70.995572471689968, 41.517330274518308], [-70.995937712553001, 41.517378086158359], [-70.995937522112229, 41.51718900834171], [-70.995814138438448, 41.516137282344708], [-70.99569260721772, 41.515977467510517], [-70.995723256122488, 41.515751341603767], [-70.99621007881855, 41.515661846492264], [-70.996270618077531, 41.515381831150506], [-70.994838556017044, 41.514082899313905], [-70.994199151104581, 41.513850998179947]], [[-71.120188277326037, 41.822459253296671], [-71.119943783814335, 41.822302046869531], [-71.119699144224427, 41.822351291025008], [-71.119515742745634, 41.823192511708058], [-71.119761271723263, 41.823701491496955], [-71.119701032943226, 41.823973017990561], [-71.118997810838977, 41.825003828844338], [-71.118967645192953, 41.825419062155291], [-71.119395796751903, 41.825320912606678], [-71.119915492808289, 41.825212352378927], [-71.120282488803213, 41.824953012063084], [-71.120311043415782, 41.823168692108304], [-71.120127810446164, 41.822991972261839], [-71.120188277326037, 41.822459253296671]], [[-71.027966711236076, 41.503819573232377], [-71.027601256572197, 41.503726845374494], [-71.025836281116383, 41.5039108106618], [-71.025532341607558, 41.504051347473251], [-71.025653519123352, 41.504508789032165], [-71.025866792137876, 41.504595215046415], [-71.026717881656609, 41.504661253572742], [-71.027509798535974, 41.504890815347274], [-71.027722862147357, 41.504778526600447], [-71.027905917962968, 41.504577336921024], [-71.028392218331476, 41.504280528366422], [-71.027966711236076, 41.503819573232377]]], [[[-71.059189093895043, 41.519607517374169], [-71.056083872255741, 41.519194752355794], [-71.055688599251312, 41.519220216456844], [-71.055292054905294, 41.519515242913648], [-71.055323212977498, 41.519910984550918], [-71.055566417996715, 41.520185917694739], [-71.055657931555103, 41.520481775195464], [-71.056144685246252, 41.521121767193648], [-71.056114418053824, 41.521600011741363], [-71.055931605305943, 41.522152389676201], [-71.055201065742409, 41.52258008266223], [-71.054896315821864, 41.522540622485401], [-71.054805422310096, 41.522379821263392], [-71.054348765574787, 41.52187445593033], [-71.053892314378842, 41.522080826692168], [-71.053466436624973, 41.522403822931096], [-71.053222810086353, 41.522516039825064], [-71.052918055899781, 41.522494581580126], [-71.052766176559572, 41.522335249145009], [-71.052492155386005, 41.521961688716587], [-71.051973742677433, 41.521484701784793], [-71.051426464522507, 41.52135027667434], [-71.051152399438848, 41.521138688173181], [-71.050909379765727, 41.52022385798341], [-71.050636036747775, 41.519841832287156], [-71.050483527151613, 41.519312805067194], [-71.050483759039381, 41.518510942606554], [-71.050544516634673, 41.518303019239475], [-71.051091727344655, 41.51770752390803], [-71.051579392092592, 41.517437091962691], [-71.053497230978309, 41.517484089581693], [-71.054257726581127, 41.517272612619507], [-71.056540716604005, 41.516312585913411], [-71.057454072338118, 41.51583670805622], [-71.058763236852002, 41.51542592815774], [-71.059279966261499, 41.51539867428685], [-71.059736997853008, 41.515516955210174], [-71.060284414319867, 41.515696359019373], [-71.06125879680549, 41.51695775686003], [-71.061715028222892, 41.517598237034974], [-71.06208009627305, 41.517871465819994], [-71.062811526541182, 41.517966032805255], [-71.064119352699493, 41.5177357986326], [-71.064424261010316, 41.51780224558938], [-71.06485054595754, 41.518236054922497], [-71.063845623052728, 41.519812873707515], [-71.063754875852041, 41.520138366170883], [-71.063601998536654, 41.52045686696524], [-71.063632374758171, 41.521573433502162], [-71.063480901458391, 41.522107396361989], [-71.063024043518936, 41.522746606560595], [-71.062719617699102, 41.522904708255787], [-71.062415405399875, 41.522838259478924], [-71.062172025812046, 41.522653286714394], [-71.062263447405641, 41.521985119966807], [-71.062141140211835, 41.521509706805048], [-71.061806476946003, 41.521254602917324], [-71.060862873535186, 41.52119018131301], [-71.060618955831714, 41.521032844243479], [-71.060223905483355, 41.519976719131805], [-71.059949681569549, 41.519837270423523], [-71.059189093895043, 41.519607517374169]]], [[[-71.093130644492675, 41.525481999535685], [-71.092795093620808, 41.525344031312393], [-71.091973855914475, 41.525485139833783], [-71.091851878154287, 41.525279869067994], [-71.091790266583018, 41.524343811937023], [-71.091486140883873, 41.523863275542546], [-71.091090260762726, 41.523681237487786], [-71.090299278501575, 41.523515149486471], [-71.089964052051627, 41.523179184547146], [-71.089750860450877, 41.522326942394628], [-71.088928550061553, 41.521594134106557], [-71.08871459033945, 41.52097661140759], [-71.088197270475604, 41.520382207701708], [-71.087375432748857, 41.520271179359014], [-71.087131990895614, 41.52008626013999], [-71.087131439383427, 41.519446461306025], [-71.087862106566774, 41.518829578609903], [-71.089444090784482, 41.518260161762115], [-71.090022938182486, 41.518186894078468], [-71.090418110610472, 41.518323915343871], [-71.090509451102449, 41.51848405906992], [-71.090479709930236, 41.519764175169797], [-71.090662914854136, 41.520247069579284], [-71.091363190079477, 41.521180296531348], [-71.092032901265085, 41.52179891307641], [-71.092459366420002, 41.521917492192429], [-71.092702431522923, 41.521957800552897], [-71.092946011469536, 41.522124610985728], [-71.093768648047956, 41.522965524532793], [-71.094804320790729, 41.523541496236142], [-71.095291340628222, 41.524451427922848], [-71.09553515426299, 41.525438192478902], [-71.095779327255329, 41.525875197268896], [-71.09681441789769, 41.526649227821039], [-71.097332027363976, 41.526855897429265], [-71.098306239473303, 41.527522825430545], [-71.098824870082296, 41.528161665114077], [-71.098976896649688, 41.528528559245643], [-71.098916502962609, 41.529142301847813], [-71.098825050140277, 41.529396330668305], [-71.098094193153898, 41.529391494338746], [-71.096907132497421, 41.529052980942758], [-71.096632757505873, 41.528823584610478], [-71.096267045889704, 41.528181857715239], [-71.095993080479246, 41.527907443218098], [-71.095506599640444, 41.527798747712069], [-71.094713749574282, 41.527065546473906], [-71.094135473014276, 41.526923293923979], [-71.093952808813867, 41.526763996957818], [-71.093495991703577, 41.525871544381729], [-71.093130644492675, 41.525481999535685]]], [[[-71.05102918533855, 41.526996775631062], [-71.05042060924572, 41.526746766769612], [-71.050207484052407, 41.526948504205137], [-71.049751311278669, 41.527551649892459], [-71.049294221160139, 41.527568383294728], [-71.049051161511969, 41.527068256281169], [-71.049568509287141, 41.5253472846751], [-71.049295634373053, 41.524027709013907], [-71.048443284553528, 41.523403610693485], [-71.048473785205502, 41.522628338921862], [-71.048961289574876, 41.521808695602502], [-71.049417526942207, 41.521413177401058], [-71.049752098921189, 41.521299168627053], [-71.050148249482916, 41.521372768596983], [-71.050300033512883, 41.521595669846604], [-71.050452569220283, 41.522241114432013], [-71.050787597614658, 41.522694873582928], [-71.051578665084563, 41.523158357627423], [-71.05176126178047, 41.523362200892166], [-71.051973371482504, 41.524160399988965], [-71.052156157545667, 41.524526398806671], [-71.05328278429954, 41.525307942236211], [-71.053464807678381, 41.525647375195177], [-71.053464884613092, 41.526358662570473], [-71.053221914478812, 41.5269761660659], [-71.053130288891381, 41.527590303414613], [-71.052277684473452, 41.527659512813088], [-71.05102918533855, 41.526996775631062]]], [[[-70.914656204346443, 41.641190997511856], [-70.914290196771518, 41.641143013639976], [-70.912826834872845, 41.641689736074191], [-70.911881573256565, 41.641849709309106], [-70.911515572091929, 41.641278869766523], [-70.911180724723266, 41.640636250257799], [-70.91279675834754, 41.640140938375971], [-70.914351434106464, 41.639448916175617], [-70.915601604102463, 41.639266270125368], [-70.916242249127222, 41.639363560029878], [-70.916699635860297, 41.639616841412327], [-70.917797290648906, 41.640643310301691], [-70.918040630245898, 41.640981565710184], [-70.91801033535026, 41.641765365398605], [-70.9174919735282, 41.642287718722137], [-70.916820946805174, 41.642451928688047], [-70.915540797147386, 41.642427978731696], [-70.915144326696847, 41.642218854296637], [-70.914930954917793, 41.641781075497356], [-70.914930446830326, 41.641600368156752], [-70.914656204346443, 41.641190997511856]]], [[[-71.059310042751861, 41.524389454367906], [-71.059918518307697, 41.524324288065067], [-71.060344766670994, 41.524415976288829], [-71.060618988751258, 41.524960677342982], [-71.060618629425591, 41.525537448471198], [-71.059583984543949, 41.526699948867027], [-71.059066505940805, 41.527502144098456], [-71.058396266507657, 41.52915395554637], [-71.058335268879787, 41.530911677403651], [-71.058427241120498, 41.531162426241025], [-71.058305187444589, 41.531921047636565], [-71.058153016453005, 41.532076938554127], [-71.057909455743854, 41.532036554328343], [-71.057757536333156, 41.531895325811632], [-71.057361429059341, 41.531388407973935], [-71.056448717645154, 41.531098439618923], [-71.056448151253207, 41.530314581082536], [-71.056569660248144, 41.530087714087088], [-71.05708731978072, 41.529717705054232], [-71.056904132880447, 41.529126171725558], [-71.056844111579125, 41.52883052821737], [-71.057270106123553, 41.528164751540793], [-71.057331912274776, 41.527803136619021], [-71.057209557455607, 41.527598456995463], [-71.057209132335672, 41.526931556307439], [-71.057696819555346, 41.526247561114666], [-71.058305412420822, 41.525768236804694], [-71.05891419821333, 41.524685036521134], [-71.059310042751861, 41.524389454367906]]], [[[-71.054681346821511, 41.539670813487803], [-71.054985615364103, 41.539584221146121], [-71.055289842846648, 41.539624308991989], [-71.056508138234705, 41.540935682401638], [-71.05684316396939, 41.541479459706402], [-71.056842838845199, 41.542254311333956], [-71.0565989420639, 41.54267265837872], [-71.056112445303967, 41.54461833372055], [-71.05583787925454, 41.544704505164987], [-71.055137712439318, 41.544707886361003], [-71.054741760110176, 41.54448070306929], [-71.054589300043617, 41.543862275447189], [-71.054345718465143, 41.543560237940213], [-71.053706246928897, 41.543265107786844], [-71.053127394873869, 41.542509856842052], [-71.053067416484097, 41.541366788987588], [-71.053432331411557, 41.540747514193022], [-71.054681346821511, 41.539670813487803]]], [[[-71.083446404254218, 41.514341991924987], [-71.0831419024897, 41.51421257228602], [-71.081651366832276, 41.514212129269232], [-71.081163685735163, 41.514049975999178], [-71.081133228739901, 41.513816309794947], [-71.081620427876118, 41.513501359847872], [-71.082472671461943, 41.513251227009746], [-71.083416274185709, 41.513153404221576], [-71.084359491629385, 41.512541825992471], [-71.084694318580063, 41.512427085332561], [-71.085151126490388, 41.512491241298783], [-71.084998949275601, 41.513683123435584], [-71.086490111867462, 41.513565847593661], [-71.086825039148721, 41.513658814345902], [-71.086277116877667, 41.514254477912822], [-71.085790221679176, 41.514525060866731], [-71.085211960150303, 41.515030482453803], [-71.08448146416049, 41.515143146396575], [-71.083873031268155, 41.515126871357019], [-71.083568437917179, 41.514826383861397], [-71.083446404254218, 41.514341991924987]]], [[[-71.059006548586879, 41.511331394213478], [-71.059676468106346, 41.511301312516181], [-71.060163060853114, 41.511419166302701], [-71.060771769677828, 41.511948776355474], [-71.060984894591428, 41.512242218917144], [-71.06101582713697, 41.512727994162908], [-71.060711298860127, 41.512994673591876], [-71.05891474501297, 41.514072011607922], [-71.058367063486145, 41.51407276269299], [-71.057940806624941, 41.513819001455893], [-71.057637113187667, 41.513319737324252], [-71.057576961919082, 41.512176672346683], [-71.057758712426136, 41.511876299496308], [-71.058306466222945, 41.511740587330408], [-71.059006548586879, 41.511331394213478]]], [[[-71.076933721654896, 41.516387650767193], [-71.077269058332647, 41.516291481231505], [-71.077603574662561, 41.516501520710271], [-71.078486519977858, 41.516819390019613], [-71.080282149186715, 41.517985260873914], [-71.081621991206561, 41.518438138068191], [-71.082870231765668, 41.518739852168963], [-71.083570273046107, 41.518988311745616], [-71.083570133587969, 41.519267963318192], [-71.083205174465448, 41.51960768057323], [-71.082535519482079, 41.519953569229713], [-71.081896635301305, 41.520135791533896], [-71.081104887020075, 41.520042205560436], [-71.080648012752221, 41.519834065383684], [-71.080586714048295, 41.519150644595399], [-71.080678518987781, 41.518851613553856], [-71.078913231627723, 41.517712332276872], [-71.077481461632317, 41.51708972270761], [-71.076963932042517, 41.516747277875467], [-71.076933721654896, 41.516387650767193]]], [[[-71.053768522080048, 41.535371954575801], [-71.053890119885267, 41.534549770291882], [-71.054255761884676, 41.53473235977652], [-71.055199246077464, 41.536084895170532], [-71.05577769871195, 41.536633590831968], [-71.056903947547127, 41.537090965245547], [-71.057238065695728, 41.537382095868416], [-71.057238469943528, 41.537913311888168], [-71.056904568739043, 41.538145022971669], [-71.056142502009493, 41.538410444363585], [-71.055716527079454, 41.53873344919252], [-71.055381368582516, 41.538730426355158], [-71.055228730165126, 41.538553177109783], [-71.05507683607037, 41.537889104204282], [-71.054529392592272, 41.537412555749441], [-71.054316177904155, 41.537038067981236], [-71.054011696240423, 41.535917089962659], [-71.053768522080048, 41.535371954575801]]], [[[-71.099953899972093, 41.532556080325719], [-71.100105154398818, 41.53216603662824], [-71.100561755199678, 41.531634720542876], [-71.100926838990276, 41.531502120956752], [-71.101323244719524, 41.531477043284653], [-71.101505574816244, 41.53188788799411], [-71.101870937026703, 41.53225048490301], [-71.102389173481313, 41.532250050437504], [-71.102723778334251, 41.532027842426324], [-71.103392973944167, 41.531952481367405], [-71.103636863696451, 41.532002312871974], [-71.104033032005617, 41.532229325953018], [-71.104033224781176, 41.532508438507122], [-71.103515556075209, 41.53295906294008], [-71.103181279671574, 41.533127883040848], [-71.101598282850404, 41.533165645645362], [-71.100959097103058, 41.533672644519577], [-71.100471998597996, 41.533654634654091], [-71.100136636258114, 41.533534696196057], [-71.099954096094663, 41.533330931799753], [-71.099953899972093, 41.532556080325719]]], [[[-71.057085522363749, 41.54625908511057], [-71.057481374304103, 41.546260628642919], [-71.057725402622196, 41.546310559268029], [-71.058516737454141, 41.546836930370716], [-71.059248395358495, 41.547085122038531], [-71.059370194040056, 41.547289887275262], [-71.059338985616776, 41.547471009341187], [-71.05903439695004, 41.547773699280626], [-71.058425332429195, 41.548117972184848], [-71.058121439648673, 41.548735789917615], [-71.057847147892588, 41.548866895502002], [-71.057511749442142, 41.54889097917291], [-71.057238326926822, 41.548202215496808], [-71.056963843844343, 41.547927704348645], [-71.056446491643655, 41.547729855361005], [-71.056293988048182, 41.547408460123684], [-71.056293619520957, 41.546786667497813], [-71.0565377391992, 41.546511839842786], [-71.057085522363749, 41.54625908511057]]], [[[-71.101476727518119, 41.534041360087762], [-71.101902748631161, 41.533880789928197], [-71.103820564157601, 41.533899924388855], [-71.104094951076306, 41.533921680019816], [-71.104582524558779, 41.534426411099766], [-71.104552601677881, 41.534751067055041], [-71.104338825116031, 41.534926432753231], [-71.104004946812665, 41.535184662549142], [-71.103943747666946, 41.535780397986045], [-71.10363856109268, 41.536029183002043], [-71.103365046020826, 41.536097465446851], [-71.102726224330183, 41.535982686508305], [-71.102421436334041, 41.535799296352103], [-71.102330043728799, 41.535368423569793], [-71.10199504773631, 41.534743749506497], [-71.101263597129034, 41.534477826997993], [-71.101294566189836, 41.534180276397393], [-71.101476727518119, 41.534041360087762]]], [[[-71.107414838312749, 41.535410341951774], [-71.107810139071589, 41.535295201648182], [-71.10838826619316, 41.53563600326612], [-71.108358362576624, 41.535960570200444], [-71.108175466208138, 41.536162520245682], [-71.107689679426841, 41.536396646980442], [-71.105253223570543, 41.536873225291195], [-71.104766347709287, 41.537125883225691], [-71.104157832080219, 41.537767521151409], [-71.103792714853, 41.537765167014129], [-71.103366312622583, 41.537538587765276], [-71.10339635369327, 41.537196015301411], [-71.103944668109094, 41.536717316860241], [-71.104978499938767, 41.536184664003649], [-71.106470536212143, 41.535887054715602], [-71.107414838312749, 41.535410341951774]]], [[[-71.109547272196224, 41.537993268479781], [-71.109820747427591, 41.537853032169821], [-71.112044292698172, 41.538361433052614], [-71.112470327811877, 41.538515949481791], [-71.113049644508024, 41.53934346622259], [-71.11292871846419, 41.539642964117469], [-71.111344716695882, 41.539662852532572], [-71.109821942489461, 41.538699915389742], [-71.109577819824025, 41.538289952155189], [-71.109547272196224, 41.537993268479781]]], [[[-71.062019956399766, 41.515241634571986], [-71.062384302146043, 41.515145080697387], [-71.06281096681505, 41.515290242997182], [-71.063693543856616, 41.515860327819802], [-71.064362995595332, 41.516064310731899], [-71.064849980297382, 41.516272182021204], [-71.065063140627444, 41.516547609724036], [-71.065033155901148, 41.516800136519223], [-71.064637397093179, 41.517005702357899], [-71.06329763064258, 41.517020812938476], [-71.062750129999216, 41.516868434286977], [-71.062141704701489, 41.516410865109613], [-71.061928697142989, 41.516044855978187], [-71.062019956399766, 41.515241634571986]]], [[[-70.918802612159155, 41.638717152922403], [-70.919626466855078, 41.637577887281992], [-70.920388991154425, 41.637601405122069], [-70.920388456850603, 41.638150629973495], [-70.920723629333509, 41.63851419801572], [-70.92075402198931, 41.638855954386841], [-70.920631931111501, 41.639137239140751], [-70.920602161229652, 41.639614825386623], [-70.920480244301487, 41.639797159874583], [-70.919473712764514, 41.640048001450694], [-70.91932150294177, 41.63979854116571], [-70.919108276183024, 41.639540845677068], [-70.918802612159155, 41.638717152922403]]], [[[-70.953419427277453, 41.590429167140613], [-70.953968127086569, 41.590428384073945], [-70.954394006513226, 41.590583493026664], [-70.954911948423032, 41.590997898627258], [-70.955034266386249, 41.591337835055747], [-70.954668699603488, 41.592253918809199], [-70.954151296240141, 41.592253685210778], [-70.95369350839799, 41.591549736101392], [-70.95274926645267, 41.591043775556862], [-70.952718819923106, 41.590747136828014], [-70.952901493522262, 41.590590991953647], [-70.953419427277453, 41.590429167140613]]], [[[-70.909321997616942, 41.624317417776247], [-70.909810357244893, 41.624021120231745], [-70.910327971279699, 41.624039562986461], [-70.910815709373296, 41.62440962458107], [-70.910967591688305, 41.625091274343269], [-70.911030893344986, 41.625436535525843], [-70.910786950415499, 41.625656493230551], [-70.910268488095042, 41.626457928648286], [-70.909933349272279, 41.626598538676994], [-70.909780944015708, 41.625727176005419], [-70.909900925632002, 41.625091414640636], [-70.909840244245189, 41.624840075393116], [-70.909292141668402, 41.624587915032933], [-70.909321997616942, 41.624317417776247]]], [[[-70.858628926348501, 41.624682513077794], [-70.859117007381357, 41.624665637588592], [-70.859483419015547, 41.624731809642228], [-70.859575645263959, 41.625108777173558], [-70.859575492955841, 41.625315863185371], [-70.859972238761799, 41.625912977161668], [-70.860704908544662, 41.626711052817718], [-70.860430597893512, 41.62680576023034], [-70.859637344224538, 41.626845773238863], [-70.859210307743197, 41.626708850499739], [-70.859057597531887, 41.62611653146768], [-70.858661484249993, 41.625457021647662], [-70.858599955539589, 41.625106697662659], [-70.858628926348501, 41.624682513077794]]], [[[-70.91047961276135, 41.636405902915044], [-70.910876482170167, 41.636318462834183], [-70.911760235146673, 41.636574062760403], [-70.912103540340922, 41.636843069312263], [-70.912071461687717, 41.637356116210896], [-70.91142466562313, 41.637552022549833], [-70.910754458599513, 41.637761219474896], [-70.910358108378418, 41.637687134809255], [-70.910083687994188, 41.637484297722303], [-70.909992098368235, 41.637251435997911], [-70.910114380179493, 41.636889039753683], [-70.91047961276135, 41.636405902915044]]], [[[-71.213956654247724, 41.72647391304222], [-71.214566937549321, 41.726290871632578], [-71.21478044457929, 41.726358933365368], [-71.215056491181684, 41.726660163326741], [-71.215087290027981, 41.727596610496519], [-71.21447611297279, 41.727869688060444], [-71.214445627804324, 41.727618052181192], [-71.213560019111185, 41.727202204202825], [-71.213499251853449, 41.726843079407921], [-71.213956654247724, 41.72647391304222]]], [[[-70.997790484375216, 41.54277664124956], [-70.998459344216883, 41.542728907323387], [-70.999069048200184, 41.542889703567447], [-70.999373933439529, 41.543073372693812], [-70.999343549095428, 41.543280953367869], [-70.99852172808427, 41.543394374044894], [-70.998035099332327, 41.543600928633943], [-70.997669947838418, 41.54340015240615], [-70.997516775821509, 41.543141699493667], [-70.997516743201118, 41.542916607580175], [-70.997790484375216, 41.54277664124956]]], [[[-71.033495838781548, 41.479366061941803], [-71.033624789448325, 41.479216861886911], [-71.033892439232417, 41.479273694597161], [-71.034023403089535, 41.479473483050285], [-71.03420002999863, 41.479650319562232], [-71.034216167292911, 41.479868183635617], [-71.034246977595473, 41.480093400902497], [-71.034088590486974, 41.480223843243174], [-71.033859606164597, 41.480332026390741], [-71.033569383186446, 41.480168227701142], [-71.033415141592727, 41.479876686006513], [-71.033306406834555, 41.479567324096777], [-71.033495838781548, 41.479366061941803]]], [[[-70.844959858850373, 41.604478311524439], [-70.845965243689278, 41.604408110301129], [-70.846208725762864, 41.604493966879069], [-70.846270022421436, 41.604682228550054], [-70.845508394983185, 41.604775805868137], [-70.845203882597033, 41.604933328693164], [-70.844928756560407, 41.604973880823195], [-70.844959858850373, 41.604478311524439]]]]}, "type": "Feature", "id": 1, "properties": {"COUNTY": "BRISTOL", "AREA_ACRES": 365988.5, "OBJECTID": 3.0, "FIPS_ID": 25005}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.601517067931312, 41.481967475608485], [-70.600877834234737, 41.481606752183588], [-70.599935793295884, 41.481332041790573], [-70.598931149779148, 41.481354948568253], [-70.59844438214148, 41.481145699185674], [-70.5976224034209, 41.479887066272696], [-70.597347742229545, 41.478746955230704], [-70.596921852540319, 41.478059261130269], [-70.596677632297101, 41.476756868599182], [-70.596676268678777, 41.474541243773047], [-70.596523329447365, 41.472913183320443], [-70.596095855253353, 41.471126355061955], [-70.595975321267034, 41.470921183584153], [-70.595821754219358, 41.468914859323547], [-70.595881571679129, 41.468382389691811], [-70.597218692747035, 41.466436384563821], [-70.597522334569234, 41.465801769018022], [-70.598465085074508, 41.464518275868947], [-70.598707354083288, 41.463947908325515], [-70.599071886749499, 41.463348078108169], [-70.599223334590263, 41.462706666521264], [-70.599527231271296, 41.462162087941508], [-70.600013063554073, 41.461660011032457], [-70.599982427326083, 41.460994012907463], [-70.599647616063905, 41.46030480060017], [-70.599586490010196, 41.459918314189558], [-70.600012528869712, 41.459624565102331], [-70.600102751673177, 41.458388943871746], [-70.600892805758789, 41.458117168665602], [-70.601196432127452, 41.45774311937187], [-70.60116549628566, 41.456644928086931], [-70.601074163625341, 41.456141691541916], [-70.600861209611622, 41.455802353429902], [-70.600618094343901, 41.455616923882403], [-70.599553635036642, 41.455325479443061], [-70.600252885007734, 41.454937646733732], [-70.600252171698585, 41.454612957569651], [-70.599765683117525, 41.453971433385306], [-70.598517706839104, 41.453106138161992], [-70.598092632601251, 41.452967697521309], [-70.59754546758343, 41.45296676480217], [-70.596663759485153, 41.453402018724539], [-70.596238806038997, 41.453858465679154], [-70.59599558535696, 41.454132228731041], [-70.594870740967409, 41.454841322034262], [-70.591557687736639, 41.456030903255737], [-70.587757790579957, 41.457705029702872], [-70.587301351012911, 41.45781894854693], [-70.586967109325983, 41.457571438599487], [-70.586935982971639, 41.457319616121296], [-70.587180042403759, 41.457091439054132], [-70.587818050227881, 41.456884439692921], [-70.589368637013422, 41.456106263263713], [-70.589337990570399, 41.455710381412224], [-70.590006414792882, 41.455602027921366], [-70.59018899300959, 41.455302489587048], [-70.590431686489012, 41.455253744396522], [-70.590979661940594, 41.455435427999113], [-70.591465525898613, 41.455329563823888], [-70.591740136301297, 41.45519049140816], [-70.591891282699066, 41.454684147178313], [-70.592682031177773, 41.45470956646767], [-70.593198397770593, 41.454341742975615], [-70.594201432952246, 41.453292332376044], [-70.595356181626528, 41.452880075771219], [-70.596024910424077, 41.452347961814596], [-70.597180053051858, 41.452007721926925], [-70.597453176769363, 41.451734194535838], [-70.597696029445515, 41.451298263775968], [-70.597726723071347, 41.450928264122517], [-70.597877958498486, 41.450700946504789], [-70.59863827776816, 41.450699701019261], [-70.598698934728787, 41.450428352952947], [-70.598273236055277, 41.449560585283479], [-70.597117526788679, 41.448694297129514], [-70.596934667266027, 41.448345646869107], [-70.596569508382302, 41.448008509366886], [-70.596447711099529, 41.447496562394491], [-70.596234906910553, 41.447337296251177], [-70.595839471454923, 41.447298127011123], [-70.595657670499108, 41.447435608352734], [-70.593893864123402, 41.447892612493206], [-70.593711787939654, 41.448210168365911], [-70.593651566831426, 41.449084784725891], [-70.593500198806481, 41.449744287279792], [-70.593621462745475, 41.450021499096081], [-70.593591791558438, 41.450427611985759], [-70.592892538962204, 41.451112535176051], [-70.590825954227441, 41.452717780151524], [-70.590461043473255, 41.45278580463944], [-70.589518736947738, 41.45253738392784], [-70.589184003068951, 41.452325892464877], [-70.589153868509584, 41.452029058695125], [-70.589882510245772, 41.451731025657701], [-70.590187008492521, 41.451483608873936], [-70.591097792257827, 41.450129060417161], [-70.591189239317472, 41.449722363062378], [-70.592069907907941, 41.447980934444814], [-70.5921309091528, 41.447475578747138], [-70.591978852124939, 41.447252592557412], [-70.591947711109995, 41.447000771588925], [-70.592252461012151, 41.446843391488692], [-70.593133171320744, 41.446677743979627], [-70.593801809014053, 41.44633526695781], [-70.595746969914686, 41.444894405416406], [-70.596537267607218, 41.443982840693138], [-70.598146579115308, 41.442717090291644], [-70.600547141028073, 41.440639407527577], [-70.600698840308112, 41.440385078513792], [-70.600607806316845, 41.439836824288662], [-70.600151057348938, 41.438942345502987], [-70.600242509071393, 41.438581291655055], [-70.601031679960542, 41.437552096156935], [-70.601273900315149, 41.437044662097584], [-70.602124965100231, 41.43626698093901], [-70.602489709175416, 41.435424576936484], [-70.60312628756904, 41.433434155614115], [-70.603246459499417, 41.431306747712924], [-70.603063527451269, 41.430913087340684], [-70.602485539807873, 41.430434722541662], [-70.601725978503552, 41.430210898627365], [-70.600247382095716, 41.429698278356469], [-70.59996244670802, 41.429541867791741], [-70.599749945219173, 41.429680281786666], [-70.599720344240339, 41.429905686235877], [-70.599567655850109, 41.430069966244986], [-70.599568585300517, 41.430592204157875], [-70.600115521123101, 41.43112499134287], [-70.600085349012446, 41.431467983274842], [-70.599630464156249, 41.432338926491454], [-70.598901362080611, 41.433754049461122], [-70.597777247436525, 41.434643253329995], [-70.597321878321623, 41.435144930804263], [-70.595772435487206, 41.43629247252067], [-70.595195067204529, 41.437120102975811], [-70.594709314643907, 41.438577120598744], [-70.593130111612609, 41.439382778730312], [-70.591853484572667, 41.440391088563189], [-70.591336556122513, 41.440983459807633], [-70.591215457185612, 41.441372541779366], [-70.591276852870408, 41.441921106852213], [-70.591216018981086, 41.442101869453417], [-70.589696059754516, 41.44235754187978], [-70.588875531401015, 41.442999236905983], [-70.588754257530539, 41.443298185062218], [-70.588693956045702, 41.443938064302301], [-70.58848081687853, 41.444301642620587], [-70.588146862970092, 41.444594377776902], [-70.587234917580361, 41.445030485048825], [-70.586141304635262, 41.446567569914784], [-70.58556386785385, 41.447116029000242], [-70.584713049888052, 41.448145793070196], [-70.584560925052244, 41.448877220231282], [-70.584713663723477, 41.449361338089631], [-70.584987434901805, 41.449700027650834], [-70.585018001625926, 41.450023877921353], [-70.584683523497105, 41.450316599099935], [-70.583072540369585, 41.45088830051936], [-70.582708354321568, 41.451190409990971], [-70.581613497363435, 41.452331177264824], [-70.581157249409188, 41.453085527648248], [-70.580733226166601, 41.4546223155169], [-70.580672550526799, 41.455875091405787], [-70.580793932189763, 41.456567133230138], [-70.581098537983692, 41.457319186119129], [-70.581980754728747, 41.457955532893969], [-70.582953478905097, 41.458482755879565], [-70.58435298646549, 41.458778863497692], [-70.584900074899906, 41.45866280680675], [-70.585750811488708, 41.458227933534019], [-70.586186918097653, 41.45851678614946], [-70.5872713522118, 41.458531103683654], [-70.587879741680283, 41.458783609721266], [-70.588062634667722, 41.458943281206921], [-70.588214034932378, 41.459238749597951], [-70.588214600150252, 41.459535885963618], [-70.587910749257915, 41.459810315131875], [-70.587598640496779, 41.45982356099173], [-70.587301850585661, 41.459836929307073], [-70.585599506573629, 41.459581275523902], [-70.584991796188717, 41.459625354636948], [-70.584383162197085, 41.459994107494126], [-70.582954121850619, 41.461184593393256], [-70.581799366320595, 41.461848837916278], [-70.58131324340097, 41.462720540265529], [-70.580704979005674, 41.463377405208306], [-70.579063547775675, 41.46466066323616], [-70.577908380718384, 41.465937679051741], [-70.577300264174525, 41.46628839099283], [-70.573773447536453, 41.469119585068917], [-70.572922290466309, 41.469509887228192], [-70.572131117411217, 41.469691960631415], [-70.570185473811378, 41.470565171748447], [-70.567357605158918, 41.471207167594379], [-70.566869802359719, 41.471204775488708], [-70.566201173648025, 41.470745738647366], [-70.564741262292003, 41.470170955628937], [-70.563281162456562, 41.469118938247377], [-70.561456757697357, 41.467270361658649], [-70.560301424023123, 41.465466739134186], [-70.560087909805674, 41.465235366584672], [-70.56005766068229, 41.46502865329488], [-70.559845011101544, 41.464779279368265], [-70.559692788304119, 41.46411504995519], [-70.559419285953908, 41.463632236358599], [-70.559297492354787, 41.463219831576161], [-70.558901889795763, 41.462468673577149], [-70.557624797739663, 41.461044432777008], [-70.557625413643692, 41.460774316781617], [-70.558932456057249, 41.460360272115309], [-70.55908415799648, 41.460520182223704], [-70.559358868882043, 41.461507322953985], [-70.5595711283285, 41.461594621989001], [-70.559966108952167, 41.461571425445491], [-70.560209834017627, 41.461324754384542], [-70.560270422891321, 41.460612227099297], [-70.560422076794453, 41.459835715492176], [-70.560878327538134, 41.459379209283782], [-70.561092143633815, 41.458926276680963], [-70.561091167614492, 41.458052337248681], [-70.560878573419657, 41.457775953549401], [-70.559084732487833, 41.457575327652755], [-70.558719636513445, 41.457733289304286], [-70.55853778806781, 41.458600668798631], [-70.558294661230505, 41.459287998443628], [-70.557807443804336, 41.460042540804096], [-70.557320638313271, 41.460157257727658], [-70.557047245837367, 41.460133554768184], [-70.556044380511722, 41.458787570245768], [-70.555496781165843, 41.457641747977661], [-70.55519271587309, 41.456474902351552], [-70.553945772094522, 41.454618676236656], [-70.554189823401046, 41.454227866524285], [-70.553854858453491, 41.453755150813059], [-70.55327762542035, 41.452952394106575], [-70.553307892412391, 41.452150116908712], [-70.553156075413852, 41.451765096935986], [-70.552822022775786, 41.451418442219811], [-70.55282162491919, 41.450553510979262], [-70.552578512440761, 41.449340976846059], [-70.552609476582433, 41.448556803867554], [-70.552700571785167, 41.448060632320114], [-70.553430090225618, 41.447005960683654], [-70.553490669563232, 41.446752642751889], [-70.553308013139699, 41.446430933980487], [-70.553248096055881, 41.445909280004315], [-70.553064871423487, 41.443777215028426], [-70.552943834609664, 41.443391821609971], [-70.552305643754778, 41.442769711380663], [-70.552305643753812, 41.442364529811982], [-70.55270125798873, 41.441836598707347], [-70.552670627574287, 41.440693370667468], [-70.55294404491282, 41.440077168665489], [-70.553734806674129, 41.440210459493898], [-70.553825393875996, 41.440461617840249], [-70.553703352007332, 41.440850563666643], [-70.553582168956012, 41.441716730292995], [-70.55315666110738, 41.441992301757047], [-70.552974710165032, 41.442337437040081], [-70.552974021219597, 41.442562532134538], [-70.553461184122213, 41.442772073258283], [-70.553460260499122, 41.44315923899476], [-70.553825238089061, 41.444100326330343], [-70.553947334037005, 41.445404679100612], [-70.553794947827953, 41.445748982060834], [-70.553824824324252, 41.44610885258507], [-70.554007689169609, 41.446205461376586], [-70.554341960538409, 41.446137928924387], [-70.554585657190131, 41.444972768752976], [-70.554524895003297, 41.444532235083358], [-70.554372710312634, 41.44432720436248], [-70.554342899430821, 41.443759701579722], [-70.554098886051264, 41.443574253472519], [-70.553977242184871, 41.443278356234913], [-70.554099131826803, 41.442997367122167], [-70.554038114546401, 41.442566375116094], [-70.554342520447918, 41.442039387942835], [-70.554221142448867, 41.441059727001381], [-70.554524652046382, 41.440235598946558], [-70.555041703861548, 41.439706422113836], [-70.555102249985922, 41.439300034744299], [-70.554920386144389, 41.439185427890429], [-70.554493969468808, 41.439272452167209], [-70.554281665575729, 41.439437255551347], [-70.554159597671074, 41.439682137089676], [-70.553855582747545, 41.439704360866244], [-70.553399928604563, 41.439566666490393], [-70.553369316090482, 41.439386870429594], [-70.553855956078678, 41.439200138218169], [-70.554281390282583, 41.439131116202958], [-70.554676633371571, 41.438747780227516], [-70.555011821627502, 41.437851342842677], [-70.555223864947251, 41.434948141080703], [-70.555559022425427, 41.433718553253357], [-70.555589161428543, 41.432889893732543], [-70.557351493557661, 41.432703595601083], [-70.557625629529667, 41.433483642952119], [-70.558233250829417, 41.434376130189975], [-70.558810885047635, 41.434809790143731], [-70.559540048408238, 41.435060572289416], [-70.560087732149825, 41.435089336348312], [-70.560908070025604, 41.434907051958781], [-70.562245412073167, 41.434330612671047], [-70.563065975188991, 41.43423835484699], [-70.56400853609496, 41.434928197176333], [-70.564312262398161, 41.434923952042233], [-70.564251538353844, 41.433853143223942], [-70.564677006894641, 41.43316271574438], [-70.565680013978763, 41.432248077355283], [-70.567047600445889, 41.430374173668731], [-70.567108517827151, 41.429985791881663], [-70.566773834754343, 41.429504113019284], [-70.566712886513301, 41.429252669316412], [-70.567016720011907, 41.429230950260575], [-70.567624897309813, 41.428979341192921], [-70.567989623188268, 41.428685749209734], [-70.568019711978096, 41.4281542198623], [-70.567776676111677, 41.427878138864131], [-70.567168905460505, 41.427427439203484], [-70.566347864728883, 41.427123005281295], [-70.565740031112867, 41.42673532539542], [-70.564555073819562, 41.426850525933482], [-70.564190423080333, 41.426810328731733], [-70.564038788080083, 41.426650425746274], [-70.564190058962041, 41.426351121069594], [-70.564403162517365, 41.426167758155593], [-70.564797704967589, 41.425568286494617], [-70.564554711907448, 41.424905026287149], [-70.564554688474985, 41.423625916264392], [-70.564463785907989, 41.423419784338428], [-70.564463323413122, 41.422942567952596], [-70.56492001130988, 41.422666042570079], [-70.566104487368946, 41.421731560211001], [-70.566407997386918, 41.421088023890228], [-70.566681551872179, 41.420858964429343], [-70.567380902250008, 41.420633409616542], [-70.568444347853244, 41.420582550743035], [-70.569052295700558, 41.420447985028773], [-70.570723203969123, 41.419650800013748], [-70.57169548409567, 41.418664908040199], [-70.571755964627286, 41.418411580764591], [-70.570601287277697, 41.417355400550015], [-70.570419042660419, 41.417087747296648], [-70.570601504237672, 41.41667109831176], [-70.570905265561592, 41.416261656758103], [-70.571360662500481, 41.416102237589456], [-70.571755686405879, 41.415799878772368], [-70.571756325303227, 41.415184820899292], [-70.572201299070215, 41.414860359820601], [-70.572089881946752, 41.414525219034985], [-70.571664181224691, 41.41426961996013], [-70.571391138793473, 41.414408565157757], [-70.571117975842398, 41.415051822670613], [-70.571239108220681, 41.415302136387467], [-70.571094829672774, 41.415667866585871], [-70.570828157228377, 41.415862057236396], [-70.570624460779982, 41.416010663368347], [-70.569720257927187, 41.415395473087358], [-70.569051207755976, 41.415160916112725], [-70.568595073767099, 41.41514032993264], [-70.567988227017125, 41.415391953831822], [-70.567805572472594, 41.415664443013405], [-70.567805475549676, 41.416033606330991], [-70.567927554427456, 41.41637451175081], [-70.568443827399634, 41.417015790474515], [-70.568473849781086, 41.417312629151468], [-70.56826136901492, 41.417612516207441], [-70.567562452510202, 41.418090732046352], [-70.567410532711676, 41.418363023430622], [-70.567046395279746, 41.418619971451328], [-70.566256351340144, 41.418865035682259], [-70.564919055454396, 41.418937294748552], [-70.564493496353776, 41.419123406487273], [-70.563855496849939, 41.419555371982177], [-70.563034888587737, 41.419917753823796], [-70.562305746788581, 41.420495362313389], [-70.562032563281747, 41.420976436695867], [-70.562032339512641, 41.421867831863004], [-70.561788829710011, 41.42197953663706], [-70.5608778300045, 41.422000713043786], [-70.559965586209884, 41.422139464251444], [-70.559540680564055, 41.422000878329406], [-70.557443515777919, 41.420399286912478], [-70.55704844993312, 41.419810198606946], [-70.557139615886015, 41.419556593740715], [-70.558020912904112, 41.418850895530099], [-70.558051094114319, 41.418481441546902], [-70.556683982251243, 41.417472873538188], [-70.556288421881618, 41.416992366806255], [-70.556259003752871, 41.416397856908375], [-70.556410192573466, 41.416080553986923], [-70.557686873715014, 41.415000612590042], [-70.558082201707677, 41.414779339637732], [-70.559176125601809, 41.414683171534655], [-70.55950966947708, 41.414498567182669], [-70.559723231210867, 41.414135136995291], [-70.560209150836741, 41.413795305371814], [-70.560117565198823, 41.413490660313506], [-70.559236476478617, 41.413421400245923], [-70.557930394630901, 41.412718409532744], [-70.556927529891354, 41.412056735183711], [-70.556654372453039, 41.412006559791436], [-70.555650612956299, 41.412578416534366], [-70.554830623507158, 41.41237349059157], [-70.553828217043019, 41.41175627217909], [-70.553220609150088, 41.411043750880999], [-70.553068624325007, 41.410676737518216], [-70.55315983360974, 41.410477160438724], [-70.553584693590835, 41.410174573761765], [-70.55385878709501, 41.40973845756433], [-70.553858932166378, 41.409144193761747], [-70.553585537411934, 41.408778418135377], [-70.553099320135544, 41.408343783328831], [-70.55243092080886, 41.408001174489506], [-70.551398328784529, 41.407870978919838], [-70.550516131793728, 41.407955249615085], [-70.549908975254368, 41.40809818552259], [-70.549605339592645, 41.408436080726553], [-70.548177345950094, 41.408734190910771], [-70.547691222303015, 41.408416675699463], [-70.547204556250549, 41.408297242300932], [-70.546718836964132, 41.407961087931412], [-70.546718914394603, 41.407681963875632], [-70.547327007954678, 41.407250383980127], [-70.547478301814422, 41.406879159992926], [-70.547661556666668, 41.406336497602943], [-70.54808660148862, 41.406150445212354], [-70.548117330707328, 41.405924972629563], [-70.547722264166168, 41.405371866959449], [-70.547053807337576, 41.405714071315828], [-70.546810644221082, 41.405554995483314], [-70.546688612639002, 41.40518759501726], [-70.54678005172606, 41.404618860117736], [-70.547175169199789, 41.404208539394624], [-70.546810515631847, 41.403952278679697], [-70.545139602571226, 41.403244897298094], [-70.544137229910575, 41.402898252742929], [-70.543711895165458, 41.402903667032092], [-70.542041144420907, 41.403295812428027], [-70.540400118421132, 41.403498020095448], [-70.538486402964935, 41.403541489903851], [-70.538061390759225, 41.403772526763824], [-70.537969869925121, 41.403926528874187], [-70.537787466916754, 41.40427163492258], [-70.537361985590152, 41.404637185485683], [-70.5367239713906, 41.404915929445188], [-70.536419923894513, 41.405947096795607], [-70.53736178145634, 41.406222433714674], [-70.537908171408631, 41.406791538025495], [-70.538120673384853, 41.407176013632267], [-70.538515640112621, 41.407179906635186], [-70.538606776311468, 41.406764243817243], [-70.538515842381798, 41.406423569893853], [-70.538516385348871, 41.406035860901135], [-70.538789616453002, 41.405806865957217], [-70.539154313459662, 41.405811040211567], [-70.539701092994832, 41.406083006062772], [-70.540429711652465, 41.406199479325643], [-70.540825331221257, 41.406383450433609], [-70.541098380941818, 41.406766812427918], [-70.54103698669249, 41.408299228531867], [-70.541401806991161, 41.408600529447256], [-70.542100109971656, 41.408915364081274], [-70.54310304250302, 41.409631286014744], [-70.544622135021626, 41.41029518748077], [-70.544895116463394, 41.410516917236627], [-70.547477132578038, 41.413859518847765], [-70.548935818156551, 41.415001777628554], [-70.549056832572518, 41.415189626858023], [-70.549057216193233, 41.415486762881763], [-70.548661725584552, 41.415869985698187], [-70.54832768254208, 41.415964604044632], [-70.547568214219282, 41.41583099566995], [-70.547264602578906, 41.415511051184154], [-70.546687310068663, 41.415095431742031], [-70.545623602019546, 41.413929459325743], [-70.543406651673777, 41.412284365596548], [-70.538302462727998, 41.409236058989599], [-70.536146031019868, 41.408211532398624], [-70.534778559336715, 41.407661898814311], [-70.528581824159417, 41.405096805811048], [-70.526272783861529, 41.404541781922852], [-70.521290141217264, 41.403968776016953], [-70.518677453248358, 41.403921952747496], [-70.51758439960598, 41.403765622711632], [-70.51734167589801, 41.403606486771714], [-70.516551262086878, 41.403265937340045], [-70.516035333650663, 41.402939562154408], [-70.516157383674596, 41.402388583515936], [-70.516521891162412, 41.40218519563512], [-70.517221091772072, 41.402257083438364], [-70.517220126922552, 41.402734289983592], [-70.517494014084605, 41.402740087318563], [-70.517737252241716, 41.402646483597536], [-70.518132513928506, 41.402191243721774], [-70.518071538881429, 41.401822719750008], [-70.517799000027665, 41.401564821961507], [-70.516188226658784, 41.401226157874518], [-70.515489858310616, 41.400929169420692], [-70.514852039793254, 41.40021680583736], [-70.515004313024377, 41.400034627358892], [-70.515399924005791, 41.399876623979914], [-70.515642659554061, 41.399323813659528], [-70.516251010426828, 41.398712320857292], [-70.516159755402754, 41.398479133668992], [-70.515825977302555, 41.398114361210808], [-70.514672182555472, 41.39742677543672], [-70.514156020197689, 41.39660516647568], [-70.513366841708105, 41.396237592672854], [-70.512668013098576, 41.396192695914515], [-70.510815003764222, 41.396577209380347], [-70.509538614029694, 41.396765225374672], [-70.508626858434582, 41.397128126237909], [-70.508323042956846, 41.397033175363482], [-70.507624394239841, 41.397123309833766], [-70.507442118580158, 41.397017535971003], [-70.507199684627622, 41.396579884777374], [-70.50668370389829, 41.396162884920713], [-70.506106650338808, 41.396215719129948], [-70.505892993369571, 41.396623529148158], [-70.505893150904768, 41.397146396388145], [-70.506348314319382, 41.397815520436787], [-70.506347800203869, 41.39799559723776], [-70.507106436880662, 41.39930108598935], [-70.507804978053997, 41.399823229721214], [-70.508594144880135, 41.40014591187208], [-70.509140895728891, 41.400237855087276], [-70.510416514970416, 41.400104400800764], [-70.510963866524847, 41.399916764345384], [-70.51196713306139, 41.399390318289377], [-70.51230102869053, 41.399349920640731], [-70.512544212074005, 41.399508441307148], [-70.512452086735891, 41.399807023153272], [-70.511784180997225, 41.400446699423895], [-70.511418936185791, 41.400604415057821], [-70.509353635315563, 41.40081147379766], [-70.508381486442744, 41.400698340686475], [-70.50698430756394, 41.40023922953479], [-70.506559098656908, 41.399920358910386], [-70.506195322774985, 41.39934883129277], [-70.505801105162561, 41.397994221749393], [-70.505680128842783, 41.397698276701007], [-70.504738982149007, 41.396413685011815], [-70.503980803610261, 41.39472154934677], [-70.503617432848642, 41.393942292939791], [-70.503283760600752, 41.393145288546577], [-70.502373734611368, 41.392004475283194], [-70.502375003841394, 41.390860429781064], [-70.502618200184898, 41.390190598238796], [-70.503012846417121, 41.389969601543797], [-70.503590584082076, 41.389961719887403], [-70.504531317507642, 41.390787110933189], [-70.504561249859009, 41.391363093832332], [-70.504378842138436, 41.391753167313773], [-70.50419586730618, 41.391863479259911], [-70.503922708452322, 41.392299485231995], [-70.50392190075361, 41.392983786865422], [-70.504134255104148, 41.393215257838257], [-70.50519637206169, 41.395255007992603], [-70.505499118325559, 41.395340954128194], [-70.505560852865045, 41.394952610583857], [-70.504924618874185, 41.392898598192936], [-70.504864087244201, 41.392367997124332], [-70.505655647487302, 41.390907287085739], [-70.506110957847639, 41.390721657927841], [-70.506719133326399, 41.390632450563807], [-70.507447260315715, 41.390812161984393], [-70.50787244722126, 41.390788244832947], [-70.508146102135541, 41.390604437702372], [-70.508511252941901, 41.389969427212606], [-70.509149137310416, 41.389627813129621], [-70.509787780517669, 41.388872015587779], [-70.51088111940183, 41.388596230953084], [-70.5110942827651, 41.388340936623877], [-70.511640862520125, 41.388297806253597], [-70.512066436027951, 41.388418572020214], [-70.512734182290885, 41.388022093770516], [-70.513555537098, 41.386723663622057], [-70.513647542455857, 41.386010894044389], [-70.513253449775036, 41.385421567565757], [-70.511644591157207, 41.383704151973404], [-70.511281046162878, 41.382763387073652], [-70.510612903167072, 41.381799160617575], [-70.510006505079971, 41.38132114839518], [-70.507911483055963, 41.380132917445295], [-70.507517222615405, 41.379606597378789], [-70.507305230388283, 41.378897380836669], [-70.506638289391915, 41.377428914162039], [-70.506730054940533, 41.376905863394285], [-70.506761260610148, 41.375923524996594], [-70.506427651296477, 41.375125990725287], [-70.506068073898717, 41.374176329168577], [-70.506037799128222, 41.373699388980036], [-70.506311672306538, 41.372461485160869], [-70.505674730176409, 41.371956709054082], [-70.505492823413263, 41.371499866707971], [-70.505948838757618, 41.371043494112783], [-70.507013153715135, 41.369146856523138], [-70.507043481392131, 41.368615253736273], [-70.506467841815834, 41.366830284122905], [-70.506469029734276, 41.366127348761765], [-70.506773291766194, 41.365456966097284], [-70.507443239989769, 41.362467377023798], [-70.507473943337033, 41.361322962543305], [-70.507353298321519, 41.360792917405867], [-70.506352262470344, 41.359743088346377], [-70.504653117017156, 41.358576724930046], [-70.502559680022742, 41.356901554966548], [-70.501649366273838, 41.356490059100111], [-70.500343804153516, 41.356129090372647], [-70.499463986966234, 41.356032357375042], [-70.498206080481737, 41.355850695447266], [-70.497810744683704, 41.35557653441191], [-70.497689852969231, 41.355137056956849], [-70.498082514032305, 41.35383494654549], [-70.498507144638225, 41.352964771599254], [-70.49887015961356, 41.352482304664683], [-70.499466962788475, 41.352141556095155], [-70.500620952637547, 41.351847233888044], [-70.501228512927455, 41.351343868144518], [-70.502169676971803, 41.351187304880675], [-70.50295949818512, 41.350726595029862], [-70.503141605353292, 41.350472214194419], [-70.503810201136929, 41.350022226158771], [-70.504417715787767, 41.349951037043382], [-70.504599674763369, 41.350137760335841], [-70.504963395389538, 41.350547310470965], [-70.505691336123377, 41.350222809102931], [-70.507877927013112, 41.350274590649157], [-70.508150570188093, 41.3501993653326], [-70.508697550226586, 41.349768542077769], [-70.509092607353509, 41.349286414206063], [-70.509335574871983, 41.349174820132824], [-70.509426844738826, 41.348579102032538], [-70.509214190352651, 41.348491702472636], [-70.504964716667814, 41.348439837980742], [-70.503629201425795, 41.348232251618008], [-70.499470515567708, 41.348367183394792], [-70.493918859601791, 41.349034334244372], [-70.49319076878443, 41.349601868045738], [-70.492280742475344, 41.349632036897304], [-70.491642470974796, 41.349423761604392], [-70.486755210275575, 41.349289535986486], [-70.484994089494194, 41.349492105295994], [-70.482687606755078, 41.349936187978152], [-70.481322046136071, 41.350458027492522], [-70.480472620259491, 41.35052349268117], [-70.480078091345803, 41.350348320862793], [-70.479955842649261, 41.350070344202891], [-70.480349981414761, 41.349750289337585], [-70.480107546010288, 41.349456013444467], [-70.479470203548303, 41.349545441541906], [-70.478559225643579, 41.349890633917916], [-70.478073598046763, 41.350230025782892], [-70.477497083780477, 41.350273261146285], [-70.476373613184947, 41.349846668324453], [-70.475280429232512, 41.349275102980869], [-70.474611684165694, 41.349085633690976], [-70.473853642702579, 41.349041036796052], [-70.472730392774295, 41.349298719106706], [-70.471880629865638, 41.349273535691886], [-70.471151303952013, 41.349390714669383], [-70.469603185987054, 41.34904123008895], [-70.468116287688972, 41.34911439361656], [-70.467174464682287, 41.348676398786125], [-70.466749558214005, 41.348654512542559], [-70.466537335746096, 41.348774130120916], [-70.466628893872482, 41.348980349183876], [-70.467296322673576, 41.349503094688515], [-70.467235570893607, 41.349729353208843], [-70.467023451982755, 41.349939013503018], [-70.466113209098978, 41.350167059999755], [-70.465900050043032, 41.350277663815426], [-70.466052842046452, 41.350851899466825], [-70.466508180484482, 41.351701901563729], [-70.467116267617797, 41.352297759801324], [-70.467510905139036, 41.353067247568667], [-70.468088796770274, 41.354897554877461], [-70.468361842712014, 41.355262998302379], [-70.470276104553108, 41.357076202234531], [-70.471247236710624, 41.357207757552523], [-70.471854666865013, 41.357641510280196], [-70.47261497295608, 41.358649576944998], [-70.473374295638379, 41.360251808575121], [-70.474255633479501, 41.361123108955503], [-70.47471138429681, 41.361396819646828], [-70.476168649926521, 41.361963128799999], [-70.477049589063071, 41.362105073002958], [-70.477718024260199, 41.362375560701722], [-70.478962433368025, 41.362350774505288], [-70.481209784610684, 41.362628267343439], [-70.482303422783971, 41.362902013144442], [-70.486735901264993, 41.363376217768696], [-70.489377792963964, 41.363360394452307], [-70.490531629737191, 41.363426423799787], [-70.494023825939877, 41.363444002384433], [-70.494388392475543, 41.363601480756614], [-70.495208801163258, 41.364545727037338], [-70.495421624933584, 41.364930288114827], [-70.495422155975518, 41.365110373977792], [-70.495634961674, 41.365503938540449], [-70.49590791436141, 41.365842301021985], [-70.496790175344785, 41.366533349984842], [-70.499463257610955, 41.367876638486656], [-70.500849413541332, 41.368665478949559], [-70.501671128633149, 41.369320478935954], [-70.501889399248299, 41.369573346250625], [-70.502218575959205, 41.369827280588503], [-70.502547526033297, 41.370080581671168], [-70.502543306580421, 41.370352376839044], [-70.50206121216732, 41.371016679727752], [-70.501929563514693, 41.372373960976148], [-70.501897697681088, 41.372624713128097], [-70.501946096142532, 41.373064087421284], [-70.502456976751773, 41.374134399137738], [-70.503252349953357, 41.374705327344103], [-70.503755304125363, 41.375125020551664], [-70.504089154743951, 41.375372777566987], [-70.504088984666126, 41.375553397393645], [-70.503724675629329, 41.375828237843933], [-70.502843739940673, 41.375947620882691], [-70.502205475207617, 41.37639724354603], [-70.501780055652873, 41.376565201447818], [-70.501294032344546, 41.376517516331084], [-70.500110680801711, 41.376127822301015], [-70.499745393484673, 41.376195458083309], [-70.499623748204527, 41.376998626128689], [-70.499471907990426, 41.377153685139788], [-70.49871016663684, 41.377470017757595], [-70.498466812744809, 41.377698009487624], [-70.498225369032284, 41.378232695771771], [-70.498195779372381, 41.379647242507403], [-70.498500610467758, 41.380084925162841], [-70.498470302247156, 41.38047237211542], [-70.497864262109161, 41.381479967934652], [-70.497925160587016, 41.382028674353563], [-70.498107419148596, 41.382323459348882], [-70.498593682380516, 41.382596171510933], [-70.499049864763563, 41.382689704910433], [-70.499466735662992, 41.382620815989839], [-70.499861768133158, 41.382372731888907], [-70.500104644129593, 41.381892078737053], [-70.500500817100061, 41.380725047964845], [-70.500774711640304, 41.380217024835723], [-70.500805483959383, 41.379829581492508], [-70.50062286290769, 41.379534707700081], [-70.500259532506746, 41.379260298304338], [-70.499743475390559, 41.379005878399248], [-70.499621519397522, 41.378799958678606], [-70.499652643271233, 41.378574591845542], [-70.500107905533909, 41.378226283799201], [-70.500625896617734, 41.377318655398398], [-70.50108145912516, 41.377042378715046], [-70.501506325953557, 41.37706413401942], [-70.501718618981954, 41.377295609257246], [-70.501778911965815, 41.377546633674548], [-70.502174138730595, 41.377406592357396], [-70.502417512637265, 41.377060909940795], [-70.503268704328434, 41.3765636381546], [-70.503541372500365, 41.376586837301389], [-70.503601834504025, 41.377243584911625], [-70.503297318092535, 41.377824457871512], [-70.503022454907324, 41.379097822876552], [-70.503051429562461, 41.380835861208887], [-70.503536780728638, 41.381892437347311], [-70.504022639808454, 41.382462346433385], [-70.504780718473029, 41.383055895345564], [-70.505023653084436, 41.383611239333348], [-70.505083897511113, 41.384159935683925], [-70.50553895388569, 41.385045699965481], [-70.506054154470917, 41.385777300509012], [-70.507116667925388, 41.38640285829193], [-70.507389922997334, 41.386831865814386], [-70.507420244042763, 41.387020586480119], [-70.507845228974872, 41.387518993237016], [-70.508664745720239, 41.388111973245842], [-70.508695085579845, 41.388570905457605], [-70.508391008209031, 41.388782089897894], [-70.507631059589457, 41.388728702628896], [-70.506082690343192, 41.388298687268083], [-70.505232435314582, 41.387931690215211], [-70.501863572639436, 41.385616098426894], [-70.499464475475918, 41.384638786857423], [-70.498959966120509, 41.384338905083766], [-70.496772040722533, 41.38360201000809], [-70.495496695345381, 41.383492290422296], [-70.49075887810848, 41.383626286622416], [-70.489543694348669, 41.383903040847066], [-70.486598699280734, 41.384958836340012], [-70.484503842311256, 41.386282850610556], [-70.483988121479015, 41.386884290178905], [-70.483047291092987, 41.388373315608895], [-70.482379570094878, 41.38901282119101], [-70.480406425038396, 41.390632109291971], [-70.479192078208825, 41.391341498526387], [-70.47785630854527, 41.392466218582719], [-70.473938484830498, 41.394435377849931], [-70.470962013169327, 41.396058378189984], [-70.46944338447814, 41.397176838165322], [-70.466467998457873, 41.399898775240757], [-70.465435476876792, 41.400524680367795], [-70.464766999285445, 41.400821381690406], [-70.463582108338557, 41.401142528823684], [-70.462185271051624, 41.401250755501096], [-70.46008911197346, 41.401601241021332], [-70.459814883654715, 41.401343816656073], [-70.460240161095143, 41.40111307348014], [-70.462640288350656, 41.400614550114831], [-70.463551320586788, 41.400197444717314], [-70.464979839949507, 41.39974679416423], [-70.465708048971166, 41.399215449582698], [-70.466527639861852, 41.39821383888372], [-70.466952728507124, 41.39718170303059], [-70.467134685354125, 41.395972309258674], [-70.469654459848059, 41.392472400534054], [-70.469957800843886, 41.391757082250912], [-70.469957421065317, 41.390640029286537], [-70.469561512396538, 41.389933567409599], [-70.46925711338119, 41.388830045496277], [-70.469226506877817, 41.388010393284226], [-70.468982191745624, 41.386635583767038], [-70.468648241946269, 41.385676397139711], [-70.467827607389921, 41.384641912512272], [-70.466825392663793, 41.383979435741864], [-70.465913556828468, 41.383459499901832], [-70.464790198307711, 41.383113293376738], [-70.46299734671932, 41.382316324228974], [-70.462025667737919, 41.382040720459536], [-70.460810354850963, 41.38187596447974], [-70.458502122441629, 41.381770300761609], [-70.458319943342147, 41.381673541662067], [-70.458289622655528, 41.381331646601105], [-70.457560306344277, 41.380989532023662], [-70.457530335321508, 41.380692660535829], [-70.458167722270943, 41.380459377016749], [-70.458622323320199, 41.38041745740265], [-70.459503373033556, 41.380595463790556], [-70.459382287425342, 41.380254986117812], [-70.459321252292114, 41.379661324278501], [-70.458956257007813, 41.379566757710919], [-70.458683515991453, 41.379732536898786], [-70.458166613757371, 41.379820074654852], [-70.457711440294347, 41.379573315196907], [-70.457135090193958, 41.379869106508522], [-70.456770486748098, 41.380368898230195], [-70.456679428416265, 41.380874540918271], [-70.456922250399671, 41.380961686640617], [-70.457226749755876, 41.381218857276629], [-70.457317578703936, 41.381515208734584], [-70.45452322721863, 41.382036986020545], [-70.452974193778701, 41.382155485499702], [-70.452396996913336, 41.381811322265193], [-70.452336788826059, 41.381515339980687], [-70.452578806185514, 41.378792120974545], [-70.452275031212977, 41.37811121035805], [-70.452183080185634, 41.376302242280033], [-70.452365081827693, 41.375110880452127], [-70.452672177776691, 41.37426004084454], [-70.452915047101911, 41.374005039359382], [-70.453369974993862, 41.373801070156304], [-70.453279141154965, 41.373594846597214], [-70.453430470949371, 41.373088593332213], [-70.45382595578846, 41.37304776776385], [-70.454098677803231, 41.373161217949416], [-70.454432675401435, 41.373093890431811], [-70.454797521598039, 41.37286432265838], [-70.454797303360891, 41.372378098471138], [-70.454675386491957, 41.371532837302006], [-70.454948771549368, 41.371583172758868], [-70.455434476408058, 41.371991759251628], [-70.455890158174313, 41.372129853346543], [-70.455890166523119, 41.371805705375245], [-70.455738884188932, 41.371420554964104], [-70.455707122280728, 41.370889019409297], [-70.456102112536698, 41.370325943022728], [-70.456102144756215, 41.370073828212547], [-70.455737223217369, 41.369934230915241], [-70.455342375752778, 41.36940780981088], [-70.455342992253279, 41.368722962803055], [-70.454947901648779, 41.368241558585396], [-70.454521974334952, 41.3678780023738], [-70.454461883951311, 41.367347285404577], [-70.454005826145604, 41.366911505869538], [-70.453914671007709, 41.366732832469594], [-70.454066640734041, 41.366523720389083], [-70.454855472004425, 41.365973290528515], [-70.455584590259875, 41.365720610593812], [-70.455948774549881, 41.365698127816806], [-70.456373695777685, 41.365792086626165], [-70.456647585719139, 41.366067525509656], [-70.456708135063224, 41.366409069038831], [-70.456587014957094, 41.366617928649404], [-70.45667757984198, 41.366796594389932], [-70.456981154964197, 41.366775170435716], [-70.457983197959166, 41.365951517535535], [-70.457953164462864, 41.365474563765609], [-70.45749715376337, 41.365219421245612], [-70.45731520951766, 41.365383691399096], [-70.456950745940347, 41.365541327617137], [-70.456556321183754, 41.365402091259291], [-70.45594827550218, 41.364941778159576], [-70.45470302415788, 41.364669168569193], [-70.454187192055684, 41.364279479069133], [-70.453579815942774, 41.364124668669859], [-70.45321502999856, 41.363913121356283], [-70.453154840193577, 41.363734193387693], [-70.453245880284683, 41.363552701945601], [-70.453245967124715, 41.363048472820303], [-70.452729075019988, 41.36270315698625], [-70.452455326102822, 41.361878458996969], [-70.452455930785945, 41.361562780502993], [-70.45282013916551, 41.361288103131592], [-70.45336613008682, 41.361218328119193], [-70.454004006580575, 41.361399263491741], [-70.4559170442664, 41.361744402290689], [-70.456433544117459, 41.362107077763675], [-70.456858533627013, 41.361930372192461], [-70.457009778989445, 41.361514245411307], [-70.457921084009541, 41.361556943233531], [-70.458406980403225, 41.361883851739151], [-70.458801022754173, 41.361698930595644], [-70.458619348970259, 41.361449106524098], [-70.458588480350713, 41.36121525617051], [-70.458983531855282, 41.360849721465272], [-70.4590132085753, 41.359615352130966], [-70.459499176735051, 41.359546076274242], [-70.459529248967513, 41.359275689456808], [-70.459255191425868, 41.359063284691167], [-70.458557471852984, 41.359117015429653], [-70.458374917014979, 41.358885191035768], [-70.458071549417227, 41.358564464686197], [-70.457828382746101, 41.357486776578206], [-70.4569472617153, 41.356714483214887], [-70.45643113826354, 41.356117706719111], [-70.455702151755148, 41.355523466311048], [-70.455065046018447, 41.355224953642249], [-70.454032108850313, 41.355039833786932], [-70.45178507038878, 41.353762345540552], [-70.45132987043614, 41.353786312198785], [-70.451087237434521, 41.35398719652035], [-70.450207603954311, 41.356394394037409], [-70.450208035540371, 41.357421406743406], [-70.450451108766245, 41.357904300031493], [-70.450482153745796, 41.359552339805361], [-70.45081560430917, 41.360422076373254], [-70.451604859659739, 41.36171805663448], [-70.451574845979778, 41.362114589856937], [-70.451301587349818, 41.362586395502802], [-70.451362775482224, 41.362982062721926], [-70.452091888435561, 41.363549319622855], [-70.452212954976972, 41.363754743458735], [-70.452153118041707, 41.364169999529508], [-70.451970967158573, 41.364280324635246], [-70.451697383878809, 41.364148942859742], [-70.451606036281376, 41.363960721402371], [-70.451272037703916, 41.363964921282481], [-70.451333308784925, 41.365314935301377], [-70.452213740799834, 41.365700179217626], [-70.452335878497479, 41.365906153075343], [-70.452335741302136, 41.366779550784969], [-70.452670153385441, 41.367117507757015], [-70.452639541390852, 41.367829630041577], [-70.451758884021444, 41.369038746042634], [-70.45160756704044, 41.369382832936303], [-70.451607962710426, 41.370274244137271], [-70.451972416145324, 41.371035674776152], [-70.452185334107554, 41.371744468548378], [-70.452398056687983, 41.371967037781594], [-70.452428230006063, 41.372543040197925], [-70.452884044190284, 41.372834217631649], [-70.452641256450235, 41.373179800939219], [-70.452155263181197, 41.373339089402265], [-70.452003528778206, 41.373503090776566], [-70.451851910283494, 41.373982327233733], [-70.451787987252317, 41.375108871173815], [-70.450999295681996, 41.376623263878805], [-70.451059514595542, 41.377262033898518], [-70.451363524576777, 41.378176516775873], [-70.45118127565992, 41.380025716505408], [-70.451151400994775, 41.381196516221905], [-70.451060584556004, 41.381882239587419], [-70.451243341555355, 41.382060142981366], [-70.451516383802698, 41.382156044071778], [-70.451789827240873, 41.382476510854971], [-70.451851218764006, 41.382773134707911], [-70.45206335170387, 41.383004703091316], [-70.452701505905594, 41.383203654950442], [-70.452944032006428, 41.383389851811543], [-70.45261007630549, 41.384096468728295], [-70.452033468537039, 41.384653261987978], [-70.4515479293364, 41.385262759334083], [-70.450667627656912, 41.387714984178608], [-70.450484927554086, 41.389815755734425], [-70.450455641342685, 41.390942171328327], [-70.450607401161804, 41.391877125717556], [-70.450607765585104, 41.392930612610897], [-70.450395173519624, 41.393501035494943], [-70.449393282042053, 41.395153009665712], [-70.449059617681598, 41.396661438504729], [-70.449059602420107, 41.397480814877476], [-70.449728041575781, 41.398490435780481], [-70.450670158423932, 41.399540855755248], [-70.450639903048838, 41.400045887654194], [-70.449059910666776, 41.401137668661185], [-70.448816557358256, 41.401393108952007], [-70.448422665733133, 41.402559991460748], [-70.448392621463071, 41.403956525124272], [-70.448270540847702, 41.404137725671568], [-70.448270907739513, 41.404480426756763], [-70.448483559876479, 41.405027151469895], [-70.448696529699092, 41.405898027872993], [-70.44927390382783, 41.406404194661341], [-70.450367754666985, 41.4068854314161], [-70.45033744708374, 41.407093326365477], [-70.449760824860263, 41.407388540541518], [-70.44924419495571, 41.408007827164312], [-70.449092580482954, 41.408297884994084], [-70.449122817988993, 41.408693807578302], [-70.449304513965259, 41.409006676050318], [-70.449608739377936, 41.409191831019569], [-70.449882279999599, 41.409125215008132], [-70.4501252651296, 41.408645115058896], [-70.450458906466395, 41.408325768097257], [-70.450580794280825, 41.407936927823194], [-70.451279665639092, 41.407135277762855], [-70.451552886234282, 41.406699395073709], [-70.451522674989107, 41.406015341314891], [-70.451734930208033, 41.405877741398555], [-70.45203850912732, 41.405918817671932], [-70.453102905872726, 41.40649087706992], [-70.453983662588428, 41.406840089492881], [-70.455776700347187, 41.407727150637164], [-70.455989311777998, 41.407913154659113], [-70.456141508409971, 41.408298943628935], [-70.456110865268329, 41.408668371069737], [-70.455716545722481, 41.409286022421405], [-70.454653041725862, 41.410425412582519], [-70.45437964295094, 41.410843202841079], [-70.454197476334087, 41.411592826598088], [-70.453741795597978, 41.411481740293773], [-70.453498112607875, 41.411088349836902], [-70.453164630312386, 41.410840446639618], [-70.451432629559761, 41.410357925243446], [-70.450915682583542, 41.410454436189305], [-70.450399562395958, 41.410749043615574], [-70.449974110373873, 41.411393939724526], [-70.449731333234936, 41.412072672917972], [-70.449792110215242, 41.413702356425624], [-70.449913981511472, 41.413907790096893], [-70.45036961641307, 41.414154043519176], [-70.45225428259657, 41.414544529257654], [-70.453196108356181, 41.414433929909741], [-70.453985615431378, 41.413856582620539], [-70.454472219166789, 41.413634259719103], [-70.4545020857569, 41.413012079121742], [-70.454714403536528, 41.412739411892176], [-70.454987969054059, 41.412627762982829], [-70.455414022629483, 41.412649069899523], [-70.455777773505957, 41.412941725981433], [-70.456021864979917, 41.413245073771165], [-70.456051835120562, 41.413424802393749], [-70.456264850685358, 41.41388147389732], [-70.456325547067664, 41.414268130465153], [-70.456720991478548, 41.415253763707895], [-70.458362451649919, 41.417088241825383], [-70.459091977249727, 41.417745494961544], [-70.459274688496777, 41.418022429761223], [-70.459760706880445, 41.418412900084682], [-70.461736455547864, 41.41893696369975], [-70.462678764815394, 41.418843757508249], [-70.463742267141058, 41.418497195186646], [-70.464410837870631, 41.418065526791196], [-70.464622489824706, 41.417810303068677], [-70.464683306520257, 41.41758458501026], [-70.465169409468544, 41.416947481465819], [-70.467022708343052, 41.415573255442439], [-70.46744796625525, 41.415117381083661], [-70.467751073904708, 41.414447084708591], [-70.467873247419547, 41.414265323974703], [-70.469513349349668, 41.412983029051489], [-70.470544894041836, 41.411726787602753], [-70.471121875558936, 41.411017371983348], [-70.471183030384637, 41.410791113848028], [-70.471698984092967, 41.410172262920206], [-70.472275729694587, 41.408795904810539], [-70.472517934580708, 41.40727019362614], [-70.472516541522694, 41.40518969090401], [-70.472121376576823, 41.403771920236835], [-70.472059755254278, 41.402511325718251], [-70.47199871971975, 41.40221534695899], [-70.471117080677999, 41.400956311691353], [-70.470964516758741, 41.400544158307227], [-70.470933504704803, 41.399121227037263], [-70.470720668875913, 41.398709606246157], [-70.47065915824804, 41.398070835950548], [-70.470871949818587, 41.397320926276649], [-70.471235808924092, 41.39709066494715], [-70.471479480634727, 41.397114847816084], [-70.471965879660289, 41.397819873024268], [-70.472604573452216, 41.399126761485562], [-70.472667317348865, 41.402395822038351], [-70.472850019313668, 41.40351912084693], [-70.473093333029965, 41.404479634263915], [-70.473277203445065, 41.406719992897045], [-70.473035087156106, 41.408749936627331], [-70.472579984382506, 41.409962446259094], [-70.472064311129117, 41.410698897397502], [-70.471548061700247, 41.411731936495286], [-70.471123328463321, 41.412232941072752], [-70.470789015396534, 41.412868026511951], [-70.469027435446847, 41.41426844889245], [-70.46860255170553, 41.414724422448913], [-70.467873454287471, 41.41568851766533], [-70.466324154998532, 41.416896703853716], [-70.464866604441667, 41.41859076037872], [-70.463833861337491, 41.419144079226776], [-70.462040433426338, 41.419527268389281], [-70.458393611013108, 41.419915827581399], [-70.455203380711907, 41.420794254078316], [-70.451738872985544, 41.421270360708405], [-70.450827559651131, 41.420993512796898], [-70.450431951827554, 41.4207017163559], [-70.449762930293872, 41.41964707448755], [-70.449550118134127, 41.419055329986662], [-70.44936816317076, 41.418003579072995], [-70.449245909783087, 41.417726108079925], [-70.449215338981475, 41.416582837895412], [-70.449124374690356, 41.416403622072977], [-70.448850157575791, 41.414317788818671], [-70.448424968432406, 41.412782507869416], [-70.448059478061268, 41.41051745345959], [-70.447755381903917, 41.405558387743703], [-70.447602683639616, 41.405119097773593], [-70.447115992201205, 41.404576037549752], [-70.447055249837774, 41.401964271259033], [-70.446234493896611, 41.398489504137387], [-70.44623388523614, 41.396471400476877], [-70.446689533916171, 41.394484643179773], [-70.446749776677251, 41.393042290193975], [-70.446871594517859, 41.392635445443389], [-70.446870891190059, 41.391671996434724], [-70.447144477776774, 41.389957001008213], [-70.447600021654551, 41.388519402791445], [-70.447599697795241, 41.388123217887667], [-70.447993983194564, 41.386730700402659], [-70.44851002995388, 41.38412150354862], [-70.44893483421852, 41.38281921798275], [-70.449026308593488, 41.382160514768195], [-70.449268911879841, 41.380418846637333], [-70.449449790358301, 41.375111422987246], [-70.449574649345536, 41.37350651605918], [-70.449208733050497, 41.371439466502686], [-70.449056426433089, 41.366596087994687], [-70.449146616697448, 41.364874347548017], [-70.44929815248922, 41.364305073133778], [-70.44929816500921, 41.362206574439433], [-70.448295482573869, 41.357859532377837], [-70.448203165635448, 41.354402176415775], [-70.448263718908478, 41.353644773319878], [-70.448870460224342, 41.351727401837586], [-70.448901093979217, 41.350745698416134], [-70.448991852506552, 41.350537195709428], [-70.449507534517252, 41.350035501930741], [-70.450387799053075, 41.34872735851112], [-70.451085554181006, 41.348159815383532], [-70.452026940878653, 41.347679522852836], [-70.452845915407352, 41.347443992108992], [-70.455304942086713, 41.347061531527594], [-70.456913499512154, 41.347014509172141], [-70.457459804072059, 41.347079689894876], [-70.458765684659738, 41.347513282490773], [-70.459585280682873, 41.347628868470984], [-70.461285246462111, 41.34722011951159], [-70.462802633019578, 41.347128777036815], [-70.465565102216871, 41.347264358242626], [-70.468418373360137, 41.347579700636736], [-70.471423487003463, 41.347577246416058], [-70.474186994591449, 41.347784658872698], [-70.475218230655202, 41.347645433297885], [-70.479468180698447, 41.347437841887796], [-70.482170026918368, 41.34755617342455], [-70.483202157382209, 41.347714017333054], [-70.483718829317155, 41.347463752769336], [-70.48468949339815, 41.347163534972317], [-70.488301515795271, 41.34693638205772], [-70.490214406460794, 41.346704232305996], [-70.491032456357019, 41.346540450816256], [-70.496165657056224, 41.346330019385668], [-70.607031608356436, 41.347963016387318], [-70.60708211909035, 41.347741648471278], [-70.650866206226667, 41.345421908666815], [-70.650888904918205, 41.346163727116426], [-70.651187290485069, 41.346133371467943], [-70.654495138970958, 41.34606755130352], [-70.655557978359084, 41.345908284272326], [-70.663267718139195, 41.345454574262824], [-70.664633827438252, 41.345290260779798], [-70.668973946951439, 41.345110620425494], [-70.672464922277797, 41.344447404801933], [-70.674923014318466, 41.344375312375369], [-70.678079850193868, 41.344374061105896], [-70.680629791176926, 41.344237774218669], [-70.68330037830205, 41.344243570704307], [-70.684727095331155, 41.344060904716358], [-70.690069108711583, 41.34373910594902], [-70.691890350027251, 41.343505059523189], [-70.696139710822834, 41.343343449227319], [-70.697535873868517, 41.343115296064738], [-70.699113603423712, 41.343119178476826], [-70.702179043398246, 41.342659665311473], [-70.704819221156853, 41.34240416993476], [-70.709827127586607, 41.341717229824731], [-70.712103198559504, 41.341286869668387], [-70.71623038136245, 41.34025253864607], [-70.717322703410204, 41.34007434984165], [-70.718051180004679, 41.339792974793696], [-70.721206792623235, 41.339133237129268], [-70.724272307456914, 41.338628199767889], [-70.72548549495815, 41.338240342507724], [-70.72651758209274, 41.338098838772943], [-70.728611363209083, 41.337617291525], [-70.733253867070815, 41.336222912928633], [-70.739533917148563, 41.334002551151883], [-70.74469014140027, 41.331573384794758], [-70.747541297155053, 41.329944692024675], [-70.748238287808604, 41.329402886719166], [-70.748541705097622, 41.328920950241589], [-70.748782522460147, 41.327611422713588], [-70.749055346876631, 41.326904728293293], [-70.749466116067637, 41.326474733330677], [-70.750589610015396, 41.325674093317012], [-70.752289239173663, 41.325306009664388], [-70.753746389947736, 41.324824385053212], [-70.757601183039384, 41.323252119229437], [-70.759634714749509, 41.322058943058451], [-70.760545848973493, 41.321261948146656], [-70.761942260558754, 41.320231674706704], [-70.763612224869675, 41.31916093774111], [-70.764188948119767, 41.31870162806247], [-70.7644014565373, 41.318311347827994], [-70.764886972280593, 41.317628509258874], [-70.765768979487646, 41.315543120621882], [-70.765829793990477, 41.314902539868953], [-70.766042388271842, 41.314377201252867], [-70.766982651459401, 41.313669212274206], [-70.767711921068496, 41.312685236226756], [-70.768015260563388, 41.311959518424757], [-70.767985688848512, 41.310969547765403], [-70.76774374079703, 41.310603871309965], [-70.766379110387732, 41.30934576298506], [-70.766167239501073, 41.30896173072847], [-70.766227991150117, 41.308618812877079], [-70.766653242698155, 41.307882725161193], [-70.767078836784108, 41.306371778021848], [-70.767989805436244, 41.305204942588183], [-70.76868788317968, 41.303699084792207], [-70.769811471762736, 41.302781212076148], [-70.773664489190423, 41.301298438925578], [-70.775665932218388, 41.300979217198801], [-70.776606461674831, 41.301027463880608], [-70.777515919917406, 41.301184629179374], [-70.778153174512084, 41.301436299866644], [-70.779063134791556, 41.302124764516314], [-70.779820701826893, 41.302509366916937], [-70.78042773559703, 41.302742824846455], [-70.781488844103833, 41.303564405637957], [-70.782580893306587, 41.304205018088652], [-70.783611559438299, 41.304666237295528], [-70.786371179475779, 41.306559782909886], [-70.787887964980754, 41.307338077988518], [-70.790587342302231, 41.308349408023048], [-70.792953352367803, 41.309105315959926], [-70.795440523614218, 41.310066222493141], [-70.797958148710251, 41.311503918890011], [-70.79859571524176, 41.311962560469631], [-70.800104577665181, 41.312769813270741], [-70.800476542270971, 41.312969114813377], [-70.802083623007022, 41.314204623591849], [-70.802538719779349, 41.314756115462963], [-70.804480153976669, 41.316355509417136], [-70.807089534653628, 41.318341079378101], [-70.811003395505423, 41.320837666217166], [-70.813461043220528, 41.322852506057956], [-70.815645983801943, 41.324727255872062], [-70.817163310904661, 41.325820287427838], [-70.819470064760239, 41.327242632140276], [-70.820987209020871, 41.328975412885406], [-70.822474179287781, 41.330212789603344], [-70.823263382454499, 41.331245013405201], [-70.825236719062516, 41.333258497820985], [-70.825691928290567, 41.333899302815311], [-70.826480932473416, 41.334697496805632], [-70.82793794977691, 41.335863133348916], [-70.828818833467537, 41.336642048345404], [-70.82951668823965, 41.337504416845576], [-70.830124322744084, 41.338107300625531], [-70.83121677493952, 41.338972443703156], [-70.833737444375856, 41.341535355504369], [-70.8339792312117, 41.34196391370611], [-70.834981910662066, 41.342902861972512], [-70.837501700119716, 41.344780773114437], [-70.838564709942773, 41.346043005000716], [-70.838746483949748, 41.34660742800606], [-70.838777413974526, 41.347201222016821], [-70.838504527030608, 41.347665028086311], [-70.838140787055849, 41.347958943100629], [-70.836835992365323, 41.348601192453984], [-70.836471423923328, 41.348985674509123], [-70.836047179457708, 41.349559963427161], [-70.835471414825392, 41.351937522043706], [-70.835016167605374, 41.352629843721047], [-70.834287737458283, 41.353127518330652], [-70.83380251072451, 41.353378477954266], [-70.833286314443285, 41.353377689749898], [-70.832163268599459, 41.353107711390201], [-70.829795750171186, 41.352973789493319], [-70.827032684630083, 41.353243264111356], [-70.825332507897116, 41.353225310420711], [-70.82299580350508, 41.353036867425445], [-70.821022676190182, 41.353203502937134], [-70.819504720233951, 41.353524643907299], [-70.8179869104506, 41.35404447744834], [-70.815983150120303, 41.354940681980722], [-70.814162740833638, 41.355446840949732], [-70.812310196683342, 41.355737226590712], [-70.808698400381189, 41.355649950615451], [-70.806663910692251, 41.355168684149952], [-70.804964429352168, 41.354573650471586], [-70.804508715031162, 41.354481894701749], [-70.802930548506467, 41.354416454447524], [-70.800288790463242, 41.353800327548115], [-70.798711183832737, 41.353203611785894], [-70.792275764469338, 41.350268859414683], [-70.787541400998691, 41.348604440796734], [-70.785720490441761, 41.34811909789768], [-70.783291832159449, 41.347824089522305], [-70.780650611093904, 41.347819759527773], [-70.778860761463577, 41.348054802626201], [-70.776097869553666, 41.348763678247096], [-70.774974218283248, 41.349168407755108], [-70.772241976951946, 41.35057067498964], [-70.770419549389274, 41.351823970199888], [-70.768901178382933, 41.353243519624854], [-70.768658279473655, 41.353219981401033], [-70.767929854266967, 41.352852871663274], [-70.766959634502953, 41.351894985802822], [-70.766868163553852, 41.351617528128884], [-70.767080580381347, 41.351316737662792], [-70.767809705601806, 41.351368726062134], [-70.768902892640099, 41.35137011967857], [-70.769296783217811, 41.351228603005168], [-70.769327460168583, 41.351021174476912], [-70.768660488778949, 41.350337623957657], [-70.767232991152355, 41.35063001758337], [-70.766748129594333, 41.350565562145725], [-70.767354886381028, 41.348961780696541], [-70.767537955162922, 41.348760921278917], [-70.768024755077562, 41.347636350386878], [-70.768541310472003, 41.34633135490138], [-70.768876065416336, 41.345146733497735], [-70.769665556252903, 41.344485553218476], [-70.769635576739319, 41.344116746316402], [-70.76896781446834, 41.343676833878909], [-70.76884657542918, 41.343453838221762], [-70.768907539259644, 41.34302034142479], [-70.769240790854553, 41.342880144365054], [-70.770030373025435, 41.342786738707211], [-70.770454967117985, 41.342861506393383], [-70.771183933515559, 41.342813891172064], [-70.772488969519017, 41.343064218072222], [-70.775311308460331, 41.343083495267592], [-70.777223465368152, 41.343297136379789], [-70.779226788854501, 41.343617749924753], [-70.781199632256389, 41.343749055835133], [-70.782079442724125, 41.343663432181799], [-70.783779447259036, 41.343276958046758], [-70.784113709826045, 41.343064603877551], [-70.784508079857261, 41.342292776818702], [-70.784842980888513, 41.339477355691024], [-70.784995162496799, 41.338447930353674], [-70.785481340289209, 41.337215779583538], [-70.785420976487003, 41.335424196822899], [-70.785208829514801, 41.33444541243184], [-70.785513024416176, 41.332999984527575], [-70.785391454731041, 41.33213711044629], [-70.785786647559362, 41.3315633670707], [-70.785786812364904, 41.331086170757928], [-70.785513716210517, 41.330874029723653], [-70.784906838725746, 41.330901709262314], [-70.784390834713534, 41.331017746583903], [-70.783965562400084, 41.330988045195504], [-70.783753543611269, 41.330901708231195], [-70.78305576254418, 41.330597375287304], [-70.78224314512893, 41.330501016024222], [-70.780961817357166, 41.330350532363603], [-70.779808538182465, 41.330349950940985], [-70.779322896581462, 41.330186502606182], [-70.778352053403026, 41.329661430374586], [-70.777957843783952, 41.329685386586547], [-70.777927536206008, 41.330352549628266], [-70.777593308278497, 41.330735956102025], [-70.775924239950072, 41.33103195543432], [-70.774528328549025, 41.330990331106804], [-70.773951508522785, 41.331053079116046], [-70.77343610287511, 41.331241100335809], [-70.772677052504321, 41.331721255328603], [-70.772191364672764, 41.331836891839487], [-70.771493755237415, 41.331721566864857], [-70.770340511680672, 41.331631392181805], [-70.769764189226095, 41.331333972597655], [-70.769460742289752, 41.331032639689901], [-70.769369655717995, 41.330754556400564], [-70.76949180542411, 41.330464434262623], [-70.77009837527639, 41.330274768131488], [-70.771008631428643, 41.330143869206907], [-70.771979636719919, 41.330164796670097], [-70.772586756392201, 41.330326806677434], [-70.772950335060571, 41.330276291391286], [-70.773193227501054, 41.330092104722048], [-70.773132760809034, 41.329840782263922], [-70.772921426292967, 41.329663851729187], [-70.771221612604776, 41.329068754511873], [-70.770766584704376, 41.328652191371724], [-70.770767286759892, 41.328147986751048], [-70.770858142184295, 41.327804179635102], [-70.770828530698978, 41.327192365169978], [-70.770221716097879, 41.326048850507767], [-70.769585352818311, 41.325310940076719], [-70.769585637846177, 41.324833744060619], [-70.770405218498183, 41.324676964668413], [-70.770253619375708, 41.324237685348002], [-70.769768321089614, 41.323966063035044], [-70.769343385238969, 41.323963949999047], [-70.768827647603388, 41.324142943953419], [-70.768037859620023, 41.324767468541758], [-70.767400365697966, 41.325515784863576], [-70.766459121758288, 41.326043698301284], [-70.766095442491931, 41.326094191937585], [-70.765731173806316, 41.325955692135658], [-70.765579452640992, 41.325696930454164], [-70.765337056404547, 41.325565432926666], [-70.764305414101386, 41.325401164433579], [-70.763820045429398, 41.325147523493435], [-70.763607628130472, 41.324943557111581], [-70.763153060988728, 41.324941768240066], [-70.76248540200028, 41.325222116530199], [-70.761544178746973, 41.325308265914344], [-70.761331939194264, 41.325474080008988], [-70.762029516133481, 41.325886591350482], [-70.762241405425485, 41.326063546059849], [-70.762210885327264, 41.326297984541007], [-70.76196797576155, 41.326482147573557], [-70.761361599795634, 41.326635126017926], [-70.761209166774663, 41.326980234688435], [-70.760966816495525, 41.327208787721567], [-70.760874691408958, 41.328011769826098], [-70.760510979125385, 41.328188387859129], [-70.759994509283345, 41.328259832506241], [-70.759418421947444, 41.328052398796736], [-70.759023937680738, 41.327779073829916], [-70.758782016015431, 41.327161363085693], [-70.758631311320812, 41.32554249298073], [-70.758509982713946, 41.325084757969314], [-70.758055657613383, 41.324596117802969], [-70.757630884903989, 41.324620883067887], [-70.756720163313844, 41.325013319744947], [-70.755141544895253, 41.325929244028046], [-70.7549897771612, 41.326111110946229], [-70.75504973447913, 41.326317511447087], [-70.755504684485501, 41.326544969231428], [-70.75589922241835, 41.326863325898358], [-70.75611145471666, 41.327391440585913], [-70.756475340317607, 41.327592995168445], [-70.757718725539249, 41.327844259809723], [-70.758326188267716, 41.328095845929795], [-70.75941782612442, 41.328736679521093], [-70.760298023567216, 41.328903333830183], [-70.760661969713425, 41.329059946545222], [-70.761025011534613, 41.329378529534431], [-70.761328639157057, 41.329337744227075], [-70.761663059157087, 41.328945472808442], [-70.762119043344356, 41.328722183149409], [-70.762876840628536, 41.328719829209021], [-70.763635784895484, 41.329086631063966], [-70.764121321820724, 41.32908807899198], [-70.764667004761279, 41.328854197778575], [-70.765122334017008, 41.328739476940456], [-70.765638451501403, 41.329064711384468], [-70.76578940077242, 41.329224426863362], [-70.765698490178707, 41.329748304814615], [-70.765030699682853, 41.33043383600431], [-70.764969339086178, 41.330984376404245], [-70.765211812904539, 41.331278032551772], [-70.765394232610433, 41.331851494787095], [-70.765727258438503, 41.331810348229155], [-70.765878810838814, 41.331645842753183], [-70.766153493468096, 41.330552049217452], [-70.766426650612161, 41.329863323538831], [-70.766427619906835, 41.329223524088562], [-70.766154104080712, 41.328813701108736], [-70.766154798444475, 41.328281944784912], [-70.767884470954002, 41.328336457190787], [-70.767883887671729, 41.328534535639022], [-70.767641633750785, 41.328745726292709], [-70.767580020005653, 41.329016520086071], [-70.767852977301104, 41.329381857481749], [-70.768520978358779, 41.32958759128816], [-70.768732795311863, 41.329773536975026], [-70.76882438968596, 41.330006605372098], [-70.768701724379724, 41.330782925327853], [-70.768063667071729, 41.331576171141542], [-70.767820999459872, 41.332399613972477], [-70.767639148317684, 41.332655043812039], [-70.766515641855307, 41.333203117646086], [-70.765969135764479, 41.333590156390308], [-70.76557385975056, 41.334091801380431], [-70.764875666935708, 41.334642708991296], [-70.764389945882385, 41.335217413060263], [-70.763569535643626, 41.337112498114969], [-70.763417481906927, 41.33787169480572], [-70.763597961865628, 41.339355156579622], [-70.763961578776318, 41.340015876195579], [-70.764113541151858, 41.34052728698952], [-70.76405201911713, 41.34125736122666], [-70.763565674961114, 41.341985752447549], [-70.763413794839025, 41.342447286597107], [-70.763412942275352, 41.343564286616534], [-70.763958356021362, 41.34482556919675], [-70.764383218125403, 41.345305530280612], [-70.764535001502168, 41.345510271617336], [-70.764504691699912, 41.346060384096489], [-70.764109842152138, 41.346381412528892], [-70.762409087996858, 41.347065341741157], [-70.762045316174962, 41.346998773802433], [-70.761317197614147, 41.346541585645916], [-70.761074080184784, 41.346581055854735], [-70.76104334887755, 41.347113247196866], [-70.762013876846751, 41.347999156380503], [-70.7622264358602, 41.348509254386677], [-70.76262054941877, 41.348962550686217], [-70.762984099649813, 41.3491640815962], [-70.763652256724214, 41.349351926792913], [-70.764380672892102, 41.349421940334715], [-70.764715075827212, 41.349560880176703], [-70.765411866891483, 41.350171447211785], [-70.765533116078871, 41.350404080752575], [-70.765381139675071, 41.351270786567831], [-70.765501152461312, 41.352646889120606], [-70.765410306437175, 41.352900655776835], [-70.765531875602917, 41.353105739913296], [-70.766381187532843, 41.353768521750958], [-70.766957870392886, 41.353903982657641], [-70.767443700672757, 41.353770360661144], [-70.767898914923023, 41.353817153948711], [-70.767838142331073, 41.354043565524144], [-70.767291339433839, 41.354357950181551], [-70.766380806754199, 41.355047593220405], [-70.765742365592885, 41.355714864219955], [-70.76549920987803, 41.356079019523271], [-70.765226288189922, 41.356308014754369], [-70.764800444396144, 41.357035094572907], [-70.764283626744373, 41.358547160252193], [-70.763341676010796, 41.359895020822776], [-70.761428024041777, 41.361446326447755], [-70.761032478916249, 41.362317110851528], [-70.760181147513478, 41.363807347168319], [-70.759633750171474, 41.364878549047617], [-70.759572662356092, 41.365357060209341], [-70.759299403503405, 41.365910715341037], [-70.758783190462694, 41.366575867207665], [-70.75674765374572, 41.368129179995947], [-70.756656153704881, 41.3683829360128], [-70.755744687069381, 41.369270573310573], [-70.754771980968272, 41.370437998095426], [-70.753920007184007, 41.371622056877086], [-70.753342927776544, 41.372198456718294], [-70.75066933339815, 41.374022609499562], [-70.748814881260145, 41.374772853163257], [-70.746762995925081, 41.375577396850439], [-70.746307230852693, 41.375799999238396], [-70.74512393726863, 41.376809005553852], [-70.74382040869304, 41.379143546196296], [-70.742515261270199, 41.379964883619941], [-70.742393813938278, 41.380471074864914], [-70.742242817286098, 41.38072559240819], [-70.74136243975164, 41.380973425179299], [-70.741149334424762, 41.381111556275243], [-70.740240369533538, 41.38326025156811], [-70.739453034765177, 41.385713005094743], [-70.739332590165787, 41.386858470651802], [-70.739119925101903, 41.387492350672183], [-70.737876675112503, 41.38937533138084], [-70.737725716501785, 41.390197623561846], [-70.73720968946148, 41.39095272040835], [-70.73623839732312, 41.391723924117009], [-70.735904898509418, 41.392530847388223], [-70.735631858992221, 41.392868358827492], [-70.734659979750646, 41.39324328759816], [-70.734326420314034, 41.393581557522317], [-70.733082398231204, 41.395527509423616], [-70.732839757630543, 41.396170719735323], [-70.732293182009954, 41.396971777897576], [-70.732111240769925, 41.397127571250763], [-70.731686879936262, 41.397836535661796], [-70.73068445731316, 41.39806779307667], [-70.729225727503163, 41.397720773521179], [-70.728223459008888, 41.397789311169021], [-70.726857029116232, 41.398368663049382], [-70.725794042496219, 41.398483494710497], [-70.724366312123422, 41.398937424490192], [-70.723820175253337, 41.399513350093663], [-70.722757088429447, 41.400375470607983], [-70.722483855349267, 41.400839003530066], [-70.72081437641414, 41.402278229961041], [-70.719903521814928, 41.40403896346556], [-70.719508767763301, 41.404540459238731], [-70.71911452792726, 41.404753294254498], [-70.71792914097783, 41.404843619162456], [-70.717443309480103, 41.405093992354566], [-70.716653777023211, 41.40523151669678], [-70.716288788338431, 41.405525578793721], [-70.715651694257033, 41.406282534389632], [-70.714952883865607, 41.406950731214756], [-70.714223720386229, 41.407195532749761], [-70.713859732146005, 41.407660036895699], [-70.712432448030384, 41.408843763324008], [-70.712287193302558, 41.409170763564539], [-70.711795768334412, 41.410564112370665], [-70.711644211573969, 41.413439786937253], [-70.711826461986163, 41.413851270215666], [-70.711766162309942, 41.414680915540863], [-70.711493464003979, 41.415459561808412], [-70.710642737572712, 41.41689533490257], [-70.710430716990558, 41.417358096255391], [-70.709701382198091, 41.418179114943577], [-70.709306739197288, 41.418473488923006], [-70.707817664856719, 41.419045007390416], [-70.707423033289004, 41.419366386569735], [-70.706815013849251, 41.420258015803881], [-70.706208003350767, 41.421743903643417], [-70.70602693485327, 41.422872619143668], [-70.705540585837198, 41.42407797864935], [-70.704477901503182, 41.425183040609888], [-70.704234773576829, 41.425862295696035], [-70.703596753844522, 41.426781790142527], [-70.702198999279815, 41.428225542474614], [-70.701652152332883, 41.42947656036413], [-70.701378875197236, 41.430921466418958], [-70.70150109848187, 41.431973528992636], [-70.701501643983036, 41.433189595332813], [-70.701166805908244, 41.433599793075324], [-70.699130710971602, 41.43437776452901], [-70.697884906048614, 41.435359920929912], [-70.697519877569519, 41.435311147146074], [-70.697246672080169, 41.435152815153337], [-70.697064341618557, 41.434903376839998], [-70.69682105544544, 41.43474462548857], [-70.696486130396309, 41.434623490440927], [-70.69590958485712, 41.434650374904741], [-70.694815450242984, 41.435288095134304], [-70.694055706733735, 41.435497077589595], [-70.693386543950822, 41.436047766574482], [-70.692718431379291, 41.436228669864356], [-70.690833349451566, 41.436544409296921], [-70.689435122875466, 41.437123632638574], [-70.688524063794716, 41.438442935573164], [-70.687398874829427, 41.440549076941693], [-70.686882226969047, 41.441330960873493], [-70.686396339447668, 41.441554282279618], [-70.685544808027444, 41.44176543086882], [-70.684572227453472, 41.441671190802829], [-70.683933982338104, 41.441491561960532], [-70.682596313950299, 41.440853902351847], [-70.681927353252533, 41.44071005618504], [-70.680925001686774, 41.440643751994841], [-70.680043064199509, 41.440368429280412], [-70.679100766605131, 41.440481450711161], [-70.678462357055835, 41.440643937722321], [-70.677610913954055, 41.441052482898904], [-70.675787120101731, 41.441349330119891], [-70.675361894153539, 41.441355781489769], [-70.674054405652029, 41.441699124709345], [-70.672291229887676, 41.442544425423407], [-70.672017471002036, 41.442746724657361], [-70.67101462779614, 41.443985895576184], [-70.670375498658302, 41.444625539226294], [-70.669980285532915, 41.445288935168833], [-70.669736991833673, 41.446409310214221], [-70.669433016297774, 41.446864031771703], [-70.669007284165801, 41.447248620029384], [-70.66800359493746, 41.449244628061784], [-70.666695923132977, 41.450839970512313], [-70.6664520137154, 41.45136598678684], [-70.666208475423247, 41.452351294954639], [-70.665692143776553, 41.453403745601108], [-70.665478685094598, 41.454550173769292], [-70.664596292954059, 41.456625830835868], [-70.664049229375067, 41.457129439479473], [-70.663319213866217, 41.457499968277197], [-70.662619983997899, 41.458023786462419], [-70.661646814372929, 41.458938326277142], [-70.661221155400355, 41.459142808564387], [-70.660034635444461, 41.460150387375265], [-70.659456586188611, 41.460474206627701], [-70.658879458697655, 41.460590309262884], [-70.657753985739092, 41.460498668258275], [-70.656659071880199, 41.460559229655395], [-70.656033140839128, 41.460745275521546], [-70.655351577442019, 41.460947290699188], [-70.654591130003112, 41.460949546747102], [-70.653557702282981, 41.460658212889179], [-70.652493427164856, 41.460700324693526], [-70.650973033647659, 41.460974825034697], [-70.649331358836946, 41.461061023351867], [-70.646472376446468, 41.461381687556809], [-70.645195331571941, 41.461724301361848], [-70.642853336690038, 41.462595220299988], [-70.64242760203895, 41.462682580864886], [-70.64130306362307, 41.462779326332367], [-70.639507798850488, 41.463210331338459], [-70.638473832798653, 41.463549672239644], [-70.63716647806946, 41.46424375032575], [-70.6357365928869, 41.465065726049467], [-70.634823317145077, 41.465745312875143], [-70.633606786362151, 41.466825502861511], [-70.633271413545671, 41.466893260848067], [-70.632603304398714, 41.466506024361756], [-70.632116869247227, 41.465909752057854], [-70.631965251344042, 41.465587780564903], [-70.632664809836285, 41.465082159145609], [-70.633577253082152, 41.464970462626319], [-70.633851454365214, 41.464831285421909], [-70.634581756462794, 41.463713078429954], [-70.634765056369943, 41.463097706562586], [-70.635767830561591, 41.463164419911166], [-70.636315645053557, 41.46261656176646], [-70.636924073777621, 41.462571672862097], [-70.637319343460163, 41.462863347456484], [-70.637714049809205, 41.4629389215985], [-70.637775674884267, 41.462361426774549], [-70.637259114610828, 41.462161661667857], [-70.636802717011733, 41.461609577487074], [-70.635830665825424, 41.4612453466533], [-70.634553447167775, 41.461011046570682], [-70.6342799638835, 41.461240270307833], [-70.634218828630566, 41.461610676280969], [-70.633883882895375, 41.462065609055557], [-70.633517975070632, 41.462818605247953], [-70.633305805992492, 41.462938537079978], [-70.632971061497429, 41.462961279047008], [-70.632697544630659, 41.462775776718829], [-70.632059386576145, 41.461947572080561], [-70.631178562342697, 41.461194578425342], [-70.630418256028634, 41.460664899852929], [-70.62841241625722, 41.459819423837921], [-70.626740737785795, 41.459365907598546], [-70.626345458770288, 41.458948140144969], [-70.625585863803451, 41.458283284763972], [-70.625646803791398, 41.457895504000568], [-70.625708368419581, 41.456732757289693], [-70.625952379269108, 41.456251756389484], [-70.625952740368959, 41.455539906245278], [-70.625771296124242, 41.454723109079758], [-70.625892637665103, 41.454487150558258], [-70.626319156523536, 41.454445418423241], [-70.626987181192149, 41.454606963125123], [-70.627383081116292, 41.454510967471478], [-70.62738370528119, 41.453646592525068], [-70.626321084981527, 41.451860127266791], [-70.62592592119924, 41.451604430229736], [-70.625044570443919, 41.451265565623466], [-70.62474137798506, 41.450900815946675], [-70.62468056612704, 41.450235224122125], [-70.624468583847218, 41.449895939006268], [-70.624296460471299, 41.449573798560408], [-70.623809823217741, 41.449112547336888], [-70.623627635382704, 41.448817970206989], [-70.623504779804875, 41.448315049764517], [-70.622987969336549, 41.44792613352557], [-70.622410531552049, 41.448015666093688], [-70.621984918650341, 41.448291493146122], [-70.621803333382502, 41.448906857794334], [-70.621864157145723, 41.449158269310672], [-70.622138018221747, 41.449478320150767], [-70.622686092167427, 41.449821922154143], [-70.623293703357561, 41.450047759938357], [-70.62350746494667, 41.450414072929291], [-70.623477301897907, 41.450738612496792], [-70.622870016419128, 41.451197619395778], [-70.622748332024997, 41.451397015951663], [-70.622840084224748, 41.45185521708467], [-70.622627828036499, 41.452227779187439], [-70.621502620767572, 41.452567969065925], [-70.621107615915662, 41.452843490091134], [-70.621108710065982, 41.453392740261187], [-70.621260817522568, 41.453760290563224], [-70.621231375248314, 41.454922653995354], [-70.621444364930682, 41.455153365271912], [-70.621566912109785, 41.455521226317344], [-70.621536807595874, 41.455971731442354], [-70.621263701949061, 41.456390010076539], [-70.621233584023472, 41.456867526947377], [-70.622208074860538, 41.458853696716425], [-70.62220843845536, 41.459150830328845], [-70.622422179211995, 41.45963419693841], [-70.624005113113199, 41.461439936781119], [-70.6240355556303, 41.461673734762257], [-70.624218405914348, 41.461896284546398], [-70.62421977056286, 41.463085358428707], [-70.624486216615509, 41.463568047610885], [-70.624972968671685, 41.464029296266823], [-70.624789317178141, 41.464689669951412], [-70.624485280478112, 41.464847143193225], [-70.623735082637594, 41.465190792181644], [-70.62448464567953, 41.46563048314313], [-70.624970959413616, 41.466019696638959], [-70.624483710976705, 41.466225277794848], [-70.623735649670223, 41.466244800685836], [-70.623553701190076, 41.466472455392349], [-70.623463160203869, 41.466861177057979], [-70.623463436899897, 41.467410421105775], [-70.6237072872798, 41.467523774866407], [-70.624482630727684, 41.467593872061279], [-70.624604189016878, 41.468168813285018], [-70.624998740673874, 41.468397497772806], [-70.625485731743879, 41.468264574273071], [-70.625911470682013, 41.467988103593008], [-70.626215813468278, 41.468028715962475], [-70.626214735810649, 41.468740651034004], [-70.626488984899694, 41.468925634402353], [-70.627644183178177, 41.469224904551879], [-70.628008649779048, 41.469246255884848], [-70.628465251947048, 41.469015123029649], [-70.628556450069638, 41.468743454082514], [-70.628344475485932, 41.468098041695747], [-70.629044446439039, 41.467601449252498], [-70.629866367355262, 41.466797402836654], [-70.629927341405136, 41.466246918483215], [-70.630109977639719, 41.466046270881918], [-70.630535765599234, 41.465904932914519], [-70.630930597830655, 41.465998539477127], [-70.631235224548917, 41.466318263260419], [-70.632055752474514, 41.466640315464957], [-70.63217719402607, 41.467007525871921], [-70.630716332531065, 41.468144971334709], [-70.628829594499607, 41.469865375191873], [-70.628190338776008, 41.470252765091168], [-70.627612849217641, 41.470296675257458], [-70.624479019936544, 41.471665347190616], [-70.6232255074721, 41.472259468748526], [-70.622009228150816, 41.473105435826938], [-70.619912393540702, 41.474386925053807], [-70.619638179874613, 41.474408387141523], [-70.619425627107589, 41.47414165998164], [-70.619455615550947, 41.473753641741652], [-70.619607526526664, 41.47329219703343], [-70.619515303548951, 41.473059628762471], [-70.619453833817673, 41.472331000248261], [-70.618997605609096, 41.472400028909405], [-70.618602220798579, 41.472153309104208], [-70.618632900596026, 41.472882869378154], [-70.618421175534905, 41.473479987947591], [-70.618207921194511, 41.473726479521012], [-70.617782911867593, 41.473840225758529], [-70.617084205622547, 41.474372775558699], [-70.61708419907481, 41.474642894778881], [-70.617297145302601, 41.474802121989306], [-70.617600813257553, 41.474806736129224], [-70.618452021206124, 41.474118969410313], [-70.618756436040258, 41.474051554496349], [-70.618969596561598, 41.474273808025281], [-70.618939062930963, 41.47480588574048], [-70.613710362659006, 41.477320023438864], [-70.612190190886523, 41.477918153410585], [-70.608785063645769, 41.479424915653411], [-70.604497854400975, 41.481718678308802], [-70.60355540051944, 41.482380410176702], [-70.603068886338221, 41.482468224584331], [-70.602521167103546, 41.482223665386243], [-70.601517067931312, 41.481967475608485]], [[-70.622464128666834, 41.471549559368754], [-70.622706994085959, 41.471438348600799], [-70.623011238262563, 41.471460960767224], [-70.623345621589124, 41.471573304546446], [-70.623772262780292, 41.4715310417753], [-70.624075051688067, 41.471274516865222], [-70.624136124423018, 41.470913659393275], [-70.623953637021245, 41.470610076681574], [-70.623344947876447, 41.470501286970709], [-70.622858550882185, 41.470589186212301], [-70.622402899448034, 41.47104603382391], [-70.622464128666834, 41.471549559368754], [-70.621977541747498, 41.471484476000796], [-70.621643161279763, 41.47137212818825], [-70.621338635269524, 41.471457557798693], [-70.620853295533635, 41.472445943810136], [-70.620823314918425, 41.472834052652026], [-70.621521851758786, 41.472607613667734], [-70.621521795213866, 41.472148410759431], [-70.621765191037483, 41.471937532140615], [-70.622403336787073, 41.471757890969691], [-70.622464128666834, 41.471549559368754]], [[-70.673264404374976, 41.440845918561301], [-70.673082659885296, 41.440668386483559], [-70.673447026323799, 41.439933354467335], [-70.673994278230012, 41.439565302646976], [-70.674024680692852, 41.439294866971323], [-70.673659562228337, 41.438444128394451], [-70.67362959586815, 41.438039364716516], [-70.673750962868624, 41.437785259082439], [-70.673751321512611, 41.437209012158881], [-70.67308303598108, 41.43652497440425], [-70.673052800564122, 41.436345756518932], [-70.672809427018151, 41.436132929193882], [-70.672474867754531, 41.435633651840682], [-70.671988993422275, 41.435271027800383], [-70.670712502278207, 41.434667977922423], [-70.670347500049829, 41.43464675862144], [-70.66967868449062, 41.435016693284254], [-70.669679491105086, 41.435268808449884], [-70.67004308910181, 41.435722747117474], [-70.66976962652555, 41.436024085780858], [-70.669951679020912, 41.436453644544997], [-70.670954937715095, 41.436592084161887], [-70.671198064192609, 41.436795909798619], [-70.671198219895231, 41.437210090401422], [-70.67056000742042, 41.437876752757788], [-70.670407460009272, 41.438311245149926], [-70.670529195313691, 41.438724064639331], [-70.670559991840591, 41.440164914528907], [-70.670893130285563, 41.441006425579985], [-70.671167194044969, 41.441326897747579], [-70.671714082419854, 41.44150818218764], [-70.673142762266039, 41.441027900516346], [-70.673264404374976, 41.440845918561301]], [[-70.531683118753293, 41.400336000203012], [-70.531591675877891, 41.400174856607585], [-70.531257097255448, 41.400134268878695], [-70.531044993248997, 41.40022699715766], [-70.530315323248388, 41.400336185088626], [-70.529525337058416, 41.400661938994709], [-70.52900960474075, 41.400659770446644], [-70.527763405353852, 41.400036806685996], [-70.526791847431966, 41.399788776195606], [-70.526001716918643, 41.399744798373838], [-70.525454580341588, 41.399968615157135], [-70.525424733648876, 41.400635197856154], [-70.525545976852953, 41.400841082894466], [-70.525667080129949, 41.401757745839454], [-70.525909220590549, 41.401979887098193], [-70.526425684350301, 41.402171160648351], [-70.527306635010632, 41.402213574081337], [-70.528188394942504, 41.402400142303271], [-70.528461496969527, 41.402576352894819], [-70.528704171887654, 41.402969569451642], [-70.528824960892862, 41.403949794569478], [-70.529463195353003, 41.404544398742964], [-70.530374448598735, 41.40491074288996], [-70.530921244665365, 41.405281706023601], [-70.53268305052211, 41.405672681870342], [-70.53338151677869, 41.406122722815311], [-70.534232322853654, 41.406336441630401], [-70.534991496681386, 41.406353085525595], [-70.535265174724856, 41.406214683362329], [-70.53529599697444, 41.406033784642219], [-70.535052449217616, 41.40535298624804], [-70.534657344884508, 41.40468278127566], [-70.534020173892642, 41.404411730856324], [-70.533260798716753, 41.404386164541833], [-70.530891029914258, 41.404660799079103], [-70.530101307452782, 41.404292708403148], [-70.529402417131294, 41.403770701000553], [-70.529402945155809, 41.403221459030519], [-70.530132764739236, 41.401734750183714], [-70.530649863891099, 41.401322109200024], [-70.531651765455834, 41.400678515850245], [-70.531683118753293, 41.400336000203012]]], [[[-70.712543159677011, 41.512243259903329], [-70.71233049045783, 41.512129775507887], [-70.711965040134615, 41.512108149972207], [-70.711659629917833, 41.512220828246072], [-70.710990326009565, 41.512311797816295], [-70.710351805617009, 41.51251948781367], [-70.709590527290729, 41.51265662935046], [-70.709256111869351, 41.512517530381615], [-70.7088906537073, 41.512496435132057], [-70.708556278531717, 41.512771513502379], [-70.708312130999758, 41.512927918824914], [-70.708008524243468, 41.512932553190232], [-70.707460181974128, 41.512472317364171], [-70.706455807952551, 41.512109104279268], [-70.706456479594081, 41.511929031052695], [-70.706790416177853, 41.511563916822055], [-70.707612092420433, 41.511443602984293], [-70.707825410589805, 41.511241964511797], [-70.707794359093754, 41.510206840104246], [-70.707520435734438, 41.509778322860939], [-70.707642197121487, 41.509434233980407], [-70.708311079144153, 41.50867699328532], [-70.708372079364793, 41.508315552404824], [-70.708067057038221, 41.508194122389568], [-70.70712487315312, 41.508289376742056], [-70.706120238638846, 41.508610454268805], [-70.705785830614062, 41.508840504671802], [-70.705816135226314, 41.509227344069281], [-70.704599112110216, 41.510146220990499], [-70.704629609312391, 41.510488042630335], [-70.704537997176161, 41.510939846310045], [-70.704172940771656, 41.51094512003219], [-70.703838203022329, 41.510553893546287], [-70.703716316644275, 41.510096090446851], [-70.703290374564276, 41.509940664622356], [-70.702042732735094, 41.510418648645427], [-70.702011766576419, 41.509932760517195], [-70.701312135020203, 41.509276225939644], [-70.701220866248207, 41.509025725250666], [-70.701311664836325, 41.508862043214485], [-70.70210298046932, 41.508291901008917], [-70.70225489622689, 41.507875368315609], [-70.70277204603002, 41.507399005386404], [-70.703167951441429, 41.507348303193112], [-70.703989756844791, 41.507966336188716], [-70.70505457185304, 41.50822086805784], [-70.706515468446455, 41.50755976329058], [-70.707215030335448, 41.507323799033095], [-70.707215178484574, 41.507098702719489], [-70.706211153164816, 41.5065013878854], [-70.704962347474066, 41.506114480943701], [-70.70450631204119, 41.505770217050227], [-70.704384215563252, 41.505474483371522], [-70.704353401181606, 41.504907562073342], [-70.704810376542554, 41.503369478836632], [-70.705053351967166, 41.503005893464191], [-70.705358531001735, 41.502938251310518], [-70.705449513573328, 41.503260777491015], [-70.705814435085003, 41.503417569119996], [-70.706209871173073, 41.503276814287261], [-70.706484114843903, 41.503047422598506], [-70.707031694154438, 41.50277780294337], [-70.708065880563296, 41.502771520331407], [-70.708675091600099, 41.502573183375993], [-70.710074701018954, 41.50249847989928], [-70.710470155446743, 41.502384181890235], [-70.710743399862324, 41.50202034503284], [-70.710744069530477, 41.5017226811282], [-70.710591866491924, 41.501535872013463], [-70.709374131898727, 41.500878572460614], [-70.708948483874821, 41.500101270957281], [-70.708944067504547, 41.499216607990789], [-70.708821654163629, 41.498848845886705], [-70.708609101886012, 41.498671787568554], [-70.707635011113069, 41.498443222736583], [-70.707422327864663, 41.498122099222961], [-70.707239209785257, 41.497521520823121], [-70.706965614339452, 41.497255164397686], [-70.705474377665112, 41.497088242913279], [-70.705200592708664, 41.496866900307026], [-70.705170474804888, 41.496543089406259], [-70.705413663537527, 41.496314653464857], [-70.706599248508297, 41.495765790310273], [-70.707299249053733, 41.495241705125558], [-70.707937650433919, 41.494574834163274], [-70.70881948902263, 41.49384095809787], [-70.709093188805028, 41.493224389798868], [-70.70994465494617, 41.492581502857277], [-70.710522310949031, 41.491825236328118], [-70.711739282865693, 41.49128446228778], [-70.712377303109662, 41.490797642059682], [-70.713594579133257, 41.490590534363356], [-70.715298011285711, 41.490159519739436], [-70.716118721624355, 41.489633965153324], [-70.716757814727472, 41.488966960469142], [-70.718581871544771, 41.488399420941384], [-70.720224323140144, 41.488140607233269], [-70.721897366404491, 41.488142461738192], [-70.723175616923882, 41.488420798677268], [-70.726186980227013, 41.488438590049739], [-70.727372853297481, 41.488186641803829], [-70.729319347715631, 41.487454813280152], [-70.730748713018897, 41.487045835945523], [-70.733516996680791, 41.486607629639607], [-70.734306478250787, 41.486334472213585], [-70.73597895933807, 41.484841474988663], [-70.737194726527832, 41.48420137984229], [-70.738532494548608, 41.483217153464118], [-70.739687007054826, 41.482164154221685], [-70.742392686362351, 41.480474858704682], [-70.744155398847369, 41.479007197114186], [-70.745250129515966, 41.478278963098376], [-70.746009701963544, 41.477889016518965], [-70.746860977731359, 41.477723059327104], [-70.748077932052695, 41.477767689632486], [-70.748686708246581, 41.478434046830252], [-70.749477002921878, 41.478547865626958], [-70.750084235612889, 41.478682438014758], [-70.751362027189018, 41.478645320152324], [-70.752275138707546, 41.478433000556336], [-70.753674498648166, 41.477907659564423], [-70.755103857754023, 41.478281711806147], [-70.755377017235688, 41.478502929063808], [-70.755620357404197, 41.47907572989569], [-70.755863138981766, 41.479170692848058], [-70.758297340868637, 41.478142822907181], [-70.75936202751187, 41.477388326341043], [-70.760275378649297, 41.476590695067557], [-70.760854449881734, 41.475491501082431], [-70.761037285968143, 41.473795470573876], [-70.760977830581069, 41.472814836092169], [-70.760795448546148, 41.472331402272474], [-70.760369611253523, 41.47203149935558], [-70.759913494351736, 41.471876538973895], [-70.759518665935943, 41.471162118711426], [-70.758941582417918, 41.470774515778665], [-70.757664939337104, 41.470343616220227], [-70.7573004343365, 41.470114963481429], [-70.7569657134528, 41.469588837768256], [-70.756783959597726, 41.46846558906941], [-70.756267875071444, 41.467456027159095], [-70.756329152948894, 41.466455292913409], [-70.75648158627618, 41.465975757985788], [-70.757151723882387, 41.465010527689572], [-70.757699774658292, 41.46435341563371], [-70.758216697436737, 41.463499183647336], [-70.760285984520124, 41.46139572195527], [-70.760864386399788, 41.460945340893105], [-70.761777245476225, 41.46055340913351], [-70.764969304479877, 41.460648428410046], [-70.765638744489863, 41.460575153194995], [-70.766155779579151, 41.460306135115239], [-70.767098341272614, 41.459940283810248], [-70.767554896651646, 41.459662945119902], [-70.767919866287784, 41.459324327580077], [-70.76846764157338, 41.458225975849658], [-70.768741538216958, 41.45796942317471], [-70.769258198098669, 41.457835446031972], [-70.771234922125757, 41.457858883396341], [-70.772481424796723, 41.457587770337419], [-70.773971038984399, 41.45767277080315], [-70.775400020686533, 41.457605379864511], [-70.776677027061908, 41.457153169080399], [-70.777346819644137, 41.456629636873949], [-70.777681504272053, 41.456030135343184], [-70.778532752901498, 41.455386200795132], [-70.779323641026195, 41.454680470357914], [-70.781817568873365, 41.452786408936575], [-70.784068630859721, 41.450175408622677], [-70.785436833465326, 41.449650025484466], [-70.786136165519892, 41.449125458198104], [-70.786774485268495, 41.44845815281883], [-70.788720515511059, 41.447338152287223], [-70.789450792326988, 41.446651150590419], [-70.790271399101655, 41.446332154888623], [-70.795257350063466, 41.446704774799727], [-70.798418525949415, 41.446358109317451], [-70.79923901536452, 41.44636318430581], [-70.800029483257745, 41.446476653621026], [-70.801032634974419, 41.446839573030772], [-70.801640761787112, 41.447225981785714], [-70.803495189062275, 41.449016808112816], [-70.804285439659765, 41.449562427714731], [-70.804801885524384, 41.449788439496139], [-70.805501299831946, 41.449993600711267], [-70.805774773205528, 41.450223791669252], [-70.80571400525362, 41.450431586948554], [-70.804802207681419, 41.451139548989055], [-70.804558552096097, 41.451503878050232], [-70.804558473196266, 41.452008089400117], [-70.805227465788349, 41.452438700355074], [-70.805379608184325, 41.453994495863213], [-70.805531428306779, 41.4542537444677], [-70.805866263558713, 41.454455588926557], [-70.806808743642023, 41.454710579999364], [-70.807051876421781, 41.455004148972641], [-70.807082145676389, 41.455670073630515], [-70.806808717669441, 41.456241852908768], [-70.80680849291403, 41.456971698187232], [-70.807264775998732, 41.457333467768827], [-70.807415991713768, 41.457727766850354], [-70.807385980775138, 41.458412411274722], [-70.807081861947552, 41.458777457285997], [-70.806686458816088, 41.459072165034129], [-70.806078240086038, 41.45923447406318], [-70.804588553796705, 41.459348068790547], [-70.80288641144594, 41.459924483200886], [-70.802369273029825, 41.460382746694101], [-70.802186310561083, 41.460862783298516], [-70.802125970897521, 41.461755497554208], [-70.802794987821144, 41.462213764329093], [-70.802885759050028, 41.46241915862656], [-70.802854932062004, 41.463284413315648], [-70.802946188199925, 41.463445331826591], [-70.803129119795216, 41.463739709642915], [-70.803220388142464, 41.464197212826278], [-70.802916206788041, 41.465003973632818], [-70.802155315916565, 41.465979536012618], [-70.802094764353527, 41.466737192550525], [-70.801729660336008, 41.467012982002345], [-70.800239498470816, 41.467306503694147], [-70.799601155967622, 41.467631741479728], [-70.79893229159191, 41.468317569084149], [-70.798506579743233, 41.468594594291716], [-70.797290003260244, 41.468703571120528], [-70.796650999593396, 41.468911739038901], [-70.796225346458684, 41.468702010845213], [-70.795678045839352, 41.468702034348155], [-70.794491877439683, 41.468864562588841], [-70.793823312172393, 41.468821054599999], [-70.793184149498217, 41.468912152668842], [-70.791968373718021, 41.46943525235659], [-70.790842658097944, 41.470191290519651], [-70.789868957143185, 41.471584658359049], [-70.789777781539385, 41.472045532362934], [-70.788987253055609, 41.472796358209415], [-70.788804213687357, 41.473465453785238], [-70.787769758264773, 41.474607487505999], [-70.787161092674353, 41.475589580128535], [-70.787069657922231, 41.47588838201537], [-70.787130455193804, 41.477193776199464], [-70.78703882938143, 41.47734797572393], [-70.785792070377369, 41.47776385067646], [-70.785214394170055, 41.478151336975422], [-70.784697074781221, 41.478150326442034], [-70.782386064815924, 41.477483491419704], [-70.781108114285686, 41.477367892683716], [-70.780561112504671, 41.477025070367731], [-70.779739639150492, 41.47684878392667], [-70.777428646355858, 41.476911786876371], [-70.776485265862505, 41.477025613418718], [-70.775268900494609, 41.47745849415022], [-70.774051478541011, 41.478216032966344], [-70.772317607556516, 41.479926902554723], [-70.771830037219431, 41.480636786128592], [-70.771129642134539, 41.482215249809997], [-70.770916745796001, 41.482974704766036], [-70.771068225185928, 41.483342044017981], [-70.771463621311185, 41.483750296718554], [-70.771433389114122, 41.48409278813002], [-70.770702776596195, 41.484301933757969], [-70.770429116919757, 41.484549489624079], [-70.770246525435468, 41.485075038913124], [-70.769881129417186, 41.485323624182421], [-70.768785795939849, 41.485394271499061], [-70.768207709805992, 41.48571864295549], [-70.768085618614705, 41.485945742134717], [-70.768146673127589, 41.486314122577582], [-70.768845939089431, 41.486924769829379], [-70.768815298035065, 41.487249250394086], [-70.768298512352771, 41.487572847070879], [-70.767384798833376, 41.487820767446301], [-70.765864622160791, 41.487709105783374], [-70.761726657780656, 41.488042943206224], [-70.760784139367715, 41.488345726631096], [-70.759110171644295, 41.489947662932352], [-70.758135370196342, 41.490511865371097], [-70.757862184400096, 41.490587781597327], [-70.757527407076864, 41.49058442041671], [-70.756736242718219, 41.490263024445895], [-70.756675644385524, 41.489984588762859], [-70.756371839853188, 41.489737242925806], [-70.755550455357721, 41.489740859251619], [-70.755215557381064, 41.489872007832552], [-70.754881138641622, 41.490147310105861], [-70.754942165323456, 41.490470678788832], [-70.75509406654875, 41.490630414119025], [-70.755093577192198, 41.490837499291288], [-70.754057820756117, 41.491727115869942], [-70.753905742322999, 41.492251670152051], [-70.752901661581518, 41.493122396651529], [-70.751104677963454, 41.494627155908951], [-70.750860843384544, 41.495540517066729], [-70.750404341299529, 41.49597986076563], [-70.750008351400197, 41.496661536168652], [-70.749490682761106, 41.497209598591027], [-70.748956474158874, 41.497410360736239], [-70.74863838134435, 41.497288323209119], [-70.748157489821693, 41.497405068622299], [-70.747836580011054, 41.497523322975823], [-70.747671072671693, 41.498002851189227], [-70.747658397175499, 41.499083229203549], [-70.747336430759788, 41.499321316488391], [-70.746374725196247, 41.499555245210459], [-70.746213554851764, 41.499674646080074], [-70.746051700888913, 41.499913253214544], [-70.745890050016271, 41.500032650442861], [-70.745858119135079, 41.500201800706783], [-70.745584843893397, 41.500494319922524], [-70.745067082298007, 41.500952863751827], [-70.744306365292772, 41.501324790899751], [-70.74351585246076, 41.50148051181246], [-70.742390020731904, 41.501389713978732], [-70.741356261076717, 41.502081145675596], [-70.740261551738058, 41.502557237854376], [-70.739591869820629, 41.503035538644184], [-70.73931881617473, 41.503427086810113], [-70.73883179489664, 41.503812697417246], [-70.738162654288303, 41.504182947225232], [-70.736641376841334, 41.504386564241649], [-70.736306988253787, 41.504364685604841], [-70.735606877018313, 41.50409597779128], [-70.734966793931534, 41.503564937574893], [-70.734844553653005, 41.503269866935021], [-70.734296979225149, 41.502926817371495], [-70.731588275860034, 41.502832512226824], [-70.729945452434009, 41.503244555909994], [-70.729063661969249, 41.503366332713618], [-70.728089459305764, 41.503732199271809], [-70.727085907235065, 41.504395615723489], [-70.72662956864751, 41.50496146101117], [-70.726325571233971, 41.505587408813788], [-70.724226451137568, 41.507005773156543], [-70.723496464238622, 41.507692457807842], [-70.723253758604429, 41.508416689095952], [-70.722554020260773, 41.509174975722658], [-70.720545474652909, 41.509934989964812], [-70.720119654145606, 41.510229192263743], [-70.719937758642089, 41.510529572042138], [-70.719785531972562, 41.510892012217695], [-70.719877234920048, 41.511782406412777], [-70.719482365068103, 41.512337301569914], [-70.718904189894488, 41.513021579952877], [-70.718569780578619, 41.513774523486738], [-70.718325428141029, 41.514165590051952], [-70.717534535069333, 41.514618797387506], [-70.715800716964722, 41.51523935230373], [-70.714856765123912, 41.515442165731244], [-70.714095911334098, 41.515327681898363], [-70.712543601637748, 41.514918498744017], [-70.711478040963215, 41.514898224125808], [-70.711508129950346, 41.514555655025852], [-70.711722463143602, 41.514300533156188], [-70.712543409723992, 41.514144162789634], [-70.712908784050086, 41.513841195604478], [-70.712969756632049, 41.513480292377466], [-70.713516629354856, 41.512931515197785], [-70.712543787528517, 41.512865072704443], [-70.712451895865428, 41.512632044585715], [-70.712543159677011, 41.512243259903329]]], [[[-70.855503387915988, 41.439874988543167], [-70.854864279155663, 41.439236589490683], [-70.851823130035882, 41.436745463173928], [-70.849756081840368, 41.436193399298325], [-70.849269510958678, 41.435742130636477], [-70.849025905957632, 41.434728351504752], [-70.848325835610396, 41.43373049589929], [-70.848234943719362, 41.433291041053742], [-70.848325340738313, 41.432695063501185], [-70.85014803532647, 41.430864265332609], [-70.851909231612098, 41.429331920846273], [-70.854157543870954, 41.427935672125066], [-70.855189973201192, 41.42720720696601], [-70.856222660180094, 41.426677356256114], [-70.857528925190778, 41.425764138276591], [-70.8585924328045, 41.425377960361217], [-70.859868628406602, 41.425194927682462], [-70.86075010507578, 41.424874688972984], [-70.861630289015054, 41.424346720314801], [-70.863027568810935, 41.423675882427766], [-70.866947227536258, 41.422378262302331], [-70.871534804004227, 41.421726808633636], [-70.874473373184273, 41.42168796525592], [-70.875902279792157, 41.421619852667888], [-70.876448297930921, 41.421710104492], [-70.877360145607767, 41.421685856380897], [-70.878606672429029, 41.4213415541603], [-70.88006531742451, 41.421326494008554], [-70.88109809323403, 41.421165570863572], [-70.882890918971853, 41.421090893807758], [-70.885078548487357, 41.421208579755323], [-70.887813574593793, 41.422127179966402], [-70.889088973313989, 41.422376532567704], [-70.889666794783423, 41.42235776718352], [-70.893769005341454, 41.421714054057531], [-70.897659145719942, 41.421442719066185], [-70.899937993145087, 41.421377737813195], [-70.90133602000877, 41.421012559634811], [-70.90276427770516, 41.421060612868999], [-70.903159420270143, 41.421351443067145], [-70.90340160059877, 41.421716737493689], [-70.903644909987065, 41.422334230657363], [-70.903887506367582, 41.422951719546276], [-70.904130590645664, 41.42318205185569], [-70.904920340356767, 41.423438845312212], [-70.905406424822345, 41.423845392095018], [-70.906682216584258, 41.424283175487155], [-70.906834333516699, 41.424443247048949], [-70.906682284646678, 41.424715893072431], [-70.905618639434422, 41.425498682222525], [-70.905496734889425, 41.425861071521226], [-70.90519255239191, 41.426271394172716], [-70.904949170679075, 41.427671810986297], [-70.904432368327988, 41.428355627473486], [-70.904249370594869, 41.428854370525066], [-70.904218583587308, 41.429980300449976], [-70.904066567667073, 41.430388538964799], [-70.903883752677658, 41.430544601935381], [-70.902638426165893, 41.431051255426041], [-70.902120506024772, 41.431438474406221], [-70.901969052275788, 41.431810248231386], [-70.90196853813508, 41.432584563305014], [-70.901816688580439, 41.432857204192111], [-70.901724432519941, 41.433705945612054], [-70.901451439179397, 41.433998204827567], [-70.900782226752909, 41.434325014371296], [-70.90026599517185, 41.4342969835402], [-70.899657853548547, 41.434118191842771], [-70.898777073252703, 41.433592389004851], [-70.897227061215645, 41.432924635382726], [-70.896042114976069, 41.432763553585865], [-70.894188210421476, 41.43281218329453], [-70.892213045658693, 41.432538880371425], [-70.890480701982952, 41.432423153383695], [-70.890024173662269, 41.432484893687516], [-70.888382953662486, 41.432989259792464], [-70.887774939781991, 41.432989938696693], [-70.887228588781468, 41.432872729299866], [-70.886499197167652, 41.432254280414853], [-70.885344803459915, 41.431805133312615], [-70.884371566252312, 41.431866298321232], [-70.883247495940864, 41.432235461502714], [-70.883034153511304, 41.432437514060204], [-70.882820764216817, 41.432918050717504], [-70.882364890114445, 41.433258788553708], [-70.881149123300929, 41.433927435088627], [-70.880722962067736, 41.434249781238059], [-70.880236781285234, 41.434455919850691], [-70.878684924826089, 41.435850292133729], [-70.878046641205842, 41.436095023857405], [-70.877256411015324, 41.436215566369412], [-70.87622352265646, 41.436214388506627], [-70.874489643017938, 41.43680132929088], [-70.872831840786162, 41.43819503767682], [-70.872893269735798, 41.438520681974694], [-70.874488720114684, 41.438197440594116], [-70.875614258802898, 41.43779172626175], [-70.87686092831089, 41.437564490479573], [-70.877468719852061, 41.437221187219798], [-70.87844155520915, 41.437124153957974], [-70.879201027102539, 41.436832274048413], [-70.879687380628326, 41.436734275288174], [-70.880356441577803, 41.43675927376696], [-70.8806902830962, 41.436880397564252], [-70.880903438226142, 41.437146631361166], [-70.880842225029937, 41.43742712282485], [-70.880325585373853, 41.437885739596339], [-70.879565117414316, 41.438069487027711], [-70.877528268743688, 41.438174827540763], [-70.875825995355555, 41.438472673158358], [-70.8744883689549, 41.438908732475213], [-70.872980085555753, 41.439113697107835], [-70.872494082355203, 41.439319803887265], [-70.871491420259829, 41.440210119002131], [-70.870428678828389, 41.440830520288948], [-70.86909136195095, 41.441311536792199], [-70.868635820704185, 41.441787368295728], [-70.868089304059296, 41.442156807078923], [-70.866265953914578, 41.442546753238759], [-70.864867592434805, 41.442551261851875], [-70.862831318448329, 41.443232581194025], [-70.862284362686538, 41.443485031338341], [-70.861798566593663, 41.443880082180812], [-70.861555173315594, 41.444289551901853], [-70.861312712676451, 41.444833452109037], [-70.86119274694228, 41.446438862040836], [-70.860432811919978, 41.447081675298762], [-70.859643122137243, 41.447490848867723], [-70.859217995196587, 41.447785569918651], [-70.858063262555802, 41.449227468125983], [-70.857547319361672, 41.449758016882171], [-70.857121148762019, 41.449963317207697], [-70.856513718149401, 41.449937361639876], [-70.855358164125491, 41.449235257801369], [-70.85526630393305, 41.448885210247667], [-70.855691767077488, 41.448428438466244], [-70.855721954686132, 41.447698226758263], [-70.854747329293403, 41.445894727106449], [-70.854716810717449, 41.444931153407985], [-70.855565947319917, 41.44259393188338], [-70.855747351405128, 41.441771121447999], [-70.855746690950227, 41.440537605965837], [-70.855503387915988, 41.439874988543167]]], [[[-70.81994315481893, 41.457980340771002], [-70.818057940237452, 41.457037127042462], [-70.817115084212446, 41.455854208890152], [-70.815990544294337, 41.455214284644057], [-70.815017305329434, 41.45497773210252], [-70.814682370093649, 41.454703884047404], [-70.814469659765052, 41.454292926295317], [-70.813558001907964, 41.453928969877722], [-70.813344687905712, 41.4537431007195], [-70.813192555059018, 41.453331336907247], [-70.812949825101214, 41.453109903948189], [-70.811885917750857, 41.452973437019061], [-70.811673205924237, 41.452832587217053], [-70.811520846624049, 41.452420819727728], [-70.81121693498811, 41.452191628355031], [-70.811125982358973, 41.45182363158834], [-70.811216819201292, 41.451254694839008], [-70.810942965554318, 41.45093510732589], [-70.810486620100392, 41.450770804967718], [-70.810548100869809, 41.450472973783576], [-70.811854964485946, 41.449398209977183], [-70.812037165539934, 41.449035203145158], [-70.811581381401609, 41.448808422350247], [-70.810456627620923, 41.448672742566558], [-70.810061973943917, 41.448192601010398], [-70.810031219171307, 41.447958855873161], [-70.81097332474917, 41.447773255706693], [-70.811520467392683, 41.447548154177305], [-70.81255466898385, 41.447757015331398], [-70.813040851839958, 41.447614191455862], [-70.812949134034966, 41.447183165212827], [-70.812462841430303, 41.446956743243462], [-70.812007019939472, 41.446477948470012], [-70.81188567223758, 41.446110308153138], [-70.812036836021278, 41.445828687224079], [-70.812979257369349, 41.446381381922372], [-70.813223130756413, 41.446728424454193], [-70.813800144994417, 41.446953591365492], [-70.814712252493464, 41.446840439142044], [-70.81513739206477, 41.446563261428118], [-70.815289878210123, 41.446380775742426], [-70.815259845129503, 41.446201059141252], [-70.813983112190357, 41.445834359607261], [-70.813556910486454, 41.445606685264771], [-70.812888449226506, 41.44565323665546], [-70.811976432808692, 41.445424321312871], [-70.811763815121211, 41.445310483477762], [-70.811003592417492, 41.445466762828026], [-70.810365464539672, 41.445441003318351], [-70.810425911665035, 41.445628739593438], [-70.811307908548969, 41.446290836712123], [-70.81139849567866, 41.446469211557734], [-70.810456372114544, 41.447159566436014], [-70.809605034301541, 41.447596110103106], [-70.809423080158197, 41.447779579253314], [-70.809453045696799, 41.448553546375138], [-70.809574526543869, 41.448785593327941], [-70.810091988993136, 41.449174195325178], [-70.810821584974107, 41.449333407985804], [-70.810334667240724, 41.450043996164311], [-70.80829867554813, 41.4496342552385], [-70.807903174970363, 41.449244678926782], [-70.808055452645306, 41.448440310540001], [-70.808298050633468, 41.448049046240214], [-70.808480051021135, 41.447361907841085], [-70.809149675770556, 41.446820181690477], [-70.809331508880916, 41.446447633187738], [-70.809119123420473, 41.445856591656266], [-70.808206511725345, 41.445195370973849], [-70.808085048356418, 41.444918393789578], [-70.808206984389912, 41.44409691315591], [-70.808328727802547, 41.443914789379029], [-70.808784323670906, 41.443610359578315], [-70.809301382574191, 41.443476203731016], [-70.810821314407463, 41.443497249738058], [-70.813739807917017, 41.44496402295885], [-70.815351049996778, 41.445470053644357], [-70.816232202386615, 41.445654367012601], [-70.81747839694026, 41.445562835569923], [-70.818998833509852, 41.445214079967464], [-70.821004736075196, 41.445011102733517], [-70.82355856645276, 41.444943626342024], [-70.824378593241988, 41.444570358682348], [-70.825594275207166, 41.443632833063809], [-70.827752582139993, 41.442490290902711], [-70.829151008178812, 41.441873445012078], [-70.83082212147832, 41.441369478393533], [-70.831338340016117, 41.441298243753472], [-70.835868034096805, 41.441874732965218], [-70.836476390361653, 41.442080880079402], [-70.83690230449821, 41.442353484710523], [-70.837844960021755, 41.443815351812397], [-70.839426807681136, 41.445483521872646], [-70.840247661431377, 41.446290176200989], [-70.840490989177567, 41.446925816255856], [-70.841555378180615, 41.448457508700656], [-70.84155586887961, 41.449214456845709], [-70.840948827334429, 41.450223851463399], [-70.840402114770811, 41.451637592389098], [-70.840341671884005, 41.452115609871854], [-70.840402413286299, 41.452411916643086], [-70.840767754972532, 41.45289241100587], [-70.840859325207774, 41.453170349054275], [-70.84067638929973, 41.453398340812782], [-70.839522018472181, 41.454173237591874], [-70.83915749165196, 41.454566738400118], [-70.838975336537203, 41.455298852302768], [-70.838549472749023, 41.455639141557512], [-70.838063286517652, 41.455781984848983], [-70.836756482864232, 41.455920118579769], [-70.835843871314538, 41.456096562138079], [-70.834840502454568, 41.456599392247988], [-70.833199065767872, 41.457679205639806], [-70.83289531390129, 41.45774719799681], [-70.832074145685041, 41.457724355949523], [-70.830523625601955, 41.457424839868096], [-70.830006865355344, 41.457225955514467], [-70.829216120055236, 41.45669789120786], [-70.828547551075999, 41.456447500744424], [-70.82693564208023, 41.456265701391828], [-70.823955831899795, 41.456259227439006], [-70.822922221116187, 41.456329591391956], [-70.822071483688646, 41.45664927371142], [-70.821585073806773, 41.456990128228249], [-70.82091598939634, 41.457955738880692], [-70.82064251407057, 41.458158396185354], [-70.81994315481893, 41.457980340771002]]], [[[-70.811669082004201, 41.262902489919668], [-70.810940871058904, 41.261752340193397], [-70.810183316855145, 41.261115844207566], [-70.807485872415228, 41.260158469922267], [-70.802726960641721, 41.258990252763354], [-70.801817648396195, 41.258671132817064], [-70.801362584063924, 41.258164747148093], [-70.801362621815755, 41.257732572430548], [-70.801605735742697, 41.257341245856246], [-70.802424461636704, 41.254941789256613], [-70.802878833940312, 41.253979492487403], [-70.803333249573186, 41.252945795494512], [-70.80336461679552, 41.251855378445342], [-70.803182357689124, 41.25134500918039], [-70.803182468383582, 41.250453109660157], [-70.803303467421784, 41.250108836312421], [-70.803454130378569, 41.249878551631049], [-70.803604757541436, 41.249728668998017], [-70.803800451259477, 41.249504153561197], [-70.804154942079066, 41.249256485899529], [-70.804480453266805, 41.249129107418888], [-70.804896615946305, 41.249047213730783], [-70.805290674296586, 41.249045765153717], [-70.805533897514778, 41.249136666067578], [-70.80586075704916, 41.249215835239468], [-70.806194895107922, 41.24929495810877], [-70.806407474432547, 41.249351365166419], [-70.806832014915074, 41.249344425985136], [-70.807339676154285, 41.249273798789424], [-70.807968017710138, 41.249196615412203], [-70.808514005062719, 41.249200587618205], [-70.808984071823943, 41.249153312535725], [-70.809386120323538, 41.24917440760283], [-70.809712162056726, 41.249207912210139], [-70.810106808957173, 41.249240664218675], [-70.810395376420118, 41.249320126699878], [-70.810683483615449, 41.249364651555751], [-70.810934419351796, 41.249415701764782], [-70.81128295523294, 41.249454381006963], [-70.811707793020773, 41.249464262104397], [-70.812026560653251, 41.249497715718597], [-70.812322602641601, 41.249536702438441], [-70.812785988493872, 41.249724095438665], [-70.813037728653796, 41.249912451159773], [-70.813319828832149, 41.250129082099285], [-70.813617498395161, 41.250250728588625], [-70.813856635006729, 41.250312414935159], [-70.814095578804185, 41.250313865343145], [-70.814335119077242, 41.250315318864665], [-70.814574182189233, 41.250316768984518], [-70.817093901182645, 41.250207142192849], [-70.817973269820072, 41.250454379708529], [-70.819397274747587, 41.250711104000061], [-70.821216005417639, 41.250871231890244], [-70.822792028490539, 41.25116141930161], [-70.824216160040478, 41.251625256719755], [-70.825611032714789, 41.252287431298889], [-70.826217105524378, 41.252674239845504], [-70.827399179913144, 41.253610363991491], [-70.827914918658649, 41.254115383693602], [-70.829157908427277, 41.255095699118115], [-70.830188625621233, 41.255691549009342], [-70.83146155336739, 41.256724957569382], [-70.832189634749938, 41.257434334752546], [-70.832432164384258, 41.257817340762699], [-70.832492549873919, 41.258483424954704], [-70.83225065268519, 41.25898223727161], [-70.831705250654025, 41.259396511822438], [-70.830916933646193, 41.259624861968369], [-70.829371523100249, 41.25974004364199], [-70.824885313305913, 41.259487166872724], [-70.822459755525074, 41.259516501377064], [-70.820490148040065, 41.259881119850398], [-70.818458776433914, 41.260453585784965], [-70.817853175448448, 41.261021663433468], [-70.817458874875967, 41.261432910188475], [-70.817458659559861, 41.261621985214376], [-70.817246584056122, 41.261805819192972], [-70.816821942758196, 41.261938308063755], [-70.81651926883896, 41.261754154731001], [-70.81591286629488, 41.261754988303586], [-70.814791428921055, 41.261961492106188], [-70.814275432602415, 41.26212267923826], [-70.813881861865383, 41.26250744747442], [-70.81333611489238, 41.263722956291417], [-70.813063686856182, 41.264159688365893], [-70.812639071127251, 41.264499785831042], [-70.811790118818521, 41.264639309052754], [-70.811638308365801, 41.264452099354763], [-70.811790641231909, 41.263954405180378], [-70.811790359572413, 41.263378170411791], [-70.811669082004201, 41.262902489919668]]], [[[-70.923699021986394, 41.430709580298249], [-70.92290916678111, 41.430047122097022], [-70.921389970628582, 41.42817228337605], [-70.9202051504585, 41.426066660048846], [-70.918989560302805, 41.424897879283691], [-70.918989922685753, 41.42467278916989], [-70.91938485045867, 41.424495279934369], [-70.921724637199304, 41.424447009186096], [-70.922058408680115, 41.424630496127122], [-70.92215060689081, 41.424926376924439], [-70.922058804898484, 41.425197729782312], [-70.922059088390967, 41.425684470007802], [-70.922180462125183, 41.425862371333352], [-70.922240479987948, 41.426437742201777], [-70.922118914178455, 41.427025242595725], [-70.922149712627927, 41.427510967990258], [-70.922240479099102, 41.427806931478145], [-70.923000653376519, 41.428586741089987], [-70.924397958403375, 41.428491474787933], [-70.925887555258186, 41.427466399314902], [-70.926495115949578, 41.427483521278411], [-70.927315875779499, 41.427739774699823], [-70.928044571766435, 41.427601646814395], [-70.929443111184469, 41.426758479638067], [-70.930506359926142, 41.426569618493943], [-70.931114918671312, 41.425730831778608], [-70.931661250481568, 41.425108988411139], [-70.932208333382604, 41.42473915895517], [-70.932968411396331, 41.424699657027034], [-70.932056504320528, 41.424444698436098], [-70.931327055652346, 41.424105653589237], [-70.930172501543723, 41.423305820473054], [-70.929139201339581, 41.42289041263291], [-70.928683615004331, 41.422979233808391], [-70.928592591105215, 41.423368183642481], [-70.928379740859612, 41.423668733165691], [-70.92722483936447, 41.422751910138949], [-70.927164238583757, 41.422545599803584], [-70.926830276722086, 41.422182053541626], [-70.926222748609348, 41.421885819453344], [-70.925827789261845, 41.421910289720962], [-70.925371919476106, 41.422071125511465], [-70.924641588260798, 41.422705059878083], [-70.924368289837957, 41.423114959759445], [-70.923457427951405, 41.423895359409443], [-70.923214105192869, 41.423989830275389], [-70.922727728685956, 41.423988974336673], [-70.921451714577159, 41.423830034780153], [-70.918594762749919, 41.423805779060977], [-70.917105690176797, 41.423965868034152], [-70.916042051327707, 41.42380336781347], [-70.913581196592929, 41.423186873364678], [-70.911028661029391, 41.422959257874879], [-70.908658734057255, 41.423115734709526], [-70.908354851713469, 41.423003853399877], [-70.908415623827949, 41.421588341177646], [-70.908537523290136, 41.421379641829638], [-70.908962741607851, 41.421174145472754], [-70.909358116156795, 41.421104807758937], [-70.912517882156095, 41.421331109176897], [-70.913277901053164, 41.421543842236083], [-70.913794280797845, 41.421859392619098], [-70.915131067975722, 41.422891008918505], [-70.915677812526212, 41.423053104568602], [-70.916315885592766, 41.423051260818518], [-70.917014718332666, 41.422931687839061], [-70.919871650690553, 41.42307294126168], [-70.921603362181784, 41.422891005394746], [-70.922241934152311, 41.422727154711218], [-70.923061859273218, 41.422362181446793], [-70.923669783481799, 41.421973615096732], [-70.925584829150921, 41.419986774419691], [-70.926313528629251, 41.418794688710641], [-70.926951773363669, 41.417991459556319], [-70.927043244196554, 41.417512476724177], [-70.927681242857432, 41.4164392223826], [-70.928198024537707, 41.415772768915389], [-70.929808163225601, 41.414655964950931], [-70.930506962648082, 41.414338138583147], [-70.932269191681712, 41.413921019078373], [-70.932785587938866, 41.413534196968946], [-70.933333192224083, 41.412984922493315], [-70.93403152599025, 41.412756568666843], [-70.935429062096333, 41.412553035443672], [-70.936493118914839, 41.412120574591363], [-70.937282871181409, 41.411611831363267], [-70.939044778410448, 41.411204149195129], [-70.940321025712592, 41.411065321865564], [-70.941323540492135, 41.410634132608088], [-70.944452520994318, 41.410265692694168], [-70.946609092267835, 41.409598721981574], [-70.948432009181346, 41.409189572000791], [-70.948918628820039, 41.409190769527065], [-70.949283157676462, 41.409301756299406], [-70.94964725633757, 41.409574715447206], [-70.950164633712546, 41.410565377724694], [-70.950711191961389, 41.411222504083639], [-70.951045404930582, 41.411775597395859], [-70.951015922747089, 41.412370235629119], [-70.950803148644994, 41.412734392507339], [-70.95010473872901, 41.414682546163498], [-70.950074144231607, 41.415070725174616], [-70.949861884894091, 41.415317295218451], [-70.949466754276202, 41.41554893079865], [-70.948950353564172, 41.415611697037598], [-70.946944762477642, 41.415087546712471], [-70.945152089953638, 41.415118218408928], [-70.94448365506544, 41.415002937720651], [-70.944483614012739, 41.414606776679662], [-70.946154215909232, 41.414749469604196], [-70.947551966339631, 41.414743868223781], [-70.948190569920499, 41.414976573226639], [-70.948555106858322, 41.414978888178567], [-70.948828018223139, 41.414884597278281], [-70.948828595315234, 41.414496902812814], [-70.948888610962825, 41.414081856493176], [-70.94822019989806, 41.413282320382628], [-70.948129185467764, 41.412572299306674], [-70.948342308112771, 41.412433780583648], [-70.949010386918104, 41.412323405360489], [-70.949253052221835, 41.412184398347577], [-70.949252761461437, 41.411409542774308], [-70.948645526238153, 41.41102339403259], [-70.948189959569703, 41.411067274861864], [-70.947490817736309, 41.411772905179603], [-70.947096172138671, 41.411977523785637], [-70.946579542238524, 41.412139318135424], [-70.946245506976524, 41.412388077631903], [-70.944270716787443, 41.412547857545739], [-70.944179244322868, 41.412738736506988], [-70.944210037679113, 41.413395524097751], [-70.943967300115915, 41.413651567558219], [-70.942508718135414, 41.414315712655103], [-70.941475897215881, 41.41456777064829], [-70.941172183753167, 41.414888153890331], [-70.940442775173381, 41.415251453166071], [-70.940412211872484, 41.415711659293521], [-70.940625453375318, 41.415933301858118], [-70.9406249883192, 41.416302449575035], [-70.940928932341293, 41.416396237161763], [-70.941475673482145, 41.416215979151865], [-70.942114088342777, 41.415574822506599], [-70.943359651187492, 41.414887126610104], [-70.943602608026637, 41.41488264762291], [-70.943602456413004, 41.415162390475828], [-70.942812690973369, 41.416004223048532], [-70.942357245799457, 41.416759460233529], [-70.941901577062225, 41.418433608012499], [-70.941233716253237, 41.42156133936475], [-70.940716981042556, 41.422452403641216], [-70.938954338097886, 41.423580943261335], [-70.938377217248643, 41.424149276771672], [-70.937830637156125, 41.424698581339733], [-70.937405010236631, 41.424904093644372], [-70.936675250057448, 41.425060283483887], [-70.933849701198923, 41.425036118564726], [-70.933180785696464, 41.425128393747855], [-70.93269512155922, 41.425316751288598], [-70.932269276378818, 41.425639291029967], [-70.931266738992463, 41.42721440838848], [-70.93096279325016, 41.427831885071562], [-70.930932481381248, 41.428174412627641], [-70.930262986571549, 41.429338734997984], [-70.928166499245094, 41.43126513685489], [-70.927740875059541, 41.431515631711228], [-70.927194051459594, 41.431605697244358], [-70.925765868080319, 41.431467916773478], [-70.924427784705813, 41.431075681750421], [-70.923699021986394, 41.430709580298249]]], [[[-70.67748218361092, 41.513392939636795], [-70.677055498336557, 41.513093256783669], [-70.676812505629371, 41.51306961478415], [-70.676569094489665, 41.513190482245541], [-70.676599212422857, 41.513550317609862], [-70.676902867986499, 41.513896920717414], [-70.676629487841211, 41.513991189449946], [-70.676172233796578, 41.513916919877246], [-70.675747414185366, 41.513481646479597], [-70.675381954085026, 41.512613533833601], [-70.675504345652101, 41.512206365186621], [-70.676599504838535, 41.510235164440964], [-70.677056271854823, 41.509850768998689], [-70.677391198205882, 41.509710215210106], [-70.678395481735762, 41.509569556843218], [-70.679126517142592, 41.509252327150854], [-70.67979550338697, 41.508747362732493], [-70.68058624030256, 41.507853223893996], [-70.681134386424432, 41.507466681237823], [-70.681865505804154, 41.507168072912712], [-70.682717094577129, 41.506983957166533], [-70.683386663585722, 41.506965187734536], [-70.684420591105464, 41.506806051697097], [-70.685517374798238, 41.506780705475308], [-70.686582377010239, 41.506324103452457], [-70.688255802924616, 41.50485773531274], [-70.688560601873277, 41.504727648055741], [-70.689382231528853, 41.504606926062664], [-70.689716604479699, 41.504629033019263], [-70.690051584610472, 41.504840135398098], [-70.690842436557716, 41.505108061980231], [-70.690842670346981, 41.505801364688516], [-70.690994577050432, 41.506159813063149], [-70.691329152469308, 41.506460947803511], [-70.691390226270698, 41.507468740461363], [-70.6915727410166, 41.507718188502594], [-70.691968928352168, 41.507883621136202], [-70.692242940087681, 41.507906461169739], [-70.692851409787608, 41.507717747313364], [-70.693733586877215, 41.507128050805292], [-70.694707451637569, 41.506780482868855], [-70.695072289213016, 41.506342420459077], [-70.695347286372566, 41.50625766335498], [-70.696746781052852, 41.506830953679689], [-70.697629081578214, 41.507691936573693], [-70.697963877388247, 41.507921111860178], [-70.698481755999808, 41.508471758335716], [-70.698481489263912, 41.508885935990591], [-70.698359789647171, 41.509067945550115], [-70.698390299068166, 41.509616858955795], [-70.698664814148557, 41.509964367719327], [-70.699334012402062, 41.51048564549788], [-70.700399502374978, 41.510803252981681], [-70.700672708007815, 41.510988047060415], [-70.700612733390997, 41.511628612336906], [-70.699578282911858, 41.512958939922122], [-70.699365280559448, 41.513439686363562], [-70.698695694481145, 41.513665730248093], [-70.697447818342965, 41.51382852621169], [-70.695256126203063, 41.513644721771946], [-70.695164996018576, 41.512907465786121], [-70.694586114804679, 41.512501604220795], [-70.694007739621739, 41.512294279658697], [-70.693125798995894, 41.512298186440511], [-70.691939082074541, 41.512684743388881], [-70.690934382032594, 41.512771585368078], [-70.690295390267735, 41.51291613248349], [-70.689443490192673, 41.512523512638737], [-70.688012873468423, 41.512274681277944], [-70.687251940253802, 41.512267523056543], [-70.686764612652055, 41.512590423350424], [-70.686064986569065, 41.513320937242305], [-70.685547622820437, 41.513527106513536], [-70.683721023526459, 41.513716029934876], [-70.683325459559285, 41.513829604536184], [-70.682412094328512, 41.514257466796884], [-70.681286174260549, 41.515156494413347], [-70.680007559716287, 41.515815263674725], [-70.679581676406599, 41.515956248338945], [-70.678759601233025, 41.515977313960455], [-70.677511440947612, 41.516247936458498], [-70.677389735894693, 41.516069857039959], [-70.677694413134262, 41.514993214760544], [-70.677694908824591, 41.513759140305666], [-70.67748218361092, 41.513392939636795]]], [[[-70.698818676524908, 41.520302476471933], [-70.699396046269527, 41.519609288494124], [-70.699457493909279, 41.519427933110649], [-70.701495812613317, 41.517668524103726], [-70.701830718364008, 41.517528528368373], [-70.702561562901721, 41.517436334042145], [-70.702774412949992, 41.517352292435895], [-70.702926541948898, 41.517160857623978], [-70.703077645112302, 41.515789454439819], [-70.703351753470969, 41.515605088320818], [-70.703656095355512, 41.514790120493402], [-70.703869213490364, 41.514606495665554], [-70.706030277679474, 41.514124170908602], [-70.705786764542722, 41.513416201174763], [-70.705908158011013, 41.513045099733439], [-70.706243254028394, 41.512886994733414], [-70.707460699003533, 41.513157247299993], [-70.708312684050611, 41.513639770600463], [-70.709195865074022, 41.513662856031615], [-70.709804382640897, 41.514986705651637], [-70.709805320200928, 41.516067179451156], [-70.709988001867089, 41.516641369113344], [-70.710657524678481, 41.51793745622232], [-70.710627234613384, 41.518325043247465], [-70.710475712990558, 41.518624449163823], [-70.710110083576097, 41.51894496465043], [-70.708558988555055, 41.519499692953872], [-70.708101864222712, 41.51976770154053], [-70.707645528945463, 41.520368948065546], [-70.707371260104509, 41.520391253359342], [-70.706914810019683, 41.519974425469179], [-70.706427327273047, 41.519819662276262], [-70.705880149281697, 41.519774146772093], [-70.704662309103583, 41.51986412130077], [-70.703657936187625, 41.520158168636804], [-70.702714333040845, 41.520622537720435], [-70.70231860919796, 41.520709796053033], [-70.701405415420822, 41.521164823978708], [-70.700036317643367, 41.521401078592888], [-70.699518508928648, 41.5213726668308], [-70.699062187038237, 41.521217551490899], [-70.698727317857831, 41.52098837934539], [-70.698635490411249, 41.520638289379114], [-70.698818676524908, 41.520302476471933]]], [[[-70.91974310774502, 41.452806411230995], [-70.919227081149316, 41.452526905414913], [-70.918375559518566, 41.452252969548077], [-70.915821539488519, 41.452322581993329], [-70.915304979914652, 41.452025048313281], [-70.914788792753967, 41.451385373535253], [-70.914728042624773, 41.45088193344489], [-70.914940571410241, 41.450725465771285], [-70.915761603837836, 41.45058510054168], [-70.916278721857978, 41.450333409947575], [-70.917281737925663, 41.449695346118304], [-70.917707416536572, 41.449760018972142], [-70.917950695613413, 41.449972314819611], [-70.918041312010502, 41.450286198552071], [-70.918437172352469, 41.45063091047286], [-70.918497576249337, 41.451413461112018], [-70.918800937309612, 41.451705385795663], [-70.919318129150085, 41.451894862629096], [-70.919652377044443, 41.451934839830194], [-70.920412244428974, 41.451822759502853], [-70.920473799553264, 41.45070490578118], [-70.920655754763203, 41.450539897745593], [-70.92108169759689, 41.449515022701164], [-70.921294266043617, 41.448754756018602], [-70.921264195416057, 41.448187910313045], [-70.921173549055425, 41.447982073371705], [-70.921173331508498, 41.447342810575918], [-70.9213560411701, 41.446907064443799], [-70.921325995346166, 41.445673946024662], [-70.921446899342172, 41.445509705621802], [-70.922115874210817, 41.445489528224037], [-70.922389632414991, 41.445718806772348], [-70.923422967631197, 41.447178702889936], [-70.923909461679159, 41.447639283572542], [-70.924304466878027, 41.44828109220132], [-70.925186106124997, 41.448716572432055], [-70.925945651729862, 41.449424419341263], [-70.926249568113604, 41.450058466830313], [-70.926219145445856, 41.450770774576874], [-70.925702679158533, 41.451274616882202], [-70.925154945792187, 41.451527275535376], [-70.924425304426464, 41.452260165075295], [-70.92415186275511, 41.45280521040268], [-70.923999830398557, 41.453330073477069], [-70.923452525133641, 41.454158422177805], [-70.923087390099099, 41.454291079902589], [-70.921171840555786, 41.454593024227883], [-70.920624770493347, 41.454448961966747], [-70.920442283121901, 41.454154869040323], [-70.920169250585829, 41.453285787168582], [-70.91974310774502, 41.452806411230995]]], [[[-70.547963394085272, 41.416937309825499], [-70.547963307972609, 41.416717250694568], [-70.549239410478862, 41.415961543382622], [-70.549869411573525, 41.416025894469868], [-70.550242129011735, 41.416470216240121], [-70.550363876267966, 41.416811138579796], [-70.551670130048237, 41.418846903553117], [-70.552369445722036, 41.419557859214365], [-70.552642215215499, 41.419968652582824], [-70.553036954781646, 41.421161113422968], [-70.553219264453489, 41.421501367945744], [-70.554465384442906, 41.422556239342263], [-70.554678349707245, 41.422895126741629], [-70.554951805006354, 41.423765125233579], [-70.554981758325027, 41.424980918054395], [-70.555194179629893, 41.425869585539211], [-70.555710520703002, 41.426673626323165], [-70.556956819942542, 41.427701458899037], [-70.557260568813788, 41.428426558888425], [-70.557199852184155, 41.429229032481807], [-70.556956804441668, 41.430349181641255], [-70.55710905842254, 41.432274518044323], [-70.555832833568502, 41.43236401794433], [-70.555619326212735, 41.431880523669498], [-70.555589161032515, 41.430881365729761], [-70.555498435133714, 41.430648215992889], [-70.555467630019621, 41.430099253974959], [-70.555285316275672, 41.429480418411849], [-70.554921053981758, 41.427584825371525], [-70.554191920914931, 41.426072279052164], [-70.554039512202706, 41.425804307949385], [-70.553188479004177, 41.424221496390047], [-70.55309723110625, 41.423943860204041], [-70.551153543890067, 41.421069904425288], [-70.550606843989371, 41.420473310576035], [-70.549420961446273, 41.418895587373228], [-70.54847941027127, 41.417881484628694], [-70.548266852405135, 41.417470016238028], [-70.547962880079822, 41.417149440373606], [-70.547963394085272, 41.416937309825499]]], [[[-70.700032809096555, 41.505755692707822], [-70.700915002655833, 41.505724182732273], [-70.701463406122201, 41.505815291376734], [-70.701706258966809, 41.506118000599294], [-70.701615511944794, 41.506758889924029], [-70.701463347501189, 41.507166416106031], [-70.700915342860498, 41.507715127271005], [-70.700763680067126, 41.508014609301526], [-70.700216306181531, 41.508473282855256], [-70.70015518358656, 41.509023260510425], [-70.69966841827781, 41.509183609265364], [-70.699425269900402, 41.509115445229995], [-70.699302716328475, 41.508972769042742], [-70.699272966879548, 41.508630951060852], [-70.69905975127395, 41.508381838934334], [-70.698846551457265, 41.507853605533228], [-70.69848175768, 41.507120632926359], [-70.698511989545779, 41.506417371582849], [-70.698816128073503, 41.506070618320315], [-70.699576511749669, 41.505933633212507], [-70.700032809096555, 41.505755692707822]]], [[[-70.739414074270854, 41.509784992560284], [-70.739779195240246, 41.509743050278679], [-70.740692397592497, 41.510170635541911], [-70.74090617974602, 41.510446683681948], [-70.740906887866089, 41.511176001298189], [-70.740694237929489, 41.511845906599866], [-70.740268170729578, 41.512167734155796], [-70.740117001381492, 41.512440259349624], [-70.740056875098858, 41.513035822243786], [-70.739539852117332, 41.514016030870188], [-70.739114121433431, 41.514085748275328], [-70.739113397508149, 41.51358152696465], [-70.739387288449038, 41.512991899218569], [-70.739386574978695, 41.512325068442379], [-70.739233771458132, 41.511796147538384], [-70.738837823882477, 41.511063639038582], [-70.738867504888162, 41.510702603079345], [-70.739414074270854, 41.509784992560284]]], [[[-70.703228123953494, 41.504771360081264], [-70.702984450258725, 41.504765776989508], [-70.702223427381156, 41.504561172393295], [-70.701492554932557, 41.504580791852668], [-70.701341135255575, 41.504448089113424], [-70.701371612154063, 41.504222575893088], [-70.702071523669261, 41.50371652901979], [-70.702254371802141, 41.503344783295304], [-70.702436887610759, 41.503144018970161], [-70.703684344692675, 41.502756069638373], [-70.704718402703648, 41.502064890354589], [-70.704992576696995, 41.502024673613711], [-70.704992574488301, 41.502295330667337], [-70.704261979088074, 41.502864207336025], [-70.703806423898811, 41.50343834101092], [-70.703745529157487, 41.504213959494528], [-70.70353221277918, 41.504541644740613], [-70.703228123953494, 41.504771360081264]]], [[[-70.701921562149082, 41.512338958728698], [-70.702347321637816, 41.512269380862406], [-70.70402127264002, 41.512451668768577], [-70.704995152398823, 41.512887261471093], [-70.704994789742031, 41.513158006140443], [-70.704782029778272, 41.513323087496659], [-70.704112864145515, 41.513459037119041], [-70.702804279708459, 41.513505585864252], [-70.702348420673019, 41.513413423955285], [-70.701982572593479, 41.513211685483775], [-70.701647295934791, 41.512748417495835], [-70.701646923206056, 41.512451286137861], [-70.701921562149082, 41.512338958728698]]], [[[-70.762514615509986, 41.326725931571772], [-70.762727383419346, 41.326389137643993], [-70.763303346062131, 41.326596643729502], [-70.763484611642255, 41.327143090267917], [-70.764152392409059, 41.327646602312669], [-70.764152291776597, 41.327853687683167], [-70.763848646681353, 41.328011528794114], [-70.762634569681126, 41.328129045827652], [-70.762058570247092, 41.328308787106423], [-70.761694332591588, 41.328260852161925], [-70.761512368171068, 41.327578711886744], [-70.761634381513119, 41.327396642137344], [-70.762514615509986, 41.326725931571772]]], [[[-70.552764663928585, 41.414409693493035], [-70.553706970454613, 41.414180671770467], [-70.553980104999809, 41.41441147462762], [-70.553754387831262, 41.414639732482364], [-70.553068612528463, 41.415162449063509], [-70.552551410444096, 41.415916714098216], [-70.551943631002416, 41.415943144328665], [-70.551761309124117, 41.415783417982915], [-70.551670300606389, 41.415442214251577], [-70.551848381992642, 41.415079041760734], [-70.552764663928585, 41.414409693493035]]], [[[-70.702801909896237, 41.505363253785127], [-70.703258472927587, 41.50536529017625], [-70.703897088507858, 41.505724886413624], [-70.70401903165272, 41.50611966241992], [-70.703228919590174, 41.506509748134384], [-70.702711349621865, 41.50689553111274], [-70.702467964075538, 41.506962430375673], [-70.702285100525415, 41.505929118067968], [-70.702528204159606, 41.505547531006421], [-70.702801909896237, 41.505363253785127]]], [[[-70.906582653220084, 41.446054664011115], [-70.906521899276882, 41.445326216859293], [-70.906947235136869, 41.445138824968808], [-70.907707302220658, 41.44582870049063], [-70.908770716781859, 41.446585520191995], [-70.908770972466968, 41.446765595473202], [-70.908496903624098, 41.446860415289308], [-70.907706435923572, 41.446648662737147], [-70.907342660340092, 41.44640195093784], [-70.906673312262839, 41.446214954205246], [-70.906582653220084, 41.446054664011115]]], [[[-70.563035349939895, 41.426853097792048], [-70.563430351170496, 41.426739941074054], [-70.563916956959844, 41.427129423407543], [-70.563917500055425, 41.427633652654642], [-70.563521741883548, 41.428134607757627], [-70.562884037477005, 41.428359478895707], [-70.562549481868004, 41.42817492083865], [-70.562549433724328, 41.427490075027947], [-70.563035349939895, 41.426853097792048]]], [[[-70.506833681732573, 41.398016786083815], [-70.506682383899857, 41.397748128725183], [-70.506894830956867, 41.397565408205089], [-70.507563134611814, 41.397628621419422], [-70.50877844414056, 41.397765950005649], [-70.508717641034025, 41.397955583718002], [-70.508444216564328, 41.398184504955672], [-70.507836472191215, 41.398318746329828], [-70.507228429873948, 41.398317380640421], [-70.506833681732573, 41.398016786083815]]], [[[-70.698329211041312, 41.504060479476941], [-70.698572358076163, 41.504012135497881], [-70.698572199568574, 41.504858501128119], [-70.698389579716249, 41.50524825053666], [-70.698145787449846, 41.505405266701239], [-70.697506687677063, 41.505450810055308], [-70.697537536708822, 41.505225390429281], [-70.697932923159186, 41.504976076812895], [-70.697872041393012, 41.504337449826046], [-70.698329211041312, 41.504060479476941]]], [[[-70.734611264238083, 41.517676103085527], [-70.734611018440447, 41.517315406596026], [-70.734824053308742, 41.517222302548539], [-70.735067226527491, 41.51726391907318], [-70.735281349147854, 41.517521431975183], [-70.735220707779661, 41.517864791089416], [-70.734763179263794, 41.517835865790303], [-70.734611264238083, 41.517676103085527]]]]}, "type": "Feature", "id": 2, "properties": {"COUNTY": "DUKES", "AREA_ACRES": 70335.600000000006, "OBJECTID": 4.0, "FIPS_ID": 25007}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.987871887060464, 42.458351203429629], [-70.987518304745834, 42.458699026977612], [-70.987194926367167, 42.458950204512355], [-70.987068120278209, 42.45914436904286], [-70.986862273585686, 42.459459628215356], [-70.986050432183788, 42.459418917632185], [-70.986173744026559, 42.459146594908084], [-70.987100251907492, 42.458391613505299], [-70.987686215038337, 42.457544092834112], [-70.988055515214427, 42.45573618466895], [-70.988302107050814, 42.455326485358583], [-70.98833296973649, 42.454938424263574], [-70.987899813905997, 42.454711970897662], [-70.987590538809272, 42.45441125425257], [-70.987312900997082, 42.454272186791975], [-70.986818737210385, 42.454253601164332], [-70.986448713072207, 42.454367907311656], [-70.985861026687687, 42.45480137847052], [-70.985738351301961, 42.455145725911549], [-70.985739112342245, 42.456082554606112], [-70.985584842940725, 42.45693208448553], [-70.985060371124106, 42.457526712404523], [-70.984473762707267, 42.457987189343427], [-70.984010759933824, 42.458139243111809], [-70.983578466951343, 42.457984889502065], [-70.983299834916068, 42.457728682442863], [-70.982836388091883, 42.457133052022712], [-70.981692481376939, 42.456359796780482], [-70.980364446478944, 42.45604096795595], [-70.980240543091909, 42.455836226680042], [-70.980487152900608, 42.455696626316836], [-70.982248227255454, 42.455467693564238], [-70.983235997077756, 42.455099595795012], [-70.983884511323922, 42.454529748873625], [-70.984285546914862, 42.454072405131562], [-70.984562376908855, 42.452581438862886], [-70.984005083491468, 42.451735476089183], [-70.982862463960842, 42.450755803425189], [-70.982800842018946, 42.450531628214534], [-70.980483626423606, 42.450301712127946], [-70.980051358971338, 42.450624400912105], [-70.979619164439669, 42.45073111227105], [-70.979186183817205, 42.450549640205374], [-70.979526682254118, 42.450093119103705], [-70.979587495910863, 42.449912258407686], [-70.978074112351749, 42.449091740765617], [-70.977146209047064, 42.44815349539342], [-70.975972102475225, 42.44732665702859], [-70.974891125223721, 42.446940286157655], [-70.974613211736951, 42.44678318075465], [-70.974644378832465, 42.44648506119146], [-70.975014377101289, 42.446370882763148], [-70.975662904168658, 42.44625166964309], [-70.976558601467389, 42.446596228820923], [-70.976959943573334, 42.446616057770051], [-70.977021612848944, 42.44643511211143], [-70.976558659683775, 42.446281132194848], [-70.9765277799914, 42.446046919848271], [-70.977114812498783, 42.446028160025065], [-70.978164518907192, 42.446388530492307], [-70.978874734842037, 42.446231947248428], [-70.979400190104244, 42.446664205805241], [-70.979709237535744, 42.446820900100711], [-70.980048982854356, 42.446733577159733], [-70.980017477787456, 42.446499903177468], [-70.979770323347623, 42.446252291265196], [-70.978874616809662, 42.445745257085996], [-70.978781637989783, 42.445567031640316], [-70.978997588603676, 42.445499947856334], [-70.979059146140798, 42.445066382870266], [-70.980232674400455, 42.444722287785297], [-70.980634038228956, 42.444472020993004], [-70.980880623752938, 42.444152364074704], [-70.980911272720533, 42.443647266706726], [-70.980818497336841, 42.443370013245584], [-70.980231062176188, 42.442938561333825], [-70.978903300229433, 42.442430116285188], [-70.979118404196882, 42.442228526967668], [-70.981188848605726, 42.442706017489428], [-70.981775721096668, 42.442984324603131], [-70.981745409243558, 42.443389943141824], [-70.982208658439788, 42.444174097621087], [-70.982270128029981, 42.444371354577484], [-70.982733864548891, 42.444741381568328], [-70.983104586051681, 42.444699202604355], [-70.982610199692985, 42.444212453553732], [-70.982301278271919, 42.44359608602192], [-70.982269913076593, 42.443300023925069], [-70.982578491407821, 42.442889533964788], [-70.982701169315121, 42.442499545037961], [-70.982639542046343, 42.442158333155646], [-70.982206863174625, 42.441886845439811], [-70.981990945498794, 42.442070431284201], [-70.982176576961038, 42.442274908893857], [-70.982207328316065, 42.442571598530044], [-70.981929883717129, 42.442639041889997], [-70.98063169260034, 42.442022086066459], [-70.979828672296861, 42.441675815973817], [-70.979025689126672, 42.441635634826092], [-70.979025105547848, 42.440969426597171], [-70.978839875797178, 42.44058534013989], [-70.978530799398555, 42.440671718055398], [-70.978407861554587, 42.440899111669566], [-70.978067854068527, 42.440859849493606], [-70.97775873088753, 42.440334036054189], [-70.976493912136604, 42.441904859950142], [-70.977019645225624, 42.442913939003915], [-70.977049429010009, 42.442003083485872], [-70.977141865210243, 42.441614133049413], [-70.977419462959574, 42.441249070024334], [-70.977821828739337, 42.441611546551798], [-70.978223109695961, 42.44197347653796], [-70.978223936972896, 42.442550288182979], [-70.978717757378789, 42.442937933140072], [-70.979954045604899, 42.443573716752965], [-70.979953821914407, 42.443763314128184], [-70.979552694756819, 42.443896543620085], [-70.978471844841977, 42.444058745396745], [-70.978194147882434, 42.444243754842802], [-70.978008799131487, 42.444535504967007], [-70.977546320840148, 42.444516572629858], [-70.977515553541636, 42.444724036963613], [-70.977639041124974, 42.44490186170939], [-70.977608261908145, 42.445154880012446], [-70.977082394509438, 42.445245312031176], [-70.976557795493889, 42.445065124119566], [-70.976063324159853, 42.445136608310314], [-70.97519930477533, 42.445502958264491], [-70.974735719098334, 42.445294861390863], [-70.974797285662675, 42.445068362343314], [-70.975291317043045, 42.444771902290803], [-70.97529132159822, 42.444537200015908], [-70.974920404743798, 42.444192863872118], [-70.974673501031049, 42.444269431810078], [-70.974149390752558, 42.444908487499831], [-70.973068648697705, 42.446278090979483], [-70.972852809929947, 42.44634525421354], [-70.972543892208748, 42.446233555863984], [-70.972543345595341, 42.446007853875741], [-70.973253405852489, 42.445113077172046], [-70.973253201639224, 42.444743962510309], [-70.973005656275177, 42.444153778429893], [-70.972510678714997, 42.443441913444332], [-70.972448718437406, 42.443190722201415], [-70.973159737433718, 42.443124745801768], [-70.973931490954939, 42.442552636429006], [-70.974856379214103, 42.44117664158518], [-70.975103120627239, 42.440532987283767], [-70.975504948398395, 42.440723876582283], [-70.97599937004955, 42.440859458611094], [-70.975565518222766, 42.439372024419541], [-70.975472511753139, 42.43848203554564], [-70.975626180052529, 42.438155214017051], [-70.976923059100073, 42.437403167924018], [-70.978343103089955, 42.435964662146546], [-70.978620735437502, 42.435797747445285], [-70.979423028914638, 42.434703036809076], [-70.979793678217149, 42.434633229754809], [-70.980750585113796, 42.435202474058805], [-70.980905343827772, 42.435019694956317], [-70.980287820070657, 42.434561728264747], [-70.980194512030621, 42.434203446061929], [-70.980348668224636, 42.433813060521224], [-70.980595689088588, 42.433539049683674], [-70.982972302394344, 42.431930413416353], [-70.983527855009527, 42.431821452111606], [-70.983805355432793, 42.431979165123764], [-70.984022237101755, 42.432416772804991], [-70.986276856574378, 42.433764308764708], [-70.987883576165231, 42.434672825209297], [-70.988872064298846, 42.435043000521766], [-70.99084837903979, 42.435387110010623], [-70.991930151261698, 42.436115441873255], [-70.99226968748134, 42.436271697317594], [-70.992980014715528, 42.436340097361125], [-70.993876425567947, 42.436802102332351], [-70.993474558982598, 42.437097426984948], [-70.993474615423892, 42.437484546686633], [-70.993845390723763, 42.43750526294113], [-70.994184562989062, 42.437237840337588], [-70.994802334588897, 42.436479817580739], [-70.995419468149137, 42.436225944299935], [-70.995481294389691, 42.436017440752714], [-70.995295522475899, 42.435903551734647], [-70.994863373688133, 42.435929205283884], [-70.994307233125141, 42.436155164775037], [-70.993721565997546, 42.436273588603562], [-70.993380898527974, 42.436000296328885], [-70.992361740685794, 42.435675668893126], [-70.99331875593856, 42.434974335939017], [-70.993874201124683, 42.434379173966498], [-70.99433716805396, 42.434146055303714], [-70.995138726436608, 42.43345635816631], [-70.995601592483766, 42.432655968634315], [-70.996217909418462, 42.431996421828082], [-70.997012471154278, 42.431080440783816], [-70.997483549298039, 42.430938453102939], [-70.997717282045045, 42.431178677084958], [-70.997452856303227, 42.431695723757962], [-70.998503462850778, 42.432064917361039], [-70.999495467048632, 42.432162592648623], [-71.000860947622186, 42.431920403371606], [-71.001293872670232, 42.431561627718388], [-71.002621709119879, 42.43098894234123], [-71.002837693698382, 42.430552699832134], [-71.003054635786015, 42.430396087600208], [-71.004752373965374, 42.430348215588253], [-71.00499602506946, 42.430395987818045], [-71.005128876541875, 42.430641344644734], [-71.00512988283495, 42.430869749631412], [-71.004814982162941, 42.431105259019638], [-71.004168793735943, 42.431278662612236], [-71.003582576634315, 42.431320520394451], [-71.002974175495538, 42.431447895921458], [-71.002781717728652, 42.431596781290111], [-71.002744258585409, 42.431785677998867], [-71.002853721219168, 42.431990964020748], [-71.003109713039137, 42.432293662282014], [-71.003319457187658, 42.43248137497902], [-71.00373734541779, 42.432720580202826], [-71.004053773459106, 42.432833938172756], [-71.004501686687291, 42.43291797193357], [-71.004957035028283, 42.432968365512984], [-71.005319485355088, 42.432978385869781], [-71.005612719365942, 42.433012235362902], [-71.005875671643452, 42.433079804612149], [-71.006138585171513, 42.433199049044234], [-71.006348204872836, 42.433404220987569], [-71.006588669451105, 42.43364382507194], [-71.006758368966189, 42.433763298776199], [-71.007206486686556, 42.4338535347446], [-71.007585353475704, 42.433972191688902], [-71.008072655269785, 42.434228062855745], [-71.008327795529098, 42.434410288434755], [-71.008583612033163, 42.434552634028137], [-71.008838046481927, 42.434528961987176], [-71.009068245674811, 42.434402194316277], [-71.009206318450737, 42.434213184478637], [-71.009220117279497, 42.433876179380043], [-71.009186343470219, 42.433499089177872], [-71.009216357717364, 42.433327534383253], [-71.009308388668856, 42.433167046987997], [-71.009484807546343, 42.433000707126787], [-71.009778629848469, 42.433131328362322], [-71.009820080791442, 42.433600189157723], [-71.009844956043707, 42.433965537660853], [-71.009900140477342, 42.434136825286309], [-71.010086208347218, 42.434324964848685], [-71.010372744004755, 42.43451857290772], [-71.010520146298603, 42.434677918500043], [-71.010629999871782, 42.435009237332302], [-71.01070880884987, 42.435300451808587], [-71.011260162811084, 42.43603030723726], [-71.011331778369311, 42.436356421408199], [-71.011371745567914, 42.436578869375232], [-71.011234116364534, 42.436773555320386], [-71.010980729923673, 42.436912022422185], [-71.01092750618345, 42.437083389135196], [-71.010727710440449, 42.43723837828712], [-71.010651854797402, 42.437507058637898], [-71.01056784235216, 42.437667581029217], [-71.010584865364905, 42.437964744668513], [-71.010431765296545, 42.438147570233596], [-71.010278639682426, 42.438302216601386], [-71.010682249689239, 42.4387298531637], [-71.010945393326097, 42.438917778380102], [-71.011185435282599, 42.43899703159471], [-71.011601948504008, 42.439093327900963], [-71.011834243838521, 42.439184340516576], [-71.012066434753876, 42.439383385360337], [-71.012253366536584, 42.439651379237183], [-71.011937811169673, 42.439812091951907], [-71.011592119617077, 42.44001886015316], [-71.011222488713813, 42.440146121359625], [-71.010960841720077, 42.440266547776538], [-71.010607152898928, 42.44048507267533], [-71.010153471993888, 42.440698039617644], [-71.009438159253875, 42.441059606437229], [-71.011820871603632, 42.442236219153465], [-71.018693109963422, 42.450075025331174], [-71.025988024180066, 42.444669877860186], [-71.053360895583509, 42.475954435690639], [-71.054182080747083, 42.476981127327726], [-71.052664906780706, 42.48609825402054], [-71.050188819774803, 42.48652416327846], [-71.045183235894157, 42.488781642535713], [-71.040112132811089, 42.495758806787379], [-71.039893129504293, 42.496096611129097], [-71.040327854273116, 42.496489419240795], [-71.040324893512306, 42.496712222110354], [-71.040407137558319, 42.496928612784089], [-71.040559575001524, 42.497145283200808], [-71.040749332482264, 42.497299083824501], [-71.041557045833642, 42.497895931361811], [-71.041865771726279, 42.498152562877046], [-71.042707787745769, 42.499206420729337], [-71.042934828266709, 42.499354153734053], [-71.043230964685378, 42.499553384930763], [-71.043363922551634, 42.499690121132609], [-71.043481614587265, 42.499952743138003], [-71.043661277725121, 42.500108209081525], [-71.043843413445984, 42.501201035597589], [-71.043668105780299, 42.501401819907592], [-71.043400359137578, 42.501649411440354], [-71.042984588281698, 42.501823854615459], [-71.043018737300102, 42.50209802911116], [-71.04277965119141, 42.502150556464571], [-71.042532577528007, 42.502163620241774], [-71.042449694108583, 42.5023523458472], [-71.042258392148298, 42.50255981644279], [-71.04195031351648, 42.502613148402965], [-71.041525239246837, 42.502609748032604], [-71.041162453808013, 42.502640353794398], [-71.040854446602737, 42.50275057953521], [-71.040615717276225, 42.50280364398526], [-71.040384534548409, 42.502856197875992], [-71.0401370529692, 42.502858001654801], [-71.039674480034009, 42.502957974747105], [-71.039396187605874, 42.502930395448644], [-71.039155736875742, 42.502852372163851], [-71.038860593412764, 42.502716693007898], [-71.038590125629781, 42.502684101601965], [-71.038328545724326, 42.502817012938841], [-71.038238377184271, 42.503051799666466], [-71.038093666344324, 42.50324144480367], [-71.037824379693433, 42.503362980834545], [-71.037591371268022, 42.503215754148158], [-71.037352707028234, 42.503325708538], [-71.037168747792478, 42.503458298561817], [-71.036884922127371, 42.503654045462568], [-71.036625242631288, 42.503924790339909], [-71.036388919883265, 42.504228848143626], [-71.036413937169115, 42.504417373109128], [-71.036215072506877, 42.504607338214562], [-71.036055653848607, 42.504859939525453], [-71.035937449264381, 42.505182926992326], [-71.035875841859095, 42.505370653149413], [-71.035569603048103, 42.505601236587665], [-71.035517357516326, 42.505773155689496], [-71.035450172631656, 42.506007582583933], [-71.035290731885397, 42.506311857787907], [-71.035109183852938, 42.506627386868225], [-71.034910337613368, 42.506862902842762], [-71.034881573205595, 42.507051211030443], [-71.03508412838201, 42.507187697143017], [-71.035386201764211, 42.507259765369781], [-71.035680672890805, 42.50737294401786], [-71.035659657981043, 42.507550120367014], [-71.035553856712212, 42.507790513427587], [-71.035449294177297, 42.508093929489796], [-71.035605644811028, 42.508276231655103], [-71.035847645820141, 42.508509653065545], [-71.035996458843925, 42.508691384168344], [-71.03610745097447, 42.508936611167961], [-71.036055079724107, 42.509125454719772], [-71.036258400368212, 42.50934116448461], [-71.036546299209746, 42.509522373688178], [-71.036610013166424, 42.509694309083642], [-71.036859537397575, 42.509915244892838], [-71.037123958858359, 42.510079523685363], [-71.037002703853148, 42.510303561185026], [-71.036720507484688, 42.510670903196441], [-71.036645821399915, 42.510882793886154], [-71.036641921556082, 42.51123162820786], [-71.036722360450398, 42.511562166096709], [-71.036618069162643, 42.511894842383725], [-71.036606803051015, 42.512335383267938], [-71.036856776315716, 42.512579457310927], [-71.037675946709356, 42.513295118948442], [-71.038074558478428, 42.513698411547914], [-71.038325410281317, 42.514056728436209], [-71.038631104201386, 42.514420845575088], [-71.038876704079115, 42.514299753258719], [-71.039116997407646, 42.51435526965551], [-71.03941970076481, 42.51447972449818], [-71.039446254079152, 42.514776375235122], [-71.03921609062985, 42.514949835375681], [-71.038887047041271, 42.515249025628457], [-71.038719430344685, 42.515472249028008], [-71.038552045199452, 42.515713568263841], [-71.038345763843608, 42.515915300263629], [-71.038378858783616, 42.51614886934636], [-71.038600242875802, 42.51661113703166], [-71.038887708056166, 42.516740573611372], [-71.039422536973106, 42.516908718609102], [-71.039903729653986, 42.517106445572523], [-71.040137564589216, 42.517264923308602], [-71.040309451733634, 42.517424323927585], [-71.04041176198767, 42.517629540085174], [-71.040573143663309, 42.518262613189329], [-71.040584275454961, 42.518589000356179], [-71.040557795339225, 42.518983296748857], [-71.040699258501732, 42.519176875203883], [-71.040862639727976, 42.519318686017968], [-71.041228721732409, 42.519550878725788], [-71.041571158315961, 42.519771633017058], [-71.041595953811651, 42.519943410344688], [-71.041536490947252, 42.520137809185513], [-71.041345536371026, 42.520373366850805], [-71.041185497323767, 42.520574747477909], [-71.040865582259357, 42.520988131707568], [-71.040906588788928, 42.521256661103905], [-71.040978650299351, 42.521438709538153], [-71.041042750540257, 42.521661237713545], [-71.040944888526923, 42.521913999911384], [-71.040660475218061, 42.522063660013877], [-71.040359641039416, 42.522128359900272], [-71.04008184947503, 42.522187389280127], [-71.039883667260966, 42.522411122269204], [-71.039648359992697, 42.522835553597304], [-71.039367279971927, 42.523277806666613], [-71.039043594271106, 42.523354205178244], [-71.038736156952012, 42.523538608342548], [-71.038699602788341, 42.523727515409597], [-71.038701915026067, 42.523927291202853], [-71.038773875736211, 42.524155973687371], [-71.038922565014929, 42.52436083611061], [-71.039226483289823, 42.524542101855388], [-71.039591270999026, 42.524688139802564], [-71.039893787115517, 42.524795127163912], [-71.0400816226052, 42.525040115521868], [-71.040169610752699, 42.525308292104782], [-71.040389407926085, 42.525627048163443], [-71.040662977668063, 42.525882460026217], [-71.040943211283377, 42.526075420105279], [-71.041153385783403, 42.526228759636481], [-71.057519320903594, 42.524239060881925], [-71.057936421825517, 42.524150635278431], [-71.058220849708718, 42.524046485665551], [-71.058452177751875, 42.523982103299076], [-71.058815568310308, 42.523968279921888], [-71.059032465908501, 42.52403554828944], [-71.059288639028011, 42.524142847594071], [-71.059520869299106, 42.524158319029048], [-71.059760727279524, 42.524196955633506], [-71.060016944982749, 42.524298131754549], [-71.060204602008895, 42.52444000736719], [-71.060453853665777, 42.524615426842892], [-71.060633153859314, 42.524751688313096], [-71.060910451286105, 42.524692517589621], [-71.061288479829969, 42.524621936159647], [-71.061652204634484, 42.524665541268575], [-71.062073063628773, 42.524263196660577], [-71.062343509474402, 42.524261342617123], [-71.0626778362724, 42.524402150306841], [-71.063119836612699, 42.524531031533911], [-71.06343735980245, 42.524603084012831], [-71.06383179284542, 42.524623752013412], [-71.064117600617038, 42.524547771043714], [-71.064456468460463, 42.524437059964754], [-71.06472794684062, 42.524532611623712], [-71.065077294198474, 42.524684722182059], [-71.065481248273031, 42.524825244133439], [-71.065853218396768, 42.52487390846008], [-71.066278324521107, 42.524894593533851], [-71.067568218672776, 42.524783575361681], [-71.075228224460901, 42.531063664733132], [-71.071042574953182, 42.555901231065675], [-71.065024395270669, 42.562173657466261], [-71.056983904138988, 42.573988007833819], [-71.056823211123572, 42.574148894104091], [-71.056546227884851, 42.574270442938449], [-71.056463411273171, 42.574494104645829], [-71.056108421471066, 42.574553506043259], [-71.055877028501172, 42.574600418590187], [-71.055820376257969, 42.57439485558038], [-71.055957845336565, 42.574211375322591], [-71.055955274712119, 42.573971091075478], [-71.055737800060967, 42.573892653300938], [-71.055565066681879, 42.573687723482969], [-71.055249020999852, 42.573804077430566], [-71.054918602609433, 42.573954764297561], [-71.054631092338724, 42.57385912976855], [-71.054333587095073, 42.573540646190629], [-71.054059061547832, 42.573176698387179], [-71.053756249727783, 42.57307533098767], [-71.053477107873661, 42.573037161306516], [-71.053180465925593, 42.57278727639499], [-71.053178635246482, 42.572598758707279], [-71.05350259811226, 42.572533664781169], [-71.05363227686513, 42.572367081587096], [-71.053352690660859, 42.57225454989868], [-71.052967097999812, 42.572336869374645], [-71.05259502517147, 42.572264578445292], [-71.052530832853918, 42.572076359067381], [-71.05263622948786, 42.571796072281039], [-71.052388198183138, 42.571768643381382], [-71.052166271547435, 42.571992842844622], [-71.05189546001597, 42.571965864630023], [-71.051707676682611, 42.571790218303285], [-71.051366343792182, 42.571694906573789], [-71.051156359569703, 42.571558513594056], [-71.051022906334808, 42.571399281779456], [-71.050743609332343, 42.57138415102731], [-71.050582543501051, 42.571510638065433], [-71.050297638641752, 42.571632771315684], [-71.050002393792894, 42.571514048783342], [-71.049605809615642, 42.571293652768638], [-71.049388638526494, 42.571243291644628], [-71.048963303427769, 42.571228666529294], [-71.048716928264767, 42.571344734808413], [-71.04821675074966, 42.571593135094929], [-71.047625243206838, 42.571957126420585], [-71.046716632549447, 42.572345166400567], [-71.045961534797428, 42.572624063803566], [-71.045660826292533, 42.572689318169694], [-71.045066764949539, 42.572829846239074], [-71.044704258328068, 42.57295165975691], [-71.044473941187434, 42.57311900610032], [-71.044399487629974, 42.57337636144571], [-71.044177482317508, 42.573606756934034], [-71.043954401529547, 42.573716155228446], [-71.043629899170327, 42.573752592565306], [-71.043373268799598, 42.573600156734102], [-71.043077185175022, 42.573412814776795], [-71.042650113119549, 42.573249619636059], [-71.042332686682784, 42.573251151972315], [-71.041992829686521, 42.573322363180203], [-71.041737842406519, 42.573363572274431], [-71.041374094689246, 42.573303071392807], [-71.041140406754337, 42.573195823855023], [-71.04071941701585, 42.572884105742901], [-71.040438859731779, 42.57267368249569], [-71.040297555114279, 42.572508825462535], [-71.040148470093357, 42.572275248741995], [-71.040121812115359, 42.571972480976761], [-71.040110749775678, 42.571652310622838], [-71.04004579847637, 42.571372976531151], [-71.039565260842352, 42.57129561988895], [-71.037739162122975, 42.571243307326256], [-71.037563357409113, 42.571432824283391], [-71.037310602734635, 42.571651740479616], [-71.036963403286904, 42.571728038841925], [-71.0366604259372, 42.571604119670269], [-71.036200464495721, 42.571246676023556], [-71.035840508780268, 42.570888552706919], [-71.035590195531285, 42.570610180711483], [-71.035505900321752, 42.570330766046624], [-71.028317654762191, 42.57416698227243], [-71.03403953188095, 42.585533260869433], [-71.059282146422603, 42.606403076680664], [-71.058689294189747, 42.60913130595231], [-71.076199782379661, 42.604173609814936], [-71.124481006361435, 42.600046092535955], [-71.13535215311542, 42.599049635871708], [-71.141248395374802, 42.603180987688717], [-71.143209434529012, 42.604005192418327], [-71.146060514452657, 42.608533652730308], [-71.146575855855872, 42.609997020136298], [-71.14859442724952, 42.613164596545346], [-71.154418485679599, 42.615277447520512], [-71.156490112335277, 42.615010229864048], [-71.158626526910425, 42.613017524441268], [-71.15948605775661, 42.607686760583043], [-71.160710979615956, 42.605327269245265], [-71.163692215976099, 42.602111464293522], [-71.163924537337209, 42.601802732214061], [-71.164942769705235, 42.598043814641201], [-71.180522123038685, 42.607727704580803], [-71.181332542108365, 42.608402322964849], [-71.181664364217781, 42.608528189616777], [-71.181594735750394, 42.608705162126746], [-71.181223448559635, 42.608767783698077], [-71.18080633642262, 42.608710367302805], [-71.18054399228609, 42.608630241867459], [-71.180165071900987, 42.608635944631239], [-71.18008651713707, 42.609009950992508], [-71.179623292502185, 42.608961404825152], [-71.179383860008713, 42.608881340325645], [-71.179228933490577, 42.609006941700194], [-71.179213210631374, 42.609246628209057], [-71.17900445415458, 42.609412589659215], [-71.17870266767406, 42.609395456473152], [-71.178401764914369, 42.609229157286272], [-71.178472161384207, 42.608903561515298], [-71.178302175700111, 42.608732045099615], [-71.178046963967105, 42.608783096806498], [-71.177675655696532, 42.60892051571318], [-71.177613767796416, 42.60915440172888], [-71.177736729653915, 42.609417520716228], [-71.177682244214921, 42.609657548929661], [-71.177589443644081, 42.609811498556283], [-71.17738818984698, 42.610034282497537], [-71.177325555339564, 42.610223154911516], [-71.177348602353035, 42.610434772365302], [-71.177587780446231, 42.610589018925168], [-71.177827372047147, 42.610686461895085], [-71.178113027748395, 42.610760987001413], [-71.17848360093987, 42.610960609151526], [-71.178437084435998, 42.6111439455875], [-71.178143280077023, 42.611280411442934], [-71.177741220279074, 42.611303506170223], [-71.177370104391287, 42.611400324402226], [-71.177408626015023, 42.611588939230828], [-71.177562376002243, 42.611766623022227], [-71.177531340200858, 42.611948831990048], [-71.177222003787918, 42.612023316609282], [-71.177136547223171, 42.612217796440056], [-71.177221384302257, 42.612405910612296], [-71.177437327769326, 42.612600602557158], [-71.17762270641083, 42.61276658160201], [-71.177915921259384, 42.613080768128704], [-71.177745571508368, 42.613240622944453], [-71.177506141940555, 42.613228701732289], [-71.177189379189372, 42.613228986975692], [-71.17694935752678, 42.613308795879476], [-71.176887202733027, 42.613474533444062], [-71.176910402733441, 42.613680029678292], [-71.176940422022241, 42.613862949329231], [-71.176878466054148, 42.614108627378812], [-71.176654179650001, 42.614280212360917], [-71.176352348460256, 42.614457161218411], [-71.176097150681642, 42.614548088589764], [-71.17584216019884, 42.614622271799981], [-71.175455565984095, 42.614690953387331], [-71.174025634850338, 42.614907480956226], [-71.173600342722551, 42.614987299905351], [-71.173143784755922, 42.615055775991735], [-71.172927579312272, 42.615123760967371], [-71.172749676642297, 42.615232454216411], [-71.172741450216009, 42.615455236490362], [-71.17277944394759, 42.615649432561014], [-71.172586227676618, 42.615866649225033], [-71.172477500035228, 42.616032252277591], [-71.172206371278222, 42.616277964452053], [-71.171835518430143, 42.616340467058031], [-71.171495653514356, 42.616420520978082], [-71.172136628818194, 42.61677460025971], [-71.189423853648847, 42.625124055385662], [-71.249477272221156, 42.653930522990095], [-71.256187923313774, 42.65714512494047], [-71.255586138644574, 42.6574330912037], [-71.254966210357836, 42.657774938423422], [-71.254640606364489, 42.658015053711409], [-71.254353486316433, 42.658237875829812], [-71.253391413488899, 42.659082023924142], [-71.252879045985424, 42.659544537337993], [-71.25235937015924, 42.659909630114122], [-71.251715908026739, 42.660331978021752], [-71.250762525777702, 42.660781650845443], [-71.250112100200155, 42.660986754270539], [-71.249479109020456, 42.661100700640624], [-71.248975689836485, 42.661112571279205], [-71.248674756942293, 42.661089952131789], [-71.248203291846991, 42.661010787721494], [-71.247392081295772, 42.661007307033522], [-71.246820499449328, 42.661014518227915], [-71.246179940980369, 42.66106766583826], [-71.245453822311774, 42.661195428868595], [-71.244797200510703, 42.661329012142424], [-71.244171836054349, 42.661513882786103], [-71.243523504136292, 42.661766754661627], [-71.24296814133352, 42.662041795022098], [-71.242489984395348, 42.662346261546567], [-71.242143529930232, 42.662626804376195], [-71.241889695938596, 42.662896300428123], [-71.241636411367978, 42.663239434211675], [-71.241376462734976, 42.663749181120842], [-71.241186438611848, 42.664161141294002], [-71.240901949228657, 42.665208166391139], [-71.240651299622002, 42.666151652464109], [-71.240397149326043, 42.666729465243357], [-71.239763442419118, 42.667588368650001], [-71.239285318060908, 42.668194931215574], [-71.238688766819578, 42.66885298594508], [-71.238178828532426, 42.669419502609607], [-71.23843188616442, 42.671167016782569], [-71.249396566327292, 42.714007071598587], [-71.249495291028353, 42.71419911672924], [-71.255083861799903, 42.736570726825924], [-71.249502953145182, 42.740107223940406], [-71.245432645989482, 42.742561428763409], [-71.237368829934681, 42.744908645137826], [-71.223748439665414, 42.746488264147878], [-71.181636200016939, 42.737394493976588], [-71.182682332643694, 42.750133933840836], [-71.186120790093867, 42.79074190451955], [-71.182411136112506, 42.794166486567612], [-71.166639179707971, 42.808882152775702], [-71.132774171132397, 42.82151710854837], [-71.124419785032572, 42.819641660511152], [-71.116029505217725, 42.817678172321123], [-71.064444609604493, 42.806226763880758], [-71.053928009808629, 42.833284081479405], [-71.044781646500439, 42.848691883387303], [-71.037949332944706, 42.854036552837989], [-71.034853977255977, 42.856411304324119], [-71.031162782388293, 42.85930673567011], [-71.016176712857941, 42.861736982904091], [-71.004794284967929, 42.863374471921226], [-70.999503755772082, 42.864134892798944], [-70.967042231751662, 42.868822369910966], [-70.95154001005443, 42.875104657421907], [-70.929383685427439, 42.885082300208254], [-70.914533313881478, 42.886739381118552], [-70.903624707374405, 42.886818290400413], [-70.885604196394553, 42.882869850393526], [-70.874501474284671, 42.876416573135195], [-70.872089798573796, 42.875090383792916], [-70.847739613914996, 42.860878004240597], [-70.83674519045924, 42.864740910495186], [-70.829658173612685, 42.868794212299747], [-70.820262168549348, 42.871853556345059], [-70.817000504613659, 42.872023967032483], [-70.815933224778945, 42.872066105108154], [-70.816008715136817, 42.871731237745763], [-70.816008524813313, 42.862633850907365], [-70.816224671455828, 42.85744167241544], [-70.816380862381749, 42.856132841341299], [-70.816162983987311, 42.851470363874554], [-70.814514259623991, 42.836922217022433], [-70.814141035074329, 42.835000374291369], [-70.814078773866143, 42.834082901452838], [-70.812742574024185, 42.82523132091454], [-70.812276348545495, 42.822969091529359], [-70.811997256963309, 42.822279873350645], [-70.812120872362925, 42.82189073705738], [-70.812649338708837, 42.821918088195645], [-70.81302231355545, 42.822074411847005], [-70.814327156213778, 42.822305476719833], [-70.815445575439739, 42.822666042400513], [-70.818179865906231, 42.82291954285531], [-70.819329501699713, 42.822874001281228], [-70.820230516394716, 42.822535510311646], [-70.821131167846815, 42.821890407386462], [-70.821597224097061, 42.82177503284553], [-70.822342631329164, 42.822006061209592], [-70.82268488888154, 42.822234818828122], [-70.823120258784428, 42.822254826547081], [-70.823772005564152, 42.822190578134951], [-70.824610388817845, 42.821816760526566], [-70.825667794021612, 42.821088189050336], [-70.826692644682225, 42.820747578036524], [-70.826972181178263, 42.821409667111972], [-70.827283150302748, 42.821683778688751], [-70.827252282330974, 42.822053845161463], [-70.827034612431135, 42.822327677354302], [-70.827096662844795, 42.822939082484162], [-70.826848522233021, 42.823123259048884], [-70.825884351025323, 42.823264473649651], [-70.825667753280541, 42.823403371923014], [-70.82501551170246, 42.823512637333735], [-70.824300472826494, 42.823650248760096], [-70.824083232118127, 42.823996092547787], [-70.823430827166462, 42.824358029643356], [-70.823585843174882, 42.824589561667295], [-70.824207229203722, 42.824723713941559], [-70.824984749118201, 42.82474741984317], [-70.824953856584003, 42.825027376898554], [-70.824705146755619, 42.825229009054269], [-70.824270388858295, 42.825479696073934], [-70.8244253081929, 42.825891262651872], [-70.82439501092027, 42.826513382411363], [-70.825108975342815, 42.827195470368693], [-70.825296260357433, 42.827543671316363], [-70.825575310854276, 42.82850290951199], [-70.825545185726838, 42.829098564574892], [-70.825234166874722, 42.829463578038776], [-70.824302567148422, 42.829739456538682], [-70.823587371339414, 42.82976003913506], [-70.822344793311089, 42.829419712225572], [-70.821504642336294, 42.829550363581411], [-70.820883458896489, 42.82941619848512], [-70.820293476212413, 42.82946170936799], [-70.819858922801814, 42.829711750794445], [-70.819890024056704, 42.829945440547135], [-70.820076327809602, 42.830122609383821], [-70.820542161461034, 42.830304837882352], [-70.821257322287295, 42.830401297463041], [-70.822438215192676, 42.83072435154709], [-70.823431399626244, 42.830762200737674], [-70.824675783548571, 42.830994504416104], [-70.826384280803268, 42.830489724720302], [-70.826632530056543, 42.829990396608046], [-70.82703713647642, 42.829759239894678], [-70.826974010841482, 42.82932741628543], [-70.826632265341999, 42.828612577057882], [-70.826632374056388, 42.828134941150985], [-70.826383545217737, 42.827355377498527], [-70.826351926719113, 42.826689058707665], [-70.826693728284852, 42.826143014092139], [-70.8271907363862, 42.825891599310658], [-70.827407723174005, 42.825591297999317], [-70.827501493232475, 42.824977467422372], [-70.827718688367142, 42.824748640974263], [-70.828525906270812, 42.824591288565962], [-70.828588675047882, 42.824176487843353], [-70.828992450543282, 42.823584075710635], [-70.829241289495315, 42.822967810605235], [-70.829582485615575, 42.822691808568045], [-70.829830511690972, 42.82259764387284], [-70.830545360508765, 42.82248700281702], [-70.831197712318172, 42.822755784052006], [-70.835330932512065, 42.822869585562884], [-70.837287792289587, 42.823054079394758], [-70.838436669016716, 42.822963244820215], [-70.8410154137175, 42.822002411477932], [-70.843252881711749, 42.821453040981282], [-70.845084964782188, 42.821170851706171], [-70.846607784980378, 42.821146232372165], [-70.848130105108936, 42.820851625452406], [-70.84921681906809, 42.820464444452654], [-70.849931785165751, 42.820029618918284], [-70.850179672178172, 42.81998032914759], [-70.852447113371255, 42.81895223241915], [-70.853782803208347, 42.8184983460824], [-70.858132205215185, 42.817643674615191], [-70.858814415563785, 42.817389819704211], [-70.859187649687797, 42.817121829744103], [-70.859373119499892, 42.816596788433785], [-70.859994021995107, 42.816154089419165], [-70.861422728432004, 42.815788396843068], [-70.862852111778281, 42.815197644590981], [-70.863566269169581, 42.815104800176286], [-70.863783275659699, 42.815010932701817], [-70.865274585417467, 42.815148468883976], [-70.866486133636059, 42.815444328901009], [-70.871302921681348, 42.816950196853362], [-70.87186216692362, 42.817382526965488], [-70.872049174046296, 42.817793663517627], [-70.872081561755991, 42.818369955316811], [-70.87189479598949, 42.818643498354362], [-70.871926782393274, 42.819174238673988], [-70.872206601721913, 42.81930457111973], [-70.872859134636599, 42.819447092919262], [-70.873293652285497, 42.819944003493283], [-70.873326838508618, 42.820772349348999], [-70.873636768715016, 42.820974315403653], [-70.8745065572313, 42.821086405642454], [-70.874483110597239, 42.817081643173758], [-70.874481325018024, 42.816769900555713], [-70.874469707057202, 42.814916632931528], [-70.873755496835372, 42.814820505836835], [-70.873288346284639, 42.814521459585016], [-70.872170656155902, 42.813837480333184], [-70.870368439178563, 42.813272376746895], [-70.867912902540851, 42.812763364337385], [-70.866141569725329, 42.812585442018829], [-70.864278585163291, 42.812246666858456], [-70.86319097983575, 42.811949303936217], [-70.862103450044771, 42.811561282770626], [-70.861698858639372, 42.811261993340302], [-70.861792035675748, 42.810755612637671], [-70.861667636270141, 42.810532671597372], [-70.860486253536649, 42.809615258622344], [-70.860112654476808, 42.809252041211266], [-70.859832946959614, 42.808445909941739], [-70.859366401787753, 42.807966772399737], [-70.85784415686399, 42.807189855090463], [-70.856289625555547, 42.806071747421811], [-70.855419737136643, 42.805635360603098], [-70.854083669987659, 42.804810458295641], [-70.8532136866163, 42.804149007087467], [-70.852839994130136, 42.803398683774148], [-70.852280390409177, 42.802551629548582], [-70.849484569402975, 42.800840726622376], [-70.848770330981395, 42.800176784415342], [-70.848458620806838, 42.800010746874769], [-70.847775233231118, 42.799850537816802], [-70.846254208028483, 42.800010748456351], [-70.845539284556295, 42.799850798271827], [-70.842619856866861, 42.79887169249281], [-70.839265872253748, 42.798853688205121], [-70.835944400862161, 42.798385137644352], [-70.835072631783149, 42.798299749186619], [-70.834202100169293, 42.798466864870214], [-70.833643436397537, 42.798665114897609], [-70.832960422455315, 42.798739319992507], [-70.832494801463056, 42.798647788663999], [-70.831780559014689, 42.798577866258682], [-70.828581459137055, 42.798926733836282], [-70.825786183748377, 42.799494450622845], [-70.824481954767023, 42.799587582916502], [-70.823767448846553, 42.799337571271515], [-70.823177574421734, 42.798968377962666], [-70.822711760509421, 42.798147650588753], [-70.822400921041123, 42.797783505149219], [-70.821593080347284, 42.797372519617426], [-70.821065017484017, 42.796885571867463], [-70.820661148227629, 42.796297538281308], [-70.820599252460823, 42.796064295305605], [-70.819512747690695, 42.795811443880751], [-70.817213893082666, 42.79469571737544], [-70.815660636131057, 42.793846578930534], [-70.814543587483513, 42.793026467430991], [-70.814264281566139, 42.792769878906121], [-70.813766903412613, 42.791921920266155], [-70.813207856238975, 42.791327268223917], [-70.812772727904417, 42.790757563963602], [-70.812152198979874, 42.790254271530756], [-70.811935290892876, 42.789960419424496], [-70.811809689281461, 42.789565837471407], [-70.811437548222827, 42.789139453103971], [-70.811126469775687, 42.789018867223895], [-70.810817107749543, 42.789365852523325], [-70.810847972790057, 42.79032924569475], [-70.811158134740651, 42.790801443147522], [-70.812679655311598, 42.791813030580705], [-70.812928672217481, 42.79213353726459], [-70.813083843267847, 42.792887830490777], [-70.813549992002152, 42.793439172907824], [-70.814481443640759, 42.794117585183542], [-70.816158364853607, 42.794991684863255], [-70.816623808310098, 42.795353339307923], [-70.817959792862837, 42.796133670327272], [-70.818456376390571, 42.796251998301017], [-70.819481396912778, 42.796685617144092], [-70.820009538184195, 42.797028541861046], [-70.820164840703725, 42.797395651681022], [-70.82025785049612, 42.797961698494163], [-70.820165454525835, 42.798242466315429], [-70.820288902848162, 42.798673032624926], [-70.820630743231249, 42.799108750726987], [-70.821189978063515, 42.799585800521982], [-70.821966934832389, 42.800753848891944], [-70.82199742152072, 42.80103254653767], [-70.821966088269903, 42.802123214676897], [-70.821749523262312, 42.802423510499125], [-70.820910386020103, 42.802923330899141], [-70.820755228637481, 42.803106330121459], [-70.820755963934673, 42.803637446888963], [-70.821128733829767, 42.80446051577222], [-70.820942529159453, 42.805355113483223], [-70.820942894467265, 42.805570080975407], [-70.820942675028036, 42.805805209274681], [-70.821408619184169, 42.806311505865288], [-70.82150202895987, 42.807499132558597], [-70.822278698623066, 42.808261548142546], [-70.822340166398448, 42.809079999273251], [-70.822558171458041, 42.809815468068429], [-70.822589473819804, 42.810427239018331], [-70.822155388165214, 42.810884876072883], [-70.821315882345729, 42.811023991035718], [-70.820694285094874, 42.811295445278837], [-70.820042230594922, 42.811341760440072], [-70.819607634899057, 42.810952668019461], [-70.819078923594006, 42.81102382714154], [-70.818986110757905, 42.811250579106037], [-70.818582152226483, 42.811599276897205], [-70.818303311250489, 42.811594845850699], [-70.818116384266816, 42.811480592326632], [-70.81820941491732, 42.810614708600234], [-70.818084784792816, 42.810337167081421], [-70.816501241463811, 42.809290997403927], [-70.816391360207049, 42.807749314970096], [-70.816376346068921, 42.807544973349849], [-70.815911251863412, 42.80661557255312], [-70.815817756893125, 42.805950590086525], [-70.815693634180604, 42.805718057922448], [-70.814855102902115, 42.804965943222911], [-70.814698697367646, 42.804275291893987], [-70.813394581637922, 42.803340912472123], [-70.813146253366, 42.802651333952589], [-70.812804449010315, 42.802818632656752], [-70.811592682569369, 42.802765887614768], [-70.810444123350138, 42.803136056123421], [-70.810195624065003, 42.803500234329832], [-70.810009373887567, 42.80396218349145], [-70.810071724131035, 42.805330845341032], [-70.810693203783572, 42.806338797915444], [-70.811251753805024, 42.806888445554591], [-70.812214268013221, 42.807548512525791], [-70.812431648953876, 42.808419026262513], [-70.812649437326897, 42.808694336424004], [-70.813310207742845, 42.80922423585956], [-70.8137059161878, 42.809542277188413], [-70.814295209542294, 42.810181480306376], [-70.814450313672793, 42.810566688904082], [-70.815568555964532, 42.811485281970647], [-70.815817834949783, 42.811868794135627], [-70.815910980658487, 42.812218707236028], [-70.81678087435877, 42.813177499716417], [-70.818489741758341, 42.813726507158464], [-70.818862195076647, 42.814017927727626], [-70.819887773450276, 42.814506093099155], [-70.820540525554676, 42.815234573617111], [-70.820539678008899, 42.815945716100508], [-70.820415971425646, 42.816145822151611], [-70.81737189429731, 42.818140473106681], [-70.816781278949904, 42.818455927762798], [-70.815942206531318, 42.818713201053114], [-70.815321752769876, 42.818758506322787], [-70.815041491792044, 42.81864594688183], [-70.81454492691843, 42.818140616268693], [-70.81429654665726, 42.817550064536569], [-70.814016531442519, 42.817203005359943], [-70.811500253505173, 42.815468722331119], [-70.810878676082694, 42.815262484615253], [-70.809170063609912, 42.815370413660645], [-70.809077520662214, 42.815102055953915], [-70.809760453670904, 42.814253198717694], [-70.809822019546587, 42.813657821021486], [-70.80969811879028, 42.813272252350536], [-70.809418073296939, 42.812898625516958], [-70.809232294140173, 42.812514397704994], [-70.809250287007714, 42.811167642684424], [-70.809263644866064, 42.810108829750249], [-70.808953536273023, 42.808924401209538], [-70.808860019171121, 42.805557131595705], [-70.808704372161316, 42.804847842506184], [-70.808704382548257, 42.803614040308034], [-70.808580075951184, 42.803345491379588], [-70.808052350890947, 42.803021061706502], [-70.808145631060739, 42.801100789225089], [-70.808052186320282, 42.800417254968217], [-70.807773071189061, 42.799565985256336], [-70.807556038423385, 42.798605982314875], [-70.80752425646304, 42.797552565988987], [-70.807275869476072, 42.795745651984703], [-70.806654692180643, 42.793296196153641], [-70.806531540125192, 42.791397757205054], [-70.806376451432214, 42.790643454577626], [-70.806189640326679, 42.790349231738318], [-70.80615837343835, 42.790070523749044], [-70.805754539700303, 42.789230380893756], [-70.805661982089276, 42.788835449903331], [-70.804917096153744, 42.785748346628012], [-70.804793619796968, 42.783642312458539], [-70.804543969321472, 42.782502602619374], [-70.803645373254611, 42.779778060550903], [-70.803085753548487, 42.778129578518616], [-70.802868262378922, 42.777763688132502], [-70.802309759002128, 42.776304249627984], [-70.802155196609931, 42.775730520301003], [-70.801192828422188, 42.772484530388212], [-70.801162592649476, 42.772115895130035], [-70.800944680657281, 42.771614967266686], [-70.800231855695358, 42.76912214012215], [-70.79970453504221, 42.7668065085455], [-70.798152349720667, 42.763263805161827], [-70.795981243277069, 42.757776286757057], [-70.795112677387948, 42.755303261366706], [-70.795112360287305, 42.754961180368134], [-70.794585612414707, 42.75328583425798], [-70.793902963740365, 42.751116128612267], [-70.793411934434374, 42.75011560953029], [-70.792632866723025, 42.748380196735972], [-70.79185648063968, 42.746941863195282], [-70.791732856911295, 42.746574810828349], [-70.791515766539732, 42.746253907057955], [-70.7907715284164, 42.744698734399783], [-70.790585237695879, 42.744376937112591], [-70.790460939765396, 42.743973330252359], [-70.790243816886132, 42.743580946680204], [-70.788724369262383, 42.740469844611233], [-70.787849442436922, 42.739035914817848], [-70.787608077297762, 42.738641125699523], [-70.787329219696929, 42.738041936562624], [-70.786926504304461, 42.737499327020885], [-70.785841492623732, 42.735344993570315], [-70.785531364268977, 42.73456664343945], [-70.784880140448394, 42.733243804619654], [-70.784632365266958, 42.732761287625536], [-70.784508549805125, 42.732438694825774], [-70.783546993582917, 42.73042751281811], [-70.783237543731616, 42.72999061138394], [-70.783206011449209, 42.72981100281006], [-70.779796629084515, 42.724460539233611], [-70.77840130441767, 42.722193914161046], [-70.777782086431458, 42.720978714308551], [-70.776139648250677, 42.718185056291681], [-70.775302862711911, 42.716522869641658], [-70.774124981824698, 42.714325693889336], [-70.773939473376544, 42.713824365970169], [-70.771615939375593, 42.710023148128556], [-70.771151110319536, 42.709084616967004], [-70.770563547860817, 42.707373276899851], [-70.7704708355962, 42.706663225132495], [-70.770471544373265, 42.704465509618828], [-70.770875845362227, 42.704008944259044], [-70.771527250295335, 42.703620370935887], [-70.772178368622932, 42.703340269350321], [-70.773078201589797, 42.703136626540037], [-70.774411516031577, 42.702683634154532], [-70.777761697776867, 42.700757867814282], [-70.779034564763649, 42.69934183286616], [-70.779281763129347, 42.698932600507014], [-70.779840584072005, 42.698338601744894], [-70.78021293808608, 42.698179419456778], [-70.780833157736126, 42.698223788622364], [-70.78129769017383, 42.698360540410782], [-70.782227103682729, 42.699138887352191], [-70.784150073431562, 42.700513479170787], [-70.784490436166507, 42.700967408787925], [-70.784738575174401, 42.702179746723459], [-70.784675309170723, 42.702838229792846], [-70.784520328057496, 42.703372274615162], [-70.784520083386113, 42.704102085159086], [-70.783868861043686, 42.705381954293188], [-70.783806742343657, 42.706914200839918], [-70.784146241928852, 42.708304897202353], [-70.786595054789643, 42.710302228862489], [-70.787929172161242, 42.710074141926754], [-70.788704284823652, 42.710206022858188], [-70.788859399806398, 42.710392692557605], [-70.788828096995502, 42.710753669214512], [-70.788424984930742, 42.710940236474215], [-70.78780497574094, 42.711102961401494], [-70.786626521540782, 42.711058069569148], [-70.784083372939662, 42.710278787025459], [-70.783338827868988, 42.709821813983218], [-70.782657016209967, 42.709634211764225], [-70.781913544843277, 42.709843941216164], [-70.781603029967599, 42.710119371590721], [-70.781354247628215, 42.710600615569419], [-70.781353475329638, 42.710871217736212], [-70.781415230639098, 42.711256986760041], [-70.781167613878878, 42.711486175126772], [-70.781167290637839, 42.711738775559219], [-70.781632757498258, 42.712037660402821], [-70.78163234599694, 42.712244708982723], [-70.781446331952623, 42.712445473370941], [-70.781073587644045, 42.7126316636298], [-70.780980692184187, 42.712930410060181], [-70.780639466295128, 42.713295668977139], [-70.780638742824252, 42.713476339042288], [-70.781632466458916, 42.713388531966544], [-70.782159743162708, 42.71318250398226], [-70.782656225673719, 42.712679209348941], [-70.782625524148912, 42.712309927857241], [-70.782532156816345, 42.711762463913225], [-70.782779841856311, 42.71162329533319], [-70.783244882648191, 42.711553080095641], [-70.786284887577494, 42.712108591367745], [-70.786687973955324, 42.712399148989363], [-70.787090497619587, 42.712384256454641], [-70.787401579091721, 42.712262392964718], [-70.787742888041848, 42.711950497918821], [-70.787990574273877, 42.711874964173326], [-70.788363412759381, 42.711904805326355], [-70.788672634900308, 42.712152017909169], [-70.788982428172034, 42.712651295179199], [-70.789045091516797, 42.713803423570056], [-70.788826786610215, 42.714572850803364], [-70.788827251257501, 42.715103983984086], [-70.789075516979494, 42.715604592526624], [-70.789043783582102, 42.716316741989161], [-70.788174868618711, 42.716861612484095], [-70.787895460303218, 42.717181721458239], [-70.787865105343272, 42.717803226635731], [-70.787709245223766, 42.718058289565256], [-70.786778310333688, 42.718513916068481], [-70.78578658675373, 42.719268482887969], [-70.785382325146458, 42.71967954712283], [-70.784978410671869, 42.719812624224829], [-70.784358493488014, 42.719722729691583], [-70.784018089075531, 42.719467391386424], [-70.783676706935552, 42.71954467726993], [-70.783707268875958, 42.719841308929894], [-70.784048439596262, 42.720115197382476], [-70.784079846318207, 42.720294895570376], [-70.784513682476017, 42.720612116475706], [-70.78398622173583, 42.721322816902322], [-70.784047044692329, 42.721664106189813], [-70.784295831595088, 42.721849650498612], [-70.785008835497095, 42.72205489849194], [-70.785350257726549, 42.722265228889462], [-70.78615568899113, 42.723675623272413], [-70.786931921392934, 42.724186243224977], [-70.788264948896668, 42.72486790532048], [-70.788947447783499, 42.725604699470381], [-70.789196162834585, 42.726285351764481], [-70.789878198952024, 42.72686000795818], [-70.790312412530383, 42.727042175717607], [-70.789784060304029, 42.727573392248907], [-70.789753063418019, 42.727798886345226], [-70.790063365684716, 42.72800108917653], [-70.79046676915533, 42.728003563944824], [-70.790715120056859, 42.727387267980184], [-70.791180540513281, 42.726902923056279], [-70.791181106696811, 42.726560213872418], [-70.790869609028363, 42.72642102179892], [-70.790373628840257, 42.726356675751717], [-70.78990817702244, 42.726129935698864], [-70.789505475870982, 42.725785380799984], [-70.78925877972857, 42.724645090016281], [-70.789010232328749, 42.724252508041019], [-70.788296034966066, 42.723750205741119], [-70.78643592416131, 42.722834027414173], [-70.786156971170712, 42.722540815563512], [-70.78615653211908, 42.721234955383537], [-70.786343093746908, 42.720890062212625], [-70.78631262319665, 42.720250718457095], [-70.786653478181123, 42.719767872654671], [-70.787087998950838, 42.719400831228548], [-70.787895712566169, 42.718442571255345], [-70.788391557257341, 42.718146299577199], [-70.788887775550293, 42.718075713210737], [-70.789136264503796, 42.71823360875014], [-70.789415523822072, 42.718283126260445], [-70.789508563745983, 42.71812003780704], [-70.789508663676983, 42.71773294386221], [-70.789446661207961, 42.717093946896028], [-70.790005404634542, 42.716382783260705], [-70.789974082192941, 42.715491372741404], [-70.789694715571841, 42.715009209734788], [-70.789727026820401, 42.714666784112104], [-70.789974890806661, 42.714554608011547], [-70.790377921766861, 42.714809683299222], [-70.790843198779115, 42.715423606627731], [-70.791308033585324, 42.716110082950721], [-70.791742269610054, 42.716544218187046], [-70.792051839327371, 42.717089125783332], [-70.793386328834075, 42.717230068062278], [-70.793603292526925, 42.717325916321393], [-70.793478135120225, 42.718327726479473], [-70.793882153133666, 42.71867227683088], [-70.794222624158678, 42.71946879809208], [-70.795090731771751, 42.720040149092704], [-70.795928448859897, 42.720459351512979], [-70.797944217957195, 42.721896198011613], [-70.798626309022268, 42.722173191610928], [-70.798999182555349, 42.722698658289112], [-70.799091568856539, 42.72384141400503], [-70.799247010710246, 42.724136006558041], [-70.799184180869318, 42.724416403680863], [-70.798936563665791, 42.724690639850593], [-70.798346357528061, 42.7247989586252], [-70.798160531735746, 42.725071857475783], [-70.798129267688367, 42.725531948717752], [-70.798316049414467, 42.725808188024935], [-70.798997963060486, 42.72736465511052], [-70.798967194998866, 42.727572598660352], [-70.798780688378358, 42.727818487677624], [-70.798315168761704, 42.727681712998418], [-70.797788029270066, 42.727158639681008], [-70.797445940184559, 42.727154942381325], [-70.797167229964174, 42.727456442399934], [-70.796268506736183, 42.727569717609974], [-70.795337056848396, 42.728205992282028], [-70.794282166755011, 42.728393738954239], [-70.794189155085078, 42.728782515091815], [-70.795367962687394, 42.728989368595101], [-70.7962055059986, 42.728714859535373], [-70.796732942287534, 42.728436209237636], [-70.797229742451819, 42.728527539299606], [-70.797198075422415, 42.728869969139659], [-70.797012477470787, 42.729197420341819], [-70.797167398070457, 42.72958266369556], [-70.797569907008125, 42.72951309094195], [-70.797756715762404, 42.728825559903456], [-70.79819095031695, 42.728899671979882], [-70.798314268980448, 42.729852398067138], [-70.798438666069288, 42.730084957953792], [-70.798655796346182, 42.730225267659236], [-70.799183266271754, 42.730316234960881], [-70.799183540063098, 42.73063131196632], [-70.79794255304607, 42.731615104931286], [-70.797756094842654, 42.731887998802463], [-70.797756405506121, 42.732122596700485], [-70.798376503524409, 42.732580967223328], [-70.798396172562875, 42.73354323581929], [-70.798872320952938, 42.734176272144232], [-70.798902954721996, 42.734823981758765], [-70.799058286423232, 42.735163673365129], [-70.799275281190049, 42.735394542239071], [-70.799337187733414, 42.736348603222908], [-70.799927841311714, 42.73683487280644], [-70.800051274694397, 42.737111894992069], [-70.799896340072308, 42.737492377959441], [-70.799306221599721, 42.737790377305394], [-70.798685285200776, 42.738277861737743], [-70.797134098433943, 42.738275201309335], [-70.797134870863204, 42.738752318895997], [-70.797350707348272, 42.738956177644951], [-70.798344400662756, 42.738850221003922], [-70.798654785099586, 42.739052400036876], [-70.798839772153968, 42.739734261878411], [-70.799120146073676, 42.740306515053419], [-70.79961565059655, 42.740676351489149], [-70.800113212477584, 42.740587630373575], [-70.800857425134922, 42.740107725325359], [-70.800950474680747, 42.739943998761447], [-70.800857046853579, 42.739603604165282], [-70.800577966889605, 42.739166394839792], [-70.799801760341396, 42.738637956745208], [-70.799833585498405, 42.738159866256794], [-70.80033029999268, 42.737882094418723], [-70.800609532277022, 42.73793167385476], [-70.801136978591586, 42.738184669763783], [-70.801912108263792, 42.738865588451539], [-70.803184476473461, 42.740611206900923], [-70.803556625127555, 42.740884681118118], [-70.804115004879307, 42.741082666176837], [-70.804580880635015, 42.741661062114417], [-70.804083798554203, 42.742092425751792], [-70.803432507560515, 42.742210575781812], [-70.803091110665079, 42.742026857576519], [-70.802471062599679, 42.741541508509748], [-70.802005133534777, 42.741431753856418], [-70.801416464175716, 42.740882493138422], [-70.801229440313435, 42.7413809814906], [-70.801508235612232, 42.741845103438123], [-70.801477408439297, 42.74202549979983], [-70.801106033997328, 42.742319787112208], [-70.801198415194847, 42.742480132557027], [-70.801508950839235, 42.742484257929476], [-70.801849990898234, 42.742325988330009], [-70.801880924102235, 42.742135960269813], [-70.803029041766223, 42.742712264733825], [-70.803836347454777, 42.742645107387389], [-70.804642212259637, 42.742299500448105], [-70.80495299148437, 42.742303618046506], [-70.805324834897874, 42.742982089406809], [-70.805263657083003, 42.743721605412439], [-70.805014842759888, 42.743878728505045], [-70.804518257561412, 42.743877455510315], [-70.803773177752475, 42.743673218424476], [-70.80333919160536, 42.743743253583339], [-70.803370299886467, 42.7439228528768], [-70.803618489089843, 42.744153360296949], [-70.804642468982706, 42.744308052536176], [-70.80544889565185, 42.744178403970146], [-70.805883383501936, 42.743675812718926], [-70.806132485954706, 42.743536603686387], [-70.806411230649772, 42.743577703944894], [-70.806814329785908, 42.744336836224178], [-70.806565638034115, 42.745844908499087], [-70.806411448687541, 42.745982346748917], [-70.806814097383125, 42.746462500629903], [-70.806690719586143, 42.746851642362252], [-70.807279777575786, 42.747031250840195], [-70.807373436267781, 42.747399186903586], [-70.808335289841921, 42.747744228423727], [-70.808427364717673, 42.747968120577262], [-70.808428454034882, 42.748202181452534], [-70.808117512236606, 42.748432126754068], [-70.808179663915482, 42.748611459852604], [-70.808954952686406, 42.748563159544503], [-70.809049258550374, 42.748795526404713], [-70.808552120411363, 42.748929839105763], [-70.808676529635875, 42.749134839709811], [-70.809234660726361, 42.749252408854453], [-70.80935880480429, 42.749637448816507], [-70.809222002709248, 42.750059730122778], [-70.809170822563928, 42.750270973604231], [-70.808954563335817, 42.750976346013658], [-70.809048410970973, 42.751506318701637], [-70.808862249837432, 42.751806776822114], [-70.808427745442174, 42.752074783792722], [-70.808117767027582, 42.753358517748211], [-70.808210364165035, 42.754501254289593], [-70.807217677010897, 42.754661314694808], [-70.807247703048432, 42.754984938832152], [-70.808147745353807, 42.755673399338129], [-70.807992698752344, 42.75600887970856], [-70.806906272887375, 42.75631466084274], [-70.806813473650848, 42.756676438284103], [-70.80852059439988, 42.756603920473466], [-70.80873800768795, 42.7567177449301], [-70.808769454696048, 42.757068473086584], [-70.808085643255453, 42.758052363682218], [-70.80786890449582, 42.758254154347597], [-70.807309797736139, 42.758506288220069], [-70.806347612938353, 42.758575333224599], [-70.806347016090683, 42.758872937746474], [-70.806533947934568, 42.759059230174749], [-70.807185371220015, 42.759166024585561], [-70.808396794568807, 42.759173269136319], [-70.808706591563336, 42.759285394936647], [-70.80892358304385, 42.759993981886304], [-70.809171292707902, 42.760242386846656], [-70.810196552330794, 42.760171983786634], [-70.810537475930246, 42.760454248814071], [-70.810693431505186, 42.760659434158384], [-70.810692689180669, 42.761406599800253], [-70.809761508545137, 42.762664668240141], [-70.809637813635618, 42.763081445407479], [-70.809762215322337, 42.763746087875731], [-70.810568488602115, 42.76449860182025], [-70.810630633751742, 42.765326619192017], [-70.810289997121473, 42.765962024267175], [-70.810351360488397, 42.766348937158007], [-70.810785288339218, 42.766765614872568], [-70.810910290588112, 42.767087551460349], [-70.811127053773134, 42.767264381109293], [-70.812678653871558, 42.767383878487948], [-70.813765745113074, 42.767636262989349], [-70.815876860238362, 42.76744954313159], [-70.816900948870057, 42.767766700416573], [-70.816994407166177, 42.768161090304588], [-70.816777537752628, 42.768453006436012], [-70.816156047053695, 42.768796454850097], [-70.814883656769979, 42.769321131059634], [-70.814200935437668, 42.769899429358489], [-70.813766198522956, 42.770582176848464], [-70.813766272157991, 42.772365656228509], [-70.81401442931076, 42.773217276622006], [-70.814201034575532, 42.773439471424744], [-70.814386317181345, 42.774085382246035], [-70.814356346828347, 42.774995487357181], [-70.814076641720661, 42.775756750211862], [-70.811096457732475, 42.779551401640987], [-70.810351212062727, 42.780257042245715], [-70.810257484565994, 42.780690829895093], [-70.810599316067197, 42.781613318658984], [-70.811251265571315, 42.782206828249613], [-70.811530980113275, 42.782688387274654], [-70.811685821904689, 42.782955946434534], [-70.811934194352503, 42.784213198110315], [-70.812121393523711, 42.784562056556524], [-70.812338356130169, 42.784648323811226], [-70.812773174849767, 42.78460526514116], [-70.813020797044629, 42.784313090073262], [-70.81302174180162, 42.783511379788941], [-70.812865834985985, 42.783027678933941], [-70.812462104137879, 42.782475621625878], [-70.811500203905453, 42.781247887099809], [-70.811344508636083, 42.780835660511237], [-70.81137600290711, 42.780303650346809], [-70.811903322604138, 42.77989044326614], [-70.812679951834909, 42.779553520464759], [-70.813673718854616, 42.778456671422646], [-70.814574296767631, 42.777766602449802], [-70.815505666507349, 42.775616674373673], [-70.815815303199827, 42.774584984845355], [-70.815691438156875, 42.773560275101261], [-70.81531836007899, 42.772755180393162], [-70.815256328275581, 42.772089835094981], [-70.81534868197366, 42.771845076487203], [-70.816218477871857, 42.770975311394047], [-70.818080836891284, 42.769828367001146], [-70.819042916425829, 42.768317820467203], [-70.819166433828158, 42.767766002965658], [-70.819012006546586, 42.767201388059817], [-70.818390438006006, 42.766653107571379], [-70.816590879214615, 42.76557350711424], [-70.815442118358817, 42.765096363495132], [-70.814604171359534, 42.764542281179075], [-70.814479716889167, 42.763877644323891], [-70.81466564737616, 42.763352666174775], [-70.815659251410253, 42.761705499829816], [-70.816155102428681, 42.760742961039469], [-70.816279625925418, 42.76015577300511], [-70.816155749864151, 42.758662411652672], [-70.815751423199956, 42.757795284946027], [-70.815162046331039, 42.757128977909368], [-70.815099672802646, 42.75687772149746], [-70.815193347020568, 42.756218244784975], [-70.815037752963789, 42.755878666578404], [-70.815100552647166, 42.755373212339961], [-70.815503745252869, 42.755276574805521], [-70.817086231459257, 42.755944783506983], [-70.817862281594699, 42.756149115430709], [-70.818296535721856, 42.756376095170872], [-70.819073351831648, 42.757615659620264], [-70.820377408686326, 42.758531990792456], [-70.821152534653734, 42.758690114294247], [-70.824535619881559, 42.760563786205857], [-70.825622041220413, 42.760997177449084], [-70.82729879985888, 42.761338839062986], [-70.828447275833142, 42.761455782580917], [-70.832451485960249, 42.761454188238247], [-70.835959291285647, 42.76225357963726], [-70.839187249956154, 42.762777875491217], [-70.844216176912752, 42.762660191672573], [-70.846171736953053, 42.76309713901216], [-70.846916973068346, 42.763004034130859], [-70.847289030612671, 42.762799626439595], [-70.84790910723973, 42.76288810015005], [-70.848096600511155, 42.763209897868926], [-70.849492797965311, 42.763042753197674], [-70.849896538847304, 42.763117037418461], [-70.850765153065524, 42.763391432493833], [-70.851479300970382, 42.763433694145014], [-70.856197311262264, 42.763293492898299], [-70.857439216386538, 42.763111351154024], [-70.860945439621631, 42.76155874086183], [-70.86150371513034, 42.761261424673293], [-70.863551848764374, 42.760839977554532], [-70.864451186429662, 42.760519226308801], [-70.865134542074671, 42.760039658554049], [-70.865444258582471, 42.759746541089328], [-70.866126492254452, 42.758419692295256], [-70.866744815312444, 42.756400954264109], [-70.867179171757371, 42.755943686827486], [-70.867613199519681, 42.755809858475246], [-70.868451263902656, 42.755742418190898], [-70.869445291880822, 42.75589700118072], [-70.87065538592627, 42.755994147505717], [-70.872765382143228, 42.755580795995613], [-70.873355265122441, 42.755373614067572], [-70.87416189555573, 42.754756839551561], [-70.873819237505558, 42.754500679241673], [-70.87288902844189, 42.754525439614511], [-70.871864627379608, 42.754893468464388], [-70.871492368621134, 42.754935287445761], [-70.870406061220848, 42.755079626934993], [-70.868450976261855, 42.754895686891921], [-70.868016804713321, 42.754983877352977], [-70.86680573673172, 42.754985720193758], [-70.866092231029327, 42.755348646779687], [-70.86513037438138, 42.755517834032041], [-70.864882123001067, 42.755629537464202], [-70.864292731323388, 42.756062899838518], [-70.862525639563131, 42.758118604076721], [-70.862277382796265, 42.758879527146199], [-70.861937233457127, 42.759425695134105], [-70.860882509129809, 42.760298652418832], [-70.858121534118155, 42.761605050156483], [-70.856321648321753, 42.76224707102012], [-70.854613141155454, 42.762445774488462], [-70.853558703331444, 42.762408923887818], [-70.851820281195216, 42.762130852685829], [-70.849770718104608, 42.761651253223526], [-70.849460421521101, 42.761673725204204], [-70.848684735395778, 42.761488692823868], [-70.848281929946864, 42.761855508312657], [-70.847815992303367, 42.761854054349627], [-70.846978028499109, 42.761678291787874], [-70.846108381621974, 42.761260369896348], [-70.845053322081611, 42.761015851569709], [-70.844246312537095, 42.760966272513784], [-70.842663676924346, 42.761289290521638], [-70.840676788923787, 42.761447318548171], [-70.839404716955968, 42.761359587913951], [-70.838224145013157, 42.761063699474747], [-70.837976225208223, 42.760905286490839], [-70.836858281135989, 42.760626575949779], [-70.835213234732464, 42.75998645763196], [-70.833599424214398, 42.759525906213675], [-70.829005317303469, 42.758780373004818], [-70.827701487525829, 42.75845881619442], [-70.827142717588217, 42.758161922711729], [-70.825311792533256, 42.75749807637628], [-70.824504084120491, 42.757087102971369], [-70.823417166662892, 42.75601455156152], [-70.823293389005229, 42.755574977793096], [-70.823231404172574, 42.754206933014935], [-70.822362107494868, 42.752942098147088], [-70.821088938750208, 42.751413287435412], [-70.821275725823881, 42.751139819843843], [-70.821709459406975, 42.75123184322171], [-70.822331159643284, 42.752005702116712], [-70.823230761183908, 42.75266694651981], [-70.824286187870243, 42.752856575278678], [-70.825247962636183, 42.752508315316838], [-70.826178538830845, 42.751844703491962], [-70.826737766365056, 42.751340511592332], [-70.827234158720046, 42.751251126995101], [-70.827979230587189, 42.751437207353447], [-70.828506826662021, 42.751365372470794], [-70.829189107224437, 42.751003125060997], [-70.829871811409745, 42.750749350964306], [-70.830368105336845, 42.751092591581966], [-70.830493598191751, 42.752946121647646], [-70.830678962465171, 42.75358291897836], [-70.831300171673846, 42.754518762392046], [-70.831704721529903, 42.754728146159103], [-70.832386700454023, 42.754798517032405], [-70.83297611604246, 42.754635917545656], [-70.83331760343016, 42.754341987651515], [-70.833938477531561, 42.75337721158435], [-70.834527862661858, 42.752962006415537], [-70.835241889899962, 42.752599276012873], [-70.836328527285886, 42.752392883656078], [-70.836638047589418, 42.752162315092654], [-70.83689029883314, 42.75192970719889], [-70.837094444815264, 42.75174120335879], [-70.837289460621662, 42.751561198827211], [-70.837454229029134, 42.75124932072103], [-70.838003198754407, 42.751176484723771], [-70.838313106090425, 42.751360548590476], [-70.838685558876719, 42.751822952451093], [-70.839152256921736, 42.752140059925303], [-70.83989643498704, 42.752415538533718], [-70.840362473378917, 42.752435659598177], [-70.840982760677576, 42.752272025131212], [-70.84135476739479, 42.752068265862505], [-70.841388683329996, 42.751769140652229], [-70.841454329674932, 42.751367752591214], [-70.841817252524464, 42.75079431577867], [-70.842061456770494, 42.750581275362599], [-70.842347451715028, 42.750331473457543], [-70.841943107164354, 42.75014850380861], [-70.841385396611471, 42.750310789144443], [-70.840857774548908, 42.750923255938638], [-70.840206566512379, 42.751473801812381], [-70.839616445021335, 42.751591963845158], [-70.839127981255302, 42.751497984855824], [-70.839017110766321, 42.751238542624449], [-70.838934362090257, 42.751046236190561], [-70.838436971217789, 42.750628759319277], [-70.837847709519522, 42.750422213001016], [-70.837164749492246, 42.750541541739565], [-70.83691619037684, 42.750725830401841], [-70.83654419843586, 42.751182173374147], [-70.836047525026103, 42.751496107529562], [-70.83561362854455, 42.751683200872804], [-70.834279126028179, 42.751938842632214], [-70.833813749460418, 42.752144922550983], [-70.833441409426641, 42.75241230034009], [-70.832820325365319, 42.753304966384952], [-70.832449068195189, 42.753653365664732], [-70.831920200225341, 42.753671108860885], [-70.831671969071436, 42.75355769018708], [-70.831671705716232, 42.753008023164327], [-70.832230258777088, 42.751161324108203], [-70.832291726802879, 42.750376788908177], [-70.831981432834127, 42.750219712689102], [-70.831268646047292, 42.750041766600432], [-70.830865090127261, 42.749994423732545], [-70.82909677160302, 42.750040989367122], [-70.828722910711747, 42.750038281373691], [-70.828258154067996, 42.750288812696184], [-70.827606135356319, 42.750380088244796], [-70.825278316863134, 42.750408760304211], [-70.82406942048496, 42.751022848998254], [-70.823417337569254, 42.75109609649256], [-70.82292121126298, 42.750842847533171], [-70.822857838455775, 42.750682059871174], [-70.822908087990996, 42.750042666646301], [-70.822795828081894, 42.749567150666486], [-70.82245541764388, 42.749158354485616], [-70.82242419629759, 42.748474013854292], [-70.821461790089657, 42.747742087361289], [-70.821244327209854, 42.746502395562885], [-70.821089776321941, 42.746189836788162], [-70.820871176238626, 42.744932222950823], [-70.820684660024483, 42.744763959399663], [-70.820623129456536, 42.744467699446481], [-70.820313498718932, 42.744175563789504], [-70.820220376046294, 42.743717620420291], [-70.819660793814123, 42.742393814323449], [-70.818730447070081, 42.741588864255505], [-70.818109262492314, 42.74094992698857], [-70.817240589984465, 42.740216264560779], [-70.81692938711376, 42.739645044548126], [-70.81438608892411, 42.737037393850038], [-70.814322702563331, 42.736533979747463], [-70.815347086208305, 42.735823836862288], [-70.815626916725307, 42.736188907985486], [-70.81565741072265, 42.736674662726585], [-70.815441329149834, 42.736948489306783], [-70.815409926401813, 42.73730901840981], [-70.815906654189817, 42.738021953154202], [-70.816588306796376, 42.738407490757808], [-70.817085724172799, 42.738867824868606], [-70.817860374866399, 42.739350586250843], [-70.81854344210825, 42.739484061311664], [-70.819567691364327, 42.73935055609472], [-70.821646516976429, 42.738705067653157], [-70.823166486212699, 42.738590729547091], [-70.823104026350975, 42.738266828414865], [-70.822888060083002, 42.738135574380593], [-70.821677109707423, 42.737974905841568], [-70.819411649607062, 42.738704277183423], [-70.818791683611465, 42.738777687103038], [-70.817984985203168, 42.738502331689354], [-70.81739485969743, 42.738133186079622], [-70.816960787395828, 42.737654052601236], [-70.816588224671989, 42.736785939081223], [-70.816339943442216, 42.73539418503772], [-70.816123315357927, 42.734820729848664], [-70.81547148268227, 42.73383114240481], [-70.815409252058529, 42.733445393060997], [-70.815161074352631, 42.732899835573505], [-70.814819937252253, 42.731797305021217], [-70.814634042058515, 42.731521098707347], [-70.814478283867118, 42.731000842858052], [-70.814509247975295, 42.729784657180922], [-70.814292417760171, 42.729445791921911], [-70.814261712706738, 42.72905905788889], [-70.814416512457072, 42.7283898556392], [-70.815068204180506, 42.727748981948473], [-70.816153029996997, 42.728686491270132], [-70.815781271661422, 42.728782776707398], [-70.815222948925154, 42.728530204010504], [-70.815037118815155, 42.728641090627576], [-70.815129881894961, 42.729261077305814], [-70.814974886699559, 42.729623666190228], [-70.815378366323714, 42.729698611737973], [-70.816433022077661, 42.729348723140518], [-70.816773911587376, 42.72917177417775], [-70.81730144866016, 42.729145631368219], [-70.817518422290561, 42.729348919545771], [-70.817735410673279, 42.73001239672648], [-70.817611650322746, 42.730175955857533], [-70.817364085956157, 42.730225717591573], [-70.816929095492824, 42.729926079635248], [-70.816339606278049, 42.729854541580757], [-70.816215834686631, 42.730108660703195], [-70.81661900113366, 42.730561149707952], [-70.817053384005789, 42.730860785162321], [-70.81714641552098, 42.731345738964905], [-70.817487599440696, 42.731412477488277], [-70.817735845292418, 42.731345345382501], [-70.817859344732938, 42.730857077843709], [-70.818635774975718, 42.730907833962718], [-70.81919352995267, 42.731204766735004], [-70.8192246774681, 42.731429463213004], [-70.818821231402637, 42.732003765195714], [-70.818264360165642, 42.732120393670151], [-70.81776712904049, 42.731939670656182], [-70.817301786957373, 42.731937465904693], [-70.817084924786911, 42.732004242200965], [-70.816711728915976, 42.732298569058329], [-70.816650136297284, 42.732876052108772], [-70.816774419032043, 42.733080954389102], [-70.817240629872799, 42.733127636856388], [-70.817395109274116, 42.732395954985506], [-70.817860148602833, 42.732280049595865], [-70.818170387216441, 42.732599743508409], [-70.818604355369175, 42.7327367919127], [-70.819038982168394, 42.73271171420933], [-70.819597718347026, 42.732603644997241], [-70.819783650755639, 42.732348177586935], [-70.819814827126365, 42.731915718499991], [-70.820000877036406, 42.731615240731962], [-70.820249530171068, 42.73152154935417], [-70.821613601118315, 42.732417975619839], [-70.825275427698358, 42.733494346934698], [-70.826671521769441, 42.733760120601687], [-70.827167615459771, 42.733788392520324], [-70.83036320847792, 42.733286428956546], [-70.834055305976662, 42.73284926074664], [-70.834333956797025, 42.732988686644319], [-70.834490105520658, 42.73358030365943], [-70.834955474219711, 42.733788947826781], [-70.83548251572617, 42.733627687446521], [-70.835234570753627, 42.733055169062055], [-70.835233800511958, 42.732550506055958], [-70.835947339463942, 42.732431364592557], [-70.837033479504441, 42.732621056414274], [-70.838616273081584, 42.732414604439796], [-70.839329415823784, 42.732727541307341], [-70.839919462470675, 42.732843975589155], [-70.840291097274743, 42.732595206347469], [-70.841067207244834, 42.732528692386225], [-70.842680389710537, 42.732754549263099], [-70.843455644383241, 42.732688014428369], [-70.84333172400305, 42.732428500530283], [-70.84323860298359, 42.732178163416194], [-70.843703378966921, 42.731719982694365], [-70.844261832135814, 42.731540316265118], [-70.845162240575661, 42.731426137985522], [-70.845782002734836, 42.731632191587757], [-70.846185727209544, 42.731653018089098], [-70.846526515269602, 42.731584636906781], [-70.84649586559614, 42.731314400486191], [-70.846123393119271, 42.731059697011638], [-70.845130306556584, 42.73078734761603], [-70.844261341657045, 42.730873077115817], [-70.843392588278093, 42.731148835924714], [-70.84147008717656, 42.731954310869085], [-70.841222334865662, 42.731976576019235], [-70.840817417886271, 42.731766591004074], [-70.840725135426936, 42.731309207882013], [-70.841934170479448, 42.729848206041602], [-70.842306134845344, 42.729553791352544], [-70.842771890201334, 42.7294563345462], [-70.844632901738677, 42.729363367102287], [-70.845314828533617, 42.72922598473604], [-70.846277726607099, 42.7288410076928], [-70.847548046337423, 42.728081828285497], [-70.848416835556591, 42.727301829769132], [-70.848634325450206, 42.726874913588475], [-70.848974256219293, 42.726662486461464], [-70.849656894126824, 42.726570633337545], [-70.850680592684213, 42.727030990600383], [-70.851208159323448, 42.727211742265503], [-70.85182926703078, 42.727237729067028], [-70.853224334389651, 42.726935593778784], [-70.853752773800821, 42.72671124337586], [-70.855023767337812, 42.725492337798045], [-70.855581271317178, 42.725086928362117], [-70.8568838475978, 42.724533794798688], [-70.857135872541193, 42.724197615961749], [-70.857100938390488, 42.723733272297657], [-70.856262182102981, 42.723598617274561], [-70.855859393985838, 42.724325547351569], [-70.85554959834478, 42.724555626672924], [-70.854247986296315, 42.725108750659665], [-70.852789979962395, 42.726203993177251], [-70.85185946383308, 42.726570661138915], [-70.851455892201813, 42.726549855084386], [-70.850463474553081, 42.725981024823618], [-70.849564006577396, 42.725635060753689], [-70.848912072164552, 42.725663441076591], [-70.848446951564341, 42.725797564740127], [-70.848012005537768, 42.726047713953761], [-70.847020623032918, 42.726829268114862], [-70.846803327094634, 42.727013125103767], [-70.845935036099419, 42.727837584967283], [-70.845252588649444, 42.728155550569632], [-70.844042724002861, 42.728454139130932], [-70.842864564043538, 42.728545396258902], [-70.842430229057683, 42.728452907196584], [-70.841747453650953, 42.728473240158984], [-70.84125086334366, 42.728589061646275], [-70.840599513895484, 42.728861086098867], [-70.840258592871422, 42.729164044393421], [-70.839545426456482, 42.730309996345845], [-70.838863413950023, 42.730627386688454], [-70.83709545746359, 42.730854116158291], [-70.834333508519393, 42.73049338686647], [-70.834023135255862, 42.730237290705979], [-70.833992285071503, 42.729760540634395], [-70.834302575075824, 42.729412953925937], [-70.834270692900702, 42.728549106349099], [-70.833960444784452, 42.728455048851352], [-70.833650470368056, 42.728162405094977], [-70.833557098171141, 42.726695689875719], [-70.833308593078698, 42.726168713581515], [-70.832905260634604, 42.725688735103063], [-70.832904709673173, 42.725004029177398], [-70.832625833215488, 42.724981535754075], [-70.83203614008211, 42.724748037660099], [-70.83098091406147, 42.723881695094256], [-70.829740076288402, 42.723857048311139], [-70.828064698718762, 42.723352751160469], [-70.827444572606908, 42.723011026762016], [-70.827289482899275, 42.722671464039422], [-70.827071472759414, 42.722575673460497], [-70.826047809616185, 42.722556210971227], [-70.825458939432565, 42.722466628137731], [-70.823939677257115, 42.721257141751366], [-70.823752969172475, 42.720998948735783], [-70.823597452049668, 42.720451698316381], [-70.822853319625196, 42.719283814974119], [-70.822542631960019, 42.719009680283662], [-70.822418480275218, 42.718714132113092], [-70.822386866157785, 42.717795725602251], [-70.822045309264681, 42.71699982263894], [-70.821859873382806, 42.71684065745962], [-70.82182857359544, 42.716561946887211], [-70.82210789173736, 42.716494357457627], [-70.822293689151692, 42.716608603526147], [-70.822387188656506, 42.716813950765719], [-70.822821339087028, 42.717185582133219], [-70.823286393365663, 42.717295159563335], [-70.823937962294409, 42.717293928386511], [-70.824310027058843, 42.717161609944185], [-70.824123880025823, 42.716795394544263], [-70.823379604362032, 42.716699311118319], [-70.823006786890986, 42.716516005956649], [-70.822696718979913, 42.716196864100397], [-70.822510623801818, 42.71562296576387], [-70.82241800544557, 42.715029989874573], [-70.822604136907273, 42.714387424199707], [-70.822976073615635, 42.713777993608282], [-70.823936929322215, 42.713312709639276], [-70.823750289995743, 42.713197920992329], [-70.82365784377096, 42.713019587315095], [-70.823688500958198, 42.711757840333178], [-70.823812791062764, 42.711233559382073], [-70.823782506085934, 42.710666874475756], [-70.823037092729152, 42.710048114245957], [-70.822851136330414, 42.709564778098837], [-70.822261068331684, 42.708997604305566], [-70.822354786112498, 42.708762385888456], [-70.823005489780755, 42.708742610881231], [-70.823657502776356, 42.708623725679303], [-70.82461873753293, 42.708149435761314], [-70.825021342543096, 42.707782155869928], [-70.825269373039433, 42.707418383939135], [-70.825517294526875, 42.7056756536374], [-70.825641057134746, 42.705448529562133], [-70.825888782387324, 42.705237341708106], [-70.827749937070621, 42.704369830113947], [-70.8286493255045, 42.704283412241118], [-70.828927803715672, 42.704368839053231], [-70.829300992034888, 42.704741174631543], [-70.829331794396325, 42.705217929922618], [-70.829052668624641, 42.705925234299507], [-70.828059590731812, 42.70706724919394], [-70.827874648776842, 42.70745722979062], [-70.827843359596869, 42.708512015285386], [-70.828061332754345, 42.70988665631009], [-70.82852631617294, 42.71041031346941], [-70.829488679692986, 42.710665167165367], [-70.830325062567979, 42.711093115611632], [-70.831379770817009, 42.711229209125584], [-70.831628483431444, 42.710936905391414], [-70.832000237673981, 42.710886210259702], [-70.832683101732641, 42.711000969044036], [-70.834139908332617, 42.711022328275831], [-70.83454346610938, 42.710907622515826], [-70.834419708555288, 42.710432585406558], [-70.83469865396161, 42.710130906755403], [-70.834666867620371, 42.709789271052529], [-70.834357077619202, 42.709695216136723], [-70.834139610366037, 42.709770482919879], [-70.833892192559375, 42.709999694214304], [-70.833302975876904, 42.71025232138529], [-70.832558068196363, 42.710336876636376], [-70.831101264801816, 42.710224935404376], [-70.83063567282997, 42.710043368302308], [-70.829580636889958, 42.709195552799741], [-70.829239831850813, 42.708714210054595], [-70.829021923191462, 42.708555947812094], [-70.828836218406337, 42.708216747887334], [-70.82883550780646, 42.707757091683213], [-70.829300489970692, 42.706974887854244], [-70.829952349960081, 42.706477874065776], [-70.83088274340713, 42.706129924446202], [-70.831067604547414, 42.705929074520746], [-70.831006266355857, 42.704488907608848], [-70.830571620762598, 42.703892246948449], [-70.830136653016183, 42.703475626776317], [-70.829454833043016, 42.703225194945226], [-70.828338654788197, 42.70306342950694], [-70.827376411610118, 42.703322321774976], [-70.825919212979997, 42.703958035323581], [-70.825547981874394, 42.704054355068763], [-70.825547428702009, 42.703684721099542], [-70.826322018849922, 42.702816561594197], [-70.827593931735549, 42.702201641319746], [-70.831159660273926, 42.702081164554336], [-70.832121695854298, 42.702263888123589], [-70.83277225460543, 42.70226260224414], [-70.833920383881846, 42.702126895995036], [-70.833733516144136, 42.701850712026136], [-70.832152279677061, 42.701785867356918], [-70.83060205811681, 42.70151358956192], [-70.828803644570627, 42.701488491786129], [-70.827252987261872, 42.701738294922649], [-70.827253447947683, 42.701558253299616], [-70.828616891840213, 42.70103225570675], [-70.828926653987367, 42.700712224469065], [-70.830353190108866, 42.699725208912696], [-70.831624269044724, 42.699362931501391], [-70.832337157575822, 42.699270275884956], [-70.833206041079208, 42.699544185545186], [-70.833732236025597, 42.699562972371808], [-70.834291304436547, 42.699427828121351], [-70.834600653084806, 42.699224178006915], [-70.834507883197716, 42.69885626368675], [-70.833857456411195, 42.698975218874359], [-70.833391730406802, 42.698928604241424], [-70.833081596543138, 42.698699509989659], [-70.832895432629172, 42.698450334995634], [-70.832833045080989, 42.697784891208045], [-70.832585073532925, 42.697230453692676], [-70.832336087575939, 42.697117028662312], [-70.831872257787396, 42.696755340859809], [-70.831747288016786, 42.696433419282492], [-70.831561947698191, 42.696291643221905], [-70.83125138170125, 42.696369157132622], [-70.831127821311497, 42.69656937217794], [-70.831345337470097, 42.697025242600539], [-70.831530633651056, 42.697481466405875], [-70.831592639046377, 42.698353869908281], [-70.83140787427439, 42.698582358408778], [-70.830972985839679, 42.698769519927623], [-70.828399886579831, 42.699179959405548], [-70.828028037682728, 42.699474242333139], [-70.827995769559578, 42.699844316144173], [-70.828182687198748, 42.700021485626991], [-70.828181896510998, 42.700255538723155], [-70.827873009599983, 42.700413533185063], [-70.826632256321261, 42.700595361573079], [-70.826291324756923, 42.700736331077721], [-70.825423117479218, 42.701470531906978], [-70.825020702013191, 42.701585212612066], [-70.824182818956331, 42.701652876900233], [-70.823625374750321, 42.701860089687194], [-70.822911506707356, 42.701835657196042], [-70.822446348280295, 42.702041064040266], [-70.821980898117332, 42.701967488564755], [-70.822042774655273, 42.7016960743426], [-70.822259601741933, 42.701395770938532], [-70.822229509800422, 42.70119808585973], [-70.821825951742824, 42.700988128690206], [-70.821701517035208, 42.700620558320317], [-70.821453953264594, 42.700624777348182], [-70.82123631282596, 42.700808045658086], [-70.821236736580758, 42.701492757124427], [-70.820926848660932, 42.701741289567053], [-70.820368298435142, 42.702038502419562], [-70.820307181893071, 42.702543887889711], [-70.820058642720781, 42.702773153469643], [-70.820027767545355, 42.702998567503798], [-70.821174597739883, 42.702907991033172], [-70.82129895648329, 42.703203543516473], [-70.820957960607387, 42.703415884519771], [-70.819779219152963, 42.703758963377986], [-70.81857077212338, 42.703733214493731], [-70.818230220929706, 42.703892166967542], [-70.818135976450492, 42.704118917279686], [-70.818259989268682, 42.704602977309655], [-70.819283220239782, 42.705199189731623], [-70.819253432568615, 42.705380138882646], [-70.818973260941021, 42.705609756160513], [-70.818384147831523, 42.705862308412001], [-70.817826233940821, 42.706321462369445], [-70.817391844940801, 42.706273888236673], [-70.816213388848936, 42.705887753468225], [-70.815531752502849, 42.705925941629488], [-70.814446232821084, 42.70627617962495], [-70.813764354275307, 42.706593424540806], [-70.813174766861337, 42.706908963019444], [-70.812740428763647, 42.707303560349196], [-70.812678203215143, 42.708016075315925], [-70.81280293079999, 42.709157846200583], [-70.812647495201389, 42.709385308478531], [-70.812151219600651, 42.709726692346322], [-70.81165507812797, 42.7098880308044], [-70.811035139425869, 42.71005088030774], [-70.809886617682992, 42.710204452239509], [-70.807840565584911, 42.710641705805578], [-70.806630678579111, 42.710823505245088], [-70.805762970315712, 42.710737910438908], [-70.802785004889088, 42.711073873854545], [-70.801172149901518, 42.710891927796979], [-70.798815934172808, 42.710235719455099], [-70.79667526360177, 42.709269656972445], [-70.796272129795568, 42.708970131507662], [-70.796117583029726, 42.708512868471765], [-70.796179315543796, 42.708079427087974], [-70.796768796876464, 42.707214298360952], [-70.796861571268707, 42.706438420701801], [-70.796025671912446, 42.706298302138144], [-70.79524976503447, 42.705815378109016], [-70.795094372041788, 42.70556569943458], [-70.794908626314694, 42.705127418752767], [-70.794474259950547, 42.704557628950944], [-70.79435086912433, 42.703892961244371], [-70.793948125312568, 42.702953730164083], [-70.79385518054184, 42.702567686732451], [-70.793886245312081, 42.701909632715356], [-70.793762200772278, 42.701695612088969], [-70.79190196880289, 42.700580921125479], [-70.791499763970592, 42.700010775739919], [-70.791498844833228, 42.699344603495994], [-70.791779137216977, 42.698655397543128], [-70.791189767402756, 42.697745889379497], [-70.790817906090155, 42.69746345931808], [-70.789639012275998, 42.69705841329116], [-70.789112174797481, 42.696688873577543], [-70.788708909841716, 42.695839100588003], [-70.78874140861727, 42.695252982905245], [-70.789081594878382, 42.694815674278793], [-70.789578508252333, 42.694429380271295], [-70.790229376991405, 42.694220653777748], [-70.791966097627295, 42.694058637923007], [-70.792679395137313, 42.693669154316034], [-70.793268584383085, 42.693506755219289], [-70.793640342112283, 42.693851653164131], [-70.794167302445118, 42.694014661350096], [-70.795190841571227, 42.6948637868162], [-70.795500680999893, 42.69534504542581], [-70.795469100384935, 42.695931080177154], [-70.795376101667031, 42.696094804732191], [-70.795065783165612, 42.696396739553236], [-70.794414877324485, 42.696640871808555], [-70.792802856674555, 42.696919096377044], [-70.792399911067179, 42.697078131831589], [-70.792305890122577, 42.697331870238415], [-70.792461539679962, 42.697762140137485], [-70.793111706273365, 42.698085156435241], [-70.79370168590151, 42.698084260397458], [-70.793980670754749, 42.697791680396506], [-70.794817670003155, 42.697670756411569], [-70.795778458039976, 42.697241082597557], [-70.796461267362787, 42.696807009188184], [-70.798352818815559, 42.696434736260905], [-70.799283059058851, 42.69636610854274], [-70.800244588663972, 42.696666214956153], [-70.800926440489974, 42.697105778102106], [-70.801763632702105, 42.698065074537688], [-70.802227975824394, 42.698453893754113], [-70.802848491754986, 42.698561162229318], [-70.803499710364633, 42.698497029513781], [-70.804243449290738, 42.698818205738071], [-70.805670156173719, 42.698930936997314], [-70.806538242241189, 42.698889964572786], [-70.807128307683485, 42.69911459663723], [-70.808150784683335, 42.699206869980635], [-70.810383081303286, 42.700026984398889], [-70.81091027127313, 42.700757057393801], [-70.811345190900155, 42.700741103621439], [-70.810941959890968, 42.699891951601749], [-70.810290478172078, 42.699433995027839], [-70.808026269793032, 42.698632232187954], [-70.807903217788564, 42.69820217889955], [-70.80678669412849, 42.698084673337114], [-70.806600621369924, 42.697925388299353], [-70.806601537771655, 42.69746573942782], [-70.806445143074072, 42.697216159485485], [-70.80594969282798, 42.697034762258781], [-70.804957219902448, 42.697212806954617], [-70.804492843552339, 42.6970581468644], [-70.803654896411189, 42.69703563941755], [-70.80226003798056, 42.697147591238107], [-70.801856817513652, 42.696739516069357], [-70.801360510608205, 42.696252107312688], [-70.802011207513914, 42.69623299117724], [-70.8039958373041, 42.696345058990218], [-70.80508099538352, 42.696138952458305], [-70.806601194993746, 42.69559218958404], [-70.807313974075839, 42.695797301871131], [-70.809050078655957, 42.695724418145076], [-70.809235636470945, 42.695541520841523], [-70.809267349172643, 42.695198544560768], [-70.808584415997288, 42.695065010587228], [-70.808058097001805, 42.695272334846237], [-70.807500005916239, 42.69531679577905], [-70.806600687479246, 42.694907385273467], [-70.806600956126971, 42.69462831704594], [-70.80722048683262, 42.69431245057531], [-70.808677934853904, 42.693739988122829], [-70.809050619867435, 42.69346368601844], [-70.80963929331142, 42.693166256879991], [-70.810693804472322, 42.693077394559815], [-70.811283144949925, 42.692896360210256], [-70.811654338021327, 42.692665682280982], [-70.811685848654164, 42.692250595831325], [-70.811282687240166, 42.692113161256934], [-70.810878836695878, 42.692272795631986], [-70.810693908745492, 42.691797994533012], [-70.810538478919952, 42.691638357996567], [-70.810104688779646, 42.691501366763852], [-70.809950246312141, 42.691819395179039], [-70.809980424071838, 42.692161120950239], [-70.80976356948409, 42.692272354828496], [-70.808461044668874, 42.692410318454755], [-70.808119897473262, 42.692271533278877], [-70.80765571933027, 42.69227892732637], [-70.807128037519192, 42.692368039594356], [-70.807096619523293, 42.69263899936324], [-70.807344461215024, 42.693094557988104], [-70.80728294050688, 42.693284317098872], [-70.806973433537038, 42.693352860078491], [-70.806724936501794, 42.693167364267275], [-70.806600573870384, 42.692979821918364], [-70.806569111398005, 42.692413031057498], [-70.807159201892148, 42.691133746260142], [-70.808089307777607, 42.689804190169731], [-70.808275458109534, 42.689188648731211], [-70.808120176513597, 42.688938986935725], [-70.80805870431098, 42.688525684968148], [-70.808337190174285, 42.688268536262456], [-70.810165905225801, 42.68845554598051], [-70.811345060478928, 42.688454743454756], [-70.812088678813041, 42.688344391620483], [-70.813607637920711, 42.687653493072368], [-70.814414723249968, 42.687406218300772], [-70.81556151317271, 42.686856492756611], [-70.816708342522745, 42.685919208388313], [-70.817048647430141, 42.685751886450987], [-70.817731869448551, 42.685209572600193], [-70.81853697764862, 42.684836225669088], [-70.81990187434225, 42.684589408658709], [-70.820365986538604, 42.684266345752015], [-70.820861513718654, 42.683745415528726], [-70.821543935230039, 42.683374117842824], [-70.822070475286154, 42.682555209040629], [-70.822318620457011, 42.682479064314073], [-70.822597814808503, 42.683077641413725], [-70.824953138501769, 42.683301261390021], [-70.826038897168885, 42.683581085101466], [-70.826504653017551, 42.683853237040282], [-70.826658844851181, 42.684039311845027], [-70.826907082559657, 42.684125648762439], [-70.827311053520276, 42.684128630186862], [-70.827929960961853, 42.683280345415326], [-70.828581484016652, 42.682621384092833], [-70.830347783576997, 42.682070607485706], [-70.83059587051082, 42.681769387958141], [-70.830905603805348, 42.680971689312095], [-70.831648993169367, 42.679779767413656], [-70.832826794212806, 42.678958901898511], [-70.833446824335113, 42.678660902411949], [-70.833942680697149, 42.678590121866996], [-70.834314358900258, 42.678862871224446], [-70.834563100563599, 42.678958287103782], [-70.834841510655409, 42.678728620947801], [-70.834811153280413, 42.677999261839794], [-70.834686445742207, 42.67783929386151], [-70.834779315210668, 42.677675536741809], [-70.834623907370016, 42.677245953764981], [-70.834096547834363, 42.6773087237409], [-70.833818150733705, 42.677168664596657], [-70.833507973282195, 42.677218639745995], [-70.833352656772689, 42.677725832857341], [-70.830967530744005, 42.679691474189561], [-70.829697180991445, 42.681522829751962], [-70.829263459114458, 42.681862940581048], [-70.82820861672279, 42.682185938670244], [-70.827991708357018, 42.682342757883411], [-70.827433969741051, 42.683279711541893], [-70.827062593401465, 42.683492524584935], [-70.82662815657828, 42.683463528308721], [-70.825853582402516, 42.682872156116417], [-70.825325773485872, 42.682709826875971], [-70.824582340656548, 42.682640849534273], [-70.824303077568501, 42.682410739932699], [-70.823589383635891, 42.68241331802416], [-70.823403819255205, 42.681912065720219], [-70.824270854229994, 42.681411839159296], [-70.824054929951188, 42.681181018766935], [-70.823187194976981, 42.68147418726231], [-70.822226449400887, 42.68154336745954], [-70.821450509344757, 42.682114421277831], [-70.820241495614695, 42.682710471201709], [-70.818939953875102, 42.683127628356395], [-70.81838107534513, 42.683649797424245], [-70.817824137798667, 42.683947008144216], [-70.817172914024525, 42.683948204897113], [-70.816738967954677, 42.683829151594274], [-70.816181295286896, 42.683856282034341], [-70.815901992119947, 42.684013789885732], [-70.815654054909245, 42.683990987096308], [-70.815002479736847, 42.683632078439942], [-70.81497215104649, 42.683425386689898], [-70.814537789623941, 42.683098730025058], [-70.814444931573348, 42.682919844235464], [-70.814227761927157, 42.682716545015261], [-70.814041900042085, 42.682305298364184], [-70.813576840957893, 42.682366724236779], [-70.813329045217628, 42.682622357856701], [-70.813390468013253, 42.683009280660549], [-70.81407303674014, 42.684015916151331], [-70.814537960079761, 42.684449702694401], [-70.814444951531087, 42.684676458668292], [-70.813142840418749, 42.68513846874081], [-70.81146879351266, 42.685165150212256], [-70.811344028615736, 42.685482817613774], [-70.811592927943792, 42.68568577086878], [-70.812182474024937, 42.685892371096521], [-70.811840648270532, 42.686465312163193], [-70.81149999097147, 42.686741274165492], [-70.810445598413438, 42.686740031561797], [-70.810104547553792, 42.68662825922469], [-70.809515523979456, 42.686718726623646], [-70.808957972283054, 42.686898861748269], [-70.808337498384631, 42.68671960707789], [-70.807810832723533, 42.686232582758393], [-70.807345737874115, 42.686005820583965], [-70.807314296608354, 42.685736103999929], [-70.807811072340897, 42.685367735344656], [-70.807810184442047, 42.685115666198882], [-70.807500010004915, 42.684660903944689], [-70.807191001862705, 42.684521767785938], [-70.806849320918545, 42.684590657695864], [-70.806725667364177, 42.685159850703833], [-70.805609505087787, 42.685141359144033], [-70.804802744306542, 42.685325558641253], [-70.804183100478966, 42.685272318371467], [-70.803780270992632, 42.685044205962527], [-70.80365633467045, 42.684776271746067], [-70.803068296255262, 42.684866622214948], [-70.803129573270994, 42.685117975281521], [-70.80356399501089, 42.685435132809253], [-70.803718633335862, 42.685828743776845], [-70.803872982125355, 42.685961916756476], [-70.805020876251902, 42.685826496709367], [-70.805485115854154, 42.685665534977495], [-70.805950967717592, 42.685712173646778], [-70.806198380435731, 42.685915669811152], [-70.806198583954611, 42.686240293198225], [-70.805981184526075, 42.686468546455579], [-70.804492975144825, 42.687032958373635], [-70.804245004730859, 42.687244190193546], [-70.803966341542932, 42.688067841557931], [-70.80337689013372, 42.689275097002827], [-70.803593383300111, 42.689803034046029], [-70.803686866775806, 42.691522490014954], [-70.804244683914789, 42.692504303952617], [-70.804864058100989, 42.693394751635445], [-70.804895766378777, 42.693971086738244], [-70.804647964585513, 42.694308261679097], [-70.804181828169732, 42.694612704534585], [-70.803562415457435, 42.694839073097896], [-70.802167227392019, 42.694996122904065], [-70.80089507040006, 42.694953509589425], [-70.800275875967088, 42.694818691357675], [-70.799159280953049, 42.694034943865873], [-70.799345691966892, 42.693788511391787], [-70.800306344561804, 42.693944486275896], [-70.801391760366741, 42.693855445323422], [-70.80167096536843, 42.693922938430291], [-70.802259945632372, 42.693832510471651], [-70.80238381333757, 42.693623415200776], [-70.802229131260589, 42.693463862024061], [-70.801608588849049, 42.693374594099751], [-70.800152342810534, 42.6934608530037], [-70.799718089242006, 42.693125140068865], [-70.799532374597945, 42.692848906182675], [-70.798942697235802, 42.692597139913332], [-70.797826456306694, 42.692552106904074], [-70.796400200197326, 42.692871479296976], [-70.795686890325896, 42.69282887685452], [-70.795407813310803, 42.692707356374612], [-70.795283516478122, 42.692484332851194], [-70.795439336110377, 42.691886631484323], [-70.795068188420771, 42.691019070838749], [-70.795036548234833, 42.690695336189883], [-70.7960602347557, 42.690174940179247], [-70.796370401819587, 42.689872461236021], [-70.796308567722491, 42.688756342616088], [-70.796401303091017, 42.6885931555355], [-70.796432956814016, 42.68804312900285], [-70.796122891557403, 42.688020986597422], [-70.795564310461927, 42.688822658347895], [-70.795098824301121, 42.689874798339034], [-70.794726784437159, 42.690079041759198], [-70.793827255501483, 42.690191661096733], [-70.793269872214395, 42.690056642131701], [-70.793238576361688, 42.689876945398296], [-70.793516983422762, 42.689665382924773], [-70.79351711162893, 42.689458331281529], [-70.792897040254886, 42.689233984839952], [-70.791161111391574, 42.688936992563576], [-70.789455890761204, 42.688180506305379], [-70.78883599718597, 42.687748456122371], [-70.788929492099967, 42.686828547020767], [-70.788589519674986, 42.686257690720097], [-70.788682448972267, 42.685895290024717], [-70.788589034292812, 42.68527526730189], [-70.788590343461422, 42.684501077785562], [-70.788961577959824, 42.684107800590411], [-70.7885901130701, 42.683744343065548], [-70.788341889307702, 42.683693842807486], [-70.787596921548356, 42.683579516496671], [-70.78765980406493, 42.684362564010399], [-70.787566621684178, 42.684660776135289], [-70.787566528366597, 42.685660570716315], [-70.787380014706571, 42.685870975169173], [-70.787349335001281, 42.686123390463209], [-70.787751929432957, 42.686324552032978], [-70.787658361014337, 42.687659105491107], [-70.787782803701134, 42.687909145551231], [-70.788929192228025, 42.688593623724145], [-70.790603780822849, 42.689783749868624], [-70.792029194345531, 42.690175623861172], [-70.792432455145146, 42.690538183538443], [-70.792618295468273, 42.690832434813949], [-70.793299443787973, 42.691335146118725], [-70.793764650437936, 42.691561875132315], [-70.79370343214994, 42.691797270721445], [-70.793517045219275, 42.691953131645299], [-70.791036418764293, 42.691794451683222], [-70.790633375530277, 42.691791439521481], [-70.789548016333001, 42.69238513734792], [-70.788679968998622, 42.692461901148157], [-70.788215198959946, 42.69237018850054], [-70.787098415912581, 42.692072354587744], [-70.785362337605036, 42.691955860650111], [-70.783936624098189, 42.691590369539057], [-70.782386342835991, 42.69136299288072], [-70.77913127594374, 42.69147669845816], [-70.778542183785532, 42.691405507015276], [-70.775534668577166, 42.691469972902077], [-70.774076964120752, 42.691312832406581], [-70.772930056021451, 42.691105324963736], [-70.771782655577965, 42.690645738717016], [-70.771133105446836, 42.690169565382732], [-70.770606242784268, 42.689574341704969], [-70.768932362966126, 42.68842947959908], [-70.767815866502872, 42.687879485520938], [-70.76558600681166, 42.686463772694978], [-70.764314027842104, 42.685817061407192], [-70.763136985962575, 42.685411843014471], [-70.761618293859428, 42.685111198468981], [-70.759757737203429, 42.685202827217111], [-70.758703332891159, 42.685111179278145], [-70.753868288006217, 42.684150585305659], [-70.751512706505011, 42.684150482464261], [-70.74949803748143, 42.683578196227614], [-70.748001013265934, 42.683464401131296], [-70.747474139237113, 42.683301181226462], [-70.746449627650236, 42.682704224524272], [-70.745271286889889, 42.681902711082209], [-70.743068996175793, 42.680648238766622], [-70.741114510584836, 42.67929965541277], [-70.736833403844116, 42.67534698021143], [-70.735778570951325, 42.674452737121513], [-70.73323658203249, 42.672879031482708], [-70.73153118818297, 42.671319295490683], [-70.731127863481206, 42.670730917774563], [-70.729049527461513, 42.66894252162794], [-70.72836729873913, 42.66796228908072], [-70.727870673682872, 42.667456008175449], [-70.727249933998763, 42.66653748527952], [-70.726692503112574, 42.666176541365274], [-70.726413421396046, 42.667018649375848], [-70.726135696352458, 42.667094931035109], [-70.725049024048033, 42.666769234764629], [-70.72463319045994, 42.666708470293742], [-70.724150991896479, 42.666638256428691], [-70.723189491646451, 42.665877846032636], [-70.723128021964612, 42.665699095065847], [-70.723035356555258, 42.665241059509135], [-70.723437253215835, 42.664027894615351], [-70.723343163880116, 42.663092091095045], [-70.723466859916641, 42.662676020203605], [-70.723870156475712, 42.662336637342854], [-70.724613057075999, 42.662153653568772], [-70.727422223675234, 42.662190472052067], [-70.729385734717894, 42.662216545071246], [-70.730130194872075, 42.662403265570376], [-70.730563478040807, 42.662631211496631], [-70.731431652754694, 42.663455667801664], [-70.731835265464113, 42.66374696850179], [-70.732641588733969, 42.66464464355704], [-70.733169183117838, 42.665393724593784], [-70.733975061400088, 42.665669681021221], [-70.735153984139203, 42.666336374600434], [-70.736207116156578, 42.666815965030302], [-70.736238069731883, 42.667220647264799], [-70.736796687300043, 42.667338037652705], [-70.737230398962069, 42.667223329534636], [-70.738006321632909, 42.667679647731113], [-70.739089989752756, 42.668068848661378], [-70.741353211110834, 42.668637913382788], [-70.743152259946228, 42.66948413882001], [-70.744329908926346, 42.670006690462891], [-70.744950951055998, 42.670465909423214], [-70.745787718010718, 42.670830927535981], [-70.748516147258954, 42.67172643033738], [-70.749478070817489, 42.671931812750259], [-70.75084137949257, 42.672207937255941], [-70.751461174064715, 42.672388039014677], [-70.752081611268594, 42.672873681858896], [-70.753382847080474, 42.67307843581758], [-70.755458614966983, 42.674307773638674], [-70.756604191801927, 42.675155156644387], [-70.757223895185675, 42.675388160290751], [-70.758215738458915, 42.675598162636092], [-70.758834941847837, 42.675822692128492], [-70.760043723650767, 42.676623813248327], [-70.762150805104824, 42.677149245401047], [-70.763298349733631, 42.677329859578307], [-70.764909679572284, 42.677476322859668], [-70.76556206754411, 42.676763613254955], [-70.766429663489006, 42.676029219834739], [-70.767112186665258, 42.675135565424377], [-70.767298378533894, 42.674997839605574], [-70.767762904318474, 42.674981608166334], [-70.768414259306837, 42.675412803626564], [-70.769592052968449, 42.675782055973386], [-70.770118458586879, 42.676332273128999], [-70.770428389556827, 42.676444508310119], [-70.770955056555692, 42.676372931704051], [-70.770955359135698, 42.676030844760653], [-70.770800770841745, 42.675852703642803], [-70.769716610141131, 42.675509351837476], [-70.769436753089778, 42.675297738850119], [-70.768724260441843, 42.674930349121347], [-70.768693496014379, 42.674543593818782], [-70.769097182846522, 42.674366100210428], [-70.769871412281731, 42.674291052404456], [-70.77219571897092, 42.674273122055965], [-70.773250886341927, 42.673787963257567], [-70.773808561489872, 42.673680649356243], [-70.774118003237163, 42.673855888102658], [-70.774737521262267, 42.673971765801262], [-70.777372902509114, 42.67415652500776], [-70.778364367832253, 42.674158757993141], [-70.779449802231142, 42.67370019873038], [-70.780379875693825, 42.673586711819851], [-70.780751620644196, 42.673382511964881], [-70.780875249278253, 42.673218448371422], [-70.780132234532019, 42.672924038087388], [-70.78013224941904, 42.672581409123474], [-70.781913319761884, 42.671208917990363], [-70.782626993995294, 42.670983249713018], [-70.783017103186964, 42.670760611693076], [-70.78357298603315, 42.670978404339543], [-70.783945660357176, 42.670936872282169], [-70.784534091599994, 42.67056691898113], [-70.78474631716891, 42.670141161331131], [-70.784873275570405, 42.669886550423087], [-70.785008354024313, 42.66961506518463], [-70.785259539038549, 42.669109606897401], [-70.78545741945986, 42.668710856158604], [-70.785461281719392, 42.668445850936152], [-70.785465949549177, 42.668120624961169], [-70.785124643195005, 42.668215919842098], [-70.783945547624327, 42.669928069008151], [-70.783697977780974, 42.670039604451802], [-70.78295472490889, 42.67013231124092], [-70.78084617689872, 42.67095813972157], [-70.779078255805203, 42.671958719839424], [-70.778056065775502, 42.67283006824983], [-70.777621384366569, 42.672990024793762], [-70.776970662119027, 42.672946525955886], [-70.775668788359354, 42.672462421181137], [-70.774615704021741, 42.672325823316463], [-70.774522708882202, 42.671894837474206], [-70.775235863144417, 42.671505458700423], [-70.77570120871961, 42.670885503176706], [-70.775979213407552, 42.670727993378456], [-70.777498965674596, 42.670614261009504], [-70.77765400938749, 42.670476863971153], [-70.777653895936723, 42.670242262047765], [-70.777405963456502, 42.670129263216815], [-70.776382899273159, 42.670334417989643], [-70.775918158721097, 42.670287666064333], [-70.775981235381124, 42.669746209663074], [-70.775546619919396, 42.669212887658041], [-70.77526785213341, 42.669288830343888], [-70.77517457795021, 42.669443536053727], [-70.775142437626897, 42.670380659436695], [-70.774399503441629, 42.671005082167348], [-70.773871923847295, 42.671688738287401], [-70.773376336681082, 42.671660867405798], [-70.771361476937059, 42.671133339028785], [-70.770400810300771, 42.6710040368325], [-70.769842546537888, 42.670679847703923], [-70.768665885547918, 42.670473186447452], [-70.768356266337847, 42.67031593630734], [-70.767828711816875, 42.669828178751089], [-70.767705395713833, 42.66953311037782], [-70.767890707929723, 42.669259712322791], [-70.767860713631464, 42.669080105496533], [-70.767147605400226, 42.669055330840678], [-70.76665160179158, 42.669630586330648], [-70.766340908889262, 42.66980695138642], [-70.766278760036556, 42.670104715054848], [-70.765938587464987, 42.670308529127581], [-70.76525533150992, 42.670264757449132], [-70.764822530635726, 42.670063953439623], [-70.764574418617812, 42.670104055959698], [-70.764512573711954, 42.670312427196102], [-70.764914581125282, 42.671269774802717], [-70.765193126510411, 42.671779008790217], [-70.765502877119914, 42.672071303497688], [-70.76587454295948, 42.672002816130536], [-70.766402216566547, 42.671643281425311], [-70.766898100225134, 42.671572158204114], [-70.767796607621321, 42.671612692616627], [-70.767982314257992, 42.671735940788608], [-70.767857892637494, 42.672007473937342], [-70.766896602669078, 42.672779544351279], [-70.766741520072571, 42.673169082650794], [-70.766493427411646, 42.673353137029999], [-70.766153040931101, 42.67344829190408], [-70.762495441484205, 42.673486948981001], [-70.762061858833249, 42.673403700687608], [-70.761503159983519, 42.672962437987614], [-70.761255456783033, 42.673028912948354], [-70.761255605786658, 42.673380005770532], [-70.761162416928599, 42.67387733015218], [-70.761006108351737, 42.67414982243848], [-70.759983876525936, 42.674408851996709], [-70.75945692519285, 42.674318244422089], [-70.758527533461503, 42.674017459297858], [-70.758279176049015, 42.673786846176803], [-70.757908756973251, 42.673189232754488], [-70.7569486153741, 42.671960993981365], [-70.755988464788487, 42.671128850600923], [-70.755244145312815, 42.670698695181869], [-70.754036556499955, 42.67035718999955], [-70.753013923178941, 42.66985095383086], [-70.749499307124381, 42.669015181364465], [-70.748017966201616, 42.668914449194219], [-70.747180602122413, 42.668386229844096], [-70.746683614736469, 42.667907575797756], [-70.746807460563772, 42.667446470568422], [-70.747116954948353, 42.667333166502395], [-70.747458342983748, 42.667562069887225], [-70.747583117796424, 42.667767686483657], [-70.747768248950578, 42.667945068187585], [-70.748202301624886, 42.667871912252728], [-70.747816980964188, 42.667531815837933], [-70.747922893175158, 42.667059879863729], [-70.74826260816512, 42.66616239143795], [-70.748572523627971, 42.665634976358085], [-70.749500651150058, 42.66480999647262], [-70.749610263947886, 42.664588979335363], [-70.749951614418308, 42.663899181535328], [-70.750353722590049, 42.663586706748163], [-70.751035463487298, 42.663422872124457], [-70.75193477142075, 42.663580567043297], [-70.753019389088848, 42.663356401079255], [-70.75332969956284, 42.663243625851052], [-70.75354750809754, 42.662393676607863], [-70.75416721987888, 42.661708454367499], [-70.754849995734531, 42.661454580070519], [-70.755408408933803, 42.661391831614729], [-70.756492987302778, 42.661528178841436], [-70.759375343259492, 42.661438658083419], [-70.759993964866922, 42.66161816756577], [-70.760675545281586, 42.662004051139746], [-70.761140230120063, 42.66219490277981], [-70.761914857853554, 42.662282044399134], [-70.762968922506587, 42.662328742059387], [-70.763432957235963, 42.662492573102924], [-70.764300880621974, 42.663082716221034], [-70.764578933588851, 42.663150293340898], [-70.765136664443204, 42.663700195531213], [-70.766345372709921, 42.664023498220374], [-70.766685833660773, 42.664315445489862], [-70.766902614476962, 42.665141077988508], [-70.766870324011663, 42.665871235647451], [-70.766529300752993, 42.666380496621009], [-70.766002621582132, 42.666794592899464], [-70.76575493372367, 42.667113233911238], [-70.765723275983248, 42.667474207814017], [-70.766095365487416, 42.667450734341081], [-70.766684371827282, 42.667152893645863], [-70.767055356760011, 42.667318369779721], [-70.76733533773745, 42.667106878884162], [-70.767397212602006, 42.666538501472978], [-70.767615270691579, 42.666039621792798], [-70.767615348124437, 42.665120840230045], [-70.767707972856499, 42.664939129096446], [-70.769257037635356, 42.666104028015539], [-70.769380626489664, 42.666354625078398], [-70.769938688257326, 42.666471851453835], [-70.769814305186543, 42.665690110246395], [-70.769536587332965, 42.665234815909152], [-70.768886165336184, 42.664731701702145], [-70.76851390387155, 42.664341074013045], [-70.767802510107131, 42.663974223600739], [-70.767306541082704, 42.663450112767393], [-70.767275692195355, 42.663270949906277], [-70.767348995137908, 42.663051396492726], [-70.767560209117534, 42.662898614556795], [-70.767864220623366, 42.662811057233384], [-70.768669973688318, 42.663149787045384], [-70.768887183759986, 42.663362717219364], [-70.76897998711938, 42.663658762260951], [-70.769134581274258, 42.663791354744696], [-70.769383239804412, 42.663796347886155], [-70.769568581721529, 42.66367598736867], [-70.770157591710316, 42.662973562180007], [-70.771304443796154, 42.662424362184687], [-70.771615412260914, 42.662103857360663], [-70.771894461147212, 42.661442320516443], [-70.772173456520946, 42.661185799665439], [-70.772947882043738, 42.661047716560212], [-70.77332038404812, 42.661185725315057], [-70.77378446516893, 42.661484550698454], [-70.774156185850316, 42.661965722397078], [-70.774001121397589, 42.662328174287673], [-70.773845459406843, 42.662879762063525], [-70.774217122497149, 42.662901181763765], [-70.775086248954139, 42.662283852475461], [-70.776046631327361, 42.662214972842577], [-70.776263082241556, 42.662103258742398], [-70.776263840024839, 42.661878204135284], [-70.77601567957187, 42.661756288021706], [-70.775086534713395, 42.661644685626001], [-70.774962224944119, 42.661466108868282], [-70.774931904974736, 42.660593228117378], [-70.775737766926767, 42.660022129102941], [-70.776017415898139, 42.659675039365872], [-70.776110120946598, 42.659313814403312], [-70.775956015266587, 42.659064203174133], [-70.775428489938108, 42.658577018673796], [-70.775366686554563, 42.657577906443898], [-70.775366911080397, 42.657388857710203], [-70.776484215795733, 42.656479325422481], [-70.776514925650986, 42.656226820612495], [-70.775833611919296, 42.656111733558262], [-70.775368345060073, 42.656289404870456], [-70.773973272869938, 42.65739244351866], [-70.773942050221436, 42.658492249100753], [-70.773785854685443, 42.65901682690086], [-70.773878897783433, 42.659177203888767], [-70.774498615579816, 42.659591244720104], [-70.774497758963761, 42.659951334396972], [-70.77428149508043, 42.660089513415514], [-70.773971926954644, 42.660184884718475], [-70.77279392837228, 42.659518593765902], [-70.771771260307602, 42.659471102989478], [-70.771710685953451, 42.659129800907557], [-70.771895911195259, 42.658901947363333], [-70.771679164568539, 42.658554529758952], [-70.771276322052088, 42.658668481054761], [-70.771183912076708, 42.658949222900894], [-70.770842477062629, 42.659215970367931], [-70.770811430196375, 42.659495478617195], [-70.770965652020408, 42.659817656526222], [-70.770871929192012, 42.660358918750298], [-70.769446468620899, 42.661417238907084], [-70.76895076125345, 42.661532845648551], [-70.768516451526338, 42.661350589973985], [-70.768392923763017, 42.660749529075396], [-70.767959240961261, 42.660314668235358], [-70.767742695881509, 42.659741644733252], [-70.766968688993586, 42.659131867366995], [-70.7665352905546, 42.658642988278658], [-70.765636399681043, 42.658368918186227], [-70.765388207016287, 42.658210879092877], [-70.765110493200922, 42.657593619546667], [-70.764491329498242, 42.656909369135796], [-70.76340682428237, 42.656449010407798], [-70.762260355905056, 42.655782270757406], [-70.761455972105992, 42.655119416767576], [-70.761270432897703, 42.654852029816325], [-70.761239598834067, 42.654257673713659], [-70.761053233407736, 42.654071392529815], [-70.760992472550498, 42.653865658967746], [-70.762138916684947, 42.65313586789226], [-70.762573198184413, 42.652678977055935], [-70.762945578663633, 42.652060726567854], [-70.763070199404666, 42.650707828124524], [-70.763287831511846, 42.650254053658124], [-70.763690907887607, 42.649949910757385], [-70.76437295137373, 42.649723613081825], [-70.764806697556011, 42.64965381426282], [-70.76545704312737, 42.650021918261665], [-70.766013701013264, 42.650706848363576], [-70.766075014588793, 42.651786987326666], [-70.765826661563295, 42.652565198469482], [-70.766321854939179, 42.653178887107323], [-70.767282182557835, 42.653596210541522], [-70.768024969360042, 42.654116305852014], [-70.76845949037336, 42.654118517387388], [-70.768615193055723, 42.653891112024468], [-70.768677359038605, 42.653043568952263], [-70.76886394280038, 42.652383072777518], [-70.768709125058706, 42.651673693497649], [-70.768554266613677, 42.651325040210814], [-70.768461624081667, 42.650848946322483], [-70.76833766091265, 42.650643986703926], [-70.768059511623193, 42.650431748634787], [-70.767811806986984, 42.650066121817446], [-70.766974448185607, 42.64995341376877], [-70.766851519595363, 42.64977537624744], [-70.766262914786793, 42.649288840263921], [-70.766262964761296, 42.648928743800667], [-70.766635569572955, 42.64865266451303], [-70.766325582723738, 42.648306353955341], [-70.765302530411361, 42.648213700002188], [-70.764899996139846, 42.64807610334514], [-70.764776522094039, 42.648906421364444], [-70.764434854860752, 42.648903076446025], [-70.764001127593076, 42.64864824662363], [-70.763598556182956, 42.648951763941191], [-70.763102675232645, 42.648995865151342], [-70.762854282253556, 42.64890029541592], [-70.762854877030847, 42.648693243470177], [-70.762731064480633, 42.648425261544851], [-70.762730774053964, 42.647731442749006], [-70.762577570304501, 42.647463813158403], [-70.76260854569351, 42.646589064807671], [-70.762453865505208, 42.646312423083018], [-70.762454559387436, 42.645222503253393], [-70.761835458263448, 42.644691366845343], [-70.761557225929877, 42.643804019088542], [-70.761403709255774, 42.642545486849265], [-70.761714584166327, 42.641396871552189], [-70.761961508413009, 42.641167716579993], [-70.76292248063649, 42.6409910119702], [-70.763325574931841, 42.641128619706606], [-70.763790772438739, 42.641148419702574], [-70.764316777385162, 42.640941923525091], [-70.764719809214355, 42.640918022145762], [-70.765184539437428, 42.641144959778586], [-70.765246095353561, 42.641972405592441], [-70.765059927129258, 42.642272803184859], [-70.765090312201167, 42.642542529507054], [-70.766112791691626, 42.642634552280754], [-70.767134879603148, 42.64290715237275], [-70.767104404275372, 42.642654890830407], [-70.766546189122764, 42.642150632730363], [-70.766050923134358, 42.641906132028545], [-70.765928510965395, 42.640691645107651], [-70.76611372445727, 42.640346858135473], [-70.76614496159435, 42.639706712652469], [-70.766270549670281, 42.639497663340222], [-70.76664189755914, 42.639230488018086], [-70.76877960258021, 42.638611616694448], [-70.769150655611483, 42.638263409445777], [-70.770113394315317, 42.636960810255857], [-70.770299320614697, 42.636183272834955], [-70.7709193824506, 42.635155867153323], [-70.770981617648772, 42.634740436546913], [-70.770765937746532, 42.634076854508145], [-70.770859286040775, 42.633922691523395], [-70.771415781740188, 42.633760737665611], [-70.772841399536787, 42.633603175201159], [-70.773212787637078, 42.633327066488356], [-70.773616372225788, 42.632690430548791], [-70.773677950009912, 42.63213995727051], [-70.773802156994606, 42.631930890852772], [-70.774328686021519, 42.631796282151377], [-70.775660745908382, 42.632253145313612], [-70.77643449290133, 42.632736745290515], [-70.776620696443118, 42.633031121479519], [-70.776899517879883, 42.633233711964486], [-70.777983254675107, 42.633351851270021], [-70.778478300903274, 42.633326316682421], [-70.778664951327343, 42.633124927201976], [-70.778603034667114, 42.632846544782971], [-70.778138429242489, 42.632439702173876], [-70.776960913963279, 42.632250578021875], [-70.774205153485241, 42.631312253903722], [-70.772438912499098, 42.631357407819472], [-70.772283882630333, 42.631585363870883], [-70.772470357178733, 42.632455906212535], [-70.772438507995233, 42.632753867084169], [-70.772221473366159, 42.632892578149566], [-70.772066910752301, 42.633048066980997], [-70.770795950874913, 42.633211637638574], [-70.770239094028724, 42.633436603453148], [-70.770052697011153, 42.633782020420007], [-70.769711981000071, 42.635039040614487], [-70.769711927765968, 42.635453693357071], [-70.769121949952293, 42.635841028712953], [-70.769028762513756, 42.636022738548363], [-70.769090966392426, 42.636913834762488], [-70.768935603608114, 42.637420319793847], [-70.768625196031948, 42.637785834986936], [-70.768254046944776, 42.638016377989253], [-70.767601998222162, 42.638170959104286], [-70.766518974605134, 42.638268696284229], [-70.765929187429691, 42.639043661931922], [-70.765557481502142, 42.639247275434393], [-70.764566074709165, 42.639568927558443], [-70.7640083547995, 42.640027921530773], [-70.763666902461097, 42.64011459986552], [-70.763357129093947, 42.639984340166308], [-70.763264979011694, 42.639679379770307], [-70.762985861561049, 42.639638798879453], [-70.762086648066955, 42.640165913662543], [-70.761621981652468, 42.640299061744734], [-70.761499659574298, 42.639157219324957], [-70.7619327942963, 42.63879034668971], [-70.762243340695676, 42.638010827359579], [-70.762894370139222, 42.637163080873918], [-70.762927595015142, 42.635793209041999], [-70.762647860919316, 42.635473546966459], [-70.762246451521293, 42.635570011137951], [-70.762152028409176, 42.635886744803102], [-70.762275753306483, 42.636388881735314], [-70.762120691448672, 42.637094044173395], [-70.76125341977945, 42.63773829862177], [-70.761159089475072, 42.638649193887254], [-70.759919125433797, 42.639452107926054], [-70.759949455910316, 42.63970374070756], [-70.76047660677213, 42.640001946659162], [-70.760599758340732, 42.640188995616739], [-70.760661115773175, 42.640945053605677], [-70.760010744982679, 42.641378048478003], [-70.759762138047392, 42.641625193427842], [-70.759607002307945, 42.641970163314305], [-70.7596066424924, 42.64251931014055], [-70.759761974498019, 42.642904619805172], [-70.760101980776909, 42.643295613270496], [-70.759883915581241, 42.643983443377557], [-70.759915512900619, 42.64439721783878], [-70.760255845447489, 42.64476120539112], [-70.760317840491254, 42.644985492917158], [-70.760068828176429, 42.645421686664569], [-70.759511633181958, 42.645538479437668], [-70.759479548686457, 42.646016573173355], [-70.758828920983674, 42.646549126368761], [-70.75780649606385, 42.646934168937236], [-70.757062316998542, 42.64754884355623], [-70.756348594477089, 42.648577911221359], [-70.756069298195399, 42.648735276245773], [-70.75557379923481, 42.648715790472039], [-70.755140547484018, 42.648578501953487], [-70.754675450821821, 42.648576673022667], [-70.75374502383626, 42.649374674547282], [-70.752040409947838, 42.649536409154464], [-70.751545157306211, 42.649516277566434], [-70.751143180087851, 42.64933362434504], [-70.751081826124775, 42.649037316703811], [-70.750244932639859, 42.649032429308399], [-70.749903204791295, 42.649515262490802], [-70.749547023858824, 42.649511779344266], [-70.748092259097191, 42.649623854424519], [-70.747131387357641, 42.649512359047549], [-70.746666489310172, 42.64971755524784], [-70.746760461363607, 42.65068025783345], [-70.746699050120526, 42.650879621464611], [-70.746326508167996, 42.651182734649218], [-70.745924478171034, 42.651269595824552], [-70.745056418183921, 42.65124754306887], [-70.74453005450107, 42.651156329071526], [-70.743909205901602, 42.6506971050541], [-70.743258712707501, 42.650472827088443], [-70.743042203892273, 42.650313866255544], [-70.742886579805855, 42.649767119036248], [-70.74325770338244, 42.64900434285974], [-70.743937875291664, 42.648228373954531], [-70.743968683836542, 42.647795377986427], [-70.743473070944034, 42.647613705471237], [-70.74322457465847, 42.647428158162199], [-70.742419244833414, 42.647386240570434], [-70.741800230781124, 42.647386681338851], [-70.741552289110658, 42.647246686406412], [-70.741614012460857, 42.646678226858789], [-70.74127205529706, 42.646467214965227], [-70.740095316412479, 42.646746479574084], [-70.73987805696693, 42.646560500201105], [-70.739814777610107, 42.645327287980813], [-70.739288240235538, 42.644911960236549], [-70.738544183962844, 42.644706754124435], [-70.738231013568651, 42.64466813970914], [-70.737242922111648, 42.644546299087047], [-70.736994527973366, 42.644415203558005], [-70.736963915664674, 42.644073448043152], [-70.737583517148082, 42.643820428233738], [-70.737955357396203, 42.643544975481831], [-70.738264045812983, 42.643449604524221], [-70.738891840751251, 42.643597241252408], [-70.739535690364235, 42.643637490854502], [-70.739906256909521, 42.643497060384348], [-70.739782280318806, 42.643291978853938], [-70.739226801857114, 42.643053088086482], [-70.738728124535641, 42.642695376290177], [-70.737954499966236, 42.642517518755739], [-70.737643829226712, 42.642243144580874], [-70.737550889619172, 42.641983170221877], [-70.736682230625149, 42.641437826255149], [-70.736621074325029, 42.641141511018446], [-70.737178219347456, 42.640385022814641], [-70.737022241733868, 42.639793160567123], [-70.736805394245977, 42.639354568106086], [-70.736122702908247, 42.638941613706244], [-70.735937499258768, 42.638629173329058], [-70.735565537040358, 42.638283538153615], [-70.735007687322096, 42.638355196166046], [-70.73500819016796, 42.63871529861683], [-70.735657773831988, 42.639012178786082], [-70.735968478054403, 42.639241546584223], [-70.735968595213691, 42.639583641396804], [-70.735783104927464, 42.639766965219607], [-70.735257414920568, 42.639910406895133], [-70.735071038043699, 42.640066086113137], [-70.735071205470817, 42.640273144110381], [-70.73538172470839, 42.640367475059506], [-70.735721411757567, 42.640389438205951], [-70.735907926233651, 42.640503742781149], [-70.735876348511539, 42.640774778384603], [-70.735566711315641, 42.641049555943042], [-70.735567835075344, 42.641328639952306], [-70.736156837039815, 42.64162619630364], [-70.736466418531919, 42.642170641400696], [-70.737055470425986, 42.642495290762923], [-70.737179757165805, 42.642673910141383], [-70.737147947603333, 42.642944314178102], [-70.736838856910381, 42.642922017302801], [-70.73631188907882, 42.642696264276644], [-70.735600297261129, 42.64274278232476], [-70.73532082444099, 42.642972746376728], [-70.735196865480376, 42.643199238098056], [-70.735229130153698, 42.643775609377904], [-70.735012223253932, 42.644004276317361], [-70.734578364444573, 42.643983397846441], [-70.733525035447997, 42.643612444978153], [-70.73296746515247, 42.643657087806176], [-70.732781326545336, 42.64382185733286], [-70.732781443111008, 42.644002447558009], [-70.733617906184833, 42.644187508322851], [-70.733525961023744, 42.64491888861658], [-70.73371212106413, 42.64512321899759], [-70.734145722684232, 42.645035529284463], [-70.734424536838503, 42.64476055146271], [-70.735198741170663, 42.644550790280555], [-70.735724879960671, 42.644092265639777], [-70.736128002213604, 42.643932887347482], [-70.735849353761125, 42.644576971270446], [-70.736655288906206, 42.645420697675995], [-70.736655274548113, 42.645924835148975], [-70.736965189013802, 42.646262763912738], [-70.736937003074019, 42.646767255331874], [-70.736904515474578, 42.647344908189986], [-70.736780726802237, 42.647526930337989], [-70.736750009171345, 42.647887995773473], [-70.736905696938592, 42.648092659540104], [-70.737214658374185, 42.648006925787477], [-70.737648830687021, 42.647712170333691], [-70.737678026929089, 42.647224520173907], [-70.737988549038775, 42.646787699044779], [-70.737988250720022, 42.645895373892415], [-70.738358508441323, 42.645781863677271], [-70.738700086312107, 42.645992881828271], [-70.738731980491011, 42.646794310262095], [-70.738608198822448, 42.647228403023618], [-70.738670457719266, 42.647434789341794], [-70.739166837307295, 42.647733429423646], [-70.73925949547116, 42.647957390274854], [-70.73913611662455, 42.648166514939341], [-70.738578161951736, 42.648391231437017], [-70.738578706756456, 42.648598291304801], [-70.738795620595042, 42.648712251137596], [-70.739942110844623, 42.648487445524196], [-70.740840333153059, 42.648482637806026], [-70.741490688731417, 42.648715931257037], [-70.741460310935665, 42.648959878088753], [-70.741151190655913, 42.649352335332416], [-70.741119895993734, 42.649631745634053], [-70.740655360524499, 42.650017508895409], [-70.74019106387783, 42.650150573575722], [-70.739385262037217, 42.650225753747229], [-70.739014296055046, 42.650799467354894], [-70.738611517804259, 42.650796273816631], [-70.737991457165037, 42.650517611822899], [-70.737434103561682, 42.650408696255923], [-70.736627693285556, 42.650060738365084], [-70.73539560092081, 42.649267128471948], [-70.734582352634419, 42.649172799775691], [-70.73349752535195, 42.649198287121827], [-70.733250182447378, 42.64913020792784], [-70.73287759974221, 42.648811568774313], [-70.732351456986336, 42.648675288185032], [-70.732350225411011, 42.648396203971203], [-70.732939856371175, 42.648486183369684], [-70.733373293465149, 42.648444047801057], [-70.733807293944807, 42.647914611602687], [-70.733807135151963, 42.647616989440188], [-70.733651239513151, 42.647430324923938], [-70.732690144323115, 42.646931601887992], [-70.732226223346558, 42.647344343469449], [-70.732102579199946, 42.647643393577319], [-70.731792733981777, 42.647801127470821], [-70.730212611941525, 42.648122531302803], [-70.730244022395127, 42.648356264263683], [-70.730647752804529, 42.648629567049205], [-70.730368751113417, 42.648967011426969], [-70.728663217176873, 42.648920798765772], [-70.728539747791629, 42.648328062963863], [-70.728043677404273, 42.64775921526526], [-70.727763973302345, 42.64706928812209], [-70.72720659990577, 42.646816823404748], [-70.726742446721488, 42.646778878402579], [-70.726587177755121, 42.647069248856262], [-70.726650362527295, 42.647852345759915], [-70.726557066705439, 42.648349107144611], [-70.726185278712322, 42.648832210377527], [-70.725317565731245, 42.648854483516637], [-70.725194054288622, 42.649387591111818], [-70.724915229524186, 42.649499962228248], [-70.72349043151722, 42.649521904288818], [-70.723149140242185, 42.649319845580109], [-70.722870508489407, 42.649386660641312], [-70.722746925338143, 42.64988429528654], [-70.722498095740505, 42.650095349254777], [-70.72200350368027, 42.650120737924915], [-70.721383836409132, 42.650004033132369], [-70.721228879420039, 42.649862280611607], [-70.721103970509063, 42.649549143315042], [-70.720577565811567, 42.64906117108643], [-70.71992644667408, 42.648954418964117], [-70.71977126517335, 42.648289979565448], [-70.71927542804282, 42.647856222289427], [-70.719275434509498, 42.647216416935628], [-70.719119697922238, 42.646804131675005], [-70.718252986080998, 42.646934388018792], [-70.718314446340955, 42.647140780368304], [-70.718687381078851, 42.647306427616265], [-70.718593286537001, 42.647577575818538], [-70.718036595329892, 42.64757714044498], [-70.716889643067276, 42.64732405497616], [-70.716672579137281, 42.647372727308678], [-70.716765366019686, 42.647785759503613], [-70.717726654730058, 42.648014542906687], [-70.718222177380383, 42.648286260343909], [-70.718160729004538, 42.648746680803875], [-70.718812114404543, 42.649205080970376], [-70.719338240488, 42.649773541429752], [-70.719679776263646, 42.649984615318779], [-70.719680010992377, 42.650300243160366], [-70.71949391483507, 42.650555556333003], [-70.719493639192123, 42.651807526236652], [-70.719865632054464, 42.652081192327849], [-70.719834921242281, 42.652315588937], [-70.719340651619135, 42.652864281124515], [-70.719154157552339, 42.653091953388632], [-70.718782921964376, 42.653277955479908], [-70.718162606218897, 42.653142684259521], [-70.717574093041762, 42.653206219168602], [-70.717450236963884, 42.653388220268951], [-70.716984897726661, 42.653638306912505], [-70.718070197285897, 42.654072642434308], [-70.717915438456174, 42.6543270846403], [-70.717543480367823, 42.654531082761707], [-70.717109304199866, 42.654510677210929], [-70.716831741758, 42.65457739479578], [-70.716831505469571, 42.654812087070617], [-70.717574377842624, 42.65533250969451], [-70.717544530747674, 42.655584916266868], [-70.716862371861367, 42.655703538672363], [-70.717359221102754, 42.656020279992823], [-70.717482275887505, 42.656207373955098], [-70.717203983724772, 42.656734382728253], [-70.716460390137613, 42.656457019192885], [-70.715251204463073, 42.655313335092536], [-70.715282182775582, 42.654168523878468], [-70.715405144142196, 42.6539415067503], [-70.715436390472902, 42.653391488892545], [-70.71521940403295, 42.652727704687791], [-70.71475427670299, 42.65261822571199], [-70.714754156673365, 42.65296031828408], [-70.714939859699797, 42.653227692734731], [-70.71490975959324, 42.653714791144587], [-70.714259252650592, 42.65444514991367], [-70.714228201809149, 42.65531088442043], [-70.714073694459458, 42.655475298713313], [-70.713236902776799, 42.655406587228249], [-70.713174922678945, 42.654813083640413], [-70.713453829396116, 42.654151051667291], [-70.713298540330385, 42.653919351626129], [-70.712027709607227, 42.652983439345874], [-70.710167903598403, 42.65319130208502], [-70.711068149000639, 42.653556380159429], [-70.712120827747484, 42.653738570358641], [-70.712461788874265, 42.653868639535531], [-70.712554651343652, 42.654371699465301], [-70.712182233454868, 42.654737721274806], [-70.71205940874421, 42.654991743300414], [-70.712276671390157, 42.65559242783597], [-70.712555105512095, 42.655885824924539], [-70.712958551407866, 42.656140642077716], [-70.713732572174223, 42.65636305033123], [-70.714817948053081, 42.656499885518507], [-70.715065708845771, 42.656613469142883], [-70.715251827717893, 42.656916945334793], [-70.715963922544205, 42.657392696805779], [-70.716336983868814, 42.657395767480693], [-70.71754522259252, 42.657305468153517], [-70.718103270378819, 42.657026838788923], [-70.718319398989635, 42.656663161899651], [-70.718196011805659, 42.656070416484724], [-70.718194697738937, 42.655223547482535], [-70.718318046481997, 42.654807478596631], [-70.7185973585608, 42.654442518154234], [-70.719216924703403, 42.654118116789299], [-70.719867420505182, 42.653964427328773], [-70.720394089275786, 42.654217259651375], [-70.720797256033549, 42.654742660864457], [-70.721821865285989, 42.658403385826901], [-70.72182273162251, 42.659448303879955], [-70.721327456044591, 42.660410478444923], [-70.720398215093823, 42.660965695017623], [-70.720088950801568, 42.661285445139931], [-70.720151079267481, 42.662266588793841], [-70.720181971598421, 42.662815405012822], [-70.71981004255062, 42.66329902563789], [-70.71940732091106, 42.66341270756341], [-70.71863306374361, 42.663505421773806], [-70.717516483462603, 42.663297563239354], [-70.71677288544906, 42.662867161536255], [-70.713983136937969, 42.661693119316567], [-70.711999312585533, 42.661011178576643], [-70.711132359894037, 42.660258061431286], [-70.710574055455155, 42.659978504189169], [-70.708931166648213, 42.659408578086577], [-70.705769883224733, 42.65810458591816], [-70.701926385390266, 42.656892032326709], [-70.697495368504235, 42.656074800154165], [-70.694365626980655, 42.65563494787758], [-70.692909414499226, 42.655269728696041], [-70.692320838475638, 42.655458089139564], [-70.692259020388789, 42.656027063357008], [-70.691949188165154, 42.656229703403454], [-70.69095775346436, 42.656208632448362], [-70.690555363924602, 42.655755150727749], [-70.690492377063777, 42.655503180388578], [-70.690212995867441, 42.655111325693099], [-70.689532072813535, 42.654950178856467], [-70.689749305470215, 42.654361410082984], [-70.689780055998028, 42.654018991377384], [-70.689531999008764, 42.653743216327172], [-70.689345573950021, 42.653331755592681], [-70.689097947514085, 42.653146007359958], [-70.687983240824465, 42.652937333855284], [-70.686898582917507, 42.653169442583483], [-70.686371980142226, 42.652780879559067], [-70.686278940720683, 42.652043640925484], [-70.68606198784039, 42.651731527028595], [-70.685999984017485, 42.651273133597513], [-70.685721217323007, 42.650997673739028], [-70.684728849196347, 42.65111166954344], [-70.683458918046682, 42.650265470208936], [-70.682684479693279, 42.650060859524736], [-70.682065069826876, 42.649601220064639], [-70.681165629706527, 42.648956842406029], [-70.680547173326033, 42.648659876488502], [-70.679988598153344, 42.648091546568402], [-70.679988632555279, 42.647676891391377], [-70.680268076703513, 42.646969926887181], [-70.680516028167347, 42.646714574168811], [-70.680887206454116, 42.64651068870343], [-70.681507611693377, 42.646393551578534], [-70.683799455462989, 42.646602778471276], [-70.684574385248609, 42.646879405679435], [-70.685100772197558, 42.646808848858306], [-70.684853417003922, 42.646605087786575], [-70.6848528999368, 42.646353014001249], [-70.685070184173668, 42.646232472822703], [-70.685627894490153, 42.646125044239035], [-70.686092842867978, 42.645920092588327], [-70.686464496886558, 42.645941885470265], [-70.686649991173681, 42.646101275429295], [-70.686618796292578, 42.646533716143402], [-70.686340354377634, 42.646970627593859], [-70.686340727392718, 42.647177687760717], [-70.686712306658166, 42.647262496764178], [-70.687145640936862, 42.647201898538967], [-70.68730128080847, 42.646622962256018], [-70.687548829559134, 42.647492814386808], [-70.68776601326347, 42.647795925080096], [-70.688323760391938, 42.64754444375815], [-70.689655627973195, 42.647426047120561], [-70.688447612246506, 42.647245440528572], [-70.688168189018114, 42.646898501713729], [-70.687919922959978, 42.646235073139977], [-70.687703409349766, 42.646031624980267], [-70.687177187849855, 42.645759469442304], [-70.686154839470589, 42.645576723621161], [-70.686030816690888, 42.645416685614194], [-70.686402261735608, 42.644888154219245], [-70.68683647653873, 42.644909215939556], [-70.687517579536078, 42.645340456416363], [-70.688818165239269, 42.645753627572425], [-70.689097496236741, 42.646145486785237], [-70.689624450986088, 42.646209950918546], [-70.690832663037966, 42.645984894118314], [-70.691235372721806, 42.645753648804963], [-70.692103028809427, 42.645524573910372], [-70.692567576184246, 42.645643683539397], [-70.692908720579084, 42.645638775120176], [-70.693280007362588, 42.645479863355774], [-70.693683157756325, 42.645870325191694], [-70.694086167328834, 42.645729097083652], [-70.69436501593826, 42.645436840199523], [-70.694427380153101, 42.645156487118378], [-70.69420964655437, 42.644475280223368], [-70.693807200006603, 42.64403981241388], [-70.693775835442992, 42.643508445839792], [-70.693652401768816, 42.643329784944612], [-70.692908899474034, 42.642827745002577], [-70.692877218729663, 42.642530981082871], [-70.693218063117072, 42.642462512063595], [-70.693434566214407, 42.641981759401475], [-70.693930598657872, 42.641658880428608], [-70.694085178254866, 42.64140455766676], [-70.693837177039356, 42.641336388842653], [-70.693868812895985, 42.641065453975926], [-70.694208679435491, 42.641015520415003], [-70.69482822249293, 42.641312421558425], [-70.695882060620249, 42.641594337948717], [-70.697307478329748, 42.642113432232335], [-70.697710363910801, 42.642161243272071], [-70.697834186738703, 42.641592154508771], [-70.696656718207521, 42.640907074282168], [-70.696563341803099, 42.640494019981361], [-70.696439812436722, 42.640351371287707], [-70.696345972864194, 42.639965231237724], [-70.696656014303073, 42.639528515170305], [-70.696811080611937, 42.639139154393021], [-70.697492919168837, 42.639254713836017], [-70.697492311414095, 42.63971383771446], [-70.698360401851787, 42.640007404895549], [-70.698794893085491, 42.639946861322187], [-70.698886951200791, 42.639621158764832], [-70.699939815777171, 42.639326240857599], [-70.700280848979176, 42.638933662052061], [-70.700342754486414, 42.638590824836847], [-70.700250019875995, 42.638384835591488], [-70.70018739309279, 42.637862796420698], [-70.700312084042153, 42.637491765795431], [-70.699661278400526, 42.637429912776277], [-70.699661006609674, 42.637240227889812], [-70.700868515636031, 42.637150189841321], [-70.701364207056415, 42.636944309336712], [-70.701612108830574, 42.636625263297297], [-70.701271526439413, 42.636234090245587], [-70.700776151393384, 42.636232914652993], [-70.700032814909193, 42.636622259767279], [-70.699753561857548, 42.636644452361381], [-70.699568390489873, 42.636440072658793], [-70.699536634663815, 42.636233334844434], [-70.699134233146992, 42.635824352094076], [-70.69916521486941, 42.635391905952929], [-70.699381598185568, 42.6347040827252], [-70.699288056372609, 42.634543099423844], [-70.698886104747871, 42.63438726962849], [-70.698886040950001, 42.634152663388477], [-70.699164429099781, 42.633833293590321], [-70.699195587881064, 42.633607366148617], [-70.698823906073898, 42.633468580618171], [-70.698606441724081, 42.633283060465374], [-70.698607229012808, 42.632895417054876], [-70.698886322254836, 42.63254904513542], [-70.698885958788196, 42.632098375951465], [-70.699690976501003, 42.631888435683216], [-70.699720890777698, 42.631635491768456], [-70.698946449486115, 42.631655960942773], [-70.698946814317978, 42.631358879902997], [-70.699938356700144, 42.63124484793704], [-70.700868051795325, 42.630969954500415], [-70.701363458471732, 42.631205736168482], [-70.702044906278388, 42.631249786773836], [-70.701952313639424, 42.631908582361547], [-70.702819454821963, 42.632183565577918], [-70.703066161929129, 42.63234227197897], [-70.703128718898256, 42.632755649394014], [-70.70337652739623, 42.632779324816397], [-70.70353172315464, 42.63246188568214], [-70.703717407392062, 42.632278614080711], [-70.703718260380029, 42.631999001504433], [-70.70260215725672, 42.631772450730175], [-70.702602486130587, 42.631592402434038], [-70.703004998586678, 42.631154056475708], [-70.703748908476186, 42.630953839251639], [-70.703748096268953, 42.630719137933085], [-70.703376479376644, 42.630517979789573], [-70.702973832666771, 42.630514662005893], [-70.701951413715022, 42.630719162108036], [-70.701393940648614, 42.630628614791434], [-70.701331874848591, 42.630062196395244], [-70.700990802889251, 42.630337205641354], [-70.700588836629393, 42.630424449733063], [-70.700371894924402, 42.630265403762415], [-70.700340992905467, 42.630058671684736], [-70.700743771297311, 42.629782380841277], [-70.70108383435182, 42.629461812481431], [-70.701083335770392, 42.629164725333325], [-70.700836228493387, 42.629096577179169], [-70.700526053447135, 42.629281233357958], [-70.700277992112504, 42.629672296809211], [-70.699690403451797, 42.629717200878012], [-70.699504840170391, 42.630197550701212], [-70.699381320410737, 42.630352528500275], [-70.698760969750239, 42.63045175615818], [-70.698235163927535, 42.630450358259495], [-70.698173162693408, 42.630838747165249], [-70.698017084850335, 42.631156623419663], [-70.697955758317718, 42.631779082905751], [-70.697615377483743, 42.631729995829595], [-70.697553087867007, 42.631451654910677], [-70.697367838568709, 42.631274278261799], [-70.696902837005723, 42.631227113831137], [-70.696438154180044, 42.631432110758801], [-70.695942677967949, 42.631565951502026], [-70.695447959106787, 42.631249038427391], [-70.695106833280065, 42.63149711246438], [-70.694239137545651, 42.631726209207926], [-70.693588559246365, 42.632213477727198], [-70.693093645888808, 42.632121616648966], [-70.692133137568931, 42.632190344251534], [-70.691574361739811, 42.632324803912333], [-70.691172046024661, 42.632646078886317], [-70.690831611842412, 42.632696089392418], [-70.690645975870041, 42.632464593962986], [-70.691171735715926, 42.631844310667773], [-70.69250479271804, 42.631635325766574], [-70.692690750722647, 42.631452073551614], [-70.693402781167251, 42.631459298444263], [-70.693680947339331, 42.630653803037184], [-70.693309801410521, 42.630542100821287], [-70.692596962288079, 42.63075093039015], [-70.691792333598841, 42.630834788501211], [-70.691358069588389, 42.630445180216846], [-70.691326715774338, 42.630247444914211], [-70.691575589629466, 42.630063554577085], [-70.692566038675025, 42.629625396654326], [-70.692721122563796, 42.629415461013281], [-70.69265888753884, 42.629011081837518], [-70.692070402307976, 42.628641193559602], [-70.692132353161924, 42.627974358017319], [-70.691636739764959, 42.627521843273662], [-70.69067655219925, 42.627589930447506], [-70.690397496072819, 42.627315107415889], [-70.690335939755741, 42.626441968365363], [-70.6900881075222, 42.625806180982821], [-70.690059160844527, 42.625118362624356], [-70.690057378429998, 42.624460623109584], [-70.6904906853065, 42.623886956887596], [-70.690521193665973, 42.623021214187474], [-70.690676992512877, 42.622811826099429], [-70.691078885876635, 42.622670600644895], [-70.69145055471364, 42.623089031646302], [-70.691883691690464, 42.623154000763257], [-70.692534502873713, 42.622604264900737], [-70.693122747306916, 42.622541487045808], [-70.693803997119616, 42.622945688156683], [-70.69414544471752, 42.623021802072209], [-70.69488797469721, 42.623019688583867], [-70.695136943010766, 42.623178338489538], [-70.694175765764612, 42.623634187687266], [-70.694207270770406, 42.624687706704229], [-70.694765554976499, 42.624643166607967], [-70.695167679355762, 42.624321877483986], [-70.695693778784715, 42.624296284083634], [-70.696499195531288, 42.624554591822658], [-70.697119218989258, 42.624572407432574], [-70.697551676374289, 42.624385729071015], [-70.697707868135012, 42.623933355519149], [-70.697954428984872, 42.623956404046602], [-70.698450270708989, 42.624210297324559], [-70.69944214163047, 42.624339791454133], [-70.700339808568742, 42.624957103182439], [-70.701486066940731, 42.624804608326556], [-70.702074548030183, 42.625147441261255], [-70.704645399821615, 42.625100445243739], [-70.704644217532234, 42.624865830786419], [-70.704490277766737, 42.624661042997111], [-70.704180580951714, 42.624530623198815], [-70.703189029605767, 42.624500200085478], [-70.703003840841106, 42.624385850321623], [-70.70297191797502, 42.624134098829003], [-70.703313021290938, 42.623795435697623], [-70.703312488125917, 42.623471340229194], [-70.703126205137963, 42.623356983058436], [-70.70204302467711, 42.623517221939579], [-70.701733094769509, 42.623386793849058], [-70.701640526429316, 42.62292864427797], [-70.701732929364482, 42.622764986382236], [-70.7026624744759, 42.622462529860485], [-70.702847557961903, 42.622189769749617], [-70.702971931470586, 42.621368064669852], [-70.703590373354828, 42.621142225908947], [-70.703590407830148, 42.620773121318699], [-70.703249908593918, 42.620111335347161], [-70.703187953055149, 42.619400785933792], [-70.703558750122468, 42.619304855657234], [-70.704674656150146, 42.619288419097877], [-70.705169473074605, 42.619101061447694], [-70.705726778864133, 42.618713824507914], [-70.706563313066923, 42.618647554391515], [-70.708328322557364, 42.618783452432382], [-70.708544659523014, 42.618717416061081], [-70.708793437562136, 42.618533487985637], [-70.708699896840386, 42.618372421494996], [-70.707678468138411, 42.618234340927494], [-70.706686111512468, 42.617636780177612], [-70.705850477780245, 42.617477993209576], [-70.70581957086452, 42.617270721687127], [-70.706222500860463, 42.616886921808309], [-70.705540838861666, 42.616176073223151], [-70.70553998705482, 42.615644375661418], [-70.705447207573201, 42.615240332176874], [-70.705384949752073, 42.614619806678284], [-70.706065835380272, 42.614114134071485], [-70.70668543004038, 42.61351918099659], [-70.706933005633275, 42.612974515314818], [-70.707582819377308, 42.612514263377626], [-70.707613132117231, 42.611441454433532], [-70.707148884075451, 42.611529463896154], [-70.70668436765861, 42.612509804951991], [-70.706314425662725, 42.61294775890503], [-70.704641233855327, 42.613999720902008], [-70.704394753861166, 42.614301319723054], [-70.704146493541373, 42.615052404202764], [-70.704023121494245, 42.615739170298411], [-70.703744049983541, 42.616545227028169], [-70.702723320509108, 42.618281261374023], [-70.700802752857584, 42.619427066635005], [-70.700554754560471, 42.619701098689418], [-70.700245469691481, 42.621048171220998], [-70.699720069112928, 42.621894193013105], [-70.699254930583663, 42.622189133709604], [-70.698666723905092, 42.622288043257939], [-70.697458570526749, 42.622125440453374], [-70.697241463996463, 42.622030034903091], [-70.697055872244619, 42.621527932281147], [-70.696808174478392, 42.621441855908756], [-70.696313294336008, 42.621602079750076], [-70.695848381342302, 42.622059684707843], [-70.695507845505091, 42.622055602628748], [-70.695290646540059, 42.621824524127092], [-70.695321953609309, 42.621463559428989], [-70.696529379435816, 42.621022378021834], [-70.696838730197157, 42.62075670350508], [-70.697365915543941, 42.619973814490791], [-70.696932331847009, 42.619151566693517], [-70.69609495844287, 42.619100727915388], [-70.69563081642157, 42.619260622640439], [-70.694918480708111, 42.619793562524755], [-70.694857829690292, 42.620046922102112], [-70.694949978673804, 42.620342938730658], [-70.694578790271365, 42.620591882379458], [-70.694330388127653, 42.62134294409892], [-70.694052648871335, 42.621347218012829], [-70.693618742334252, 42.620867053414962], [-70.692658878455561, 42.620566053446062], [-70.692070234051954, 42.620727944336679], [-70.691760203324606, 42.620750532107444], [-70.691698200585478, 42.620481191421128], [-70.691821907254791, 42.620245109525435], [-70.691543823663224, 42.619744690814677], [-70.691170942594454, 42.618786096607145], [-70.690676282882137, 42.618189631397904], [-70.690645170221316, 42.617613248364648], [-70.690334635875473, 42.617590815801158], [-70.688569890081979, 42.617941323572069], [-70.686247430268963, 42.61820964352237], [-70.685534702731729, 42.618211371098873], [-70.685472645645106, 42.618005044356202], [-70.686031080357751, 42.617501416088089], [-70.686061425004056, 42.617275485054492], [-70.68572089429054, 42.616839249871695], [-70.685658781023307, 42.616128147907688], [-70.685411591132777, 42.616015042510348], [-70.685008255412995, 42.616128690218922], [-70.684884159261941, 42.616770328820273], [-70.683337103925069, 42.617252290453322], [-70.683336211980802, 42.616973203934187], [-70.682810756950502, 42.616746672783044], [-70.682903067612273, 42.616565023536054], [-70.68463679098808, 42.615719781202465], [-70.684668141345497, 42.615538870437518], [-70.684420750627396, 42.615488689562618], [-70.683738799790305, 42.61553509599883], [-70.683677492194008, 42.615121083559124], [-70.683336948009654, 42.615035941919068], [-70.68308920518534, 42.615219913121109], [-70.682996704094421, 42.615717192102252], [-70.682655319902821, 42.615875112520804], [-70.682066819361367, 42.615811348589247], [-70.681788658756687, 42.615906155946568], [-70.681509018363087, 42.616180463835235], [-70.681385838370062, 42.616542484949107], [-70.681415778690209, 42.617136868132945], [-70.681416500981328, 42.617343932801269], [-70.681075274876932, 42.617366810849362], [-70.680828073882495, 42.617226687812035], [-70.680208698849441, 42.617136768042684], [-70.680177379489066, 42.616911480935443], [-70.68085964819042, 42.616288932053173], [-70.680951915387126, 42.616017258069924], [-70.680580451544913, 42.615788387687338], [-70.679929882441172, 42.615698875112514], [-70.679930260530725, 42.615239115251235], [-70.680333551008104, 42.615035548967498], [-70.681509237050236, 42.614990952710585], [-70.682066800591613, 42.614667478882843], [-70.682159826553047, 42.614458827401428], [-70.681942936520016, 42.614209719732472], [-70.6811071109625, 42.614186330570895], [-70.68085900502858, 42.613910531800926], [-70.68163420078487, 42.613637487699727], [-70.681942645254992, 42.61322780429537], [-70.682005616090052, 42.612902536318387], [-70.681726126056049, 42.612744090945434], [-70.681386362907233, 42.612721967127293], [-70.680736097929298, 42.612930086968362], [-70.680239609963465, 42.613243905157688], [-70.679775918640615, 42.61331317345357], [-70.679497024275619, 42.613137351887246], [-70.679434619312033, 42.612931559093205], [-70.680023449995133, 42.612490112985547], [-70.680147210655463, 42.612289513471069], [-70.680054048576622, 42.612012021911163], [-70.679033099740593, 42.611531591141208], [-70.678258812960365, 42.611623941991319], [-70.677979545247766, 42.611393558124163], [-70.67739076197239, 42.611420334180295], [-70.675224710575492, 42.610434221504882], [-70.673923938631972, 42.609651328281394], [-70.673893003975522, 42.609426581685035], [-70.676029862010552, 42.608512329645222], [-70.676772836689437, 42.607987554964495], [-70.677051938447647, 42.607641323213961], [-70.677422870956676, 42.6068607386173], [-70.677453643126569, 42.606454669520019], [-70.677175283047177, 42.606044777322225], [-70.675936307511734, 42.605648288236374], [-70.675689155807007, 42.60547151295782], [-70.675628229149112, 42.605238089979501], [-70.675937233217581, 42.604990472899033], [-70.67711333182649, 42.604666934108515], [-70.677330169907009, 42.604393359023867], [-70.677268885594984, 42.604186942209459], [-70.676803899179106, 42.60397773775793], [-70.676525264085896, 42.603450177232574], [-70.676619006062282, 42.603205524080927], [-70.67742334036997, 42.602680102122321], [-70.678011166901484, 42.602608306440544], [-70.678816585573486, 42.602839733777635], [-70.679467180715591, 42.602767206771169], [-70.680737211945328, 42.602243990294603], [-70.681325259140365, 42.601920105933054], [-70.681974006539804, 42.601162901683281], [-70.682501886434125, 42.60004635306526], [-70.682533267732083, 42.599271178289264], [-70.68262540127138, 42.599035511414954], [-70.683770416352175, 42.597892445168391], [-70.684823932561713, 42.597074977330067], [-70.685225480586595, 42.596411616629375], [-70.685195263864372, 42.59457378372521], [-70.685287893203324, 42.593978012129568], [-70.685474369660128, 42.593182053477022], [-70.684978494044387, 42.593405870447974], [-70.684421287836443, 42.594207042006978], [-70.68408033497407, 42.594482094296687], [-70.683894963485756, 42.595746195894755], [-70.683398867840381, 42.596267091786032], [-70.68281122843625, 42.596338915895231], [-70.682656708445336, 42.596152097446236], [-70.682595310051752, 42.595747083855585], [-70.681851740767712, 42.59503735939083], [-70.681666058356257, 42.594004159558956], [-70.681480656277969, 42.593709718780048], [-70.681448836086133, 42.593223349898437], [-70.682284458882123, 42.592057756948783], [-70.683152449429301, 42.591306598862879], [-70.683988487697007, 42.5911678391859], [-70.684576131357687, 42.591393187017424], [-70.685225537642765, 42.591374635729387], [-70.685443073585091, 42.591191616539525], [-70.685442036873965, 42.590065196856862], [-70.685195349027623, 42.589591356395402], [-70.684451545005729, 42.589016145194215], [-70.684421491852845, 42.58869291733992], [-70.684606646387024, 42.588356625560841], [-70.685288049918853, 42.587896179586565], [-70.685752200835182, 42.587276560376161], [-70.686681052935029, 42.586776168911463], [-70.687176026366558, 42.586183228946823], [-70.687702532323911, 42.586130038552241], [-70.688197662755641, 42.586384516247314], [-70.689219066641144, 42.586774848737889], [-70.689744740202372, 42.586748741181445], [-70.69051888529718, 42.586386144013332], [-70.691076036412028, 42.585900575213493], [-70.691323521189744, 42.585535991006033], [-70.694202646059892, 42.583177713032477], [-70.695161397604139, 42.581461021698011], [-70.6960894631938, 42.58078040585665], [-70.696646996157185, 42.580114219065045], [-70.696986665966264, 42.578992328954321], [-70.69788394905423, 42.57812251844414], [-70.69791481570897, 42.577410351079585], [-70.698348548752946, 42.577097730771783], [-70.69952383960846, 42.57656689824973], [-70.700329469790859, 42.576473453900064], [-70.700947592753408, 42.576680835706298], [-70.701844948976699, 42.576433259818089], [-70.702402091369095, 42.576839441267694], [-70.702898113017881, 42.5768681657852], [-70.703176492712075, 42.576701288010561], [-70.703918777317909, 42.575951896437189], [-70.70441395268972, 42.575718990879878], [-70.705279972458939, 42.575471712530451], [-70.706301133252424, 42.575420852865562], [-70.707106062919053, 42.575129297676973], [-70.70732253002177, 42.574963605037603], [-70.707787438436455, 42.574830676961348], [-70.708560135261123, 42.574738029585923], [-70.709086663756523, 42.574576800337816], [-70.709333432294258, 42.574393396291129], [-70.709457414072531, 42.574093736355714], [-70.709426532057549, 42.573040211780466], [-70.70970431540303, 42.572675255284636], [-70.710385978201927, 42.572467278229801], [-70.711531116580829, 42.572423342667847], [-70.71196317273629, 42.57223669748435], [-70.712768269938067, 42.572053136274263], [-70.71478025826751, 42.572518598411342], [-70.71524478945102, 42.573088386579883], [-70.715584708922094, 42.574461894174952], [-70.715491473234366, 42.57546451769656], [-70.715802784811302, 42.575809905169095], [-70.716266708502388, 42.576127519717687], [-70.717350897465778, 42.576543418233285], [-70.719114156210765, 42.576697694560998], [-70.720012488107784, 42.576611492211754], [-70.721033208385293, 42.576379815834521], [-70.721899662362603, 42.576033476915001], [-70.722023720122692, 42.575851379248554], [-70.722023049820436, 42.575076605797285], [-70.722795893007188, 42.574506183015806], [-70.722950367461905, 42.574296831033209], [-70.722857870163878, 42.573865791089943], [-70.723321061297085, 42.57324601506393], [-70.723227940927103, 42.572400848219409], [-70.723599539696366, 42.572214833061039], [-70.724310904744783, 42.572122838224914], [-70.724837708739173, 42.572241162077091], [-70.725796829266827, 42.572217801881635], [-70.726817757675036, 42.572031089389228], [-70.727436827384267, 42.571985720887994], [-70.727745647606952, 42.572071062575162], [-70.728303650110021, 42.572098922529634], [-70.729479082087423, 42.571846870021993], [-70.729726264207002, 42.571932875142657], [-70.729913111865457, 42.572371381431026], [-70.730067632175661, 42.572963707164291], [-70.729913802510637, 42.573840439890837], [-70.730997656597424, 42.574886933608994], [-70.730873845299485, 42.575140973623185], [-70.73006927883516, 42.575162616675414], [-70.728985743903365, 42.576052857212972], [-70.728831939834777, 42.576397891497805], [-70.728770605448716, 42.577020375020133], [-70.728987451404464, 42.577566484159874], [-70.728864604676104, 42.578298208795154], [-70.729328611385966, 42.578615860624033], [-70.730256602417057, 42.578934895288], [-70.731000258675465, 42.579077143021998], [-70.731898381600487, 42.579099418560986], [-70.733228362161611, 42.578979974671633], [-70.733785502679694, 42.578773283368804], [-70.734249814420039, 42.578316059978931], [-70.734249547063072, 42.578117459938085], [-70.733939192909787, 42.57765401489052], [-70.733877119191561, 42.576807894445672], [-70.733505537124202, 42.576281563151561], [-70.733473696021804, 42.575894868008689], [-70.734029569592977, 42.575318968270899], [-70.734030359483754, 42.575003340623162], [-70.73421507364526, 42.574838557604501], [-70.734679865168815, 42.574750534053166], [-70.735732370127039, 42.575095108411553], [-70.735732506388828, 42.575365188744279], [-70.735268463511886, 42.575642277093642], [-70.735145151159685, 42.575806298370168], [-70.735362834371244, 42.576398044342803], [-70.735734245509562, 42.576698672126057], [-70.736228792438979, 42.576880288465716], [-70.736879058526881, 42.576897553897048], [-70.737220044836548, 42.576783944113942], [-70.737373785938146, 42.576601486300191], [-70.73743512690173, 42.576213067480097], [-70.737806567760529, 42.575847043016324], [-70.738425527895586, 42.575621561820711], [-70.73935278352306, 42.574931592698782], [-70.739817229653738, 42.574861551515603], [-70.740437201413329, 42.57524824603307], [-70.741365004954417, 42.575360670034037], [-70.74201382237176, 42.575314878622429], [-70.742479357676828, 42.575154177289235], [-70.742819219253249, 42.574879036259134], [-70.743160050899832, 42.574837339095083], [-70.743778325180415, 42.575062587060089], [-70.744335699940024, 42.57497279065764], [-70.744923147891086, 42.574558553128639], [-70.745511081896964, 42.574377844295945], [-70.74650020891093, 42.573894293305017], [-70.747429292113083, 42.57366403652081], [-70.749487736212302, 42.573587955617278], [-70.7507191932918, 42.573300581202325], [-70.75102766113919, 42.573070135481828], [-70.751028422549396, 42.572493431322805], [-70.751586555467597, 42.571926555033848], [-70.751988765835307, 42.5717401073749], [-70.75285509086055, 42.571600507016733], [-70.752980145536881, 42.571418472969327], [-70.753011167266536, 42.57103102002015], [-70.753320710928364, 42.570944617390744], [-70.754496854922721, 42.570899916300945], [-70.754899889467666, 42.570487857659643], [-70.755238851829091, 42.570302700817791], [-70.756013661882889, 42.570236757988283], [-70.75626002028558, 42.570322790834545], [-70.756446470827754, 42.570572645314726], [-70.757034090676527, 42.570670957840953], [-70.761027537909598, 42.568519672122818], [-70.761523384155879, 42.568133482193346], [-70.763133697484506, 42.566252051116628], [-70.763226581492177, 42.565890917920932], [-70.762576952848306, 42.565495152929117], [-70.762515755957509, 42.565135736191337], [-70.763228419972179, 42.564628848666956], [-70.763784803430411, 42.564467561491654], [-70.764991970499437, 42.564466795008116], [-70.765208826631266, 42.564220063191399], [-70.765084520769435, 42.56406001465912], [-70.764156752729775, 42.56350665052021], [-70.763878608256704, 42.563213370474791], [-70.763848109974887, 42.56272757277906], [-70.763662621191273, 42.562478276033126], [-70.763693894554692, 42.562063273148816], [-70.764033745772707, 42.561931481903052], [-70.764622635634638, 42.561841879154997], [-70.765859577964889, 42.562155846412395], [-70.766137306168318, 42.562548058244573], [-70.766354862816286, 42.562616961655294], [-70.766788178524791, 42.562637181183739], [-70.767561143345944, 42.562553144325172], [-70.768859873144791, 42.562550758172939], [-70.769262472670931, 42.562688888522395], [-70.769603113792286, 42.563602563438849], [-70.770313604499606, 42.563645320011275], [-70.770840382779895, 42.563556373035652], [-70.77108845022164, 42.563399223776351], [-70.770995088222008, 42.563121262417354], [-70.770376617122352, 42.562599160774134], [-70.770469754843091, 42.562138363945266], [-70.770686549784614, 42.561999653266263], [-70.771058556576463, 42.561318342844423], [-70.771554431497933, 42.560698040998439], [-70.771894576848922, 42.559800463103791], [-70.772172685745574, 42.559507921057566], [-70.772760637567728, 42.559327704308075], [-70.773534392804976, 42.55929764856748], [-70.774771561412592, 42.559485484840714], [-70.775638573714517, 42.559372816637605], [-70.77604080249111, 42.559510921167252], [-70.777092404475397, 42.55936843104692], [-70.7774946922721, 42.559533538807756], [-70.777959028227514, 42.559895381235037], [-70.777772310507615, 42.560195801300267], [-70.776689740780895, 42.560329730838035], [-70.776348647777539, 42.560487929170847], [-70.776194498543006, 42.560995071688289], [-70.775234375237446, 42.561334476151231], [-70.775110457283432, 42.561615660586966], [-70.775203689991585, 42.562181702476508], [-70.775914718408913, 42.563215799082471], [-70.776192578783835, 42.563878156229066], [-70.776687197631517, 42.564564288101145], [-70.777615192069717, 42.565225673370563], [-70.777646073143956, 42.565432297114143], [-70.777120373283097, 42.565755980586033], [-70.776160130056212, 42.565887791213761], [-70.775511646523512, 42.565798736516555], [-70.77514014735732, 42.565939905390486], [-70.77492307468188, 42.566303688433983], [-70.774643670363048, 42.566506202163907], [-70.773901585333718, 42.566760900810728], [-70.773282647755309, 42.567077138123608], [-70.772942043837517, 42.567442480048449], [-70.772910177844281, 42.568019528078501], [-70.773962434113457, 42.568615825879071], [-70.773188299389034, 42.569186580666759], [-70.772878974545449, 42.569299415484593], [-70.772414527550765, 42.569207542006843], [-70.772384285657196, 42.568640815802041], [-70.770806037224958, 42.568611137539804], [-70.7705590104283, 42.568750197378826], [-70.770650356630739, 42.569550388475498], [-70.770774404159511, 42.569755982049863], [-70.772000151280835, 42.569969071441584], [-70.77160959991771, 42.570238396232483], [-70.770835834245091, 42.570331368128834], [-70.770279373672253, 42.57009657309991], [-70.769845813551257, 42.570103463425127], [-70.769350281296653, 42.570507695916241], [-70.768328789360794, 42.570829819647564], [-70.767865252995193, 42.571152054640613], [-70.767091069061365, 42.571038568567154], [-70.767183133869977, 42.571469568935662], [-70.768730857674925, 42.57174271392617], [-70.769937777977248, 42.571543835498737], [-70.770278275756766, 42.571727752136347], [-70.771113692819156, 42.57175049693975], [-70.771174713530684, 42.571929764478341], [-70.770185061072027, 42.572593665199797], [-70.770277425348141, 42.57291663319257], [-70.770555694968522, 42.572984291644453], [-70.771020139952412, 42.572941583150495], [-70.772289024341731, 42.572525388140903], [-70.772876615062373, 42.572408096751467], [-70.773279555273859, 42.572068535337422], [-70.773373711700359, 42.57126510405233], [-70.773744951795678, 42.571223508240557], [-70.774331962955983, 42.571430390275168], [-70.775105701422021, 42.571499351900314], [-70.775539359724078, 42.571357493088577], [-70.775663008708506, 42.571175426043936], [-70.775663262501993, 42.570877710933338], [-70.775044883607279, 42.570401190050724], [-70.774951305304711, 42.570150239141078], [-70.775138350455805, 42.569210640051033], [-70.775323286108076, 42.568793179424034], [-70.775756917822207, 42.568524742686904], [-70.776561687466767, 42.568476315264007], [-70.777241993538638, 42.568564932949087], [-70.777985237362586, 42.568571296321004], [-70.778232587250429, 42.56877486264365], [-70.778635624108617, 42.56932708310854], [-70.77891361665344, 42.569439642876944], [-70.779315553799165, 42.569343124979056], [-70.77987314697225, 42.568596057310792], [-70.780646653441366, 42.56781819370476], [-70.78070846626774, 42.567609808135934], [-70.780089870145957, 42.567610451772573], [-70.779439351105026, 42.568017181300561], [-70.778913633759032, 42.56804315582017], [-70.778170749711421, 42.5675591212011], [-70.778171734063108, 42.567154009050512], [-70.778263950261433, 42.566918266842222], [-70.779843172449418, 42.565686310859789], [-70.780245701228679, 42.565247693444583], [-70.781297852300824, 42.564861557107889], [-70.781947614500098, 42.56429276490163], [-70.782257725733871, 42.564224923927036], [-70.78256650125401, 42.564499173869343], [-70.783371019097416, 42.564585737165004], [-70.784577967185598, 42.564539841277941], [-70.785846323726304, 42.564889168180599], [-70.786496424861312, 42.564771114344971], [-70.786403989440799, 42.564448158583517], [-70.786496906230923, 42.564104382602885], [-70.787796078940403, 42.5639036379903], [-70.788137203525693, 42.563655379933223], [-70.789374424442883, 42.563212334728199], [-70.790426827366545, 42.562600961027044], [-70.790767093055493, 42.562784816179779], [-70.791602172056017, 42.562870969884266], [-70.792129052389399, 42.562574325932971], [-70.793799536087022, 42.562097790185582], [-70.794140018882246, 42.562371662982358], [-70.794139389097907, 42.562623732698988], [-70.794051267463757, 42.562782450045297], [-70.79386062663562, 42.563123923449041], [-70.793827040392244, 42.563382543389793], [-70.79379253186157, 42.563647369469642], [-70.793767751737107, 42.563837353231939], [-70.793693751211634, 42.564018123098727], [-70.793610621419347, 42.564220173239903], [-70.794386938108985, 42.564313779138075], [-70.795655865428884, 42.563951344190535], [-70.798688290226252, 42.563353675872371], [-70.800390097237639, 42.562092926940643], [-70.800451047161118, 42.561659550088059], [-70.800947358431543, 42.561435241890564], [-70.801813189792526, 42.561295272134913], [-70.801968233065338, 42.561040805784842], [-70.80240146119651, 42.560925761656577], [-70.802989540868921, 42.561322100229866], [-70.803235944948668, 42.56166001648716], [-70.803886505013892, 42.561703914921139], [-70.804226917040666, 42.56159064461913], [-70.804721610197333, 42.561114237106395], [-70.80629970001246, 42.56056665371451], [-70.806950051579605, 42.560240886268232], [-70.807970199587658, 42.55948574783352], [-70.80902289970426, 42.55880272628869], [-70.810601056638049, 42.557560802236452], [-70.812672963166065, 42.555690534848416], [-70.813973334902229, 42.5548407744676], [-70.814901237927515, 42.554501937866036], [-70.818674786017425, 42.553558213052192], [-70.820252637576445, 42.552992432821519], [-70.821922897640121, 42.552073911082779], [-70.822479800569738, 42.551839693711912], [-70.823531358477553, 42.551633762740174], [-70.824521939239801, 42.55157258757631], [-70.825666791238191, 42.551932638499608], [-70.826408709901244, 42.551839654486209], [-70.827336887653942, 42.551635759240646], [-70.827831752337929, 42.551861998839449], [-70.828605681500207, 42.5519757074496], [-70.829347221461475, 42.552387389457181], [-70.829873361471911, 42.552433209377021], [-70.830399968652884, 42.5523433600845], [-70.831111270709727, 42.552025642735444], [-70.831606202628606, 42.551684161036214], [-70.83210040355182, 42.551181255933109], [-70.832812552601766, 42.550700855819564], [-70.833678784755008, 42.550605753254032], [-70.834142425312066, 42.550400199621052], [-70.83451342688457, 42.550330949641449], [-70.834699690797279, 42.550472104839834], [-70.83479236020888, 42.551290707338097], [-70.835349419280476, 42.551290587191971], [-70.836432561712684, 42.550994064691885], [-70.837483964233712, 42.550310326858806], [-70.838132800423963, 42.550056936461949], [-70.838906321829796, 42.550034904205766], [-70.839153467603424, 42.550490412456739], [-70.83958714925744, 42.550492896015825], [-70.840638724344373, 42.550196153203146], [-70.841318995896984, 42.549554641621334], [-70.842432863875814, 42.549365189311445], [-70.843206557829205, 42.549524351986662], [-70.843638983850227, 42.54955328090157], [-70.843855040656436, 42.549477447596395], [-70.844009502316894, 42.549294852682713], [-70.844009703615157, 42.548772161722297], [-70.844164630658625, 42.548427522045614], [-70.844720980908733, 42.548012692024791], [-70.845525197493956, 42.547810737462768], [-70.846082873295913, 42.54801816960007], [-70.84623670518593, 42.548294701758529], [-70.846361404484028, 42.548680270381112], [-70.847165391084957, 42.548747841492663], [-70.847505119080111, 42.548427379851667], [-70.848247968200667, 42.54849630810056], [-70.848557310167607, 42.54865335058787], [-70.848711892599354, 42.548858402790827], [-70.848681189897334, 42.549272979959746], [-70.848557672946313, 42.549455125622885], [-70.84858942048902, 42.549941446079053], [-70.848063290604841, 42.550166330078092], [-70.848063606984482, 42.550418405039089], [-70.848898907027063, 42.550828240104224], [-70.850012426623849, 42.55087332074504], [-70.853476544118706, 42.549681936033998], [-70.854249911677343, 42.549245770031447], [-70.854775391166484, 42.54853408306937], [-70.854774184985629, 42.54805693783419], [-70.854650314129273, 42.547716396228523], [-70.854773447781781, 42.54686750820369], [-70.855236645957461, 42.546112168050698], [-70.85632017570866, 42.545950500629495], [-70.85675254522215, 42.546114419461411], [-70.856815226669923, 42.546617834951469], [-70.857094466824691, 42.546802774873505], [-70.857309896781359, 42.547096560310393], [-70.857526950964754, 42.547183294248775], [-70.858083736505492, 42.547003010735594], [-70.858207186319149, 42.546226052024096], [-70.858609287013067, 42.545859181280491], [-70.859722645757273, 42.545264441925887], [-70.860402492702676, 42.544532249617603], [-70.860927557662251, 42.544307303594003], [-70.861453926594137, 42.544325973248959], [-70.861701241856608, 42.544718415754275], [-70.861701737040391, 42.545331136522393], [-70.861577508740098, 42.545720352268475], [-70.86179558379682, 42.546680877206164], [-70.862600442001622, 42.54686600977243], [-70.863496743326209, 42.546725206667226], [-70.864084924326775, 42.546544437331626], [-70.864393420510737, 42.546341328440398], [-70.864703266893585, 42.546245717103353], [-70.865105153345738, 42.546428522127087], [-70.865632558534188, 42.54702388516742], [-70.866529567411433, 42.547684924558375], [-70.86717971149524, 42.5478448682303], [-70.867426847640161, 42.548417889032429], [-70.868107434387795, 42.548505523376726], [-70.868479235224541, 42.548436618905995], [-70.869098035857434, 42.548164885380359], [-70.872095906893094, 42.546034662060706], [-70.874506746710182, 42.544138667459052], [-70.875998836112871, 42.542936978381185], [-70.878074095606593, 42.539912055809353], [-70.878847541055322, 42.539277668148557], [-70.87918774288022, 42.539110070535372], [-70.879960579365431, 42.53934046348418], [-70.88076458786287, 42.540029521703325], [-70.881351577699803, 42.540281413801871], [-70.881599439224601, 42.540691191468184], [-70.881970929734976, 42.540784379047444], [-70.88323859995046, 42.540835547412307], [-70.883919459789325, 42.540851609719105], [-70.884476070864778, 42.540463508080876], [-70.88478619791033, 42.540395392445163], [-70.885527634408916, 42.540491081358667], [-70.886022785039103, 42.540374973763804], [-70.88630117539563, 42.540190191364509], [-70.886981937622934, 42.539990172504893], [-70.88790971770284, 42.540127348095858], [-70.888528479045007, 42.540081115734552], [-70.889054636828931, 42.539829580267188], [-70.88930185949495, 42.53987023090864], [-70.88964115809712, 42.540170823427154], [-70.889672580730732, 42.540584569416055], [-70.889950766245533, 42.540696863158011], [-70.891249264466154, 42.541035649656564], [-70.89149602178135, 42.541428024763135], [-70.891464990731166, 42.541906169255611], [-70.891248311088148, 42.542206612778912], [-70.890568229037697, 42.542461216099689], [-70.890289127858253, 42.54268201530865], [-70.890350091817666, 42.543050363794471], [-70.890567506842601, 42.54350614390399], [-70.890535965239835, 42.543696112101038], [-70.890195890333302, 42.54398968993776], [-70.889608450199376, 42.544242616699449], [-70.888803324053697, 42.544859532515559], [-70.8880606391226, 42.545250628784324], [-70.888029385334292, 42.54554808874947], [-70.888090834607979, 42.546141415558139], [-70.887904284275223, 42.54678411090444], [-70.887532327350655, 42.547348759653417], [-70.886728793379632, 42.547695591545896], [-70.886758880528362, 42.548082322673473], [-70.887346781263204, 42.548451131621214], [-70.887190274934497, 42.550047719060139], [-70.886911548850151, 42.550989258580493], [-70.886539712864973, 42.551400320039704], [-70.886292524039121, 42.551927276686641], [-70.88573462989757, 42.552287831599223], [-70.885734590295158, 42.552566911318507], [-70.88592014273587, 42.552906035968427], [-70.886384062710221, 42.553394103409417], [-70.886631060360983, 42.553938902322763], [-70.888486293133852, 42.555331816044706], [-70.888701987601777, 42.55609367610765], [-70.88962969257841, 42.556087334669961], [-70.889816118370163, 42.555949321187036], [-70.88984758207225, 42.555705337984804], [-70.890248305558302, 42.555518402676014], [-70.890774776413863, 42.555536938472883], [-70.891022636022825, 42.555631603677092], [-70.891609761919781, 42.555585727359215], [-70.892260223187108, 42.555197003895621], [-70.89219845601032, 42.554972784667477], [-70.891579564978386, 42.554739956995519], [-70.890930580385159, 42.554282443010585], [-70.890312700197455, 42.553706975912149], [-70.889137008779755, 42.553573550272304], [-70.88768362492111, 42.552795585126084], [-70.887033322458805, 42.552203003048831], [-70.887065726923836, 42.551787976301377], [-70.888056391823881, 42.550807993486465], [-70.8883352314311, 42.549614379518282], [-70.888489739200239, 42.549413720837265], [-70.889325497532965, 42.549273566649305], [-70.889170776821686, 42.54906910904355], [-70.88861488587159, 42.548699849016224], [-70.8885218358201, 42.548539559918005], [-70.888553168216546, 42.548133439265101], [-70.88883210987531, 42.547831710326065], [-70.889203038632672, 42.547699176303077], [-70.889790386992914, 42.547698323639949], [-70.889915315052022, 42.54728207458399], [-70.889728885575238, 42.547095995223685], [-70.889884377942764, 42.54661625974488], [-70.890008187592585, 42.546416066736782], [-70.891030524762144, 42.545408136761139], [-70.891710632685545, 42.545153981032712], [-70.893474404524099, 42.545204950637618], [-70.894123064601459, 42.54532089192103], [-70.894494403337035, 42.545206348260152], [-70.894525127488947, 42.544998909803333], [-70.894123424892584, 42.544789110779845], [-70.892824711913832, 42.544450356349756], [-70.892732136487524, 42.544038000346369], [-70.893659978621116, 42.543580958270688], [-70.893753471174634, 42.543417152332836], [-70.894093846484608, 42.543140940651597], [-70.894743163083007, 42.543148310774363], [-70.894990440232831, 42.543324618484263], [-70.895114008290321, 42.543718499847571], [-70.895360963536021, 42.543966825770802], [-70.896506322632192, 42.544110113422136], [-70.897031742836688, 42.544470714154507], [-70.89752681497211, 42.544453045174478], [-70.897929363381039, 42.544014020094281], [-70.898299386674168, 42.544125152289759], [-70.898361365997474, 42.544430393287236], [-70.898144928338951, 42.545001468714972], [-70.89795849075162, 42.54524806696076], [-70.897958626985996, 42.545527147869159], [-70.898268006400883, 42.545666051611626], [-70.898855534294725, 42.545593223168019], [-70.899258097238047, 42.544973511758741], [-70.899505625058154, 42.544933748819943], [-70.89978410427031, 42.545019012287156], [-70.899938835135359, 42.545250553598223], [-70.900031697807691, 42.545663445071163], [-70.900866304072309, 42.545316142075961], [-70.901052165410178, 42.545475192681373], [-70.901050955995316, 42.5468717568356], [-70.900895841566509, 42.547333413892339], [-70.900896135734556, 42.547648505703307], [-70.90123658769987, 42.547606970956863], [-70.901854470129351, 42.547146543671829], [-70.902103610813143, 42.546719042385604], [-70.9024743337025, 42.546604560172668], [-70.903123518725479, 42.547079926125747], [-70.903803889198059, 42.546987837180552], [-70.904856110158292, 42.547564394189592], [-70.905227738859679, 42.547702429863179], [-70.906092972894015, 42.547696804891409], [-70.906804032288619, 42.547604226073567], [-70.907577794847953, 42.547861354820732], [-70.908382129099479, 42.547793462191358], [-70.909001017675521, 42.547558066412947], [-70.909526486917429, 42.547260881640661], [-70.910114728334179, 42.547124891485943], [-70.910980421238506, 42.547290821282331], [-70.911443927861399, 42.547787248229028], [-70.911413193141101, 42.548184284825041], [-70.910856410862095, 42.54891407169093], [-70.910856082040596, 42.549301180440203], [-70.911165767228027, 42.549503608886674], [-70.911484568819532, 42.549551328873555], [-70.911969938659922, 42.549624744244994], [-70.912495698614023, 42.549571157022925], [-70.912124310554887, 42.549090958636157], [-70.912093931726446, 42.548614297901885], [-70.912619645480291, 42.547767313483078], [-70.912960219993593, 42.54769873708829], [-70.913424408966463, 42.547861974320725], [-70.913764748293062, 42.548198509954638], [-70.914011636540693, 42.548725874408866], [-70.913981330072531, 42.549392990643454], [-70.913918249329797, 42.549826503765338], [-70.914691351090724, 42.550029655641737], [-70.914939791495144, 42.550286318603774], [-70.915340487101304, 42.5514958634948], [-70.915309800583302, 42.552271008026089], [-70.915526262097146, 42.552681721206774], [-70.915588490253555, 42.553167094120838], [-70.91537107188411, 42.553621161657382], [-70.915433323715973, 42.553854373154557], [-70.915742390419297, 42.554101258339855], [-70.915711620562192, 42.55442582453918], [-70.915432716367363, 42.554629219706143], [-70.914906957963339, 42.554835863810105], [-70.914504815864916, 42.555590577986997], [-70.914226440179306, 42.55577542764852], [-70.914226228883933, 42.55595547754541], [-70.915587562646522, 42.555842467518218], [-70.915896230779509, 42.555936306783806], [-70.916020369617598, 42.556600872767802], [-70.915679785901318, 42.556849599133407], [-70.915679718456346, 42.557264255986574], [-70.916143677255462, 42.557355459932587], [-70.916979906259002, 42.556945031575459], [-70.917349780709202, 42.556965445337177], [-70.917629730383183, 42.557150330616793], [-70.917751966261349, 42.557535266090603], [-70.917473420042654, 42.558107772030731], [-70.917473345575885, 42.558629918960023], [-70.917163710129714, 42.558797152814549], [-70.916391108096917, 42.558909110006219], [-70.916174176430985, 42.559138117389452], [-70.917009365270616, 42.559277378642911], [-70.917287960612242, 42.559570288183593], [-70.917287938884996, 42.559849366703759], [-70.916761256290229, 42.560533688998049], [-70.916544603540046, 42.561284845128007], [-70.916544950194947, 42.561536917794463], [-70.916977929487061, 42.561584119119431], [-70.917256672621491, 42.561308699416706], [-70.917410590476265, 42.561099087509795], [-70.917442458747743, 42.560918657830968], [-70.918091994117162, 42.560025013081578], [-70.918091703135573, 42.559502324389477], [-70.918370776297934, 42.558912354914], [-70.919051654791289, 42.55803632735315], [-70.919422682557425, 42.557786754075615], [-70.919949206559664, 42.5576964962058], [-70.920815413170828, 42.557997391499811], [-70.920165094494521, 42.558837032640895], [-70.919948868105251, 42.559507174845244], [-70.919979948855257, 42.559821879657385], [-70.920412509522322, 42.559688385200836], [-70.920784813723699, 42.559114722788898], [-70.921092731463972, 42.559226549248002], [-70.92115513152396, 42.559711828848023], [-70.921341086463883, 42.55987084611241], [-70.921712338825927, 42.559756304719585], [-70.921835711120707, 42.559502601443413], [-70.921867321216183, 42.558591793337847], [-70.922021725027321, 42.558247049588488], [-70.922393425888643, 42.55804248288279], [-70.922825783736954, 42.558035644077087], [-70.92437334700702, 42.559135472993532], [-70.924868174429548, 42.559730397296327], [-70.924836523496751, 42.559982850529529], [-70.924187170272077, 42.560120321208714], [-70.923971360470588, 42.560375816088623], [-70.924156608685067, 42.560759888439669], [-70.924589741023965, 42.560897087256158], [-70.924960824665007, 42.560854464801807], [-70.925393623243266, 42.560306926623781], [-70.925765330927092, 42.560048244001052], [-70.926167025158534, 42.55943807048434], [-70.926043949271559, 42.559206273294691], [-70.92570299556472, 42.558950255142136], [-70.925207997681582, 42.558013147104113], [-70.924898951307554, 42.557811300612876], [-70.922052916368798, 42.556571113145147], [-70.921094665475749, 42.556389588970397], [-70.919980735197626, 42.556029564250707], [-70.919547428196907, 42.555730841192101], [-70.919238203966898, 42.555339924900167], [-70.91815545977741, 42.554493271265194], [-70.918000882133825, 42.554288223718139], [-70.917785278721425, 42.55337337691612], [-70.917412757982007, 42.552956298571701], [-70.917444367016898, 42.552460777557357], [-70.918063386140744, 42.551882606784289], [-70.918619868533298, 42.551747043280841], [-70.918682913443121, 42.551340535691352], [-70.918991798924196, 42.551065263149077], [-70.919857784228142, 42.55096951293006], [-70.920198705551911, 42.551062872916681], [-70.920538390961269, 42.551264346375177], [-70.920693091588447, 42.551495858822335], [-70.92387870824318, 42.553189616945112], [-70.924373555178619, 42.553189836454045], [-70.924652829895294, 42.552941949025552], [-70.924745754671903, 42.552526044535114], [-70.924250505112212, 42.552183727678973], [-70.923910253166568, 42.552162403507019], [-70.922579547582458, 42.551680235874315], [-70.92146720293961, 42.550744069033563], [-70.9212807700345, 42.550441008118206], [-70.920878331875073, 42.550006235570102], [-70.920445888448981, 42.549617583954564], [-70.920383861889121, 42.549411293743759], [-70.92016705910693, 42.549207646598653], [-70.919673169621689, 42.549053830003764], [-70.919332064250227, 42.549113961110962], [-70.918868641449862, 42.549670956634728], [-70.918435848196438, 42.54987637463973], [-70.917476250363279, 42.549892328913224], [-70.917197725719177, 42.549807108276255], [-70.916640735451537, 42.549393596068086], [-70.916548522397918, 42.549187691216545], [-70.916517769437945, 42.548458327929332], [-70.916672400740879, 42.548023655841256], [-70.917012717318528, 42.547495305094216], [-70.917414807811966, 42.547290907626838], [-70.918900040572055, 42.546553976969719], [-70.919704132432827, 42.546323958063304], [-70.920695139643769, 42.546262500240438], [-70.921653819936921, 42.546074925914731], [-70.922116853152644, 42.546166101856798], [-70.922395424947794, 42.546098897524985], [-70.922519865187112, 42.54561896349469], [-70.922704847743432, 42.545480979786859], [-70.924654562835642, 42.544997830414701], [-70.925211246412573, 42.544952171889705], [-70.926664891379161, 42.545531069205587], [-70.927375847355094, 42.545644882133551], [-70.928118954701844, 42.545596803906591], [-70.928397235642237, 42.545708464625584], [-70.928521061209068, 42.545895881351761], [-70.928645149038289, 42.54660544784511], [-70.928705860651633, 42.546811727143151], [-70.928921920906234, 42.54692469859534], [-70.92929356508354, 42.546810675153864], [-70.929170434102517, 42.546371191038652], [-70.929170565259014, 42.546101114821042], [-70.92932424343384, 42.545936408105163], [-70.929727583703595, 42.545911395140223], [-70.930190988783892, 42.546164676602558], [-70.931211165936745, 42.546255775967261], [-70.931768709158831, 42.546507264528188], [-70.932665055059076, 42.546437945503719], [-70.933129362496871, 42.546646746847138], [-70.935975611840931, 42.547237942448383], [-70.936137364752895, 42.546999085207652], [-70.935841555937955, 42.546925618437271], [-70.935370432181415, 42.546742632279333], [-70.933345815658924, 42.545957944236036], [-70.933006112255271, 42.545757138342019], [-70.932634760061987, 42.545637108789641], [-70.931644301208763, 42.545545628237484], [-70.930097374859628, 42.545004593970269], [-70.928799434997401, 42.54477419018869], [-70.927963567278439, 42.544499971013259], [-70.927283365804797, 42.544178174931531], [-70.926232096677126, 42.544042953387361], [-70.925581984533721, 42.543720666651069], [-70.925273099463368, 42.543401787373995], [-70.924901671104124, 42.542371932214252], [-70.924406815240403, 42.54179500970487], [-70.923944002040443, 42.541802872147883], [-70.923911978425053, 42.542163355206029], [-70.924190692343188, 42.542465162849787], [-70.924251784086763, 42.542734464743219], [-70.923850469473507, 42.542939520101953], [-70.922952914048224, 42.542945746426476], [-70.922674753883442, 42.543075972175643], [-70.922499197943736, 42.543714276123396], [-70.922427806182512, 42.543972202491545], [-70.922117438943346, 42.544175456530539], [-70.9210042499205, 42.544473711051076], [-70.920756574412934, 42.5447301211968], [-70.920601836159179, 42.545047855041879], [-70.920014552027908, 42.545507995910064], [-70.919363978407077, 42.545753373994053], [-70.917971670466471, 42.545803793644765], [-70.91760111660362, 42.545666254594174], [-70.916672203416169, 42.545780844937902], [-70.91627101031068, 42.545823288132802], [-70.915157616447885, 42.545454754759135], [-70.914137040040075, 42.544859907097646], [-70.912342447226024, 42.544196380944314], [-70.911136749004811, 42.54401810272563], [-70.910580768941969, 42.543649488166011], [-70.910549076975713, 42.543262755320967], [-70.910704536324943, 42.542755533859072], [-70.910766542325035, 42.541682832681261], [-70.910889855609526, 42.54152762777931], [-70.911028841947129, 42.541010688764274], [-70.910621913538563, 42.540914082976265], [-70.909918475192043, 42.540747269444864], [-70.909542280958917, 42.540658109151501], [-70.909530266506096, 42.540198915508455], [-70.910086950696567, 42.539694287920199], [-70.910273145650507, 42.539375648034238], [-70.910303745961116, 42.538889124276864], [-70.910087488606621, 42.538595434077813], [-70.909716193885345, 42.538322286233736], [-70.909376025760167, 42.538391485252241], [-70.909529671727412, 42.539118061163101], [-70.909406659007431, 42.539579354427651], [-70.909189898275585, 42.53989846654045], [-70.908571343482308, 42.540080389759936], [-70.90808451783677, 42.540313040175931], [-70.907829800136852, 42.540407970431801], [-70.907426646513258, 42.540558403827028], [-70.907116711703466, 42.540492082467608], [-70.906683942647163, 42.540192771543978], [-70.906714984076331, 42.539895305460668], [-70.906993474458247, 42.53951187669427], [-70.906962860346624, 42.539233178987438], [-70.906374740715222, 42.53881999526007], [-70.906096830004074, 42.53877976337715], [-70.905849327873867, 42.539026600254935], [-70.905818331078081, 42.539693713016455], [-70.905942505953675, 42.539926169468139], [-70.90597216801379, 42.540745018116375], [-70.906899636677153, 42.541179664723252], [-70.90699325775995, 42.541412502954465], [-70.907518901621259, 42.541818070089143], [-70.907920443685981, 42.541982808739128], [-70.909065302699801, 42.542945204336803], [-70.909156583947777, 42.543169026071361], [-70.909188874878168, 42.543789829580049], [-70.908785394306022, 42.544661552852297], [-70.908414712982037, 42.54507260073067], [-70.907826546025802, 42.545254135652847], [-70.907114792554296, 42.545734368211846], [-70.906619781631719, 42.545796551431984], [-70.906279561418927, 42.545595033550455], [-70.904764559657025, 42.544080463404015], [-70.904114980473452, 42.543352401305867], [-70.903404351871956, 42.543030846593574], [-70.902692494388077, 42.543006906694316], [-70.901640597900112, 42.543150537666314], [-70.901022378250488, 42.543124822524511], [-70.90068258182751, 42.542869274470547], [-70.900682058412784, 42.542527173264148], [-70.90086861505921, 42.542163537437844], [-70.900868025342277, 42.541956474730526], [-70.899445977062101, 42.541403882490897], [-70.899013761051464, 42.541113548185436], [-70.898889704368813, 42.540538986120048], [-70.898518697920068, 42.540239426072382], [-70.898673740401563, 42.539849161543899], [-70.899045165947967, 42.539644577716793], [-70.898982756558311, 42.539231303211885], [-70.897931924189365, 42.539077819892064], [-70.897808011488593, 42.53893592215919], [-70.897777488405936, 42.538639217025064], [-70.898334016265295, 42.538044618660855], [-70.898395904460159, 42.537746145012967], [-70.897901670999133, 42.53728614354182], [-70.897314464376848, 42.536989321712383], [-70.8967258682774, 42.537080231728218], [-70.896509608632911, 42.537201175505118], [-70.895830305726278, 42.537293316801026], [-70.895551841040401, 42.537109014995508], [-70.894933643533278, 42.537011246088284], [-70.894592722772785, 42.536764676070675], [-70.894128988243438, 42.536466235054], [-70.894253157961998, 42.536149005023738], [-70.894933201980606, 42.536029328933246], [-70.895366757947755, 42.53580599718515], [-70.895366686207026, 42.535229289375508], [-70.895738181824711, 42.534799651015767], [-70.895584475422098, 42.534478172416456], [-70.894842276952005, 42.534112465183547], [-70.894656653240446, 42.533908391968318], [-70.894625162045244, 42.533422625410509], [-70.894100002787425, 42.532944439194928], [-70.894068907419992, 42.532620721607934], [-70.894934917441915, 42.532462050871068], [-70.895337812533185, 42.532095056701465], [-70.895399743108939, 42.53186923551462], [-70.895771943799701, 42.531592645045421], [-70.896698682139643, 42.531433198962539], [-70.896946008596117, 42.531230853211696], [-70.896915877072544, 42.530537493590757], [-70.897566786807403, 42.529535932592665], [-70.897628750931915, 42.529076041958753], [-70.897350484860098, 42.528440983081552], [-70.897257257757758, 42.527956064300454], [-70.897289666063159, 42.526946228594973], [-70.897444670777034, 42.526493575961396], [-70.897878215889222, 42.525855483109837], [-70.89886778959567, 42.525236133141931], [-70.898836612710994, 42.524803844028618], [-70.898526977000088, 42.524727957612015], [-70.898033011023699, 42.524799021591896], [-70.896454861514073, 42.525645482849718], [-70.895805485330996, 42.5261969147626], [-70.893856459127619, 42.528165555435145], [-70.891843749039509, 42.530793269712994], [-70.891254928598144, 42.532073037418378], [-70.891286114880586, 42.532549800759149], [-70.891471598915032, 42.532943474063359], [-70.891688067755553, 42.533191648026119], [-70.891563713655799, 42.533716565092384], [-70.890789925126498, 42.534179986363441], [-70.890171444204711, 42.534820405025599], [-70.889364757301749, 42.537284023877547], [-70.889210542863381, 42.537520606219445], [-70.889055632259456, 42.537703259006726], [-70.888622779793522, 42.537674497663119], [-70.888251119549224, 42.537536947595193], [-70.888251774375803, 42.536942238562816], [-70.88884126665269, 42.535365404496467], [-70.888408277053571, 42.535390117075714], [-70.887757746783549, 42.536419085844813], [-70.887602108076848, 42.537466523923371], [-70.886457953290474, 42.537539216026865], [-70.886303806559724, 42.537379769836058], [-70.88618093009498, 42.535895934888444], [-70.88602612682854, 42.535591812625086], [-70.885841160303613, 42.535297702462849], [-70.885037355604013, 42.534725623868354], [-70.884264238911882, 42.534540366091989], [-70.883304946372377, 42.534610052367043], [-70.882562572212308, 42.534928464368697], [-70.882222300459603, 42.5349075566211], [-70.881975813558824, 42.534794243375543], [-70.881944536053538, 42.534470521383845], [-70.882687015486212, 42.533855027202712], [-70.882966897061621, 42.532507841128336], [-70.883524336791226, 42.531841206788677], [-70.884329471903783, 42.531548421011685], [-70.88510145292264, 42.531571715310456], [-70.885317735022127, 42.531361306460497], [-70.885380458645258, 42.530882790756593], [-70.886309224747365, 42.530128724904991], [-70.886494308387753, 42.529783648425244], [-70.886557173214797, 42.529377153765978], [-70.886773935032735, 42.529166204517416], [-70.887330568793914, 42.528913758340437], [-70.887671433858429, 42.528619562096011], [-70.887701769443439, 42.528115035325939], [-70.887362719756936, 42.527796431751298], [-70.88618760351406, 42.527266319425621], [-70.884209644716393, 42.526578325202308], [-70.88389980806113, 42.526673448673051], [-70.881888464350851, 42.528589880751099], [-70.881763606139074, 42.529258197650314], [-70.881423334323827, 42.529687329285849], [-70.880279233132129, 42.530102690288004], [-70.880216296438434, 42.530698146636794], [-70.879752154049797, 42.530786847972109], [-70.879257268578144, 42.530560829803605], [-70.878669724289225, 42.53069657647778], [-70.877896329502164, 42.531015421716013], [-70.877896600286334, 42.531222483848502], [-70.878267673053671, 42.531450631204251], [-70.878390419299649, 42.531655562702994], [-70.878328520847106, 42.531909013356369], [-70.878049415637349, 42.532229352696149], [-70.877492526777388, 42.532661265133257], [-70.876317300578435, 42.533212538739015], [-70.874495380893478, 42.533426026951339], [-70.874156960796853, 42.533612165985566], [-70.873970966752822, 42.533795710526945], [-70.873879024373366, 42.534093918804068], [-70.873384049614742, 42.534660647093212], [-70.870910298123277, 42.535305542741789], [-70.870631864142865, 42.535553306559876], [-70.870416289491757, 42.536015765519942], [-70.870200159257095, 42.536289705913113], [-70.86893218206454, 42.536887661719639], [-70.868344322585102, 42.536815753602603], [-70.86815963771673, 42.536683663672932], [-70.868034800791875, 42.536361675766884], [-70.867849370292817, 42.536085539096739], [-70.867478344101471, 42.535902281856018], [-70.866302637090527, 42.536038249600445], [-70.86617897699729, 42.535878853629875], [-70.866023089982775, 42.53491696538979], [-70.865743941882045, 42.534434959752453], [-70.864600147970563, 42.534003289039831], [-70.864351948768757, 42.533773434291668], [-70.864320698743768, 42.533323129927922], [-70.865680695818426, 42.532517049266161], [-70.866176006699803, 42.532382482195295], [-70.867165782808854, 42.532330480812348], [-70.868742623548442, 42.533106597838831], [-70.8695155072175, 42.533175014521831], [-70.870165235732685, 42.532947827046563], [-70.870690812194667, 42.532560791853804], [-70.871000187749104, 42.532150609062036], [-70.871061289681734, 42.531870149930114], [-70.870969288174734, 42.531709311107008], [-70.87056582670678, 42.5315090516238], [-70.869947183372048, 42.531465161558792], [-70.867752556215549, 42.531717018288063], [-70.867071198223584, 42.531214804383524], [-70.866236241073182, 42.531003158019033], [-70.866019885305036, 42.530754396016526], [-70.86605020023363, 42.530438839786704], [-70.867720261228101, 42.529474101787045], [-70.867749168368491, 42.528302205101141], [-70.867563319887239, 42.52814309942309], [-70.866573090651997, 42.527555823138719], [-70.866295077994096, 42.527254417231944], [-70.866263705847942, 42.526912143863477], [-70.866789449478958, 42.526336071049855], [-70.867438053324207, 42.526433528516286], [-70.867808719889922, 42.526319156850981], [-70.868334328818023, 42.526022068646569], [-70.868426887460672, 42.525858277114125], [-70.868767783608348, 42.525762824955862], [-70.869355015506841, 42.526203837205408], [-70.869726181124307, 42.526197403977278], [-70.870684281749988, 42.52585774491169], [-70.87124107880183, 42.525812347941049], [-70.87161311312606, 42.525950586066791], [-70.871644340772221, 42.526310232250196], [-70.871428370507601, 42.527133968386181], [-70.870377683757837, 42.528529228940393], [-70.870378685295535, 42.52912403945502], [-70.87022451542218, 42.529424156157937], [-70.869791712693001, 42.529701504053513], [-70.869823266020219, 42.530502912036447], [-70.87016359072426, 42.530686444603809], [-70.871122465718585, 42.530751905191906], [-70.871585587430999, 42.530681328275172], [-70.872018878492653, 42.530061335732363], [-70.872048955268383, 42.528898447610082], [-70.872635383560535, 42.528825747076311], [-70.873193166100691, 42.529014414766806], [-70.873656714564362, 42.528899358826266], [-70.874089672533557, 42.528604082061655], [-70.874057916833152, 42.528234801149317], [-70.874057480987645, 42.527910703440568], [-70.874490493310745, 42.527731829685415], [-70.874714674693124, 42.527672277598555], [-70.874869224992338, 42.527282040652388], [-70.874715473037284, 42.527014548564615], [-70.874716076010913, 42.526167762427605], [-70.874840128234638, 42.525661405597575], [-70.875644924397719, 42.524611915163121], [-70.875892594994369, 42.524428161303987], [-70.876355587711998, 42.524266907946178], [-70.876511395111038, 42.524129379678605], [-70.876573709202091, 42.52385846655352], [-70.876326120133896, 42.523628100094776], [-70.874626578016432, 42.52278281850468], [-70.874625779799274, 42.522593218129494], [-70.874781060171486, 42.522410585945174], [-70.875276633695705, 42.522411561459379], [-70.876172418305813, 42.522801905139829], [-70.877254706143148, 42.522991139247061], [-70.877532180371389, 42.522869391290776], [-70.878337913493397, 42.522099509377874], [-70.878894132334892, 42.521775080070292], [-70.88050286145041, 42.521757806697977], [-70.881428825057597, 42.522436356648015], [-70.882078638588766, 42.522371150484652], [-70.88183151190259, 42.521843710612835], [-70.882604837476904, 42.521704981702896], [-70.882822042283863, 42.521322991377595], [-70.883997613742636, 42.521069280909352], [-70.884831812999195, 42.520677077373882], [-70.885605508369082, 42.520448213771189], [-70.885513224732009, 42.520089326155613], [-70.884432390764516, 42.518369094013401], [-70.884432468926505, 42.518161493210641], [-70.884092394022545, 42.517842873307472], [-70.883197257563367, 42.516218238032124], [-70.883691782380495, 42.516147150668942], [-70.884371170308583, 42.51674828743424], [-70.884895972428168, 42.517316635969429], [-70.885112747196729, 42.517862453509778], [-70.885390910367178, 42.518190823127355], [-70.885390738606318, 42.518370875487932], [-70.886657146283312, 42.52035874452406], [-70.887058453903705, 42.520477913066188], [-70.887275867175774, 42.520384540699879], [-70.886718963794408, 42.51958313418654], [-70.886657532833226, 42.519304895312089], [-70.886904506279265, 42.519237518509641], [-70.887275454649199, 42.519762814947185], [-70.88777125393041, 42.519700719463266], [-70.8876776265909, 42.519215789197034], [-70.887956590360943, 42.519175047850091], [-70.888357660303271, 42.519330761469874], [-70.889130447475154, 42.519444060520314], [-70.890305835078848, 42.519442359366948], [-70.892409286051119, 42.519037720110113], [-70.891976193804936, 42.518945950673718], [-70.88947145025594, 42.518852771493023], [-70.887957491157763, 42.518580336885663], [-70.886379992802745, 42.518435742094837], [-70.88560707031904, 42.517475723387797], [-70.885576811075083, 42.516971412831069], [-70.885454148662703, 42.516658456566319], [-70.884434010236134, 42.515720698142246], [-70.884218601485045, 42.515372945018967], [-70.884249552711523, 42.514894798340386], [-70.884836597021305, 42.514506855960292], [-70.885641227470558, 42.514205055484268], [-70.886290283918953, 42.514158457414773], [-70.887156332585533, 42.514297564118856], [-70.887773994661373, 42.514250790816405], [-70.887898182143417, 42.51406851591382], [-70.88783620757458, 42.51352019416683], [-70.887466611830234, 42.512670809566565], [-70.88712763095819, 42.511802500383517], [-70.886478245274333, 42.511597656488725], [-70.886291547029387, 42.511438575740343], [-70.886354073639808, 42.510977521204332], [-70.887530084726336, 42.510895368539423], [-70.887932477351541, 42.510708449301667], [-70.888272834905678, 42.510117249213074], [-70.888148757440348, 42.509975338687866], [-70.887437734031693, 42.509653678147281], [-70.887221945524217, 42.509332936078401], [-70.887129931226667, 42.508947042015521], [-70.886790154778069, 42.508601422837124], [-70.886233277039295, 42.508421736600909], [-70.884255390281638, 42.508148490798412], [-70.884378382562815, 42.507614567938226], [-70.883761086819121, 42.507318682327238], [-70.883389967218847, 42.507045536783522], [-70.883174459105675, 42.506661769400608], [-70.882154834092546, 42.506201042856027], [-70.881722047409596, 42.505902263680753], [-70.881721575569657, 42.505677193726171], [-70.882031225599732, 42.505329999570407], [-70.882556954099556, 42.505194895353419], [-70.882773289205318, 42.504920931440445], [-70.882805205469211, 42.504506438024258], [-70.883052145794068, 42.504412061217295], [-70.88425807211155, 42.504257090631725], [-70.884598062191785, 42.504052924455692], [-70.8858956746122, 42.504139788556472], [-70.886113092917114, 42.504027782703716], [-70.886267630371478, 42.503638158788554], [-70.886454448851921, 42.502355728366389], [-70.887073030502847, 42.502039423297163], [-70.887227770619532, 42.501577687148362], [-70.887474991662799, 42.501402368081344], [-70.887507168719722, 42.500807190258023], [-70.888187309348979, 42.500074831156319], [-70.88832330184799, 42.499901710648324], [-70.88810058747751, 42.49950774047155], [-70.888001221218275, 42.499241093120041], [-70.888408036984302, 42.498439220488073], [-70.888293256317766, 42.498143772648838], [-70.887812078322156, 42.49779461362661], [-70.886516579108644, 42.497666188986251], [-70.885690640385207, 42.49794195438762], [-70.883929123285924, 42.49853123308646], [-70.882953329325844, 42.499237227516097], [-70.882434495692095, 42.49959293686026], [-70.881416889747015, 42.50004319753269], [-70.880768618853992, 42.500594553797498], [-70.879593239544278, 42.500965177006343], [-70.878635348887244, 42.500980813635955], [-70.878171202722001, 42.501277110646917], [-70.8774596405826, 42.501802179091797], [-70.87677991341809, 42.501849731482885], [-70.876068612530574, 42.501645033065671], [-70.875914417387207, 42.50144046696802], [-70.875791174317726, 42.500775849575341], [-70.875297108889413, 42.500774883519838], [-70.875202920163645, 42.501145734953042], [-70.874986565138187, 42.501419684934362], [-70.874278902984784, 42.501597610434665], [-70.874526917324687, 42.502107069539463], [-70.875109698820296, 42.502426405520261], [-70.875357323756774, 42.502791817218331], [-70.875355922662635, 42.503548037111628], [-70.87551007667679, 42.503843170828063], [-70.875539712286951, 42.504364857894664], [-70.875107830687725, 42.504777812291394], [-70.874498796776848, 42.505423244046902], [-70.874065999747941, 42.505718524205825], [-70.872737122735046, 42.505947621938155], [-70.872613515783002, 42.506129884216762], [-70.87261444133982, 42.507003691519877], [-70.872398580725857, 42.507322652578011], [-70.872400291374333, 42.508215099478804], [-70.872060311356122, 42.508607656306637], [-70.87002125328415, 42.509884457264199], [-70.869835720290453, 42.510320074001378], [-70.869743597148684, 42.511466333551994], [-70.869589134196261, 42.511738900790533], [-70.867766259746517, 42.513552503540339], [-70.867612750287023, 42.513825703469088], [-70.867056240340233, 42.514168172794719], [-70.865726320749701, 42.514190122741475], [-70.865479200906677, 42.514283831360558], [-70.865542177818739, 42.514580096313388], [-70.865480995343518, 42.515085620627602], [-70.865449464337757, 42.515861388606268], [-70.86579138767965, 42.516252095875728], [-70.865822049895129, 42.516567358457358], [-70.865636134618086, 42.51693931684985], [-70.864585604911625, 42.51780346125588], [-70.863503349918616, 42.518262840239153], [-70.863504677801757, 42.518649962823318], [-70.863844338613163, 42.5187704926688], [-70.864061950211138, 42.518974253376605], [-70.864092132457756, 42.519433016259846], [-70.863381970304644, 42.520571357041021], [-70.862640673073301, 42.521259297435385], [-70.862269515051622, 42.521400207704914], [-70.861496877328875, 42.521466782882356], [-70.861064269209464, 42.521329886552564], [-70.860290996743643, 42.520666783202017], [-70.859270245825712, 42.520322884922557], [-70.858620766951958, 42.520306940345506], [-70.858249122024304, 42.520375723556533], [-70.857568802793978, 42.520711246080452], [-70.857137209475567, 42.52124053883913], [-70.856610927783862, 42.521375524499767], [-70.85611649347824, 42.521311366298676], [-70.855343491341102, 42.520900846216655], [-70.854724962616885, 42.520856874368128], [-70.853519393687037, 42.521128664377443], [-70.852869769665745, 42.521517717287495], [-70.852221294033342, 42.521474104126838], [-70.852127699863686, 42.521178200277845], [-70.852745465124642, 42.520537437698081], [-70.852560538036784, 42.520306290862429], [-70.851477680655393, 42.520053711917228], [-70.851167849667334, 42.519779637591121], [-70.849992491171548, 42.519411199577007], [-70.848570632508341, 42.519533174020303], [-70.848076047805904, 42.519415054218406], [-70.847736013739492, 42.519168347982593], [-70.847518290419245, 42.518297816133554], [-70.846745278710287, 42.518085206755508], [-70.846467329817628, 42.517837768262247], [-70.846126565900747, 42.517815580192803], [-70.845107104918625, 42.518391008035842], [-70.843592048790413, 42.518640680071883], [-70.842726857661887, 42.519006572331655], [-70.841736912918535, 42.519139296359135], [-70.841335189718009, 42.518893929387019], [-70.841335828843057, 42.518506276884182], [-70.841149505990245, 42.51832011686875], [-70.840747275710783, 42.518182237083678], [-70.84074649941185, 42.517173300228329], [-70.841210001697959, 42.516652172323305], [-70.841951918292906, 42.516423959368524], [-70.842694928191833, 42.515961767643624], [-70.843189100695554, 42.515800284554537], [-70.843466521808125, 42.516119750048261], [-70.843899808586698, 42.516149224618395], [-70.844178795288443, 42.516072668425785], [-70.845569702700942, 42.515185343096924], [-70.845692559310564, 42.515002565305046], [-70.845600230183251, 42.514518145967386], [-70.845444989342752, 42.514385645179907], [-70.84457849276869, 42.514110641363317], [-70.844579144735022, 42.513813555757785], [-70.845382094006922, 42.513421998552573], [-70.845351770480605, 42.512990236793755], [-70.844546944470054, 42.512778061495482], [-70.844269989271268, 42.512602014082866], [-70.843898214000916, 42.51246377796005], [-70.843681002764797, 42.51220650451878], [-70.843650453282365, 42.511891235687706], [-70.844051867943094, 42.51154241451313], [-70.844144752654415, 42.511316164620915], [-70.843960161150136, 42.511093467542665], [-70.843928650392769, 42.510589676375027], [-70.844298414941548, 42.510358249619721], [-70.844299048417454, 42.509899114708688], [-70.844297874866001, 42.509051772258545], [-70.843803754890217, 42.508780589696102], [-70.843494591445918, 42.508731565218291], [-70.842753318175397, 42.509491402275373], [-70.842319620519874, 42.509552488089916], [-70.840836351773305, 42.50930607476694], [-70.840835688574288, 42.508891945796321], [-70.841422801726679, 42.507981525209594], [-70.841855599279, 42.507865791130186], [-70.842596816033236, 42.507998309199813], [-70.8430611970428, 42.507747169709162], [-70.84395636386995, 42.506624676346682], [-70.844049433842613, 42.506145810848238], [-70.844853429673705, 42.505691243924687], [-70.844945563615113, 42.504797706666224], [-70.845254407056743, 42.504477073562072], [-70.845717687666138, 42.504199449067023], [-70.846613911173051, 42.504175903779249], [-70.847046853793017, 42.504042685823812], [-70.847201194091312, 42.503860174382488], [-70.847386599777622, 42.503379578410481], [-70.847788039816948, 42.502985730345813], [-70.849054976790924, 42.502253497537907], [-70.849796741290973, 42.501961764222379], [-70.850075531753617, 42.501732056295943], [-70.85162950599873, 42.500115274285548], [-70.851744964320176, 42.499724304725191], [-70.851373638473703, 42.499631018075043], [-70.850446463842587, 42.499583033909516], [-70.85044633472495, 42.499240929182697], [-70.850632011009381, 42.499085057668857], [-70.850724065882119, 42.498876262819429], [-70.85087795427782, 42.498143946527975], [-70.85124881775009, 42.497796007999113], [-70.8519280292752, 42.497595016606702], [-70.852144792120029, 42.497384670786495], [-70.852144273548546, 42.496925528088092], [-70.852515581933631, 42.496793743778881], [-70.852762049603882, 42.495987672124109], [-70.853040425118735, 42.495604907898631], [-70.853534022505613, 42.495326971925842], [-70.854523046090407, 42.495328553799503], [-70.854801108605173, 42.494891767113693], [-70.854831233184555, 42.493836904241334], [-70.855479701458421, 42.492745618254524], [-70.855509871535546, 42.492376134090442], [-70.854736885038776, 42.491784919618674], [-70.854335265003769, 42.49175566208374], [-70.852635587974333, 42.492008287684655], [-70.849359457795657, 42.49221490801871], [-70.84731979013668, 42.491968763398546], [-70.84667101593368, 42.492195197967533], [-70.846516129071404, 42.492468363772055], [-70.846361898983986, 42.492677973623046], [-70.845868291037945, 42.492955879076796], [-70.845187569080394, 42.493751008100951], [-70.845063845659652, 42.494185318186908], [-70.845065984183847, 42.496265505798235], [-70.844973384110716, 42.496654348445539], [-70.844139522573997, 42.497640989092467], [-70.843088841917279, 42.498486935584715], [-70.842749738936647, 42.499086475598375], [-70.84169846354807, 42.499040504123606], [-70.840338696569745, 42.499386718098748], [-70.839411663101529, 42.499500695332841], [-70.838773106639266, 42.499984262558733], [-70.838173648447111, 42.5004742626314], [-70.837678774374993, 42.500770761403231], [-70.836072497462993, 42.502373641863244], [-70.836319745567465, 42.503378240999922], [-70.836227920511249, 42.503560017737577], [-70.835577935619909, 42.504048092479174], [-70.835424309953297, 42.504321250229026], [-70.834712520973767, 42.504819047036939], [-70.834589199125219, 42.50501018355677], [-70.834435408187943, 42.505967546856098], [-70.833445834994507, 42.506082735925673], [-70.832796777796119, 42.505742008736881], [-70.832178476546147, 42.505760935286553], [-70.831622373584693, 42.505490421055562], [-70.831529410345141, 42.505330083415203], [-70.831404975832157, 42.504430798366336], [-70.831156835749255, 42.504137309962495], [-70.831033711939796, 42.503815287653595], [-70.831033708974559, 42.503057977120612], [-70.831249889662175, 42.502784647805697], [-70.831930086621142, 42.502467284050148], [-70.832208300213409, 42.502057020572259], [-70.832949265801417, 42.501594878590808], [-70.833382496318038, 42.501182088171234], [-70.833692889182913, 42.50014235496063], [-70.833848030214767, 42.499932857423431], [-70.833909756107815, 42.499571393636352], [-70.83372332099421, 42.499403225075817], [-70.833723774894011, 42.499106677087809], [-70.834249402447028, 42.498836300914562], [-70.834589013724099, 42.498380742132433], [-70.83480475905202, 42.497025992672917], [-70.834680912928718, 42.496298845461368], [-70.834649056390901, 42.493804357083704], [-70.83483381504611, 42.493206739746192], [-70.834833965969864, 42.492846089861033], [-70.835327534237749, 42.491883390725768], [-70.835482166949532, 42.491061069318562], [-70.835821187167056, 42.490506562413032], [-70.83628557399463, 42.490372485678108], [-70.837058002519257, 42.490558697416866], [-70.838417218609138, 42.490004915314373], [-70.839005134322363, 42.489527180791796], [-70.839282607531857, 42.488747781800505], [-70.839498644192588, 42.488654491071351], [-70.840455864901742, 42.488674647716138], [-70.840703596199248, 42.488562990414124], [-70.841105696328512, 42.487646377196988], [-70.841352935917655, 42.487534715687353], [-70.841815721448071, 42.487644312645386], [-70.843114273613821, 42.488748889222393], [-70.843949375242417, 42.489564435117586], [-70.844629576492821, 42.49021092251872], [-70.84561912352595, 42.490600243170199], [-70.846206179732263, 42.490752750728582], [-70.846700859543205, 42.490780853687063], [-70.847442242698108, 42.491102401171617], [-70.847442761925194, 42.491416960499599], [-70.848586264608571, 42.491578727011586], [-70.849451632613153, 42.49162799854976], [-70.853716619766416, 42.49125200165178], [-70.85550901404298, 42.491006540758981], [-70.857084655217363, 42.49056691411802], [-70.858135360224168, 42.490153602552695], [-70.859741542494774, 42.489397303155172], [-70.860730286253315, 42.488732626987556], [-70.861470820747684, 42.488000217052218], [-70.861965482948065, 42.487703615146799], [-70.862460203900625, 42.48764162325493], [-70.862892900502402, 42.487337382330331], [-70.863510462814034, 42.487155608128383], [-70.864406156451068, 42.486628308708845], [-70.864437105201873, 42.486357226346712], [-70.864004144713149, 42.486085385190513], [-70.863941631089247, 42.485807034999468], [-70.864559958997731, 42.485535321868568], [-70.864992076950116, 42.485213604486788], [-70.865486497059578, 42.484961459760008], [-70.865979778232699, 42.484386287855052], [-70.867617656782173, 42.483720080640353], [-70.867987636489573, 42.483515587067359], [-70.868296293650261, 42.483033381090493], [-70.868790395847142, 42.482943810342015], [-70.869316519329303, 42.48310649004307], [-70.869841460089617, 42.48303454892595], [-70.870954292170083, 42.483151993184777], [-70.871418165893715, 42.483288485499351], [-70.871789136532826, 42.483264040354236], [-70.872128907096595, 42.483123558525513], [-70.872096767008216, 42.482466181985643], [-70.872220251840588, 42.482230532331073], [-70.872837367987174, 42.481571649596653], [-70.873609829531503, 42.481018760333889], [-70.874073563156884, 42.480947547615685], [-70.874635409658183, 42.481064303035538], [-70.875345504285434, 42.480899892965397], [-70.875748542894655, 42.480631994261167], [-70.875779124543541, 42.480442021606578], [-70.875161202836793, 42.480191096812433], [-70.875285901070839, 42.479855789807978], [-70.875903472891011, 42.479809621127082], [-70.877386311470445, 42.480055135721258], [-70.877819572207486, 42.480038930240461], [-70.878376140164519, 42.479579912378988], [-70.879148598316931, 42.479143571849349], [-70.879582516630506, 42.478799842821985], [-70.879983589282787, 42.478481233186628], [-70.882056200775921, 42.476447659232591], [-70.88323162872193, 42.47507761431762], [-70.88462300811139, 42.472856868314665], [-70.885983835270949, 42.471366877318346], [-70.887746993192195, 42.469148613634914], [-70.888149174316965, 42.468466539001135], [-70.888149385180043, 42.467691760780724], [-70.88790316380279, 42.467137952076939], [-70.88753220062037, 42.467071790668314], [-70.886945077760444, 42.466838556664115], [-70.886884290776536, 42.466524216023721], [-70.887038921711479, 42.466152593610168], [-70.886358393237202, 42.465947488573661], [-70.886112069595484, 42.465744243711164], [-70.886111450729487, 42.465420140031405], [-70.886452198440651, 42.465215971496079], [-70.886698999033712, 42.464806578410119], [-70.887039254076939, 42.464828015420622], [-70.887163236764493, 42.465032948324456], [-70.888336908961307, 42.464626768189802], [-70.889232817244022, 42.4645757943116], [-70.889665800160074, 42.464262451314347], [-70.890098273478898, 42.464102151401605], [-70.890346904606375, 42.463827712036945], [-70.890748224750368, 42.46356875430304], [-70.890871828649267, 42.463234054021001], [-70.891180301717384, 42.463183918665571], [-70.891366318838394, 42.463324444854337], [-70.892014345928928, 42.463367839173976], [-70.892354715413589, 42.46313664286896], [-70.892725574747558, 42.462680626574837], [-70.892849340530731, 42.462201340191314], [-70.893313868974673, 42.461815497205961], [-70.894518180840564, 42.461741348564374], [-70.894703781381494, 42.461557766741315], [-70.894765276306714, 42.461268920416373], [-70.894395578481266, 42.460896152399499], [-70.894395248725942, 42.460689626591446], [-70.894704554918576, 42.460512906951486], [-70.895723378426808, 42.460532300329028], [-70.895939995308893, 42.460600957391364], [-70.896218069585501, 42.461172472005849], [-70.896897330534529, 42.46121537248964], [-70.897267536477997, 42.461587594626387], [-70.897638805809308, 42.461581073990004], [-70.898564805937013, 42.462016335652123], [-70.900325535470486, 42.4626174480522], [-70.900264088466372, 42.46318547391369], [-70.900232524686388, 42.463807581916186], [-70.90047823159837, 42.463938861055645], [-70.902548416100501, 42.464354741191066], [-70.903166655421884, 42.464335438898885], [-70.903846334147943, 42.464170696273285], [-70.904124384721356, 42.463967861793648], [-70.905174524400579, 42.463986252908889], [-70.906008858148013, 42.463666457922947], [-70.906225738591573, 42.463140373300526], [-70.906535351444731, 42.462954620916342], [-70.907647291693209, 42.462864104237731], [-70.908110544583096, 42.463163036884232], [-70.90814144281812, 42.463576693185104], [-70.908048914768429, 42.463757983821402], [-70.906935505375003, 42.464857888078065], [-70.90656442793032, 42.465683152005191], [-70.906718942556765, 42.465932604417425], [-70.907398199347128, 42.466552249916624], [-70.907953924085234, 42.466821859240433], [-70.909776515515674, 42.467124881528314], [-70.912433813664052, 42.467332564432894], [-70.912928319736068, 42.467009365392705], [-70.913361405120611, 42.466713309917338], [-70.91530693577657, 42.466689980206326], [-70.916882711405847, 42.467032779635169], [-70.917562033693329, 42.467327725470064], [-70.917717199184224, 42.46797328751218], [-70.917963864872462, 42.468058979834289], [-70.918674557666776, 42.468065358974577], [-70.920744457027766, 42.467625106861689], [-70.922025494968779, 42.466948411496737], [-70.922259238167385, 42.466825255831118], [-70.925874450729509, 42.463989994631397], [-70.927510862651687, 42.462431117456397], [-70.927542375676154, 42.462133642631755], [-70.9273264853217, 42.460948075698404], [-70.927882665062754, 42.460876026330268], [-70.928963627322759, 42.461406971465337], [-70.92952049704445, 42.461568359106458], [-70.930013610838131, 42.461425045539961], [-70.930508060386387, 42.461200801382027], [-70.931187923939476, 42.460558211969307], [-70.931620463866494, 42.460308269517419], [-70.932268650171707, 42.460306334366976], [-70.932856154417649, 42.460197324011574], [-70.933443042450008, 42.459872151208273], [-70.933968307005657, 42.459367787636744], [-70.935049335371417, 42.457719375964629], [-70.935538703839455, 42.456657197563118], [-70.936408297500236, 42.454769162523931], [-70.936562831402313, 42.454154398690441], [-70.937643164944191, 42.451064342554893], [-70.938168674986926, 42.448893904727356], [-70.938353546125029, 42.446900688509423], [-70.939095590619786, 42.442925068672878], [-70.939125756541145, 42.44203276802844], [-70.939002222162046, 42.440819038357397], [-70.938786426734623, 42.439976224414494], [-70.938384170356329, 42.43921748715443], [-70.937921136884086, 42.438378506679882], [-70.936933483976375, 42.437341779204594], [-70.936253421405567, 42.437046940617655], [-70.935358155481282, 42.437278337898569], [-70.933875922929104, 42.437798895360977], [-70.932147057519757, 42.437873028310875], [-70.929799764246638, 42.438164734001468], [-70.929027241846455, 42.438124354648338], [-70.92871844672716, 42.438011998386642], [-70.928502608255172, 42.437781355698412], [-70.928595369986354, 42.437456003964279], [-70.929397766547822, 42.436838788201904], [-70.930170720742552, 42.436519594606501], [-70.931313568404533, 42.435653681267816], [-70.931931026402111, 42.435013027235854], [-70.932950288034107, 42.434329335177999], [-70.933907587302471, 42.433871570477194], [-70.934277335873247, 42.433595380469932], [-70.93427759484166, 42.432955641139877], [-70.933937994688193, 42.432241038158075], [-70.933721826105909, 42.431830346482769], [-70.931900209338792, 42.429708498099096], [-70.930881229179391, 42.428978197219159], [-70.929398950229142, 42.428444734732253], [-70.928936767060989, 42.428407602242061], [-70.928472827066983, 42.428605073204309], [-70.927361106126099, 42.429478946693749], [-70.925725381836401, 42.429731882012867], [-70.925138163382599, 42.430093026449299], [-70.924798190788167, 42.430206654891478], [-70.923995502107758, 42.429887002433311], [-70.923748490347151, 42.429801409797335], [-70.921988607599417, 42.429794838937362], [-70.921710654457783, 42.429664522502037], [-70.920877459445691, 42.429480277756902], [-70.919055450218394, 42.429385031595253], [-70.918654201438073, 42.429157394974773], [-70.918067453415404, 42.429041355087335], [-70.918036909799866, 42.428834675388636], [-70.917141104323989, 42.428471110334435], [-70.916524051441328, 42.428400463513917], [-70.916122814565711, 42.42783125006833], [-70.914486677027256, 42.42766935236746], [-70.913992347790554, 42.427758576433362], [-70.913189654392113, 42.427736482337536], [-70.91300360433317, 42.427919552245058], [-70.912479297177867, 42.427991151450435], [-70.911645886704449, 42.427600312992048], [-70.911553007740494, 42.427421491760498], [-70.910596337855949, 42.427140300520719], [-70.908928996780389, 42.426069415295352], [-70.90896045763192, 42.425771942242321], [-70.908559204242891, 42.425499165576802], [-70.908436032438814, 42.425312353562738], [-70.908991535548068, 42.424969676722554], [-70.908929593273697, 42.424745457525141], [-70.908590407787145, 42.424696990760623], [-70.90843583062275, 42.424879584916589], [-70.908127253295874, 42.424767713845775], [-70.908064840859325, 42.424399445909025], [-70.908343200919774, 42.424052555959385], [-70.908374338307212, 42.423647046859834], [-70.908004638822149, 42.423328335736805], [-70.908004279832653, 42.423094259345604], [-70.908343574351846, 42.422818625237092], [-70.909085537237431, 42.422779132242773], [-70.909270555216764, 42.422641077498767], [-70.909239913459061, 42.422227328510985], [-70.909116794410153, 42.421905384261173], [-70.908653538660673, 42.421651555431012], [-70.907819928951511, 42.421539776108638], [-70.908313920112136, 42.421170947702443], [-70.90837587484144, 42.420900009594362], [-70.907974764038528, 42.42033022634638], [-70.907790028972258, 42.419829076469206], [-70.907481374955395, 42.41957261682591], [-70.907141975340352, 42.41952414448253], [-70.906771461498721, 42.41968374732047], [-70.90646218227792, 42.419986000166872], [-70.905998699785329, 42.420146741666606], [-70.905135465397507, 42.420125448835506], [-70.905074039642429, 42.419874131216012], [-70.904795511238277, 42.41985189480711], [-70.903837998166097, 42.420164831700006], [-70.903560975361984, 42.420124594352949], [-70.903437347326317, 42.419757086495345], [-70.903097397852378, 42.419664125149978], [-70.902788174227638, 42.419894345480962], [-70.901924076945164, 42.420170119060138], [-70.902078468034688, 42.419455732366615], [-70.902264514302871, 42.419119630722285], [-70.902572654855007, 42.418862397501989], [-70.903005452954105, 42.418657036617887], [-70.903128678274243, 42.418294769469377], [-70.903438030652012, 42.417946971212508], [-70.90442573234543, 42.417534531932226], [-70.90590798303856, 42.416690338563875], [-70.906772628712858, 42.416711633133538], [-70.906988992804315, 42.417077364662909], [-70.90739029676358, 42.417286497563445], [-70.907667589681267, 42.417335730044783], [-70.908810387299582, 42.417055763380219], [-70.909273097580908, 42.416831446298012], [-70.90930473112239, 42.416371831518887], [-70.909736704981199, 42.416094417900155], [-70.9105705197601, 42.416098690496291], [-70.910816900600494, 42.416283430535131], [-70.911341546840319, 42.416373892753491], [-70.911403054702788, 42.416579562953423], [-70.910785208301107, 42.417193639460201], [-70.910816274922936, 42.417445338881357], [-70.910167164670213, 42.417996772030094], [-70.910106051657053, 42.418204695416598], [-70.910877253105099, 42.418750527839947], [-70.911895907329253, 42.419120892776405], [-70.912945454386673, 42.419319271466819], [-70.913501016690873, 42.419210647740201], [-70.914057660262927, 42.418841033585096], [-70.914335313454856, 42.418800223263872], [-70.914798022175049, 42.418982093447575], [-70.914983601738015, 42.418636426372046], [-70.915323228786505, 42.4185947580091], [-70.915168239747203, 42.419390184404506], [-70.915168219436396, 42.42010141098892], [-70.915631509777043, 42.420760432858877], [-70.916186618302063, 42.42105692284921], [-70.916649723996329, 42.421040184408589], [-70.917204952838276, 42.420626073883298], [-70.917668994082803, 42.420599703027854], [-70.918563935397913, 42.420900150775218], [-70.918594647516173, 42.421088285694829], [-70.917884858085657, 42.421199485294977], [-70.917699807931399, 42.421383108143807], [-70.917637908605798, 42.421770998512351], [-70.918872589334086, 42.422642142634494], [-70.918840564194554, 42.42294015570004], [-70.918532083514648, 42.423305464567342], [-70.918562973683549, 42.423619640076311], [-70.918840221926246, 42.423849442491608], [-70.919334943203083, 42.424057293986152], [-70.920724048970555, 42.424196003684401], [-70.922977877514938, 42.423734672272403], [-70.923595460668764, 42.423463179169531], [-70.924058137130459, 42.423095207320294], [-70.9243056961012, 42.422757758099792], [-70.924522155969754, 42.422619296068177], [-70.925725562669811, 42.422544819842045], [-70.927455227206238, 42.421975001585338], [-70.928874970262768, 42.421221312447848], [-70.929431134491239, 42.420762133723287], [-70.92940053330274, 42.420194802015544], [-70.929091667324585, 42.419830905597941], [-70.928443608491108, 42.418292702181255], [-70.928443397878027, 42.417697971954908], [-70.928690982738686, 42.417514012059144], [-70.929462156277722, 42.41747399286016], [-70.930018276255041, 42.417608369681538], [-70.93014148014278, 42.418362969396703], [-70.930974838393595, 42.418610169022529], [-70.931191152731643, 42.418498162146925], [-70.931932114805647, 42.418522077439306], [-70.93261098015887, 42.418222119122092], [-70.93341391396028, 42.418109666913615], [-70.935018425181894, 42.418361710534128], [-70.935359124812749, 42.418157486800894], [-70.935420794235014, 42.417741947218509], [-70.935328381334926, 42.417518673162739], [-70.935575051509218, 42.417217116712834], [-70.935605649330014, 42.416784049070287], [-70.935883305270821, 42.416536120845251], [-70.936253645376127, 42.416440074030504], [-70.936624279503917, 42.416965134842421], [-70.936624339826196, 42.417748924077927], [-70.936346195775513, 42.417996851639742], [-70.936346425219213, 42.418338961361286], [-70.936624317160224, 42.418937300901554], [-70.936623980733259, 42.419343057954208], [-70.936161904010206, 42.419873044430538], [-70.936377487132916, 42.4208779182472], [-70.936532139008463, 42.421290015591509], [-70.93711871777333, 42.421748069251571], [-70.937211241517488, 42.422710746041503], [-70.936994869681385, 42.423074303396604], [-70.936963877291831, 42.423552383016897], [-70.936717109818986, 42.423808296942553], [-70.936685298037759, 42.424214439679247], [-70.93721117460332, 42.425106042358031], [-70.937951801955478, 42.425381456224969], [-70.937859107608261, 42.425815930888739], [-70.937026261263355, 42.425865878380861], [-70.936284402271056, 42.426436719601796], [-70.936130068881852, 42.426709470099645], [-70.935728968818992, 42.427004598650775], [-70.935574428724451, 42.427259251666101], [-70.935636473516453, 42.42817676490165], [-70.935821112265188, 42.428498350612209], [-70.935821397175005, 42.429092539116752], [-70.935451078001009, 42.429504314104491], [-70.935327240864382, 42.429776582706239], [-70.935049636642148, 42.429862458349184], [-70.935018904183721, 42.430159941201858], [-70.934771299364812, 42.430641547821331], [-70.934925522178048, 42.431007999820011], [-70.93517341183491, 42.431310270781601], [-70.935296899269133, 42.4319478266532], [-70.936964863948219, 42.434693393553651], [-70.936995226843962, 42.434873058266561], [-70.937335186203455, 42.435443608180243], [-70.939001871961622, 42.437504922533613], [-70.939341623940507, 42.438102473196061], [-70.940361564386052, 42.439588936967816], [-70.940608232076613, 42.440269307238907], [-70.94063965248364, 42.440935037272212], [-70.940485124764933, 42.441694483337507], [-70.940454018428326, 42.443271532746031], [-70.94026862473433, 42.44413886171936], [-70.940207117369951, 42.445373566373185], [-70.939527970313009, 42.448690672637206], [-70.939373335169023, 42.449170938957927], [-70.938848507964565, 42.453403651906022], [-70.938880048549507, 42.454547158188547], [-70.939095881951744, 42.454912281644944], [-70.939628329524368, 42.455260309682686], [-70.939713029323755, 42.455730576416649], [-70.939497283408386, 42.456094679192319], [-70.939466773652526, 42.456491282837526], [-70.939744434178508, 42.456946102977732], [-70.939868090443539, 42.45752063085115], [-70.941536156897072, 42.457672234294506], [-70.94218520638475, 42.458615627991129], [-70.942246935082451, 42.458867374081144], [-70.942648344056693, 42.458887322534835], [-70.942833509977575, 42.458019451626122], [-70.943389657245319, 42.457766731930953], [-70.943883963395109, 42.457812422742549], [-70.944100623266493, 42.457880989278394], [-70.944193003536597, 42.459320166520527], [-70.944347836564617, 42.459686695645168], [-70.944687876294651, 42.459690045920823], [-70.945398015066885, 42.45941663228912], [-70.945490793241163, 42.459027709570897], [-70.946602306254093, 42.457999988039894], [-70.946633216726156, 42.457746888833292], [-70.946787719594511, 42.457402735117221], [-70.945861264882438, 42.456670768705031], [-70.947528510799231, 42.455525253056024], [-70.94783753781708, 42.455429955119527], [-70.948177683780244, 42.455613351048164], [-70.948454685718886, 42.455663022623739], [-70.948856920176397, 42.455070765376817], [-70.948887260134626, 42.454700716743233], [-70.948856139500919, 42.453989889263326], [-70.948979580649507, 42.453789628070069], [-70.949813385897386, 42.453559001759217], [-70.950338619208623, 42.453037098095571], [-70.950555442246369, 42.452987987184194], [-70.950926435811908, 42.453468073518721], [-70.951235020836364, 42.45356182253704], [-70.951574958836872, 42.453349085702008], [-70.951574854954444, 42.453151024278597], [-70.950956822551632, 42.452783467669953], [-70.950987321788261, 42.452575378954201], [-70.963091901502835, 42.445180937178456], [-70.964389677632994, 42.445275387483015], [-70.96547108243719, 42.44549980949779], [-70.966057371629546, 42.445597598529169], [-70.966365956853906, 42.44557427117045], [-70.966860821757209, 42.445385884307605], [-70.967015312173686, 42.445689272739443], [-70.967786451202912, 42.445315892726725], [-70.968434988803125, 42.445340224565811], [-70.969176862928293, 42.445525952620201], [-70.969423581545286, 42.445863613249344], [-70.969084860655727, 42.445986920729815], [-70.968527567293535, 42.445663671430317], [-70.968188807899253, 42.445704870795993], [-70.967848962437969, 42.445918197213281], [-70.966922792479309, 42.446123228456614], [-70.966923005329761, 42.446645390375949], [-70.968034993913122, 42.446374236940819], [-70.968281378320285, 42.446144723669363], [-70.968683114776155, 42.446507228875774], [-70.96868356325605, 42.446786316907051], [-70.968838464000086, 42.447215833455886], [-70.969517251899987, 42.447447362337925], [-70.970196805936183, 42.447327242509054], [-70.970784086564393, 42.447425642076183], [-70.970938683935628, 42.447602986478174], [-70.971339799378001, 42.447650472445702], [-70.972019666187336, 42.447899996978798], [-70.972606332840215, 42.447898183585664], [-70.975850499857174, 42.449661240399976], [-70.976592172987779, 42.45014401032968], [-70.978260370689497, 42.450943281875851], [-70.979218040828457, 42.451241826150891], [-70.981009965330912, 42.451652787828536], [-70.982771140216315, 42.45254072897886], [-70.983018602762911, 42.45297793318678], [-70.983018467048197, 42.453202461140783], [-70.982092352118315, 42.453705245374259], [-70.979961651142531, 42.454093476525749], [-70.979652773961604, 42.454206866598071], [-70.978881200640146, 42.455085107508118], [-70.978818660126507, 42.455356527446369], [-70.978324718637083, 42.455428023912312], [-70.977893077770503, 42.455948767641594], [-70.977028321216437, 42.456270113875618], [-70.976564718957647, 42.456611192738251], [-70.976287605319143, 42.456733180715219], [-70.975576805649695, 42.456754704318719], [-70.974866345239917, 42.457144797263915], [-70.97526822671, 42.457327223780403], [-70.975299673175186, 42.457668931139239], [-70.97570123470706, 42.45767075961362], [-70.97619535057315, 42.45730218459903], [-70.976565274031003, 42.457160362459334], [-70.977801883096063, 42.457229624617675], [-70.978017574179049, 42.457640227024982], [-70.97826482972026, 42.457644678227297], [-70.978511605315504, 42.457162438482065], [-70.978789346213745, 42.457023072948502], [-70.978912631973756, 42.457272916454542], [-70.978912727396178, 42.457615021077004], [-70.979253352315155, 42.457546160051749], [-70.979345953964724, 42.457256240232354], [-70.979191268460809, 42.457024890906922], [-70.979284064060707, 42.456563919852904], [-70.980242039526104, 42.457619316414366], [-70.981230228197077, 42.45782741310137], [-70.981570340964097, 42.457983701434848], [-70.98194175245213, 42.458445052254568], [-70.982096146520689, 42.459010128103507], [-70.982559717993851, 42.459146172120519], [-70.984166088561636, 42.459261949741446], [-70.984784355239427, 42.459512832059218], [-70.985247695160723, 42.459603850499356], [-70.98537190336765, 42.460042658483204], [-70.986144002246689, 42.460470944144177], [-70.98645318927295, 42.460546055311433], [-70.987565064946097, 42.460428299614513], [-70.987626234656801, 42.46024689662503], [-70.986916351310455, 42.460106445268856], [-70.987008896873462, 42.459834524831194], [-70.987440877594082, 42.459745250113883], [-70.9874709696834, 42.458988614355697], [-70.987518304745834, 42.458699026977612], [-70.987956282209382, 42.458663883446427], [-70.988090016004648, 42.458979573492378], [-70.98797450936928, 42.459235007799428], [-70.988120646628758, 42.459445600989348], [-70.988887296939609, 42.459707203530883], [-70.989726700457922, 42.459993970757772], [-70.991148340960919, 42.460104331015629], [-70.991549916062837, 42.460061090589654], [-70.992321971356361, 42.459849600673074], [-70.99324768582612, 42.459761398822593], [-70.994020090702492, 42.459216708130548], [-70.99439114089715, 42.459462041217201], [-70.994422515985718, 42.460038353438776], [-70.993990869228625, 42.460451123700437], [-70.994484728376179, 42.460514060404066], [-70.995009679305852, 42.460262035920785], [-70.99633820146579, 42.460265601627121], [-70.996862784348338, 42.460058580738234], [-70.997110191280314, 42.459648326594575], [-70.997603691377748, 42.459343307003948], [-70.997665326408466, 42.459053778053075], [-70.997386921253707, 42.458914101687739], [-70.997078923039524, 42.459208226872668], [-70.996707174985431, 42.459232441058724], [-70.996244140416195, 42.45897951103769], [-70.995256192490601, 42.458915498191487], [-70.995008082800538, 42.458713019717734], [-70.994852903499094, 42.458246988228915], [-70.994513454425118, 42.458018720344498], [-70.994112038551862, 42.45804396629574], [-70.99380316740644, 42.45820294801635], [-70.992938580207053, 42.459145602384154], [-70.992661324458396, 42.459303009680397], [-70.991827102346832, 42.459353979053923], [-70.990252124303183, 42.459624934468359], [-70.989325581065955, 42.459469494702311], [-70.98864525355215, 42.459057932671179], [-70.988366813793519, 42.458549752407436], [-70.988150464066607, 42.458391783581035], [-70.987871887060464, 42.458351203429629]]], [[[-70.624490227508971, 42.687727487173866], [-70.623838929301144, 42.687589767121395], [-70.623187815174887, 42.687517852694903], [-70.623095577027783, 42.68804217610343], [-70.622785615525558, 42.688226625581351], [-70.622197031786115, 42.688343061210524], [-70.621607422957226, 42.688270524610822], [-70.620367197592316, 42.688387129643033], [-70.619715664492219, 42.687882534572054], [-70.61959155139472, 42.687569294332334], [-70.619714826864353, 42.686738676282474], [-70.619620111849727, 42.685118052289326], [-70.61996115451349, 42.684726250948543], [-70.620022490779149, 42.684292889076467], [-70.620146323348692, 42.684110991523106], [-70.621168045658905, 42.683330507140695], [-70.622872386135199, 42.681756766291556], [-70.623151527402399, 42.681365025865631], [-70.6229945093244, 42.680628422885384], [-70.622591609997002, 42.680147694348463], [-70.622405750877888, 42.679835067965989], [-70.622404548430993, 42.679186340393876], [-70.622218465601804, 42.678828789519471], [-70.621659872821937, 42.678341203403583], [-70.621349621001855, 42.677867925790473], [-70.620542323276482, 42.676861340780086], [-70.620542348638494, 42.676239629228498], [-70.620666156307522, 42.676075735566457], [-70.621162201670757, 42.676077797536102], [-70.621316616833624, 42.676238225432442], [-70.621380322245969, 42.676813698457536], [-70.621503623925548, 42.676991894523113], [-70.621969161923204, 42.677318440702848], [-70.622186154003188, 42.6775676569872], [-70.622651923551658, 42.677930661877838], [-70.622961884321356, 42.677935264613957], [-70.623425108797079, 42.677333991788302], [-70.623425747341045, 42.676631172820905], [-70.622928835538247, 42.676332032036008], [-70.622742744251852, 42.676010491517218], [-70.622401162692626, 42.675763121058154], [-70.62212244916833, 42.675163509521944], [-70.621625711405741, 42.674800716572676], [-70.621439117685853, 42.674542187337309], [-70.621439252511067, 42.673929478717163], [-70.620663530354619, 42.673102642473658], [-70.620539498555161, 42.672671829799], [-70.620756096137455, 42.672371353780164], [-70.621406130366296, 42.672011065307565], [-70.621714966203143, 42.670835255221014], [-70.621713694611387, 42.670358112913817], [-70.621434941380684, 42.669352755206447], [-70.622178652278947, 42.669603184148322], [-70.62282936658427, 42.669576615655707], [-70.623107311741208, 42.669301897706575], [-70.623014355244081, 42.668942802672539], [-70.622549640704577, 42.668526240575559], [-70.622331748526136, 42.668159984578352], [-70.620440318862407, 42.666700162770709], [-70.620378272454445, 42.666286655132382], [-70.620811925893804, 42.666217394522455], [-70.621152651186193, 42.666329726629812], [-70.621680342596349, 42.666628570432778], [-70.622331021451842, 42.666654849436931], [-70.622982044988973, 42.667015390662591], [-70.623353330666163, 42.666992370270684], [-70.623384156452914, 42.66617166497582], [-70.623724609360437, 42.665734293919172], [-70.623724736221419, 42.665392199313331], [-70.623321381075868, 42.665073422110389], [-70.622421123122848, 42.664978274941149], [-70.62204990139773, 42.664866344998245], [-70.621770700857581, 42.664681292496688], [-70.621771058283997, 42.664113596277396], [-70.622390796285487, 42.663951217278139], [-70.622761943084015, 42.663613019581142], [-70.622760831158828, 42.663333933185889], [-70.62263767517986, 42.66317320351137], [-70.622637145700736, 42.662966141457574], [-70.623566173557165, 42.662736334286222], [-70.623658756061289, 42.662464710035522], [-70.623131156258978, 42.661049021892659], [-70.622728189619252, 42.660748339980564], [-70.62154987826662, 42.660566630569356], [-70.621240047439045, 42.660453993974599], [-70.621239201022803, 42.659562196575578], [-70.620681233109494, 42.659173634040222], [-70.619875081897277, 42.658896880832039], [-70.619069932259222, 42.658854105556593], [-70.618386947163202, 42.658963139290456], [-70.617892126999891, 42.659240152452526], [-70.617738306096015, 42.659467372612035], [-70.617737961399712, 42.659927129603147], [-70.616344227697041, 42.660730580220971], [-70.615847671285437, 42.660773505416408], [-70.615600684526569, 42.660642249049118], [-70.615166124554591, 42.660639462731737], [-70.614855947901376, 42.660985935744336], [-70.614082379630503, 42.661375579663435], [-70.613214780243723, 42.661486498565893], [-70.612315649064797, 42.661238237538477], [-70.611974315616393, 42.660981833543566], [-70.611943211016253, 42.660757071147046], [-70.612252897283838, 42.660662673214993], [-70.613554899650921, 42.660616941993055], [-70.61401887031414, 42.660367348583883], [-70.614917077745005, 42.659561752051765], [-70.615506351113368, 42.659265218792136], [-70.616064089115881, 42.658851408280597], [-70.615938686353218, 42.658583253742613], [-70.615134051672754, 42.658964204434909], [-70.614793293909131, 42.659013899470693], [-70.614482333117607, 42.658766197735027], [-70.614481753412377, 42.658486574478424], [-70.614884952209053, 42.658003525984952], [-70.614915671918183, 42.657822540020014], [-70.61457498985763, 42.657737196759363], [-70.614142216861779, 42.657851543269921], [-70.613460506498967, 42.658762324252422], [-70.612685663573799, 42.65907929863269], [-70.612190386423308, 42.659447389817288], [-70.611849258748109, 42.659929285524235], [-70.611540591816834, 42.65995166985735], [-70.611323740264339, 42.659838010813601], [-70.610672698467667, 42.660162135493607], [-70.609959807000948, 42.660253424509804], [-70.609711327419006, 42.660004480652162], [-70.609680697572543, 42.659608762801817], [-70.609245908184732, 42.659200297571864], [-70.607912443034806, 42.658696491554409], [-70.606920968946156, 42.658539210989552], [-70.606240240491246, 42.658539529696768], [-70.605620075839028, 42.658809939649906], [-70.605248672406574, 42.658878454824148], [-70.604505309780194, 42.658771418034185], [-70.603605831449329, 42.658955208483377], [-70.602552572231971, 42.658880054596288], [-70.60208811011384, 42.659084675775851], [-70.601963523489957, 42.659293557266821], [-70.601933484008782, 42.65966359895819], [-70.601654514397509, 42.66011768016336], [-70.601003704163588, 42.66020831630636], [-70.600662673833568, 42.660438018777079], [-70.600414997136511, 42.660459767757743], [-70.600135965687869, 42.659842000542973], [-70.599825919926062, 42.659593725992536], [-70.599206240691771, 42.659819002696175], [-70.598245373775754, 42.659841307311453], [-70.597656851478831, 42.660002720649139], [-70.597378171478439, 42.660510899372305], [-70.596696005217225, 42.66089889099154], [-70.596572780708172, 42.661198343093268], [-70.596014578222537, 42.661268789244239], [-70.595581317340589, 42.661013957859794], [-70.595518264166188, 42.660257789491318], [-70.595766438173783, 42.65977692424898], [-70.595921671260854, 42.65927012417724], [-70.596292508674352, 42.659004028194033], [-70.597346448958859, 42.658682591569949], [-70.597470444768561, 42.658013949541022], [-70.597190533975521, 42.657621861916525], [-70.596943327772863, 42.657534946090131], [-70.596695797269476, 42.65753868304823], [-70.59638538455448, 42.657768072275829], [-70.595796241732941, 42.657812347873083], [-70.595518157903584, 42.657743822698812], [-70.595021091760287, 42.657373076353728], [-70.594958354779578, 42.656256266151289], [-70.594865306557523, 42.656068733950761], [-70.594865281849778, 42.655519036559269], [-70.595547194033713, 42.655086040590973], [-70.596259351942834, 42.654355111834924], [-70.597033409658422, 42.653831091494588], [-70.597188871610044, 42.653621286044604], [-70.597187806841632, 42.652819508026489], [-70.597528692848968, 42.652436230328767], [-70.597435577443747, 42.652176678810704], [-70.596908217354908, 42.651769062528452], [-70.596846689694914, 42.651518219763652], [-70.59659831013613, 42.651404285915802], [-70.596102762171327, 42.651330100201157], [-70.595390012422769, 42.65149332077322], [-70.595141816938437, 42.651307364519667], [-70.595173251467628, 42.650766375120533], [-70.594894337772459, 42.650257254819238], [-70.59418128403982, 42.650077736903732], [-70.593437789688295, 42.650259339760872], [-70.593220623055444, 42.650172111035502], [-70.593157757629683, 42.64980359166335], [-70.59256972362985, 42.649775928332055], [-70.592197768798272, 42.649690812857195], [-70.591887414933865, 42.64946105850747], [-70.59173313586696, 42.649165640994163], [-70.591732281084973, 42.648066687336453], [-70.592041341224245, 42.647404634537743], [-70.592753357439548, 42.646917335299349], [-70.592754412903318, 42.646691738377633], [-70.593001600522101, 42.646327903382762], [-70.59340397214271, 42.64577290000549], [-70.593466603654051, 42.645132586018846], [-70.595231125845999, 42.64353099030987], [-70.595416610933484, 42.642825737933052], [-70.595508394254765, 42.641130544396489], [-70.595229486826199, 42.640810478059386], [-70.594795259204403, 42.640582011069348], [-70.594299607788955, 42.640444797550884], [-70.59346328379624, 42.640492793764622], [-70.593246430757432, 42.640648637735929], [-70.592936644311195, 42.641499744041234], [-70.592720690670205, 42.641728245191061], [-70.592132242132806, 42.641844527558732], [-70.592131573022016, 42.641493420230312], [-70.591853197536835, 42.64074014378707], [-70.591201766894628, 42.640650036337618], [-70.590984968535651, 42.640463776923404], [-70.591016493126318, 42.640121385167042], [-70.591975479062668, 42.638999637926652], [-70.591913615896516, 42.63834304029163], [-70.591851449155243, 42.63790205304106], [-70.591974798078553, 42.637008881542627], [-70.592098260715886, 42.636826468358336], [-70.592656376687117, 42.636620371934136], [-70.593213400688796, 42.636117267461216], [-70.59327513287208, 42.635665909930509], [-70.593987120643106, 42.635043562712411], [-70.595535388024061, 42.634310187928115], [-70.59612459270457, 42.634220812347685], [-70.596154526450775, 42.634743199037324], [-70.597209024878069, 42.635043490457491], [-70.597580687390462, 42.635245532678006], [-70.598603051710583, 42.635636756780372], [-70.599439606244886, 42.635678661850235], [-70.601018857898268, 42.63552162342328], [-70.603156381836541, 42.635040843541269], [-70.604209523346299, 42.634693411782969], [-70.604859613424694, 42.634900469856632], [-70.605696690108147, 42.634879405394827], [-70.60730758095265, 42.634397261740226], [-70.610341559652412, 42.633318387767552], [-70.610805794320967, 42.63293313913163], [-70.610836283161461, 42.631878986728282], [-70.611331307371273, 42.63179051934528], [-70.611579390833072, 42.631489669474675], [-70.611982584120909, 42.631402743636443], [-70.61222954676218, 42.631561647735658], [-70.612137122244846, 42.631761245705825], [-70.612138086135332, 42.632427987263917], [-70.612756929146272, 42.632473254067065], [-70.613407750585353, 42.632247604104876], [-70.614398457539025, 42.631486020129564], [-70.614924902942164, 42.631217185728737], [-70.615914243608913, 42.630437573064548], [-70.616967618212684, 42.629819408599744], [-70.619041125335087, 42.628122492810277], [-70.619566370552732, 42.627142420733975], [-70.619674390574716, 42.626609838404143], [-70.619143198173433, 42.626429066894666], [-70.618356968254545, 42.626152989125814], [-70.618171585467366, 42.625540565248798], [-70.618079363160717, 42.625379434394198], [-70.618103688854731, 42.625113502282801], [-70.618139774111668, 42.624904466561077], [-70.618604369541941, 42.624807903687447], [-70.618913460404571, 42.62401064799429], [-70.619841881971965, 42.623321733172638], [-70.621172021650963, 42.62265387370082], [-70.621606449004773, 42.622638633175875], [-70.622070550437556, 42.622794576659004], [-70.622442643360458, 42.623158680310866], [-70.622999536281029, 42.623024449901635], [-70.623650554195763, 42.622564675587789], [-70.624238465429741, 42.622583719390178], [-70.624486006612926, 42.622498990848264], [-70.624832792292651, 42.622360367877413], [-70.625575819470754, 42.622313690638038], [-70.625947725373862, 42.622200551928465], [-70.626785023628059, 42.621702198009771], [-70.628085516337961, 42.621151609646958], [-70.628891475249929, 42.620969176437683], [-70.62963467465417, 42.620670400999465], [-70.63325987813694, 42.618068895916217], [-70.634653627605786, 42.617490215451106], [-70.634871408024736, 42.61730675291421], [-70.633850171042596, 42.616528832057369], [-70.63288923970596, 42.616578427409969], [-70.632331909955454, 42.616829736237236], [-70.631712227152548, 42.616802572009021], [-70.631743919143929, 42.616351507812226], [-70.631869053354947, 42.616142596960081], [-70.631868996635077, 42.615872517435072], [-70.631682903133623, 42.615640380520418], [-70.631714130145653, 42.615090373593546], [-70.632117368109192, 42.614769309559087], [-70.632612614258548, 42.614590726951548], [-70.633293713356281, 42.61459079939894], [-70.633697139567701, 42.614476792169008], [-70.633944901787089, 42.614292926002328], [-70.634099918024233, 42.61399303997991], [-70.634471946954264, 42.613582337443042], [-70.634410358599808, 42.612547111282851], [-70.634597040035075, 42.612319483053156], [-70.634720493319421, 42.611929963194562], [-70.633762134157237, 42.611132795197634], [-70.633638085145364, 42.61090058631865], [-70.633546198141545, 42.609694621041889], [-70.633298990265956, 42.609166110143953], [-70.632741822086842, 42.60849861050734], [-70.632618186011314, 42.608130823257227], [-70.632620545296973, 42.60591447446734], [-70.632682709063886, 42.605409081347766], [-70.633023402468595, 42.6048636474085], [-70.632993782509303, 42.604359275264265], [-70.634201303042218, 42.6034230557066], [-70.634294540235985, 42.602872340926396], [-70.635471740735341, 42.601566771072953], [-70.635349900274832, 42.600703851997501], [-70.635659631800365, 42.599969031621171], [-70.638231110517964, 42.598139913983267], [-70.639345488685279, 42.597799372989449], [-70.6396236534639, 42.597471137854249], [-70.639686087673823, 42.597226820106052], [-70.639315901915126, 42.596700284712462], [-70.639315831020625, 42.596286160506835], [-70.640461804445408, 42.595350496525612], [-70.64163832038146, 42.594549548479463], [-70.642351037412212, 42.594269640467445], [-70.643094998932938, 42.593519479332535], [-70.643496808598158, 42.593315939522114], [-70.644704173489771, 42.593037345385994], [-70.645137920907374, 42.592697375654289], [-70.645973819951607, 42.592351917904452], [-70.646778626732299, 42.592331401343365], [-70.647149708830952, 42.592488269364893], [-70.647954762421264, 42.593179589055701], [-70.648450159133688, 42.593316574311594], [-70.648882794072961, 42.593310222061085], [-70.649812033399328, 42.593107757082215], [-70.650647666047306, 42.592717250059934], [-70.651856304483303, 42.592032929924322], [-70.652134486729622, 42.591533613811897], [-70.652104708582499, 42.5908852014703], [-70.651918463406702, 42.590274981299643], [-70.651857708527885, 42.589266863467515], [-70.651610060670095, 42.588828953010847], [-70.650216802028751, 42.587848663591124], [-70.649288718592203, 42.587501975532867], [-70.649258854186144, 42.586979598673388], [-70.649723218927448, 42.586081039391942], [-70.650528759751836, 42.585240716294287], [-70.651395829459105, 42.584552175432336], [-70.652416908815681, 42.584069030562951], [-70.653160399198072, 42.583617060356957], [-70.654151032598932, 42.582304887637221], [-70.654522762088902, 42.582038070142914], [-70.655357989389387, 42.581755558606964], [-70.658887405959504, 42.581191116097699], [-70.659908893386159, 42.580869957021292], [-70.66065177303814, 42.580228247284893], [-70.661209017215981, 42.57995042368767], [-70.662292383580336, 42.580204696312201], [-70.663406372980489, 42.580088989387306], [-70.664149068070287, 42.579862010694072], [-70.672505086754498, 42.582497535262284], [-70.672442654413388, 42.582696857342235], [-70.672102616024162, 42.58279173783361], [-70.665046994524388, 42.580551635434105], [-70.664798924042742, 42.580573427613757], [-70.664644456294695, 42.580711311447438], [-70.664551253451791, 42.581190030766024], [-70.664273417061764, 42.581536333838571], [-70.663499116078853, 42.581646589328834], [-70.663251088094796, 42.581857525295497], [-70.663312589050264, 42.582216908862364], [-70.663591440865517, 42.582492432025283], [-70.664953968573641, 42.582608079618751], [-70.665170403490123, 42.58270354345332], [-70.665292812991112, 42.582953713478368], [-70.665292775131192, 42.583269347527917], [-70.665634201234937, 42.583705656088327], [-70.665602717889314, 42.583985682373267], [-70.665014449367121, 42.584507455594533], [-70.664426038790822, 42.58457972030839], [-70.663930901414517, 42.584829920743019], [-70.663095501914071, 42.584923436254606], [-70.662847958634543, 42.585151839997401], [-70.662661368569715, 42.585533101005716], [-70.662661632622218, 42.58665951969855], [-70.662847183852946, 42.587044650252501], [-70.663620514961806, 42.587618506018323], [-70.663744000418134, 42.587806206457842], [-70.663744688138635, 42.588103299840441], [-70.663526994372461, 42.588376844546175], [-70.662288249187853, 42.589223746408493], [-70.662071744529086, 42.589929425753127], [-70.661824060603649, 42.590203289656515], [-70.660740135093278, 42.591030412714225], [-70.660368300754683, 42.591504310601145], [-70.660028117116738, 42.591806216326319], [-70.659347167157094, 42.592014532831747], [-70.657923552207819, 42.592152160750459], [-70.656716066963781, 42.592791538942983], [-70.655785832946805, 42.593588769068454], [-70.65532120967859, 42.594136244211441], [-70.654857406700543, 42.595530515157151], [-70.654732239434551, 42.596568237197779], [-70.654886573144807, 42.596953691151583], [-70.655535909744216, 42.597800192126755], [-70.656217141020491, 42.598231719511595], [-70.657146617397302, 42.598488873245095], [-70.657485981844445, 42.5988261594172], [-70.657424718779708, 42.599106415349496], [-70.657237910946407, 42.599352625046166], [-70.6572693919382, 42.599586383894341], [-70.658042910746204, 42.599953304382318], [-70.658011872573368, 42.600224238122763], [-70.656866444767033, 42.601214093617656], [-70.656525507656667, 42.601876629580239], [-70.656586898019, 42.602443164803653], [-70.656091818589829, 42.60258521008825], [-70.655781649460636, 42.602878409651304], [-70.655811934484674, 42.603292122973279], [-70.655997843076392, 42.60356923338157], [-70.656308200621908, 42.603771810699065], [-70.656679238591167, 42.603793066873983], [-70.658692350203012, 42.603106717064612], [-70.659063390201354, 42.603154973569914], [-70.659094309786283, 42.603632339187634], [-70.658971010239057, 42.603913314024389], [-70.65924871502169, 42.604161829059336], [-70.660022736263031, 42.604231021454076], [-70.66011564906006, 42.6044100397839], [-70.659094146636605, 42.604731201123847], [-70.658938388632023, 42.60486906746474], [-70.658970073664833, 42.605489940594858], [-70.659094428134253, 42.605650643261896], [-70.660145875866959, 42.605653164673782], [-70.660424684245854, 42.605874676765403], [-70.660765941715084, 42.606247976463195], [-70.660671652056593, 42.60651962093479], [-70.659525924221512, 42.606932700021588], [-70.658411699331339, 42.607778124310315], [-70.657235083929123, 42.608073921577066], [-70.65714189774792, 42.608553262057249], [-70.656305323865453, 42.608619173494041], [-70.655779348340019, 42.608762162123476], [-70.654632648891962, 42.608733516559901], [-70.654602276330465, 42.60855378154897], [-70.655128839062996, 42.60823074975675], [-70.655253111014048, 42.607733722918233], [-70.655531463550545, 42.607224859080411], [-70.655841681896959, 42.607184364951259], [-70.656306531284613, 42.606772470625906], [-70.657080719216907, 42.606175488331615], [-70.657111755715192, 42.605850539390076], [-70.656894890745562, 42.605718417681075], [-70.656709527257476, 42.605144855793306], [-70.656524711636649, 42.60489476264663], [-70.655317061199085, 42.604272673483401], [-70.655069024965016, 42.604366466765121], [-70.654914377562179, 42.604620830176508], [-70.65444927873537, 42.604915592809341], [-70.65454199288088, 42.605671413948706], [-70.654263268736983, 42.606062608326269], [-70.653303058451471, 42.606860767516636], [-70.653457779639453, 42.607227679472736], [-70.653457083215287, 42.607642336167906], [-70.653116765504535, 42.607800177681277], [-70.652559318510981, 42.607682474348579], [-70.652465596774235, 42.607909103224465], [-70.652280081992501, 42.60802864687895], [-70.65175409882157, 42.60802703470398], [-70.651723279457187, 42.60839708704426], [-70.652032183097276, 42.608672226108233], [-70.652032929878047, 42.608870289722894], [-70.652404011586171, 42.609171271777477], [-70.652094290876974, 42.609581408809824], [-70.652093457932452, 42.609833476605104], [-70.652403344796227, 42.610018055171579], [-70.653425486297337, 42.610084610924567], [-70.653239371384458, 42.610357286530679], [-70.65292926793397, 42.610587370128741], [-70.65172088217993, 42.611001083086677], [-70.65113309425638, 42.611459859185089], [-70.651102153163308, 42.61201041272502], [-70.65042046507115, 42.612029076226342], [-70.65001768722243, 42.611845519257692], [-70.649769978892479, 42.611939303634529], [-70.649770231509933, 42.612146366118786], [-70.65029675033658, 42.612418070056421], [-70.650296631792529, 42.612625669923865], [-70.649645191516001, 42.613400772665429], [-70.64942880652832, 42.613539259977188], [-70.64874771339727, 42.613656947062616], [-70.648653972007452, 42.614000606674246], [-70.648499511082676, 42.614183391580234], [-70.648561328588684, 42.614434300584897], [-70.649799808873539, 42.614642023497758], [-70.650697671702758, 42.614547891066934], [-70.65057416168024, 42.61416212024573], [-70.650946096322244, 42.614066996945454], [-70.651193582292819, 42.614180178859556], [-70.651471891493856, 42.614022967719023], [-70.651503080454688, 42.613770583122928], [-70.651781395155808, 42.613721402828403], [-70.652773321125565, 42.613148015090879], [-70.653485229611988, 42.612922048558751], [-70.654134920744184, 42.613380811986076], [-70.653607849207802, 42.613974004204564], [-70.651998107848371, 42.614916472770311], [-70.651131824452406, 42.615145256675206], [-70.651006752725166, 42.615300172678559], [-70.651131238301431, 42.615505357386965], [-70.650759308578245, 42.615970219133395], [-70.650727742116544, 42.616214137923834], [-70.650541355314601, 42.616649394264982], [-70.650820422116624, 42.616744353743478], [-70.651099358725801, 42.616677174365684], [-70.651996990549151, 42.616493543937779], [-70.652183269077312, 42.616355371035681], [-70.652213724994638, 42.616012414899629], [-70.652833870507649, 42.615760391224633], [-70.6532668022666, 42.615970086560928], [-70.653731771403585, 42.615918308833805], [-70.653731859951989, 42.61560321772663], [-70.654227789785608, 42.615487566237199], [-70.654227483628333, 42.61493840401814], [-70.655590909113471, 42.613819722892309], [-70.656364862010719, 42.613474817543846], [-70.656643938415939, 42.613659699366956], [-70.656891162597162, 42.61365646318287], [-70.657510394013144, 42.61328737373379], [-70.657139516073784, 42.612994872771921], [-70.657170570063698, 42.612759950846652], [-70.657666281536635, 42.612284718208223], [-70.658408921766437, 42.612237827824266], [-70.658719548532957, 42.612305360345395], [-70.658966512854434, 42.612239009457873], [-70.658967438910153, 42.611941389384313], [-70.65816136279895, 42.611691904514416], [-70.658316988568103, 42.611391991317376], [-70.658842742802122, 42.611321550696481], [-70.658720374602979, 42.610755744256181], [-70.659742211285206, 42.610389575359918], [-70.659989612480302, 42.610088706973272], [-70.660236465280349, 42.610084830841338], [-70.660454323385324, 42.610198947902845], [-70.660298763667711, 42.610750938300136], [-70.660485666188663, 42.61084682489431], [-70.660795046768555, 42.610842861972088], [-70.661165604167365, 42.610702052586852], [-70.661351053401432, 42.610870578415764], [-70.661382097772218, 42.611230278753865], [-70.66163015068409, 42.611164020131532], [-70.661878544117556, 42.610962183903993], [-70.662218639760383, 42.611416403639872], [-70.663022812559461, 42.611323836655728], [-70.66308602740564, 42.611097518736699], [-70.663332643485063, 42.611139277548737], [-70.663518220514845, 42.611298708099987], [-70.66460288057786, 42.611165849328408], [-70.66485076940414, 42.61093699525663], [-70.664881482363825, 42.610458907987173], [-70.664479030862594, 42.610275944125121], [-70.663550337371916, 42.610063870608762], [-70.663210043024975, 42.609789615723884], [-70.662342557777137, 42.609603903506716], [-70.662095683162988, 42.609472114338665], [-70.662002684722239, 42.608987007895941], [-70.662467287609928, 42.608674116348489], [-70.66379836048408, 42.607960762221445], [-70.664480236847652, 42.607915013539468], [-70.665100030785808, 42.607734942825033], [-70.665532905702335, 42.607800550282839], [-70.665656462968812, 42.608078274047706], [-70.66559522526984, 42.608331075508097], [-70.665377456873401, 42.608559608827335], [-70.665408861283026, 42.608829374521569], [-70.665687704938208, 42.609032238275113], [-70.667358905434753, 42.609720038464523], [-70.667731941384972, 42.609795919134747], [-70.671198902999919, 42.609772421856498], [-70.672405575829202, 42.609700053108057], [-70.672902011433933, 42.609864576926697], [-70.676958239686101, 42.612192556540286], [-70.677763127710662, 42.612856651143552], [-70.677979910023964, 42.613177786977367], [-70.67794889980496, 42.613592766277321], [-70.677670093520618, 42.614092136087883], [-70.677978893000386, 42.615123962009079], [-70.678723147715118, 42.616085783328813], [-70.678629521732617, 42.61684421594282], [-70.678722086339306, 42.617158254516589], [-70.678753115087986, 42.618284339141724], [-70.679155559720996, 42.618764877650989], [-70.679031863305923, 42.619108977510841], [-70.678721736609532, 42.619176542519149], [-70.677855268953124, 42.619198465495188], [-70.677854791526613, 42.619468539705885], [-70.678350232589793, 42.619884474096047], [-70.678938879022041, 42.61993034253927], [-70.679248528542502, 42.620114845893184], [-70.679248505394682, 42.620322445296175], [-70.679031775698604, 42.620406429384772], [-70.678536401713671, 42.620386612216535], [-70.67800986976512, 42.620223069966961], [-70.67769998025841, 42.62029063394376], [-70.677731427470903, 42.620542930205431], [-70.678071153299783, 42.620636454653798], [-70.67838100661163, 42.621001643561542], [-70.679403609464899, 42.621076433385639], [-70.679650833992866, 42.621253109640719], [-70.679681663790177, 42.621459847802093], [-70.680208272291253, 42.621740416324144], [-70.681509737656498, 42.621397466347076], [-70.68234494668323, 42.620799579846071], [-70.682531323913892, 42.620499312841943], [-70.682468786869038, 42.620292981177194], [-70.682128720564918, 42.620018785485641], [-70.682252763289242, 42.619656229670859], [-70.682933784009791, 42.619835429837842], [-70.683181393534994, 42.620039199279923], [-70.683490931964528, 42.620430749682519], [-70.684296222845276, 42.620229921157922], [-70.684760795065074, 42.62032214699061], [-70.684822973988616, 42.620528474831396], [-70.685194461416188, 42.620523264124081], [-70.685813616546923, 42.620388090832783], [-70.685752454205996, 42.620847871286664], [-70.685968794542362, 42.620934920823828], [-70.686588805262176, 42.620799749407446], [-70.687022512525544, 42.620847275969801], [-70.687516899872008, 42.621029096061427], [-70.687888563913788, 42.621303497568917], [-70.688013135657059, 42.621625675224649], [-70.687951446907917, 42.622013972464174], [-70.687486776283407, 42.622948681961802], [-70.687300056600151, 42.623843663719029], [-70.687114628532072, 42.624071384032959], [-70.68674302151507, 42.624320299641461], [-70.68692869662253, 42.624479691929515], [-70.687734484821462, 42.624621570465905], [-70.687950622722056, 42.624734992163638], [-70.68821053989474, 42.625112136101869], [-70.688384269324629, 42.625669265114205], [-70.688385013998598, 42.626444030259535], [-70.688136892965076, 42.626655016877542], [-70.687517455258472, 42.626628154750023], [-70.686991457002293, 42.626464658044185], [-70.686651127841571, 42.626244490061964], [-70.686247920874564, 42.626286662778412], [-70.686309239287127, 42.626466065655428], [-70.686711162991898, 42.626901019256053], [-70.687548185422131, 42.627014940699894], [-70.687796634338937, 42.627128589822654], [-70.687981895958586, 42.627387095425455], [-70.68776523413645, 42.627795728394496], [-70.687795344904245, 42.62797545105164], [-70.688292065298782, 42.628094265560811], [-70.688663048115458, 42.628548079950015], [-70.688601900665205, 42.628827899812933], [-70.68826069216199, 42.629166428955926], [-70.687857560848499, 42.62935264870336], [-70.687857483818959, 42.629623354811812], [-70.689128092892801, 42.629622108792965], [-70.689313271859234, 42.629736480620508], [-70.689499405882941, 42.630013534853539], [-70.689438556583767, 42.630744024268949], [-70.689065540316193, 42.631848088679057], [-70.688788030338102, 42.63209596062309], [-70.687981452252586, 42.632215788785771], [-70.687300639773369, 42.632415268486589], [-70.686588970598876, 42.632417011139502], [-70.686123779470975, 42.632261771485837], [-70.685813968327309, 42.632328817741438], [-70.685472957548242, 42.632649424859508], [-70.68510114550395, 42.632853230752261], [-70.685102126631691, 42.633078931407624], [-70.685255659359782, 42.633283651908471], [-70.685255828574242, 42.633562731867322], [-70.684822754781706, 42.633902313173763], [-70.684761179052359, 42.634750367904772], [-70.684636463594785, 42.635022444607245], [-70.684605609896181, 42.635644481900862], [-70.684915748593681, 42.636081042921433], [-70.684791608907005, 42.636515709501538], [-70.684821984835821, 42.637767275661005], [-70.684141111454224, 42.638615458664795], [-70.683830746344839, 42.639277742869353], [-70.68345870433609, 42.639373601462538], [-70.683087869653988, 42.639648887743263], [-70.682499271551322, 42.639603672567553], [-70.681786096044448, 42.638776602784979], [-70.680670818631526, 42.63880182756894], [-70.680578885235036, 42.639307567819962], [-70.680454561299726, 42.639463149872249], [-70.680485230461315, 42.639804923367208], [-70.68082585026518, 42.640241080684355], [-70.680888049296996, 42.640474507082409], [-70.681321798975361, 42.641044740701872], [-70.681384010486113, 42.641980903708543], [-70.681136205825709, 42.642254804740467], [-70.680980795971891, 42.643121906078854], [-70.680671082229225, 42.643495565184537], [-70.68039228956583, 42.644013483069919], [-70.680051043569676, 42.644288969397607], [-70.679276498974048, 42.644426429774228], [-70.678904679838823, 42.644296582303483], [-70.67856388409254, 42.644013461267718], [-70.678409087540444, 42.643465997682611], [-70.678099545045953, 42.642984411762903], [-70.677449151956125, 42.642300092472972], [-70.677231675397096, 42.642005961823195], [-70.677232404633017, 42.64122220708434], [-70.677325135868756, 42.640013648005421], [-70.677882523815683, 42.639582163496861], [-70.677882995111531, 42.63928454315532], [-70.678162374486803, 42.638983235684613], [-70.678626662269338, 42.638733296465084], [-70.679184165554787, 42.63855333724468], [-70.679277084369133, 42.638300216010798], [-70.678534449170584, 42.637950590662513], [-70.678162864742731, 42.637721714034988], [-70.677357098051473, 42.637706976334954], [-70.677078404786201, 42.637638642685829], [-70.676675342328778, 42.63710408081544], [-70.676706121385919, 42.636671007932087], [-70.677294602438408, 42.636284130117524], [-70.677295699959373, 42.635761450363511], [-70.677202703295805, 42.635096310508473], [-70.677573997709189, 42.634496324209131], [-70.677511885168002, 42.633128034893836], [-70.677573957714102, 42.632604078308304], [-70.677698828381509, 42.632350105079674], [-70.678131912035653, 42.631712925812494], [-70.678038346391631, 42.630885645536416], [-70.677729320511759, 42.630565566063872], [-70.677265196647454, 42.63054596652777], [-70.677202411069146, 42.630041916231399], [-70.676954899196659, 42.629829132870661], [-70.676676706031103, 42.629193640094059], [-70.675902407470062, 42.628943878775907], [-70.675933270374102, 42.628709492180271], [-70.67680085352292, 42.627912740058576], [-70.67689428218884, 42.627704096263685], [-70.676738196429454, 42.627427325286348], [-70.676244142198911, 42.627479528655186], [-70.675902277450348, 42.627845024866204], [-70.675313724606198, 42.628186882748622], [-70.675095903988947, 42.628938121766033], [-70.674725458726058, 42.629213474714454], [-70.674601853270786, 42.629603032644155], [-70.673858095563133, 42.630361852865128], [-70.673826172878833, 42.630704261764528], [-70.67435312420605, 42.630813809660111], [-70.674569294286897, 42.630747835436217], [-70.675096732444914, 42.630271136987211], [-70.67537494735258, 42.63014987849926], [-70.675622259779374, 42.630200617763585], [-70.676986240742892, 42.631685052949102], [-70.676923535552916, 42.632667594884929], [-70.677047844230927, 42.633035334517452], [-70.676427777643525, 42.633630125009596], [-70.676397520522343, 42.63413513230622], [-70.676118245259673, 42.634634492642391], [-70.676179629140336, 42.635823266147106], [-70.675095637588129, 42.637568775592513], [-70.674351921474653, 42.638345603139527], [-70.674072444255486, 42.638736836215308], [-70.673948949381881, 42.639441572046707], [-70.67404157399028, 42.639872645510643], [-70.673576234792009, 42.640312152021309], [-70.673607853283613, 42.641275649147062], [-70.673142959658236, 42.641940220474844], [-70.672244192584543, 42.64218747568497], [-70.673452291149417, 42.642620414385256], [-70.673947902123885, 42.642486670570953], [-70.674382108060243, 42.642237163460614], [-70.674753886261925, 42.642303377565625], [-70.674969792039747, 42.642670062067303], [-70.675311619957441, 42.642574645182457], [-70.675436248454531, 42.642257565536937], [-70.675651963785342, 42.642164038271197], [-70.675930585434074, 42.642304484854243], [-70.676488350577515, 42.64236859888782], [-70.676798773728734, 42.642940220831321], [-70.676828578770866, 42.644363461684598], [-70.676642608140597, 42.6446810957422], [-70.675806168934983, 42.645549546154612], [-70.675248795583613, 42.645890995268459], [-70.674319124746546, 42.647589251393342], [-70.67431845110687, 42.648021907300361], [-70.674102040069315, 42.648250464756352], [-70.674101569514747, 42.64857455176724], [-70.674225778940553, 42.648960296828697], [-70.673698335941324, 42.649508559842189], [-70.67317157462368, 42.650561415535769], [-70.672800675984988, 42.65097233591932], [-70.672955132585216, 42.651339123284629], [-70.673326990349025, 42.651198914593863], [-70.673667218304317, 42.650950358446984], [-70.674411104677517, 42.651363039221778], [-70.674906637753907, 42.651472988335833], [-70.675247139940851, 42.65186414723123], [-70.675185667295494, 42.652162501385178], [-70.674782371632432, 42.652691309407643], [-70.674875587881161, 42.65328388925294], [-70.674782846828194, 42.653790247503785], [-70.674844495785791, 42.654176624673731], [-70.674720919690799, 42.654448607495752], [-70.674410189041424, 42.654660197037167], [-70.674348363036316, 42.655301182824346], [-70.674038273754533, 42.65618859281934], [-70.673976534208407, 42.656738923712354], [-70.673294544616866, 42.658406888543439], [-70.671869158846619, 42.660625876888069], [-70.671775083114483, 42.660906530139428], [-70.67227159152074, 42.660836357145072], [-70.672549683618598, 42.660670182365699], [-70.672673600555299, 42.660262537111088], [-70.673139096432578, 42.659850674379243], [-70.67323295051591, 42.659642038230963], [-70.673820893227145, 42.659137602947702], [-70.674162171685722, 42.657817217860313], [-70.674347607714466, 42.6575349646766], [-70.674626409531626, 42.657378242550344], [-70.674906252612715, 42.65678832759216], [-70.675153763666373, 42.65648743100769], [-70.675247505324279, 42.656053730098684], [-70.675774435037994, 42.655342872229689], [-70.675898184568481, 42.654656774830116], [-70.676083708861881, 42.654338509365338], [-70.676177279820962, 42.653013019421486], [-70.676611271065212, 42.652411775243316], [-70.676828574967743, 42.652255239683761], [-70.677571994407984, 42.651866134060697], [-70.678098293508569, 42.651750055639454], [-70.678439567482812, 42.651934153028229], [-70.679058577524572, 42.652573858650435], [-70.679089536350773, 42.653005568089483], [-70.679307590963219, 42.653146655651994], [-70.680670049018289, 42.652712411611695], [-70.681196920486215, 42.652524303224681], [-70.68178609373814, 42.652966177802078], [-70.682591594472214, 42.654134369967707], [-70.682590847435918, 42.654539476287766], [-70.682466536946336, 42.654748444771435], [-70.681816615647762, 42.654812533739417], [-70.681135023076195, 42.655407991325369], [-70.681165116092274, 42.656029375875029], [-70.681320569117304, 42.656324228282401], [-70.681536674151687, 42.656438290122139], [-70.682126090224315, 42.656808144039445], [-70.681815847998507, 42.65721781121686], [-70.681815779290147, 42.65799265389569], [-70.681475339230289, 42.658754283044694], [-70.68128861898802, 42.658865491263349], [-70.680297545912438, 42.659141503148582], [-70.679925939458826, 42.659372390837909], [-70.679925691242943, 42.659831515194796], [-70.680049118314713, 42.660010189831084], [-70.68011065715109, 42.660810675996117], [-70.680297276838573, 42.660970083199082], [-70.680917097777765, 42.661087008781415], [-70.681630360228013, 42.66163509068295], [-70.681629979022134, 42.661842684829018], [-70.681443979811363, 42.662160414892561], [-70.680824678697036, 42.662593186411264], [-70.679553359801176, 42.663215420748024], [-70.679243723834361, 42.663490678076542], [-70.678995289706663, 42.66415167448806], [-70.678499129286209, 42.664726556837387], [-70.677786748310794, 42.665268390368254], [-70.676516223409365, 42.665683630488367], [-70.675988830911905, 42.66606976801711], [-70.675586736051969, 42.666183932463461], [-70.674625587003973, 42.666278890241337], [-70.673447225519752, 42.666602479718208], [-70.672455418520201, 42.667581151702962], [-70.672487385329973, 42.667905469047433], [-70.672858714343562, 42.66831431789808], [-70.674253304044782, 42.669113714759874], [-70.674314886113677, 42.669301495719168], [-70.674252601270524, 42.670627201535197], [-70.674035703269553, 42.670738182360026], [-70.6735086804198, 42.670692283563014], [-70.672671425739495, 42.670173154013327], [-70.672578913939134, 42.669183302392028], [-70.672144658515009, 42.669180732953684], [-70.67168022831261, 42.669394634697262], [-70.671152850453055, 42.669321084967763], [-70.67090590532365, 42.668703185776451], [-70.670564530046349, 42.668428952507206], [-70.670471700175639, 42.668150920563342], [-70.669945040760624, 42.667672259685958], [-70.66944896374892, 42.667742426039112], [-70.668922771060977, 42.668245572104766], [-70.668271662504907, 42.668498628613122], [-70.668271450154066, 42.668976297548717], [-70.668674449186298, 42.669294823036303], [-70.669293736496158, 42.669456818654318], [-70.67006820046042, 42.669868663082681], [-70.670192219604743, 42.670353435377621], [-70.670440343712741, 42.670530134121073], [-70.670347318017804, 42.670738773410925], [-70.669665066655483, 42.67060450897862], [-70.667961149886153, 42.669295902039032], [-70.667744423056646, 42.669227363377942], [-70.667061841008248, 42.668750987514869], [-70.666722123049681, 42.669043909501831], [-70.667434592232851, 42.669501957550587], [-70.667340620876431, 42.670989476514364], [-70.666937733195752, 42.671473336058966], [-70.666812875544238, 42.672177958213425], [-70.666224560204583, 42.672844398440617], [-70.665944945592344, 42.673460759094162], [-70.665263453861101, 42.673939181025681], [-70.664736411802821, 42.673893152262423], [-70.663868018417034, 42.673626342980874], [-70.663558465462572, 42.673711877235561], [-70.663558573959961, 42.674125990665381], [-70.664240027469774, 42.674404954361201], [-70.665138694054122, 42.67506691658442], [-70.665139260152245, 42.675364541452922], [-70.664580206394817, 42.676552785737627], [-70.663557148306566, 42.6776757336849], [-70.662627494960645, 42.67814901283603], [-70.661604516390426, 42.678263130870818], [-70.661479679708052, 42.678814164847132], [-70.661262976814911, 42.678998222981214], [-70.660921193640363, 42.679156166052522], [-70.660828367636881, 42.679364798875739], [-70.660611543664118, 42.679502762434069], [-70.660332686984674, 42.679479851616229], [-70.660176930400183, 42.679293089916342], [-70.659557833420777, 42.679230074693898], [-70.659216581184481, 42.679000821751565], [-70.658844740192933, 42.678979031467243], [-70.658844048146747, 42.679231634862603], [-70.659278288800337, 42.679432307283619], [-70.659340808579131, 42.679638647689693], [-70.659247479912523, 42.679802263417798], [-70.659308781913239, 42.679981047504711], [-70.660053343979115, 42.680096739684359], [-70.659960264176277, 42.680278362631945], [-70.658596637665951, 42.681082085512394], [-70.658348128972492, 42.681562986941501], [-70.658007191404806, 42.681792947033813], [-70.65775848304942, 42.681859733844604], [-70.657417862737645, 42.681810529099621], [-70.656766128036011, 42.681586387765236], [-70.65627078331525, 42.68167450836156], [-70.655744056312912, 42.681627901290625], [-70.655372070703322, 42.681533989396954], [-70.655030116050284, 42.681584424799198], [-70.654565304326056, 42.681951746746037], [-70.653635265867607, 42.682244272427724], [-70.653479437914925, 42.68242660109847], [-70.652829828869514, 42.682588927458042], [-70.6526426212817, 42.68270008586056], [-70.652674132511848, 42.682996857012974], [-70.652890780225846, 42.683273018930969], [-70.65285992362152, 42.68355294852411], [-70.652704452173865, 42.683690266566899], [-70.652208478843093, 42.683823377413894], [-70.651526497356372, 42.683869507999304], [-70.651277806425838, 42.684440507274047], [-70.650471590514115, 42.684812687877503], [-70.649944619440802, 42.685405765525516], [-70.649603251993213, 42.685519206326269], [-70.649385508568045, 42.685125998733575], [-70.64895273373115, 42.685240385480888], [-70.648580503611043, 42.685948296639154], [-70.648486664982059, 42.686796084414354], [-70.647773038298951, 42.68750930967709], [-70.647462297210438, 42.687621799628261], [-70.646657483575311, 42.687777905833975], [-70.646253362027451, 42.688243048499238], [-70.646221863858258, 42.688486961670087], [-70.646314615034626, 42.688792108549251], [-70.645539813667909, 42.689037282570979], [-70.645260044349001, 42.689474082763745], [-70.644950394881079, 42.68958603392187], [-70.644144462175348, 42.689517053900936], [-70.643524097752177, 42.688922261011435], [-70.64309111604409, 42.687982800195627], [-70.64275063123246, 42.687527903974988], [-70.642844157411744, 42.687049218140281], [-70.643246461920697, 42.686656093083279], [-70.643278220295343, 42.686340072931827], [-70.642906350776499, 42.686066703469734], [-70.642752006876549, 42.685492193959945], [-70.642410908587692, 42.685199875746349], [-70.642163287080777, 42.685104143199652], [-70.641635788410284, 42.685220050365352], [-70.641356256270328, 42.685701315531347], [-70.640531562126981, 42.686393416653821], [-70.639774448948202, 42.687183961230431], [-70.638874788834983, 42.687439414498797], [-70.638719621893699, 42.687685285496251], [-70.638937078310207, 42.687961479501354], [-70.638379245390482, 42.688347759163342], [-70.638006111974818, 42.688443464427934], [-70.637199333876296, 42.689238663108227], [-70.637106400098077, 42.689537300405327], [-70.635928091749648, 42.690752830908892], [-70.634594023904484, 42.691258242344887], [-70.634469971386636, 42.691458157953143], [-70.633569941139243, 42.691876241545543], [-70.632640068645514, 42.691944079654803], [-70.63223681656396, 42.692310153482488], [-70.630437723044807, 42.692903760956355], [-70.63006555366573, 42.692926888420239], [-70.627617075453799, 42.692304107320609], [-70.626873254407016, 42.691873667851269], [-70.626533112773828, 42.691409724106641], [-70.626470630502538, 42.690636212675031], [-70.626068512442558, 42.690127866901911], [-70.626069394776025, 42.689677751463478], [-70.626255985585829, 42.689422592084334], [-70.626194023214481, 42.688937162141336], [-70.626070286900074, 42.688488895380118], [-70.625729855546382, 42.688232002462165], [-70.624490227508971, 42.687727487173866]]], [[[-70.68866380769893, 42.640404422494719], [-70.688229428574985, 42.640284968489951], [-70.687362622864072, 42.640216396947601], [-70.687176643378365, 42.64081375610251], [-70.686929432546663, 42.641015653483223], [-70.685410897667111, 42.641020170474825], [-70.685163056838149, 42.640582340583691], [-70.685720813791264, 42.639826190558097], [-70.685999719737936, 42.639209772770819], [-70.686866461352736, 42.639187698809536], [-70.687114716706844, 42.638913788659401], [-70.687517214588169, 42.63878158229312], [-70.68776533361887, 42.638867680705772], [-70.688043979429111, 42.638827507693208], [-70.687950876906541, 42.63856803073493], [-70.687363006580611, 42.638504750319001], [-70.686557247953502, 42.638705597386952], [-70.686619028173098, 42.638434876329832], [-70.686959999550865, 42.638204291202115], [-70.687021850487596, 42.63784291495746], [-70.687269970963513, 42.63774905399405], [-70.687642095006836, 42.637815769392525], [-70.688168061591512, 42.637771663426093], [-70.688539993274162, 42.637361330722584], [-70.689314037427678, 42.637727946614], [-70.689841202955591, 42.637656833882623], [-70.689531345102225, 42.637337321398164], [-70.689469551837732, 42.636833286524187], [-70.689128991877439, 42.636559740385174], [-70.688849072910315, 42.636491336533304], [-70.688167782538585, 42.636970436566159], [-70.687765647047527, 42.637066097465627], [-70.687889788758653, 42.636100278643276], [-70.688787703203346, 42.636077959570805], [-70.688787462015227, 42.635897907273765], [-70.688199497709789, 42.635455983749608], [-70.688137360694583, 42.634979583370956], [-70.688415862748442, 42.634362616156615], [-70.689530879946403, 42.633517454443059], [-70.690243609300907, 42.633443680726238], [-70.690893469668652, 42.633632156246243], [-70.691265307349511, 42.633311299083296], [-70.691947137143501, 42.633174820951574], [-70.692009152873283, 42.632759967803125], [-70.692380822406633, 42.632898235186445], [-70.692473612660109, 42.633059219048263], [-70.693279254916646, 42.633488507533023], [-70.693557697821021, 42.63388098160825], [-70.694425156176862, 42.633444199858374], [-70.694208261934548, 42.632853021179109], [-70.694208060414709, 42.632420898140694], [-70.69442441178164, 42.632282327735794], [-70.694982102988916, 42.631841130404993], [-70.695261873413898, 42.631891423461077], [-70.695880736096228, 42.632206320712207], [-70.696469639244043, 42.632251560375437], [-70.696996262546378, 42.632505582935075], [-70.697182518214973, 42.632872020233307], [-70.69708882590254, 42.633287736037751], [-70.696375935851947, 42.633766664624432], [-70.696283936623303, 42.634173388959034], [-70.696470103143568, 42.634269750786316], [-70.697058409735504, 42.634152937650761], [-70.697615801488084, 42.634270962759587], [-70.697615064621374, 42.634568040989201], [-70.697554698121351, 42.635028460900465], [-70.697615369583048, 42.636486750530317], [-70.697833266635655, 42.636763380807636], [-70.697492403013541, 42.637678189893919], [-70.697244979378638, 42.637862102715054], [-70.696965819524891, 42.637857371729396], [-70.696749492267045, 42.63772533125681], [-70.696532081252201, 42.637773873335355], [-70.696190808060152, 42.638183904546217], [-70.695540845825491, 42.63811303170047], [-70.695293491009537, 42.637909292431928], [-70.694518969978361, 42.637929821900947], [-70.693992312284365, 42.637523285781008], [-70.693682476719971, 42.63759089313421], [-70.69396084632109, 42.63801928513891], [-70.694549892092596, 42.638343523174605], [-70.694549851878662, 42.638613598419013], [-70.693806465246212, 42.638706360381356], [-70.693589376922873, 42.639024434566842], [-70.692938763810474, 42.639070485300429], [-70.692939158474076, 42.639277545952439], [-70.693249418624546, 42.639444008956715], [-70.693062996980828, 42.639690276145295], [-70.693062835040905, 42.639969352985979], [-70.693217473622198, 42.640129147349967], [-70.693186932756163, 42.64040008955515], [-70.692505794429138, 42.640923688132496], [-70.691451944842356, 42.6412904617574], [-70.690738884241512, 42.641364241042687], [-70.68835385977674, 42.64127386903921], [-70.688106352984207, 42.641205691337014], [-70.688107141749299, 42.640908073675853], [-70.688725885246811, 42.640583288346548], [-70.68866380769893, 42.640404422494719]]], [[[-70.746367273601749, 42.661083409315665], [-70.745592569864002, 42.661158206007777], [-70.745097230118503, 42.661066657798642], [-70.743795559165406, 42.661113872527309], [-70.743546441287648, 42.660955240180186], [-70.743453719089686, 42.660632256998653], [-70.743143560233364, 42.660447927349331], [-70.742864955816344, 42.660155234521127], [-70.742368531344496, 42.660063577378978], [-70.741997342269045, 42.659853007530685], [-70.741995742130186, 42.659438886299768], [-70.742275683437342, 42.659163897971531], [-70.743049862954592, 42.658917984296764], [-70.743359509054073, 42.658687659836033], [-70.743575683935646, 42.658206905747676], [-70.743916953569112, 42.658003794017624], [-70.743915548583431, 42.657724709946727], [-70.743668277912136, 42.657728133186069], [-70.743296981112138, 42.658004237215927], [-70.742986568765559, 42.658044965647726], [-70.742490783350505, 42.657881293715363], [-70.742304949599557, 42.657613963945181], [-70.742304137184945, 42.656830208041285], [-70.741714829978278, 42.656280525732292], [-70.74177623439644, 42.655739162856378], [-70.741867883806208, 42.655025691881505], [-70.74220949316836, 42.654732563264254], [-70.743262505391883, 42.654337775800094], [-70.743541213475112, 42.65383825554872], [-70.744191304329931, 42.653377714209235], [-70.74437612519371, 42.652672232305854], [-70.744686101570096, 42.652441906231552], [-70.745739391110149, 42.652029633363554], [-70.748248771287294, 42.651999803999303], [-70.749117189137976, 42.652319995389249], [-70.749519607439581, 42.652620229940389], [-70.749764313334978, 42.652799616897724], [-70.74954753365877, 42.653009226025745], [-70.749118036253549, 42.653373824735489], [-70.749117778560148, 42.653671533184465], [-70.749304015078081, 42.653875837882126], [-70.749526926780192, 42.653970640944372], [-70.750177663370138, 42.654158874896389], [-70.750394199665052, 42.654389841497654], [-70.750734192951114, 42.655140957486232], [-70.751136230005415, 42.65548565543569], [-70.751538879712257, 42.655686857404994], [-70.751879408819548, 42.656014859885481], [-70.752034775619634, 42.656283147272944], [-70.752127179261933, 42.656831181980863], [-70.752002971219525, 42.657112243528111], [-70.751692594281494, 42.65731503890013], [-70.750514268572701, 42.657540384949677], [-70.749956485933836, 42.657747152301823], [-70.749677936100724, 42.657724548457573], [-70.749462851057743, 42.657125571643384], [-70.748749295578023, 42.657037662659178], [-70.748285639484195, 42.657287885356752], [-70.748285163943663, 42.657603506846989], [-70.748874410264705, 42.657765420748753], [-70.74890645364583, 42.658269223857971], [-70.748503210144307, 42.658546217084577], [-70.747604041981191, 42.658659108047814], [-70.746644419965975, 42.658961728843082], [-70.746334417574559, 42.659192149716326], [-70.746149363700084, 42.659509897825735], [-70.746148560517611, 42.659851984097813], [-70.746553304189575, 42.660449952784738], [-70.746645460678181, 42.660790934517259], [-70.746367273601749, 42.661083409315665]]], [[[-70.831387392504041, 42.800568350010508], [-70.832836471681773, 42.8004079199508], [-70.833737401719077, 42.800708458237416], [-70.834110895107784, 42.800981833361739], [-70.834141722070896, 42.801233523726026], [-70.833272345124669, 42.802013308513111], [-70.833396969578857, 42.803263669026414], [-70.833583421253408, 42.80358430915512], [-70.834142804530572, 42.804025738224098], [-70.835136212188075, 42.804361183682431], [-70.83715595640443, 42.804382300848218], [-70.838088180567937, 42.804818011797977], [-70.838336376754853, 42.80504789765034], [-70.838336594862639, 42.805282488036063], [-70.837932891587883, 42.805667262430049], [-70.837716351056926, 42.806724916074813], [-70.836785085765158, 42.807793602168765], [-70.836163273429577, 42.808326192375858], [-70.835138789604969, 42.808829463229436], [-70.833896392848217, 42.808966356134192], [-70.832281611188478, 42.809307593010168], [-70.831255749264741, 42.809396195215839], [-70.830386438713944, 42.809284321340414], [-70.829982509197905, 42.808984293655676], [-70.830137031539294, 42.808252164089993], [-70.829919749879451, 42.807796312344124], [-70.829857448099972, 42.806932311051597], [-70.828800692967505, 42.805922482398842], [-70.828769558769736, 42.805346721019347], [-70.828987162253341, 42.805072883882822], [-70.829018673410545, 42.804846848818606], [-70.828365366745885, 42.804434106586456], [-70.828397269643489, 42.804091589350833], [-70.829049437937712, 42.803477658515355], [-70.830030148078521, 42.801218186714088], [-70.830722166611267, 42.800886866383557], [-70.831387392504041, 42.800568350010508]]], [[[-70.824808674018527, 42.726674219623575], [-70.823722752636414, 42.72660198112591], [-70.821271865912735, 42.726145442944002], [-70.820154928898688, 42.725667982224309], [-70.819410307585258, 42.725481850589553], [-70.818479820561791, 42.724893483405005], [-70.818262302734155, 42.724617636085561], [-70.818200781258994, 42.723816621818109], [-70.817983560101723, 42.723243704377602], [-70.817952639690233, 42.722784952087608], [-70.818075608996608, 42.722602843163784], [-70.818541545179798, 42.72248748050481], [-70.818851815423386, 42.72265359725359], [-70.818790769197761, 42.72310442599607], [-70.819379140422043, 42.72314956918018], [-70.820030568587612, 42.722805646689764], [-70.819937020941452, 42.722491731642393], [-70.819905844098898, 42.722077989135769], [-70.820062141131345, 42.721895533900899], [-70.820775505726701, 42.72147887387591], [-70.821364300420129, 42.721370342665551], [-70.822016005498071, 42.721666193933288], [-70.822077316739509, 42.72184542616472], [-70.82189179373708, 42.722055349401721], [-70.821147260029505, 42.722328339139537], [-70.821023644761723, 42.722582464762873], [-70.821178004138375, 42.722715072216815], [-70.821426893899343, 42.722720493386561], [-70.821892262666211, 42.722578017445969], [-70.822450056190945, 42.722559950692201], [-70.823194664786385, 42.722881005329526], [-70.824404127387595, 42.723744449851708], [-70.825707448902747, 42.724318019090667], [-70.827909626657046, 42.724679127018156], [-70.829429924222552, 42.724798765798589], [-70.829709504877215, 42.724938298888048], [-70.82964741251682, 42.725299645215706], [-70.829121157036241, 42.725758584547044], [-70.829213111045974, 42.726260987106478], [-70.829461502012052, 42.726257295844952], [-70.829865331700162, 42.725989571568341], [-70.83039205059444, 42.725188640223813], [-70.830950073166321, 42.725116520855508], [-70.831322964469962, 42.725299799886784], [-70.832378161104657, 42.726309632658257], [-70.832750039832632, 42.72680806566202], [-70.83290593931811, 42.727201637838519], [-70.832874425643695, 42.727904792778929], [-70.832502406565141, 42.72810906585223], [-70.832532814421228, 42.728315750183754], [-70.833278263082462, 42.728591822826054], [-70.833557387368657, 42.728776804413293], [-70.833620311367483, 42.72907261671736], [-70.83340219383733, 42.729283450315599], [-70.833030682650062, 42.729370160173872], [-70.832409677073628, 42.729344703284454], [-70.830858279754665, 42.728774728103424], [-70.829741321926832, 42.728459939457267], [-70.826359702603128, 42.727063601856806], [-70.824808674018527, 42.726674219623575]]], [[[-70.750699001184088, 42.659122585785497], [-70.752342423062998, 42.658394492647517], [-70.753521491411874, 42.657592978740908], [-70.754978344134386, 42.656814129644687], [-70.755598322297445, 42.656678047630074], [-70.755938545821692, 42.656672946842015], [-70.756372303179845, 42.656927176167436], [-70.756651380194228, 42.65718391985645], [-70.757053661058308, 42.657367095137317], [-70.757425482764404, 42.657361562926809], [-70.757921031153444, 42.657227459570983], [-70.758665800673356, 42.656954875772485], [-70.760060370279064, 42.657203547863496], [-70.761608273915115, 42.657908884368986], [-70.762011367059401, 42.658326109758946], [-70.762753841732774, 42.658603171426265], [-70.763529355280497, 42.659059316390419], [-70.765293705219378, 42.660382645215982], [-70.765418195502576, 42.660543228992751], [-70.765355866998419, 42.66100312485603], [-70.765231109040599, 42.661617824839958], [-70.764983497645233, 42.661711945626053], [-70.764332971078758, 42.661505792843947], [-70.762752074677053, 42.661503640549043], [-70.761854344290967, 42.661138894783271], [-70.760119442302553, 42.660085233446246], [-70.758818952637981, 42.65974489157599], [-70.756866506203934, 42.659676087798786], [-70.75606015778888, 42.659283256623873], [-70.755254467395034, 42.659196505378105], [-70.754107886004476, 42.65894379502371], [-70.753302484873785, 42.659028617795087], [-70.754232258029973, 42.659626529427953], [-70.754293341157108, 42.660040493867911], [-70.754106867301886, 42.660285686116531], [-70.753115155501263, 42.660517844584923], [-70.751937488794113, 42.661391382252503], [-70.751471933365309, 42.661615048148782], [-70.750293962216716, 42.661957425644623], [-70.749466817917323, 42.662071878771989], [-70.749033753988257, 42.662249653614573], [-70.748413928162876, 42.662367156670207], [-70.747949116710075, 42.662302286395736], [-70.747732053102496, 42.662134329272973], [-70.747700785996244, 42.661882598680762], [-70.748413089133109, 42.661538390303051], [-70.748784468016623, 42.660856622460798], [-70.749466180554819, 42.660396347814384], [-70.750016418638751, 42.660016147586738], [-70.750296010459493, 42.659399046672348], [-70.750699001184088, 42.659122585785497]]], [[[-70.821334242043108, 42.730287873633543], [-70.820807018132456, 42.729899938476642], [-70.819907154053624, 42.729148645121001], [-70.819286769771836, 42.728051236435547], [-70.819162924289088, 42.727152003649223], [-70.819007702639126, 42.726974377935413], [-70.818479541840318, 42.726857030535051], [-70.818355637437023, 42.726516469473978], [-70.818759616768176, 42.726419825404562], [-70.819100188796568, 42.7264505472358], [-70.819721283099923, 42.726701760135192], [-70.82254416472351, 42.727016565894722], [-70.822853779832997, 42.727201212042381], [-70.82276074019633, 42.727382420687753], [-70.822357909871243, 42.727497089711719], [-70.822357798817279, 42.727722682731667], [-70.822761086969976, 42.727815065632129], [-70.823598823543435, 42.727657387924083], [-70.82511901027577, 42.727543026595882], [-70.825677829377881, 42.727615511558696], [-70.825926170757924, 42.727890353725847], [-70.825397882782724, 42.728295161320247], [-70.825367322696621, 42.728503202543763], [-70.82589482879068, 42.728638518735586], [-70.82654634209473, 42.72857362676708], [-70.827788112958487, 42.729193533704958], [-70.827539591992689, 42.729413811983584], [-70.827508441751021, 42.729666230733017], [-70.82788067975288, 42.729786591792092], [-70.828562801077865, 42.729829351678212], [-70.828966842153591, 42.729670197619591], [-70.829618539194172, 42.729668934450807], [-70.830610946385363, 42.729985794137043], [-70.832534019340443, 42.730261387087928], [-70.832845272797854, 42.730445475356781], [-70.832813453062357, 42.730670885094924], [-70.832441331492419, 42.730929260047375], [-70.831077241376974, 42.731113756543046], [-70.830487123117678, 42.731293806469537], [-70.829835351194788, 42.731655699270625], [-70.829183965786015, 42.731774623340698], [-70.827633518510694, 42.731889402746511], [-70.82648456218979, 42.731799450404203], [-70.82484024309548, 42.731546809238786], [-70.823878066204486, 42.731337472263142], [-70.822234481821155, 42.730724173012483], [-70.821334242043108, 42.730287873633543]]], [[[-70.798196038520658, 42.549928289066948], [-70.797916391625762, 42.549761208646864], [-70.797545882293704, 42.549695394328886], [-70.797329860906999, 42.549806611914704], [-70.797298893146603, 42.550356665639185], [-70.796369507245245, 42.551272692251956], [-70.795782581494834, 42.551363008562845], [-70.795068068319168, 42.55121181132543], [-70.79494685301583, 42.550934238885091], [-70.79491583405779, 42.55063750201446], [-70.795132319254634, 42.550354701116007], [-70.795225702713282, 42.549875880124326], [-70.795937459560292, 42.549378328134857], [-70.795999976804367, 42.549187943324135], [-70.795659424178822, 42.549013193475702], [-70.795349534573674, 42.548982042300565], [-70.79445305032776, 42.549122225752392], [-70.794019591291075, 42.549057185367083], [-70.793153129273847, 42.548593283727229], [-70.793029959111124, 42.548415266476347], [-70.793030068552923, 42.547775537761105], [-70.793308700282367, 42.547455399753993], [-70.793711157847994, 42.547341370121927], [-70.795164610006381, 42.547291202696478], [-70.795628473420209, 42.547085804424697], [-70.796154798689145, 42.546563531486775], [-70.796556773493108, 42.546404475687375], [-70.796896906604573, 42.54635370374767], [-70.797608248073274, 42.546883522937726], [-70.798103425008748, 42.546992318341239], [-70.798999916615443, 42.546924668179813], [-70.799526400631379, 42.547087033492225], [-70.799773435936871, 42.547317561040295], [-70.800206863361907, 42.547472696314756], [-70.802341367508376, 42.54724984586867], [-70.802681706851146, 42.547433667418758], [-70.803392950593718, 42.54834156136998], [-70.803392846893701, 42.548692664292247], [-70.802959837308649, 42.549258386210305], [-70.802371651323227, 42.550015554818813], [-70.802154579987473, 42.5505414371654], [-70.802340772717997, 42.55088070267653], [-70.803083803164981, 42.551526632583553], [-70.803083152816384, 42.551706681604728], [-70.80286637685596, 42.552007590689932], [-70.802588443020099, 42.552102059072183], [-70.801598342628793, 42.552073022503706], [-70.800454237263736, 42.551613707322865], [-70.799463777483268, 42.551530094135323], [-70.798876009469453, 42.551367806650994], [-70.798628453984009, 42.551182917805832], [-70.798474449200143, 42.550337982827891], [-70.798196038520658, 42.549928289066948]]], [[[-70.787437528399124, 42.530681566294433], [-70.788165249381464, 42.530643297598679], [-70.788676880435517, 42.530931750488435], [-70.788840240900342, 42.531114522742079], [-70.789335025185139, 42.531667278332733], [-70.789691689002282, 42.532066134776919], [-70.789601876471551, 42.532539934242379], [-70.789198667856951, 42.533473731270874], [-70.788889873643456, 42.534713030453062], [-70.78882737666558, 42.536056298177343], [-70.788578919929549, 42.53695224461471], [-70.788084381946376, 42.537086484210086], [-70.787682158942999, 42.53733553610104], [-70.787125254173674, 42.537408078034268], [-70.785857729761773, 42.537409779487469], [-70.785578727623559, 42.53710754150832], [-70.78496080678768, 42.536946164990056], [-70.784650724700199, 42.536626356782342], [-70.782672256257541, 42.535603515147038], [-70.78270362942412, 42.534846402597061], [-70.782363482747812, 42.534292870658149], [-70.782332663305098, 42.533770521707048], [-70.783136879826841, 42.533334930753057], [-70.78366325088443, 42.532786245198295], [-70.785333147540229, 42.532147239919752], [-70.785458071792988, 42.531370449927152], [-70.785735805414475, 42.531158896130208], [-70.786819010607871, 42.531051895683952], [-70.787437528399124, 42.530681566294433]]], [[[-70.813888662775682, 42.713202858113803], [-70.81540735786372, 42.712241870743135], [-70.815748928650393, 42.712173584832655], [-70.815996679977928, 42.712313503984781], [-70.816430922566681, 42.712288434463183], [-70.81627603983533, 42.711993867676178], [-70.816027730660537, 42.711736917276738], [-70.815996120753837, 42.711556686445377], [-70.816555389397948, 42.711034534388432], [-70.816586451545149, 42.710827127280197], [-70.816802805564663, 42.710553208314586], [-70.818416791998757, 42.709428453946863], [-70.818912347167114, 42.709060032533024], [-70.819501148055977, 42.709087174211156], [-70.819842830855293, 42.709153279761637], [-70.820586974853455, 42.709105890924661], [-70.820989779656387, 42.709288300428184], [-70.821176373494708, 42.709654614889651], [-70.821796080734302, 42.709770777906769], [-70.822695902079985, 42.710729113091617], [-70.822819669417456, 42.710979648626562], [-70.822758668844173, 42.711214518704061], [-70.822541237379284, 42.711443341328732], [-70.82170420817765, 42.711600474998065], [-70.821642020618924, 42.711763860118729], [-70.822448066119904, 42.711922162145292], [-70.822541789287158, 42.712650177692545], [-70.822014114586281, 42.71297395519148], [-70.821828432568793, 42.713427476990859], [-70.821549654954268, 42.713729125701519], [-70.821146178272471, 42.713753224764439], [-70.821020950494088, 42.713106582914769], [-70.821393634942581, 42.712722756316509], [-70.82139383803576, 42.712443689692172], [-70.820493945321104, 42.712169511016405], [-70.82033960940862, 42.711946880484255], [-70.819966024004117, 42.711781564885385], [-70.819346129194642, 42.711872981674837], [-70.818974923823802, 42.712130779640276], [-70.818788611235746, 42.712539282138415], [-70.818789056886772, 42.712881367961138], [-70.818695045087225, 42.713108119494066], [-70.818292768848281, 42.713798917675263], [-70.8181997542235, 42.714620358980461], [-70.817982374604711, 42.715055683336622], [-70.817144635568638, 42.715699978109143], [-70.81652494323825, 42.716060906428325], [-70.815687241668201, 42.716317646940738], [-70.815128826240255, 42.71612862693943], [-70.814818800213118, 42.715809463926043], [-70.814601824016833, 42.71502894930854], [-70.814229364345252, 42.714323400758502], [-70.813516239395298, 42.713614209011126], [-70.813547024010262, 42.713433267625952], [-70.813888662775682, 42.713202858113803]]], [[[-70.817827697599057, 42.720886469639069], [-70.817362553555512, 42.720659841798586], [-70.817269560982766, 42.720273820182193], [-70.816959438046439, 42.719792083777833], [-70.816897949457143, 42.719495819349156], [-70.816772938629327, 42.71919179790202], [-70.816525420540216, 42.718376179147029], [-70.816462948992239, 42.717665178272966], [-70.816649527032681, 42.717392344419522], [-70.817454687802524, 42.716883974135456], [-70.81813748580997, 42.716107602503726], [-70.818386203798596, 42.715653288023276], [-70.81869572889029, 42.715287732568662], [-70.818943559843703, 42.714824499422939], [-70.819594854784313, 42.714462573774114], [-70.8198746506568, 42.714485644527336], [-70.820060806991435, 42.714644817319162], [-70.820246849641592, 42.714984032762843], [-70.820246730696994, 42.71565019341417], [-70.820060415943914, 42.716058697483966], [-70.820091716392895, 42.71656246328665], [-70.820277787605164, 42.717001242433923], [-70.820432497936011, 42.717133853281453], [-70.820774781599141, 42.717091933076077], [-70.820774246051585, 42.716632819213849], [-70.820680832462443, 42.716453937529714], [-70.820898481682889, 42.715720997957241], [-70.821053049569869, 42.715493430037277], [-70.820991221900059, 42.714503457377404], [-70.821425670456875, 42.714551017861517], [-70.821518193049485, 42.714846382056066], [-70.821487765976954, 42.71572049524223], [-70.821269552753293, 42.716291393398762], [-70.821580245973664, 42.717457377075327], [-70.821674598798452, 42.71898712912455], [-70.821953093899296, 42.719676347417007], [-70.822326069207662, 42.720129721554216], [-70.822450248356432, 42.720434271994748], [-70.822263563404562, 42.720707204228013], [-70.821549842622446, 42.720592743963806], [-70.821271281867965, 42.720452656587788], [-70.820868235215457, 42.720297254240215], [-70.820185739636941, 42.720389478496998], [-70.819564794989191, 42.720660393698957], [-70.819161514649764, 42.720820059809753], [-70.818541047747686, 42.720955939869235], [-70.817827697599057, 42.720886469639069]]], [[[-70.574100820611974, 42.639328685899606], [-70.574101524849567, 42.639148098722181], [-70.573729083533635, 42.639234599355675], [-70.573450924598774, 42.6392114825912], [-70.573512238846476, 42.638823240102333], [-70.574101412078221, 42.638094248063119], [-70.574255575936505, 42.63776796725066], [-70.574193467200274, 42.637588586885762], [-70.573914528259237, 42.637403417226807], [-70.573915093751481, 42.637132802098371], [-70.574875168745692, 42.636236898713818], [-70.575463090540737, 42.636030583449774], [-70.575649300413019, 42.635829513956196], [-70.575680267087449, 42.635090373845479], [-70.575896695248318, 42.634907010866705], [-70.576423560812415, 42.63486396057629], [-70.577322370883209, 42.635257177057916], [-70.577724814854705, 42.635251388210094], [-70.578095671840629, 42.635137854223075], [-70.578653643294615, 42.634868805386525], [-70.579056704451389, 42.634845641725207], [-70.579551328991627, 42.635072939806378], [-70.579830152271285, 42.635366576933905], [-70.580109372124397, 42.635524726651894], [-70.580141566190434, 42.635983487839106], [-70.579429067906304, 42.637156078321631], [-70.578840977618171, 42.637632491649256], [-70.578035093885688, 42.637976535644015], [-70.576609429605796, 42.638843536669107], [-70.575836070099086, 42.639511920273137], [-70.573450653242489, 42.640473020619851], [-70.572893144051775, 42.640399317562192], [-70.572954857872077, 42.640083639987793], [-70.573357864700242, 42.639735139993661], [-70.573977340228808, 42.639483531929542], [-70.574100820611974, 42.639328685899606]]], [[[-70.587648246763464, 42.661566025581543], [-70.589165875303038, 42.660193222061153], [-70.589506535091147, 42.659620912478353], [-70.589629601771009, 42.658727206552889], [-70.590157291490044, 42.658657091227049], [-70.590529045902812, 42.659021290747567], [-70.590807787765726, 42.659044280072173], [-70.591148700552949, 42.658841613145519], [-70.591551450601571, 42.658934805667855], [-70.591985903225151, 42.659045710864277], [-70.592140840986659, 42.65932258681152], [-70.593318611085095, 42.659297533718181], [-70.593690305068947, 42.659616619498209], [-70.593535441361993, 42.659960923282966], [-70.593536355165469, 42.660168529573887], [-70.593938919300285, 42.660351737811595], [-70.593938500631381, 42.660558793462421], [-70.593442302288722, 42.660872242322988], [-70.593319236825636, 42.661108764424718], [-70.592885942476286, 42.661475009282938], [-70.592328000824409, 42.661518432037219], [-70.591273588305086, 42.661335135835458], [-70.590685255945132, 42.661793599903369], [-70.590065180254456, 42.662135317895533], [-70.589600578669732, 42.662547487154654], [-70.589198064536191, 42.662706361683369], [-70.5886718034007, 42.662776484081043], [-70.58767866031485, 42.662682583696508], [-70.587431898555067, 42.662505625587706], [-70.587431176117263, 42.662109507050253], [-70.587648246763464, 42.661566025581543]]], [[[-70.689686569907821, 42.645343895784102], [-70.689283322362527, 42.645323061882706], [-70.689097226052041, 42.645181676926768], [-70.688602652198028, 42.645207462765924], [-70.688199569669706, 42.645050958475956], [-70.687765370384994, 42.644678804244364], [-70.687455499380775, 42.644566344644893], [-70.687517694733131, 42.644358103911742], [-70.687920853029397, 42.644063855617375], [-70.687919899508188, 42.643721753571292], [-70.687548774748237, 42.643744981538646], [-70.687517324140472, 42.643970993431751], [-70.686929172526447, 42.644312822212278], [-70.686619622187806, 42.644317395213044], [-70.686402679151911, 42.644176328788866], [-70.686464523401199, 42.643608525821655], [-70.686371432915777, 42.643357510424451], [-70.686092548196413, 42.642640926542143], [-70.68559684984092, 42.642368528176817], [-70.685596196889136, 42.642098448093478], [-70.686557550808189, 42.642165357776996], [-70.68764132819102, 42.642185407017585], [-70.688416297642448, 42.642579042040609], [-70.691080377703315, 42.642251129431102], [-70.691885935073202, 42.642068344457492], [-70.692164812204197, 42.642163110704878], [-70.691948056040545, 42.64298586454229], [-70.691762080983423, 42.643196122565818], [-70.691730849481743, 42.643881264870139], [-70.691948232810077, 42.644635034713488], [-70.691793315615072, 42.644952369406603], [-70.691452171735932, 42.645137954732448], [-70.690956386793403, 42.645163202012462], [-70.6903058279334, 42.64483959610007], [-70.68990354717792, 42.644980815965702], [-70.689686569907821, 42.645343895784102]]], [[[-70.825880190016534, 42.803708520383694], [-70.8252208260093, 42.803521222456439], [-70.824575601811063, 42.80326990964069], [-70.824420417962699, 42.803524478663363], [-70.824017143912855, 42.803567135453449], [-70.823674695574098, 42.803455943404508], [-70.82308555425935, 42.802969819926886], [-70.822899225341374, 42.802495500676699], [-70.822991871129716, 42.800773346958309], [-70.823363767246988, 42.800316962614346], [-70.824047197828037, 42.800206718743958], [-70.824886090013976, 42.800292628570979], [-70.825941777800708, 42.80029373587287], [-70.827525725968314, 42.799971042355864], [-70.827929852303555, 42.80006340705301], [-70.827930463227048, 42.800360473635486], [-70.827619305676663, 42.800753041434746], [-70.827401785975724, 42.801350945531439], [-70.827392243005164, 42.80248179923997], [-70.82718617311744, 42.802580703624315], [-70.826190670568593, 42.803586550736711], [-70.825880190016534, 42.803708520383694]]], [[[-70.804148089162553, 42.721023292792445], [-70.803807681289115, 42.720550880801461], [-70.803062976977813, 42.720139587971659], [-70.802381236521541, 42.719357960077183], [-70.800984652010868, 42.718416092390491], [-70.800084944891069, 42.717664640517356], [-70.799806322431209, 42.717074931114681], [-70.799031262830582, 42.71650147843259], [-70.798783378277719, 42.715838854678331], [-70.798875420746086, 42.715675122527848], [-70.800209636271262, 42.716113597168416], [-70.801450616995012, 42.716913291100731], [-70.801636022769301, 42.717180515408934], [-70.801605762153471, 42.717937686917374], [-70.802008650968219, 42.718255735427412], [-70.802783583985118, 42.71855865132801], [-70.803559085444036, 42.719086529953927], [-70.80445829599681, 42.719468951697998], [-70.804986208682436, 42.720109028996774], [-70.805016640809612, 42.720459666644544], [-70.805574925127431, 42.720451226585872], [-70.806350630502394, 42.721186227152558], [-70.80656856462052, 42.721507110704842], [-70.806567922490089, 42.721687150319674], [-70.806443197836501, 42.72287802000934], [-70.806103100396001, 42.722928283103002], [-70.804148089162553, 42.721023292792445]]], [[[-70.587727317865586, 42.629049217312627], [-70.587757893634205, 42.628571147596766], [-70.587231627261801, 42.628047086365271], [-70.587261969753627, 42.627560102129884], [-70.588004974626159, 42.626081612196252], [-70.588500198992548, 42.625894214875309], [-70.588903177668271, 42.626167474354276], [-70.588686817401523, 42.626350862189511], [-70.588655361408655, 42.626603858904332], [-70.589398885293392, 42.626764479002254], [-70.590019166691846, 42.62728756074209], [-70.591846474512053, 42.627838681207251], [-70.592310995502473, 42.628039310734835], [-70.5923109530479, 42.628228366144633], [-70.591722957967747, 42.628524792600615], [-70.591660909824526, 42.62918374900638], [-70.591259190569048, 42.629251980184385], [-70.590143517030896, 42.628916310783218], [-70.589616961747538, 42.629077000380647], [-70.589183786524998, 42.629785965407685], [-70.588750342911581, 42.630125187454148], [-70.588348458295954, 42.6302210454025], [-70.587914231650885, 42.630218157549074], [-70.587634375779416, 42.629969544706093], [-70.587541968710909, 42.629691443178537], [-70.587727317865586, 42.629049217312627]]], [[[-70.754456852609337, 42.649931208705688], [-70.755882499768859, 42.649836870869784], [-70.75644058059558, 42.649927697121875], [-70.756657642622386, 42.649680986895874], [-70.756998233641582, 42.649558854039569], [-70.758269607040148, 42.647890320366109], [-70.758766174522293, 42.647621723711588], [-70.759447971151246, 42.647529859692554], [-70.759881459921488, 42.647730150613917], [-70.759849914311431, 42.648235164826801], [-70.759663252158632, 42.649175352690918], [-70.758670923392572, 42.649559425353083], [-70.758671199716787, 42.64985704728857], [-70.757772125423585, 42.650636196506596], [-70.755974421133587, 42.651511373405675], [-70.755013847713613, 42.651670018530289], [-70.753805420272982, 42.651553651746546], [-70.75337159582412, 42.651298781448986], [-70.753310199921643, 42.650840431308801], [-70.753403814084976, 42.650659277233878], [-70.753868763523187, 42.650129426878934], [-70.754456852609337, 42.649931208705688]]], [[[-70.818419745385683, 42.752122265765323], [-70.818668973490404, 42.751847999800212], [-70.819475081399546, 42.751889380907258], [-70.819662113794664, 42.752147039472327], [-70.819879086153449, 42.752945537797039], [-70.82025187187314, 42.753263880357046], [-70.820779641296426, 42.753381755118717], [-70.821059105136101, 42.753881388957552], [-70.821276245316653, 42.754112215090338], [-70.821990061128986, 42.754343700855884], [-70.822269246954676, 42.755006356945188], [-70.822144830440195, 42.755918256851942], [-70.821834952947682, 42.756175250722883], [-70.821431056379936, 42.756280908185836], [-70.821121086956765, 42.756285842076529], [-70.820562009867984, 42.756033294644617], [-70.818203116104527, 42.754548757131481], [-70.817862147050434, 42.754157948960902], [-70.817800011056548, 42.753951615497563], [-70.817799618740764, 42.753357476840442], [-70.818419745385683, 42.752122265765323]]], [[[-70.814558010728376, 42.513205678215272], [-70.814496724354413, 42.512999961704288], [-70.814001601807419, 42.512494033897134], [-70.812857860290549, 42.512539528572063], [-70.812672074989948, 42.512380333056427], [-70.812641062614745, 42.51187599486758], [-70.812795653565843, 42.511647886793384], [-70.812795775819708, 42.511323788923718], [-70.811992022396069, 42.511192416564157], [-70.811991595522201, 42.510796293424939], [-70.812208936134567, 42.510549384698059], [-70.812301750847567, 42.510250597224029], [-70.812579131639325, 42.510021061103046], [-70.812888571418299, 42.510043161993849], [-70.813475418690572, 42.510772459162098], [-70.813939207018763, 42.510801147969417], [-70.814372605564969, 42.510983781068539], [-70.815300278254256, 42.51171680555013], [-70.815733625562729, 42.512331564394103], [-70.817681322477583, 42.513705851154519], [-70.817959012230261, 42.514044016245421], [-70.818021162945655, 42.514294749760992], [-70.817896603762648, 42.514458852840029], [-70.817155110387787, 42.514641900365561], [-70.816722462121987, 42.514982521080881], [-70.816196399528664, 42.514981652898889], [-70.815825960460501, 42.514275531887264], [-70.815021735561587, 42.51389210175509], [-70.814959652846696, 42.513613818567066], [-70.814558010728376, 42.513205678215272]]], [[[-70.684047717128038, 42.642670975138827], [-70.684388532559169, 42.642549056947168], [-70.68482255422839, 42.642668522728478], [-70.685069243775047, 42.643007317248426], [-70.685504712868351, 42.643307471071758], [-70.685721158751321, 42.643628045845645], [-70.685690085164012, 42.643880977461542], [-70.685720510498143, 42.644979497869798], [-70.685472861122534, 42.645298511556199], [-70.685101206217681, 42.645484403297992], [-70.684573960714687, 42.645527946489146], [-70.684047073253112, 42.645779087641152], [-70.683334817063411, 42.645870832243375], [-70.682684137547923, 42.645709227355589], [-70.681537579900507, 42.645645385257552], [-70.681476761600962, 42.645277021771214], [-70.681909757372324, 42.644153064210066], [-70.682715393114094, 42.643357542289856], [-70.683613454140826, 42.642984075650432], [-70.684047717128038, 42.642670975138827]]], [[[-70.676333461321633, 42.646118214311898], [-70.676550861612895, 42.645691604350048], [-70.677355173503997, 42.645004140331586], [-70.677634609417666, 42.645027465628104], [-70.677912778705377, 42.645437349245334], [-70.677913190146626, 42.645779447718986], [-70.678129727236382, 42.64586651214109], [-70.678594556732463, 42.645868737472689], [-70.678780983693571, 42.64598313428003], [-70.678718743094322, 42.646164452588287], [-70.678129282898794, 42.646713375307016], [-70.677851016357096, 42.647132262924536], [-70.677479394828936, 42.647453078139634], [-70.676983436281247, 42.647676319591724], [-70.677013978894195, 42.648567785465694], [-70.676673113105764, 42.648960387023656], [-70.676022547095116, 42.649077823406564], [-70.675558450507623, 42.649688393499169], [-70.675124311768641, 42.64991990025549], [-70.674721759535188, 42.649872013184073], [-70.674689692944511, 42.649620254123377], [-70.675403564850726, 42.648915863672677], [-70.675434106165952, 42.648734861150807], [-70.675650128882893, 42.648479831111203], [-70.676301198065801, 42.648407412970656], [-70.676332467012472, 42.648226505415217], [-70.676084984876084, 42.647978252198158], [-70.675898595912045, 42.647134107837957], [-70.675712836934494, 42.646857035765485], [-70.675713169056507, 42.646514942618346], [-70.676333461321633, 42.646118214311898]]], [[[-70.721213816606564, 42.567430130381737], [-70.720625474977098, 42.566835402018228], [-70.720625585534052, 42.566609705473113], [-70.721337196870394, 42.566680409376694], [-70.721677785020489, 42.566567292812508], [-70.721616168908284, 42.566378991170566], [-70.72155343591713, 42.565965524798266], [-70.721893311800756, 42.565968987569363], [-70.722419985194492, 42.566132875745055], [-70.722543861355319, 42.56642800818021], [-70.722822579779873, 42.566630735617302], [-70.723502965516417, 42.566764774759434], [-70.723657596057848, 42.56690697725913], [-70.723410939618589, 42.567433144634805], [-70.723380327209, 42.56791116091771], [-70.723504217347397, 42.568116805595629], [-70.723257256929216, 42.568390355338778], [-70.72223596120493, 42.568739081923034], [-70.721307800356129, 42.569464829730755], [-70.720906070018017, 42.569606160940609], [-70.72065777198182, 42.569060362676716], [-70.720380016443983, 42.568740061694974], [-70.720347481516043, 42.568416285571217], [-70.721121269687075, 42.567773858296754], [-70.721213816606564, 42.567430130381737]]], [[[-70.819842219999146, 42.706703596978159], [-70.821050905834639, 42.705332821184697], [-70.822105419427089, 42.704694719047254], [-70.822819103593815, 42.704467093342174], [-70.823253456795413, 42.70441508251362], [-70.823470257580325, 42.704582891870018], [-70.823532498094622, 42.704924259635149], [-70.822726107116949, 42.705747112947293], [-70.822695567212321, 42.706180210278433], [-70.823221886160269, 42.706181040898159], [-70.823284337685564, 42.706684359497238], [-70.822633144503826, 42.707046306851325], [-70.821734092647631, 42.707051750301517], [-70.819935316414757, 42.707350592815928], [-70.819718144907895, 42.707047741726647], [-70.819842219999146, 42.706703596978159]]], [[[-70.781582271791336, 42.551775097253497], [-70.782108614158787, 42.551703561708493], [-70.782757628354148, 42.552162233229694], [-70.783407462417856, 42.552260259409948], [-70.783747944526624, 42.55257917755079], [-70.78374774091624, 42.553218905387972], [-70.78356171830039, 42.55353734473119], [-70.783159643555649, 42.553858942820241], [-70.782725917945243, 42.554018835021189], [-70.781952828212212, 42.554156988075277], [-70.780684305761781, 42.554248655158176], [-70.780250986203342, 42.554201479428976], [-70.780095941398628, 42.553969863844522], [-70.780715777616777, 42.553464449494157], [-70.780746564134532, 42.552526743948981], [-70.781582271791336, 42.551775097253497]]], [[[-70.805670688775507, 42.688410093077422], [-70.806724941808497, 42.688249337559064], [-70.807096827349923, 42.688342669662511], [-70.807406800901063, 42.688661856978797], [-70.807438147022864, 42.689228647570893], [-70.80728394039167, 42.6896908004191], [-70.806817814227216, 42.690463822080389], [-70.806291338906533, 42.691750868963275], [-70.805918891017768, 42.691928048862856], [-70.805702262889909, 42.691841226768297], [-70.80570175823604, 42.691157051734734], [-70.805050311334469, 42.689735281013782], [-70.805050240025679, 42.689023561122788], [-70.805205442405608, 42.688660442041702], [-70.805670688775507, 42.688410093077422]]], [[[-70.833285524289593, 42.484493820275112], [-70.833254111990627, 42.483990022636547], [-70.833655594572562, 42.483830834873928], [-70.834737185452525, 42.483849507874396], [-70.834798829382564, 42.48326297203527], [-70.8344279838783, 42.482962568323359], [-70.833439211464849, 42.482483126290589], [-70.833346271998224, 42.482277234984394], [-70.833531391060447, 42.481770188228374], [-70.834767692627835, 42.481912373870074], [-70.835231639152411, 42.482183964630941], [-70.835478825210629, 42.48250390905195], [-70.835386662597998, 42.483829578180263], [-70.83504678960152, 42.484375707083316], [-70.834645202161695, 42.48536423530372], [-70.834336878645487, 42.485639290298316], [-70.83381152245785, 42.485756081497058], [-70.833718549975799, 42.48525309864835], [-70.833285524289593, 42.484493820275112]]], [[[-70.841703121377506, 42.512346563407739], [-70.842383174672989, 42.512281303659876], [-70.842785406778162, 42.512509205278221], [-70.842568456468086, 42.512963145403091], [-70.842600755918554, 42.513331900306071], [-70.842785590218725, 42.513473036257103], [-70.843372687400318, 42.51365310466467], [-70.843620641731434, 42.513973482519368], [-70.843528334889399, 42.514272296965522], [-70.842725207217853, 42.515005943100824], [-70.842012666941827, 42.515044641655543], [-70.841735090316945, 42.51458959084578], [-70.841178491781065, 42.514157072453756], [-70.841362798557782, 42.513334377576882], [-70.841239660848515, 42.513146868019525], [-70.84130100752877, 42.512550788877036], [-70.841703121377506, 42.512346563407739]]], [[[-70.812678905710641, 42.732741082721965], [-70.812989183554095, 42.732619146171665], [-70.813175939105776, 42.732760328152665], [-70.813144487574959, 42.732967820665728], [-70.813268745918251, 42.733263378099849], [-70.814230092718034, 42.734175414503085], [-70.814354068790124, 42.734407954039696], [-70.814416232167005, 42.734911361251925], [-70.814044167642095, 42.73582683247502], [-70.813795716520005, 42.736101004308473], [-70.813392745595451, 42.736143624387765], [-70.813175832702768, 42.736056816844062], [-70.812741185537377, 42.735478100225968], [-70.812741580815313, 42.734793940924526], [-70.812555095398153, 42.734571740816044], [-70.81252315883745, 42.733058652899153], [-70.812678905710641, 42.732741082721965]]], [[[-70.760281498432747, 42.651047854923668], [-70.760716323435929, 42.650825037175217], [-70.761118323096625, 42.650936177704686], [-70.760745686747583, 42.651481771445233], [-70.76074519955651, 42.651689454101906], [-70.76183080161573, 42.651870771273401], [-70.762077464096421, 42.652010803935347], [-70.7617360158076, 42.652538595014462], [-70.761116671233637, 42.653061817626202], [-70.759938552170169, 42.652999183420071], [-70.759690794853782, 42.652651543519809], [-70.758637948932304, 42.652442779080573], [-70.75870082835479, 42.652198496791243], [-70.759847856258673, 42.651460269561397], [-70.760281498432747, 42.651047854923668]]], [[[-70.768725780642356, 42.672237486680501], [-70.768726153428474, 42.672047899508101], [-70.768943481315148, 42.671864726039878], [-70.76897461839765, 42.671431639716964], [-70.769470993929247, 42.671181091683202], [-70.769811717094001, 42.671391919201653], [-70.769810923987478, 42.671986069437487], [-70.770679579026094, 42.671982011208051], [-70.771578517975684, 42.671985969348071], [-70.772042017459015, 42.672140849033894], [-70.772538334240679, 42.672781429974741], [-70.7722281368805, 42.673083846637688], [-70.771019862557537, 42.672895105504153], [-70.77043057309524, 42.672688294538887], [-70.768818702128598, 42.672398406399822], [-70.768725780642356, 42.672237486680501]]], [[[-70.81236948736094, 42.765523753324395], [-70.81233774716128, 42.764884960453365], [-70.812617917820731, 42.764681828120061], [-70.813393140522606, 42.7651382408812], [-70.814324622703623, 42.765943232402442], [-70.816031502263272, 42.76642026504004], [-70.816372872678514, 42.766622036436253], [-70.816279945984206, 42.766785774618789], [-70.815317890294409, 42.766809885308959], [-70.814697148124239, 42.766603666680226], [-70.813517562539474, 42.766442562997113], [-70.813020567791185, 42.766261284519402], [-70.812710857952467, 42.766059150989442], [-70.81236948736094, 42.765523753324395]]], [[[-70.986819513532751, 42.455190520086894], [-70.987004607966895, 42.454988782897075], [-70.98740578252692, 42.455081136504091], [-70.987437658710974, 42.456141891224355], [-70.987450828222194, 42.456586505071414], [-70.987390468439003, 42.456758368824701], [-70.987329845540017, 42.456977585769025], [-70.987209830531128, 42.457204370441644], [-70.987049189982173, 42.457553051407594], [-70.986712178397838, 42.458150772253575], [-70.98662434464903, 42.458306848366142], [-70.986221593212207, 42.458555418741597], [-70.985371120232202, 42.459079362565078], [-70.985000218760959, 42.459103632797387], [-70.984969443913357, 42.458851958802676], [-70.986049417045351, 42.457959929957823], [-70.986635636572842, 42.457201812821324], [-70.986603818956453, 42.455851260383618], [-70.986819513532751, 42.455190520086894]]], [[[-70.622873167708448, 42.619134349984826], [-70.623585209482044, 42.619042977377781], [-70.623864361490448, 42.619156008084168], [-70.624018977967154, 42.619406374155808], [-70.624019525926784, 42.619884148559983], [-70.623772141610914, 42.620229953896306], [-70.623091000016956, 42.620780156672986], [-70.622843589656284, 42.620873345707942], [-70.622131171151906, 42.620937703070112], [-70.62163554711033, 42.620665566087453], [-70.621634333852811, 42.620367929485369], [-70.622099231836856, 42.620028193618801], [-70.622469796085724, 42.619293333258007], [-70.622873167708448, 42.619134349984826]]], [[[-70.809792844088349, 42.757430701742472], [-70.810289231582743, 42.757315013512383], [-70.810847628021847, 42.757548972312001], [-70.811344464455019, 42.75807233837989], [-70.811344310709956, 42.758387409464106], [-70.811064901558737, 42.758779586722412], [-70.811065737797193, 42.758959632806892], [-70.810817134348639, 42.75921588170231], [-70.810382566296724, 42.759240839734822], [-70.8097928208458, 42.759079248550862], [-70.809358341366973, 42.758807135398143], [-70.809420638134199, 42.75770700541478], [-70.809792844088349, 42.757430701742472]]], [[[-70.813579526174792, 42.758532386517196], [-70.813858973457414, 42.758347790867838], [-70.814107000812612, 42.758478710410785], [-70.814324126585333, 42.758799569720871], [-70.814509781989486, 42.759967514959278], [-70.814293859925272, 42.760566042527806], [-70.813951275735747, 42.76090437999374], [-70.81345530372883, 42.760957702193338], [-70.812865666740564, 42.76075048716406], [-70.812864754304684, 42.760219360868319], [-70.813176260392751, 42.759583774445311], [-70.813517065742829, 42.759217882532177], [-70.813579526174792, 42.758532386517196]]], [[[-70.797795363824832, 42.544042070063014], [-70.798228059576786, 42.543954136516369], [-70.798475219040611, 42.544040625178425], [-70.798692335950619, 42.544343534890814], [-70.798722683429517, 42.54465818263472], [-70.798629916213869, 42.544821917311729], [-70.797825260703846, 42.545348179309322], [-70.79634063961997, 42.54574092146229], [-70.796030860399526, 42.545646753985636], [-70.796030645687566, 42.545349664595136], [-70.796279519511046, 42.544660768407482], [-70.797051687190844, 42.544504598949885], [-70.797795363824832, 42.544042070063014]]], [[[-70.807155437258331, 42.744925726057417], [-70.807155970836803, 42.744655666185615], [-70.807435185311249, 42.744588111364607], [-70.808304013922438, 42.745546990061129], [-70.808676215054064, 42.745820357338488], [-70.808862980280409, 42.746096667004693], [-70.809049184540413, 42.747057582284448], [-70.808800372108522, 42.747214173245162], [-70.808427331030856, 42.747238410759898], [-70.807993611216091, 42.747082782496932], [-70.807434589792052, 42.746371693620119], [-70.807342018729912, 42.745228953274506], [-70.807155437258331, 42.744925726057417]]], [[[-70.66355277148115, 42.601756164334553], [-70.664605873517232, 42.601371633728682], [-70.665286511565128, 42.601505924720328], [-70.666030183090598, 42.601278940635623], [-70.666278498865495, 42.601392096813584], [-70.666247502423033, 42.601690130667883], [-70.665813706586107, 42.602102199016393], [-70.665410559842456, 42.602260792956123], [-70.665007501532457, 42.602789574912009], [-70.6641723283294, 42.602765526517764], [-70.663893480877661, 42.602400070659819], [-70.663522384168658, 42.602099124922553], [-70.66355277148115, 42.601756164334553]]], [[[-70.744703241073566, 42.570831189282998], [-70.745013208909015, 42.570781452428655], [-70.745570363611932, 42.570971361102828], [-70.745849038959292, 42.571246593100838], [-70.745601454628328, 42.571772800071713], [-70.745819214155077, 42.572436458093186], [-70.74560274105788, 42.572683156066063], [-70.744983284238856, 42.572710614142778], [-70.744797527452405, 42.572568777336457], [-70.744704717909642, 42.572344724249838], [-70.744177809738545, 42.572110086428495], [-70.744085171599579, 42.571678972995798], [-70.744147057465696, 42.571200617454231], [-70.744703241073566, 42.570831189282998]]], [[[-70.766912271376299, 42.650548798945003], [-70.767128854668272, 42.650455107365104], [-70.767439401812553, 42.650576358642532], [-70.767873221952527, 42.651056236143631], [-70.767903309306703, 42.651352966234469], [-70.76802742255137, 42.651513545337707], [-70.768088937803824, 42.652422008086901], [-70.766880307444509, 42.652539839678461], [-70.766632328475808, 42.652291870120948], [-70.766633342165292, 42.651922147545108], [-70.766974187758038, 42.651421345589341], [-70.767005246629367, 42.651141927680726], [-70.766789043529442, 42.650919996820036], [-70.766757703649034, 42.650731287391849], [-70.766912271376299, 42.650548798945003]]], [[[-70.813012909629762, 42.524799367243872], [-70.813600416483979, 42.524708877656948], [-70.8140643590324, 42.525124592442602], [-70.81406330788964, 42.525512332647544], [-70.812363314038265, 42.52628706348699], [-70.811621317673698, 42.526290018691469], [-70.811589749911249, 42.525948267649738], [-70.812487107570334, 42.525303175873113], [-70.813012909629762, 42.524799367243872]]], [[[-70.8411762197793, 42.510202077618764], [-70.842072596110086, 42.510078907966871], [-70.842474962607795, 42.51031581437411], [-70.84241305231923, 42.510605258704409], [-70.842103787607186, 42.510880327775439], [-70.841950002845806, 42.51113485712488], [-70.841610058706777, 42.511410920091684], [-70.841146696349014, 42.511526388583093], [-70.840806564545446, 42.511505358512849], [-70.840496567868115, 42.511185699682009], [-70.84049703455959, 42.510861604543926], [-70.84092925609616, 42.510313740163049], [-70.8411762197793, 42.510202077618764]]], [[[-70.863302271115913, 42.758511585670348], [-70.863766365695227, 42.758125430607741], [-70.86451279090376, 42.758896952645557], [-70.864543846906443, 42.759220565397627], [-70.864358479927262, 42.759466562768885], [-70.863613539461781, 42.759947497624871], [-70.862899674802577, 42.760085352354011], [-70.862868134688497, 42.75965362263058], [-70.863178282137582, 42.75912592109561], [-70.863302271115913, 42.758511585670348]]], [[[-70.825593067022695, 42.502397702574946], [-70.826303937409918, 42.502377732072155], [-70.826953244682272, 42.502699952329166], [-70.826891302926299, 42.503043405583632], [-70.826304386644253, 42.503566637604145], [-70.825933738369471, 42.503752988091705], [-70.82540861535108, 42.50370715315244], [-70.825284076628705, 42.502655353618394], [-70.825593067022695, 42.502397702574946]]], [[[-70.811283706133224, 42.731754343829373], [-70.811747907932983, 42.73145895531146], [-70.812120813120487, 42.733146282864794], [-70.81199671443018, 42.733517423111714], [-70.811779571766124, 42.733854251789118], [-70.811500311363034, 42.733930818885113], [-70.811345071106373, 42.733744181024399], [-70.811158781316266, 42.732234134244472], [-70.811283706133224, 42.731754343829373]]], [[[-70.865658659382461, 42.756175627498344], [-70.865937436177006, 42.756125933514021], [-70.866092859995064, 42.756267396368692], [-70.866062670754772, 42.756474907583666], [-70.8657829350132, 42.756813201295145], [-70.86553591183619, 42.757916214752292], [-70.865380824106509, 42.758188845716056], [-70.865038807487267, 42.75818525964312], [-70.864760634641669, 42.757847868196592], [-70.864821898077992, 42.757225354951331], [-70.865658659382461, 42.756175627498344]]], [[[-70.793315173067001, 42.525787037148334], [-70.793623645544756, 42.52567360232154], [-70.793963513859268, 42.525875994278472], [-70.794025623607865, 42.526514487267221], [-70.794149620709888, 42.526702052724616], [-70.794211192511895, 42.527160397582442], [-70.793964055410598, 42.527317602613898], [-70.793282752897412, 42.527246989208209], [-70.7932219111336, 42.5266806156787], [-70.792912482455009, 42.526270715506726], [-70.793315173067001, 42.525787037148334]]], [[[-70.693303708317501, 42.580569121390226], [-70.693056100791708, 42.580546054120802], [-70.692777572189456, 42.580388180054349], [-70.692281822733136, 42.580431435547808], [-70.69212878064755, 42.58025373187683], [-70.69222123528489, 42.580045066756085], [-70.692746591683729, 42.579658746534669], [-70.693303870878623, 42.579452250487265], [-70.693768699537301, 42.579454328200782], [-70.693891905281859, 42.579822047886623], [-70.693551682338125, 42.580439775402304], [-70.693303708317501, 42.580569121390226]]], [[[-70.73748692459796, 42.563471855693216], [-70.737888894967341, 42.563465508748145], [-70.738167097486581, 42.563623182266895], [-70.738168766491071, 42.564109967912358], [-70.738415962736156, 42.564223503007526], [-70.739003550432415, 42.564287067542786], [-70.739003818825452, 42.564638173539088], [-70.738818113912089, 42.564767487137892], [-70.737858793990242, 42.564565346747095], [-70.737580914647737, 42.564380666663347], [-70.737395153427983, 42.564041208589536], [-70.737116047600068, 42.563928000473325], [-70.73702293734074, 42.563722033780515], [-70.737146709369497, 42.563557923128698], [-70.73748692459796, 42.563471855693216]]], [[[-70.861831826541476, 42.475969386124781], [-70.862387378937783, 42.47532993334967], [-70.862634695370957, 42.475334632727559], [-70.863129869076005, 42.476037967149843], [-70.863099389124187, 42.47658804866785], [-70.862635894416712, 42.476685686691233], [-70.862110997463702, 42.47654098818014], [-70.861801423968672, 42.476221925847582], [-70.861831826541476, 42.475969386124781]]], [[[-70.811558643144494, 42.508532309472066], [-70.812023325914424, 42.508443885713952], [-70.812733615014025, 42.509243785018484], [-70.81279525112727, 42.509450045205504], [-70.812641286948676, 42.509587589519917], [-70.811868451260651, 42.509635825136243], [-70.811280674822754, 42.509239615441402], [-70.811280771621199, 42.5087624704733], [-70.811558643144494, 42.508532309472066]]], [[[-70.695448725776473, 42.639329980448267], [-70.695881738193705, 42.639260975169208], [-70.695633622889972, 42.639985030489655], [-70.695602821695132, 42.640697184518672], [-70.69541757641656, 42.640880445994732], [-70.695014667950929, 42.640949659346205], [-70.694705106934066, 42.640746655923159], [-70.69479740213869, 42.640060857933712], [-70.695448725776473, 42.639329980448267]]], [[[-70.897161405102509, 42.433435218950031], [-70.898798259614352, 42.433137050016256], [-70.899106894088618, 42.433411627558193], [-70.899075811141998, 42.433664085341285], [-70.89833472977395, 42.433775541834621], [-70.897840553652927, 42.434045294777661], [-70.897562399655953, 42.433977488790376], [-70.897130035684299, 42.433678671895152], [-70.897161405102509, 42.433435218950031]]], [[[-70.836546152079237, 42.528368270206734], [-70.837072326561426, 42.528369045535634], [-70.837072546508637, 42.528846188659102], [-70.837443347229012, 42.528957522107177], [-70.83759825750532, 42.529216068580219], [-70.836949058750946, 42.529443076299962], [-70.836361372824385, 42.529353000064255], [-70.836113320222594, 42.529213201195333], [-70.83611357932007, 42.528934119724134], [-70.836546152079237, 42.528368270206734]]], [[[-70.829834976762172, 42.728872329553752], [-70.830113424570484, 42.728867820705048], [-70.830889370460241, 42.729261022957139], [-70.832689413332133, 42.729736739365634], [-70.832626440543692, 42.729917588936296], [-70.831106195970236, 42.72973488850792], [-70.829741765777598, 42.729117097661373], [-70.829834976762172, 42.728872329553752]]], [[[-70.791120325329487, 42.521920398327666], [-70.791676960032362, 42.521848466195628], [-70.792696640686927, 42.522724569085597], [-70.791862380798051, 42.522764462327707], [-70.791119914314464, 42.522650246992825], [-70.79096630700424, 42.522174948883197], [-70.791120325329487, 42.521920398327666]]], [[[-70.780743120248161, 42.557995836867264], [-70.78114710218685, 42.557980349349577], [-70.7816724201368, 42.558206436815553], [-70.781734611596633, 42.558530289186692], [-70.781610773072032, 42.55877547051481], [-70.781331841472152, 42.558941362698803], [-70.780868007600503, 42.558940183062994], [-70.780527835793777, 42.558773763933424], [-70.78052790605102, 42.558116570931126], [-70.780743120248161, 42.557995836867264]]], [[[-70.826701195933353, 42.727887034936273], [-70.826980681236066, 42.727819434706838], [-70.829090984748916, 42.728758371542995], [-70.829090407027053, 42.728938410839028], [-70.828686637689358, 42.728981079327014], [-70.826639873761962, 42.728140358255871], [-70.826701195933353, 42.727887034936273]]], [[[-70.796584879046904, 42.559855144791143], [-70.79683295278295, 42.559788597049923], [-70.79723398979425, 42.560016106268776], [-70.79748189852458, 42.56008459559451], [-70.79788408017626, 42.560384670449025], [-70.797914594369118, 42.560564368564528], [-70.797636936858538, 42.560793956205671], [-70.79689384691757, 42.560814727672792], [-70.796554136367433, 42.560405828152248], [-70.796584879046904, 42.559855144791143]]], [[[-70.908841581452307, 42.415136689198668], [-70.909088909506735, 42.415024252693932], [-70.909952565630917, 42.415136177453846], [-70.910168688202745, 42.415294835542262], [-70.910138246488216, 42.415484280259136], [-70.909180567376481, 42.415824899440906], [-70.908779888457005, 42.415705174528966], [-70.908841581452307, 42.415136689198668]]], [[[-70.698793606391064, 42.638064157103763], [-70.699165631645272, 42.637995886907625], [-70.699196400089733, 42.638481605755146], [-70.698825631443867, 42.638757572743927], [-70.698298976058481, 42.638846194857216], [-70.698081596365299, 42.638777167251376], [-70.697957070131068, 42.638617048308468], [-70.698018600712373, 42.638390792178733], [-70.698793606391064, 42.638064157103763]]], [[[-70.820848316281428, 42.798330280294046], [-70.820816731371764, 42.797961556365991], [-70.821251563157858, 42.797936559500656], [-70.821966748066743, 42.79883472920725], [-70.821749296132353, 42.798946520162104], [-70.82131351814337, 42.798809568841293], [-70.820848316281428, 42.798330280294046]]], [[[-70.809699908531428, 42.748407278206358], [-70.808954952686406, 42.748563159544503], [-70.808955741217531, 42.748202540542678], [-70.808800421803056, 42.747853952246643], [-70.808955118711296, 42.747581392537242], [-70.809328225371786, 42.747629170438451], [-70.809699908531428, 42.748407278206358]]], [[[-70.698669619729387, 42.636759642730944], [-70.699072313008017, 42.636762435408237], [-70.699133681069043, 42.637238823948231], [-70.699010145996255, 42.637403433703327], [-70.698329461645386, 42.637476313715176], [-70.698669619729387, 42.636759642730944]]], [[[-70.698266547790141, 42.635982089180644], [-70.698266923876034, 42.635684378416848], [-70.698545548901095, 42.635644180035811], [-70.698762626437471, 42.635803230019526], [-70.698793091332419, 42.63607288675464], [-70.698545152198975, 42.636211876232345], [-70.698266547790141, 42.635982089180644]]]]}, "type": "Feature", "id": 3, "properties": {"COUNTY": "ESSEX", "AREA_ACRES": 329540.09999999998, "OBJECTID": 5.0, "FIPS_ID": 25009}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.221089090953285, 41.64527376276574], [-70.220509978510876, 41.64511804258548], [-70.220692125287087, 41.644792056842519], [-70.220906040553203, 41.644546208383133], [-70.220935814893693, 41.644311885136659], [-70.220600999223493, 41.64401826230872], [-70.220356184627946, 41.643264258964948], [-70.220325035118137, 41.642210917956341], [-70.220507727161319, 41.641911322011971], [-70.22047675480006, 41.641227169020404], [-70.220598503183183, 41.640973620654904], [-70.220567590591131, 41.640082364266007], [-70.220720369406976, 41.639531475034431], [-70.220994352230861, 41.63916816295022], [-70.222000760776524, 41.639148504369793], [-70.223037714555787, 41.63893954451715], [-70.223647514980186, 41.639167002828017], [-70.223861106892983, 41.639308970642524], [-70.224562332337499, 41.63949071659286], [-70.224958895462748, 41.639396114703437], [-70.225355191616416, 41.639122048203653], [-70.225963633017756, 41.637881110480826], [-70.226573780739784, 41.637451856880041], [-70.227122865468772, 41.637382547707496], [-70.226848486896301, 41.638178086898222], [-70.226818856570432, 41.639142319910334], [-70.226971838439368, 41.639392827964933], [-70.227794937772671, 41.640104393926784], [-70.228709694371901, 41.640148933047989], [-70.229319598024077, 41.640016180860187], [-70.229990984614616, 41.639603891526917], [-70.230569287772227, 41.639345256726777], [-70.231148338253746, 41.638915541514393], [-70.231483322322163, 41.637948502325855], [-70.231451958805508, 41.636697064560408], [-70.231055221982956, 41.636232866392668], [-70.230079086178876, 41.636054213170652], [-70.229439218816651, 41.636259300402955], [-70.227945389795636, 41.636419264915908], [-70.226908830018814, 41.636394155629993], [-70.226298474286821, 41.636508880439855], [-70.22565836300619, 41.636857926473247], [-70.224987775367453, 41.637567438676761], [-70.224744091124577, 41.638164587349124], [-70.224561827888337, 41.63891388077613], [-70.224257233173333, 41.638917216809389], [-70.223738261918143, 41.63866151666398], [-70.222854126646283, 41.638455199667483], [-70.221664159741721, 41.638386628574409], [-70.22166475580012, 41.638134508321755], [-70.221969336202292, 41.637608916162648], [-70.2220003150167, 41.637410084110648], [-70.221847356345535, 41.637105542150927], [-70.221511133316838, 41.636884032113052], [-70.221114347442054, 41.636167580885555], [-70.221083912168595, 41.63587071940406], [-70.222547735544978, 41.635692949003477], [-70.228065962446621, 41.634544341444851], [-70.22901114301132, 41.63412881816452], [-70.229011074818345, 41.633606555088058], [-70.229315629383436, 41.633495151890273], [-70.234131792276017, 41.632551630911514], [-70.234985933470028, 41.632281458349397], [-70.23574758212844, 41.631777844434659], [-70.23605257143906, 41.631315252522057], [-70.236631418446393, 41.631273242563331], [-70.242331884009843, 41.62986925643817], [-70.24586751582099, 41.628471019425604], [-70.247147359810953, 41.627808624328431], [-70.249465950411775, 41.626252245767873], [-70.250868536830779, 41.625390269785434], [-70.251207438194527, 41.625107560680924], [-70.253038516252872, 41.623691446766209], [-70.254715908867325, 41.621997813545072], [-70.255112490284603, 41.6217955948511], [-70.255174102290866, 41.621632568138686], [-70.256210930531466, 41.62069331544695], [-70.257035333044286, 41.61943270211723], [-70.257035931942397, 41.618567738394617], [-70.256578355127985, 41.618266756226291], [-70.255481575146106, 41.617990200566737], [-70.255420952767764, 41.617541023525952], [-70.256092543655768, 41.616578683328434], [-70.256581490854785, 41.615708888158615], [-70.257099782955265, 41.614217022359519], [-70.258992098561379, 41.611476118485399], [-70.259602210046879, 41.610856968153655], [-70.260395349471324, 41.610289966159485], [-70.265425298306099, 41.609324964201285], [-70.266034855091903, 41.60930907338372], [-70.267588702729483, 41.610903966915544], [-70.267586785344903, 41.612966508168547], [-70.267709025920297, 41.613397796770727], [-70.267983069125037, 41.613790751102769], [-70.26804296727731, 41.614961440229479], [-70.268164505008443, 41.615230100065403], [-70.268530645124358, 41.615595326879522], [-70.268743210671403, 41.616259457773133], [-70.269200325855152, 41.616767578140802], [-70.269352699995778, 41.617423672292226], [-70.269687161652769, 41.617771173334319], [-70.269717292843552, 41.618095119774729], [-70.269565175707257, 41.618736121415971], [-70.269168139197831, 41.619533219569995], [-70.269167481149452, 41.620010448857649], [-70.268863098185946, 41.620905977637413], [-70.268832206056544, 41.621320388509446], [-70.268983517858885, 41.621975931307972], [-70.269348523437344, 41.622845482335102], [-70.269774922263409, 41.623624481599705], [-70.269805910350016, 41.62396644617651], [-70.269622865133826, 41.624455208076512], [-70.269378185377604, 41.624772757984168], [-70.269222630245608, 41.625098566037458], [-70.269130864310171, 41.62573914022807], [-70.268459862958167, 41.626152290820158], [-70.268093570341051, 41.626633482226147], [-70.267056726188272, 41.626861399582637], [-70.267026566464523, 41.626402385067458], [-70.266782819616481, 41.626377770085504], [-70.266416373497023, 41.626579816163222], [-70.266173122395955, 41.627014973026242], [-70.265684224349215, 41.627380559418242], [-70.265380109595384, 41.627474054868784], [-70.264373227377916, 41.627566125856745], [-70.261903723805105, 41.627287130903383], [-70.26098967482146, 41.627270418475881], [-70.2599529686143, 41.627470719240456], [-70.259525432844541, 41.627448585908695], [-70.259312499583814, 41.627270674813388], [-70.259312270979976, 41.626991533571747], [-70.260227024624839, 41.626990258271043], [-70.260471478362746, 41.626897837083632], [-70.260654671816113, 41.62671524280487], [-70.260838345648722, 41.625596728517351], [-70.262118691735509, 41.625114352144379], [-70.264592401687565, 41.624195164539628], [-70.265110643763592, 41.624198544705614], [-70.265811806262207, 41.624362117209422], [-70.266695412354764, 41.624243934306939], [-70.267214139004835, 41.623923149444998], [-70.267489216935061, 41.623622772072139], [-70.267550310681628, 41.623217153120393], [-70.267428584215821, 41.622938945984167], [-70.26709301257192, 41.622735497610947], [-70.266422437587835, 41.622778827232558], [-70.265446772106174, 41.623122830476213], [-70.265141724722014, 41.623054234541783], [-70.264593798608914, 41.622456777201769], [-70.264166740345317, 41.622119510003294], [-70.263557340549781, 41.621909741842991], [-70.261881134200749, 41.621612897517323], [-70.260844100945107, 41.621543697929567], [-70.260234403885534, 41.621405854285747], [-70.260051667518184, 41.621218728994812], [-70.259808518521979, 41.620761890538574], [-70.259472806891424, 41.620784159954987], [-70.259442072218164, 41.621360651213301], [-70.260142108954909, 41.622298541430418], [-70.26014207125607, 41.622938489018203], [-70.259988854548936, 41.623624489392895], [-70.259957448027492, 41.624489746930301], [-70.259591396687739, 41.624763721189133], [-70.258764814507785, 41.625114877324236], [-70.258368562919713, 41.625299643775634], [-70.257910915378233, 41.625692011588477], [-70.257392273420677, 41.626580037743558], [-70.257056607066502, 41.626925831573246], [-70.257026287301827, 41.627133683604889], [-70.257788499691785, 41.626972100939632], [-70.257299514076607, 41.628229634502148], [-70.256901929665986, 41.62981007583025], [-70.256595867679678, 41.630218683548442], [-70.255864389566284, 41.630902314662642], [-70.254948639400823, 41.631722952225779], [-70.254155331315658, 41.632226976464828], [-70.253148919898251, 41.632598093232488], [-70.252813710872459, 41.632529674030849], [-70.252234782711483, 41.63204041074885], [-70.252083104650438, 41.631681988096368], [-70.252113074557826, 41.631357615512115], [-70.2528759737569, 41.6307637672857], [-70.253028645844921, 41.630239850244166], [-70.252998741546946, 41.629852869614766], [-70.252633504191238, 41.629595566387785], [-70.252176272879296, 41.629483124879805], [-70.251749408181325, 41.629505992225241], [-70.251535487809164, 41.629760811239372], [-70.251291384193877, 41.630258419503811], [-70.25110796301135, 41.63039543388421], [-70.250467693712579, 41.630627557326548], [-70.250010297205407, 41.630578677030336], [-70.249461794451491, 41.630395346159425], [-70.247515290462218, 41.630011486156697], [-70.246875163415226, 41.630027483159012], [-70.242059052273817, 41.631610859793398], [-70.241419238219777, 41.631725969312484], [-70.241450557449312, 41.633166406243596], [-70.24099467602943, 41.634333114599634], [-70.240749938370044, 41.634308973322881], [-70.240506496230793, 41.634176341588848], [-70.240048579221352, 41.634244384170124], [-70.239926899017306, 41.634425917077436], [-70.240171370534043, 41.634792768641177], [-70.240720260641552, 41.634993617237377], [-70.240783113794379, 41.636965669287051], [-70.241302790979873, 41.638310843742318], [-70.24246217903611, 41.639685604114113], [-70.243377762710949, 41.640531524872216], [-70.244140846485919, 41.64073913560987], [-70.244964183833687, 41.640739222298663], [-70.245726426378141, 41.640622741205007], [-70.246243908793275, 41.64034705818559], [-70.247219209436409, 41.639543982536232], [-70.247646145749329, 41.639386064834405], [-70.248286380104872, 41.639541148998745], [-70.248714012732776, 41.639770968394416], [-70.24945172648664, 41.640411020004791], [-70.251523516874215, 41.642523459531844], [-70.252072343492429, 41.643138908093512], [-70.253747955689249, 41.644417373560223], [-70.253900195588358, 41.644650367240637], [-70.254083158512813, 41.645062616430366], [-70.254448535737097, 41.645292902035855], [-70.255120009273256, 41.645104948199666], [-70.255516435232721, 41.645127836877791], [-70.257010201288864, 41.645570808047509], [-70.257376255829115, 41.645909054967994], [-70.257315266246081, 41.64645937245794], [-70.25700875130228, 41.647579330945277], [-70.257008311175042, 41.64796651870617], [-70.257069113811028, 41.648470263530157], [-70.256915932906836, 41.648859203367891], [-70.256580466711583, 41.649132963644206], [-70.255940364578052, 41.649428152905934], [-70.255756207237297, 41.649637743321151], [-70.255572810657668, 41.650233994167536], [-70.25542065396462, 41.650433849245545], [-70.255054606199309, 41.650600297009461], [-70.254536114911133, 41.650641893016406], [-70.253589812513141, 41.650895536290847], [-70.253223794525695, 41.651349582012848], [-70.253222977479155, 41.652241557235641], [-70.252429403224994, 41.652628511086085], [-70.252429279438147, 41.652862626340806], [-70.252672983700705, 41.652949761705358], [-70.253497142947253, 41.652841740098381], [-70.254137615913507, 41.652591500529795], [-70.254778595530638, 41.652179272333889], [-70.255022121470347, 41.65217689616329], [-70.25590655485162, 41.652500021281405], [-70.256210912105502, 41.652839307660187], [-70.256455321482775, 41.652890424660747], [-70.256608292174334, 41.652105285959252], [-70.256761366989892, 41.651833493546469], [-70.257005236920904, 41.651677410463591], [-70.257432048887239, 41.651745106257685], [-70.257859115542814, 41.652127419641474], [-70.257828066263045, 41.652316714771764], [-70.25749205937025, 41.652636124678537], [-70.257949905045464, 41.653072170481479], [-70.258163297737553, 41.653484204607039], [-70.258741776201603, 41.654126506193208], [-70.259198526127662, 41.655102803264626], [-70.259594742164225, 41.655566983779494], [-70.260051988329707, 41.655769438151516], [-70.260235461171177, 41.655514810926455], [-70.259869957421728, 41.655014499485368], [-70.259719185571285, 41.651954125551669], [-70.259750726569536, 41.650989910302854], [-70.259415643277109, 41.650507307470924], [-70.259019511514794, 41.650232310672472], [-70.257829869170195, 41.650461812450573], [-70.256640490132511, 41.650411715689586], [-70.256396800635642, 41.650324048671109], [-70.256427142267256, 41.649936647612584], [-70.256945858300526, 41.64954333059115], [-70.257495215299699, 41.649321341106493], [-70.258624092310711, 41.649227867649969], [-70.25862422671446, 41.648948730366101], [-70.258472143160688, 41.648743388765908], [-70.258503345874587, 41.647580981437009], [-70.257802346847143, 41.646661082187201], [-70.257803304075964, 41.646345935939486], [-70.258199486849364, 41.645818999390833], [-70.259084942498532, 41.645565825333428], [-70.259907970096648, 41.64544874159472], [-70.260548134130701, 41.645153531300814], [-70.262348424947461, 41.644863657317224], [-70.263599012045603, 41.644381386536658], [-70.265733559318505, 41.6442858980975], [-70.266953814464728, 41.644677865091559], [-70.268050769718769, 41.645476475167683], [-70.268995740004968, 41.645709029520717], [-70.270458970712809, 41.646440715249021], [-70.270885927562929, 41.646399768588864], [-70.271526105645862, 41.646626755560604], [-70.272899068123905, 41.646809783422398], [-70.27320343305783, 41.646995407757466], [-70.27369119459388, 41.647521306539382], [-70.273721137207318, 41.647719097100826], [-70.274170596564232, 41.647857389216433], [-70.274483875669844, 41.647954142141991], [-70.274483698611874, 41.64831431830163], [-70.274117509338737, 41.648886115851283], [-70.274026225982581, 41.649283038488569], [-70.274177475287829, 41.650236259524718], [-70.274757204421746, 41.65099554936144], [-70.274939599698001, 41.651407757202072], [-70.275153056556633, 41.651702701164311], [-70.275763130671322, 41.651542688229789], [-70.276159719364102, 41.651132752368653], [-70.277074748419821, 41.6509968143096], [-70.277196730730097, 41.650833254618867], [-70.277227500790815, 41.650517349519916], [-70.277349559825282, 41.650236642645559], [-70.27756311953587, 41.650099369665483], [-70.278142691422715, 41.650039235775715], [-70.279179686088369, 41.650198406452795], [-70.279301663212593, 41.650034754477254], [-70.27924132315178, 41.648459499537125], [-70.279058296068854, 41.64836244757668], [-70.278692285797973, 41.648411373204468], [-70.276923183119678, 41.649053105174339], [-70.276465344469642, 41.649138764616545], [-70.276068996522454, 41.648909388092953], [-70.275948200764503, 41.647793787250933], [-70.276040085227777, 41.647540400611], [-70.276345182189004, 41.647104717304195], [-70.276649877330442, 41.646488939928837], [-70.276619659025684, 41.645777803872512], [-70.27646750954608, 41.645554477271219], [-70.276010583907876, 41.645279966463974], [-70.273326490220569, 41.644841339496566], [-70.273266187842324, 41.644292497788392], [-70.273357562818759, 41.644084760332909], [-70.273907178872904, 41.64349297264306], [-70.274608964505063, 41.643404280377489], [-70.275218277722587, 41.643217249640912], [-70.276407994222239, 41.642898064655306], [-70.277658954402398, 41.642055556971677], [-70.277261917835673, 41.641870568693847], [-70.2775988991134, 41.641001931484801], [-70.277599093033203, 41.639534208638054], [-70.277173412585938, 41.637746210185583], [-70.276564353506018, 41.636014675763533], [-70.276168415618088, 41.635460602650795], [-70.27564977220166, 41.63509709153859], [-70.272448796002791, 41.633907752838525], [-70.272448846510144, 41.633673637541087], [-70.273059973610188, 41.632217010781652], [-70.273182050379845, 41.632053456675024], [-70.273425930512275, 41.632122451072647], [-70.274522749582957, 41.63292108878769], [-70.27638262536766, 41.634044167280827], [-70.277113839646617, 41.634369441801233], [-70.278638048230263, 41.634802822662358], [-70.28132134625946, 41.635124262131846], [-70.281656719080274, 41.635003505288978], [-70.282449731003481, 41.634940505540001], [-70.284248885572978, 41.635163529742691], [-70.287145261977997, 41.63530188847669], [-70.287663873747277, 41.63517010231007], [-70.288212644341371, 41.634668913296579], [-70.288609083373856, 41.634574089441223], [-70.288700428317838, 41.634960542406226], [-70.288914018477669, 41.635147408728052], [-70.290620930129975, 41.635190971417551], [-70.293731947307279, 41.634570571467826], [-70.29733006375497, 41.633593443456093], [-70.298458314226949, 41.633112381599098], [-70.299342563363794, 41.632444771824098], [-70.29970921547924, 41.631971950069378], [-70.300348985387629, 41.630893130941331], [-70.30050165710179, 41.6296121532854], [-70.300715499176576, 41.629267739545718], [-70.303214996532247, 41.628879337995073], [-70.309252687237816, 41.627756411491248], [-70.311569749732499, 41.627207709242683], [-70.312850079451508, 41.626706756280171], [-70.314404278288208, 41.625932210973346], [-70.316051492660748, 41.625382102623576], [-70.316447607722225, 41.62537722325763], [-70.318002110745525, 41.626043965060902], [-70.318733508379552, 41.626567069042707], [-70.319313478728375, 41.627551240617002], [-70.319679642838238, 41.628240456955609], [-70.320228670785426, 41.628990728767143], [-70.321173702812303, 41.629952745986948], [-70.321814096796928, 41.630800754297319], [-70.321783042886423, 41.630981600622682], [-70.321295552534082, 41.630915227326753], [-70.32010670588781, 41.63011843267666], [-70.319222020516108, 41.629867209194003], [-70.318307291561581, 41.62915707301714], [-70.318033086391182, 41.628304388223135], [-70.317789019400195, 41.628055400166431], [-70.31733205124813, 41.628105213500973], [-70.317148915764008, 41.628540020923673], [-70.317179543593468, 41.628791922235962], [-70.317789484574448, 41.629270997382918], [-70.317789054650063, 41.629541124551302], [-70.316539265465124, 41.629888836375855], [-70.315228170587389, 41.630390140927325], [-70.31413036087126, 41.630637030436198], [-70.313399064508772, 41.630735741469927], [-70.312727963956178, 41.630617260187769], [-70.312210099597678, 41.630370982922955], [-70.311843181444772, 41.629609698763204], [-70.311172922789098, 41.628626254504788], [-70.310898513775086, 41.628377474336276], [-70.310380466108384, 41.628239239341973], [-70.309801197241157, 41.628353564714878], [-70.309801090854734, 41.628578673594099], [-70.310990066806482, 41.629502270880828], [-70.311172670395891, 41.629770350635951], [-70.311142755458235, 41.630346949553882], [-70.310563472617687, 41.630984074229914], [-70.310563113386863, 41.63132623761625], [-70.310715669095785, 41.631693682371413], [-70.310715777258139, 41.631991368911038], [-70.311111690000871, 41.631941483600741], [-70.311355684535854, 41.631605829828111], [-70.311447531699315, 41.631145314762612], [-70.31178277139287, 41.630943428912467], [-70.312788711881907, 41.631166082197417], [-70.313368007446869, 41.631420291535036], [-70.31358218471965, 41.631598112615499], [-70.314069079282831, 41.632285815717161], [-70.314160927248992, 41.632627319967995], [-70.313947840052137, 41.632953757441562], [-70.312606279758583, 41.633662896404232], [-70.312636546304333, 41.634049861255974], [-70.313581779079712, 41.634714168765328], [-70.313703619518478, 41.63508236923294], [-70.31410002332035, 41.634987456499303], [-70.3154721816814, 41.6341885746928], [-70.314709995084897, 41.633503590569696], [-70.314588252017359, 41.633253079633988], [-70.314831831986623, 41.632880766341543], [-70.315746746233586, 41.632446834345792], [-70.3166003160744, 41.632266090310402], [-70.317210140845319, 41.632330965169587], [-70.317637067120302, 41.632200340563081], [-70.317942182556166, 41.631971650488516], [-70.318185694735476, 41.631374219874417], [-70.318521421892271, 41.631190328204383], [-70.320136969705572, 41.630937515465604], [-70.320899137761302, 41.631279755901332], [-70.321052448439943, 41.631485655365481], [-70.320259263213828, 41.631647339637887], [-70.320319913909287, 41.631899011250987], [-70.321906075615416, 41.63317769354564], [-70.322149623773356, 41.633274222837308], [-70.322271530816337, 41.63274143593349], [-70.322027990826555, 41.632383779898518], [-70.322027147176968, 41.631510346353679], [-70.322515056420229, 41.631188992148893], [-70.322667404489366, 41.630592949257164], [-70.323033475231938, 41.63055279846386], [-70.324070158085846, 41.631468466765128], [-70.326296287482663, 41.632991870710597], [-70.328034918409315, 41.633863511775829], [-70.329925063637589, 41.634571274950069], [-70.331846616749758, 41.635125624434913], [-70.338067115050649, 41.636331842253867], [-70.339957585676089, 41.636535106118089], [-70.34175721021164, 41.636559126780824], [-70.343738858038094, 41.636373908309999], [-70.346147914990155, 41.635922233259379], [-70.351635380797362, 41.634686840859871], [-70.353647769495637, 41.634113944309625], [-70.357457750430541, 41.632690804640482], [-70.359043003433854, 41.631915425192844], [-70.360353317916861, 41.631062532026803], [-70.364587975701497, 41.627175059053066], [-70.36489269197078, 41.626721132925915], [-70.364922682289517, 41.62623465882853], [-70.36473844920593, 41.625119614883921], [-70.364924442752894, 41.624721320272172], [-70.365592790585779, 41.625118599507353], [-70.365684350345234, 41.625369383063394], [-70.365715171709198, 41.625918954096889], [-70.365928687849419, 41.626141150003896], [-70.36614277331033, 41.626697051225307], [-70.366112257381005, 41.627085013063969], [-70.36547244344429, 41.627425835856599], [-70.365625198283055, 41.628090348108266], [-70.365076768439124, 41.628799546973866], [-70.363035715821653, 41.630426942761915], [-70.361267883253447, 41.631222519110423], [-70.360536479407926, 41.631708717637636], [-70.360018826847082, 41.632282056019825], [-70.358463609631656, 41.632732964479537], [-70.357579803973223, 41.633121447741132], [-70.356848626225698, 41.633652646970411], [-70.355568227218214, 41.634109070950736], [-70.354958804993473, 41.634548649182989], [-70.354257484159106, 41.634817926588106], [-70.352946574220098, 41.635320206227696], [-70.350995961651591, 41.636126657430857], [-70.349897920969127, 41.636923154386714], [-70.349563007766534, 41.636945068169375], [-70.348861545728226, 41.636719072494728], [-70.348099425511094, 41.636629143828642], [-70.347154461423983, 41.636721495000664], [-70.344990035744502, 41.637251043469078], [-70.34465455461671, 41.637570080346499], [-70.344867851945992, 41.637702810696155], [-70.345385947003578, 41.637633787467109], [-70.347002155731346, 41.637200512441758], [-70.347459438203003, 41.637222077109747], [-70.347642446451275, 41.637364039536706], [-70.34761197873398, 41.637769466494206], [-70.347276832346068, 41.638070505930671], [-70.345660603499198, 41.638503785083635], [-70.345294827761862, 41.63877866535271], [-70.3452953115018, 41.639057805050683], [-70.346057147737113, 41.638958568049048], [-70.347246915040174, 41.638458560010243], [-70.348191910262869, 41.638159198263395], [-70.348313285825611, 41.638004472578992], [-70.348252232132594, 41.637248660028916], [-70.34858730368633, 41.637244760376873], [-70.349349993873091, 41.637523692377087], [-70.350265011063243, 41.63749522098631], [-70.351088174808197, 41.636900251720391], [-70.352490063967451, 41.636280234164822], [-70.353861815629983, 41.635525280959172], [-70.356300430455818, 41.634568906941269], [-70.357062432154422, 41.634496701612292], [-70.357489977953932, 41.634771128927724], [-70.357611455327714, 41.634958649234527], [-70.357764717293534, 41.635893758118272], [-70.35797851370836, 41.636188006349684], [-70.358862912990162, 41.636528966221348], [-70.359320686657469, 41.636920115791128], [-70.359565284338899, 41.637628328542419], [-70.360907778801106, 41.63859453445415], [-70.361700870444039, 41.638909164745201], [-70.362799227098591, 41.639661931980463], [-70.362890996930659, 41.640029775975783], [-70.362769254288011, 41.640355505327058], [-70.362739269463958, 41.641265812605582], [-70.362099333835104, 41.641813716228903], [-70.360605577521014, 41.642299577688881], [-70.359690758934988, 41.642481748753013], [-70.359355171715677, 41.642620831181233], [-70.359355898990287, 41.643233132763172], [-70.358349063114559, 41.643209521594684], [-70.35792258387167, 41.643376320994747], [-70.357892537116044, 41.643674242596418], [-70.358959918504382, 41.643877471374289], [-70.359234173634746, 41.644081650013838], [-70.359387481725392, 41.644404012178896], [-70.359632011650547, 41.644679926258128], [-70.361400045934104, 41.644785436264407], [-70.361766206912691, 41.645060402486372], [-70.361888717133752, 41.645319872779872], [-70.362407093800556, 41.645493891110377], [-70.362925352163828, 41.645019594641695], [-70.363016367293838, 41.64455903322677], [-70.362863439070253, 41.644281791597059], [-70.362832983833002, 41.643759776560053], [-70.363198469873524, 41.643052629987245], [-70.364203278249633, 41.641878603512787], [-70.364508638488871, 41.641838882889445], [-70.36508839041899, 41.642246533688159], [-70.365210698200016, 41.642524637247227], [-70.365912628500993, 41.643299798934386], [-70.366370088509825, 41.643456353586345], [-70.366430662900569, 41.643005030782959], [-70.36633831236631, 41.642709218649927], [-70.365880767309818, 41.642137924278281], [-70.364202577043358, 41.640924138483477], [-70.363958530915298, 41.640620685890994], [-70.363989018023972, 41.640215165738155], [-70.36420140420222, 41.63991510255196], [-70.364201836683307, 41.639572942671599], [-70.363926494850546, 41.639342292410063], [-70.363530184717732, 41.639184718035885], [-70.363194861833037, 41.638864503692723], [-70.36231004856765, 41.638334483132439], [-70.360937420554066, 41.637900417822273], [-70.360632425719047, 41.637084721588707], [-70.359807939426318, 41.636391496927082], [-70.359442015112336, 41.635729430121316], [-70.359197992740661, 41.635615508228106], [-70.358526991110509, 41.635551415689157], [-70.358344294542917, 41.635256400275217], [-70.358252222330023, 41.634698828009476], [-70.358465288691548, 41.634381313876645], [-70.359348492778722, 41.633650202891495], [-70.360110454883738, 41.633262735390517], [-70.363859246322832, 41.63081335765186], [-70.364834322522611, 41.629991369267898], [-70.365900813794127, 41.629257986854682], [-70.36754670081821, 41.62857205801717], [-70.370259663000837, 41.628404378591171], [-70.370808489043057, 41.628226953939709], [-70.372118352728009, 41.626896064483894], [-70.372787436973368, 41.625933567291277], [-70.373275039223785, 41.625612535464178], [-70.3732749179172, 41.625360413616953], [-70.372970645283417, 41.625111489581521], [-70.372453921520957, 41.624388271533206], [-70.371783172414084, 41.623955081950847], [-70.369922507929402, 41.623112704566061], [-70.369434449896787, 41.622766767911351], [-70.369342879166382, 41.622515987375735], [-70.369129657225955, 41.622338282119557], [-70.368184399024869, 41.622223613435594], [-70.367696139209428, 41.622310504644012], [-70.367117395824366, 41.622587293474282], [-70.366660520138836, 41.623043039800478], [-70.366447326768181, 41.623433141828322], [-70.366265123018536, 41.62414662774863], [-70.366082280679237, 41.62437441409034], [-70.365746712244956, 41.62426130350768], [-70.364313339552382, 41.623296495563558], [-70.366445255171939, 41.621307562015282], [-70.367663423037058, 41.619662909657301], [-70.367998340511221, 41.618793997589876], [-70.368058833499205, 41.61837923117637], [-70.368637012579782, 41.617534620239674], [-70.368697870603611, 41.61714641967793], [-70.369854851084654, 41.615880938088118], [-70.370434165461603, 41.615567674252112], [-70.37049439005682, 41.61540502459124], [-70.371774305504985, 41.614560616828101], [-70.372382893153485, 41.614328042349321], [-70.372657351989702, 41.614073061733684], [-70.373023249649279, 41.613987727970375], [-70.374607874250245, 41.613347286379629], [-70.375675840627153, 41.61293798572764], [-70.375889375580883, 41.612755509728665], [-70.379151494411161, 41.611356044508447], [-70.380523805248913, 41.610925028331266], [-70.381133262584399, 41.610782999457456], [-70.384334196294347, 41.609852719271338], [-70.387047804958598, 41.608847165046782], [-70.39223000116661, 41.607523564264262], [-70.395522618920424, 41.606996807274619], [-70.399088625552992, 41.606656561557251], [-70.399941729368123, 41.606447639934572], [-70.400581790905207, 41.606376667468901], [-70.400550785251767, 41.606854764406044], [-70.400398899626197, 41.607315844245079], [-70.400032134978417, 41.607861015122907], [-70.399880349447216, 41.608232142623841], [-70.399909749392677, 41.608853091679272], [-70.400214642879021, 41.609416558350063], [-70.400184074988246, 41.609624531327412], [-70.399879003606813, 41.609790408653581], [-70.397867322283076, 41.610084896283524], [-70.397196872857236, 41.610399214672618], [-70.397104793338002, 41.610562649146843], [-70.39707401669132, 41.610977087408259], [-70.397256503743861, 41.611200003263008], [-70.397226141004509, 41.611660097253143], [-70.396463466055081, 41.612966148033102], [-70.396158459865916, 41.613996426852118], [-70.396188093029679, 41.614518422242327], [-70.39655339102697, 41.615343069418984], [-70.396980200883576, 41.615940954340942], [-70.397375883793231, 41.616827752944268], [-70.397771789935391, 41.617444423982292], [-70.397862470012583, 41.617794759235174], [-70.397344794376622, 41.617719955122375], [-70.396826968396141, 41.617284976132396], [-70.39661383427773, 41.616855204120952], [-70.396583843502953, 41.616576410695387], [-70.396217808858836, 41.616211514917225], [-70.394816037179311, 41.615805126297694], [-70.394389950569845, 41.615576415539579], [-70.393139655713611, 41.614564770959127], [-70.39249999969833, 41.614149385066789], [-70.39246992222472, 41.61389751255458], [-70.391403695584586, 41.61287476573785], [-70.390551128618284, 41.612326189191457], [-70.390490021629304, 41.611615334667782], [-70.39009456166815, 41.610764530181463], [-70.389881115470644, 41.610100630428683], [-70.389485685766246, 41.609664021112813], [-70.38911997208605, 41.609713842280215], [-70.388997446875024, 41.610399851700265], [-70.388813660243343, 41.610834132486119], [-70.388965820760859, 41.611724253200364], [-70.389240118563436, 41.612206952920637], [-70.389788207631312, 41.612821808463231], [-70.392194772392259, 41.614675411952916], [-70.392682347059079, 41.614858538192522], [-70.392621341574483, 41.615111234260546], [-70.391614331163183, 41.616231455721334], [-70.391340527880217, 41.616667203830346], [-70.391187100956842, 41.617191287197791], [-70.391217618842958, 41.617902383085493], [-70.391613502815673, 41.619140911454629], [-70.3920087057258, 41.620676123002973], [-70.392312565383762, 41.621194579750501], [-70.392708864422332, 41.621586165418762], [-70.392983141931893, 41.621727232788842], [-70.394416364271493, 41.621403521617808], [-70.395117206776931, 41.62144923473857], [-70.395452693927979, 41.621562167421366], [-70.396183536820573, 41.622435928662867], [-70.396122692704324, 41.62298576926333], [-70.395847747214134, 41.623529568453101], [-70.395207402419459, 41.624176696777667], [-70.394841351890463, 41.624352683793958], [-70.393957410207861, 41.624588282409043], [-70.393682419449647, 41.624924977714116], [-70.39358715477664, 41.62509738291385], [-70.393586542551631, 41.625736680882788], [-70.393739366892163, 41.625969488217905], [-70.394226204524756, 41.626422728177133], [-70.396329751882135, 41.628027383417162], [-70.3968171403978, 41.628624685492056], [-70.397060680301195, 41.629423386788524], [-70.397730763885789, 41.630361198185547], [-70.397272600719162, 41.630727100739684], [-70.397180805641469, 41.630935019440479], [-70.397211496664951, 41.631159793755678], [-70.397943445190606, 41.631691390665722], [-70.398583096482099, 41.632007696823337], [-70.399192119201999, 41.632576902905207], [-70.399680170270116, 41.632832126443709], [-70.399985569590399, 41.632765298744474], [-70.400016422249934, 41.632080642311969], [-70.399741996068343, 41.631093189470533], [-70.399986783623504, 41.630774736116578], [-70.400595485454971, 41.631208957547919], [-70.401966889523564, 41.63296615859398], [-70.4019665598735, 41.633426003208207], [-70.401722917117397, 41.6336357903525], [-70.401478772818891, 41.633630009925909], [-70.401204413667401, 41.633335890350338], [-70.40071647658057, 41.633359896991102], [-70.400411448130598, 41.633516772972825], [-70.400381455423187, 41.633886198256896], [-70.400776943615483, 41.634178699730306], [-70.402057596577592, 41.634478671091514], [-70.402362933427852, 41.634366815008775], [-70.402423744011585, 41.633816430913591], [-70.402942122358382, 41.633774161879714], [-70.403368360674833, 41.634065870444374], [-70.403734292612697, 41.635124609609299], [-70.403703528912388, 41.635322947088468], [-70.403429520473907, 41.635623658316192], [-70.402057523089269, 41.635532169846222], [-70.401661027821177, 41.635185637620239], [-70.401081333295821, 41.635372997367931], [-70.40095949682491, 41.635806905998507], [-70.40092865110195, 41.636771145261037], [-70.401080150942988, 41.637426589845461], [-70.402239279480725, 41.637817587568414], [-70.402543499830713, 41.637750741412198], [-70.402665898778153, 41.637542573583623], [-70.40272754882875, 41.636334345613953], [-70.402910815389347, 41.636125144215143], [-70.4032157985867, 41.636013282368637], [-70.404435514798251, 41.636124629544653], [-70.405197096935439, 41.636376161411057], [-70.405807087783231, 41.636810366489442], [-70.405807054662205, 41.637296596414075], [-70.405409660562725, 41.638004107866259], [-70.40504375141461, 41.637909371338843], [-70.404677701588497, 41.637661650026317], [-70.404282031618791, 41.637657837515384], [-70.404373298468371, 41.637935597991479], [-70.404800318700367, 41.63834490408982], [-70.404768941681098, 41.638642282845971], [-70.404555822887474, 41.63887037871919], [-70.40364077653642, 41.639097380551839], [-70.403458315903649, 41.639217178586243], [-70.403365860097182, 41.639443104359195], [-70.403426709495989, 41.63985671696426], [-70.403640223268951, 41.640313491462734], [-70.404036570099024, 41.64042590402164], [-70.404738407876593, 41.640362883861172], [-70.405164708662824, 41.6407451686838], [-70.405926737800186, 41.642005807204512], [-70.406079248175459, 41.642346105010745], [-70.406017721526666, 41.642806351024767], [-70.405345900960683, 41.643814575785797], [-70.404797007257756, 41.644982635982878], [-70.404155637143589, 41.645738487691908], [-70.403820387214836, 41.645715536978337], [-70.402295466836236, 41.645274834334522], [-70.401960115104544, 41.645341919809638], [-70.401380242835728, 41.64605161789931], [-70.400953974506635, 41.646281609691201], [-70.400983287919402, 41.646713557705773], [-70.401136227668559, 41.646874231247885], [-70.401868192386829, 41.646675914940872], [-70.40238637811116, 41.646993816289999], [-70.402661414293107, 41.646972249289057], [-70.402722635472273, 41.646377477903641], [-70.402844082491669, 41.646141747496095], [-70.40391152869536, 41.646281433245278], [-70.404948776656838, 41.646214890592013], [-70.405131647877511, 41.646401779198037], [-70.405070084522194, 41.646582982512321], [-70.404216625731877, 41.646782399673725], [-70.404033382363124, 41.646946672355661], [-70.404094275180796, 41.647288340810576], [-70.404155100327827, 41.647521867120481], [-70.404581505188304, 41.647858593108815], [-70.404886348184377, 41.648683708682555], [-70.404855654023919, 41.649053128179638], [-70.405465723309916, 41.649307249399115], [-70.405922834478943, 41.649211430800932], [-70.406320095417726, 41.647567472184797], [-70.405923371699458, 41.647383030324235], [-70.405893257239001, 41.647059127584953], [-70.405985142471422, 41.64685966679135], [-70.406687011118109, 41.646581072208427], [-70.40665643005579, 41.646284267820562], [-70.406229757568767, 41.645892981206273], [-70.406230035901004, 41.645595843212604], [-70.406809116360748, 41.644633993998987], [-70.407267673482693, 41.644367103266497], [-70.407907275322557, 41.644935474103484], [-70.408608988071421, 41.645206126275056], [-70.409523818236849, 41.645411376168965], [-70.409584456221182, 41.645023063760263], [-70.409676030750674, 41.644869158686838], [-70.411109431640668, 41.644842375083705], [-70.411505588790263, 41.644756665768597], [-70.411871501736201, 41.644571708900415], [-70.412146580392701, 41.644207957811027], [-70.412939854690677, 41.642559302202599], [-70.413062025930373, 41.642080453380444], [-70.41397757793186, 41.640699755638153], [-70.41400771598542, 41.640204179312079], [-70.413795129643105, 41.63999955292838], [-70.412910442433088, 41.639677119470356], [-70.411782251175907, 41.639628059009929], [-70.411477265726589, 41.639739943832495], [-70.411232954479019, 41.639968293649353], [-70.411171677566912, 41.641184992273409], [-70.410744812706838, 41.641982822851027], [-70.410743788983126, 41.642324974804737], [-70.41050059286583, 41.642994632265285], [-70.409798431490145, 41.643561383307457], [-70.409249879856503, 41.643721530751982], [-70.408701070039101, 41.64379109024766], [-70.408304257687021, 41.643697238535232], [-70.408060533863562, 41.643537954013858], [-70.40781639294147, 41.643009400218141], [-70.407420202034984, 41.642464798233746], [-70.406749877057308, 41.641869656440214], [-70.406627380760654, 41.641592137759993], [-70.406597449783163, 41.640997568611162], [-70.406384643580438, 41.640631479625029], [-70.4055004890932, 41.639669060318148], [-70.405440275333206, 41.639463093400849], [-70.405531021027997, 41.639308643406309], [-70.406476547947562, 41.639053736215217], [-70.406416422507192, 41.638027842509985], [-70.4071484128024, 41.636766990898344], [-70.407483741353531, 41.636564736415743], [-70.408977841645907, 41.636402420318753], [-70.41120466150555, 41.635924571546276], [-70.41187555205876, 41.635511216079472], [-70.412241902976618, 41.635029032256107], [-70.412515657528772, 41.634458170139865], [-70.412607515574166, 41.633862516886531], [-70.412486251947556, 41.632855131719928], [-70.411784890034724, 41.632260352467135], [-70.410839997900382, 41.631758861083753], [-70.410321560046555, 41.631368960974257], [-70.410169891717075, 41.63102876692308], [-70.410231105071162, 41.630253276734734], [-70.410566422505184, 41.630204175891166], [-70.41300588642531, 41.630597242163056], [-70.413370920692586, 41.630430731592405], [-70.413584516983477, 41.630022539253837], [-70.413646402980405, 41.628787837134446], [-70.413737857464483, 41.628462307105117], [-70.415323054927214, 41.627713792893637], [-70.416146491935365, 41.627207864378121], [-70.417092064840332, 41.626844910506328], [-70.417915304393063, 41.626753703186772], [-70.418890686146369, 41.626912634257053], [-70.419408957226764, 41.626915310988181], [-70.42187804080946, 41.626272440983882], [-70.422549209372832, 41.626039111609593], [-70.42355549076575, 41.625495424534279], [-70.424043694957092, 41.62510160897795], [-70.424504252610788, 41.624474500107816], [-70.424625942851463, 41.623995635432628], [-70.424443048329906, 41.623403587346978], [-70.424199605600862, 41.62283005466599], [-70.424413035177437, 41.62264748752942], [-70.42572387045729, 41.622099910181284], [-70.428162534668999, 41.621961485939465], [-70.429687310019474, 41.621734990485528], [-70.431943533427827, 41.621094402284463], [-70.432521953068175, 41.620790270525951], [-70.432887492783735, 41.620407061321778], [-70.432918104426619, 41.619830537875849], [-70.432430188096887, 41.61909778452133], [-70.432156837339718, 41.617408004375783], [-70.432308816755551, 41.617000910286848], [-70.432979793803867, 41.616605352664507], [-70.433131404949762, 41.616306304815289], [-70.433375428743332, 41.616149850603762], [-70.434198596776781, 41.615923462816006], [-70.43447312637592, 41.615649697159235], [-70.434686261942772, 41.614710213295595], [-70.434655674231436, 41.613332820580808], [-70.434320818394482, 41.612877849195762], [-70.433527644334077, 41.61232898489547], [-70.432644021628619, 41.611916670027199], [-70.429870113013749, 41.611276045867065], [-70.429504572620871, 41.611001305792549], [-70.429504617910183, 41.610776200416595], [-70.429900644716895, 41.61059084120307], [-70.430937118036638, 41.610289949919249], [-70.432735527560979, 41.610321529995332], [-70.43368090842948, 41.609949345310206], [-70.434320693299938, 41.609491088818864], [-70.434502910930277, 41.609218708744841], [-70.435052179945117, 41.608878365071881], [-70.436453628303823, 41.607410834818765], [-70.436971582450568, 41.606404416859448], [-70.437337345923353, 41.604967702776271], [-70.438953173732145, 41.603136936460267], [-70.439623181674392, 41.602723413939628], [-70.440293655085853, 41.601940628931999], [-70.44102468786383, 41.59874311373752], [-70.441451164319645, 41.59741329313109], [-70.441786649802836, 41.596913892842615], [-70.442304046082015, 41.596889446657443], [-70.442608822772428, 41.597137648187491], [-70.442609120937689, 41.597344747887703], [-70.441877303661926, 41.598236645920672], [-70.441695099607657, 41.598671653474007], [-70.44154237778325, 41.599790175282486], [-70.441847323913407, 41.600660211224572], [-70.442060637353549, 41.600774750144645], [-70.442396429274936, 41.600823977575367], [-70.442640073511527, 41.600758173150538], [-70.442913858287127, 41.600385334782956], [-70.443157659733927, 41.598878316529607], [-70.443645759297112, 41.598151262994904], [-70.443980380676308, 41.597390726157712], [-70.443980363916552, 41.596526321617546], [-70.444528479352684, 41.594834661135444], [-70.44468042146903, 41.594625554042928], [-70.444893567661197, 41.592587539568761], [-70.445289390964092, 41.591807848449129], [-70.446843580573827, 41.590365295059634], [-70.447818746365456, 41.589821652235713], [-70.448184487564191, 41.589709154742515], [-70.449006533969538, 41.589022898283112], [-70.449341542899802, 41.588955584054474], [-70.450194680625998, 41.588836871562911], [-70.452480121347079, 41.587763416572265], [-70.452997378086621, 41.587603317881623], [-70.453546570566886, 41.587668525966805], [-70.454155601467633, 41.588057442941896], [-70.454673542445789, 41.588744277773124], [-70.455039741885017, 41.589433046116802], [-70.455436054283382, 41.590643793250308], [-70.45522288807804, 41.59160141025535], [-70.454766418244816, 41.59284141178545], [-70.4545839174299, 41.594329387255065], [-70.454370709126735, 41.594854711182023], [-70.453913861355247, 41.595373920053362], [-70.453030581431435, 41.595357860719709], [-70.452756697911596, 41.59563167558489], [-70.452665107750406, 41.595885199815569], [-70.453061515144256, 41.596429645384951], [-70.452909224585056, 41.596800835875662], [-70.452483033139302, 41.59721164103567], [-70.452421920695514, 41.597464365798878], [-70.452391244038566, 41.598239524795382], [-70.452543850752122, 41.598831877429603], [-70.45275677191475, 41.599198510162083], [-70.452696562820066, 41.600613235349037], [-70.45321492783502, 41.601029954001575], [-70.453306115498975, 41.601344320261141], [-70.453854911791296, 41.601778694317026], [-70.454129277914362, 41.601829122257264], [-70.454372924207405, 41.601762662477292], [-70.454343024418222, 41.60152944870724], [-70.454189962252926, 41.600963566844975], [-70.454708370216849, 41.600092678786218], [-70.45467757487522, 41.59984081818137], [-70.454403189886193, 41.599402760552451], [-70.454342089729749, 41.59901609824248], [-70.454616386915077, 41.598607220304416], [-70.454616131098405, 41.59837310878698], [-70.454280556864632, 41.598215328797814], [-70.453396610242905, 41.59801017833167], [-70.453274720820218, 41.597849771239545], [-70.453549177543891, 41.59766609237434], [-70.454311211470511, 41.597278543928496], [-70.454279667350391, 41.596521900911107], [-70.455041337125905, 41.595971818614871], [-70.456413405458335, 41.596864589159409], [-70.457693556350577, 41.597415420759447], [-70.458302688525066, 41.597525185377854], [-70.45866857295367, 41.597457045880347], [-70.459216611574675, 41.596883007529222], [-70.459978970448958, 41.596494884201562], [-70.460892287739753, 41.596338913903288], [-70.461898133223045, 41.596335142138187], [-70.462264066704194, 41.596492726617626], [-70.463026524730509, 41.597185716772088], [-70.462812623124833, 41.597683496861201], [-70.462264969013077, 41.598005978805801], [-70.461045650184104, 41.598508075140998], [-70.46064950148542, 41.598918104751334], [-70.46071096052205, 41.599565798094957], [-70.460894092916007, 41.599878747817733], [-70.461473255628391, 41.600321826345692], [-70.462113410020208, 41.601457700790753], [-70.462083538351692, 41.601872160899092], [-70.461687278094345, 41.602354767016323], [-70.461535278913914, 41.602761988175587], [-70.461505662838292, 41.603500601351392], [-70.461170208006791, 41.604027701922483], [-70.461017884840288, 41.604957072517628], [-70.460530661842327, 41.606215454444964], [-70.460165043856321, 41.606589205092668], [-70.459616765971901, 41.606604986603102], [-70.458672230979985, 41.606473068025323], [-70.457605302855555, 41.606586013557305], [-70.457178567253038, 41.60672616555901], [-70.456904548131632, 41.606954878458744], [-70.456813144580735, 41.607226416379604], [-70.456752568004333, 41.60786632877975], [-70.456234324862507, 41.608305567056753], [-70.456173311479731, 41.608486261148222], [-70.45614302773744, 41.609585575546241], [-70.456052053899256, 41.609992179604092], [-70.455778288702291, 41.610292475661076], [-70.455381670121525, 41.610540948279073], [-70.453857550370145, 41.610632097821252], [-70.453187593959541, 41.610793677078206], [-70.452821255629829, 41.611023871133682], [-70.452517519680896, 41.611622102527399], [-70.452700918279817, 41.614411673673338], [-70.452578405995567, 41.614683461822182], [-70.452090904710175, 41.614617649667466], [-70.451694259834539, 41.614704033676027], [-70.451267987578106, 41.615141307101212], [-70.45078084222466, 41.615895415251103], [-70.450577220222854, 41.616312771109449], [-70.451451581551567, 41.616517312595548], [-70.453098096083124, 41.617270835015141], [-70.453463441629879, 41.617338309482754], [-70.453737950832405, 41.617244581826995], [-70.454073485501908, 41.61697025060063], [-70.454255727924192, 41.616031528876825], [-70.454468903149461, 41.615740313332452], [-70.454804597389995, 41.615529010911629], [-70.455505283407902, 41.615259113480015], [-70.456693512829489, 41.614640273762824], [-70.456724202858709, 41.613883662715345], [-70.457242300507048, 41.613588487611608], [-70.458369517625172, 41.613375970331603], [-70.458644179392081, 41.613219743340807], [-70.4584918720697, 41.612374834782962], [-70.458764906896917, 41.611956930758744], [-70.458795329652958, 41.611119279201212], [-70.458856505769802, 41.610884019821832], [-70.459222410116553, 41.610546292477913], [-70.459648241012673, 41.609946370471064], [-70.459648405032738, 41.60899138729723], [-70.46043989894217, 41.608206801582028], [-70.460684351098166, 41.608113953196991], [-70.46120194700012, 41.60763867224324], [-70.46144549023748, 41.606950907091161], [-70.462725316469616, 41.606241180467833], [-70.463091140973575, 41.605831406870664], [-70.463059868311959, 41.604940247369647], [-70.46284604861323, 41.604483584560427], [-70.462693401833334, 41.603494611868172], [-70.462815841606087, 41.603267743431417], [-70.463332746261571, 41.602928050044014], [-70.465252691989647, 41.60221909152402], [-70.465770427067753, 41.601663294380558], [-70.465770512676656, 41.601212455644905], [-70.465556515098825, 41.60077380475893], [-70.46558711911193, 41.600431384319123], [-70.466135826224274, 41.59994736084311], [-70.466562134273076, 41.599175708539292], [-70.466653168058812, 41.59871570235692], [-70.466317273210791, 41.598026078163947], [-70.466317039035147, 41.597386779004815], [-70.466530072868125, 41.596888984684405], [-70.467139687374257, 41.596790979736696], [-70.468846468932171, 41.597111453498833], [-70.46954712535188, 41.597363714031282], [-70.471163063673856, 41.598576543259675], [-70.471498456176903, 41.599032039482871], [-70.471681123252836, 41.599533964812878], [-70.471865280761492, 41.601026362512322], [-70.472078710267382, 41.601645079507691], [-70.471865834559722, 41.601873300379751], [-70.471012422651299, 41.602217368821599], [-70.470921333431534, 41.602398878542644], [-70.471012683479003, 41.602992270725927], [-70.47140947251259, 41.603473084452858], [-70.472812537917264, 41.604319742634154], [-70.473117384736639, 41.604595504393906], [-70.473666000382934, 41.605732105065137], [-70.473910794308551, 41.607539652610832], [-70.473850195301353, 41.608206584892763], [-70.473576624315569, 41.60868754849119], [-70.473577726033881, 41.609254821456886], [-70.474308325338058, 41.609938981811915], [-70.474431214312276, 41.610198960621801], [-70.474461773888649, 41.610702839830751], [-70.475072467701295, 41.612298215800777], [-70.47565162390903, 41.6128222576817], [-70.475651957311541, 41.613011348305776], [-70.475957105489371, 41.613556599557739], [-70.476627680270923, 41.613827182166141], [-70.476932958776018, 41.614102306740534], [-70.477450689977843, 41.614222309376679], [-70.477725507125314, 41.613948443605786], [-70.477785897484083, 41.613758188423198], [-70.476779992164765, 41.613095794096495], [-70.475986931944817, 41.612322216244486], [-70.475559937223935, 41.611661603818291], [-70.475559124605965, 41.610400472106981], [-70.475375963653761, 41.61001551350973], [-70.474460654479714, 41.609207596860344], [-70.474338982497244, 41.608939164902168], [-70.474703905222796, 41.6080426707436], [-70.474794798813591, 41.606996755614034], [-70.474672408437002, 41.606241551897924], [-70.474611091594554, 41.605575770314509], [-70.474275234926367, 41.604868703189176], [-70.474275106299956, 41.604427497513456], [-70.474152807757093, 41.604086485976005], [-70.472902740754535, 41.602787597089531], [-70.473054633978279, 41.601642108101501], [-70.472901905366598, 41.60115729354591], [-70.472566134306362, 41.60052225518772], [-70.472504328580357, 41.599649461822068], [-70.472290718851781, 41.598526510127989], [-70.471802405738572, 41.597658772023806], [-70.471009692384243, 41.597065784171321], [-70.469089335774868, 41.596018568932635], [-70.466254434402032, 41.594325327552831], [-70.465919552534871, 41.594005422960244], [-70.465888703618788, 41.59324933100541], [-70.466132648934149, 41.592975842970432], [-70.468661450904747, 41.592564914502972], [-70.469361147705527, 41.592150858657355], [-70.469939656849363, 41.591440903128969], [-70.470153197055552, 41.59091609475837], [-70.471158635442535, 41.590551530783486], [-70.472042098015166, 41.590522340488654], [-70.473322293211865, 41.590793956953867], [-70.473595669155316, 41.590664695962786], [-70.473748114277001, 41.590230541217004], [-70.473686934393641, 41.589744843696423], [-70.473504673361873, 41.589540062922936], [-70.473290084404923, 41.588830755960316], [-70.473290182508819, 41.588308514762076], [-70.473441897442498, 41.58805434730133], [-70.473990842263191, 41.587687343840066], [-70.474355418092827, 41.587276984127087], [-70.474477454298736, 41.586861102593154], [-70.475086614318897, 41.586177780973237], [-70.47511595407012, 41.584412057560407], [-70.474993963166199, 41.584233754832958], [-70.474445286557241, 41.58406951908173], [-70.47380553340362, 41.584095796636731], [-70.473257586701322, 41.584282724470476], [-70.472830849511624, 41.584531613930764], [-70.472435111583621, 41.585419448326597], [-70.472008976625048, 41.585839329535311], [-70.471673360393126, 41.585924623046303], [-70.471399997605019, 41.585792758272028], [-70.471003322052454, 41.585266923737741], [-70.470424221990029, 41.585174966644828], [-70.470119704860878, 41.585422072343881], [-70.469997602442746, 41.585765915398817], [-70.470303631036742, 41.587662448016125], [-70.47048689363109, 41.587759193009454], [-70.471157075753382, 41.587804612490295], [-70.471218475638281, 41.588857576666364], [-70.469237640409546, 41.588810898750033], [-70.468171669255341, 41.588950961847843], [-70.467287515632265, 41.588763925184978], [-70.466648055810452, 41.588330412004368], [-70.466617111017442, 41.587691373839881], [-70.466403429268595, 41.587324760574781], [-70.466068348890786, 41.587257061474446], [-70.465763983499272, 41.587441127844187], [-70.465794519601488, 41.587755921954184], [-70.466404390063246, 41.588468930798129], [-70.466770063802329, 41.58917566377314], [-70.466739824390629, 41.589563108845333], [-70.466130804935588, 41.589814187548981], [-70.465978246107085, 41.590185392255307], [-70.465978939611006, 41.591167394582527], [-70.465582475131896, 41.591208266247193], [-70.465247667733763, 41.591122468975712], [-70.464485821604981, 41.590439133603937], [-70.464485333191064, 41.589772189150665], [-70.464850294394211, 41.589038342425667], [-70.464941960214801, 41.588442650372308], [-70.463569624182895, 41.587162799875607], [-70.463539255587335, 41.586793891436784], [-70.463843711403726, 41.586411739736604], [-70.464392414468236, 41.586269884932868], [-70.46469696602388, 41.58597777373609], [-70.465366745859058, 41.585861148606021], [-70.465579652702971, 41.58569596978262], [-70.465610652499691, 41.58538056537833], [-70.466036680991138, 41.584969711032002], [-70.46594550553634, 41.584719015078385], [-70.465335760596815, 41.584483226302808], [-70.465092531703675, 41.585062951163003], [-70.464605527548272, 41.585402383373463], [-70.464270075062601, 41.585469648204743], [-70.464056764448557, 41.585355691169262], [-70.463507665945286, 41.584803678327333], [-70.462197660945009, 41.58402807328514], [-70.461953560390953, 41.583409596417155], [-70.461100002131133, 41.582177764159638], [-70.461039495752189, 41.581908255663585], [-70.461282497610938, 41.58158065447914], [-70.461282311275042, 41.581355548288002], [-70.460459724951534, 41.581032876973588], [-70.459576332423353, 41.579729356490773], [-70.459088013339269, 41.579338783105371], [-70.4588746423575, 41.578972157915437], [-70.458813429412857, 41.578496085505861], [-70.458631294410594, 41.578155678204197], [-70.458264798636918, 41.577899569997207], [-70.457747215652333, 41.577879064712825], [-70.457442613382298, 41.57799053260905], [-70.456772659857492, 41.578629892293037], [-70.455280535902801, 41.579982025222662], [-70.454610198497733, 41.580737793296713], [-70.453513974288896, 41.582111554721777], [-70.452448216804427, 41.583232839304181], [-70.452082893103082, 41.583850219483736], [-70.451991076616508, 41.584418888175861], [-70.45229609952203, 41.584973208979363], [-70.452234677513729, 41.585289500312626], [-70.451321691547648, 41.586048684326457], [-70.45104760215861, 41.586439547250926], [-70.450895246643583, 41.587298581987568], [-70.450621286480953, 41.587417608495016], [-70.450255055318848, 41.587187949414229], [-70.450041828278444, 41.586938363352161], [-70.450041756622397, 41.586299064236663], [-70.450406973685602, 41.585492691311856], [-70.452052027460283, 41.583076113753904], [-70.454000767197954, 41.580421538365343], [-70.457503230568278, 41.576800824695532], [-70.457625374174796, 41.576457535507416], [-70.458873273358847, 41.574423948621046], [-70.461278962848439, 41.571817291825909], [-70.462161929840136, 41.571085309385282], [-70.465267602824625, 41.567830540797964], [-70.468981207037913, 41.564513589968875], [-70.470016187821543, 41.563941671860981], [-70.470686312658742, 41.563437931271366], [-70.474126097774189, 41.560439693847528], [-70.475435207706795, 41.559188678113379], [-70.476257161230436, 41.558502770406598], [-70.477870689819298, 41.55749137123459], [-70.480001875465007, 41.556391767599337], [-70.483624446066131, 41.555156374859969], [-70.485572640871013, 41.554239075094983], [-70.486333386003011, 41.553986369283557], [-70.487826440385604, 41.553967093275475], [-70.489287581481733, 41.553713945960588], [-70.490444531624817, 41.553320672703883], [-70.492392833799613, 41.552295208547946], [-70.493245248353929, 41.552041109339783], [-70.494219137553188, 41.551974285553548], [-70.497082330074264, 41.552315386895678], [-70.499487298340796, 41.551896481826908], [-70.501678639798982, 41.551654109923462], [-70.506612141878136, 41.551202153017705], [-70.51471359272287, 41.550032426416053], [-70.517485198312514, 41.549554464700563], [-70.522327710705284, 41.548959225260624], [-70.524703308723375, 41.548387096504079], [-70.526744026369727, 41.547567226523093], [-70.526957314710984, 41.547681605932247], [-70.52720041147623, 41.548074737188948], [-70.527260924247486, 41.54892056067073], [-70.527382462406592, 41.549378559784813], [-70.527352461061838, 41.549973113713513], [-70.527108411352557, 41.550336859456166], [-70.526041644522138, 41.551368768167599], [-70.525584127958481, 41.551573107662236], [-70.524792065872575, 41.551682730621096], [-70.523148704148966, 41.551226862735867], [-70.522052132734004, 41.551088574476246], [-70.520255768632751, 41.551085423777529], [-70.519158978243397, 41.551181212512837], [-70.518245645354355, 41.551382124395268], [-70.517453403029918, 41.551752904029826], [-70.516387385987315, 41.552505602533543], [-70.515746774859394, 41.553171398177938], [-70.515503229809241, 41.553192967627375], [-70.515777013758168, 41.553855972889778], [-70.515745776713388, 41.554820313101395], [-70.515502389927107, 41.555346024470332], [-70.515318608929704, 41.556212787964689], [-70.515255147577122, 41.55861012391977], [-70.514981916942205, 41.558892554422812], [-70.514555339053075, 41.559051467764611], [-70.513184874857558, 41.559277095334537], [-70.511844293003875, 41.559942997926179], [-70.510930362731202, 41.560126379092438], [-70.510351969481064, 41.560007617872969], [-70.510015978852849, 41.560075011474638], [-70.509589101693066, 41.560810257766178], [-70.508064828051531, 41.561992251472631], [-70.507516085459997, 41.562729127028071], [-70.506906843914209, 41.563052451415665], [-70.5065720167742, 41.563669727339793], [-70.506540930161165, 41.564012152557247], [-70.505870857430281, 41.564236974676938], [-70.505870176870786, 41.564813863335829], [-70.504619292737317, 41.56625311208029], [-70.504253874090949, 41.566429451182266], [-70.503370498673888, 41.566521828549895], [-70.503218290570075, 41.566911092073333], [-70.503491652398495, 41.567304000237868], [-70.503430960718163, 41.567575302488201], [-70.503064359374861, 41.567850042444249], [-70.502547017827254, 41.567964804842845], [-70.501663199466279, 41.568030242885008], [-70.501359001844222, 41.56816992388822], [-70.500992712648085, 41.568669853697934], [-70.500901581545449, 41.569085493395022], [-70.501570760424627, 41.569706990874337], [-70.501539953532799, 41.570437225627956], [-70.501051686855391, 41.570938784622932], [-70.500990532964323, 41.571354147835123], [-70.500686090319164, 41.571439259966624], [-70.500228505901418, 41.571418395287061], [-70.499467709036026, 41.571211894016429], [-70.499147203359257, 41.57105879108591], [-70.498664276931024, 41.570910468261374], [-70.498093416905377, 41.570558234293131], [-70.497995276289544, 41.570370532595916], [-70.498000839419646, 41.570014918118019], [-70.498051367177482, 41.569659160074679], [-70.498259891249901, 41.56930533591364], [-70.498697131757069, 41.568808831525246], [-70.498720243798203, 41.568020632827618], [-70.49950889594146, 41.567400715108533], [-70.499783399122336, 41.567174067696286], [-70.50006134602333, 41.566719014987072], [-70.5001023044005, 41.566253411483039], [-70.500059776416805, 41.566074575041185], [-70.499727037755662, 41.565715981452037], [-70.499493236104655, 41.565501784473383], [-70.498228187030449, 41.56484683669008], [-70.497656469060772, 41.564629654599393], [-70.497104680498467, 41.56454878820508], [-70.49670896467606, 41.564553756880422], [-70.496393576908517, 41.56455097018479], [-70.496133268738561, 41.564590898926944], [-70.495860216128989, 41.564732551243488], [-70.494887138569354, 41.566317046453513], [-70.494172880042356, 41.567946685763935], [-70.494055458649527, 41.568980042006238], [-70.494005447960873, 41.569301497245007], [-70.494688870551158, 41.569637820658045], [-70.495026244463816, 41.569700503890232], [-70.49522128299057, 41.568778134221354], [-70.495562906590081, 41.568569558646885], [-70.495900152948394, 41.568640071800743], [-70.496460160382796, 41.568933153972061], [-70.496593248046111, 41.569790353663073], [-70.496272253359137, 41.570143721211707], [-70.496197436299028, 41.570541493319489], [-70.496307122973221, 41.570787825577455], [-70.496739027702361, 41.571291911677143], [-70.497072609351605, 41.571651061636871], [-70.497441835613671, 41.571832153177589], [-70.497782374130594, 41.571716483996262], [-70.498024591848946, 41.571370791093678], [-70.498698275123601, 41.57158886977561], [-70.499056427942747, 41.571803623931125], [-70.498918275236989, 41.571989242246815], [-70.498079071404618, 41.572218831466721], [-70.497424602342647, 41.572213056334348], [-70.496884642951628, 41.572115366063521], [-70.496284946478085, 41.572202990838306], [-70.496106702448444, 41.572023583713722], [-70.495941267164284, 41.571776758456885], [-70.495601357140714, 41.571875049710791], [-70.495436666389381, 41.572314796272188], [-70.496364456912005, 41.572890799380268], [-70.496327981693128, 41.573068308896687], [-70.495658437638198, 41.573273987835044], [-70.495652852749345, 41.573630142389639], [-70.496179345874879, 41.573914465345993], [-70.497508591002074, 41.574078735279024], [-70.49742472567327, 41.574357663698905], [-70.497093279972574, 41.574634496336543], [-70.496435471215008, 41.574840283600011], [-70.496700597690165, 41.575207293572966], [-70.497014621391969, 41.575354133189549], [-70.497492006314204, 41.575138286363625], [-70.498530649967748, 41.575791244781605], [-70.498868156574545, 41.575870755201329], [-70.499684082037817, 41.575691107796139], [-70.499541411523055, 41.575443948206207], [-70.498430207184455, 41.575044726248379], [-70.498161570809387, 41.574855521223846], [-70.498167002438976, 41.574508279409628], [-70.498861243903747, 41.574149732943042], [-70.499463867596987, 41.574121277415429], [-70.499739298966688, 41.573568328008875], [-70.500013854471547, 41.573339969466396], [-70.500378625497078, 41.573154633699559], [-70.501111367104514, 41.573001256678261], [-70.501536977500891, 41.572743338682216], [-70.501781734071429, 41.57201057263098], [-70.503336122351442, 41.570873314592014], [-70.504036988966774, 41.570161383018871], [-70.504007275699649, 41.569612500619847], [-70.5045860355321, 41.569334484611645], [-70.504982847395866, 41.569067837765402], [-70.505409333255955, 41.568557797634263], [-70.505105776094439, 41.567714873349182], [-70.505075435702011, 41.567283039762884], [-70.505259049894008, 41.56689350867466], [-70.507209984966664, 41.564742295488067], [-70.50760686376556, 41.564151491818372], [-70.507850707343053, 41.563571685611919], [-70.508246845448951, 41.563205976536061], [-70.511446398469062, 41.561380734728637], [-70.512146923415102, 41.561308044596345], [-70.51263379535844, 41.561563223652918], [-70.512664800145586, 41.561815068371267], [-70.512450935234142, 41.561907752052186], [-70.512329104443452, 41.562593797068239], [-70.510896348520561, 41.56444130883304], [-70.510194757913951, 41.565108254518329], [-70.509615312934173, 41.566070516078135], [-70.509889724231414, 41.56615736745357], [-70.510438143196723, 41.565798560741911], [-70.511230866701368, 41.564905683147124], [-70.512815781219643, 41.563461343631744], [-70.513181331547102, 41.562915809756078], [-70.516108647744517, 41.559463368873551], [-70.516717659022021, 41.55897791953835], [-70.517265994575325, 41.558961866712188], [-70.517296740107724, 41.559231715993484], [-70.51659562697867, 41.560195840052202], [-70.515618036569222, 41.561838995349873], [-70.515161422735545, 41.562367449912429], [-70.514673947151167, 41.563031236977899], [-70.514399295648289, 41.563692907248594], [-70.514185956385163, 41.56399269355046], [-70.514032915168258, 41.56447191485212], [-70.514032643747342, 41.565291827678109], [-70.514396718876682, 41.56678237846365], [-70.515035352384345, 41.568134034552159], [-70.515104567339648, 41.568724404619708], [-70.516070552452106, 41.56991285711873], [-70.516374789319684, 41.570674719604355], [-70.517257432149535, 41.571906289845323], [-70.517866191307874, 41.572546975973395], [-70.517835367880906, 41.572727331794553], [-70.517316908379385, 41.572914184859741], [-70.517073800471223, 41.573097746188978], [-70.516341305144735, 41.57414326602489], [-70.515701113811829, 41.57467400538971], [-70.515579506378913, 41.575197981723633], [-70.514511914804515, 41.576392485088988], [-70.513902488575511, 41.576643813542724], [-70.513810902424282, 41.576797799274324], [-70.513932034087233, 41.577372863442889], [-70.513870348298894, 41.577851167148744], [-70.514510870638986, 41.578283881531618], [-70.514966894288278, 41.578214723506996], [-70.515302213088063, 41.577877094979272], [-70.51591266923252, 41.577535726683834], [-70.516187015288679, 41.577216836403977], [-70.516431726636398, 41.575727603411046], [-70.516705970569944, 41.575336587877459], [-70.517559151088918, 41.574514511227235], [-70.517590306949828, 41.574289137526236], [-70.517194948962285, 41.573852889377051], [-70.51740780695151, 41.573507532215544], [-70.517804335914022, 41.573304407416238], [-70.518292303646902, 41.573252980599825], [-70.519327416853045, 41.573482523334555], [-70.519905757477176, 41.574060357008626], [-70.5199662140096, 41.57471709851351], [-70.519691365732101, 41.575243088184237], [-70.518928650267526, 41.576892720020346], [-70.518837688836328, 41.577515469156467], [-70.519019351382809, 41.578674607315648], [-70.519414727891871, 41.579182881864334], [-70.520206611289495, 41.579821083530263], [-70.52066390993528, 41.579959008215653], [-70.521242332526384, 41.579798497928728], [-70.522095468979984, 41.579733272451577], [-70.523619143656433, 41.579938256822558], [-70.525081403034179, 41.579963781954113], [-70.525995935565732, 41.579780289932003], [-70.52691011177933, 41.579272639704364], [-70.527154094719791, 41.578999564026887], [-70.527245552121968, 41.578133702056157], [-70.527886414139573, 41.575413736038911], [-70.528099930558923, 41.574879278723841], [-70.528709866627537, 41.574312735458562], [-70.528800801996169, 41.574104167626516], [-70.529166982037765, 41.574018337521764], [-70.529715507414963, 41.573578492065472], [-70.530111960700779, 41.573005615561065], [-70.531331564844692, 41.571179187106686], [-70.53236745779202, 41.570516581457397], [-70.533372837111713, 41.569467160951888], [-70.53416533166903, 41.569024328462881], [-70.534439142425384, 41.569074468355424], [-70.534011996150554, 41.571980870225197], [-70.533432350326876, 41.573150973458148], [-70.531816454695715, 41.575343215429761], [-70.531542148152752, 41.575887245786802], [-70.531054973207091, 41.576488076581825], [-70.530199760817041, 41.579481395015975], [-70.530260134108744, 41.579849998147772], [-70.53074842650426, 41.579708389186614], [-70.531083745304599, 41.579460845772573], [-70.531266530700009, 41.578404422830495], [-70.531541071032009, 41.577742711404014], [-70.532669137969066, 41.576097190266992], [-70.532820997058266, 41.57554590186848], [-70.533461862811862, 41.574294114757251], [-70.534985868435925, 41.572003735375667], [-70.535230202077472, 41.570811687899884], [-70.535595890223547, 41.570239071754649], [-70.535840436561131, 41.569398094603777], [-70.535932331004233, 41.568550238778535], [-70.536206902098357, 41.567952176371691], [-70.535810695480265, 41.567470966141364], [-70.535658751920749, 41.567130942057112], [-70.535597280645334, 41.56676233270349], [-70.535720030116011, 41.566102744587184], [-70.535963841303271, 41.565532514234341], [-70.536481736880575, 41.564777684114709], [-70.537365150006977, 41.564135260295451], [-70.537426126206356, 41.563611829036972], [-70.537670573280735, 41.563356743843123], [-70.539742322659208, 41.560455245296126], [-70.5425454478478, 41.557364040928604], [-70.542941545998502, 41.55665605737105], [-70.543185566928784, 41.556490457749874], [-70.543733657843376, 41.556312111764292], [-70.544281647542775, 41.556268913583928], [-70.544616958343923, 41.556516556235302], [-70.544799266689793, 41.55700034857378], [-70.544829945741242, 41.557684376618582], [-70.544068054755655, 41.55823567829183], [-70.543885153158456, 41.5586431937244], [-70.544189572705676, 41.558648007464853], [-70.544707473987032, 41.558388996298319], [-70.545011935417676, 41.558366795950633], [-70.545286194624751, 41.558714138274972], [-70.54528569330482, 41.55932695185836], [-70.545011602183905, 41.559925129396724], [-70.545010879966313, 41.561051173848249], [-70.544737052126592, 41.56125317340102], [-70.544736294700527, 41.562027518146941], [-70.544523617624648, 41.562300893734033], [-70.544218739247427, 41.562944371187726], [-70.544127272587033, 41.563450080832354], [-70.543700573305784, 41.564230384103332], [-70.544035057024047, 41.564937769746955], [-70.543852540949203, 41.565093264488524], [-70.543730873092542, 41.565437186560366], [-70.543334105705767, 41.565938073774802], [-70.543274053893484, 41.566145832396003], [-70.542695509776848, 41.566928184433216], [-70.542481410860162, 41.567615822457626], [-70.540561305512512, 41.570560252232646], [-70.540286807379005, 41.571203436271269], [-70.540286940716442, 41.571770695038673], [-70.54056143409791, 41.571704312887483], [-70.541597618193464, 41.570014710031479], [-70.542755686530001, 41.569143156366309], [-70.543516646188976, 41.569097253668289], [-70.543820919767285, 41.56937218930122], [-70.543851496111429, 41.570335883818991], [-70.543455342540767, 41.571773201830609], [-70.543454953594576, 41.572602114700665], [-70.543789772545807, 41.572759714174687], [-70.544795354464512, 41.57141306073958], [-70.54455178319165, 41.569101464411787], [-70.544187289353175, 41.568322335485803], [-70.544156748407147, 41.567404202314307], [-70.545131961163676, 41.565120866561379], [-70.546503355735027, 41.564156616541645], [-70.546807427301914, 41.563864285458699], [-70.546808209473099, 41.562603180723706], [-70.54653384865918, 41.562075759566198], [-70.546534020844575, 41.561435931040521], [-70.546716865226912, 41.561136369612505], [-70.546777669258887, 41.560748083828621], [-70.547052763336112, 41.560266963581043], [-70.547722612822895, 41.559834714362054], [-70.547874942099455, 41.559490505157555], [-70.547296290780892, 41.558804673478008], [-70.547296162225393, 41.558506997765257], [-70.547753387618627, 41.558167597350412], [-70.548270737047943, 41.557710475522143], [-70.548149834475126, 41.557432586747225], [-70.547479867208537, 41.557342510630583], [-70.547540163488549, 41.557116833937123], [-70.548058127564261, 41.556262908585914], [-70.548119306229196, 41.555856617212498], [-70.548850218302746, 41.553883465801853], [-70.548850916451926, 41.55343272780582], [-70.548393654440716, 41.552970228872852], [-70.548363540334933, 41.552673472237231], [-70.548728819908547, 41.5522184056722], [-70.548881161930098, 41.551694113952671], [-70.548089235982403, 41.551047017526464], [-70.548119692412172, 41.550659017067254], [-70.549064287873065, 41.550411936704307], [-70.549308339818253, 41.550273877009957], [-70.550495556344529, 41.549879168348149], [-70.551470741288, 41.549839507660629], [-70.551744365170023, 41.549727531523764], [-70.553449577912957, 41.549406988751009], [-70.553936678559708, 41.549148219943689], [-70.554850298379918, 41.549064077483294], [-70.555245849953039, 41.548941312568601], [-70.556221385173799, 41.548901073895024], [-70.556465075725185, 41.548834938487651], [-70.55783518125898, 41.548762488227396], [-70.558626672597683, 41.548652540787081], [-70.559692138801339, 41.548331640985097], [-70.560301246130678, 41.548332722094287], [-70.560879447001412, 41.548234499625636], [-70.561489340943169, 41.54809997972179], [-70.563011154068334, 41.548331527603629], [-70.565812940152583, 41.548194162795127], [-70.568005591764674, 41.547966281947694], [-70.570045608701491, 41.547848488907825], [-70.570167425064682, 41.548233869524076], [-70.569954259064332, 41.548444259021757], [-70.568127470656336, 41.549063525801202], [-70.567084629892634, 41.550022357333965], [-70.568401597451114, 41.549582427680441], [-70.568858013320678, 41.549566993008277], [-70.569253934457222, 41.550291733934614], [-70.569193369838118, 41.551003638059981], [-70.569041108934414, 41.551302945024176], [-70.569010549348505, 41.551780989733182], [-70.569315536404233, 41.55208287475066], [-70.570167706571127, 41.552468026607386], [-70.57013709687746, 41.552900510655817], [-70.569924609088744, 41.55303833314327], [-70.569132767835242, 41.553013295973727], [-70.569041536216574, 41.553203884135804], [-70.569133414418388, 41.554643574868031], [-70.569284723052149, 41.555029198195328], [-70.569255239190852, 41.555903520201568], [-70.569133254185843, 41.556634639846926], [-70.56873838119985, 41.560585262205493], [-70.568585547048045, 41.561326303049569], [-70.567976384130958, 41.562235216803138], [-70.567916064091236, 41.56310982592364], [-70.56767171650678, 41.563473564939301], [-70.567642017131718, 41.564023198610897], [-70.567306804785943, 41.564550514911772], [-70.56718444753902, 41.565164577100468], [-70.566545315472325, 41.565830758264489], [-70.566088136031468, 41.567017156139407], [-70.566210438333769, 41.567312504452069], [-70.566118790642605, 41.568277976205799], [-70.565875669836743, 41.56850621063294], [-70.565570466103495, 41.569168289619803], [-70.565175071676748, 41.569560674265666], [-70.565082956395528, 41.570039382250741], [-70.56508332912955, 41.570679213844116], [-70.565204899195749, 41.571361731802263], [-70.564991648951761, 41.571752193361277], [-70.564961584051559, 41.572374306532787], [-70.564809287262321, 41.572646596042361], [-70.564809412617137, 41.573015763348948], [-70.564991962076334, 41.573373466886487], [-70.564778300027982, 41.574358192769687], [-70.565174297976938, 41.574362082891767], [-70.566332940270158, 41.573787969725288], [-70.566332864359367, 41.573283201537045], [-70.566119379418609, 41.572916782274042], [-70.566119635042995, 41.572619650414246], [-70.566454144756307, 41.5722099243551], [-70.566363111359266, 41.571364505318002], [-70.566789450252784, 41.570313363718377], [-70.566850196953695, 41.569970628128303], [-70.567398270807089, 41.569080306555918], [-70.56764138137342, 41.568572492836829], [-70.567702675016264, 41.567499802672529], [-70.567915598079907, 41.566767179469153], [-70.568068149592946, 41.566557916527778], [-70.568342360409602, 41.565716036055157], [-70.569255960783323, 41.564253615104917], [-70.569468375595903, 41.563719074293118], [-70.57041312965778, 41.562328392202787], [-70.570656502288884, 41.561666875463104], [-70.570625577804392, 41.560955842481206], [-70.570412696600627, 41.560499395418276], [-70.57041236118053, 41.55987811304545], [-70.570656400607263, 41.559145199737586], [-70.570656242061887, 41.558280179386408], [-70.570930517720669, 41.557519960639155], [-70.571295194688688, 41.555650101131832], [-70.571691437881398, 41.554437794421787], [-70.571691230261862, 41.553500741467381], [-70.571112815463891, 41.553247859535475], [-70.571081592921288, 41.552995490696659], [-70.571417233670715, 41.552630780768631], [-70.572452362286668, 41.552517686688361], [-70.572878013014417, 41.552376557978029], [-70.573061068222103, 41.552076957141644], [-70.573091522641462, 41.551761523832944], [-70.572909352993321, 41.55130416161014], [-70.572908701617692, 41.550934990321743], [-70.573365509411147, 41.550064246198332], [-70.573639065726255, 41.549357409715952], [-70.573456081524526, 41.548666476971626], [-70.573273675048881, 41.548308788182098], [-70.572755899096691, 41.548009678242664], [-70.57211669145083, 41.547918917694098], [-70.571963735495558, 41.548209758899404], [-70.570989908049526, 41.547844424154796], [-70.570990373925795, 41.547250160697338], [-70.573030338879008, 41.547158785737132], [-70.573943110904239, 41.546930418432808], [-70.574400531179919, 41.546221748382791], [-70.575192251520633, 41.546174716140946], [-70.576379762921874, 41.545950818029389], [-70.577354261634554, 41.545487199871431], [-70.577992983826391, 41.545352285853774], [-70.578236375604462, 41.54519606118609], [-70.578815286057861, 41.545052823445133], [-70.579271747365553, 41.544848262735705], [-70.579880629424522, 41.544804217055258], [-70.580002419672297, 41.545036517788006], [-70.580124259111813, 41.54567454076463], [-70.580154919864924, 41.546043414524718], [-70.5806124267299, 41.546451131469496], [-70.579607514768654, 41.546996737867126], [-70.579211212905832, 41.547317669960073], [-70.57899856228407, 41.547644592628636], [-70.578997988377523, 41.548184830399826], [-70.579333059640334, 41.548739045400126], [-70.579759618251273, 41.549399798153004], [-70.580065026061362, 41.550818788576954], [-70.57994359689684, 41.552054689667287], [-70.579973354695227, 41.552486584477421], [-70.580125823052768, 41.552745515403778], [-70.579852397078156, 41.553839541902725], [-70.579883155376294, 41.554460529487883], [-70.580248928509207, 41.555049925986545], [-70.580401193756998, 41.55584963751523], [-70.580522740832137, 41.555991895188448], [-70.581041236949517, 41.556038861660014], [-70.581041742675552, 41.556471599901613], [-70.580128112911652, 41.559006223073247], [-70.579306553117689, 41.560359715694403], [-70.578940942056292, 41.560724746126482], [-70.578757757057289, 41.561141948221056], [-70.578636313269229, 41.562467438645619], [-70.578180355486055, 41.564086086913626], [-70.577449672514717, 41.565573744637341], [-70.576810269156979, 41.566582044245457], [-70.576536128589865, 41.566811129451999], [-70.576048867607241, 41.567493725023269], [-70.575653705068092, 41.568706055784993], [-70.575257364110797, 41.570314554084703], [-70.574892571392496, 41.571364516874823], [-70.574130965593127, 41.573014425963464], [-70.573431009466177, 41.574933964096736], [-70.573217347376868, 41.576026753475318], [-70.573308860234903, 41.576331927093676], [-70.573613818677117, 41.576255629190122], [-70.575136885994894, 41.573883678287963], [-70.575745278884185, 41.572388916451217], [-70.576568185811496, 41.571756322422338], [-70.57717688419514, 41.570702663894949], [-70.57723803499789, 41.569945200108862], [-70.577115861760362, 41.569370739726665], [-70.577115657775025, 41.568685890309148], [-70.577694028634795, 41.56791227908856], [-70.578790270176384, 41.566717425494417], [-70.578637706785116, 41.566304793127287], [-70.578302600589012, 41.566030331956966], [-70.579155351479926, 41.565090654319441], [-70.580190181392027, 41.564410231078327], [-70.58326697587944, 41.563926380970862], [-70.583419102399219, 41.564086350064443], [-70.583419109547592, 41.564320455119713], [-70.58317572627746, 41.564522161907163], [-70.583175474824529, 41.564774272961202], [-70.583937073292049, 41.565457432345859], [-70.583997978977123, 41.565708866139914], [-70.583907231042147, 41.567493815023667], [-70.58466899528996, 41.567933231248986], [-70.584942900963867, 41.568407069673547], [-70.585247682613343, 41.568708909090184], [-70.585765951333158, 41.56872883920223], [-70.585705921167033, 41.568180190453845], [-70.585399944704932, 41.566761301863558], [-70.585399122117863, 41.566004415934003], [-70.58552049288123, 41.565480908180533], [-70.585521113620601, 41.565093109341547], [-70.584880894527089, 41.564615240413055], [-70.58451577429588, 41.564476696913935], [-70.584271360593206, 41.564272675793077], [-70.584240923533926, 41.563885887038445], [-70.583693034884774, 41.563425053272361], [-70.583570769155941, 41.563147192530977], [-70.583692543510921, 41.56259613758175], [-70.584057316324632, 41.561978341884526], [-70.585153710731959, 41.56101753493936], [-70.585915085372733, 41.560034392684166], [-70.585884840504505, 41.55918831019671], [-70.585793437230706, 41.558982192350406], [-70.584817874541642, 41.557932657616689], [-70.584848566308168, 41.557571573016141], [-70.585335388798654, 41.557159688983504], [-70.585518348756395, 41.556788035352305], [-70.58542668721941, 41.556356814234], [-70.584268670101494, 41.554841556465632], [-70.58417778437483, 41.554365230303162], [-70.585060166690312, 41.554137158483201], [-70.585304251034927, 41.55390835156706], [-70.585363917760944, 41.553330953276074], [-70.584845811720072, 41.552284561679194], [-70.584724216878683, 41.551826626821935], [-70.584876145156215, 41.549951050479486], [-70.584479859311926, 41.549290021259168], [-70.583870397779762, 41.548667698612242], [-70.583840290006279, 41.548442985079433], [-70.584540193990861, 41.548162752447546], [-70.584723156048767, 41.547890144728441], [-70.584753521259842, 41.546997819639614], [-70.584266026354285, 41.546220712352849], [-70.583961498430071, 41.546017915961393], [-70.583383077486175, 41.546152269879876], [-70.580855340745529, 41.545601136210621], [-70.580793657324591, 41.544395176463865], [-70.581251599100128, 41.544370790656373], [-70.586184415201572, 41.54546461371276], [-70.586793709965875, 41.545492566519592], [-70.588772440943899, 41.545285075200511], [-70.590263750659901, 41.545210416028297], [-70.590782262787613, 41.545284350860953], [-70.593492056969694, 41.545255867146125], [-70.5938884622025, 41.545141979254382], [-70.595258054331566, 41.544961026048057], [-70.596262622622874, 41.544640380478334], [-70.597297780423631, 41.544112876664379], [-70.597510890673774, 41.543839408118018], [-70.598789233369359, 41.543173091012576], [-70.601376683018984, 41.542119332036577], [-70.602198904157447, 41.541891732960671], [-70.603660236706816, 41.541871225820081], [-70.607161873442664, 41.542759241443889], [-70.6071924375603, 41.543146113901265], [-70.605639670444432, 41.54344732176321], [-70.604726930266779, 41.544225727709275], [-70.602170194038905, 41.546053610944234], [-70.602109870832876, 41.546424009234585], [-70.602262774396735, 41.547196142043553], [-70.601928305972748, 41.547705645252819], [-70.601380463748853, 41.548866160019216], [-70.601106467457186, 41.549122316336664], [-70.600711358242876, 41.550244689403989], [-70.600650901164101, 41.550948234606835], [-70.600894571056259, 41.551521379195187], [-70.601534647299843, 41.551521313562709], [-70.601686565660543, 41.551321095745315], [-70.601686310784615, 41.550834876890207], [-70.602081597197738, 41.549621921309317], [-70.602993939722523, 41.548186239764931], [-70.604758570503236, 41.545684086505695], [-70.605671818549538, 41.544707596127154], [-70.606797560304727, 41.543746276422873], [-70.607376127781436, 41.543647820972801], [-70.607894096095961, 41.543838725415334], [-70.608167521336966, 41.543835291127408], [-70.608380030999953, 41.542507698800428], [-70.608623032136464, 41.542459544724551], [-70.60923248153064, 41.542802518664175], [-70.609933369092332, 41.543008354877514], [-70.611089767546872, 41.542983650086249], [-70.613373710312629, 41.542438219562655], [-70.616022386678196, 41.542112760398638], [-70.616508779496897, 41.541952223667373], [-70.61678329105878, 41.541660649247632], [-70.617148220662671, 41.541564984010463], [-70.6175441894557, 41.541721670774372], [-70.617848335427595, 41.541636245555459], [-70.618974979957784, 41.541629237451417], [-70.620588739834034, 41.541381804252921], [-70.622719347571461, 41.541171478042962], [-70.624485489019662, 41.540786145515831], [-70.625776144961335, 41.540395414342811], [-70.626902802801851, 41.539893108860426], [-70.627664343516457, 41.53977398789079], [-70.628791281193912, 41.539460749448928], [-70.629492011920007, 41.539432900181176], [-70.629765920864443, 41.539365849625383], [-70.629948634430392, 41.539210220655256], [-70.630740365393422, 41.539090770297996], [-70.630862673515409, 41.538908835906469], [-70.631623829179631, 41.538816697518357], [-70.632598365827036, 41.538586713011703], [-70.632780584963072, 41.538458087715185], [-70.633602883411129, 41.538248270998693], [-70.633694025297274, 41.538039624074088], [-70.63469970070993, 41.537836240956068], [-70.63476098090311, 41.537655548032859], [-70.636557572572457, 41.53697195944153], [-70.639116495658229, 41.535665559304427], [-70.640395219658174, 41.534890193706758], [-70.641187397161843, 41.534320566029642], [-70.641553203721273, 41.534180349990137], [-70.641766088572581, 41.533862318850751], [-70.643624631009459, 41.532349102647203], [-70.645543374696032, 41.530520000921605], [-70.647432404578765, 41.527934851797127], [-70.647950836086153, 41.527522311600251], [-70.648437868557664, 41.526974474127748], [-70.648468302465673, 41.526794083033572], [-70.648955439768429, 41.526309812161387], [-70.64904783059967, 41.526038135363684], [-70.649382167618995, 41.525673189992055], [-70.64947395502314, 41.525356488335902], [-70.650083056399552, 41.524600216747906], [-70.650448761471253, 41.523820150729897], [-70.651271609786406, 41.522952923327786], [-70.651698175094452, 41.522352307232325], [-70.651850822240448, 41.521989328162228], [-70.653799886643441, 41.519700576311585], [-70.654104533320094, 41.519020798103824], [-70.654075004433409, 41.51737285494788], [-70.653831681054356, 41.516547719875909], [-70.654197404350015, 41.515677603290136], [-70.654531657723552, 41.515312642864757], [-70.654989696262902, 41.515062773374574], [-70.655506949153292, 41.514991801001983], [-70.65587146206434, 41.515193770407237], [-70.656510478923124, 41.51540111076779], [-70.657210518429878, 41.515769261010199], [-70.658275404951624, 41.516753552472785], [-70.658701647368176, 41.516936161592362], [-70.660071547004847, 41.517420726737456], [-70.661562763350602, 41.517552766789471], [-70.662201454944821, 41.517696504573287], [-70.663022928494073, 41.518035711924099], [-70.663874834389063, 41.518788688497629], [-70.664727161804933, 41.51929018159435], [-70.664696594935933, 41.520118949419029], [-70.664909076404996, 41.521539173999898], [-70.664664887103271, 41.522515384821979], [-70.664818196590829, 41.522675252586858], [-70.665335432205652, 41.522811865772944], [-70.666247851273823, 41.522861881203227], [-70.667009385394223, 41.522841631720325], [-70.667252725559521, 41.522721234002951], [-70.6672832029208, 41.522450258990958], [-70.667192067781315, 41.521857041086335], [-70.667100223799522, 41.521696547189201], [-70.667040506127847, 41.520760239774425], [-70.667131139454696, 41.52052509179444], [-70.667405830600799, 41.520277788291587], [-70.668166508512741, 41.519933383260017], [-70.668228223887638, 41.519590515480942], [-70.667831752302931, 41.518929241118634], [-70.667588408975945, 41.51823919553852], [-70.667588974957155, 41.517761991027577], [-70.667740785574239, 41.517372603713945], [-70.66789303677389, 41.517235239627553], [-70.668137207230941, 41.517141407902777], [-70.668441317918507, 41.517164435778881], [-70.669293377748204, 41.518926443442233], [-70.670540746344031, 41.520529263485521], [-70.670510108669504, 41.521304458430279], [-70.670449345797934, 41.521602314677686], [-70.670539991970443, 41.522087478723684], [-70.671087729525865, 41.5227009568572], [-70.671057192134171, 41.523088983490695], [-70.670935386525215, 41.523271053742356], [-70.670996397701401, 41.523620942121561], [-70.671422652224379, 41.523957200380565], [-70.67300452694478, 41.524393633392272], [-70.674405080955978, 41.52503968753237], [-70.674801405054637, 41.525376255434622], [-70.674831661993508, 41.525790116035999], [-70.674800874183433, 41.526087562182802], [-70.674557134192412, 41.526406599920193], [-70.674588151368525, 41.526640387266099], [-70.675013965849033, 41.526957990445261], [-70.675865915624797, 41.527233757327977], [-70.67702246715541, 41.527414934511498], [-70.677662426950519, 41.527442082711502], [-70.678940890734836, 41.527666261865789], [-70.67988393557529, 41.527913394566646], [-70.680766756018812, 41.528035740496087], [-70.681375744192536, 41.528171231500636], [-70.681589323217693, 41.52841983941105], [-70.681893421358126, 41.528532869988879], [-70.68219847606845, 41.528627358551255], [-70.683172368589908, 41.528486886990741], [-70.683598204368479, 41.528327339831677], [-70.684176399692618, 41.527823315738402], [-70.684481175845889, 41.52744058827345], [-70.684481115372833, 41.526503639690446], [-70.684359246907391, 41.526109382849619], [-70.684085114109138, 41.525788943799782], [-70.684084968726253, 41.525329742718803], [-70.684998850624297, 41.524919877345759], [-70.68472426008492, 41.52464499639246], [-70.683081168672146, 41.524831268169123], [-70.68286818248599, 41.524762205545443], [-70.682928806860829, 41.524301731169288], [-70.683598496487761, 41.523544548373927], [-70.683751667574924, 41.52295706368497], [-70.683476963679169, 41.52265453677515], [-70.682503301513051, 41.521966651023945], [-70.682351249491276, 41.521761256668889], [-70.68213821339765, 41.521142953157586], [-70.682198846356258, 41.520710121313535], [-70.682472835990694, 41.520597835542326], [-70.682746899835806, 41.520620608485409], [-70.683355329811278, 41.520945167653096], [-70.684055124144507, 41.521556344952209], [-70.684603245400993, 41.521791504766568], [-70.68566891291843, 41.521604491612514], [-70.686003372951504, 41.521626609522031], [-70.686490945453031, 41.521790465037824], [-70.686947077431412, 41.522081318802087], [-70.687099677103632, 41.522358111886028], [-70.687159346432068, 41.523500956428158], [-70.687555703329608, 41.524189172650999], [-70.687129708540539, 41.525951430830297], [-70.687160246035702, 41.528626443708674], [-70.686825702644313, 41.52949571699201], [-70.685851003403386, 41.5296991515795], [-70.685485819041446, 41.529885073761207], [-70.684846392525571, 41.530821933665095], [-70.684328747204063, 41.531208265017987], [-70.684054303973866, 41.532058783839346], [-70.683780319690101, 41.532261113079365], [-70.683171789035157, 41.532377748466018], [-70.682746304305596, 41.532357218264572], [-70.682045076720158, 41.532169297695518], [-70.681192924459708, 41.531461387874337], [-70.680980014981728, 41.53112220481097], [-70.68097969031831, 41.530735033616331], [-70.680827382751872, 41.53052963543837], [-70.680310252506189, 41.530086960745074], [-70.679458287291112, 41.529658250761933], [-70.678940512874817, 41.529332616133082], [-70.678422744605626, 41.528763873072279], [-70.677692538147738, 41.528513228226764], [-70.676748787392597, 41.528554197972284], [-70.676262034335593, 41.528669428348032], [-70.675987240993848, 41.528691564294327], [-70.673552334773404, 41.52947467132666], [-70.67330862990292, 41.529612997847302], [-70.673247119998948, 41.53043361862251], [-70.672668804695775, 41.530910575193452], [-70.672364717255519, 41.531437339376637], [-70.672029600257261, 41.531694298834473], [-70.671420581046405, 41.531847423758592], [-70.670446329388881, 41.531870741246479], [-70.670111280165798, 41.53201064441599], [-70.669837407077239, 41.532311984456427], [-70.668893281672823, 41.532839099333785], [-70.668679898084349, 41.533067677495396], [-70.668679570619034, 41.533517872093903], [-70.669166442982672, 41.534321706834696], [-70.66925785588991, 41.534554227309613], [-70.669258365983367, 41.535356121915839], [-70.66898351934708, 41.536017610316641], [-70.668374014206634, 41.537017086167332], [-70.667338989918704, 41.538049994596285], [-70.667156579244704, 41.53851235954393], [-70.667064558067608, 41.539396321795479], [-70.666668221165608, 41.539951117397408], [-70.66548134683697, 41.540067823849853], [-70.664963489800655, 41.539922203773969], [-70.664415591425822, 41.539488864216843], [-70.664415391166372, 41.539191732533027], [-70.664719972467708, 41.53878204348532], [-70.664781896409295, 41.53770877863839], [-70.66462923792929, 41.537431864525516], [-70.664385378923029, 41.537183001497716], [-70.664172835710744, 41.537087525624415], [-70.663533047992402, 41.53717789483386], [-70.661919387195653, 41.537750709524964], [-70.659513968094942, 41.538073365104282], [-70.657047680767363, 41.538001594989808], [-70.656408254904335, 41.538190430131472], [-70.65558604751115, 41.538572027519997], [-70.655373323460438, 41.538800045863503], [-70.655403194678755, 41.539006818834707], [-70.655889899692241, 41.539440917887639], [-70.656011948109906, 41.53967367714764], [-70.656011999630493, 41.540042839669404], [-70.655646558084968, 41.540291692747381], [-70.655281217574341, 41.540359926076107], [-70.654641464047927, 41.54010809543982], [-70.654062367460071, 41.539809982634736], [-70.653545288377757, 41.539970450609189], [-70.653575043554923, 41.540267262814503], [-70.653697206835432, 41.540518033164254], [-70.653635886730513, 41.54099595627342], [-70.652661357871992, 41.542325144325417], [-70.652629681578659, 41.543424561389728], [-70.652538369388211, 41.543813301046647], [-70.652629734716228, 41.544036830997982], [-70.653086349826651, 41.544318820610435], [-70.654700352257393, 41.544565492186756], [-70.655157064068874, 41.544495689516445], [-70.655400497007051, 41.544294371487837], [-70.655430638809435, 41.543744273919209], [-70.655157389146623, 41.543216589892914], [-70.655218225226463, 41.542783772223039], [-70.655583797756606, 41.542553469513408], [-70.658020890178918, 41.541914281578833], [-70.658295236328911, 41.541757666285541], [-70.658843010612102, 41.541596233570971], [-70.659451577713028, 41.541569227153637], [-70.661278181272195, 41.541821881386674], [-70.661583646606559, 41.542034109790009], [-70.661583338090523, 41.54225920624436], [-70.659815932598164, 41.54260008540399], [-70.659085406717693, 41.543015611486453], [-70.658659329941457, 41.543382157037186], [-70.657897884023129, 41.544726564438484], [-70.657135272216848, 41.545665149892244], [-70.656830796765121, 41.546516013848596], [-70.656464648637098, 41.547080003049579], [-70.655885503268109, 41.547881012614027], [-70.654819895828751, 41.54893213074439], [-70.654301511902815, 41.549921587472028], [-70.65448298523583, 41.552891363851025], [-70.654604159926123, 41.553673359529206], [-70.654633765336101, 41.554636463317976], [-70.654907639669617, 41.556047081047915], [-70.655242377147374, 41.556915662555831], [-70.655362942589747, 41.557490561776973], [-70.655179455685939, 41.560096383050997], [-70.654570630990179, 41.560465516469975], [-70.6544180254335, 41.560737830536922], [-70.654416890661537, 41.562413189021299], [-70.654264821002684, 41.563234748537106], [-70.654080443549347, 41.564768550481574], [-70.653897254032827, 41.565158858168992], [-70.653562736952424, 41.56552381717713], [-70.652952881575686, 41.565775883216141], [-70.650546111180248, 41.565999933749247], [-70.649967541378174, 41.566206027533219], [-70.649480100818707, 41.566681839408069], [-70.649175181064038, 41.567442641700971], [-70.648930697248375, 41.568472934675491], [-70.648778070068488, 41.569862363402436], [-70.648381745475604, 41.57075978922169], [-70.647894023026964, 41.570919823372471], [-70.646370641716643, 41.571166708203293], [-70.645273328007676, 41.571605863189419], [-70.643475034047995, 41.57201046079382], [-70.642744309562971, 41.572380863923179], [-70.642103840444292, 41.573137944575556], [-70.641707165300545, 41.57399932923105], [-70.641248953203714, 41.576149526983279], [-70.640884102414176, 41.576334681053673], [-70.640395881128171, 41.576080586786524], [-70.639848140696813, 41.57617827531552], [-70.638841974880876, 41.576517304841531], [-70.638446086451083, 41.576450734690575], [-70.637867556814257, 41.576225207412605], [-70.636771160169801, 41.575331068842495], [-70.63591814619123, 41.575010073882233], [-70.635644407391652, 41.574689430253933], [-70.635888771354004, 41.574325547779303], [-70.634884437743779, 41.573313328606595], [-70.634366167026357, 41.573041511472375], [-70.633970166427972, 41.573064964510493], [-70.633847906935017, 41.573318935048157], [-70.633877604236304, 41.574110971642824], [-70.634121548761186, 41.57463902435979], [-70.634456080903774, 41.575003444148862], [-70.635126056661591, 41.575372578509423], [-70.635278563082053, 41.575622519665856], [-70.636070054327163, 41.575971233944223], [-70.636679115655284, 41.576404094072338], [-70.6380500235, 41.576726853308138], [-70.638445662511117, 41.576927942393546], [-70.639085392448948, 41.576865262961697], [-70.639512267639887, 41.576633853834664], [-70.640029897875934, 41.576653530885856], [-70.640943972056476, 41.577315486865409], [-70.641400242866496, 41.578164770166453], [-70.641977445117803, 41.58020114866418], [-70.641975159770396, 41.583110586079741], [-70.641944769711387, 41.583588647779578], [-70.641425665431626, 41.584685461922511], [-70.640938111660731, 41.585467373196245], [-70.640967622695186, 41.586673589158394], [-70.640844876851048, 41.587017603361943], [-70.640235860402271, 41.587134549776259], [-70.639656408393449, 41.587773407182553], [-70.639656102933927, 41.588278167962905], [-70.640753816061263, 41.58828035269751], [-70.640997342982288, 41.58814146208158], [-70.641210885843421, 41.587868455151231], [-70.641941666663669, 41.587704612295113], [-70.642124605003048, 41.587593984359557], [-70.641850675616425, 41.587084361359565], [-70.642126481782938, 41.585215868187966], [-70.642248599263354, 41.585025455779302], [-70.642248388206539, 41.584754704612877], [-70.642370634234879, 41.584527736910132], [-70.642644373013468, 41.584209081499274], [-70.642918822390499, 41.58411489992546], [-70.643558824358067, 41.584825998454228], [-70.643893927820272, 41.58535300577951], [-70.64453247718501, 41.58681195781061], [-70.645141324432018, 41.587730984381949], [-70.645415283709369, 41.588483166278209], [-70.646114457618197, 41.590608318722246], [-70.646265717676016, 41.591461411348014], [-70.646935090099532, 41.593379242826508], [-70.646934842479737, 41.593649900374984], [-70.647513321694177, 41.595136566043678], [-70.648792118765257, 41.597676268930478], [-70.65134948985272, 41.601935726827733], [-70.651927638762331, 41.603035105443915], [-70.652323356835822, 41.603236685533751], [-70.652749889758198, 41.604545441667277], [-70.652750046118243, 41.605050295258039], [-70.652445051762541, 41.605207841360581], [-70.651073837103397, 41.605137369693473], [-70.649336546078231, 41.605252684886992], [-70.648299983261808, 41.605483526126164], [-70.647385675386218, 41.605758044144849], [-70.646806017706623, 41.605712005275223], [-70.64601373821101, 41.605498422593904], [-70.644886597770679, 41.60497392894915], [-70.644856255223218, 41.604614081853342], [-70.645100310660936, 41.604358764605394], [-70.64491797129871, 41.603469330658946], [-70.645131548566823, 41.603196316325523], [-70.645771543290877, 41.603052023284171], [-70.647875555499866, 41.601454398619445], [-70.64787555232094, 41.601202287383643], [-70.646230905463028, 41.599163508127212], [-70.645683484854047, 41.598270251258384], [-70.645043313228058, 41.597928327479039], [-70.644281835932858, 41.597975538773497], [-70.643031809719631, 41.59838930495161], [-70.642605683827, 41.598017467534895], [-70.642666175607459, 41.597728085945526], [-70.642636836553194, 41.596945149065505], [-70.642393104513062, 41.596309069553293], [-70.642454212833556, 41.595776585353711], [-70.642606712913391, 41.595504285427417], [-70.642606847277037, 41.595297194969497], [-70.642363327930099, 41.595120319797438], [-70.642149786917372, 41.595024706232785], [-70.641327759710279, 41.595090528749346], [-70.640443313989323, 41.595436707265499], [-70.640230099532488, 41.595736727411946], [-70.640198862989024, 41.596169222306706], [-70.64083882162241, 41.596943903322781], [-70.641234410530586, 41.597766795889449], [-70.64153840408143, 41.597996443449581], [-70.642087140835159, 41.598249908012733], [-70.642269593531992, 41.598616486753947], [-70.64175063880883, 41.599299751823587], [-70.641720364316285, 41.599804286176315], [-70.64193366122926, 41.600053506458423], [-70.642938663483079, 41.600696951991296], [-70.643212320062574, 41.600972016271562], [-70.643273249747239, 41.601268436378646], [-70.643181452076149, 41.601432066817885], [-70.642572300528798, 41.601683545178133], [-70.641200285756298, 41.602045678693642], [-70.64110892793407, 41.602569469995309], [-70.640376352962917, 41.603327648180176], [-70.63869946283188, 41.604198421377724], [-70.638730393783234, 41.604378195204461], [-70.639339030906726, 41.604810495552933], [-70.639338755129572, 41.605107624840542], [-70.639064427880896, 41.605381879057347], [-70.639002763890872, 41.606229406853451], [-70.638545983888278, 41.606074048005816], [-70.637814886322118, 41.606138284472131], [-70.637204921099354, 41.606525328384187], [-70.636350544060988, 41.606799042341102], [-70.636259400970275, 41.607196775959018], [-70.63638068830987, 41.607347974230215], [-70.636685804157011, 41.607487603260246], [-70.637234627948615, 41.607579019757672], [-70.637477925766262, 41.60785494781706], [-70.637630502708134, 41.608221847510045], [-70.637843957651825, 41.608290996930542], [-70.638179120254392, 41.608177657847477], [-70.639063153125875, 41.607787012704044], [-70.640221684379952, 41.607698450450997], [-70.640739469034244, 41.607555511667393], [-70.640953206311394, 41.607192466358462], [-70.641106142669628, 41.606550378265389], [-70.641746839644114, 41.605685794586378], [-70.641899135636422, 41.605314360047231], [-70.642265495100432, 41.604885475143114], [-70.642570261462751, 41.604773604630616], [-70.642935747528483, 41.604749890010766], [-70.643057381136146, 41.605180747211946], [-70.64198945199179, 41.6071057529795], [-70.641501109832689, 41.608265198931655], [-70.641501177489587, 41.608770052542638], [-70.641592116378789, 41.609002591925901], [-70.642353559178318, 41.60950518028875], [-70.643054915182589, 41.609711439708036], [-70.643512576809158, 41.609776747032448], [-70.643847487742747, 41.609708949473813], [-70.643938816619809, 41.609527306928847], [-70.643756320937854, 41.609205750710416], [-70.643787188058269, 41.608638102465605], [-70.645616285104182, 41.607377805803196], [-70.646043096198113, 41.607398481509705], [-70.64653013812574, 41.607787600363096], [-70.647383637098272, 41.608865479676517], [-70.647901535181276, 41.609254283760102], [-70.648389077453459, 41.609463408816588], [-70.648906858502883, 41.609573084254869], [-70.649547388110278, 41.609392667614934], [-70.649943840252305, 41.609044478840595], [-70.650065625544443, 41.608817499226319], [-70.650493039336581, 41.608820694945052], [-70.651803203027399, 41.6098738606794], [-70.652015142253418, 41.610240102956574], [-70.651984814535496, 41.610627587524306], [-70.65180231125791, 41.610792258774069], [-70.650735064770501, 41.611059990183442], [-70.650064035498062, 41.611060646368983], [-70.649363362874453, 41.610881447509939], [-70.648601254183291, 41.610901672243038], [-70.648022033031012, 41.611152774281202], [-70.647503636066247, 41.611565950744883], [-70.64698475288921, 41.612636321479883], [-70.646678848990035, 41.614856295864271], [-70.646526319842408, 41.615020643634999], [-70.645367546729972, 41.615037237470716], [-70.645062964245497, 41.615266799161347], [-70.645063197700367, 41.615473892351133], [-70.645702939185725, 41.615753323909459], [-70.6462817291888, 41.616347973129585], [-70.646707378562851, 41.61772031369275], [-70.646645921953137, 41.618675984277985], [-70.646096483482836, 41.619755756367326], [-70.645547769535483, 41.620213626838805], [-70.641979323134748, 41.622012302650418], [-70.640668333709272, 41.622265225453901], [-70.639935458809049, 41.623591101314304], [-70.63941706210862, 41.623796520432883], [-70.639386656186758, 41.624076584178539], [-70.639996192068637, 41.62462593813278], [-70.640209180901081, 41.625100258280504], [-70.640238295930757, 41.625362674404293], [-70.640785781823567, 41.627174362628324], [-70.641851596827053, 41.629050198690742], [-70.643313710377839, 41.6307680199697], [-70.645202501273928, 41.633172792834507], [-70.646361111769579, 41.63415563809815], [-70.646787851787636, 41.634726091750593], [-70.646726623334587, 41.635069493989434], [-70.646360371180364, 41.635362705052053], [-70.64584142281214, 41.635406078341781], [-70.643981723714461, 41.634910919300552], [-70.642701478507959, 41.634811863343018], [-70.642427064350898, 41.634743884674151], [-70.642243532074971, 41.634584390299366], [-70.642214181820506, 41.633810366966166], [-70.642488256219508, 41.633536192453491], [-70.642396574199978, 41.633212978406483], [-70.641452495154041, 41.632803555165601], [-70.640202547630949, 41.632686061277049], [-70.639775353357336, 41.632458270436288], [-70.639531477384025, 41.632137323790495], [-70.63880003982041, 41.631607303458551], [-70.638434720207144, 41.631081224048607], [-70.638434802809527, 41.630468953870789], [-70.638008198657431, 41.630510739948342], [-70.637184581301028, 41.630900667346104], [-70.63688031560072, 41.630743038993465], [-70.636544091647608, 41.630783794988133], [-70.636208663303719, 41.631041191910697], [-70.636238396798973, 41.63195028004295], [-70.636024901242664, 41.632322863385113], [-70.634498931328793, 41.63375864734531], [-70.633995051517118, 41.634152156256484], [-70.634560173709644, 41.634244248343848], [-70.635047698399504, 41.634057163959277], [-70.636329905092921, 41.633119782500046], [-70.63660419683859, 41.632386420453528], [-70.637306035839273, 41.631790732439299], [-70.637672164108125, 41.631677538841501], [-70.638006945645017, 41.631681788458216], [-70.638495323547431, 41.632070950851123], [-70.638768441197541, 41.632706720412791], [-70.639530863905733, 41.6332093331484], [-70.640018520661428, 41.633787657013393], [-70.640384770560814, 41.633719475451926], [-70.640567752341624, 41.633392213557677], [-70.640964376739973, 41.633233679725315], [-70.641238068580975, 41.633238628673901], [-70.641604157430109, 41.633602632991867], [-70.641603317115141, 41.634926751790893], [-70.641969180066184, 41.635245823059307], [-70.642944605712486, 41.635871663511743], [-70.643218396617968, 41.636434764898269], [-70.643248692126036, 41.637560490331758], [-70.643491866699918, 41.638250586466164], [-70.644893142482431, 41.639851415944904], [-70.644893246100963, 41.640122075994633], [-70.644191521693585, 41.640537192084743], [-70.644069413041564, 41.640809183457151], [-70.64422159662513, 41.641653911456793], [-70.644922719097622, 41.64165297342236], [-70.645075313808633, 41.641515729760037], [-70.645076060211821, 41.640902924834819], [-70.645442351012278, 41.640627635609007], [-70.646540364961993, 41.640422578519818], [-70.648980565538679, 41.640125729659928], [-70.649925131101838, 41.639895901245325], [-70.650322485860272, 41.639602280561711], [-70.650871798802399, 41.638801699487843], [-70.652151984281801, 41.638314323935234], [-70.652732381659959, 41.637910140466367], [-70.65300632613868, 41.637815929137957], [-70.653280283222671, 41.63785677674683], [-70.653494461237258, 41.637997933024302], [-70.65358620736184, 41.638321048082481], [-70.653463548808787, 41.638665166891911], [-70.653066834967802, 41.639165804370563], [-70.652151725328778, 41.639783139243349], [-70.651297712090681, 41.640308541993299], [-70.650380143959396, 41.642889160020403], [-70.650564122014828, 41.643832079603577], [-70.651172184535326, 41.645273833580582], [-70.651111217882104, 41.645634707713839], [-70.650989485141622, 41.645843681388094], [-70.650684293509869, 41.646028234677949], [-70.649585708780421, 41.646044244758151], [-70.647909137231011, 41.645798130919637], [-70.646902407384687, 41.64582155630044], [-70.644034866935357, 41.647034092053971], [-70.642509347235205, 41.648172856838102], [-70.640678477307532, 41.648883856549645], [-70.640220403606961, 41.648971514409503], [-70.639610932322483, 41.648953398810072], [-70.637324152286837, 41.648563039015691], [-70.635920185449223, 41.648627742974504], [-70.635249725589659, 41.648610311047442], [-70.634761244642291, 41.648833315748426], [-70.633266180769809, 41.649197306693061], [-70.632289689098997, 41.649562444703349], [-70.631649850811684, 41.649959318712057], [-70.630733243695744, 41.650827953898357], [-70.628445187726243, 41.651481778960758], [-70.62740804611748, 41.651668041816485], [-70.627041892455182, 41.651826133096641], [-70.626278885022117, 41.652350428730458], [-70.625239858468774, 41.654112806658063], [-70.624873773220187, 41.654685705711621], [-70.624474534857384, 41.655022533756863], [-70.62416979095012, 41.65529706020088], [-70.623988139661449, 41.655875878691745], [-70.623774101241452, 41.656005328038702], [-70.622310821907973, 41.656197175092579], [-70.620693850684859, 41.656057548503838], [-70.619595237861077, 41.655460367653781], [-70.618618905320048, 41.655600831234921], [-70.617826683795954, 41.656215424892004], [-70.617278572331472, 41.656835779776223], [-70.616881841708576, 41.657039251736371], [-70.616455176115522, 41.65704548216052], [-70.61578340528817, 41.656838841815251], [-70.615387209303009, 41.65692517063988], [-70.615082057185973, 41.657199669925554], [-70.614990684811829, 41.657408302090843], [-70.615022261842583, 41.657894223894871], [-70.615226150713994, 41.658231209423157], [-70.615907203166117, 41.658800966366591], [-70.616120930245643, 41.659104261685037], [-70.616121236208855, 41.659464424254473], [-70.616915306450181, 41.660381077313772], [-70.617648266050708, 41.661316429110563], [-70.61786298013989, 41.662123952821368], [-70.618167445416546, 41.662579395137669], [-70.619083023533506, 41.663449162995931], [-70.620701345755833, 41.664543245424426], [-70.620946201332984, 41.664611587509043], [-70.621647342812039, 41.664592783193726], [-70.621799332484528, 41.664428553326623], [-70.621768622059918, 41.664041684535235], [-70.621371907362203, 41.66383098856447], [-70.620760234999096, 41.663561184251868], [-70.621646200970773, 41.663556774336314], [-70.622195314272375, 41.663468182172942], [-70.623353605681871, 41.66262281632163], [-70.624481500475326, 41.662048495085223], [-70.625018598712558, 41.661871467744952], [-70.625262591035735, 41.661642572081341], [-70.627338486237591, 41.660586502808584], [-70.627186054276947, 41.66031854486436], [-70.626667662473508, 41.660199764677103], [-70.625691325646343, 41.660204689212883], [-70.625386506309795, 41.66029013458531], [-70.624805920708553, 41.660820866028295], [-70.624297707124796, 41.660861974280891], [-70.624023002834264, 41.660676897735044], [-70.623778915981504, 41.660193934070335], [-70.622679592744333, 41.659623790329661], [-70.62200857959472, 41.65889496106125], [-70.621092732566993, 41.658457316367155], [-70.620177092891453, 41.657839675608543], [-70.619637752430577, 41.657657673057201], [-70.618834184723511, 41.657543402095662], [-70.618620886145393, 41.657339159275566], [-70.618590098341159, 41.656907268808375], [-70.61895551307758, 41.656632146611251], [-70.619626838226282, 41.656514080424827], [-70.61999242346694, 41.656671148307062], [-70.620419697819727, 41.657196685602749], [-70.620935674796968, 41.657593429353817], [-70.621581031902679, 41.65809030407928], [-70.622190706465489, 41.658414653182568], [-70.623075205186026, 41.658573373793651], [-70.624479187080468, 41.6591210982413], [-70.625966502798377, 41.659696367764276], [-70.627369821241075, 41.659856249314068], [-70.627949061672908, 41.660082460293751], [-70.629290406974434, 41.661161960640015], [-70.631179973785365, 41.662900673889204], [-70.631729088977167, 41.663226219284034], [-70.6328272887677, 41.663588543692711], [-70.633314982175477, 41.663680589881352], [-70.634413767768251, 41.663592704306168], [-70.63532940745371, 41.662832079232757], [-70.636122563497366, 41.66255961285767], [-70.637099810958304, 41.662329505879335], [-70.637343149332636, 41.662172701551178], [-70.637435538838901, 41.661946051698713], [-70.637710221855727, 41.661717362413697], [-70.638717005326683, 41.661441365216845], [-70.639387757312491, 41.661143728643331], [-70.639571651433499, 41.660915518462055], [-70.639663580188326, 41.660436751965442], [-70.639877244980894, 41.660208766498812], [-70.640273882648415, 41.659311367444602], [-70.640823311108235, 41.659132018145414], [-70.643904035381055, 41.659448418063469], [-70.645612533715862, 41.659882831139981], [-70.646558230693813, 41.660319870890859], [-70.649516481597658, 41.66208762929417], [-70.652077452131806, 41.663275554564557], [-70.653206922151014, 41.664259278038486], [-70.653510817135512, 41.664713989227451], [-70.654243307175562, 41.665883200271502], [-70.654180924494568, 41.666541646451527], [-70.654089794300859, 41.666822342641119], [-70.65268490294244, 41.667662220785694], [-70.651464955603757, 41.668878206414526], [-70.650182970509931, 41.669590124193853], [-70.649511221532435, 41.670158566534937], [-70.649145379804466, 41.670406771336388], [-70.648839822242948, 41.670474266218399], [-70.648413069593971, 41.670453604616263], [-70.6476202303582, 41.670275510695312], [-70.647131025295479, 41.670291562690188], [-70.645545198374052, 41.670936321771791], [-70.644415430114009, 41.671141674564595], [-70.642706855846725, 41.671138985792247], [-70.640845273396124, 41.670931896106083], [-70.63941288180321, 41.670591883424358], [-70.638374660566299, 41.670499026782473], [-70.638405974979321, 41.669903920840547], [-70.637155226610574, 41.668759939048599], [-70.63614933412785, 41.667414043010254], [-70.636089457093618, 41.666406312766298], [-70.635723978197646, 41.665790095051484], [-70.635114352659713, 41.665141136303745], [-70.634626323866783, 41.664851007732985], [-70.632948864804447, 41.664478614136726], [-70.631088096636105, 41.663865649551795], [-70.630355886042082, 41.66379477478948], [-70.628403686717462, 41.663841149432955], [-70.627732092903202, 41.664273865288337], [-70.627181814015628, 41.665002298914807], [-70.627059534565291, 41.66582351508346], [-70.626876370985713, 41.666213782940567], [-70.62751675849205, 41.666195646485384], [-70.627700095531182, 41.666012470761956], [-70.628035290897358, 41.666034759523598], [-70.628645400823743, 41.666449656645817], [-70.629164222280622, 41.666514406744405], [-70.629956788131935, 41.666926191430697], [-70.630108981349963, 41.667293187480844], [-70.63010896036819, 41.667797950926989], [-70.629925267423218, 41.667998595530833], [-70.62968107023768, 41.668074341813522], [-70.629345622243392, 41.668052146094652], [-70.629071622048244, 41.667362323827575], [-70.628858265723863, 41.667131088320382], [-70.628003739636867, 41.667107073073247], [-70.627576936063406, 41.666951362860345], [-70.626722393109063, 41.666990365783072], [-70.626539911173111, 41.667110518589276], [-70.62635591106725, 41.667860398700661], [-70.626294158974844, 41.668644892270294], [-70.625867322438509, 41.668570211378317], [-70.625713879041271, 41.668436763475029], [-70.625286996739874, 41.668506053898547], [-70.625134352252232, 41.668823441322992], [-70.625347965364398, 41.668982653894439], [-70.625805759970063, 41.669147074327014], [-70.626110750453975, 41.669377308823186], [-70.626995268328002, 41.669625587554556], [-70.627086232736616, 41.670245850288126], [-70.626720366503974, 41.670269513926677], [-70.626170457647675, 41.670060990459248], [-70.625926378573595, 41.670127185449054], [-70.62592691048367, 41.670334281372341], [-70.626444659166381, 41.670813759291342], [-70.626444472308691, 41.671020849677724], [-70.626048072675005, 41.671134316641648], [-70.626078847854302, 41.671413136601736], [-70.626352482374671, 41.671706697647188], [-70.626351224251607, 41.672625095185822], [-70.62571004101072, 41.672670321477717], [-70.62510140164251, 41.672030860669366], [-70.624826453916896, 41.671386040677859], [-70.624490368452442, 41.671128551487968], [-70.623514308285195, 41.670584126991251], [-70.623056120910491, 41.67019405420735], [-70.622811259060114, 41.670098164574853], [-70.621805422488421, 41.670193949893452], [-70.620096487852592, 41.670541984479541], [-70.618814878314566, 41.670353154505435], [-70.61796043056529, 41.669806832634499], [-70.617381535898986, 41.670012856054555], [-70.617351025303151, 41.670265811862762], [-70.618144033728896, 41.670695690494107], [-70.618358763684597, 41.671016996947614], [-70.6182366111981, 41.671793815785719], [-70.618268253354657, 41.672738940904104], [-70.618024394173176, 41.673057772829686], [-70.617140504908122, 41.673745935587057], [-70.615858898180988, 41.674178258963764], [-70.615553923393989, 41.674173637344417], [-70.614974486891754, 41.673929444443552], [-70.614577597675549, 41.673971376124967], [-70.614363797016182, 41.674199314016235], [-70.613877265346545, 41.675917541368371], [-70.613572321723254, 41.676282619210632], [-70.613603344474171, 41.676461860553879], [-70.613878066156985, 41.676674424280662], [-70.613908734912087, 41.677061295130379], [-70.613634628125311, 41.677722664812158], [-70.614305802924704, 41.677632179348372], [-70.614701851376481, 41.677383690268087], [-70.614701601816108, 41.676941951882874], [-70.614396003645382, 41.676487122183481], [-70.614456905033705, 41.676260785373934], [-70.614792650630804, 41.67600399292521], [-70.615219639194649, 41.675844702202113], [-70.615739075173167, 41.676008561849912], [-70.615982291656096, 41.676302541880631], [-70.616013384302093, 41.67731123179005], [-70.616716820775409, 41.678066818543925], [-70.617510476344691, 41.67859574985566], [-70.618394960797787, 41.67884463467248], [-70.619066632823404, 41.678727112941722], [-70.62111025522664, 41.67771646284119], [-70.62150653416991, 41.677746535486556], [-70.622331504060028, 41.678752886457495], [-70.622179202676818, 41.679322384694089], [-70.622271673031818, 41.679690551181977], [-70.62245463250396, 41.67998513261356], [-70.622516105906456, 41.680371698062274], [-70.622272496438185, 41.680645521289343], [-70.621875397861317, 41.680533868926823], [-70.621661921407195, 41.680257599200722], [-70.621082263640403, 41.680347124449135], [-70.620625372608174, 41.680740850331134], [-70.620442491299542, 41.681698362378803], [-70.619648506557809, 41.681790725354098], [-70.619374025566984, 41.682019913919397], [-70.619131566085628, 41.68291501513535], [-70.618431058981969, 41.684537062483727], [-70.618462147419422, 41.685113559275734], [-70.618645331813539, 41.685435250597727], [-70.619988426436208, 41.686388814910508], [-70.620996283900084, 41.686662763371515], [-70.622064114430387, 41.686278793504599], [-70.622674487848897, 41.685819165420668], [-70.623192325156566, 41.685064570569004], [-70.623252036439212, 41.68409998265156], [-70.624471904793268, 41.683389056570796], [-70.625029150643783, 41.683209841854818], [-70.625059876042727, 41.682939418134957], [-70.62457194337243, 41.682802315814939], [-70.624541055529875, 41.682505486638618], [-70.624694048651136, 41.682323162599587], [-70.624403053852646, 41.682005243566898], [-70.624312822835535, 41.681796917056978], [-70.624481547381791, 41.681614714161832], [-70.626160361625239, 41.681293392312796], [-70.626862040765246, 41.68131003431791], [-70.627350205028748, 41.681429660906822], [-70.627777209974084, 41.68163048272848], [-70.628844423564132, 41.682552023465391], [-70.629454104336276, 41.683372091034009], [-70.629514288835921, 41.684244857763417], [-70.629758297434009, 41.68462876346041], [-70.629696155536479, 41.685611433454461], [-70.628626913098003, 41.686870021005632], [-70.62798546622939, 41.687329352361395], [-70.628107292263437, 41.688111381873568], [-70.627983934461724, 41.688815538869662], [-70.627709562551431, 41.689476939774494], [-70.627281698663054, 41.689942406683492], [-70.62715858125037, 41.69060163479751], [-70.627432548610784, 41.690877187055086], [-70.627279939672363, 41.691329637658498], [-70.627278580935439, 41.692203554089538], [-70.628041367981439, 41.692751351531498], [-70.627735850796398, 41.693052894668064], [-70.627735422376418, 41.6932779910656], [-70.62813236414253, 41.693434100756384], [-70.628743593672738, 41.693371792464127], [-70.629048747024058, 41.693096715582648], [-70.629567883726665, 41.692801305152891], [-70.629872931430228, 41.6928689169686], [-70.630452667460162, 41.69330211811257], [-70.631795423950422, 41.693580239004476], [-70.632283409213514, 41.693393166611465], [-70.632710914399553, 41.693395885356843], [-70.633168297032356, 41.693578369475368], [-70.634451084130902, 41.693415887535899], [-70.634664614786885, 41.693304961721495], [-70.634664552317943, 41.693007829912794], [-70.633932985404883, 41.692252683142257], [-70.63295669776771, 41.691491705624053], [-70.632651490301129, 41.691081949501324], [-70.632439565632993, 41.690490573112555], [-70.632439959456889, 41.689850753100714], [-70.63280625366508, 41.689440532531947], [-70.633233287994997, 41.689281084211288], [-70.633691536199933, 41.689211461564774], [-70.636255196635915, 41.6891656716599], [-70.636957716777445, 41.688984169592068], [-70.637262835554807, 41.688520527529136], [-70.637354556451243, 41.688203832698271], [-70.637781873251825, 41.68761226871635], [-70.637843799994968, 41.686440510340255], [-70.63796651550922, 41.686078489767532], [-70.63863876492762, 41.685528665690605], [-70.639645694495414, 41.685117599034825], [-70.640316666761791, 41.685045056292772], [-70.641079766722797, 41.685186959452054], [-70.641720226440725, 41.685096710393637], [-70.644315218746968, 41.684384142428492], [-70.644284234566982, 41.684177358310606], [-70.644040614835561, 41.683946464810354], [-70.64364416485445, 41.683952485626151], [-70.643369291608039, 41.6841091565136], [-70.643125056041924, 41.684067880048843], [-70.643064904625234, 41.683519355227276], [-70.643492499292023, 41.682918678463629], [-70.645354611254533, 41.681459451551682], [-70.645843184911257, 41.681272326384097], [-70.651122868645444, 41.680799785103325], [-70.652862218476727, 41.680792490262213], [-70.654143767268735, 41.680954462213393], [-70.655241416986598, 41.681163585759194], [-70.658141098499954, 41.681094408521389], [-70.658507834498437, 41.680999248519072], [-70.658934448492914, 41.680524653080539], [-70.660277233733538, 41.679856393690592], [-70.660856860057009, 41.67990181832868], [-70.661406483380233, 41.680092072564136], [-70.661803108793862, 41.680473791615555], [-70.66192534236464, 41.680732925449362], [-70.661893966766726, 41.681184062504748], [-70.661375592163708, 41.682218488702674], [-70.661283078085617, 41.682715274978378], [-70.661069926354998, 41.683087367608231], [-70.660642306054243, 41.683354872672574], [-70.657834368089041, 41.684521565486847], [-70.657620191131954, 41.684705101385717], [-70.657132507857327, 41.68596429482001], [-70.656734680543181, 41.686420008776132], [-70.655117208928914, 41.687182350586781], [-70.653255645792399, 41.687452677675147], [-70.652278437952475, 41.687745953817732], [-70.651576231940055, 41.688161655421865], [-70.6505994242697, 41.68949028604635], [-70.649988871848251, 41.690265109995508], [-70.649072519405323, 41.690584654968383], [-70.647180320837819, 41.690314506733522], [-70.646417748630228, 41.690100527238485], [-70.646020667075845, 41.690124019579358], [-70.645562539598998, 41.690472815759279], [-70.645013196336805, 41.691246452394033], [-70.645013058000202, 41.691589142419346], [-70.646018930152195, 41.692619185948928], [-70.646110957933075, 41.692807339144061], [-70.646140986855727, 41.693401196052321], [-70.646048702586327, 41.693645861690889], [-70.64562154504128, 41.694066472213628], [-70.644674951659411, 41.694584382828559], [-70.643453672273495, 41.694953363759531], [-70.639943626889092, 41.695454162945019], [-70.639119199502531, 41.695727052496032], [-70.638599869175479, 41.695824417405568], [-70.638538439723845, 41.696005742666323], [-70.637592383552629, 41.696370531471686], [-70.636738278018441, 41.696508659611773], [-70.63234229377025, 41.696436421262177], [-70.631060784305106, 41.696508849848797], [-70.629167555670051, 41.696941696076244], [-70.627487359184002, 41.69775782369733], [-70.626541332858253, 41.698105053794478], [-70.625808462288973, 41.698493351114557], [-70.625441741897788, 41.698787124972476], [-70.625013370454695, 41.699450667721784], [-70.624738712741447, 41.699679868221835], [-70.624488136214026, 41.699747181518937], [-70.624029955041635, 41.699726728361682], [-70.62366412889557, 41.69952474377542], [-70.623388623644217, 41.699132028892222], [-70.62338808971154, 41.698951944963682], [-70.623205631956964, 41.698765417354636], [-70.622960349713949, 41.698219326131138], [-70.622502090738138, 41.697802780527837], [-70.622562246705968, 41.69730631403052], [-70.621799557267863, 41.69710063246], [-70.621433028640467, 41.696890171345203], [-70.621066093688611, 41.696246343893733], [-70.619997066980105, 41.695360733090254], [-70.61960025710826, 41.695195591993937], [-70.619172984205392, 41.695201289640096], [-70.618714824413104, 41.695478036911993], [-70.617830357302452, 41.695454886808655], [-70.617097618100075, 41.695771097263304], [-70.616274093183662, 41.695953789105786], [-70.616213144087212, 41.696504180457723], [-70.616030461982731, 41.696822403353167], [-70.616030894205906, 41.697416670657759], [-70.615450955861519, 41.697514630036331], [-70.615237442990676, 41.697238888532425], [-70.614962533452683, 41.697215411441739], [-70.614473937059145, 41.697033151331759], [-70.612917710637049, 41.697100446666163], [-70.612276923372903, 41.696847839910824], [-70.610627992127348, 41.696825961402432], [-70.610476105277556, 41.697242830266987], [-70.610781120771705, 41.69758061313869], [-70.61169719463696, 41.697423444211019], [-70.612368382272578, 41.697693218841799], [-70.612552046302596, 41.698015373787769], [-70.613833098656642, 41.697763159674977], [-70.615238035442133, 41.698220329132468], [-70.61594040125452, 41.698174554648894], [-70.616703288479755, 41.69771344094908], [-70.617129639663645, 41.697419077120095], [-70.617586138827519, 41.696115327463374], [-70.617830139049119, 41.695932096985324], [-70.61838026514738, 41.695842898663564], [-70.61938676585784, 41.695972785783567], [-70.620302406610506, 41.696437450492169], [-70.620823233040866, 41.697439207672915], [-70.622625448146565, 41.698854947655619], [-70.622869862200901, 41.699157835099754], [-70.622992268380173, 41.699588178777688], [-70.623206972740448, 41.699981506698109], [-70.620948671233009, 41.700661895552543], [-70.620062394592367, 41.700485681483322], [-70.619757736925791, 41.700850238330744], [-70.619360900184844, 41.700963680070487], [-70.619025564188334, 41.700851326116243], [-70.618964424881298, 41.700527789485825], [-70.618750092972135, 41.700414210406215], [-70.618353759136838, 41.700482542502726], [-70.617713463405195, 41.700851876663691], [-70.617468566506219, 41.701098668283521], [-70.616950773031135, 41.701835770719157], [-70.616890786207691, 41.702890483701715], [-70.617104922525343, 41.703157762944947], [-70.617654108063178, 41.703158690363558], [-70.61808092344323, 41.702954906556691], [-70.618447072480024, 41.702976831651561], [-70.618447519958778, 41.703318986938761], [-70.617960085948965, 41.70362305707522], [-70.617166571377211, 41.703661384491774], [-70.616799814219178, 41.704396236525746], [-70.616861518174801, 41.705034918608916], [-70.61722783573201, 41.704993280630049], [-70.617441360716569, 41.70478334263251], [-70.617837971948731, 41.704696917624879], [-70.618113020675182, 41.704764958363349], [-70.618143570992927, 41.704971656683071], [-70.617198128850603, 41.705543464505453], [-70.616893268093861, 41.705998052342572], [-70.616924793702808, 41.707168816220928], [-70.617077538055682, 41.707688811416389], [-70.616958726498979, 41.710852793933661], [-70.617050829809429, 41.711283449167418], [-70.616990274153764, 41.712239653889959], [-70.616533205214566, 41.712975605500162], [-70.616900113102517, 41.713546784686983], [-70.616869600046499, 41.713772188070237], [-70.616656394908873, 41.713982757955108], [-70.615832150374985, 41.714417554640093], [-70.615343672366194, 41.71492023427998], [-70.615069458308724, 41.715743589065326], [-70.615101162402865, 41.716274531038643], [-70.615253775206043, 41.716587525619147], [-70.615591169513976, 41.71874489337398], [-70.615744534921589, 41.719012783044619], [-70.616722098891273, 41.720071047918097], [-70.616722593290248, 41.720548263159714], [-70.616539428831473, 41.720731423773763], [-70.616020374266768, 41.721008769436438], [-70.61608184821057, 41.721395337987964], [-70.616327205189251, 41.721851314076531], [-70.617763421061241, 41.723425275552771], [-70.617885840103341, 41.723838156706378], [-70.617794726176172, 41.724343925206611], [-70.61623727460767, 41.724599715084253], [-70.616024045628265, 41.724783181812349], [-70.615994210964999, 41.725558373775819], [-70.615444954753499, 41.725809100898068], [-70.615353124919977, 41.726017730256522], [-70.615322840478214, 41.72695499068228], [-70.614744741085175, 41.728097966216346], [-70.614775027296915, 41.72834977325298], [-70.615171944555044, 41.728191326866586], [-70.615538173156409, 41.727870568863075], [-70.616239283770668, 41.726383601380569], [-70.616605694085507, 41.72615288137353], [-70.617032800949715, 41.726174202449251], [-70.618009865310071, 41.726520595710639], [-70.620086700681171, 41.72678877674339], [-70.620881695127835, 41.726768446188174], [-70.621155346725416, 41.726674306190823], [-70.621308093488636, 41.726492073925492], [-70.621277523883322, 41.726285286549484], [-70.621033046983285, 41.726198401808055], [-70.620514627087744, 41.726314331514871], [-70.620483086805422, 41.725575760908455], [-70.620848620892005, 41.724778309894887], [-70.621184388150226, 41.724755060696019], [-70.621642587632763, 41.725163145448221], [-70.622162460248688, 41.725894226825289], [-70.622651202917808, 41.726328564621696], [-70.623231380918568, 41.726581723931595], [-70.624484263621682, 41.726564353144532], [-70.626791074785316, 41.725942785805302], [-70.627584953620214, 41.725598256716047], [-70.628868699045739, 41.72479664793962], [-70.630456246666867, 41.724224605777962], [-70.631862369783263, 41.723177369223237], [-70.632839942735259, 41.721965410964323], [-70.633666033757109, 41.721233374272742], [-70.633971804849807, 41.720841146531043], [-70.634155118614515, 41.720226399133843], [-70.634155469932637, 41.719677159375919], [-70.63339260491469, 41.718903765916586], [-70.633179335636939, 41.717961226775309], [-70.632691536883684, 41.717571961197045], [-70.632721995948756, 41.717346553600713], [-70.63296703195779, 41.717027698491698], [-70.633058271491564, 41.71644988788853], [-70.633059957058123, 41.71482855489333], [-70.633212550686977, 41.714511246253977], [-70.633548507731518, 41.714416470904183], [-70.634098383112828, 41.714462253328804], [-70.635014205866952, 41.71466559270285], [-70.636418093716756, 41.715176602426652], [-70.637425716884053, 41.715702510636341], [-70.639317628572343, 41.717188979308396], [-70.639470602624542, 41.717510857151453], [-70.639470081293368, 41.717853004039284], [-70.638950391873095, 41.718356178045049], [-70.637331807374565, 41.718991579873403], [-70.636109797083748, 41.71995474225178], [-70.635772516991835, 41.720545363830915], [-70.635559154760116, 41.721188068218588], [-70.635619880068603, 41.721718683181038], [-70.635924608072685, 41.722380537339731], [-70.636901387296305, 41.723249446506117], [-70.636870701469817, 41.72345693547053], [-70.636075864004908, 41.724189232465775], [-70.635036350681972, 41.724482972803571], [-70.63433449306676, 41.724781522537498], [-70.633845408001335, 41.725094562568451], [-70.629630814135851, 41.726199803684594], [-70.627828388782405, 41.726748129162992], [-70.624484695111335, 41.72738371889384], [-70.62369068354937, 41.727656193757404], [-70.623691373291095, 41.728070382300999], [-70.623874710797622, 41.728365503131904], [-70.624486341835393, 41.728824908985494], [-70.62599328495935, 41.730034645938204], [-70.627122417124838, 41.730748409158679], [-70.627396896694336, 41.731113463362362], [-70.627152286159131, 41.731342360486543], [-70.626664086403409, 41.731250197984409], [-70.626205865502172, 41.731022753545368], [-70.624488563571148, 41.730996056003185], [-70.62375571775469, 41.730907131874346], [-70.623541396843621, 41.730793472809175], [-70.62369398079646, 41.730430526159765], [-70.623571349649566, 41.730108320198532], [-70.623113285268929, 41.730177365535631], [-70.622533388042157, 41.730636603272984], [-70.62238133163892, 41.730881870415907], [-70.622382012927559, 41.731296058924386], [-70.622564827940636, 41.731410647911893], [-70.623022979766944, 41.73147603485193], [-70.62351174297325, 41.731640789427338], [-70.624000761963813, 41.731480229985024], [-70.62448971382166, 41.731482279849914], [-70.625076266163262, 41.731660114994838], [-70.625075162080066, 41.732074289623633], [-70.624738365396368, 41.732529733747832], [-70.624490121384724, 41.732689356713244], [-70.623818016897829, 41.73310458289825], [-70.623696012589164, 41.733376014489885], [-70.623849103177392, 41.73390563621362], [-70.624154941819185, 41.734288947477957], [-70.624124434751678, 41.734541364530436], [-70.623850763652271, 41.734608499546361], [-70.622811985620643, 41.734586996188192], [-70.622262361149737, 41.734729615844373], [-70.621774141328203, 41.734637522417948], [-70.621559752581788, 41.73438825941308], [-70.621010640766713, 41.734432373403294], [-70.620522226745649, 41.73481748404911], [-70.620583692692577, 41.735321101424283], [-70.620766920181538, 41.735624690034385], [-70.621103727329967, 41.735827088505935], [-70.622110767911821, 41.735893922775084], [-70.622538892142501, 41.736257381839707], [-70.6226611405353, 41.736651707741913], [-70.622111671146683, 41.736947935934865], [-70.62058541146456, 41.73751916732148], [-70.620097850696112, 41.73781424328012], [-70.619578848030756, 41.73850632990392], [-70.619151280178372, 41.738782687212534], [-70.618296378840242, 41.738803713540676], [-70.61710538804779, 41.738622239730333], [-70.616157662154222, 41.738644691239898], [-70.615425639588722, 41.738438668643887], [-70.614996945874609, 41.738526008003923], [-70.614631286078222, 41.738801118841813], [-70.614661517540895, 41.739169977224726], [-70.615425821382175, 41.739510774805588], [-70.6157315633385, 41.739812531915412], [-70.615518348975087, 41.740104045986492], [-70.611457231283822, 41.741800658096246], [-70.609838924251235, 41.74232762954226], [-70.602601382558532, 41.744050828969172], [-70.602021398992534, 41.744094698907844], [-70.598264918095936, 41.744940027088568], [-70.596706898595627, 41.745169167982802], [-70.593958341597897, 41.745747722462518], [-70.5913009883526, 41.746478386223536], [-70.590598692437638, 41.746776125911467], [-70.589681698255617, 41.746978143562046], [-70.58555924579619, 41.748630040852184], [-70.583054638682725, 41.749727483478154], [-70.582566154352278, 41.750093254954123], [-70.58213884550824, 41.750234506861133], [-70.57523515028214, 41.75476171400782], [-70.572700777076463, 41.756894694233971], [-70.571998039245116, 41.757390946076555], [-70.571509446461079, 41.758036965416835], [-70.570562427164305, 41.759617373621133], [-70.569859983729955, 41.760527800511895], [-70.569065137536825, 41.761736852229888], [-70.567843379171009, 41.763231075275193], [-70.566744364324251, 41.764831548557169], [-70.565185846695329, 41.767140101165843], [-70.563413355497744, 41.768965788446877], [-70.562313439499505, 41.769818877767733], [-70.559531682054512, 41.771577578972277], [-70.558431948797761, 41.772060926863503], [-70.558126342526464, 41.772263242885479], [-70.556170476325093, 41.773199235329201], [-70.554184141384312, 41.773865900833833], [-70.553053902695268, 41.774097371355744], [-70.552564841507802, 41.774275097483667], [-70.549570243512989, 41.774874858565767], [-70.548072411861781, 41.774966981824434], [-70.547124710736213, 41.775150936679715], [-70.54577989299051, 41.775241608190825], [-70.541776994997207, 41.775196760114575], [-70.541103601984247, 41.775079084549205], [-70.539423629763363, 41.775011990186549], [-70.538201745079135, 41.77475857289793], [-70.537131862904118, 41.774691640665061], [-70.536520100972339, 41.774555910318576], [-70.533525426266934, 41.774299233529703], [-70.531600933211138, 41.773955325020211], [-70.527445338084888, 41.77352492100956], [-70.526650071829522, 41.773364520453619], [-70.524480350924662, 41.773204150109073], [-70.522708544095266, 41.772948647442], [-70.520361839743558, 41.772714647569721], [-70.517208583671092, 41.772400441701379], [-70.516444180128858, 41.772167662797514], [-70.515864272148335, 41.771553708725946], [-70.515467211051103, 41.771414676709135], [-70.512166261901427, 41.771206563091106], [-70.511219276318855, 41.771822512474415], [-70.510820898135037, 41.771963120063667], [-70.503975689543239, 41.772647944593551], [-70.503426958661592, 41.771754621011418], [-70.503610069403095, 41.771320063759902], [-70.504038413054829, 41.771179202976569], [-70.504283800647372, 41.770653436988368], [-70.504253049154315, 41.770311552409581], [-70.504069472595276, 41.770151835719034], [-70.503795643178933, 41.770218683326569], [-70.502357359280623, 41.771336113909101], [-70.502113000857364, 41.771771753549594], [-70.502143001931856, 41.772068611660217], [-70.502295396172258, 41.772345742087268], [-70.50287557553834, 41.772572502188076], [-70.502997381075659, 41.772759863099502], [-70.502874936538248, 41.773121747174514], [-70.499458144698607, 41.774031643145477], [-70.495272889399871, 41.775184978229014], [-70.495028223926525, 41.77511646018673], [-70.494691901716692, 41.774841659007613], [-70.494048899259312, 41.773877045355526], [-70.492551242996271, 41.773077122940052], [-70.49053382804037, 41.772463824224936], [-70.489464225486557, 41.77202718696136], [-70.487569243185931, 41.771115083790882], [-70.487049498658962, 41.77075255000166], [-70.486467798349892, 41.770012369712965], [-70.484908759421842, 41.768825701808929], [-70.483625083447805, 41.768077088891928], [-70.481485639328795, 41.767023587279908], [-70.479805343017361, 41.766360795363539], [-70.476015527376049, 41.765220995855714], [-70.475678809200545, 41.765009162695634], [-70.475740693965662, 41.764810007170844], [-70.476137013820832, 41.764417387362251], [-70.476656497743249, 41.763663455844828], [-70.477083807770015, 41.7636402811141], [-70.477572884727024, 41.763913085086273], [-70.478794876409211, 41.76423018654728], [-70.480170411782936, 41.76498706095721], [-70.480995894763154, 41.765237559346701], [-70.482003848524542, 41.765260617111508], [-70.482278719341011, 41.76525686010973], [-70.482675833513881, 41.7650988727816], [-70.482798219443154, 41.764845058519789], [-70.481698539729777, 41.764895472003147], [-70.481025718348008, 41.764777984764805], [-70.480200303941729, 41.764365412637609], [-70.479955454475956, 41.764116236990439], [-70.47995586152085, 41.763639021214857], [-70.481024530882252, 41.762832539939694], [-70.481543653067362, 41.762654848352959], [-70.483131941273967, 41.762535145353986], [-70.485025956410595, 41.761763004006077], [-70.486003339479993, 41.761534269043345], [-70.486003208437381, 41.7613001604104], [-70.485055674640776, 41.761050861660479], [-70.484689798919931, 41.761326099173431], [-70.483803567377038, 41.761328371640914], [-70.483314899157861, 41.761875514558007], [-70.482917386011408, 41.761916446599187], [-70.481725945424472, 41.761193305650359], [-70.48129757925841, 41.761117982904587], [-70.481114640348082, 41.761300391428399], [-70.480412252974176, 41.761327332290719], [-70.479892810779276, 41.761216883284554], [-70.479098194424424, 41.760867067170146], [-70.477692493952674, 41.759822315694869], [-70.477569591317049, 41.759499314482412], [-70.476928754670467, 41.759408561707069], [-70.476072405127582, 41.758861248968437], [-70.474911140389636, 41.758236811851155], [-70.474850410379389, 41.757967221362392], [-70.474605712546136, 41.757898658337673], [-70.474269961048762, 41.758101020135598], [-70.473200778827348, 41.758475234414064], [-70.471612086328435, 41.758468196197626], [-70.470849070597083, 41.758289055703735], [-70.470481059764197, 41.758104566664073], [-70.470206579950045, 41.757720489527166], [-70.470176086011449, 41.757396694564179], [-70.469870454499969, 41.756752385180597], [-70.469442651771516, 41.756622457359072], [-70.469167718496436, 41.756662109082598], [-70.469106425101899, 41.757032435357459], [-70.469472706384835, 41.75753214878322], [-70.469503993337909, 41.757828938671842], [-70.468984697218275, 41.757898523931011], [-70.467090525002419, 41.757463300724353], [-70.46675495052925, 41.757467550674903], [-70.465593753385079, 41.757833475779499], [-70.464860737394375, 41.757897139481109], [-70.464341598740958, 41.757741601002749], [-70.463882770622064, 41.757441461627238], [-70.463241544972362, 41.757332619618815], [-70.462599388347485, 41.756800029737647], [-70.461438855741264, 41.756643677017614], [-70.4611941792068, 41.756367989364492], [-70.460766532114462, 41.756274046862494], [-70.459727685143648, 41.755845870360133], [-70.458963897860016, 41.755909755189066], [-70.458994970953796, 41.756098586486509], [-70.459941713804795, 41.756437597844908], [-70.460644823365485, 41.756806973553637], [-70.46440297166987, 41.75831734485034], [-70.465166227564197, 41.758406399212454], [-70.467396591249155, 41.758198203767471], [-70.469535700696866, 41.758449971982053], [-70.471490492182738, 41.75894710976452], [-70.472468273529159, 41.758970610686575], [-70.473262309128643, 41.759158393673424], [-70.475064670133108, 41.759108174161327], [-70.475401068594664, 41.75920295269399], [-70.475889661158419, 41.75950340268674], [-70.476440090232686, 41.760072729729714], [-70.478794099832328, 41.761789516908877], [-70.479068239873612, 41.76192082336194], [-70.479374356543786, 41.762376564726985], [-70.479375188817542, 41.762700721268473], [-70.478977354778664, 41.762949272260016], [-70.477878197246426, 41.763134175181946], [-70.475953222686044, 41.763159026877993], [-70.475525831431256, 41.763299880799202], [-70.474975818336262, 41.763684902829631], [-70.474639919960865, 41.763797223143378], [-70.474487636113878, 41.763664211762375], [-70.474394685154422, 41.763296455983102], [-70.473966819547542, 41.762815383329844], [-70.472928249197281, 41.762126211244478], [-70.47155282258872, 41.761558336365304], [-70.466633855648382, 41.760351114544761], [-70.456979338133536, 41.757151103621212], [-70.45099111493731, 41.755299240345849], [-70.447538956246049, 41.754127195532924], [-70.441093683469148, 41.752163612376854], [-70.433609659494536, 41.750266565780429], [-70.432663264772856, 41.750107420726344], [-70.43043638951012, 41.749513592736143], [-70.429367119362695, 41.749104029589923], [-70.428939975774611, 41.748784866134912], [-70.428817533012818, 41.748579409049036], [-70.428695795971024, 41.747572043331296], [-70.428389517157925, 41.747638944597348], [-70.427840326762194, 41.748123425034066], [-70.427565320522831, 41.748189447956975], [-70.42726022362892, 41.748121294143978], [-70.426191136306983, 41.74763903845222], [-70.424785966809594, 41.747116502813547], [-70.422342275582963, 41.746471034750613], [-70.416416893756235, 41.745283611403423], [-70.41247750448666, 41.744395161628006], [-70.400597193934729, 41.742262430539256], [-70.394733668917894, 41.741415009775757], [-70.389573578636814, 41.740540920965941], [-70.383200250473237, 41.739789769226697], [-70.380839409949132, 41.739511680661117], [-70.375342045099927, 41.738775986150323], [-70.374457362571221, 41.738543308710312], [-70.374026472055363, 41.738476559183411], [-70.363062265994728, 41.737814394360754], [-70.356373766464884, 41.737092354397383], [-70.351731342211508, 41.736912821678118], [-70.349440540052655, 41.736723658888238], [-70.347394346101481, 41.736450304219268], [-70.337988323352249, 41.736317609368314], [-70.335239902674019, 41.736070003449115], [-70.328887355585437, 41.736044826105541], [-70.320336062489517, 41.735792227937473], [-70.303570539717384, 41.735335377932131], [-70.300394618040031, 41.735155011979707], [-70.297065827031346, 41.735337170440857], [-70.295905038160342, 41.73515210711966], [-70.294744768312327, 41.734786949286672], [-70.290958104978657, 41.734307300075479], [-70.290225363955088, 41.734081160406433], [-70.288637604890326, 41.733396242551798], [-70.287813410368713, 41.7328021842252], [-70.287691450516348, 41.732596665617805], [-70.287812993919488, 41.732405985483666], [-70.288240665800515, 41.732337962105397], [-70.288973234032511, 41.732933293994755], [-70.289339863807101, 41.733073429571867], [-70.289920197452673, 41.733075636561374], [-70.290714614753213, 41.733256240748489], [-70.290774932029038, 41.733048159068801], [-70.290378286414153, 41.732728161297842], [-70.288821096462868, 41.731998638350461], [-70.288332871352893, 41.731932033812988], [-70.287691987177865, 41.73126338760963], [-70.285309808873592, 41.729849067060748], [-70.283752968357092, 41.729208891022367], [-70.278776315897218, 41.727787577222301], [-70.277036406952675, 41.727122202877801], [-70.275631412334775, 41.726462745098452], [-70.275204279699281, 41.726133991162797], [-70.274228193173613, 41.724991718489754], [-70.274167374969693, 41.724515539246582], [-70.274319909488355, 41.72412665900778], [-70.274655742721208, 41.723825203706909], [-70.276335514239676, 41.723275451064403], [-70.277526687624814, 41.722775535547363], [-70.278412530196078, 41.72266690613219], [-70.279725527646406, 41.722319099267906], [-70.281282688500141, 41.722301472603469], [-70.282076443456944, 41.722571635729309], [-70.282716970675949, 41.722961174468857], [-70.283877375971741, 41.723992786881873], [-70.28461038170397, 41.724381051391198], [-70.284823195050919, 41.724585922600845], [-70.285434034494358, 41.725407341004832], [-70.285372550871998, 41.726668924901809], [-70.28582960652129, 41.727285560172959], [-70.286135594105943, 41.727471162419768], [-70.286502051539912, 41.727422212911115], [-70.287112758517381, 41.727145081239101], [-70.28750997099462, 41.726780130934685], [-70.288395329479428, 41.726166540859346], [-70.289158710794396, 41.726077324445079], [-70.28915869266477, 41.725780178524133], [-70.288945159354284, 41.725593316790523], [-70.288945490762714, 41.725341196655144], [-70.290289074448765, 41.724425144678897], [-70.290747140486872, 41.723897670033047], [-70.290839416423353, 41.723626266595872], [-70.291083550633516, 41.722119449352249], [-70.291236577005762, 41.721730553031371], [-70.291511262012648, 41.721448119367665], [-70.292854857962922, 41.721244017240089], [-70.293618258016309, 41.721271288874554], [-70.294869505509666, 41.721680735327496], [-70.296426827087132, 41.72191493677844], [-70.296487703274039, 41.722211645000677], [-70.297556470189846, 41.722298935667482], [-70.298442214504519, 41.722576708828832], [-70.298991702630104, 41.723057489184683], [-70.299480240770905, 41.723763274386094], [-70.301464420691161, 41.725388673938141], [-70.302441140142093, 41.725503583045558], [-70.302350283469934, 41.725297777295523], [-70.301953051173768, 41.724950890550666], [-70.301586735498518, 41.724333655613904], [-70.300518072583387, 41.723399990731593], [-70.300273648995784, 41.723051826359345], [-70.300213005169056, 41.722620146624507], [-70.300029839947257, 41.722415076865246], [-70.299541480796705, 41.722141417069423], [-70.299175033652034, 41.721776296006759], [-70.299175157177643, 41.721290059587723], [-70.298809147216389, 41.721176974888984], [-70.297647945439977, 41.721289157629165], [-70.297160326376257, 41.721015495228336], [-70.297037523412783, 41.720854369447643], [-70.297007536265824, 41.720557537491636], [-70.297312879385146, 41.720355913497109], [-70.298381404363766, 41.720217994046656], [-70.298961872450207, 41.720328300483828], [-70.301312202819204, 41.720265819839398], [-70.302351023630365, 41.720352750456001], [-70.303083237470062, 41.720677856221073], [-70.304151750353185, 41.720719970464273], [-70.304915242507448, 41.72090924642287], [-70.305892235933698, 41.721366296381255], [-70.306564294074903, 41.721818520759975], [-70.307052636972074, 41.72223612995181], [-70.307632481435036, 41.72332840399622], [-70.30793762241403, 41.724225285041378], [-70.308120359089912, 41.72435830215418], [-70.308151718277557, 41.724610213054284], [-70.308395961592296, 41.724886863259002], [-70.308395968531428, 41.725066951084983], [-70.30906720780122, 41.726049779968442], [-70.309220669390655, 41.726444786762862], [-70.309983595923313, 41.726985102649863], [-70.310808242582766, 41.727380907520157], [-70.311296558515409, 41.727519451828492], [-70.3125488927042, 41.727559533168815], [-70.313831489224782, 41.727814850528823], [-70.314564331977337, 41.727815729831036], [-70.314869346953273, 41.727650073107796], [-70.315419189091728, 41.727148218466667], [-70.316579486439863, 41.726783722032579], [-70.318105633154616, 41.726946526372835], [-70.318686086878103, 41.727101662673093], [-70.318717150248418, 41.726741270058142], [-70.318716411804488, 41.726534161839332], [-70.318991809373031, 41.726350718458583], [-70.320579666619366, 41.725918040541309], [-70.321617388023725, 41.725842704107649], [-70.321800138791573, 41.725318380208556], [-70.323022431875387, 41.725277626855153], [-70.326899783303162, 41.725664852751009], [-70.327754809973811, 41.725844202133992], [-70.328152066689043, 41.726118962719532], [-70.328274014785222, 41.726783748988225], [-70.329067909907735, 41.727099145294218], [-70.329068374379673, 41.727585385112036], [-70.329678707735383, 41.72783027584736], [-70.331084037158959, 41.728975929559901], [-70.331419993573576, 41.729134072950124], [-70.332183350169046, 41.729044568091936], [-70.332305512112711, 41.728772899125161], [-70.33157175297012, 41.728492989783653], [-70.33126752022649, 41.728289520384195], [-70.33096133701379, 41.727923411493201], [-70.330136685717022, 41.727356671158446], [-70.329861774639824, 41.726963777623752], [-70.329281868342534, 41.726574050432532], [-70.328731549825775, 41.725796806918517], [-70.328761727385242, 41.725337354866824], [-70.329189706775566, 41.725044072853869], [-70.330746882863309, 41.724863600854178], [-70.332303639464783, 41.724764772824642], [-70.335082382975514, 41.724930555363528], [-70.336517807481187, 41.724814670617256], [-70.338196247360983, 41.724534127361508], [-70.34042523442875, 41.724030638104821], [-70.342166437505952, 41.723992082269248], [-70.343265082442002, 41.724033684809775], [-70.34482247840964, 41.723691035200275], [-70.34631823230184, 41.723619490585179], [-70.347631033989316, 41.723802157829113], [-70.348822750091031, 41.724121531891967], [-70.34964763693732, 41.724535064486624], [-70.350044527545606, 41.725268964815143], [-70.35004537209295, 41.726457544518247], [-70.350992550318551, 41.727986587096069], [-70.351023596551954, 41.728472593694953], [-70.35306935706511, 41.72949323999029], [-70.353742109266264, 41.729702071807758], [-70.354414337502064, 41.729819680574153], [-70.356032557637249, 41.729837121280021], [-70.35642936350223, 41.729769072855945], [-70.357314880885568, 41.729407075574301], [-70.359328569059699, 41.727915623134315], [-70.360121814437832, 41.727158201246688], [-70.360366036268914, 41.726795431169791], [-70.36064071538992, 41.726584868133116], [-70.360976617937013, 41.726472883876042], [-70.361556173372961, 41.726447705639963], [-70.363663579711371, 41.72692743804032], [-70.364305776792619, 41.727225945485699], [-70.364793761321565, 41.727139058196578], [-70.365556634423271, 41.726544544154258], [-70.36671642741976, 41.72606247861966], [-70.367174712686221, 41.726083967549094], [-70.367876783452374, 41.726354867039355], [-70.369557857637005, 41.727658645096739], [-70.37016913635712, 41.727885858264706], [-70.370779408338379, 41.727959444811063], [-70.37154246116728, 41.727842120619698], [-70.372336461175081, 41.727544381879603], [-70.372855010382537, 41.727448218295386], [-70.372701483803439, 41.725828716548847], [-70.372334998495546, 41.725733963753434], [-70.372060572597789, 41.72600749712506], [-70.371725104240866, 41.726858500767484], [-70.371175864904487, 41.727270045548593], [-70.370687728932253, 41.727365962908699], [-70.370106795416845, 41.727292126713351], [-70.369648807986962, 41.727063013503404], [-70.368762919811488, 41.72610083956878], [-70.368029088110035, 41.725668722900394], [-70.367296456968319, 41.725488103520505], [-70.366716201275395, 41.72548566068415], [-70.364640778542409, 41.726149850400461], [-70.363968452617854, 41.726194378354286], [-70.363693630277396, 41.726035230993354], [-70.363571761177639, 41.725811698246574], [-70.363265957657902, 41.725671329710934], [-70.360517855058674, 41.725487363562365], [-70.359327451922752, 41.72579005389192], [-70.358350329972552, 41.725900737718788], [-70.357617913619876, 41.726341355792954], [-70.357007447682051, 41.726979037488007], [-70.356244803369066, 41.728032717366766], [-70.356031934308135, 41.728260729124223], [-70.355420658348237, 41.728331122402459], [-70.354962116942772, 41.728075021189703], [-70.354626109649217, 41.727601706035195], [-70.354503885032472, 41.727252099469823], [-70.354503597246691, 41.726999975603817], [-70.353952797389297, 41.725790104627805], [-70.353158717059728, 41.724602001980742], [-70.352119172206997, 41.723524513111201], [-70.349094825712669, 41.720713893129719], [-70.348758901625132, 41.720600733781382], [-70.348362214639053, 41.720578172634561], [-70.347202628866512, 41.720879877078566], [-70.345736702583366, 41.720987122121805], [-70.344545891435388, 41.720415692788279], [-70.344515557566965, 41.72014579507249], [-70.345857791732271, 41.719499843242843], [-70.347109328749838, 41.71868358585791], [-70.348787712954191, 41.717393772803064], [-70.349978345405219, 41.716758666097121], [-70.350741571070159, 41.716713428564127], [-70.351779587071491, 41.717052561356837], [-70.352848126519447, 41.717760629242875], [-70.353703516362955, 41.718038294867689], [-70.354130839735191, 41.718060605669528], [-70.356603624120439, 41.717788327026362], [-70.359229941886667, 41.718036361807357], [-70.359565802269984, 41.717924381911679], [-70.360023523953146, 41.717576627630173], [-70.360114498223936, 41.717233123568469], [-70.359777851643997, 41.717093066596014], [-70.359259432975549, 41.717441292172623], [-70.358283122332622, 41.717533883623325], [-70.35666427422457, 41.717165927291468], [-70.356023348763614, 41.717119509049319], [-70.354435779683229, 41.717327571543365], [-70.353703176889283, 41.717326950073137], [-70.352847923343631, 41.716553507330183], [-70.352359198929008, 41.71574827672621], [-70.352114003906308, 41.71561641229539], [-70.351840249649229, 41.715682894730548], [-70.351381814527031, 41.716048527853332], [-70.349794177342318, 41.715913729977629], [-70.348542192866248, 41.716072785347521], [-70.347931811920716, 41.716206176732975], [-70.347168879798701, 41.716548451329402], [-70.345826084239803, 41.717329477247816], [-70.345612382311103, 41.7175569209085], [-70.345338518610603, 41.718227217289417], [-70.344178837244925, 41.71936629306785], [-70.34372097134441, 41.719596926770016], [-70.342774517894014, 41.719617114058693], [-70.341339194967262, 41.719363359183291], [-70.341094860744974, 41.719204376636164], [-70.341064900875423, 41.718934571688223], [-70.342712636529697, 41.718906312755266], [-70.343415360322112, 41.718799189406951], [-70.344086710467835, 41.718313561005388], [-70.344116933711788, 41.717719041568969], [-70.344452120948148, 41.717147247442746], [-70.344665677239377, 41.716595648312918], [-70.344665152105776, 41.716046378408606], [-70.344512894023197, 41.715660527866788], [-70.344024136865258, 41.715315021520603], [-70.341886242935928, 41.714583658899912], [-70.341397703820803, 41.714247237643271], [-70.340817321018122, 41.713515308657882], [-70.339077116448664, 41.713058071862264], [-70.338039077813164, 41.712601765338746], [-70.337977719390068, 41.712116615013876], [-70.339228014958778, 41.709255814904616], [-70.339410810220571, 41.708658889878784], [-70.339869035371777, 41.708140228936799], [-70.339806972093101, 41.707726476921039], [-70.340112357292497, 41.707498357788879], [-70.340570511810682, 41.707492850846961], [-70.341516696003893, 41.708346102081791], [-70.342952078602764, 41.70941925299104], [-70.343593282158011, 41.709717870072197], [-70.344417441718079, 41.709807279359737], [-70.344356703892018, 41.709511230331287], [-70.343959503332641, 41.709029336523422], [-70.342982540533896, 41.708752160855042], [-70.342188205347853, 41.708158171127856], [-70.341638442824831, 41.707516150438693], [-70.340997532112738, 41.707037438097913], [-70.340356502478571, 41.706810842515083], [-70.339837384594475, 41.706924859831759], [-70.338433549416621, 41.708049051470347], [-70.337945183765058, 41.708162833861792], [-70.338006887106175, 41.708549480017268], [-70.338128961202784, 41.708755034871814], [-70.338037725638216, 41.709602763363854], [-70.337793733953689, 41.710425250730736], [-70.337396672121784, 41.711087517650078], [-70.336908772706337, 41.711570478939123], [-70.335779140199762, 41.711592696901455], [-70.334832970482708, 41.711504767657516], [-70.33339794242832, 41.711160869888715], [-70.331138222191186, 41.710448854053247], [-70.33086377204981, 41.710244607884206], [-70.330863817669382, 41.709191098377822], [-70.330710932242539, 41.708661062051377], [-70.330710941736484, 41.708003744144669], [-70.3309545790611, 41.707658408421878], [-70.331321435574438, 41.707474254882712], [-70.331961729129731, 41.707430763319913], [-70.33257279193289, 41.707612617532227], [-70.332908475228479, 41.707608676527506], [-70.3329087280149, 41.707410583280542], [-70.332754970631797, 41.707151301869104], [-70.331961428073683, 41.706809459543791], [-70.33092397667869, 41.706605214367968], [-70.330252187717306, 41.706603894788898], [-70.32991659864831, 41.706904882739614], [-70.330313312813757, 41.707242752032883], [-70.329611530695644, 41.707592830848981], [-70.329153949228939, 41.707724360656407], [-70.329092528550504, 41.707266217186103], [-70.328726259205155, 41.707090195141625], [-70.328268184073153, 41.707248729380794], [-70.327749280793114, 41.707290659122371], [-70.327078115964227, 41.707091231285325], [-70.326925517465739, 41.708164599706755], [-70.327566139050532, 41.708346154978024], [-70.328330398349635, 41.708508809852972], [-70.328910157287737, 41.708798954080663], [-70.329062598438838, 41.709004831389571], [-70.329032054055588, 41.709419258052385], [-70.327994804565833, 41.711043504567037], [-70.327597410388904, 41.711390582246025], [-70.326987267493479, 41.711406176750963], [-70.322743193216013, 41.710013956497818], [-70.321003630848679, 41.709331878632021], [-70.320392993213773, 41.70921245691337], [-70.319354958019701, 41.709260763057358], [-70.31859223624015, 41.709035123145036], [-70.317432266909847, 41.709283033743624], [-70.316729936678428, 41.709651127190774], [-70.315630884975164, 41.709853010192894], [-70.313555635337906, 41.709858410656707], [-70.313128025759923, 41.709971549878134], [-70.311662241328719, 41.710042338121127], [-70.310410408441811, 41.709993784531349], [-70.309983048740406, 41.710196418245282], [-70.309647440692146, 41.710272867964477], [-70.309158814529638, 41.710151780370325], [-70.308823348680875, 41.710201215983012], [-70.308395821343211, 41.710592934269066], [-70.308151610423408, 41.710658990868787], [-70.305801256063688, 41.710478490029644], [-70.305190867648349, 41.710224463516965], [-70.304671925977942, 41.710221266074207], [-70.304182913880879, 41.710082774477016], [-70.303572557732011, 41.709513045296369], [-70.303236607909, 41.708760437518819], [-70.303481489014601, 41.707496723612316], [-70.303236458005841, 41.707427244764318], [-70.302687696958557, 41.70749684022266], [-70.302565626862673, 41.707335727927884], [-70.302809503279477, 41.70688303090531], [-70.302779014800336, 41.706631127255186], [-70.302138246567139, 41.705737451750238], [-70.30177192374839, 41.705786541638901], [-70.301924590742942, 41.708000980308121], [-70.302137777574586, 41.708205192857946], [-70.302565557433979, 41.708461817315168], [-70.302565300544629, 41.708776968628811], [-70.302351575463987, 41.708896279372603], [-70.30143618237679, 41.708510709933726], [-70.300336847231364, 41.707343233155846], [-70.299848622544815, 41.707087673633993], [-70.29954354185584, 41.70621715196949], [-70.299605165252913, 41.705514377758881], [-70.299788066567686, 41.70505257978062], [-70.299421658792212, 41.705029535896266], [-70.299207585527256, 41.705212498157074], [-70.298627482269438, 41.706470865191982], [-70.29899394498392, 41.707610458487281], [-70.299878748227641, 41.708023818845604], [-70.299970242074039, 41.709166722084255], [-70.299634995282119, 41.709287537878183], [-70.297833676637552, 41.709442942235448], [-70.297162189880495, 41.709468534128099], [-70.294750240917352, 41.710423330061815], [-70.294078218153899, 41.710629526725228], [-70.293437825822991, 41.710636787088362], [-70.292033017133832, 41.710499246943172], [-70.291208873122898, 41.710310409290237], [-70.289927431755601, 41.710378913601531], [-70.288491954732123, 41.710332128310746], [-70.283302808002375, 41.709849697866552], [-70.281653803758999, 41.709967125455236], [-70.280737912143763, 41.710148662343251], [-70.280341802503727, 41.709810624210093], [-70.279884045094519, 41.709554764625871], [-70.279578497409815, 41.709603264387013], [-70.279608803148946, 41.710080284091227], [-70.278937240741342, 41.709970611234759], [-70.277868846871826, 41.710108258202808], [-70.275364990697042, 41.711064001009085], [-70.274418690910707, 41.711569860422266], [-70.273807424079209, 41.711999992617692], [-70.273288204807855, 41.712185742562731], [-70.270479201609263, 41.712847696858461], [-70.269410667444291, 41.713282410452933], [-70.268005868441406, 41.713667372415479], [-70.266265708668101, 41.713992945362321], [-70.264799793068548, 41.714081139193986], [-70.264341939533395, 41.713987205932412], [-70.263579237190257, 41.714121374504252], [-70.263243379186946, 41.714007961563887], [-70.262510864761865, 41.713439472832853], [-70.261992402115979, 41.71263468929736], [-70.261778446830803, 41.712457315349994], [-70.261810055242094, 41.712159431662158], [-70.262329140538071, 41.711901696573037], [-70.262115720365529, 41.711696775408342], [-70.262145531859886, 41.711516380087495], [-70.262787249098565, 41.711131122726094], [-70.262695765841627, 41.71073564292076], [-70.263062628881386, 41.710326505659978], [-70.263063704972609, 41.709668651531956], [-70.263246210745919, 41.70947757912127], [-70.263857195326366, 41.709182566916695], [-70.2642237144738, 41.709088668418993], [-70.265261299358656, 41.709302529241498], [-70.265535998291526, 41.709209251225808], [-70.265597433010072, 41.708983725575116], [-70.265475374566691, 41.708795559299368], [-70.264620929291254, 41.708525699546996], [-70.264590537370381, 41.708021660309655], [-70.265262084803297, 41.707744226496906], [-70.264987656939084, 41.707351176220435], [-70.264713501837178, 41.707335864981317], [-70.264132973609279, 41.707585649483299], [-70.263766426507004, 41.707625520541939], [-70.262881556388137, 41.707401510119887], [-70.262363294697792, 41.707389122453606], [-70.262362201024587, 41.707830328938932], [-70.263155551797809, 41.708244693866519], [-70.262545416656053, 41.708818849768441], [-70.261841601935672, 41.709619346150177], [-70.261597636692713, 41.710234668242038], [-70.261322859956138, 41.710579430644152], [-70.26086439780201, 41.710809727143022], [-70.26019277438931, 41.710853018659655], [-70.260222741010736, 41.711420626277402], [-70.259978511556469, 41.71172015568645], [-70.259947003788454, 41.71219821960446], [-70.259520451869136, 41.712040495937963], [-70.25927640395372, 41.711655686537313], [-70.259215239181884, 41.711494650284848], [-70.259124762158677, 41.710738999728449], [-70.258789083186812, 41.710580552977717], [-70.258697571862285, 41.71009502470622], [-70.258147734123398, 41.710191407857963], [-70.257537506876275, 41.709864549501681], [-70.257232060906134, 41.709912990588663], [-70.256987692549245, 41.710213052434376], [-70.255705507952186, 41.710416320859643], [-70.255918352259769, 41.710711292730778], [-70.25634668932895, 41.710850500391473], [-70.256986564415115, 41.71087036634043], [-70.257780749409619, 41.711167809741795], [-70.258391299205456, 41.711305576355684], [-70.25839108126452, 41.711953895561216], [-70.258023715166019, 41.71261567779991], [-70.258054185721079, 41.712822482683862], [-70.259457965441499, 41.713365181850193], [-70.259427109607927, 41.71361751083856], [-70.258846214107265, 41.71448857349715], [-70.258021201158655, 41.715218481437681], [-70.257166258184085, 41.715749958536307], [-70.255303531831387, 41.716364961286992], [-70.254386432798526, 41.717419708214145], [-70.254081134421185, 41.717594205474647], [-70.253684656732403, 41.71752629380989], [-70.253288234934175, 41.717233809813905], [-70.254326363473169, 41.716339685146743], [-70.25454107934091, 41.716039844512629], [-70.254510643192532, 41.715535801374791], [-70.253931018158042, 41.714254154516063], [-70.2535965609285, 41.71403276463591], [-70.252985782176978, 41.71385048787679], [-70.252313918949937, 41.713848708308532], [-70.251733777404311, 41.713980836712551], [-70.25118402004324, 41.713960129379856], [-70.250177332475531, 41.713565849992094], [-70.249627390278548, 41.713634637593366], [-70.249627264273045, 41.713886761633127], [-70.250268219178906, 41.714258481865535], [-70.251702524436539, 41.714737950511072], [-70.252771644013038, 41.714582546696768], [-70.25313787083013, 41.714623116982089], [-70.253075533369838, 41.71484925683697], [-70.252373973017967, 41.715216966209113], [-70.251976631799948, 41.715581794032595], [-70.251853632013251, 41.71601545164161], [-70.25185320412595, 41.717231050885445], [-70.252097014901636, 41.717669900644573], [-70.252431096323775, 41.718945444398024], [-70.252156599659841, 41.719425255721575], [-70.251759389362064, 41.719745062105531], [-70.251209100387712, 41.719976564968768], [-70.250720816889469, 41.720017850782874], [-70.25053816695862, 41.719659629149753], [-70.250110517197726, 41.719654934611448], [-70.249926878139789, 41.719881992120605], [-70.249957512268978, 41.720368030014143], [-70.250627923201478, 41.721117628538067], [-70.250597150364982, 41.721505113594461], [-70.250291354937801, 41.721967738560608], [-70.249466485493116, 41.722489944802192], [-70.247543920655502, 41.7232679576219], [-70.24681200509049, 41.723932988191287], [-70.245987455430495, 41.724185038838776], [-70.244613577956599, 41.724371327808086], [-70.242689856818359, 41.72436531647584], [-70.241255315458588, 41.724732155471123], [-70.239241206128085, 41.725420053327731], [-70.238843744137966, 41.725424655671802], [-70.238446903467405, 41.725032525517278], [-70.238476726201398, 41.724167344021851], [-70.237346650234798, 41.724161569597463], [-70.235941870837721, 41.723915735835959], [-70.235636417311824, 41.723729462564386], [-70.235056379641847, 41.72332177876644], [-70.234537270453913, 41.723849526391085], [-70.233957109155469, 41.724261245163191], [-70.233133686610273, 41.724720319414807], [-70.232645295849522, 41.725085689144208], [-70.231242717101807, 41.727694880039309], [-70.230754252263097, 41.728195398791833], [-70.230357950985947, 41.728443106302578], [-70.229808273589441, 41.72846678021299], [-70.229258265671291, 41.728283434162535], [-70.22879968218119, 41.728036273765589], [-70.228188439172214, 41.727511688215067], [-70.227485623987093, 41.726546025375669], [-70.226050287789135, 41.725516966117773], [-70.224308936564924, 41.724670672823308], [-70.223423739419061, 41.724698479488673], [-70.222629813945247, 41.72499464754253], [-70.221927596093522, 41.725380714298588], [-70.22150033570837, 41.725727093362401], [-70.221256156909547, 41.725729933849088], [-70.220797680722072, 41.725365773122697], [-70.22049202652542, 41.724927239896161], [-70.220376450085126, 41.724774574888748], [-70.21991177052341, 41.724834633855266], [-70.219851402933514, 41.725502000643374], [-70.220003724666242, 41.725770427243049], [-70.219974206139938, 41.726139910887198], [-70.221287178758018, 41.726432094382524], [-70.221667017160769, 41.726443653544422], [-70.222172751545884, 41.726458875651055], [-70.222508354402905, 41.726320280411663], [-70.22253889173885, 41.726049406961138], [-70.222874244349782, 41.72565859153967], [-70.22354603393714, 41.725291357448221], [-70.224126230927084, 41.725429507051487], [-70.226203250638434, 41.726640819789054], [-70.227150595858802, 41.72762165101399], [-70.227181319189469, 41.728287788009084], [-70.226998599814664, 41.728559842490085], [-70.226998558497655, 41.728748936754535], [-70.227914444721563, 41.72863139948447], [-70.22812870803574, 41.728700786759994], [-70.228800795098621, 41.729224881240953], [-70.229594774611272, 41.729586089553592], [-70.23048035557008, 41.729747873344714], [-70.231274954238913, 41.729685234671692], [-70.232434883351203, 41.72931213101144], [-70.232740227736997, 41.729407826146193], [-70.23283188192967, 41.729956409974307], [-70.233350831303397, 41.729815861261805], [-70.233411575038701, 41.72931057413269], [-70.233136352661532, 41.728944540671201], [-70.233410974402375, 41.727806815828963], [-70.233654836342993, 41.727686887161397], [-70.234180454908, 41.727621236454716], [-70.233379533498706, 41.726888637254135], [-70.233440441871537, 41.726320320418573], [-70.233562180768715, 41.726066757459684], [-70.233958800402718, 41.725747006615251], [-70.234660377202417, 41.725541489566467], [-70.235881845321003, 41.725564603325154], [-70.236859840845298, 41.725725202957719], [-70.237775624160662, 41.726084283844742], [-70.238020098653763, 41.726315978050096], [-70.238265080595525, 41.726862924881139], [-70.238906185036043, 41.726864985423902], [-70.240464099707879, 41.727370724737625], [-70.240616872707818, 41.727639127722256], [-70.240525926912511, 41.728027025610352], [-70.239366294781831, 41.729588897109117], [-70.23680339499991, 41.732264631213397], [-70.235674971189724, 41.733249354670441], [-70.23485035677804, 41.73372697838402], [-70.232621234407674, 41.734552033458613], [-70.23112616331079, 41.735306888575174], [-70.229660960423786, 41.73617812549314], [-70.228317117397822, 41.736706187185952], [-70.226210488035292, 41.737962361965344], [-70.226119181212823, 41.738260740489906], [-70.224806532830428, 41.738715993868659], [-70.224745649518823, 41.739013631516343], [-70.223157481975335, 41.739453894389285], [-70.222302869959833, 41.739841677892038], [-70.22016541707535, 41.741124950949548], [-70.218272480759566, 41.742081822123758], [-70.216074222141231, 41.742978852235346], [-70.20636226452649, 41.746224843571177], [-70.203491265961887, 41.74725473162637], [-70.194600058347433, 41.750103328905382], [-70.189254709969262, 41.751978458557247], [-70.188277679384129, 41.751610359546731], [-70.187269542071135, 41.750837318288958], [-70.186750086234994, 41.750626475997123], [-70.184703854089634, 41.750656350745857], [-70.182075931103398, 41.750881431838543], [-70.179754610138019, 41.75129298005335], [-70.176027695703652, 41.752231757560367], [-70.173888771736529, 41.753028002327511], [-70.171597621811571, 41.754150559325765], [-70.171323396758197, 41.754216516008057], [-70.170436898041899, 41.754216346490111], [-70.169367644593635, 41.754497589903259], [-70.165090909078458, 41.75589224539118], [-70.164601699067887, 41.755869672337838], [-70.163441131928565, 41.75563877882216], [-70.162524428225396, 41.755701766040076], [-70.160385611873508, 41.756209614230471], [-70.159011366524282, 41.756115733693001], [-70.158277995693098, 41.756140864623212], [-70.156719965862138, 41.756408938006025], [-70.156169902096124, 41.75636931272625], [-70.156169690408774, 41.756162204048927], [-70.155528490980799, 41.755790490641353], [-70.154673167332291, 41.755222645338023], [-70.153573989468129, 41.754882699511526], [-70.152871873868008, 41.7541962594957], [-70.152902211703321, 41.753556119710915], [-70.152719692246535, 41.753161719486272], [-70.153666160266866, 41.752683870155188], [-70.153941366421463, 41.752429320613835], [-70.154247830017837, 41.751741297108865], [-70.154828164224313, 41.750969793279197], [-70.154948579024307, 41.750088222307902], [-70.155015169656565, 41.749472732470082], [-70.155168443077358, 41.749246095203532], [-70.155168280614376, 41.748876904060644], [-70.154954255585167, 41.748762359136649], [-70.154343702264086, 41.748903182834034], [-70.153456610959992, 41.749470614581512], [-70.153087619625055, 41.750096034778167], [-70.15247599024967, 41.750993764680409], [-70.151405434935853, 41.753715708099151], [-70.152352073312883, 41.754444491082829], [-70.153512894686145, 41.755567409067112], [-70.153909443799904, 41.756437170031951], [-70.154000944424169, 41.756751702152108], [-70.152472600358038, 41.756568756933994], [-70.151190145535409, 41.756689727714523], [-70.14899008309753, 41.757261381390798], [-70.146728689245805, 41.758103483900008], [-70.143948181287143, 41.759455418895328], [-70.143367054206166, 41.759676946909359], [-70.141534165014832, 41.760064814012992], [-70.139365198458222, 41.759680992188201], [-70.13826585693154, 41.759331892056153], [-70.137104691172908, 41.759361317212637], [-70.134813017336228, 41.76032051435736], [-70.134476782177842, 41.760386810498943], [-70.131849597062754, 41.759881371308154], [-70.130505277989343, 41.759444249195404], [-70.127541925766835, 41.759005084093353], [-70.126320225365305, 41.7589357892085], [-70.124470258226197, 41.758872943367187], [-70.124041282624802, 41.758616171854797], [-70.124469815353734, 41.758368676554916], [-70.124824740233748, 41.757473575966543], [-70.125069182203688, 41.757291390862868], [-70.126902839264218, 41.756885788313134], [-70.12794239279178, 41.756217922816916], [-70.128674845252306, 41.75612994333941], [-70.129164421097002, 41.755485249663927], [-70.129330529172179, 41.755186673078612], [-70.128523437622675, 41.755077366227958], [-70.127239333422821, 41.7557384176677], [-70.126384285504557, 41.756287479228256], [-70.125588885520813, 41.756556488744323], [-70.124468397211331, 41.756603204167554], [-70.124101509006607, 41.756697193982724], [-70.123429838874515, 41.757379106546558], [-70.123062818735505, 41.757562597929045], [-70.122605427655216, 41.75799946743011], [-70.122208623770732, 41.758570967287973], [-70.121873095182295, 41.758916379701688], [-70.120010100472797, 41.759601232173786], [-70.118452625581611, 41.760382148520158], [-70.117108793061377, 41.760881360064836], [-70.116559280296229, 41.760932047433485], [-70.115458747970479, 41.76068122276174], [-70.115000886576794, 41.760631713857435], [-70.114817466694305, 41.761048201411825], [-70.1147872179167, 41.761228467551007], [-70.114451166645892, 41.761456881508344], [-70.112038243872931, 41.762308795749945], [-70.110206182901862, 41.762695631561918], [-70.108525441331309, 41.762694203496615], [-70.106356151550102, 41.763156189643425], [-70.096061303212537, 41.76654278621082], [-70.09147900713549, 41.768351280673357], [-70.090440323764525, 41.768631717859364], [-70.087812248905081, 41.768557479179123], [-70.08646824414501, 41.768398986699637], [-70.085092742638381, 41.768511399718193], [-70.082343326899235, 41.769113674479804], [-70.078707856703488, 41.770715165227699], [-70.077209931555387, 41.771557502087248], [-70.076171610405041, 41.771945871852346], [-70.074216168141106, 41.772405422577847], [-70.073147007961097, 41.772928900981142], [-70.070977003048867, 41.772975993035409], [-70.070549492790704, 41.772863113279527], [-70.069418638207893, 41.772197785230233], [-70.068746229246628, 41.772041932154998], [-70.067279476897667, 41.772109582143024], [-70.064315138635962, 41.772839922375887], [-70.059517669967789, 41.774532507079471], [-70.055972979351182, 41.775654836102653], [-70.050166043744426, 41.777689923310483], [-70.048546354811307, 41.778128006273249], [-70.04686552767761, 41.778719448914252], [-70.036473440622856, 41.782831041018682], [-70.034883879643587, 41.783340817746264], [-70.034119460535379, 41.783816076189694], [-70.032316110313502, 41.784480651606167], [-70.030236911964678, 41.785507957431228], [-70.029014272418891, 41.786374654388489], [-70.027822352445327, 41.786700905525031], [-70.027271215812547, 41.786975725351972], [-70.025162288680889, 41.787381853499859], [-70.024734486666873, 41.787358846696947], [-70.024520741774722, 41.787288543149359], [-70.023971074987088, 41.787041085879061], [-70.023481261058265, 41.787379175450035], [-70.022992902024754, 41.787310983617822], [-70.021220089245972, 41.786741488529429], [-70.020944671983528, 41.786555025864217], [-70.020975443380735, 41.786104552880687], [-70.020762212393535, 41.786007234318213], [-70.019937004661713, 41.786005524214595], [-70.019600286266666, 41.786143606982399], [-70.019582351122025, 41.786429277753868], [-70.019966164594905, 41.786335750325549], [-70.020348520563545, 41.786289478113048], [-70.020546829000125, 41.78644405459724], [-70.020631467414816, 41.786815432467868], [-70.020937432042444, 41.787158256202972], [-70.021151244833845, 41.78721506014957], [-70.021548524078611, 41.787220755343412], [-70.021769926461062, 41.787271983536272], [-70.022014589409622, 41.787357911460361], [-70.022259149714927, 41.787495075045896], [-70.022347932386126, 41.787739897201313], [-70.02286927415372, 41.788348269180887], [-70.022838329916723, 41.788645567963798], [-70.022227761365571, 41.788299970639166], [-70.02173872646442, 41.78811524213716], [-70.021280449173503, 41.788046802894151], [-70.020974394677694, 41.788112618641428], [-70.020974528698233, 41.788319731694763], [-70.021585131801331, 41.788918102079499], [-70.021829763284899, 41.789005650777291], [-70.022135707806086, 41.789417627926341], [-70.02210403582896, 41.789715007155891], [-70.0218899182629, 41.790013892019864], [-70.020820436656891, 41.79102314540625], [-70.020147544862013, 41.791777029578768], [-70.01916817473591, 41.792551061091338], [-70.018495373307331, 41.793512048451753], [-70.017883341284417, 41.793922816023354], [-70.016630691678046, 41.79459088717914], [-70.016202302069033, 41.795000073656503], [-70.015375569164448, 41.796367679199705], [-70.013510346925017, 41.79712282716892], [-70.013938088236429, 41.797425024802166], [-70.014029128932663, 41.797649622081067], [-70.013876173374996, 41.797903095347387], [-70.013417464648441, 41.79822245855204], [-70.012530874236688, 41.798653209663385], [-70.011521977638779, 41.798842647689575], [-70.008677653882984, 41.799911983671279], [-70.008372069604306, 41.799887724027599], [-70.00773026996842, 41.799497156899839], [-70.007088507126937, 41.799295688593212], [-70.006202093556851, 41.799294790505748], [-70.005560599358759, 41.799390477504225], [-70.005407004694973, 41.799571982641297], [-70.004978324480547, 41.800872606105528], [-70.004501323443705, 41.800922088681993], [-70.004372301106514, 41.800717246020923], [-70.004139064628532, 41.800543092878655], [-70.003786498017632, 41.80027957542071], [-70.003310949634226, 41.799774642394311], [-70.003143283647987, 41.799596305403128], [-70.002961619101541, 41.799404276988049], [-70.002472719354216, 41.799227842616133], [-70.002044631773003, 41.799249772188816], [-70.001065869213974, 41.799609526193947], [-70.000240382672303, 41.799724735455989], [-70.000535195009221, 41.799869270377812], [-70.000987626992668, 41.800091968737163], [-70.000881050326385, 41.800289754787102], [-70.001102647213742, 41.80041594579788], [-70.0012166533905, 41.800204119596479], [-70.001929355242126, 41.800059325708375], [-70.002240773244068, 41.800106731767173], [-70.002523070053044, 41.800220750594981], [-70.002729054238074, 41.800289282227524], [-70.002966003313233, 41.800243408126093], [-70.002759097251044, 41.799860234732357], [-70.003236129405863, 41.800158077655908], [-70.003419248491298, 41.800462685514951], [-70.004183255410311, 41.800870639464073], [-70.004182651926868, 41.801491967201471], [-70.004274098737071, 41.801698027905218], [-70.004732483648951, 41.801811560162967], [-70.00522216886236, 41.801698668550038], [-70.005404770598915, 41.801383641667279], [-70.005691629653143, 41.801164532430548], [-70.005754167093855, 41.800981292909967], [-70.006239597606708, 41.800119226854392], [-70.006476764776352, 41.799868487768158], [-70.007485377149322, 41.800093944135909], [-70.008462563190292, 41.800778678194], [-70.00956339739335, 41.801147689395165], [-70.00977737065061, 41.801307441739979], [-70.009716761148709, 41.801470447602668], [-70.008920401697566, 41.801945754575421], [-70.008706335400191, 41.802433718686544], [-70.006931485097681, 41.803980660812712], [-70.006625755000798, 41.804460666910806], [-70.006411778849085, 41.805200764207171], [-70.005708272624616, 41.805675555254446], [-70.005523606661527, 41.80592923253279], [-70.005126039079656, 41.806203170176452], [-70.00448452163873, 41.806568997554038], [-70.003169326101315, 41.806823592022425], [-70.001609532754699, 41.807386705030382], [-70.000966752149637, 41.807707562118139], [-70.00056941198838, 41.808098550520015], [-70.000507744561801, 41.808720155594877], [-70.000721490405709, 41.80892557652021], [-70.001485509753437, 41.809269973067451], [-70.001240062953485, 41.809650533715534], [-70.001270890258837, 41.809839500898399], [-70.001454125631341, 41.810063069251811], [-70.002065573529947, 41.810390778023653], [-70.002065437945916, 41.810570873519936], [-70.001301020732598, 41.810703823810123], [-70.00154468663068, 41.810963035238096], [-70.001973198421169, 41.81112120937216], [-70.002798406796913, 41.811023991809591], [-70.003196785060311, 41.810732603044357], [-70.003227060870572, 41.810452769265929], [-70.002187570326598, 41.809885317111892], [-70.002126992787396, 41.809697129943636], [-70.003167215828938, 41.80938148548676], [-70.003472316809138, 41.809171625746039], [-70.003472934225059, 41.808919497715031], [-70.003289667928598, 41.808650908148053], [-70.002922932532371, 41.808491929206866], [-70.002892302107171, 41.808258481072187], [-70.003840575956758, 41.808511270730065], [-70.005001466507423, 41.80993296999111], [-70.005275471607234, 41.810408147472032], [-70.005244686267048, 41.811254740743024], [-70.00567183498012, 41.811692573802553], [-70.005641088195645, 41.812332145917622], [-70.005426266379118, 41.812541484207244], [-70.005181575476016, 41.812633367322846], [-70.003775976495191, 41.81256486115808], [-70.003347478742285, 41.812631275403184], [-70.0031335275212, 41.812741567442615], [-70.002796899002547, 41.813365776329817], [-70.002367922893683, 41.81388305389229], [-70.001510775131663, 41.815466731941505], [-70.000010005302585, 41.817155129013678], [-69.999432487782087, 41.818443059068464], [-69.999061888346844, 41.818922192353917], [-69.998761977017367, 41.819456284466405], [-69.998471347820555, 41.819559975451611], [-69.997824146242081, 41.819551450212458], [-69.99725547094512, 41.819275521204133], [-69.996173054548564, 41.81942216646803], [-69.996621738270278, 41.818675096449439], [-69.996419004611525, 41.818134382018592], [-69.995707590347848, 41.817801903145124], [-69.995341312399603, 41.818066135165012], [-69.994476542891178, 41.818162237376939], [-69.994328686978093, 41.818321742244777], [-69.994901484450864, 41.818437363773427], [-69.995408448638187, 41.818281967469325], [-69.995906509565728, 41.818504115787647], [-69.996117333038598, 41.818721933160653], [-69.995893828834767, 41.819041989542768], [-69.9953821658506, 41.819411732048323], [-69.995303255532605, 41.819679756227984], [-69.995442223284996, 41.819897166774815], [-69.995872274285034, 41.81995623985285], [-69.996159102698812, 41.820014052649817], [-69.996436337104271, 41.820448321830163], [-69.996798350336704, 41.820345036807495], [-69.996670348392286, 41.819697790087233], [-69.996960138745962, 41.819594092588048], [-69.997531332084463, 41.819763168449327], [-69.998100360934643, 41.820039640950121], [-69.998459947027499, 41.820044377130884], [-69.998969429388026, 41.819782110374085], [-69.999481435580705, 41.81941235653143], [-70.000283647220783, 41.819197159544188], [-70.000774454908353, 41.818048741141766], [-70.000927529670776, 41.817318028289151], [-70.002396842672084, 41.816404794839912], [-70.00285533118678, 41.816292582745071], [-70.003558313555644, 41.816313068101088], [-70.003833371468232, 41.816518206799742], [-70.004168201020391, 41.817685847717406], [-70.004013769621849, 41.819975016784731], [-70.003947931969094, 41.825190214386268], [-70.00379485813292, 41.825921561093772], [-70.003761612154179, 41.829073903290876], [-70.003822470492111, 41.829235708541439], [-70.004280884809205, 41.82998795420874], [-70.00431092541271, 41.830996891318094], [-70.004187699304097, 41.831502428096762], [-70.00427534528535, 41.83585174807304], [-70.004367194008339, 41.8362379098172], [-70.004487577594659, 41.838822167776414], [-70.004579106961842, 41.839073252362553], [-70.004669382074226, 41.84015339630983], [-70.005339322827112, 41.844128179527019], [-70.005369711750191, 41.844794395534393], [-70.005521734089456, 41.845964224962806], [-70.006526696204261, 41.851359486981458], [-70.006739222190319, 41.853969167694117], [-70.007470813948302, 41.856917107146565], [-70.00768429549322, 41.85810403460453], [-70.007713501631812, 41.859527179087166], [-70.007955947529197, 41.861695469753862], [-70.007985210070217, 41.863595239673401], [-70.008442563736864, 41.865996501604663], [-70.008778486850233, 41.867101191277946], [-70.009143580692196, 41.871033772825271], [-70.009295270059312, 41.871744343452363], [-70.009017952070849, 41.873844965177398], [-70.009045849014598, 41.875114467757825], [-70.009013668376141, 41.876619021505959], [-70.008707662669025, 41.876936945031908], [-70.008461648271975, 41.878037899865902], [-70.008307609728604, 41.878858746151074], [-70.008032321229621, 41.879248477654272], [-70.007787484080666, 41.87941303616671], [-70.007511013212934, 41.879415634138972], [-70.007267033069013, 41.879255399175278], [-70.006838199172989, 41.879250329442016], [-70.005797226501386, 41.879709457492787], [-70.005276561921178, 41.879704890474137], [-70.004909840892594, 41.879383837581983], [-70.004512126228718, 41.879387631329003], [-70.004267144128391, 41.87954254535903], [-70.003593024686737, 41.880413388639163], [-70.003561591944518, 41.881079873346813], [-70.004204174785485, 41.881471001971136], [-70.004234552795836, 41.881876076578273], [-70.004050347719868, 41.882264741391637], [-70.004662092998743, 41.882979636335719], [-70.004631697784021, 41.883232543530156], [-70.004263611352883, 41.883415650605734], [-70.003222623148886, 41.883712669249732], [-70.002701491062979, 41.884095922288424], [-70.001230758544494, 41.88594619848643], [-70.000189545304053, 41.886936558372724], [-69.99945440493525, 41.887276372948357], [-69.998618093535782, 41.887526514788988], [-69.998555856064868, 41.887324258192372], [-69.998702984530667, 41.886787615079399], [-69.999318385735648, 41.886476577295028], [-69.999577313605755, 41.885992010162838], [-69.999696138488915, 41.885740896883853], [-69.999635909374561, 41.885437903306183], [-69.999438438713028, 41.885216309938912], [-69.998760369475178, 41.885308156966865], [-69.998468273087624, 41.885287475492376], [-69.998408448979106, 41.884967557430798], [-69.998687014703691, 41.884600853631106], [-69.99842588093847, 41.88422768040396], [-69.997801962911225, 41.883949865531171], [-69.997694136046533, 41.883780236074955], [-69.997701259328167, 41.883478037783746], [-69.997686699900882, 41.88312440664992], [-69.997189620836949, 41.883201787358075], [-69.996903036092959, 41.883887963340186], [-69.996608137873835, 41.884001682209444], [-69.996602973576898, 41.88422061162575], [-69.997155513774914, 41.88464823381257], [-69.997537230946293, 41.88467018857105], [-69.997759609646238, 41.884790718850901], [-69.997845631933444, 41.884960151275259], [-69.997729092789811, 41.885160055345004], [-69.99772512690059, 41.885328303345496], [-69.997581211723656, 41.886638322058296], [-69.996964483520529, 41.887051177716202], [-69.996567676049821, 41.887617217749202], [-69.99618157452457, 41.887780341464946], [-69.995925944039826, 41.888113573563416], [-69.995231876151365, 41.888912068289756], [-69.994549353120078, 41.889205810253273], [-69.994634513608545, 41.889442229632472], [-69.995184730552779, 41.889954295625394], [-69.995523219895233, 41.889924989608048], [-69.995946154475263, 41.89013200142854], [-69.996106306010489, 41.889999669603881], [-69.996628777156261, 41.889788185350156], [-69.997010430888508, 41.889860117397191], [-69.997232427616694, 41.889997572467649], [-69.997660017784298, 41.889986902536265], [-69.998343452897728, 41.889659295715241], [-69.998787802226374, 41.889883507711758], [-69.999451322743596, 41.890590736423832], [-70.00033825605243, 41.891258573908551], [-70.001347928343591, 41.891853185768788], [-70.002113702930416, 41.891991015681185], [-70.003030986364394, 41.89255909631509], [-70.003306246460141, 41.892836272032362], [-70.003152788824607, 41.893386884998442], [-70.002938346865847, 41.893793791632426], [-70.002815017397978, 41.894344258785807], [-70.00269282179957, 41.894579662602467], [-70.001773975994425, 41.894686920085874], [-70.001253434946307, 41.894943477511745], [-70.000272105124594, 41.896087077068621], [-69.999935127452318, 41.896450225875554], [-69.99971916317871, 41.898118320946658], [-69.999473693391749, 41.898372272091827], [-69.999125298619546, 41.898533740853672], [-69.998960397286851, 41.898800546262457], [-69.999065854010425, 41.899138532788939], [-69.998880370672083, 41.899337531603727], [-69.99865589191009, 41.899334579599739], [-69.998148037457312, 41.89890755466319], [-69.997425745299566, 41.898982425031022], [-69.997399619815184, 41.899149840890857], [-69.997770721010099, 41.899625766822652], [-69.997809469011898, 41.899878951827397], [-69.998731275218077, 41.899941144702083], [-69.999021390211496, 41.900079491448089], [-69.999472562220291, 41.900083711700567], [-69.999748040879638, 41.900045189784187], [-69.999962607188905, 41.899701324123811], [-70.001708180711887, 41.899884082848551], [-70.003177778753724, 41.900501550487036], [-70.003268840459171, 41.900663210034566], [-70.003237750237318, 41.900960501251056], [-70.003084353775108, 41.90120495147125], [-70.002655281546637, 41.901578156703316], [-70.002378928624552, 41.901940847218313], [-70.002440997677169, 41.90226421355824], [-70.002655277811755, 41.902424608296442], [-70.002961263178534, 41.902421867521745], [-70.00348191981827, 41.902147293666907], [-70.004645775960284, 41.901137077486368], [-70.00489143972483, 41.901054209176458], [-70.005411856397473, 41.901076782015323], [-70.005686671606782, 41.901164214226945], [-70.005900831274005, 41.901504697236177], [-70.005593561451136, 41.903335403201318], [-70.005683505372986, 41.905667742189621], [-70.005315677604401, 41.906039958095185], [-70.004765045401399, 41.906152601895236], [-70.004672718063745, 41.905397240850661], [-70.004428405892369, 41.905165048675045], [-70.003755784576171, 41.904918688932575], [-70.002988918551821, 41.904979593933348], [-70.002131972605895, 41.905329086573268], [-70.001763730350604, 41.905918031474435], [-70.001242324095855, 41.90638168895201], [-70.000660857217724, 41.906585036934821], [-69.999466460955446, 41.906469211942721], [-69.998695212601078, 41.906264929232478], [-69.998276129862447, 41.90588959012252], [-69.99787174866745, 41.905867431409298], [-69.997188259909905, 41.906194946530427], [-69.996271172512522, 41.906889208854338], [-69.995622095555774, 41.907688299894595], [-69.994564960342743, 41.908599070086801], [-69.994332173443823, 41.908915671397118], [-69.994087937430052, 41.909736931169505], [-69.993966956715809, 41.910071305090575], [-69.993450656079844, 41.910014426980382], [-69.993246615341533, 41.90912025769039], [-69.993141495743089, 41.908799199392298], [-69.992716065261419, 41.908692819935219], [-69.992694194111252, 41.909617235931997], [-69.992439219795713, 41.909933540617914], [-69.991944432352255, 41.909910077448785], [-69.991326766461839, 41.909363879616734], [-69.991013467944924, 41.909292203233129], [-69.990983761450408, 41.909594642737765], [-69.991417459005334, 41.910273484154928], [-69.991683826906822, 41.910428374260015], [-69.991790501108156, 41.910698847373055], [-69.991150897694411, 41.911093902850411], [-69.990893924489853, 41.91149401267738], [-69.990395055451359, 41.911621950079152], [-69.989699253713454, 41.911528913680492], [-69.989358940670499, 41.911625085628621], [-69.989239986976273, 41.911893116141741], [-69.989688491122422, 41.911982884457252], [-69.989972704185632, 41.912356471477352], [-69.989340194088754, 41.912415641048874], [-69.989001625350525, 41.91247869732728], [-69.988657314338099, 41.912743114484094], [-69.988765608318403, 41.912929686759774], [-69.988754048685678, 41.913416964775458], [-69.989366257189189, 41.913222997708942], [-69.989370231946268, 41.913055380531304], [-69.989664974236604, 41.912974814364077], [-69.990138758031421, 41.912964781582048], [-69.990776039434891, 41.912653535901676], [-69.991093593161494, 41.912556428596055], [-69.991542891443657, 41.91261297224591], [-69.991846534541224, 41.913088115045994], [-69.992490535568749, 41.912507884766349], [-69.99259048175314, 41.912105158216839], [-69.991875198192929, 41.91187734602569], [-69.992198795767237, 41.911545019681952], [-69.993102946977501, 41.911371816865781], [-69.994090951958114, 41.911486156045022], [-69.994887565408789, 41.912119072321047], [-69.995636972565151, 41.912801517645427], [-69.99563180472768, 41.913020356247515], [-69.994930340494719, 41.913145644087479], [-69.994701912210033, 41.913277164765354], [-69.994354923929123, 41.913676095410601], [-69.993723966097292, 41.914643084926546], [-69.994026099514059, 41.915218875595777], [-69.995001217225678, 41.915871073383762], [-69.998439547839894, 41.915210092330369], [-69.999458784466754, 41.914728226778408], [-70.000531657578435, 41.914061827955642], [-70.000991111323927, 41.91328282221378], [-70.001083494524806, 41.912733031562375], [-70.000838760734553, 41.912374669268225], [-69.999461685346887, 41.912143256681752], [-69.998602897950221, 41.912100450666273], [-69.997873387544388, 41.911519050615915], [-69.996669056560819, 41.911049087832197], [-69.996204835098453, 41.910639379165936], [-69.9958911718401, 41.91061840860835], [-69.995673950508845, 41.910245178986756], [-69.995858678290915, 41.910079943104094], [-69.996511740540655, 41.910088544507886], [-69.997091080931895, 41.910314538413033], [-69.997800422119269, 41.910794374364222], [-69.998387582299685, 41.910735102119119], [-69.999025162649417, 41.910423814873454], [-69.999462485346257, 41.910333301692539], [-70.001178109698529, 41.910264166859356], [-70.001117370430848, 41.910012315652715], [-70.000688335357921, 41.909674045210402], [-70.000688179516942, 41.909439918298048], [-70.001883177715754, 41.909168621246515], [-70.002863363968473, 41.909168511301054], [-70.004485229849919, 41.909533119458935], [-70.005589032219333, 41.909469320381767], [-70.006139763271989, 41.909518129507667], [-70.007302759911511, 41.909742161073829], [-70.008833883771146, 41.91025121802749], [-70.010303233747365, 41.911273891445184], [-70.011160132140148, 41.911572680873554], [-70.011834139513027, 41.911665842320176], [-70.012997377388018, 41.91155664142812], [-70.013793737642587, 41.911252382984273], [-70.014529843559629, 41.910750400734351], [-70.014774672980209, 41.910802571691669], [-70.015050225100509, 41.911052076113066], [-70.015569734720799, 41.912038100489454], [-70.016028705462631, 41.912151043186633], [-70.016274032455243, 41.912032036592677], [-70.016274332776689, 41.911806921197467], [-70.015877037178882, 41.911396002764704], [-70.01557066256035, 41.91070486576799], [-70.015233998075189, 41.910429174451686], [-70.015020076080731, 41.909971651256718], [-70.013642523870729, 41.909497364454104], [-70.013336141253774, 41.909148942721991], [-70.013734907828876, 41.908766928803594], [-70.013796597621266, 41.908370350927434], [-70.013582148930325, 41.908209975837728], [-70.012174379426497, 41.907663779239087], [-70.010979540080058, 41.907322859775888], [-70.010980128741096, 41.907070733463769], [-70.011744918204442, 41.907001373056715], [-70.012663567936016, 41.907317255550943], [-70.013000608999221, 41.907188284904365], [-70.012571999417418, 41.906912558340075], [-70.012511600908638, 41.906706282309692], [-70.014685232208393, 41.906867401365311], [-70.014716226286424, 41.906587575861025], [-70.015083980417998, 41.906521401825941], [-70.016614562625819, 41.906840707178489], [-70.0171350882311, 41.906845217768783], [-70.01719694191172, 41.906502759112414], [-70.017686100338622, 41.906570433540274], [-70.019891111547025, 41.907487721106612], [-70.022339949823049, 41.909131833690047], [-70.025553472459663, 41.911696960604978], [-70.026379752225324, 41.91260864320509], [-70.02686956796866, 41.913270689441148], [-70.027084046403402, 41.913755210490351], [-70.027573591306364, 41.914074979638677], [-70.029563505021386, 41.916065367766969], [-70.029808375313465, 41.916477606271449], [-70.031828310158559, 41.919656424034557], [-70.03231735745716, 41.920408933004573], [-70.032654100639093, 41.921738667317193], [-70.032654157169901, 41.922720184021031], [-70.03213292436439, 41.924373147818166], [-70.031121116991059, 41.924850896532291], [-70.03075370898037, 41.924872104035032], [-70.030538900614374, 41.924738771647505], [-70.030172610109091, 41.922814878419935], [-70.029713666061625, 41.92191813202853], [-70.029438311094736, 41.921488482269197], [-70.029346898424095, 41.921029774220841], [-70.029438686533723, 41.920479956156903], [-70.029163033895728, 41.920094875213088], [-70.028489808748319, 41.919425434052918], [-70.027510324833031, 41.918767888349137], [-70.027448803867458, 41.918398981014995], [-70.02705119811823, 41.91846589104712], [-70.026591755092184, 41.918667703396402], [-70.024172144802748, 41.918671306471921], [-70.023405989141708, 41.91890344990675], [-70.022731863065957, 41.919378106258421], [-70.022548037133078, 41.919703861307141], [-70.022578368741435, 41.920361060481063], [-70.022761969066551, 41.920845730251436], [-70.023404488048669, 41.921506344177587], [-70.024415054000016, 41.922055729283883], [-70.02456781159222, 41.922243470946292], [-70.023617259844386, 41.925170065789175], [-70.023555129324905, 41.925603201373583], [-70.023371192486337, 41.925901942064684], [-70.022512879677436, 41.926287590526975], [-70.022237186883302, 41.927271754490803], [-70.022481635782313, 41.928918283374983], [-70.022665363404784, 41.929330916290915], [-70.023705954017885, 41.930816647138741], [-70.023796824252344, 41.931094717488399], [-70.023796193892096, 41.932094776001811], [-70.024102977531712, 41.932875399288775], [-70.027073539927059, 41.933470327915622], [-70.028329904001296, 41.933522001131401], [-70.028636548329914, 41.932969909489572], [-70.028667608916706, 41.932168348361962], [-70.02854507866337, 41.932006935869644], [-70.027932419599509, 41.93196752480312], [-70.027166458687276, 41.932028517555601], [-70.026891274414567, 41.931913580132949], [-70.026891241284076, 41.931508366568544], [-70.027136126374018, 41.93125434945221], [-70.028515040572088, 41.930890502199162], [-70.0289132733553, 41.930617025656211], [-70.02891375521645, 41.930220283292307], [-70.024778517932631, 41.929789287343951], [-70.024839700497878, 41.929329214893116], [-70.028484911011134, 41.929584967773998], [-70.0292814243751, 41.92937974396289], [-70.029526759705021, 41.929215144702866], [-70.029771662587578, 41.928808041890832], [-70.030139683205562, 41.928714266994888], [-70.030537037928696, 41.929152147542339], [-70.031027533945704, 41.929399964132337], [-70.032466741468795, 41.929792161977858], [-70.033692466188967, 41.930024558493841], [-70.036387763236277, 41.930180153071753], [-70.038041760273316, 41.930111289285357], [-70.044995445662849, 41.930048086406771], [-70.048794107724675, 41.92940080248875], [-70.051183783268058, 41.928811528011067], [-70.0542781017853, 41.927441504810936], [-70.057738824718527, 41.926040548328622], [-70.058382339459584, 41.925881546190467], [-70.05982242655476, 41.925769147269762], [-70.060710701101002, 41.926229408616344], [-70.063467568389399, 41.928076939337409], [-70.064233452488992, 41.928304302961926], [-70.06564218883247, 41.928579267122934], [-70.066010177467646, 41.928720038602258], [-70.06607104802633, 41.928881806317001], [-70.06518317799059, 41.929015810975137], [-70.064569974808762, 41.92947184637697], [-70.064080114023781, 41.930088721954704], [-70.064325259579533, 41.930500975910441], [-70.064447670969756, 41.930751763802867], [-70.064846066233812, 41.931234648223132], [-70.065060053573077, 41.931322881165514], [-70.065489485437837, 41.931327645121762], [-70.067388428679138, 41.930940686447556], [-70.068399187458979, 41.930571202049521], [-70.069042641047545, 41.930141999056644], [-70.070574146371328, 41.928812728723273], [-70.070972388726318, 41.927944260449593], [-70.070910617700022, 41.925908974365768], [-70.07078858634506, 41.925721140837027], [-70.070757094965856, 41.924856929426774], [-70.069990703140675, 41.923981717235542], [-70.069960187756635, 41.92372974477572], [-70.069654879796772, 41.923434980560316], [-70.069041586760122, 41.923179669501593], [-70.06726502599335, 41.923277247195138], [-70.066039675091631, 41.923162816670072], [-70.065397185416103, 41.922727025497956], [-70.064906717954045, 41.922704564692992], [-70.063068911132206, 41.923550406564871], [-70.062333855797235, 41.923530439941452], [-70.057801164771803, 41.921077501886288], [-70.056912798830353, 41.920923374870753], [-70.055534346222643, 41.92139553257681], [-70.054523728059451, 41.921899974744953], [-70.054248042076708, 41.92157852913693], [-70.054186341703669, 41.921056556211909], [-70.054370244784224, 41.920640706317393], [-70.054921685927994, 41.919887959582248], [-70.055809991582052, 41.919177110662226], [-70.058229713785479, 41.917741092879574], [-70.062577978836558, 41.915566080557007], [-70.063865001809887, 41.914761767842755], [-70.06499757202792, 41.913940822391275], [-70.065855620219779, 41.912824846994702], [-70.066253132657636, 41.912640740766136], [-70.066896442406417, 41.912526713260746], [-70.067263776354423, 41.912226244523133], [-70.067171918966395, 41.911840141809726], [-70.066008266500191, 41.911634814396237], [-70.065671331091878, 41.911655885512573], [-70.065334603225665, 41.911839042546823], [-70.064722623981211, 41.911862867915843], [-70.065120628762813, 41.910147435196961], [-70.065150609561911, 41.909570971825183], [-70.06606860685423, 41.904771121028752], [-70.06652816584004, 41.903514615223045], [-70.066558913781364, 41.90241579901835], [-70.065670221881547, 41.901082118306647], [-70.065425848802917, 41.900741912093302], [-70.065547919742158, 41.900561100988746], [-70.065945772148893, 41.900304963329212], [-70.06747622109161, 41.900146335530373], [-70.067752424098714, 41.90026127912239], [-70.067813874163889, 41.900675095077794], [-70.068732080231172, 41.900648340615135], [-70.068855087123339, 41.900403964744989], [-70.069497522131087, 41.900172852203625], [-70.070232779620383, 41.89968842630082], [-70.070845040488919, 41.89900723474323], [-70.070783443032482, 41.897674940952257], [-70.069649936859733, 41.89378593691675], [-70.069251643870032, 41.892303545786511], [-70.069281984545043, 41.890952141765574], [-70.069587933224994, 41.889165753568449], [-70.069556895834722, 41.887617097592894], [-70.069189904902231, 41.885810387963716], [-70.069067157477832, 41.884316320844505], [-70.069220075422677, 41.883494938474762], [-70.069066690200458, 41.882947060633285], [-70.068821398895039, 41.882553451164377], [-70.066648374348915, 41.87926809887837], [-70.066096894434992, 41.878255525484519], [-70.066127399928433, 41.87755291129406], [-70.066647651281784, 41.877826796603394], [-70.067290893349409, 41.878991978467923], [-70.069341849059569, 41.881827714367212], [-70.070137670733928, 41.883081506468407], [-70.070230213076215, 41.883269513281562], [-70.070077288684374, 41.888071601751591], [-70.070199883676764, 41.888295463407303], [-70.070139460314536, 41.890655556335005], [-70.070016206881789, 41.891314776503172], [-70.070047335754012, 41.892575282809588], [-70.070538091245993, 41.894777402852661], [-70.071212180920554, 41.896491149279221], [-70.0717326690297, 41.898612052301019], [-70.071979284019605, 41.907237656993516], [-70.072071180099201, 41.907741357246955], [-70.072010926332212, 41.914947222238276], [-70.072378877253641, 41.91688890722844], [-70.072532788859874, 41.917283704936871], [-70.072746986175503, 41.918200355894768], [-70.07293051681502, 41.918720957894209], [-70.073054192388668, 41.920917930352019], [-70.072994067660247, 41.926088105084624], [-70.073177482884958, 41.92732007271325], [-70.073361610010792, 41.92860670674596], [-70.073424319533785, 41.933478467043976], [-70.073577835314893, 41.936331976829294], [-70.074007043650099, 41.938642525257407], [-70.074436258093272, 41.939467305242083], [-70.074957538417735, 41.940155911154115], [-70.076213590300782, 41.941323627051432], [-70.076673652654222, 41.942076204921264], [-70.076735134004508, 41.942444449984109], [-70.077347933348321, 41.943492658914636], [-70.077409126116777, 41.943771484099834], [-70.077501901490834, 41.945508822963404], [-70.077256924599482, 41.946907163485328], [-70.076921313673708, 41.95042262378788], [-70.077258724137096, 41.950788722040237], [-70.07719731381718, 41.952257422487662], [-70.076891546883417, 41.954431023469333], [-70.076861434701968, 41.956673880615831], [-70.077076478528923, 41.957221338554731], [-70.077229555490135, 41.957427019354348], [-70.077347742372112, 41.95775265734936], [-70.077567237468102, 41.958360410550313], [-70.077720822573426, 41.959277912262749], [-70.077598263806522, 41.959990002926439], [-70.077230467693767, 41.961380599750832], [-70.07689403721983, 41.963968660255141], [-70.076742261500016, 41.96893281564499], [-70.076804633067724, 41.971102533218037], [-70.076958356244404, 41.972020126264852], [-70.077112849735684, 41.976476539154227], [-70.077082534866918, 41.978674365936811], [-70.07735953483197, 41.981166505638193], [-70.077482189130208, 41.982174296189775], [-70.077421970280341, 41.985488859558707], [-70.077575655619881, 41.986496495295519], [-70.077882154551233, 41.987276954883598], [-70.079017294084323, 41.989563018759824], [-70.079508286742481, 41.990801668398291], [-70.079477710466151, 41.991144003084891], [-70.078711366655128, 41.99132249426772], [-70.078404796465861, 41.991235390132211], [-70.077423462446149, 41.990685699294282], [-70.076749430253443, 41.990773569168425], [-70.075951691998554, 41.991141197758914], [-70.073683004222787, 41.990918776975811], [-70.073652024384572, 41.990685441514266], [-70.074203487304189, 41.990481792953126], [-70.074540812855375, 41.990208567807507], [-70.074479793123359, 41.989866712807903], [-70.074142159611952, 41.989932918216915], [-70.073713197071299, 41.990207250127817], [-70.073253640002903, 41.990112550361467], [-70.073222532130629, 41.98965355809348], [-70.072609184883234, 41.989452302747686], [-70.072179537882747, 41.989014716575326], [-70.071689388960678, 41.989127274440634], [-70.071259487889336, 41.989104523628519], [-70.070861441584583, 41.988990862727995], [-70.07083035861487, 41.989703008279548], [-70.070983906613577, 41.989836575025315], [-70.071750688788882, 41.990090451994831], [-70.072057390584135, 41.99032164943204], [-70.07224119424464, 41.990941300487862], [-70.072487309191047, 41.991371552080388], [-70.072456498050315, 41.991668859412606], [-70.072211108980611, 41.991878573754882], [-70.069819664740422, 41.992450280168882], [-70.068807505641018, 41.99297284773855], [-70.06761204877931, 41.993497522455833], [-70.066875880224558, 41.994026952479487], [-70.066692210830837, 41.994442733711921], [-70.066109794426197, 41.995213789016489], [-70.065434969538273, 41.995580185568699], [-70.063564032181333, 41.996111018914426], [-70.063625686792733, 41.996272705885545], [-70.06402445968709, 41.996403779496376], [-70.064821951177834, 41.996315372409668], [-70.065619113339537, 41.996064782686467], [-70.066324249660497, 41.99567121101537], [-70.067427391900651, 41.994525695670632], [-70.067765323511225, 41.994297520850154], [-70.071659354574933, 41.99276646881264], [-70.072487168775552, 41.992722780430412], [-70.074082011061577, 41.994049519575654], [-70.07487934726241, 41.995033037397832], [-70.075493378028042, 41.995675513110911], [-70.075799930424182, 41.995645564909942], [-70.076106381415713, 41.995102353047962], [-70.076596319874511, 41.995286834599781], [-70.077026905196874, 41.996543832030675], [-70.077303059195771, 41.997387576530656], [-70.077578852452319, 41.997961628421159], [-70.077855711355809, 41.998283024204738], [-70.078192819638232, 41.998306936727872], [-70.078315416240372, 41.997936481868578], [-70.078283991115939, 41.996793049322811], [-70.077976334541958, 41.995165606552568], [-70.077914818836078, 41.99379722500349], [-70.07751639913721, 41.993450094222183], [-70.077148854824372, 41.993336385017372], [-70.076289774475626, 41.993245189273786], [-70.076289579699022, 41.993065095027809], [-70.076503715827457, 41.992973213223294], [-70.077853207409802, 41.992789655636642], [-70.078312886701298, 41.992442482950167], [-70.078435901548303, 41.992171623813768], [-70.078681269221008, 41.991961986140161], [-70.079508868397312, 41.992008290299154], [-70.079478732664896, 41.992260584558139], [-70.079294260433556, 41.992397323143337], [-70.079172283290589, 41.992740773019086], [-70.079418105471731, 41.995143549354061], [-70.079601713920795, 41.995808207663949], [-70.07994014274044, 41.998444000240369], [-70.080308519584619, 41.999836450185654], [-70.080340293659219, 42.000105811412567], [-70.080372326048391, 42.000325740701108], [-70.080433998571948, 42.000856605789195], [-70.081171031063633, 42.002912043030967], [-70.081661579830254, 42.00444782506186], [-70.081723747177946, 42.004924667741236], [-70.081877643399807, 42.00522940006033], [-70.082092369578334, 42.006461186301038], [-70.082367938729135, 42.007287350086749], [-70.083166605084273, 42.009270417994387], [-70.08378146291723, 42.012038471960302], [-70.084180298977373, 42.012954041139345], [-70.0842115938962, 42.013142893930493], [-70.084518192104028, 42.014031386419667], [-70.085654152292548, 42.016551587041199], [-70.086053057393372, 42.017124346199658], [-70.08623708466952, 42.01782501388594], [-70.086912625316884, 42.019061942246815], [-70.086912823063798, 42.01934108559081], [-70.087312658004663, 42.020319055754626], [-70.087526949988174, 42.020506295414002], [-70.088079788684752, 42.021969065388831], [-70.088663405422707, 42.023134431596077], [-70.089583949781542, 42.024900049771553], [-70.092500356011783, 42.029078595176969], [-70.094496343360419, 42.031599639458832], [-70.095601784955122, 42.03283215669159], [-70.098395539258618, 42.035507621573203], [-70.100513439189996, 42.037360832455946], [-70.10180393090522, 42.038663713670012], [-70.103645849390702, 42.04022201496872], [-70.106469861048566, 42.042302174532175], [-70.108066872853868, 42.043601961160213], [-70.110952889204285, 42.045384441852647], [-70.116817336861615, 42.04851645975824], [-70.11826030061971, 42.049177711428065], [-70.123051199843559, 42.051671163888095], [-70.124481874626341, 42.052309135731853], [-70.126383876140522, 42.053065213357101], [-70.136264594347978, 42.056498724001436], [-70.137462035032641, 42.05705379162444], [-70.139731601526989, 42.058698251946439], [-70.140559829865737, 42.059113291179585], [-70.143659688096619, 42.060253108951173], [-70.144887363857805, 42.060943521516101], [-70.145991902828527, 42.061329195813833], [-70.147406669466989, 42.061707720409757], [-70.148294338886373, 42.061945568165768], [-70.150565966711667, 42.062319042479473], [-70.151578373023199, 42.062408141945028], [-70.155415701612739, 42.062405382729338], [-70.1573503567259, 42.062133200792566], [-70.159284189110991, 42.061681519766253], [-70.167664246708924, 42.060191187942465], [-70.16978311061041, 42.059736892348646], [-70.176812742397814, 42.057197033548569], [-70.178470433734731, 42.056414260014634], [-70.181233100994135, 42.05468352761303], [-70.184118346584839, 42.052410997646064], [-70.185007851891669, 42.051573193346371], [-70.185069377647565, 42.051338076577672], [-70.184425335265544, 42.050858486504971], [-70.184946489772372, 42.050375450721312], [-70.185284855249293, 42.05033602776512], [-70.185776452974267, 42.050610094089379], [-70.186389734427024, 42.050766247601999], [-70.186819911188323, 42.050446488305766], [-70.187463500971816, 42.049737486610908], [-70.18798557209773, 42.048939205814925], [-70.188630231783037, 42.048229669751514], [-70.19053293119913, 42.045850091842617], [-70.19062436366157, 42.045551743808929], [-70.192557698494255, 42.042279973466002], [-70.192618921153027, 42.041963810240674], [-70.192987601540082, 42.041275858549703], [-70.194461349211338, 42.0394675941412], [-70.194675448004517, 42.03898830466386], [-70.19485943700947, 42.038004428368296], [-70.19473610728717, 42.037798712880701], [-70.19406183965431, 42.037382491365769], [-70.193999939676573, 42.037067713234002], [-70.194245833511815, 42.036398615633658], [-70.194490636798378, 42.036170627961084], [-70.194859192428709, 42.036103968756109], [-70.19580995130373, 42.036625177017825], [-70.196393373308808, 42.036700529302067], [-70.196792206351617, 42.036948190220784], [-70.197988945339944, 42.037179000337851], [-70.1982952201095, 42.036968632367582], [-70.197344145655777, 42.036744584710306], [-70.196853918890199, 42.036353436075956], [-70.196638973663354, 42.036103368180925], [-70.196362052384529, 42.035394542741862], [-70.196362362696789, 42.035214459409076], [-70.1961473652688, 42.034802311697625], [-70.195871335017372, 42.03475135244549], [-70.195625588541404, 42.034366406453294], [-70.195350177837597, 42.034161748787675], [-70.195012164882115, 42.032534860176249], [-70.194797093505642, 42.032050673947097], [-70.194674059328477, 42.031736999320252], [-70.193722907414184, 42.029404640256963], [-70.19307816978916, 42.027573894296985], [-70.192740197171489, 42.027001137145568], [-70.191635860430054, 42.025535387710143], [-70.187555388683037, 42.023109778736369], [-70.184855423744665, 42.024137411861588], [-70.184456903214581, 42.024411964611602], [-70.184486905277339, 42.024753845584193], [-70.185959566101147, 42.02432397551722], [-70.186819548889176, 42.024369328748406], [-70.186910957584857, 42.024638798392431], [-70.18663519254946, 42.024776280731651], [-70.184825494900025, 42.025146637936182], [-70.183689430735015, 42.025212358691199], [-70.18270804904212, 42.025051408574924], [-70.181143064783569, 42.025103699679349], [-70.180437636719574, 42.025326886668481], [-70.179763165018727, 42.025675857680568], [-70.179364581847707, 42.025626234767891], [-70.178965236195154, 42.025468008799763], [-70.179088388280974, 42.025260079082464], [-70.179609978183265, 42.025056208878269], [-70.180621863144907, 42.024252988235965], [-70.180928704525385, 42.023997651332486], [-70.18178821091918, 42.023150973056438], [-70.181756917707858, 42.022854638421251], [-70.181297215965714, 42.022858884199962], [-70.179885793387314, 42.023567456420231], [-70.178996679736414, 42.024134552629803], [-70.178842838727164, 42.024343298373751], [-70.178597239756215, 42.025103042738877], [-70.178596756598537, 42.025742348369164], [-70.177554032231086, 42.026086511677278], [-70.176909773027219, 42.026201161113256], [-70.176326497253001, 42.026170821670739], [-70.175804952611955, 42.025698808327483], [-70.175774588784961, 42.025509904945785], [-70.178966035916417, 42.022883219782742], [-70.178934830740488, 42.022676298780063], [-70.178596681578057, 42.022787739031898], [-70.177277830357028, 42.023567132783093], [-70.175652064052315, 42.024799931143789], [-70.175345339072706, 42.025280365453263], [-70.17448571505534, 42.025964916055344], [-70.173565129853017, 42.026514137851798], [-70.17344250961483, 42.026678216615373], [-70.173748817386283, 42.026792072149739], [-70.174148324351691, 42.02649055411672], [-70.175129690086948, 42.026084301006485], [-70.175498385088247, 42.026107750017147], [-70.17601917970363, 42.026633242094988], [-70.179700959607018, 42.026037025782003], [-70.180806205336097, 42.025647371626839], [-70.181665226119549, 42.025512664779541], [-70.181971828407441, 42.025653514734216], [-70.181940546534349, 42.025851790855668], [-70.180560496698476, 42.026244499523067], [-70.178074892880161, 42.026702579057535], [-70.177185075502166, 42.027045174471404], [-70.176172823347343, 42.027316472192823], [-70.174577100538187, 42.028098844374782], [-70.172276232959959, 42.029698624806628], [-70.171262968747044, 42.030708858259239], [-70.170004371151023, 42.032487186905563], [-70.169605808396824, 42.032833183577019], [-70.16923784860596, 42.033332609511788], [-70.168532120939631, 42.033834766761473], [-70.168316867388953, 42.034089516804919], [-70.167948429461717, 42.03434572455825], [-70.167426706838597, 42.034296877904644], [-70.167396475076188, 42.034045033095701], [-70.167949169505604, 42.033174622239677], [-70.16828653673474, 42.032856102629857], [-70.168808283842921, 42.031985957582904], [-70.168900113072965, 42.031597586136023], [-70.168378645202523, 42.031485715763722], [-70.168409715684888, 42.030953647630852], [-70.169422570724834, 42.029538236437517], [-70.170159265750911, 42.028621061399278], [-70.173596086860215, 42.025811614081761], [-70.173872136165826, 42.02534937773045], [-70.175161235111872, 42.02422814139814], [-70.176418439838244, 42.023476692521157], [-70.176786610459345, 42.02301389450502], [-70.177952687290954, 42.022380142573148], [-70.180192870301212, 42.021555098532488], [-70.182002995249761, 42.021032376050236], [-70.185591744632674, 42.020139468469495], [-70.186267295812272, 42.019862421271782], [-70.187555651561908, 42.01976753858078], [-70.189334578376986, 42.019839082038295], [-70.190837952369279, 42.020021799664498], [-70.192739474987704, 42.020497728604141], [-70.194212982498527, 42.02097765441119], [-70.196697458897305, 42.022419674795614], [-70.198691467269654, 42.023840303318934], [-70.20025666387491, 42.02464372830444], [-70.201023809060004, 42.025149392474319], [-70.202036965641867, 42.026057365841503], [-70.208021276780926, 42.030723534512404], [-70.210599162561792, 42.032893937671069], [-70.211765741599237, 42.034295996176915], [-70.21311656733954, 42.036515635660052], [-70.213208755398043, 42.036902147281872], [-70.213853683817902, 42.038273012251729], [-70.213884640227676, 42.038569872227953], [-70.214376506933647, 42.039375703138283], [-70.214775190591823, 42.040101067254554], [-70.214928714441314, 42.040495649638878], [-70.215635898478368, 42.041568889676618], [-70.216494860479798, 42.042478958808665], [-70.217692882779218, 42.044583099537633], [-70.218705549727659, 42.0458420789803], [-70.220025642796102, 42.04700823215277], [-70.223219434116956, 42.050072774103747], [-70.224172283577659, 42.050963029712591], [-70.226689581322674, 42.052908977892784], [-70.227887095465277, 42.053706747824151], [-70.229729325980685, 42.05475874012653], [-70.233323018089123, 42.057800953049323], [-70.232924696135399, 42.057805007844046], [-70.23237065148507, 42.057505063548192], [-70.232248512308033, 42.05768604693543], [-70.233538729707604, 42.058672250937036], [-70.23366131793847, 42.058923475524644], [-70.233600165720731, 42.059203101398268], [-70.233232413926856, 42.059224873832811], [-70.232556420510278, 42.058925921920263], [-70.231912063858431, 42.058446600971095], [-70.231205077727139, 42.057715633394977], [-70.230867273666505, 42.057557104641965], [-70.230191778277586, 42.057555194572544], [-70.228319997678099, 42.058809145345748], [-70.227676454048577, 42.059473891280305], [-70.22764560630867, 42.059843893784873], [-70.228044600898997, 42.059704260467257], [-70.228965066482985, 42.05899189420834], [-70.229240922859447, 42.059015757273549], [-70.229548529530859, 42.059246529913317], [-70.229917340137888, 42.059836980821494], [-70.229948364476357, 42.060025874333], [-70.228383252318551, 42.061421084638695], [-70.228076633129177, 42.061424430809119], [-70.22795334765496, 42.061263235013485], [-70.227186086165133, 42.061352581422021], [-70.226910081892683, 42.061148626577456], [-70.22583589737927, 42.061214289973918], [-70.226695613900304, 42.061690998832717], [-70.227309463260426, 42.061828928304237], [-70.22783082656774, 42.062174635349471], [-70.228475892926667, 42.062473901631229], [-70.228998443161899, 42.062567497114941], [-70.229121152573299, 42.062818187416049], [-70.235661454570689, 42.065260989251605], [-70.237104711384049, 42.0657136281433], [-70.237473148983568, 42.065628730709015], [-70.237718835804742, 42.065256683811029], [-70.239068746393173, 42.06425120202853], [-70.239405760116043, 42.064202599560574], [-70.239744315002099, 42.064460157264591], [-70.239836892794727, 42.064666563273576], [-70.239622135330606, 42.065326010336804], [-70.239652267795094, 42.065695515954616], [-70.239775481433441, 42.065856157586289], [-70.239775779133055, 42.066243343129294], [-70.23953008449476, 42.066561368785344], [-70.239623006612291, 42.067110029757174], [-70.239654409054182, 42.067640995006279], [-70.239224747745453, 42.067979054660519], [-70.238641390823489, 42.068047993339917], [-70.2384274621499, 42.068554915470898], [-70.237414852905076, 42.069493697984804], [-70.237507445970309, 42.069717574130507], [-70.237875783634564, 42.069632764136159], [-70.239961713446249, 42.068006798731915], [-70.240206691843071, 42.067706772762811], [-70.240574164171719, 42.066603835945479], [-70.24085023695757, 42.066240490803054], [-70.240849962302391, 42.065376080996472], [-70.24048100952659, 42.065145835219035], [-70.240419899128952, 42.064894124568568], [-70.240757411072977, 42.06450336250527], [-70.240419227093128, 42.064092739848618], [-70.240388040583838, 42.063453095572406], [-70.240633352768256, 42.062738877304078], [-70.240571008895131, 42.062055579967236], [-70.239926230511387, 42.061647794405232], [-70.239955448836355, 42.060954158979328], [-70.239525544247996, 42.060679297900251], [-70.238881135118049, 42.060479238192471], [-70.238788926908413, 42.060047639041038], [-70.238512586537752, 42.059834704536335], [-70.237590942949694, 42.059583138521035], [-70.237191983140292, 42.059308609734181], [-70.237191815488941, 42.059128522865436], [-70.237591016196802, 42.059177948073078], [-70.238910901461296, 42.059514941157339], [-70.240599615923742, 42.060136280096472], [-70.241613014253247, 42.060386579451098], [-70.24290209781249, 42.060291614037475], [-70.24354726846353, 42.060563693269934], [-70.244131056243006, 42.061043993596982], [-70.245175064611729, 42.062095433652694], [-70.245390649412812, 42.062651557407946], [-70.245392231482356, 42.063795652418989], [-70.244349739286164, 42.065986926219971], [-70.243766890748944, 42.066587686305155], [-70.242632753570774, 42.068464501455921], [-70.242203059173306, 42.068847502890321], [-70.241896624794549, 42.06932811277666], [-70.240731664394389, 42.070565720787101], [-70.238093074374333, 42.072882266759166], [-70.237049725233547, 42.073497185332407], [-70.23437888594249, 42.074822826100416], [-70.23333593533593, 42.075644723234156], [-70.230543377023963, 42.076611550908972], [-70.22796478233758, 42.077729258630967], [-70.22563155328956, 42.078600943562058], [-70.223329028488678, 42.079264655685392], [-70.219582847205302, 42.080070390153224], [-70.215469780776488, 42.080825695448773], [-70.213749442181651, 42.081303326126843], [-70.209911536069342, 42.081578084954096], [-70.208836906450188, 42.081760643202983], [-70.206903184010528, 42.08189810503994], [-70.202972186246711, 42.081921712076664], [-70.20082245730471, 42.08208813914429], [-70.197414053641367, 42.082060667347463], [-70.195632952619917, 42.082268918498819], [-70.192439678253379, 42.082265629843441], [-70.190505371138755, 42.082358327411299], [-70.189306920758725, 42.082334529114327], [-70.187710607289659, 42.08204494390624], [-70.176778915662027, 42.080986636278695], [-70.170975411566289, 42.080253094250423], [-70.16750571819972, 42.079550404851418], [-70.160167537040195, 42.078634110011805], [-70.15829435906322, 42.078175461379224], [-70.156176515983475, 42.077485379449939], [-70.154187266103932, 42.076980278449376], [-70.152829886472603, 42.076636284389437], [-70.148623758391878, 42.07602105617589], [-70.146474323608501, 42.075466115762758], [-70.144417686950973, 42.075333188046464], [-70.141041173323146, 42.074096652573346], [-70.138738209397161, 42.07345366030912], [-70.137387846354514, 42.073268762282126], [-70.136190890009743, 42.072902166327609], [-70.133919498241227, 42.072059644356763], [-70.131432587132338, 42.071373157724928], [-70.127165838119609, 42.070405867614994], [-70.124464733729624, 42.069973374834831], [-70.12270001795703, 42.069535070153457], [-70.121225804371718, 42.06905422484008], [-70.115974619825977, 42.067646310037496], [-70.114193893190546, 42.066961317446363], [-70.112535463107676, 42.066499378565453], [-70.110877851099062, 42.065884980148816], [-70.106915480658714, 42.064122104360017], [-70.102034087193843, 42.062772697767699], [-70.099331196790146, 42.06163714458301], [-70.097673476016013, 42.061247121597184], [-70.097120940111168, 42.06085648956347], [-70.095923251431117, 42.060237421866368], [-70.094111530753381, 42.059552180999923], [-70.085577180423897, 42.055777691841321], [-70.082629404036027, 42.054661850590115], [-70.079283704237028, 42.052991086503219], [-70.076152524250531, 42.051254817427207], [-70.073543644156928, 42.049675797914546], [-70.068018643496472, 42.046611069242914], [-70.06672954502136, 42.045649992152676], [-70.064489096467057, 42.044391703871803], [-70.063568463114265, 42.04368004559506], [-70.06234057573883, 42.042907700592131], [-70.058535211832321, 42.040366637911696], [-70.055589991402911, 42.037844770618243], [-70.051293516071198, 42.034596699511283], [-70.047183019957984, 42.030914008961688], [-70.046354388246272, 42.030363206187587], [-70.043962385447443, 42.02807938172618], [-70.041048034048686, 42.025493401965406], [-70.040158430152772, 42.024510633357316], [-70.039023969148445, 42.023458366053148], [-70.037950828180655, 42.022288099881315], [-70.033504171404132, 42.017734528017158], [-70.031082653275391, 42.014991343718535], [-70.02964228934502, 42.012905186391109], [-70.027127841769982, 42.01011794527858], [-70.024981980401179, 42.007533502745773], [-70.022224258472704, 42.003459841693896], [-70.019374037204003, 42.000071607516325], [-70.019282359062558, 41.999809284399603], [-70.018087992468168, 41.998252838585145], [-70.015759508449705, 41.994913949853469], [-70.013523242105791, 41.991430512437447], [-70.011899927692127, 41.989715338106123], [-70.011010951389423, 41.98839024576565], [-70.010031382627403, 41.986471814708068], [-70.008591797136646, 41.984295871365347], [-70.006478898591823, 41.981666459430429], [-70.005774154481287, 41.980790003562483], [-70.005620862243092, 41.980431232137221], [-70.003967936777684, 41.978004715872778], [-70.003753690836547, 41.977493143823928], [-70.003569751481734, 41.977314603119083], [-70.003080380204906, 41.976166304066865], [-70.002498349357438, 41.975279546923439], [-70.002192622872542, 41.975210256479969], [-70.001640292285131, 41.97539499811738], [-70.00124284657754, 41.974065459485018], [-70.000722761961512, 41.972692167892284], [-69.999712927202424, 41.971620317837065], [-69.999467592861663, 41.971180906863729], [-69.999130374195985, 41.97054452534271], [-69.998609157932037, 41.970035664230785], [-69.997043063913154, 41.967725619852722], [-69.996714005929022, 41.96679659296894], [-69.996368668947355, 41.966587731687341], [-69.996153294159072, 41.966031104804181], [-69.995509052725751, 41.965145200855943], [-69.995201265651701, 41.964481549472296], [-69.994157974781587, 41.962905479139685], [-69.994065754031695, 41.962626826902934], [-69.993421174516399, 41.961921001013366], [-69.992531680771364, 41.960568729535169], [-69.992224250415774, 41.96027426939304], [-69.992285740708226, 41.960021236359523], [-69.990843450095909, 41.957989628666866], [-69.990566995608233, 41.957712501826293], [-69.990443806435266, 41.957326460308408], [-69.989554769096245, 41.955884031485738], [-69.989032431958208, 41.954510649287869], [-69.988633099356193, 41.954054588056771], [-69.987865522195406, 41.952448873388043], [-69.98679217742864, 41.95110762637384], [-69.98642362748862, 41.950165075433695], [-69.986086358000591, 41.94959168377089], [-69.985350066670506, 41.949246496023406], [-69.985012076296996, 41.947943612579792], [-69.984367808689314, 41.946849988657902], [-69.983815874875958, 41.945683837041528], [-69.983784938215379, 41.945387438537246], [-69.983385303513117, 41.944472018148268], [-69.982986491438723, 41.943871865356691], [-69.982925656553121, 41.943575069467855], [-69.982649596835572, 41.94328036765647], [-69.982342253484489, 41.942481610538984], [-69.981483496204334, 41.94131821285329], [-69.981452881613123, 41.941039197214501], [-69.980164065680029, 41.938663335640996], [-69.980225307442382, 41.938068121611494], [-69.979489492742715, 41.93687644682953], [-69.979029148961459, 41.935664842842769], [-69.978661223574122, 41.935325593970987], [-69.97838465355602, 41.934247004173265], [-69.978076981211913, 41.933718373976966], [-69.977003760182285, 41.931475914307349], [-69.975868310242447, 41.928531406059129], [-69.975715257980966, 41.92798340038064], [-69.975162347112231, 41.926997374092686], [-69.975009539265557, 41.926107186936633], [-69.974671651318957, 41.925488634700038], [-69.974610923712419, 41.92520984422984], [-69.974273044396497, 41.924591290763274], [-69.973720860451891, 41.923244982484796], [-69.973414217853346, 41.922878438903233], [-69.972892598666306, 41.921234294306551], [-69.972555676443477, 41.920642762369802], [-69.972125380958261, 41.919430356482131], [-69.972155644907446, 41.918781872022755], [-69.971083236754751, 41.917187707754493], [-69.970837217411557, 41.916181002714495], [-69.970500631854165, 41.915607478052188], [-69.970499602747736, 41.915148216686077], [-69.970162536375668, 41.914484635862117], [-69.969764642237678, 41.914235632794593], [-69.968599341463388, 41.911696938611485], [-69.967801332051295, 41.90952398495935], [-69.96777106613105, 41.908902783434279], [-69.966361160516186, 41.905951598583471], [-69.966146518130529, 41.90540392042795], [-69.965962056322468, 41.904288800124455], [-69.96537996574952, 41.903212819092062], [-69.965011647080402, 41.901909995087678], [-69.964460142831101, 41.900851799312235], [-69.964000379407281, 41.899873717682077], [-69.963908178309637, 41.899433489217579], [-69.962743152501645, 41.897263929204634], [-69.962743584956542, 41.89696623358499], [-69.962284578355934, 41.895619404140128], [-69.962191640395503, 41.894521266988477], [-69.961578890550001, 41.893743092486481], [-69.961242043010245, 41.893078944232371], [-69.961241813299722, 41.892025369055084], [-69.96087352173717, 41.891136753631493], [-69.959556367528066, 41.888959521415899], [-69.959525438192344, 41.887995580354357], [-69.959005075079702, 41.887153351728458], [-69.958268609952924, 41.884061478870635], [-69.957800264021287, 41.883262720020696], [-69.957800553278673, 41.882488842555894], [-69.957196553125158, 41.881386042848952], [-69.956676175432278, 41.880841504043133], [-69.956461614340625, 41.880401864281964], [-69.956397664318544, 41.880057191953142], [-69.956247273745007, 41.879241834374596], [-69.955909446050782, 41.878091389438495], [-69.955817649686196, 41.877110863321114], [-69.955449951113408, 41.876060236818034], [-69.955360384669262, 41.875142234324876], [-69.95493129756214, 41.874109865397692], [-69.954441155108185, 41.872276850724269], [-69.953552374859001, 41.870131273521601], [-69.952541555468045, 41.866419878127317], [-69.951653721513722, 41.864067723251644], [-69.950856679861872, 41.860976047169956], [-69.950182968269615, 41.85917158391257], [-69.94929505309193, 41.856107385195443], [-69.94883570453041, 41.855120142468031], [-69.94862086128839, 41.85411371047752], [-69.948131424787775, 41.852928576653909], [-69.946632226900931, 41.848509796041384], [-69.94620296097608, 41.847621464475267], [-69.945315494244326, 41.845215225719826], [-69.945009076164922, 41.843893444009744], [-69.944488715309987, 41.842357757485026], [-69.944366206774959, 41.841332403257852], [-69.943876199730866, 41.840597398002615], [-69.942988829410936, 41.837326662358791], [-69.942682962413258, 41.835428562691995], [-69.942131991638163, 41.833830040444269], [-69.941642510401451, 41.83114995851416], [-69.94093879528549, 41.82913844494275], [-69.941030434178487, 41.828453068888798], [-69.940938317898841, 41.827877202330249], [-69.9406637740246, 41.827258228666722], [-69.940479560098467, 41.826529728781551], [-69.94017404040909, 41.823992360811694], [-69.939989685814709, 41.82104007922441], [-69.939775858957375, 41.819780959135279], [-69.939805759377251, 41.817312923862765], [-69.939958513034966, 41.816761748532834], [-69.940234002694353, 41.816507795412306], [-69.940203004243429, 41.815850548216105], [-69.94038746307848, 41.815479365173687], [-69.942374370854523, 41.814058438901178], [-69.94326109060745, 41.813330431875542], [-69.94350491096678, 41.813283063057526], [-69.943719556608983, 41.813533630199039], [-69.943628065140643, 41.814723288801225], [-69.943168884065045, 41.815042368907221], [-69.941824343986198, 41.815386450534284], [-69.941303921873725, 41.815733322107469], [-69.941426830587616, 41.815984350224838], [-69.942252800513046, 41.815941609079523], [-69.942864068029252, 41.816143566467986], [-69.943077927637802, 41.816673278083876], [-69.942864026469508, 41.816855499043172], [-69.942466360391734, 41.81696659136707], [-69.941855162358792, 41.817421995798533], [-69.941671490705787, 41.817657576978654], [-69.94219116520803, 41.818130686239193], [-69.942466484742013, 41.818840167468792], [-69.942221421237761, 41.819184051114107], [-69.941824300141221, 41.819439768712797], [-69.94142676997744, 41.820145728059536], [-69.941274232957042, 41.821200646582838], [-69.942161606351689, 41.821589272306475], [-69.942559343398514, 41.821910420229919], [-69.943017885534587, 41.823005743571983], [-69.943140081149124, 41.82371601310345], [-69.943506860294448, 41.823920210448001], [-69.94372131480003, 41.823765550813356], [-69.943996808038065, 41.823808212150944], [-69.944241077976756, 41.823941487004575], [-69.944333176851757, 41.82423765623426], [-69.944271654933914, 41.824445101698487], [-69.943904686219653, 41.824835772387438], [-69.943782908422918, 41.826619885199101], [-69.943904905658073, 41.826988502240958], [-69.944700311433905, 41.828017455290173], [-69.945037328679618, 41.828609085028063], [-69.945863106237098, 41.829430789117296], [-69.946199618853896, 41.829752259472059], [-69.946321876760265, 41.830120877361601], [-69.9463222349559, 41.830877298749087], [-69.946413833644627, 41.831056394635766], [-69.946964101675675, 41.831421206758058], [-69.947698626656205, 41.832685147585998], [-69.948035875556215, 41.834150251197691], [-69.948861788838855, 41.835683865040217], [-69.949260060144226, 41.836869559885884], [-69.949229449027541, 41.837554060062423], [-69.948861886097873, 41.838214887388965], [-69.948679025277983, 41.83845040099375], [-69.948679183140101, 41.839062739682092], [-69.948557069102947, 41.839271074003349], [-69.948770738634963, 41.839521616497002], [-69.949444321770727, 41.839290434110268], [-69.949535315793469, 41.839614138338248], [-69.949352101107877, 41.840002822361726], [-69.94910774733286, 41.840068117527707], [-69.948281384258181, 41.839975832867744], [-69.948005780986577, 41.839519043772746], [-69.94773102251628, 41.83965605188525], [-69.947333425590045, 41.840208946682836], [-69.946844096009571, 41.841032360423924], [-69.946752488753546, 41.841762764951689], [-69.946783188568787, 41.842311944739301], [-69.947456636450099, 41.842567669404389], [-69.948037042056441, 41.842544591520678], [-69.949414223078534, 41.843019783384115], [-69.950240249685464, 41.843499267256043], [-69.950944504094366, 41.843340531856207], [-69.952320570289586, 41.843391810445183], [-69.952779831855764, 41.843090792918872], [-69.953421761321579, 41.84238306632362], [-69.953757727572267, 41.841623822720472], [-69.954033554034055, 41.841189201466413], [-69.954553055229525, 41.840761754078592], [-69.955164231260625, 41.839999481758085], [-69.955287120534024, 41.839683722261888], [-69.955255615790989, 41.838170466231382], [-69.955438982314661, 41.837763855470527], [-69.956356345363403, 41.836891540970036], [-69.959598571713968, 41.834783741936477], [-69.960239867246486, 41.833985920880906], [-69.961126987210747, 41.833618517654237], [-69.961677564792865, 41.833505550077405], [-69.963023280865684, 41.833638507884352], [-69.964247207043769, 41.833844100283727], [-69.964797409108201, 41.833731562884921], [-69.965806736795287, 41.833318042687921], [-69.966509966271545, 41.83332074756381], [-69.968223759719962, 41.833684796355271], [-69.969386207651709, 41.834305444480549], [-69.969845169549188, 41.834778688333337], [-69.969814714564265, 41.835265175235939], [-69.969294869565744, 41.836089442315121], [-69.969692861033892, 41.836770691847008], [-69.969938169293741, 41.837020537667399], [-69.970275024979813, 41.837188765753517], [-69.970519747986941, 41.83718700527524], [-69.971406255052671, 41.836728924785668], [-69.972354427342637, 41.836450681343266], [-69.972660626941448, 41.836249920944958], [-69.973149359705971, 41.835516352192549], [-69.973026201090718, 41.834670493396423], [-69.972842767840604, 41.834365832509206], [-69.972444502097858, 41.83407234149616], [-69.971435172774974, 41.833954720430121], [-69.970517831102939, 41.834439942190215], [-69.97024275736068, 41.834442466037288], [-69.969507585747266, 41.833682943049425], [-69.969141024445648, 41.833388695080728], [-69.967947532458822, 41.832903331184397], [-69.967641515991872, 41.832860948676938], [-69.967397120543126, 41.832539070446629], [-69.967458104727129, 41.832286041417106], [-69.968038911355592, 41.832011361183277], [-69.968374819392466, 41.83148566405994], [-69.968344337257449, 41.831215737513965], [-69.968129825209076, 41.830983230734205], [-69.968344329648986, 41.830639422779925], [-69.968191308369555, 41.830478610680139], [-69.968222112599364, 41.83007326292023], [-69.968312909456131, 41.829892132973697], [-69.968771478161116, 41.829708017676701], [-69.968802494421055, 41.829293667725992], [-69.969016283310637, 41.828994333272952], [-69.968862915552648, 41.828266207637618], [-69.968923639766018, 41.828103853909433], [-69.969351835889825, 41.827739860660849], [-69.968342194046301, 41.826982767545772], [-69.968096714532507, 41.827002612551496], [-69.968067146562305, 41.826138283378953], [-69.968035083583118, 41.825904264999025], [-69.967729820710375, 41.825816867783814], [-69.967362963840117, 41.825882896151811], [-69.966965738747064, 41.826300787589275], [-69.967179757654478, 41.82675841328404], [-69.967668822334261, 41.827213521362225], [-69.967730360611782, 41.827393276057769], [-69.967608459307343, 41.827781731033845], [-69.968128266031385, 41.82829073952859], [-69.968067789452277, 41.828633194547535], [-69.967701034225854, 41.828924888828517], [-69.967426431854889, 41.828908771717693], [-69.967089412662105, 41.828794561761981], [-69.966966862734793, 41.828633617226124], [-69.966966418023915, 41.828291424282725], [-69.966783032054721, 41.827986753527931], [-69.966324156884909, 41.827512867010284], [-69.966079667337581, 41.8271459596059], [-69.965711535891259, 41.826203414431006], [-69.965527793548404, 41.82522336732697], [-69.966016776714241, 41.82444426712037], [-69.965588430675027, 41.824078846938967], [-69.965220980914211, 41.823964671773204], [-69.964395433247688, 41.823251172232958], [-69.963385574740542, 41.822818297670111], [-69.962804203973477, 41.822679349412603], [-69.961580936287731, 41.8221310197655], [-69.961030967224445, 41.821973305503334], [-69.960205002058828, 41.822043198420978], [-69.959776407612281, 41.821794816521255], [-69.959531454310081, 41.821220234007512], [-69.959133917480429, 41.821106802973844], [-69.958919542684953, 41.820901294488181], [-69.958613751457904, 41.820074919800525], [-69.958644246115128, 41.819714594136599], [-69.959163186076069, 41.818683789156587], [-69.959194086299021, 41.817404334777628], [-69.958367741913392, 41.816555704352751], [-69.958306647761319, 41.816393959882994], [-69.958673101340722, 41.816048802551194], [-69.959101208285389, 41.815891960292454], [-69.959498951496769, 41.815870860883386], [-69.959559694308908, 41.816077174395566], [-69.95934696798534, 41.81660162925408], [-69.959407037759263, 41.816825853573199], [-69.959988456610603, 41.816596248485226], [-69.960600054554618, 41.816023689664554], [-69.961303027236355, 41.815684778420334], [-69.961792343442667, 41.815545051207224], [-69.962587652425896, 41.816259244480555], [-69.962924407505753, 41.816211466496675], [-69.962526353762883, 41.815476159107142], [-69.962312103728095, 41.815360707866994], [-69.962219691705329, 41.815109574418877], [-69.962311860736065, 41.814811403481123], [-69.963289673296771, 41.813695549149948], [-69.963870991852474, 41.813393343674477], [-69.964054011660949, 41.813490901722567], [-69.964787335256219, 41.813169307754059], [-69.965460253869139, 41.812686428435981], [-69.965735666312042, 41.812620887421438], [-69.965705034295638, 41.813188956225041], [-69.965429854378854, 41.813605062296055], [-69.966163207873663, 41.813302010113922], [-69.966438589846433, 41.813002428853068], [-69.966438263882736, 41.812480138777772], [-69.966773873672423, 41.810630718056814], [-69.966528661958577, 41.810146196305219], [-69.966314622577897, 41.809301355798837], [-69.966344995773497, 41.808914012077288], [-69.967781310883311, 41.807884252760239], [-69.968301267300575, 41.807222084226844], [-69.969370734313614, 41.806601061884827], [-69.969982383272097, 41.80650571660253], [-69.970685558405179, 41.806508398969299], [-69.971204964781947, 41.806666198681931], [-69.971571832277746, 41.806645184172169], [-69.973131020063263, 41.805821328040118], [-69.973527907950498, 41.805043215563678], [-69.973802917966324, 41.804726052743355], [-69.974260850734012, 41.804514984512799], [-69.974842120883423, 41.803987511113185], [-69.975575436327858, 41.802873417192266], [-69.976644183125444, 41.802387392492925], [-69.977195832252008, 41.802247263291889], [-69.977561964176957, 41.802064221638815], [-69.978142031301388, 41.8014286569801], [-69.978692208776607, 41.800991338932711], [-69.97960886131122, 41.800668767262245], [-69.979975771338459, 41.80042206371855], [-69.980678448252064, 41.79941666917253], [-69.980861409843868, 41.799000379620551], [-69.980890960090491, 41.798198796477521], [-69.981074265130744, 41.797449329550886], [-69.981013336651557, 41.797198091010159], [-69.980584386805148, 41.796670088570451], [-69.980492802491156, 41.796346942022417], [-69.980705963336405, 41.795435154924512], [-69.980980850764865, 41.795180558149312], [-69.981531868014414, 41.795018428467017], [-69.981988968283105, 41.794883860987383], [-69.982814208494005, 41.794038843395562], [-69.982905311261632, 41.793101834795834], [-69.983027102425439, 41.792893551576555], [-69.983516491688889, 41.792574177045772], [-69.984005355166772, 41.792362852356355], [-69.984310210281791, 41.792117021059511], [-69.98528771545709, 41.790334079133771], [-69.9855313093192, 41.789368208958464], [-69.985560781855938, 41.788521599262296], [-69.985162861068858, 41.788020410274193], [-69.984734942000884, 41.787673165032253], [-69.98387889496415, 41.787383167255918], [-69.982930642605282, 41.786923093394812], [-69.9820755573909, 41.786831202700185], [-69.981647045395832, 41.786970202937411], [-69.98134199042623, 41.787225029234143], [-69.98118962539516, 41.787469463108799], [-69.979844889432272, 41.788345270527351], [-69.979112254766079, 41.78948641337329], [-69.978775579518071, 41.789759451243533], [-69.978409313874891, 41.789870454794027], [-69.976576251593244, 41.791480358451381], [-69.975323850374693, 41.792418672087592], [-69.974224486351517, 41.793562802787861], [-69.972910868546293, 41.796095853855626], [-69.972666822041106, 41.79633238484157], [-69.972513908473715, 41.79687396294608], [-69.972759371997185, 41.79749354950124], [-69.972759704837188, 41.798042854388001], [-69.971630180009228, 41.800078585271919], [-69.971599426422472, 41.800970741142173], [-69.971447348350949, 41.801431374873765], [-69.971141311983516, 41.801632132428949], [-69.97092744339119, 41.802300670891974], [-69.970653346353558, 41.802644853898556], [-69.969429907915227, 41.803195742690505], [-69.96878848619798, 41.803264210169957], [-69.966526213331974, 41.803922674773993], [-69.965975444926926, 41.804179738794403], [-69.965823290241801, 41.804361211577636], [-69.96600709324693, 41.805116137602198], [-69.966007005411285, 41.805575388061385], [-69.965243515971778, 41.80641949919184], [-69.964785322291888, 41.807675100773402], [-69.964357137079645, 41.808228179418279], [-69.964265538732917, 41.808733473076181], [-69.964480417923269, 41.80918211201876], [-69.963990446265015, 41.809411350313688], [-69.963746384156451, 41.809350069704337], [-69.963623877834081, 41.809189211411038], [-69.963563264463218, 41.808847287465028], [-69.963256796306695, 41.808498717567304], [-69.962889871962631, 41.808366620775864], [-69.962003757266487, 41.80861743298734], [-69.961361132025161, 41.80838877024388], [-69.960840879632755, 41.808456037697511], [-69.960657634690577, 41.808817633190351], [-69.960718913241678, 41.809051508566313], [-69.961300421187744, 41.809803347439782], [-69.961331241377351, 41.810397008929478], [-69.961515118117262, 41.810648207081712], [-69.962034432159314, 41.810715457457597], [-69.962432387876618, 41.810559277050409], [-69.962646140226582, 41.809665628235152], [-69.962951445852084, 41.809527917408985], [-69.96325698745936, 41.809525283022687], [-69.963654878292104, 41.809711285190794], [-69.963838722372657, 41.810124117667755], [-69.963624571525699, 41.810675035260388], [-69.962585479739985, 41.811728651880351], [-69.961668246350058, 41.812204796230141], [-69.960567888701689, 41.813330778355294], [-69.960109573361194, 41.813992034827116], [-69.959467902301739, 41.814474675388631], [-69.959101015230274, 41.81455922623028], [-69.95861202713624, 41.81444626759982], [-69.958336183858194, 41.81401588350105], [-69.957785301761945, 41.813759716054093], [-69.956776750248537, 41.813668985772672], [-69.956042926481402, 41.813188541305806], [-69.955522659678991, 41.812553398985415], [-69.955094271360721, 41.812205406268539], [-69.955033178772339, 41.812044110104154], [-69.95558298943935, 41.811363851882639], [-69.956194576762115, 41.810791316520763], [-69.956591825666763, 41.810446042790694], [-69.956958727202746, 41.810469559860067], [-69.957478853818358, 41.810627431844814], [-69.958181845074009, 41.811063056006212], [-69.959038313840367, 41.81106500113286], [-69.959527223392101, 41.810925908864391], [-69.959741466937743, 41.810761581961259], [-69.959894154231364, 41.810310065869579], [-69.959496509539576, 41.809989519945759], [-69.958731983821579, 41.810058519478225], [-69.958334156975866, 41.809945080702136], [-69.95735638493106, 41.809440003048728], [-69.956499740737499, 41.809122779306584], [-69.956010545806592, 41.809099855570302], [-69.955491097853468, 41.809347208702981], [-69.955216047718736, 41.80960174379863], [-69.955185779277215, 41.810106241307103], [-69.954909821397635, 41.810288723790485], [-69.954298895369647, 41.810167879887288], [-69.953656558978992, 41.810146291462409], [-69.952769990686889, 41.810378476341526], [-69.952342256805309, 41.810337190583638], [-69.952097585262749, 41.810221936963629], [-69.951944542660897, 41.810016076568417], [-69.952524448504278, 41.808795313669947], [-69.953013884841823, 41.807224468472796], [-69.953135847515227, 41.807034137867845], [-69.953074558363454, 41.805962886772235], [-69.952860341428575, 41.805163040599481], [-69.952676879562475, 41.804822324067466], [-69.952247836779051, 41.804474310705601], [-69.949863304039482, 41.803611739949645], [-69.949251754117611, 41.803148130648552], [-69.948976720334343, 41.802763298263798], [-69.948915467497429, 41.802421446611056], [-69.949740936025108, 41.80180232894697], [-69.950137571733805, 41.801159365291298], [-69.949893200664079, 41.800909486178021], [-69.949434643711683, 41.800633730291096], [-69.948761856971004, 41.800477614708619], [-69.948058815606757, 41.800546297486704], [-69.947631330887262, 41.800730120775114], [-69.947936468693698, 41.801276825729865], [-69.947753741804917, 41.801476408963893], [-69.947386316556688, 41.801506343907072], [-69.946530756237195, 41.801180593085441], [-69.946469277789788, 41.800586597550108], [-69.946958317450978, 41.799762553291835], [-69.947722915119286, 41.799468420813049], [-69.947936744144485, 41.799286190561773], [-69.948333677384525, 41.799220095556798], [-69.948884417066722, 41.79928729484692], [-69.950168049572312, 41.79905207715121], [-69.950596540927478, 41.798598019216954], [-69.950198415434528, 41.797385400594635], [-69.949984049739825, 41.797089823999059], [-69.949556372995829, 41.796787383181332], [-69.948669452532556, 41.796605390595808], [-69.948027802679036, 41.796610702771304], [-69.947630453010262, 41.796496691361895], [-69.946804361874825, 41.795828073334327], [-69.946865606201897, 41.795368483560296], [-69.947048976099708, 41.79518638029942], [-69.947812795702561, 41.794936811918269], [-69.948883115849782, 41.794919326211065], [-69.94921919045251, 41.795276714432703], [-69.949617279800137, 41.795994153483811], [-69.95105418667562, 41.796585506427334], [-69.951696284258063, 41.796517058495247], [-69.952276462872632, 41.795989773626424], [-69.952948838990253, 41.795371886826501], [-69.95383510661469, 41.795391838067609], [-69.954447078339285, 41.79560275027292], [-69.955394692200159, 41.795648735118796], [-69.955699884559465, 41.795439003100626], [-69.955852662634356, 41.794456200827611], [-69.955118866757218, 41.794182861286274], [-69.954996748426211, 41.79434608668997], [-69.954569144030657, 41.794457893909872], [-69.953896555486438, 41.794499469483817], [-69.953682471301889, 41.79475320645421], [-69.953438105863768, 41.794935573022613], [-69.95279676481556, 41.794913991158019], [-69.952245581786386, 41.794891288806909], [-69.952000958708638, 41.794776484982911], [-69.951267815972273, 41.793980841230017], [-69.95007446114063, 41.793243140264714], [-69.949402244703379, 41.792789330751575], [-69.948790316321364, 41.79257839142646], [-69.946834666222983, 41.793747166246227], [-69.946009224950629, 41.794042083266632], [-69.944939682066661, 41.794186252469714], [-69.944481265076234, 41.79471237104169], [-69.944298042693674, 41.795056021624134], [-69.944267421156056, 41.795398963542169], [-69.944572908738138, 41.795810608474646], [-69.945000818828291, 41.79596890189007], [-69.945856769927531, 41.795484763020944], [-69.946346376307488, 41.795624802117864], [-69.946101134964891, 41.796815788762657], [-69.946071285883619, 41.797068061433947], [-69.946193455608793, 41.797319074831506], [-69.945948690738462, 41.798257838291455], [-69.945429726025182, 41.798847970882896], [-69.944726785198327, 41.800177241114895], [-69.944268448311576, 41.800866080320532], [-69.943687911104149, 41.801230781034434], [-69.942097607876391, 41.801207885032923], [-69.940721953782869, 41.800561516735513], [-69.940109973318783, 41.800242470974368], [-69.939407281500408, 41.79935657656587], [-69.938672929396049, 41.798830983704534], [-69.937480466470234, 41.798579972197011], [-69.937266902686531, 41.798671596628786], [-69.937297257310149, 41.799058687189202], [-69.937267168541695, 41.800562648598834], [-69.937114046971175, 41.800888691000708], [-69.937297084152206, 41.80344465559137], [-69.937817594360467, 41.804890337425817], [-69.938093115730382, 41.805095554658415], [-69.938214426212028, 41.805779344632974], [-69.937878624584172, 41.806556556275588], [-69.937787221424131, 41.807340358454319], [-69.938367899130199, 41.808065381747248], [-69.938398951193491, 41.808596560984753], [-69.938337417303927, 41.808912513404394], [-69.938490755737192, 41.809163421690243], [-69.938766029522071, 41.809350083306278], [-69.938795611183366, 41.809602087699567], [-69.93858704912887, 41.810378162336747], [-69.938674155677205, 41.810674808919238], [-69.938888149456815, 41.810862341762203], [-69.938918748436933, 41.811456549372522], [-69.938734609665701, 41.811908239014834], [-69.938827092919126, 41.812186949086417], [-69.938460195400339, 41.812531947737824], [-69.938215249074574, 41.81250725048627], [-69.937665215239264, 41.812097281053241], [-69.936418989886761, 41.810027057870577], [-69.93595317542075, 41.809418504131393], [-69.935860874493287, 41.80877950430407], [-69.935952820084196, 41.808004085463594], [-69.935830632905507, 41.806698936696669], [-69.935922242778048, 41.805509913954076], [-69.93586045833996, 41.80511392712198], [-69.935983292149544, 41.804320381737128], [-69.935616158178235, 41.803512728624746], [-69.935432595629052, 41.802532086958003], [-69.935494602826296, 41.801181018266938], [-69.935279670101906, 41.800930430515336], [-69.934515662796585, 41.800432048925018], [-69.934332054307831, 41.800082204197501], [-69.934301795771134, 41.799677194002911], [-69.934699428282642, 41.798827721100409], [-69.934851810326279, 41.797889332052641], [-69.934760173008755, 41.79661107484619], [-69.934546321416008, 41.79498273537542], [-69.934546330100744, 41.79400119052535], [-69.934148729727312, 41.793040658241324], [-69.934210265875137, 41.789978092164191], [-69.934087784068055, 41.789330300274507], [-69.934209717684638, 41.788239579008369], [-69.934117531777261, 41.787411472893218], [-69.934271344572608, 41.786428709095183], [-69.933813025055642, 41.785081205405902], [-69.933629642354845, 41.783821946372377], [-69.933660122891936, 41.781903128285933], [-69.933323451381938, 41.77798807503541], [-69.932957598164734, 41.776523151624993], [-69.933109988938469, 41.775656804229001], [-69.932712679847825, 41.774552728097554], [-69.932651835744991, 41.773895065723998], [-69.932040419480813, 41.772585428375955], [-69.931887738654154, 41.771974407908765], [-69.931979189748361, 41.77007281690998], [-69.931795713561442, 41.769569882961633], [-69.93133786361355, 41.765223791444299], [-69.931429417142581, 41.764493394609524], [-69.931644369646207, 41.763914900206103], [-69.93133837122744, 41.761467535019605], [-69.931124696009761, 41.760667647961114], [-69.931185798898809, 41.759938002479792], [-69.930849248896052, 41.757697870082119], [-69.930757722561225, 41.756068320952764], [-69.930574671787653, 41.753989060496764], [-69.930239393094922, 41.752893121072766], [-69.930178442743596, 41.75138060736613], [-69.930025124633602, 41.750768944005252], [-69.930056353906551, 41.75035460298416], [-69.929903039764469, 41.749806514704019], [-69.929661459318211, 41.749204889934148], [-69.929447861053632, 41.747900717959723], [-69.929447644618989, 41.74694618194706], [-69.929172763481773, 41.745318153811127], [-69.929264207663792, 41.743741283634677], [-69.928653066768234, 41.7412424210615], [-69.928897548202315, 41.739231458813009], [-69.928746191781883, 41.737197564810216], [-69.928928839184024, 41.736214034148823], [-69.928776125475665, 41.734954103834106], [-69.928929415765822, 41.732602483269559], [-69.928776961233709, 41.72837026445287], [-69.928411006511723, 41.723743918588852], [-69.928013587077174, 41.722387135395863], [-69.928105998620481, 41.720062320022443], [-69.928045577132636, 41.715712591834723], [-69.928167240909517, 41.715027097299505], [-69.928198374868103, 41.712784101632067], [-69.928106455903688, 41.711938069332142], [-69.928229267942115, 41.710199000767254], [-69.927984668603216, 41.708993989860623], [-69.927801686319739, 41.707184870874769], [-69.927955405380033, 41.706202022633832], [-69.927863814497556, 41.704644595908334], [-69.928076989137395, 41.703183680863916], [-69.9279852932046, 41.702788443622026], [-69.928199393460531, 41.699471871569699], [-69.928383062933321, 41.698858103087559], [-69.9281084629216, 41.695581607170602], [-69.928261731732988, 41.691698587832875], [-69.928505409829341, 41.690597664872605], [-69.928658731920763, 41.688929977066053], [-69.928597248868854, 41.688723632810536], [-69.929054914807651, 41.686936327890372], [-69.929238679964342, 41.686502660687907], [-69.929269333314068, 41.685592403719987], [-69.929635554097089, 41.68428389351984], [-69.930154690290323, 41.68188391971956], [-69.930246151946719, 41.681216557264008], [-69.930978908893508, 41.678724344623554], [-69.93100946804158, 41.67840904930992], [-69.931833688504355, 41.676303689012094], [-69.932565493098664, 41.67348781331097], [-69.932871078932777, 41.672413129880375], [-69.932901705060729, 41.671746638572685], [-69.933053863907389, 41.67144814651202], [-69.933114769417031, 41.670006558510906], [-69.933450241182854, 41.669318871838897], [-69.93424423085068, 41.668204714880439], [-69.935952362894028, 41.666299517465944], [-69.936684721155999, 41.66564483430637], [-69.938941647728299, 41.662573060394656], [-69.939460838442002, 41.661704446439479], [-69.939734818518787, 41.660702434137043], [-69.940985779159476, 41.657566749716558], [-69.941686943528737, 41.655480440416703], [-69.942662499850883, 41.653814907850993], [-69.943059292343037, 41.652622673211788], [-69.944066012658666, 41.651434822638706], [-69.946139397118756, 41.6480942170002], [-69.946474854372752, 41.64715435460289], [-69.947266927708768, 41.645851072147352], [-69.948273218049565, 41.644455525103545], [-69.948853096742766, 41.643766089382574], [-69.949188671908985, 41.643106007105125], [-69.950621518572987, 41.641274382294299], [-69.951170381354132, 41.640792798623039], [-69.951749961077596, 41.640544590222603], [-69.952359202386575, 41.640404932807421], [-69.952237499335439, 41.640954832648802], [-69.951719464506098, 41.64118470101829], [-69.951200886353135, 41.641531084469676], [-69.950773823264029, 41.641940036755315], [-69.950743168675615, 41.642120259288745], [-69.951048763753732, 41.642171699265575], [-69.951749641904996, 41.642031042239338], [-69.952298482280739, 41.641485787461114], [-69.95330434533571, 41.640333867859042], [-69.953915014652594, 41.640040506222881], [-69.954494049227293, 41.639630276691399], [-69.955378319536081, 41.639235898163875], [-69.956140055270936, 41.639148360251028], [-69.956476266609698, 41.639487731080486], [-69.956567592009762, 41.640135709790435], [-69.956720068207034, 41.640980827397897], [-69.956964779983593, 41.641411345835451], [-69.957086825073333, 41.64237374490574], [-69.956996162393821, 41.643176210441482], [-69.956416410374359, 41.643262263288776], [-69.956294583398716, 41.642803605679461], [-69.956141186152948, 41.642210614921481], [-69.955836646726084, 41.641961093289055], [-69.955714112764895, 41.641457400369617], [-69.955408851923309, 41.641252892490883], [-69.955134961321477, 41.641300409713025], [-69.954738682054042, 41.641663599150789], [-69.953640340824364, 41.641843984632516], [-69.95315242588913, 41.641821048510764], [-69.952603564756316, 41.642258156738691], [-69.951963464085097, 41.642605771367343], [-69.951109545433653, 41.642918862313373], [-69.951170632371145, 41.64315265400743], [-69.952573627205794, 41.64296977499567], [-69.953732200996768, 41.643149248119045], [-69.954067766561153, 41.643083482146309], [-69.954525734247994, 41.64317867750043], [-69.954525390292901, 41.643376782840932], [-69.954159735000033, 41.643515261698191], [-69.950988396901735, 41.643658414032743], [-69.950255341366741, 41.643862833992124], [-69.949768189368967, 41.644209099342852], [-69.949676809598984, 41.644452699624793], [-69.949798110067121, 41.644614192423937], [-69.950103300843494, 41.644593589203751], [-69.950378123825502, 41.644429031455026], [-69.950530375862328, 41.644229664347378], [-69.951018334793048, 41.64401848188966], [-69.952696033469735, 41.644157850172114], [-69.951353879131275, 41.644429988894011], [-69.951170675019014, 41.644638480761081], [-69.950895931386142, 41.645325331929364], [-69.950438632812109, 41.645509376523613], [-69.950195353435234, 41.645808809212753], [-69.948640298119841, 41.646397692363053], [-69.948883777475643, 41.646630101570288], [-69.948883961376012, 41.646855229136861], [-69.949250311964306, 41.647293547243471], [-69.949219473711835, 41.647500872255542], [-69.948579486720803, 41.647929965696299], [-69.948426713035985, 41.648318518575884], [-69.948793039315206, 41.648639232299082], [-69.948793142886345, 41.649035994512225], [-69.948610570020435, 41.649217566167913], [-69.948365942165182, 41.649309321266514], [-69.948396971277333, 41.649579354733795], [-69.948915671083938, 41.649647215160861], [-69.949220319020014, 41.649491531417922], [-69.949402399884562, 41.649255922026583], [-69.949372272310057, 41.649012916213479], [-69.949463923905654, 41.64882280954604], [-69.950012720324509, 41.648530334770143], [-69.950226439492752, 41.648321630127143], [-69.94973768121649, 41.64816305307221], [-69.949921097592991, 41.647837411041003], [-69.950531708329564, 41.64733695041663], [-69.951080049615243, 41.64740466480783], [-69.951384690773338, 41.647203950356591], [-69.951659329535843, 41.647156451975313], [-69.952574128854451, 41.646671378916274], [-69.953184659607047, 41.646495623800078], [-69.95376393714831, 41.646445510479637], [-69.954648254840905, 41.646510482014044], [-69.955562888903458, 41.646448617804552], [-69.955684794685567, 41.646123302081435], [-69.955288314062145, 41.645946821457088], [-69.953672095417403, 41.646167357697415], [-69.953336850653102, 41.646080132092429], [-69.953488680301291, 41.645808625282179], [-69.954556081333408, 41.645664470158664], [-69.955623820295031, 41.645322109654295], [-69.95586803210702, 41.64493316870378], [-69.955867836267132, 41.644617991111915], [-69.955562722424716, 41.644043740612247], [-69.955653488508517, 41.642989137407476], [-69.955897274338383, 41.643194430551318], [-69.956447385482363, 41.644729958015539], [-69.956264393785986, 41.645686505881798], [-69.956203866154524, 41.646488299503048], [-69.956570040916048, 41.647358830599131], [-69.95657059263236, 41.647818633211507], [-69.9564179640644, 41.648387298068393], [-69.955899888406122, 41.648850775172136], [-69.955472649840502, 41.649673972888735], [-69.955167724115157, 41.64985668440854], [-69.954922969667976, 41.651042559234291], [-69.955442035070277, 41.65062862718748], [-69.956082469906391, 41.650632821944392], [-69.956144611237946, 41.650794134695175], [-69.9551986806635, 41.651756619218602], [-69.954619545864659, 41.652121917421965], [-69.953857256298846, 41.652146404728796], [-69.953490649569687, 41.651870188843432], [-69.953429983309078, 41.651618304306318], [-69.953704099919122, 41.651498753861063], [-69.954313673319021, 41.651115954123966], [-69.953856113546266, 41.650768083893901], [-69.953673965178538, 41.650634494254476], [-69.953611989757704, 41.650248057272862], [-69.95321594371309, 41.65015208033337], [-69.951659965133302, 41.650354318310725], [-69.950074144406329, 41.650628258499879], [-69.949128617062925, 41.651248509066846], [-69.948366432644164, 41.651363011010616], [-69.947085228153114, 41.652238188436719], [-69.946993878065001, 41.652509342593447], [-69.947024369101925, 41.653058524584964], [-69.947329601057092, 41.653037928810384], [-69.947420969068375, 41.652874834803363], [-69.947634871770035, 41.652783202403377], [-69.94793990541389, 41.652780612329579], [-69.948183967300835, 41.652895875468175], [-69.948000535298334, 41.653374600002174], [-69.947024989018672, 41.654022069590461], [-69.945774635476539, 41.654617868867348], [-69.945378006279753, 41.654846577804733], [-69.944950859485274, 41.655273518794296], [-69.944341199090886, 41.656332275024184], [-69.943334534778643, 41.656853758387655], [-69.943182100705911, 41.657152169301376], [-69.942632479283034, 41.657607321989097], [-69.942205561253928, 41.657727545199229], [-69.941962046674789, 41.657909892875118], [-69.941779218840239, 41.658208515980611], [-69.941687068619757, 41.658614730683503], [-69.941076839900191, 41.659097141372115], [-69.940802571416569, 41.659279695465223], [-69.940680945369635, 41.659712520418651], [-69.941016124466728, 41.660016532640149], [-69.942206053700801, 41.65955611195686], [-69.943456621361506, 41.658636172349091], [-69.943700975885221, 41.658093542124924], [-69.9441277409354, 41.657703160626895], [-69.944462693181691, 41.65753781792742], [-69.945164773916531, 41.657523195426847], [-69.945195386510221, 41.658180439935535], [-69.94443285586469, 41.658799193060979], [-69.944341611897883, 41.659124376917347], [-69.9445240942824, 41.659348126233539], [-69.944829653300701, 41.65930052616735], [-69.94568288363935, 41.658482558332778], [-69.945866390308268, 41.658021848176858], [-69.946292915787751, 41.657378774734347], [-69.946293036898865, 41.657126635955869], [-69.946659502404842, 41.656790622157708], [-69.946903260635438, 41.65696837851457], [-69.946903370708853, 41.6575176858898], [-69.946689987098267, 41.657789964824424], [-69.946446186551071, 41.658251563541327], [-69.9457141560558, 41.658959711305712], [-69.94547026008253, 41.659943507702977], [-69.945073978840995, 41.660334311105167], [-69.944616027094582, 41.660446284877729], [-69.943426668988863, 41.661041183307489], [-69.94290828773147, 41.661568265174907], [-69.941657436908443, 41.662758346452058], [-69.941413728774563, 41.663120250759633], [-69.941352260707447, 41.663607390669078], [-69.941138792997862, 41.663699017823255], [-69.939369111821151, 41.665064854871872], [-69.938758754410159, 41.666375714855157], [-69.938301997550724, 41.667469228596886], [-69.937904912140283, 41.668130148098804], [-69.937264515826328, 41.668549630687004], [-69.935402907560487, 41.670104962611504], [-69.934091165636531, 41.672160321519499], [-69.934091716773494, 41.672412470151365], [-69.934395732344811, 41.672779107598167], [-69.935098374885413, 41.674034352652484], [-69.935464447159532, 41.674427685186984], [-69.93598295535773, 41.674378533928945], [-69.93637988598681, 41.674492591370445], [-69.935250722402515, 41.675573427489951], [-69.934151975548517, 41.677122393414145], [-69.933999223549193, 41.677537944345055], [-69.934091580440196, 41.67813183713416], [-69.935128932158761, 41.680672563665631], [-69.934945697819629, 41.681376397978887], [-69.935128659395588, 41.682293466025463], [-69.935037304289793, 41.68309590868602], [-69.934762617742479, 41.683962826660952], [-69.934182912088076, 41.684967375668968], [-69.934091409369458, 41.685544689832923], [-69.934732060790509, 41.68751210039617], [-69.935677957613379, 41.689359254060648], [-69.935708372008619, 41.689638287884414], [-69.935556081336699, 41.689999817234629], [-69.935525237604907, 41.690891971881761], [-69.935616207343656, 41.691440818596448], [-69.934945296538828, 41.692959116148415], [-69.934914870193097, 41.693554110389421], [-69.93470088760715, 41.693843830553632], [-69.934945295617297, 41.694166330525597], [-69.934884384553385, 41.694553879777146], [-69.9346705083111, 41.694736081300753], [-69.934579459457623, 41.694970670577533], [-69.933694157747283, 41.695860612358146], [-69.932564435041641, 41.696545198136732], [-69.931619186475316, 41.697579640007149], [-69.931618239947298, 41.697921818398463], [-69.931831777466272, 41.698082349411614], [-69.932320658523025, 41.698357525515547], [-69.93268661591722, 41.698696833325762], [-69.932717278303954, 41.699038906449729], [-69.932961469629674, 41.699478473203243], [-69.933052407187859, 41.700072346728447], [-69.932717897377302, 41.701605890294019], [-69.931831840168357, 41.702423858429462], [-69.93122145380805, 41.702726119736425], [-69.93027456416803, 41.703436257541803], [-69.929969847973126, 41.704438367363366], [-69.930152866703537, 41.705103392778994], [-69.930121987593438, 41.705445698625191], [-69.930244660142094, 41.705769320832296], [-69.930916139521599, 41.706088083553709], [-69.930977152691881, 41.706294959966407], [-69.930580132265959, 41.70752263574223], [-69.930519134583577, 41.708739095370589], [-69.930305026606916, 41.709857900241325], [-69.930274429256343, 41.711074238940306], [-69.930579432993113, 41.711602988345618], [-69.931464859621713, 41.71255964173465], [-69.93161722127175, 41.712810460318046], [-69.93100732626344, 41.713220788749055], [-69.931343235946855, 41.713749421564557], [-69.93161725218836, 41.713999125045753], [-69.931556059622721, 41.714504274732541], [-69.932380873441588, 41.714641707610994], [-69.932167347427921, 41.715967549344221], [-69.932777692587194, 41.716421703457776], [-69.932655935538889, 41.716765009770867], [-69.932289324240799, 41.718236245944595], [-69.931922669320215, 41.718851462370388], [-69.931434372173541, 41.719143521930413], [-69.93137248868814, 41.719441546248426], [-69.93164778903963, 41.71971828207073], [-69.931617255868375, 41.72006122329244], [-69.931220229518544, 41.720703574611818], [-69.931250690739205, 41.721117595562689], [-69.931587125635261, 41.721367078176982], [-69.931434444561518, 41.722215409762164], [-69.930893733489441, 41.722663252405091], [-69.930670750569845, 41.723040641391471], [-69.930731746960276, 41.724139555997503], [-69.930456808007861, 41.72493379184251], [-69.931097876407975, 41.726009724609099], [-69.931220344348304, 41.726602952792632], [-69.931831100594422, 41.726652430132404], [-69.932044805216933, 41.726560280452638], [-69.932960964990798, 41.726670238902031], [-69.932990507921076, 41.726877220883338], [-69.932685260208842, 41.727221963649598], [-69.932685579133476, 41.72759117420901], [-69.932869442648908, 41.72776984358832], [-69.933021955434839, 41.728182842232748], [-69.932960332494119, 41.728823061985899], [-69.932685917328939, 41.729689350424955], [-69.932685545890351, 41.731022629706828], [-69.933235405401504, 41.731135466435219], [-69.933479525399349, 41.731367373070327], [-69.933510060296342, 41.731916469180277], [-69.933877114266764, 41.732282890325244], [-69.933450076885634, 41.732646761915426], [-69.933144055149768, 41.733144581209501], [-69.933540362496316, 41.733744906216948], [-69.933266009315588, 41.733990480551306], [-69.932044172832761, 41.734315312107988], [-69.931708767356497, 41.734912318751633], [-69.932013739394066, 41.735207471351693], [-69.931952496557258, 41.735802130439062], [-69.931616567031242, 41.736327089460111], [-69.931494416274248, 41.736787454642155], [-69.931646743732557, 41.738065475217795], [-69.931494419647777, 41.73836396490389], [-69.931800094861529, 41.73902779331101], [-69.932044272220352, 41.739503289364954], [-69.93234944923141, 41.739987008750347], [-69.932532977919848, 41.740607009780824], [-69.932441670007663, 41.74104024532992], [-69.933143959453105, 41.742412460624614], [-69.933754526816415, 41.742966204140849], [-69.935037175918438, 41.743694154257085], [-69.935159220145991, 41.744062155542004], [-69.934885361365232, 41.744658936746895], [-69.935098552659227, 41.745296720363982], [-69.935953490700157, 41.745983301310304], [-69.936015220056007, 41.746487259112413], [-69.936320500723227, 41.746664797760758], [-69.936565259522141, 41.747104361100106], [-69.936351685925843, 41.747493147052822], [-69.936350830833263, 41.747925916336897], [-69.936869958907138, 41.748426067311883], [-69.93686980042699, 41.748678205522673], [-69.936259148429414, 41.749367170839719], [-69.936409918334931, 41.749780679995162], [-69.937295719865347, 41.750467043101466], [-69.937479040482415, 41.750744841544631], [-69.937784950408329, 41.751084474513057], [-69.938670379481792, 41.751266000514619], [-69.939129109390805, 41.751424833136682], [-69.939892659151241, 41.75190463589329], [-69.940167443966445, 41.752254011721803], [-69.94099239654733, 41.753697102621359], [-69.941817415221209, 41.754059587604729], [-69.942581227908988, 41.754792055496118], [-69.942641947065042, 41.75529554486431], [-69.942336810641095, 41.755938021141972], [-69.942214813731837, 41.75655148427964], [-69.94209277319419, 41.75677719137564], [-69.941847787239325, 41.756851553427026], [-69.94126805673794, 41.756829483475968], [-69.940931495256862, 41.757147436361826], [-69.941512470965677, 41.757394560018575], [-69.94151240950346, 41.75762868922039], [-69.941023707638436, 41.758064957521157], [-69.940168556199012, 41.758333485732059], [-69.939740257427005, 41.758679355171552], [-69.939037138110066, 41.758567875085099], [-69.938640196161941, 41.758309754147362], [-69.937937905447896, 41.758243303592167], [-69.937387574042589, 41.75835615205991], [-69.936929268943771, 41.758792279941083], [-69.936869098651243, 41.759162280546427], [-69.936990759749477, 41.759503348860399], [-69.937693177639531, 41.759614291559785], [-69.938151229023092, 41.759232817527391], [-69.938670634707222, 41.759111076680796], [-69.939526810419736, 41.759185213963903], [-69.940351719656206, 41.759682782172945], [-69.940901450930625, 41.76025483153991], [-69.940932397448449, 41.760740984678087], [-69.941268164690413, 41.762845996215987], [-69.941818194731908, 41.763688194650491], [-69.942338180665899, 41.764899724576154], [-69.942337880956188, 41.766637684661923], [-69.942490445518061, 41.767005553588533], [-69.942796733924055, 41.767210642207388], [-69.9440489586231, 41.767281241995825], [-69.944782850647471, 41.767491624392527], [-69.945088603211076, 41.767714169080477], [-69.94563822277172, 41.767989027687051], [-69.945852173800162, 41.768356108434489], [-69.946830069119116, 41.769321091925377], [-69.947044144013645, 41.76984179701369], [-69.946952973537492, 41.770805798444911], [-69.947044516103958, 41.771354639503464], [-69.946678136364241, 41.771951898234853], [-69.94628071726396, 41.772153593751199], [-69.945608360160449, 41.77219503043753], [-69.945180227799142, 41.772333898567133], [-69.944264164125457, 41.773071058580371], [-69.943408164958626, 41.773411101554878], [-69.942674818445383, 41.773210263976111], [-69.941544497551121, 41.773300616630898], [-69.941208541899982, 41.773186249704793], [-69.940994158123502, 41.772881648928617], [-69.940444249716407, 41.772543819392794], [-69.940077226835726, 41.772519614054012], [-69.939222228035021, 41.772247299473584], [-69.937907263923833, 41.771556153438709], [-69.937632596371444, 41.771720150282974], [-69.937693275099207, 41.771899911813698], [-69.938121676462345, 41.77240952555357], [-69.938457705546796, 41.772613952740627], [-69.939497168589057, 41.772839812595286], [-69.93995459281426, 41.773088041350533], [-69.939527345389436, 41.773253915599604], [-69.938886172561666, 41.77384450468211], [-69.938213214921674, 41.77400295482947], [-69.937449428404832, 41.774441651781714], [-69.937174475313554, 41.774759268902322], [-69.937174125466242, 41.775677774421617], [-69.937663418324405, 41.775700783969562], [-69.938733099501107, 41.775170104176468], [-69.939955177837263, 41.774880674138252], [-69.94059753297357, 41.774857319990133], [-69.941757876323493, 41.775199086384553], [-69.943103132832348, 41.775422340653698], [-69.943836008477092, 41.775307994003185], [-69.9455172451827, 41.774628015563863], [-69.946281178625199, 41.774576481660873], [-69.947136539389177, 41.774371483179785], [-69.948144811658494, 41.773705344936658], [-69.948878417795825, 41.772861572695525], [-69.949061912597472, 41.772517919291325], [-69.949367343281125, 41.772542337959401], [-69.949642106391124, 41.772774533625061], [-69.949643062013735, 41.773711064539434], [-69.949550510825901, 41.774099270462116], [-69.949092954129739, 41.774552927231312], [-69.948358755043927, 41.774460174844712], [-69.947687077761415, 41.774393573565909], [-69.947503313730465, 41.774530106613071], [-69.947717147390662, 41.774690607397282], [-69.947870055800507, 41.775031547864401], [-69.948084144391174, 41.775147026483133], [-69.948329479302402, 41.775496429407461], [-69.948725654295231, 41.775420779372766], [-69.948970719490021, 41.775608177584061], [-69.949276252259637, 41.7757676723758], [-69.94988732777216, 41.775447306105228], [-69.950162440406942, 41.775219710868186], [-69.950284126896648, 41.774993990400368], [-69.950865266081408, 41.774141918424284], [-69.951231682669984, 41.773913941244338], [-69.952209316494674, 41.77382475018824], [-69.952820300101564, 41.773432327574575], [-69.953034598348324, 41.772953471454272], [-69.952880649493025, 41.772197844784316], [-69.953094565829844, 41.771809033139569], [-69.95361435978765, 41.771192495277326], [-69.953645171521032, 41.770372290284136], [-69.953400008584083, 41.77009485092892], [-69.953003178365407, 41.769891353819936], [-69.95165804425109, 41.769587172129341], [-69.951230999685961, 41.769618017638429], [-69.950130208378638, 41.769545595595183], [-69.949335465329028, 41.769318120953336], [-69.949152595462436, 41.76892337464907], [-69.949152727612216, 41.768581187107131], [-69.948968988461473, 41.76822235850053], [-69.948694060085103, 41.767918659042309], [-69.947930333325843, 41.767465301309898], [-69.946707413662125, 41.767025399059214], [-69.946523784954721, 41.76675670767753], [-69.945913555511254, 41.766437172106819], [-69.944293309909639, 41.766000287073254], [-69.943835377565804, 41.765724963221963], [-69.943560668811756, 41.765339668611659], [-69.943468412013104, 41.764989464740722], [-69.943804719554223, 41.764653490613306], [-69.944354592784606, 41.764378514447074], [-69.944659877276919, 41.764051749572992], [-69.944934993952458, 41.763481977589059], [-69.945239756264385, 41.76334430895789], [-69.945881884364979, 41.763275988613863], [-69.94627902450982, 41.763390006302828], [-69.946462329165854, 41.763577648936135], [-69.946157418574757, 41.764309648150288], [-69.946493323456409, 41.764469025300343], [-69.947899148852812, 41.764448206304799], [-69.948112597037976, 41.764761786378976], [-69.947562477908761, 41.764829752496013], [-69.947287801554893, 41.764966666797505], [-69.947073774793495, 41.765221021849804], [-69.947410133044528, 41.765515386908852], [-69.948480120191647, 41.765956621082744], [-69.948937503208882, 41.76625046875418], [-69.949396294017319, 41.766273553848414], [-69.95071030717736, 41.76583947202672], [-69.951382844454244, 41.765698413553068], [-69.952420874069048, 41.764789510029878], [-69.952542820550462, 41.763896792241489], [-69.952848695279215, 41.763777128521141], [-69.953306340582287, 41.763782262632951], [-69.953551218127615, 41.763851953927677], [-69.954437400128327, 41.763484691383553], [-69.955078977420499, 41.763344272055939], [-69.956086863746833, 41.762822681310219], [-69.956819624816504, 41.761446925585645], [-69.958530676763445, 41.761423987580741], [-69.959080888401544, 41.760941741835886], [-69.959294725197225, 41.760877097095374], [-69.95947767472488, 41.761055798665666], [-69.959508874168819, 41.76167693289225], [-69.959325548059709, 41.762750006598793], [-69.959326151565065, 41.763687071454804], [-69.959815084555132, 41.764439474302428], [-69.960884746714115, 41.765610438595786], [-69.961282755826673, 41.766363857398559], [-69.96103849573619, 41.767779919765282], [-69.961375115404564, 41.768191400786804], [-69.962414195749673, 41.768308446534945], [-69.962810921439285, 41.768242301018674], [-69.963238797517135, 41.767941364891342], [-69.963605324906979, 41.767920374355526], [-69.96381953691747, 41.768125874595988], [-69.963727810509297, 41.769378577630249], [-69.964308910797698, 41.769958767148147], [-69.964553254462174, 41.77031721570475], [-69.964584746673793, 41.770803367275455], [-69.964370937664071, 41.771345825455427], [-69.964035330457705, 41.771690783545942], [-69.962781868734581, 41.772241820182302], [-69.962874457279497, 41.772628031242789], [-69.963241077539806, 41.772859181487306], [-69.963332900554235, 41.773227371881546], [-69.963302627902635, 41.773750421527993], [-69.962905590028811, 41.774347767232499], [-69.96260009017486, 41.774530498067172], [-69.962722077232343, 41.774755016697888], [-69.963303081873562, 41.774876046822001], [-69.963577663194485, 41.774648412704202], [-69.963760460352233, 41.774205672774173], [-69.964524636353374, 41.774163115098716], [-69.964738680037385, 41.774251546604681], [-69.964891463949328, 41.774556351716811], [-69.965136308238996, 41.774644657147178], [-69.965839288651878, 41.774710946451485], [-69.966114422946347, 41.774960576032804], [-69.966511782229787, 41.775695955770303], [-69.967031279518665, 41.776295021813205], [-69.967673573290426, 41.776424598199014], [-69.968650859630515, 41.776335351256165], [-69.969323988056928, 41.776563846767779], [-69.969935598230364, 41.777477058177048], [-69.970240835328227, 41.777681516637273], [-69.9707003186507, 41.778146396320231], [-69.97070090742416, 41.778533616541651], [-69.970119862048278, 41.778808931597013], [-69.969539090206553, 41.778741429376645], [-69.968225138831585, 41.778851552859955], [-69.967766126445539, 41.778738492498462], [-69.966850113349281, 41.778764441635339], [-69.966361034585873, 41.778966594350919], [-69.965871589036112, 41.779123805385829], [-69.964863260398914, 41.778826028442793], [-69.964557336292017, 41.778900699595766], [-69.963763159524063, 41.779357711825476], [-69.962571157167247, 41.779448523052189], [-69.962143853302123, 41.779677425694082], [-69.961899984789682, 41.780202094203958], [-69.962113100411841, 41.780749230172226], [-69.96284775494766, 41.781121592595518], [-69.962755681641497, 41.781527824516203], [-69.962816945277268, 41.781716584339833], [-69.963031022376668, 41.781894528373385], [-69.963458579574436, 41.782125418428357], [-69.963641964628152, 41.782304027985639], [-69.963948138502658, 41.782814684098383], [-69.964345840543302, 41.78303670357765], [-69.965323547724481, 41.783244652656407], [-69.96559839945327, 41.783107066466144], [-69.965323364297859, 41.782721823029661], [-69.965353975026417, 41.782514491194341], [-69.965751068185128, 41.782151266138186], [-69.965781060033166, 41.781619207536856], [-69.96590343809649, 41.781392940054609], [-69.966331887474411, 41.78141671752671], [-69.966759754217705, 41.781620044122299], [-69.967278895864169, 41.781669801905615], [-69.967553975223325, 41.781487189487002], [-69.967553382987745, 41.7811359887706], [-69.967400956196315, 41.780795082686907], [-69.967430873348647, 41.7803356926959], [-69.968531539894585, 41.779840001482135], [-69.968989383788795, 41.779259752796683], [-69.969356094530411, 41.779238745387474], [-69.97030380450002, 41.779491814352561], [-69.970761775306869, 41.779442851558649], [-69.971067399964838, 41.779305125239745], [-69.971434007420584, 41.778986946877943], [-69.971647581900953, 41.778372433465378], [-69.971464623118976, 41.778004738963332], [-69.970363677884762, 41.776977989118983], [-69.969873758336206, 41.775991583282483], [-69.970454981848533, 41.775833336376749], [-69.970851427593658, 41.776217405529252], [-69.97121811359365, 41.776151457397098], [-69.97127945150342, 41.775925986324232], [-69.97115687179587, 41.775629429846077], [-69.970790202775333, 41.775353280351581], [-69.970301059023114, 41.775213350961785], [-69.96972135336631, 41.775308492768119], [-69.969200919832886, 41.775690965271053], [-69.968560167878323, 41.775948630696476], [-69.967917934444415, 41.775972054074117], [-69.967642431918833, 41.775812473505397], [-69.967489705436492, 41.775489573149912], [-69.967764798238576, 41.775144871715135], [-69.968375605645306, 41.774806394354513], [-69.969138966366287, 41.774025389454145], [-69.969414137409444, 41.773977848354967], [-69.969841459562844, 41.774046622853149], [-69.970422864161335, 41.773960418285924], [-69.97121729373518, 41.773593503899022], [-69.971064198109246, 41.773315628215286], [-69.970820072245147, 41.773227345201803], [-69.969872684644656, 41.773496660212643], [-69.968894856716346, 41.773640479715986], [-69.968314508949149, 41.773888239380625], [-69.968100342120223, 41.774070501613863], [-69.967427848618769, 41.774508372949576], [-69.967152978510171, 41.774573292895859], [-69.966175151702899, 41.774185347201218], [-69.966082836257613, 41.773366274957652], [-69.966296799454938, 41.773112514435354], [-69.967274286125232, 41.773248406295949], [-69.967947287962815, 41.773134720864938], [-69.969200134591105, 41.77280883314647], [-69.969932777285777, 41.772244069464982], [-69.970757909080419, 41.771804900961676], [-69.971521072546352, 41.770888714085117], [-69.971979251309548, 41.770893779639032], [-69.973170652183583, 41.770820784047579], [-69.973354272743222, 41.770657283787116], [-69.97262111164379, 41.770411077271852], [-69.971551316163257, 41.770429327642979], [-69.970879402698657, 41.770750162145305], [-69.970268406707874, 41.770521338664174], [-69.969625646299477, 41.770157551532336], [-69.968525541142398, 41.769995267387891], [-69.968189871204899, 41.769998138605622], [-69.967365025251553, 41.769608837156042], [-69.967120151802746, 41.769286947530198], [-69.967058907035266, 41.768972120899591], [-69.966844678930599, 41.768676577230281], [-69.965652340689147, 41.767938957947564], [-69.965255783863952, 41.767347754048615], [-69.965132922232939, 41.766889637725981], [-69.965163042399524, 41.766592339796333], [-69.964734669901176, 41.765929205878315], [-69.964734718330774, 41.765722092588035], [-69.965864449659477, 41.76475802403624], [-69.966751185681687, 41.764254969363584], [-69.967698088436208, 41.763499498134642], [-69.968583896712616, 41.763114021738488], [-69.969194720308437, 41.763000665072674], [-69.970019753161154, 41.763047768984045], [-69.970905494340769, 41.762814907693375], [-69.971577540893506, 41.762268952274944], [-69.972279170425452, 41.761028928708157], [-69.972523700084508, 41.76084706664669], [-69.973532049215038, 41.760549913355021], [-69.973776231889957, 41.760160930201124], [-69.974050647994773, 41.759654116736442], [-69.974386671084631, 41.759498239813929], [-69.975608634613721, 41.759838777370341], [-69.975945169261081, 41.759862911388936], [-69.976983544160831, 41.759566129692054], [-69.977349590271444, 41.759265486044058], [-69.977564222303869, 41.758606492422743], [-69.978051831838627, 41.758377169526554], [-69.97921306111553, 41.758394390420129], [-69.98046601013111, 41.758716649320945], [-69.980955081750466, 41.758991699540267], [-69.980955255786753, 41.759586026968023], [-69.98123055889991, 41.759818152988245], [-69.981322954047485, 41.760024246932986], [-69.981078036830283, 41.760521925295961], [-69.9810175280073, 41.760684287665995], [-69.98116992678986, 41.761007165061137], [-69.982056422307892, 41.761549101665949], [-69.983248769882906, 41.7615751599322], [-69.983645244650745, 41.76148138430068], [-69.98398068091447, 41.761091253508681], [-69.984102807755832, 41.760774915348975], [-69.983705390622347, 41.760022217459372], [-69.983215791744712, 41.759495124548799], [-69.982115699083309, 41.759450033736762], [-69.981688211267056, 41.759219843597641], [-69.981015014747001, 41.758261929143664], [-69.98006868329891, 41.758053448127569], [-69.979457132819306, 41.757851680005039], [-69.978235275222076, 41.757870841850938], [-69.977380299890044, 41.758103629874796], [-69.976310348799231, 41.758923449338852], [-69.976005743566802, 41.75904319215573], [-69.974141482512266, 41.758716568697956], [-69.972950687745396, 41.758537351160989], [-69.972338935822606, 41.758515640738075], [-69.972033413393262, 41.758653370593642], [-69.971850362676619, 41.758925025404544], [-69.9718205974157, 41.759430073529622], [-69.971454218559515, 41.760135377468551], [-69.970965706402026, 41.760616798928154], [-69.970843174756823, 41.760897098660706], [-69.970537761959108, 41.761079850883696], [-69.970324094134185, 41.761027454564022], [-69.969162948764279, 41.761145219011631], [-69.968613642488222, 41.761447425647908], [-69.96806328291747, 41.76237987192841], [-69.967606038521225, 41.762293307572378], [-69.966627410760964, 41.7618062077605], [-69.965068872383767, 41.761423308163792], [-69.964365895156618, 41.761302982389878], [-69.96354113313599, 41.761075741661557], [-69.963082736492652, 41.761007693611084], [-69.962624660898726, 41.760786473667061], [-69.96241040580226, 41.760274261419667], [-69.962593619186435, 41.760047648197308], [-69.962745859257922, 41.759389008951629], [-69.962684547331193, 41.75881348490369], [-69.962439749701417, 41.758491134969184], [-69.96137098046789, 41.758085527387188], [-69.960179072098413, 41.75746554768174], [-69.960484396406571, 41.756867963083351], [-69.961553237863228, 41.756760297415752], [-69.962164834831214, 41.75654793492366], [-69.963019783664066, 41.755928047165227], [-69.964058277608771, 41.755406260917873], [-69.965860569254247, 41.754832261476309], [-69.967662206486452, 41.75407866637839], [-69.968334213494416, 41.754028092622278], [-69.969189724360504, 41.754399251887605], [-69.96961803931427, 41.754827609999737], [-69.969679630564158, 41.755313624183081], [-69.969099173723265, 41.755904112673846], [-69.969160434580957, 41.756137893862181], [-69.969801881002468, 41.756294554535302], [-69.970504578710788, 41.756063110646465], [-69.97096311680815, 41.755887997576103], [-69.971359631491566, 41.755560767216771], [-69.971451311255635, 41.755262583181981], [-69.971267614434865, 41.75499384153995], [-69.970993276008784, 41.754834283451096], [-69.970106209037482, 41.754715482985034], [-69.969769935884287, 41.754556170551929], [-69.969312073928748, 41.75396577706222], [-69.968914267713345, 41.75368974132595], [-69.968853070989439, 41.75348351572535], [-69.969342171241493, 41.753181670312799], [-69.969708539123019, 41.752521307742512], [-69.970074505525673, 41.752068142562813], [-69.970043685624191, 41.751221263555173], [-69.970684550813147, 41.750009159968997], [-69.970899433280408, 41.748899303752601], [-69.97126645688482, 41.748491174006581], [-69.970869098861314, 41.74810709132452], [-69.97086822278996, 41.747485738082496], [-69.970745715561421, 41.746982607483332], [-69.969951144000234, 41.745818130909242], [-69.968606844544809, 41.744694703679365], [-69.968087227273728, 41.744536881978171], [-69.96738428875031, 41.743876275439099], [-69.966558631298824, 41.742613471216309], [-69.966283923463465, 41.742381856186356], [-69.965978082069185, 41.741879672262677], [-69.96564267926523, 41.741657323742729], [-69.965490044546158, 41.741334420255264], [-69.965580817503863, 41.741009213587795], [-69.966039301369861, 41.740537047135057], [-69.966313474075193, 41.740399992619984], [-69.966771817284013, 41.740369064448913], [-69.966955113087209, 41.74046662464449], [-69.967138752153602, 41.740735283367513], [-69.967566098993657, 41.740713479976861], [-69.968207427382694, 41.739825575317681], [-69.968176126002561, 41.739546540886991], [-69.967809499782291, 41.739072269945289], [-69.967595857002877, 41.738956833074369], [-69.966985023106048, 41.739160227670055], [-69.96667934354879, 41.738541523436119], [-69.96710655981164, 41.737898287968633], [-69.96732080506635, 41.737833094454814], [-69.96796141795167, 41.738332485600871], [-69.968389503821598, 41.738499793373322], [-69.968817472477028, 41.738496544065072], [-69.969031028383398, 41.738179199306565], [-69.968969790295091, 41.737990352463704], [-69.968389176819983, 41.737806407299963], [-69.968602735200477, 41.737534088155776], [-69.969427628552921, 41.737211995794425], [-69.970984599803927, 41.736802927383785], [-69.971503960770946, 41.736275726564664], [-69.971808606181611, 41.736119977761788], [-69.97358030271603, 41.736141490864455], [-69.975534790492489, 41.735521030016166], [-69.977091527137489, 41.735309984504383], [-69.978496489360367, 41.735423859172542], [-69.980512861374862, 41.735974241945684], [-69.981216270228657, 41.736778852183441], [-69.981124400584974, 41.73727514931376], [-69.980360801377103, 41.736984097167976], [-69.979963544570197, 41.736753131083582], [-69.979384292412121, 41.737253635585823], [-69.979323048463343, 41.737488026411633], [-69.979537349896333, 41.737783548582804], [-69.979597850746401, 41.738080438712892], [-69.979384470455244, 41.738352239949378], [-69.978651660168481, 41.738403775197284], [-69.978315748937632, 41.738514640008681], [-69.978194140525375, 41.738840074188928], [-69.978682883457068, 41.73922310133765], [-69.979140709261202, 41.738975908147211], [-69.980057009607862, 41.738130422634462], [-69.98152251352154, 41.738036873137531], [-69.981888690525182, 41.737916857258782], [-69.982255218522823, 41.737670685818628], [-69.982499406103273, 41.737326169925673], [-69.983018459396021, 41.736934618230315], [-69.984484129270683, 41.736381691927782], [-69.987629018348159, 41.736129225210014], [-69.989308772647519, 41.735447969283648], [-69.990193960363669, 41.734873309914171], [-69.9906204164446, 41.73418495498273], [-69.99058910792175, 41.732996521319102], [-69.990863487703862, 41.732246537169644], [-69.990953602846929, 41.730894742885432], [-69.991288497450313, 41.730045425001649], [-69.991288057830715, 41.729585538103422], [-69.99110493151548, 41.729037773526841], [-69.991358896566297, 41.72860665184556], [-69.991562796479414, 41.728259332437503], [-69.991622369776053, 41.727456973471966], [-69.992111054392311, 41.726930445990547], [-69.992720764839547, 41.725925466888782], [-69.993207942821741, 41.72519180198114], [-69.993726307671665, 41.723665034795964], [-69.994304877559031, 41.722561122303141], [-69.994456579671521, 41.721173040309196], [-69.9943953711945, 41.720551972390979], [-69.995339427186437, 41.718742670846801], [-69.995461344106047, 41.71817418155301], [-69.995736323139241, 41.717919464732404], [-69.995980459325082, 41.717872083056861], [-69.996132985828353, 41.718014754921477], [-69.996378565725692, 41.718922451981832], [-69.996378509450977, 41.719246627988376], [-69.996195346121681, 41.719608907331306], [-69.995646888425796, 41.720135741976954], [-69.995341255881385, 41.720660741165311], [-69.995372851325683, 41.721074844393634], [-69.995861307937972, 41.721529833961981], [-69.996625288282488, 41.721559646502747], [-69.997022027905373, 41.72133075760037], [-69.997356929314208, 41.720940673715901], [-69.998333626857544, 41.72022974744516], [-69.998455685785757, 41.719976428629955], [-69.997965827408208, 41.719611480829187], [-69.997019428712889, 41.719223574762509], [-69.996865493650034, 41.718215784179968], [-69.995948160132002, 41.71601718491101], [-69.996221278764082, 41.714834936638589], [-69.996037742744136, 41.713890958230671], [-69.995548368671621, 41.713507995965401], [-69.995059759028223, 41.713251020138948], [-69.994754014316385, 41.712883989197877], [-69.994296447811735, 41.712635975178259], [-69.993990565747197, 41.71261166736371], [-69.993960906953973, 41.713044051193954], [-69.99310239720576, 41.713740114826095], [-69.99151879645072, 41.714100767495914], [-69.990938706009473, 41.714349088249321], [-69.9901457930699, 41.714464101991247], [-69.98813139529301, 41.715364331210402], [-69.9875206921744, 41.71579295715047], [-69.985750665735921, 41.716708728745566], [-69.98495743055571, 41.717373003394272], [-69.984103195998941, 41.717902467015151], [-69.983492721418898, 41.718385104420754], [-69.981051172011206, 41.719685282354774], [-69.980349274891509, 41.71987123166371], [-69.979310846079741, 41.720465738273653], [-69.977174179153153, 41.721312366202071], [-69.976319625013573, 41.721517590569704], [-69.975556582901802, 41.721524304340534], [-69.974120404240338, 41.721014293226347], [-69.972899085160236, 41.720285894478842], [-69.970577489504237, 41.719233834826767], [-69.966669454976895, 41.718527861083651], [-69.966119559353885, 41.718388710015027], [-69.965784014886907, 41.718157352986033], [-69.96563097807352, 41.717933588197454], [-69.964989421728944, 41.717542767822501], [-69.964592510162603, 41.717149660796281], [-69.964500486607079, 41.716492767613545], [-69.964592048425132, 41.715618269335444], [-69.964469343362254, 41.714412739577057], [-69.964040894506155, 41.713812630782613], [-69.963766273344163, 41.71347294917404], [-69.963551749325433, 41.712808188348824], [-69.963765417110793, 41.712418725696914], [-69.964040756346975, 41.712443333091358], [-69.964254734282065, 41.712810921740648], [-69.964284852542505, 41.713287961251901], [-69.964438722500034, 41.713656449219506], [-69.964926734246319, 41.714318683620888], [-69.965110119595806, 41.714659473350451], [-69.965111012785982, 41.715623017134419], [-69.965477314118559, 41.715854160665771], [-69.966056956988794, 41.715894661390898], [-69.966209993700545, 41.715667637228506], [-69.966209869687063, 41.715487536210794], [-69.965782225326578, 41.714887985444037], [-69.965721205863261, 41.714456095133329], [-69.965964992786624, 41.714408682944544], [-69.966422683828256, 41.714522369646879], [-69.96755257978279, 41.71444978869355], [-69.968284947891959, 41.71424523807201], [-69.969475257447471, 41.71363198274144], [-69.97036108350818, 41.712804718413935], [-69.970910167352017, 41.712142397266256], [-69.971092639711443, 41.711708648249711], [-69.971245637952691, 41.711527272291413], [-69.971916571548121, 41.711251454969982], [-69.972283549629637, 41.711202891759278], [-69.973016297189758, 41.711845322587678], [-69.973444073024737, 41.71209419442696], [-69.973749350328617, 41.712505762495837], [-69.973658057059239, 41.713515344151773], [-69.973567225001176, 41.713876575485855], [-69.973353078099336, 41.714112334788595], [-69.972529490926931, 41.71465959296836], [-69.972285323562488, 41.714914128044427], [-69.972132536037407, 41.715302622273633], [-69.972132782750208, 41.71577988825949], [-69.972438915600989, 41.716236495938254], [-69.973598818996692, 41.716830623880888], [-69.973782804106364, 41.717017692398315], [-69.973752770040306, 41.717585772362391], [-69.974027113306875, 41.717673286509104], [-69.974424467081121, 41.717562088470892], [-69.974759267334619, 41.717307142352162], [-69.975950669021785, 41.717539758932354], [-69.976805890372688, 41.717838823953777], [-69.978118287588273, 41.717629543086147], [-69.978637045377042, 41.717265023552486], [-69.980285709845589, 41.716530090844316], [-69.980865642213473, 41.716417435854801], [-69.981568156969075, 41.716122892554722], [-69.981872443916743, 41.715886069120018], [-69.982147113057948, 41.715388247079623], [-69.981932396132649, 41.714561431899405], [-69.981749399802538, 41.714220765705903], [-69.98104717047741, 41.713695233803335], [-69.979916569287667, 41.713101573416203], [-69.979122172334172, 41.711541571087551], [-69.978969281889533, 41.711290181154922], [-69.977808458425187, 41.710787314968591], [-69.976739848488705, 41.710444878336766], [-69.975640446657735, 41.71026527888597], [-69.974755713372659, 41.710245501963826], [-69.973412391082007, 41.710562927205572], [-69.972649345190291, 41.710650664299855], [-69.971977587052763, 41.710539171522093], [-69.971152603189296, 41.710221924502243], [-69.970664723288422, 41.710316135599783], [-69.970389524292713, 41.710471735284891], [-69.969809574455056, 41.710521301480462], [-69.96938278210348, 41.710453158466045], [-69.969107850026504, 41.710311504859739], [-69.969076551040615, 41.709942510730521], [-69.969534877213334, 41.709371186338132], [-69.969534289523949, 41.708893915418031], [-69.969808561686278, 41.708621241113462], [-69.970785702614819, 41.708072734680051], [-69.971060393654653, 41.707998171995271], [-69.971700696464836, 41.708001728989537], [-69.973318780295259, 41.707609757402857], [-69.97368481119409, 41.707408723369142], [-69.974264709206196, 41.706791194693523], [-69.974600611045133, 41.70656327934357], [-69.975577373808292, 41.7063298109179], [-69.976400575741437, 41.705646912644049], [-69.976736609223494, 41.705554067176223], [-69.977041301462606, 41.705596415873913], [-69.977438997434263, 41.705800386128004], [-69.977897233020173, 41.7062375823214], [-69.978782500055559, 41.706419431715389], [-69.979393915818122, 41.70682832233102], [-69.980003820889621, 41.706967581375743], [-69.980462208806372, 41.707242770004683], [-69.981226509383205, 41.708551304085127], [-69.981562399680357, 41.709349931186601], [-69.981532476857595, 41.710007432885206], [-69.981350100202548, 41.710288655236077], [-69.98177697846566, 41.710464903690699], [-69.98299824199033, 41.70989586655552], [-69.983608064998165, 41.709503273173425], [-69.984218455818308, 41.709228288631884], [-69.984676574012667, 41.708756046921913], [-69.985072408712568, 41.707833808140037], [-69.985010878960324, 41.70731178356418], [-69.984613561340566, 41.706963766304789], [-69.983973027245398, 41.706717145469298], [-69.983667003948696, 41.706512708869532], [-69.982598269462287, 41.706324039306118], [-69.981071224811188, 41.705508443258168], [-69.98070491398154, 41.705025121240638], [-69.980155115235931, 41.704678384070128], [-69.979360999300539, 41.704343058058633], [-69.978780953949638, 41.704338728229104], [-69.977957165859053, 41.704588857551066], [-69.977529565700863, 41.704520643805196], [-69.977254329651586, 41.704271036347997], [-69.977010742089973, 41.704155755324727], [-69.97557573529825, 41.704222089892809], [-69.974445812985437, 41.70413265842091], [-69.973378018320957, 41.704249452147529], [-69.972797928021549, 41.704749909123969], [-69.972798118153321, 41.705119114927939], [-69.972494153816811, 41.70589621573523], [-69.971883191195616, 41.705847491778627], [-69.971120485657764, 41.705646973696012], [-69.970173155691128, 41.705529065770151], [-69.969623522029195, 41.705398398363705], [-69.969349535786563, 41.705238207530485], [-69.969410101111492, 41.704841723069215], [-69.969714432923112, 41.704361798773974], [-69.969776073595355, 41.70404574293272], [-69.969500795818604, 41.703769101062122], [-69.969744773552989, 41.703019296764339], [-69.969561119818934, 41.702534521298006], [-69.96879813967081, 41.702217008812603], [-69.96855369571864, 41.702263787240412], [-69.968431728898139, 41.702670160904994], [-69.968615300786482, 41.703127922303651], [-69.968371853494247, 41.703724647078722], [-69.968738153082825, 41.704063840283268], [-69.968799335711083, 41.704459261039908], [-69.968341517775002, 41.705211138560344], [-69.968189212546406, 41.705689773806441], [-69.968465149603659, 41.707182638499731], [-69.968037540032185, 41.707771211276977], [-69.968190290514855, 41.708166694167772], [-69.967915270246564, 41.708204685387479], [-69.966878036667268, 41.709303371838409], [-69.966573889482021, 41.710269559852492], [-69.966085165032297, 41.710543839415884], [-69.965383372835831, 41.710477467935583], [-69.964619766251445, 41.70999783056601], [-69.964283600303901, 41.709559345644067], [-69.961504937592352, 41.708736135373897], [-69.960498038007472, 41.708645437604915], [-69.960131551427921, 41.708828413755661], [-69.959978455295555, 41.709307028216678], [-69.959521560722209, 41.709581080215266], [-69.959430076949715, 41.709951297468898], [-69.959063039675485, 41.709972263230732], [-69.957506216963125, 41.709607274960867], [-69.956010029967004, 41.709016342124158], [-69.955124590436895, 41.708420083581032], [-69.954360770607266, 41.708047802647265], [-69.952804292792294, 41.70788995866463], [-69.951796764588863, 41.707483910093735], [-69.949385394250953, 41.706747611939619], [-69.948682778542818, 41.706266985380054], [-69.947675410143532, 41.70590592681058], [-69.945965919457009, 41.704596051701913], [-69.945355079430399, 41.703664155308196], [-69.945477055615555, 41.703248709660578], [-69.945782197302066, 41.70288592318893], [-69.94642322515358, 41.702358337513324], [-69.947857647652995, 41.701553952225119], [-69.949139370962797, 41.700093525135749], [-69.949566702885306, 41.699333292399984], [-69.949962730144961, 41.697960922206569], [-69.950695124108918, 41.696495786668152], [-69.950907940995165, 41.695259956043962], [-69.951304600160015, 41.693824555390698], [-69.950968670996915, 41.692332446637081], [-69.950876791803296, 41.690829071442046], [-69.950937083730309, 41.688306240663003], [-69.950845429671475, 41.687829978903586], [-69.950662195127819, 41.687489256004021], [-69.950234045957657, 41.685358244041055], [-69.949899221382182, 41.684631031331278], [-69.949685703429736, 41.684534109787371], [-69.948891934212824, 41.684513115099612], [-69.948586741254402, 41.684263567406227], [-69.94828119018058, 41.68336565338408], [-69.948281295104664, 41.682960429441124], [-69.947334469895338, 41.681031695674974], [-69.946724143622106, 41.680027770285079], [-69.945625111549759, 41.678523600444464], [-69.945258956034465, 41.677265729181933], [-69.945228767082781, 41.675978139715809], [-69.945594671808635, 41.675452474606161], [-69.94568606095244, 41.67513683710844], [-69.946143948564483, 41.674493020653067], [-69.946204612098896, 41.673988487918393], [-69.947394204902452, 41.671087647255959], [-69.948949613894655, 41.669137850996897], [-69.950017386093634, 41.66735482682806], [-69.950871306286842, 41.666465419298817], [-69.951878198435068, 41.665799250804533], [-69.95239649451706, 41.665551913132944], [-69.953311270685347, 41.66529195521985], [-69.954470599811373, 41.664651970622657], [-69.954836669093154, 41.664630559763033], [-69.955141680132542, 41.664745554573209], [-69.955294448876614, 41.665023362502509], [-69.956027312822727, 41.66541323415948], [-69.956209380494627, 41.665069553507685], [-69.955813202320897, 41.66472144523361], [-69.956056948944493, 41.664404536612572], [-69.956666669178574, 41.664219204368209], [-69.95770421884491, 41.663696941176873], [-69.957978186690525, 41.663460853006832], [-69.957978266577754, 41.66316368933871], [-69.957764969110983, 41.66303022483649], [-69.957368244639056, 41.663078334227052], [-69.956910400252099, 41.663325343793197], [-69.956575352325856, 41.663400221613323], [-69.955018802486308, 41.66326031207025], [-69.954531638153853, 41.663075304310347], [-69.954408811905026, 41.662706681507373], [-69.953920725519453, 41.66248554846689], [-69.953890789994162, 41.662233631861497], [-69.954438326200176, 41.660769837295291], [-69.956634498998568, 41.658680155696111], [-69.957579283773271, 41.657330337649093], [-69.957824241418535, 41.656697727070878], [-69.958738722349693, 41.655960459160369], [-69.959043920546819, 41.655363511916768], [-69.961878802124971, 41.653097154153677], [-69.962518968877532, 41.652938678672264], [-69.962824745129979, 41.652990088619312], [-69.963801007085593, 41.653630208029163], [-69.964045268375529, 41.653583439767125], [-69.964136523319638, 41.653348291519414], [-69.964533445523045, 41.653489266670768], [-69.964777334410087, 41.653973245369819], [-69.965448441689276, 41.654246779729981], [-69.965844909260369, 41.654081664839104], [-69.965814645210642, 41.653856672385693], [-69.965539287675881, 41.653507976421494], [-69.96511272666767, 41.65328610024909], [-69.96505122132676, 41.653097246086887], [-69.965600107463175, 41.653164896940282], [-69.966149982876402, 41.653421663007769], [-69.966302412293615, 41.653699451328393], [-69.966332882241701, 41.654446735099057], [-69.966852032003288, 41.654748648379069], [-69.967096305172262, 41.654972022975699], [-69.968285707664819, 41.654862520119224], [-69.969047811378587, 41.654721408898276], [-69.970237672453919, 41.65417064837812], [-69.972310749073642, 41.653900812659067], [-69.974263549033353, 41.653830226426493], [-69.974782162694851, 41.653717867652944], [-69.975452828648685, 41.653694172833674], [-69.977161480822858, 41.653968125055989], [-69.977527639259293, 41.654126652360929], [-69.97884010982493, 41.655358714323121], [-69.980029712555861, 41.655907083303198], [-69.980610658513768, 41.656865949176449], [-69.980640579438855, 41.657279496040118], [-69.980275012196458, 41.657787353366587], [-69.979634360560482, 41.658360150151445], [-69.979025056907986, 41.658356505433943], [-69.978872543526947, 41.65798859436206], [-69.978261754257431, 41.657462097974403], [-69.97777342578496, 41.657214139793446], [-69.97701057003917, 41.65680653746918], [-69.975545769599407, 41.655683804008852], [-69.975118773274289, 41.65554363518978], [-69.973562307141322, 41.654818115557326], [-69.971458340176071, 41.65504307467527], [-69.96929236024819, 41.655475445372993], [-69.968499384391492, 41.655842437566328], [-69.968469285246982, 41.656392416177631], [-69.969079584331951, 41.656855384451596], [-69.96965935181268, 41.657967467253471], [-69.969934425988029, 41.658154059389126], [-69.970117605655787, 41.658954634219413], [-69.970331649434669, 41.659529328937467], [-69.970850172931904, 41.660191413452814], [-69.971002909358049, 41.660784372969907], [-69.970850952986851, 41.661082915800492], [-69.970851550066854, 41.661560186918152], [-69.970607610210408, 41.661607514757421], [-69.970240722558273, 41.661493440271769], [-69.969997377487331, 41.661315110261711], [-69.96969110855872, 41.659480729653829], [-69.968898041542573, 41.659297790376968], [-69.968684094166676, 41.659552181894924], [-69.969019706915773, 41.659828470373064], [-69.969355709158577, 41.660510076814191], [-69.969600790336273, 41.661498878754351], [-69.96944824063533, 41.661977421201755], [-69.968930001813135, 41.66238692578365], [-69.968685667656842, 41.662776523246343], [-69.967496957046947, 41.66399365341497], [-69.966642736628771, 41.664450939312765], [-69.965239328767012, 41.664057763537137], [-69.964507517607288, 41.663667425688963], [-69.964140681457266, 41.663346127632252], [-69.963834861696569, 41.66284447225771], [-69.962309498256957, 41.662136689125305], [-69.961882763909941, 41.661545594749008], [-69.961516254472883, 41.661431406972468], [-69.961089435739368, 41.66140825282578], [-69.960723154112316, 41.661519190232013], [-69.960692921827913, 41.662276370648478], [-69.95993073898569, 41.66280518108713], [-69.959748764088218, 41.664427577045451], [-69.960053635999827, 41.664902756227903], [-69.960786584266017, 41.665913941857191], [-69.960786446135643, 41.666373734613096], [-69.960389993204032, 41.666394843502886], [-69.959535715161493, 41.666257747073594], [-69.959169101352742, 41.666351295752058], [-69.95886447770836, 41.666299352127545], [-69.958772755271525, 41.66650747531709], [-69.958833827480618, 41.666669222032283], [-69.960267386258323, 41.666918264639264], [-69.961396756472624, 41.666917788767925], [-69.961244738160772, 41.667261343635033], [-69.961275250740186, 41.667630330484705], [-69.960665414563792, 41.668563100015568], [-69.9603601748165, 41.669070001729487], [-69.960360319645361, 41.669872077898852], [-69.96072609410929, 41.670048663370785], [-69.961092666624722, 41.670351868534667], [-69.961275787916307, 41.670647638238634], [-69.961214935577573, 41.670900575305545], [-69.959567665578788, 41.671148428786672], [-69.958988346107191, 41.671360663871262], [-69.958713046293354, 41.671650766749529], [-69.958347229270984, 41.671879308814667], [-69.956760943243339, 41.671838167940685], [-69.95590716000072, 41.672070796975767], [-69.954807778958013, 41.672133581342926], [-69.953801733748804, 41.672637698174746], [-69.953466115282282, 41.67293759473236], [-69.953192251657285, 41.673534414514329], [-69.953283851814291, 41.673893608809166], [-69.953771574069208, 41.674565438650781], [-69.954229481704786, 41.674786701265859], [-69.954565743846516, 41.675315180623613], [-69.954565665164466, 41.675954534371655], [-69.954321575051068, 41.676641271034441], [-69.954534911532519, 41.676918821935523], [-69.955298133109267, 41.67714638857538], [-69.955633674273955, 41.67714365024127], [-69.956060417151718, 41.676960337906443], [-69.956701656520707, 41.676504201263938], [-69.956883905817023, 41.675890371884428], [-69.956640158645797, 41.675613493490395], [-69.955632888537195, 41.675017920605072], [-69.955663837161623, 41.674810685570847], [-69.956335071039021, 41.67439989335746], [-69.958592244607857, 41.673966744151834], [-69.959447013689882, 41.673464498760382], [-69.959507517436421, 41.673211467525277], [-69.959720811438316, 41.672957713704527], [-69.960026264504677, 41.6728020108119], [-69.960086581925353, 41.672431911948195], [-69.960392508717945, 41.672321239463976], [-69.961520225140632, 41.672248698815054], [-69.962588660446201, 41.671429643202728], [-69.962710576610021, 41.671149344929319], [-69.962679346495037, 41.670465084703302], [-69.96246539422458, 41.670232565826502], [-69.962190733978801, 41.670072436311507], [-69.961764103946081, 41.669959148138979], [-69.961489683182805, 41.66961946072869], [-69.961702612321943, 41.669365068163408], [-69.963258697487319, 41.668676419429652], [-69.962526181671024, 41.668358640053164], [-69.962342813604522, 41.66819803380956], [-69.962495013882176, 41.667971634821683], [-69.96578935485114, 41.666484641374566], [-69.966277546006651, 41.666048360650116], [-69.966704355606865, 41.666278609198457], [-69.967131964372555, 41.666365417626785], [-69.967833716583769, 41.66632309431477], [-69.968504835275226, 41.666020380669373], [-69.969420305208288, 41.666391191573084], [-69.969663680908539, 41.666568982682186], [-69.972318758273218, 41.667330114651847], [-69.973752655831476, 41.667552516365838], [-69.97549202546395, 41.666961254248342], [-69.977046333727259, 41.665470954997595], [-69.977809268914612, 41.66444667887987], [-69.978449311950698, 41.664261096242541], [-69.97921152818418, 41.664164401702422], [-69.97994399681302, 41.664328898339704], [-69.980401998408027, 41.664622636554355], [-69.981591968636863, 41.665315070726663], [-69.983148358440531, 41.665769696058014], [-69.983788839969108, 41.66606189155025], [-69.984979911034671, 41.6673036052686], [-69.986201070033999, 41.667824140818219], [-69.987757121287743, 41.668855643541995], [-69.989008767826718, 41.669790780492065], [-69.988887500556118, 41.670206187994367], [-69.987515784097894, 41.671046847291088], [-69.986905328499915, 41.671213694539709], [-69.986264428018899, 41.671489453356841], [-69.985868042654985, 41.671826365400491], [-69.984709911743323, 41.673250023190846], [-69.984130897269594, 41.673543433975567], [-69.982758800584065, 41.674870209748981], [-69.980409924427732, 41.676196352594978], [-69.979891447760878, 41.676704958899748], [-69.979342541463012, 41.677043232780917], [-69.978610076650398, 41.677049198011929], [-69.978457248243188, 41.676753322442359], [-69.978548769862769, 41.675950854572577], [-69.978182353332414, 41.675449600581352], [-69.977235716573375, 41.675169575596449], [-69.976594807301254, 41.675175042172249], [-69.976107053531535, 41.67551240849199], [-69.975832442341556, 41.675902155797338], [-69.975863043215682, 41.676271138681628], [-69.975619896673322, 41.676570177148321], [-69.975558757856717, 41.676958191923227], [-69.975772330736163, 41.677370779263171], [-69.976047639628149, 41.677647497965033], [-69.976108713171712, 41.677917294139569], [-69.976016961299422, 41.678143440183078], [-69.97561993765315, 41.678029521057425], [-69.974276998127948, 41.677302377404395], [-69.973606307915574, 41.677190903820019], [-69.97211116734708, 41.677275560369161], [-69.971500735882614, 41.677623056244776], [-69.970829596382117, 41.677826734051798], [-69.967442795327955, 41.678170623356365], [-69.965307381891222, 41.678656830291679], [-69.96457502856606, 41.678627227322423], [-69.96387300275876, 41.679020182570888], [-69.963690871025292, 41.67961655425443], [-69.963599257432207, 41.680229906663023], [-69.963813019446164, 41.681191823593295], [-69.964240589193196, 41.681674319787547], [-69.964637086623355, 41.681950361071884], [-69.965247696748492, 41.682224246749868], [-69.965674937493077, 41.681905290072272], [-69.96610204360644, 41.681721944947206], [-69.967688828215287, 41.681627344022765], [-69.970526889245761, 41.681603669747297], [-69.972021608052401, 41.681762160980981], [-69.972571448346343, 41.68155909840884], [-69.972967730470856, 41.681186750067482], [-69.973058777007822, 41.680960596824768], [-69.973638579883698, 41.680478147256331], [-69.974096635435316, 41.68045619646616], [-69.975896837044473, 41.681026208228175], [-69.977544589952842, 41.680796132151876], [-69.977971732217043, 41.680639758363782], [-69.978581742175834, 41.679976508873189], [-69.979069736130228, 41.679720809798525], [-69.979161197332516, 41.679521672378094], [-69.979099823417911, 41.67935984338088], [-69.978794108838073, 41.679128380877764], [-69.978733253178035, 41.678813564475554], [-69.979069548589564, 41.678486498739538], [-69.979739535617355, 41.678057633453776], [-69.980624183290359, 41.677617493761709], [-69.981233985996866, 41.677071832380101], [-69.981935982373201, 41.676957924627274], [-69.982118962948647, 41.676839429855299], [-69.981996671681571, 41.676470846546394], [-69.98275875842819, 41.675833737971743], [-69.98440577297491, 41.674964204195], [-69.98620552985696, 41.673201228651948], [-69.986784149004279, 41.672746343698535], [-69.987424856064749, 41.672443654491246], [-69.988522600220804, 41.672082830423314], [-69.988706256314188, 41.671873654693009], [-69.989101917393867, 41.671663332687835], [-69.989468599806301, 41.671759422556008], [-69.989986797929816, 41.671349194312704], [-69.990016537092401, 41.670979846851473], [-69.99026101429439, 41.670752925926514], [-69.990413397236935, 41.670336759378337], [-69.99065594388027, 41.66869549772256], [-69.990380952212888, 41.66837379422099], [-69.988366831694506, 41.667733628744543], [-69.987542379579224, 41.667317446753941], [-69.98677974139234, 41.666639226904813], [-69.986168839621371, 41.665969235004567], [-69.985130553243224, 41.665329567714863], [-69.98323850412099, 41.664282831152157], [-69.982262355905533, 41.664048107555814], [-69.981987930920766, 41.663735485475534], [-69.981346465513028, 41.663137098037936], [-69.98052267716939, 41.662747887459091], [-69.979637206095589, 41.661998728766868], [-69.979392900319411, 41.661586907986745], [-69.979759227341617, 41.66133120215332], [-69.979789448856195, 41.660943852912482], [-69.979453254956582, 41.660235261400047], [-69.979513808245926, 41.65986515699943], [-69.980275497756764, 41.659156652659917], [-69.98170960695083, 41.658306289599182], [-69.982654138966723, 41.657622633107543], [-69.983538321744376, 41.657255138373188], [-69.984118502117255, 41.657646123727062], [-69.984881928404207, 41.65851347757809], [-69.986040994417138, 41.659133955182774], [-69.987140551070894, 41.659890324028773], [-69.987841898254061, 41.660460748982679], [-69.988636729503824, 41.661552536587088], [-69.989338515976087, 41.662059923186398], [-69.990681376568588, 41.66343524514452], [-69.996359427571818, 41.667178247199587], [-69.998434806033472, 41.668025111512875], [-69.999448839559463, 41.668646325226952], [-70.000759370349769, 41.669463963036257], [-70.001308821414682, 41.669719919398915], [-70.001887706089718, 41.670129434211681], [-70.002315077993757, 41.670152441582452], [-70.002560242591201, 41.669745405736094], [-70.002834454629166, 41.669769816650714], [-70.004084284462721, 41.670407598793268], [-70.007012795050102, 41.671579610803938], [-70.008476981343364, 41.671917952554793], [-70.010337443334919, 41.672171956840884], [-70.011527264753951, 41.672152593277779], [-70.014212143536653, 41.671966534079068], [-70.015250545434725, 41.671759473024132], [-70.01576911401304, 41.671331214859634], [-70.016623771992926, 41.670486269281994], [-70.017142582636566, 41.670481777728533], [-70.017356242083508, 41.669777139442509], [-70.01781459175676, 41.66972800303801], [-70.01934015167032, 41.669957775341274], [-70.02086465269015, 41.669953386547434], [-70.022726257466019, 41.66981945346582], [-70.023916368299822, 41.669592852726794], [-70.024588332743036, 41.669388875794127], [-70.025075313667173, 41.669087315014863], [-70.027151347642246, 41.668636417597966], [-70.029348256843662, 41.667742925943685], [-70.032185015320437, 41.667600101733761], [-70.033344358849916, 41.667805779445061], [-70.036731051308379, 41.668180956657807], [-70.036974335768164, 41.668061350095513], [-70.037358807010037, 41.667481520075398], [-70.037539683895616, 41.6671551690429], [-70.041154854614746, 41.667284888745122], [-70.042161624013474, 41.667077808762237], [-70.043290565623451, 41.667058504649212], [-70.043992115854607, 41.666917196847784], [-70.045243079703951, 41.666464411983284], [-70.045975227794273, 41.66607017736856], [-70.046646542172752, 41.665911087337228], [-70.048995617442188, 41.665619696863303], [-70.049331468520094, 41.665436050221651], [-70.052016353951856, 41.664934475551554], [-70.055523985199898, 41.664838871281923], [-70.056012222988272, 41.664654348915043], [-70.057842929288086, 41.664745652553876], [-70.059002392235229, 41.664654001349668], [-70.060405985858736, 41.664631794004023], [-70.060679645497231, 41.664728637198131], [-70.060679825089053, 41.665088831581834], [-70.060252663000782, 41.665777425446997], [-70.059032375810091, 41.66685155378876], [-70.058178415074352, 41.66742658455172], [-70.058086461506562, 41.668112035443684], [-70.057781175399199, 41.668682221482022], [-70.057781495837531, 41.669051422651286], [-70.059733835895329, 41.669069406459485], [-70.059825740610208, 41.667537502262519], [-70.060192131867979, 41.666849851697584], [-70.060527349367234, 41.666693178718084], [-70.061564832372071, 41.664882291397312], [-70.061900136549482, 41.664609003469344], [-70.062540993114638, 41.664359927512734], [-70.064554106533976, 41.663900263680581], [-70.065164309113399, 41.664470762905154], [-70.065531098634793, 41.664998748080542], [-70.065560807431169, 41.665178678354565], [-70.065377767209753, 41.665324408598146], [-70.064370956935775, 41.665639749790977], [-70.064096666028149, 41.665939658967226], [-70.064066447489097, 41.666552774266769], [-70.064371654180405, 41.666946084354009], [-70.064828459690048, 41.667310870055474], [-70.065409012511182, 41.667512967458855], [-70.065988381379597, 41.667516311144205], [-70.066629179489311, 41.667222187526725], [-70.066842580378051, 41.667013263958935], [-70.066872793870985, 41.666436707648806], [-70.066720884914488, 41.666077483381983], [-70.066232480343544, 41.665568680308454], [-70.066140750197576, 41.665209043147343], [-70.065561059117698, 41.664332230882216], [-70.065408385154811, 41.66367574678285], [-70.065286744631578, 41.663514917619196], [-70.065103874398119, 41.662165313463206], [-70.065133981908488, 41.66195804272521], [-70.065622090183908, 41.661980498320041], [-70.067513111832938, 41.66271066713481], [-70.070259073832062, 41.663423909836247], [-70.072333848097259, 41.663764599199581], [-70.074682395335998, 41.663670779223033], [-70.076085553823447, 41.663855483126717], [-70.079319512027396, 41.663689984936859], [-70.081546177334488, 41.663443671094377], [-70.086061110735571, 41.663095214976487], [-70.086335990010525, 41.663002461055903], [-70.088501871323331, 41.66282000056691], [-70.088410522520917, 41.663460455363307], [-70.088227267977388, 41.663651152729535], [-70.088166603342472, 41.663831665415572], [-70.087678774960736, 41.664241538566209], [-70.08767840525887, 41.664818378591661], [-70.087801674838971, 41.665321383983944], [-70.088075895395008, 41.665661296042693], [-70.0881060302804, 41.666390514927329], [-70.088228445372692, 41.666758437851627], [-70.08902208503126, 41.667462191930476], [-70.089296880623252, 41.66755897967181], [-70.089570485994699, 41.667421178203305], [-70.090455504984121, 41.666737072362487], [-70.090395018401892, 41.666413862669714], [-70.089997841667824, 41.666165181169163], [-70.089997308171462, 41.665868017774415], [-70.090913397050997, 41.665543943532143], [-70.091430907156195, 41.665268955178853], [-70.092041273476539, 41.665226986256641], [-70.092163035489293, 41.665063616527263], [-70.092193843566477, 41.664793315153638], [-70.092711816404957, 41.664311217673855], [-70.092956000956264, 41.663921361640014], [-70.092985892877863, 41.663687067746551], [-70.092467647405172, 41.663619873456305], [-70.092010488396923, 41.664290741756318], [-70.090424383705397, 41.665152390939632], [-70.090027954516614, 41.665245989294448], [-70.089783433195024, 41.665203517030164], [-70.089326162768984, 41.664973898417259], [-70.088563278830406, 41.664836656622818], [-70.088319022726012, 41.664695222223337], [-70.088318770275123, 41.664353038436097], [-70.088928880532563, 41.663761793183539], [-70.089142046063742, 41.663282052992308], [-70.089507723700933, 41.661522287612684], [-70.093412253484701, 41.661773250225892], [-70.094693374874453, 41.661724883247416], [-70.102105182083164, 41.660303427797572], [-70.10332491378756, 41.659985238235869], [-70.103539021528022, 41.659803270460166], [-70.104636592178181, 41.659684462430612], [-70.105796501573053, 41.659322199956812], [-70.107320453565464, 41.659181037907388], [-70.107961299581262, 41.658976732380602], [-70.108662850986136, 41.658564886807227], [-70.108723139749685, 41.657780503101904], [-70.110187164611062, 41.657991464887957], [-70.111682119931956, 41.657851061155682], [-70.114243497380073, 41.657258723950868], [-70.1146703295245, 41.657281933520686], [-70.114671173922318, 41.657714169846251], [-70.114336240755577, 41.65853681164883], [-70.114092749096798, 41.658674498269299], [-70.113024960173405, 41.658927750440874], [-70.112536598235366, 41.659266223879712], [-70.112172355155053, 41.660143070947697], [-70.112172431204016, 41.661124585608093], [-70.111380706004894, 41.662177478136307], [-70.110954306740652, 41.662857169949362], [-70.110954652595552, 41.663460489850856], [-70.111137390054296, 41.6635669059783], [-70.111533393384263, 41.663247571230436], [-70.111685758524175, 41.662678712624761], [-70.112844331980455, 41.661514942454346], [-70.112965518970483, 41.660666555753643], [-70.113238977053086, 41.659889362029695], [-70.113787616500105, 41.659406914580387], [-70.114611024151174, 41.658966712335513], [-70.115038020500322, 41.658395071571888], [-70.115311328414336, 41.657761856724228], [-70.11540252176431, 41.656500056725314], [-70.115736775143077, 41.655424731469829], [-70.117170746239097, 41.655519257317557], [-70.11769663883787, 41.655525110459443], [-70.118848643382123, 41.655538566918281], [-70.120495311884397, 41.655441492414873], [-70.122324506360741, 41.65503648371201], [-70.122751715224169, 41.654852019382105], [-70.124460005935802, 41.654646407107677], [-70.125685633784727, 41.654373075168174], [-70.127973876758119, 41.653504198989282], [-70.13291577456242, 41.65242858560979], [-70.134075369741936, 41.652083953780512], [-70.135723278754554, 41.651427844987204], [-70.138163199897733, 41.650827304410434], [-70.140878420674042, 41.650421982231421], [-70.141915035859043, 41.65051090681402], [-70.143104489613677, 41.650328084135268], [-70.144629274106791, 41.650286117249458], [-70.145635885374915, 41.650374650257646], [-70.146978364708261, 41.650352361754642], [-70.148228935594332, 41.650259178838795], [-70.153047257524165, 41.651066531107084], [-70.154419351536987, 41.651457548355516], [-70.156127593478757, 41.65140463105184], [-70.15704261532143, 41.651728352033231], [-70.157011598776776, 41.651936172969243], [-70.156523327222914, 41.652301306577222], [-70.156309552797666, 41.652853106418469], [-70.155851777554602, 41.653280549527658], [-70.155302545269535, 41.654402967971627], [-70.155332484242493, 41.654835004455443], [-70.155638395217068, 41.654795849124199], [-70.156340022234801, 41.653420218426625], [-70.157011364927271, 41.652593508790517], [-70.157682440490007, 41.652190640502077], [-70.157927526135197, 41.651593554270192], [-70.162898280202768, 41.651867680599516], [-70.16549099146215, 41.651913354214756], [-70.166283793883522, 41.65184215389052], [-70.168236234137723, 41.651570134700172], [-70.171011731480206, 41.651271685646549], [-70.175037571554157, 41.650888153430834], [-70.180527811833485, 41.649859012174304], [-70.183090384064371, 41.649562931840549], [-70.185987068684909, 41.649487755821895], [-70.18702386230369, 41.649441201897758], [-70.187725437926488, 41.649442546932768], [-70.190775498066344, 41.648988125092593], [-70.192742966520029, 41.648288142865596], [-70.194191130090459, 41.647772341438824], [-70.19483166775521, 41.647657593265237], [-70.195319429653736, 41.647634466154308], [-70.195563554662158, 41.647749283829818], [-70.195533036267889, 41.647956579239683], [-70.194892669810471, 41.648233505768488], [-70.194678849728845, 41.648416185573396], [-70.194038661169714, 41.649836600745175], [-70.193978188390943, 41.65013476793284], [-70.193886758089675, 41.650955385537408], [-70.193459776362303, 41.651598810189881], [-70.192788398965604, 41.651957490849377], [-70.189464150665387, 41.653171947178635], [-70.188823836913585, 41.653331151096438], [-70.188457641774647, 41.653290369721248], [-70.188182768619257, 41.653175722478188], [-70.187908483503307, 41.652827592395433], [-70.187481373402662, 41.651958223160939], [-70.187328838792325, 41.651545673203096], [-70.187420536383243, 41.65106723733544], [-70.187756393579718, 41.650748569163618], [-70.187481300723348, 41.650498938769992], [-70.18641422346191, 41.650429168122095], [-70.185834632625131, 41.650245801405788], [-70.185468322748108, 41.650340077724209], [-70.18528528044385, 41.650629980541517], [-70.184980955291735, 41.651983903972202], [-70.184767756545313, 41.652373768464933], [-70.184553699364628, 41.652600909665345], [-70.183486545315475, 41.652918308592774], [-70.182753837696566, 41.65333078864208], [-70.182662582098914, 41.653809226298456], [-70.18214362547441, 41.654085147479968], [-70.180985237192772, 41.654295211802463], [-70.179765197912047, 41.65419938279814], [-70.178392690529805, 41.653673059733464], [-70.178026561088558, 41.653379486264434], [-70.176959291958156, 41.653444784234075], [-70.176043484379392, 41.652967507187853], [-70.174763442325968, 41.652512542129486], [-70.17393910045196, 41.652529946395099], [-70.17393916954866, 41.652764067064226], [-70.174915816359558, 41.653375338403237], [-70.176226760053282, 41.653794192589231], [-70.176867363486082, 41.65387818689053], [-70.177476992694864, 41.654060867999746], [-70.17805660519133, 41.65406364509051], [-70.178423009771009, 41.654222062525527], [-70.179093288617992, 41.654863593580174], [-70.180313753422098, 41.655067399742194], [-70.182022102885853, 41.654960066288517], [-70.183607721544931, 41.654340186106666], [-70.183333462994199, 41.653793403713181], [-70.184309580446012, 41.653197971551378], [-70.18479779896326, 41.653084848397654], [-70.18549955655682, 41.653131862084983], [-70.185865208699525, 41.653263232923791], [-70.187572913400885, 41.654407447004786], [-70.188579701190307, 41.655207502840497], [-70.188976193904423, 41.655779903508503], [-70.189128980921552, 41.656327612732269], [-70.189006480490761, 41.656698180067977], [-70.188518942207338, 41.657567714579812], [-70.187482648302066, 41.658461260908851], [-70.186993698505361, 41.658754479323733], [-70.186414420825486, 41.659282932632742], [-70.186261974172467, 41.660473199318389], [-70.185957052945, 41.661106751469823], [-70.185590157213554, 41.661390118514511], [-70.183516499082742, 41.662051024132367], [-70.182937345473078, 41.662389825291896], [-70.182448806568388, 41.663097781159088], [-70.182326165607307, 41.663513453263889], [-70.181868860681092, 41.663905437190223], [-70.181715971147156, 41.664384330364484], [-70.180556925595653, 41.665728874172629], [-70.179855694504298, 41.665754504781283], [-70.177201361901197, 41.665322421314052], [-70.177048867005212, 41.665873260250287], [-70.176682304339536, 41.665939952414774], [-70.176499389128921, 41.665662553411764], [-70.176133758867337, 41.665684231624574], [-70.175919883947387, 41.665956922841211], [-70.174730395884808, 41.666833445361277], [-70.174638337198715, 41.667149785135528], [-70.176041642585915, 41.667198724548477], [-70.176956693819662, 41.66699101016075], [-70.177750402353709, 41.667081821272816], [-70.178177107682046, 41.667428955663048], [-70.178268353798828, 41.667859985710436], [-70.178024182114527, 41.668268028152838], [-70.177689477192459, 41.668541569489406], [-70.176194257744129, 41.668980620952063], [-70.173325774397938, 41.670234860363486], [-70.170854539716231, 41.672178561972146], [-70.170152814640687, 41.672824905967687], [-70.169267446052231, 41.67282463731943], [-70.168535513589234, 41.672688387168087], [-70.168109180639107, 41.67190899915115], [-70.166919090032877, 41.67117351845247], [-70.166522621212337, 41.670835160232002], [-70.1662786415868, 41.670423670164567], [-70.166187232129658, 41.670217202948933], [-70.166217881867581, 41.669415610787091], [-70.166400745712139, 41.669233160117827], [-70.167530519042828, 41.669005526538406], [-70.168201154754684, 41.66861150443885], [-70.168933687851066, 41.668018480646872], [-70.169147286043369, 41.667674302252145], [-70.169086282903407, 41.667287560569747], [-70.168841434064305, 41.66705615818416], [-70.168323534742143, 41.667169407189299], [-70.167713689878198, 41.667562971283587], [-70.167194080101027, 41.668063393829236], [-70.165516118630734, 41.668152315928012], [-70.164447825087137, 41.668541653743993], [-70.163045318703183, 41.668384435601702], [-70.161337217659081, 41.668501126232897], [-70.160359860872376, 41.668790194323243], [-70.159444539526334, 41.6693849721402], [-70.159201085636383, 41.669666829200636], [-70.158864591119169, 41.670210434073276], [-70.158712335240637, 41.670833380308828], [-70.158741666769686, 41.671490524114972], [-70.159199385473869, 41.672611864264333], [-70.159626500762954, 41.673165640035961], [-70.159992041327811, 41.67341424200665], [-70.16069453967522, 41.673596394451039], [-70.161304081064401, 41.67350902064134], [-70.161579054612758, 41.673299476870596], [-70.161975853274868, 41.672754862755468], [-70.162555752440198, 41.672361606700463], [-70.163227320945552, 41.672138712024626], [-70.164875043870168, 41.671932947698721], [-70.165759872106022, 41.671653470746463], [-70.166186255626528, 41.671703494233427], [-70.166338743635734, 41.672206209178789], [-70.16606404708628, 41.672524363195947], [-70.165515048972097, 41.6729169188539], [-70.164386051462742, 41.673460244286794], [-70.163103998927937, 41.673941609428198], [-70.16252416558612, 41.674262291881007], [-70.161852527970396, 41.675044009065992], [-70.161700267259917, 41.675432748623194], [-70.161761674772634, 41.675729543179926], [-70.161974443055001, 41.675979132896444], [-70.162402091268035, 41.676119231398928], [-70.162890231460125, 41.675997194267637], [-70.163531164844514, 41.67568452137008], [-70.163805171122718, 41.675699536167002], [-70.164079935658052, 41.675931210454799], [-70.164415827405378, 41.67586428804794], [-70.164476432414446, 41.675314546942822], [-70.164599203931886, 41.675043058080711], [-70.16517897479082, 41.675081918921663], [-70.16548359321618, 41.675448559179884], [-70.165483802371952, 41.676249972941974], [-70.165147436049097, 41.676667532920582], [-70.164323942333169, 41.677261717286072], [-70.162950735981212, 41.677968747556399], [-70.161485660167543, 41.678587516169131], [-70.161058007814432, 41.678951673536751], [-70.160874590275967, 41.679359225293034], [-70.16087498630597, 41.680412771485166], [-70.161057060471947, 41.680987248626998], [-70.161423461854952, 41.681397939022837], [-70.161361968418717, 41.68169598903382], [-70.161087776587848, 41.681671421560559], [-70.160660491952001, 41.681351770520301], [-70.16005039306819, 41.681123973158591], [-70.160142302300756, 41.680555512788288], [-70.159715195379434, 41.680640528227173], [-70.159501525751125, 41.681075275690048], [-70.15928778037501, 41.681284365840533], [-70.158860448295798, 41.681397019706068], [-70.158860668450927, 41.68160412882704], [-70.159501316912468, 41.68185867608252], [-70.15962229074141, 41.682425141930509], [-70.159897112986954, 41.68274642265127], [-70.15989682282428, 41.683367738674725], [-70.15931623863311, 41.684166182768145], [-70.158706224771649, 41.684757800924771], [-70.158706307032134, 41.685217668411859], [-70.159041382967487, 41.685421340775036], [-70.159743300986804, 41.685602950416019], [-70.16014039039031, 41.686040479792261], [-70.159987209310103, 41.687096089384333], [-70.160199846164758, 41.687823465810752], [-70.160230763030583, 41.688606692230422], [-70.160658041501861, 41.68885430720421], [-70.161725867080349, 41.689222013988157], [-70.162366399710734, 41.689107353079521], [-70.163526592354629, 41.688401787097398], [-70.164015009434024, 41.688397347704701], [-70.164991712291595, 41.688837701593648], [-70.165693243711985, 41.689379994378967], [-70.166211563849686, 41.689906088038448], [-70.167158036271474, 41.689977419517383], [-70.167462487352466, 41.690298398051837], [-70.167889669339985, 41.690915713765207], [-70.168530813720636, 41.691602525936332], [-70.168957221286902, 41.69230987424595], [-70.169464046536262, 41.692490220995424], [-70.169629337330434, 41.692086946298325], [-70.169232236513054, 41.691235329019172], [-70.168164755658452, 41.689769134636812], [-70.167920599218803, 41.68933909761806], [-70.167188682152002, 41.688905058534189], [-70.166395604212184, 41.688264902460205], [-70.164839105375108, 41.687280903272054], [-70.163892699255101, 41.687047469580556], [-70.162336736628163, 41.687459158048107], [-70.162092866786693, 41.687344903743949], [-70.162061675081418, 41.687164984738935], [-70.162184157066662, 41.686983540998284], [-70.163099796172318, 41.686820964320368], [-70.163100503516915, 41.686568843169049], [-70.162245661884569, 41.686019058384851], [-70.161971446457443, 41.686184130403483], [-70.161483018167473, 41.686207110226356], [-70.160232472709453, 41.684850701985951], [-70.160232333192752, 41.684553547594206], [-70.160537282461334, 41.684280245803514], [-70.162215990568257, 41.683596465273141], [-70.162857114307428, 41.683094700399906], [-70.162979375360266, 41.682814202441435], [-70.163040197276402, 41.68211138610112], [-70.162888330280538, 41.681401027437737], [-70.162949003245842, 41.681193553570651], [-70.164536576012893, 41.680393859991909], [-70.165298794875383, 41.680187864403386], [-70.166733504687429, 41.680092129334724], [-70.167221306072634, 41.680258217173687], [-70.167465610511712, 41.680535179464044], [-70.167892988770731, 41.680557653361554], [-70.167953877307369, 41.680142983316102], [-70.167953785566894, 41.679962889907209], [-70.168136613702032, 41.679708398832524], [-70.16859434436563, 41.67968620240844], [-70.168655453013457, 41.680027922334283], [-70.169051953943665, 41.68027568622292], [-70.169418821074544, 41.680164088143002], [-70.16954067512475, 41.678037002509967], [-70.169999233800866, 41.677194850360301], [-70.17002951340136, 41.676501308815965], [-70.170151807338584, 41.676049626312945], [-70.171128837455782, 41.675039650324884], [-70.171861289334288, 41.673672119411997], [-70.173936088944089, 41.670993861637179], [-70.174271958112087, 41.670810390662766], [-70.174820161058676, 41.670759869321515], [-70.175584170549712, 41.671040076080473], [-70.176621107003385, 41.672002130134146], [-70.177383483637115, 41.672228818205213], [-70.1781466466403, 41.672202751088122], [-70.178909036911193, 41.672068704731721], [-70.17967217652216, 41.671700452388585], [-70.180068282647312, 41.671309387252037], [-70.180709469343157, 41.670285258846391], [-70.180861967435021, 41.66971577580113], [-70.181075387036998, 41.669371573628027], [-70.181166917965541, 41.668794089565978], [-70.181563698499986, 41.667862211525446], [-70.182356575649777, 41.667061615814667], [-70.183607828568071, 41.664544642473835], [-70.18446177485859, 41.663311348831144], [-70.18488918004229, 41.662982581407334], [-70.186993813742092, 41.662258345745443], [-70.187634530986514, 41.661773910038953], [-70.188702602929325, 41.660357831886074], [-70.189555761584757, 41.658844810256198], [-70.189983310269085, 41.658453534164721], [-70.190563210232838, 41.658186112888494], [-70.192972624196415, 41.65658508030959], [-70.194650202685054, 41.655738828065061], [-70.196479785474651, 41.654224534049078], [-70.196845334207737, 41.653743557121373], [-70.19718080264488, 41.652947164489539], [-70.197333136959955, 41.65211706722031], [-70.19809553438597, 41.650659223610255], [-70.198522453040127, 41.649556008294127], [-70.198522151510758, 41.648555867205616], [-70.198399944077494, 41.648278208201106], [-70.19818674512841, 41.648118187625165], [-70.198003372433618, 41.647318553266466], [-70.197942242759879, 41.646175443316437], [-70.197606123486594, 41.645602595036557], [-70.197606535096426, 41.645322917740394], [-70.197728357430535, 41.644132918334876], [-70.198887523504155, 41.643931699671477], [-70.201844814892894, 41.643612702596052], [-70.205107814396072, 41.643128185332671], [-70.208218308677573, 41.64223942888971], [-70.210443604682553, 41.641252307430101], [-70.212944405788804, 41.639974354028311], [-70.216206016848616, 41.63848045656642], [-70.21831021059208, 41.63768370321619], [-70.218584312780536, 41.637518498074833], [-70.219072351475546, 41.637387218711858], [-70.22041339325078, 41.637084909882724], [-70.221023765959799, 41.637132298308629], [-70.221023588179122, 41.637519491319807], [-70.22020116984595, 41.638915574619162], [-70.22020176809643, 41.639167708371716], [-70.219683580259925, 41.639623356816642], [-70.219835806509494, 41.639856307416572], [-70.219836103649925, 41.640081424184949], [-70.219439595241568, 41.640400582122517], [-70.219866708799032, 41.640747564005466], [-70.219836751147028, 41.641062925770136], [-70.219410092214275, 41.641274860337283], [-70.219410148188715, 41.641481965330591], [-70.219562385290047, 41.641912475925203], [-70.219318217845682, 41.642230557648816], [-70.219349730284421, 41.642419377558639], [-70.219745535204723, 41.642603925667004], [-70.219960200475441, 41.643628357442275], [-70.220112787564759, 41.644797873424217], [-70.220265816873351, 41.645021377561761], [-70.220509978510876, 41.64511804258548], [-70.220570909606494, 41.645414797327916], [-70.221088844143452, 41.645868599321737], [-70.221333623830844, 41.646216856163093], [-70.221577969488195, 41.646286597336704], [-70.221760893752204, 41.645825460601117], [-70.221089090953285, 41.64527376276574]], [[-69.965939514060807, 41.659989576049156], [-69.96545126225412, 41.65975957557945], [-69.964505308620573, 41.659848113841292], [-69.964170322189034, 41.659986589665792], [-69.964169860298185, 41.660535887268637], [-69.964444857368491, 41.660740501661827], [-69.965298832808102, 41.660967607789665], [-69.966153818722702, 41.660897466755962], [-69.966305268916358, 41.660716077834067], [-69.966122152451206, 41.660510456006477], [-69.965695303847056, 41.660378628594273], [-69.965939514060807, 41.659989576049156]], [[-69.977235567937399, 41.77104745312851], [-69.978396937245236, 41.770866572752453], [-69.978549841091009, 41.770568030396767], [-69.97848787881739, 41.770316235826215], [-69.977815633354453, 41.769880602355201], [-69.977601027672904, 41.769765173149395], [-69.977539845040084, 41.769243780630696], [-69.976837462068602, 41.769285629999452], [-69.975217598207763, 41.769083231940201], [-69.974912024322094, 41.769175944691888], [-69.974820756623089, 41.769743744612093], [-69.97524921505088, 41.769839529153721], [-69.975309583934802, 41.770001345294077], [-69.975248840686874, 41.770640962900586], [-69.976044045531239, 41.771372537596719], [-69.976471709938835, 41.771396267305484], [-69.977235567937399, 41.77104745312851]], [[-70.625972503658119, 41.685889566922313], [-70.625943079439423, 41.685133635967084], [-70.624905104487254, 41.685112151671078], [-70.624477926253036, 41.685361517470923], [-70.624167694709385, 41.685675350124193], [-70.623980250951604, 41.685881629251888], [-70.623697121687641, 41.686294713235661], [-70.623878400850927, 41.686573522218339], [-70.623779628181381, 41.686988115826196], [-70.62211154179596, 41.687391152531312], [-70.621924678138853, 41.687528102073287], [-70.62192182682756, 41.687735712184789], [-70.623112796029076, 41.68850744470619], [-70.623841388246049, 41.689274434726691], [-70.624473910714528, 41.689523041332201], [-70.625114894235097, 41.689504831150728], [-70.626703010527962, 41.689022981588174], [-70.626733731640726, 41.688752557446293], [-70.626184106444171, 41.688291925793628], [-70.62615433360817, 41.687860045877549], [-70.626307274846397, 41.687515106944865], [-70.627222509435839, 41.687124334767354], [-70.62749843097842, 41.686877130407794], [-70.627498289085466, 41.686579457453767], [-70.626369348746593, 41.686163364577979], [-70.625972503658119, 41.685889566922313]], [[-70.552410478956517, 41.574589467445804], [-70.552441346034712, 41.573264955320745], [-70.552349803779236, 41.572968767877896], [-70.552350384192806, 41.572418984097823], [-70.552472273225135, 41.571984924082308], [-70.554360733205414, 41.570743513930729], [-70.554604236441207, 41.570289664859878], [-70.554817607047497, 41.569440015650315], [-70.554817627135435, 41.568593633044387], [-70.554269551427694, 41.567474816800981], [-70.55375173950965, 41.56674342484191], [-70.553203845651296, 41.565687633007762], [-70.552991013033505, 41.56461887575616], [-70.553081855582846, 41.564410288526553], [-70.553112464838932, 41.563247938027942], [-70.553539617325669, 41.562485522305458], [-70.553935596678855, 41.562209695551005], [-70.554818136485935, 41.562188951633672], [-70.555184278116769, 41.562058017861368], [-70.555214318741008, 41.561850093678672], [-70.554331476918279, 41.560592259980403], [-70.554239754038974, 41.560179019614544], [-70.554331381063093, 41.559835376954368], [-70.555092780975698, 41.558987498870415], [-70.555154125639532, 41.558437050482169], [-70.555306088298579, 41.557984689752487], [-70.555610848435791, 41.557665329232982], [-70.556250358991662, 41.556674615920386], [-70.55661577425559, 41.556354586370098], [-70.557012616672424, 41.556195809390523], [-70.557773829016284, 41.55619483497636], [-70.558351744357182, 41.556610484411976], [-70.559113306831193, 41.556887999613487], [-70.559235734869404, 41.557048836118767], [-70.559569585946349, 41.55726940981846], [-70.560148475960673, 41.557955089894477], [-70.560514040979854, 41.559283422851998], [-70.560849156836326, 41.559377946241483], [-70.561032493893762, 41.558573598900722], [-70.560789097371696, 41.557775266700716], [-70.560940840013245, 41.55692617794476], [-70.56042299684502, 41.55640190967042], [-70.560026781159678, 41.556109960258013], [-70.559661411512579, 41.555970793728136], [-70.559569668209974, 41.555810211810787], [-70.559539766026404, 41.554711468316341], [-70.559600545966148, 41.554368106494422], [-70.560179821100789, 41.553955294265471], [-70.560240378102037, 41.553684052841511], [-70.560058061859834, 41.553569362710483], [-70.5596617734126, 41.553520521002689], [-70.559021877544353, 41.553980099570417], [-70.558565097921303, 41.554066894207047], [-70.557377690699113, 41.553128454018648], [-70.557378278665212, 41.552884808863546], [-70.557530331614302, 41.552603613494533], [-70.559387132037955, 41.550795057166653], [-70.559418459461128, 41.550596146799471], [-70.558657096309332, 41.550228504040369], [-70.55844307995909, 41.549727003907826], [-70.557316974295773, 41.54984146581171], [-70.556799455093227, 41.549659337581929], [-70.556037878038438, 41.549633379625909], [-70.554941627582124, 41.549909509151561], [-70.554180039133726, 41.550298266101592], [-70.553692963069054, 41.550205877717119], [-70.55332723123496, 41.55018365028721], [-70.552810043905922, 41.55043370198549], [-70.552779654404631, 41.550794781847515], [-70.552870588227449, 41.551000383039025], [-70.552901045284898, 41.551648299942876], [-70.55273559131858, 41.552583343183137], [-70.553693168626381, 41.551457985441559], [-70.554362685975917, 41.550917106428969], [-70.554727807070009, 41.550867292849112], [-70.555002625433318, 41.551007432738004], [-70.555306965175419, 41.551372919288475], [-70.555306888588476, 41.552012207517976], [-70.554849812200828, 41.552883509214091], [-70.555185031573586, 41.553545306861636], [-70.555184725315414, 41.553842438592589], [-70.554514765280175, 41.553932484989261], [-70.554332243324424, 41.554043515910003], [-70.554302091205955, 41.554665085879456], [-70.554027602987404, 41.555443362360123], [-70.553996485495304, 41.556308664453788], [-70.553783475486028, 41.556933212868707], [-70.55341811939121, 41.557523896345799], [-70.553509558567612, 41.558207257220104], [-70.553783694055767, 41.55867154050015], [-70.553814020153098, 41.558923366949962], [-70.553357112555972, 41.559145741258547], [-70.552900263457303, 41.559809944096479], [-70.552595481806804, 41.560615517330767], [-70.552198613587677, 41.56125149490677], [-70.551863695260565, 41.561913289856811], [-70.551711458777802, 41.563564266214428], [-70.551985457030213, 41.563884577725325], [-70.552046955050244, 41.564136034633023], [-70.551468059633081, 41.564594370675927], [-70.551436736560575, 41.566053849769418], [-70.55152817035956, 41.566332119017069], [-70.552289677534489, 41.567105443202031], [-70.552472086140014, 41.567661346053463], [-70.552624980764179, 41.568551143384141], [-70.552929234605287, 41.569510994074491], [-70.552837456453133, 41.57026882200735], [-70.552685488169359, 41.570613040934681], [-70.552198237369453, 41.571178483664085], [-70.552076104793215, 41.571458841779311], [-70.551771222558884, 41.572282961068552], [-70.551709875773582, 41.572806396092425], [-70.55180172957931, 41.573057025827325], [-70.551801029245411, 41.575210164746387], [-70.552136270501066, 41.57518757130093], [-70.552410478956517, 41.574589467445804]]], [[[-70.497780170488426, 41.776737758596269], [-70.498299054315098, 41.776487414949671], [-70.499459262621073, 41.776094134664483], [-70.500642630409303, 41.775826472831056], [-70.503484132585399, 41.775797965001509], [-70.504523711216663, 41.775639845941853], [-70.505470659172047, 41.775366196684836], [-70.508588133438479, 41.774776043453549], [-70.509505247618506, 41.774655711256777], [-70.510636215397881, 41.774108993946605], [-70.51155337575058, 41.773790555650415], [-70.51219529361731, 41.773745969799393], [-70.520263400447078, 41.774622667424858], [-70.543212378131614, 41.777113720495301], [-70.54663543049702, 41.776976917561534], [-70.548377837824347, 41.776773134477374], [-70.549049963673269, 41.776566070369206], [-70.550974983970406, 41.776359809840592], [-70.55311476243196, 41.775898146201179], [-70.555223533197932, 41.775310669153257], [-70.55711844566116, 41.774573447466658], [-70.560937436501575, 41.772701712702982], [-70.561426917915426, 41.772542052496419], [-70.562007542524114, 41.771966614041666], [-70.563168746798965, 41.771185523426325], [-70.564880305083932, 41.76983772361779], [-70.56677448952297, 41.767938186873579], [-70.567966137612117, 41.766174687824289], [-70.569890906798946, 41.763689008297497], [-70.572243186194385, 41.760324385002264], [-70.572395541525054, 41.759952498715059], [-70.572762420646555, 41.759614412956203], [-70.573159574449903, 41.758996366973392], [-70.573952986348985, 41.758102416816143], [-70.57679410052603, 41.756045548445776], [-70.579237335278606, 41.754300535536451], [-70.58073412666684, 41.753433112220122], [-70.584429973164887, 41.751031164607063], [-70.584734863691381, 41.750756741445123], [-70.585864876110165, 41.750092225771198], [-70.589865768030933, 41.748218837179074], [-70.595363614158643, 41.746610942685528], [-70.601625097220136, 41.745379686033026], [-70.607030388365317, 41.744574109030495], [-70.610481265045749, 41.743795797403806], [-70.612985281218457, 41.743148492144115], [-70.613901389070563, 41.742784209147544], [-70.614512404656125, 41.742694419729773], [-70.615917489971096, 41.742665358323706], [-70.616497925584284, 41.742395871432471], [-70.616985918285351, 41.741803682332879], [-70.617352257358164, 41.741636526967348], [-70.61796314511237, 41.741528710193627], [-70.61927548630554, 41.740978368892144], [-70.621991976464031, 41.739508105559793], [-70.622754985620489, 41.738983291398036], [-70.624495460861425, 41.737562801907416], [-70.624978312430457, 41.7377415505239], [-70.626382659201937, 41.738505245447229], [-70.627206555187513, 41.739186861263057], [-70.627603545112009, 41.739694755892124], [-70.62775566171041, 41.740052658614431], [-70.627725122070984, 41.740422758199877], [-70.627510670318856, 41.740632708815681], [-70.625249917293914, 41.740898991116943], [-70.624498808364521, 41.741292185485079], [-70.624347457348478, 41.742545906297885], [-70.624011174087428, 41.74307347438512], [-70.62379888699904, 41.744193376633746], [-70.622914065440753, 41.744908594836389], [-70.621632003092017, 41.745413021477624], [-70.621478860945501, 41.745568329450556], [-70.621449456812755, 41.746010378139658], [-70.620563453919502, 41.747130748454232], [-70.619892189484503, 41.747149243691027], [-70.6196482019092, 41.747405051966766], [-70.619556048392042, 41.747766749880249], [-70.619893632032088, 41.748545412171147], [-70.621728775120047, 41.750074497359812], [-70.621821493224331, 41.750676768064544], [-70.62169883115898, 41.750966740792684], [-70.621699183319123, 41.751290886721947], [-70.621974390814017, 41.751475969385183], [-70.6226466997975, 41.751358425832606], [-70.622951934843528, 41.751651154843699], [-70.622922109202833, 41.752588509250117], [-70.622648675662134, 41.754033162108755], [-70.622374511472273, 41.754515013759722], [-70.622007811152784, 41.754835250483183], [-70.621641533615957, 41.754993327687998], [-70.621275435075077, 41.754998427535881], [-70.620968704773375, 41.754813730327839], [-70.620846474671168, 41.75460848673854], [-70.620846062037799, 41.754149280678902], [-70.620571434971197, 41.754008769546857], [-70.620234870936173, 41.754131055715256], [-70.620052423605216, 41.754421735480179], [-70.619991591254362, 41.75520632242371], [-70.619686272291091, 41.755381791802776], [-70.61867908494149, 41.755503930901014], [-70.61797590349066, 41.755432669004001], [-70.61812888097397, 41.755178410529631], [-70.618097847420245, 41.754926599042157], [-70.617455862583611, 41.754908661038854], [-70.617090125453259, 41.755409509469871], [-70.61632631250724, 41.755618511562481], [-70.615929826157597, 41.756029077978525], [-70.614923139509159, 41.757493411708786], [-70.614616911558414, 41.757515792893486], [-70.61443381152796, 41.756897056449326], [-70.613517572938974, 41.756901184666056], [-70.612142324469232, 41.757217948747268], [-70.611836090868948, 41.757033230713752], [-70.61076609757751, 41.755660778672365], [-70.610399770861065, 41.755414270370636], [-70.609665623530759, 41.755460307357261], [-70.60908622538598, 41.755756870571517], [-70.60890302278446, 41.756011511021519], [-70.608933874753362, 41.756308253772175], [-70.609055664069999, 41.75657707512449], [-70.609881887171696, 41.75747492935664], [-70.61085969105757, 41.757929433777832], [-70.611043138684948, 41.758088975551054], [-70.611563586702871, 41.759549970704775], [-70.612116163414697, 41.76234326336273], [-70.612299223344408, 41.762800021458538], [-70.612269782170387, 41.763620234842577], [-70.611445094474789, 41.764496736262082], [-70.611047913481457, 41.764493097489151], [-70.610894878349725, 41.764333253026813], [-70.610925565677064, 41.764107222372836], [-70.611169334652871, 41.763761930867801], [-70.611108400205794, 41.763465404403398], [-70.610802955811806, 41.763325709936929], [-70.609977762745032, 41.763400301904483], [-70.609764665386862, 41.764133092050258], [-70.609489769768672, 41.764407185895394], [-70.609061931072645, 41.764583920526981], [-70.608664523290201, 41.764544795963793], [-70.608267571821941, 41.764361069535106], [-70.607747730193751, 41.76371996709652], [-70.607777666453202, 41.763350497773843], [-70.60854151332363, 41.762501639168953], [-70.608693109518342, 41.761635110990191], [-70.608815082373908, 41.761426092238707], [-70.609487337032434, 41.760812955437608], [-70.609455658849498, 41.760471636728234], [-70.608906436561327, 41.759920889756877], [-70.608599729505329, 41.759330439602479], [-70.608385395769147, 41.758342825298044], [-70.607926961444093, 41.758069656867612], [-70.607315605071648, 41.758069369541005], [-70.60615501258674, 41.758347315575485], [-70.605451978017314, 41.758393029579359], [-70.605330379580877, 41.758574945717541], [-70.605391497623415, 41.759096486812126], [-70.606401234082597, 41.76019902746885], [-70.606370442326366, 41.760379946234664], [-70.605728186645607, 41.760515008288827], [-70.605087427227659, 41.760380048747237], [-70.604811740127701, 41.76040147310885], [-70.604017677194321, 41.760719374140479], [-70.602979704595256, 41.76136399515579], [-70.602582824684234, 41.761982145002456], [-70.602582756770147, 41.762252264322498], [-70.602888628427536, 41.762599616497901], [-70.60298086688438, 41.762805183705844], [-70.603012254670162, 41.764020969843259], [-70.603164922325448, 41.764333980096801], [-70.603379244185589, 41.76454726094132], [-70.604174022021184, 41.764662101513423], [-70.604631581043648, 41.764862705896974], [-70.604906516701064, 41.765110765385074], [-70.605059886498722, 41.765460334711868], [-70.605334928992974, 41.765735405937939], [-70.606068908530247, 41.766139594105844], [-70.608728302640174, 41.767083879033898], [-70.609369525112456, 41.766966799531076], [-70.609828332313299, 41.766735111190179], [-70.610194232274566, 41.766369436449928], [-70.611385518375684, 41.765839575992004], [-70.612209303828664, 41.765107131616297], [-70.612545056209427, 41.764399513377015], [-70.612605631424643, 41.764038745427548], [-70.612727729589224, 41.763802801638306], [-70.612941716124112, 41.763574866479416], [-70.61376690886668, 41.763283527195718], [-70.614224714897986, 41.763277003243466], [-70.614621926412653, 41.763442702901486], [-70.615141742841033, 41.763786641904012], [-70.615325645284756, 41.764054227825319], [-70.615509370147009, 41.764925168752988], [-70.615784144451013, 41.765083700849566], [-70.616273362018617, 41.765067778102839], [-70.616609072208306, 41.764351233970828], [-70.616822312432234, 41.764150297770776], [-70.616944650065719, 41.763374112713336], [-70.617096428310745, 41.763164776087692], [-70.617494098855218, 41.762888734283919], [-70.618471644899188, 41.762613848039294], [-70.619265490868798, 41.762683015982546], [-70.62116088818334, 41.763322799512537], [-70.622749749996203, 41.76355285167898], [-70.623238829785748, 41.763870045023602], [-70.623330303871711, 41.76404857742294], [-70.623299760622189, 41.764328636016607], [-70.623147942682792, 41.76501510090867], [-70.623301225928287, 41.765238048404683], [-70.623942513608739, 41.765147899637633], [-70.624492123594237, 41.764779540413663], [-70.624983779912355, 41.763672497980018], [-70.625473105965327, 41.762962690988559], [-70.626635372168124, 41.762315938330751], [-70.627521703677161, 41.761636807655719], [-70.628286996602299, 41.760608290525333], [-70.628898141832096, 41.760193740782555], [-70.629600000299007, 41.760146162323409], [-70.629970118805986, 41.760863184263272], [-70.63019074745533, 41.761166501916378], [-70.630503876939628, 41.761327001983631], [-70.630908175573026, 41.761521961616651], [-70.631190253838298, 41.761808278368846], [-70.631273970485708, 41.762036897173793], [-70.631533145148552, 41.762265593094263], [-70.631578847786059, 41.762477534638585], [-70.63178472243149, 41.762557888526558], [-70.632089941154078, 41.762557963276002], [-70.632319202182558, 41.762581139118083], [-70.632561815882127, 41.762816549520707], [-70.631417074737143, 41.7632838665658], [-70.627283935897722, 41.765069999824291], [-70.624477049451784, 41.766045652852817], [-70.602956271978115, 41.774692510025289], [-70.56529668846909, 41.786706229677399], [-70.538486549966947, 41.809808182736127], [-70.53752497912302, 41.810699933385273], [-70.537057811024781, 41.810027437780406], [-70.534887633258549, 41.807354512067064], [-70.532656772008295, 41.804790877668658], [-70.528927983209641, 41.801265058231692], [-70.528714442050827, 41.801087659625786], [-70.525841831806076, 41.798477808343165], [-70.523122460824439, 41.796460673090095], [-70.520922392304797, 41.794517805219222], [-70.519322990265522, 41.792870895067011], [-70.517409016399455, 41.790952298056396], [-70.516309971978401, 41.790075634276519], [-70.514476520633579, 41.788820562125338], [-70.513285217910081, 41.788134407222159], [-70.50995451625927, 41.786484784398709], [-70.507479821218567, 41.785067623821426], [-70.504272439365664, 41.783074499105524], [-70.500637336270728, 41.780537285644087], [-70.499464100851782, 41.780030053443056], [-70.496069973012041, 41.778615278161389], [-70.494786387424796, 41.778199317014248], [-70.494664091597983, 41.778021037083221], [-70.497352328943734, 41.777103793549486], [-70.497780170488426, 41.776737758596269]]], [[[-69.968189084108076, 41.645279926493053], [-69.968066712219581, 41.643857743043469], [-69.967455635788511, 41.642305154703507], [-69.967485973593469, 41.641620015021644], [-69.967698848100312, 41.640952013468592], [-69.967729038113163, 41.639240394358389], [-69.968886051596215, 41.63598771706463], [-69.969434345696044, 41.635145841128057], [-69.970743783206444, 41.632027482178394], [-69.971231711074111, 41.63129338618424], [-69.9714743435202, 41.630381473907818], [-69.971931446453723, 41.62954007172781], [-69.972814942914184, 41.627317002242457], [-69.973515241761831, 41.625581696693978], [-69.973576350713955, 41.624987109040809], [-69.975100872088632, 41.622766957029071], [-69.975771149596852, 41.621959917919334], [-69.976380607140428, 41.620747917211432], [-69.977352072769492, 41.616217934646045], [-69.977657351340312, 41.615440844170799], [-69.978266448148659, 41.614805147032705], [-69.979513647604065, 41.610957544346974], [-69.979816752085995, 41.608946201040979], [-69.98039380443214, 41.606356530688863], [-69.980485059188226, 41.605464009534785], [-69.980453131792132, 41.604347599156021], [-69.980726564794068, 41.602633560952611], [-69.981091781445528, 41.601621424469307], [-69.981670600385826, 41.600500119928348], [-69.982277426277719, 41.598576125802026], [-69.982854868291525, 41.595283524772356], [-69.982884591306544, 41.594580995777335], [-69.983432127249444, 41.592765885060274], [-69.984039829297288, 41.591625324928735], [-69.984739847817295, 41.589953531160063], [-69.984800161597434, 41.589133264957596], [-69.985287323933605, 41.588471684895467], [-69.985591178807894, 41.587369839150846], [-69.985712652885624, 41.586747235985705], [-69.986077723799895, 41.586068897048399], [-69.986472815228765, 41.584399243343832], [-69.986593329075674, 41.583821741394935], [-69.986561748851798, 41.582128392215509], [-69.986804549638123, 41.58036999116711], [-69.987320753422509, 41.578906810844359], [-69.987534063294788, 41.577760981758672], [-69.987410151094082, 41.57608666501546], [-69.987623055387132, 41.575246998361187], [-69.987073464904341, 41.574332971812176], [-69.987012246770036, 41.573279659346859], [-69.987194028089561, 41.572386719999052], [-69.986889675730126, 41.571884512519865], [-69.987162133704956, 41.57023411570426], [-69.987221800049454, 41.568657335834303], [-69.987160145342926, 41.567856155877827], [-69.987494253797209, 41.567051872947047], [-69.987676045515627, 41.565609002277114], [-69.987492162082162, 41.564286790139924], [-69.987672372656149, 41.561285504790817], [-69.987489233283256, 41.560602562731013], [-69.987671190862287, 41.559339793124131], [-69.988003021038637, 41.555455252320819], [-69.988215375228052, 41.554696622928375], [-69.989400866262898, 41.552272606019415], [-69.991074583286817, 41.550303602970317], [-69.992200222861996, 41.548907035969641], [-69.993386031434369, 41.547671724905165], [-69.994634867209697, 41.546670104792639], [-69.995820641790118, 41.545794965470257], [-69.998072370390361, 41.543650091540279], [-69.999447041564935, 41.542980475673268], [-70.001913470420064, 41.542454746558846], [-70.004137123162053, 41.542119911207998], [-70.006420024031485, 41.542090897991351], [-70.008460606394038, 41.542235331307687], [-70.010196199956994, 41.542480992827329], [-70.011505174773859, 41.54291977244727], [-70.013482839187219, 41.544568816036055], [-70.014457618529462, 41.545533211581819], [-70.015217988341419, 41.546859582113733], [-70.016373290297139, 41.548551303724551], [-70.016646667602146, 41.549557749067283], [-70.016585383753238, 41.55076531290787], [-70.016036202380093, 41.552076270390955], [-70.0156999720068, 41.552556427889698], [-70.01506106708986, 41.553030374874609], [-70.014604634641316, 41.553151643459671], [-70.012563059784512, 41.553142925848093], [-70.012106172051674, 41.553056435764795], [-70.012106661183779, 41.552777290916822], [-70.013141980116004, 41.552687297501429], [-70.013141871907138, 41.552480183739078], [-70.012776767640062, 41.552411197068118], [-70.011315341488682, 41.552478221491661], [-70.010645430215305, 41.552691136229932], [-70.009913439545571, 41.553238124023409], [-70.007353200817846, 41.556602222156151], [-70.006743028396002, 41.557238049502736], [-70.00564626887909, 41.557923121101915], [-70.004000305137865, 41.559613009302815], [-70.002628463744145, 41.560804916621585], [-70.001530565633232, 41.561949275454026], [-70.000981698220642, 41.562701775245003], [-70.000524484977106, 41.5636154102693], [-69.999852791624505, 41.564558268008575], [-69.999761325246027, 41.564828827913026], [-69.99934160267334, 41.565328187650444], [-69.99858162537889, 41.565974330449208], [-69.997729313670234, 41.566891105144386], [-69.997213133513824, 41.568147845639047], [-69.996573343085771, 41.568585661432728], [-69.996269456998348, 41.569128686918994], [-69.995905415351231, 41.570302970280771], [-69.994931670113886, 41.572382543433932], [-69.994749671872796, 41.573177067059085], [-69.994202207190753, 41.573892995381819], [-69.993837093431594, 41.574166766459285], [-69.993289506281144, 41.575080797365722], [-69.992438185418365, 41.577205379064409], [-69.992073538452033, 41.578721290746884], [-69.99213498516022, 41.57919819700323], [-69.991892067177517, 41.579470792929136], [-69.991800432749727, 41.580021128103994], [-69.991405258754583, 41.580708629540631], [-69.991436670848103, 41.581717058272595], [-69.991348247662074, 41.585149553608389], [-69.991716285694167, 41.588650064107398], [-69.99168720374962, 41.589650395803623], [-69.991475348812173, 41.590751226828097], [-69.99138446279234, 41.591823857893552], [-69.990959323246145, 41.593448644465347], [-69.990837952072852, 41.594638474775174], [-69.990991836237825, 41.595835382874974], [-69.991207890308573, 41.598553238950906], [-69.991482181488948, 41.599604874833425], [-69.991483468474897, 41.600334291083264], [-69.991635926250339, 41.600864724400886], [-69.991576420928638, 41.602351458944248], [-69.991212246860613, 41.603840361888693], [-69.990968892135271, 41.604157886008544], [-69.990726120602062, 41.604979783424405], [-69.990543574416762, 41.606106847387217], [-69.990086726155027, 41.606858362976794], [-69.989599721480843, 41.607016230961385], [-69.989173009805967, 41.607064588066699], [-69.989081015932726, 41.606768453293768], [-69.989559554559065, 41.606572744332766], [-69.989355370153206, 41.606378675239384], [-69.988867712763195, 41.606355892369891], [-69.98844032812012, 41.606260158735644], [-69.987616956616307, 41.605780946456981], [-69.987373529041776, 41.605486126413851], [-69.987494900940248, 41.605142762806864], [-69.987951371921213, 41.604895618934826], [-69.988622718078929, 41.605187035143196], [-69.988957911886146, 41.605076139713177], [-69.989475220352034, 41.604314806795912], [-69.989353182676354, 41.603451502222654], [-69.988986460112812, 41.603292371666114], [-69.988499645823566, 41.6035397462094], [-69.988286506778152, 41.603928625575946], [-69.988042655484961, 41.60404811844765], [-69.987829680419694, 41.604572073266937], [-69.986854132536521, 41.604842111761933], [-69.986793469885441, 41.605139637599578], [-69.98661122646503, 41.605393311060624], [-69.986275798978497, 41.605468176769541], [-69.986092895994489, 41.605622786301197], [-69.986977645361023, 41.606245735448248], [-69.987465661063027, 41.606268531217516], [-69.988258157127888, 41.606541390865743], [-69.988563167543575, 41.606880882067848], [-69.988685311176468, 41.607266927342849], [-69.987954377597291, 41.608273050850755], [-69.987193224235938, 41.608576922714704], [-69.98487656328831, 41.609028993625536], [-69.98335306814927, 41.609537711310054], [-69.982591476384542, 41.609904041335], [-69.981067970413164, 41.610998050788929], [-69.980306500847661, 41.611959324736553], [-69.980124571569547, 41.612465671575329], [-69.979394650617181, 41.615506875560214], [-69.979486166228256, 41.615902607003669], [-69.979516689496009, 41.616289688081004], [-69.980157690322187, 41.616725456834246], [-69.980005117249164, 41.617131971124898], [-69.979487086054078, 41.617091273219678], [-69.97927346059592, 41.616723714369101], [-69.979029687783026, 41.616519011463311], [-69.978663613075739, 41.616810104686948], [-69.978420800518009, 41.61773103279257], [-69.97823791386665, 41.617867530667695], [-69.978268195121331, 41.618047494937549], [-69.978725608182287, 41.618457760756186], [-69.978940519084702, 41.619311605146052], [-69.979854176746954, 41.619763360635467], [-69.97991633732687, 41.619925110514046], [-69.979824773688406, 41.620384849445301], [-69.980190665665646, 41.620769121278272], [-69.980282047586897, 41.621155845177213], [-69.979674287450308, 41.622142764730725], [-69.979186329356565, 41.623011428349756], [-69.979491425167581, 41.623333475036134], [-69.979217355016488, 41.623695589432309], [-69.977356576522581, 41.624981529527574], [-69.977051702791201, 41.625371412067437], [-69.977234665158363, 41.626054818233136], [-69.976595029077799, 41.62717691023709], [-69.976412589317036, 41.62731350162813], [-69.975833449284579, 41.62747178913704], [-69.975344992525308, 41.627475954498223], [-69.975284257058277, 41.627773384181957], [-69.976199433514722, 41.628135138543549], [-69.976230587392138, 41.62836914460032], [-69.976047935038096, 41.628685831819176], [-69.976230365261699, 41.629008493783168], [-69.976932468761248, 41.629029699616083], [-69.977236608430502, 41.629216124639875], [-69.97735922258299, 41.629440099501878], [-69.977268747437279, 41.630422679242407], [-69.97739130403761, 41.631385600100707], [-69.97726895423213, 41.631800980884208], [-69.976933957977522, 41.632164075524443], [-69.976720234814238, 41.632237754038499], [-69.976354717664535, 41.632717952793911], [-69.977178569568423, 41.633152764880478], [-69.977331767901148, 41.633448648721995], [-69.977331417948164, 41.633745807642754], [-69.976661106337389, 41.634408777525245], [-69.975715793436379, 41.634930280859187], [-69.975380918344342, 41.635005124065984], [-69.974709994914591, 41.635596665330979], [-69.974527468728425, 41.635967291899611], [-69.974710179829927, 41.636172985424153], [-69.975106617319568, 41.636124273804832], [-69.975746844343021, 41.635894227986256], [-69.976356729457535, 41.636050985241297], [-69.976601139992169, 41.636624904861399], [-69.976601680802091, 41.637156744991714], [-69.976022796452753, 41.63832359338511], [-69.974621192300475, 41.639920647306482], [-69.973036161957907, 41.641041830529801], [-69.972334587609382, 41.641435378276036], [-69.971359573274938, 41.641686839396606], [-69.970047747318105, 41.641544835774958], [-69.96913251399215, 41.641570157046928], [-69.968950020154352, 41.641751761360233], [-69.968888669729765, 41.641977770473446], [-69.969163956062602, 41.642092328526644], [-69.970109308468594, 41.642183306161108], [-69.970261709422331, 41.64241669421326], [-69.970170002861323, 41.642642205486396], [-69.969073022607603, 41.643399076258383], [-69.969042418860866, 41.643579303944399], [-69.969194748462471, 41.643830702642063], [-69.969530625330734, 41.643746345153879], [-69.969987812123094, 41.643769877826948], [-69.970628261870786, 41.644016585674429], [-69.970872958998513, 41.64431145771325], [-69.970933888037393, 41.644635285363506], [-69.970690403610163, 41.645042907487792], [-69.970324794727944, 41.645270948010648], [-69.969714295445456, 41.645573404681727], [-69.968920797096104, 41.645571187227489], [-69.968189084108076, 41.645279926493053]]], [[[-70.409044409238064, 41.625106675667325], [-70.408712511621715, 41.623922220973334], [-70.408163425427404, 41.623532556522299], [-70.407645625968257, 41.623763943363244], [-70.407401880073465, 41.623631579430537], [-70.407066315766158, 41.623626732728056], [-70.407127533996658, 41.624040346605625], [-70.407584743322388, 41.624476405754258], [-70.407431917567237, 41.624838439007981], [-70.407428180193676, 41.625099526679392], [-70.407762909029032, 41.625329560788764], [-70.407793940293047, 41.625536416705408], [-70.404379324025896, 41.625695437821122], [-70.402213964376656, 41.626127011383481], [-70.39989653500227, 41.626858175274783], [-70.400019229602904, 41.627162716509233], [-70.400048782668947, 41.62734245761056], [-70.399744918763645, 41.627391291545791], [-70.399104217963057, 41.627201131233285], [-70.398463941337837, 41.626812247056158], [-70.398464040926029, 41.626632162541199], [-70.398739228076252, 41.62617840218843], [-70.398830598027516, 41.625645784121936], [-70.398709212056716, 41.625377271294205], [-70.398403736229625, 41.625101932080206], [-70.398346667941041, 41.624931468367251], [-70.397824387695195, 41.625099737799914], [-70.39800739120642, 41.625601789558857], [-70.397916381193539, 41.625855278001801], [-70.397001080331819, 41.626217826761085], [-70.396574452673789, 41.625925549496721], [-70.396391459861931, 41.625576568141199], [-70.396301152298122, 41.625100085439243], [-70.39636529885378, 41.624748460936353], [-70.396793229594692, 41.623878659819262], [-70.396945182050445, 41.623417494979648], [-70.397250627304317, 41.622530746136988], [-70.397403882712254, 41.620997544126112], [-70.397647795983573, 41.620832790562602], [-70.399323975312868, 41.620857498191015], [-70.400056110548505, 41.620695125052549], [-70.400696531227169, 41.620723291059477], [-70.401519444592367, 41.620515144346214], [-70.402647394528458, 41.620537294832332], [-70.403805820613442, 41.620748817638827], [-70.40487214467602, 41.621041650175073], [-70.405635052351343, 41.620924559018512], [-70.406366476027827, 41.620564134783102], [-70.406610244823284, 41.620560897314235], [-70.40795140903036, 41.621976744540774], [-70.408438671615301, 41.622141790702138], [-70.408713736491762, 41.62204880659926], [-70.408713202375608, 41.621678996508685], [-70.4079518712538, 41.620634573816581], [-70.407403537757531, 41.620244912386411], [-70.405818522811472, 41.619535166522347], [-70.40569620250821, 41.61925710781253], [-70.405879497586398, 41.61864271081086], [-70.406489283239779, 41.617653607980564], [-70.406459364739135, 41.617059038767515], [-70.40594169955861, 41.616056834776636], [-70.406064411153935, 41.614893584557684], [-70.406003698945895, 41.614317897860829], [-70.405424417357537, 41.613307174584243], [-70.405181387795949, 41.612742697472626], [-70.405059789915811, 41.611960406054969], [-70.406583962903923, 41.611914841729515], [-70.407101890353175, 41.61223272160926], [-70.407649852293517, 41.612991556312679], [-70.408045660207549, 41.613815287889423], [-70.408837981552196, 41.614733408119115], [-70.409355900179008, 41.614772145284867], [-70.409447415535055, 41.614527657382105], [-70.408381280989985, 41.613243950111034], [-70.40801557437527, 41.612392865856421], [-70.407985821158647, 41.612005937010665], [-70.407772345753017, 41.611684234338313], [-70.407467494468534, 41.611507431857646], [-70.405425610309663, 41.611181639417936], [-70.404267479365245, 41.610934657544014], [-70.402743671849251, 41.610106239872394], [-70.402500134077314, 41.609902372726793], [-70.401951470814538, 41.609098574506639], [-70.401860936666409, 41.608739149720563], [-70.402226442529525, 41.608392685089292], [-70.402836521664, 41.608322040430693], [-70.406371409296924, 41.608576177069494], [-70.407407518831604, 41.608716074649934], [-70.408077652402355, 41.609014073418194], [-70.408961846445919, 41.609606671612333], [-70.409723886852689, 41.609813789419285], [-70.410332892488697, 41.610067247447304], [-70.410821346237952, 41.609854116826689], [-70.410851933665356, 41.609466686890499], [-70.411156056240955, 41.609354796847811], [-70.413137148113279, 41.609330450140313], [-70.414082568403288, 41.609534789902007], [-70.417038999212707, 41.609174107781492], [-70.418532338726976, 41.609173651598091], [-70.418928637337089, 41.609286103417233], [-70.419324362265655, 41.609560534764491], [-70.419507666436431, 41.609810434466127], [-70.419873340691552, 41.610067199944993], [-70.420421863163568, 41.610267083687063], [-70.421671002543007, 41.611296422319583], [-70.423621205392394, 41.614253713478796], [-70.424139432970478, 41.615787629917463], [-70.42429177409339, 41.616496985141552], [-70.424443924482162, 41.617639172093163], [-70.424566207011495, 41.617952686223248], [-70.424535934651828, 41.618304645612305], [-70.424199748215884, 41.618623995963176], [-70.423407448441779, 41.618822961367066], [-70.422767673010156, 41.618921078762945], [-70.422219032720747, 41.619143774843664], [-70.421455959037885, 41.620035790345561], [-70.420785572935415, 41.621962548283562], [-70.420266440420008, 41.622347592037158], [-70.419901125410249, 41.622307023836157], [-70.419901635261994, 41.62152311910463], [-70.419413454055515, 41.621204951364113], [-70.418864681465095, 41.621085559196203], [-70.417950239001229, 41.621160147077333], [-70.417371572815711, 41.621410627747728], [-70.41709680652086, 41.621756384763351], [-70.417066035135846, 41.62273809498312], [-70.416394874677152, 41.623836429973153], [-70.414989245509602, 41.625105587256925], [-70.414775543396146, 41.625450751221607], [-70.414714093507172, 41.626243709282861], [-70.41434872980129, 41.626473700739787], [-70.413555440768874, 41.626546619736715], [-70.413250826529335, 41.626640503735295], [-70.410963378958812, 41.628190395650009], [-70.410323237581537, 41.628324457607782], [-70.40965227127208, 41.62887286622712], [-70.408890466912766, 41.628990536028432], [-70.408219203537868, 41.628809588629295], [-70.407761773740347, 41.62858125856453], [-70.407244223929197, 41.627966246198163], [-70.407243758765844, 41.627642088292404], [-70.407610255040396, 41.627439052987576], [-70.408433304379372, 41.627275878218633], [-70.408860803747785, 41.626288973576244], [-70.409044409238064, 41.625106675667325]]], [[[-70.013250114687082, 41.901052523299889], [-70.012821915345398, 41.901029476665592], [-70.01156638512839, 41.900778989448867], [-70.009423158568993, 41.900780291397638], [-70.008505027343759, 41.900688967578027], [-70.00798485054645, 41.900270200921341], [-70.007984697537026, 41.899973040644817], [-70.008229329734604, 41.899836032953964], [-70.011720102011608, 41.900390365766185], [-70.012730588075001, 41.900165538251215], [-70.012700322003269, 41.899319234170228], [-70.011966424049973, 41.898100777450182], [-70.011385184294724, 41.897556243722157], [-70.01058906542805, 41.897068064966433], [-70.009549309609852, 41.896752833481621], [-70.008385654005323, 41.896520438483975], [-70.00657891939845, 41.896410099703388], [-70.005110372906174, 41.895945680234369], [-70.004559609163877, 41.895518121976565], [-70.00339606328474, 41.895375094748225], [-70.003151036551074, 41.895241852560844], [-70.003335691753847, 41.894645994289505], [-70.003948988696564, 41.893271795990444], [-70.004316833480587, 41.892700939099072], [-70.004316549221215, 41.892358752643865], [-70.003765690868221, 41.892147214108313], [-70.002297374967995, 41.891421620176494], [-70.00208362073073, 41.891189192514332], [-70.002144482153469, 41.890891751756428], [-70.002328925835613, 41.890638075096057], [-70.002849835897678, 41.890317944054708], [-70.003369627833123, 41.890250471066281], [-70.004104560643398, 41.890433447776601], [-70.005573111280256, 41.891375046950806], [-70.00679709152439, 41.891805916707654], [-70.007102692273619, 41.892172357431008], [-70.007378525724917, 41.892178756194653], [-70.007776740944891, 41.892012871518396], [-70.009460271908864, 41.891944279718587], [-70.012154998098325, 41.891650761494994], [-70.013104337306714, 41.891380561554449], [-70.014114696505501, 41.89133572767669], [-70.015767732600438, 41.891447282254781], [-70.016349497548305, 41.891352461120398], [-70.01714599746532, 41.891470868738878], [-70.017451919360497, 41.891675739340428], [-70.017634462938545, 41.892340502084814], [-70.018369430240796, 41.892270712318066], [-70.018675860761306, 41.892339974105539], [-70.020665014559086, 41.893304519136315], [-70.021950316043643, 41.894121513663769], [-70.023510982601323, 41.895341596791027], [-70.024734692889382, 41.897375026712453], [-70.024765059257106, 41.898338388943436], [-70.024642401809444, 41.8985917287376], [-70.024335441040023, 41.898819633941628], [-70.023600673081773, 41.898997522547631], [-70.02164133557531, 41.898816293273235], [-70.020569438368611, 41.898880028125518], [-70.018579194071251, 41.899546505139639], [-70.016956048615185, 41.899840057274005], [-70.015578197723272, 41.900230696235653], [-70.013250114687082, 41.901052523299889]]], [[[-70.528588648399491, 41.57287329324047], [-70.527918705831738, 41.572891152308131], [-70.527400745742426, 41.572825940489246], [-70.526090796194538, 41.572824890469988], [-70.526121597795211, 41.572644442154733], [-70.526883734210315, 41.572003849527036], [-70.527645010116103, 41.571174068092397], [-70.528102789700228, 41.570834749809123], [-70.528833452583243, 41.569942300278683], [-70.528864464425979, 41.569257083094712], [-70.528255945379158, 41.567607549113923], [-70.528074488173516, 41.565043158445739], [-70.527983859241871, 41.56477397047869], [-70.527070230379564, 41.564020517227668], [-70.527161446782145, 41.563784940917714], [-70.528105538665002, 41.563763130763633], [-70.528959113004419, 41.563535785556248], [-70.530329392594282, 41.563031469136583], [-70.531304851747421, 41.562369528801867], [-70.531852912586047, 41.561524485707039], [-70.532189380311124, 41.560384913798238], [-70.532281513996793, 41.558825198877535], [-70.532373239611374, 41.558554146828598], [-70.534018019845917, 41.5572710205997], [-70.534169899465979, 41.557016776304842], [-70.535053739681658, 41.556356366717239], [-70.535968134434455, 41.555488485416021], [-70.535998677766855, 41.55495633275978], [-70.536334164259159, 41.554663756188646], [-70.536394828803211, 41.554320404766308], [-70.536639078122761, 41.554092332699248], [-70.538435237280908, 41.553843017222896], [-70.539135867460317, 41.553355974652334], [-70.539470983472128, 41.553270479893122], [-70.53977504544487, 41.553473392578624], [-70.539866532796012, 41.554247436993727], [-70.540018769013258, 41.554407376168371], [-70.540292162504926, 41.554385466204856], [-70.541572563412387, 41.553035043476683], [-70.541633147130725, 41.552791274014325], [-70.541329105452704, 41.552578822170695], [-70.540506021538832, 41.552463820830376], [-70.539897301718057, 41.552490189640132], [-70.539136539304522, 41.552743702362292], [-70.537643884167707, 41.552835778785045], [-70.537400519888479, 41.552901786820826], [-70.537552311940075, 41.553521564477727], [-70.53581613953007, 41.553887257766881], [-70.53548084403117, 41.553864691176386], [-70.534537082839691, 41.553309672143918], [-70.533319605907252, 41.552767531866415], [-70.53024372047517, 41.551664143203034], [-70.529817236032301, 41.551228933437073], [-70.529270228784085, 41.550173029575475], [-70.52838822514434, 41.547473259758135], [-70.529211577588953, 41.546678937996923], [-70.53067160983764, 41.548235615294431], [-70.532164026596689, 41.549287689460073], [-70.534446853576, 41.550293073926177], [-70.535756197804162, 41.550725772533816], [-70.53855760858626, 41.551256008517619], [-70.539957965809407, 41.551417505486192], [-70.54513577935127, 41.551618198327212], [-70.547602343519216, 41.552377789030402], [-70.547815116328664, 41.552627185658686], [-70.547754414276156, 41.552807928683528], [-70.547388896918477, 41.552947757436279], [-70.546810139150523, 41.552901841810304], [-70.545561202671692, 41.552558199509868], [-70.54446528505207, 41.552122368824051], [-70.543612990959176, 41.552125367784235], [-70.543125683335077, 41.552329436557265], [-70.542302743184038, 41.553656273438691], [-70.541815505163797, 41.554095073583419], [-70.541389288709382, 41.554821347303132], [-70.541144675596769, 41.555491166853791], [-70.541114673490654, 41.556446517157845], [-70.540840203040887, 41.556611855175454], [-70.540627015674431, 41.556543153858442], [-70.540078302308316, 41.556586328326084], [-70.539743918281829, 41.556725855740183], [-70.539195271165724, 41.557363926649579], [-70.538708037381554, 41.558829720378192], [-70.538463703714299, 41.559238418334303], [-70.537672400337129, 41.559492293689402], [-70.537245446188351, 41.559831370453999], [-70.537001179077606, 41.5606813564833], [-70.536848672739808, 41.560953517388718], [-70.536209116351714, 41.561430350473785], [-70.535659751742585, 41.562437566749495], [-70.534502216873094, 41.563975265069992], [-70.533618464398941, 41.564590741707207], [-70.532369830211323, 41.565526080314115], [-70.531455734940351, 41.565988752524831], [-70.530571750251141, 41.566766277789398], [-70.530571030369003, 41.566964361854716], [-70.531059006137767, 41.566876774326403], [-70.532307835726797, 41.566058504663765], [-70.53285690932411, 41.565798731480093], [-70.533191068955446, 41.565821205589032], [-70.534805317848196, 41.566854109684279], [-70.533739364673309, 41.567679095051943], [-70.531849638129827, 41.569848116338839], [-70.530539067515178, 41.570811090860971], [-70.530295196280733, 41.571174845641735], [-70.530020871100845, 41.571403728526953], [-70.52907630962666, 41.571749699253978], [-70.528741586795974, 41.572276368738891], [-70.528711039406957, 41.572709384751377], [-70.528588648399491, 41.57287329324047]]], [[[-69.955985078267432, 41.824015034799402], [-69.955617835795721, 41.823738832311129], [-69.955373196355339, 41.823759111442399], [-69.955434624435313, 41.82419046998065], [-69.954823251468753, 41.824375792899112], [-69.954608328356358, 41.823855095764713], [-69.954272368584995, 41.823669362305175], [-69.954057827239254, 41.823779015517019], [-69.954149753311526, 41.82408417880881], [-69.95430311783052, 41.824695802770883], [-69.954609164281109, 41.825152449644357], [-69.954456455973215, 41.825432864999776], [-69.953661022636666, 41.825358505594828], [-69.952743430654323, 41.825014585807473], [-69.952192995235947, 41.825064476813203], [-69.951672317730285, 41.824969609446789], [-69.950358028375405, 41.824359139086241], [-69.949470942897207, 41.823969951984303], [-69.948859353011414, 41.823326784116446], [-69.947818518973364, 41.822686775106426], [-69.947482952806922, 41.822347402008361], [-69.946564945359754, 41.820787665916775], [-69.946687010937154, 41.820471363711761], [-69.947482137104373, 41.820446713963037], [-69.948736215564566, 41.820905026532586], [-69.948888813683396, 41.821218944346228], [-69.949408898617804, 41.821430881305041], [-69.950449223968832, 41.821268887670243], [-69.950876678133781, 41.820878478188206], [-69.951580019099666, 41.820494065498522], [-69.952039143155218, 41.820445099478455], [-69.952375241344058, 41.820217244289481], [-69.9531396265523, 41.819598351404927], [-69.953109438679107, 41.819418473150989], [-69.952741953937661, 41.819367291267412], [-69.952099482401252, 41.819570727282631], [-69.951549323503627, 41.820007921403835], [-69.950601675632626, 41.820240972650822], [-69.950111823890992, 41.820722293395896], [-69.949745435688428, 41.82083383641131], [-69.948154635984679, 41.820054067887021], [-69.947604878948397, 41.820013355546436], [-69.946686782581622, 41.820174196811067], [-69.946411601594932, 41.820257705572899], [-69.945953158263492, 41.820080903785858], [-69.945127126231938, 41.818133573877724], [-69.944973820611338, 41.817153363603133], [-69.945126498898773, 41.816232977002116], [-69.944790176040172, 41.815092052533714], [-69.945034585619268, 41.814630549867886], [-69.945615523197745, 41.812959585677739], [-69.94595136666193, 41.812479607174559], [-69.946748596811062, 41.811701907128665], [-69.947571857775401, 41.810719242990565], [-69.947693713841915, 41.810375922099887], [-69.947877351202777, 41.808888100575473], [-69.948030114071457, 41.808733674133009], [-69.948244239140351, 41.808867161138394], [-69.948642092014907, 41.809349839399339], [-69.949223095160747, 41.811290480113968], [-69.949528578939365, 41.811612600559371], [-69.949855768422722, 41.812205704434028], [-69.950324776224008, 41.813055755403312], [-69.950355032090002, 41.813514879340907], [-69.950141585154995, 41.814264432215829], [-69.95081368799427, 41.813988830503277], [-69.951180617406905, 41.813967341503442], [-69.951517157231791, 41.814126708348176], [-69.951517854412756, 41.814360846706585], [-69.952067539348832, 41.815022791755517], [-69.953169398643809, 41.815734010125411], [-69.954056025447798, 41.816168098382178], [-69.955279213535974, 41.816374322460625], [-69.955646348152015, 41.816578575758228], [-69.956593727611136, 41.816741697528059], [-69.957664127178802, 41.817029663298442], [-69.958001068989333, 41.817333095068939], [-69.958276560877735, 41.818042537920391], [-69.957909388771441, 41.818775437237555], [-69.957665403529248, 41.820118916161377], [-69.957788269760727, 41.820424494961195], [-69.958263269949413, 41.82131736536256], [-69.95708435862899, 41.820376160139837], [-69.956778713072325, 41.820216688289662], [-69.956473595468566, 41.820264336472448], [-69.956380860314752, 41.820489915552066], [-69.956442961211394, 41.820858788377855], [-69.955831477332694, 41.821224213672544], [-69.955770457613482, 41.821477236655184], [-69.955983818546912, 41.821565132856378], [-69.956412609477226, 41.821381834879851], [-69.956779579520344, 41.821360327870792], [-69.957176592270486, 41.821699423914339], [-69.957391402735539, 41.821652803224218], [-69.958400089835393, 41.821788012544594], [-69.95867575254357, 41.821948245208141], [-69.958859012764535, 41.822225913352284], [-69.958951108091327, 41.823008336325358], [-69.958584016730882, 41.823687209337947], [-69.957361260165683, 41.824562161881538], [-69.957116736376264, 41.824906083929321], [-69.956383261101735, 41.825425737357023], [-69.955710054254311, 41.825494334423354], [-69.955496573282431, 41.82540589598112], [-69.955434697257459, 41.82522666989253], [-69.955526682009079, 41.824694372954205], [-69.955740205582941, 41.824467638925505], [-69.955985078267432, 41.824015034799402]]], [[[-69.949877388048961, 41.722784291325517], [-69.950945937655433, 41.721208374372495], [-69.951494878289239, 41.719789631816347], [-69.951799718885468, 41.719237719796787], [-69.951646564629499, 41.718410599147369], [-69.951677644278334, 41.717455322051975], [-69.951371540142546, 41.716170197449308], [-69.950761331850231, 41.715328391496293], [-69.950730128578996, 41.715004327210792], [-69.951096633303081, 41.714803370766703], [-69.953448000545862, 41.715117289213858], [-69.956745368544631, 41.716152590713456], [-69.958607933422854, 41.717271932763438], [-69.959127595454689, 41.71768194122496], [-69.961876390935984, 41.719171709119067], [-69.962304114069369, 41.719672761244126], [-69.962364938766029, 41.720266830507647], [-69.961754749373185, 41.72143373595064], [-69.960624763981528, 41.721983523638642], [-69.957754732768876, 41.721872638027833], [-69.956778075476592, 41.722123878855058], [-69.953297084318507, 41.723512392278622], [-69.952808968026361, 41.723859205373607], [-69.951617975194452, 41.724337206822476], [-69.951099007359687, 41.72435941339733], [-69.950427142730504, 41.724247793490576], [-69.949968848751865, 41.724107650224745], [-69.949632620169695, 41.72333593612084], [-69.949877388048961, 41.722784291325517]]], [[[-69.948660939396518, 41.758930152179168], [-69.948294826400826, 41.758653844997845], [-69.947103474642731, 41.758312348910465], [-69.946277785456999, 41.758310093977279], [-69.945697409857928, 41.75822500301819], [-69.945514080171037, 41.758019348542895], [-69.944536549432172, 41.757126305557911], [-69.944230742480343, 41.757011817787166], [-69.943528383938315, 41.756918925957635], [-69.94331432266722, 41.756785428117446], [-69.943284050927673, 41.756596539771031], [-69.943620293628669, 41.755891360853006], [-69.943681311435512, 41.754359724222795], [-69.942489587793702, 41.752775393089138], [-69.942611094051557, 41.752369038023133], [-69.942886252474594, 41.751934346739731], [-69.942886235103472, 41.751565141458769], [-69.942611247942281, 41.750927699792399], [-69.94227491263932, 41.75065123908152], [-69.942091769615303, 41.7501484160397], [-69.94215277819346, 41.749850914815973], [-69.942093290742321, 41.749455051595909], [-69.942002473627753, 41.748771049868651], [-69.942154577357655, 41.74854467363933], [-69.942583053649344, 41.748523518921985], [-69.943377438795039, 41.748615964814313], [-69.943590644528612, 41.74874891095898], [-69.943865619473598, 41.749278290366881], [-69.944446186513304, 41.749480459432448], [-69.945238601596429, 41.749852020147515], [-69.94566652016627, 41.750353135896447], [-69.946582482396053, 41.751084321358007], [-69.94771298929146, 41.751588256102146], [-69.948996354851602, 41.751928839465727], [-69.950310256123004, 41.751863968917903], [-69.950370686573933, 41.751197251487035], [-69.951408961038283, 41.751449465525887], [-69.951562249585251, 41.752502341310539], [-69.951226282785228, 41.75298233141644], [-69.951471000523668, 41.753304795536422], [-69.951548643059581, 41.75349999859634], [-69.951990149813, 41.75325503131134], [-69.952326449600193, 41.753396297280055], [-69.952478868184301, 41.753647175979836], [-69.952448615102838, 41.753917994978977], [-69.95156230343288, 41.754672543122659], [-69.951532178987279, 41.754997393575394], [-69.950952559228483, 41.755794377549883], [-69.950555321558923, 41.756662457671951], [-69.950218640311675, 41.757557205015146], [-69.950249745812485, 41.75817843188365], [-69.950585985113904, 41.75867999124268], [-69.949791757581934, 41.759893322489724], [-69.949578120668988, 41.760147597189608], [-69.949028627283425, 41.760052858253367], [-69.948660939396518, 41.758930152179168]]], [[[-70.420513727507711, 41.60868996276885], [-70.419264148677371, 41.60857903964326], [-70.417923060456957, 41.608352967551689], [-70.414601056376753, 41.608348930942398], [-70.408566088278675, 41.608161649862382], [-70.40469609199782, 41.607839701388329], [-70.40432988479219, 41.607772511071758], [-70.402410009180187, 41.607678618828125], [-70.40186085472223, 41.607541040881983], [-70.401709079088022, 41.607317889037596], [-70.401708642102335, 41.606993731120646], [-70.403476846249688, 41.606926886560878], [-70.404695803939077, 41.607155374454642], [-70.406493880412341, 41.607313337168428], [-70.40853590487697, 41.607342512566838], [-70.411889275624191, 41.60715694747141], [-70.413535162011485, 41.607001614048762], [-70.422038261670565, 41.60565370665465], [-70.423531020420626, 41.605211972308524], [-70.425390694755876, 41.604801332114398], [-70.426549068681254, 41.604759965758575], [-70.427249451659108, 41.604823396355187], [-70.427981405708067, 41.605057660422794], [-70.429901190286287, 41.605448349888164], [-70.431028777459687, 41.605857399621009], [-70.43194304310272, 41.606584623677044], [-70.432613734884242, 41.607638747234951], [-70.43261363601215, 41.608097961928109], [-70.432309435227296, 41.608281942068679], [-70.432065175013122, 41.608231294250359], [-70.431211723170165, 41.60743143897988], [-70.430327967607482, 41.607118150627194], [-70.429382598624457, 41.606931414630985], [-70.429078047679326, 41.606935298207041], [-70.428620758137143, 41.607112153083584], [-70.427401979933833, 41.608028092416191], [-70.426792177781238, 41.608305968693045], [-70.42590848496377, 41.60853290068146], [-70.424384229949325, 41.608696317845897], [-70.424018554367322, 41.608574630556646], [-70.424018535897943, 41.608304503202731], [-70.425481972215366, 41.607025161109121], [-70.425878742772028, 41.606794801871004], [-70.427311037319058, 41.606453203735754], [-70.428011060029405, 41.606173924913982], [-70.427981274682836, 41.605832023302604], [-70.427676126088315, 41.605556766171297], [-70.427219563388164, 41.605418564030849], [-70.426457849425191, 41.605463685271765], [-70.424262732020253, 41.606202614407522], [-70.423805972980119, 41.606568634079757], [-70.423592472113867, 41.606958296418263], [-70.423622744626968, 41.607804981695516], [-70.423500915800389, 41.60798670382858], [-70.421793757077182, 41.609286849850776], [-70.421366924804374, 41.609426867368619], [-70.420757406462613, 41.609443591267677], [-70.420421938066909, 41.609195579570105], [-70.420787623499933, 41.609010503975895], [-70.420818737800062, 41.608830174318584], [-70.420513727507711, 41.60868996276885]]], [[[-69.948799384098876, 41.830947042023503], [-69.94794302599756, 41.829801305734762], [-69.947056183045305, 41.829186980167478], [-69.945924027448982, 41.827394787414853], [-69.945892900892844, 41.82671052666263], [-69.946106775451838, 41.826411775237709], [-69.94638218354919, 41.82621129553084], [-69.947391396400576, 41.826049985351112], [-69.9479420890044, 41.826207775184827], [-69.948401336731862, 41.826690117360123], [-69.949104719212826, 41.826990636233724], [-69.949808557491394, 41.827074497911759], [-69.950144135451197, 41.827305894337805], [-69.951244922185865, 41.827558401434352], [-69.953478485489242, 41.827782862932267], [-69.955130297697082, 41.828057392196691], [-69.955741874515112, 41.828034158920971], [-69.956415278409324, 41.828316756657848], [-69.956812295503212, 41.82835878037298], [-69.957118538870048, 41.829869000382949], [-69.956935113269409, 41.830050489340564], [-69.956568427468312, 41.830008426492164], [-69.95650677355259, 41.829730149811411], [-69.956139193275419, 41.829570919175467], [-69.956047955567371, 41.829734024044107], [-69.956078762923767, 41.830391261480578], [-69.956232033129965, 41.830993245592403], [-69.95641578292188, 41.831126934958945], [-69.956507214751042, 41.83151313367059], [-69.955498207778945, 41.831882181807579], [-69.955192765464332, 41.832109921710718], [-69.955101277081397, 41.833028807126567], [-69.954794668409889, 41.833185121060573], [-69.954948118137722, 41.833525966035005], [-69.954887376882837, 41.83398556565745], [-69.954642503492138, 41.834167929501575], [-69.954305940762296, 41.834188672125372], [-69.953510948953237, 41.833798605887075], [-69.953204563584933, 41.83375671986785], [-69.952929600725525, 41.833506524704845], [-69.952562413400742, 41.83336529797311], [-69.951889811880847, 41.832983634550367], [-69.950329155841942, 41.832114261132588], [-69.949472635518404, 41.831562861848305], [-69.948799384098876, 41.830947042023503]]], [[[-70.632811352048577, 41.68236956382605], [-70.633239839909663, 41.681408322182484], [-70.633575963574046, 41.680836338171503], [-70.633485820858965, 41.678846851826194], [-70.63327265302209, 41.678048375506641], [-70.632663513201706, 41.676967217104242], [-70.632328407375354, 41.676332131890682], [-70.631993471897331, 41.675481491517019], [-70.632148037406409, 41.673605339724503], [-70.632088270350138, 41.672372508443075], [-70.63269939615158, 41.670859367485434], [-70.633126890083958, 41.670222802790661], [-70.633371085606413, 41.670174061023737], [-70.633675766553878, 41.670314232785394], [-70.633614783445395, 41.670747040079689], [-70.632972616517449, 41.672576169158162], [-70.632971791487691, 41.67410738031279], [-70.633184307130989, 41.675067924125862], [-70.633701281609149, 41.676240759164195], [-70.634372337679324, 41.677131588890305], [-70.636018207919747, 41.678729340610978], [-70.63681198240053, 41.679510878605491], [-70.637665698836528, 41.679714269561387], [-70.639069162417627, 41.679514475452486], [-70.639588345876888, 41.679534159966956], [-70.642303894697463, 41.680035206213766], [-70.642761682837758, 41.680316699099407], [-70.643005880585036, 41.680610627657522], [-70.643004994928276, 41.681205423446407], [-70.642546791957983, 41.681590222511744], [-70.641478903079218, 41.682101068580288], [-70.640470983041126, 41.682277499949507], [-70.639830319796431, 41.682277700480249], [-70.638945588084411, 41.682001969512065], [-70.637725618209174, 41.681451951357083], [-70.636627263781719, 41.681458838647487], [-70.636047488232123, 41.681593459067017], [-70.635466966381216, 41.681863040553978], [-70.635069491714603, 41.682274202775261], [-70.634428410871536, 41.683165853738423], [-70.633787581617554, 41.683922353575937], [-70.633542614397712, 41.684493952016702], [-70.632656095740074, 41.685704356079846], [-70.632319377392022, 41.686618574459843], [-70.63207581777759, 41.686757359129011], [-70.631557217822333, 41.686575573501472], [-70.631374073030315, 41.68629901376287], [-70.631314477557865, 41.685849440040322], [-70.631497205447005, 41.68536074806007], [-70.632291132860431, 41.684106247604959], [-70.6326274008143, 41.683534177311714], [-70.632811352048577, 41.68236956382605]]], [[[-69.952172793393274, 41.750353406718318], [-69.952142095551267, 41.750146415185114], [-69.951134018974628, 41.749983587516397], [-69.950798085083548, 41.750031337371539], [-69.950553632014334, 41.750258719650951], [-69.950431333233283, 41.750467052032604], [-69.950003698902265, 41.750695902891536], [-69.949820172817212, 41.750949506898962], [-69.949912532017777, 41.751588406926167], [-69.949423959492776, 41.751681891807046], [-69.947682805929944, 41.751039080728923], [-69.947346593553789, 41.750924816898348], [-69.946307517358662, 41.750167734536404], [-69.946092903306024, 41.749845129205717], [-69.945576349657259, 41.749300031593968], [-69.945117748900074, 41.748133207240237], [-69.944750820010341, 41.747784926417395], [-69.94475147767217, 41.747604835421306], [-69.944323936456684, 41.747355860983262], [-69.94368236854848, 41.747081988040406], [-69.943437790842424, 41.746850098479541], [-69.943376621263553, 41.74650824297553], [-69.943621117623834, 41.746190736666144], [-69.944720282233575, 41.745893459770635], [-69.945575475462263, 41.746030575522042], [-69.946094759716061, 41.745864316078965], [-69.946339996458846, 41.745916108926139], [-69.947225182800395, 41.746323230735619], [-69.947897910853797, 41.746299803458292], [-69.948263489081157, 41.745729006093782], [-69.948630023374292, 41.745663130568332], [-69.948966035927896, 41.745705348326389], [-69.949608182875934, 41.746510493469366], [-69.949638663870076, 41.747330362496307], [-69.949271910789477, 41.747855582950613], [-69.949333561253326, 41.748134406441594], [-69.949517519665349, 41.748358073607285], [-69.950096970433719, 41.748542188573246], [-69.951655113835514, 41.748934838597677], [-69.953824053522382, 41.749574393009198], [-69.954341385505813, 41.749921353233589], [-69.954189171524774, 41.750760082311778], [-69.954219778818455, 41.751264236064223], [-69.9544336118595, 41.751496765053069], [-69.954494665429266, 41.751910651938545], [-69.954097769428898, 41.752111839661467], [-69.953670432755544, 41.752025533976443], [-69.952845207363623, 41.751590552410583], [-69.952753517372244, 41.751384443476212], [-69.952172793393274, 41.750353406718318]]], [[[-70.621633053054239, 41.714849004598015], [-70.6209311764989, 41.71443561587057], [-70.62056427736087, 41.714323653588515], [-70.619129061834485, 41.714326062629915], [-70.618182531828054, 41.714096425662547], [-70.618060015099474, 41.713935655635645], [-70.618090436539688, 41.713638219310589], [-70.619463645627803, 41.713564932642718], [-70.619403277216918, 41.713367548353474], [-70.618760862846202, 41.712835843308753], [-70.620256255017878, 41.711139443137519], [-70.621689464566842, 41.7099749502256], [-70.622056057785628, 41.709888818936285], [-70.622330720626138, 41.710091906132845], [-70.62269751958695, 41.710726093487764], [-70.623034207679552, 41.71153229368911], [-70.623370020597818, 41.711824718748481], [-70.624469399318087, 41.712079619145079], [-70.624726878249973, 41.712038290093872], [-70.624727567687657, 41.711461500020548], [-70.624499637296353, 41.71121438851069], [-70.623979201305644, 41.71063638046197], [-70.623489835052212, 41.709607239048353], [-70.623276494809389, 41.709330974376861], [-70.623183862366702, 41.708944800089647], [-70.622360225076051, 41.70871335269554], [-70.621901753355758, 41.708350827632991], [-70.621717809162107, 41.707938556342562], [-70.621992117359426, 41.70718712867815], [-70.622906194592815, 41.706246506211926], [-70.622875919661823, 41.705904751800333], [-70.622479018928701, 41.705495882625193], [-70.622325551530835, 41.705191985148694], [-70.622325320733111, 41.704255028093961], [-70.622019648587042, 41.703844609659164], [-70.621989436085713, 41.703664927046837], [-70.622843423238393, 41.703544825666285], [-70.623545594826325, 41.703841243994127], [-70.624034162370634, 41.70430303816422], [-70.624248681818869, 41.704623790332171], [-70.624279475287409, 41.705191278544831], [-70.62403580574491, 41.705743689020707], [-70.623700538068263, 41.706316282850445], [-70.623365449078719, 41.707365998712007], [-70.62348867526434, 41.708211071659285], [-70.623978082647753, 41.709429297259831], [-70.624283442268762, 41.709839077391074], [-70.624497717953417, 41.710205387191316], [-70.62576567618278, 41.711645055398165], [-70.625887094504662, 41.712265011834795], [-70.625551022218119, 41.712701915140251], [-70.624470939832278, 41.713475879183527], [-70.624134965191388, 41.713930787141585], [-70.623098180165357, 41.714918285979429], [-70.622670737365837, 41.715005572590464], [-70.622091175970482, 41.714986517968491], [-70.621633053054239, 41.714849004598015]]], [[[-69.94096737490203, 41.811205430102056], [-69.940668548414848, 41.810716154679724], [-69.940630908685307, 41.810010459814521], [-69.940722476021008, 41.809514187172901], [-69.940508408916514, 41.80882237782621], [-69.940538704548402, 41.808227923213877], [-69.940906472232328, 41.807432051007922], [-69.941578585396314, 41.806445110775364], [-69.941884226474585, 41.806127360922922], [-69.942434317702606, 41.806104982226145], [-69.943290365908865, 41.806259675186659], [-69.943657432591266, 41.806166713322554], [-69.94451293782015, 41.805277352833563], [-69.944941148472353, 41.804976485980909], [-69.945521962250297, 41.804863381325951], [-69.946041650898593, 41.804868216040113], [-69.946683968586143, 41.805007002554575], [-69.9468982809951, 41.805275569437981], [-69.946898136681298, 41.805617756354572], [-69.946714642586841, 41.806006432021327], [-69.945828445606949, 41.806995525546974], [-69.94558427258039, 41.807340058275095], [-69.945278472233198, 41.808297168500424], [-69.944758797992762, 41.809075763544207], [-69.943841701862524, 41.809650822426001], [-69.943780736280559, 41.809993890140881], [-69.943932743505357, 41.810127617880248], [-69.944851042666272, 41.810263967422813], [-69.945064932895917, 41.810451487034605], [-69.944973013944647, 41.810677068451938], [-69.944177993941963, 41.811284772523933], [-69.943894801553512, 41.81123921421996], [-69.942189904478795, 41.811862036356843], [-69.941915887369845, 41.812071619480875], [-69.941334295022429, 41.812184065708422], [-69.940906445167286, 41.811728596551717], [-69.94096737490203, 41.811205430102056]]], [[[-70.456955049410738, 41.578843706028074], [-70.457320964863769, 41.578767198234885], [-70.458996979978906, 41.580276635815444], [-70.459271701280471, 41.580786809382708], [-70.459911109114444, 41.581400448516845], [-70.45994220719902, 41.581678692374872], [-70.459698648544133, 41.581907239563414], [-70.459576587852993, 41.582179038708439], [-70.460307762399239, 41.582223460640101], [-70.460703946801459, 41.582425718412949], [-70.46091761243288, 41.582657279840376], [-70.460917686114954, 41.583044460646398], [-70.460704494943911, 41.58318261558766], [-70.460704761854899, 41.583461747902277], [-70.460948765895694, 41.583575451834029], [-70.462015266572919, 41.58471522724183], [-70.463050754978937, 41.585061800561164], [-70.463538225002353, 41.585605329694431], [-70.463447938788789, 41.586137463712319], [-70.463174014851248, 41.586663419525436], [-70.462259715678172, 41.587458695205768], [-70.462199035463769, 41.587783912426893], [-70.462808839512448, 41.588172789586928], [-70.463539819031325, 41.588352161046394], [-70.462900075731909, 41.588441497063329], [-70.462168767593695, 41.588171446304933], [-70.461741883933456, 41.587825926924282], [-70.46098033627726, 41.586367579287632], [-70.459943424143617, 41.58515549156774], [-70.45899896628211, 41.584492326227668], [-70.45851104975327, 41.583912756331451], [-70.457870796321686, 41.583416696409891], [-70.456956096609971, 41.581356425997051], [-70.456773160721454, 41.580557334679817], [-70.456773064270223, 41.579341227334623], [-70.456955049410738, 41.578843706028074]]], [[[-69.944834265653284, 41.692860030689324], [-69.944651065136568, 41.692474183251683], [-69.944833649634134, 41.691374195064725], [-69.945353073333649, 41.690531940390962], [-69.946420250431217, 41.689568392240396], [-69.946847699793295, 41.688628702037356], [-69.947091769459433, 41.688383225037803], [-69.947518800409881, 41.68817239202609], [-69.947305216649923, 41.687894824748163], [-69.947641475578664, 41.687666993787417], [-69.948159754912481, 41.687581762553251], [-69.948679108623978, 41.68799181899827], [-69.948983961084963, 41.687944196334954], [-69.949289336845197, 41.688310810247749], [-69.949259341242765, 41.688680687256834], [-69.94953370028594, 41.689038503046035], [-69.949259350826949, 41.689824322846292], [-69.94922919875826, 41.690527472959758], [-69.949106817188991, 41.69089726140578], [-69.949229034039675, 41.691103791044924], [-69.948984469020758, 41.692087586290207], [-69.948527594755149, 41.693136114089299], [-69.94794731447513, 41.693546393136216], [-69.947551075651162, 41.693477322417486], [-69.947153829287601, 41.693138176347212], [-69.947123067541312, 41.692886156595755], [-69.947306660395228, 41.692425534388043], [-69.94724477900111, 41.692173630315011], [-69.947092950191205, 41.691949854992849], [-69.946604657400798, 41.691926800771128], [-69.946390859446581, 41.692226180007424], [-69.946757269919004, 41.693141768869758], [-69.946756876909177, 41.693682064070188], [-69.946299152642666, 41.693685990761601], [-69.945963684239032, 41.69355362858623], [-69.944834265653284, 41.692860030689324]]], [[[-69.955925719499731, 41.729849853207], [-69.956535961472397, 41.72971855042902], [-69.957270059429348, 41.72987429058815], [-69.957849956302056, 41.730905382586073], [-69.95827791159418, 41.731478491988362], [-69.958307896860092, 41.731730407048637], [-69.958002699184533, 41.731769047717371], [-69.95760576048869, 41.732276414453359], [-69.957208696933492, 41.732460139442388], [-69.956689785241139, 41.732482373123403], [-69.956170784807455, 41.732801767639302], [-69.955773263096205, 41.733282645926131], [-69.954979984589372, 41.733991742666035], [-69.954461398923101, 41.734293125316213], [-69.954094402533997, 41.73438602734911], [-69.952689966598996, 41.73387563839497], [-69.952200623679445, 41.733510498788966], [-69.952109549150705, 41.733195797015718], [-69.952261790755159, 41.732275935808403], [-69.952750287909623, 41.731092205994024], [-69.95348200792408, 41.730194354629361], [-69.954398599840033, 41.73019554509974], [-69.955193042036456, 41.73010781259142], [-69.955925719499731, 41.729849853207]]], [[[-70.33465252380941, 41.717360881537992], [-70.33434711669031, 41.717013338203778], [-70.33385805937003, 41.7154156393836], [-70.333430493648677, 41.714907554907981], [-70.332208216429549, 41.714084089968878], [-70.330834715532774, 41.713514512044085], [-70.330620967631887, 41.713354740127031], [-70.330834824969983, 41.71305529091304], [-70.331842317496324, 41.71289905431285], [-70.332390652805799, 41.712892884547323], [-70.33306303983359, 41.713128309957277], [-70.333918105436396, 41.712803281445517], [-70.336909591098618, 41.713011183208437], [-70.337306293375931, 41.713168849946463], [-70.337368038362015, 41.713348487066035], [-70.337153555729401, 41.71378300709064], [-70.338222171155749, 41.713833897963902], [-70.338985990512668, 41.714058875951643], [-70.339077913902941, 41.714337237381734], [-70.338742222526164, 41.714908470665172], [-70.338131684212698, 41.715320942754055], [-70.33755174714139, 41.715940193833788], [-70.337032779385041, 41.715982165886764], [-70.336452797721108, 41.71561948679873], [-70.334926485108014, 41.715682663431096], [-70.334865106235611, 41.71614233765478], [-70.3352013256508, 41.716922403745748], [-70.335018327881642, 41.717401723626281], [-70.33465252380941, 41.717360881537992]]], [[[-69.952441044785559, 41.838149238042575], [-69.952318619523425, 41.83739341277802], [-69.951890702009308, 41.837009937488489], [-69.951615116528032, 41.837047889103957], [-69.950972861433726, 41.837413412974044], [-69.95060604984954, 41.837488934385441], [-69.950300679093758, 41.837419499437189], [-69.950116671636565, 41.837231767159139], [-69.95008582417266, 41.836781730910026], [-69.950361234474968, 41.836617171055451], [-69.951339662518365, 41.836753109121666], [-69.951462751764538, 41.836409801315746], [-69.950788424192481, 41.836316266672505], [-69.950238525319406, 41.836275567070842], [-69.950085060191469, 41.836025305136424], [-69.949718126753723, 41.835794023343901], [-69.94901405810208, 41.834556985353494], [-69.948800352620495, 41.833937239517759], [-69.948280361502356, 41.833257045029946], [-69.9481574428264, 41.8327713561604], [-69.948188131172287, 41.832564119538894], [-69.948096552484614, 41.832339370347249], [-69.94815777144801, 41.832159023775674], [-69.948065915682633, 41.831925896166268], [-69.948371930777625, 41.831769682140617], [-69.948677073512926, 41.831812645010146], [-69.949473490861536, 41.832409338696159], [-69.950420521655587, 41.833274889913618], [-69.950573924777515, 41.833760449973646], [-69.951644827068208, 41.834147529679292], [-69.952837883414233, 41.834353996383498], [-69.953817393709642, 41.834742066663601], [-69.954214993214094, 41.835288293410294], [-69.954306959501167, 41.835746540648557], [-69.954000681211411, 41.836226404614422], [-69.953756343524631, 41.836435878814491], [-69.953358384767654, 41.836664070434033], [-69.95293054803453, 41.837965064580139], [-69.952747437648156, 41.838191666219771], [-69.952441044785559, 41.838149238042575]]], [[[-70.342254133466582, 41.717533531465698], [-70.342131798440263, 41.717174904944521], [-70.341734929165938, 41.717170327292244], [-70.339842340156906, 41.717858976044589], [-70.339018106469837, 41.717814555614375], [-70.338499009741042, 41.717631424760292], [-70.338132662026268, 41.71732946229934], [-70.33837660877856, 41.716371818440656], [-70.338955964264642, 41.715797579004146], [-70.339444209586276, 41.715071495035332], [-70.339748943268262, 41.714338496298247], [-70.34017637653757, 41.714333307609756], [-70.340818098668308, 41.714631855154124], [-70.341336971305338, 41.715157768888602], [-70.341428469725813, 41.715453592389885], [-70.341642673031544, 41.715550317898547], [-70.341978295589271, 41.715366262283332], [-70.342284346554763, 41.715434656798706], [-70.343535125044212, 41.715960077778576], [-70.343749696201428, 41.716182863749786], [-70.343749701974943, 41.716534573273719], [-70.343353225183733, 41.717358404398908], [-70.343201293963943, 41.718242707231589], [-70.342377190199727, 41.71827034723654], [-70.342162675513407, 41.718084116910781], [-70.342162600201078, 41.717696929729705], [-70.342254133466582, 41.717533531465698]]], [[[-69.96390705097015, 41.826659712659968], [-69.963448426356052, 41.826456595676319], [-69.963355939395839, 41.825997808936251], [-69.962928092599981, 41.826001587559801], [-69.962744802347018, 41.825768950647443], [-69.961826914537966, 41.825470035320919], [-69.96170451350936, 41.825084053591745], [-69.96139853869623, 41.825041654312749], [-69.961215191933036, 41.825565338365308], [-69.960817731203363, 41.825677038000116], [-69.960787953218926, 41.825479157842636], [-69.960603520854079, 41.825219397086904], [-69.960267148874692, 41.825249254209119], [-69.959869631197876, 41.825478013927473], [-69.960145074799144, 41.825817708125385], [-69.959594760838655, 41.826002170248422], [-69.959227838840448, 41.826005677435937], [-69.957973189788262, 41.825862647912281], [-69.95720925563117, 41.825914178180547], [-69.956872493931712, 41.825745911388893], [-69.956872653632189, 41.825430740617392], [-69.957392211416973, 41.825318455311987], [-69.958431863904664, 41.824877136065972], [-69.958860250293341, 41.824945421202713], [-69.959318974042262, 41.824924065271915], [-69.959563626312743, 41.824813638395675], [-69.959013094008981, 41.824538932925996], [-69.958829522039906, 41.824288816063543], [-69.958859709681789, 41.824035915183423], [-69.959104767874223, 41.823764036275698], [-69.95944091633703, 41.823598565305375], [-69.959502463421842, 41.823328168156785], [-69.959501514972587, 41.822868903541142], [-69.959837829086936, 41.822776103547824], [-69.96063339556548, 41.823372708251554], [-69.961061682574794, 41.823549583392655], [-69.962132247849667, 41.823666413817456], [-69.962988032174096, 41.823983580365343], [-69.96347770382323, 41.824051503640156], [-69.96415085610542, 41.824424191807942], [-69.964335086078108, 41.824692858827476], [-69.964212569667538, 41.82508121211314], [-69.964059229027185, 41.825244657232659], [-69.964059368397841, 41.825658885766529], [-69.964182674429125, 41.825927902938218], [-69.964059623183431, 41.826478337553247], [-69.96390705097015, 41.826659712659968]]], [[[-69.963227996588756, 41.739119670982326], [-69.962556241190995, 41.739026226545199], [-69.96225041939806, 41.73883974639282], [-69.961945279380274, 41.738500190130971], [-69.961823057613444, 41.738158601597171], [-69.962036247696489, 41.737328521618686], [-69.962310543781214, 41.736092332190772], [-69.962249529701523, 41.73566035028216], [-69.961912772400609, 41.734996818113324], [-69.961607127103719, 41.733945230754493], [-69.961362317359928, 41.733487802107874], [-69.960996642755219, 41.73321208048435], [-69.961271051069218, 41.732984541569984], [-69.961698174022345, 41.733124757270389], [-69.962615156561171, 41.733720844624933], [-69.963898516727951, 41.735204804687314], [-69.964601401474525, 41.736847605475425], [-69.964784899540518, 41.737746613647168], [-69.965335576564343, 41.738615721668353], [-69.965365760679859, 41.738795597369261], [-69.965182785953203, 41.738950177795672], [-69.964113913693708, 41.738886778746668], [-69.963227996588756, 41.739119670982326]]], [[[-70.313372128946767, 41.717858512568583], [-70.312456295236402, 41.717085300749666], [-70.312487162412197, 41.716859972897261], [-70.313006070341729, 41.716719063663518], [-70.314105142521825, 41.716814349527503], [-70.315540563155025, 41.716671717546724], [-70.316120376594682, 41.716674417444807], [-70.316363784647933, 41.716950951846989], [-70.317768937027495, 41.716943673009823], [-70.318684614686447, 41.717104542580053], [-70.319173462510577, 41.717315004253571], [-70.319937089952006, 41.718323578536527], [-70.31972320977998, 41.718659565459589], [-70.319234729742021, 41.718773267539824], [-70.317066424938972, 41.719005130289332], [-70.315601044610048, 41.718796839802678], [-70.314288528125374, 41.718388694650642], [-70.313372128946767, 41.717858512568583]]], [[[-69.957792643491601, 41.831448309913476], [-69.957608634136378, 41.831215655058259], [-69.957913923225675, 41.829619156454434], [-69.957821920010957, 41.828584055395453], [-69.957729826462923, 41.828269888270789], [-69.956934164956564, 41.82760113309503], [-69.956965448262764, 41.827303312822238], [-69.957300947252179, 41.827210508939494], [-69.959687007700254, 41.827307420810875], [-69.960543800654264, 41.827489544767673], [-69.961399696698507, 41.827878763532183], [-69.961552925917374, 41.828264621106158], [-69.961888849084772, 41.828333898214474], [-69.962195459909765, 41.828520383396395], [-69.962195572809946, 41.828700483501116], [-69.961614324040752, 41.828948743556353], [-69.961155629747097, 41.828997664581287], [-69.960757693520961, 41.828883694269749], [-69.960482681045761, 41.829039278933969], [-69.96026878576474, 41.829590734597787], [-69.959840498755753, 41.829846093847536], [-69.95956621080974, 41.830190789763279], [-69.959229487908686, 41.83037363326121], [-69.958831322260252, 41.830458302063207], [-69.958678793097846, 41.830666775894578], [-69.958801148610547, 41.830944701014332], [-69.9593828595914, 41.831236847216914], [-69.959994161076239, 41.831241142122721], [-69.960208577347586, 41.831401623845153], [-69.960178219458228, 41.831581852847776], [-69.959688972890888, 41.831838099243811], [-69.958954108296879, 41.831789899915151], [-69.958648213412943, 41.831603416043329], [-69.957792643491601, 41.831448309913476]]], [[[-70.194222379417084, 41.652140550375059], [-70.195381341818589, 41.651939363334812], [-70.195716633513285, 41.652052975206431], [-70.195808529490833, 41.652421505851699], [-70.195503493701779, 41.653379245504134], [-70.194405767401619, 41.654408387590451], [-70.193582370555518, 41.654984228913399], [-70.191324740813826, 41.655737167885313], [-70.19108101053196, 41.655731031228477], [-70.190897802431095, 41.655624739423992], [-70.190928015311187, 41.654588479700735], [-70.191049983733365, 41.654037812921999], [-70.191660560466886, 41.653148883265814], [-70.192361628803823, 41.65273652298535], [-70.194222379417084, 41.652140550375059]]], [[[-70.248707379313586, 41.633321968621708], [-70.248554817239295, 41.632819369429868], [-70.247487110462174, 41.632542608812066], [-70.245871554883792, 41.632686248611165], [-70.245169982156881, 41.632657706545231], [-70.24492548949938, 41.632480590489621], [-70.244254316102243, 41.631514739881489], [-70.245077853510139, 41.631406775521477], [-70.245534405691103, 41.631284580880042], [-70.247028070849083, 41.631124385276735], [-70.247759616535447, 41.630963611586381], [-70.248400273176372, 41.630902592871777], [-70.249460398221117, 41.631449396495782], [-70.25064990917609, 41.631652739873267], [-70.251381372311286, 41.631951170884641], [-70.251838299598944, 41.632369224365306], [-70.251837758088143, 41.632612339571835], [-70.249459108756668, 41.633277924030672], [-70.248707379313586, 41.633321968621708]]], [[[-70.327262540049205, 41.714132292591657], [-70.328087392158636, 41.714041739650753], [-70.328819276484722, 41.714059987421187], [-70.331079008909683, 41.714448431699367], [-70.331872827084013, 41.714655216669087], [-70.332483508591778, 41.715026158164989], [-70.332575099249581, 41.715439677068517], [-70.332239822578771, 41.716668664210374], [-70.332056813061229, 41.716877848776257], [-70.331843369353138, 41.716970204393832], [-70.33138552153153, 41.716948576948447], [-70.330103268894788, 41.716485818762649], [-70.328178911743038, 41.715643747332621], [-70.327537583423691, 41.715228075394997], [-70.326805294971479, 41.714569965291638], [-70.326774723467864, 41.714291055196277], [-70.327262540049205, 41.714132292591657]]], [[[-70.324487015755295, 41.723513225695712], [-70.324365269090492, 41.723721860293118], [-70.322349902860353, 41.723492850013805], [-70.321127874957497, 41.723605723545383], [-70.319448540027977, 41.723463341216281], [-70.31896042085269, 41.723171849464428], [-70.318441186109439, 41.722528862072352], [-70.318410715901365, 41.721862762661623], [-70.318746049010556, 41.721660852834454], [-70.319600713408747, 41.721732117997455], [-70.321158474839535, 41.721660466486746], [-70.32271582948681, 41.722119506913486], [-70.322990422792998, 41.72232386392394], [-70.323112640472019, 41.722781468511798], [-70.32433455610456, 41.723352994487001], [-70.324487015755295, 41.723513225695712]]], [[[-70.311907515827315, 41.722342636457597], [-70.312364665632245, 41.722274290793209], [-70.31441140730027, 41.722350190638579], [-70.314960164523086, 41.722533200320846], [-70.315845586714829, 41.723234579900222], [-70.316181612085771, 41.723807061067888], [-70.316120675258801, 41.724014608601287], [-70.315938205544029, 41.724151738572814], [-70.315388251548569, 41.724194461081879], [-70.314899451231668, 41.724082942228129], [-70.312182046867278, 41.722988233986236], [-70.311784773111171, 41.722596269534812], [-70.311907515827315, 41.722342636457597]]], [[[-70.618621222530166, 41.658456198394795], [-70.619293116012628, 41.658437812727321], [-70.620208648110122, 41.658757787288685], [-70.620879992407225, 41.659190128199427], [-70.62081840695636, 41.659442844628934], [-70.620544524938381, 41.659627019948452], [-70.619385545126477, 41.659625345598158], [-70.61901926607986, 41.659901092871571], [-70.618593049408204, 41.660474587065011], [-70.618257638249915, 41.66047027655879], [-70.616792816902688, 41.659626040879317], [-70.616701170517757, 41.659419947839133], [-70.616792987369678, 41.65926588204141], [-70.617707450328609, 41.659036624474467], [-70.618195594925069, 41.658551943249414], [-70.618621222530166, 41.658456198394795]]], [[[-69.958190632636075, 41.833553011770746], [-69.957884928043285, 41.833248833808184], [-69.957333915275456, 41.832911620510359], [-69.95641669711523, 41.832954949561611], [-69.955804497035274, 41.832798079867182], [-69.955804226162783, 41.832500913211703], [-69.956018428588123, 41.83224717280752], [-69.956355046408575, 41.832109271773156], [-69.95659948299101, 41.831854858986254], [-69.956904982317397, 41.831699155892963], [-69.957149212989179, 41.831741812059093], [-69.958282166571436, 41.83261548490114], [-69.958985511645665, 41.833231113569546], [-69.959229978435005, 41.833408842349478], [-69.959353061643284, 41.833686866606541], [-69.959078608362518, 41.834580860131808], [-69.958527402599032, 41.835063009085154], [-69.958160908825036, 41.835201053031717], [-69.957854378338695, 41.835194657116361], [-69.957640418582244, 41.835079742239778], [-69.957762351200827, 41.834628353024293], [-69.958191427982811, 41.834237397488458], [-69.958190632636075, 41.833553011770746]]], [[[-70.351358306289086, 41.727118028934093], [-70.35126632667945, 41.726317336785499], [-70.351601865247275, 41.725223364688084], [-70.352151057990682, 41.725262128963841], [-70.353007333058613, 41.726359651519694], [-70.353282147064121, 41.726933113706934], [-70.353344435944152, 41.728445296340233], [-70.352947005155002, 41.728441293093489], [-70.35239768916172, 41.728240543927562], [-70.351786499778484, 41.727851067781998], [-70.351358306289086, 41.727118028934093]]], [[[-70.317149534024779, 41.630071313736075], [-70.317544949899784, 41.630021401028692], [-70.318185204849414, 41.630140073448352], [-70.31849084681663, 41.630506217297516], [-70.317515123018026, 41.630823651913552], [-70.317362073244226, 41.630987470453483], [-70.316600361961946, 41.631329094224192], [-70.31629538171353, 41.631576331167352], [-70.315198120186338, 41.631993689998311], [-70.314709353983389, 41.632080349845538], [-70.314344392326632, 41.631535200004564], [-70.314343677749022, 41.631211034404345], [-70.315716395802042, 41.630844277078332], [-70.317149534024779, 41.630071313736075]]], [[[-70.326928061152131, 41.716621974187007], [-70.326927626735454, 41.716396860640323], [-70.327385200211978, 41.716328369579486], [-70.328576797686182, 41.716719991754516], [-70.33120205894663, 41.717905116875855], [-70.331294038390311, 41.718093441866351], [-70.331080531597223, 41.718221812881218], [-70.330500166723354, 41.718228818325002], [-70.329767727014243, 41.718047957439559], [-70.329156328107473, 41.717722015959296], [-70.32778291236734, 41.717269459594995], [-70.326928061152131, 41.716621974187007]]], [[[-69.950085634589314, 41.839267093667409], [-69.949444321770727, 41.839290434110268], [-69.949260123470438, 41.838877664270193], [-69.949412777388162, 41.838606709819388], [-69.949412614728104, 41.838038855588287], [-69.949749393646741, 41.837603902459378], [-69.950422292180917, 41.837895532476516], [-69.951737623476333, 41.837596602662302], [-69.95189062253236, 41.837757346743032], [-69.951462595165111, 41.838013219416915], [-69.95140181489019, 41.838175653761731], [-69.951432207543192, 41.838535723913346], [-69.95097332591105, 41.838539577728014], [-69.950085634589314, 41.839267093667409]]], [[[-69.970653187420211, 41.803419815738366], [-69.971111924523413, 41.803280720274635], [-69.971294974190101, 41.803396367294674], [-69.97154022271026, 41.804447558989274], [-69.971021082415163, 41.805253831384853], [-69.970378917672392, 41.805322388142734], [-69.969798103691531, 41.805201400743989], [-69.969675906402927, 41.804886839053275], [-69.969767233155196, 41.804606661130563], [-69.970256190114284, 41.803900214039274], [-69.970653187420211, 41.803419815738366]]], [[[-70.000790941059407, 41.897568430317541], [-70.001097206215363, 41.897547688895102], [-70.001587464950546, 41.897795634160474], [-70.001862372534575, 41.898324312714742], [-70.001862019767344, 41.899108266501479], [-70.001739080538584, 41.899261985999026], [-70.001402135016178, 41.899382550020682], [-70.001126252993558, 41.899402520675928], [-70.000515456109326, 41.89912885747863], [-70.000208376665924, 41.898825413527312], [-70.000208762411219, 41.898348163793948], [-70.000790941059407, 41.897568430317541]]], [[[-70.235258296591581, 42.059518577060828], [-70.234889520664723, 42.059288224394514], [-70.233568794063302, 42.057897137165391], [-70.234735597801233, 42.058352871634895], [-70.235626056586554, 42.059217036049688], [-70.237683646649259, 42.060086688177023], [-70.238021858324302, 42.060299226407999], [-70.238052694938503, 42.06059616634883], [-70.237714858505029, 42.060662764080263], [-70.235258296591581, 42.059518577060828]]], [[[-69.980433066133159, 41.617524906645464], [-69.980828214133112, 41.617404119826233], [-69.98131663066107, 41.617823164070657], [-69.981744116499826, 41.6185042466875], [-69.982048868725471, 41.618870766257601], [-69.982141324545609, 41.619212568194875], [-69.981684167410947, 41.619513710936452], [-69.981013430236317, 41.619348332765362], [-69.980890745402633, 41.619051780904414], [-69.981012465314691, 41.618853047562951], [-69.980768109247748, 41.618323532397717], [-69.980250105629224, 41.61784159580386], [-69.980433066133159, 41.617524906645464]]], [[[-70.230222910155121, 42.058059238257961], [-70.230499156472263, 42.057894013138799], [-70.230806061939703, 42.05789966810498], [-70.230990682697708, 42.058105481795799], [-70.230806630331855, 42.058512594533092], [-70.230837661348886, 42.058719406368894], [-70.23151299869437, 42.058784340559932], [-70.231513106773534, 42.05906347382377], [-70.230868412276038, 42.05944855225686], [-70.230408635812523, 42.059570683138169], [-70.230100981442845, 42.05945696774662], [-70.229917334989096, 42.058972571600023], [-70.229425834797581, 42.058626665023866], [-70.229916238952072, 42.058422759140058], [-70.230222910155121, 42.058059238257961]]], [[[-70.358198073951229, 41.726685917905158], [-70.358930610291765, 41.726406834706104], [-70.359205865532928, 41.726520976432504], [-70.359327599074021, 41.726771525569418], [-70.35832083906368, 41.72803554494709], [-70.357832777184825, 41.728401537648445], [-70.357588802893545, 41.728305625125692], [-70.357587886293061, 41.727872868514417], [-70.357984468271937, 41.726868363983826], [-70.358198073951229, 41.726685917905158]]], [[[-70.681255142341186, 41.521516461539768], [-70.681011268594602, 41.521699822630268], [-70.680372135562791, 41.521556188094145], [-70.679124492324604, 41.521628836511674], [-70.678911410191148, 41.521577773520903], [-70.6787893195294, 41.521372591066331], [-70.678911470874255, 41.521217616904273], [-70.679519767665852, 41.521055443549663], [-70.680920003652659, 41.520872513712263], [-70.681194204943822, 41.520715753149645], [-70.68143785710906, 41.520783959730224], [-70.681468355662332, 41.521125788563594], [-70.681255142341186, 41.521516461539768]]], [[[-69.948335733187122, 41.807767549650478], [-69.948764073299117, 41.807520700055967], [-69.949253285757436, 41.80800290831224], [-69.949620235268767, 41.808801507123562], [-69.949406784355759, 41.80939797428902], [-69.94910014878802, 41.809445581494913], [-69.948916543259017, 41.808843712948935], [-69.948733245664982, 41.80866499156253], [-69.948153101953636, 41.808363353307051], [-69.948060274505906, 41.808112201734026], [-69.948335733187122, 41.807767549650478]]], [[[-70.465005274789661, 41.593800716851987], [-70.465248570159048, 41.593797890527924], [-70.465462649958766, 41.59402944671087], [-70.465554214031158, 41.594739359906775], [-70.465767731471985, 41.594916885254086], [-70.46576747470418, 41.59530406282974], [-70.465371266710392, 41.595327468209973], [-70.464762460097944, 41.595190731816359], [-70.46445731559119, 41.594960595436156], [-70.464365309646112, 41.594619848835791], [-70.464700704020103, 41.594002787195883], [-70.465005274789661, 41.593800716851987]]], [[[-69.958521194821046, 41.729945266645181], [-69.958948763336892, 41.729896484589339], [-69.959284767376317, 41.729965777821903], [-69.959865308835944, 41.730582548912764], [-69.960201304921128, 41.731156117845998], [-69.960027197265546, 41.731661373487185], [-69.959621446385128, 41.731223645936666], [-69.9584294256493, 41.730305934206072], [-69.958521194821046, 41.729945266645181]]], [[[-70.312365399580699, 41.724174763378933], [-70.312639701899712, 41.724108921064662], [-70.314624522264907, 41.72454551636126], [-70.314441939641711, 41.72477268659464], [-70.313281647276824, 41.724956983639416], [-70.312731451152644, 41.724954038668152], [-70.312303954225072, 41.724590034789045], [-70.312273445689868, 41.724356142842076], [-70.312365399580699, 41.724174763378933]]], [[[-70.680585616122187, 41.522841418974608], [-70.681132997879686, 41.522815476643636], [-70.681345647305037, 41.522929019536619], [-70.681436779778366, 41.523270115229892], [-70.681681144469252, 41.523987149138222], [-70.680736710992434, 41.523965119137131], [-70.680189628565017, 41.523414180271054], [-70.680249987345718, 41.523116406229619], [-70.680585616122187, 41.522841418974608]]], [[[-69.981715475756772, 41.620819306583471], [-69.982020264339923, 41.620744584288509], [-69.982172853560442, 41.621202452603868], [-69.982416660586097, 41.621659917755728], [-69.982264714262925, 41.62207553841327], [-69.981868280356764, 41.622421437136509], [-69.98153333159469, 41.622487291561271], [-69.981289327761004, 41.622372009962831], [-69.98138082498744, 41.622056348272359], [-69.981625115104876, 41.62193696451839], [-69.981563058086238, 41.621360899291446], [-69.981715475756772, 41.620819306583471]]], [[[-70.331199862649285, 41.711204772574035], [-70.331719185564268, 41.711207222591298], [-70.332482034058245, 41.711567930471396], [-70.33245204945932, 41.711775263363535], [-70.332238636274511, 41.711840606798845], [-70.330681508512285, 41.711687935199272], [-70.330741895839097, 41.711362687798314], [-70.331199862649285, 41.711204772574035]]], [[[-69.981074767249069, 41.620131412583255], [-69.981074248560418, 41.619789217516576], [-69.981378831010943, 41.619768523944408], [-69.981897804023703, 41.619836240350317], [-69.982172131837345, 41.620220903540044], [-69.981837199791471, 41.620493962813107], [-69.981349096825127, 41.620723191691475], [-69.981044817178756, 41.620725879389553], [-69.981044362593863, 41.620446719834035], [-69.981074767249069, 41.620131412583255]]], [[[-70.235874645479115, 42.062835528773419], [-70.236212329603688, 42.062831964399528], [-70.236488344118527, 42.062927845498876], [-70.236489143469143, 42.063270555979557], [-70.235875594638614, 42.063565423619679], [-70.235507141618186, 42.063542264676286], [-70.235199679918296, 42.063338523000461], [-70.235291069403644, 42.063130184057499], [-70.235874645479115, 42.062835528773419]]], [[[-70.630270824750724, 41.691242237707698], [-70.630668178151311, 41.69117324214421], [-70.63091193259136, 41.691269015625167], [-70.630819829895302, 41.691999885651363], [-70.630453320641834, 41.692203096767017], [-70.630209328844771, 41.692062750788544], [-70.630117585549343, 41.691883680793048], [-70.630148836204981, 41.691405627999693], [-70.630270824750724, 41.691242237707698]]]]}, "type": "Feature", "id": 4, "properties": {"COUNTY": "BARNSTABLE", "AREA_ACRES": 263988.0, "OBJECTID": 1.0, "FIPS_ID": 25001}},{"geometry": {"type": "Polygon", "coordinates": [[[-72.855792354313692, 42.481074828222333], [-72.831430857591172, 42.47647281978189], [-72.831428319191986, 42.477067628660436], [-72.773253186956964, 42.466842710127814], [-72.773537204193929, 42.465597619919258], [-72.763738213041705, 42.463744472831145], [-72.764230573558052, 42.460202925257725], [-72.758286173518499, 42.461022061688595], [-72.75904255705511, 42.456572254795056], [-72.765062628212618, 42.455958784442096], [-72.765878821565153, 42.451765946273532], [-72.757058878342178, 42.452481006383749], [-72.757676092630518, 42.446012495508704], [-72.74956062125824, 42.447070973489957], [-72.700899541180505, 42.452930540818585], [-72.704317748981026, 42.405502497253622], [-72.669090934473928, 42.40963371373909], [-72.629143241355692, 42.414318205321656], [-72.629140777567898, 42.414826384432494], [-72.624567139161499, 42.415048437815102], [-72.622221177467523, 42.4150797071377], [-72.585658579640011, 42.423153655543821], [-72.58110224827962, 42.422575842126484], [-72.579432634118533, 42.422750149123239], [-72.544152661534781, 42.427082027918921], [-72.530935946083659, 42.428749165633228], [-72.499513177864202, 42.432524014511905], [-72.489784388736567, 42.433757682108649], [-72.483560530010578, 42.407441565569215], [-72.375382579582009, 42.420751953722331], [-72.375292160589993, 42.420408811719525], [-72.375263255566438, 42.420225637725423], [-72.375296548146963, 42.419997425308352], [-72.375329413540499, 42.419826115908535], [-72.375416032342031, 42.419649355971579], [-72.375464831703113, 42.419444163592992], [-72.375452026540344, 42.419203967358371], [-72.375376911142624, 42.41900935065933], [-72.375170836511643, 42.418790340781243], [-72.375018091402964, 42.418658075506393], [-72.374857748139107, 42.418485983891507], [-72.374689656841483, 42.418324664656602], [-72.374544945118643, 42.41815812580186], [-72.374205443261999, 42.417981722288481], [-72.373997319711663, 42.417833670573444], [-72.373951010654594, 42.417639284363965], [-72.374073958276696, 42.417444783444736], [-72.374166686129641, 42.417279231880023], [-72.37391241144509, 42.417176456122341], [-72.373642718078045, 42.417171210758589], [-72.373296208965286, 42.417137827555536], [-72.372949792531983, 42.417058346557226], [-72.37265730433036, 42.416933350220027], [-72.372403478719505, 42.416721989934899], [-72.372226926979096, 42.416545515939951], [-72.372050340441504, 42.416375254101453], [-72.371958511071369, 42.416209931926382], [-72.371966989425388, 42.415970204215782], [-72.372067342738262, 42.415775876537325], [-72.372129844531855, 42.415559327707115], [-72.372269061459036, 42.415302223582913], [-72.372408364354541, 42.415130648433518], [-72.372670762946314, 42.414925008376521], [-72.37281783557539, 42.414788305978654], [-72.373003850004892, 42.414576942101498], [-72.373205082656781, 42.414394272509298], [-72.373375598993889, 42.414160607739234], [-72.373585505688695, 42.413858489957832], [-72.373648486328875, 42.413641936515297], [-72.373534587922862, 42.413391883346463], [-72.373320240945091, 42.413249459549903], [-72.373190220451036, 42.413107476051657], [-72.372868218078835, 42.41292031214946], [-72.372700476233035, 42.412721264120457], [-72.372517484117779, 42.412482357487391], [-72.372349619209004, 42.41231824207815], [-72.37210475246998, 42.412164793627348], [-72.371890164567432, 42.412057211178038], [-72.371691549050055, 42.411909623437431], [-72.371461692999034, 42.411796033685114], [-72.371246598698022, 42.411739681772822], [-72.370994302620602, 42.411558107142746], [-72.370780805246156, 42.411370656490668], [-72.370551682651325, 42.411177741675424], [-72.37029134947818, 42.41104745419743], [-72.370100435020419, 42.410911599618679], [-72.369917310003416, 42.410741383868356], [-72.369773083640013, 42.410519645986021], [-72.369728600518343, 42.410297694449802], [-72.369915478050572, 42.4099727090762], [-72.370132173628818, 42.409801721863744], [-72.370456008414038, 42.409726707848996], [-72.370649742303883, 42.409555893287546], [-72.370950638915389, 42.409429823456215], [-72.371283159669417, 42.409235989807236], [-72.371432525392578, 42.408825755829113], [-72.371411037776781, 42.408615424836128], [-72.371219891017006, 42.408444731633821], [-72.37102091301432, 42.408313981344563], [-72.370791344819295, 42.408149700339877], [-72.370545179602814, 42.408138688032757], [-72.370207103445964, 42.408105232060436], [-72.369968823615423, 42.408031587000231], [-72.369816886210231, 42.407769933366886], [-72.369450940953215, 42.407326502427892], [-72.369360163417838, 42.407041878252684], [-72.369192462474004, 42.406808522711088], [-72.368977435068544, 42.406729118057648], [-72.368824469110038, 42.40660422875397], [-72.368609970926698, 42.406421823349966], [-72.36851846016215, 42.406251454043691], [-72.368465971565087, 42.406012186174671], [-72.368243868553336, 42.405824255515668], [-72.367975155232173, 42.405745254002809], [-72.367798969258487, 42.405556886155864], [-72.367800049101305, 42.405334680157239], [-72.367793504939826, 42.405141161667672], [-72.367709580598955, 42.404930220293146], [-72.367579626034441, 42.404782017725502], [-72.367449589660453, 42.404565841798849], [-72.366790645132667, 42.403739725218905], [-72.366576189135202, 42.403506087734741], [-72.366514969506952, 42.40332927651982], [-72.366608246430019, 42.40310637622693], [-72.366854780335771, 42.402986308046387], [-72.36710130586718, 42.402963113384281], [-72.367455696245131, 42.402859697337483], [-72.367787294855674, 42.402750870316439], [-72.367995229204183, 42.402659810790965], [-72.368180536146568, 42.402522195177596], [-72.368365777291359, 42.402362161878919], [-72.368543772235185, 42.402099186778443], [-72.368582362833024, 42.401928375621132], [-72.3686216693132, 42.401677070757707], [-72.368699530121191, 42.401323108863075], [-72.368931049071449, 42.401065941207236], [-72.369147717702674, 42.400780165114504], [-72.369294580446223, 42.400488703717727], [-72.369364276077476, 42.400283355176256], [-72.36924109104001, 42.400105842929747], [-72.368972018792462, 42.399866500107741], [-72.368764316034344, 42.399655413482492], [-72.368795512926638, 42.399432889738314], [-72.368857361854865, 42.399204552583043], [-72.368957733886418, 42.399004014383223], [-72.369034989736789, 42.398827328989498], [-72.369019633883156, 42.398655754496566], [-72.368981323983661, 42.398484443363373], [-72.368804127155144, 42.39833614860585], [-72.368488319255349, 42.398319355715131], [-72.36812618246482, 42.398325509427828], [-72.367941853626633, 42.398091106818796], [-72.367926206884476, 42.39786272458511], [-72.367911047326587, 42.397537104186597], [-72.368026594392987, 42.397371294544911], [-72.368319540047068, 42.397165432663698], [-72.368396697710054, 42.396902047800268], [-72.368458214369511, 42.396684967190772], [-72.368828177351077, 42.396444670730354], [-72.3685739755783, 42.396199002432795], [-72.368342864015247, 42.396033647722639], [-72.36833508553039, 42.395856433896256], [-72.368227116887894, 42.3956451337638], [-72.368073008322412, 42.395479197486573], [-72.367787888060505, 42.39532550305421], [-72.367602869768959, 42.395217149479805], [-72.367541209545678, 42.394919339133502], [-72.36736397846569, 42.394696766184047], [-72.367125196862716, 42.394582604895668], [-72.367356107401548, 42.394468324876399], [-72.367633370251653, 42.394341900727767], [-72.367718032790378, 42.394067835801522], [-72.367579047730644, 42.393861810679894], [-72.367417289481722, 42.393713307312971], [-72.367286341086967, 42.393490925495676], [-72.367239849767003, 42.393324717305156], [-72.36717026282669, 42.393033178591885], [-72.367462847153206, 42.392952735584693], [-72.367809640404644, 42.392963625420123], [-72.36780159990559, 42.392660999100912], [-72.367762725902224, 42.392483479432471], [-72.367593239146217, 42.392249504341059], [-72.367269455492547, 42.392100601735756], [-72.366969232708712, 42.392084317642329], [-72.366722705848687, 42.392113184414512], [-72.366506811685497, 42.391993267481496], [-72.366629735840121, 42.391781307130934], [-72.366706769046942, 42.391535390184657], [-72.366775859459551, 42.391312581151666], [-72.36669857299907, 42.391123556282579], [-72.366475162771593, 42.391084184364516], [-72.36615167162617, 42.391026928843424], [-72.365735752118965, 42.390987293873749], [-72.365481415295775, 42.390844616118549], [-72.365496500216821, 42.390633468034537], [-72.365650272495003, 42.390421366655637], [-72.365834915744884, 42.390157714599376], [-72.365965436298524, 42.389906353773824], [-72.366026971220251, 42.389734830104672], [-72.366041931775413, 42.389408351995392], [-72.366033885896755, 42.389042613066337], [-72.365964100264904, 42.388762418922539], [-72.365794575689634, 42.388630897669962], [-72.365409389740037, 42.388448600142603], [-72.365178303166928, 42.388380023136243], [-72.36492411545278, 42.388282899160394], [-72.364539222229098, 42.388174962645003], [-72.364269592739419, 42.388129721588754], [-72.364099925484268, 42.38788962048806], [-72.363976598750341, 42.3876722193258], [-72.363845749218044, 42.387535272980195], [-72.363752946166528, 42.387249578287971], [-72.363706560057466, 42.386992255244017], [-72.363814157149449, 42.386671834240516], [-72.364106500524755, 42.386442308431654], [-72.364291200998792, 42.386316497000585], [-72.364645171811603, 42.386144487368405], [-72.3648837918483, 42.386000893573787], [-72.365168469840924, 42.385886213314372], [-72.365522055318891, 42.385748505997235], [-72.36649951997741, 42.385461509307426], [-72.366830057539616, 42.385352691692802], [-72.367053001681654, 42.385129263032745], [-72.367075917321486, 42.384940563390337], [-72.366990966468634, 42.384448908745121], [-72.366259796566624, 42.383511871740758], [-72.365836722782831, 42.382946144335733], [-72.365475617556399, 42.382586482615061], [-72.365121831041989, 42.382415291744564], [-72.364914131866939, 42.382341406586058], [-72.364676008746414, 42.382307183738256], [-72.364398964802362, 42.382250744837322], [-72.364014334982016, 42.382177106909488], [-72.363683665185832, 42.382017532225881], [-72.363729985131641, 42.38181686328371], [-72.363976492135194, 42.38167384213083], [-72.36423038257962, 42.381582443345877], [-72.364461116745005, 42.381564954213836], [-72.364692048528539, 42.381553045117656], [-72.364922551560042, 42.381598579208067], [-72.365176231517282, 42.381758189173851], [-72.365468325595799, 42.381752030758442], [-72.365806683723108, 42.381745613469064], [-72.366106441286533, 42.381625145114853], [-72.366406163723056, 42.381413563811769], [-72.366598501425941, 42.381172990046608], [-72.366660208816938, 42.38086416544057], [-72.366629779279819, 42.380664073354183], [-72.366622141048637, 42.380470021778777], [-72.366569274753203, 42.380041597295318], [-72.366570081901074, 42.379595392267916], [-72.366494723438763, 42.379058558627605], [-72.366441589882982, 42.378858637425999], [-72.366342350211539, 42.378670317430654], [-72.366258465839692, 42.378459373695968], [-72.366144020997041, 42.378242447777353], [-72.366021775499831, 42.378094274958364], [-72.36573841331105, 42.3778943757533], [-72.365392828428995, 42.377814866712029], [-72.365062549902532, 42.377815640201291], [-72.364846459882529, 42.377952853282039], [-72.364554063165457, 42.378113237494773], [-72.364438066768074, 42.378262031899474], [-72.364506799895764, 42.378484344793812], [-72.364621538947247, 42.378678762060403], [-72.364459334253183, 42.378867337791519], [-72.364190275327104, 42.378816510475282], [-72.364021323540939, 42.378662474216441], [-72.363782928818736, 42.378553975183372], [-72.363814115662692, 42.378365754047621], [-72.363914925508681, 42.378154051882575], [-72.363946575479588, 42.377839782294828], [-72.36393128369464, 42.377662623958805], [-72.363885554193715, 42.37747957201104], [-72.363847651197347, 42.377273863212388], [-72.363662908507422, 42.376914581771317], [-72.363632557141557, 42.376657137758933], [-72.3637098091871, 42.376445522501186], [-72.364010297984848, 42.376371240288584], [-72.364295563935144, 42.376382602172569], [-72.364326336794392, 42.37618204949456], [-72.363967621293824, 42.375984962898869], [-72.363844006930208, 42.375806997407899], [-72.364083247708564, 42.375524930572432], [-72.36428239903401, 42.375206071174553], [-72.364063047846997, 42.375095178845157], [-72.363980442962159, 42.374923657838636], [-72.363909644874695, 42.374620871258429], [-72.363914482039348, 42.374334983068955], [-72.363956620769002, 42.373997586182348], [-72.363976341031901, 42.373814582740501], [-72.363988731462342, 42.373637216335744], [-72.363892089178307, 42.373460128631422], [-72.363778642574403, 42.373208350291463], [-72.363554652415786, 42.372899421040287], [-72.363196613158721, 42.3725279346341], [-72.363036224706704, 42.372332687880579], [-72.362908126372872, 42.372190227634391], [-72.362764759497466, 42.372041039321594], [-72.36247220787476, 42.371841201001565], [-72.362181008735121, 42.371686998126329], [-72.36195323799204, 42.371589669741383], [-72.361617710117329, 42.371532492191605], [-72.361311320331993, 42.37141270318034], [-72.361415589299384, 42.371223394963941], [-72.361087874131542, 42.371178041622585], [-72.360816614078843, 42.371212663616234], [-72.360711486074862, 42.371035636740764], [-72.360660829995155, 42.370846407983692], [-72.360771899344456, 42.370594657137197], [-72.360527660214402, 42.370428754620811], [-72.360532252980306, 42.370257659077708], [-72.360788001281179, 42.37023440782739], [-72.36110387981698, 42.370142011293154], [-72.361029121327363, 42.36986797268051], [-72.360823688189228, 42.369644970179984], [-72.360764808432506, 42.369342092261846], [-72.360799523946326, 42.369055980141241], [-72.360764866939789, 42.368775428965655], [-72.360515315602186, 42.368593360358723], [-72.360142726752656, 42.368416622951699], [-72.359823812300391, 42.36822264709312], [-72.359536354847393, 42.368011509224218], [-72.359303069853098, 42.367766203845548], [-72.359038753973778, 42.367435058931342], [-72.358697786543203, 42.367190016326802], [-72.358519478671113, 42.367041083568388], [-72.358032589724289, 42.366796587906279], [-72.357731287378456, 42.366745356071824], [-72.357314586700952, 42.36673441778261], [-72.356997670910886, 42.366677718411324], [-72.356696506144928, 42.366609646821928], [-72.35636464887142, 42.366507410659722], [-72.356464665890726, 42.366272582115528], [-72.3567577751502, 42.366014977641257], [-72.35706638818823, 42.365745912794019], [-72.357143183007736, 42.365374497623577], [-72.357174269049963, 42.365168902346745], [-72.357320938572315, 42.365008542072012], [-72.357606674051951, 42.364888289712361], [-72.357899879570653, 42.364853421326707], [-72.358138786112136, 42.36501315675396], [-72.358401091745037, 42.36508097438054], [-72.35864032638915, 42.364898043883684], [-72.358848634795791, 42.364726507592081], [-72.358925753919891, 42.364531822051156], [-72.359064763742893, 42.36430849407266], [-72.359288250507575, 42.364199956218627], [-72.359257540275792, 42.36391433305446], [-72.359034242751207, 42.363697042492305], [-72.358702999402539, 42.363531875918447], [-72.358425258090293, 42.363354965007908], [-72.358340718015313, 42.363092251423858], [-72.358194268339716, 42.362892482181927], [-72.358171374865435, 42.362663610759562], [-72.358287320764177, 42.362440545742835], [-72.358379803620963, 42.362268794083164], [-72.358210179234817, 42.361908760160233], [-72.357986996962822, 42.36166337659342], [-72.357871078545259, 42.361440871046113], [-72.357786401513621, 42.361212460328176], [-72.357763279336098, 42.361029236867111], [-72.357763125578344, 42.360811989921089], [-72.357747358937758, 42.360589277403506], [-72.357785800610472, 42.36038929888749], [-72.357747498610323, 42.360223565085477], [-72.357619033501351, 42.360078220531982], [-72.357410673159407, 42.359895747946709], [-72.357240799647272, 42.359695611862996], [-72.357325529196601, 42.359444510163698], [-72.357363563271818, 42.359169627829459], [-72.357324812878716, 42.358952758571064], [-72.35740174599205, 42.358735567068557], [-72.357579051576565, 42.358615492290731], [-72.357864050982556, 42.358398369286633], [-72.358010250009059, 42.358249355354125], [-72.358148585013069, 42.358066547716028], [-72.358140549501286, 42.357769500665569], [-72.358124807709785, 42.357575508205457], [-72.358355616070426, 42.357301437575238], [-72.358455609668468, 42.357147005802048], [-72.358771320625692, 42.356975297599519], [-72.358986503408886, 42.356695130074343], [-72.358947431771895, 42.356410199068257], [-72.358877514207762, 42.356204726988267], [-72.358715409886585, 42.355959518695585], [-72.358753506042959, 42.355788172513684], [-72.358969129470722, 42.355639088922914], [-72.358799027044881, 42.355439497129439], [-72.358505873363285, 42.355313929939861], [-72.358343478584672, 42.355091771587205], [-72.358358668868675, 42.354869367989394], [-72.35812713114764, 42.354829501003181], [-72.357788007626468, 42.35485841064488], [-72.357780022244782, 42.354681286275614], [-72.357617787636045, 42.354533312475695], [-72.357370812205559, 42.354464838743816], [-72.357193293519387, 42.35429960203161], [-72.357362770330042, 42.354122235036805], [-72.357639896956968, 42.353979447736897], [-72.357493309263319, 42.353848373199405], [-72.357253878084578, 42.353700434303569], [-72.357422574232956, 42.353134222584579], [-72.357700229753419, 42.353111354448288], [-72.357947011421317, 42.353094298006916], [-72.357923428973237, 42.352814292733662], [-72.357876898343818, 42.352426329570591], [-72.357760594608422, 42.352192032195795], [-72.357652429479714, 42.351958124159182], [-72.357158963885951, 42.351855475168037], [-72.356935436824571, 42.351769899634057], [-72.356704098091726, 42.351564548559239], [-72.356649850688328, 42.351359048282802], [-72.356942856323798, 42.35129609310281], [-72.356757447408199, 42.350941846121323], [-72.356448957609743, 42.35066783452686], [-72.356502778514113, 42.350456397334007], [-72.356749234261599, 42.350353274675619], [-72.357219468345221, 42.350318888923127], [-72.357458418874216, 42.350306933643601], [-72.357836228742684, 42.350232629838814], [-72.358221397071063, 42.350083452786862], [-72.358398575584687, 42.349929074854408], [-72.358660592108691, 42.349917575096754], [-72.358984324629404, 42.350008611010757], [-72.359223057908778, 42.349962891451057], [-72.359392638776342, 42.349785520387904], [-72.359507879455634, 42.349619809335856], [-72.359492408510008, 42.349436978715836], [-72.359276596853775, 42.349373948241322], [-72.359022593108278, 42.349465878711172], [-72.358737288279514, 42.349523109729823], [-72.358429186724194, 42.349546207807656], [-72.3582441785356, 42.349391742412543], [-72.358135966784957, 42.349100484288513], [-72.358074282510671, 42.34888378597897], [-72.358289955144727, 42.348757841284495], [-72.358544279284231, 42.348877486656953], [-72.358739584949873, 42.349012697730849], [-72.358922065158737, 42.348820015466572], [-72.358991027419606, 42.348562367141263], [-72.358890996344968, 42.348328489361421], [-72.358690647861053, 42.348197187600263], [-72.358444091404081, 42.34813996720294], [-72.358120405652997, 42.348123206373074], [-72.358027722583742, 42.34791178116685], [-72.358259066360333, 42.347751327071585], [-72.358420902551785, 42.347602735550176], [-72.358613695941017, 42.347499469142313], [-72.358860079586833, 42.347356367824901], [-72.35898335962878, 42.347139368558437], [-72.358906419954749, 42.346836083113658], [-72.358806350503983, 42.346652803835561], [-72.358613545923134, 42.346504609478473], [-72.358505679667147, 42.346310134075168], [-72.358467244348788, 42.3460983040911], [-72.358621173406306, 42.345966607569757], [-72.359021884679507, 42.34605247654239], [-72.35916808116572, 42.346280967518886], [-72.359507113336718, 42.346195153436724], [-72.359576575186153, 42.345983597795666], [-72.35948432479924, 42.345795218783579], [-72.359376226592516, 42.345565903239994], [-72.359014359785718, 42.345337313374728], [-72.358374823405114, 42.34494882687094], [-72.358166959406233, 42.344879972948114], [-72.357943541976525, 42.344720211663535], [-72.357874208816312, 42.344502939921163], [-72.357627548783398, 42.344383235925001], [-72.35735799720031, 42.344240023506252], [-72.357211677195977, 42.34402845727756], [-72.357034204587961, 42.343891310018762], [-72.356810844684972, 42.343833913290887], [-72.3565332035176, 42.343783132779386], [-72.356440860167496, 42.343622842219418], [-72.356603088770811, 42.343423021546542], [-72.356564124099904, 42.343234243168887], [-72.356279095423119, 42.343274089991183], [-72.356047861761084, 42.343468751948237], [-72.355862701375656, 42.343606349873333], [-72.355438873889014, 42.343451946819997], [-72.355269166889016, 42.343332205423245], [-72.355076235329349, 42.343155285681213], [-72.355014746804756, 42.342897979369042], [-72.355030114632015, 42.342715008680408], [-72.355299910630634, 42.342634763539841], [-72.355523557636658, 42.342794618253897], [-72.35580102639581, 42.342662546037516], [-72.356117206691621, 42.342548281465454], [-72.356302163187081, 42.342342079659936], [-72.356148177191841, 42.342182247925322], [-72.355808751986601, 42.342085198785533], [-72.355384633019099, 42.341971312449367], [-72.355330328079347, 42.341742673230357], [-72.35545403490363, 42.341548182496226], [-72.355608157197182, 42.341422160240867], [-72.355607986618438, 42.341176192315572], [-72.355438216231178, 42.34103340324387], [-72.355414910915528, 42.3408625144477], [-72.355391681694371, 42.340679290589819], [-72.355190210760554, 42.340507476361907], [-72.355045387383342, 42.34037854624831], [-72.354981340295922, 42.340165194792426], [-72.354972936232457, 42.339911454972047], [-72.354766935928211, 42.339808368672863], [-72.354533249645584, 42.339820819746521], [-72.354377028980181, 42.339962071745575], [-72.354021376825273, 42.340100303494687], [-72.353926063913946, 42.339871968180923], [-72.354018434190564, 42.339675460846962], [-72.354187940601165, 42.339457582779062], [-72.354156872034366, 42.339223728449575], [-72.353917853722436, 42.339092705693155], [-72.353686498619695, 42.339115851648799], [-72.353455263476818, 42.339138906214252], [-72.35340108928159, 42.338910265042422], [-72.35364776267167, 42.338727287801412], [-72.353662988709544, 42.338515597752377], [-72.35343911139897, 42.338373207483706], [-72.353122726879135, 42.338282101700827], [-72.35288365357718, 42.338173585408732], [-72.352875539641801, 42.33798574722293], [-72.353021944723878, 42.337836647139099], [-72.353338083091145, 42.33775669274673], [-72.353499835905424, 42.337584969917913], [-72.353237429096964, 42.337356793955024], [-72.35287497848357, 42.337259817132974], [-72.352666699334492, 42.337157824400144], [-72.352905639903625, 42.337031716688053], [-72.353183240827306, 42.336973926548097], [-72.353036329170379, 42.336797201981319], [-72.352997644870683, 42.336529101484487], [-72.352927875370426, 42.336277527306031], [-72.352680976689683, 42.336101003865025], [-72.352511105184774, 42.335958211213999], [-72.35235686395346, 42.335804588522777], [-72.352210643754844, 42.335976194677635], [-72.352272311318288, 42.336176060491404], [-72.352087496918813, 42.336284299397413], [-72.351879080595694, 42.336090652883861], [-72.351694081162947, 42.33595976543409], [-72.351554722705757, 42.335748680529747], [-72.351778287005232, 42.335679499692979], [-72.351639331553613, 42.335417183230028], [-72.351431060887393, 42.335297181654198], [-72.351184451465528, 42.335349066097983], [-72.351045352447272, 42.335166068884284], [-72.351052919474256, 42.334943721871525], [-72.350975705141067, 42.334715340039381], [-72.351276201538283, 42.334583107855835], [-72.351199105237157, 42.3344176582196], [-72.351568876141684, 42.33419433926661], [-72.351345218041061, 42.333994592400764], [-72.35106761913363, 42.333835128999937], [-72.350990259451166, 42.333640960684612], [-72.351244614336352, 42.333542922424286], [-72.351491493811977, 42.333628876053353], [-72.351614589911563, 42.333434393602154], [-72.351699405797731, 42.333199679845414], [-72.351946297693203, 42.333376745648131], [-72.352200542730642, 42.333324802881862], [-72.352077059329673, 42.3331479033506], [-72.352038812300435, 42.332947863739733], [-72.352223481157779, 42.332730415981445], [-72.352393057062713, 42.33258168486735], [-72.352570261691923, 42.332386800083356], [-72.35264748961221, 42.33212963359491], [-72.352763254905952, 42.331814830436848], [-72.352747641560114, 42.331637671506861], [-72.3527011964525, 42.331414644437139], [-72.352531672001049, 42.331134549026672], [-72.352238757882745, 42.330963407700217], [-72.351961041420694, 42.330803407108817], [-72.351783756967592, 42.330523368108132], [-72.35171428535331, 42.330329141704738], [-72.351621739665802, 42.330169478773236], [-72.351490597092024, 42.330008931249452], [-72.35116657339708, 42.329752486387029], [-72.351128239983098, 42.329563701117486], [-72.351459647680457, 42.329557375356544], [-72.351675580375115, 42.329689114432405], [-72.351899295137684, 42.329785952694429], [-72.351991656451929, 42.329625459733016], [-72.352099517275335, 42.329408581216548], [-72.352315443519998, 42.329539778951023], [-72.352492871846977, 42.329659377453055], [-72.35261610138221, 42.329493613198231], [-72.352700688571289, 42.329287620639562], [-72.352900941875532, 42.329093104350243], [-72.352646481186952, 42.32893860491702], [-72.352415147709223, 42.32887054511076], [-72.352230130792748, 42.328727864283273], [-72.352461314187579, 42.328487562741003], [-72.352692335249543, 42.328361423696002], [-72.352938802151328, 42.328184030845591], [-72.353154649893924, 42.328075559865226], [-72.35342443857779, 42.32790924696436], [-72.353593930091208, 42.327692449507381], [-72.353254578997436, 42.327549835895574], [-72.352907622573184, 42.327527021572457], [-72.352668673950603, 42.32742471623601], [-72.352575834659419, 42.327162058445104], [-72.352544915006831, 42.326956382592201], [-72.352405723879158, 42.326756461285591], [-72.352328673468335, 42.326539873103961], [-72.352667784225787, 42.326368005986609], [-72.352945065626869, 42.326298964190066], [-72.35282913859308, 42.326150729739126], [-72.352713575060974, 42.325939379342884], [-72.352435827447465, 42.325757502093765], [-72.352119665630212, 42.325723202950869], [-72.351842046623901, 42.325694919614008], [-72.351772527540277, 42.325523831915135], [-72.351880358504928, 42.325341256162687], [-72.351625831439165, 42.325198549291663], [-72.351255758874601, 42.325061739499724], [-72.35117828025912, 42.324885038304508], [-72.351417220978135, 42.324816284056404], [-72.351756344316158, 42.32484420267226], [-72.352064700145718, 42.324758636680947], [-72.352288263198531, 42.32463822561963], [-72.352619637256268, 42.324478210194172], [-72.352827207899153, 42.32426059098664], [-72.353220389298741, 42.32431169281201], [-72.353598126128105, 42.324306097149531], [-72.353860209671737, 42.324208445365713], [-72.354060323152723, 42.324076950872666], [-72.354252936658867, 42.323911209170134], [-72.354329550333532, 42.323699692283967], [-72.354052042028115, 42.32351718688188], [-72.353774544047582, 42.323443260605742], [-72.353589289552986, 42.323255026933261], [-72.353666342130239, 42.323003982695738], [-72.353658112859776, 42.322735655244692], [-72.353542432697253, 42.322524396453375], [-72.353526940776405, 42.322347236602091], [-72.35376580841222, 42.322255969617672], [-72.353996987690209, 42.322152424723882], [-72.353796155524719, 42.321987355570997], [-72.353549621995867, 42.32194191930995], [-72.353341468508134, 42.321827592365544], [-72.353325666340666, 42.321582369530994], [-72.35313300304486, 42.321411026292992], [-72.353001890555305, 42.321251650506909], [-72.353124919281754, 42.321108305009453], [-72.353463823758659, 42.320896461947271], [-72.353741420664193, 42.320690745364651], [-72.353949209634877, 42.320427565456903], [-72.354164734807156, 42.320027567334876], [-72.35429551386845, 42.319838606145616], [-72.354418749097846, 42.319639076966624], [-72.354719433203485, 42.31953555394854], [-72.355104768161553, 42.31954673280822], [-72.355204709003814, 42.319329369433291], [-72.355266316821215, 42.319112291222751], [-72.355096750497879, 42.318998130442523], [-72.354873281095593, 42.319123588457877], [-72.354580236964765, 42.319055992116041], [-72.354556972209451, 42.318878349630417], [-72.354757323467823, 42.31866699246077], [-72.355050144437683, 42.318466741346199], [-72.355227268354142, 42.318197574760035], [-72.354934338455507, 42.318003391847739], [-72.354787628259459, 42.31769494905933], [-72.354694879573927, 42.317483520909768], [-72.354756666829445, 42.317180910026828], [-72.354933821070347, 42.316986020960961], [-72.355141846289357, 42.316831416843669], [-72.35521103006684, 42.316528750617643], [-72.354987337774062, 42.316322708395518], [-72.354725486949533, 42.316174480760161], [-72.354555777558247, 42.316049066090329], [-72.354532384248131, 42.315825867648037], [-72.354671174886207, 42.315368457199099], [-72.354840475364909, 42.315059464443614], [-72.354940372838186, 42.314893240245802], [-72.355163886393939, 42.314727266591149], [-72.355510594616803, 42.314647077469367], [-72.355872903331544, 42.314572353172359], [-72.35615045615431, 42.314366000328178], [-72.356204385713255, 42.31418274100222], [-72.356212038511174, 42.313977228085385], [-72.356142482285676, 42.31379434853315], [-72.35609623193433, 42.313513879322983], [-72.356473650914381, 42.313319206204667], [-72.356743285010495, 42.313164679974058], [-72.356928309925394, 42.313032752164425], [-72.356989840346571, 42.312855648237068], [-72.356820037777453, 42.312740951513092], [-72.356611922207577, 42.312609703909999], [-72.356450215325879, 42.312438765522124], [-72.356449896835386, 42.312164166341503], [-72.356588578886189, 42.311906537781411], [-72.356757953626854, 42.31164922040648], [-72.356950558775466, 42.311351754732598], [-72.356881065350095, 42.311191383394835], [-72.356642126278373, 42.311220174820114], [-72.356326251031945, 42.311237744720138], [-72.356379923861937, 42.311008840188343], [-72.356703599986446, 42.311003096373973], [-72.356934872127013, 42.310945641355453], [-72.357142948485105, 42.310796614921344], [-72.357265959037235, 42.310573495054328], [-72.35732776464576, 42.310390086218312], [-72.357674561694822, 42.310327356104459], [-72.357959833927026, 42.310361239923836], [-72.358275780016598, 42.31034924703313], [-72.358468237665591, 42.310211678998833], [-72.358406601361168, 42.310040535858896], [-72.358599062280192, 42.309885411057031], [-72.358853526066056, 42.309919522837909], [-72.359053813666804, 42.309804943813532], [-72.358938012219866, 42.309611157302136], [-72.358860810661056, 42.309428246318724], [-72.358883958561549, 42.309239003213762], [-72.358637180054629, 42.30907374549065], [-72.358729546881989, 42.308827714303931], [-72.35895295244471, 42.308656061539189], [-72.359407789924532, 42.308689844541838], [-72.359685121280506, 42.308746831980251], [-72.359924228699072, 42.308758007702906], [-72.360193873678767, 42.308740233680943], [-72.360478865703698, 42.308700375952697], [-72.360594453225602, 42.308414194469968], [-72.360401542553547, 42.308214234322698], [-72.36022408033358, 42.308008486324638], [-72.360100578435819, 42.307837176877797], [-72.360370322873038, 42.307791311236429], [-72.360632149321304, 42.307653760199663], [-72.360346962739584, 42.307482581458295], [-72.360115685525287, 42.307431373196003], [-72.359923085438979, 42.307334318121171], [-72.3597147968743, 42.307180569012253], [-72.359522084337627, 42.307003654461589], [-72.35928286376749, 42.306849595745128], [-72.359097762730684, 42.306661369388976], [-72.358935667523497, 42.306398603152353], [-72.358920184253137, 42.306187140317121], [-72.358904478334097, 42.305941376394436], [-72.358796559011594, 42.305746900489048], [-72.358557607383332, 42.305639025418031], [-72.358357095284603, 42.305736138958153], [-72.358087620230975, 42.305828185088451], [-72.357864099526566, 42.305793840697191], [-72.357732937804315, 42.305611421747905], [-72.357763405401684, 42.305371435267297], [-72.357678694379544, 42.305188669484259], [-72.357393269750943, 42.305034321498269], [-72.357215990152511, 42.304903385062801], [-72.357231241832508, 42.304686110610064], [-72.357277457393437, 42.304480399513523], [-72.357169209788765, 42.304252161980813], [-72.356968749737888, 42.303931787625878], [-72.356845244414998, 42.303669360823804], [-72.356675467817368, 42.303429247044654], [-72.356374866751295, 42.303326779168252], [-72.356017696207743, 42.3032833435283], [-72.355188961087165, 42.304631552874639], [-72.354804035122669, 42.305129060706797], [-72.354434448368437, 42.305478438180117], [-72.354211018203586, 42.305684295139343], [-72.353941348785085, 42.305816307774727], [-72.35343299327505, 42.306039585973593], [-72.353093697287392, 42.306108460099658], [-72.352824122018447, 42.306211748726206], [-72.352592961493229, 42.306303497514186], [-72.352200133015742, 42.306423454955564], [-72.351891777296302, 42.30641223644276], [-72.351737594673125, 42.306275538341971], [-72.35166038788951, 42.306081368448012], [-72.35159080861591, 42.305841044885888], [-72.351613712767104, 42.305641181125367], [-72.351652050237064, 42.30534432705177], [-72.351682277180657, 42.30426424257567], [-72.351558717074155, 42.304041245302592], [-72.351281271248325, 42.303910501898926], [-72.350996128839682, 42.303910903459588], [-72.350672554506801, 42.304002792673522], [-72.350341115100235, 42.304168386482417], [-72.35006399700687, 42.304369050605644], [-72.349917776372934, 42.304517606935114], [-72.3497943921911, 42.304677788550464], [-72.349625012697302, 42.304980652878818], [-72.349555799084555, 42.305146555918569], [-72.349532981387171, 42.305335254467565], [-72.349517574606409, 42.305551988618561], [-72.349525407214927, 42.30579222971464], [-72.349556395885969, 42.306031669363591], [-72.34970311709877, 42.306426190980005], [-72.349965340025093, 42.306768629122203], [-72.350181166607612, 42.306979781222545], [-72.350404817014123, 42.30716827665168], [-72.350659251419572, 42.307390936491558], [-72.350959877614883, 42.307476493081651], [-72.351206406950411, 42.307498886102657], [-72.351491643042706, 42.307396025510677], [-72.351691889786196, 42.307287041667109], [-72.351992535704753, 42.307166689161015], [-72.352347019782087, 42.307189359643552], [-72.352616925045282, 42.307326368760265], [-72.352778722635463, 42.307451755002752], [-72.352771134617328, 42.307680856149027], [-72.352563087618918, 42.307778015341881], [-72.352278017112496, 42.30793822859146], [-72.351869685521393, 42.307961513939183], [-72.351530501422715, 42.307967449209436], [-72.35113730759079, 42.307961899143251], [-72.350782886757727, 42.307962272964993], [-72.350466966374782, 42.307957318885492], [-72.350150922780486, 42.307997381504919], [-72.349889053506899, 42.308043164848399], [-72.349719433338109, 42.30828354748617], [-72.349596405168782, 42.308443726073399], [-72.349557970377262, 42.308643794116385], [-72.349789215604389, 42.308792349810041], [-72.350051281409492, 42.30881517064158], [-72.350390411172057, 42.308768725191001], [-72.35075278284279, 42.308917388895672], [-72.350937889789208, 42.309071325739616], [-72.351091855300609, 42.309299770409474], [-72.351192063694754, 42.309454335611257], [-72.351385002657338, 42.30969437558408], [-72.351454659402236, 42.309985297237837], [-72.351354494046618, 42.310185823231059], [-72.351169647143024, 42.310340249121509], [-72.350938394897199, 42.310363299664267], [-72.35071479210859, 42.31038692334414], [-72.350383410439591, 42.310369658816541], [-72.350159818222849, 42.310312791596189], [-72.349843811117196, 42.310130560860706], [-72.349635684887431, 42.309924483156237], [-72.349527481851737, 42.30977051593765], [-72.349365483700169, 42.309575891077763], [-72.349180395866597, 42.309405115371057], [-72.348933822550379, 42.309262343801649], [-72.348656356225135, 42.309176610860632], [-72.348317171650365, 42.309182986764313], [-72.348039968792349, 42.309234551128945], [-72.346259502829525, 42.309775001708822], [-72.345889714684702, 42.309969585178727], [-72.345758806315331, 42.310112891265966], [-72.345558292476312, 42.310330446593746], [-72.345473522792005, 42.3105589443825], [-72.345219304466596, 42.310788148344315], [-72.344895793384822, 42.311051623653398], [-72.34469517712408, 42.311143761903665], [-72.344471814208831, 42.311258485220861], [-72.344209892086781, 42.311401671757068], [-72.34402497646245, 42.311516111734292], [-72.343770701465672, 42.311705338066048], [-72.3436009545036, 42.311865852981391], [-72.343470151510772, 42.312208939154345], [-72.342584180510727, 42.313942904136944], [-72.3423145628675, 42.314229115165794], [-72.34209114947322, 42.314332039703316], [-72.341859858676202, 42.314390004953573], [-72.341559142211381, 42.314436053584849], [-72.341296952671897, 42.314441934729622], [-72.34101177333261, 42.314424845015417], [-72.340726621530976, 42.314391548436653], [-72.34014086037466, 42.314357568111369], [-72.33985567800822, 42.31435848217204], [-72.339578205336679, 42.314364471086343], [-72.33920050446126, 42.314404953682221], [-72.338706912532416, 42.314405675958554], [-72.338244417679903, 42.314446234009374], [-72.338005613970125, 42.314486779857987], [-72.337704969294748, 42.314538489938727], [-72.337396639423275, 42.314642024234075], [-72.337088253910864, 42.314750599948553], [-72.336625953852149, 42.314934662705042], [-72.336363697741618, 42.315009138233961], [-72.336016961135741, 42.315015622581846], [-72.335569925590761, 42.315079015779808], [-72.335246256764478, 42.315142140914212], [-72.335014719018943, 42.315320018083916], [-72.334914667502346, 42.315542946473045], [-72.334968672996396, 42.315765385809044], [-72.335045943884268, 42.316022588872102], [-72.33499202996191, 42.316331343620753], [-72.334814903236804, 42.316514407015376], [-72.334699355577797, 42.316703145136906], [-72.334668808664546, 42.316971755315414], [-72.334707278721226, 42.317331607824201], [-72.334715180360462, 42.317618035349653], [-72.33458425201276, 42.317818138898353], [-72.334406821024416, 42.317932508629902], [-72.334067612739886, 42.318115667006168], [-72.333705388849381, 42.318430529451177], [-72.333551193724944, 42.318688241768641], [-72.333412691618577, 42.318847974263591], [-72.333266249144614, 42.318985165885927], [-72.333073589939175, 42.319122782357923], [-72.332826758755104, 42.319237112401254], [-72.332603474431366, 42.319306254867719], [-72.332302755256265, 42.3194097200291], [-72.331863414952181, 42.319507435341222], [-72.331377848554297, 42.319604943159803], [-72.33093077565043, 42.319668318253591], [-72.330491232901494, 42.319686170581448], [-72.330267642150559, 42.319732262269923], [-72.329874511010544, 42.319755358984956], [-72.329488969576175, 42.319755891358092], [-72.329119026392533, 42.319687614832098], [-72.328833816698918, 42.319419573377566], [-72.32884924031255, 42.319133607764066], [-72.328872377287283, 42.318899355410508], [-72.328872245817891, 42.318648434703825], [-72.32865632088226, 42.318557077813786], [-72.328332538812106, 42.318557791280277], [-72.328116635100514, 42.318746165393776], [-72.327978173338337, 42.318900759073237], [-72.327908609733385, 42.319101043146119], [-72.327700609074355, 42.319272433325189], [-72.327546648816195, 42.319540849568369], [-72.327477361878692, 42.319781015900318], [-72.327361825105868, 42.320084087951415], [-72.327269282771425, 42.320290119014267], [-72.32722306807409, 42.320467096082879], [-72.327230927834151, 42.320678616675856], [-72.327207774075845, 42.320958515327284], [-72.327284956805926, 42.321535790456743], [-72.327323716396293, 42.322078589391666], [-72.327285228217988, 42.322512644474529], [-72.327300721614137, 42.322918310539563], [-72.327370488603691, 42.323392101072166], [-72.327493918916815, 42.323729465664691], [-72.327624885145468, 42.324049219456882], [-72.327733158908487, 42.324294319277321], [-72.327871983731669, 42.324574671855011], [-72.328041631194893, 42.324836795660531], [-72.328218933919629, 42.325248048330444], [-72.328265383607246, 42.325459830795161], [-72.328265244105566, 42.325699498982118], [-72.328180530582031, 42.326059159971734], [-72.328088187124521, 42.326225215421218], [-72.327995674740521, 42.326396944066154], [-72.327841538663861, 42.326551109919492], [-72.327610426973081, 42.326757058432293], [-72.327340770542975, 42.326854704446596], [-72.32708651272317, 42.326877331803374], [-72.326762470313625, 42.326814929482232], [-72.326639287700814, 42.326626746738178], [-72.326538939488344, 42.326449653753819], [-72.326523059708009, 42.326255657401617], [-72.32650779012873, 42.326015469864991], [-72.326430520376888, 42.325449989688366], [-72.326214516900677, 42.325158936158246], [-72.325944964833226, 42.325199137330721], [-72.325728922763957, 42.32526758387862], [-72.325466753512742, 42.325399474233542], [-72.325297365710526, 42.325519443745101], [-72.325104595353736, 42.325651375137497], [-72.324873186830899, 42.325862902304728], [-72.324757932269563, 42.326040463562514], [-72.324534636377322, 42.326297488346697], [-72.324565500153128, 42.326543146238834], [-72.324673352937225, 42.326765833636756], [-72.324904595183398, 42.326988085650243], [-72.325074220852727, 42.327165222958939], [-72.325398305973266, 42.327444878378444], [-72.325783781611051, 42.327724002061835], [-72.326007396182462, 42.32794693689069], [-72.326084559453179, 42.328244030408115], [-72.326053765380763, 42.32847833666353], [-72.3258765785192, 42.328838029901064], [-72.32569196499189, 42.329112245147627], [-72.325568492824743, 42.329329840593715], [-72.325460561223267, 42.329604044860403], [-72.32539902570204, 42.329798056914406], [-72.325321970580248, 42.330020900764197], [-72.325221705720111, 42.33030630378267], [-72.325114087651286, 42.3304838103561], [-72.324998476357081, 42.330643907856533], [-72.324836470801714, 42.330838010340045], [-72.324559004394246, 42.330952541725843], [-72.324204381983463, 42.330947252071631], [-72.323911466910602, 42.330947101078614], [-72.323510560220782, 42.330919002636882], [-72.323063609129619, 42.330942461035661], [-72.322724270258888, 42.33103942443929], [-72.322593437061997, 42.331205210414808], [-72.322477550499286, 42.331354053197316], [-72.322439237037344, 42.331599125898258], [-72.322408490156036, 42.331782202029856], [-72.322346907137828, 42.3321135120542], [-72.322431961675363, 42.332393174935632], [-72.322562853020131, 42.332633075506997], [-72.32281728745852, 42.332752798571128], [-72.323010364787081, 42.332941024982638], [-72.323149029345501, 42.33310659237511], [-72.323180016981567, 42.333277972525956], [-72.323164644026775, 42.333523421299596], [-72.323087647782373, 42.333723754827737], [-72.322949042200591, 42.33399205375347], [-72.322825647462864, 42.334226391385464], [-72.322555894649099, 42.334506342283966], [-72.322270812469398, 42.334848794693244], [-72.321877870267457, 42.335248918056962], [-72.321199365453154, 42.33584347963528], [-72.32071399911699, 42.336191860115889], [-72.320336204493458, 42.336460692533834], [-72.320189887889939, 42.336734624883292], [-72.31995090853033, 42.33700309552426], [-72.319758229219772, 42.337220547464113], [-72.319272720260827, 42.337774916829304], [-72.317630713794301, 42.339626058246836], [-72.317330140273782, 42.33974073593059], [-72.316998803724346, 42.339803862825903], [-72.316620802384264, 42.339786831303563], [-72.316242832805358, 42.33964996525058], [-72.31594219390459, 42.339496253306599], [-72.315679952827381, 42.339421586665615], [-72.315464111573334, 42.33935955498459], [-72.315055440124823, 42.339410800330228], [-72.314885889940157, 42.339616825802374], [-72.314793325528626, 42.339845353705847], [-72.314708508736928, 42.340091292889106], [-72.314646982787508, 42.340336526766876], [-72.314623587728008, 42.340508294146233], [-72.314623709008444, 42.340696820966258], [-72.314623780798414, 42.340890930132744], [-72.314639055911982, 42.341153626220191], [-72.314677698592646, 42.341364928331394], [-72.314708528149396, 42.34155377771139], [-72.314824312950577, 42.341987902997921], [-72.314893701907607, 42.342164684796714], [-72.314878206158241, 42.342393836771485], [-72.314924767559063, 42.342645056963278], [-72.31489385211384, 42.342873687982326], [-72.314893633722562, 42.343073471152437], [-72.314878301628639, 42.34326822959293], [-72.314778330524462, 42.343496899790871], [-72.314253679828141, 42.343685722880252], [-72.313960809126655, 42.343703012058299], [-72.313721725281383, 42.343514466234268], [-72.313552077856883, 42.343194971869607], [-72.313382247215941, 42.343012147514557], [-72.313174212822105, 42.343086185057778], [-72.312757920528185, 42.34304690346459], [-72.312580330857188, 42.342892853076371], [-72.312171871506948, 42.342801835498811], [-72.311963525369308, 42.342898921307651], [-72.311732302295198, 42.343104837166294], [-72.311493062260695, 42.343168378124503], [-72.311230819294494, 42.343094331563861], [-72.310799109397706, 42.343111421814307], [-72.310590831012831, 42.343375064249805], [-72.310436568851841, 42.343592229049044], [-72.310151299346103, 42.34372928781908], [-72.309858500867009, 42.343638527374992], [-72.309603934717728, 42.343661747857446], [-72.309402984326823, 42.343758776882986], [-72.309441591827081, 42.343987547016553], [-72.309480394308707, 42.344307428338325], [-72.309295012668414, 42.344559112871053], [-72.30901766006123, 42.34476534777518], [-72.30880937814743, 42.344896819587412], [-72.308485481765558, 42.344823110416094], [-72.308354544868592, 42.344634423282137], [-72.308500929322577, 42.344502847363209], [-72.308855649740778, 42.344377098415585], [-72.308824665012423, 42.344108390232861], [-72.30859344637534, 42.344068871841728], [-72.30830045414794, 42.344200398277799], [-72.308022676190063, 42.34429742474137], [-72.307698927439887, 42.344234966357661], [-72.307413658850379, 42.344201587338759], [-72.307120468839656, 42.344213189276772], [-72.306804339080202, 42.344281761739033], [-72.306542031521218, 42.344431074766874], [-72.306410808303767, 42.344619352124802], [-72.306526591260905, 42.344790771525929], [-72.306912383087393, 42.344864592027371], [-72.307112758193099, 42.345035867307097], [-72.306989530758841, 42.345213465381477], [-72.306719391756715, 42.345310435014625], [-72.306464796473591, 42.345351024891691], [-72.306241293174281, 42.345574341496764], [-72.306372312022063, 42.345779326209694], [-72.306464675096777, 42.345950909888728], [-72.306341369872683, 42.346094115479858], [-72.306079169047976, 42.346128635624119], [-72.305724389281451, 42.346088897226252], [-72.304991726858319, 42.345901000168503], [-72.3047295293986, 42.345821266456042], [-72.304860709755204, 42.345638573410639], [-72.305099894969075, 42.345598095007603], [-72.305331360793488, 42.345523277898721], [-72.305300321161354, 42.345306337797098], [-72.305015216943502, 42.345209839133872], [-72.304652473595823, 42.345306912022501], [-72.304397971722651, 42.345421773162762], [-72.304097462377982, 42.345564595349309], [-72.303758217366564, 42.345753783963588], [-72.303480398603966, 42.34601114678707], [-72.303279690185917, 42.346262388234699], [-72.303071634696138, 42.346508638599971], [-72.302925134757999, 42.346680182489337], [-72.302624300671738, 42.346903401634151], [-72.302439135312468, 42.347012192319141], [-72.302192332116974, 42.347132036526418], [-72.301922569476702, 42.347326946998457], [-72.301737344013901, 42.34746949896666], [-72.301590664347373, 42.347732694959767], [-72.301521278892992, 42.347927377776578], [-72.301397791284955, 42.348229845848785], [-72.3011279201408, 42.34843591908794], [-72.300803875400135, 42.348504619973973], [-72.300441771095066, 42.348596633088164], [-72.300040569227676, 42.348745097069276], [-72.29980918657121, 42.348933523166586], [-72.299531647526095, 42.34901369113404], [-72.29930790851158, 42.349077188662157], [-72.298968361491617, 42.349225850469871], [-72.298744682132423, 42.349323018439954], [-72.298505796372154, 42.349311712991344], [-72.29822801394657, 42.349151584101755], [-72.297904361044644, 42.349145997651064], [-72.29670896893451, 42.349369192759966], [-72.296500608240549, 42.349449414216878], [-72.296284969547941, 42.349626470049706], [-72.296091880477363, 42.34982083554609], [-72.295945306649813, 42.350094737069746], [-72.29580647226264, 42.350289266678338], [-72.295659876617279, 42.350426499465122], [-72.295389914498699, 42.350569627252341], [-72.295073794696137, 42.350603864824883], [-72.294688512449724, 42.350678553703581], [-72.294472444217675, 42.350735146286453], [-72.294287175301235, 42.35089569264445], [-72.293978685193892, 42.350986774653897], [-72.293693420146624, 42.351003869360255], [-72.293477462338004, 42.351175880192763], [-72.29318432421303, 42.351233092150544], [-72.292868275181718, 42.351244274745753], [-72.292621422053358, 42.351324124244151], [-72.292428323312549, 42.351519023660479], [-72.29218923307738, 42.351753673550569], [-72.291981145145897, 42.35182767260396], [-72.291687922838065, 42.351810604995315], [-72.291333298382753, 42.35173651887586], [-72.291302610204738, 42.351553785297448], [-72.291294918283711, 42.351336681346893], [-72.291263916050653, 42.351119107792542], [-72.29100188609462, 42.351033669678586], [-72.290716499789937, 42.351050847858829], [-72.290477326587322, 42.35121121845949], [-72.290299763979206, 42.351474611518228], [-72.290312644763176, 42.351864450979825], [-72.290515494990188, 42.352012239434238], [-72.290290429625742, 42.35210714947371], [-72.289963111844187, 42.352071675189244], [-72.289634514614633, 42.351943385926219], [-72.289407820524048, 42.351907849271988], [-72.288980822655375, 42.351947872918117], [-72.288559316729291, 42.352077979181658], [-72.284237686446076, 42.352084485636254], [-72.283898892845372, 42.350250687227472], [-72.281334906752292, 42.336192725129173], [-72.278427733923635, 42.336526478611646], [-72.277073269954116, 42.329473704343933], [-72.280026296035643, 42.329174603810692], [-72.274657486169417, 42.301946307373477], [-72.261939641488155, 42.305283231998111], [-72.261539949632237, 42.303363688113095], [-72.249474445673243, 42.305308942467157], [-72.210996105211791, 42.311333526502423], [-72.211378221145395, 42.311022262215012], [-72.211555499017521, 42.310822464217431], [-72.211694481142402, 42.310679803285659], [-72.212087992112316, 42.310228376289842], [-72.212250197093624, 42.309799719333149], [-72.212327562732796, 42.309571368929596], [-72.212366824061306, 42.309136721375609], [-72.212451967630969, 42.308931371039215], [-72.21250588073984, 42.308742509835184], [-72.212667881004734, 42.308382457749296], [-72.212722169352006, 42.308205478309233], [-72.212853472257535, 42.307737037723008], [-72.212854023360606, 42.307559761317151], [-72.212815400659125, 42.307382817949069], [-72.21279259000741, 42.307188220240938], [-72.212754603858855, 42.306960044684146], [-72.212716243059575, 42.306633916606756], [-72.212763290323565, 42.306234062721629], [-72.212763532211795, 42.305953881582582], [-72.212786956643498, 42.305599730362289], [-72.212903045953283, 42.305245634455844], [-72.21297255656016, 42.304891287230753], [-72.213042321456825, 42.304462661913817], [-72.213058357752033, 42.304131154634632], [-72.213004531002426, 42.303799450420264], [-72.212935649441803, 42.303530952052306], [-72.212720248043354, 42.303250938139961], [-72.212427556959952, 42.303108071751446], [-72.212296925526985, 42.302816277400453], [-72.212227759396129, 42.302565246566331], [-72.212313053232634, 42.302233849927227], [-72.212421073934394, 42.301982170749056], [-72.212567772601659, 42.301611049091598], [-72.212760814549284, 42.30145679717009], [-72.212953491738517, 42.301302547176881], [-72.213161539153745, 42.301199339689326], [-72.213400564752291, 42.301068479684282], [-72.213623943742746, 42.300948340143904], [-72.213809265365839, 42.30077666812943], [-72.214656767063246, 42.300582962578083], [-72.215026719351272, 42.300479914924708], [-72.215281081547573, 42.300354537496609], [-72.215550699017712, 42.300194762240679], [-72.215759181742712, 42.300034196782789], [-72.215959484441129, 42.299783109552827], [-72.21607544521018, 42.299548843683944], [-72.21619886012185, 42.299137347670005], [-72.216214790794751, 42.298937466959394], [-72.216323102308564, 42.298520392869051], [-72.21641645119972, 42.297263321421802], [-72.216455190552125, 42.297085806419396], [-72.21656335929454, 42.296817285975379], [-72.216702297506984, 42.296503017159687], [-72.216748652761552, 42.296194907772659], [-72.216710405281816, 42.29588003354268], [-72.216618698476694, 42.295406225703118], [-72.216542224591947, 42.295046033487033], [-72.216611649425943, 42.294783336724713], [-72.216696422682276, 42.294537469996278], [-72.216835240101304, 42.294234455626125], [-72.216889555586448, 42.294040547317067], [-72.2165043943657, 42.294017651030373], [-72.213991647321251, 42.294224613343381], [-72.210764509608353, 42.294454489167634], [-72.203301892689694, 42.291154009647457], [-72.203951533504494, 42.288845205631567], [-72.207136099829526, 42.285206347653556], [-72.212013105485752, 42.282624972514974], [-72.212751382957464, 42.26976203389313], [-72.217823969199642, 42.270135046166708], [-72.21612233771387, 42.256190583010593], [-72.211128313255685, 42.255611649945727], [-72.211408856305454, 42.252371517193652], [-72.211224552379718, 42.252114354719808], [-72.211020940699939, 42.251173150693184], [-72.210530377908412, 42.247162966404254], [-72.214612855703734, 42.247539893559718], [-72.21478193954205, 42.249036811082988], [-72.218073311475337, 42.248585192775046], [-72.221212777449949, 42.245235456968729], [-72.247168884949403, 42.241999850742339], [-72.249614004140042, 42.239178284967224], [-72.25767834118696, 42.229903636099422], [-72.268255477720643, 42.229310492987693], [-72.2704724441938, 42.236897907686], [-72.270710837061316, 42.236824280180144], [-72.270857458222238, 42.236676450478562], [-72.271096459352975, 42.236493607095966], [-72.271258502739244, 42.236368721902359], [-72.271550785527197, 42.23624350127011], [-72.271904806717217, 42.236124077030048], [-72.272335272429885, 42.236073913519228], [-72.272573557530919, 42.236051512058857], [-72.272903612134073, 42.236063335257853], [-72.273210861974832, 42.236092777695859], [-72.273549133342485, 42.236013429467128], [-72.273818513240357, 42.235888357362882], [-72.277726680367593, 42.233124912460404], [-72.281313211915787, 42.235018906068831], [-72.335457039004567, 42.220233651218166], [-72.335841268934132, 42.220188716854693], [-72.33592025741207, 42.220024368349151], [-72.336075284732189, 42.219738459128962], [-72.336245305119263, 42.219487373878898], [-72.33643040325957, 42.219350972714956], [-72.336730715734589, 42.219225615745103], [-72.33716171024804, 42.219117761749615], [-72.337546189286954, 42.219101450837854], [-72.337822947817202, 42.219072960206617], [-72.338706667462077, 42.219108730615503], [-72.33931370646583, 42.219133013124122], [-72.340113034966905, 42.219088898886696], [-72.341074260723786, 42.218959139890281], [-72.341743236324021, 42.218840610554537], [-72.342135146675631, 42.21877299993853], [-72.342350815324778, 42.218705061278214], [-72.342620042768615, 42.218602335628127], [-72.342874315511153, 42.218477210490782], [-72.343089721584391, 42.21838055125194], [-72.343343704617183, 42.218261099377571], [-72.343544128113862, 42.218112689562361], [-72.343705992769983, 42.217970324915392], [-72.343921979696077, 42.217753733432502], [-72.344053043344729, 42.217599710209036], [-72.344253898848237, 42.217320295027989], [-72.344392925291302, 42.21715495844861], [-72.344523996140964, 42.216983467841253], [-72.344809053589756, 42.21677879102149], [-72.345047853866646, 42.216693210123097], [-72.345378890129609, 42.2164943155923], [-72.345625240740887, 42.216357448009951], [-72.345872023690646, 42.216135043576969], [-72.345980124609355, 42.215958138400374], [-72.346034482332271, 42.215792883757004], [-72.346074527444202, 42.215335661469616], [-72.34609912179971, 42.214964086208298], [-72.346031046077428, 42.214673055211726], [-72.345825225773183, 42.214152370266092], [-72.345483356473096, 42.213129122526887], [-72.345445267736423, 42.212952124451846], [-72.345438754013117, 42.21267252399862], [-72.345524848443532, 42.212289781356418], [-72.345625340216998, 42.212078539082803], [-72.345764295621109, 42.211872685378523], [-72.345872380363332, 42.211713247014487], [-72.346003547888358, 42.211559220503652], [-72.346189220791473, 42.211296749914837], [-72.346282016673072, 42.211108072498661], [-72.346367171203624, 42.210891360460479], [-72.346429551602199, 42.210674276155189], [-72.34650694761828, 42.21045708101709], [-72.346592270888664, 42.210280343056084], [-72.346754044764936, 42.21016039309], [-72.347054401268579, 42.210006827151489], [-72.347300262050396, 42.209944238078485], [-72.347530970322552, 42.209962161651276], [-72.347976297610032, 42.210008390314364], [-72.348375693341993, 42.210043162321391], [-72.348598640730202, 42.210015043222818], [-72.348921643012204, 42.210015534805592], [-72.349298200845539, 42.209981775881261], [-72.349552434038799, 42.209839168900942], [-72.34961456030679, 42.209622084616882], [-72.349607479130754, 42.209428021567746], [-72.349624022939366, 42.209153292252623], [-72.349709168373948, 42.208982135343881], [-72.349809600905175, 42.208822119508298], [-72.350017965376409, 42.208519589041934], [-72.35031885343993, 42.208280387135794], [-72.350673477866124, 42.207966597101525], [-72.350912695510431, 42.207743697006443], [-72.351159214169343, 42.207532536817588], [-72.351375162389289, 42.207344651923513], [-72.351675676803978, 42.207150556674286], [-72.351945022071604, 42.207025298813875], [-72.3523223723911, 42.2068086626631], [-72.352675682797681, 42.206848803927613], [-72.352944835929435, 42.20682654526226], [-72.353244368341421, 42.206884011189729], [-72.353558620995031, 42.207090374901185], [-72.353811892159612, 42.207210667890621], [-72.354018249799324, 42.207462310622439], [-72.35417083827889, 42.207776837678011], [-72.354315843961942, 42.208022814254768], [-72.354392121333575, 42.208183228959307], [-72.354529641959203, 42.20839486760223], [-72.354828371824979, 42.208652663257389], [-72.355043179928984, 42.208766937683478], [-72.355373081886526, 42.208893318718488], [-72.355588139838659, 42.208945195956261], [-72.355810812100302, 42.209013852555771], [-72.356071780483163, 42.209048549853492], [-72.35643297439178, 42.20904360327107], [-72.35669457095473, 42.208963409683989], [-72.35695654195429, 42.208821358582945], [-72.357149230427879, 42.208678654058147], [-72.357311237016575, 42.208541850914486], [-72.3574884359534, 42.208364327922688], [-72.357743138295632, 42.208141837908279], [-72.357828799985313, 42.207885227576199], [-72.358075281787464, 42.207690889209907], [-72.358245482092272, 42.207399252779652], [-72.358515449589561, 42.207159810193396], [-72.358740216883263, 42.206748468044125], [-72.358910966991147, 42.206336899586098], [-72.359027248867164, 42.20615992016387], [-72.35922774484817, 42.205959801119839], [-72.359389542052853, 42.205817324017161], [-72.359536355085311, 42.205686213342297], [-72.359713795346821, 42.205554332747298], [-72.359898622872947, 42.20544040353542], [-72.360199109397357, 42.205309310476643], [-72.360552938307649, 42.205218332334312], [-72.360829671221069, 42.205184203622544], [-72.361205995050284, 42.205305177596955], [-72.3613819537795, 42.205447912875172], [-72.36165795369827, 42.205591517168571], [-72.362103364851663, 42.205672083699866], [-72.362440959783868, 42.205740944191319], [-72.36274012784375, 42.205815854934059], [-72.362992594332937, 42.206045166467518], [-72.362976423129666, 42.20624507624072], [-72.362830063704337, 42.206382400365968], [-72.362644748224525, 42.206513714763005], [-72.362421940466632, 42.206541860262412], [-72.362175847316195, 42.206638787142133], [-72.361898613853569, 42.206752333846332], [-72.361752160447892, 42.206900821626625], [-72.361796833936154, 42.207158256777774], [-72.36205797210539, 42.207250291573118], [-72.36247249331376, 42.207284810761116], [-72.36298643261037, 42.207514497222235], [-72.363208999779161, 42.207566303713271], [-72.363493421476164, 42.207526978799002], [-72.363708895017083, 42.207475837452101], [-72.36395511016363, 42.207378906386424], [-72.364140017158249, 42.207253175150953], [-72.364317213281907, 42.207139296314054], [-72.364510188075371, 42.206939224634397], [-72.364665034769757, 42.206625185297362], [-72.364712046123486, 42.206413788407758], [-72.364728720910961, 42.206144637469905], [-72.364760964627578, 42.20575616251211], [-72.364456324267209, 42.203645421459264], [-72.364434050217, 42.203468309865762], [-72.364435029588563, 42.203273646236333], [-72.364444055646459, 42.203056323111639], [-72.364391291213252, 42.202827761000165], [-72.364123998928235, 42.202558498454188], [-72.363794800255661, 42.202340391315367], [-72.363442780722451, 42.202082479348292], [-72.36326725686844, 42.201882391436712], [-72.363107468890405, 42.201601693321521], [-72.363070019250657, 42.201430277800945], [-72.362971994087118, 42.201069793699979], [-72.36292735216081, 42.200823612901111], [-72.362851755207558, 42.200589549579369], [-72.362745219616457, 42.200377687507363], [-72.362646670022286, 42.200183142091298], [-72.362525085382885, 42.199879647007343], [-72.362449584800913, 42.199616861414398], [-72.362419909491663, 42.199393616890205], [-72.362413153501322, 42.199199551553257], [-72.362429572709701, 42.198982263156594], [-72.362423063533384, 42.198770729098847], [-72.362415854030161, 42.198587831530972], [-72.36247842366447, 42.198416293981353], [-72.362532862248585, 42.198216726507923], [-72.362641083145931, 42.198045385786934], [-72.362949129021345, 42.197885506927236], [-72.3632642116699, 42.19786909060435], [-72.363464414723509, 42.197783760839137], [-72.363611574891337, 42.197537846876763], [-72.363612162382012, 42.197251980206708], [-72.363467009368307, 42.196960458047649], [-72.363129184614365, 42.196880258087376], [-72.362660717502052, 42.196844976978852], [-72.362406860426489, 42.196884610677174], [-72.362083908086078, 42.19691855068568], [-72.361776199482335, 42.196987218934979], [-72.361468151443916, 42.197066603107203], [-72.361176039156689, 42.197089054511871], [-72.360860825811656, 42.197059908230813], [-72.360645575396603, 42.196991205875982], [-72.360284723383458, 42.196739563004535], [-72.360031430540744, 42.196561931964098], [-72.35977027130933, 42.196321964849517], [-72.359609181345135, 42.196121673120452], [-72.359509356196526, 42.195939019209824], [-72.359494210299758, 42.195750598712429], [-72.359448521954405, 42.195533145574949], [-72.359410490128553, 42.195219477302231], [-72.35927994642536, 42.194967816153607], [-72.359118677350011, 42.194745016231188], [-72.35894957263659, 42.194533619213765], [-72.358964957162272, 42.194310666737934], [-72.35907270408623, 42.194139873051213], [-72.359318869044372, 42.19406041861015], [-72.359680224268899, 42.194100477623486], [-72.359903287414028, 42.19417470536424], [-72.360225851864982, 42.194300587068057], [-72.360479595113432, 42.194387098290562], [-72.360756592805288, 42.194438410915758], [-72.361040774623703, 42.194439159101847], [-72.361255987023043, 42.194336253770146], [-72.361432564203596, 42.194125595512645], [-72.361470546183881, 42.193828733697337], [-72.361446974494442, 42.193474981620177], [-72.360960874390429, 42.192201209226639], [-72.360852400316617, 42.191755807938918], [-72.360698195994388, 42.191241512467478], [-72.360590234891433, 42.190824738299661], [-72.360489999229443, 42.190584645595315], [-72.360367026472488, 42.190390911536589], [-72.360152223741935, 42.190201737590314], [-72.359822499523005, 42.190001630195169], [-72.359416476190049, 42.189978202902701], [-72.358732877453349, 42.189975490110058], [-72.35849261615877, 42.189989083385967], [-72.358348639792098, 42.189978366336902], [-72.358156361391124, 42.189968010522634], [-72.358043934220404, 42.189944632143792], [-72.358043454393922, 42.189909161781848], [-72.359149970625296, 42.189779330538222], [-72.374401984822057, 42.187908371249335], [-72.395499294623335, 42.185816564155473], [-72.403972717850337, 42.231868577101537], [-72.446998959994488, 42.227280392411053], [-72.49950512642377, 42.221246085143108], [-72.524216221180836, 42.218764294226915], [-72.546216107966714, 42.216490995138273], [-72.59130026265403, 42.211737439391179], [-72.592200269095116, 42.211624791330848], [-72.592600145278965, 42.211579926645854], [-72.593069291787373, 42.211569785520744], [-72.593380612242996, 42.211544849806295], [-72.593627120337175, 42.211603275908544], [-72.593903761082927, 42.211604060034205], [-72.594526666768544, 42.211639716730879], [-72.594956969375346, 42.21168062980766], [-72.595387284269435, 42.211750263259788], [-72.595748385504763, 42.211802548571903], [-72.596133050785284, 42.211774653930618], [-72.59648579705447, 42.211890043315577], [-72.596700804166204, 42.211947593408432], [-72.5973380926837, 42.212086190863211], [-72.59803735376768, 42.212173410297979], [-72.598728675276107, 42.212312563393915], [-72.599051170080998, 42.212387177337362], [-72.599481432257122, 42.212474173349797], [-72.599880736789842, 42.212577851451854], [-72.600525689596253, 42.212745530148041], [-72.60082533811179, 42.21284340800802], [-72.601324237131394, 42.213004650198819], [-72.601631152422968, 42.213102366181261], [-72.601991945798275, 42.213205866533386], [-72.602352846478524, 42.213315487313785], [-72.602628830748642, 42.213459147100345], [-72.603058883927091, 42.213603035828953], [-72.603296647768119, 42.213700871975909], [-72.603511418024226, 42.213792806204673], [-72.603803166719814, 42.213867702609306], [-72.604102082548309, 42.214034188010167], [-72.604393249540365, 42.214200747229945], [-72.604638769667815, 42.214298596005619], [-72.605374923319729, 42.214700548914244], [-72.605735272992746, 42.214895790635978], [-72.606018840990586, 42.215056746621237], [-72.606532971420293, 42.215297773340254], [-72.606747662861636, 42.215447056568394], [-72.60703903376529, 42.215596770082676], [-72.607337937717176, 42.215803224163977], [-72.607613788326361, 42.216021154552195], [-72.608035005225602, 42.216302328106359], [-72.608203328745716, 42.216480238321203], [-72.608417597377226, 42.21664644970388], [-72.608716429055747, 42.216875950681526], [-72.608923213740127, 42.217036561053924], [-72.609191347852985, 42.217248980149463], [-72.60949010020606, 42.217466684926087], [-72.609673573464562, 42.217679291244394], [-72.60988775446765, 42.217902314769496], [-72.610078464978187, 42.218189131820232], [-72.610322815120981, 42.218578433023652], [-72.610429407073752, 42.218778906633446], [-72.610543427719094, 42.219002357979804], [-72.610588172607251, 42.219254031375179], [-72.610749157447017, 42.219420123916571], [-72.610816902152564, 42.21967778719354], [-72.610869677687305, 42.219889946070431], [-72.611006131612925, 42.220273537464003], [-72.611210612556974, 42.220902993762614], [-72.611247969166513, 42.22118904287808], [-72.611353448975365, 42.221532956903843], [-72.611398343245654, 42.221779046114236], [-72.611428504271288, 42.221944784040602], [-72.611466184059054, 42.2221109893568], [-72.611518427547722, 42.222403106765377], [-72.611639888722124, 42.222746325455148], [-72.611654180424154, 42.222946521504383], [-72.611760872133715, 42.223124393332739], [-72.611837033398089, 42.223302020650117], [-72.611958744231174, 42.223610932094545], [-72.612072960978338, 42.223782608130179], [-72.61226419948396, 42.224028899308252], [-72.61246279403764, 42.224287003870266], [-72.612569668243978, 42.224447405812967], [-72.612730294036396, 42.224654106199068], [-72.612952038509562, 42.224905772824869], [-72.613158579388823, 42.225112477489915], [-72.613365090615289, 42.225324314239963], [-72.613563693705117, 42.225582416610848], [-72.614115235205844, 42.226063808476511], [-72.614651516659933, 42.22648294964857], [-72.615126698946582, 42.226809762905702], [-72.615725309154655, 42.227114575507841], [-72.616446523112401, 42.227453667286909], [-72.617167843151194, 42.227798335909306], [-72.617965864009449, 42.228177727841747], [-72.618787558161912, 42.22851132428795], [-72.619639024803433, 42.22892502837589], [-72.620921440310852, 42.229407718712388], [-72.621612105540635, 42.229735822035721], [-72.622463380642699, 42.230211993440705], [-72.62286206681668, 42.230538983033682], [-72.623191056107331, 42.230911672399088], [-72.623343848160516, 42.231117804583796], [-72.623466027941163, 42.231312441261913], [-72.623656879745866, 42.231656138669372], [-72.623745576967849, 42.232429056733523], [-72.623850456856246, 42.233110067478862], [-72.623940564189084, 42.23357963350589], [-72.624007579696027, 42.234031417993208], [-72.624029137804527, 42.234386226543315], [-72.624065943274857, 42.234780952402481], [-72.624110744616573, 42.235073136953936], [-72.624032580926936, 42.235359232724889], [-72.624023368707299, 42.235673285238526], [-72.62398349158218, 42.235925241750081], [-72.621342615343494, 42.241820370192251], [-72.620071614799642, 42.24452103665039], [-72.619172169810639, 42.246336145934947], [-72.618681686849143, 42.247245805447072], [-72.61833019549357, 42.247853652988361], [-72.618009197302584, 42.248369994222841], [-72.616476428183887, 42.250233473362066], [-72.615435113252602, 42.251538425925148], [-72.615071070818985, 42.252014659490101], [-72.614504521089586, 42.252891273894335], [-72.614070111850239, 42.253619211635893], [-72.613621257173051, 42.254249866880002], [-72.612965544998218, 42.254903324553077], [-72.612579881607488, 42.255309980116543], [-72.612286971308407, 42.255705111334414], [-72.611555874170605, 42.256913020849858], [-72.611248239677167, 42.257250307631402], [-72.610717421551882, 42.257737144024965], [-72.609971842940794, 42.258446645747242], [-72.609679699147563, 42.258721202138048], [-72.608242736759038, 42.260151548133109], [-72.607781762447189, 42.260580252282388], [-72.607282144904275, 42.260941258971734], [-72.60100118149424, 42.264917193643818], [-72.600624355662703, 42.26506594595817], [-72.600278549585795, 42.265311819935633], [-72.600132431179972, 42.265546235947291], [-72.599917371880736, 42.26574070540908], [-72.599802452741514, 42.266089619388694], [-72.599656747228948, 42.266403893656999], [-72.59952651622352, 42.2667298143935], [-72.599373040199936, 42.267078466758186], [-72.599173433238107, 42.267381461480895], [-72.599074299595884, 42.267718338564087], [-72.599020966192569, 42.268095924131352], [-72.598952295996725, 42.268393073045573], [-72.598944918295885, 42.268701520468241], [-72.598816028343251, 42.269901956812724], [-72.598832004953636, 42.270221975509102], [-72.598840219502719, 42.270667580020671], [-72.5989180685701, 42.271164919692986], [-72.599346980953939, 42.274650826816277], [-72.599378541998732, 42.275016344712476], [-72.599363724232077, 42.275336117607068], [-72.599495089455559, 42.275696088139028], [-72.59965732769507, 42.276004621946974], [-72.599719194809609, 42.276216156506806], [-72.599789040054574, 42.276433286955189], [-72.599881832796967, 42.276673247042268], [-72.599959008245037, 42.276844658473365], [-72.600121393685754, 42.277084582084314], [-72.600375897082344, 42.277392771260089], [-72.60061512829752, 42.277735950280757], [-72.600777591284782, 42.277987036797875], [-72.600862957683887, 42.278329529222461], [-72.600886687534185, 42.278592659637205], [-72.600841177515022, 42.278980794618398], [-72.600780463723794, 42.279352238369341], [-72.600742828941705, 42.279712206266097], [-72.600797182088357, 42.279986297744429], [-72.600898291645549, 42.280271735861746], [-72.600968506819825, 42.280614283274176], [-72.601123583313012, 42.280990951396397], [-72.601208997854997, 42.281259162568269], [-72.601974393487126, 42.281995165849153], [-72.602245179737835, 42.282268890605991], [-72.602438736665533, 42.282445395718845], [-72.603731666075078, 42.283532598648399], [-72.604320377165322, 42.284020972185488], [-72.604722784730583, 42.284248407249386], [-72.605055866374087, 42.284401057035701], [-72.605264736034556, 42.284474498260998], [-72.605705728883308, 42.284564162426271], [-72.606030533444425, 42.284631444134178], [-72.606510005798839, 42.284709480098101], [-72.607769707039594, 42.28491630787331], [-72.609948737111921, 42.285224447181584], [-72.610559938149208, 42.285311367513557], [-72.611098598819595, 42.285334339827841], [-72.611529419338609, 42.285430832922117], [-72.612007011680333, 42.285573690815433], [-72.612477578115616, 42.285806561654525], [-72.612708883675168, 42.285920828987081], [-72.612978961006561, 42.286074696580528], [-72.613379814954016, 42.286411241435033], [-72.624521460062383, 42.279829579207167], [-72.634473784917418, 42.274031801217866], [-72.645999174713253, 42.250096702647205], [-72.656534735135338, 42.227628945639005], [-72.667757082141577, 42.225393176159457], [-72.670092169689411, 42.21643753835064], [-72.69045940322458, 42.213063688004283], [-72.688335670793876, 42.200687289636477], [-72.686431248156595, 42.190541006128939], [-72.686278785052949, 42.189477865387374], [-72.686209973363617, 42.189054850892958], [-72.68617936931993, 42.188849156874063], [-72.686194855452229, 42.188654331133804], [-72.686295182133421, 42.188088835254845], [-72.686449563864727, 42.187545920191198], [-72.686557659767374, 42.187014108412583], [-72.686596457987037, 42.186356958245256], [-72.686870604940992, 42.183389565943848], [-72.697896887213744, 42.185362130868491], [-72.724750778017935, 42.189998639517455], [-72.744660655879571, 42.193584541350127], [-72.749617427332467, 42.194461482198562], [-72.781070730765023, 42.199702604331236], [-72.782082207902988, 42.217286972704748], [-72.791948168547123, 42.21734288191724], [-72.793403986373164, 42.236886721876033], [-72.812569117031714, 42.235010145591424], [-72.813373097746933, 42.244988084213247], [-72.857509639721385, 42.240429490173881], [-72.864256620594745, 42.232201358061872], [-72.86712160233084, 42.226051716879361], [-72.86835539511965, 42.223684126881935], [-72.872087273289068, 42.216426568183671], [-72.874565401823588, 42.217780763523194], [-72.91227433462744, 42.239185148028568], [-72.899047414167569, 42.250108335206342], [-72.880626085893198, 42.265307517843397], [-72.885146471372508, 42.332544491152014], [-72.894701025899295, 42.331425009428983], [-72.895621531439375, 42.340704920781945], [-72.953272787533891, 42.343875329324703], [-73.000212628836792, 42.31274631493541], [-73.000803337328776, 42.31253708587942], [-73.001111841991076, 42.312383405216003], [-73.001312573284523, 42.31226372728942], [-73.001721645792031, 42.311966823638954], [-73.001845577469538, 42.31179583357121], [-73.001931287022344, 42.3115325088962], [-73.002109709280248, 42.311178379673379], [-73.002335369179207, 42.310550262949938], [-73.002443796038989, 42.310395772584933], [-73.00269833963867, 42.310259000656529], [-73.002968310784624, 42.310133371744001], [-73.003261478264619, 42.309967999973729], [-73.003493491016258, 42.309699968466077], [-73.003548495242867, 42.30943137141427], [-73.003541743222215, 42.309162411870012], [-73.003542650154245, 42.308945216750381], [-73.003558705871043, 42.308768252616197], [-73.003613399973844, 42.308568362195913], [-73.003668008468992, 42.308385310864949], [-73.003692050885292, 42.30815646754121], [-73.003777497331015, 42.307933663843102], [-73.003947425944688, 42.307779447459382], [-73.004263692902796, 42.307591259809733], [-73.004656879401011, 42.307500570885395], [-73.005026801706848, 42.307375338739007], [-73.005265832251524, 42.307250109405366], [-73.005682474173739, 42.30699307055577], [-73.005806449530851, 42.306753372472862], [-73.005876392960957, 42.306593169928803], [-73.005846559552978, 42.306358909130097], [-73.005754799580203, 42.306198574950123], [-73.005663113329462, 42.306015818823418], [-73.005518256076911, 42.305678345286815], [-73.005434466605436, 42.305409314438322], [-73.005612160386903, 42.305255623927422], [-73.005897381700635, 42.305129697764308], [-73.006105689523437, 42.305044307962042], [-73.006537407446601, 42.304850638353457], [-73.006884026981382, 42.304822501628152], [-73.007168646349839, 42.304834525941757], [-73.007438081114074, 42.304840535811479], [-73.007715265222856, 42.304840860696032], [-73.008038809821869, 42.304755575862039], [-73.008269877588575, 42.304704099673359], [-73.00856276647896, 42.30463047113966], [-73.008847728171645, 42.30459071207401], [-73.009109305570988, 42.304608076573778], [-73.009448104832913, 42.304603085804708], [-73.009694307682665, 42.304631906334876], [-73.009940455146747, 42.30468891052989], [-73.01021695025166, 42.304838349654403], [-73.010516702592525, 42.304981269401679], [-73.010777632770726, 42.305210329769984], [-73.011053799947604, 42.305467822851575], [-73.011191595929063, 42.305645466289086], [-73.011344821756467, 42.305834252023722], [-73.011482715745018, 42.306005770905834], [-73.011636024297886, 42.306177626861292], [-73.011966369920557, 42.306366872739773], [-73.012396533563731, 42.306595953499603], [-73.012642020212098, 42.306807654625175], [-73.012818236379928, 42.307059706146823], [-73.013001876959578, 42.307327957425414], [-73.013231994182703, 42.307591724482378], [-73.01354638016376, 42.307889227729312], [-73.013806979388562, 42.308169430175603], [-73.014074850311147, 42.308621698468549], [-73.014542161335967, 42.309256555970371], [-73.014825893967398, 42.309560132548349], [-73.015063612415673, 42.309811369877345], [-73.015247568142186, 42.310000825857053], [-73.015470131637073, 42.310206700449477], [-73.015769461881348, 42.310446948888277], [-73.016007431198361, 42.310647576830682], [-73.016406938860854, 42.310830765067891], [-73.016660918322586, 42.310853885701015], [-73.016968839186589, 42.310859995879412], [-73.017261798343384, 42.310763203747776], [-73.017454746642116, 42.310603710819692], [-73.017594114072821, 42.310420613597714], [-73.017741027371372, 42.310243629489449], [-73.01786477818321, 42.310072083602535], [-73.017973366175028, 42.309855086047342], [-73.018051191920719, 42.309655422884191], [-73.018167351225514, 42.309415274053528], [-73.018353106177486, 42.309158447915415], [-73.018538657042413, 42.308918462198562], [-73.018685540225277, 42.308775873607395], [-73.018917068548163, 42.308621991036375], [-73.019202280720847, 42.308496121952274], [-73.019410671807563, 42.308353799649296], [-73.019788012048934, 42.308331340889474], [-73.020057462889383, 42.308337321164956], [-73.020388224228824, 42.308360498189181], [-73.02059585930165, 42.308429244816864], [-73.020857115511291, 42.308583902854132], [-73.021048926893542, 42.308761450147919], [-73.021294518902678, 42.308950711049867], [-73.021494239965193, 42.309093846457714], [-73.021724641771002, 42.309236485166814], [-73.022039764519434, 42.309386015063623], [-73.022370312404561, 42.309505985676552], [-73.022731953336674, 42.309546755543288], [-73.02306301646486, 42.309546869910129], [-73.023309534568767, 42.309507044501679], [-73.023617693374106, 42.309427502573186], [-73.023841019288469, 42.309381770558026], [-73.024172584540239, 42.309296964330635], [-73.024519199960793, 42.309222582548593], [-73.024742738580485, 42.309165590538392], [-73.025035556732703, 42.309068779939764], [-73.02530559343505, 42.308897535130022], [-73.025599039837061, 42.308595326119651], [-73.025830637456068, 42.308389653600443], [-73.026170221092187, 42.30818992986746], [-73.026517054724209, 42.308024325212912], [-73.026894463372813, 42.308024983267089], [-73.027201993487353, 42.308110939432837], [-73.027417330542121, 42.308196949806835], [-73.027709489807592, 42.308294364368876], [-73.028055678308959, 42.308363506443783], [-73.028324818743954, 42.308426919089918], [-73.028663289945428, 42.308513000094528], [-73.029009509907866, 42.308593394315807], [-73.029409563637842, 42.308622376583614], [-73.029778635825807, 42.308759821915544], [-73.030009303463359, 42.308857509105898], [-73.030324511442075, 42.308954610188287], [-73.030701082391303, 42.309161196038957], [-73.031254666514087, 42.309333366440249], [-73.03153137334651, 42.309453488166923], [-73.031784961245265, 42.309590755541464], [-73.032023272274188, 42.309728316098578], [-73.032192141694978, 42.309848703450491], [-73.032391577688244, 42.310089160899686], [-73.032652654329127, 42.310295029591366], [-73.032828919328495, 42.310495275862877], [-73.033043578270224, 42.310752997315902], [-73.033196804204465, 42.310958592841018], [-73.033388534019039, 42.311176100332638], [-73.033534091645222, 42.311370542332526], [-73.03364136082584, 42.311536861406189], [-73.033825145787347, 42.311816874248841], [-73.033955626327085, 42.311959742066307], [-73.034163085407783, 42.312120220980908], [-73.034316580027848, 42.31225152571615], [-73.034477439350567, 42.312446392536167], [-73.034623354368577, 42.312595266493368], [-73.034868969169921, 42.312818174871204], [-73.035076343428642, 42.312949929488404], [-73.036036563983799, 42.31361413383032], [-73.037496284148105, 42.314513054465891], [-73.037796004919187, 42.314645189457408], [-73.03827284205552, 42.314851579767421], [-73.038503545092951, 42.314914312959516], [-73.038795479343207, 42.315080315894406], [-73.038925873131788, 42.315228852104362], [-73.039079326134356, 42.315417598620272], [-73.039148018541937, 42.315578216368237], [-73.03920130942646, 42.315744082794808], [-73.039230940483876, 42.316109441995209], [-73.039366556211448, 42.317041284822693], [-73.039594231437462, 42.318076524395792], [-73.039539676032405, 42.318287776537034], [-73.03946199765727, 42.318476197263919], [-73.039499632250696, 42.318716558948722], [-73.039629792786826, 42.318939923477252], [-73.039760060460765, 42.319122766939863], [-73.039913525236017, 42.319351401595846], [-73.040043688615697, 42.319534876444031], [-73.040189317122085, 42.319740564666382], [-73.040281108405139, 42.319917710215591], [-73.040426814057767, 42.320106558787529], [-73.040618792094946, 42.320272276281003], [-73.040973014743358, 42.320284365265778], [-73.041250235224027, 42.320273354263243], [-73.041588950754971, 42.320296364471979], [-73.041873917103587, 42.320279575331767], [-73.042204973240331, 42.320257124568435], [-73.04241308588665, 42.320188509957838], [-73.042652077665295, 42.320097509892733], [-73.042898961905834, 42.319932117601169], [-73.043215132946571, 42.3197720075894], [-73.043515796584913, 42.319692513458016], [-73.043831638005216, 42.31961848736799], [-73.044170719945768, 42.319527310014813], [-73.04451763085406, 42.319379119008076], [-73.044764072158387, 42.319384810979933], [-73.045079617510169, 42.319408122307287], [-73.045441185693448, 42.319482678876611], [-73.045733242506117, 42.319711693290394], [-73.045886446249696, 42.319963464691376], [-73.045978327821999, 42.32012376657044], [-73.046177543972064, 42.320461000323185], [-73.046376945231358, 42.320701434594369], [-73.046638030998139, 42.320884130976971], [-73.046968631749564, 42.321056436523918], [-73.047191687902725, 42.321182285927875], [-73.047406799898454, 42.32129086349444], [-73.047637423813043, 42.321428405840386], [-73.047891310373444, 42.321480183224104], [-73.048099154848501, 42.321554460817381], [-73.048414573067305, 42.321646467980784], [-73.048653164795425, 42.32162353364123], [-73.048945761590218, 42.321601041512622], [-73.049238077204478, 42.321715778618653], [-73.049491699576677, 42.321875608180193], [-73.049676145222463, 42.321990177715008], [-73.049922141330327, 42.322150649440282], [-73.050229528227533, 42.322310832839179], [-73.05045264155811, 42.322448470947769], [-73.050636889896836, 42.322614276353235], [-73.050797832494993, 42.322849009054167], [-73.051104765412191, 42.323203329949038], [-73.05164967962186, 42.323821236044175], [-73.051880153257486, 42.324016219795084], [-73.052195205894421, 42.324216273841806], [-73.052433631934036, 42.324359374128328], [-73.052672048962606, 42.32446249476272], [-73.052994906070154, 42.324634257402906], [-73.053271896554705, 42.324731813155751], [-73.053533291453718, 42.324846507226866], [-73.053802389487473, 42.325017913993889], [-73.054040754815091, 42.325138500968492], [-73.054294355976907, 42.325246995679656], [-73.054671391780033, 42.325396140660047], [-73.055071425050514, 42.325528045091517], [-73.055302327107682, 42.325562018609631], [-73.05606412983991, 42.325774564811738], [-73.056733350050067, 42.326061025155205], [-73.056964051223048, 42.326175496975885], [-73.057233024660292, 42.326341224812737], [-73.057633011232653, 42.326529938538251], [-73.058602043809955, 42.327011500883351], [-73.059094153384862, 42.327240110216074], [-73.059540167748636, 42.327469252897544], [-73.059793955345143, 42.32762392547275], [-73.060101623857136, 42.327744189879304], [-73.060347704920815, 42.327881497416563], [-73.060601288379061, 42.328047426457395], [-73.061186014483766, 42.328242083624048], [-73.061870633692038, 42.328545683817531], [-73.062301387094593, 42.328740806810174], [-73.062539699673337, 42.328877675074217], [-73.062847339807419, 42.329055290382691], [-73.06301630181504, 42.329243704880504], [-73.06298455989986, 42.329535697533885], [-73.064286650869221, 42.339771143759279], [-73.067995921964823, 42.375104663531843], [-73.068574841576805, 42.380716064227201], [-73.065908870809409, 42.38911562198102], [-73.011741186662235, 42.379667688424554], [-73.009496660958931, 42.387697345417486], [-72.999500730287082, 42.423253442395847], [-72.992657237231072, 42.449119214069675], [-72.988078919770729, 42.466979258023038], [-72.986515943777988, 42.466741655529361], [-72.979262835469882, 42.497847772477499], [-72.97863745207448, 42.500097120866066], [-72.968563240645864, 42.540027041500927], [-72.979005118408296, 42.541725325979804], [-72.975341993164477, 42.556052110933784], [-72.876846058882407, 42.541188321913964], [-72.876709896566055, 42.531715323703359], [-72.875473731836863, 42.525889636293194], [-72.874575040132299, 42.52558234690644], [-72.871283625109712, 42.524529313361271], [-72.874565055412248, 42.510252757085865], [-72.874565598090356, 42.510070967547961], [-72.874566378302063, 42.509766005650121], [-72.875126607016682, 42.507211838700528], [-72.874581791211995, 42.503512802777863], [-72.87459015645284, 42.50010365534424], [-72.871092895082754, 42.484159860333101], [-72.855792354313692, 42.481074828222333]]]}, "type": "Feature", "id": 5, "properties": {"COUNTY": "HAMPSHIRE", "AREA_ACRES": 348972.59999999998, "OBJECTID": 8.0, "FIPS_ID": 25015}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-71.249396566327292, 42.714007071598587], [-71.23843188616442, 42.671167016782569], [-71.238178828532426, 42.669419502609607], [-71.238688766819578, 42.66885298594508], [-71.239285318060908, 42.668194931215574], [-71.239763442419118, 42.667588368650001], [-71.240397149326043, 42.666729465243357], [-71.240651299622002, 42.666151652464109], [-71.240901949228657, 42.665208166391139], [-71.241186438611848, 42.664161141294002], [-71.241376462734976, 42.663749181120842], [-71.241636411367978, 42.663239434211675], [-71.241889695938596, 42.662896300428123], [-71.242143529930232, 42.662626804376195], [-71.242489984395348, 42.662346261546567], [-71.24296814133352, 42.662041795022098], [-71.243523504136292, 42.661766754661627], [-71.244171836054349, 42.661513882786103], [-71.244797200510703, 42.661329012142424], [-71.245453822311774, 42.661195428868595], [-71.246179940980369, 42.66106766583826], [-71.246820499449328, 42.661014518227915], [-71.247392081295772, 42.661007307033522], [-71.248203291846991, 42.661010787721494], [-71.248674756942293, 42.661089952131789], [-71.248975689836485, 42.661112571279205], [-71.249479109020456, 42.661100700640624], [-71.250112100200155, 42.660986754270539], [-71.250762525777702, 42.660781650845443], [-71.251715908026739, 42.660331978021752], [-71.25235937015924, 42.659909630114122], [-71.252879045985424, 42.659544537337993], [-71.253391413488899, 42.659082023924142], [-71.254353486316433, 42.658237875829812], [-71.254640606364489, 42.658015053711409], [-71.254966210357836, 42.657774938423422], [-71.255586138644574, 42.6574330912037], [-71.256187923313774, 42.65714512494047], [-71.249477272221156, 42.653930522990095], [-71.189423853648847, 42.625124055385662], [-71.172136628818194, 42.61677460025971], [-71.171495653514356, 42.616420520978082], [-71.171835518430143, 42.616340467058031], [-71.172206371278222, 42.616277964452053], [-71.172477500035228, 42.616032252277591], [-71.172586227676618, 42.615866649225033], [-71.17277944394759, 42.615649432561014], [-71.172741450216009, 42.615455236490362], [-71.172749676642297, 42.615232454216411], [-71.172927579312272, 42.615123760967371], [-71.173143784755922, 42.615055775991735], [-71.173600342722551, 42.614987299905351], [-71.174025634850338, 42.614907480956226], [-71.175455565984095, 42.614690953387331], [-71.17584216019884, 42.614622271799981], [-71.176097150681642, 42.614548088589764], [-71.176352348460256, 42.614457161218411], [-71.176654179650001, 42.614280212360917], [-71.176878466054148, 42.614108627378812], [-71.176940422022241, 42.613862949329231], [-71.176910402733441, 42.613680029678292], [-71.176887202733027, 42.613474533444062], [-71.17694935752678, 42.613308795879476], [-71.177189379189372, 42.613228986975692], [-71.177506141940555, 42.613228701732289], [-71.177745571508368, 42.613240622944453], [-71.177915921259384, 42.613080768128704], [-71.17762270641083, 42.61276658160201], [-71.177437327769326, 42.612600602557158], [-71.177221384302257, 42.612405910612296], [-71.177136547223171, 42.612217796440056], [-71.177222003787918, 42.612023316609282], [-71.177531340200858, 42.611948831990048], [-71.177562376002243, 42.611766623022227], [-71.177408626015023, 42.611588939230828], [-71.177370104391287, 42.611400324402226], [-71.177741220279074, 42.611303506170223], [-71.178143280077023, 42.611280411442934], [-71.178437084435998, 42.6111439455875], [-71.17848360093987, 42.610960609151526], [-71.178113027748395, 42.610760987001413], [-71.177827372047147, 42.610686461895085], [-71.177587780446231, 42.610589018925168], [-71.177348602353035, 42.610434772365302], [-71.177325555339564, 42.610223154911516], [-71.17738818984698, 42.610034282497537], [-71.177589443644081, 42.609811498556283], [-71.177682244214921, 42.609657548929661], [-71.177736729653915, 42.609417520716228], [-71.177613767796416, 42.60915440172888], [-71.177675655696532, 42.60892051571318], [-71.178046963967105, 42.608783096806498], [-71.178302175700111, 42.608732045099615], [-71.178472161384207, 42.608903561515298], [-71.178401764914369, 42.609229157286272], [-71.17870266767406, 42.609395456473152], [-71.17900445415458, 42.609412589659215], [-71.179213210631374, 42.609246628209057], [-71.179228933490577, 42.609006941700194], [-71.179383860008713, 42.608881340325645], [-71.179623292502185, 42.608961404825152], [-71.18008651713707, 42.609009950992508], [-71.180165071900987, 42.608635944631239], [-71.18054399228609, 42.608630241867459], [-71.18080633642262, 42.608710367302805], [-71.181223448559635, 42.608767783698077], [-71.181594735750394, 42.608705162126746], [-71.181664364217781, 42.608528189616777], [-71.181332542108365, 42.608402322964849], [-71.180522123038685, 42.607727704580803], [-71.164942769705235, 42.598043814641201], [-71.163924537337209, 42.601802732214061], [-71.163692215976099, 42.602111464293522], [-71.160710979615956, 42.605327269245265], [-71.15948605775661, 42.607686760583043], [-71.158626526910425, 42.613017524441268], [-71.156490112335277, 42.615010229864048], [-71.154418485679599, 42.615277447520512], [-71.14859442724952, 42.613164596545346], [-71.146575855855872, 42.609997020136298], [-71.146060514452657, 42.608533652730308], [-71.143209434529012, 42.604005192418327], [-71.141248395374802, 42.603180987688717], [-71.13535215311542, 42.599049635871708], [-71.124481006361435, 42.600046092535955], [-71.076199782379661, 42.604173609814936], [-71.058689294189747, 42.60913130595231], [-71.059282146422603, 42.606403076680664], [-71.03403953188095, 42.585533260869433], [-71.028317654762191, 42.57416698227243], [-71.035505900321752, 42.570330766046624], [-71.035590195531285, 42.570610180711483], [-71.035840508780268, 42.570888552706919], [-71.036200464495721, 42.571246676023556], [-71.0366604259372, 42.571604119670269], [-71.036963403286904, 42.571728038841925], [-71.037310602734635, 42.571651740479616], [-71.037563357409113, 42.571432824283391], [-71.037739162122975, 42.571243307326256], [-71.039565260842352, 42.57129561988895], [-71.04004579847637, 42.571372976531151], [-71.040110749775678, 42.571652310622838], [-71.040121812115359, 42.571972480976761], [-71.040148470093357, 42.572275248741995], [-71.040297555114279, 42.572508825462535], [-71.040438859731779, 42.57267368249569], [-71.04071941701585, 42.572884105742901], [-71.041140406754337, 42.573195823855023], [-71.041374094689246, 42.573303071392807], [-71.041737842406519, 42.573363572274431], [-71.041992829686521, 42.573322363180203], [-71.042332686682784, 42.573251151972315], [-71.042650113119549, 42.573249619636059], [-71.043077185175022, 42.573412814776795], [-71.043373268799598, 42.573600156734102], [-71.043629899170327, 42.573752592565306], [-71.043954401529547, 42.573716155228446], [-71.044177482317508, 42.573606756934034], [-71.044399487629974, 42.57337636144571], [-71.044473941187434, 42.57311900610032], [-71.044704258328068, 42.57295165975691], [-71.045066764949539, 42.572829846239074], [-71.045660826292533, 42.572689318169694], [-71.045961534797428, 42.572624063803566], [-71.046716632549447, 42.572345166400567], [-71.047625243206838, 42.571957126420585], [-71.04821675074966, 42.571593135094929], [-71.048716928264767, 42.571344734808413], [-71.048963303427769, 42.571228666529294], [-71.049388638526494, 42.571243291644628], [-71.049605809615642, 42.571293652768638], [-71.050002393792894, 42.571514048783342], [-71.050297638641752, 42.571632771315684], [-71.050582543501051, 42.571510638065433], [-71.050743609332343, 42.57138415102731], [-71.051022906334808, 42.571399281779456], [-71.051156359569703, 42.571558513594056], [-71.051366343792182, 42.571694906573789], [-71.051707676682611, 42.571790218303285], [-71.05189546001597, 42.571965864630023], [-71.052166271547435, 42.571992842844622], [-71.052388198183138, 42.571768643381382], [-71.05263622948786, 42.571796072281039], [-71.052530832853918, 42.572076359067381], [-71.05259502517147, 42.572264578445292], [-71.052967097999812, 42.572336869374645], [-71.053352690660859, 42.57225454989868], [-71.05363227686513, 42.572367081587096], [-71.05350259811226, 42.572533664781169], [-71.053178635246482, 42.572598758707279], [-71.053180465925593, 42.57278727639499], [-71.053477107873661, 42.573037161306516], [-71.053756249727783, 42.57307533098767], [-71.054059061547832, 42.573176698387179], [-71.054333587095073, 42.573540646190629], [-71.054631092338724, 42.57385912976855], [-71.054918602609433, 42.573954764297561], [-71.055249020999852, 42.573804077430566], [-71.055565066681879, 42.573687723482969], [-71.055737800060967, 42.573892653300938], [-71.055955274712119, 42.573971091075478], [-71.055957845336565, 42.574211375322591], [-71.055820376257969, 42.57439485558038], [-71.055877028501172, 42.574600418590187], [-71.056108421471066, 42.574553506043259], [-71.056463411273171, 42.574494104645829], [-71.056546227884851, 42.574270442938449], [-71.056823211123572, 42.574148894104091], [-71.056983904138988, 42.573988007833819], [-71.065024395270669, 42.562173657466261], [-71.071042574953182, 42.555901231065675], [-71.075228224460901, 42.531063664733132], [-71.067568218672776, 42.524783575361681], [-71.066278324521107, 42.524894593533851], [-71.065853218396768, 42.52487390846008], [-71.065481248273031, 42.524825244133439], [-71.065077294198474, 42.524684722182059], [-71.06472794684062, 42.524532611623712], [-71.064456468460463, 42.524437059964754], [-71.064117600617038, 42.524547771043714], [-71.06383179284542, 42.524623752013412], [-71.06343735980245, 42.524603084012831], [-71.063119836612699, 42.524531031533911], [-71.0626778362724, 42.524402150306841], [-71.062343509474402, 42.524261342617123], [-71.062073063628773, 42.524263196660577], [-71.061652204634484, 42.524665541268575], [-71.061288479829969, 42.524621936159647], [-71.060910451286105, 42.524692517589621], [-71.060633153859314, 42.524751688313096], [-71.060453853665777, 42.524615426842892], [-71.060204602008895, 42.52444000736719], [-71.060016944982749, 42.524298131754549], [-71.059760727279524, 42.524196955633506], [-71.059520869299106, 42.524158319029048], [-71.059288639028011, 42.524142847594071], [-71.059032465908501, 42.52403554828944], [-71.058815568310308, 42.523968279921888], [-71.058452177751875, 42.523982103299076], [-71.058220849708718, 42.524046485665551], [-71.057936421825517, 42.524150635278431], [-71.057519320903594, 42.524239060881925], [-71.041153385783403, 42.526228759636481], [-71.040943211283377, 42.526075420105279], [-71.040662977668063, 42.525882460026217], [-71.040389407926085, 42.525627048163443], [-71.040169610752699, 42.525308292104782], [-71.0400816226052, 42.525040115521868], [-71.039893787115517, 42.524795127163912], [-71.039591270999026, 42.524688139802564], [-71.039226483289823, 42.524542101855388], [-71.038922565014929, 42.52436083611061], [-71.038773875736211, 42.524155973687371], [-71.038701915026067, 42.523927291202853], [-71.038699602788341, 42.523727515409597], [-71.038736156952012, 42.523538608342548], [-71.039043594271106, 42.523354205178244], [-71.039367279971927, 42.523277806666613], [-71.039648359992697, 42.522835553597304], [-71.039883667260966, 42.522411122269204], [-71.04008184947503, 42.522187389280127], [-71.040359641039416, 42.522128359900272], [-71.040660475218061, 42.522063660013877], [-71.040944888526923, 42.521913999911384], [-71.041042750540257, 42.521661237713545], [-71.040978650299351, 42.521438709538153], [-71.040906588788928, 42.521256661103905], [-71.040865582259357, 42.520988131707568], [-71.041185497323767, 42.520574747477909], [-71.041345536371026, 42.520373366850805], [-71.041536490947252, 42.520137809185513], [-71.041595953811651, 42.519943410344688], [-71.041571158315961, 42.519771633017058], [-71.041228721732409, 42.519550878725788], [-71.040862639727976, 42.519318686017968], [-71.040699258501732, 42.519176875203883], [-71.040557795339225, 42.518983296748857], [-71.040584275454961, 42.518589000356179], [-71.040573143663309, 42.518262613189329], [-71.04041176198767, 42.517629540085174], [-71.040309451733634, 42.517424323927585], [-71.040137564589216, 42.517264923308602], [-71.039903729653986, 42.517106445572523], [-71.039422536973106, 42.516908718609102], [-71.038887708056166, 42.516740573611372], [-71.038600242875802, 42.51661113703166], [-71.038378858783616, 42.51614886934636], [-71.038345763843608, 42.515915300263629], [-71.038552045199452, 42.515713568263841], [-71.038719430344685, 42.515472249028008], [-71.038887047041271, 42.515249025628457], [-71.03921609062985, 42.514949835375681], [-71.039446254079152, 42.514776375235122], [-71.03941970076481, 42.51447972449818], [-71.039116997407646, 42.51435526965551], [-71.038876704079115, 42.514299753258719], [-71.038631104201386, 42.514420845575088], [-71.038325410281317, 42.514056728436209], [-71.038074558478428, 42.513698411547914], [-71.037675946709356, 42.513295118948442], [-71.036856776315716, 42.512579457310927], [-71.036606803051015, 42.512335383267938], [-71.036618069162643, 42.511894842383725], [-71.036722360450398, 42.511562166096709], [-71.036641921556082, 42.51123162820786], [-71.036645821399915, 42.510882793886154], [-71.036720507484688, 42.510670903196441], [-71.037002703853148, 42.510303561185026], [-71.037123958858359, 42.510079523685363], [-71.036859537397575, 42.509915244892838], [-71.036610013166424, 42.509694309083642], [-71.036546299209746, 42.509522373688178], [-71.036258400368212, 42.50934116448461], [-71.036055079724107, 42.509125454719772], [-71.03610745097447, 42.508936611167961], [-71.035996458843925, 42.508691384168344], [-71.035847645820141, 42.508509653065545], [-71.035605644811028, 42.508276231655103], [-71.035449294177297, 42.508093929489796], [-71.035553856712212, 42.507790513427587], [-71.035659657981043, 42.507550120367014], [-71.035680672890805, 42.50737294401786], [-71.035386201764211, 42.507259765369781], [-71.03508412838201, 42.507187697143017], [-71.034881573205595, 42.507051211030443], [-71.034910337613368, 42.506862902842762], [-71.035109183852938, 42.506627386868225], [-71.035290731885397, 42.506311857787907], [-71.035450172631656, 42.506007582583933], [-71.035517357516326, 42.505773155689496], [-71.035569603048103, 42.505601236587665], [-71.035875841859095, 42.505370653149413], [-71.035937449264381, 42.505182926992326], [-71.036055653848607, 42.504859939525453], [-71.036215072506877, 42.504607338214562], [-71.036413937169115, 42.504417373109128], [-71.036388919883265, 42.504228848143626], [-71.036625242631288, 42.503924790339909], [-71.036884922127371, 42.503654045462568], [-71.037168747792478, 42.503458298561817], [-71.037352707028234, 42.503325708538], [-71.037591371268022, 42.503215754148158], [-71.037824379693433, 42.503362980834545], [-71.038093666344324, 42.50324144480367], [-71.038238377184271, 42.503051799666466], [-71.038328545724326, 42.502817012938841], [-71.038590125629781, 42.502684101601965], [-71.038860593412764, 42.502716693007898], [-71.039155736875742, 42.502852372163851], [-71.039396187605874, 42.502930395448644], [-71.039674480034009, 42.502957974747105], [-71.0401370529692, 42.502858001654801], [-71.040384534548409, 42.502856197875992], [-71.040615717276225, 42.50280364398526], [-71.040854446602737, 42.50275057953521], [-71.041162453808013, 42.502640353794398], [-71.041525239246837, 42.502609748032604], [-71.04195031351648, 42.502613148402965], [-71.042258392148298, 42.50255981644279], [-71.042449694108583, 42.5023523458472], [-71.042532577528007, 42.502163620241774], [-71.04277965119141, 42.502150556464571], [-71.043018737300102, 42.50209802911116], [-71.042984588281698, 42.501823854615459], [-71.043400359137578, 42.501649411440354], [-71.043668105780299, 42.501401819907592], [-71.043843413445984, 42.501201035597589], [-71.043661277725121, 42.500108209081525], [-71.043481614587265, 42.499952743138003], [-71.043363922551634, 42.499690121132609], [-71.043230964685378, 42.499553384930763], [-71.042934828266709, 42.499354153734053], [-71.042707787745769, 42.499206420729337], [-71.041865771726279, 42.498152562877046], [-71.041557045833642, 42.497895931361811], [-71.040749332482264, 42.497299083824501], [-71.040559575001524, 42.497145283200808], [-71.040407137558319, 42.496928612784089], [-71.040324893512306, 42.496712222110354], [-71.040327854273116, 42.496489419240795], [-71.039893129504293, 42.496096611129097], [-71.040112132811089, 42.495758806787379], [-71.045183235894157, 42.488781642535713], [-71.050188819774803, 42.48652416327846], [-71.052664906780706, 42.48609825402054], [-71.054182080747083, 42.476981127327726], [-71.053360895583509, 42.475954435690639], [-71.025988024180066, 42.444669877860186], [-71.020359445931916, 42.438220859291668], [-71.022382618944278, 42.434717020949087], [-71.028015054707907, 42.424284694603628], [-71.032656543556428, 42.415708754308319], [-71.033153482151008, 42.414095307996128], [-71.033321586452999, 42.413525481876732], [-71.035946885152143, 42.408967170120313], [-71.040522558720255, 42.402007172314832], [-71.048207581033395, 42.396620686688017], [-71.049970724749528, 42.397506541829003], [-71.050178953504243, 42.39758613072226], [-71.050681134674662, 42.397647151144966], [-71.051127805008107, 42.397623056173664], [-71.051566707424556, 42.397529607410235], [-71.051928230370351, 42.397402725298235], [-71.052289630672917, 42.397207240009571], [-71.052565719513893, 42.396966317732826], [-71.052780142871001, 42.396737038890933], [-71.052902049478831, 42.396502358643566], [-71.05299282287406, 42.396238748263585], [-71.052998730203853, 42.395987322109036], [-71.052927871496493, 42.395719212792017], [-71.052772115806292, 42.395450773270426], [-71.052624296363433, 42.395210993383401], [-71.052407445048587, 42.395063313884258], [-71.052052291979052, 42.394893128759826], [-71.051495398586937, 42.394654635130706], [-71.051108871057096, 42.39449053672746], [-71.05069113813569, 42.394257083352784], [-71.050388832835935, 42.394017867541365], [-71.050066678049049, 42.393700968832256], [-71.050271999912738, 42.393384961565957], [-71.050333536858687, 42.393015005284546], [-71.050549857247333, 42.392398525633112], [-71.051043665103563, 42.39193968793591], [-71.051938796909525, 42.391644372662967], [-71.052616877494813, 42.391487750790581], [-71.054098353700994, 42.389867408035144], [-71.054715376261669, 42.389289114014765], [-71.055425197525992, 42.388258151994215], [-71.056012026802335, 42.387824950183528], [-71.059498166044662, 42.388284530592266], [-71.060300435863496, 42.388738281612525], [-71.061349439171082, 42.388692769896707], [-71.061720230097123, 42.388532761898162], [-71.064960054851824, 42.389059839587851], [-71.066626571276714, 42.389038579799916], [-71.069618670900098, 42.389678298530477], [-71.070267347470278, 42.389567647384752], [-71.070481574218931, 42.38967594113744], [-71.069924337880238, 42.390573603065327], [-71.069671692944041, 42.390917016894925], [-71.068907761545361, 42.391880251188915], [-71.068080469216881, 42.392763387584473], [-71.067123084486809, 42.393698335062595], [-71.066941103735601, 42.394058843844924], [-71.066951710210816, 42.39458500904712], [-71.067162242884564, 42.39493295016743], [-71.067471553009725, 42.395063573846286], [-71.067748996563296, 42.395005467778752], [-71.068476571948537, 42.39430543782958], [-71.069033145487836, 42.393976129576195], [-71.069589213054286, 42.394433933942146], [-71.070206158551684, 42.394549405416704], [-71.072057921001388, 42.392930666412084], [-71.072643945104588, 42.393181052311711], [-71.073353142453044, 42.393267500332421], [-71.073476920353784, 42.393589270086039], [-71.071934875924669, 42.395031288359384], [-71.071719183651709, 42.395674187680306], [-71.072058034434789, 42.395713170137697], [-71.072490187997246, 42.395264005092152], [-71.072860256693659, 42.395122504535948], [-71.073909542422413, 42.395031324784632], [-71.074248875772824, 42.39528691050365], [-71.074248818453469, 42.395584003420289], [-71.073755027587637, 42.395628810048414], [-71.073385564566152, 42.395788411386114], [-71.073478004196076, 42.396291201276853], [-71.073940459699315, 42.39608476920786], [-71.074064428512898, 42.396361434663596], [-71.074372248078575, 42.39669855883492], [-71.074280067385757, 42.398483026424351], [-71.073972177459453, 42.399056356652885], [-71.073818082018548, 42.399626294414261], [-71.073848818633095, 42.400130025590684], [-71.07397206736907, 42.400658856711807], [-71.072368084571309, 42.402236862187927], [-71.071658052286438, 42.402258979417873], [-71.071225852802215, 42.402509988813257], [-71.071318664460208, 42.402688140027585], [-71.07221384179023, 42.402807337076929], [-71.072182494433463, 42.402987906896357], [-71.071719980121131, 42.403284359623974], [-71.07209051264104, 42.403584000869685], [-71.07209032533116, 42.403809070315852], [-71.071750748521126, 42.404157746284646], [-71.07128787889755, 42.405597641732086], [-71.071349155382137, 42.406055842481699], [-71.071569129314199, 42.406435949524159], [-71.071782258503546, 42.406804687108867], [-71.07168407876415, 42.40729218344709], [-71.071628055250699, 42.407635791799599], [-71.071627806892266, 42.40781584682199], [-71.072275865161743, 42.408092842267635], [-71.07246078059157, 42.408341646356085], [-71.072553236256738, 42.408753867628327], [-71.072461062352573, 42.409647052558057], [-71.07230687071069, 42.410009922441333], [-71.071998370449052, 42.41030361690661], [-71.071628873487498, 42.410490760801231], [-71.071288220676408, 42.411081966167657], [-71.070887366478544, 42.41135955894223], [-71.070856678128877, 42.411567138888522], [-71.071319491588412, 42.411522679168982], [-71.071597915582927, 42.411545142407448], [-71.071628806679655, 42.412597953377066], [-71.071381766116787, 42.413052844817045], [-71.072307531427626, 42.413144065502387], [-71.07258541374641, 42.413373498327992], [-71.072709228041234, 42.413623245107267], [-71.07276618229227, 42.415047066286895], [-71.072802209973432, 42.415954230081134], [-71.072957192545843, 42.416824653549263], [-71.072987917706257, 42.418427261525707], [-71.073389590039966, 42.419977767450462], [-71.07375961699492, 42.419251084281015], [-71.073512995409942, 42.418886098769612], [-71.073420522865476, 42.418131233723578], [-71.073698006886005, 42.417396824994739], [-71.073697641002397, 42.41689266818733], [-71.073450239971166, 42.415906487724619], [-71.073468237225597, 42.415022031307373], [-71.073481476209167, 42.41435650496134], [-71.073758822397295, 42.413874172903562], [-71.073516804504791, 42.412740005970463], [-71.073480995690858, 42.412573321751474], [-71.073295878083087, 42.412298050672263], [-71.073449284016917, 42.411583527863435], [-71.073572979699662, 42.410194135543229], [-71.073758146877125, 42.409776731997745], [-71.073622945989484, 42.409306465532175], [-71.073418126836089, 42.409053628400422], [-71.073418192864708, 42.408431805649087], [-71.072769157102982, 42.40756125869089], [-71.072522959545552, 42.406674109102902], [-71.072522198263798, 42.405116081797189], [-71.072564425262982, 42.404152938661333], [-71.072699780196615, 42.403842844517342], [-71.073139514566947, 42.403627778794053], [-71.073910846388372, 42.402190818223147], [-71.074215013616538, 42.401974166028772], [-71.074569238444099, 42.40173744176446], [-71.074817554757118, 42.401642749609906], [-71.075361314610788, 42.401435441948941], [-71.075639021831549, 42.401160170089248], [-71.075788175455443, 42.400944652555665], [-71.075936709257959, 42.40073084307155], [-71.076081568503426, 42.400521431455282], [-71.076194661296725, 42.400357546695751], [-71.076226448434198, 42.400036983624425], [-71.076243947218103, 42.399782178464349], [-71.07627825359684, 42.399266893774801], [-71.07633485585832, 42.398415165899024], [-71.076403188938301, 42.398241573093173], [-71.07649781920027, 42.398004427115801], [-71.07663384214041, 42.397662280447975], [-71.076780243391525, 42.397293703484735], [-71.077551733827306, 42.398117504963757], [-71.077705677004488, 42.398619436694567], [-71.077706565362888, 42.399195619981874], [-71.078632364905815, 42.399853968030257], [-71.078725188454769, 42.400014647912627], [-71.079311251616687, 42.400382485905169], [-71.079836265394363, 42.40063423162006], [-71.080391330965114, 42.400677939800303], [-71.081533275458966, 42.400657340090277], [-71.082181850212649, 42.40090673362787], [-71.082521232203064, 42.401017619450585], [-71.082829631224271, 42.4006513332656], [-71.083045729909017, 42.400521575937312], [-71.083477789925965, 42.400540605955186], [-71.083817491119561, 42.400750609787487], [-71.084095175007278, 42.401322121414168], [-71.084681655843951, 42.401725404341803], [-71.084651715274958, 42.402122589981879], [-71.084373382717473, 42.402442895150827], [-71.084311540709862, 42.402758850190828], [-71.084435361449295, 42.402919097076939], [-71.08514511782019, 42.403031942022579], [-71.085576997208776, 42.403303581994798], [-71.085731728244184, 42.403696931185102], [-71.086101953055476, 42.403627321179606], [-71.085946999334965, 42.402711269117411], [-71.086070999126804, 42.402510862684565], [-71.086101341062076, 42.40175419629638], [-71.086502862928867, 42.401503561175844], [-71.087984018804576, 42.401251123166887], [-71.088878520546416, 42.401046177320872], [-71.089526961215341, 42.401115472804349], [-71.090051448640651, 42.40124950343791], [-71.091162948503865, 42.401824054894405], [-71.093354414971003, 42.403125971245849], [-71.093447958526411, 42.403691227134111], [-71.093262735527475, 42.403857124384736], [-71.092737671086923, 42.403902532227775], [-71.092490596355219, 42.404014732748976], [-71.092521582231896, 42.404239372147636], [-71.09326255664736, 42.404451308143003], [-71.093817968032653, 42.404882612835642], [-71.094311602571949, 42.405476827377051], [-71.094960802450203, 42.40566313093413], [-71.095855481919756, 42.405664565522819], [-71.096318180785886, 42.405818696589918], [-71.096534857690173, 42.40595836939346], [-71.096596681080314, 42.406416647944184], [-71.097523127790893, 42.407192420466863], [-71.099004845121272, 42.407669698328121], [-71.099962091122507, 42.408903619605496], [-71.10014779742194, 42.409179389851907], [-71.100364204032076, 42.410075917904855], [-71.100335178786082, 42.412130160212129], [-71.100767479290894, 42.412932276950229], [-71.10197182067418, 42.414207548761617], [-71.102404281472133, 42.414487588957186], [-71.102836755640922, 42.414534095779381], [-71.102651355634848, 42.414050637527176], [-71.101261435056585, 42.412860346452923], [-71.100983411038655, 42.412406363539233], [-71.101012518808531, 42.409893069955928], [-71.100734163291037, 42.409340054350068], [-71.100733967709317, 42.409159457921604], [-71.100548536952502, 42.408974257550831], [-71.100363288252112, 42.408491425573047], [-71.098511211002204, 42.406759776537264], [-71.097461049032333, 42.406391495575328], [-71.09709026470918, 42.405957524197028], [-71.096194578280802, 42.405181315866272], [-71.095484795912171, 42.40493286712573], [-71.094929526731221, 42.404610234724821], [-71.094806137722998, 42.404377978480078], [-71.094744125639977, 42.403856678473502], [-71.095052217631903, 42.403301840386838], [-71.094341549162337, 42.402684356669489], [-71.094217752317959, 42.401570364205334], [-71.091871606169448, 42.39960458890166], [-71.091315634371128, 42.398912190712856], [-71.09097554351986, 42.398666196140212], [-71.090204727838412, 42.398572345462668], [-71.089247619979062, 42.398940839215108], [-71.088260508437685, 42.39910269328211], [-71.086440410489203, 42.399649299358764], [-71.085514253625632, 42.399441153501009], [-71.084618885786796, 42.39879989611935], [-71.083939550618865, 42.399073648252546], [-71.083569875521448, 42.399008211135182], [-71.083415505467059, 42.398821924458147], [-71.083384542774994, 42.398525349821377], [-71.083075724012701, 42.397981181816583], [-71.082581726391069, 42.397521958102637], [-71.080173897830861, 42.396764254835468], [-71.078754430349463, 42.396519412519979], [-71.07832238146834, 42.396266291419586], [-71.077828628058114, 42.396014112678742], [-71.076502054768625, 42.395830892634315], [-71.076316068073027, 42.395690664299096], [-71.075977189058435, 42.394894917108367], [-71.075945896662986, 42.394526226234987], [-71.075914604632501, 42.394157535321291], [-71.074958651910649, 42.39247273047993], [-71.074834864920462, 42.391970905644982], [-71.074617857920813, 42.391533466377815], [-71.074182114664865, 42.390682257722766], [-71.079573649728076, 42.382880868949627], [-71.080180898485466, 42.382650092760962], [-71.080479738014745, 42.382523522489898], [-71.080725412371621, 42.382356695041317], [-71.080620454346644, 42.381648508677046], [-71.080624398975417, 42.381053705101742], [-71.075602906979043, 42.380231246175889], [-71.073476099207369, 42.375113177934409], [-71.072728228425859, 42.37332270328946], [-71.072465724275347, 42.372658396520968], [-71.067115260092336, 42.371815703774423], [-71.063984456867459, 42.368931960644296], [-71.06947800251578, 42.369046103317501], [-71.073721519801467, 42.365056706401383], [-71.074792888239472, 42.363773259436293], [-71.074940953973709, 42.363508221556572], [-71.075095478067482, 42.363203234511367], [-71.075973441602784, 42.35988611864618], [-71.076051273367113, 42.359593271329395], [-71.076167382788256, 42.359294353015699], [-71.076354497882221, 42.359068799667156], [-71.076657545793324, 42.358842052298456], [-71.076892961518411, 42.358690409571281], [-71.077213524062955, 42.358548712510874], [-71.077686575222643, 42.358348425585028], [-71.092106720336645, 42.353845550259102], [-71.092650869627889, 42.353712435593003], [-71.102553091791776, 42.352451839345278], [-71.103452541746549, 42.352365995923222], [-71.106270419620415, 42.352266563514554], [-71.107394243477003, 42.352246188110058], [-71.109731124327809, 42.352358846438733], [-71.110163304441585, 42.352404696622337], [-71.111818636472762, 42.35272035593254], [-71.112561063481465, 42.352864655221211], [-71.113428964850257, 42.353093818667787], [-71.114145278176565, 42.353421408514869], [-71.115056074671841, 42.353844265602376], [-71.115996118610042, 42.354529917259718], [-71.116569944872197, 42.355020238433369], [-71.116886743816721, 42.355381949775058], [-71.117006091959595, 42.355838163253608], [-71.117187229473615, 42.356333924844947], [-71.117165611319123, 42.356997815305043], [-71.11708645057395, 42.357542225947292], [-71.116894595217161, 42.358535234378003], [-71.116772246346088, 42.359194827592916], [-71.116712274667918, 42.359596426052754], [-71.116716076909157, 42.360070800164834], [-71.117041007451832, 42.3627631107653], [-71.117093268009171, 42.363695711490486], [-71.117025164055676, 42.365420073462879], [-71.117074338602819, 42.365900179774009], [-71.117045358867287, 42.366656323614222], [-71.117114649000243, 42.366982367789383], [-71.11730048247378, 42.367369569013441], [-71.117543108238721, 42.367881828157635], [-71.117718088232024, 42.36813728072768], [-71.118000361881315, 42.368357708163977], [-71.118357965680076, 42.36850852269378], [-71.118784408514344, 42.368619141448271], [-71.119031384553594, 42.368673976846672], [-71.121925670566526, 42.36876563252553], [-71.122403899469049, 42.368825721968264], [-71.123113046284075, 42.368906282517031], [-71.123570163515708, 42.369046153226797], [-71.123921004711903, 42.369254996644152], [-71.124265138251843, 42.369469308802628], [-71.124467090390993, 42.369583674313652], [-71.124664879100493, 42.369704147817721], [-71.125397392303611, 42.370679383577773], [-71.125781511461753, 42.37119667707924], [-71.12638860522317, 42.371951468473952], [-71.126734754128734, 42.372383648189512], [-71.126919685621672, 42.372565925512184], [-71.127158233806171, 42.37283903495041], [-71.127443366098788, 42.373016144396018], [-71.127775156407793, 42.373249581841719], [-71.128098935279667, 42.373421142890422], [-71.128407324810823, 42.373546468730872], [-71.12870767962788, 42.37365493249208], [-71.129108953430162, 42.373780556200252], [-71.129656525345709, 42.373866676980519], [-71.130164655969452, 42.373866691235186], [-71.130696817836252, 42.37382671776281], [-71.13108207658567, 42.373763853731077], [-71.131498019718052, 42.373644188766065], [-71.132014950985578, 42.373466867112882], [-71.132376931844064, 42.373272212741895], [-71.132638295603556, 42.373112707138333], [-71.132808478430604, 42.372889890038522], [-71.13303131264955, 42.372506810035503], [-71.133092803774232, 42.372329830498693], [-71.133031184839368, 42.371963848485201], [-71.132753933306446, 42.371535868816032], [-71.132568373493271, 42.371313086071886], [-71.132329591568976, 42.371056282215925], [-71.132213931581433, 42.370902323944968], [-71.132128903323846, 42.370742251554702], [-71.132005785499715, 42.370513905706332], [-71.131874392542272, 42.370268157735964], [-71.131797228750798, 42.369862782670779], [-71.131843160938075, 42.369668288138676], [-71.131904827330658, 42.369503013158862], [-71.132043106977733, 42.369336902903484], [-71.132489777069097, 42.368896651167816], [-71.132674299858792, 42.36875319500205], [-71.132974806425437, 42.368518999851759], [-71.133537070374047, 42.368157797699858], [-71.133868155712591, 42.367946204747625], [-71.134199375520055, 42.367773953721724], [-71.134723822140941, 42.367568014898254], [-71.13540119060751, 42.367327627236115], [-71.136018274142785, 42.367098298397742], [-71.136534829175986, 42.366869278826059], [-71.136889166735827, 42.366537832666388], [-71.137536047590501, 42.366000242075891], [-71.138176214793987, 42.365382231220025], [-71.138592166508403, 42.365079062469], [-71.138962810760546, 42.364758374487103], [-71.139255641887047, 42.364564111429829], [-71.139494602079935, 42.364449444075497], [-71.139733441686545, 42.364398426027648], [-71.140003386593577, 42.364363890041759], [-71.140296243935452, 42.364334916822905], [-71.140574165651046, 42.364306526386038], [-71.140874823039709, 42.364357611442479], [-71.141260539078843, 42.364437590116708], [-71.141553751599105, 42.364517279245987], [-71.142078100378797, 42.36470572136399], [-71.142325149508395, 42.364791386789662], [-71.142610797490889, 42.364899768782855], [-71.143058521337139, 42.364985605854429], [-71.143313041356492, 42.364973971504909], [-71.143663387100247, 42.364933464271303], [-71.143937748525559, 42.364847616484163], [-71.144376798641304, 42.364727436327904], [-71.144677815478033, 42.364607368325302], [-71.144916509243345, 42.364430299150506], [-71.145240517067805, 42.364149959852007], [-71.145394755044492, 42.363944000075136], [-71.145549213477537, 42.363698518238941], [-71.145641307999327, 42.36344672211991], [-71.145764344557307, 42.363240665688693], [-71.145941359258359, 42.362868672855811], [-71.14611078309845, 42.362594607210063], [-71.146203210435999, 42.362434550712983], [-71.146527003008273, 42.362102980801218], [-71.146812209219789, 42.361811264158931], [-71.147212698732105, 42.361548079419592], [-71.147528440076513, 42.361330728214512], [-71.147775301467675, 42.361187438785123], [-71.148091412721811, 42.361055614307801], [-71.148346290627984, 42.360998415497932], [-71.148638951413659, 42.360935749786698], [-71.149009225328399, 42.360952635392479], [-71.149402486312695, 42.360917823453271], [-71.149896105542254, 42.360888897487257], [-71.150566987548814, 42.36085438617171], [-71.151145827200907, 42.360802666423801], [-71.151708583021929, 42.360739641487818], [-71.152233025704902, 42.360601684218281], [-71.152741749433886, 42.360429916386941], [-71.153381672906008, 42.360195521798538], [-71.154106687790417, 42.35996083942787], [-71.154653819528619, 42.359800432224276], [-71.155024376344272, 42.35971997844868], [-71.15539449843051, 42.359696870377604], [-71.155733452870464, 42.359690593193648], [-71.15618098427349, 42.359718940539409], [-71.156543233993204, 42.359781872545604], [-71.156898170385944, 42.359850453389633], [-71.157206892375086, 42.359890266316434], [-71.157500229169983, 42.359946777907815], [-71.157877965208741, 42.359952403627773], [-71.158363618612029, 42.359935301419895], [-71.158880686991182, 42.359877777496045], [-71.159281586053496, 42.359819907150147], [-71.159774741595427, 42.359694156751644], [-71.160576631259403, 42.359424729969142], [-71.160985602769273, 42.35924137770958], [-71.161301285275144, 42.359023988584624], [-71.161663550773739, 42.358743715646931], [-71.162002686842229, 42.358543318952847], [-71.162527085740592, 42.358451409292542], [-71.163498671476376, 42.358473972464473], [-71.163907597893996, 42.358547731254014], [-71.164215983433593, 42.358650544388361], [-71.164563427909783, 42.358804606836053], [-71.165914323360553, 42.359684066532367], [-71.166161144271669, 42.3598153246149], [-71.166832041132636, 42.35991234021143], [-71.167535649551439, 42.359998733059683], [-71.17389830792952, 42.353407774371163], [-71.17485060436023, 42.350320237619592], [-71.166711941436844, 42.340083168393306], [-71.166810964698513, 42.339276526200081], [-71.168267594117495, 42.338709685085576], [-71.168645224853705, 42.338572309582226], [-71.16897628665123, 42.33845226437851], [-71.169191678692201, 42.338034879984974], [-71.169113783011895, 42.337359978880095], [-71.168881230099203, 42.336303179527093], [-71.168772896808775, 42.335811039128217], [-71.16870310298296, 42.335513742354188], [-71.168471396842477, 42.3350854366589], [-71.168286052995143, 42.334748463619789], [-71.167467160348906, 42.333262239649613], [-71.162719411351517, 42.333694052046589], [-71.162364671306435, 42.333705974914324], [-71.162040571287278, 42.333706192961017], [-71.161439399545372, 42.333557496641497], [-71.160822307558902, 42.333300805342972], [-71.160020544948651, 42.332998550167922], [-71.159742746181252, 42.332895905380319], [-71.159480429981897, 42.332667175030032], [-71.156721740011761, 42.330219811368465], [-71.167108051959701, 42.322755969980477], [-71.169334752733377, 42.322102933232138], [-71.169241830227918, 42.321823035011562], [-71.170536063543906, 42.321399113189131], [-71.170118689425621, 42.320593234459466], [-71.178942346374427, 42.314263863312277], [-71.169872415384631, 42.307707610729707], [-71.166000487018721, 42.304486328048085], [-71.164524227136837, 42.303843987686044], [-71.178415138485349, 42.294616773201568], [-71.191152835090364, 42.282973238419721], [-71.191140135768151, 42.283663013228605], [-71.191003106812488, 42.28468673443718], [-71.190972858675707, 42.285121047111694], [-71.190973581400684, 42.285469914712372], [-71.191043154455684, 42.28577287221021], [-71.191182431006666, 42.286178380971776], [-71.191622317250221, 42.286727034050344], [-71.192216133492451, 42.287189489216345], [-71.192748387546999, 42.287571829920076], [-71.193349617330284, 42.287908797406949], [-71.19384301539732, 42.288079459454643], [-71.194305058129842, 42.288165137851898], [-71.194589949147343, 42.288175978950228], [-71.194890650738031, 42.28810142307379], [-71.195213888030437, 42.287929513979961], [-71.195552239157621, 42.287614766760917], [-71.195675024145842, 42.287346083094313], [-71.195812774440441, 42.286940233727485], [-71.195896938987218, 42.286608426657004], [-71.19596622062754, 42.286345813039027], [-71.196104628288225, 42.286105349534751], [-71.196343156146426, 42.286048091142248], [-71.196728376527759, 42.286070445861561], [-71.196928805942164, 42.286195936208912], [-71.197398832505058, 42.286435754307192], [-71.197977266597206, 42.28680126703766], [-71.19835527785709, 42.286989072083728], [-71.198679050539809, 42.287109211277553], [-71.198971438746881, 42.287200007635128], [-71.199241204630496, 42.287280120279341], [-71.199595647354698, 42.287376659337511], [-71.200004502812689, 42.287582005343744], [-71.200335944923879, 42.287799482043759], [-71.201145760862175, 42.288369949529532], [-71.201392374292979, 42.288501674150922], [-71.201661923284178, 42.288552431030737], [-71.202170623829957, 42.288568966034866], [-71.202979330625936, 42.288580062805345], [-71.20338770127799, 42.288608126863089], [-71.20378806966923, 42.288636168834486], [-71.204096383402117, 42.28877308836978], [-71.204450990411246, 42.288915798052543], [-71.204852003959232, 42.28914415411036], [-71.205207031053419, 42.289457918985732], [-71.205446515953156, 42.289743297270398], [-71.205585573285134, 42.2900350799002], [-71.205601737359302, 42.290418377768951], [-71.20562594638325, 42.291001382073254], [-71.205796821537433, 42.291909949176691], [-71.206153567699459, 42.293373303726518], [-71.206471156106701, 42.294236149337529], [-71.206881032350935, 42.295047462364103], [-71.207066387062468, 42.295401301317412], [-71.207197729107421, 42.295687480103147], [-71.207298383491135, 42.29600166977422], [-71.207453444418036, 42.296430335453032], [-71.207646602096133, 42.296750431904243], [-71.207855345966408, 42.296978287553394], [-71.208271603011937, 42.297280944289469], [-71.20969860609145, 42.298228698657027], [-71.210493351227015, 42.298747833605134], [-71.210971629681879, 42.299124370825517], [-71.2113187975675, 42.299398663260682], [-71.211526903287677, 42.299638304322663], [-71.211673566499996, 42.299815400377391], [-71.211758770613656, 42.299986670214025], [-71.211859514651252, 42.300181026503523], [-71.211929075370705, 42.300352256967386], [-71.211906577232739, 42.300632462366217], [-71.211922201597162, 42.300930139022611], [-71.211792407078065, 42.301336026542849], [-71.211584725141236, 42.301667533898652], [-71.211377539897313, 42.302022630054601], [-71.211270125843413, 42.302280024514836], [-71.211324603347862, 42.302594184143032], [-71.211309510099397, 42.302765742360712], [-71.211403186125779, 42.303314076949064], [-71.211573063920483, 42.3036684092109], [-71.211797571760059, 42.304171426776691], [-71.21216833809838, 42.304650682417538], [-71.212515759212081, 42.305170841774611], [-71.212817159966065, 42.305650461807879], [-71.213033373017751, 42.305873284533341], [-71.213311618211918, 42.306084377740412], [-71.213789060773365, 42.306232495645396], [-71.214960449879214, 42.306259535178135], [-71.215931541114728, 42.306298581868234], [-71.216517250851638, 42.306349544458705], [-71.216910210794808, 42.306406151365522], [-71.217341925410722, 42.306502915327826], [-71.217727387835964, 42.306582098360366], [-71.21811258797446, 42.306638682084611], [-71.218490032471465, 42.306666616181175], [-71.218967811913984, 42.306660493282678], [-71.219676353676718, 42.306528350305207], [-71.220223009656195, 42.306333238524964], [-71.220469982530858, 42.306298458040608], [-71.220801142100115, 42.30631555845536], [-71.221101685402942, 42.306372016466064], [-71.22154884937494, 42.306514897130178], [-71.222219818286192, 42.30684512815904], [-71.222559359350186, 42.3069708191356], [-71.222867786575904, 42.307056010899608], [-71.223152841087128, 42.307049945813631], [-71.223815390296664, 42.307089172392381], [-71.224139215998974, 42.307231746424364], [-71.224555822484945, 42.307459529646358], [-71.22482596641791, 42.307619438723144], [-71.225096087176027, 42.307784928918075], [-71.225466036042477, 42.307921397483156], [-71.225697356948288, 42.307972636388797], [-71.226082769758179, 42.307983639022446], [-71.226444598405891, 42.308063276579126], [-71.226730352405568, 42.308177123300602], [-71.227046803968946, 42.308485595526783], [-71.227201361815517, 42.308759471516574], [-71.227271017372033, 42.309004966646988], [-71.227140972100798, 42.309291041067986], [-71.226917850993004, 42.309474530901589], [-71.226725520351465, 42.309577607355251], [-71.226479278734615, 42.309777876821251], [-71.226464216401652, 42.31006368388752], [-71.226550180398732, 42.310520786960808], [-71.226874916281943, 42.311160766647959], [-71.22703000659159, 42.311537547382187], [-71.227070483154847, 42.312446398513103], [-71.226970448932775, 42.312606502927451], [-71.226747873563156, 42.312801247280987], [-71.22652456626939, 42.313024708774172], [-71.22642486101887, 42.31330464235208], [-71.226402603088943, 42.31373952042069], [-71.226325875950536, 42.313950906333474], [-71.226558362336846, 42.314299242475684], [-71.227198469526527, 42.314807177822544], [-71.227569416878652, 42.31520139517724], [-71.227685733121916, 42.315571330568858], [-71.227712635248068, 42.315972563981795], [-71.227928787017447, 42.316286467335615], [-71.22803767831509, 42.316663226913903], [-71.228208542662301, 42.317354604654852], [-71.228302145637088, 42.317846024821897], [-71.228349291870799, 42.318251807417518], [-71.228457732986058, 42.318508646608485], [-71.228651232893839, 42.318874261613587], [-71.228867810360086, 42.319148821270971], [-71.229053099174891, 42.319279800392252], [-71.229322700144806, 42.31935416945317], [-71.22977837249735, 42.319575812921137], [-71.230318957162964, 42.320141474823942], [-71.230782207661335, 42.320466035241978], [-71.230967721702086, 42.320660031858054], [-71.231191108072579, 42.320734828485854], [-71.231422748577671, 42.32080856361663], [-71.231846432626639, 42.320853397019015], [-71.23269418457221, 42.320823861579882], [-71.233580683148318, 42.320725267409074], [-71.233973839949641, 42.320673240988484], [-71.234351418921051, 42.320661780316037], [-71.234721261069041, 42.320672717776553], [-71.235599641957975, 42.32083175239444], [-71.23658690835056, 42.321180090823816], [-71.237627708741059, 42.321522871110908], [-71.238105436493242, 42.321614529822014], [-71.238421178300968, 42.321654681531975], [-71.239006965947453, 42.321666636609244], [-71.239353173391564, 42.321644374805068], [-71.239683741056652, 42.321501617733603], [-71.240052724615467, 42.321250371618959], [-71.240275823665314, 42.321073068682352], [-71.240645155806547, 42.320942820433416], [-71.241091018575986, 42.320846504296881], [-71.242214212782613, 42.320742074478197], [-71.242598680417188, 42.320766613768576], [-71.242951680226042, 42.320802875200428], [-71.24345140016618, 42.320886638330094], [-71.243766124488999, 42.320998256118884], [-71.244019631795908, 42.321098393065157], [-71.244311300940851, 42.321181778927304], [-71.244579720985229, 42.321224509307541], [-71.244840975383056, 42.321239224136093], [-71.245277949962698, 42.321179963985948], [-71.245569645036085, 42.321136675917458], [-71.245915180459974, 42.321099177969842], [-71.246199112424222, 42.321055420998263], [-71.246567550882901, 42.32102409363349], [-71.24681282273967, 42.321061275986629], [-71.247050625281403, 42.321115816972004], [-71.247379738030546, 42.321362950127096], [-71.247800277557374, 42.32186578519282], [-71.248274697099916, 42.322488565208261], [-71.248551442324612, 42.323002966188668], [-71.248659298776531, 42.323215850454254], [-71.248813328162129, 42.323410919761812], [-71.249090460261129, 42.323554400977144], [-71.249493816574699, 42.323623972842313], [-71.24985146200234, 42.323871160919957], [-71.250078202447185, 42.324149663462535], [-71.250180354380376, 42.32430347486126], [-71.250282492804672, 42.324491587149495], [-71.250484802673299, 42.324690090096325], [-71.250865016728127, 42.324939124509434], [-71.251074857321612, 42.325074622485154], [-71.251253693382949, 42.325227428557547], [-71.251410001186883, 42.325432582215299], [-71.251512618807737, 42.325654545251126], [-71.251662046087219, 42.325882191114538], [-71.251880474817924, 42.32614932835407], [-71.252044215931903, 42.326285355196219], [-71.252439732967431, 42.326534327262529], [-71.252694619523453, 42.326601227199177], [-71.252934505902573, 42.3266569307495], [-71.253165747534183, 42.32668947781719], [-71.253535910788429, 42.326721242024448], [-71.253872023736136, 42.326461418683188], [-71.254062689285689, 42.326289061392067], [-71.254237486189524, 42.326047527681553], [-71.254389063244957, 42.325817737865513], [-71.254508368782837, 42.32546237866395], [-71.254645281714673, 42.325290445739469], [-71.254889592092098, 42.325111449599262], [-71.255195876590378, 42.32493771636441], [-71.255472313893179, 42.324826849013235], [-71.255879414907554, 42.324715808433147], [-71.256263377180318, 42.324627134542645], [-71.256717594099214, 42.324567327304635], [-71.256986791464897, 42.324508207600665], [-71.257371667845533, 42.324465176590763], [-71.257796185756547, 42.324525130851782], [-71.258074750577805, 42.324649507212726], [-71.258245825794376, 42.324773656867457], [-71.258355256226125, 42.324933148063572], [-71.258504321149303, 42.325166366046723], [-71.258553193649121, 42.325394421595369], [-71.258593745922127, 42.325577355400981], [-71.258642552803209, 42.325822786547874], [-71.258776631489894, 42.326073438257076], [-71.25894944929901, 42.326346678251767], [-71.259182930219495, 42.326556484709265], [-71.259569847106988, 42.326713764786653], [-71.259886200772272, 42.32676277153972], [-71.260256831643773, 42.326800186888853], [-71.260911611048741, 42.326772831479424], [-71.261504611992521, 42.326751556168361], [-71.261989715807374, 42.326708087402366], [-71.262296915354526, 42.326642912000864], [-71.262504180801983, 42.326567356087239], [-71.262886646176099, 42.326295808440406], [-71.263161995748519, 42.326116858595675], [-71.26345458108284, 42.326097834784278], [-71.263756504549406, 42.326209821383507], [-71.26408926175661, 42.326350049495993], [-71.264407130698373, 42.326513923707004], [-71.264997006851104, 42.326875786665333], [-71.265384520253662, 42.327072931111736], [-71.265686724450859, 42.327242351557572], [-71.266104607682749, 42.32736474151379], [-71.266706533443752, 42.327457704078178], [-71.268325898387403, 42.327554969304224], [-71.26885070444915, 42.327637051743558], [-71.269322344309259, 42.327759538059489], [-71.269639451695056, 42.327871539599293], [-71.26996858246882, 42.328114196088599], [-71.327299278727182, 42.313781303108925], [-71.329749522394692, 42.313073190455555], [-71.323782222714627, 42.297720990230047], [-71.308449504276211, 42.27067184631845], [-71.303357548102426, 42.250108236561154], [-71.302886733931942, 42.248248847379145], [-71.332272719320514, 42.249005698244126], [-71.332573689234763, 42.249018471678426], [-71.332705086896453, 42.248727235893803], [-71.332751524634915, 42.248441458069479], [-71.332782603407679, 42.248189959302223], [-71.332736948054659, 42.247995787936148], [-71.332664102192297, 42.247636101611555], [-71.332515787506622, 42.247497509081484], [-71.332354657670621, 42.247348094030471], [-71.332193405752591, 42.247199308780246], [-71.332040017222496, 42.247055666518783], [-71.331864151562371, 42.246934948806555], [-71.331487415553482, 42.246710491552328], [-71.331149000612157, 42.246566486308531], [-71.330957113333668, 42.246456997389309], [-71.330772891771588, 42.246335815531324], [-71.330588534223878, 42.246175109950919], [-71.330473593069158, 42.246020268525399], [-71.330281697588205, 42.245779154405881], [-71.330043532330279, 42.245577314627837], [-71.32985888936787, 42.245434163300217], [-71.329612682621402, 42.245249776539438], [-71.329521082479545, 42.244842794565216], [-71.329553603150728, 42.244419701160261], [-71.329640249503939, 42.243829592072942], [-71.329702649885135, 42.243424008738423], [-71.329741784796099, 42.243108961191147], [-71.32975044508018, 42.242816916145486], [-71.329805098132695, 42.242588500591211], [-71.329897840418951, 42.242433966201034], [-71.330083440205783, 42.242216998237701], [-71.330415008494683, 42.24201212968778], [-71.330632123078374, 42.241744070227739], [-71.33080349227383, 42.241046588894648], [-71.330959650553368, 42.240463243135579], [-71.331277473472738, 42.237953037765926], [-71.331264150933791, 42.237587225236091], [-71.331250375462048, 42.237164062731907], [-71.331221181636309, 42.236889427477514], [-71.331153963217972, 42.236471858217456], [-71.331017127411059, 42.236174016727148], [-71.33049039743851, 42.235343250992557], [-71.330130901839325, 42.234816042220451], [-71.32989471960498, 42.234432523413012], [-71.329742146558033, 42.234134026738261], [-71.329674131510259, 42.233882381095277], [-71.32968359025233, 42.233608432835531], [-71.329753895200227, 42.233368246175765], [-71.329839978827238, 42.233116829064095], [-71.329987298384324, 42.232934195752563], [-71.330180697708272, 42.232734704730007], [-71.330451871633116, 42.232489772936056], [-71.330776453038098, 42.232250591162277], [-71.33103141900088, 42.23203993565108], [-71.331309886669786, 42.231783218568218], [-71.331518540993059, 42.231629843226074], [-71.331720139331267, 42.231487260800179], [-71.332816729302266, 42.23084460607496], [-71.333404197084022, 42.230503345116361], [-71.333705059332516, 42.230292750232671], [-71.333983463176352, 42.230099587965043], [-71.334215259259111, 42.229940119096668], [-71.334548484205257, 42.229534923030876], [-71.334989729771806, 42.229141675314537], [-71.335469172205308, 42.228731554931016], [-71.335732843317231, 42.228469133878818], [-71.336220643208051, 42.227961789436364], [-71.336599412324006, 42.227642721367623], [-71.336800138838385, 42.227500038677121], [-71.336985860413918, 42.227397938040731], [-71.337363773866599, 42.227267930100808], [-71.337849677390494, 42.227114395543168], [-71.338421984665331, 42.226756251418109], [-71.33871563201474, 42.226511331551094], [-71.338971421212477, 42.226243219989101], [-71.339288495430438, 42.225929728313446], [-71.339574775031082, 42.225673542322852], [-71.339822225081235, 42.225491036130954], [-71.340046299899541, 42.22535459241324], [-71.340285244827413, 42.225229422758055], [-71.340579247871858, 42.225030053978358], [-71.340726266509506, 42.224899173775732], [-71.34095864838747, 42.224636697156441], [-71.341044445698799, 42.224477011961838], [-71.341129887787702, 42.224265558690796], [-71.341177731734405, 42.223928010664977], [-71.341248566783236, 42.223647933848859], [-71.341310977265209, 42.223442660653234], [-71.341451174725762, 42.223082732515543], [-71.34153780363097, 42.222831306995388], [-71.341584423907435, 42.222642847519545], [-71.34160121974638, 42.222368277704078], [-71.341563259993364, 42.222144859641254], [-71.341657204052538, 42.221922163819919], [-71.342205048747019, 42.221729352865388], [-71.342536576942123, 42.221627983757863], [-71.342775945653614, 42.221519645144106], [-71.342899901972189, 42.22135442886745], [-71.343047910080926, 42.221063112830088], [-71.343164424732592, 42.220771843355323], [-71.343219383626334, 42.220588436258964], [-71.34326633124212, 42.220411860508541], [-71.343207017347751, 42.22000547171541], [-71.342999754474235, 42.219770568765647], [-71.342615389413922, 42.2196434593098], [-71.342415925352, 42.219488423070651], [-71.342170529860766, 42.219247254114407], [-71.341940381771423, 42.219012317731313], [-71.341749778538443, 42.218656974536827], [-71.341619756765908, 42.218439011235326], [-71.341413052833929, 42.218227153933448], [-71.341174703263619, 42.218077733664536], [-71.340967425471035, 42.217950863604258], [-71.340721245654436, 42.217881828829206], [-71.340374847136431, 42.21783471164423], [-71.340105564841465, 42.217753849400324], [-71.339790890899593, 42.217518790811162], [-71.339461167945231, 42.217248778426686], [-71.33924657968484, 42.217093715429414], [-71.339062139889094, 42.216990461901382], [-71.338723939196228, 42.216817848573079], [-71.338570788019581, 42.216651616805116], [-71.338486581779733, 42.216473687884857], [-71.338372538540014, 42.216170214440936], [-71.338328583308297, 42.215644103689641], [-71.338286729807635, 42.215243948666625], [-71.338465239731477, 42.215105192837861], [-71.338681647210095, 42.214922645103869], [-71.338898226604314, 42.214671944016622], [-71.339130606890961, 42.214398306855706], [-71.339377481419575, 42.214187080732323], [-71.339501592008077, 42.213958756657412], [-71.339594901435689, 42.213793500861833], [-71.339926307306513, 42.213725810490217], [-71.340179871780151, 42.213789185402064], [-71.340787620367834, 42.213974052929984], [-71.341541108856347, 42.214239605969162], [-71.342210525072787, 42.214418879151616], [-71.34320318846963, 42.214599130779241], [-71.344064609554906, 42.214813587215538], [-71.344534080184118, 42.214895251817055], [-71.345041944377741, 42.21497696635118], [-71.345287688092242, 42.21502348366193], [-71.345749355941877, 42.215127640413741], [-71.346057011912862, 42.21521466302719], [-71.346341979737701, 42.215318580185439], [-71.346603280954312, 42.215393205051967], [-71.346934196625611, 42.21542857883658], [-71.347211614252075, 42.21534954158512], [-71.34873232140599, 42.214479429993915], [-71.349851536811016, 42.213853476700933], [-71.350044815435012, 42.213653951519902], [-71.350788204649305, 42.212616237318585], [-71.351384378726223, 42.211805564906719], [-71.351586364495972, 42.211503143539986], [-71.35165596950165, 42.211309127467459], [-71.35171961093728, 42.210920367325002], [-71.351869519667957, 42.209943188035631], [-71.351909329440616, 42.209646138189484], [-71.351841187061581, 42.209422594061891], [-71.351726192160868, 42.209245265117438], [-71.351635174760801, 42.208913114271247], [-71.351690311967289, 42.208638591940129], [-71.351760399169748, 42.208444036149025], [-71.35173822073196, 42.208244229364567], [-71.351754485740543, 42.208020884203691], [-71.351986704793859, 42.207730204775352], [-71.35212598952846, 42.207564997965562], [-71.352234382034553, 42.207404792919192], [-71.352273691616801, 42.207165091741352], [-71.352151314195993, 42.206987123427119], [-71.352052039272053, 42.206820979020272], [-71.351775883279984, 42.206534234823792], [-71.351522831292527, 42.20625931387422], [-71.351246964228267, 42.206006330271222], [-71.35096288958816, 42.205794389347922], [-71.350694224198207, 42.205621811202178], [-71.350463933487376, 42.205454954382354], [-71.350264547797636, 42.205277513805363], [-71.349818485708369, 42.205104701917229], [-71.349073254522935, 42.204758816099933], [-71.348773665104559, 42.204609330632742], [-71.348512191669982, 42.204522826221677], [-71.34809673068419, 42.204469968993045], [-71.347811437332425, 42.204520818394585], [-71.347333889775911, 42.204605172948149], [-71.347102536851736, 42.204632954446964], [-71.346856196818635, 42.204648921443436], [-71.346617840404576, 42.204568205537946], [-71.346533951515852, 42.204356521034128], [-71.346565922751154, 42.204105017808423], [-71.346737087603472, 42.203728197691056], [-71.346853495186323, 42.20351119889181], [-71.346808223328864, 42.20325401051312], [-71.346532173419149, 42.202989671272498], [-71.346402046327981, 42.202771802651135], [-71.346295573191142, 42.202536949745323], [-71.34616567934782, 42.202273435529165], [-71.3460046729178, 42.202107292955397], [-71.345736007952254, 42.201946497084947], [-71.345459147758561, 42.201820081311233], [-71.345228665987733, 42.20169318726056], [-71.344967535215616, 42.201572463453871], [-71.344636916140374, 42.201445973019645], [-71.344437443266372, 42.201365215141358], [-71.344199229668135, 42.201232636580158], [-71.344169489104331, 42.2009180284617], [-71.344201034736002, 42.200645728031375], [-71.344751734045104, 42.200494592603178], [-71.361955114315464, 42.195778711437562], [-71.374503898818645, 42.193971082014748], [-71.378470578685864, 42.193462177249124], [-71.384849484233982, 42.192033936276708], [-71.404435391642778, 42.18841188718546], [-71.402319164810478, 42.178793622483944], [-71.423589813959467, 42.178144708751262], [-71.42376093202698, 42.179281464578636], [-71.430205784642808, 42.179386222809292], [-71.444036733119475, 42.174860202113592], [-71.464038914784325, 42.158148343002807], [-71.47271638844272, 42.156822144044618], [-71.478102880133605, 42.156757486565674], [-71.477985131857437, 42.165869170168165], [-71.493126139851981, 42.166217697864639], [-71.497475411881169, 42.166666951801524], [-71.499482802822669, 42.176559148727719], [-71.502679326334032, 42.191377041245545], [-71.506942174191124, 42.188887509399969], [-71.53947102055993, 42.189655193262567], [-71.555686566250444, 42.182566453898247], [-71.555543913931487, 42.183056021531847], [-71.555453276408826, 42.183228294654413], [-71.555355822836717, 42.183497264030379], [-71.555312100899954, 42.183749371843049], [-71.555229213971401, 42.183927222949038], [-71.555093515967826, 42.184208094792091], [-71.555034705260653, 42.184511437329817], [-71.555021491335282, 42.184768572076813], [-71.555266852170462, 42.184750447911576], [-71.555520050879196, 42.184697477448076], [-71.555521562681662, 42.184903377504902], [-71.555446684110876, 42.18510373259258], [-71.555563948535536, 42.185337216115002], [-71.555741666449123, 42.185485140748142], [-71.555942904689886, 42.185672397153006], [-71.556243338769406, 42.185779116938818], [-71.556618518868859, 42.185674316386603], [-71.556804213941902, 42.185804769426106], [-71.556729757887041, 42.186068146767091], [-71.556547167508185, 42.186297815814498], [-71.556396065392832, 42.186544304865699], [-71.556367865941766, 42.186824584995982], [-71.556332176045686, 42.18712224475216], [-71.556302795107399, 42.187299530053146], [-71.556204148679171, 42.18745488176252], [-71.556121253913801, 42.187626521270836], [-71.556331560434131, 42.187928561896761], [-71.556064019019018, 42.188067160517754], [-71.556096529227219, 42.188278717014462], [-71.555982763001197, 42.188450911678167], [-71.555807628489703, 42.188635020178403], [-71.555779289088534, 42.188897834137521], [-71.555797054433427, 42.189138117936437], [-71.555729314436292, 42.189338469588691], [-71.555779054876979, 42.189732870694876], [-71.555804734601423, 42.190024288144919], [-71.555868650760232, 42.190292729084973], [-71.55595559952971, 42.190594830286237], [-71.556004812868551, 42.190938003909487], [-71.556031058946076, 42.191320622227039], [-71.556056089942928, 42.191560902337137], [-71.556173590750333, 42.191771877158068], [-71.556344805829127, 42.19207339650454], [-71.556570776593674, 42.192409730521781], [-71.572106428956573, 42.192729088634522], [-71.571981512628042, 42.19339314430043], [-71.571846366201711, 42.193685829230773], [-71.571664350496391, 42.193966749240708], [-71.571452117080128, 42.194293783553654], [-71.571294804676825, 42.194689476841397], [-71.582989346269159, 42.195596505161376], [-71.602245430818968, 42.217969959433198], [-71.599301623259535, 42.225982999886583], [-71.590391007656635, 42.250135813077982], [-71.586879228465605, 42.25949604541173], [-71.56151510723808, 42.267817671444448], [-71.560837672026551, 42.267841620074591], [-71.560454202524184, 42.267764757252422], [-71.560177991507032, 42.267671541637519], [-71.559894414421422, 42.267606958609818], [-71.559609463841852, 42.267627903708302], [-71.559208991352435, 42.267642155499125], [-71.558924620324277, 42.267635009366444], [-71.558654483801163, 42.267684663932528], [-71.558564738261637, 42.267501319454759], [-71.558265864458789, 42.267408020763618], [-71.557803579639042, 42.267427430686638], [-71.557425963681567, 42.267516479346199], [-71.557192773027481, 42.267674687680881], [-71.556983203037532, 42.267816588463148], [-71.556774222340508, 42.267940482650182], [-71.556489597305898, 42.267921536737553], [-71.556144663735736, 42.267828255181662], [-71.555885009311964, 42.267672000437635], [-71.555531172913874, 42.267652455602096], [-71.555325597046973, 42.267514179344587], [-71.555064571047808, 42.267449573524623], [-71.554771431177031, 42.267532991081723], [-71.55456925988517, 42.267686137629894], [-71.554206648486939, 42.267752120991176], [-71.553953162280081, 42.26771622852737], [-71.553562739959844, 42.267576865427586], [-71.55317936386048, 42.267454423297949], [-71.552735121213516, 42.267308330069788], [-71.552382997609655, 42.267157691657388], [-71.55207022676403, 42.266955267305462], [-71.551848315600523, 42.26683940958538], [-71.551641813235577, 42.266741010249049], [-71.55133507912997, 42.266653368912408], [-71.551005320476889, 42.266571408849231], [-71.550661200409806, 42.266415089718997], [-71.550324031560947, 42.26630945317811], [-71.550032578265558, 42.266227473524893], [-71.549802920855456, 42.266117827256586], [-71.549524801648062, 42.266035210321391], [-71.549052646604551, 42.265821052459366], [-71.548706818146997, 42.265795901338088], [-71.548269420243429, 42.26569588305896], [-71.548132587909038, 42.265552523307427], [-71.547642540435547, 42.26538896377825], [-71.546945057301485, 42.265155714180572], [-71.546690223595874, 42.265245307524445], [-71.546336746668871, 42.265197644967401], [-71.546091492242212, 42.265127340498985], [-71.54603312944387, 42.264875280945027], [-71.545805319478987, 42.264622208708296], [-71.545445009855911, 42.264505853513768], [-71.54488381749718, 42.264496531090913], [-71.544565793631463, 42.264699761812921], [-71.54437253189684, 42.264789866286769], [-71.54415122496448, 42.264640322335872], [-71.544345986181469, 42.264441551879656], [-71.544141108466391, 42.264211515053759], [-71.543872811689226, 42.264112585263973], [-71.543504305615016, 42.264053125838551], [-71.543234993444642, 42.264062770693847], [-71.542912538639882, 42.263991948286041], [-71.5426748268126, 42.26395044317546], [-71.542398219677182, 42.263925787709098], [-71.542037007020824, 42.263894410130703], [-71.541776604413059, 42.263812938300731], [-71.541593148741114, 42.263702718575715], [-71.541433185683871, 42.263559269139606], [-71.541273344203404, 42.26341527925527], [-71.541137017031971, 42.263271280723352], [-71.540847315835464, 42.263046850169168], [-71.540549297290141, 42.26289057426856], [-71.540096300711298, 42.262796202190515], [-71.539695537309171, 42.262884660529998], [-71.539493811324149, 42.263009061051079], [-71.539269069780559, 42.263155976502262], [-71.539028113963269, 42.263348542056448], [-71.538777883497005, 42.263638432282434], [-71.538574907046325, 42.263905708641133], [-71.53844076698141, 42.264161797703458], [-71.53812886706217, 42.264502303749822], [-71.537789868574947, 42.264528884521638], [-71.537536300361268, 42.264521135108673], [-71.537120806364058, 42.264524061090491], [-71.536666300163503, 42.2645551773074], [-71.536119220863498, 42.264637457710776], [-71.535948265658092, 42.264756260437316], [-71.535762394985227, 42.264863813849011], [-71.535445966707812, 42.264941517495203], [-71.535114498308531, 42.265001849150508], [-71.534821206808559, 42.26505703658961], [-71.534497957901905, 42.265078021025772], [-71.534212189523345, 42.265150130216931], [-71.533896003364774, 42.265233501380763], [-71.533624818258033, 42.26538041941474], [-71.533377015904591, 42.265509864264608], [-71.533082322780658, 42.265673713406173], [-71.532741828597793, 42.265871335956916], [-71.532524203949535, 42.266001400552149], [-71.532092152215924, 42.266118560592389], [-71.53177617516026, 42.266150698999233], [-71.531368436002666, 42.266170527582979], [-71.530844825927304, 42.266201549570582], [-71.530274452354007, 42.266283358202976], [-71.529434861036663, 42.266345966987721], [-71.528773179133808, 42.266352886902787], [-71.528042169976359, 42.26637107365503], [-71.526066872334141, 42.266225871126338], [-71.525736789516131, 42.266155002252674], [-71.525345965343419, 42.266043722560454], [-71.525031394613521, 42.265961594531824], [-71.524701321443445, 42.265908188420006], [-71.52432436443091, 42.265916731667822], [-71.523968896243289, 42.266017549538724], [-71.523706152183991, 42.266118347203061], [-71.523466554369705, 42.266208426014281], [-71.523126125493349, 42.266342909265148], [-71.522856096003451, 42.266415617210875], [-71.522371262507292, 42.266434798958315], [-71.522132356811028, 42.266433134688398], [-71.521671032183605, 42.2664361036191], [-71.52127808150189, 42.266473269293812], [-71.520908160334642, 42.266510519462507], [-71.520607459308891, 42.266576925626524], [-71.520383599863919, 42.266627022032601], [-71.520189708136968, 42.266768312711008], [-71.520049269769288, 42.266910133915658], [-71.519846665435324, 42.267103192537789], [-71.519637013539651, 42.267244484992077], [-71.519428312955242, 42.267328878205291], [-71.51916603070454, 42.26739536410691], [-71.518903737802631, 42.267427998289584], [-71.518603033652184, 42.267505742919063], [-71.518186566285564, 42.267565949384185], [-71.517717473902479, 42.267562691619936], [-71.517271767849266, 42.267531249167902], [-71.516741090747516, 42.267493065186173], [-71.516372118860204, 42.267484655601635], [-71.516025214935894, 42.267504961188649], [-71.515655287571136, 42.26755398830268], [-71.515301113018751, 42.267585546389547], [-71.514854931198187, 42.267588395888566], [-71.514532608844135, 42.267506330158788], [-71.514088812368101, 42.267331908144691], [-71.513178902377476, 42.26687961752539], [-71.512759456627577, 42.266602283736205], [-71.51253141887149, 42.266395240785812], [-71.512233808175807, 42.266187664629662], [-71.512013175156099, 42.266019962780085], [-71.511783944715717, 42.265892864734553], [-71.511545764495651, 42.26586867096546], [-71.511268323768178, 42.265906420927898], [-71.51090519964238, 42.266012780944159], [-71.510612485522344, 42.26605053077035], [-71.510229681900654, 42.265899135720495], [-71.51026370190597, 42.265653802013787], [-71.510365733508394, 42.265494620502842], [-71.510415144314166, 42.265238031639896], [-71.510286397312228, 42.265088323995172], [-71.510088076990186, 42.264932500320739], [-71.50985861726997, 42.26483969971143], [-71.509799922074038, 42.264639388826069], [-71.509656383621035, 42.264444126727909], [-71.509318691560253, 42.264367089266464], [-71.508951056067247, 42.264244948304018], [-71.508666939722474, 42.264174116779074], [-71.508352524893994, 42.264120662477261], [-71.507976294984758, 42.264061089609243], [-71.507314033853632, 42.264113440917249], [-71.507105325847945, 42.264186017904372], [-71.506679910642632, 42.264348636951119], [-71.506294002083237, 42.26446632747453], [-71.506061297765982, 42.26459013072833], [-71.505913480429257, 42.26647454815901], [-71.505806198726148, 42.272970724476906], [-71.49944930107425, 42.285132756520831], [-71.49708575685419, 42.289908770541459], [-71.486048319647836, 42.311176675252888], [-71.485127790224311, 42.323120032270594], [-71.48684043704742, 42.330162179061631], [-71.499374909804558, 42.328861389578314], [-71.499632370761475, 42.328907035110227], [-71.507730907816651, 42.328075633081248], [-71.516563866474442, 42.330497094565267], [-71.551092781409892, 42.326474455090647], [-71.569093815334142, 42.320387575707997], [-71.585341012186973, 42.310976490078218], [-71.592308853313696, 42.317731724537332], [-71.597412740356376, 42.321094044262367], [-71.602025605338127, 42.327033550000429], [-71.605391292651206, 42.33029800812416], [-71.603724865768342, 42.331824426011316], [-71.604198548097202, 42.336755303286118], [-71.60466799962137, 42.336809434029426], [-71.606370810893949, 42.337373339228044], [-71.610124364443706, 42.338463649427261], [-71.610914535805549, 42.338713258626321], [-71.611603548847597, 42.339054699488599], [-71.616310774013655, 42.341610258427416], [-71.617530411954789, 42.34208274694025], [-71.619125386956924, 42.343438911686874], [-71.620675614051365, 42.345349764569029], [-71.624510477386977, 42.348723983469988], [-71.625800835197268, 42.349748899616365], [-71.624698006572146, 42.350456281437445], [-71.624506752348822, 42.350593241382789], [-71.609901127415839, 42.357563872841212], [-71.603205404512025, 42.367375278792821], [-71.60776870391615, 42.370213718943923], [-71.599299960842743, 42.375101379162722], [-71.580254938467348, 42.386921089969441], [-71.604164019662278, 42.397681609041904], [-71.585372287981713, 42.407026671501434], [-71.559086797587739, 42.411887690333195], [-71.548846633790319, 42.4472925714525], [-71.543275090877003, 42.466497293909818], [-71.560372376936201, 42.474447313179205], [-71.543621499565944, 42.500100759614881], [-71.534827365983503, 42.513283891590213], [-71.532696256372432, 42.514589869651076], [-71.532201311580835, 42.51569451789139], [-71.529764203293794, 42.519726551882748], [-71.53140435579833, 42.520309023725076], [-71.538860619718207, 42.542971458365784], [-71.580350270099103, 42.550531628740686], [-71.591264943149341, 42.544364814132301], [-71.594843288452779, 42.54333736770382], [-71.602299188626446, 42.545161808459184], [-71.607880569928028, 42.545342442523861], [-71.620068376614469, 42.552397795101598], [-71.621638202421181, 42.551628159684753], [-71.622888947173507, 42.550962910298018], [-71.623472429603723, 42.550663498997231], [-71.624495691279876, 42.550365321401607], [-71.625135260704894, 42.550051257260073], [-71.625754018210699, 42.549622342091595], [-71.626411079242942, 42.549233982233787], [-71.627191874081788, 42.548805511726314], [-71.628289518214387, 42.548227604764463], [-71.628498674510851, 42.547982057720411], [-71.628722905651202, 42.547547443519001], [-71.629094193565152, 42.546987171326151], [-71.629488367315744, 42.546547323870627], [-71.629882836904542, 42.546135562073246], [-71.630261565229304, 42.545826803789261], [-71.630833771941639, 42.545472272941176], [-71.631204784182813, 42.545204030927344], [-71.631452399052634, 42.545020910798691], [-71.631707575451557, 42.544786557980572], [-71.631954788163455, 42.54452907758521], [-71.632132634093821, 42.544169409121814], [-71.632264362115464, 42.543763521014554], [-71.63245782604946, 42.543306428546018], [-71.632689478254946, 42.542774481764106], [-71.632999005765782, 42.542226150355866], [-71.63345527220342, 42.541643259239166], [-71.633857342724809, 42.541168457735409], [-71.634050700664005, 42.540957217283008], [-71.634359536450958, 42.540779691004488], [-71.634753940496651, 42.540596932592067], [-71.63508636630381, 42.540522274059704], [-71.635634800991028, 42.540413601809639], [-71.63590573443625, 42.540219731575434], [-71.636067674755381, 42.540064789611975], [-71.636184169509306, 42.539836171521308], [-71.636284433145775, 42.53947658771763], [-71.636369617649521, 42.538955968857671], [-71.636393070445678, 42.538429931640238], [-71.636486079991215, 42.537476108105899], [-71.63658666863418, 42.536875619312532], [-71.636648720065239, 42.536355657424025], [-71.636610210816329, 42.534480953387231], [-71.636648915996147, 42.533692657385267], [-71.636687674203571, 42.53343487263151], [-71.636888412228373, 42.533218036691387], [-71.637421806784687, 42.532829218635115], [-71.637955525420679, 42.532480278337218], [-71.638364784011003, 42.53221700778996], [-71.638759421686245, 42.531948712010966], [-71.639075974167895, 42.531708686589297], [-71.639276880880757, 42.531353929251999], [-71.639292591249912, 42.531137312289744], [-71.639315714883182, 42.530805275446809], [-71.639292657949554, 42.530450878349932], [-71.639153624369925, 42.52905675256698], [-71.639076473159065, 42.528787943473709], [-71.638751980555767, 42.528399519977], [-71.638079823876225, 42.527484870845313], [-71.637647342971491, 42.526964957984042], [-71.636527240349139, 42.52555966109297], [-71.636017642816867, 42.524879499961102], [-71.635870625820345, 42.52454262246016], [-71.63573955497715, 42.524319426848521], [-71.63576339651037, 42.524030690946425], [-71.678919345667694, 42.530521071530089], [-71.664619222660292, 42.61173143651348], [-71.710617401437872, 42.62511102711337], [-71.749531028975454, 42.636619312226912], [-71.77571054245432, 42.644180753855522], [-71.775216503082376, 42.63663191263332], [-71.844786906841378, 42.637960380608298], [-71.858333735203914, 42.633820902811038], [-71.856384967437791, 42.667663799840916], [-71.857752078350785, 42.67498953814129], [-71.864073064658243, 42.679571039641601], [-71.863732162113436, 42.679589486778156], [-71.865743126255907, 42.684174200380163], [-71.869796223875127, 42.683692659255321], [-71.874574630965029, 42.687187542809028], [-71.897120137586697, 42.703821187714162], [-71.898762701214707, 42.711401444002995], [-71.87453432078604, 42.710776951060339], [-71.805323361826581, 42.708954919315609], [-71.772566826016828, 42.708062832146126], [-71.749489937574694, 42.707434727319672], [-71.701125398507429, 42.706323765749474], [-71.651830046237677, 42.705128633133896], [-71.630360739094229, 42.704601746930308], [-71.62448804922299, 42.704457435309727], [-71.54307235306446, 42.702825762696939], [-71.542436697894217, 42.7028045730979], [-71.542137673463031, 42.702804682438604], [-71.540308708118189, 42.702751862906389], [-71.538936813811276, 42.702680317479974], [-71.499500942244097, 42.701783347124447], [-71.457855349761488, 42.700648176103549], [-71.432393726844566, 42.699974991290908], [-71.386824395048166, 42.698769658957076], [-71.374465627963659, 42.698439584191156], [-71.369384678934921, 42.698359150564414], [-71.3304176004753, 42.697426918819644], [-71.322271428362399, 42.697197017852297], [-71.294478739204592, 42.697190840274317], [-71.27880141380615, 42.71136196149083], [-71.267878888054383, 42.726119994720193], [-71.258117175391945, 42.734080798827556], [-71.255083861799903, 42.736570726825924], [-71.249495291028353, 42.71419911672924], [-71.249396566327292, 42.714007071598587]]], [[[-71.085145014703485, 42.402140664325913], [-71.085361125744981, 42.401731275462808], [-71.085546097109145, 42.402439742046944], [-71.085360555223915, 42.402596082572302], [-71.084897921965791, 42.402550571207328], [-71.084959538324625, 42.402324012858195], [-71.085145014703485, 42.402140664325913]]]]}, "type": "Feature", "id": 6, "properties": {"COUNTY": "MIDDLESEX", "AREA_ACRES": 541818.40000000002, "OBJECTID": 9.0, "FIPS_ID": 25017}},{"geometry": {"type": "Polygon", "coordinates": [[[-72.282977429424591, 42.721609670161889], [-72.271952611257518, 42.674651180326485], [-72.271908509973727, 42.674397697668233], [-72.258466975844826, 42.675390335903693], [-72.257410749145407, 42.667975342112463], [-72.249542154836391, 42.668733325609516], [-72.2435058016097, 42.669233145227508], [-72.242115006452863, 42.661671081638062], [-72.229512970613186, 42.662691527157051], [-72.22494305627805, 42.638942048103878], [-72.228780695416873, 42.638401972180361], [-72.228788618930452, 42.638201617788482], [-72.228765696441116, 42.638001457977175], [-72.228681101737919, 42.637687446128787], [-72.228534143872906, 42.637452688942147], [-72.228464744810793, 42.63729270297037], [-72.228464890141097, 42.63711553387791], [-72.228411321735933, 42.636795654566058], [-72.228264727335841, 42.636486624490018], [-72.228156798836025, 42.636252610975369], [-72.227924912153696, 42.63600092349418], [-72.227600117894283, 42.635738477897867], [-72.227344743952557, 42.63553248957782], [-72.226409519472199, 42.634692143836574], [-72.226293740634446, 42.634252291759772], [-72.226209294648569, 42.633960242903314], [-72.226054742004322, 42.633657381563815], [-72.225962196297175, 42.633434612283828], [-72.225985754650097, 42.633257205859223], [-72.225916425304661, 42.633091726282991], [-72.225970825560651, 42.632903413095015], [-72.226025536264657, 42.632731482391129], [-72.226056702372958, 42.63253719349629], [-72.226033847161219, 42.63233136088963], [-72.226003076823005, 42.6321369211134], [-72.225918588319175, 42.63177735369387], [-72.225833660722941, 42.631548864776498], [-72.225740981975235, 42.631314212786016], [-72.225687294434891, 42.631119917084071], [-72.225540981161927, 42.630748314295317], [-72.225510590642543, 42.630491394823601], [-72.225495068762271, 42.63030811212171], [-72.22550327685336, 42.62999405459496], [-72.225573487701311, 42.629770802555782], [-72.2257287533685, 42.629639291370005], [-72.225891310866814, 42.629484687826128], [-72.226078000178873, 42.629244949055114], [-72.226279602714726, 42.628987651395924], [-72.226403868572973, 42.628747764387192], [-72.226566937431443, 42.62841589796956], [-72.226644772319517, 42.628198808883468], [-72.22673868946508, 42.627832987726194], [-72.226793028626901, 42.62752377097555], [-72.226855761924057, 42.627329282885661], [-72.227010869164644, 42.627089741127506], [-72.2272124428616, 42.626883665869975], [-72.227545851575613, 42.626671718496731], [-72.227848310215705, 42.626471758644229], [-72.228042307253702, 42.626380511204914], [-72.228243625813803, 42.626300470368292], [-72.228491752679389, 42.626220133953161], [-72.228723910299934, 42.626139897754477], [-72.229049346171294, 42.626145676188685], [-72.229381973406348, 42.626214515672537], [-72.229683934153854, 42.626287959158233], [-72.2300787953683, 42.62622523733075], [-72.230326715845848, 42.62611681052158], [-72.230590026675273, 42.626042585273048], [-72.230869013101611, 42.625922077498103], [-72.231085741724513, 42.62583626258715], [-72.231341710158077, 42.625665305396659], [-72.231496732887848, 42.625430799285169], [-72.231597617594716, 42.625184842624151], [-72.231592918214645, 42.624864203897523], [-72.231516187715499, 42.624681219257567], [-72.231270002537741, 42.624360939378221], [-72.231000392440677, 42.624143795666527], [-72.230870001285012, 42.624000581081823], [-72.230638626759188, 42.623926694193926], [-72.23036803535399, 42.623960994659555], [-72.229873318453656, 42.624126166796188], [-72.229634264714861, 42.624125966760367], [-72.229333705577346, 42.624120032948277], [-72.229049179143317, 42.624045848343386], [-72.228943319452242, 42.623715135036221], [-72.229147374732364, 42.623229963332022], [-72.229265036159262, 42.622990114379064], [-72.229452100606153, 42.622732902280937], [-72.2296311976704, 42.622556222440203], [-72.229817981311371, 42.622390746846222], [-72.229843653054886, 42.622134013645088], [-72.229366359010484, 42.622002531653052], [-72.22898195407933, 42.621871091596716], [-72.228643230938388, 42.621768530137118], [-72.228349839934964, 42.621791176527182], [-72.22798662846192, 42.621911129083067], [-72.227739069963036, 42.621997042583217], [-72.227454278990464, 42.621962286642834], [-72.227550146725832, 42.621471047292296], [-72.227745594866875, 42.621105755143205], [-72.22779392938719, 42.620826373308439], [-72.227904392137873, 42.620448742761631], [-72.228093992655943, 42.61980999093187], [-72.228274537319137, 42.619284457140566], [-72.22836812450133, 42.619113449658649], [-72.228377404803695, 42.618861861334963], [-72.228394374597457, 42.618558460122358], [-72.228124422454215, 42.61839307606342], [-72.227901204134483, 42.618147454624832], [-72.227847593760742, 42.61796999314128], [-72.227856612718995, 42.617758917685677], [-72.227896638845763, 42.617404236930589], [-72.227905270693526, 42.617096386970992], [-72.227814579237688, 42.616547265943559], [-72.227761390188832, 42.616216218958037], [-72.227746531033844, 42.616027259989608], [-72.227793659109821, 42.615770391569718], [-72.227917791456861, 42.615627189533789], [-72.228398576338833, 42.615284943483537], [-72.228910094985238, 42.61483942264033], [-72.229251271915757, 42.614662259814168], [-72.229475933622339, 42.614548939644003], [-72.229747013186099, 42.614423442392159], [-72.230071641576103, 42.614480446979556], [-72.230218351080026, 42.6146348126954], [-72.230310608509143, 42.614823282015941], [-72.230596807798975, 42.614834975455302], [-72.230953390820758, 42.61457839796762], [-72.231154885504495, 42.61440157338086], [-72.231341016572912, 42.614224305576286], [-72.231604656681895, 42.614098851034271], [-72.231945238354143, 42.614070765551887], [-72.232509516295195, 42.61415100096653], [-72.233143643498948, 42.614231960522687], [-72.233894175513356, 42.614260952566902], [-72.234296223361312, 42.614267399264037], [-72.234698823320031, 42.614227117988342], [-72.234985105680494, 42.614266977891333], [-72.235255740128338, 42.614250580962121], [-72.235573011308375, 42.614199046597783], [-72.236222880065483, 42.614176900194572], [-72.236648564966416, 42.614182647850242], [-72.236934564086837, 42.614239879595381], [-72.237135637320421, 42.614320249097354], [-72.237460060492424, 42.614463298344099], [-72.237800096143744, 42.614617590107976], [-72.238163831277816, 42.614641102841851], [-72.238558633698048, 42.614549093471517], [-72.238698204550914, 42.614383904761006], [-72.238900018251897, 42.614132253520637], [-72.2391092141591, 42.614000918360375], [-72.239303018100301, 42.613897859246066], [-72.239682446214061, 42.613846455750398], [-72.239983868146325, 42.613795010745534], [-72.240324336866536, 42.61384072192584], [-72.240548606926836, 42.613903381878117], [-72.240765255614576, 42.613960508722158], [-72.241004695169977, 42.614017488917618], [-72.241221316897764, 42.614103333130494], [-72.241453106977303, 42.614131643451117], [-72.24177049868554, 42.614142568760272], [-72.242142421112106, 42.613971381800873], [-72.242490573084282, 42.613810429290325], [-72.242761855437891, 42.613735584188099], [-72.242561426346214, 42.613358767118633], [-72.249516994284122, 42.612405654806608], [-72.251771100263085, 42.612174941060793], [-72.251662744500791, 42.611980471638233], [-72.254718000017974, 42.611591979341945], [-72.253341759591564, 42.605365530574218], [-72.256396923120903, 42.605149210522498], [-72.256428057620397, 42.604920611568275], [-72.256659860073739, 42.60470861279952], [-72.256861057012145, 42.604434426406407], [-72.257131822461005, 42.604240176349137], [-72.257518639346827, 42.604120065628408], [-72.257804626264416, 42.604006197021569], [-72.258121935761437, 42.603902835084071], [-72.258492954939967, 42.603817124570043], [-72.258810215302248, 42.603719972815711], [-72.258879752019951, 42.603554138623046], [-72.258941840551557, 42.603377010101518], [-72.259003623767356, 42.60315433054356], [-72.259003425759417, 42.602965908072036], [-72.259057660712131, 42.60275399113376], [-72.25912734305679, 42.602519466386454], [-72.259243165319546, 42.602250878299394], [-72.259436584938825, 42.602010407857328], [-72.259622444810532, 42.601850559832663], [-72.259784592511622, 42.60155348826688], [-72.259884957614631, 42.601347479017377], [-72.260047599957289, 42.601142140009216], [-72.260241100311589, 42.601050300094755], [-72.260449837706872, 42.600958899644276], [-72.260673986792241, 42.600821844231369], [-72.261014228103036, 42.600661516755935], [-72.261331386067084, 42.600547433680667], [-72.261625194904724, 42.600427291977383], [-72.261934567648311, 42.600324601830145], [-72.262197593668674, 42.600198450017736], [-72.262514834899775, 42.600272877126187], [-72.265469207447595, 42.600970742581879], [-72.267062375423535, 42.600839804150276], [-72.261423124259537, 42.576060269002461], [-72.261368842227057, 42.575791718177996], [-72.261631886746926, 42.575746049594159], [-72.261902268365262, 42.575722928605806], [-72.262149596065854, 42.575717334338329], [-72.262528492941385, 42.575682782039713], [-72.262822354487881, 42.575677419012628], [-72.263224210363163, 42.575808721447579], [-72.263479552131116, 42.575911643233553], [-72.263726802811902, 42.576020289668158], [-72.263951206064931, 42.576163386896624], [-72.264206165108746, 42.576334999795314], [-72.264391731683432, 42.576489696663451], [-72.264662398018814, 42.576660574332941], [-72.264832424473028, 42.576889645268068], [-72.265102940276108, 42.577077988030204], [-72.265358166513678, 42.577220878179723], [-72.265698390314512, 42.577341327445531], [-72.265992164312337, 42.577438407065422], [-72.266301570351189, 42.577478575465825], [-72.266548711419347, 42.577547244868157], [-72.266834747167962, 42.577598820371605], [-72.267128562583181, 42.577639000125686], [-72.267492051132194, 42.5776788058443], [-72.267801298933378, 42.577735806233086], [-72.26811834402119, 42.577752872184888], [-72.268535716017084, 42.577736049454174], [-72.268860312263001, 42.577673119591658], [-72.26913087299333, 42.577564365360857], [-72.269355201876323, 42.577490308802027], [-72.269525419507261, 42.577324335485137], [-72.269633340691868, 42.577124387245789], [-72.269811159320568, 42.576832865867232], [-72.269919512472399, 42.576598614344448], [-72.270043084384724, 42.57640369276168], [-72.270236256024234, 42.576232523667159], [-72.27050687618798, 42.576089465609947], [-72.270939823786023, 42.575992586559359], [-72.271264550248517, 42.576020845825973], [-72.271504299616879, 42.576112600831827], [-72.271767022927506, 42.57632969867953], [-72.271867603418997, 42.576575518623528], [-72.271937236626428, 42.576930117438053], [-72.271991399701349, 42.577095673988332], [-72.272014589925334, 42.577278452708683], [-72.27201487537171, 42.577530524981732], [-72.272037929206959, 42.577741933010614], [-72.272092233401267, 42.577958713604545], [-72.272107529584602, 42.578153338543409], [-72.272177388684341, 42.578416738748516], [-72.272239091976175, 42.578610963116979], [-72.272401398818786, 42.578793891068983], [-72.272680024578321, 42.579005298470513], [-72.272942933423579, 42.579136867191487], [-72.273344907529832, 42.57927425554977], [-72.273615500214703, 42.579297199349419], [-72.273955690967867, 42.579234150673024], [-72.274241594611595, 42.579085399879467], [-72.27433449602735, 42.578833872827374], [-72.274357706363332, 42.578650783514682], [-72.274272437534719, 42.578313756270838], [-72.274280192493848, 42.578102141981873], [-72.274241481322804, 42.577895970922427], [-72.274140830045724, 42.577575881670377], [-72.27409442244597, 42.577387677437578], [-72.274140967993546, 42.577210193043612], [-72.274140548652326, 42.577027261964723], [-72.27435708950722, 42.576775985622497], [-72.274642978368988, 42.576666665370553], [-72.274851827695613, 42.57659261191867], [-72.275068100874762, 42.576518058093406], [-72.275540040649091, 42.576541355420808], [-72.275833789649141, 42.576655245220991], [-72.2761738670998, 42.576821758316115], [-72.276320805236736, 42.576953018993329], [-72.276591570779658, 42.577158798524216], [-72.276862048727992, 42.57730156077595], [-72.276713139289541, 42.570406523323697], [-72.273665162589623, 42.560932591173533], [-72.271363524804599, 42.54724695994669], [-72.269131082391738, 42.533403857379113], [-72.249533496435177, 42.517329093792029], [-72.244798508574235, 42.513513340207382], [-72.249534569683817, 42.509879279063057], [-72.262724274948582, 42.500088267572892], [-72.291285646436805, 42.47958747502733], [-72.283259193537617, 42.4411884814023], [-72.283768396303657, 42.440759625489498], [-72.284801826721221, 42.440163971425157], [-72.285125983182795, 42.439986833585095], [-72.285442464419063, 42.439837746479498], [-72.285673412325764, 42.439740559177558], [-72.285974165531798, 42.43966594264262], [-72.286197944538387, 42.439471390781193], [-72.286398542344543, 42.439230901430207], [-72.286622458612129, 42.439047601513771], [-72.286876867157844, 42.438853379214343], [-72.287139141812176, 42.438646768453353], [-72.287339649593449, 42.438458045238363], [-72.287362888047085, 42.438206342510078], [-72.287208249876429, 42.437989077002953], [-72.287008096542095, 42.437737820937798], [-72.2870622877833, 42.437560811652446], [-72.287154606717507, 42.437400377312748], [-72.287278235341304, 42.437245850869417], [-72.287524961121392, 42.437245334116497], [-72.287841194341638, 42.437399553064871], [-72.288126459488723, 42.437468004431992], [-72.288481171686968, 42.437462154951241], [-72.288758492793775, 42.437410198964045], [-72.289082975731958, 42.437387719072206], [-72.289615012591085, 42.437478603493481], [-72.289993015441539, 42.437546864431518], [-72.290324721422735, 42.43758681234403], [-72.290594659323887, 42.437517976953821], [-72.290725770557671, 42.437340437717651], [-72.290625390038741, 42.437089042813263], [-72.290347676085759, 42.436934477052823], [-72.29008553290295, 42.436751714407677], [-72.289915538979201, 42.43658020302631], [-72.289838560997211, 42.436362948556948], [-72.289599430017716, 42.436299856980845], [-72.289267899640024, 42.436312303312384], [-72.289105761999551, 42.436185661894484], [-72.289028730278929, 42.435934645750343], [-72.288882682377604, 42.435792138498357], [-72.28867432216218, 42.435574702701516], [-72.288890205098198, 42.435362823531932], [-72.289190849679699, 42.435242553834584], [-72.289530203542668, 42.43505908688492], [-72.289676720822399, 42.434898818892712], [-72.289831270499533, 42.434681146424808], [-72.289900593303287, 42.43431541870671], [-72.28990822377564, 42.433914732310619], [-72.28990063876148, 42.433531616103316], [-72.289970271145549, 42.433365753021931], [-72.290224474910318, 42.433245258922135], [-72.290509946543921, 42.433302359128014], [-72.290594808225563, 42.433479586012432], [-72.290687416768662, 42.433673685298452], [-72.290888106257199, 42.434045301841131], [-72.291111236581557, 42.434199701189208], [-72.291489308920902, 42.434216729522014], [-72.291813455113029, 42.43406207986547], [-72.29190585888513, 42.433890387108455], [-72.29179772997449, 42.433718903052636], [-72.291435262597545, 42.433598773999627], [-72.291157794142507, 42.433307452663371], [-72.291103719146705, 42.433055739773735], [-72.291119253465169, 42.432821014439696], [-72.291204085675602, 42.432500824436389], [-72.291281299889661, 42.432203194238461], [-72.291335179748089, 42.432031766597639], [-72.291489366732421, 42.431854067560238], [-72.291712901144621, 42.431779336395401], [-72.291882825748914, 42.431567767267964], [-72.29186740889115, 42.431384931930587], [-72.291944349153482, 42.431201551395162], [-72.292067935411453, 42.430909813655298], [-72.291952150890637, 42.430641059649609], [-72.291890451353837, 42.430372563750993], [-72.291936803089484, 42.430143748219926], [-72.292090983774941, 42.429966048294681], [-72.292383956098021, 42.429885796092059], [-72.292669453345994, 42.42974257342869], [-72.292931467843403, 42.429742479810756], [-72.293317174613676, 42.429827602302801], [-72.293556108168019, 42.43002177152178], [-72.293795157032974, 42.429867072225797], [-72.29401134314304, 42.429672556655817], [-72.294173512343235, 42.429512174622595], [-72.294358345750894, 42.429317964659198], [-72.294435444497694, 42.429157628956794], [-72.29472095887968, 42.428871432915557], [-72.294913496683677, 42.428768279480131], [-72.295229902908602, 42.428590535401156], [-72.295492148572052, 42.428338889659557], [-72.295669122257308, 42.428109800029176], [-72.295784915878741, 42.427944154219347], [-72.29594688994564, 42.427720749681384], [-72.296155211031575, 42.42754933202594], [-72.296409736340777, 42.427514980662188], [-72.296594735930583, 42.427383156800886], [-72.297018703693695, 42.42721699754442], [-72.297242504834884, 42.427194110810319], [-72.297573931596304, 42.427061811466807], [-72.297805456133688, 42.426890320260426], [-72.29755859044252, 42.426741770016264], [-72.297273189824935, 42.426707734635592], [-72.297095906985675, 42.426593633300065], [-72.297342745925803, 42.426364597371865], [-72.297681906544895, 42.426267716063649], [-72.298321751122813, 42.426135527923968], [-72.298583923616704, 42.426101028636417], [-72.298861653338619, 42.426009071442301], [-72.299092881715637, 42.425872421145158], [-72.299293216297883, 42.425637581633538], [-72.299632493807636, 42.425483254301874], [-72.299887350342871, 42.425466268730993], [-72.300074615080931, 42.425562380391831], [-72.300398448203495, 42.425493687010864], [-72.300359972205001, 42.425305430805807], [-72.300298111831111, 42.425065029462864], [-72.300236360423668, 42.424814003727754], [-72.300329051933943, 42.424562354543625], [-72.300598974096175, 42.42448791324162], [-72.300861117407322, 42.424442155095946], [-72.301215735698861, 42.424396383016862], [-72.30150888356286, 42.424390381128418], [-72.301716813681878, 42.424276395243297], [-72.302002305912126, 42.424299165123436], [-72.302141115888887, 42.424464754383692], [-72.302403308746122, 42.424442130200781], [-72.302519028337073, 42.424253430017913], [-72.302457117007549, 42.424019152150649], [-72.302241337054753, 42.423830511663105], [-72.301817179870881, 42.423768194538482], [-72.3015243212093, 42.423710543679995], [-72.301285113312019, 42.4236193874588], [-72.301238852589961, 42.423430645451795], [-72.301138594098802, 42.423247951122576], [-72.301061429988167, 42.42300819674395], [-72.300953458598187, 42.422859227311619], [-72.30083787236083, 42.42260794608945], [-72.300806810895679, 42.422362288904274], [-72.300806903560641, 42.4221394630178], [-72.300992058387195, 42.421945149498768], [-72.301277347552357, 42.421962340636156], [-72.301624196909444, 42.421899155328283], [-72.301500874323295, 42.42172778564111], [-72.301346542434644, 42.421544927712596], [-72.301554920273091, 42.421419054833173], [-72.301693579216987, 42.421247661516659], [-72.30189415925804, 42.421081958782871], [-72.302117551098107, 42.420961652190428], [-72.30212541518307, 42.420710052078526], [-72.302040539540272, 42.420475483677954], [-72.302279466384334, 42.420315635120836], [-72.302526204643783, 42.420292578037433], [-72.302834742048148, 42.420246491779487], [-72.303058345584844, 42.420315336030662], [-72.303328211545534, 42.420371972990402], [-72.30372902964055, 42.420205949833871], [-72.303991270628259, 42.420303152232549], [-72.304284331340867, 42.420148593304077], [-72.304554207132213, 42.420034169232885], [-72.304777829226737, 42.420228422619104], [-72.305143425843895, 42.420321568673472], [-72.30561060095954, 42.420357103427008], [-72.306277874808728, 42.420037864909268], [-72.306643682934279, 42.419604865893533], [-72.306697510380559, 42.419433430540749], [-72.306674274790183, 42.419193301658026], [-72.306543336866952, 42.4189590591631], [-72.306404525507673, 42.418764755234804], [-72.306273490041463, 42.418541766933657], [-72.306134634528078, 42.418296235553235], [-72.306018987490177, 42.418079261267835], [-72.306034127158824, 42.417856329432844], [-72.306365864040117, 42.417696452460561], [-72.306597233945581, 42.41759354699294], [-72.306843791519015, 42.417405005701511], [-72.306990130502626, 42.417227879914179], [-72.306859288906963, 42.41701047274718], [-72.306743595677361, 42.416856520913484], [-72.30659691456168, 42.416673616165632], [-72.306481176407999, 42.416468436926138], [-72.306627585474871, 42.416296892962777], [-72.306943801382815, 42.416187810234767], [-72.307290640185897, 42.416107681809208], [-72.307583727879347, 42.416090500782843], [-72.30784576140519, 42.416067774989173], [-72.307999921575785, 42.415913640789149], [-72.307776282150996, 42.415793668948524], [-72.30753713601942, 42.415667683375538], [-72.307328935518612, 42.415462613375063], [-72.307282759624186, 42.415233899111072], [-72.307282634323187, 42.414976772278031], [-72.307382750377187, 42.414805551911861], [-72.307706690013532, 42.414617005711747], [-72.308014958301698, 42.414628346780141], [-72.308346674461134, 42.41472505155604], [-72.308616449105855, 42.414690565600623], [-72.308755078041784, 42.414490983852595], [-72.308801082621628, 42.414079310137289], [-72.308762483718539, 42.413759431996297], [-72.308677719165416, 42.413439788140472], [-72.308693019023735, 42.413125743371545], [-72.308746835393706, 42.412954306793331], [-72.308870241959013, 42.412714318124181], [-72.308985749241018, 42.412531194021852], [-72.309093823325625, 42.412279968733714], [-72.309294225414362, 42.412028184221882], [-72.309386580500714, 42.41181146090252], [-72.309278587170795, 42.411651335207694], [-72.309008773844809, 42.411662775220123], [-72.308685139448997, 42.411702772391621], [-72.3086001859118, 42.411463077025168], [-72.308692734496759, 42.411308834265625], [-72.308900815996978, 42.411125599894447], [-72.309070290809004, 42.410982610198282], [-72.309301701096686, 42.410856650750901], [-72.309687292043861, 42.410873565614473], [-72.31009550960097, 42.410902204008806], [-72.310272995865162, 42.410673626830089], [-72.31030359237667, 42.410473092815842], [-72.31027273934906, 42.410198715944112], [-72.310403905591755, 42.40951301779242], [-72.310450080117946, 42.409324168033635], [-72.310627295666549, 42.409141237741551], [-72.31076596266405, 42.408946064421372], [-72.31088943727363, 42.408797814015308], [-72.310904940874778, 42.408557412350916], [-72.310557973724812, 42.408500796124954], [-72.310295784624159, 42.408575207183397], [-72.31000264114364, 42.408717988863174], [-72.309925831508451, 42.408535586653564], [-72.310095360045111, 42.408312197336173], [-72.310149263595619, 42.408100785520475], [-72.310357353105175, 42.40792880230272], [-72.310626998217359, 42.407848666612686], [-72.310866123462858, 42.407813850792209], [-72.311166746532137, 42.407705315900962], [-72.311528854195174, 42.407522161225799], [-72.311659817626577, 42.407361432839224], [-72.311868539113604, 42.407201326213475], [-72.312153659607631, 42.407144125651158], [-72.312446568886401, 42.407040773557462], [-72.312816343812301, 42.406812004967477], [-72.312939889745351, 42.406594427887484], [-72.31304769617698, 42.406343290270279], [-72.313286792822367, 42.40648619067354], [-72.31357195348491, 42.406640108870938], [-72.313725896230551, 42.406434200128039], [-72.313679637201005, 42.406068191181099], [-72.313556310549203, 42.405840024230933], [-72.313348041110643, 42.40565693277221], [-72.313186138328888, 42.405508445354052], [-72.313055086955472, 42.405302840182124], [-72.313186067126978, 42.405125183970831], [-72.313239983985596, 42.404896934566196], [-72.313170586774334, 42.404667845890003], [-72.312846508679883, 42.404462523778435], [-72.312792621880547, 42.40421135775113], [-72.312699978040911, 42.403988104899227], [-72.312599782847045, 42.403725471702394], [-72.312568859725744, 42.403502863286889], [-72.312769413378717, 42.403256652757698], [-72.31306229410707, 42.403228114850933], [-72.313308931302501, 42.403108251647225], [-72.313239469791412, 42.402874031613123], [-72.313308609303277, 42.402639462326732], [-72.313308732709913, 42.402394126865204], [-72.313200654309782, 42.402245799203463], [-72.313154327083495, 42.402034553586176], [-72.31302315955142, 42.401857128800877], [-72.313269916834628, 42.40176589440761], [-72.313424225823226, 42.401891387497088], [-72.313639906494771, 42.402028330597616], [-72.313886496212632, 42.401999577624423], [-72.31404076487847, 42.401725602356301], [-72.314009713478811, 42.401531084795025], [-72.313762966274297, 42.40121718090775], [-72.3135932950686, 42.401040028998281], [-72.313346586277945, 42.400851537231709], [-72.313269359765982, 42.400646181933276], [-72.313431183899183, 42.400440217498357], [-72.313523581940515, 42.400285881286713], [-72.313508354204131, 42.400103135782921], [-72.313747373119597, 42.400005832863037], [-72.313970838544648, 42.400040264924272], [-72.314078487533607, 42.399834682697865], [-72.314032104145952, 42.399600299707267], [-72.313962717992212, 42.39937184138239], [-72.314039846546081, 42.399182770655933], [-72.314363694826369, 42.39907973453154], [-72.314625582200307, 42.399079591544066], [-72.314903162523805, 42.399062410982197], [-72.315087932925223, 42.398856281581672], [-72.314910748246277, 42.398604909061191], [-72.314717832904606, 42.398433505483517], [-72.314563568035965, 42.39824499195425], [-72.31444034191351, 42.398033120541335], [-72.314671451188659, 42.39790715163101], [-72.314447966337951, 42.397804657549621], [-72.314162774329446, 42.397701969416183], [-72.313939320330888, 42.397479102481896], [-72.313931487379008, 42.397266954447097], [-72.313946762592593, 42.396981627679452], [-72.313746537202377, 42.396798479859356], [-72.313515174014242, 42.396593044032926], [-72.313630808305859, 42.39640424140449], [-72.313969874305656, 42.396295516692824], [-72.314255102272639, 42.396203467587171], [-72.314547886835811, 42.396066348681671], [-72.314886920061724, 42.395917647615747], [-72.315125918809215, 42.395848431487728], [-72.31531856662852, 42.395717061621632], [-72.315457082429006, 42.395551232965708], [-72.315202767625323, 42.395402772805866], [-72.314886659500161, 42.39545452895446], [-72.314609386291622, 42.395466035463222], [-72.31437807773861, 42.395311828691575], [-72.314501268729742, 42.395134855736138], [-72.314624595906466, 42.394968505355877], [-72.3147865162138, 42.394837443900762], [-72.315094828519761, 42.394831299019252], [-72.315326205183084, 42.39493427611928], [-72.315557280373412, 42.394985576971251], [-72.315826924436649, 42.39485366046695], [-72.31581923021011, 42.394539776108253], [-72.315580166910607, 42.394368160642017], [-72.315294900800069, 42.394145644275788], [-72.315078964067396, 42.393968191943848], [-72.314870889446311, 42.393797525905939], [-72.314685881768852, 42.393654245965749], [-72.314446884469135, 42.393534395653148], [-72.314076899746581, 42.393363073446196], [-72.313745527356744, 42.393209573279663], [-72.313529497825968, 42.392986562900774], [-72.313390896100515, 42.392758593281208], [-72.313567807463855, 42.39254684950695], [-72.313798841033488, 42.392340934832937], [-72.314052994390096, 42.392232810130352], [-72.314307591156165, 42.392055447670984], [-72.314461715371962, 42.391838281774398], [-72.314507695044156, 42.391655102773704], [-72.314407542346856, 42.391404264272737], [-72.314253354968102, 42.391267517588538], [-72.314029785449122, 42.391118837254204], [-72.313806088047883, 42.391045063425693], [-72.313520790191404, 42.391016650323003], [-72.313204802724627, 42.391113957025645], [-72.312850374438568, 42.391074326750967], [-72.312657613879793, 42.390931638279241], [-72.312618989264848, 42.390714125396599], [-72.312595838595087, 42.390405931734712], [-72.312611347659441, 42.390223508837039], [-72.312556994269414, 42.390057874980641], [-72.31234899945467, 42.389863525570682], [-72.312495357551043, 42.389675137023225], [-72.312780314728187, 42.389715349139031], [-72.312896096111103, 42.389926104777501], [-72.312965851854656, 42.390137185497935], [-72.313212593366643, 42.390359889912531], [-72.31353596684292, 42.390279996995339], [-72.313589630597832, 42.389948212316455], [-72.313512567190088, 42.389754559662769], [-72.31349727020995, 42.389566232273012], [-72.313242829251436, 42.389349074772959], [-72.313088644427125, 42.389183606506471], [-72.312919033845645, 42.388989617284402], [-72.312772360438743, 42.388841471568028], [-72.312571831185039, 42.388670207843653], [-72.312302034434609, 42.388561824523748], [-72.312001541069989, 42.388493541091627], [-72.311685448079103, 42.388373688948199], [-72.311346377338396, 42.388214024066933], [-72.311053477842378, 42.38800847688519], [-72.310814481961117, 42.387848645151109], [-72.310544813165606, 42.387740256834448], [-72.310274663244684, 42.38766059127051], [-72.310043115813102, 42.387389876925745], [-72.310498029414262, 42.387311857211337], [-72.310744832164346, 42.387209373309759], [-72.311022233076855, 42.387134853000411], [-72.310798552733374, 42.386843197406279], [-72.310467196530922, 42.386706613642232], [-72.310320573430175, 42.386523622313604], [-72.310629013088331, 42.386483186260598], [-72.310906572880299, 42.386563338945528], [-72.311207036932757, 42.386705901269202], [-72.3114228981499, 42.38675722752113], [-72.31164627579669, 42.386608810793412], [-72.311469097793889, 42.386420454501305], [-72.311253058145667, 42.386317271533464], [-72.311075863627323, 42.386203190628827], [-72.310829296904743, 42.386049084252953], [-72.310852452229284, 42.385865977330162], [-72.31108365374611, 42.385797454370156], [-72.311230153243699, 42.385648950117634], [-72.311461029435662, 42.385517316683369], [-72.311661349108405, 42.38535159638792], [-72.311838597489611, 42.385242938368741], [-72.311977322582067, 42.3850944879823], [-72.312154528392838, 42.38485969576913], [-72.312177581244171, 42.384631123362276], [-72.311946326835255, 42.384591071077047], [-72.311761338432618, 42.384493972115493], [-72.311861485544767, 42.384310951864691], [-72.312038625757481, 42.384127928527583], [-72.312446987665467, 42.383699106865095], [-72.312647410872984, 42.383475943937626], [-72.312747437200457, 42.383321643725743], [-72.312994208854235, 42.383189894769075], [-72.313302372395569, 42.383355985481771], [-72.313572022025511, 42.383435647450973], [-72.313826172000219, 42.38326396059491], [-72.313957101727709, 42.383029492759178], [-72.313664283983101, 42.382961249482101], [-72.313356137636887, 42.382938039528803], [-72.31314031310977, 42.382869790767103], [-72.312924470601629, 42.382686751626395], [-72.313024925467928, 42.382452590198611], [-72.31317893639833, 42.382275310142795], [-72.313417988682133, 42.382223562718018], [-72.313841731282892, 42.38221777496306], [-72.314172898598883, 42.382303212494456], [-72.314396222443548, 42.382142906343539], [-72.314450278187351, 42.381908441820691], [-72.31435012724225, 42.381656522424102], [-72.314165172928853, 42.381410785061497], [-72.313972263636714, 42.381245051650247], [-72.313710243951633, 42.38112536269152], [-72.313587325451735, 42.380953461587275], [-72.313725882855366, 42.380736406031126], [-72.313749037721195, 42.380478572079625], [-72.313710402876453, 42.380307245294375], [-72.313548630765112, 42.380135618936855], [-72.313363497998694, 42.379969829501569], [-72.313232672016568, 42.379815450016366], [-72.313209599192433, 42.379626546925429], [-72.313463799773075, 42.379592068305712], [-72.313548586680454, 42.379414827113244], [-72.313386677663175, 42.379260667597201], [-72.313224845509183, 42.379008553002201], [-72.3131169816632, 42.37875101496703], [-72.312831908511114, 42.378877453120538], [-72.312554141452736, 42.37901500286128], [-72.312277181743241, 42.378780625986892], [-72.312292451861111, 42.378494668051687], [-72.312531430081862, 42.378334254782658], [-72.312777666897929, 42.378190715650163], [-72.313093733281207, 42.378047852855289], [-72.313309468428159, 42.377893274195181], [-72.313517408434123, 42.377727496297375], [-72.313640759085303, 42.377584284026319], [-72.313710088920047, 42.377338457619665], [-72.31357925713931, 42.377126638363713], [-72.31332482255344, 42.376943872791742], [-72.313070590570177, 42.376852307216161], [-72.312800826602498, 42.376818200939134], [-72.312469305997993, 42.376750138155572], [-72.312207369107739, 42.376606856945457], [-72.312068564990994, 42.376435606479504], [-72.312161041352482, 42.376195289565615], [-72.312369130274575, 42.376041306747304], [-72.31260781717522, 42.37594400736571], [-72.312769607135976, 42.375777926487594], [-72.312738861238898, 42.375549193362517], [-72.312661503871894, 42.375217703328509], [-72.312558423094501, 42.374934831935164], [-72.312489117877419, 42.374700699306224], [-72.312635638366885, 42.374546610572153], [-72.312481077277312, 42.374386725812592], [-72.312611705592289, 42.374129843189877], [-72.312989512318339, 42.374021386484742], [-72.313174565622873, 42.373861352688323], [-72.31315853695763, 42.373587409678102], [-72.312818871052002, 42.373564511400851], [-72.312533736153782, 42.373656017287487], [-72.312325606907379, 42.373730592930279], [-72.312086605551812, 42.373764961942129], [-72.311777373258266, 42.373663068054888], [-72.311568101414153, 42.373383736048822], [-72.311359227274252, 42.373229904951799], [-72.311180100481323, 42.372820353916836], [-72.311062892250149, 42.372495445918631], [-72.31106937019284, 42.372233678239532], [-72.311416905593063, 42.372198635768747], [-72.311641362100161, 42.372318054765294], [-72.311833707074712, 42.372215411801577], [-72.31191006875568, 42.372044352871242], [-72.311801144503534, 42.371787991211193], [-72.312040209300278, 42.371702394256346], [-72.314567329329975, 42.371405427909934], [-72.314558756135057, 42.371154570256095], [-72.314449604736865, 42.370881286633598], [-72.314556617190817, 42.370601970740516], [-72.314879345931388, 42.370414039452406], [-72.315017498538694, 42.370243080738362], [-72.315047584056913, 42.370014997465589], [-72.31513186913304, 42.369809577992655], [-72.315355573053054, 42.369889561226287], [-72.315609961812228, 42.369957532293803], [-72.315878927279087, 42.369753053371177], [-72.315654783985977, 42.369478965810032], [-72.31517606852006, 42.369159955785406], [-72.314890441178406, 42.369022970670294], [-72.314628293747248, 42.369068673051572], [-72.31432041076107, 42.369211572793205], [-72.314073746515376, 42.369149126191445], [-72.313702940649435, 42.369006618807639], [-72.31349466165581, 42.368898343353315], [-72.313301561498179, 42.368761870293852], [-72.313108307542137, 42.368556703776662], [-72.313046123359001, 42.368300012676052], [-72.313007025861623, 42.367997512246959], [-72.312998608893722, 42.367786627328428], [-72.312797845722386, 42.367535327054796], [-72.312620213710844, 42.367364441438149], [-72.312473447757668, 42.367205131680912], [-72.312288011167652, 42.36693688630529], [-72.31221860231777, 42.366760103905293], [-72.312118122458486, 42.366480004304428], [-72.312017512487756, 42.366274811966626], [-72.311909377435967, 42.366126482712374], [-72.311817194285354, 42.365972368761092], [-72.3114850900497, 42.365806983141482], [-72.311268981751695, 42.365721356896969], [-72.310945142021978, 42.36555645162484], [-72.310844625285782, 42.365310743517902], [-72.310767176813869, 42.365036692527134], [-72.310628467317272, 42.364756861065132], [-72.310497119066923, 42.364511369701702], [-72.310504896731189, 42.364294068146705], [-72.310574303376214, 42.364111264599799], [-72.310659293377469, 42.3639508591178], [-72.310797827519124, 42.363762526372845], [-72.311098765372918, 42.36356233445855], [-72.31132219812352, 42.363424540370197], [-72.311692792241772, 42.363241321646107], [-72.312008881096133, 42.36311529663427], [-72.312293884880901, 42.362932140001107], [-72.31257925951175, 42.362806330316545], [-72.312826157641155, 42.362577255203441], [-72.312926679640483, 42.362388558188258], [-72.312965158132229, 42.362114229181401], [-72.312810761046322, 42.361851437027546], [-72.312147819418755, 42.360926000983312], [-72.312024637809344, 42.36055999104412], [-72.312070726351394, 42.360159563844022], [-72.312116914137064, 42.359993849081206], [-72.31208669024781, 42.359804995489114], [-72.31199408437287, 42.359484865651751], [-72.311878297336804, 42.359221799550554], [-72.311693093286877, 42.359102103953759], [-72.311546500245768, 42.358850508924803], [-72.311585240895312, 42.358530081989464], [-72.311647229551966, 42.358318609653217], [-72.311786096863301, 42.358072292448696], [-72.312017667848693, 42.357917603270572], [-72.312264221491233, 42.358031733236864], [-72.312503322164233, 42.358557901524911], [-72.312634318663328, 42.358729117027089], [-72.312873207475377, 42.358832135897345], [-72.313128004490096, 42.358803325064677], [-72.313343945079268, 42.358688717935827], [-72.313559794112436, 42.358425468283158], [-72.313698598137023, 42.358099290820256], [-72.313799146917717, 42.357790760042846], [-72.313791395123602, 42.357556191573636], [-72.313822202510266, 42.357223935623338], [-72.313775896765165, 42.356955337764482], [-72.313699128057664, 42.35674376561056], [-72.313652811485454, 42.356578074327011], [-72.313467731948037, 42.356326123665085], [-72.313267159213424, 42.35614360691018], [-72.313167016088045, 42.355926527667151], [-72.313120855603017, 42.355697272678455], [-72.313391063423666, 42.35550854536519], [-72.313661158786743, 42.355216821561747], [-72.313799845795543, 42.355004805130378], [-72.313815258657471, 42.35478753880102], [-72.313815212717458, 42.354604684065741], [-72.31365322541113, 42.354335734212185], [-72.313367834179829, 42.354164441480499], [-72.313013483544211, 42.354039191821201], [-72.312720373948267, 42.353890460071682], [-72.312612440546971, 42.353633461106327], [-72.312581678071552, 42.353364752768329], [-72.312543076652702, 42.353147238004098], [-72.312442779051437, 42.352993181566852], [-72.312258010763685, 42.352707554677345], [-72.312219244355248, 42.352524343164234], [-72.312226894417606, 42.352307131793133], [-72.312273165114547, 42.352072721580036], [-72.312265494830243, 42.35181564416073], [-72.312330709935168, 42.351515826815707], [-72.312434126131521, 42.351213488711949], [-72.312549898078515, 42.351041609941788], [-72.312611435628824, 42.350795837617866], [-72.312719494359825, 42.350618881105568], [-72.312896865131506, 42.350338527805008], [-72.313135799587585, 42.350041443056448], [-72.313313295203585, 42.349761628363282], [-72.313552375409202, 42.349504515919051], [-72.313722028218919, 42.349304074343721], [-72.313914860445792, 42.349018568116264], [-72.314022833734441, 42.348835488681054], [-72.314115147921171, 42.348595709711901], [-72.314277019503891, 42.348337971851777], [-72.314338598649684, 42.348058436032559], [-72.314431276909133, 42.347715117169393], [-72.314477667989934, 42.347349528004159], [-72.314516153171837, 42.34692610409062], [-72.314508486042016, 42.34653793956187], [-72.314462212331719, 42.346148878282776], [-72.31443897671123, 42.34588065684499], [-72.314400538776212, 42.34562883889928], [-72.314346438246005, 42.345451948639145], [-72.314246171648179, 42.345148799983249], [-72.31420002754065, 42.344948805044851], [-72.314145957037042, 42.344651541361223], [-72.314222934140304, 42.344314455752325], [-72.314315293442405, 42.344125904362706], [-72.314253679828141, 42.343685722880252], [-72.314778330524462, 42.343496899790871], [-72.314878301628639, 42.34326822959293], [-72.314893633722562, 42.343073471152437], [-72.31489385211384, 42.342873687982326], [-72.314924767559063, 42.342645056963278], [-72.314878206158241, 42.342393836771485], [-72.314893701907607, 42.342164684796714], [-72.314824312950577, 42.341987902997921], [-72.314708528149396, 42.34155377771139], [-72.314677698592646, 42.341364928331394], [-72.314639055911982, 42.341153626220191], [-72.314623780798414, 42.340890930132744], [-72.314623709008444, 42.340696820966258], [-72.314623587728008, 42.340508294146233], [-72.314646982787508, 42.340336526766876], [-72.314708508736928, 42.340091292889106], [-72.314793325528626, 42.339845353705847], [-72.314885889940157, 42.339616825802374], [-72.315055440124823, 42.339410800330228], [-72.315464111573334, 42.33935955498459], [-72.315679952827381, 42.339421586665615], [-72.31594219390459, 42.339496253306599], [-72.316242832805358, 42.33964996525058], [-72.316620802384264, 42.339786831303563], [-72.316998803724346, 42.339803862825903], [-72.317330140273782, 42.33974073593059], [-72.317630713794301, 42.339626058246836], [-72.319272720260827, 42.337774916829304], [-72.319758229219772, 42.337220547464113], [-72.31995090853033, 42.33700309552426], [-72.320189887889939, 42.336734624883292], [-72.320336204493458, 42.336460692533834], [-72.32071399911699, 42.336191860115889], [-72.321199365453154, 42.33584347963528], [-72.321877870267457, 42.335248918056962], [-72.322270812469398, 42.334848794693244], [-72.322555894649099, 42.334506342283966], [-72.322825647462864, 42.334226391385464], [-72.322949042200591, 42.33399205375347], [-72.323087647782373, 42.333723754827737], [-72.323164644026775, 42.333523421299596], [-72.323180016981567, 42.333277972525956], [-72.323149029345501, 42.33310659237511], [-72.323010364787081, 42.332941024982638], [-72.32281728745852, 42.332752798571128], [-72.322562853020131, 42.332633075506997], [-72.322431961675363, 42.332393174935632], [-72.322346907137828, 42.3321135120542], [-72.322408490156036, 42.331782202029856], [-72.322439237037344, 42.331599125898258], [-72.322477550499286, 42.331354053197316], [-72.322593437061997, 42.331205210414808], [-72.322724270258888, 42.33103942443929], [-72.323063609129619, 42.330942461035661], [-72.323510560220782, 42.330919002636882], [-72.323911466910602, 42.330947101078614], [-72.324204381983463, 42.330947252071631], [-72.324559004394246, 42.330952541725843], [-72.324836470801714, 42.330838010340045], [-72.324998476357081, 42.330643907856533], [-72.325114087651286, 42.3304838103561], [-72.325221705720111, 42.33030630378267], [-72.325321970580248, 42.330020900764197], [-72.32539902570204, 42.329798056914406], [-72.325460561223267, 42.329604044860403], [-72.325568492824743, 42.329329840593715], [-72.32569196499189, 42.329112245147627], [-72.3258765785192, 42.328838029901064], [-72.326053765380763, 42.32847833666353], [-72.326084559453179, 42.328244030408115], [-72.326007396182462, 42.32794693689069], [-72.325783781611051, 42.327724002061835], [-72.325398305973266, 42.327444878378444], [-72.325074220852727, 42.327165222958939], [-72.324904595183398, 42.326988085650243], [-72.324673352937225, 42.326765833636756], [-72.324565500153128, 42.326543146238834], [-72.324534636377322, 42.326297488346697], [-72.324757932269563, 42.326040463562514], [-72.324873186830899, 42.325862902304728], [-72.325104595353736, 42.325651375137497], [-72.325297365710526, 42.325519443745101], [-72.325466753512742, 42.325399474233542], [-72.325728922763957, 42.32526758387862], [-72.325944964833226, 42.325199137330721], [-72.326214516900677, 42.325158936158246], [-72.326430520376888, 42.325449989688366], [-72.32650779012873, 42.326015469864991], [-72.326523059708009, 42.326255657401617], [-72.326538939488344, 42.326449653753819], [-72.326639287700814, 42.326626746738178], [-72.326762470313625, 42.326814929482232], [-72.32708651272317, 42.326877331803374], [-72.327340770542975, 42.326854704446596], [-72.327610426973081, 42.326757058432293], [-72.327841538663861, 42.326551109919492], [-72.327995674740521, 42.326396944066154], [-72.328088187124521, 42.326225215421218], [-72.328180530582031, 42.326059159971734], [-72.328265244105566, 42.325699498982118], [-72.328265383607246, 42.325459830795161], [-72.328218933919629, 42.325248048330444], [-72.328041631194893, 42.324836795660531], [-72.327871983731669, 42.324574671855011], [-72.327733158908487, 42.324294319277321], [-72.327624885145468, 42.324049219456882], [-72.327493918916815, 42.323729465664691], [-72.327370488603691, 42.323392101072166], [-72.327300721614137, 42.322918310539563], [-72.327285228217988, 42.322512644474529], [-72.327323716396293, 42.322078589391666], [-72.327284956805926, 42.321535790456743], [-72.327207774075845, 42.320958515327284], [-72.327230927834151, 42.320678616675856], [-72.32722306807409, 42.320467096082879], [-72.327269282771425, 42.320290119014267], [-72.327361825105868, 42.320084087951415], [-72.327477361878692, 42.319781015900318], [-72.327546648816195, 42.319540849568369], [-72.327700609074355, 42.319272433325189], [-72.327908609733385, 42.319101043146119], [-72.327978173338337, 42.318900759073237], [-72.328116635100514, 42.318746165393776], [-72.328332538812106, 42.318557791280277], [-72.32865632088226, 42.318557077813786], [-72.328872245817891, 42.318648434703825], [-72.328872377287283, 42.318899355410508], [-72.32884924031255, 42.319133607764066], [-72.328833816698918, 42.319419573377566], [-72.329119026392533, 42.319687614832098], [-72.329488969576175, 42.319755891358092], [-72.329874511010544, 42.319755358984956], [-72.330267642150559, 42.319732262269923], [-72.330491232901494, 42.319686170581448], [-72.33093077565043, 42.319668318253591], [-72.331377848554297, 42.319604943159803], [-72.331863414952181, 42.319507435341222], [-72.332302755256265, 42.3194097200291], [-72.332603474431366, 42.319306254867719], [-72.332826758755104, 42.319237112401254], [-72.333073589939175, 42.319122782357923], [-72.333266249144614, 42.318985165885927], [-72.333412691618577, 42.318847974263591], [-72.333551193724944, 42.318688241768641], [-72.333705388849381, 42.318430529451177], [-72.334067612739886, 42.318115667006168], [-72.334406821024416, 42.317932508629902], [-72.33458425201276, 42.317818138898353], [-72.334715180360462, 42.317618035349653], [-72.334707278721226, 42.317331607824201], [-72.334668808664546, 42.316971755315414], [-72.334699355577797, 42.316703145136906], [-72.334814903236804, 42.316514407015376], [-72.33499202996191, 42.316331343620753], [-72.335045943884268, 42.316022588872102], [-72.334968672996396, 42.315765385809044], [-72.334914667502346, 42.315542946473045], [-72.335014719018943, 42.315320018083916], [-72.335246256764478, 42.315142140914212], [-72.335569925590761, 42.315079015779808], [-72.336016961135741, 42.315015622581846], [-72.336363697741618, 42.315009138233961], [-72.336625953852149, 42.314934662705042], [-72.337088253910864, 42.314750599948553], [-72.337396639423275, 42.314642024234075], [-72.337704969294748, 42.314538489938727], [-72.338005613970125, 42.314486779857987], [-72.338244417679903, 42.314446234009374], [-72.338706912532416, 42.314405675958554], [-72.33920050446126, 42.314404953682221], [-72.339578205336679, 42.314364471086343], [-72.33985567800822, 42.31435848217204], [-72.34014086037466, 42.314357568111369], [-72.340726621530976, 42.314391548436653], [-72.34101177333261, 42.314424845015417], [-72.341296952671897, 42.314441934729622], [-72.341559142211381, 42.314436053584849], [-72.341859858676202, 42.314390004953573], [-72.34209114947322, 42.314332039703316], [-72.3423145628675, 42.314229115165794], [-72.342584180510727, 42.313942904136944], [-72.343470151510772, 42.312208939154345], [-72.3436009545036, 42.311865852981391], [-72.343770701465672, 42.311705338066048], [-72.34402497646245, 42.311516111734292], [-72.344209892086781, 42.311401671757068], [-72.344471814208831, 42.311258485220861], [-72.34469517712408, 42.311143761903665], [-72.344895793384822, 42.311051623653398], [-72.345219304466596, 42.310788148344315], [-72.345473522792005, 42.3105589443825], [-72.345558292476312, 42.310330446593746], [-72.345758806315331, 42.310112891265966], [-72.345889714684702, 42.309969585178727], [-72.346259502829525, 42.309775001708822], [-72.348039968792349, 42.309234551128945], [-72.348317171650365, 42.309182986764313], [-72.348656356225135, 42.309176610860632], [-72.348933822550379, 42.309262343801649], [-72.349180395866597, 42.309405115371057], [-72.349365483700169, 42.309575891077763], [-72.349527481851737, 42.30977051593765], [-72.349635684887431, 42.309924483156237], [-72.349843811117196, 42.310130560860706], [-72.350159818222849, 42.310312791596189], [-72.350383410439591, 42.310369658816541], [-72.35071479210859, 42.31038692334414], [-72.350938394897199, 42.310363299664267], [-72.351169647143024, 42.310340249121509], [-72.351354494046618, 42.310185823231059], [-72.351454659402236, 42.309985297237837], [-72.351385002657338, 42.30969437558408], [-72.351192063694754, 42.309454335611257], [-72.351091855300609, 42.309299770409474], [-72.350937889789208, 42.309071325739616], [-72.35075278284279, 42.308917388895672], [-72.350390411172057, 42.308768725191001], [-72.350051281409492, 42.30881517064158], [-72.349789215604389, 42.308792349810041], [-72.349557970377262, 42.308643794116385], [-72.349596405168782, 42.308443726073399], [-72.349719433338109, 42.30828354748617], [-72.349889053506899, 42.308043164848399], [-72.350150922780486, 42.307997381504919], [-72.350466966374782, 42.307957318885492], [-72.350782886757727, 42.307962272964993], [-72.35113730759079, 42.307961899143251], [-72.351530501422715, 42.307967449209436], [-72.351869685521393, 42.307961513939183], [-72.352278017112496, 42.30793822859146], [-72.352563087618918, 42.307778015341881], [-72.352771134617328, 42.307680856149027], [-72.352778722635463, 42.307451755002752], [-72.352616925045282, 42.307326368760265], [-72.352347019782087, 42.307189359643552], [-72.351992535704753, 42.307166689161015], [-72.351691889786196, 42.307287041667109], [-72.351491643042706, 42.307396025510677], [-72.351206406950411, 42.307498886102657], [-72.350959877614883, 42.307476493081651], [-72.350659251419572, 42.307390936491558], [-72.350404817014123, 42.30716827665168], [-72.350181166607612, 42.306979781222545], [-72.349965340025093, 42.306768629122203], [-72.34970311709877, 42.306426190980005], [-72.349556395885969, 42.306031669363591], [-72.349525407214927, 42.30579222971464], [-72.349517574606409, 42.305551988618561], [-72.349532981387171, 42.305335254467565], [-72.349555799084555, 42.305146555918569], [-72.349625012697302, 42.304980652878818], [-72.3497943921911, 42.304677788550464], [-72.349917776372934, 42.304517606935114], [-72.35006399700687, 42.304369050605644], [-72.350341115100235, 42.304168386482417], [-72.350672554506801, 42.304002792673522], [-72.350996128839682, 42.303910903459588], [-72.351281271248325, 42.303910501898926], [-72.351558717074155, 42.304041245302592], [-72.351682277180657, 42.30426424257567], [-72.351652050237064, 42.30534432705177], [-72.351613712767104, 42.305641181125367], [-72.35159080861591, 42.305841044885888], [-72.35166038788951, 42.306081368448012], [-72.351737594673125, 42.306275538341971], [-72.351891777296302, 42.30641223644276], [-72.352200133015742, 42.306423454955564], [-72.352592961493229, 42.306303497514186], [-72.352824122018447, 42.306211748726206], [-72.353093697287392, 42.306108460099658], [-72.35343299327505, 42.306039585973593], [-72.353941348785085, 42.305816307774727], [-72.354211018203586, 42.305684295139343], [-72.354434448368437, 42.305478438180117], [-72.354804035122669, 42.305129060706797], [-72.355188961087165, 42.304631552874639], [-72.356017696207743, 42.3032833435283], [-72.356374866751295, 42.303326779168252], [-72.356675467817368, 42.303429247044654], [-72.356845244414998, 42.303669360823804], [-72.356968749737888, 42.303931787625878], [-72.357169209788765, 42.304252161980813], [-72.357277457393437, 42.304480399513523], [-72.357231241832508, 42.304686110610064], [-72.357215990152511, 42.304903385062801], [-72.357393269750943, 42.305034321498269], [-72.357678694379544, 42.305188669484259], [-72.357763405401684, 42.305371435267297], [-72.357732937804315, 42.305611421747905], [-72.357864099526566, 42.305793840697191], [-72.358087620230975, 42.305828185088451], [-72.358357095284603, 42.305736138958153], [-72.358557607383332, 42.305639025418031], [-72.358796559011594, 42.305746900489048], [-72.358904478334097, 42.305941376394436], [-72.358920184253137, 42.306187140317121], [-72.358935667523497, 42.306398603152353], [-72.359097762730684, 42.306661369388976], [-72.35928286376749, 42.306849595745128], [-72.359522084337627, 42.307003654461589], [-72.3597147968743, 42.307180569012253], [-72.359923085438979, 42.307334318121171], [-72.360115685525287, 42.307431373196003], [-72.360346962739584, 42.307482581458295], [-72.360632149321304, 42.307653760199663], [-72.360370322873038, 42.307791311236429], [-72.360100578435819, 42.307837176877797], [-72.36022408033358, 42.308008486324638], [-72.360401542553547, 42.308214234322698], [-72.360594453225602, 42.308414194469968], [-72.360478865703698, 42.308700375952697], [-72.360193873678767, 42.308740233680943], [-72.359924228699072, 42.308758007702906], [-72.359685121280506, 42.308746831980251], [-72.359407789924532, 42.308689844541838], [-72.35895295244471, 42.308656061539189], [-72.358729546881989, 42.308827714303931], [-72.358637180054629, 42.30907374549065], [-72.358883958561549, 42.309239003213762], [-72.358860810661056, 42.309428246318724], [-72.358938012219866, 42.309611157302136], [-72.359053813666804, 42.309804943813532], [-72.358853526066056, 42.309919522837909], [-72.358599062280192, 42.309885411057031], [-72.358406601361168, 42.310040535858896], [-72.358468237665591, 42.310211678998833], [-72.358275780016598, 42.31034924703313], [-72.357959833927026, 42.310361239923836], [-72.357674561694822, 42.310327356104459], [-72.35732776464576, 42.310390086218312], [-72.357265959037235, 42.310573495054328], [-72.357142948485105, 42.310796614921344], [-72.356934872127013, 42.310945641355453], [-72.356703599986446, 42.311003096373973], [-72.356379923861937, 42.311008840188343], [-72.356326251031945, 42.311237744720138], [-72.356642126278373, 42.311220174820114], [-72.356881065350095, 42.311191383394835], [-72.356950558775466, 42.311351754732598], [-72.356757953626854, 42.31164922040648], [-72.356588578886189, 42.311906537781411], [-72.356449896835386, 42.312164166341503], [-72.356450215325879, 42.312438765522124], [-72.356611922207577, 42.312609703909999], [-72.356820037777453, 42.312740951513092], [-72.356989840346571, 42.312855648237068], [-72.356928309925394, 42.313032752164425], [-72.356743285010495, 42.313164679974058], [-72.356473650914381, 42.313319206204667], [-72.35609623193433, 42.313513879322983], [-72.356142482285676, 42.31379434853315], [-72.356212038511174, 42.313977228085385], [-72.356204385713255, 42.31418274100222], [-72.35615045615431, 42.314366000328178], [-72.355872903331544, 42.314572353172359], [-72.355510594616803, 42.314647077469367], [-72.355163886393939, 42.314727266591149], [-72.354940372838186, 42.314893240245802], [-72.354840475364909, 42.315059464443614], [-72.354671174886207, 42.315368457199099], [-72.354532384248131, 42.315825867648037], [-72.354555777558247, 42.316049066090329], [-72.354725486949533, 42.316174480760161], [-72.354987337774062, 42.316322708395518], [-72.35521103006684, 42.316528750617643], [-72.355141846289357, 42.316831416843669], [-72.354933821070347, 42.316986020960961], [-72.354756666829445, 42.317180910026828], [-72.354694879573927, 42.317483520909768], [-72.354787628259459, 42.31769494905933], [-72.354934338455507, 42.318003391847739], [-72.355227268354142, 42.318197574760035], [-72.355050144437683, 42.318466741346199], [-72.354757323467823, 42.31866699246077], [-72.354556972209451, 42.318878349630417], [-72.354580236964765, 42.319055992116041], [-72.354873281095593, 42.319123588457877], [-72.355096750497879, 42.318998130442523], [-72.355266316821215, 42.319112291222751], [-72.355204709003814, 42.319329369433291], [-72.355104768161553, 42.31954673280822], [-72.354719433203485, 42.31953555394854], [-72.354418749097846, 42.319639076966624], [-72.35429551386845, 42.319838606145616], [-72.354164734807156, 42.320027567334876], [-72.353949209634877, 42.320427565456903], [-72.353741420664193, 42.320690745364651], [-72.353463823758659, 42.320896461947271], [-72.353124919281754, 42.321108305009453], [-72.353001890555305, 42.321251650506909], [-72.35313300304486, 42.321411026292992], [-72.353325666340666, 42.321582369530994], [-72.353341468508134, 42.321827592365544], [-72.353549621995867, 42.32194191930995], [-72.353796155524719, 42.321987355570997], [-72.353996987690209, 42.322152424723882], [-72.35376580841222, 42.322255969617672], [-72.353526940776405, 42.322347236602091], [-72.353542432697253, 42.322524396453375], [-72.353658112859776, 42.322735655244692], [-72.353666342130239, 42.323003982695738], [-72.353589289552986, 42.323255026933261], [-72.353774544047582, 42.323443260605742], [-72.354052042028115, 42.32351718688188], [-72.354329550333532, 42.323699692283967], [-72.354252936658867, 42.323911209170134], [-72.354060323152723, 42.324076950872666], [-72.353860209671737, 42.324208445365713], [-72.353598126128105, 42.324306097149531], [-72.353220389298741, 42.32431169281201], [-72.352827207899153, 42.32426059098664], [-72.352619637256268, 42.324478210194172], [-72.352288263198531, 42.32463822561963], [-72.352064700145718, 42.324758636680947], [-72.351756344316158, 42.32484420267226], [-72.351417220978135, 42.324816284056404], [-72.35117828025912, 42.324885038304508], [-72.351255758874601, 42.325061739499724], [-72.351625831439165, 42.325198549291663], [-72.351880358504928, 42.325341256162687], [-72.351772527540277, 42.325523831915135], [-72.351842046623901, 42.325694919614008], [-72.352119665630212, 42.325723202950869], [-72.352435827447465, 42.325757502093765], [-72.352713575060974, 42.325939379342884], [-72.35282913859308, 42.326150729739126], [-72.352945065626869, 42.326298964190066], [-72.352667784225787, 42.326368005986609], [-72.352328673468335, 42.326539873103961], [-72.352405723879158, 42.326756461285591], [-72.352544915006831, 42.326956382592201], [-72.352575834659419, 42.327162058445104], [-72.352668673950603, 42.32742471623601], [-72.352907622573184, 42.327527021572457], [-72.353254578997436, 42.327549835895574], [-72.353593930091208, 42.327692449507381], [-72.35342443857779, 42.32790924696436], [-72.353154649893924, 42.328075559865226], [-72.352938802151328, 42.328184030845591], [-72.352692335249543, 42.328361423696002], [-72.352461314187579, 42.328487562741003], [-72.352230130792748, 42.328727864283273], [-72.352415147709223, 42.32887054511076], [-72.352646481186952, 42.32893860491702], [-72.352900941875532, 42.329093104350243], [-72.352700688571289, 42.329287620639562], [-72.35261610138221, 42.329493613198231], [-72.352492871846977, 42.329659377453055], [-72.352315443519998, 42.329539778951023], [-72.352099517275335, 42.329408581216548], [-72.351991656451929, 42.329625459733016], [-72.351899295137684, 42.329785952694429], [-72.351675580375115, 42.329689114432405], [-72.351459647680457, 42.329557375356544], [-72.351128239983098, 42.329563701117486], [-72.35116657339708, 42.329752486387029], [-72.351490597092024, 42.330008931249452], [-72.351621739665802, 42.330169478773236], [-72.35171428535331, 42.330329141704738], [-72.351783756967592, 42.330523368108132], [-72.351961041420694, 42.330803407108817], [-72.352238757882745, 42.330963407700217], [-72.352531672001049, 42.331134549026672], [-72.3527011964525, 42.331414644437139], [-72.352747641560114, 42.331637671506861], [-72.352763254905952, 42.331814830436848], [-72.35264748961221, 42.33212963359491], [-72.352570261691923, 42.332386800083356], [-72.352393057062713, 42.33258168486735], [-72.352223481157779, 42.332730415981445], [-72.352038812300435, 42.332947863739733], [-72.352077059329673, 42.3331479033506], [-72.352200542730642, 42.333324802881862], [-72.351946297693203, 42.333376745648131], [-72.351699405797731, 42.333199679845414], [-72.351614589911563, 42.333434393602154], [-72.351491493811977, 42.333628876053353], [-72.351244614336352, 42.333542922424286], [-72.350990259451166, 42.333640960684612], [-72.35106761913363, 42.333835128999937], [-72.351345218041061, 42.333994592400764], [-72.351568876141684, 42.33419433926661], [-72.351199105237157, 42.3344176582196], [-72.351276201538283, 42.334583107855835], [-72.350975705141067, 42.334715340039381], [-72.351052919474256, 42.334943721871525], [-72.351045352447272, 42.335166068884284], [-72.351184451465528, 42.335349066097983], [-72.351431060887393, 42.335297181654198], [-72.351639331553613, 42.335417183230028], [-72.351778287005232, 42.335679499692979], [-72.351554722705757, 42.335748680529747], [-72.351694081162947, 42.33595976543409], [-72.351879080595694, 42.336090652883861], [-72.352087496918813, 42.336284299397413], [-72.352272311318288, 42.336176060491404], [-72.352210643754844, 42.335976194677635], [-72.35235686395346, 42.335804588522777], [-72.352511105184774, 42.335958211213999], [-72.352680976689683, 42.336101003865025], [-72.352927875370426, 42.336277527306031], [-72.352997644870683, 42.336529101484487], [-72.353036329170379, 42.336797201981319], [-72.353183240827306, 42.336973926548097], [-72.352905639903625, 42.337031716688053], [-72.352666699334492, 42.337157824400144], [-72.35287497848357, 42.337259817132974], [-72.353237429096964, 42.337356793955024], [-72.353499835905424, 42.337584969917913], [-72.353338083091145, 42.33775669274673], [-72.353021944723878, 42.337836647139099], [-72.352875539641801, 42.33798574722293], [-72.35288365357718, 42.338173585408732], [-72.353122726879135, 42.338282101700827], [-72.35343911139897, 42.338373207483706], [-72.353662988709544, 42.338515597752377], [-72.35364776267167, 42.338727287801412], [-72.35340108928159, 42.338910265042422], [-72.353455263476818, 42.339138906214252], [-72.353686498619695, 42.339115851648799], [-72.353917853722436, 42.339092705693155], [-72.354156872034366, 42.339223728449575], [-72.354187940601165, 42.339457582779062], [-72.354018434190564, 42.339675460846962], [-72.353926063913946, 42.339871968180923], [-72.354021376825273, 42.340100303494687], [-72.354377028980181, 42.339962071745575], [-72.354533249645584, 42.339820819746521], [-72.354766935928211, 42.339808368672863], [-72.354972936232457, 42.339911454972047], [-72.354981340295922, 42.340165194792426], [-72.355045387383342, 42.34037854624831], [-72.355190210760554, 42.340507476361907], [-72.355391681694371, 42.340679290589819], [-72.355414910915528, 42.3408625144477], [-72.355438216231178, 42.34103340324387], [-72.355607986618438, 42.341176192315572], [-72.355608157197182, 42.341422160240867], [-72.35545403490363, 42.341548182496226], [-72.355330328079347, 42.341742673230357], [-72.355384633019099, 42.341971312449367], [-72.355808751986601, 42.342085198785533], [-72.356148177191841, 42.342182247925322], [-72.356302163187081, 42.342342079659936], [-72.356117206691621, 42.342548281465454], [-72.35580102639581, 42.342662546037516], [-72.355523557636658, 42.342794618253897], [-72.355299910630634, 42.342634763539841], [-72.355030114632015, 42.342715008680408], [-72.355014746804756, 42.342897979369042], [-72.355076235329349, 42.343155285681213], [-72.355269166889016, 42.343332205423245], [-72.355438873889014, 42.343451946819997], [-72.355862701375656, 42.343606349873333], [-72.356047861761084, 42.343468751948237], [-72.356279095423119, 42.343274089991183], [-72.356564124099904, 42.343234243168887], [-72.356603088770811, 42.343423021546542], [-72.356440860167496, 42.343622842219418], [-72.3565332035176, 42.343783132779386], [-72.356810844684972, 42.343833913290887], [-72.357034204587961, 42.343891310018762], [-72.357211677195977, 42.34402845727756], [-72.35735799720031, 42.344240023506252], [-72.357627548783398, 42.344383235925001], [-72.357874208816312, 42.344502939921163], [-72.357943541976525, 42.344720211663535], [-72.358166959406233, 42.344879972948114], [-72.358374823405114, 42.34494882687094], [-72.359014359785718, 42.345337313374728], [-72.359376226592516, 42.345565903239994], [-72.35948432479924, 42.345795218783579], [-72.359576575186153, 42.345983597795666], [-72.359507113336718, 42.346195153436724], [-72.35916808116572, 42.346280967518886], [-72.359021884679507, 42.34605247654239], [-72.358621173406306, 42.345966607569757], [-72.358467244348788, 42.3460983040911], [-72.358505679667147, 42.346310134075168], [-72.358613545923134, 42.346504609478473], [-72.358806350503983, 42.346652803835561], [-72.358906419954749, 42.346836083113658], [-72.35898335962878, 42.347139368558437], [-72.358860079586833, 42.347356367824901], [-72.358613695941017, 42.347499469142313], [-72.358420902551785, 42.347602735550176], [-72.358259066360333, 42.347751327071585], [-72.358027722583742, 42.34791178116685], [-72.358120405652997, 42.348123206373074], [-72.358444091404081, 42.34813996720294], [-72.358690647861053, 42.348197187600263], [-72.358890996344968, 42.348328489361421], [-72.358991027419606, 42.348562367141263], [-72.358922065158737, 42.348820015466572], [-72.358739584949873, 42.349012697730849], [-72.358544279284231, 42.348877486656953], [-72.358289955144727, 42.348757841284495], [-72.358074282510671, 42.34888378597897], [-72.358135966784957, 42.349100484288513], [-72.3582441785356, 42.349391742412543], [-72.358429186724194, 42.349546207807656], [-72.358737288279514, 42.349523109729823], [-72.359022593108278, 42.349465878711172], [-72.359276596853775, 42.349373948241322], [-72.359492408510008, 42.349436978715836], [-72.359507879455634, 42.349619809335856], [-72.359392638776342, 42.349785520387904], [-72.359223057908778, 42.349962891451057], [-72.358984324629404, 42.350008611010757], [-72.358660592108691, 42.349917575096754], [-72.358398575584687, 42.349929074854408], [-72.358221397071063, 42.350083452786862], [-72.357836228742684, 42.350232629838814], [-72.357458418874216, 42.350306933643601], [-72.357219468345221, 42.350318888923127], [-72.356749234261599, 42.350353274675619], [-72.356502778514113, 42.350456397334007], [-72.356448957609743, 42.35066783452686], [-72.356757447408199, 42.350941846121323], [-72.356942856323798, 42.35129609310281], [-72.356649850688328, 42.351359048282802], [-72.356704098091726, 42.351564548559239], [-72.356935436824571, 42.351769899634057], [-72.357158963885951, 42.351855475168037], [-72.357652429479714, 42.351958124159182], [-72.357760594608422, 42.352192032195795], [-72.357876898343818, 42.352426329570591], [-72.357923428973237, 42.352814292733662], [-72.357947011421317, 42.353094298006916], [-72.357700229753419, 42.353111354448288], [-72.357422574232956, 42.353134222584579], [-72.357253878084578, 42.353700434303569], [-72.357493309263319, 42.353848373199405], [-72.357639896956968, 42.353979447736897], [-72.357362770330042, 42.354122235036805], [-72.357193293519387, 42.35429960203161], [-72.357370812205559, 42.354464838743816], [-72.357617787636045, 42.354533312475695], [-72.357780022244782, 42.354681286275614], [-72.357788007626468, 42.35485841064488], [-72.35812713114764, 42.354829501003181], [-72.358358668868675, 42.354869367989394], [-72.358343478584672, 42.355091771587205], [-72.358505873363285, 42.355313929939861], [-72.358799027044881, 42.355439497129439], [-72.358969129470722, 42.355639088922914], [-72.358753506042959, 42.355788172513684], [-72.358715409886585, 42.355959518695585], [-72.358877514207762, 42.356204726988267], [-72.358947431771895, 42.356410199068257], [-72.358986503408886, 42.356695130074343], [-72.358771320625692, 42.356975297599519], [-72.358455609668468, 42.357147005802048], [-72.358355616070426, 42.357301437575238], [-72.358124807709785, 42.357575508205457], [-72.358140549501286, 42.357769500665569], [-72.358148585013069, 42.358066547716028], [-72.358010250009059, 42.358249355354125], [-72.357864050982556, 42.358398369286633], [-72.357579051576565, 42.358615492290731], [-72.35740174599205, 42.358735567068557], [-72.357324812878716, 42.358952758571064], [-72.357363563271818, 42.359169627829459], [-72.357325529196601, 42.359444510163698], [-72.357240799647272, 42.359695611862996], [-72.357410673159407, 42.359895747946709], [-72.357619033501351, 42.360078220531982], [-72.357747498610323, 42.360223565085477], [-72.357785800610472, 42.36038929888749], [-72.357747358937758, 42.360589277403506], [-72.357763125578344, 42.360811989921089], [-72.357763279336098, 42.361029236867111], [-72.357786401513621, 42.361212460328176], [-72.357871078545259, 42.361440871046113], [-72.357986996962822, 42.36166337659342], [-72.358210179234817, 42.361908760160233], [-72.358379803620963, 42.362268794083164], [-72.358287320764177, 42.362440545742835], [-72.358171374865435, 42.362663610759562], [-72.358194268339716, 42.362892482181927], [-72.358340718015313, 42.363092251423858], [-72.358425258090293, 42.363354965007908], [-72.358702999402539, 42.363531875918447], [-72.359034242751207, 42.363697042492305], [-72.359257540275792, 42.36391433305446], [-72.359288250507575, 42.364199956218627], [-72.359064763742893, 42.36430849407266], [-72.358925753919891, 42.364531822051156], [-72.358848634795791, 42.364726507592081], [-72.35864032638915, 42.364898043883684], [-72.358401091745037, 42.36508097438054], [-72.358138786112136, 42.36501315675396], [-72.357899879570653, 42.364853421326707], [-72.357606674051951, 42.364888289712361], [-72.357320938572315, 42.365008542072012], [-72.357174269049963, 42.365168902346745], [-72.357143183007736, 42.365374497623577], [-72.35706638818823, 42.365745912794019], [-72.3567577751502, 42.366014977641257], [-72.356464665890726, 42.366272582115528], [-72.35636464887142, 42.366507410659722], [-72.356696506144928, 42.366609646821928], [-72.356997670910886, 42.366677718411324], [-72.357314586700952, 42.36673441778261], [-72.357731287378456, 42.366745356071824], [-72.358032589724289, 42.366796587906279], [-72.358519478671113, 42.367041083568388], [-72.358697786543203, 42.367190016326802], [-72.359038753973778, 42.367435058931342], [-72.359303069853098, 42.367766203845548], [-72.359536354847393, 42.368011509224218], [-72.359823812300391, 42.36822264709312], [-72.360142726752656, 42.368416622951699], [-72.360515315602186, 42.368593360358723], [-72.360764866939789, 42.368775428965655], [-72.360799523946326, 42.369055980141241], [-72.360764808432506, 42.369342092261846], [-72.360823688189228, 42.369644970179984], [-72.361029121327363, 42.36986797268051], [-72.36110387981698, 42.370142011293154], [-72.360788001281179, 42.37023440782739], [-72.360532252980306, 42.370257659077708], [-72.360527660214402, 42.370428754620811], [-72.360771899344456, 42.370594657137197], [-72.360660829995155, 42.370846407983692], [-72.360711486074862, 42.371035636740764], [-72.360816614078843, 42.371212663616234], [-72.361087874131542, 42.371178041622585], [-72.361415589299384, 42.371223394963941], [-72.361311320331993, 42.37141270318034], [-72.361617710117329, 42.371532492191605], [-72.36195323799204, 42.371589669741383], [-72.362181008735121, 42.371686998126329], [-72.36247220787476, 42.371841201001565], [-72.362764759497466, 42.372041039321594], [-72.362908126372872, 42.372190227634391], [-72.363036224706704, 42.372332687880579], [-72.363196613158721, 42.3725279346341], [-72.363554652415786, 42.372899421040287], [-72.363778642574403, 42.373208350291463], [-72.363892089178307, 42.373460128631422], [-72.363988731462342, 42.373637216335744], [-72.363976341031901, 42.373814582740501], [-72.363956620769002, 42.373997586182348], [-72.363914482039348, 42.374334983068955], [-72.363909644874695, 42.374620871258429], [-72.363980442962159, 42.374923657838636], [-72.364063047846997, 42.375095178845157], [-72.36428239903401, 42.375206071174553], [-72.364083247708564, 42.375524930572432], [-72.363844006930208, 42.375806997407899], [-72.363967621293824, 42.375984962898869], [-72.364326336794392, 42.37618204949456], [-72.364295563935144, 42.376382602172569], [-72.364010297984848, 42.376371240288584], [-72.3637098091871, 42.376445522501186], [-72.363632557141557, 42.376657137758933], [-72.363662908507422, 42.376914581771317], [-72.363847651197347, 42.377273863212388], [-72.363885554193715, 42.37747957201104], [-72.36393128369464, 42.377662623958805], [-72.363946575479588, 42.377839782294828], [-72.363914925508681, 42.378154051882575], [-72.363814115662692, 42.378365754047621], [-72.363782928818736, 42.378553975183372], [-72.364021323540939, 42.378662474216441], [-72.364190275327104, 42.378816510475282], [-72.364459334253183, 42.378867337791519], [-72.364621538947247, 42.378678762060403], [-72.364506799895764, 42.378484344793812], [-72.364438066768074, 42.378262031899474], [-72.364554063165457, 42.378113237494773], [-72.364846459882529, 42.377952853282039], [-72.365062549902532, 42.377815640201291], [-72.365392828428995, 42.377814866712029], [-72.36573841331105, 42.3778943757533], [-72.366021775499831, 42.378094274958364], [-72.366144020997041, 42.378242447777353], [-72.366258465839692, 42.378459373695968], [-72.366342350211539, 42.378670317430654], [-72.366441589882982, 42.378858637425999], [-72.366494723438763, 42.379058558627605], [-72.366570081901074, 42.379595392267916], [-72.366569274753203, 42.380041597295318], [-72.366622141048637, 42.380470021778777], [-72.366629779279819, 42.380664073354183], [-72.366660208816938, 42.38086416544057], [-72.366598501425941, 42.381172990046608], [-72.366406163723056, 42.381413563811769], [-72.366106441286533, 42.381625145114853], [-72.365806683723108, 42.381745613469064], [-72.365468325595799, 42.381752030758442], [-72.365176231517282, 42.381758189173851], [-72.364922551560042, 42.381598579208067], [-72.364692048528539, 42.381553045117656], [-72.364461116745005, 42.381564954213836], [-72.36423038257962, 42.381582443345877], [-72.363976492135194, 42.38167384213083], [-72.363729985131641, 42.38181686328371], [-72.363683665185832, 42.382017532225881], [-72.364014334982016, 42.382177106909488], [-72.364398964802362, 42.382250744837322], [-72.364676008746414, 42.382307183738256], [-72.364914131866939, 42.382341406586058], [-72.365121831041989, 42.382415291744564], [-72.365475617556399, 42.382586482615061], [-72.365836722782831, 42.382946144335733], [-72.366259796566624, 42.383511871740758], [-72.366990966468634, 42.384448908745121], [-72.367075917321486, 42.384940563390337], [-72.367053001681654, 42.385129263032745], [-72.366830057539616, 42.385352691692802], [-72.36649951997741, 42.385461509307426], [-72.365522055318891, 42.385748505997235], [-72.365168469840924, 42.385886213314372], [-72.3648837918483, 42.386000893573787], [-72.364645171811603, 42.386144487368405], [-72.364291200998792, 42.386316497000585], [-72.364106500524755, 42.386442308431654], [-72.363814157149449, 42.386671834240516], [-72.363706560057466, 42.386992255244017], [-72.363752946166528, 42.387249578287971], [-72.363845749218044, 42.387535272980195], [-72.363976598750341, 42.3876722193258], [-72.364099925484268, 42.38788962048806], [-72.364269592739419, 42.388129721588754], [-72.364539222229098, 42.388174962645003], [-72.36492411545278, 42.388282899160394], [-72.365178303166928, 42.388380023136243], [-72.365409389740037, 42.388448600142603], [-72.365794575689634, 42.388630897669962], [-72.365964100264904, 42.388762418922539], [-72.366033885896755, 42.389042613066337], [-72.366041931775413, 42.389408351995392], [-72.366026971220251, 42.389734830104672], [-72.365965436298524, 42.389906353773824], [-72.365834915744884, 42.390157714599376], [-72.365650272495003, 42.390421366655637], [-72.365496500216821, 42.390633468034537], [-72.365481415295775, 42.390844616118549], [-72.365735752118965, 42.390987293873749], [-72.36615167162617, 42.391026928843424], [-72.366475162771593, 42.391084184364516], [-72.36669857299907, 42.391123556282579], [-72.366775859459551, 42.391312581151666], [-72.366706769046942, 42.391535390184657], [-72.366629735840121, 42.391781307130934], [-72.366506811685497, 42.391993267481496], [-72.366722705848687, 42.392113184414512], [-72.366969232708712, 42.392084317642329], [-72.367269455492547, 42.392100601735756], [-72.367593239146217, 42.392249504341059], [-72.367762725902224, 42.392483479432471], [-72.36780159990559, 42.392660999100912], [-72.367809640404644, 42.392963625420123], [-72.367462847153206, 42.392952735584693], [-72.36717026282669, 42.393033178591885], [-72.367239849767003, 42.393324717305156], [-72.367286341086967, 42.393490925495676], [-72.367417289481722, 42.393713307312971], [-72.367579047730644, 42.393861810679894], [-72.367718032790378, 42.394067835801522], [-72.367633370251653, 42.394341900727767], [-72.367356107401548, 42.394468324876399], [-72.367125196862716, 42.394582604895668], [-72.36736397846569, 42.394696766184047], [-72.367541209545678, 42.394919339133502], [-72.367602869768959, 42.395217149479805], [-72.367787888060505, 42.39532550305421], [-72.368073008322412, 42.395479197486573], [-72.368227116887894, 42.3956451337638], [-72.36833508553039, 42.395856433896256], [-72.368342864015247, 42.396033647722639], [-72.3685739755783, 42.396199002432795], [-72.368828177351077, 42.396444670730354], [-72.368458214369511, 42.396684967190772], [-72.368396697710054, 42.396902047800268], [-72.368319540047068, 42.397165432663698], [-72.368026594392987, 42.397371294544911], [-72.367911047326587, 42.397537104186597], [-72.367926206884476, 42.39786272458511], [-72.367941853626633, 42.398091106818796], [-72.36812618246482, 42.398325509427828], [-72.368488319255349, 42.398319355715131], [-72.368804127155144, 42.39833614860585], [-72.368981323983661, 42.398484443363373], [-72.369019633883156, 42.398655754496566], [-72.369034989736789, 42.398827328989498], [-72.368957733886418, 42.399004014383223], [-72.368857361854865, 42.399204552583043], [-72.368795512926638, 42.399432889738314], [-72.368764316034344, 42.399655413482492], [-72.368972018792462, 42.399866500107741], [-72.36924109104001, 42.400105842929747], [-72.369364276077476, 42.400283355176256], [-72.369294580446223, 42.400488703717727], [-72.369147717702674, 42.400780165114504], [-72.368931049071449, 42.401065941207236], [-72.368699530121191, 42.401323108863075], [-72.3686216693132, 42.401677070757707], [-72.368582362833024, 42.401928375621132], [-72.368543772235185, 42.402099186778443], [-72.368365777291359, 42.402362161878919], [-72.368180536146568, 42.402522195177596], [-72.367995229204183, 42.402659810790965], [-72.367787294855674, 42.402750870316439], [-72.367455696245131, 42.402859697337483], [-72.36710130586718, 42.402963113384281], [-72.366854780335771, 42.402986308046387], [-72.366608246430019, 42.40310637622693], [-72.366514969506952, 42.40332927651982], [-72.366576189135202, 42.403506087734741], [-72.366790645132667, 42.403739725218905], [-72.367449589660453, 42.404565841798849], [-72.367579626034441, 42.404782017725502], [-72.367709580598955, 42.404930220293146], [-72.367793504939826, 42.405141161667672], [-72.367800049101305, 42.405334680157239], [-72.367798969258487, 42.405556886155864], [-72.367975155232173, 42.405745254002809], [-72.368243868553336, 42.405824255515668], [-72.368465971565087, 42.406012186174671], [-72.36851846016215, 42.406251454043691], [-72.368609970926698, 42.406421823349966], [-72.368824469110038, 42.40660422875397], [-72.368977435068544, 42.406729118057648], [-72.369192462474004, 42.406808522711088], [-72.369360163417838, 42.407041878252684], [-72.369450940953215, 42.407326502427892], [-72.369816886210231, 42.407769933366886], [-72.369968823615423, 42.408031587000231], [-72.370207103445964, 42.408105232060436], [-72.370545179602814, 42.408138688032757], [-72.370791344819295, 42.408149700339877], [-72.37102091301432, 42.408313981344563], [-72.371219891017006, 42.408444731633821], [-72.371411037776781, 42.408615424836128], [-72.371432525392578, 42.408825755829113], [-72.371283159669417, 42.409235989807236], [-72.370950638915389, 42.409429823456215], [-72.370649742303883, 42.409555893287546], [-72.370456008414038, 42.409726707848996], [-72.370132173628818, 42.409801721863744], [-72.369915478050572, 42.4099727090762], [-72.369728600518343, 42.410297694449802], [-72.369773083640013, 42.410519645986021], [-72.369917310003416, 42.410741383868356], [-72.370100435020419, 42.410911599618679], [-72.37029134947818, 42.41104745419743], [-72.370551682651325, 42.411177741675424], [-72.370780805246156, 42.411370656490668], [-72.370994302620602, 42.411558107142746], [-72.371246598698022, 42.411739681772822], [-72.371461692999034, 42.411796033685114], [-72.371691549050055, 42.411909623437431], [-72.371890164567432, 42.412057211178038], [-72.37210475246998, 42.412164793627348], [-72.372349619209004, 42.41231824207815], [-72.372517484117779, 42.412482357487391], [-72.372700476233035, 42.412721264120457], [-72.372868218078835, 42.41292031214946], [-72.373190220451036, 42.413107476051657], [-72.373320240945091, 42.413249459549903], [-72.373534587922862, 42.413391883346463], [-72.373648486328875, 42.413641936515297], [-72.373585505688695, 42.413858489957832], [-72.373375598993889, 42.414160607739234], [-72.373205082656781, 42.414394272509298], [-72.373003850004892, 42.414576942101498], [-72.37281783557539, 42.414788305978654], [-72.372670762946314, 42.414925008376521], [-72.372408364354541, 42.415130648433518], [-72.372269061459036, 42.415302223582913], [-72.372129844531855, 42.415559327707115], [-72.372067342738262, 42.415775876537325], [-72.371966989425388, 42.415970204215782], [-72.371958511071369, 42.416209931926382], [-72.372050340441504, 42.416375254101453], [-72.372226926979096, 42.416545515939951], [-72.372403478719505, 42.416721989934899], [-72.37265730433036, 42.416933350220027], [-72.372949792531983, 42.417058346557226], [-72.373296208965286, 42.417137827555536], [-72.373642718078045, 42.417171210758589], [-72.37391241144509, 42.417176456122341], [-72.374166686129641, 42.417279231880023], [-72.374073958276696, 42.417444783444736], [-72.373951010654594, 42.417639284363965], [-72.373997319711663, 42.417833670573444], [-72.374205443261999, 42.417981722288481], [-72.374544945118643, 42.41815812580186], [-72.374689656841483, 42.418324664656602], [-72.374857748139107, 42.418485983891507], [-72.375018091402964, 42.418658075506393], [-72.375170836511643, 42.418790340781243], [-72.375376911142624, 42.41900935065933], [-72.375452026540344, 42.419203967358371], [-72.375464831703113, 42.419444163592992], [-72.375416032342031, 42.419649355971579], [-72.375329413540499, 42.419826115908535], [-72.375296548146963, 42.419997425308352], [-72.375263255566438, 42.420225637725423], [-72.375292160589993, 42.420408811719525], [-72.375382579582009, 42.420751953722331], [-72.483560530010578, 42.407441565569215], [-72.489784388736567, 42.433757682108649], [-72.499513177864202, 42.432524014511905], [-72.530935946083659, 42.428749165633228], [-72.544152661534781, 42.427082027918921], [-72.579432634118533, 42.422750149123239], [-72.58110224827962, 42.422575842126484], [-72.585658579640011, 42.423153655543821], [-72.622221177467523, 42.4150797071377], [-72.624567139161499, 42.415048437815102], [-72.629140777567898, 42.414826384432494], [-72.629143241355692, 42.414318205321656], [-72.669090934473928, 42.40963371373909], [-72.704317748981026, 42.405502497253622], [-72.700899541180505, 42.452930540818585], [-72.74956062125824, 42.447070973489957], [-72.757676092630518, 42.446012495508704], [-72.757058878342178, 42.452481006383749], [-72.765878821565153, 42.451765946273532], [-72.765062628212618, 42.455958784442096], [-72.75904255705511, 42.456572254795056], [-72.758286173518499, 42.461022061688595], [-72.764230573558052, 42.460202925257725], [-72.763738213041705, 42.463744472831145], [-72.773537204193929, 42.465597619919258], [-72.773253186956964, 42.466842710127814], [-72.831428319191986, 42.477067628660436], [-72.831430857591172, 42.47647281978189], [-72.855792354313692, 42.481074828222333], [-72.871092895082754, 42.484159860333101], [-72.87459015645284, 42.50010365534424], [-72.874581791211995, 42.503512802777863], [-72.875126607016682, 42.507211838700528], [-72.874566378302063, 42.509766005650121], [-72.874565598090356, 42.510070967547961], [-72.874565055412248, 42.510252757085865], [-72.871283625109712, 42.524529313361271], [-72.874575040132299, 42.52558234690644], [-72.875473731836863, 42.525889636293194], [-72.876709896566055, 42.531715323703359], [-72.876846058882407, 42.541188321913964], [-72.975341993164477, 42.556052110933784], [-72.955577556142885, 42.625093139057057], [-72.954559871616226, 42.628612807564892], [-72.950979503420328, 42.640952024591833], [-72.95104085357157, 42.641317602804705], [-72.952584773481561, 42.65053343750521], [-72.952650118858372, 42.65086520107824], [-72.952912796193246, 42.650895120667563], [-72.953244691071518, 42.650948838346835], [-72.95359130002926, 42.651058731173343], [-72.95391390966121, 42.651243743134167], [-72.954081299369861, 42.651472933669453], [-72.954233082742761, 42.651702320390093], [-72.954300485355915, 42.651879829119785], [-72.954421842621855, 42.652080337545286], [-72.954641450829598, 42.652447251976113], [-72.954890771016906, 42.652928044591178], [-72.955103129623524, 42.653260746508089], [-72.955282285130721, 42.653787438984708], [-72.955479063324944, 42.654448419680804], [-72.955580336433044, 42.654703110084782], [-72.955638023457283, 42.655045682286577], [-72.955628938154064, 42.655771109011802], [-72.955666766543814, 42.65646281213985], [-72.955656631925137, 42.657913023123434], [-72.955586659918296, 42.658563857971018], [-72.955518599937719, 42.659054768707847], [-72.955460483687858, 42.65937962199898], [-72.955371375444642, 42.659693611348366], [-72.95534604887257, 42.659864454092528], [-72.955281759227162, 42.660070090344036], [-72.955193715748507, 42.66030357597252], [-72.955066043299951, 42.660616970187505], [-72.954953649230049, 42.660947548339152], [-72.954889762520963, 42.661112664069258], [-72.954808453959856, 42.661426554547141], [-72.95472887912419, 42.661614916258216], [-72.954702681968911, 42.661843211121742], [-72.954604917842261, 42.662242210179514], [-72.954586525082703, 42.662470406499857], [-72.954583325781812, 42.662733164740438], [-72.954542301194735, 42.66292167120632], [-72.954532044851476, 42.663127166854181], [-72.954559174894001, 42.663430148419792], [-72.954609383697871, 42.663744633852126], [-72.954661526978498, 42.663910539552134], [-72.954719542005705, 42.664224926638397], [-72.954754685015033, 42.664510340699138], [-72.95479805709229, 42.664750634376716], [-72.954812809606366, 42.665436413955852], [-72.954886952383376, 42.665693696640645], [-72.95496995969782, 42.665854171695898], [-72.955176400001491, 42.666060900309489], [-72.955368196686337, 42.666193535344668], [-72.955560399105238, 42.666285649887044], [-72.955799003657262, 42.666390144419147], [-72.956068465546267, 42.666494249688846], [-72.956361113758362, 42.666598602352003], [-72.956730784843529, 42.666720530337209], [-72.957054662771583, 42.66681944573466], [-72.95736301425049, 42.666901089530768], [-72.957811344254239, 42.666931988641196], [-72.958182117459955, 42.666980160681746], [-72.958754408182827, 42.66700616054208], [-72.959597423956623, 42.667021986419783], [-72.959913795256384, 42.667081013785754], [-72.960168540799287, 42.667134066411869], [-72.960431167632578, 42.667163970297523], [-72.960871393594942, 42.667229262772914], [-72.961250287799103, 42.667248691690084], [-72.96150573763866, 42.667226914590131], [-72.961792848597554, 42.667165841952148], [-72.962002586652616, 42.667098454706121], [-72.96228386122165, 42.666859728585123], [-72.962401910973128, 42.666695003930201], [-72.962551580075043, 42.666478739898601], [-72.962654890032553, 42.666262522189967], [-72.962820571298437, 42.666000408050984], [-72.963034746554712, 42.665567786245603], [-72.963209069606492, 42.665226242395583], [-72.963346100976182, 42.664786763637309], [-72.963518954804385, 42.664576326831131], [-72.963667755111345, 42.664417513591857], [-72.963855561426797, 42.66424686180995], [-72.964096381601806, 42.664168362814117], [-72.964367959154288, 42.664095775925134], [-72.964740300784825, 42.664017859745776], [-72.965119476255069, 42.664002969354819], [-72.96555346823483, 42.663947947778091], [-72.965785851143963, 42.663926363503499], [-72.966110859606573, 42.663916658574024], [-72.966489839234171, 42.663924814800041], [-72.96673716998292, 42.663937431813103], [-72.96701539953952, 42.663961990680853], [-72.967247026595842, 42.663991732303693], [-72.967733391308244, 42.664074419458835], [-72.967965141075183, 42.664104158092478], [-72.968212164797876, 42.664145406602266], [-72.968675667775159, 42.664199749528869], [-72.969179097968492, 42.664156256479323], [-72.969404003515891, 42.664112251536629], [-72.969908168715193, 42.664006262484314], [-72.970164145095751, 42.66394502451071], [-72.970528561961032, 42.663872862525608], [-72.971010060292386, 42.66372105971795], [-72.97127487935343, 42.663568502402001], [-72.971648147732665, 42.663410691974434], [-72.971944360496849, 42.663223520405779], [-72.972255879688532, 42.66305974191706], [-72.97253660927673, 42.662878348123591], [-72.972685198789705, 42.662748156314912], [-72.973576454546148, 42.661981590484082], [-72.974467773377597, 42.661192597828169], [-72.974803583531425, 42.660926043530957], [-72.975130146994374, 42.660790785776364], [-72.975447757517401, 42.660752427945852], [-72.975764434499695, 42.660793941327029], [-72.976141937337559, 42.660921919820318], [-72.976403613491883, 42.661031659552776], [-72.976618814272825, 42.661141452379916], [-72.976833721215399, 42.661290683466341], [-72.977033031952018, 42.661440653711473], [-72.977354294348032, 42.661744913466684], [-72.977567852135252, 42.661997609533984], [-72.977865924840614, 42.662295951817697], [-72.978463548099015, 42.662773410627999], [-72.978724321367551, 42.662963647142369], [-72.979153713218935, 42.663279483170307], [-72.979352830774346, 42.663451870410505], [-72.979582721293767, 42.663630705901973], [-72.97974335817932, 42.663779996247435], [-72.979904108536928, 42.663923702811388], [-72.980072644257632, 42.664056055194081], [-72.980426253600825, 42.66424059718593], [-72.980763995719059, 42.664476570771086], [-72.981071629554364, 42.664614972268723], [-72.981317730446676, 42.664730572807343], [-72.981641512984766, 42.664829330917946], [-72.982119485813058, 42.664968966919851], [-72.982451191957338, 42.665056997152377], [-72.982813220758246, 42.665178940334819], [-72.98330740988898, 42.665261011732632], [-72.98414837792501, 42.665454411792339], [-72.98486599700685, 42.665595460337173], [-72.985520847894193, 42.665826805164883], [-72.987115207652877, 42.66642978564839], [-72.987554218055934, 42.666597451199685], [-72.987854106389889, 42.666747728810989], [-72.98816188887514, 42.666886109765819], [-72.988392422555634, 42.667013150153402], [-72.988722725275977, 42.667226688143693], [-72.988944713066104, 42.667410108822089], [-72.989818905911122, 42.668077429521951], [-72.99192538590377, 42.669847605784874], [-72.993373842852264, 42.671015097417239], [-72.994951659741503, 42.672376721810032], [-72.995227081267458, 42.672635338125673], [-72.995639220432111, 42.673117359790773], [-72.99579021164709, 42.673443399749743], [-72.995718088382077, 42.67364303818399], [-72.995615834954734, 42.673796788965973], [-72.995458982762941, 42.673978886526626], [-72.995294702257368, 42.674120564659354], [-72.994960220516916, 42.67427290728812], [-72.994665645501229, 42.674322904447756], [-72.994356078786154, 42.674332489360808], [-72.994077473275567, 42.674325377077921], [-72.993606204235462, 42.674271865548725], [-72.993056945437871, 42.674268788224396], [-72.9923071820686, 42.674207614370282], [-72.991449459094568, 42.67410614311742], [-72.990591970510806, 42.673998990373683], [-72.989965295425506, 42.673977809579711], [-72.989624264495902, 42.674044688854174], [-72.989282458656106, 42.67414588000365], [-72.988955978599733, 42.674281175597947], [-72.988728613326373, 42.674536829401085], [-72.988640476841439, 42.674787808522026], [-72.988621905029817, 42.675044644165013], [-72.988696112436116, 42.675313789913311], [-72.988876130116523, 42.675800444897298], [-72.989600212556041, 42.677368957847264], [-72.989736792891549, 42.677592282096853], [-72.989842708841252, 42.677798534872373], [-72.989885519985322, 42.678101847061804], [-72.989775093948126, 42.678272083666421], [-72.989440280476032, 42.678453134706885], [-72.989145791601288, 42.67849744418816], [-72.988905563780321, 42.678524667849949], [-72.988464005686154, 42.678562496746231], [-72.988223876548744, 42.678583595419546], [-72.987921478902678, 42.678639257801983], [-72.987696545033586, 42.678683748606062], [-72.987339881943754, 42.678756403962929], [-72.986967268889941, 42.678851231613109], [-72.986749908697462, 42.678901295247499], [-72.986516992427127, 42.678974697180891], [-72.986222376762797, 42.679019000780151], [-72.985973730031134, 42.679103227831504], [-72.985478208633467, 42.67913489639399], [-72.985152902156386, 42.679155912803935], [-72.984827619081258, 42.679188272234704], [-72.984471527670536, 42.679192305672665], [-72.984068962721508, 42.679212600547736], [-72.983704984584961, 42.679239241286083], [-72.983209552213154, 42.679254062665237], [-72.982760798577004, 42.679245774747002], [-72.982342963341893, 42.67925500528041], [-72.981901995684936, 42.679235359982648], [-72.981453376749641, 42.679227605467666], [-72.980842493537438, 42.679189876150986], [-72.980317009786276, 42.679135834303572], [-72.979968924796538, 42.679122284826676], [-72.979690320288796, 42.679126391809824], [-72.978739388897139, 42.679058701120084], [-72.977610824903863, 42.678961131504124], [-72.977340120885174, 42.678948295569292], [-72.977077212983957, 42.678929687267846], [-72.976651045809149, 42.67897897859163], [-72.976309839283971, 42.67904527999238], [-72.97602999045327, 42.679152392360649], [-72.975842699274352, 42.67928308152397], [-72.975599959770889, 42.679515765871685], [-72.975667541901856, 42.67968146504144], [-72.975618052688745, 42.679938692186525], [-72.975622950181204, 42.680183970831521], [-72.975650916325392, 42.680429495168717], [-72.975748232772588, 42.68068709894586], [-72.975823749677758, 42.680847654809916], [-72.975944693806596, 42.681082448158826], [-72.976096950624623, 42.681294333398135], [-72.976286225612881, 42.68163287287058], [-72.976476968756216, 42.681862272768676], [-72.976628903031752, 42.682096669774644], [-72.976865720397086, 42.682349699459593], [-72.976940188170573, 42.682590127606083], [-72.977022979433627, 42.682790024345117], [-72.977105581705814, 42.68300784007964], [-72.977148424196685, 42.683299360961108], [-72.977145811051159, 42.683510342575929], [-72.977127302744634, 42.683761592137479], [-72.977055341331791, 42.683955543183494], [-72.97694405289721, 42.684194923274219], [-72.976809260456008, 42.68445720186714], [-72.976682384051244, 42.684718838947767], [-72.976493708461931, 42.684957586418314], [-72.976296334082349, 42.685293770648059], [-72.976131373956548, 42.685492779995457], [-72.975965975622628, 42.685719974873287], [-72.975855545900686, 42.685902621751403], [-72.97576732948923, 42.686153050099463], [-72.975663752948662, 42.686404214619984], [-72.975599670583449, 42.686580597470744], [-72.975535521995852, 42.686774987768366], [-72.975524568309439, 42.687026050257053], [-72.975521873143578, 42.687254589039341], [-72.97547920649626, 42.687579253261056], [-72.975438226198477, 42.687767675634419], [-72.975366054418515, 42.687979094382626], [-72.975240208086063, 42.688155094685527], [-72.975106221280313, 42.688343083084469], [-72.97491826743105, 42.688530049192792], [-72.974692345299061, 42.68864880397274], [-72.974420282874135, 42.688762024499496], [-72.97421016784061, 42.688857528216637], [-72.973914858156789, 42.688947455273109], [-72.973674079248227, 42.689020840635052], [-72.973456795359425, 42.689070877555238], [-72.97314651322344, 42.689126060580222], [-72.972821497645796, 42.689135783661825], [-72.972566033538186, 42.689134536233965], [-72.972334078090512, 42.689110480569347], [-72.971955162289589, 42.689085504624536], [-72.971584044554774, 42.68905475609435], [-72.971336929326185, 42.689019097065547], [-72.971004931711676, 42.688954626586224], [-72.970773194109711, 42.688913728841584], [-72.970533865111705, 42.688871756767149], [-72.970132179008516, 42.688807089809927], [-72.969669344220023, 42.688684677317973], [-72.969352619457837, 42.688631262111663], [-72.968904670653146, 42.688566098498931], [-72.96831847580944, 42.688397440407151], [-72.968040677535683, 42.688338485378246], [-72.967739874999012, 42.688245519146591], [-72.967408725697439, 42.688112422453628], [-72.967077149231741, 42.688008050794075], [-72.966653349240715, 42.687873876849736], [-72.966329243741527, 42.687786244470857], [-72.965935262817695, 42.687727047371709], [-72.965603513579964, 42.687656976313633], [-72.965194133264887, 42.687586267633719], [-72.964776743299396, 42.687543659275299], [-72.964382119366917, 42.687530111812372], [-72.964042256756912, 42.68748885961265], [-72.96380228916621, 42.687492438508222], [-72.963422452239712, 42.687547935933509], [-72.96310426876795, 42.687614986363208], [-72.962793773750519, 42.687692562518421], [-72.962576264149874, 42.687748794093338], [-72.962304470225902, 42.687827049720291], [-72.96200116089905, 42.687951349973915], [-72.961713335194446, 42.688069781565076], [-72.961370897344295, 42.688227706977415], [-72.961074854401687, 42.688391797481287], [-72.960825278807008, 42.68854413596528], [-72.960560217745893, 42.688697119690865], [-72.960271115500888, 42.688918561373924], [-72.960083749994993, 42.689048684552766], [-72.959896723129404, 42.689161876950337], [-72.959678571355482, 42.689274921818537], [-72.959335054913026, 42.689518385851756], [-72.959053950783058, 42.689716674955903], [-72.958781210821272, 42.689881005446352], [-72.958454453901112, 42.690010633798281], [-72.958159866907707, 42.690048652190512], [-72.957795600298937, 42.690087008270162], [-72.957431131770107, 42.690153546017989], [-72.957129161139378, 42.690157352339298], [-72.956464222370101, 42.690113331971816], [-72.955892036189255, 42.690058686355464], [-72.955466537384709, 42.690051079134001], [-72.955087317627402, 42.690060354251287], [-72.954738637550591, 42.690086710207879], [-72.954366660553504, 42.690118940212834], [-72.954086285098484, 42.690259766897753], [-72.953835976766541, 42.690481784466698], [-72.95356202513527, 42.690731738769962], [-72.953389272843467, 42.69092468974457], [-72.953224347522294, 42.691123664504175], [-72.953121498607331, 42.691294308785693], [-72.952980090095451, 42.691470569426905], [-72.952854158387012, 42.691635291268447], [-72.952736277583099, 42.691789287935542], [-72.952493291280007, 42.692027596297073], [-72.952328666744364, 42.692192263406163], [-72.952092543825728, 42.692516555870029], [-72.951949921799681, 42.692772689318957], [-72.951822722813105, 42.693057259269288], [-72.951663424439261, 42.69340534494966], [-72.951567642735085, 42.693644593781578], [-72.951447684791859, 42.693952210666588], [-72.951366216840697, 42.694282932767187], [-72.951298945572546, 42.694705309805109], [-72.951357620989896, 42.69496845878772], [-72.951416811171867, 42.695179832531394], [-72.951515153222431, 42.695368836814339], [-72.951621086986719, 42.695569449705424], [-72.951726788298458, 42.695775827722649], [-72.951925163175019, 42.695999498609012], [-72.952100364457678, 42.696229132244554], [-72.952206510656211, 42.696412365858926], [-72.95239750840669, 42.696601826187454], [-72.952680451033146, 42.696877372604604], [-72.953002323470116, 42.697136673435026], [-72.953209181852685, 42.697320351104807], [-72.953385438300259, 42.697452644358513], [-72.953660807712339, 42.697717029527873], [-72.95382821753735, 42.697952340528047], [-72.953879846391331, 42.698158225999315], [-72.953869247995584, 42.698386231593631], [-72.953749725604723, 42.698654500733007], [-72.953600506522804, 42.698842023754473], [-72.953474669895115, 42.698995580485565], [-72.95323231275664, 42.699188235144284], [-72.95277089993381, 42.699562626256615], [-72.95248876695554, 42.699840769644247], [-72.952222454895661, 42.70009053343508], [-72.951964080326988, 42.700335244886901], [-72.951690912840746, 42.700510276499315], [-72.951441927698241, 42.700611897574625], [-72.951161825586624, 42.700724532442315], [-72.950850729686721, 42.700848269357948], [-72.950578215095291, 42.700977733664558], [-72.950320136066267, 42.701188045395092], [-72.950116572329577, 42.701375164775115], [-72.949912140983102, 42.701625317301257], [-72.949731546238226, 42.70182403220759], [-72.949565942891326, 42.702074777634238], [-72.94938534368886, 42.70227340196432], [-72.949204336167327, 42.702512635679206], [-72.949077513809812, 42.702746058228939], [-72.948958183677007, 42.703008017002063], [-72.948871052076441, 42.703173417699773], [-72.948774692309755, 42.7034469726783], [-72.948702599978006, 42.703634692858969], [-72.948676807013257, 42.703839839415387], [-72.948712717285488, 42.704063389821307], [-72.948788071758557, 42.704234587446493], [-72.948893885296201, 42.704429712095347], [-72.949023226819079, 42.704607525730353], [-72.949176224677728, 42.70476829676506], [-72.949735418809922, 42.705228284760494], [-72.950753259743522, 42.704936960386796], [-72.997947896143842, 42.701207222881692], [-72.999553207299769, 42.701356308602939], [-73.023699449318642, 42.702737785796309], [-73.022958614398974, 42.741213102884288], [-73.01864087146474, 42.74108978858029], [-72.999569132831397, 42.740638531977098], [-72.930132671333482, 42.739213346005648], [-72.926891652828971, 42.739140281624735], [-72.87454298592246, 42.737954235291632], [-72.864377658582811, 42.737766200083378], [-72.809327481960253, 42.736539828658032], [-72.791100915044694, 42.73607898118987], [-72.749650994162096, 42.735060425201667], [-72.686340684190213, 42.733402495052403], [-72.674591902766068, 42.733033972722865], [-72.62451607498862, 42.731515563463596], [-72.598593922138022, 42.73088461178309], [-72.565886601987174, 42.729890239431157], [-72.516753164137754, 42.728476794726092], [-72.49949791604044, 42.72808475866983], [-72.458314854694947, 42.726924782539363], [-72.451180324441211, 42.726679830928077], [-72.412045085937521, 42.72533008160255], [-72.374507994701801, 42.724311258949449], [-72.326174530369983, 42.722898667571108], [-72.282977429424591, 42.721609670161889]]]}, "type": "Feature", "id": 7, "properties": {"COUNTY": "FRANKLIN", "AREA_ACRES": 463739.79999999999, "OBJECTID": 6.0, "FIPS_ID": 25011}},{"geometry": {"type": "Polygon", "coordinates": [[[-72.895621531439375, 42.340704920781945], [-72.894701025899295, 42.331425009428983], [-72.885146471372508, 42.332544491152014], [-72.880626085893198, 42.265307517843397], [-72.899047414167569, 42.250108335206342], [-72.91227433462744, 42.239185148028568], [-72.874565401823588, 42.217780763523194], [-72.872087273289068, 42.216426568183671], [-72.86835539511965, 42.223684126881935], [-72.86712160233084, 42.226051716879361], [-72.864256620594745, 42.232201358061872], [-72.857509639721385, 42.240429490173881], [-72.813373097746933, 42.244988084213247], [-72.812569117031714, 42.235010145591424], [-72.793403986373164, 42.236886721876033], [-72.791948168547123, 42.21734288191724], [-72.782082207902988, 42.217286972704748], [-72.781070730765023, 42.199702604331236], [-72.749617427332467, 42.194461482198562], [-72.744660655879571, 42.193584541350127], [-72.724750778017935, 42.189998639517455], [-72.697896887213744, 42.185362130868491], [-72.686870604940992, 42.183389565943848], [-72.686596457987037, 42.186356958245256], [-72.686557659767374, 42.187014108412583], [-72.686449563864727, 42.187545920191198], [-72.686295182133421, 42.188088835254845], [-72.686194855452229, 42.188654331133804], [-72.68617936931993, 42.188849156874063], [-72.686209973363617, 42.189054850892958], [-72.686278785052949, 42.189477865387374], [-72.686431248156595, 42.190541006128939], [-72.688335670793876, 42.200687289636477], [-72.69045940322458, 42.213063688004283], [-72.670092169689411, 42.21643753835064], [-72.667757082141577, 42.225393176159457], [-72.656534735135338, 42.227628945639005], [-72.645999174713253, 42.250096702647205], [-72.634473784917418, 42.274031801217866], [-72.624521460062383, 42.279829579207167], [-72.613379814954016, 42.286411241435033], [-72.612978961006561, 42.286074696580528], [-72.612708883675168, 42.285920828987081], [-72.612477578115616, 42.285806561654525], [-72.612007011680333, 42.285573690815433], [-72.611529419338609, 42.285430832922117], [-72.611098598819595, 42.285334339827841], [-72.610559938149208, 42.285311367513557], [-72.609948737111921, 42.285224447181584], [-72.607769707039594, 42.28491630787331], [-72.606510005798839, 42.284709480098101], [-72.606030533444425, 42.284631444134178], [-72.605705728883308, 42.284564162426271], [-72.605264736034556, 42.284474498260998], [-72.605055866374087, 42.284401057035701], [-72.604722784730583, 42.284248407249386], [-72.604320377165322, 42.284020972185488], [-72.603731666075078, 42.283532598648399], [-72.602438736665533, 42.282445395718845], [-72.602245179737835, 42.282268890605991], [-72.601974393487126, 42.281995165849153], [-72.601208997854997, 42.281259162568269], [-72.601123583313012, 42.280990951396397], [-72.600968506819825, 42.280614283274176], [-72.600898291645549, 42.280271735861746], [-72.600797182088357, 42.279986297744429], [-72.600742828941705, 42.279712206266097], [-72.600780463723794, 42.279352238369341], [-72.600841177515022, 42.278980794618398], [-72.600886687534185, 42.278592659637205], [-72.600862957683887, 42.278329529222461], [-72.600777591284782, 42.277987036797875], [-72.60061512829752, 42.277735950280757], [-72.600375897082344, 42.277392771260089], [-72.600121393685754, 42.277084582084314], [-72.599959008245037, 42.276844658473365], [-72.599881832796967, 42.276673247042268], [-72.599789040054574, 42.276433286955189], [-72.599719194809609, 42.276216156506806], [-72.59965732769507, 42.276004621946974], [-72.599495089455559, 42.275696088139028], [-72.599363724232077, 42.275336117607068], [-72.599378541998732, 42.275016344712476], [-72.599346980953939, 42.274650826816277], [-72.5989180685701, 42.271164919692986], [-72.598840219502719, 42.270667580020671], [-72.598832004953636, 42.270221975509102], [-72.598816028343251, 42.269901956812724], [-72.598944918295885, 42.268701520468241], [-72.598952295996725, 42.268393073045573], [-72.599020966192569, 42.268095924131352], [-72.599074299595884, 42.267718338564087], [-72.599173433238107, 42.267381461480895], [-72.599373040199936, 42.267078466758186], [-72.59952651622352, 42.2667298143935], [-72.599656747228948, 42.266403893656999], [-72.599802452741514, 42.266089619388694], [-72.599917371880736, 42.26574070540908], [-72.600132431179972, 42.265546235947291], [-72.600278549585795, 42.265311819935633], [-72.600624355662703, 42.26506594595817], [-72.60100118149424, 42.264917193643818], [-72.607282144904275, 42.260941258971734], [-72.607781762447189, 42.260580252282388], [-72.608242736759038, 42.260151548133109], [-72.609679699147563, 42.258721202138048], [-72.609971842940794, 42.258446645747242], [-72.610717421551882, 42.257737144024965], [-72.611248239677167, 42.257250307631402], [-72.611555874170605, 42.256913020849858], [-72.612286971308407, 42.255705111334414], [-72.612579881607488, 42.255309980116543], [-72.612965544998218, 42.254903324553077], [-72.613621257173051, 42.254249866880002], [-72.614070111850239, 42.253619211635893], [-72.614504521089586, 42.252891273894335], [-72.615071070818985, 42.252014659490101], [-72.615435113252602, 42.251538425925148], [-72.616476428183887, 42.250233473362066], [-72.618009197302584, 42.248369994222841], [-72.61833019549357, 42.247853652988361], [-72.618681686849143, 42.247245805447072], [-72.619172169810639, 42.246336145934947], [-72.620071614799642, 42.24452103665039], [-72.621342615343494, 42.241820370192251], [-72.62398349158218, 42.235925241750081], [-72.624023368707299, 42.235673285238526], [-72.624032580926936, 42.235359232724889], [-72.624110744616573, 42.235073136953936], [-72.624065943274857, 42.234780952402481], [-72.624029137804527, 42.234386226543315], [-72.624007579696027, 42.234031417993208], [-72.623940564189084, 42.23357963350589], [-72.623850456856246, 42.233110067478862], [-72.623745576967849, 42.232429056733523], [-72.623656879745866, 42.231656138669372], [-72.623466027941163, 42.231312441261913], [-72.623343848160516, 42.231117804583796], [-72.623191056107331, 42.230911672399088], [-72.62286206681668, 42.230538983033682], [-72.622463380642699, 42.230211993440705], [-72.621612105540635, 42.229735822035721], [-72.620921440310852, 42.229407718712388], [-72.619639024803433, 42.22892502837589], [-72.618787558161912, 42.22851132428795], [-72.617965864009449, 42.228177727841747], [-72.617167843151194, 42.227798335909306], [-72.616446523112401, 42.227453667286909], [-72.615725309154655, 42.227114575507841], [-72.615126698946582, 42.226809762905702], [-72.614651516659933, 42.22648294964857], [-72.614115235205844, 42.226063808476511], [-72.613563693705117, 42.225582416610848], [-72.613365090615289, 42.225324314239963], [-72.613158579388823, 42.225112477489915], [-72.612952038509562, 42.224905772824869], [-72.612730294036396, 42.224654106199068], [-72.612569668243978, 42.224447405812967], [-72.61246279403764, 42.224287003870266], [-72.61226419948396, 42.224028899308252], [-72.612072960978338, 42.223782608130179], [-72.611958744231174, 42.223610932094545], [-72.611837033398089, 42.223302020650117], [-72.611760872133715, 42.223124393332739], [-72.611654180424154, 42.222946521504383], [-72.611639888722124, 42.222746325455148], [-72.611518427547722, 42.222403106765377], [-72.611466184059054, 42.2221109893568], [-72.611428504271288, 42.221944784040602], [-72.611398343245654, 42.221779046114236], [-72.611353448975365, 42.221532956903843], [-72.611247969166513, 42.22118904287808], [-72.611210612556974, 42.220902993762614], [-72.611006131612925, 42.220273537464003], [-72.610869677687305, 42.219889946070431], [-72.610816902152564, 42.21967778719354], [-72.610749157447017, 42.219420123916571], [-72.610588172607251, 42.219254031375179], [-72.610543427719094, 42.219002357979804], [-72.610429407073752, 42.218778906633446], [-72.610322815120981, 42.218578433023652], [-72.610078464978187, 42.218189131820232], [-72.60988775446765, 42.217902314769496], [-72.609673573464562, 42.217679291244394], [-72.60949010020606, 42.217466684926087], [-72.609191347852985, 42.217248980149463], [-72.608923213740127, 42.217036561053924], [-72.608716429055747, 42.216875950681526], [-72.608417597377226, 42.21664644970388], [-72.608203328745716, 42.216480238321203], [-72.608035005225602, 42.216302328106359], [-72.607613788326361, 42.216021154552195], [-72.607337937717176, 42.215803224163977], [-72.60703903376529, 42.215596770082676], [-72.606747662861636, 42.215447056568394], [-72.606532971420293, 42.215297773340254], [-72.606018840990586, 42.215056746621237], [-72.605735272992746, 42.214895790635978], [-72.605374923319729, 42.214700548914244], [-72.604638769667815, 42.214298596005619], [-72.604393249540365, 42.214200747229945], [-72.604102082548309, 42.214034188010167], [-72.603803166719814, 42.213867702609306], [-72.603511418024226, 42.213792806204673], [-72.603296647768119, 42.213700871975909], [-72.603058883927091, 42.213603035828953], [-72.602628830748642, 42.213459147100345], [-72.602352846478524, 42.213315487313785], [-72.601991945798275, 42.213205866533386], [-72.601631152422968, 42.213102366181261], [-72.601324237131394, 42.213004650198819], [-72.60082533811179, 42.21284340800802], [-72.600525689596253, 42.212745530148041], [-72.599880736789842, 42.212577851451854], [-72.599481432257122, 42.212474173349797], [-72.599051170080998, 42.212387177337362], [-72.598728675276107, 42.212312563393915], [-72.59803735376768, 42.212173410297979], [-72.5973380926837, 42.212086190863211], [-72.596700804166204, 42.211947593408432], [-72.59648579705447, 42.211890043315577], [-72.596133050785284, 42.211774653930618], [-72.595748385504763, 42.211802548571903], [-72.595387284269435, 42.211750263259788], [-72.594956969375346, 42.21168062980766], [-72.594526666768544, 42.211639716730879], [-72.593903761082927, 42.211604060034205], [-72.593627120337175, 42.211603275908544], [-72.593380612242996, 42.211544849806295], [-72.593069291787373, 42.211569785520744], [-72.592600145278965, 42.211579926645854], [-72.592200269095116, 42.211624791330848], [-72.59130026265403, 42.211737439391179], [-72.546216107966714, 42.216490995138273], [-72.524216221180836, 42.218764294226915], [-72.49950512642377, 42.221246085143108], [-72.446998959994488, 42.227280392411053], [-72.403972717850337, 42.231868577101537], [-72.395499294623335, 42.185816564155473], [-72.374401984822057, 42.187908371249335], [-72.359149970625296, 42.189779330538222], [-72.358043454393922, 42.189909161781848], [-72.358043934220404, 42.189944632143792], [-72.358156361391124, 42.189968010522634], [-72.358348639792098, 42.189978366336902], [-72.35849261615877, 42.189989083385967], [-72.358732877453349, 42.189975490110058], [-72.359416476190049, 42.189978202902701], [-72.359822499523005, 42.190001630195169], [-72.360152223741935, 42.190201737590314], [-72.360367026472488, 42.190390911536589], [-72.360489999229443, 42.190584645595315], [-72.360590234891433, 42.190824738299661], [-72.360698195994388, 42.191241512467478], [-72.360852400316617, 42.191755807938918], [-72.360960874390429, 42.192201209226639], [-72.361446974494442, 42.193474981620177], [-72.361470546183881, 42.193828733697337], [-72.361432564203596, 42.194125595512645], [-72.361255987023043, 42.194336253770146], [-72.361040774623703, 42.194439159101847], [-72.360756592805288, 42.194438410915758], [-72.360479595113432, 42.194387098290562], [-72.360225851864982, 42.194300587068057], [-72.359903287414028, 42.19417470536424], [-72.359680224268899, 42.194100477623486], [-72.359318869044372, 42.19406041861015], [-72.35907270408623, 42.194139873051213], [-72.358964957162272, 42.194310666737934], [-72.35894957263659, 42.194533619213765], [-72.359118677350011, 42.194745016231188], [-72.35927994642536, 42.194967816153607], [-72.359410490128553, 42.195219477302231], [-72.359448521954405, 42.195533145574949], [-72.359494210299758, 42.195750598712429], [-72.359509356196526, 42.195939019209824], [-72.359609181345135, 42.196121673120452], [-72.35977027130933, 42.196321964849517], [-72.360031430540744, 42.196561931964098], [-72.360284723383458, 42.196739563004535], [-72.360645575396603, 42.196991205875982], [-72.360860825811656, 42.197059908230813], [-72.361176039156689, 42.197089054511871], [-72.361468151443916, 42.197066603107203], [-72.361776199482335, 42.196987218934979], [-72.362083908086078, 42.19691855068568], [-72.362406860426489, 42.196884610677174], [-72.362660717502052, 42.196844976978852], [-72.363129184614365, 42.196880258087376], [-72.363467009368307, 42.196960458047649], [-72.363612162382012, 42.197251980206708], [-72.363611574891337, 42.197537846876763], [-72.363464414723509, 42.197783760839137], [-72.3632642116699, 42.19786909060435], [-72.362949129021345, 42.197885506927236], [-72.362641083145931, 42.198045385786934], [-72.362532862248585, 42.198216726507923], [-72.36247842366447, 42.198416293981353], [-72.362415854030161, 42.198587831530972], [-72.362423063533384, 42.198770729098847], [-72.362429572709701, 42.198982263156594], [-72.362413153501322, 42.199199551553257], [-72.362419909491663, 42.199393616890205], [-72.362449584800913, 42.199616861414398], [-72.362525085382885, 42.199879647007343], [-72.362646670022286, 42.200183142091298], [-72.362745219616457, 42.200377687507363], [-72.362851755207558, 42.200589549579369], [-72.36292735216081, 42.200823612901111], [-72.362971994087118, 42.201069793699979], [-72.363070019250657, 42.201430277800945], [-72.363107468890405, 42.201601693321521], [-72.36326725686844, 42.201882391436712], [-72.363442780722451, 42.202082479348292], [-72.363794800255661, 42.202340391315367], [-72.364123998928235, 42.202558498454188], [-72.364391291213252, 42.202827761000165], [-72.364444055646459, 42.203056323111639], [-72.364435029588563, 42.203273646236333], [-72.364434050217, 42.203468309865762], [-72.364456324267209, 42.203645421459264], [-72.364760964627578, 42.20575616251211], [-72.364728720910961, 42.206144637469905], [-72.364712046123486, 42.206413788407758], [-72.364665034769757, 42.206625185297362], [-72.364510188075371, 42.206939224634397], [-72.364317213281907, 42.207139296314054], [-72.364140017158249, 42.207253175150953], [-72.36395511016363, 42.207378906386424], [-72.363708895017083, 42.207475837452101], [-72.363493421476164, 42.207526978799002], [-72.363208999779161, 42.207566303713271], [-72.36298643261037, 42.207514497222235], [-72.36247249331376, 42.207284810761116], [-72.36205797210539, 42.207250291573118], [-72.361796833936154, 42.207158256777774], [-72.361752160447892, 42.206900821626625], [-72.361898613853569, 42.206752333846332], [-72.362175847316195, 42.206638787142133], [-72.362421940466632, 42.206541860262412], [-72.362644748224525, 42.206513714763005], [-72.362830063704337, 42.206382400365968], [-72.362976423129666, 42.20624507624072], [-72.362992594332937, 42.206045166467518], [-72.36274012784375, 42.205815854934059], [-72.362440959783868, 42.205740944191319], [-72.362103364851663, 42.205672083699866], [-72.36165795369827, 42.205591517168571], [-72.3613819537795, 42.205447912875172], [-72.361205995050284, 42.205305177596955], [-72.360829671221069, 42.205184203622544], [-72.360552938307649, 42.205218332334312], [-72.360199109397357, 42.205309310476643], [-72.359898622872947, 42.20544040353542], [-72.359713795346821, 42.205554332747298], [-72.359536355085311, 42.205686213342297], [-72.359389542052853, 42.205817324017161], [-72.35922774484817, 42.205959801119839], [-72.359027248867164, 42.20615992016387], [-72.358910966991147, 42.206336899586098], [-72.358740216883263, 42.206748468044125], [-72.358515449589561, 42.207159810193396], [-72.358245482092272, 42.207399252779652], [-72.358075281787464, 42.207690889209907], [-72.357828799985313, 42.207885227576199], [-72.357743138295632, 42.208141837908279], [-72.3574884359534, 42.208364327922688], [-72.357311237016575, 42.208541850914486], [-72.357149230427879, 42.208678654058147], [-72.35695654195429, 42.208821358582945], [-72.35669457095473, 42.208963409683989], [-72.35643297439178, 42.20904360327107], [-72.356071780483163, 42.209048549853492], [-72.355810812100302, 42.209013852555771], [-72.355588139838659, 42.208945195956261], [-72.355373081886526, 42.208893318718488], [-72.355043179928984, 42.208766937683478], [-72.354828371824979, 42.208652663257389], [-72.354529641959203, 42.20839486760223], [-72.354392121333575, 42.208183228959307], [-72.354315843961942, 42.208022814254768], [-72.35417083827889, 42.207776837678011], [-72.354018249799324, 42.207462310622439], [-72.353811892159612, 42.207210667890621], [-72.353558620995031, 42.207090374901185], [-72.353244368341421, 42.206884011189729], [-72.352944835929435, 42.20682654526226], [-72.352675682797681, 42.206848803927613], [-72.3523223723911, 42.2068086626631], [-72.351945022071604, 42.207025298813875], [-72.351675676803978, 42.207150556674286], [-72.351375162389289, 42.207344651923513], [-72.351159214169343, 42.207532536817588], [-72.350912695510431, 42.207743697006443], [-72.350673477866124, 42.207966597101525], [-72.35031885343993, 42.208280387135794], [-72.350017965376409, 42.208519589041934], [-72.349809600905175, 42.208822119508298], [-72.349709168373948, 42.208982135343881], [-72.349624022939366, 42.209153292252623], [-72.349607479130754, 42.209428021567746], [-72.34961456030679, 42.209622084616882], [-72.349552434038799, 42.209839168900942], [-72.349298200845539, 42.209981775881261], [-72.348921643012204, 42.210015534805592], [-72.348598640730202, 42.210015043222818], [-72.348375693341993, 42.210043162321391], [-72.347976297610032, 42.210008390314364], [-72.347530970322552, 42.209962161651276], [-72.347300262050396, 42.209944238078485], [-72.347054401268579, 42.210006827151489], [-72.346754044764936, 42.21016039309], [-72.346592270888664, 42.210280343056084], [-72.34650694761828, 42.21045708101709], [-72.346429551602199, 42.210674276155189], [-72.346367171203624, 42.210891360460479], [-72.346282016673072, 42.211108072498661], [-72.346189220791473, 42.211296749914837], [-72.346003547888358, 42.211559220503652], [-72.345872380363332, 42.211713247014487], [-72.345764295621109, 42.211872685378523], [-72.345625340216998, 42.212078539082803], [-72.345524848443532, 42.212289781356418], [-72.345438754013117, 42.21267252399862], [-72.345445267736423, 42.212952124451846], [-72.345483356473096, 42.213129122526887], [-72.345825225773183, 42.214152370266092], [-72.346031046077428, 42.214673055211726], [-72.34609912179971, 42.214964086208298], [-72.346074527444202, 42.215335661469616], [-72.346034482332271, 42.215792883757004], [-72.345980124609355, 42.215958138400374], [-72.345872023690646, 42.216135043576969], [-72.345625240740887, 42.216357448009951], [-72.345378890129609, 42.2164943155923], [-72.345047853866646, 42.216693210123097], [-72.344809053589756, 42.21677879102149], [-72.344523996140964, 42.216983467841253], [-72.344392925291302, 42.21715495844861], [-72.344253898848237, 42.217320295027989], [-72.344053043344729, 42.217599710209036], [-72.343921979696077, 42.217753733432502], [-72.343705992769983, 42.217970324915392], [-72.343544128113862, 42.218112689562361], [-72.343343704617183, 42.218261099377571], [-72.343089721584391, 42.21838055125194], [-72.342874315511153, 42.218477210490782], [-72.342620042768615, 42.218602335628127], [-72.342350815324778, 42.218705061278214], [-72.342135146675631, 42.21877299993853], [-72.341743236324021, 42.218840610554537], [-72.341074260723786, 42.218959139890281], [-72.340113034966905, 42.219088898886696], [-72.33931370646583, 42.219133013124122], [-72.338706667462077, 42.219108730615503], [-72.337822947817202, 42.219072960206617], [-72.337546189286954, 42.219101450837854], [-72.33716171024804, 42.219117761749615], [-72.336730715734589, 42.219225615745103], [-72.33643040325957, 42.219350972714956], [-72.336245305119263, 42.219487373878898], [-72.336075284732189, 42.219738459128962], [-72.33592025741207, 42.220024368349151], [-72.335841268934132, 42.220188716854693], [-72.335457039004567, 42.220233651218166], [-72.281313211915787, 42.235018906068831], [-72.277726680367593, 42.233124912460404], [-72.273818513240357, 42.235888357362882], [-72.273549133342485, 42.236013429467128], [-72.273210861974832, 42.236092777695859], [-72.272903612134073, 42.236063335257853], [-72.272573557530919, 42.236051512058857], [-72.272335272429885, 42.236073913519228], [-72.271904806717217, 42.236124077030048], [-72.271550785527197, 42.23624350127011], [-72.271258502739244, 42.236368721902359], [-72.271096459352975, 42.236493607095966], [-72.270857458222238, 42.236676450478562], [-72.270710837061316, 42.236824280180144], [-72.2704724441938, 42.236897907686], [-72.268255477720643, 42.229310492987693], [-72.25767834118696, 42.229903636099422], [-72.249614004140042, 42.239178284967224], [-72.247168884949403, 42.241999850742339], [-72.221212777449949, 42.245235456968729], [-72.249619175250729, 42.216002399938077], [-72.255758998244048, 42.209649027789894], [-72.256926745485117, 42.20839435751337], [-72.2574519372738, 42.207955396281669], [-72.258710116539859, 42.206946533198057], [-72.260563463412709, 42.205322109483809], [-72.260725776857754, 42.205174187520541], [-72.261018721958791, 42.2050034304877], [-72.26120489109735, 42.204643769185012], [-72.262011290235776, 42.203405487188569], [-72.262158036086305, 42.203262708417469], [-72.26238975497769, 42.203006281758334], [-72.262521748485938, 42.202794904407028], [-72.262653824159813, 42.202509878322218], [-72.262677832018397, 42.202321186974586], [-72.262779682430107, 42.201949658657043], [-72.262896965931048, 42.201612960880631], [-72.26299052275715, 42.201367535459745], [-72.263084392622815, 42.201087804802967], [-72.263331715825743, 42.200790756833065], [-72.263463357205836, 42.200631240361588], [-72.263549069072582, 42.200408375204674], [-72.263711856180635, 42.2001405199142], [-72.26386688749794, 42.199872265845478], [-72.263930153282615, 42.199535296503974], [-72.264174770778013, 42.198341252559246], [-72.264253201742733, 42.198067295747968], [-72.264401296435906, 42.197656112480828], [-72.264565582152386, 42.197141821756112], [-72.264690721663399, 42.196725118859604], [-72.264770257631, 42.196261992004004], [-72.264848633024656, 42.195953731923879], [-72.264811472556474, 42.195713677936432], [-72.26479789396592, 42.195410982831909], [-72.264559277289536, 42.193987239257574], [-72.264361435071763, 42.193655430519804], [-72.264170629730458, 42.193455294901838], [-72.263872012614115, 42.193220313422913], [-72.263550577918963, 42.192990615031491], [-72.263412994992123, 42.192836221468468], [-72.263275898049088, 42.192601423771976], [-72.263247127348492, 42.192212756562718], [-72.263264396040924, 42.19192732255204], [-72.263295943484238, 42.191721744077157], [-72.263251086462461, 42.191515503596918], [-72.263153849717142, 42.191041218961054], [-72.263089608473805, 42.190109249870403], [-72.263060052789072, 42.189886611228445], [-72.263092044530424, 42.189697866223526], [-72.263224698969253, 42.18929236866628], [-72.263294816250848, 42.189092745798497], [-72.263434988256421, 42.188778943042337], [-72.263566532725463, 42.188573238908425], [-72.263682926922769, 42.188396356492852], [-72.263684786172576, 42.188048000672289], [-72.263590176171789, 42.187047537012731], [-72.263606620346195, 42.186824592118128], [-72.263600605494972, 42.186556239283874], [-72.263570953986459, 42.186315594371713], [-72.26373471903122, 42.185870543699338], [-72.263836046524375, 42.18565936815336], [-72.263921222642878, 42.183765284520824], [-72.249570094212118, 42.178769613575014], [-72.200732038901478, 42.161271933428218], [-72.199386654393791, 42.153677377043593], [-72.141856087376382, 42.160997701172761], [-72.13493230099661, 42.161788038930879], [-72.134974025977854, 42.12506805761204], [-72.134949111422003, 42.090671047699722], [-72.135687669320092, 42.03017064278329], [-72.143155973702747, 42.030487962961637], [-72.198752403118391, 42.030973306753637], [-72.205077076452397, 42.031034082528961], [-72.249538889726296, 42.031450377155927], [-72.270609780164506, 42.031635600863758], [-72.366990933461793, 42.032697657473761], [-72.374529134994802, 42.032727440001295], [-72.397454090822848, 42.033065370546375], [-72.458373215692035, 42.034216190815606], [-72.499526562718231, 42.034260768577752], [-72.50924339927073, 42.034286933437578], [-72.531624627259944, 42.03448456388714], [-72.549545640458476, 42.032604687499749], [-72.572769922629519, 42.030205168763288], [-72.582123959272451, 42.024716906357085], [-72.606883460156141, 42.025159269023284], [-72.607990410063579, 42.03096409416716], [-72.612037263655182, 42.031014868874735], [-72.616766767840772, 42.031191648389289], [-72.624555002234899, 42.031546921348522], [-72.636754991878391, 42.031937959252446], [-72.640104548828774, 42.032086960536631], [-72.698887134192177, 42.036965088884543], [-72.71308227292046, 42.036941519053912], [-72.714438980862425, 42.036956929916641], [-72.714446614723101, 42.03659776127779], [-72.719046173642226, 42.036583781465509], [-72.732780101680959, 42.036503612416588], [-72.749565423902084, 42.03639967344867], [-72.755927479093756, 42.036342976972726], [-72.755908765535111, 42.035811390392645], [-72.755934296298491, 42.035520182245378], [-72.75595170641553, 42.035245901208505], [-72.756046218180202, 42.034943220639533], [-72.756277850921037, 42.034721783578185], [-72.756532692797165, 42.034476950144374], [-72.756741914839168, 42.034203443646206], [-72.756873738471782, 42.034004441787836], [-72.756906026284028, 42.03379869964256], [-72.757091880273265, 42.033559124922178], [-72.757193121346518, 42.03337117378053], [-72.756886710154134, 42.033346987481544], [-72.756557892584468, 42.033276854557556], [-72.75625991842044, 42.033184501631737], [-72.755939138309742, 42.03306871707737], [-72.755648762863203, 42.032981861804956], [-72.755312658193432, 42.032860571021239], [-72.755022683755655, 42.03274498615815], [-72.754640845005795, 42.032595021298192], [-72.754358648963418, 42.032445043206117], [-72.754083922991811, 42.032312450823007], [-72.75371027399477, 42.032099813462246], [-72.75348170773772, 42.03195599871119], [-72.753192059574928, 42.031783048518037], [-72.753009261350968, 42.03164494441593], [-72.752712450166612, 42.031427050150889], [-72.752553016436877, 42.031248710539963], [-72.752416987173206, 42.031019960720926], [-72.752213132833674, 42.030664902968056], [-72.752031511382043, 42.030390009642957], [-72.751873063994054, 42.030120445088201], [-72.751776029318023, 42.029817072632341], [-72.751801634972622, 42.029485885828024], [-72.751841655257209, 42.029291856129021], [-72.751943524756854, 42.029006566608388], [-72.75206786493257, 42.028801439159153], [-72.752207399699145, 42.028613613519639], [-72.752408493123554, 42.028368927115757], [-72.75257856310391, 42.028186349331143], [-72.752756101753917, 42.028021247816554], [-72.752949144673053, 42.02783400577399], [-72.753219476895296, 42.027560916353643], [-72.753373920096109, 42.027412904837668], [-72.753543705653414, 42.027259052286148], [-72.753775736739669, 42.026991423579737], [-72.753907974001663, 42.026746318482019], [-72.754002203977663, 42.02647236597744], [-72.75408782840168, 42.026307099279116], [-72.754174169824125, 42.026061866682141], [-72.754298218296455, 42.02587934052351], [-72.754460719315119, 42.025668749405312], [-72.754622743861404, 42.025538121242271], [-72.755409251313608, 42.024912699073539], [-72.755609724058544, 42.02474788166144], [-72.755742098338146, 42.024485844698305], [-72.755789550535468, 42.024314242445314], [-72.755883230221144, 42.024086396137974], [-72.755969570266885, 42.023829366418127], [-72.75619440918959, 42.023504454143492], [-72.756303542104845, 42.023282650684685], [-72.756427598192559, 42.023088866592488], [-72.756521225071637, 42.022889113625482], [-72.756553786096575, 42.022654644586268], [-72.756517389591338, 42.022426065495701], [-72.756527585984983, 42.022123139442918], [-72.756590842042769, 42.021877618071699], [-72.756746286684916, 42.021604160982463], [-72.756932107677699, 42.021370799098179], [-72.757156236593502, 42.02111450514461], [-72.7573413243407, 42.020978576982323], [-72.7575797738034, 42.02084818474291], [-72.75789446191267, 42.020774941197772], [-72.758162595866764, 42.020753443268731], [-72.758392556212812, 42.020731194135941], [-72.758698638516108, 42.020772307457989], [-72.759065249340637, 42.020888119600542], [-72.759232262655729, 42.021077622193211], [-72.759291340541992, 42.021329091868083], [-72.759281997569573, 42.02154637816566], [-72.759318552595317, 42.021751993824694], [-72.759393538056329, 42.0219407985402], [-72.759545082907891, 42.02214172636468], [-72.759895622985709, 42.022360181696264], [-72.760315697805424, 42.022516460592669], [-72.760598157528833, 42.022620318976394], [-72.760903964529192, 42.022695735881292], [-72.76118742093179, 42.022691440318063], [-72.761548867909468, 42.022509619734201], [-72.761665015005718, 42.022350223329617], [-72.761850691198546, 42.02212252760264], [-72.762012681559654, 42.021997471688444], [-72.762328390791197, 42.021793102194216], [-72.762813147163726, 42.021509158541257], [-72.763368980956685, 42.020992026875902], [-72.764032237064157, 42.020399960096917], [-72.76447277530562, 42.019933620749192], [-72.764259027301932, 42.0198296427955], [-72.764006820723253, 42.019777323916422], [-72.763785038297542, 42.019730791251767], [-72.763425737024264, 42.019654802492589], [-72.763203957238971, 42.019608358723836], [-72.762913366601012, 42.019544575690382], [-72.762685245665992, 42.019348999756623], [-72.762748172358187, 42.019149039981727], [-72.762726813599016, 42.018955143154223], [-72.762552621615697, 42.01871449035756], [-72.762501413113128, 42.018428088681823], [-72.762449966987546, 42.018154025488002], [-72.762306451902717, 42.017907451056821], [-72.762047986604415, 42.017660974343336], [-72.761850420377328, 42.017471272614742], [-72.761606538338384, 42.01733889855997], [-72.761347194874801, 42.017212277171254], [-72.761079260226765, 42.017188218816671], [-72.760811853070336, 42.017129847656271], [-72.760520419933059, 42.01716907709816], [-72.760183070415607, 42.017218896521577], [-72.759953562805492, 42.017171901401767], [-72.759886049831877, 42.017000483006647], [-72.760033288095599, 42.01678951116282], [-72.760839314074218, 42.015621865564981], [-72.76094050481602, 42.015433370558213], [-72.761019218153379, 42.015176960973363], [-72.761113114690289, 42.014937311757258], [-72.761191244077523, 42.014742857812855], [-72.761476110651671, 42.014555758316448], [-72.761707197762888, 42.014396714503555], [-72.761983911351962, 42.014255265403449], [-72.762214132709772, 42.014204821955389], [-72.762760581455296, 42.013880847957694], [-72.762938614058484, 42.013658816979969], [-72.763071814956675, 42.013276914198407], [-72.763135442245215, 42.012997078077419], [-72.763197957774338, 42.012831518800581], [-72.763247087309225, 42.012460088862419], [-72.763249821491414, 42.012123567805979], [-72.763098296892707, 42.011916971848585], [-72.762838989748829, 42.011772975263881], [-72.762656351390604, 42.01164109785141], [-72.762542961641529, 42.011457761458985], [-72.762414792328201, 42.01121714064341], [-72.762171950932867, 42.010947440823557], [-72.762042965931954, 42.010781204158441], [-72.762014143773541, 42.010569921071884], [-72.762000667472975, 42.010341000506521], [-72.761833805523082, 42.010152040522492], [-72.761612757229031, 42.010025087444035], [-72.761391875981246, 42.009876071558779], [-72.76136262119239, 42.009709814606943], [-72.761425426059532, 42.009516159629065], [-72.76158770451643, 42.009328070472385], [-72.761949499229004, 42.009106804788324], [-72.762340832520451, 42.009011362206195], [-72.762533181072726, 42.008909020897285], [-72.762832493062575, 42.008824677317051], [-72.763192996690364, 42.008751542732654], [-72.763645822311517, 42.008633986128324], [-72.76405965954018, 42.008583760695394], [-72.764320238538119, 42.008573586606161], [-72.764549767700458, 42.008574470397321], [-72.764817529016995, 42.008609777565646], [-72.765009744782475, 42.008519229145527], [-72.765248254319985, 42.008388909416873], [-72.76556332700315, 42.008247476988288], [-72.765748366094769, 42.008099739292106], [-72.765986328881553, 42.00801489581707], [-72.76631713282697, 42.007839070721118], [-72.766387512552441, 42.007644698607443], [-72.766821518503491, 42.003224354761883], [-72.774960462822378, 42.002320175658127], [-72.794534168237689, 42.000122626134058], [-72.816961961282658, 41.997640710653286], [-72.81675625263982, 42.000118750631017], [-72.815198250356545, 42.018873106058862], [-72.813727232689828, 42.036643833292821], [-72.834896122689955, 42.03710168009389], [-72.86369671374085, 42.037541530868566], [-72.874540358424497, 42.037755016682922], [-72.9790014421949, 42.038217203358023], [-72.999579542596734, 42.038594878319685], [-73.008615995584577, 42.038795746231365], [-73.053054815787405, 42.039826500805312], [-73.053474589207866, 42.040286258730291], [-73.053644622223501, 42.040565889563716], [-73.053829952684666, 42.040868364638655], [-73.054015182012563, 42.041176513810555], [-73.054077705027211, 42.04141654243174], [-73.054155250295935, 42.041599006518474], [-73.054541401407207, 42.042278664098234], [-73.054718777347048, 42.04254693766012], [-73.054903803079412, 42.042792054763446], [-73.054935254234749, 42.042986400720871], [-73.054974783882102, 42.04324925329469], [-73.054975632848226, 42.043432128818068], [-73.054969017352946, 42.043695068215541], [-73.054962271278455, 42.043878587233117], [-73.054970977244309, 42.044135735430885], [-73.054941218889894, 42.044341538831695], [-73.054950175643668, 42.044638574771611], [-73.054958991222307, 42.044924896709375], [-73.054944489409976, 42.045107440520809], [-73.055021967819528, 42.045301701195754], [-73.05526834191339, 42.045570206838789], [-73.055521884311503, 42.045711917304594], [-73.055798672048809, 42.045900045952145], [-73.055968122457429, 42.046105482030001], [-73.056129864142363, 42.046282207415061], [-73.056276346392849, 42.04651659060832], [-73.056376911087909, 42.046711076696717], [-73.056454296596058, 42.046876612470719], [-73.056570435635521, 42.047144635673632], [-73.056663416477363, 42.047419097063916], [-73.056702638765529, 42.047624592776295], [-73.056688651738767, 42.047956248909941], [-73.056643844298236, 42.048208451939715], [-73.056529641762666, 42.048414323857294], [-73.056384666003083, 42.048557490736094], [-73.056155225666089, 42.048695142596443], [-73.055941556396718, 42.048924338184385], [-73.055735044359338, 42.049016563475718], [-73.055451990899925, 42.049199966641105], [-73.055230777547933, 42.049412334405496], [-73.055047613779792, 42.049589876461035], [-73.054871863270478, 42.049779113499007], [-73.054765451103265, 42.049967948672553], [-73.054720220676487, 42.050134070900974], [-73.054667423750118, 42.050351443000288], [-73.054607102614753, 42.0505971022152], [-73.05412375038533, 42.054097517384548], [-73.053995377024933, 42.054589389799354], [-73.05390525362148, 42.054990244994627], [-73.05389869952478, 42.055275694935695], [-73.053938480290327, 42.055573392518681], [-73.05397744635664, 42.055738911229454], [-73.054001242460998, 42.055921474828295], [-73.054017390685502, 42.056127284511518], [-73.054064776028255, 42.056390030338903], [-73.054096724788891, 42.056693507198162], [-73.054066723093271, 42.056865005082273], [-73.054052262743156, 42.057059344100793], [-73.053984289484532, 42.057293850613114], [-73.053924263089257, 42.057556884305846], [-73.053955963984663, 42.057825516100586], [-73.054064824433141, 42.058116692609744], [-73.054249584221722, 42.0583393025696], [-73.054411359021401, 42.058481721874394], [-73.054642111840181, 42.058653009726456], [-73.054857214128404, 42.058772282143423], [-73.055195000917038, 42.058868365698366], [-73.055578759178971, 42.058941941849483], [-73.055839479826545, 42.058969914430207], [-73.056146393516627, 42.059009144618692], [-73.056491439812874, 42.059031466713002], [-73.0567296691884, 42.059127818951268], [-73.057028701607933, 42.059121499838028], [-73.057389523102643, 42.059274713995904], [-73.057765826011405, 42.059393948444743], [-73.058011515953822, 42.059479030822331], [-73.058387890164255, 42.059620774200937], [-73.058710585097771, 42.059751451213977], [-73.058910213483173, 42.059860121175731], [-73.059179723501614, 42.060093455291131], [-73.060709658204644, 42.061004595663746], [-73.061601777502077, 42.061573774635171], [-73.061702159888085, 42.061739533478701], [-73.061741509544049, 42.061939352678984], [-73.061665723756448, 42.06217955347946], [-73.061575027688676, 42.062403118731503], [-73.061407287441128, 42.062609185168519], [-73.061300548680535, 42.062774978320711], [-73.061148143159372, 42.062975702436049], [-73.061026319120444, 42.063147284025675], [-73.060561677936207, 42.063811598354818], [-73.0597156305883, 42.064894067417313], [-73.059387898052989, 42.06531275205905], [-73.059136143207255, 42.065621803329364], [-73.058861384141679, 42.065879930223375], [-73.058617171177019, 42.06613205751686], [-73.058487502345571, 42.066275017800422], [-73.058312312878371, 42.066532958108155], [-73.058205998975552, 42.066756102610178], [-73.058153223147954, 42.066944840400161], [-73.058184849074308, 42.067150348668434], [-73.058246955576379, 42.067327347131048], [-73.058362751682353, 42.067476060044747], [-73.05855556159834, 42.067709809697426], [-73.058724762109236, 42.067823486944043], [-73.059086243891031, 42.068080242026959], [-73.059286266604744, 42.068194038918122], [-73.059540022131998, 42.068365003972872], [-73.059766922133548, 42.068480685030579], [-73.060028325898259, 42.068662800531762], [-73.060182426318207, 42.068810989610384], [-73.060405946845577, 42.069044857936142], [-73.060514240480671, 42.069261747004788], [-73.060653357958742, 42.069478846048597], [-73.060769585540626, 42.069752987025161], [-73.060877967680241, 42.069958618606918], [-73.060978434194155, 42.070112580672379], [-73.061209081135019, 42.070237752912647], [-73.061439626703475, 42.070368599079814], [-73.061732274479908, 42.070597019539647], [-73.0730686288627, 42.094239677484033], [-73.074018057117271, 42.101440605481109], [-73.074042136410597, 42.101646212813201], [-73.074059135087865, 42.101966187884337], [-73.074167615211778, 42.102171805953645], [-73.074314786696206, 42.102445598254249], [-73.074415918711551, 42.102691298170072], [-73.074532959772029, 42.103090940488229], [-73.074650314394631, 42.103508047574508], [-73.074751591998208, 42.103793636207293], [-73.074867554502958, 42.103993567809027], [-73.074914795985634, 42.104216325853514], [-73.074946956154108, 42.104513580395476], [-73.074940621463227, 42.104765260008101], [-73.074964970858034, 42.105010844670126], [-73.075004230881305, 42.105199404351573], [-73.075051317554866, 42.105381733158922], [-73.075052258310251, 42.105570819791666], [-73.075045624872644, 42.105776309162607], [-73.074977615617883, 42.105959590419822], [-73.07490931354539, 42.106131079443074], [-73.074787420054108, 42.106291959104112], [-73.074580983600015, 42.106418072265619], [-73.074328085661648, 42.106469994320989], [-73.073990969601908, 42.106568547164258], [-73.073715320811502, 42.106683273385656], [-73.073347887638661, 42.106827264550439], [-73.073133408279716, 42.10690224856932], [-73.072888474738136, 42.107017091153359], [-73.072651572079835, 42.107177927168756], [-73.072406813587577, 42.107373178561282], [-73.072254162230152, 42.107527814363337], [-73.072071527965491, 42.107819553333243], [-73.071896488002594, 42.108071296788999], [-73.071782748888396, 42.108352004385537], [-73.071715575430943, 42.108706361884984], [-73.07170926034749, 42.108964253977618], [-73.071748581736969, 42.109140927480581], [-73.071803485729049, 42.109346202263872], [-73.071911726690715, 42.109517517581601], [-73.072173558684227, 42.109694018504854], [-73.072497098700808, 42.109945041264638], [-73.072659310280613, 42.110127411122789], [-73.072821441973261, 42.110355345793344], [-73.072899242188598, 42.110532751194242], [-73.073030896820256, 42.110789829189045], [-73.073001337655697, 42.110978163857503], [-73.072933742569361, 42.111246982623086], [-73.072796611005046, 42.111447510036058], [-73.072697762029875, 42.111601947710454], [-73.07253031317137, 42.111848004725076], [-73.072331523641154, 42.112020112640863], [-73.072094739075922, 42.112186528420132], [-73.071880365929857, 42.112295906361439], [-73.071666391749844, 42.112450752279855], [-73.07152927055526, 42.112622642881277], [-73.071422595361483, 42.112788442642078], [-73.071231515533455, 42.112920461798815], [-73.070979392401114, 42.113127066539327], [-73.070757345516199, 42.113224661305331], [-73.070436001136855, 42.113385569558524], [-73.07018323114454, 42.113483044118489], [-73.069854265203475, 42.113643965124837], [-73.06959396270716, 42.113764593670943], [-73.069226429398839, 42.113926131349167], [-73.068935382620623, 42.11400665830913], [-73.068636355778096, 42.114087293801148], [-73.06829173662662, 42.114202320419977], [-73.067962169903979, 42.114295168432385], [-73.067648325300524, 42.114427240967295], [-73.067387336088743, 42.114422348061005], [-73.066996653534986, 42.114543043657093], [-73.066628901234637, 42.114647125758808], [-73.066284050724747, 42.114733424369874], [-73.065938905067185, 42.114802887153616], [-73.06570147195464, 42.114860701332631], [-73.065372108987219, 42.114981723743618], [-73.065081016253359, 42.115085293449411], [-73.06483582586965, 42.115171936816054], [-73.06461366062257, 42.115206488076765], [-73.064399245586145, 42.115310179259914], [-73.064131536082172, 42.115464663938553], [-73.063932473918541, 42.115568144580699], [-73.063679817697448, 42.115700451162219], [-73.063435002565626, 42.115827067232637], [-73.063197631705251, 42.115941694740989], [-73.062998841359246, 42.116090733804967], [-73.062800291864335, 42.116274167188692], [-73.062586214975255, 42.116445925811448], [-73.062379839725367, 42.116606323092249], [-73.062188828979814, 42.116801358644878], [-73.062013384081865, 42.116990058406721], [-73.061822491961635, 42.117185091688718], [-73.061700723802232, 42.117368016447791], [-73.061517500097111, 42.117579873471726], [-73.061342353502667, 42.117854652977847], [-73.061205600374933, 42.118111980107827], [-73.061122833316418, 42.11845474629866], [-73.061093438154245, 42.118700524878136], [-73.061102453633282, 42.118968832023278], [-73.06120336000248, 42.119196536347225], [-73.061342592275835, 42.119418675595405], [-73.061551508926229, 42.119754584640077], [-73.061736601093557, 42.119947913586962], [-73.06189893081158, 42.120169737295612], [-73.06212269555229, 42.120391173295317], [-73.062353979205355, 42.120618269108832], [-73.062523570066702, 42.12077128709916], [-73.062808380137653, 42.120981263609423], [-73.062977902746411, 42.121111770135393], [-73.063147477726829, 42.121259114486747], [-73.063402137762168, 42.121531453271324], [-73.063679682506162, 42.121809602341251], [-73.063819068186987, 42.122076670035106], [-73.063966110219496, 42.122354978960203], [-73.064089795706707, 42.122554185158826], [-73.064259742462539, 42.122775271315263], [-73.064491107788598, 42.123019741131685], [-73.064706900036683, 42.123240830888506], [-73.064999515910415, 42.123462491665052], [-73.065291946021247, 42.123632377238685], [-73.065615366008373, 42.123842449772212], [-73.065807684161413, 42.123950128967593], [-73.066131154158654, 42.124206213408989], [-73.06627020363014, 42.124365856774119], [-73.066378768325833, 42.124593992305549], [-73.066479455290988, 42.124782254588361], [-73.066607926466759, 42.125086657660638], [-73.066654144710455, 42.125253783185308], [-73.066648759552692, 42.125442414985514], [-73.066620138539037, 42.12562569178138], [-73.066607152006256, 42.125820010647757], [-73.066578827355372, 42.126020212197382], [-73.066666602782163, 42.126322380188917], [-73.06676067852932, 42.126487680604754], [-73.066831573422846, 42.126664553838992], [-73.066925529183266, 42.126829855764598], [-73.067020318651103, 42.127063221720789], [-73.067121893701255, 42.127228419277451], [-73.067323797368132, 42.127444561578834], [-73.067571879129261, 42.127688796712683], [-73.067750501912386, 42.127887877751903], [-73.067868461279772, 42.128138395093472], [-73.067963789808701, 42.128417856967452], [-73.068081787069673, 42.128679629446303], [-73.068169121447866, 42.128953707695814], [-73.068233026854259, 42.129170566557477], [-73.068266758893046, 42.129439165162026], [-73.068376306090798, 42.129632977501473], [-73.068416719365743, 42.129809636701076], [-73.068634585383947, 42.130088680962388], [-73.068774848748802, 42.130281982350041], [-73.068868693991647, 42.130447284246465], [-73.069063813671818, 42.130726009077186], [-73.069181003415196, 42.13092538897007], [-73.069252709395329, 42.131159069266772], [-73.069309385350536, 42.131416007397306], [-73.069427930689585, 42.131723965100718], [-73.069468471379835, 42.131900712232628], [-73.069516402569022, 42.132077898393973], [-73.069542123701538, 42.132305995160742], [-73.069552659246213, 42.132546186131748], [-73.069601511813431, 42.132780179247227], [-73.069681413841863, 42.133071196928938], [-73.06970730884413, 42.133311177450672], [-73.069679249562526, 42.133516958898959], [-73.069597756994781, 42.133763453136254], [-73.069463386740111, 42.134073164152746], [-73.069411863157868, 42.134244959014971], [-73.069452836293664, 42.134473387109985], [-73.069447773176876, 42.134684526419491], [-73.069350397657971, 42.134885673991668], [-73.069153964114747, 42.135126988483542], [-73.068940644240271, 42.135248051085242], [-73.068689125901003, 42.13537530918272], [-73.068475856016065, 42.135508256394708], [-73.068271604842948, 42.135727164570667], [-73.068281619153552, 42.135926841515946], [-73.068369204022062, 42.136200825979707], [-73.068378921532826, 42.136383578158764], [-73.068404520814951, 42.136577458856749], [-73.068445700616053, 42.136829026414567], [-73.068486569350029, 42.137028821266867], [-73.068572978483431, 42.137211063907422], [-73.068674834897777, 42.137381929206981], [-73.068722837195594, 42.137547228417773], [-73.068809874879648, 42.137769533129259], [-73.068797256400842, 42.137998154749319], [-73.068769071152914, 42.138203937480803], [-73.068725334587199, 42.138387511429158], [-73.068804824038381, 42.138632341128805], [-73.068945103147456, 42.138820599479182], [-73.069092922739188, 42.138990835090745], [-73.06934023998339, 42.139143319405292], [-73.069579539583572, 42.139284657162023], [-73.069772830617907, 42.1394148285654], [-73.069990004354722, 42.139625174104154], [-73.070176547026819, 42.139829725955124], [-73.070339244834713, 42.139965358246499], [-73.070572652734, 42.140249769126605], [-73.070644022885816, 42.140449685462315], [-73.07071574723723, 42.140683454514253], [-73.070779465730311, 42.140877262411273], [-73.070958135682204, 42.141076338043611], [-73.071090810512999, 42.141269740725619], [-73.071154759950744, 42.141492360244882], [-73.071250142433158, 42.14177749149102], [-73.071321918308527, 42.142022965549209], [-73.071393298887799, 42.142228013949357], [-73.071472937762735, 42.142473380090109], [-73.071606161809228, 42.142718101361488], [-73.071747158548419, 42.142968839063286], [-73.071919508432984, 42.143293435179395], [-73.071937865539255, 42.143550987467719], [-73.071825771028429, 42.143802945224614], [-73.07163578966977, 42.143958630408129], [-73.070745209824864, 42.144553352959875], [-73.070234500460117, 42.14484282845919], [-73.07022109125441, 42.145019774016504], [-73.070315532192751, 42.145208118511853], [-73.07041704325465, 42.145378987020734], [-73.07041986004289, 42.145624866167147], [-73.070383777829178, 42.145819501440876], [-73.070324384829192, 42.145991404133134], [-73.07022757262223, 42.146255036854114], [-73.070177154447606, 42.146535412869426], [-73.070241330347471, 42.146786664507445], [-73.070281792444703, 42.146969535354238], [-73.070322468038583, 42.14718058789218], [-73.070478225114144, 42.147396816987651], [-73.070620067367628, 42.147715709774467], [-73.070761177177587, 42.147995171952594], [-73.070801989353953, 42.148206762725373], [-73.034832029114739, 42.143675216794236], [-73.007919816398299, 42.238452390183674], [-73.004610378321672, 42.250088984533477], [-73.004311804991161, 42.251423835916384], [-73.001858103019003, 42.251096418112482], [-73.000212628836792, 42.31274631493541], [-72.953272787533891, 42.343875329324703], [-72.895621531439375, 42.340704920781945]]]}, "type": "Feature", "id": 8, "properties": {"COUNTY": "HAMPDEN", "AREA_ACRES": 405796.90000000002, "OBJECTID": 7.0, "FIPS_ID": 25013}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.040301040210764, 41.386657901306009], [-70.038509529417951, 41.385061752380047], [-70.036444511275334, 41.383252138403705], [-70.031434933989189, 41.378721452924076], [-70.030008193823846, 41.377347180641145], [-70.027336298608063, 41.37512826168868], [-70.024576831561731, 41.372342456134476], [-70.023938756664251, 41.371789349845066], [-70.022907061608066, 41.370663803657813], [-70.021420787560444, 41.369019669302318], [-70.019386847495568, 41.366407542558285], [-70.017960905474553, 41.364213146686218], [-70.017353741061342, 41.363300215024466], [-70.013501914429128, 41.357623325233185], [-70.013047389248896, 41.356735515801738], [-70.011955221091355, 41.355060859045068], [-70.011621450863814, 41.354559495985356], [-70.010711371476603, 41.353297029351523], [-70.008315530393403, 41.34958927065373], [-70.007679313134076, 41.34858585365177], [-70.006466015292077, 41.34702948807432], [-70.005040555747257, 41.344897871352977], [-70.004465660221626, 41.343687054397932], [-70.000341974370713, 41.337742171395455], [-69.999585849415368, 41.336547476118724], [-69.999462810758743, 41.336362326701177], [-69.999082849936102, 41.335795657851044], [-69.998904088182002, 41.335489914709399], [-69.998484936143257, 41.334862481701222], [-69.997743205491574, 41.33375513126213], [-69.997006661960569, 41.332779584731313], [-69.996512229335906, 41.331970507663058], [-69.995819570368567, 41.331142944860545], [-69.995064967108348, 41.330288169670808], [-69.994425767207133, 41.329464731058856], [-69.994190391324608, 41.328879708007584], [-69.993638593023292, 41.32795720413894], [-69.993200394919228, 41.327428009677604], [-69.99275725208814, 41.326967364230953], [-69.992311080462073, 41.326432386932829], [-69.99205993153798, 41.325629862929993], [-69.991453134718483, 41.324650875284554], [-69.990788295243718, 41.323570435945761], [-69.990322206405168, 41.322898491697394], [-69.990020572617311, 41.322360300821508], [-69.989519378349371, 41.321368213730132], [-69.9888217236998, 41.320207901906564], [-69.98826075734371, 41.319239773739412], [-69.987930064386063, 41.31854198359575], [-69.987452137801299, 41.317766763611182], [-69.98686137347822, 41.317005880730292], [-69.986420531542095, 41.316401703381359], [-69.98607073399539, 41.315801534225834], [-69.98580897587091, 41.315124921157761], [-69.98545023236322, 41.314479155926769], [-69.984799425497712, 41.313541773931853], [-69.984282422808803, 41.312532521641401], [-69.983736995897289, 41.31156953079212], [-69.982955483776394, 41.310606252875935], [-69.982094260257028, 41.309524836835763], [-69.980993873727485, 41.308361950500924], [-69.98022444088835, 41.307507413031942], [-69.979565252519649, 41.306546834615418], [-69.978820121758758, 41.305519811631711], [-69.978051505071491, 41.304693995118996], [-69.977227459043547, 41.303794217717986], [-69.976291425311601, 41.302748307978007], [-69.975732493948044, 41.302021021085963], [-69.974818860753899, 41.300969187465199], [-69.974163901306071, 41.300123444705861], [-69.973292012555049, 41.298955098509701], [-69.972797469325656, 41.298329969954835], [-69.972345157753594, 41.297611309218844], [-69.972013732551432, 41.297096978584598], [-69.971495522232942, 41.296448922200469], [-69.970885552983077, 41.295768646280088], [-69.970471472702954, 41.295060670098998], [-69.969984163377191, 41.294434996210761], [-69.969627251841132, 41.29382909454965], [-69.969134465837968, 41.293042966768084], [-69.968868437008027, 41.292446757432188], [-69.96870522963529, 41.292140634581983], [-69.968197259432117, 41.291566991123943], [-69.967781894719309, 41.291025576519118], [-69.967235329622326, 41.290223493197381], [-69.966737846559198, 41.28951158064153], [-69.966355690678029, 41.288855259018199], [-69.965889559174755, 41.28797096513324], [-69.965418462181816, 41.287155218629231], [-69.965070601946252, 41.286583733360416], [-69.964635023107036, 41.285716237583124], [-69.964347843216729, 41.28514890550349], [-69.963864048732603, 41.284396643890901], [-69.963317095307858, 41.283600208506876], [-69.962719738201528, 41.282655585956547], [-69.962288799165293, 41.281891069202182], [-69.961967438936966, 41.281227094331548], [-69.961713623906562, 41.28073395865745], [-69.961472086510241, 41.280366516778372], [-69.961005394111638, 41.279665712564004], [-69.960592482574896, 41.278992563077296], [-69.960329259547848, 41.278459404649084], [-69.960111162588944, 41.277706782204511], [-69.959933921767245, 41.277022792626248], [-69.959727112980516, 41.276172981000471], [-69.959573828621089, 41.275126872695857], [-69.959505884819109, 41.274130913439457], [-69.959388028925034, 41.273026216109848], [-69.95941405465129, 41.271689984763782], [-69.959372204034352, 41.270182727222007], [-69.959431995080692, 41.268742230164655], [-69.959581846919562, 41.267483057310798], [-69.95973089732847, 41.266401718539214], [-69.96012124362457, 41.264862080314501], [-69.960523750755115, 41.263471816664087], [-69.960857418497696, 41.262449271906817], [-69.961397935436722, 41.261284924899371], [-69.961703206412366, 41.26051574697297], [-69.961830361251401, 41.259859045860452], [-69.962214672245423, 41.258772982751303], [-69.962738348708967, 41.257786786829328], [-69.96328412933299, 41.256558840031062], [-69.963456736823431, 41.255901585094271], [-69.963718875540465, 41.255402590790176], [-69.963982892391016, 41.2549497260622], [-69.964207847757123, 41.254273461206957], [-69.964444010110697, 41.253907473529345], [-69.964633195489682, 41.253684923959206], [-69.964774564891584, 41.25340094239592], [-69.964773800938559, 41.252982749263559], [-69.96488251471898, 41.252642043796847], [-69.965141534312806, 41.252257815469669], [-69.965932151803045, 41.251706921528701], [-69.966628410640169, 41.25124469986423], [-69.967330946147968, 41.250758966649194], [-69.967862153099759, 41.250357622628414], [-69.968554066874972, 41.249986549130455], [-69.969266436152154, 41.249552715111804], [-69.970096209760555, 41.249218888543922], [-69.971206600486639, 41.248684084227598], [-69.972520501697446, 41.248104745025962], [-69.973111765442155, 41.247885365046002], [-69.974518788324588, 41.247372545936734], [-69.975768452214453, 41.246903691622578], [-69.977042267248052, 41.246457120887925], [-69.978435508513073, 41.245984589634766], [-69.9797407717613, 41.245589019232661], [-69.981085426527088, 41.245232323758486], [-69.981924383140395, 41.244944189635724], [-69.982726703288165, 41.244691576483255], [-69.983437845689849, 41.244434852528279], [-69.984486926644138, 41.244073609806087], [-69.985558632922704, 41.243728869078524], [-69.986842510426939, 41.243356073521802], [-69.987575497496778, 41.2430822373586], [-69.98845934458042, 41.242769893364283], [-69.9895768313975, 41.242429689646151], [-69.990322902177667, 41.242299006110386], [-69.990945394999741, 41.242101292965955], [-69.991420182559779, 41.24201083195841], [-69.992063427151962, 41.241767285564393], [-69.992841984344594, 41.241491772791179], [-69.993990434294474, 41.241162114428612], [-69.994727448636837, 41.240973831275504], [-69.995336369623956, 41.240840117219463], [-69.995758056680472, 41.240744428710677], [-69.996375083058297, 41.240610817024553], [-69.996794944202648, 41.24048079239482], [-69.996988269779663, 41.24037584779601], [-69.997840693546593, 41.240113079876075], [-69.998935682784818, 41.239853528357585], [-69.999465125394849, 41.239802030295635], [-70.001586793412841, 41.239351316031851], [-70.003981276665243, 41.239140998720359], [-70.00801289364361, 41.238664740643124], [-70.012105483567524, 41.238097384671946], [-70.01522667531205, 41.237961681660842], [-70.018227193263627, 41.238025294573923], [-70.020772616365576, 41.23825503996779], [-70.023016183206593, 41.238622695958043], [-70.024742880564503, 41.23878707776236], [-70.026955124425314, 41.239289766285495], [-70.029986572796645, 41.239569040824463], [-70.038078231681055, 41.240712890526915], [-70.041987273267523, 41.241442709313588], [-70.047261355492324, 41.242106657117354], [-70.052807846604679, 41.242677587205044], [-70.057809036597845, 41.243027966078408], [-70.059476267289924, 41.242931632701072], [-70.061142909005952, 41.243186987314679], [-70.066204934274154, 41.243509043518849], [-70.074904042040998, 41.24385212811633], [-70.083239129411737, 41.244395282696743], [-70.085634048238944, 41.244192336213352], [-70.088876824479087, 41.243684680714921], [-70.091665260844181, 41.243045837640864], [-70.092816699150703, 41.24261112566294], [-70.094149617545398, 41.241923111106338], [-70.09696806595332, 41.240842659573516], [-70.098998836442604, 41.240732789250593], [-70.102848271374981, 41.240957211881245], [-70.105848979160356, 41.240838317063684], [-70.106485285910281, 41.240976731903949], [-70.112517097672054, 41.241414021334641], [-70.116154630485937, 41.241909934996556], [-70.118670683095061, 41.242345383500641], [-70.122095872338534, 41.243257848447044], [-70.124465607810762, 41.244018335949896], [-70.134647275285019, 41.246945003994945], [-70.138738075497599, 41.247913353399028], [-70.141951172315686, 41.248602045457524], [-70.148467762603687, 41.249519295779699], [-70.150983214549257, 41.250115461832671], [-70.155799328863878, 41.251184140043485], [-70.160467434110146, 41.252578438605632], [-70.162892118724585, 41.25349976235934], [-70.166347944752161, 41.254482640316475], [-70.170682466657397, 41.255879868966502], [-70.173410555558121, 41.256653707893939], [-70.174410467347869, 41.257274319416787], [-70.179654898471568, 41.259175400543242], [-70.181595981251263, 41.260137400253392], [-70.187901103729985, 41.262765141175493], [-70.193995548477503, 41.265143730956339], [-70.198119340502075, 41.267046207287422], [-70.201940569023307, 41.268411546656473], [-70.206823194387184, 41.270495116287435], [-70.207337658372197, 41.270651823772617], [-70.20885407423458, 41.270861127009923], [-70.210734766363544, 41.271480752381954], [-70.212069192703268, 41.272304736737105], [-70.215102234720774, 41.273651008290805], [-70.217649467095868, 41.275064983460439], [-70.217619913428351, 41.275254280416078], [-70.217315602167588, 41.275365634016836], [-70.21698222994624, 41.275342131602606], [-70.216254963077233, 41.27513406860232], [-70.215253395736511, 41.274747928944571], [-70.214677621789249, 41.274682315623721], [-70.212888459913245, 41.274790812973173], [-70.210250506702806, 41.274746702386416], [-70.209552753407451, 41.274609797203922], [-70.208218778081857, 41.274083563484311], [-70.207915616442207, 41.27405983915645], [-70.207399466517344, 41.274128225101997], [-70.206277735102688, 41.274563362700604], [-70.206005429894276, 41.274845055273993], [-70.204731628284506, 41.275344799567733], [-70.203973715327336, 41.275848283613179], [-70.202578633279373, 41.275944297063575], [-70.202002676634422, 41.276148118840304], [-70.201305683495065, 41.276624101234916], [-70.200910900744589, 41.276763095858847], [-70.200547404749102, 41.276676708278004], [-70.200547625378761, 41.276352552213005], [-70.20106256794746, 41.275824958751315], [-70.202699194748519, 41.274771686974574], [-70.202699864892864, 41.274294461450914], [-70.203063993144681, 41.273993660292831], [-70.203063125082508, 41.273722888055381], [-70.202821295355946, 41.27358171589627], [-70.201668489688132, 41.273467723223156], [-70.201607757474548, 41.273171051074996], [-70.201880547282968, 41.272942860704084], [-70.203305237749873, 41.272369422917272], [-70.203396347284254, 41.272071071722287], [-70.203183898995604, 41.271893589389137], [-70.202426315948571, 41.272009247118397], [-70.199515694589437, 41.273633782402754], [-70.197847930574397, 41.274065885946399], [-70.196938104075542, 41.274660409046206], [-70.196786741720132, 41.274914749751495], [-70.196544524390887, 41.275070074813115], [-70.196089591899195, 41.27513803462476], [-70.19569513188415, 41.275366968841098], [-70.195513214534429, 41.275620955196864], [-70.19521002810859, 41.275804298048833], [-70.194543339959097, 41.275937340728255], [-70.194360964957582, 41.276101816369717], [-70.194300141696758, 41.276399340166861], [-70.192238494602492, 41.277888793937223], [-70.191995685231319, 41.278089755123553], [-70.191480679413843, 41.278158082229879], [-70.19126844838982, 41.278340216380215], [-70.191116583556493, 41.278711601631073], [-70.191146633590705, 41.278918420929166], [-70.191298375194464, 41.279051912177607], [-70.191904892360654, 41.279144473107166], [-70.192238497839256, 41.27893393709229], [-70.192511343534591, 41.278300570253037], [-70.19314842537834, 41.277951721230593], [-70.194330462721226, 41.277128507761304], [-70.19478514709202, 41.276944124875179], [-70.195695452040241, 41.2769703881456], [-70.196180796010509, 41.276857218143789], [-70.196544261820691, 41.276538330877266], [-70.196816784850213, 41.275824001037876], [-70.197059852430257, 41.27566805484588], [-70.197817713018878, 41.275759537032613], [-70.198273194460313, 41.275664563328817], [-70.199030438112956, 41.275143190547162], [-70.200516372660559, 41.274407241834268], [-70.201001870653542, 41.2744742313591], [-70.200910843839651, 41.274844617044003], [-70.200576896235091, 41.275163226903899], [-70.200365110462045, 41.275526010915463], [-70.199758223733994, 41.275937197375548], [-70.1989704133358, 41.276287770145181], [-70.197151135254146, 41.27802718207451], [-70.196847849476029, 41.278138492991459], [-70.195877820514724, 41.278778957533696], [-70.19430042704964, 41.279579073248385], [-70.193178614280072, 41.280473307551254], [-70.192087134964623, 41.281682406814198], [-70.191693174523081, 41.282641322384265], [-70.191602279276793, 41.283236813815662], [-70.191753772336384, 41.284721505786493], [-70.191844856452263, 41.28541418946088], [-70.192299846658216, 41.286580483326965], [-70.192693672895842, 41.287450002583014], [-70.193846989169742, 41.289167418443554], [-70.194514245930009, 41.289854417615267], [-70.194908244679098, 41.290147107236137], [-70.196455674427952, 41.290761499111014], [-70.197941894074575, 41.291133756150124], [-70.198730378491248, 41.291107354798129], [-70.199853171090453, 41.290654290801562], [-70.199883506068971, 41.290446997657625], [-70.199700928456764, 41.289899590731025], [-70.199973699758701, 41.289599368339481], [-70.202036134098009, 41.288749091938051], [-70.204704910106784, 41.287883755146204], [-70.205341653424597, 41.287831888301653], [-70.206130179348619, 41.287949596897072], [-70.20670704157466, 41.288132862570635], [-70.207162219869133, 41.288407119298618], [-70.207617121444912, 41.288843900514685], [-70.207798857150181, 41.289139250929182], [-70.208072060244291, 41.290028135758611], [-70.208042286497829, 41.290856741243047], [-70.207890872174389, 41.29115557834475], [-70.207557221695851, 41.291474753583962], [-70.206586720049785, 41.291926303971117], [-70.197881830628702, 41.293440448281103], [-70.196638124298403, 41.293759284739203], [-70.196334274198918, 41.294059681811945], [-70.196304143704552, 41.294609684921575], [-70.196547027336777, 41.294814003768593], [-70.196213515548322, 41.295069576847261], [-70.194302492694518, 41.295269848235087], [-70.191906461208504, 41.295817272320647], [-70.191239138990881, 41.295824228795325], [-70.189600587868313, 41.295453540987459], [-70.187932375383241, 41.294723387928272], [-70.18526381476849, 41.294291157459924], [-70.183231118706573, 41.29424049405209], [-70.181956939687296, 41.293857008308663], [-70.181107768252161, 41.293766608084383], [-70.179287646387635, 41.29383036799014], [-70.173706766481402, 41.294265880547378], [-70.170642548748063, 41.294242868159756], [-70.161391005206639, 41.293940140051994], [-70.156780583580868, 41.293869714466823], [-70.153686651355628, 41.293738375727585], [-70.144374522119264, 41.293642346962628], [-70.138459834459965, 41.293709688930264], [-70.13042091206286, 41.293977929240647], [-70.127782460467387, 41.293814748166369], [-70.124446353246881, 41.293838420039918], [-70.120351727277068, 41.294040667194402], [-70.119199037279515, 41.294204978793545], [-70.115711113600952, 41.294346930481645], [-70.111191861390381, 41.295029894957544], [-70.109614271810187, 41.295378616869918], [-70.108462139842771, 41.295740927230938], [-70.105945106820968, 41.296684133239623], [-70.104580739611279, 41.297300418920933], [-70.104125555259429, 41.297367918791117], [-70.104034421456433, 41.296819225071026], [-70.10318396208784, 41.295674686439803], [-70.103183375788007, 41.295151872976227], [-70.103335351147933, 41.294718198256774], [-70.103365596959861, 41.293979565587698], [-70.102697037823077, 41.293526750414429], [-70.099753986603176, 41.292446895562179], [-70.096538482760039, 41.291738442901988], [-70.094869792058503, 41.29116907036839], [-70.094233240765703, 41.291031132473613], [-70.091533336358353, 41.290804477559078], [-70.090987555197529, 41.290665400667557], [-70.090198980945914, 41.290186792366072], [-70.089955875598619, 41.2898016058436], [-70.09010717482262, 41.289385948955221], [-70.09047055904837, 41.288994816975915], [-70.092472996665748, 41.288885861706213], [-70.095809233131021, 41.288331866952419], [-70.096021337569908, 41.288032846888825], [-70.096566886116705, 41.287766149876106], [-70.096900214733552, 41.287420728355116], [-70.096930879616053, 41.286934320794323], [-70.097445881957483, 41.286775836019679], [-70.097324222956729, 41.286020732987176], [-70.097203228447228, 41.285859400542634], [-70.095261986786738, 41.286139205219129], [-70.095140683708479, 41.285888361039255], [-70.095170010864692, 41.285518456652021], [-70.096474346886751, 41.285271810703151], [-70.097050326445284, 41.285086530758363], [-70.09711071909372, 41.284419229830263], [-70.096777113175989, 41.284422383880255], [-70.095140149969907, 41.284699208236042], [-70.095109537287101, 41.284510271771893], [-70.094320733752184, 41.284535946178728], [-70.094199239299172, 41.284239535337868], [-70.095290940213701, 41.284031410381566], [-70.095563388295844, 41.283920526599751], [-70.095473009716201, 41.283669526860628], [-70.09462320225515, 41.28366851222021], [-70.094562918753454, 41.283389791230952], [-70.095078518617868, 41.283213856100886], [-70.095078266451921, 41.283006747438293], [-70.094805254248328, 41.282864864190479], [-70.093683346254679, 41.283046765321373], [-70.093683340993024, 41.28268658163865], [-70.094896511615715, 41.282206412233776], [-70.095047297088911, 41.281997848795505], [-70.095077539687708, 41.281673429133569], [-70.094652700812347, 41.280902759417302], [-70.09346867257689, 41.279914459881134], [-70.092832396300764, 41.279550861258393], [-70.091801287085303, 41.279164332708049], [-70.091801248087322, 41.278975235828206], [-70.092013440613258, 41.278775275526705], [-70.0920130265132, 41.278450564875904], [-70.091557693870456, 41.278175836275764], [-70.090921107071765, 41.278181951241393], [-70.09004164736578, 41.277974056393781], [-70.089282845719993, 41.277674732859261], [-70.088767485509749, 41.277427428172054], [-70.088282220325397, 41.277495117428721], [-70.087979389259004, 41.277903295879625], [-70.08767631067137, 41.27799630961367], [-70.087008252609266, 41.2777234071416], [-70.086584698014008, 41.27776376606289], [-70.086220154752795, 41.277992157011646], [-70.083098020354029, 41.279598122841413], [-70.081551185624747, 41.280900693602035], [-70.080399125883503, 41.281631906280708], [-70.079489207948015, 41.282072959795016], [-70.077639847913431, 41.283603006315971], [-70.075001192670797, 41.286690514819171], [-70.074486671266982, 41.287379636893178], [-70.07324276508777, 41.288679704672404], [-70.072363743638235, 41.289642281076219], [-70.071908235170895, 41.289961776659737], [-70.071605434606042, 41.290054751950549], [-70.070664920223564, 41.289919594081191], [-70.0702708161148, 41.289688955602188], [-70.069300384562837, 41.289509015144155], [-70.068480665677129, 41.289273524759125], [-70.068298946886586, 41.289140026495097], [-70.068299232851473, 41.288842876975799], [-70.068420027361697, 41.288661522092987], [-70.06911718631909, 41.288132319275938], [-70.069420785770461, 41.287697184612817], [-70.069390501243475, 41.287400188704076], [-70.068844499390536, 41.287558784622782], [-70.068359230562947, 41.287788473136004], [-70.067358358199712, 41.288473025781599], [-70.067449729552266, 41.289210943204537], [-70.067359110595518, 41.289409518105863], [-70.066539981608727, 41.289822985730126], [-70.066145553810159, 41.29033061944731], [-70.065690148702217, 41.291677251875328], [-70.065266053765924, 41.29229373294379], [-70.065114775789695, 41.293321765105972], [-70.064568853076423, 41.294677870891711], [-70.064022179457481, 41.295547803696451], [-70.063901328899121, 41.29586422343305], [-70.06356744842121, 41.29593030938512], [-70.062990723766632, 41.295755315757113], [-70.062506209527243, 41.295498738506311], [-70.060321905011151, 41.2955007574744], [-70.058168063893291, 41.295709689665145], [-70.056772069592753, 41.296002003376593], [-70.055953909087322, 41.295982554450127], [-70.053951406102726, 41.295730679022206], [-70.050948434618377, 41.295586975703365], [-70.049916770042998, 41.295452188586061], [-70.048370497306053, 41.294862804568965], [-70.047823757192717, 41.294768619719591], [-70.045306425447123, 41.294746351115769], [-70.04403237521781, 41.295019275763295], [-70.041514193602964, 41.296023987356541], [-70.039056969155922, 41.297216909339163], [-70.035932203236896, 41.29842482155204], [-70.033929290201741, 41.299091697059843], [-70.03119896319653, 41.30020599218583], [-70.029741631112572, 41.301353797665307], [-70.029256313661065, 41.302196182371041], [-70.027526420345936, 41.303499619472376], [-70.025098783162818, 41.305034180833871], [-70.024461156963895, 41.305193082149863], [-70.022337538862416, 41.304617689705537], [-70.021791867506622, 41.304298275025218], [-70.020943023828806, 41.303495301018756], [-70.020791473340296, 41.303225968349565], [-70.020822232697768, 41.302973697671447], [-70.021064181359691, 41.302998833289905], [-70.022247931728231, 41.303564675663004], [-70.022580859049299, 41.304047987021718], [-70.024340105247205, 41.304140200223159], [-70.026130152329984, 41.303800470303301], [-70.026585943314331, 41.303337082509266], [-70.026586511800886, 41.30269721394211], [-70.02564624918341, 41.301192427147981], [-70.02558626427161, 41.300751494051234], [-70.025677042600108, 41.300552322282215], [-70.025617005207721, 41.29993138404361], [-70.025405340885868, 41.299590947171779], [-70.025405102109559, 41.298627438294155], [-70.025102216923557, 41.298261048375046], [-70.024646881121271, 41.297940483997252], [-70.023980287384006, 41.297090924383291], [-70.023708369910324, 41.295589258788347], [-70.023526263669567, 41.294986896400182], [-70.023526357315248, 41.294644718019192], [-70.023951716614945, 41.293731248565443], [-70.023951592197562, 41.293362053236756], [-70.023588418313309, 41.293158127729143], [-70.023073073241804, 41.293180663578532], [-70.022981255035177, 41.293388824227065], [-70.023163471011756, 41.294053591710302], [-70.022100476661507, 41.294459504919736], [-70.021736292651894, 41.29521906631426], [-70.021675474053552, 41.295787280194887], [-70.021493753517461, 41.295968871186872], [-70.020431289665069, 41.296266809517938], [-70.020219087351833, 41.296475644262756], [-70.020127751215, 41.297233097733503], [-70.019308067589762, 41.297393458565068], [-70.019156887694933, 41.29763793871453], [-70.018913312739187, 41.297829521486804], [-70.018003582091282, 41.298026423547199], [-70.017821480965949, 41.2981719849505], [-70.017790965241275, 41.298604983147733], [-70.018215822994492, 41.298510958182128], [-70.018791953445984, 41.298235936728872], [-70.019550506040488, 41.298075949851459], [-70.021159159523222, 41.298286636495945], [-70.022068518723216, 41.298188756325217], [-70.022068059212415, 41.298530930144111], [-70.021795009578526, 41.299064854026653], [-70.021794724117356, 41.299659162712366], [-70.022673549169923, 41.300272792469805], [-70.022613604265104, 41.300480829173253], [-70.021884903685006, 41.300982866692493], [-70.021126109510917, 41.301214454138929], [-70.021034988415067, 41.301557693771457], [-70.020154651376942, 41.302421258592446], [-70.019548342258631, 41.302579371141945], [-70.01824399381772, 41.302149782683337], [-70.016726600675355, 41.302172124735129], [-70.016271896327353, 41.302311316952981], [-70.015240237062855, 41.302014128511793], [-70.014542861341027, 41.302056208220421], [-70.013936001252375, 41.302304871369969], [-70.013571368010204, 41.302307913818289], [-70.013480212993699, 41.301777686624597], [-70.013329633161376, 41.301643517835991], [-70.012692032475002, 41.301667191474188], [-70.012509526004379, 41.302443702385126], [-70.012085037628964, 41.302582194748169], [-70.011235447019288, 41.302581099830036], [-70.010749290833587, 41.302783519663222], [-70.010476636013465, 41.303037735336254], [-70.010233623003444, 41.303445331677374], [-70.010112498933495, 41.303905770339568], [-70.01020287116387, 41.304499654018834], [-70.010747414966005, 41.30545844837885], [-70.011263482986024, 41.305832186200149], [-70.012416217428935, 41.306173235230837], [-70.014418077491442, 41.305876545784621], [-70.014812955272731, 41.305666157858603], [-70.015237771714936, 41.305302000277045], [-70.015905754185425, 41.305350117916284], [-70.017331656418804, 41.305580430397924], [-70.018059178583954, 41.305439135510071], [-70.019941519525119, 41.304485687958824], [-70.020760428159278, 41.30462246754616], [-70.021609215249825, 41.305101181451981], [-70.022185224602225, 41.305285472050535], [-70.023155977437938, 41.30549283408233], [-70.02364168067281, 41.305876293350451], [-70.024035828018924, 41.306539323191451], [-70.024672487993769, 41.307073866081481], [-70.026431196595766, 41.3090851272881], [-70.027128501901245, 41.309565246926852], [-70.028342279692168, 41.309932860281158], [-70.028948903497266, 41.31026942380614], [-70.029282652513032, 41.31036543190708], [-70.029676821282337, 41.31084843722649], [-70.030434686387807, 41.312129573162935], [-70.031071514700258, 41.313267938177141], [-70.032800430328507, 41.315810619095075], [-70.03273891832616, 41.315972986936963], [-70.032223393631583, 41.315995564531818], [-70.030858125799369, 41.315765150154967], [-70.027550623484288, 41.315560061508627], [-70.022786011197127, 41.31571963972435], [-70.02172474759422, 41.315873534658934], [-70.020358614242596, 41.316263678963949], [-70.018719450344335, 41.316953602582231], [-70.016777721827282, 41.317637825453971], [-70.013741690107466, 41.318546900558246], [-70.013044054693182, 41.318850648551482], [-70.012497409049743, 41.319215449046986], [-70.010493470731518, 41.320197076074543], [-70.007731138812701, 41.321311032751225], [-70.005303546034824, 41.322043851793907], [-70.003906839505831, 41.32273163551384], [-70.002145262868112, 41.324061926716958], [-70.001142510061896, 41.325043676119066], [-70.000018759575852, 41.326458834522896], [-69.999775532461413, 41.327217055301219], [-69.99947154538232, 41.327399873701708], [-69.999217415870632, 41.328005497635679], [-69.998983272138119, 41.328629846075081], [-69.998786087869632, 41.329241807641694], [-69.998631745872729, 41.32996806785961], [-69.998555892906708, 41.330755521818347], [-69.998550977932382, 41.331426314413498], [-69.99867450538612, 41.331876482746232], [-69.998873252836134, 41.332686760433454], [-69.999078272694021, 41.333290010477356], [-69.999465474971615, 41.334011568016862], [-70.000556841075777, 41.335128042752658], [-70.001618291289248, 41.336181527299146], [-70.003620350368493, 41.337812584806642], [-70.00853533875852, 41.340967284853285], [-70.008504272951214, 41.341147511552464], [-70.007927671175352, 41.341377997431209], [-70.007623849668633, 41.341695912630762], [-70.006713169450421, 41.341694525224661], [-70.006652268839161, 41.341857518846609], [-70.006774050029051, 41.34200041103616], [-70.007319786088644, 41.342085862231102], [-70.007441601040924, 41.342453783955627], [-70.006894588794538, 41.342819186703963], [-70.006894228825004, 41.342999277886307], [-70.007259005916168, 41.342933132180612], [-70.007531733749971, 41.342750510034101], [-70.007956990705452, 41.342755487138334], [-70.007956888187849, 41.342981235986983], [-70.008564065373207, 41.34270558843572], [-70.008716001338669, 41.343001327015976], [-70.008198961044044, 41.343573610936446], [-70.00786453500703, 41.343711657960959], [-70.007834422016387, 41.343963935487814], [-70.008047124312526, 41.344241386017586], [-70.008654025316432, 41.344560050364002], [-70.009291129913606, 41.345086219708818], [-70.009927648100572, 41.345287664800594], [-70.010079953347912, 41.345547387142105], [-70.010322957967674, 41.345662605602499], [-70.011172789210931, 41.345358080456933], [-70.011841818905864, 41.34488341255166], [-70.011810693537583, 41.344514347212844], [-70.011294848237753, 41.344122608295166], [-70.011356224138979, 41.343825177021635], [-70.012175534652755, 41.344079080419284], [-70.013632209464191, 41.345128638691939], [-70.015118738215733, 41.345710410896352], [-70.017092305446823, 41.345656955221472], [-70.01897433425836, 41.345297725793841], [-70.019490677806459, 41.345338249516686], [-70.01997601577402, 41.345568096005962], [-70.019946586873829, 41.345937987486636], [-70.019429703209411, 41.34639272151972], [-70.01918663479988, 41.346440238332029], [-70.018913470686172, 41.346352199078474], [-70.018428070459819, 41.346482628394646], [-70.018244632415147, 41.347214116350294], [-70.017637329086341, 41.347831995952248], [-70.017242501274808, 41.347853298047077], [-70.016666205616801, 41.34769653727389], [-70.015088055918142, 41.347602183658324], [-70.014601785476501, 41.347831547985976], [-70.013325546461061, 41.348860517081583], [-70.013172980358704, 41.350078121477559], [-70.013476881762926, 41.350165407587156], [-70.013446879887098, 41.350444702321916], [-70.013020934216129, 41.350988939677578], [-70.012990394805882, 41.351466963031093], [-70.012625702506554, 41.351605077220384], [-70.011866547480906, 41.351603022788574], [-70.011744660407913, 41.352108480146953], [-70.012169693492154, 41.353302700827811], [-70.012411273152679, 41.353687409206849], [-70.012775646073706, 41.353873463677729], [-70.013200579790833, 41.353942079752812], [-70.013656050767736, 41.35384783833991], [-70.014142147007405, 41.353483403391607], [-70.014810786251076, 41.352702548832383], [-70.01529637777135, 41.352473084087968], [-70.015600305287634, 41.352182163591095], [-70.015752890102775, 41.351541492942232], [-70.015783295706171, 41.350649247192564], [-70.015905739861154, 41.350423481941256], [-70.016634216860353, 41.349957488968904], [-70.016847356965044, 41.349477985980577], [-70.017515616503744, 41.348544570931224], [-70.018427153373878, 41.347833873457603], [-70.019064661607402, 41.347585040546932], [-70.019277221612569, 41.347015478057727], [-70.019702891454997, 41.346759907881761], [-70.020553160729122, 41.346481702388758], [-70.020553687084927, 41.345986446701701], [-70.020765917407445, 41.345705570448885], [-70.020826619439191, 41.344885218600403], [-70.022679328163832, 41.344292051513349], [-70.023924155598039, 41.343740993997621], [-70.024470456828766, 41.343402605154594], [-70.025199222372848, 41.342756377638011], [-70.026627200115414, 41.34104156143259], [-70.027690445750409, 41.339645074588468], [-70.028480045755956, 41.338133541390626], [-70.029270526539975, 41.3347490270382], [-70.029271895494105, 41.333289735259569], [-70.029423786313785, 41.332765471929093], [-70.029818053214157, 41.332095779596791], [-70.030061423476326, 41.331985301568075], [-70.030516620568577, 41.331963029233521], [-70.031578846821645, 41.332169880969886], [-70.032216431941279, 41.332191120247835], [-70.033491168437138, 41.33189131224151], [-70.034280849475024, 41.331623567992196], [-70.034797162062347, 41.3312311650472], [-70.035252150419126, 41.330677681711705], [-70.035829329746576, 41.32928545643783], [-70.036011769927953, 41.328418860481825], [-70.036012175165098, 41.326680412296412], [-70.035739197636971, 41.325485464119112], [-70.035527261456508, 41.325009342359365], [-70.035132960811765, 41.324112229236356], [-70.035649128624556, 41.324116660049029], [-70.036437686603506, 41.324371161960642], [-70.037742948997263, 41.324638460840525], [-70.038319329468465, 41.324668960894243], [-70.040959953593685, 41.324257851976093], [-70.042204672210403, 41.323661036126005], [-70.043357162517097, 41.322858162243207], [-70.045300376701277, 41.320750759724177], [-70.04554322263283, 41.320343537524018], [-70.046150535374025, 41.318761472758361], [-70.046150701626956, 41.318194178439335], [-70.045210860632324, 41.315653484936028], [-70.045210431311574, 41.315176230060487], [-70.04575701527277, 41.315152822108345], [-70.047121902430035, 41.315401690997525], [-70.047638310599496, 41.315424080488832], [-70.04933699985537, 41.315102617877749], [-70.050702467601113, 41.314531393318354], [-70.051157897241382, 41.314211977813812], [-70.053373397503833, 41.312156287103122], [-70.053707373385976, 41.311676015568388], [-70.05388953323677, 41.311196594034257], [-70.054951154834157, 41.309754734313373], [-70.05540644334819, 41.308678907530357], [-70.055467387089635, 41.307741488213502], [-70.055801227364938, 41.307648410658238], [-70.056650204905864, 41.308216907097858], [-70.057529674865762, 41.308470171940954], [-70.058288754200944, 41.308489934985673], [-70.060048193505509, 41.308330002570706], [-70.060837673038066, 41.30810655918436], [-70.062506594261706, 41.307235148847703], [-70.063962209535305, 41.306041971540111], [-70.064841509678359, 41.304349540205877], [-70.065023776239883, 41.303437879874842], [-70.065479013622735, 41.30163200793406], [-70.065691286480771, 41.301215983646479], [-70.066510275895894, 41.301217362458317], [-70.066601554900544, 41.301424005578745], [-70.066116392103368, 41.301563550949851], [-70.065994575341506, 41.301789374031493], [-70.065964192033221, 41.302177359615555], [-70.065691681561972, 41.302954517527354], [-70.065600329047172, 41.304036169139358], [-70.065843266873557, 41.304007103249837], [-70.066662507692826, 41.303548705931995], [-70.066965600314234, 41.302888453260437], [-70.067269159864296, 41.302480336132106], [-70.067511677561527, 41.302298272581552], [-70.067815192643252, 41.302358395488397], [-70.067815258091699, 41.30315981026731], [-70.068452017510182, 41.303135815097349], [-70.068695252604911, 41.302953667817398], [-70.068816356135102, 41.302475162340784], [-70.069422801740259, 41.302541364983654], [-70.069422613241969, 41.302748469565664], [-70.069726325695342, 41.303052255634185], [-70.069999240202876, 41.303049583411038], [-70.070424428072968, 41.302820207293607], [-70.070575934760242, 41.302638697517594], [-70.07094022690903, 41.3025003072405], [-70.071242982947879, 41.302272262819081], [-70.071273353140597, 41.301947938903105], [-70.070696564229848, 41.301358770816634], [-70.070818293768937, 41.30116833005998], [-70.07121245707242, 41.30114692667474], [-70.07215318034622, 41.301263981353422], [-70.07297248698579, 41.301283326656019], [-70.074277140230421, 41.301127071716934], [-70.074974791431671, 41.300967567512131], [-70.076217663466494, 41.300532448687221], [-70.076945643435934, 41.300075621040968], [-70.077431507063352, 41.29963825524402], [-70.078431812190559, 41.298377218050277], [-70.079159717760092, 41.297262497841217], [-70.079432956878762, 41.296530342334556], [-70.079371835593889, 41.293945786977545], [-70.079279688666162, 41.293739233840569], [-70.079249508989918, 41.292910969667716], [-70.07946158857203, 41.292801076172651], [-70.079977668700451, 41.292868339132262], [-70.08116132344712, 41.293739805875049], [-70.081312678597186, 41.293963398567819], [-70.081313050698384, 41.294287569637078], [-70.080978436913114, 41.294263651219801], [-70.080402859317786, 41.293602511539291], [-70.079856153320307, 41.29355395579541], [-70.079764890422211, 41.29386968239794], [-70.080038443089535, 41.294425821461076], [-70.080038856367423, 41.295083164279198], [-70.080159864507834, 41.295226506477896], [-70.080948365415594, 41.295155902192676], [-70.081221492315123, 41.295288185290651], [-70.082162180622532, 41.295522847473244], [-70.082647742781973, 41.295383149327691], [-70.082829512717893, 41.294768610837885], [-70.082616767319422, 41.29465401714414], [-70.082344478458893, 41.294332020573471], [-70.081858622241626, 41.294030487174773], [-70.081949894177015, 41.293849288152281], [-70.083072273896875, 41.293829589513216], [-70.084406827598769, 41.294492924771944], [-70.085347262618797, 41.294853081617653], [-70.086590847560387, 41.295039718955337], [-70.090170674986325, 41.296293813224608], [-70.090626030074077, 41.296524063903512], [-70.091566388343239, 41.296776112065686], [-70.092143398951606, 41.297329155915442], [-70.092143126592646, 41.297734359809525], [-70.090171648197725, 41.297780126172597], [-70.085530564032368, 41.298310355747972], [-70.083437389075911, 41.298681440709785], [-70.082072434183075, 41.299090344454065], [-70.079403327701783, 41.300304620521665], [-70.07803841817524, 41.301011170170355], [-70.071001423240759, 41.303760650669538], [-70.069029170068958, 41.304653018901149], [-70.066085823821183, 41.306346347322993], [-70.062567004735371, 41.308721146439296], [-70.058258611833793, 41.311831996614153], [-70.047485184825959, 41.320415762175564], [-70.046089048918233, 41.321644439805304], [-70.037558578452703, 41.330611795321019], [-70.034188402630633, 41.334776820580714], [-70.031910210298363, 41.338391416566523], [-70.031332618684544, 41.339323747442457], [-70.030694971315867, 41.340770907758078], [-70.02975298232974, 41.343220303050892], [-70.028871545916786, 41.345020515396897], [-70.028688905736047, 41.345806057508959], [-70.027442499151391, 41.349617951401605], [-70.025923222710972, 41.352685189102402], [-70.024523162321444, 41.357372481026587], [-70.024310216951164, 41.358932573800821], [-70.023732029441078, 41.361261774841353], [-70.023517810505012, 41.364488365267761], [-70.023547075175472, 41.36659586603205], [-70.024031663163981, 41.368609080520933], [-70.024971449942711, 41.370852803677082], [-70.025487777106449, 41.37179377547627], [-70.026854178580891, 41.373574248043958], [-70.02733945304557, 41.373984155153749], [-70.028189043635322, 41.374516849093709], [-70.02885465263121, 41.375123236571604], [-70.029795859609919, 41.376015678722624], [-70.031435599835277, 41.377829448377305], [-70.033074940134398, 41.379382049912351], [-70.034350076203026, 41.380415560846558], [-70.034866393204723, 41.380690134487786], [-70.036111032920971, 41.380850307977596], [-70.038693211501041, 41.381123997263273], [-70.041517842630412, 41.381530689090027], [-70.04239856079279, 41.381739053246243], [-70.04406831808349, 41.382498383712409], [-70.045586934441957, 41.383592795753287], [-70.048320051646812, 41.386404750338826], [-70.049383749489422, 41.387647528743685], [-70.04956533812215, 41.387898025496561], [-70.049717350521206, 41.388860058755583], [-70.049929671979498, 41.390164594317291], [-70.049868112504001, 41.392308557663767], [-70.049655973561769, 41.39247305952383], [-70.0465273838836, 41.391123300635577], [-70.046344730377584, 41.3909358185578], [-70.045979973660039, 41.39082190849701], [-70.04443180487911, 41.38977322777896], [-70.04327753544699, 41.389062768861081], [-70.040301040210764, 41.386657901306009]], [[-70.045374623530378, 41.384900800952806], [-70.04494900804697, 41.384688223703925], [-70.044068656846889, 41.384741112711367], [-70.043703566466263, 41.384627820908818], [-70.043703980913108, 41.384330038872449], [-70.044098604254017, 41.384047591092624], [-70.044129592984234, 41.383867264011947], [-70.043370084400408, 41.383252557355128], [-70.042702091331876, 41.382952388827363], [-70.041243901615161, 41.382722002035585], [-70.040454969729183, 41.38203593900635], [-70.039725667913601, 41.38198826639082], [-70.039391224349842, 41.381811151640136], [-70.038601563229022, 41.381899475578315], [-70.037902994289482, 41.381536480666512], [-70.037204635337517, 41.381605622897027], [-70.03729557602, 41.381812286433316], [-70.038419382519237, 41.38286513650678], [-70.038510121007704, 41.383044151768651], [-70.038509801819728, 41.383620452750854], [-70.038934506234597, 41.384166219167575], [-70.039815755709554, 41.384599639038704], [-70.040756948800436, 41.384879122501104], [-70.04185101875305, 41.385076732267201], [-70.042336871500638, 41.385495495253508], [-70.042670570928848, 41.385627567618648], [-70.043582180102689, 41.385583555783207], [-70.043855696111649, 41.385860007318456], [-70.045435061088597, 41.386503343300497], [-70.045860139416192, 41.386544821312512], [-70.046163614125874, 41.386406892752163], [-70.046164240594692, 41.386136217850357], [-70.045374620945111, 41.385909333609867], [-70.045222464233817, 41.385748715265699], [-70.045222400108244, 41.385334495641771], [-70.045465145216752, 41.385079807597137], [-70.045374623530378, 41.384900800952806]], [[-70.061535211783749, 41.294102465829944], [-70.061716663473277, 41.294199862956688], [-70.061990139575173, 41.294197127629545], [-70.062324111449527, 41.293896926552058], [-70.062627301593594, 41.293803980628773], [-70.063052326321653, 41.293719335591327], [-70.063142881789346, 41.293925342107862], [-70.063597268870168, 41.293894555734788], [-70.063597513242669, 41.293578855697191], [-70.063445877174189, 41.29330111698215], [-70.062991030342815, 41.293053382908433], [-70.062809130941673, 41.292847836237797], [-70.062778616044781, 41.292460878857227], [-70.062444553891766, 41.292364875179345], [-70.062020955742568, 41.292503563887728], [-70.061535272349289, 41.293165442014889], [-70.061353085132282, 41.293554826957156], [-70.061535211783749, 41.294102465829944]]], [[[-70.273981248325597, 41.30798888285446], [-70.273707402977067, 41.30796511435635], [-70.273191711653595, 41.308330950604123], [-70.271978240052519, 41.308578908315717], [-70.271219213268566, 41.309010706674776], [-70.269822462967312, 41.309998966837384], [-70.266454882214802, 41.310954480450555], [-70.262600810168422, 41.311114353547083], [-70.261448296470576, 41.310883385042047], [-70.26023542756198, 41.31040133247761], [-70.256109634901023, 41.309347551331719], [-70.249467190336617, 41.307087423281871], [-70.246849660029866, 41.306214835575204], [-70.246121774463262, 41.305844343404857], [-70.244330794307402, 41.304683712442497], [-70.242933621713192, 41.303447021346273], [-70.242235675364057, 41.302445900682812], [-70.24205251565742, 41.302231720896891], [-70.241566812676055, 41.300813803291625], [-70.241839062249852, 41.300288366216193], [-70.242324500906491, 41.30017499789043], [-70.242567220927469, 41.300316724046446], [-70.242628140577892, 41.300883505498305], [-70.243175045825865, 41.301346015351193], [-70.243175197144751, 41.301778226350358], [-70.243813035694131, 41.303014407664662], [-70.244936718964169, 41.304290284029172], [-70.248245510781615, 41.306280896249845], [-70.248639836353377, 41.306285889777932], [-70.248579033422374, 41.305980149488583], [-70.248700067839565, 41.305798610063924], [-70.249063667185865, 41.305731677598878], [-70.249481751185925, 41.305650759311995], [-70.248911697226049, 41.305066555874113], [-70.248152315969506, 41.303651763684492], [-70.247938572695446, 41.3027624688131], [-70.247968396605657, 41.302095306193365], [-70.247967679064644, 41.301248889026944], [-70.247755179280958, 41.30116099507898], [-70.246754037624768, 41.301108846165569], [-70.245995838554919, 41.300973300631441], [-70.244600458479582, 41.300889117391414], [-70.24496353732188, 41.300425460642849], [-70.245024268326333, 41.300127910249167], [-70.244781417175261, 41.299968179251479], [-70.2443568923958, 41.299927989704351], [-70.243992474342392, 41.300129962973614], [-70.243507553766918, 41.30018031366324], [-70.243112574832452, 41.299905163779137], [-70.241990161145651, 41.299449219987849], [-70.240896661403355, 41.298163564515335], [-70.240288919937029, 41.297224845350655], [-70.239712397467457, 41.296564435360942], [-70.239651348629209, 41.296267781651501], [-70.239801614323184, 41.29473475317026], [-70.239559132255422, 41.294295879621281], [-70.239801009678231, 41.293906345342947], [-70.241317119811342, 41.293133097763871], [-70.242712519168407, 41.292902081145208], [-70.244259292769925, 41.292713878325912], [-70.246837024573736, 41.292578143623139], [-70.247747012805064, 41.29257750888803], [-70.249450608627953, 41.292783831284346], [-70.251239537968075, 41.293016822649342], [-70.252422433537348, 41.292968018846878], [-70.254758540258408, 41.292608831559789], [-70.255790571048806, 41.292606684562614], [-70.257943410534153, 41.292907773833399], [-70.259066075621618, 41.292886332581048], [-70.259490172522405, 41.292971484246777], [-70.260188161324891, 41.293477168083321], [-70.260582120040993, 41.293590078681412], [-70.261218861859874, 41.293519978444657], [-70.261400931503331, 41.293364937291884], [-70.26088523538364, 41.292884309689668], [-70.259521465731297, 41.292196915083053], [-70.258975473594049, 41.292031637967149], [-70.25791402515496, 41.291529788630825], [-70.257035193006431, 41.290963034403262], [-70.255913883314818, 41.290434575518475], [-70.255640101321802, 41.290158642067979], [-70.255519056538432, 41.289880426818925], [-70.255490269446909, 41.288647056944463], [-70.256884114963711, 41.289631524491554], [-70.25858187979955, 41.290774545709588], [-70.260886720848376, 41.291902314245291], [-70.263038786810995, 41.293112734570379], [-70.26607070014623, 41.295033973189739], [-70.267556261767311, 41.29610763934626], [-70.268162482459402, 41.296659545635826], [-70.270557749606127, 41.29933513002856], [-70.271618577248574, 41.3008003134426], [-70.272314957868346, 41.301693629238265], [-70.273315604060741, 41.303087819478606], [-70.273861680541316, 41.304351553536293], [-70.274315782788605, 41.304941125348329], [-70.276529692718469, 41.306709140094362], [-70.277439091644865, 41.307572671963335], [-70.277621611699999, 41.308399169553461], [-70.277680075452992, 41.311857458147777], [-70.27755850092359, 41.312146533622162], [-70.27722419557702, 41.312537939844177], [-70.276829975775343, 41.312839284417102], [-70.276253273695332, 41.313134151563595], [-70.27595002236869, 41.313110610871334], [-70.274827554296223, 41.312771422485461], [-70.274585388668442, 41.312450316549054], [-70.274737069796345, 41.312267911251595], [-70.275464582340788, 41.312061936374334], [-70.276193928356108, 41.311414224832227], [-70.276345955511104, 41.31116933124688], [-70.276497531298318, 41.310339242004474], [-70.276619136857477, 41.309797506915551], [-70.276619960719259, 41.309220609506959], [-70.275922295379431, 41.308606981269158], [-70.275436616242644, 41.308513392020622], [-70.273981248325597, 41.30798888285446]], [[-70.269976893600713, 41.306357856629077], [-70.268915112561203, 41.305856649998162], [-70.265517252676702, 41.305830871789148], [-70.265183480380244, 41.306086643229612], [-70.264879715423007, 41.306477266107464], [-70.264728277178477, 41.307019293920149], [-70.264758101947578, 41.307406265661626], [-70.26490954463334, 41.307666163654758], [-70.265667405380384, 41.307918723853199], [-70.265940780017729, 41.308141142261562], [-70.266001469390375, 41.30841985811891], [-70.265758401122, 41.308665365516106], [-70.265788578394648, 41.309034332151818], [-70.265969938903353, 41.309266461594994], [-70.266668202745066, 41.309420937821962], [-70.267486604760464, 41.310042782720828], [-70.267881364323628, 41.31018214828417], [-70.268366473543907, 41.310068664186446], [-70.269914344105317, 41.309078733622563], [-70.271279982208284, 41.308055197683878], [-70.271311467264596, 41.307757316518448], [-70.270946609389426, 41.307572095607838], [-70.271008018566747, 41.306608219801106], [-70.269976893600713, 41.306357856629077]]], [[[-70.299308919184938, 41.337888656798683], [-70.296637931224168, 41.337612667393607], [-70.294179067678755, 41.337595498111014], [-70.29202403707724, 41.337799873727185], [-70.291629654363831, 41.337704989745838], [-70.290688824195811, 41.337291996456379], [-70.288897578119787, 41.336970115142449], [-70.288564116743458, 41.33679375295786], [-70.288533814739253, 41.336442800330367], [-70.288777097811732, 41.336034627481453], [-70.289383973086714, 41.335604412072257], [-70.29062844902721, 41.335122481442568], [-70.292601172578102, 41.334163157652917], [-70.293603441674406, 41.333197510233312], [-70.29402871742947, 41.332994313995947], [-70.296912149711773, 41.332421178873815], [-70.297792397981922, 41.332060277439929], [-70.299339759746388, 41.331664129647862], [-70.300706449331173, 41.331045530892624], [-70.301798123055008, 41.33075374136736], [-70.303437335968937, 41.330753078923728], [-70.305501349479997, 41.331234105349715], [-70.305865270619918, 41.331482232871792], [-70.305895354337167, 41.331869194586055], [-70.305531285707318, 41.331918207230665], [-70.304712293136973, 41.331531378654354], [-70.304257197610639, 41.331509732374876], [-70.303680585039729, 41.331804110906759], [-70.303042580043822, 41.331847427723929], [-70.302921585738574, 41.33132678004069], [-70.302405321250973, 41.331305559671222], [-70.30179861090204, 41.331528746313346], [-70.301586490685324, 41.331738100929066], [-70.30164666460287, 41.332034709457233], [-70.302040921447301, 41.33232756184929], [-70.302526787421286, 41.332538182629463], [-70.303012069811942, 41.333081864024734], [-70.303467613695332, 41.333221206083088], [-70.30489405900056, 41.33333982981182], [-70.305349010813657, 41.333749196504961], [-70.305410466462831, 41.334280018080676], [-70.305834873330866, 41.334707159146262], [-70.306199032011492, 41.334937189327405], [-70.306624008179099, 41.335031714804629], [-70.30732227202742, 41.334942280332662], [-70.307807305725873, 41.334774599086934], [-70.30874902932959, 41.334827287042025], [-70.309811130729059, 41.334688811692139], [-70.309993224773748, 41.334551700580278], [-70.310660773382054, 41.333661711755227], [-70.310751863418361, 41.333174186887113], [-70.310265606074267, 41.332440808843032], [-70.309021968053514, 41.331302190471227], [-70.308141690190382, 41.330798856638239], [-70.306563341130769, 41.330114192439915], [-70.305471248507487, 41.330063860129556], [-70.305197096834746, 41.329787415270317], [-70.304439420989695, 41.32944517287622], [-70.304348533271011, 41.329193713133165], [-70.304711968385263, 41.329036646282702], [-70.305501708881764, 41.329009509261112], [-70.306229505249746, 41.329217535524052], [-70.308627509556118, 41.33022598771263], [-70.309719270911273, 41.330817083325698], [-70.310599663752228, 41.331437551691195], [-70.312329602125942, 41.333128807994754], [-70.31327135596041, 41.334252968098284], [-70.313452875346599, 41.334890844015675], [-70.313999276865133, 41.335812127370637], [-70.313968865302797, 41.336469751538381], [-70.313756194091809, 41.336949791783368], [-70.313453713354107, 41.338754770719326], [-70.312876204292024, 41.339031808858152], [-70.311844641081279, 41.339214575260776], [-70.31029663689425, 41.339259091025959], [-70.30868752900804, 41.339151580265906], [-70.303103116078105, 41.338278306521822], [-70.30119070042791, 41.338164599303241], [-70.299308919184938, 41.337888656798683]]], [[[-70.215649817867117, 41.277382792758232], [-70.216589258307678, 41.277355192337005], [-70.219106022526788, 41.277400662235735], [-70.22495984904522, 41.278157916702561], [-70.227992137666917, 41.279116730993024], [-70.23120849228809, 41.281145085548729], [-70.231815528889626, 41.281723672836044], [-70.233635795834573, 41.282316932111414], [-70.23451535666608, 41.282793925913445], [-70.234819237330129, 41.283141743271436], [-70.234818869177261, 41.283366848088086], [-70.234455303120484, 41.283668297273643], [-70.23245408083271, 41.284302118532082], [-70.232241780806916, 41.284232205687026], [-70.231908068110187, 41.283920604411925], [-70.231816188641361, 41.283525092812035], [-70.23157412003448, 41.283257829339959], [-70.231300740197284, 41.283089352040818], [-70.229693332645041, 41.282863663838896], [-70.226811557643359, 41.281678061160079], [-70.224536653099477, 41.280918565231588], [-70.221654932589431, 41.279985582962908], [-70.219349983923166, 41.279668026856875], [-70.216347802292916, 41.279005925773596], [-70.216074169350478, 41.278864961618638], [-70.215618924708636, 41.27842812077818], [-70.214922018903366, 41.27822831824475], [-70.214528011268911, 41.277971086050158], [-70.214496407777816, 41.277629190414885], [-70.215649817867117, 41.277382792758232]]], [[[-70.300372678761192, 41.328581028539439], [-70.299613619880503, 41.32839172179434], [-70.29830850246357, 41.328415596370469], [-70.297458854218689, 41.328695247395679], [-70.29715537158161, 41.328896869224977], [-70.29736756578977, 41.329245790370777], [-70.297306961971032, 41.329471424315294], [-70.296973001046666, 41.329565210608401], [-70.296578854242014, 41.32954301071392], [-70.295213622420462, 41.329108071470742], [-70.293908194573007, 41.328969274390317], [-70.293968682037118, 41.328788662444168], [-70.294363279608319, 41.328531743049268], [-70.295425258239632, 41.328051778989987], [-70.296761231001938, 41.32775759656959], [-70.297550101901521, 41.327712497330751], [-70.298187038141421, 41.327705217736131], [-70.300190600901587, 41.327961763407956], [-70.301981600310171, 41.328581147126442], [-70.303012999024659, 41.329406951118848], [-70.303043064604054, 41.329793913520575], [-70.302678815517837, 41.329788979248342], [-70.30161643751417, 41.32912546144015], [-70.300372678761192, 41.328581028539439]]], [[[-70.2482900963427, 41.289283429785108], [-70.247925539621235, 41.288846104863282], [-70.247894443179689, 41.288297035944161], [-70.248076183984509, 41.287889890940413], [-70.248319020777927, 41.287661888021162], [-70.248652269640317, 41.287640274167757], [-70.249455150200205, 41.288054891790829], [-70.25021251026341, 41.288785322921605], [-70.250212146451162, 41.289055989320516], [-70.249454095174286, 41.289054902067399], [-70.248957335242523, 41.288988087734445], [-70.248654078748146, 41.289216594056732], [-70.2482900963427, 41.289283429785108]]], [[[-70.009353421815632, 41.342158231630989], [-70.008746469160826, 41.342136187803959], [-70.008351691333331, 41.342203023366423], [-70.008261703258484, 41.341771228002344], [-70.008928853922157, 41.341423250317035], [-70.009263325614683, 41.34137533892072], [-70.01138690219085, 41.343031988525816], [-70.011356835926421, 41.343329291347011], [-70.011023511426188, 41.343260251932193], [-70.010234138183151, 41.342663921743267], [-70.009353421815632, 41.342158231630989]]]]}, "type": "Feature", "id": 9, "properties": {"COUNTY": "NANTUCKET", "AREA_ACRES": 31378.0, "OBJECTID": 10.0, "FIPS_ID": 25019}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.997449376236204, 42.265517932575229], [-70.997047963630763, 42.265757638764875], [-70.996000682344516, 42.265470529272491], [-70.995415471881941, 42.265471380513972], [-70.994861319059893, 42.265696813141297], [-70.993383087748654, 42.265992985979423], [-70.992027997773775, 42.26606190569337], [-70.991596999017261, 42.265952501113823], [-70.990949769907417, 42.26558554764204], [-70.990333711311706, 42.265352695265712], [-70.989963939089876, 42.265287491469508], [-70.989840989987329, 42.265127139900493], [-70.987931308837361, 42.26439496892764], [-70.987222150846691, 42.263866832127135], [-70.986728726006803, 42.263596244464857], [-70.986513149389395, 42.263365700923373], [-70.985928917668772, 42.263547020825825], [-70.985528613223124, 42.264049403195528], [-70.98414402319311, 42.26485743439369], [-70.982295847364298, 42.265195737489151], [-70.981495089853823, 42.265245603216158], [-70.98075629289167, 42.264952454266293], [-70.979863268546723, 42.264769520598669], [-70.978939218297512, 42.26438044755001], [-70.978537797254134, 42.264053882415169], [-70.97798303092749, 42.263847710968136], [-70.97662864183846, 42.263717752896952], [-70.975735390208243, 42.26346330102789], [-70.974441616023512, 42.263260398327027], [-70.972717487595474, 42.263533302142434], [-70.972101646597267, 42.263895639859207], [-70.971025007271223, 42.265022289447479], [-70.969424379357974, 42.26630235331352], [-70.967730702806506, 42.267078868542185], [-70.966591681504084, 42.267882244739404], [-70.965328490992633, 42.268543682655853], [-70.963419286856166, 42.269207221888578], [-70.963112520726114, 42.26937459688186], [-70.96089488063177, 42.269782313407724], [-70.958338738094156, 42.270717865433973], [-70.956675363538196, 42.270998648526728], [-70.956336748272363, 42.271130922645931], [-70.954119871325446, 42.272619428310641], [-70.953719704075439, 42.273013663407156], [-70.953442415118261, 42.273468712890732], [-70.953350222063122, 42.274037722158042], [-70.953411514365925, 42.274225999238773], [-70.954150885188838, 42.275393170030661], [-70.954521055210577, 42.276512936959087], [-70.955383854695611, 42.278614758865366], [-70.956215711370248, 42.279483629944664], [-70.956185196835449, 42.279691097394938], [-70.95553855895264, 42.280080750047425], [-70.954490716917491, 42.280260972450634], [-70.953998308445549, 42.280197231525598], [-70.953782891225885, 42.280011643366961], [-70.953567155250909, 42.279258856671419], [-70.953073999583523, 42.277906671271055], [-70.952580726096741, 42.277131673148304], [-70.951810550734308, 42.276415132421505], [-70.950917411191114, 42.276124386511896], [-70.950423819152817, 42.27575406782838], [-70.949931549004603, 42.275204230872873], [-70.949900647069313, 42.274979544777231], [-70.949715300367188, 42.274838568150827], [-70.949591784963474, 42.274543663899081], [-70.949438076546102, 42.273789454957232], [-70.949561380322052, 42.273355104577057], [-70.950485122451695, 42.27191560554558], [-70.950700688697722, 42.270975268778059], [-70.950700943574375, 42.270470554062548], [-70.950699939107224, 42.26752481143285], [-70.950946097638308, 42.266241330090025], [-70.951561495191868, 42.265050813677661], [-70.951808550196944, 42.264893357875962], [-70.95223882544019, 42.26413851646037], [-70.952392367151234, 42.262991977399267], [-70.952546273397829, 42.26260215479266], [-70.952454108906281, 42.26236934401156], [-70.951375616420691, 42.261432910082775], [-70.951191078397031, 42.261048853976476], [-70.951283830103364, 42.260569339035719], [-70.951529609203391, 42.260403324682251], [-70.952207960956486, 42.260292402880836], [-70.95393266836885, 42.261091725104507], [-70.954794267770509, 42.261320357926095], [-70.955903114307816, 42.261409436820124], [-70.957473839038471, 42.26194076212645], [-70.95839703520771, 42.262140938729154], [-70.959475225990033, 42.262032309370404], [-70.960060437711732, 42.26228381958537], [-70.961261629641641, 42.261479178294294], [-70.962060940089899, 42.260582610916991], [-70.96230831070369, 42.260497069229878], [-70.964217532634834, 42.260518418047241], [-70.964802027443312, 42.260310110100001], [-70.967326654530751, 42.26014970952204], [-70.968435498187347, 42.260238667414953], [-70.969205650693752, 42.260855524311843], [-70.969945484355776, 42.260969230397073], [-70.969852924483845, 42.260718425684765], [-70.968959048808955, 42.259968204616392], [-70.967419278265027, 42.259670721640809], [-70.966495474416462, 42.25937094977867], [-70.966371965737565, 42.259688367016977], [-70.965971779384105, 42.259758531677576], [-70.96547955102784, 42.25960480838841], [-70.964740088457177, 42.259076930266282], [-70.964493763675762, 42.258982419062555], [-70.964524294175277, 42.258711296541819], [-70.964831884186026, 42.258525915228539], [-70.966495018522465, 42.257956913326254], [-70.966525220592374, 42.257766907121741], [-70.965878681144005, 42.25766144549565], [-70.964461673581823, 42.25724412125944], [-70.963261542924016, 42.257336921796259], [-70.962799480495818, 42.256858764132403], [-70.962090597781923, 42.256375487075474], [-70.961505483386915, 42.256060965062694], [-70.960488592265136, 42.255871626567817], [-70.960058482381484, 42.256013655238505], [-70.959658210755791, 42.256308876408937], [-70.958549274894139, 42.256580499383979], [-70.958087602446085, 42.256245744654009], [-70.957379312770598, 42.255528358886984], [-70.956947351376087, 42.254797060552903], [-70.956947540483227, 42.254364909658271], [-70.957193967608688, 42.254090398119509], [-70.958671678360162, 42.253587525760693], [-70.959288131093928, 42.253108221449331], [-70.96073465864481, 42.251209685293979], [-70.960703625458564, 42.250498919618245], [-70.960949959004381, 42.250089261983831], [-70.960948828968554, 42.249139422441587], [-70.961195167320938, 42.248927923986315], [-70.962117546932078, 42.248560868552374], [-70.962979872269074, 42.248086567400769], [-70.96322602111151, 42.248082136606122], [-70.964149903148908, 42.248723966744549], [-70.966181986963861, 42.249409751423364], [-70.966859892363019, 42.249406779397752], [-70.967015003786841, 42.250083817284739], [-70.967292036088864, 42.25024094782367], [-70.968523432619719, 42.250174629693802], [-70.969354879776489, 42.25040355477995], [-70.96978596689118, 42.250630085323976], [-70.970033039316846, 42.25113936446472], [-70.969909185493023, 42.251429684750292], [-70.969479306155549, 42.251752983248927], [-70.967538320886788, 42.251822145151174], [-70.967261827781385, 42.251917106276402], [-70.967138383175467, 42.25209938757861], [-70.967169214190221, 42.25239609474297], [-70.968309492207169, 42.253286481301252], [-70.968308910007778, 42.253673614339441], [-70.967509275654763, 42.254615239857763], [-70.967478275158001, 42.254886361137004], [-70.969049299097691, 42.255417530453265], [-70.970188973437104, 42.256172307442228], [-70.972067624423758, 42.256923720704663], [-70.972560395530508, 42.256924274803275], [-70.973914466566683, 42.256621589022821], [-70.975393532403487, 42.256604678184331], [-70.975855236292873, 42.256785769345157], [-70.977672138371574, 42.257789976919995], [-70.978165144344544, 42.257880539428967], [-70.978411459118703, 42.258110698331556], [-70.979088949194534, 42.258405295647222], [-70.981429089506264, 42.258337651087395], [-70.982568579316592, 42.258516102187663], [-70.982876646899442, 42.258636781636739], [-70.983246012107188, 42.258359887462163], [-70.98330747946747, 42.258179020931983], [-70.982968655318828, 42.257995722569106], [-70.983244426077562, 42.257008869410612], [-70.983707361738368, 42.25693775644779], [-70.983891895771777, 42.257240821495699], [-70.984138707884483, 42.257263268086689], [-70.984292291549323, 42.257125579749193], [-70.984353735626584, 42.256872597376436], [-70.983305284144862, 42.255728446358347], [-70.984413483938283, 42.255204493488549], [-70.984783558120824, 42.255135209972934], [-70.986015913041228, 42.25605068089429], [-70.986230672777353, 42.255975115383364], [-70.986261857944797, 42.25577601541584], [-70.985922780668545, 42.255340636338538], [-70.985891474541305, 42.254971997547081], [-70.986045270191838, 42.254762192621115], [-70.986476212967688, 42.254673549268453], [-70.986568946301048, 42.254356603203419], [-70.987460978693605, 42.254241837334526], [-70.988200287783215, 42.25439989932466], [-70.988939380389084, 42.254765568007052], [-70.989740781539794, 42.254994751098181], [-70.991433712849044, 42.255037194513498], [-70.992204379579988, 42.255564408129345], [-70.991557476492247, 42.255773749210057], [-70.991557465019596, 42.256016833871449], [-70.992450876847158, 42.256019076094915], [-70.992882109921254, 42.256318085052818], [-70.993344548595488, 42.256291946778916], [-70.993498003968639, 42.25604620800452], [-70.992912687617292, 42.255722842691007], [-70.992726768306099, 42.255239813381834], [-70.991340912584874, 42.254399181071719], [-70.991033105035783, 42.254035440565445], [-70.990694258188952, 42.253915276551936], [-70.98992392717841, 42.253982711531002], [-70.989647189302644, 42.25378008145163], [-70.989646585121847, 42.252546018125223], [-70.989307046477123, 42.252452856295825], [-70.989154090941156, 42.252590554159973], [-70.989184468367867, 42.253211906265413], [-70.989062175848588, 42.253439231437035], [-70.988384329108058, 42.253504906857358], [-70.987491439704286, 42.253322572277114], [-70.987183171032868, 42.253183898047638], [-70.985643645431139, 42.252985694424254], [-70.98511996946327, 42.253093635693055], [-70.984165914927033, 42.252894074934325], [-70.983179807948332, 42.252865961937388], [-70.982933997806384, 42.252663454732733], [-70.982594464396058, 42.251858394004067], [-70.982194492590864, 42.251910609670496], [-70.982040639858113, 42.252156331889715], [-70.981701982467641, 42.252342249132056], [-70.980131757894355, 42.252685102229272], [-70.978901066217645, 42.253147686827646], [-70.977637969964192, 42.253187502955555], [-70.976929983319309, 42.252983419302986], [-70.976745903187421, 42.2528070190344], [-70.976837753245221, 42.251751277716643], [-70.976744791917625, 42.251474007076226], [-70.975851541284172, 42.250903273866605], [-70.975389412011708, 42.250398156727485], [-70.974897001026903, 42.250082415627901], [-70.97461898679434, 42.249822302890145], [-70.974433346657932, 42.249222202909138], [-70.974433591161485, 42.24856443312482], [-70.974032678446065, 42.248030870542927], [-70.973724604196605, 42.247919169940353], [-70.973201341821877, 42.24800905242104], [-70.973077659013484, 42.247669155584141], [-70.969229247842307, 42.246825927028951], [-70.968829838269045, 42.247102637683092], [-70.968613798068091, 42.247259733496954], [-70.968583872340645, 42.247764942717318], [-70.968490858425014, 42.247946826231775], [-70.967998148079943, 42.247990640234669], [-70.967813399935096, 42.248129333022916], [-70.967536559119111, 42.248152267858437], [-70.966428632832574, 42.24772055377133], [-70.966643541024595, 42.247194867087543], [-70.96658188703168, 42.246889643303561], [-70.966889645450053, 42.246460631374298], [-70.967412555269249, 42.246325760170862], [-70.967689415553096, 42.246068743346697], [-70.968151264172221, 42.245267891235216], [-70.968336499127787, 42.245156749827686], [-70.968489152456669, 42.24437931261572], [-70.968765851055977, 42.24421232413431], [-70.971752380495914, 42.243755150364031], [-70.972613569329738, 42.242614536891097], [-70.972828384792408, 42.242106304169866], [-70.969688386103911, 42.242133435616438], [-70.969657583982695, 42.241629745707534], [-70.970457411005825, 42.240598072935263], [-70.971011525857818, 42.240579200286341], [-70.971873133055837, 42.240780697353905], [-70.973228423651193, 42.240946191025017], [-70.973381770999254, 42.240718394063549], [-70.973349967625779, 42.240025543821687], [-70.972581042277525, 42.23991289487202], [-70.972334225951371, 42.239826770552412], [-70.971194841683925, 42.239621206527907], [-70.970856486078176, 42.239455879452741], [-70.970825998904729, 42.23927630555162], [-70.971102880141345, 42.238866226631366], [-70.972241990811682, 42.239044780642814], [-70.973349998086334, 42.239088673363668], [-70.974796976523166, 42.239180833336562], [-70.975041922055638, 42.238059347852861], [-70.975041624315224, 42.237597933577973], [-70.974757880217012, 42.237480224414881], [-70.974610458461441, 42.237257801402407], [-70.97409441532659, 42.237028648052558], [-70.973700870502256, 42.237119757066168], [-70.973117048403793, 42.237014082240073], [-70.972332533514717, 42.236872009457059], [-70.971901686060136, 42.236510530891067], [-70.971254333862518, 42.236251500099215], [-70.970793318859037, 42.236007369869697], [-70.96946904262866, 42.235840909754572], [-70.968052669256352, 42.235865325253499], [-70.967653575435136, 42.235664864647404], [-70.966852499021243, 42.235435436533599], [-70.966298542858041, 42.234994586834532], [-70.965497938524294, 42.234567081183854], [-70.96531307129456, 42.23433609857549], [-70.964881923508386, 42.234289613500749], [-70.964605490685642, 42.234429044249843], [-70.964143299163027, 42.23450062349518], [-70.963250743435964, 42.234218434617787], [-70.962234797206477, 42.234172624515438], [-70.961895674507389, 42.233647139255083], [-70.961772553980396, 42.232937560346109], [-70.961772586408557, 42.232163285613261], [-70.961956885676656, 42.231916561818409], [-70.962480221791608, 42.231547091904467], [-70.962911277385302, 42.231459077921187], [-70.962818707728246, 42.231046208200539], [-70.962325714473394, 42.230838446706848], [-70.962233315455038, 42.229263624410365], [-70.962631893665062, 42.227860451576909], [-70.962631466652084, 42.227310623910114], [-70.9623849784589, 42.227036042162332], [-70.962385657528841, 42.226855981239403], [-70.963554663880046, 42.226078712904524], [-70.96441615152132, 42.225623032955014], [-70.966446677563553, 42.224362499397571], [-70.967400439402013, 42.223904885256466], [-70.96816982324097, 42.223837598214942], [-70.969554303096331, 42.223191813820328], [-70.9703850974565, 42.222601439413303], [-70.970785420138199, 42.222486244581745], [-70.972231415611191, 42.222461392728768], [-70.972477728931324, 42.222366911233493], [-70.972323787082459, 42.222234486559664], [-70.970353711632455, 42.222052098899418], [-70.969584769626593, 42.222344572772315], [-70.968846350839698, 42.222853169748831], [-70.968138589992151, 42.223171216142312], [-70.967800181027982, 42.223167936609002], [-70.967953710441222, 42.222598115219412], [-70.967452201364267, 42.222948534665768], [-70.96724433794995, 42.223093331790189], [-70.967007286967018, 42.22323745278662], [-70.966874635860265, 42.223527190065091], [-70.966564884708546, 42.223702393578186], [-70.966271097461771, 42.22383724610301], [-70.965954869351663, 42.223932559398037], [-70.965384765066815, 42.223925403297407], [-70.965062127889766, 42.224062279103322], [-70.962600265544282, 42.224617979047089], [-70.962015259677429, 42.225024343646417], [-70.961431364454356, 42.225755366388796], [-70.960722952710228, 42.226398019811299], [-70.960600582774546, 42.226742357580221], [-70.960724098808114, 42.228370807605188], [-70.960663001391552, 42.228731819061359], [-70.960047502905653, 42.22925615250881], [-70.959370270466351, 42.229006546615643], [-70.959124400968761, 42.229100461974447], [-70.959124213327399, 42.229605180448033], [-70.95952554608418, 42.230174813070157], [-70.95952514863238, 42.231201806328279], [-70.959371362308687, 42.231591550798697], [-70.959187187866362, 42.2326035429695], [-70.958448457704719, 42.233238206366693], [-70.956663374960542, 42.233953356797201], [-70.956510038045366, 42.234838905281698], [-70.956263657097253, 42.234932812116227], [-70.955986673243899, 42.234865686262729], [-70.95509339449741, 42.234403366219922], [-70.95450928839989, 42.234224489113132], [-70.953585014624878, 42.233312480308427], [-70.953185371205947, 42.232508751881518], [-70.952907876183886, 42.232305937803929], [-70.952384735829909, 42.23209862006771], [-70.951276341321346, 42.2320730690152], [-70.951276426314777, 42.231685391435306], [-70.951522435776567, 42.231437808791199], [-70.951399315948649, 42.231133992393111], [-70.95078428388635, 42.231117546103036], [-70.950506745556154, 42.231410442429677], [-70.950630638402401, 42.232030005885832], [-70.950353062229254, 42.232214953211091], [-70.950383823777784, 42.232439640441115], [-70.950722595942679, 42.232812104182699], [-70.950783971952418, 42.233558493301196], [-70.951091556585524, 42.233490189910867], [-70.951183969137915, 42.233101243337856], [-70.951430211762684, 42.233079372332242], [-70.951645817270517, 42.233490048314344], [-70.951769037699023, 42.234091060425442], [-70.952015381523907, 42.234366203981196], [-70.951984099321947, 42.234565295434585], [-70.951861406756123, 42.234981647719295], [-70.952293202711559, 42.235920041590703], [-70.952262878618058, 42.236190532984075], [-70.951892779510658, 42.236215235652075], [-70.951184935772801, 42.235983982387509], [-70.950508147388845, 42.235986326335208], [-70.949891900490812, 42.236257972035069], [-70.949645779992792, 42.236487544155246], [-70.949677135084571, 42.236811269416854], [-70.950169456646933, 42.238018886667454], [-70.950354825933445, 42.238186873760178], [-70.950600932527792, 42.238183010195925], [-70.950662545039009, 42.23740677950704], [-70.950447017968429, 42.236608964919881], [-70.95072414589886, 42.236631719040005], [-70.951154994237157, 42.236993277656687], [-70.952324701715597, 42.23763079906449], [-70.953032425689045, 42.237681980681423], [-70.953679407615624, 42.23797712546078], [-70.955310613609043, 42.238957762294689], [-70.956419110330216, 42.239254000151931], [-70.957157997126629, 42.239601868794502], [-70.958020217605139, 42.239668335212492], [-70.958759091832604, 42.239465918650154], [-70.960451585692354, 42.239779454751179], [-70.9608211992213, 42.23989931328785], [-70.961961105642956, 42.239897369433379], [-70.963130520809088, 42.2400306000239], [-70.963469248962468, 42.240006794809446], [-70.963653359092007, 42.23952661514911], [-70.96362216186229, 42.238932259458622], [-70.964484444714401, 42.238890639425399], [-70.967070535288386, 42.239575662977082], [-70.967194033990225, 42.239960582072555], [-70.966732657699197, 42.24003163543798], [-70.96679388150207, 42.240444895722554], [-70.967040738920474, 42.240900162505682], [-70.966918704241124, 42.242775587907062], [-70.966825844345735, 42.242939464595935], [-70.96633359991668, 42.24311949153315], [-70.96630344198941, 42.244038845346658], [-70.966395569243602, 42.244379683620352], [-70.966088080196712, 42.244763139559879], [-70.965379933365426, 42.245153732630598], [-70.963301639024351, 42.245949819002021], [-70.962917851111413, 42.246096576446504], [-70.962640277063187, 42.246092486501169], [-70.962404999689824, 42.245859013045184], [-70.962024692596913, 42.245481348928621], [-70.961993480790554, 42.245175634906069], [-70.962393804010901, 42.244079122937045], [-70.962208201996361, 42.243190270408519], [-70.961808181890277, 42.243052807793951], [-70.961223415748577, 42.243054026097482], [-70.959130077411317, 42.24351342772767], [-70.958083987555071, 42.243900762456185], [-70.957898817139451, 42.244101829482709], [-70.957776360277208, 42.244563834481134], [-70.957775943782522, 42.245320639673025], [-70.95811416681822, 42.24565706486986], [-70.95879132958747, 42.245708066193316], [-70.959192885079759, 42.24600760359715], [-70.959099914759108, 42.246252502108547], [-70.957838622669172, 42.24732810372349], [-70.957561539945388, 42.24745004828209], [-70.955467836917506, 42.247494695595122], [-70.953928804609561, 42.247674201128667], [-70.952481459633816, 42.248320577953422], [-70.951372780158039, 42.248547116625055], [-70.950634225623716, 42.248865448357648], [-70.949895712838369, 42.249527066656533], [-70.948941283941096, 42.249876944431165], [-70.947063411243988, 42.249827401083884], [-70.946232364531355, 42.250089529424301], [-70.945924391332682, 42.250247849891522], [-70.945062748392758, 42.251055144550108], [-70.944262372500418, 42.251672492203504], [-70.943184209754733, 42.251987961365735], [-70.939705102086705, 42.252632768791344], [-70.938626827352465, 42.253065866271868], [-70.938072556737609, 42.253498728301253], [-70.937179965497464, 42.254594994541968], [-70.937210728467818, 42.256152694511719], [-70.937364857861297, 42.2569338448682], [-70.936902764515011, 42.257067797562421], [-70.933608187938347, 42.257069599219285], [-70.932684101182332, 42.257229344968351], [-70.927942094178135, 42.257363912683097], [-70.927110779546595, 42.257233723345699], [-70.926310323932583, 42.257256196011987], [-70.92566382265899, 42.257528641297284], [-70.925078469282667, 42.257619705000046], [-70.924709175570882, 42.257914419776249], [-70.92467753646909, 42.25832894764897], [-70.925725333210494, 42.258644802594233], [-70.927972808719232, 42.259291285291468], [-70.927972992375643, 42.259633406811624], [-70.927756842627787, 42.259880547281576], [-70.92692505980807, 42.260200513175768], [-70.924862876341095, 42.26056887602001], [-70.924400386118691, 42.260847367556131], [-70.923876678443037, 42.261459747902329], [-70.923845638117243, 42.261874278302628], [-70.924091798000603, 42.262221595101863], [-70.925200422255713, 42.263067235550317], [-70.92519970863583, 42.263292851401204], [-70.924984327060173, 42.263359296837045], [-70.924369070555755, 42.26333370633666], [-70.923937482469171, 42.263197124683913], [-70.922951675476426, 42.262375677565494], [-70.922767194403221, 42.262190185300121], [-70.922736925340175, 42.261667849086272], [-70.922891174825907, 42.261260060400723], [-70.922952935296195, 42.260573878705813], [-70.922799579433814, 42.259766243261453], [-70.922368585858536, 42.258557109818625], [-70.920859931973439, 42.257348666171858], [-70.920521284967947, 42.256768503025846], [-70.920521705221603, 42.255993691091611], [-70.921445029125863, 42.255626966029773], [-70.921661113472325, 42.255308441599006], [-70.921815215394673, 42.254783071547692], [-70.925633269195799, 42.254214237215514], [-70.926187365115766, 42.25498849060854], [-70.926587086908526, 42.255306139189251], [-70.926895396064154, 42.255426970700732], [-70.927449685968227, 42.255444951498937], [-70.927881170251311, 42.255265868341951], [-70.929235692465269, 42.255242809363864], [-70.930683666929156, 42.254894372770458], [-70.932037854814695, 42.25469121553845], [-70.933300598576992, 42.254237122617162], [-70.933516017247541, 42.25405362051648], [-70.933608600738509, 42.253457616628395], [-70.934132127468118, 42.253295349883338], [-70.935670874947533, 42.253224145742131], [-70.936040723365977, 42.252749334965657], [-70.936040748491223, 42.252542261950872], [-70.935640463741393, 42.252107602142864], [-70.935701773911177, 42.251782078371214], [-70.93650247508117, 42.251696519503113], [-70.937087860939243, 42.251416421194733], [-70.937026225021626, 42.250660932066957], [-70.937210674424577, 42.250414248873788], [-70.937241670447477, 42.250089746029012], [-70.937457154947893, 42.249486418367283], [-70.937457319708429, 42.249099282233438], [-70.936902968650486, 42.248712308584814], [-70.936040339675614, 42.248367033512267], [-70.935732406457674, 42.248110640376972], [-70.935732192104396, 42.24793057556235], [-70.936472159456315, 42.247746853896722], [-70.937456900766165, 42.247631220853776], [-70.937672460257474, 42.247537203268024], [-70.937918947910447, 42.247289652298996], [-70.937856936430677, 42.246876372422655], [-70.937364434988879, 42.246813188192156], [-70.936625247364574, 42.246924353696492], [-70.935670866415848, 42.247292128098685], [-70.935085989998441, 42.247382704614225], [-70.93323873708637, 42.247495682995833], [-70.9332082839055, 42.247703146220815], [-70.9327467372933, 42.247999142260646], [-70.932623106032437, 42.247217504498636], [-70.932099623943387, 42.246812023243535], [-70.932099620203289, 42.246487908279512], [-70.932530778913161, 42.246120369263004], [-70.932746404929787, 42.245233990095628], [-70.932777584263633, 42.244755894427819], [-70.932500458157463, 42.244201908580827], [-70.931576718786829, 42.243100658889077], [-70.93025322848321, 42.241870832718178], [-70.930222536653062, 42.241484082856218], [-70.930838205810318, 42.240104605216068], [-70.930837967112353, 42.239672450180073], [-70.930622311424955, 42.23946880852624], [-70.929883964311955, 42.23940041064062], [-70.929452867766415, 42.238876082634114], [-70.929576013102164, 42.23811700416443], [-70.929298946722113, 42.237455061421841], [-70.928467792753025, 42.236811697867637], [-70.928375040060089, 42.236308766690158], [-70.928221649154679, 42.236014227822622], [-70.927328883048162, 42.235488760973773], [-70.926528086368876, 42.235124003858495], [-70.926251878041867, 42.234894211883102], [-70.926251617895119, 42.234615110852431], [-70.926713162937446, 42.234526214510339], [-70.928252453634514, 42.234842252768189], [-70.928375606858324, 42.234687560703485], [-70.928344778889112, 42.234183227062296], [-70.927451893266294, 42.233378660730494], [-70.927545277667605, 42.232079871920973], [-70.927730148172486, 42.231851751923202], [-70.927730429433339, 42.231257000521119], [-70.927637505776133, 42.231069720289931], [-70.927237313275512, 42.230337832525812], [-70.927298835143958, 42.229562241663722], [-70.926652216774244, 42.229356980777723], [-70.926467831550099, 42.229170323160758], [-70.925668377747115, 42.229174788252152], [-70.924867408848414, 42.228945696460265], [-70.923975367846282, 42.228834354366924], [-70.923883037300058, 42.22858342108723], [-70.924252134055607, 42.22814528552513], [-70.924682901401127, 42.227344987891158], [-70.924652788657397, 42.226498533194921], [-70.924775778550838, 42.225560022531624], [-70.923852966196378, 42.224827841933347], [-70.922405751655859, 42.224392913564579], [-70.922067331231247, 42.224164418198541], [-70.921482882526988, 42.223273573959396], [-70.921482959873401, 42.222813778889773], [-70.922252402219399, 42.221215708635363], [-70.922560349611942, 42.220984794938538], [-70.923237121061632, 42.220820558131813], [-70.923852190776842, 42.220981204662849], [-70.924006666097938, 42.22084351029465], [-70.923852847606838, 42.220549052350123], [-70.922652602166082, 42.220550852660061], [-70.922222112962785, 42.220684905005555], [-70.921791020298272, 42.221097423008679], [-70.921328793706607, 42.222239675212371], [-70.92096023744503, 42.222885419230188], [-70.920990521096996, 42.223362743757257], [-70.921175094427824, 42.223710929821948], [-70.921574624538422, 42.224091620529386], [-70.921667057220745, 42.224369476146258], [-70.921575130037183, 42.224739855955363], [-70.921020648020757, 42.225263209002854], [-70.920928864400693, 42.225471440925993], [-70.92048509594035, 42.225861471852035], [-70.920261627973105, 42.226057243945995], [-70.91977412216653, 42.225930985685117], [-70.919457416495888, 42.226043094878158], [-70.919255712329559, 42.226189997515014], [-70.919023324664735, 42.226314326410183], [-70.9186853963988, 42.226283354646505], [-70.918565846157477, 42.226031198576507], [-70.918613984964111, 42.225854258752747], [-70.918416306611505, 42.22568102519665], [-70.917979201300568, 42.225580944004236], [-70.917784948154406, 42.225734094101085], [-70.917468767748645, 42.225788759828177], [-70.917237756902011, 42.22581576711007], [-70.917037106559675, 42.225900278785907], [-70.91674435930436, 42.225909415136876], [-70.916514515846259, 42.225862150179552], [-70.916214166713047, 42.225894384850932], [-70.915724053523959, 42.225736584732395], [-70.915372878156447, 42.225540056190844], [-70.914922394109112, 42.225302055551033], [-70.924872961252646, 42.15756597839286], [-70.9407600568004, 42.151303446064667], [-70.981232770707493, 42.135455516672152], [-70.999493038522161, 42.128344148234433], [-71.002095225485704, 42.12734432125842], [-71.001898624334345, 42.126550633454869], [-71.005416238753057, 42.125100579422885], [-71.021817810781442, 42.118694562495627], [-71.061411481976123, 42.103106716770178], [-71.080577175169594, 42.095522257186964], [-71.124473220966522, 42.078294332631124], [-71.138675648267224, 42.072814243931845], [-71.168608616996536, 42.06123253618923], [-71.178358531774748, 42.057458153759761], [-71.24949398504225, 42.029629412651168], [-71.288299929246293, 42.014616504586435], [-71.325711415220482, 42.000124020079802], [-71.364305491696683, 41.985278040012496], [-71.374546263709078, 41.985178905046403], [-71.381295536577156, 41.985077531671912], [-71.381236017500257, 42.000093339633594], [-71.381272707476683, 42.018852982342423], [-71.458031334972034, 42.017816328825809], [-71.498148646660297, 42.017230965334356], [-71.498194260386853, 42.064863383509064], [-71.49824028878318, 42.091270969674376], [-71.498173677601613, 42.09156870526467], [-71.498090749292516, 42.091803327932944], [-71.497993072425416, 42.09206667055934], [-71.497941812615778, 42.092306965684514], [-71.497943739268848, 42.092535377491494], [-71.498014565024349, 42.092821231067177], [-71.49811730105921, 42.093192075534603], [-71.49812696485418, 42.093414905213997], [-71.498121396254902, 42.093689503385924], [-71.498085485604122, 42.09399282131924], [-71.497995782274984, 42.094296048267211], [-71.497806352399337, 42.094536880947359], [-71.497458188757378, 42.095115330641171], [-71.497291118598696, 42.095339326914733], [-71.497155596242564, 42.095602667792932], [-71.497126213885025, 42.095768686417848], [-71.497257850677997, 42.095916612530246], [-71.497534671235528, 42.096058419516936], [-71.497543972527822, 42.096235693087223], [-71.497484005460478, 42.096436013389678], [-71.497370727470511, 42.096630750448497], [-71.497211271145758, 42.09680288819866], [-71.496959335583668, 42.096975113336789], [-71.496791780432261, 42.097096021973563], [-71.496540201461542, 42.097337480930605], [-71.496411685839561, 42.097554634563807], [-71.496375406413051, 42.09778367524779], [-71.496307215763451, 42.09794969237597], [-71.496155129209669, 42.098093108376908], [-71.495949847433579, 42.098288381051546], [-71.495912843915463, 42.098465653050823], [-71.495837757945466, 42.09867218410529], [-71.495677931239484, 42.098821271426701], [-71.495534175384819, 42.0990676839006], [-71.495512642281682, 42.099273676606842], [-71.495490989789772, 42.09945653103793], [-71.495508500472226, 42.099719335541565], [-71.495601455768693, 42.09987293397478], [-71.495695858675035, 42.100078931085285], [-71.49565897118481, 42.100301759219334], [-71.495851425595049, 42.100414846706805], [-71.495899406944375, 42.10062075191037], [-71.495839189901119, 42.100803695016637], [-71.496055098554294, 42.100934249234946], [-71.496401452380269, 42.101081103030239], [-71.496556189406448, 42.10122912059132], [-71.496542757920551, 42.101452489868414], [-71.496597755506912, 42.101634806546443], [-71.496927918492716, 42.101696127746571], [-71.497250705469611, 42.101803634290548], [-71.497221802825123, 42.101998283013742], [-71.497007572083817, 42.10205067630379], [-71.497008892803976, 42.102244785559343], [-71.497224085887638, 42.102317897045744], [-71.49757794732453, 42.102419191191522], [-71.497809098691391, 42.102532906391019], [-71.498047745845014, 42.102669039242926], [-71.498439692801227, 42.102792839388435], [-71.498685598530486, 42.102814810306164], [-71.498977324566184, 42.102847494708627], [-71.499565491895623, 42.102966160752921], [-71.499770895362644, 42.103660578865387], [-71.501327916441056, 42.107370972737947], [-71.501535275706431, 42.107558957038336], [-71.501750370958931, 42.107627017946598], [-71.502026648048187, 42.107768813844153], [-71.502035601048803, 42.107951668740718], [-71.501975758013856, 42.108152621276467], [-71.501876497590246, 42.10832422398741], [-71.501762850106104, 42.108553807452751], [-71.501978314539159, 42.108713070579256], [-71.502185798848714, 42.108837941218447], [-71.502324487912929, 42.109003417335572], [-71.502371288055372, 42.109220573595607], [-71.502556652584559, 42.109454112646596], [-71.503025191899326, 42.109687014037192], [-71.503026047258331, 42.109875541034675], [-71.503004413635296, 42.11007640300322], [-71.503004907266615, 42.110287437999339], [-71.503051950317555, 42.110459037743681], [-71.503007342053536, 42.110636852114752], [-71.502839887369234, 42.110849061796046], [-71.502626239738518, 42.110992487854439], [-71.502428069650094, 42.111176517610623], [-71.50217718515448, 42.11151531301303], [-71.502001743562232, 42.111681875379041], [-71.501772732486089, 42.11173418773236], [-71.501482541010787, 42.111912545205065], [-71.50136090389968, 42.112079105870826], [-71.501154989275705, 42.112325615450423], [-71.500842666894812, 42.112595714083852], [-71.500705670612746, 42.112784782140402], [-71.500631068047639, 42.113099894448446], [-71.500884634235689, 42.113264741290536], [-71.501169278214746, 42.113458307448632], [-71.501277989242595, 42.113737945539349], [-71.501278960966928, 42.11395519262765], [-71.501287549813625, 42.114132375406932], [-71.501389006446914, 42.114372129294289], [-71.501474260258902, 42.114600539268316], [-71.501467856503893, 42.114817786421817], [-71.501376928209623, 42.115006314427511], [-71.501278987097947, 42.115252732967228], [-71.501226995257269, 42.115481774768853], [-71.501350340036822, 42.115686596018236], [-71.501550834335887, 42.115891416110159], [-71.501644313547047, 42.116119825794293], [-71.501477565915721, 42.116354541280465], [-71.501378895701706, 42.116514889354484], [-71.501407437545467, 42.116685949645188], [-71.499482069980928, 42.118061194231508], [-71.489986954757811, 42.124557095887972], [-71.489125532590251, 42.125098378605301], [-71.478416307482803, 42.131391161619312], [-71.478102880133605, 42.156757486565674], [-71.47271638844272, 42.156822144044618], [-71.464038914784325, 42.158148343002807], [-71.444036733119475, 42.174860202113592], [-71.430205784642808, 42.179386222809292], [-71.42376093202698, 42.179281464578636], [-71.423589813959467, 42.178144708751262], [-71.402319164810478, 42.178793622483944], [-71.404435391642778, 42.18841188718546], [-71.384849484233982, 42.192033936276708], [-71.378470578685864, 42.193462177249124], [-71.374503898818645, 42.193971082014748], [-71.361955114315464, 42.195778711437562], [-71.344751734045104, 42.200494592603178], [-71.344201034736002, 42.200645728031375], [-71.344169489104331, 42.2009180284617], [-71.344199229668135, 42.201232636580158], [-71.344437443266372, 42.201365215141358], [-71.344636916140374, 42.201445973019645], [-71.344967535215616, 42.201572463453871], [-71.345228665987733, 42.20169318726056], [-71.345459147758561, 42.201820081311233], [-71.345736007952254, 42.201946497084947], [-71.3460046729178, 42.202107292955397], [-71.34616567934782, 42.202273435529165], [-71.346295573191142, 42.202536949745323], [-71.346402046327981, 42.202771802651135], [-71.346532173419149, 42.202989671272498], [-71.346808223328864, 42.20325401051312], [-71.346853495186323, 42.20351119889181], [-71.346737087603472, 42.203728197691056], [-71.346565922751154, 42.204105017808423], [-71.346533951515852, 42.204356521034128], [-71.346617840404576, 42.204568205537946], [-71.346856196818635, 42.204648921443436], [-71.347102536851736, 42.204632954446964], [-71.347333889775911, 42.204605172948149], [-71.347811437332425, 42.204520818394585], [-71.34809673068419, 42.204469968993045], [-71.348512191669982, 42.204522826221677], [-71.348773665104559, 42.204609330632742], [-71.349073254522935, 42.204758816099933], [-71.349818485708369, 42.205104701917229], [-71.350264547797636, 42.205277513805363], [-71.350463933487376, 42.205454954382354], [-71.350694224198207, 42.205621811202178], [-71.35096288958816, 42.205794389347922], [-71.351246964228267, 42.206006330271222], [-71.351522831292527, 42.20625931387422], [-71.351775883279984, 42.206534234823792], [-71.352052039272053, 42.206820979020272], [-71.352151314195993, 42.206987123427119], [-71.352273691616801, 42.207165091741352], [-71.352234382034553, 42.207404792919192], [-71.35212598952846, 42.207564997965562], [-71.351986704793859, 42.207730204775352], [-71.351754485740543, 42.208020884203691], [-71.35173822073196, 42.208244229364567], [-71.351760399169748, 42.208444036149025], [-71.351690311967289, 42.208638591940129], [-71.351635174760801, 42.208913114271247], [-71.351726192160868, 42.209245265117438], [-71.351841187061581, 42.209422594061891], [-71.351909329440616, 42.209646138189484], [-71.351869519667957, 42.209943188035631], [-71.35171961093728, 42.210920367325002], [-71.35165596950165, 42.211309127467459], [-71.351586364495972, 42.211503143539986], [-71.351384378726223, 42.211805564906719], [-71.350788204649305, 42.212616237318585], [-71.350044815435012, 42.213653951519902], [-71.349851536811016, 42.213853476700933], [-71.34873232140599, 42.214479429993915], [-71.347211614252075, 42.21534954158512], [-71.346934196625611, 42.21542857883658], [-71.346603280954312, 42.215393205051967], [-71.346341979737701, 42.215318580185439], [-71.346057011912862, 42.21521466302719], [-71.345749355941877, 42.215127640413741], [-71.345287688092242, 42.21502348366193], [-71.345041944377741, 42.21497696635118], [-71.344534080184118, 42.214895251817055], [-71.344064609554906, 42.214813587215538], [-71.34320318846963, 42.214599130779241], [-71.342210525072787, 42.214418879151616], [-71.341541108856347, 42.214239605969162], [-71.340787620367834, 42.213974052929984], [-71.340179871780151, 42.213789185402064], [-71.339926307306513, 42.213725810490217], [-71.339594901435689, 42.213793500861833], [-71.339501592008077, 42.213958756657412], [-71.339377481419575, 42.214187080732323], [-71.339130606890961, 42.214398306855706], [-71.338898226604314, 42.214671944016622], [-71.338681647210095, 42.214922645103869], [-71.338465239731477, 42.215105192837861], [-71.338286729807635, 42.215243948666625], [-71.338328583308297, 42.215644103689641], [-71.338372538540014, 42.216170214440936], [-71.338486581779733, 42.216473687884857], [-71.338570788019581, 42.216651616805116], [-71.338723939196228, 42.216817848573079], [-71.339062139889094, 42.216990461901382], [-71.33924657968484, 42.217093715429414], [-71.339461167945231, 42.217248778426686], [-71.339790890899593, 42.217518790811162], [-71.340105564841465, 42.217753849400324], [-71.340374847136431, 42.21783471164423], [-71.340721245654436, 42.217881828829206], [-71.340967425471035, 42.217950863604258], [-71.341174703263619, 42.218077733664536], [-71.341413052833929, 42.218227153933448], [-71.341619756765908, 42.218439011235326], [-71.341749778538443, 42.218656974536827], [-71.341940381771423, 42.219012317731313], [-71.342170529860766, 42.219247254114407], [-71.342415925352, 42.219488423070651], [-71.342615389413922, 42.2196434593098], [-71.342999754474235, 42.219770568765647], [-71.343207017347751, 42.22000547171541], [-71.34326633124212, 42.220411860508541], [-71.343219383626334, 42.220588436258964], [-71.343164424732592, 42.220771843355323], [-71.343047910080926, 42.221063112830088], [-71.342899901972189, 42.22135442886745], [-71.342775945653614, 42.221519645144106], [-71.342536576942123, 42.221627983757863], [-71.342205048747019, 42.221729352865388], [-71.341657204052538, 42.221922163819919], [-71.341563259993364, 42.222144859641254], [-71.34160121974638, 42.222368277704078], [-71.341584423907435, 42.222642847519545], [-71.34153780363097, 42.222831306995388], [-71.341451174725762, 42.223082732515543], [-71.341310977265209, 42.223442660653234], [-71.341248566783236, 42.223647933848859], [-71.341177731734405, 42.223928010664977], [-71.341129887787702, 42.224265558690796], [-71.341044445698799, 42.224477011961838], [-71.34095864838747, 42.224636697156441], [-71.340726266509506, 42.224899173775732], [-71.340579247871858, 42.225030053978358], [-71.340285244827413, 42.225229422758055], [-71.340046299899541, 42.22535459241324], [-71.339822225081235, 42.225491036130954], [-71.339574775031082, 42.225673542322852], [-71.339288495430438, 42.225929728313446], [-71.338971421212477, 42.226243219989101], [-71.33871563201474, 42.226511331551094], [-71.338421984665331, 42.226756251418109], [-71.337849677390494, 42.227114395543168], [-71.337363773866599, 42.227267930100808], [-71.336985860413918, 42.227397938040731], [-71.336800138838385, 42.227500038677121], [-71.336599412324006, 42.227642721367623], [-71.336220643208051, 42.227961789436364], [-71.335732843317231, 42.228469133878818], [-71.335469172205308, 42.228731554931016], [-71.334989729771806, 42.229141675314537], [-71.334548484205257, 42.229534923030876], [-71.334215259259111, 42.229940119096668], [-71.333983463176352, 42.230099587965043], [-71.333705059332516, 42.230292750232671], [-71.333404197084022, 42.230503345116361], [-71.332816729302266, 42.23084460607496], [-71.331720139331267, 42.231487260800179], [-71.331518540993059, 42.231629843226074], [-71.331309886669786, 42.231783218568218], [-71.33103141900088, 42.23203993565108], [-71.330776453038098, 42.232250591162277], [-71.330451871633116, 42.232489772936056], [-71.330180697708272, 42.232734704730007], [-71.329987298384324, 42.232934195752563], [-71.329839978827238, 42.233116829064095], [-71.329753895200227, 42.233368246175765], [-71.32968359025233, 42.233608432835531], [-71.329674131510259, 42.233882381095277], [-71.329742146558033, 42.234134026738261], [-71.32989471960498, 42.234432523413012], [-71.330130901839325, 42.234816042220451], [-71.33049039743851, 42.235343250992557], [-71.331017127411059, 42.236174016727148], [-71.331153963217972, 42.236471858217456], [-71.331221181636309, 42.236889427477514], [-71.331250375462048, 42.237164062731907], [-71.331264150933791, 42.237587225236091], [-71.331277473472738, 42.237953037765926], [-71.330959650553368, 42.240463243135579], [-71.33080349227383, 42.241046588894648], [-71.330632123078374, 42.241744070227739], [-71.330415008494683, 42.24201212968778], [-71.330083440205783, 42.242216998237701], [-71.329897840418951, 42.242433966201034], [-71.329805098132695, 42.242588500591211], [-71.32975044508018, 42.242816916145486], [-71.329741784796099, 42.243108961191147], [-71.329702649885135, 42.243424008738423], [-71.329640249503939, 42.243829592072942], [-71.329553603150728, 42.244419701160261], [-71.329521082479545, 42.244842794565216], [-71.329612682621402, 42.245249776539438], [-71.32985888936787, 42.245434163300217], [-71.330043532330279, 42.245577314627837], [-71.330281697588205, 42.245779154405881], [-71.330473593069158, 42.246020268525399], [-71.330588534223878, 42.246175109950919], [-71.330772891771588, 42.246335815531324], [-71.330957113333668, 42.246456997389309], [-71.331149000612157, 42.246566486308531], [-71.331487415553482, 42.246710491552328], [-71.331864151562371, 42.246934948806555], [-71.332040017222496, 42.247055666518783], [-71.332193405752591, 42.247199308780246], [-71.332354657670621, 42.247348094030471], [-71.332515787506622, 42.247497509081484], [-71.332664102192297, 42.247636101611555], [-71.332736948054659, 42.247995787936148], [-71.332782603407679, 42.248189959302223], [-71.332751524634915, 42.248441458069479], [-71.332705086896453, 42.248727235893803], [-71.332573689234763, 42.249018471678426], [-71.332272719320514, 42.249005698244126], [-71.302886733931942, 42.248248847379145], [-71.303357548102426, 42.250108236561154], [-71.308449504276211, 42.27067184631845], [-71.323782222714627, 42.297720990230047], [-71.329749522394692, 42.313073190455555], [-71.327299278727182, 42.313781303108925], [-71.26996858246882, 42.328114196088599], [-71.269639451695056, 42.327871539599293], [-71.269322344309259, 42.327759538059489], [-71.26885070444915, 42.327637051743558], [-71.268325898387403, 42.327554969304224], [-71.266706533443752, 42.327457704078178], [-71.266104607682749, 42.32736474151379], [-71.265686724450859, 42.327242351557572], [-71.265384520253662, 42.327072931111736], [-71.264997006851104, 42.326875786665333], [-71.264407130698373, 42.326513923707004], [-71.26408926175661, 42.326350049495993], [-71.263756504549406, 42.326209821383507], [-71.26345458108284, 42.326097834784278], [-71.263161995748519, 42.326116858595675], [-71.262886646176099, 42.326295808440406], [-71.262504180801983, 42.326567356087239], [-71.262296915354526, 42.326642912000864], [-71.261989715807374, 42.326708087402366], [-71.261504611992521, 42.326751556168361], [-71.260911611048741, 42.326772831479424], [-71.260256831643773, 42.326800186888853], [-71.259886200772272, 42.32676277153972], [-71.259569847106988, 42.326713764786653], [-71.259182930219495, 42.326556484709265], [-71.25894944929901, 42.326346678251767], [-71.258776631489894, 42.326073438257076], [-71.258642552803209, 42.325822786547874], [-71.258593745922127, 42.325577355400981], [-71.258553193649121, 42.325394421595369], [-71.258504321149303, 42.325166366046723], [-71.258355256226125, 42.324933148063572], [-71.258245825794376, 42.324773656867457], [-71.258074750577805, 42.324649507212726], [-71.257796185756547, 42.324525130851782], [-71.257371667845533, 42.324465176590763], [-71.256986791464897, 42.324508207600665], [-71.256717594099214, 42.324567327304635], [-71.256263377180318, 42.324627134542645], [-71.255879414907554, 42.324715808433147], [-71.255472313893179, 42.324826849013235], [-71.255195876590378, 42.32493771636441], [-71.254889592092098, 42.325111449599262], [-71.254645281714673, 42.325290445739469], [-71.254508368782837, 42.32546237866395], [-71.254389063244957, 42.325817737865513], [-71.254237486189524, 42.326047527681553], [-71.254062689285689, 42.326289061392067], [-71.253872023736136, 42.326461418683188], [-71.253535910788429, 42.326721242024448], [-71.253165747534183, 42.32668947781719], [-71.252934505902573, 42.3266569307495], [-71.252694619523453, 42.326601227199177], [-71.252439732967431, 42.326534327262529], [-71.252044215931903, 42.326285355196219], [-71.251880474817924, 42.32614932835407], [-71.251662046087219, 42.325882191114538], [-71.251512618807737, 42.325654545251126], [-71.251410001186883, 42.325432582215299], [-71.251253693382949, 42.325227428557547], [-71.251074857321612, 42.325074622485154], [-71.250865016728127, 42.324939124509434], [-71.250484802673299, 42.324690090096325], [-71.250282492804672, 42.324491587149495], [-71.250180354380376, 42.32430347486126], [-71.250078202447185, 42.324149663462535], [-71.24985146200234, 42.323871160919957], [-71.249493816574699, 42.323623972842313], [-71.249090460261129, 42.323554400977144], [-71.248813328162129, 42.323410919761812], [-71.248659298776531, 42.323215850454254], [-71.248551442324612, 42.323002966188668], [-71.248274697099916, 42.322488565208261], [-71.247800277557374, 42.32186578519282], [-71.247379738030546, 42.321362950127096], [-71.247050625281403, 42.321115816972004], [-71.24681282273967, 42.321061275986629], [-71.246567550882901, 42.32102409363349], [-71.246199112424222, 42.321055420998263], [-71.245915180459974, 42.321099177969842], [-71.245569645036085, 42.321136675917458], [-71.245277949962698, 42.321179963985948], [-71.244840975383056, 42.321239224136093], [-71.244579720985229, 42.321224509307541], [-71.244311300940851, 42.321181778927304], [-71.244019631795908, 42.321098393065157], [-71.243766124488999, 42.320998256118884], [-71.24345140016618, 42.320886638330094], [-71.242951680226042, 42.320802875200428], [-71.242598680417188, 42.320766613768576], [-71.242214212782613, 42.320742074478197], [-71.241091018575986, 42.320846504296881], [-71.240645155806547, 42.320942820433416], [-71.240275823665314, 42.321073068682352], [-71.240052724615467, 42.321250371618959], [-71.239683741056652, 42.321501617733603], [-71.239353173391564, 42.321644374805068], [-71.239006965947453, 42.321666636609244], [-71.238421178300968, 42.321654681531975], [-71.238105436493242, 42.321614529822014], [-71.237627708741059, 42.321522871110908], [-71.23658690835056, 42.321180090823816], [-71.235599641957975, 42.32083175239444], [-71.234721261069041, 42.320672717776553], [-71.234351418921051, 42.320661780316037], [-71.233973839949641, 42.320673240988484], [-71.233580683148318, 42.320725267409074], [-71.23269418457221, 42.320823861579882], [-71.231846432626639, 42.320853397019015], [-71.231422748577671, 42.32080856361663], [-71.231191108072579, 42.320734828485854], [-71.230967721702086, 42.320660031858054], [-71.230782207661335, 42.320466035241978], [-71.230318957162964, 42.320141474823942], [-71.22977837249735, 42.319575812921137], [-71.229322700144806, 42.31935416945317], [-71.229053099174891, 42.319279800392252], [-71.228867810360086, 42.319148821270971], [-71.228651232893839, 42.318874261613587], [-71.228457732986058, 42.318508646608485], [-71.228349291870799, 42.318251807417518], [-71.228302145637088, 42.317846024821897], [-71.228208542662301, 42.317354604654852], [-71.22803767831509, 42.316663226913903], [-71.227928787017447, 42.316286467335615], [-71.227712635248068, 42.315972563981795], [-71.227685733121916, 42.315571330568858], [-71.227569416878652, 42.31520139517724], [-71.227198469526527, 42.314807177822544], [-71.226558362336846, 42.314299242475684], [-71.226325875950536, 42.313950906333474], [-71.226402603088943, 42.31373952042069], [-71.22642486101887, 42.31330464235208], [-71.22652456626939, 42.313024708774172], [-71.226747873563156, 42.312801247280987], [-71.226970448932775, 42.312606502927451], [-71.227070483154847, 42.312446398513103], [-71.22703000659159, 42.311537547382187], [-71.226874916281943, 42.311160766647959], [-71.226550180398732, 42.310520786960808], [-71.226464216401652, 42.31006368388752], [-71.226479278734615, 42.309777876821251], [-71.226725520351465, 42.309577607355251], [-71.226917850993004, 42.309474530901589], [-71.227140972100798, 42.309291041067986], [-71.227271017372033, 42.309004966646988], [-71.227201361815517, 42.308759471516574], [-71.227046803968946, 42.308485595526783], [-71.226730352405568, 42.308177123300602], [-71.226444598405891, 42.308063276579126], [-71.226082769758179, 42.307983639022446], [-71.225697356948288, 42.307972636388797], [-71.225466036042477, 42.307921397483156], [-71.225096087176027, 42.307784928918075], [-71.22482596641791, 42.307619438723144], [-71.224555822484945, 42.307459529646358], [-71.224139215998974, 42.307231746424364], [-71.223815390296664, 42.307089172392381], [-71.223152841087128, 42.307049945813631], [-71.222867786575904, 42.307056010899608], [-71.222559359350186, 42.3069708191356], [-71.222219818286192, 42.30684512815904], [-71.22154884937494, 42.306514897130178], [-71.221101685402942, 42.306372016466064], [-71.220801142100115, 42.30631555845536], [-71.220469982530858, 42.306298458040608], [-71.220223009656195, 42.306333238524964], [-71.219676353676718, 42.306528350305207], [-71.218967811913984, 42.306660493282678], [-71.218490032471465, 42.306666616181175], [-71.21811258797446, 42.306638682084611], [-71.217727387835964, 42.306582098360366], [-71.217341925410722, 42.306502915327826], [-71.216910210794808, 42.306406151365522], [-71.216517250851638, 42.306349544458705], [-71.215931541114728, 42.306298581868234], [-71.214960449879214, 42.306259535178135], [-71.213789060773365, 42.306232495645396], [-71.213311618211918, 42.306084377740412], [-71.213033373017751, 42.305873284533341], [-71.212817159966065, 42.305650461807879], [-71.212515759212081, 42.305170841774611], [-71.21216833809838, 42.304650682417538], [-71.211797571760059, 42.304171426776691], [-71.211573063920483, 42.3036684092109], [-71.211403186125779, 42.303314076949064], [-71.211309510099397, 42.302765742360712], [-71.211324603347862, 42.302594184143032], [-71.211270125843413, 42.302280024514836], [-71.211377539897313, 42.302022630054601], [-71.211584725141236, 42.301667533898652], [-71.211792407078065, 42.301336026542849], [-71.211922201597162, 42.300930139022611], [-71.211906577232739, 42.300632462366217], [-71.211929075370705, 42.300352256967386], [-71.211859514651252, 42.300181026503523], [-71.211758770613656, 42.299986670214025], [-71.211673566499996, 42.299815400377391], [-71.211526903287677, 42.299638304322663], [-71.2113187975675, 42.299398663260682], [-71.210971629681879, 42.299124370825517], [-71.210493351227015, 42.298747833605134], [-71.20969860609145, 42.298228698657027], [-71.208271603011937, 42.297280944289469], [-71.207855345966408, 42.296978287553394], [-71.207646602096133, 42.296750431904243], [-71.207453444418036, 42.296430335453032], [-71.207298383491135, 42.29600166977422], [-71.207197729107421, 42.295687480103147], [-71.207066387062468, 42.295401301317412], [-71.206881032350935, 42.295047462364103], [-71.206471156106701, 42.294236149337529], [-71.206153567699459, 42.293373303726518], [-71.205796821537433, 42.291909949176691], [-71.20562594638325, 42.291001382073254], [-71.205601737359302, 42.290418377768951], [-71.205585573285134, 42.2900350799002], [-71.205446515953156, 42.289743297270398], [-71.205207031053419, 42.289457918985732], [-71.204852003959232, 42.28914415411036], [-71.204450990411246, 42.288915798052543], [-71.204096383402117, 42.28877308836978], [-71.20378806966923, 42.288636168834486], [-71.20338770127799, 42.288608126863089], [-71.202979330625936, 42.288580062805345], [-71.202170623829957, 42.288568966034866], [-71.201661923284178, 42.288552431030737], [-71.201392374292979, 42.288501674150922], [-71.201145760862175, 42.288369949529532], [-71.200335944923879, 42.287799482043759], [-71.200004502812689, 42.287582005343744], [-71.199595647354698, 42.287376659337511], [-71.199241204630496, 42.287280120279341], [-71.198971438746881, 42.287200007635128], [-71.198679050539809, 42.287109211277553], [-71.19835527785709, 42.286989072083728], [-71.197977266597206, 42.28680126703766], [-71.197398832505058, 42.286435754307192], [-71.196928805942164, 42.286195936208912], [-71.196728376527759, 42.286070445861561], [-71.196343156146426, 42.286048091142248], [-71.196104628288225, 42.286105349534751], [-71.19596622062754, 42.286345813039027], [-71.195896938987218, 42.286608426657004], [-71.195812774440441, 42.286940233727485], [-71.195675024145842, 42.287346083094313], [-71.195552239157621, 42.287614766760917], [-71.195213888030437, 42.287929513979961], [-71.194890650738031, 42.28810142307379], [-71.194589949147343, 42.288175978950228], [-71.194305058129842, 42.288165137851898], [-71.19384301539732, 42.288079459454643], [-71.193349617330284, 42.287908797406949], [-71.192748387546999, 42.287571829920076], [-71.192216133492451, 42.287189489216345], [-71.191622317250221, 42.286727034050344], [-71.191182431006666, 42.286178380971776], [-71.191043154455684, 42.28577287221021], [-71.190973581400684, 42.285469914712372], [-71.190972858675707, 42.285121047111694], [-71.191003106812488, 42.28468673443718], [-71.191140135768151, 42.283663013228605], [-71.191152835090364, 42.282973238419721], [-71.191146507065937, 42.282754268712644], [-71.190984081479371, 42.282348697559463], [-71.190629064201516, 42.281931353620671], [-71.190459725154199, 42.281800354037429], [-71.19026677524586, 42.281663168500586], [-71.189896879652068, 42.281463474449104], [-71.189434313887062, 42.281223645413405], [-71.188941114093367, 42.281001197345525], [-71.188616924436744, 42.280778665256712], [-71.188339767605939, 42.280607396869087], [-71.188133185415793, 42.280433528515971], [-71.187923023154696, 42.28032213083965], [-71.186027736666006, 42.279878069712076], [-71.18528804960107, 42.279638546345645], [-71.185210911462448, 42.279449812203282], [-71.183257506616542, 42.275993501854103], [-71.183041562713669, 42.275879288207797], [-71.182779585035775, 42.275879645298751], [-71.182495236062096, 42.275965558526103], [-71.181255292196667, 42.276281100573044], [-71.180385461497607, 42.276498716761438], [-71.179754077828463, 42.276574023754875], [-71.179130466284363, 42.276574534023027], [-71.178629815932695, 42.27659231067198], [-71.177482444729392, 42.276672912524667], [-71.176835514519382, 42.276634001718172], [-71.17642703158549, 42.276502848249741], [-71.176072525308115, 42.276342585793252], [-71.175487127457416, 42.276149079211386], [-71.174955517811455, 42.276058086061838], [-71.174531657343564, 42.275995575245716], [-71.174377731874443, 42.275847129503788], [-71.174261774906455, 42.275647023939648], [-71.174330709979202, 42.275372627659671], [-71.174499504254186, 42.274892075366516], [-71.174768661739577, 42.274366161771937], [-71.174814145813968, 42.273959984678115], [-71.174844501523111, 42.273714198377817], [-71.174736135399897, 42.273405538364223], [-71.174543288189142, 42.273000396646935], [-71.174018791023201, 42.272262912964912], [-71.173733075254916, 42.271697162428303], [-71.173617083694907, 42.271411527269514], [-71.173439995965907, 42.271126348476209], [-71.173370384582213, 42.270920791696085], [-71.17321588523231, 42.270675019952186], [-71.173030598000807, 42.270429160333812], [-71.172883951410597, 42.270188992341396], [-71.172883826706851, 42.269954913492356], [-71.173114742487911, 42.269697274370692], [-71.174145406716832, 42.268810615006821], [-71.174368434333871, 42.268552950950443], [-71.174468223315827, 42.268358588541645], [-71.174498846452707, 42.268084083409697], [-71.174498109726684, 42.267850002748212], [-71.174436100606172, 42.267603954427415], [-71.174343723081563, 42.267347106348176], [-71.174243483991546, 42.267181346478239], [-71.17407367287673, 42.267038526850591], [-71.173811927401317, 42.266930287572571], [-71.173595791467847, 42.266839103024971], [-71.173141624265511, 42.266719061343238], [-71.171947794458731, 42.266371291436108], [-71.171755085820692, 42.266274498416884], [-71.171593345388871, 42.266142951925239], [-71.171423652396228, 42.265908928001103], [-71.171323085275276, 42.265691487192072], [-71.171253301563752, 42.265451536814325], [-71.171207159250685, 42.265257299426651], [-71.158530063076142, 42.255135815476358], [-71.152250558179531, 42.258306839058029], [-71.146597237971392, 42.255748466521808], [-71.14559727452027, 42.250096504337044], [-71.142568974478209, 42.235876297409526], [-71.130757332754001, 42.227865040229233], [-71.130612688873967, 42.228115491416332], [-71.130450796529161, 42.228332215248443], [-71.130266147060595, 42.228504300148629], [-71.129988820637209, 42.228635662038897], [-71.129665876677635, 42.228778670140578], [-71.129304250507275, 42.228990246113327], [-71.129211853933427, 42.229150292990688], [-71.129157879752356, 42.229327389790441], [-71.128988472181547, 42.229646992768984], [-71.128849715404229, 42.229841821518981], [-71.128587828679684, 42.230024367594943], [-71.128172004633441, 42.230407363563131], [-71.127779665853751, 42.230812942172207], [-71.127625734151323, 42.230950280392385], [-71.127417651596062, 42.231087442627931], [-71.127179495710223, 42.231167697205819], [-71.126817653588546, 42.231247549189412], [-71.126417499837871, 42.231373461267133], [-71.126148322995519, 42.231618999775158], [-71.125978824804136, 42.231745031196645], [-71.125624858357668, 42.231864878877971], [-71.125447880579728, 42.231985303192502], [-71.125155161999089, 42.23223643449171], [-71.124932071612008, 42.232430983009863], [-71.124762859214258, 42.232630748988555], [-71.124608570351256, 42.232887913296011], [-71.124539024584834, 42.233093676823295], [-71.12460800277988, 42.233311057298188], [-71.124661732378428, 42.233505339913897], [-71.124676867030757, 42.23381374566344], [-71.124489365407214, 42.23399157385726], [-71.124348778656525, 42.234123279355373], [-71.124057048034231, 42.234225859857851], [-71.123818666420206, 42.234218956703096], [-71.122863352591679, 42.234206818594572], [-71.122570981299162, 42.234233407038339], [-71.122487606949505, 42.234440744382297], [-71.122488836880123, 42.234641067446212], [-71.122536252242938, 42.234877554804328], [-71.122675997477756, 42.235132351670181], [-71.12281498257704, 42.235372561054646], [-71.123030961182025, 42.235541448505799], [-71.123369765188741, 42.235775560953563], [-71.123723936962804, 42.236054108040385], [-71.124062911622872, 42.236423805620731], [-71.124477096130505, 42.236860101070619], [-71.126528649696084, 42.238950470806891], [-71.124486032790429, 42.24005514824902], [-71.109249709770509, 42.247952313138533], [-71.109302844117835, 42.25010477096005], [-71.109479237643853, 42.255519641452366], [-71.113284438705847, 42.259004283635313], [-71.113033755930445, 42.259150909277416], [-71.112641388633762, 42.259476487555787], [-71.11216210216493, 42.260002629285701], [-71.111593027521081, 42.260662430880942], [-71.111319441888995, 42.260826441237271], [-71.110931451395373, 42.261008519635674], [-71.110434646003995, 42.261146922876655], [-71.109636170876314, 42.261225868940024], [-71.10922912250301, 42.261254284558873], [-71.108982648912843, 42.261246153031053], [-71.1085805512093, 42.261159794155851], [-71.10829384955062, 42.261071576808661], [-71.107989321429869, 42.260887145161966], [-71.107667902746087, 42.260651337517686], [-71.107282170266402, 42.260604463405876], [-71.106407466958274, 42.260702212779222], [-71.105132358036371, 42.260792907334384], [-71.10473555131172, 42.260597976178737], [-71.104350257583363, 42.26024832058981], [-71.103910774037303, 42.259882181200922], [-71.103614244014565, 42.259720273105202], [-71.103322047920329, 42.259718093639492], [-71.103099910265215, 42.259773055007159], [-71.102832921478154, 42.25986783444155], [-71.102315002721909, 42.260085986796533], [-71.100639546459348, 42.261143164021398], [-71.100156587519308, 42.26156120628454], [-71.099258039969854, 42.262282280576812], [-71.098879363593369, 42.262556092094847], [-71.098642853627979, 42.262639084216296], [-71.098336837217957, 42.262711749311798], [-71.098000408845337, 42.262801773077072], [-71.097826019747771, 42.262912530357582], [-71.097667481806582, 42.263046480789981], [-71.097518364263181, 42.263242855037184], [-71.097263739924799, 42.263543564967414], [-71.097098813280212, 42.263728719637868], [-71.09689750787544, 42.264011609677013], [-71.096569565219582, 42.264461691562516], [-71.096080733673091, 42.264937135505761], [-71.095531562923085, 42.265464762661473], [-71.095200539334101, 42.265806252796423], [-71.095022360030612, 42.266071755066214], [-71.094844732336966, 42.266383444699571], [-71.094689052517765, 42.266636691618743], [-71.094486977565936, 42.266885182936832], [-71.09425123143059, 42.266996888479426], [-71.093913356837163, 42.26702441394918], [-71.093542795966542, 42.26698880131741], [-71.09308486221731, 42.266817832010872], [-71.092836207289807, 42.266712245052119], [-71.092434469387754, 42.2666432969908], [-71.092157392309957, 42.266641232917578], [-71.09184110383633, 42.26661084923122], [-71.091291521195927, 42.266480600918477], [-71.091045106595161, 42.266460547128254], [-71.090760597082848, 42.266464575295863], [-71.090408910652599, 42.266566316499585], [-71.090281805327493, 42.266727918206712], [-71.090179515002319, 42.26696955552331], [-71.090038001845286, 42.267503022010601], [-71.08994088592361, 42.267956159229527], [-71.089975814810458, 42.26812176019579], [-71.090083208785003, 42.268440581815746], [-71.090105658471373, 42.268755228840227], [-71.090036924219518, 42.269093138378523], [-71.089949239526987, 42.269306107778263], [-71.089664210660331, 42.269612904260768], [-71.089458042441819, 42.269684191890043], [-71.089012634660335, 42.269729864820839], [-71.085325335553961, 42.269022203793583], [-71.084118051009938, 42.268740453774264], [-71.083081031668627, 42.268485148063199], [-71.082650039129376, 42.268496006791629], [-71.078986635225334, 42.269795371640008], [-71.078512362028945, 42.269933179447321], [-71.077838757102668, 42.270096181552795], [-71.077347846009786, 42.270165230027146], [-71.076940566651885, 42.27019920248059], [-71.076379034829969, 42.270206135598002], [-71.072902845234509, 42.270313631370847], [-71.07265932810455, 42.270419681898289], [-71.072264189032751, 42.270647789039955], [-71.071951326218453, 42.270754660137399], [-71.071637028527419, 42.270804715692208], [-71.071235377857491, 42.270758201526618], [-71.070771889890196, 42.270678233541808], [-71.070462041815915, 42.270590375544444], [-71.070130262545831, 42.270554832464057], [-71.069552923938588, 42.270550419218708], [-71.068756198468208, 42.2707032733259], [-71.068060741465274, 42.270901608204596], [-71.067857408297144, 42.271103952455817], [-71.067761516880822, 42.271282482520839], [-71.067472332856767, 42.271435076105433], [-71.066122018911358, 42.271280261642382], [-71.065758589621595, 42.271210824862592], [-71.065532263538856, 42.271070421326016], [-71.065203556718018, 42.270834557370279], [-71.064878453322066, 42.27063912988595], [-71.064800989276051, 42.270163384268663], [-71.064768984788174, 42.269969696977753], [-71.065415746729897, 42.269624987873762], [-71.065353885952476, 42.269418763507602], [-71.065169810381974, 42.269304988108928], [-71.065076648574973, 42.268802714084686], [-71.064338362078402, 42.267915363729529], [-71.063382887894306, 42.267220749199559], [-71.062890013356508, 42.266995507891359], [-71.061596858248876, 42.266793591081708], [-71.059287363863461, 42.267042509223131], [-71.058886118650946, 42.267221030223972], [-71.058301605662621, 42.267015674049787], [-71.057994131326353, 42.267183298728369], [-71.057654992891358, 42.267684454705289], [-71.057130610555461, 42.267703230754925], [-71.056576681342847, 42.267613853382144], [-71.055683763037194, 42.26763912192029], [-71.055652557292333, 42.267819602720401], [-71.056484041296841, 42.267912847772195], [-71.057963111826353, 42.268345656505105], [-71.057593067288607, 42.268550221941361], [-71.056577061827312, 42.268667844949796], [-71.055960613627533, 42.26885002613502], [-71.055036807092037, 42.26935287353394], [-71.055006369763333, 42.269993054363702], [-71.054852180722591, 42.270130924106255], [-71.054143694644196, 42.270314989541397], [-71.053496327393006, 42.270632623801895], [-71.052295268959043, 42.270788832861477], [-71.051463963122657, 42.271299394635626], [-71.051094489576002, 42.271315326968832], [-71.050787267589683, 42.271185291679117], [-71.050694527756775, 42.270998115067158], [-71.050941168201319, 42.269858479917211], [-71.051064230150786, 42.269649639485991], [-71.051556738316719, 42.269307195980531], [-71.051803596299308, 42.268870429977788], [-71.051187564985767, 42.268341343915289], [-71.050786223525947, 42.268204188306434], [-71.050386480157883, 42.268166611620622], [-71.049893770166705, 42.268418388357411], [-71.049585779152224, 42.26843293618699], [-71.049247485389813, 42.268276935922032], [-71.049771213375536, 42.266952656501672], [-71.049678564127262, 42.266719923627662], [-71.049401264746521, 42.266698038763082], [-71.049247444653119, 42.266970858763706], [-71.049185811478068, 42.267251423009803], [-71.048969910186031, 42.267543715644216], [-71.048969429203794, 42.268002870747992], [-71.048785354544407, 42.268438256939199], [-71.049401207401743, 42.269057926239924], [-71.049801275699437, 42.269050492203036], [-71.050201628256218, 42.26891764498329], [-71.05054054712258, 42.268712981462826], [-71.050848839088772, 42.26870743532605], [-71.051033595302371, 42.268875254937122], [-71.051002875087178, 42.269173406852573], [-71.050355570338937, 42.269806131492103], [-71.050262810161485, 42.271159020803729], [-71.050448016851561, 42.271434969955344], [-71.050848303183813, 42.271706628393609], [-71.051432815496085, 42.271794982273548], [-71.052264739336849, 42.271798228603544], [-71.052542050243034, 42.27202771735832], [-71.052787994074308, 42.272716869961762], [-71.052788603522515, 42.273076995196249], [-71.053127092017093, 42.273674225985019], [-71.054512881010666, 42.274631143951275], [-71.054759127172005, 42.275023102033046], [-71.054820979146626, 42.275571448462131], [-71.054543482781725, 42.276071753238561], [-71.054173456122442, 42.276420806819544], [-71.05247891263565, 42.277378714749211], [-71.051893815438177, 42.277605471453064], [-71.050107157776793, 42.277628827343221], [-71.049245365596931, 42.277535958005608], [-71.048444305313367, 42.27717214884693], [-71.047459309687568, 42.276558854474757], [-71.046411918322804, 42.276010667390011], [-71.045764343220924, 42.275752060799377], [-71.045149083601046, 42.275636547275347], [-71.043947155381275, 42.275712178429877], [-71.043547394254318, 42.275620559664475], [-71.043146547486444, 42.275780481015452], [-71.042558874235397, 42.276193453614503], [-71.042601828976089, 42.276507021591783], [-71.042006423475442, 42.276512481569135], [-71.040373876555051, 42.277839044507651], [-71.039911619027833, 42.278522507388317], [-71.03966470231228, 42.279184413965048], [-71.039326560357424, 42.279136332334119], [-71.03932646628202, 42.278749200018808], [-71.039480321939806, 42.278431288421679], [-71.039572808566319, 42.277466079953236], [-71.039327393693981, 42.27703808044118], [-71.038864420587771, 42.276803223065215], [-71.037971486927887, 42.276828354325112], [-71.037540132155854, 42.276763596788079], [-71.037386273545991, 42.277396523183398], [-71.037232346613223, 42.277606935108324], [-71.036339036631773, 42.278046193517341], [-71.036800794607117, 42.278181932303411], [-71.037293338625332, 42.278020241755399], [-71.038310476367414, 42.277290584525097], [-71.038833420516738, 42.277397841302317], [-71.039049049077377, 42.277970401876324], [-71.03864813766198, 42.279616984055664], [-71.038463119863138, 42.279917843513019], [-71.03895643792174, 42.279917573952275], [-71.039418203051099, 42.280188348109093], [-71.039634187212101, 42.280463807483287], [-71.039479923331442, 42.280737242396953], [-71.039541109319359, 42.280942847603292], [-71.039294495147658, 42.281244631775614], [-71.039387430512946, 42.281702450162342], [-71.039016611927934, 42.282177584492835], [-71.038554564098405, 42.283275183171206], [-71.037968887624743, 42.283916007547546], [-71.03642888188628, 42.284538306549017], [-71.035720194315473, 42.28460467788652], [-71.034917986879648, 42.285699805998718], [-71.034517528253517, 42.286752081697003], [-71.034363694271107, 42.286961949708136], [-71.033654517477018, 42.286893170517267], [-71.033192794763877, 42.28661337099134], [-71.032946322219757, 42.286707981393178], [-71.03297758929736, 42.287121168798642], [-71.032669469717476, 42.287370290739439], [-71.032022040367906, 42.287444721221661], [-71.032144619200565, 42.287757536562367], [-71.032144117972322, 42.28805517556227], [-71.031867127124528, 42.288537421186795], [-71.031651056136951, 42.289405875430909], [-71.031312982138658, 42.289636955483267], [-71.031312036644024, 42.29114100153793], [-71.031896859388596, 42.290896342270955], [-71.032020664177594, 42.290272845169852], [-71.032821817465717, 42.289565405046432], [-71.033499319789598, 42.289724001095593], [-71.033406393896286, 42.290914907436367], [-71.033406413369477, 42.291554123806094], [-71.033714306806559, 42.291782700878393], [-71.034331135887669, 42.291835259757683], [-71.034608230314092, 42.292361350291877], [-71.034853485406543, 42.293293618609852], [-71.035623200225288, 42.295468716445107], [-71.035714907478891, 42.295745930570412], [-71.035900651192307, 42.295949789609743], [-71.036238977447056, 42.296547606871165], [-71.036392858908968, 42.297112088155714], [-71.037470711554661, 42.29850677110592], [-71.038948720767536, 42.299948695132223], [-71.039041609672424, 42.300432980685542], [-71.038917564466715, 42.300913064653678], [-71.038671201949342, 42.301052702836564], [-71.035960087604892, 42.30132601121035], [-71.035312595490296, 42.301274417915948], [-71.030474649789895, 42.30054125988363], [-71.030536544961294, 42.300044635320596], [-71.030352049173302, 42.299885788037038], [-71.030351948553744, 42.299588687448178], [-71.029613110224872, 42.299331329239763], [-71.028688470697688, 42.299401815093447], [-71.02844212495998, 42.300090616984114], [-71.028195458022935, 42.300203312707694], [-71.025698790008576, 42.299742881634884], [-71.025175411744755, 42.299833541238229], [-71.024928435983952, 42.300342362374131], [-71.024836413181916, 42.301001454097481], [-71.024959239794995, 42.301296181202041], [-71.02520550339851, 42.301481221135312], [-71.02927262034855, 42.302309938897736], [-71.029241916028184, 42.302508419977229], [-71.028840626149929, 42.302488228933889], [-71.02461997847152, 42.301689831274373], [-71.024404428205756, 42.301549392220259], [-71.024311670591402, 42.301272164879904], [-71.024343124239806, 42.300523872849304], [-71.024528299260623, 42.300105998019518], [-71.024467040458262, 42.299720324410018], [-71.024127450079419, 42.299464582551721], [-71.021909906040221, 42.29909867614154], [-71.020893105313078, 42.298846856988291], [-71.020338773398308, 42.298829328977909], [-71.020308155725033, 42.298532640898266], [-71.020769737669283, 42.298434453254046], [-71.021725195000599, 42.298714647887422], [-71.022649322693894, 42.298599200732795], [-71.023419786737506, 42.298694140168188], [-71.023758541538385, 42.298624690872309], [-71.023388987316579, 42.298000778150382], [-71.023297338460466, 42.297641986773833], [-71.023359868738098, 42.295650322615096], [-71.023083098512657, 42.295349282530118], [-71.022683698894113, 42.295148926605172], [-71.022745073465998, 42.294760970105223], [-71.022961207028558, 42.29436969490304], [-71.022868727922457, 42.294073830762841], [-71.022405826642682, 42.294046068617526], [-71.021912935254264, 42.294280348651313], [-71.020988482621931, 42.295007995803267], [-71.020679143168792, 42.29559919632711], [-71.020402281759587, 42.295856338396092], [-71.018244568723105, 42.296794881646925], [-71.016765071152236, 42.29774857340098], [-71.016179084561841, 42.298939010957888], [-71.015346295961649, 42.299556711234516], [-71.014575014983023, 42.30072331082426], [-71.013711684503662, 42.301459620060811], [-71.013372929394023, 42.301888621304514], [-71.01337193266319, 42.302554842127108], [-71.013709993125332, 42.303053691318119], [-71.014604740511658, 42.302920718398724], [-71.015189600626272, 42.302757261583835], [-71.015528476869918, 42.302850341844781], [-71.015682855058756, 42.303216786098908], [-71.014480873129472, 42.303400237092035], [-71.013094027668771, 42.303901869977203], [-71.011644875945137, 42.304521971448438], [-71.010473936084594, 42.304560383578448], [-71.009826755123527, 42.304545200419035], [-71.008932459688552, 42.304975238446765], [-71.008655651147762, 42.304979637022321], [-71.008686564814482, 42.304700134811299], [-71.009087369157569, 42.304314717166136], [-71.009118920160944, 42.30406222665377], [-71.009302965103558, 42.30385144130895], [-71.009796874003257, 42.303626762883049], [-71.009890269953488, 42.302967688519033], [-71.009613123558964, 42.30259405017518], [-71.00908932268203, 42.302279497898851], [-71.006131127080948, 42.302501980641225], [-70.99947347789977, 42.303258688006288], [-70.997176334770487, 42.303509206779097], [-70.995512707333305, 42.304466411258886], [-70.992186889333681, 42.306848192329134], [-70.991693532961108, 42.307325423186406], [-70.991478642313226, 42.307743744213042], [-70.991231974126009, 42.307784246426706], [-70.990430355551837, 42.307302452718744], [-70.98842713278971, 42.306670631137465], [-70.987533249929257, 42.306578328221995], [-70.987132387456569, 42.306413854676059], [-70.987224565899112, 42.3058898383916], [-70.987532200821079, 42.305389290939573], [-70.98787063999184, 42.305023385299279], [-70.989564826629078, 42.304444014755475], [-70.990366210649853, 42.304015425404657], [-70.99175240248708, 42.30373913945764], [-70.993416060642843, 42.303646912409256], [-70.99455678593722, 42.303807238534013], [-70.996004440827605, 42.303394325377674], [-70.996189035235034, 42.303211202601098], [-70.99732887499394, 42.302749656719172], [-70.997945471769299, 42.302657820507775], [-70.999505016891248, 42.302429464564604], [-71.007548583245466, 42.301747937292511], [-71.008165280824599, 42.301593025440809], [-71.007518717117918, 42.301019102723671], [-71.005732079510253, 42.30028443499512], [-71.005301100613778, 42.300031034989821], [-71.005085550916746, 42.299710498430812], [-71.005055678215754, 42.298846616978103], [-71.00527132867785, 42.29845537277771], [-71.005302217688168, 42.29804082514103], [-71.00539534008459, 42.297840908110807], [-71.005396254802477, 42.296994084709425], [-71.00527341678449, 42.296465166464806], [-71.004626955647453, 42.295593586090426], [-71.004597622733513, 42.294909767286185], [-71.005029115538065, 42.294316884932705], [-71.006354963159083, 42.293563541424462], [-71.00684776030711, 42.293176815615809], [-71.006971335379248, 42.292895460135817], [-71.007064184293995, 42.292308408722569], [-71.007341704521551, 42.292096316589834], [-71.007927883243596, 42.291986830727993], [-71.009129177699975, 42.291569366124307], [-71.011131411813224, 42.291209948938807], [-71.011809762128678, 42.290955075921822], [-71.012980933926883, 42.290222966139638], [-71.013597574444134, 42.289996000550786], [-71.014983990802378, 42.289953425844686], [-71.015630144090679, 42.290131171595689], [-71.015968870912204, 42.290314371095668], [-71.016277747096609, 42.290452968773309], [-71.016153931604606, 42.291184486202646], [-71.016677602970674, 42.291508549696772], [-71.016677198829342, 42.291688609170201], [-71.01646131909331, 42.291899812793886], [-71.016399669378288, 42.292350876587022], [-71.016799300337084, 42.293199385623609], [-71.01673675449814, 42.293768025600386], [-71.017014294314663, 42.293772523854365], [-71.017230116747001, 42.29342627318858], [-71.017230870966458, 42.292786519226979], [-71.016923091917789, 42.292422852426782], [-71.01692347496855, 42.292197777606482], [-71.017231172643676, 42.292174312636043], [-71.017569635744607, 42.292330496996371], [-71.018001602552545, 42.292214640193123], [-71.01753929378917, 42.291808732436706], [-71.017570809664775, 42.291555608765016], [-71.018340702294608, 42.291298921170231], [-71.017755913936142, 42.291165383328035], [-71.017231711466593, 42.290958362056166], [-71.016800665804126, 42.291002105330755], [-71.016801392736781, 42.290732016589935], [-71.017202141664441, 42.290526631096917], [-71.018033909026073, 42.290503114510777], [-71.018495435005121, 42.290755965126955], [-71.018772806635013, 42.290732999155495], [-71.018895920549781, 42.290568578763413], [-71.019111137325098, 42.290474947741437], [-71.020282284795087, 42.290454005426994], [-71.020498657936869, 42.290207324642772], [-71.020744971750005, 42.289400868070516], [-71.021176869408464, 42.288969981991542], [-71.022286570078748, 42.288491227683167], [-71.022348149083498, 42.288075632339293], [-71.022193952681974, 42.287781311203503], [-71.020808672276772, 42.286526906216828], [-71.019701461755858, 42.285177493990759], [-71.019517031839399, 42.284811468191258], [-71.019363480410377, 42.283508261554012], [-71.018686316628575, 42.282520669986091], [-71.017055040413283, 42.280829167526065], [-71.015945630713588, 42.280092367186654], [-71.01419142018409, 42.279114338827874], [-71.012035471224664, 42.278107567942001], [-71.010711654468125, 42.277581467687803], [-71.004984374026222, 42.275700579175918], [-71.001812734227471, 42.274855789719538], [-70.999418498366552, 42.273134790180166], [-70.998561162666405, 42.272220026318323], [-70.997391199905195, 42.271582984103283], [-70.997051532270817, 42.270850534799308], [-70.996618297125352, 42.269110496302986], [-70.99652521547533, 42.268147925662319], [-70.996802656495674, 42.267692773868809], [-70.996801965927787, 42.267215065835565], [-70.9963393262328, 42.266844990346193], [-70.996308599732387, 42.266593308527256], [-70.997047963630763, 42.265757638764875], [-70.997193184529806, 42.265909076915371], [-70.997360350632192, 42.266090411246608], [-70.997422005383257, 42.266294331577811], [-70.997642074545638, 42.266499575188632], [-70.998654552215655, 42.266699817619816], [-70.99901189791423, 42.266897735055487], [-70.999194073564567, 42.267926054695373], [-70.999424455519375, 42.268162220419867], [-71.000248408946149, 42.268263222679508], [-71.000709693041983, 42.268471130273731], [-71.0010791742843, 42.268653968674265], [-71.002588447113638, 42.268699319175205], [-71.002834890678514, 42.268605313520105], [-71.002834307665822, 42.268262562651387], [-71.003112292606346, 42.268149606356843], [-71.004005454683551, 42.268035256621928], [-71.003513459823679, 42.267692723057955], [-71.003174779381055, 42.267554501307892], [-71.002465323631469, 42.267738244096762], [-71.001757778550541, 42.267786404187746], [-71.001203515307964, 42.267579717738236], [-71.000956984420839, 42.26737724706782], [-71.000896162429157, 42.266819870161001], [-71.001143177010036, 42.266437230804513], [-71.001821359808204, 42.265866766605029], [-71.00219038069126, 42.265751866616185], [-71.002744399871744, 42.266111600518876], [-71.003360805616495, 42.266136775784645], [-71.003699349124219, 42.26584284730054], [-71.003391752780914, 42.265776244929143], [-71.003083880831639, 42.265358519109078], [-71.002837893573357, 42.265272464997317], [-71.001545001960665, 42.265357971783253], [-71.00102154829014, 42.265043470411705], [-71.001021802947818, 42.26471872912542], [-71.001391473604059, 42.264397393065231], [-71.001607665397003, 42.264033165164847], [-71.001578331462426, 42.262754595283191], [-71.001949067182295, 42.261910450804706], [-71.003181176401995, 42.261591676000634], [-71.003365507782746, 42.261408449613164], [-71.003365970594572, 42.260993767864093], [-71.003026677972954, 42.261108170058506], [-71.002379875131368, 42.261425609868674], [-71.001363434466697, 42.261722805027574], [-71.001177903495417, 42.261995964186589], [-71.001177108039556, 42.262635812494423], [-71.001054021356339, 42.262890155825183], [-71.001114393556307, 42.264104668701982], [-71.00086752006095, 42.264424376958331], [-71.000590729287296, 42.264510413721517], [-71.000037317539608, 42.264537805900225], [-70.999448933618339, 42.265064175785881], [-70.999067291113604, 42.265211603208904], [-70.998602454257295, 42.265287811618393], [-70.998021449142882, 42.265308861476612], [-70.997449376236204, 42.265517932575229]]], [[[-70.825961710558914, 42.26487410656754], [-70.825819597168376, 42.26461722006286], [-70.82529547759701, 42.264094204366323], [-70.824556346860618, 42.263980109541656], [-70.823848062619234, 42.264099195594298], [-70.823663864017462, 42.263822971621707], [-70.822862726864116, 42.263772603748215], [-70.822463086981784, 42.263887288646892], [-70.820953173466023, 42.263911051499882], [-70.817104493072506, 42.263566901767881], [-70.816611918861838, 42.263340600634443], [-70.813409487292006, 42.262769507490596], [-70.81260813486378, 42.26286374900431], [-70.811992467212718, 42.262656858256342], [-70.811622526799709, 42.262446485753905], [-70.811284334571098, 42.261902551602063], [-70.811037854471749, 42.261095281295873], [-70.810884295651235, 42.26078266687054], [-70.81026803607682, 42.260621409633217], [-70.809867365368902, 42.260619002159153], [-70.809529065283527, 42.260732300172023], [-70.809406200441131, 42.260895870854178], [-70.809097481962297, 42.26091931287214], [-70.808758913638115, 42.260545890523744], [-70.80725048842001, 42.259930249775884], [-70.807034381056937, 42.259753382028222], [-70.806787850450206, 42.259288765787282], [-70.806449547658787, 42.259014914145133], [-70.805864665671592, 42.258835275836745], [-70.804263323970588, 42.258950459317326], [-70.80349323566206, 42.25926882792438], [-70.80260094393455, 42.259292132254522], [-70.802138324639898, 42.25908278639276], [-70.802076989890068, 42.258786385956725], [-70.801830293088386, 42.258538466555237], [-70.801799561462403, 42.258214701986873], [-70.801984460391068, 42.257779167325985], [-70.801861319595204, 42.257438544977184], [-70.800229622287802, 42.256365144957392], [-70.799306366769684, 42.256046650264778], [-70.796442955894989, 42.256271598208329], [-70.79570378738471, 42.255977340745616], [-70.795641854551775, 42.255770425475156], [-70.795827188496787, 42.255353449746693], [-70.795395295786051, 42.255306323839257], [-70.794872811578486, 42.25472015339318], [-70.794534475141717, 42.254031574274933], [-70.794071911812495, 42.253453150799864], [-70.794103371642706, 42.253272648195725], [-70.794503640507713, 42.252653881451494], [-70.794934916098342, 42.252493391176202], [-70.795334996783794, 42.252424361328217], [-70.79585832290708, 42.252704423336965], [-70.796721000911418, 42.252655151088852], [-70.797121208947019, 42.252432519693222], [-70.797706191817483, 42.252333101941957], [-70.798321606348367, 42.252035254891027], [-70.798568530179935, 42.252040185011673], [-70.798691925539288, 42.252245763650542], [-70.798691920147391, 42.252749947504043], [-70.798475328213883, 42.253113797584625], [-70.797521144026589, 42.253939596879043], [-70.797533525974842, 42.254156381732905], [-70.798314216085728, 42.253917436722617], [-70.798492015731796, 42.253872426408918], [-70.798831291455812, 42.253844698037149], [-70.799163303531486, 42.253794326080147], [-70.799441388211036, 42.253743714155583], [-70.799618431529282, 42.253756048413031], [-70.799733908206022, 42.253790515112946], [-70.799818281501373, 42.253854052689142], [-70.799879577824072, 42.253911237214467], [-70.800002176074159, 42.254003188020121], [-70.800102142074792, 42.254037559775703], [-70.800241076542136, 42.254043988678262], [-70.800302842141761, 42.254003850336161], [-70.800434048102829, 42.253952880988663], [-70.800511470453017, 42.25397649114835], [-70.800610682542299, 42.254068208781931], [-70.800656651215377, 42.254119717477799], [-70.800710177881612, 42.254211156732183], [-70.800755699681915, 42.254303177436903], [-70.800793277141835, 42.254423239982145], [-70.800854117958608, 42.254554788310493], [-70.800891938121268, 42.254674852293562], [-70.800959890605384, 42.254886843165771], [-70.801033983143284, 42.255069610702137], [-70.801769677505931, 42.255449433880464], [-70.801861585642129, 42.255907449402883], [-70.8020468891321, 42.25613869980257], [-70.802786240847126, 42.256297958212564], [-70.802415722922404, 42.256025069122522], [-70.802508819807301, 42.255032392953943], [-70.802786934571031, 42.254604805761794], [-70.803340839551353, 42.254235612329467], [-70.80420274723275, 42.253915640509092], [-70.804633917698126, 42.253575497852914], [-70.805711093477726, 42.253549424966891], [-70.8064809211849, 42.254077978504348], [-70.806727468362553, 42.254073795437719], [-70.80712797540852, 42.253644055785792], [-70.80758995168442, 42.253366660809618], [-70.80814418403375, 42.253141498783108], [-70.809498957100416, 42.252840752310817], [-70.809714153037106, 42.252955127530107], [-70.810206202539831, 42.253865705162632], [-70.810114338189365, 42.255101482848623], [-70.809836686603717, 42.255835831746019], [-70.809405489390102, 42.256112880618304], [-70.808512275177193, 42.256180611205657], [-70.808112725858351, 42.256322256560999], [-70.806912104477078, 42.257602483081165], [-70.80709612262234, 42.258374543832339], [-70.807805003444244, 42.257831870868856], [-70.807958189379406, 42.257621757595942], [-70.808020437339621, 42.257071222818361], [-70.808173741758353, 42.256816723825416], [-70.809005236589812, 42.256497072986853], [-70.809713839139874, 42.2564771165544], [-70.810021580613679, 42.256841888156508], [-70.810083206928198, 42.25728170786082], [-70.809775348056704, 42.257350263157321], [-70.809128993502611, 42.257351417628001], [-70.809035796144258, 42.257595655729553], [-70.809898309832562, 42.258312101223254], [-70.80989883648499, 42.258564195887217], [-70.809282437186397, 42.258907115312383], [-70.809282165144367, 42.259087719219202], [-70.809528610453498, 42.259272598016295], [-70.810945005055856, 42.259268232006107], [-70.81106901175427, 42.258608856656821], [-70.81143853184804, 42.257963468235296], [-70.811715371447676, 42.257715827616607], [-70.812515826353021, 42.25744152190461], [-70.812515575047172, 42.257252451783074], [-70.812146044632911, 42.257141028941959], [-70.811376580252684, 42.257162346037894], [-70.811068828219575, 42.256753102155585], [-70.810821980198739, 42.255747756042538], [-70.810760988377226, 42.254235380249703], [-70.810915237610573, 42.252566198502038], [-70.811500020947634, 42.252494349457152], [-70.811745855511361, 42.252265069686317], [-70.812485642444287, 42.252181180032522], [-70.812669949144507, 42.251881214013153], [-70.812977891526657, 42.251578656397101], [-70.812977541260196, 42.251398588757752], [-70.811900280847581, 42.251190643845625], [-70.811716102115696, 42.251400576662725], [-70.811808022641017, 42.251651508865848], [-70.81177733694696, 42.251877037094431], [-70.811038060637713, 42.251969928515692], [-70.810729831645688, 42.251740745642479], [-70.810668347596589, 42.251399332286312], [-70.81091515892399, 42.251080117130819], [-70.810822516677206, 42.250595094538291], [-70.809961100673647, 42.250554447299912], [-70.809560164893952, 42.250849145060421], [-70.808082105504297, 42.251079913914914], [-70.807528349121228, 42.251052446391043], [-70.807251296273478, 42.25135400552756], [-70.807004426507561, 42.25146622709871], [-70.806327285594293, 42.251539746060637], [-70.805988404211732, 42.251743152932995], [-70.805619119662822, 42.251812316049545], [-70.805218989853401, 42.251467230313359], [-70.805250160289191, 42.250304284580061], [-70.805127225224339, 42.250099346036372], [-70.80491030928404, 42.249800924452856], [-70.804910460566006, 42.2493231209085], [-70.804787171897786, 42.249117549573199], [-70.804325403382748, 42.248836820779623], [-70.804295040082877, 42.248567078297768], [-70.804756497906723, 42.248334707910189], [-70.80506435202679, 42.248428855593794], [-70.805987876299199, 42.249180004564536], [-70.806110865056525, 42.249457599063533], [-70.806882323719393, 42.250098701519967], [-70.807127721548611, 42.250320133051162], [-70.807405794609153, 42.250279675574276], [-70.807589573983492, 42.250096216807734], [-70.807650468605104, 42.249802266694324], [-70.807496575739762, 42.249435535037335], [-70.807619557489531, 42.249226410223898], [-70.808974050253241, 42.247943770170622], [-70.808943558785998, 42.24758399557107], [-70.807773986048247, 42.247170090575963], [-70.807157921399067, 42.246161426853966], [-70.806695929694072, 42.245979652203815], [-70.806141874082826, 42.246348860936749], [-70.805710933901281, 42.246418821982431], [-70.804886757640148, 42.245507292841602], [-70.80417124421291, 42.245494494941461], [-70.803885928903611, 42.245489974146949], [-70.803685474331303, 42.245503974001629], [-70.803524163829707, 42.24548444864498], [-70.803393502476013, 42.245465649248196], [-70.803284083796811, 42.245520625588277], [-70.803167390599967, 42.245564933778475], [-70.802987810101641, 42.245642082194571], [-70.802778678420154, 42.245684748297947], [-70.802707295514068, 42.245751839447294], [-70.802689211227047, 42.245831588831933], [-70.802648902230615, 42.245893826847201], [-70.802585997364091, 42.245950255499835], [-70.802530432463627, 42.245989352353291], [-70.80251325748776, 42.246063525189918], [-70.802424953433771, 42.246181652069609], [-70.802315525740326, 42.246237257667616], [-70.802115707317085, 42.246314281729468], [-70.801954310209155, 42.247765621606085], [-70.801584851219616, 42.248402068096439], [-70.801584710086459, 42.24874473252823], [-70.802078416685148, 42.248611065040336], [-70.802323775568439, 42.248723927113673], [-70.802386060275154, 42.249065350264836], [-70.802015710373169, 42.249936418313148], [-70.801831976153679, 42.250070350442265], [-70.801585641934508, 42.250254499953591], [-70.801308980506562, 42.25027649520375], [-70.80124702898722, 42.250070122893149], [-70.800168797848016, 42.249757983528774], [-70.800199892049477, 42.24918088201462], [-70.800046366549765, 42.249048227905021], [-70.799798866049244, 42.248997830744209], [-70.799368303310331, 42.249436905400017], [-70.798721385391914, 42.25003275485215], [-70.797551298785748, 42.250005974280135], [-70.797120682143941, 42.249868829472405], [-70.79702902012005, 42.250091639953119], [-70.797460265789383, 42.25059846412389], [-70.79746042884689, 42.251075639577742], [-70.796475062529709, 42.251469711837629], [-70.795427776414286, 42.252134574839623], [-70.795370510807402, 42.252314829183049], [-70.794909801365336, 42.252343512207183], [-70.794473764563051, 42.252104497300166], [-70.793733726841197, 42.252774113480491], [-70.793548965716965, 42.25338916199653], [-70.792841123867291, 42.253940757536768], [-70.792101929223122, 42.254303626527268], [-70.791670670805317, 42.254211473995312], [-70.790777472803597, 42.254072621212259], [-70.790346846346637, 42.253772851658148], [-70.789700143722953, 42.253710871330462], [-70.789391600577545, 42.25379674417092], [-70.789176311229426, 42.253682870291996], [-70.789269463845301, 42.252951929304587], [-70.789515600703865, 42.252497705943306], [-70.789639137708676, 42.252017874657653], [-70.7905630130399, 42.251102460052827], [-70.790441003252852, 42.250050570972647], [-70.79016243236785, 42.24973427361352], [-70.789453757269058, 42.249637065624867], [-70.789115473263436, 42.249750843891043], [-70.788531330233681, 42.250089350732445], [-70.787884183847325, 42.250577188725742], [-70.787022619715813, 42.250572381572162], [-70.786314116969592, 42.250889847391647], [-70.786037038368647, 42.250894336888578], [-70.785851867794321, 42.250690070697431], [-70.785822036496427, 42.250347759637833], [-70.78600668394111, 42.250092854214053], [-70.786128964080049, 42.249661996279848], [-70.785913066231828, 42.249593128804349], [-70.785574606089241, 42.248905061267173], [-70.785113095882892, 42.249092428165206], [-70.784712724391582, 42.249134410645752], [-70.78440490529087, 42.248932168779504], [-70.784374973845274, 42.248427797024014], [-70.784898188048913, 42.247969637843973], [-70.785421483595755, 42.247825962327312], [-70.786160708026969, 42.247328086931958], [-70.787330313770099, 42.246940378681813], [-70.787853409677041, 42.246662271525437], [-70.787792113774586, 42.246347855897106], [-70.787731122284583, 42.245952502359813], [-70.787546189771149, 42.245523067369064], [-70.787300716197123, 42.244238571863974], [-70.787424573416843, 42.243848867126609], [-70.788070934501619, 42.242982887496161], [-70.788440585653404, 42.242824290249814], [-70.791025959563427, 42.242847039651203], [-70.79118037046382, 42.242637496037354], [-70.790164233172561, 42.242130452778468], [-70.789856935067832, 42.241883211815271], [-70.789825807809308, 42.241514423574394], [-70.790041442606977, 42.241312642692826], [-70.790442430217794, 42.241081035906447], [-70.792320255457767, 42.241016100093383], [-70.793489985724733, 42.240853323118856], [-70.79392039887702, 42.240621885368093], [-70.794136708695021, 42.240140458126525], [-70.793890198008469, 42.239819864557631], [-70.793643434755126, 42.239706975324978], [-70.792505319272237, 42.239850771570822], [-70.792289800438141, 42.240097574343892], [-70.791088714793275, 42.24021566902347], [-70.790904333984415, 42.240028791755002], [-70.790842415151289, 42.239660983903477], [-70.790965743563859, 42.239478258186104], [-70.790996553084028, 42.239117775621295], [-70.790904149236837, 42.238929845786437], [-70.790627017675376, 42.238727269405658], [-70.790209755589757, 42.238639158404773], [-70.790201239792282, 42.237419696353015], [-70.790751485004421, 42.237013446624083], [-70.790750894434311, 42.23680636659018], [-70.791366741491089, 42.236481008963338], [-70.791674640676717, 42.236098017492331], [-70.79192070595758, 42.236022377286176], [-70.792844406238842, 42.236097847686722], [-70.792905715733255, 42.235934545029842], [-70.792567399466975, 42.235732676631763], [-70.791581799075288, 42.235450825905509], [-70.790535947647044, 42.235313817854362], [-70.79010501681276, 42.234879624016735], [-70.789612420818074, 42.234878196844754], [-70.788288983741964, 42.235132805154372], [-70.787826853885605, 42.234770345766123], [-70.787949935431456, 42.23371438879942], [-70.788196828062198, 42.233305728563856], [-70.788720480788911, 42.233054000902236], [-70.789243133034574, 42.232955951272913], [-70.789584601158893, 42.232863530427331], [-70.789796094542965, 42.232661184025069], [-70.789828593005325, 42.232063744108451], [-70.789675111547112, 42.231381422243565], [-70.78967474855105, 42.230462449900273], [-70.789398595137285, 42.228998328823209], [-70.789214649661417, 42.228775977771441], [-70.788598433929096, 42.228524568127149], [-70.788229231470012, 42.228521198531581], [-70.786720930684368, 42.228679476093042], [-70.786659040669065, 42.228473725495938], [-70.786813749118707, 42.228020558592959], [-70.786905834901404, 42.22746967625546], [-70.786782844681454, 42.227192689488703], [-70.786753025710794, 42.22668831706391], [-70.786230259321798, 42.225660306376945], [-70.785394820990675, 42.225656817803419], [-70.785412341036945, 42.225456602481351], [-70.785515314961771, 42.225294643229716], [-70.785830127236238, 42.225038296840907], [-70.786152411987118, 42.225021755152973], [-70.786514526792431, 42.225319406817576], [-70.786660190169187, 42.225551068049469], [-70.786802871824989, 42.225703301063724], [-70.787206706745067, 42.225857156254463], [-70.787499942279965, 42.225892739746527], [-70.787822000045011, 42.225864397560969], [-70.788142984091351, 42.22580219524793], [-70.788455198172258, 42.225711847238379], [-70.788833163363591, 42.225494148445534], [-70.788950973840997, 42.22531544185864], [-70.788902901044523, 42.224989853235293], [-70.788788829207419, 42.22451142895909], [-70.788476661014045, 42.22329233193517], [-70.79713219612826, 42.218118692671823], [-70.826911838356608, 42.200873537834717], [-70.840671768706471, 42.213157458950541], [-70.853402230383196, 42.239614575236381], [-70.841142394254149, 42.243393217586139], [-70.841235290711154, 42.24463278025069], [-70.849217494063581, 42.247382167571523], [-70.848800500232514, 42.247738222493233], [-70.848314733086298, 42.248123686066769], [-70.848283781044074, 42.248564669770623], [-70.84819335120018, 42.24932159999684], [-70.848211030181076, 42.250124070098579], [-70.848219242071366, 42.250668813335579], [-70.848433838504505, 42.251118573306066], [-70.848686742223762, 42.251590968232605], [-70.848823325021044, 42.251955834305249], [-70.848819977862888, 42.252281552775557], [-70.848724136501787, 42.252539312264119], [-70.848484988700775, 42.253038805731897], [-70.848049732629391, 42.253316515946452], [-70.847716971710227, 42.2536792573094], [-70.847240279176347, 42.254237540233497], [-70.847136308491443, 42.2545070463839], [-70.847072847437929, 42.254879239717795], [-70.846978904716892, 42.255269176082578], [-70.846820003402186, 42.255459050908875], [-70.846619305024134, 42.255929498779693], [-70.846005952384274, 42.257067707746401], [-70.845479026928388, 42.25828464393495], [-70.84500318075186, 42.259330267456001], [-70.844809043655005, 42.25971458841434], [-70.844564709995709, 42.260522314779614], [-70.844181897973314, 42.260480784844276], [-70.843850442370211, 42.260465926593753], [-70.843311953820134, 42.260476353047245], [-70.842581243993251, 42.260532943577886], [-70.841943806298701, 42.260641292465486], [-70.841444742501224, 42.260753222530923], [-70.840977006191153, 42.260882796520917], [-70.840518195574305, 42.261097860602945], [-70.84025205602731, 42.261340049401149], [-70.840003016759681, 42.261650850507756], [-70.839813296570497, 42.261863586757428], [-70.83950994579655, 42.262163450471569], [-70.83928235338179, 42.262427736602014], [-70.839240576537776, 42.262714519377013], [-70.839182856991371, 42.262949351740687], [-70.838954830040933, 42.263196798655294], [-70.838772480890299, 42.263329626874039], [-70.838558670469013, 42.263457321805674], [-70.837642647578306, 42.264007361224337], [-70.836955134670632, 42.264356230282203], [-70.836504720200381, 42.26463389936832], [-70.836106705369133, 42.264768898285411], [-70.835569654223946, 42.264892917778631], [-70.83530036119673, 42.264900902733181], [-70.826763079491414, 42.264390921907442], [-70.826257224457351, 42.264532006936683], [-70.825961710558914, 42.26487410656754]]], [[[-71.122927731843319, 42.351379877909082], [-71.122889196243207, 42.351695392789082], [-71.106464584682968, 42.349735703613739], [-71.107058743853216, 42.347148321187028], [-71.105564939286353, 42.343902159756389], [-71.10594985752661, 42.343576494059931], [-71.106252725168218, 42.343349667944487], [-71.106553663970686, 42.343042348390497], [-71.106756312179513, 42.342811216665588], [-71.106974170180209, 42.342573384384984], [-71.107346451227755, 42.342345622246285], [-71.107690106014729, 42.342232638404944], [-71.107981739367546, 42.342171693076651], [-71.10822190637542, 42.341916468831513], [-71.108403247078058, 42.341753953807483], [-71.108731884077898, 42.341635243868538], [-71.109129247705511, 42.341509924442526], [-71.109418356332995, 42.341346063583252], [-71.109630914228021, 42.34121741359327], [-71.109820484052719, 42.341077341526045], [-71.109986295628985, 42.340932777125971], [-71.110158739509757, 42.340735838006943], [-71.110360403111954, 42.340464183424672], [-71.110479200533348, 42.340268232372239], [-71.110610561491185, 42.339963118366285], [-71.110790413306731, 42.339429134144964], [-71.110885384068098, 42.338884239123118], [-71.111001034258479, 42.338567817772407], [-71.111482333316076, 42.337417071492993], [-71.111431377832673, 42.337217754664167], [-71.111312148741987, 42.337070513973842], [-71.111200668854792, 42.336906373866583], [-71.111164664051742, 42.336683429767021], [-71.110958501667611, 42.336445865397316], [-71.11074674994218, 42.336288677824633], [-71.110830812085425, 42.335938388557821], [-71.110917807259995, 42.335702986453178], [-71.110591512812718, 42.335249484685747], [-71.111923479041465, 42.333926597441661], [-71.112390086797092, 42.333462270123988], [-71.112658309319073, 42.33307550807443], [-71.112783487619836, 42.332844644532443], [-71.113226178603441, 42.332042623310478], [-71.113371396398179, 42.331668949994388], [-71.113334243897398, 42.331394775796127], [-71.113273848400866, 42.33113177704368], [-71.115222096398512, 42.326965994519519], [-71.115513165039872, 42.326565797484299], [-71.115764420676754, 42.326148000907224], [-71.115881846441965, 42.325910985817579], [-71.11612298411778, 42.324460067129586], [-71.116237655142641, 42.324096370978182], [-71.11637081591897, 42.32386444948753], [-71.116597611407315, 42.323716657623081], [-71.116991941597803, 42.323490017714825], [-71.118289428757294, 42.323093702832672], [-71.118712843484928, 42.322790178421833], [-71.119255358636565, 42.322673227958781], [-71.119971226982855, 42.322699274832807], [-71.121447790230022, 42.323654498105078], [-71.123169915018877, 42.322497066672263], [-71.123577029801552, 42.32276740864485], [-71.124467818875715, 42.321509280063765], [-71.13040199877544, 42.314636758136338], [-71.13235774125873, 42.312177931404378], [-71.132581301957401, 42.31180052206448], [-71.134321296228862, 42.309096180621609], [-71.136345507914029, 42.306168807536118], [-71.139971633709848, 42.302222790145073], [-71.146793853173534, 42.297331760283321], [-71.152022153573526, 42.29455561992522], [-71.164524227136837, 42.303843987686044], [-71.166000487018721, 42.304486328048085], [-71.169872415384631, 42.307707610729707], [-71.178942346374427, 42.314263863312277], [-71.170118689425621, 42.320593234459466], [-71.170536063543906, 42.321399113189131], [-71.169241830227918, 42.321823035011562], [-71.169334752733377, 42.322102933232138], [-71.167108051959701, 42.322755969980477], [-71.156721740011761, 42.330219811368465], [-71.149754615065163, 42.334525774808874], [-71.150340836333726, 42.335005253637007], [-71.149994050994223, 42.335354231421029], [-71.14828300241048, 42.335767104431241], [-71.148630919197458, 42.336789998174233], [-71.146133600449204, 42.337357894283926], [-71.146504676117303, 42.338466393046971], [-71.146211921844895, 42.338563984299995], [-71.144200838435964, 42.339959979937419], [-71.141864864674687, 42.340057971063288], [-71.14174973070682, 42.340395761349541], [-71.141618857354459, 42.340641222706729], [-71.141449331704464, 42.340875939949669], [-71.14132627629867, 42.341047691583341], [-71.14109499935077, 42.341236030757187], [-71.140100929405875, 42.342013924891305], [-71.133397056096641, 42.347070378420845], [-71.129281136329254, 42.349066537259375], [-71.129150263910404, 42.349238340536282], [-71.129003817775541, 42.349375162204161], [-71.12878027168567, 42.349558369773], [-71.128579811347933, 42.349695646712114], [-71.128410145541423, 42.349838514579297], [-71.126853045717425, 42.350090684805465], [-71.126575146324555, 42.350227616906132], [-71.126220749505066, 42.350411024696129], [-71.125889271494856, 42.350577040355759], [-71.125526936236056, 42.350788599219058], [-71.124810457597249, 42.351200396604419], [-71.124453222326508, 42.351389911644404], [-71.124030609395632, 42.351530956364087], [-71.122927731843319, 42.351379877909082]]], [[[-70.91703790016075, 42.269033991605781], [-70.917315006599438, 42.268875591769465], [-70.917899784902588, 42.268965257857339], [-70.918546905546492, 42.268945488055692], [-70.919347438347145, 42.26848137397446], [-70.920641360877937, 42.268144078234165], [-70.921041556243651, 42.267659925660865], [-70.921349676255588, 42.267501672479895], [-70.923012605956416, 42.267410464739051], [-70.924522311391797, 42.267519865938745], [-70.925446231147106, 42.267891911214946], [-70.925938576781761, 42.268189767134437], [-70.926030532544331, 42.268395678876757], [-70.926061639734556, 42.268989412622503], [-70.925292446105786, 42.269678268844324], [-70.924613618313415, 42.269878611207062], [-70.922673800689296, 42.2702447577282], [-70.921534145314993, 42.270570429181234], [-70.919223501514125, 42.271528317457985], [-70.918546205891715, 42.27175555127468], [-70.918115074598816, 42.271735901544623], [-70.917098321719081, 42.270951431869946], [-70.916667804560348, 42.270246999257651], [-70.91703790016075, 42.269033991605781]]], [[[-70.785147547293576, 42.239388781658178], [-70.784235737341575, 42.23942640548394], [-70.785763614445543, 42.238865922401615], [-70.785671099240844, 42.238678527753237], [-70.785394477218858, 42.238475311557735], [-70.785024681015841, 42.238336878468736], [-70.784408927013644, 42.238445582877162], [-70.78422462339789, 42.238286245317596], [-70.784162718095445, 42.237395160515966], [-70.783085450196054, 42.236799259283082], [-70.782870546304224, 42.236550325263892], [-70.782532393407649, 42.236411451458181], [-70.782116293601959, 42.236458368041987], [-70.784476691197625, 42.234643180195668], [-70.786739309785645, 42.234076548520036], [-70.786657566922941, 42.234374861001299], [-70.786657415247504, 42.235131139634142], [-70.786842030424481, 42.235380958773625], [-70.787365356081565, 42.235796111385845], [-70.787518849822462, 42.236432969156311], [-70.788873114941339, 42.236187023727915], [-70.789457860304822, 42.236204690282108], [-70.789550902396329, 42.236464651961711], [-70.789457801480083, 42.236663859391136], [-70.789550558107749, 42.237608701946222], [-70.789642188966994, 42.237832641452009], [-70.789549747604354, 42.238221462693751], [-70.789672931973939, 42.238516543596852], [-70.789580692550132, 42.239049419391783], [-70.788502867718961, 42.239111348782529], [-70.788071860063198, 42.238974166749863], [-70.787087063612503, 42.239070512288357], [-70.786286976793377, 42.238956960187828], [-70.785147547293576, 42.239388781658178]]], [[[-70.911124979908493, 42.267133415123745], [-70.911464106930708, 42.267019282817422], [-70.912110722930336, 42.267404689281499], [-70.913558253255403, 42.267642211574753], [-70.91361941185194, 42.268027949562843], [-70.914050742255256, 42.268534328617143], [-70.913896497123631, 42.269077692949054], [-70.913218170678988, 42.269259874319793], [-70.912294582299864, 42.269419459307905], [-70.912017665003404, 42.269190171647672], [-70.911155255957127, 42.268988223347648], [-70.910847251984876, 42.268687288243342], [-70.910723983753201, 42.268347416322705], [-70.910416475651061, 42.268045852321293], [-70.910416564975947, 42.2677757576297], [-70.911124979908493, 42.267133415123745]]], [[[-70.94749608997509, 42.262607226846256], [-70.948111783579719, 42.262443629283013], [-70.948697099910419, 42.26246948901823], [-70.949004958372711, 42.262581255302479], [-70.949005110783645, 42.263149084686283], [-70.948635860130054, 42.263308738821131], [-70.946110383985484, 42.263171711022345], [-70.94749608997509, 42.262607226846256]]], [[[-70.793146866421253, 42.258440321705379], [-70.793147057235117, 42.258260257231285], [-70.792684825389173, 42.258258491098189], [-70.792623360131543, 42.258097223770456], [-70.792870133062166, 42.257867989669471], [-70.793239196999764, 42.257366708362682], [-70.793824742257897, 42.257069241380385], [-70.793824692114526, 42.257573965152218], [-70.793732131864488, 42.257755712317689], [-70.793823929331438, 42.258555858433112], [-70.793146820929977, 42.259107104468505], [-70.792900225143924, 42.259200660778276], [-70.792623811674119, 42.258718993262335], [-70.793146866421253, 42.258440321705379]]], [[[-70.92411885508632, 42.28063372318698], [-70.923132679612323, 42.279875931947267], [-70.923256184560813, 42.279693608334291], [-70.924395982939146, 42.28016974001374], [-70.926151882478209, 42.280518394448137], [-70.926059381854358, 42.280745261506318], [-70.92559757582751, 42.280879170500974], [-70.924673299633156, 42.280885798575916], [-70.92411885508632, 42.28063372318698]]]]}, "type": "Feature", "id": 10, "properties": {"COUNTY": "NORFOLK", "AREA_ACRES": 261462.20000000001, "OBJECTID": 11.0, "FIPS_ID": 25021}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-70.883341422227616, 42.308214743696723], [-70.883250970659546, 42.305882990116267], [-70.882912796384701, 42.304690511524669], [-70.882636377639955, 42.303658798913112], [-70.881775479494408, 42.301673481516971], [-70.881283443122726, 42.30061854679623], [-70.880852960202645, 42.30006703684402], [-70.880513828188825, 42.299451284969884], [-70.880021214661781, 42.298855591169414], [-70.879867632378549, 42.298488964784461], [-70.879652105684869, 42.29833024634555], [-70.87949822794566, 42.298080748672923], [-70.879314172847486, 42.297804618516658], [-70.878728321972289, 42.297048519285632], [-70.878236356708015, 42.29615571707739], [-70.878236790736381, 42.295975656522884], [-70.877775874037141, 42.295244446747084], [-70.877713937460499, 42.295056125572202], [-70.877528968055145, 42.294924037710693], [-70.876236391349281, 42.292927871030216], [-70.875651955266065, 42.292171852630673], [-70.875652665772009, 42.29182919642777], [-70.875498803178687, 42.291507577703506], [-70.875129241997271, 42.2911713709914], [-70.875098727346511, 42.290982678906971], [-70.874852757521055, 42.290779309818568], [-70.874483923512798, 42.290272045109823], [-70.873391435762755, 42.288857096645309], [-70.873020924895499, 42.288484774961688], [-70.872619733334332, 42.287941854577085], [-70.870953819944191, 42.285329118279584], [-70.870829973196194, 42.285151167577311], [-70.869597409755542, 42.283756840863788], [-70.869473838766424, 42.28355188059485], [-70.868918392318704, 42.282957411677287], [-70.868825751544364, 42.282751540206611], [-70.867500237922229, 42.281349926633261], [-70.867161285041206, 42.281103263400773], [-70.864355426852995, 42.278103754166089], [-70.862382921951948, 42.276875139276356], [-70.860657854181056, 42.275641655474175], [-70.860440876687491, 42.275158776418721], [-70.858438180400739, 42.273695840781407], [-70.856404546283088, 42.271612105160678], [-70.856065748806145, 42.271454900701805], [-70.855172026984519, 42.270496626388869], [-70.852768494528689, 42.268914295848589], [-70.850364772378057, 42.267953134819834], [-70.850057350516465, 42.267931138086617], [-70.848856471908618, 42.268436978494542], [-70.847902083297939, 42.268641428096529], [-70.847163228499767, 42.268644522835949], [-70.846208827437522, 42.268344237830256], [-70.845560990613791, 42.268372689273889], [-70.843128299884214, 42.267961487895917], [-70.842358081879382, 42.267541850950323], [-70.841403342082586, 42.26747614784626], [-70.840048760926308, 42.267731715618581], [-70.83992471055943, 42.267887388695598], [-70.83998761357789, 42.268597924669997], [-70.839740385591995, 42.26887164206412], [-70.839279368213909, 42.268897170649197], [-70.83817073665756, 42.268464754191292], [-70.837492790290312, 42.268601565536976], [-70.8373077936578, 42.268487417605009], [-70.837246096899605, 42.268209041890181], [-70.837030530854136, 42.267888723200961], [-70.836259888613, 42.26743248954908], [-70.834504347973805, 42.266910765704004], [-70.833210797825885, 42.266652342137725], [-70.832656552470922, 42.266634447308356], [-70.832225509298738, 42.266703967448095], [-70.831239833935086, 42.26725138998259], [-70.830778244941328, 42.267664560347875], [-70.83040891851148, 42.267823295272066], [-70.829392037805448, 42.267731290633954], [-70.828869130878445, 42.267523412238781], [-70.827821558110131, 42.266657476251211], [-70.826928077945723, 42.266293283703511], [-70.826466061516939, 42.26578693350902], [-70.825961710558914, 42.26487410656754], [-70.826257224457351, 42.264532006936683], [-70.826763079491414, 42.264390921907442], [-70.83530036119673, 42.264900902733181], [-70.835569654223946, 42.264892917778631], [-70.836106705369133, 42.264768898285411], [-70.836504720200381, 42.26463389936832], [-70.836955134670632, 42.264356230282203], [-70.837642647578306, 42.264007361224337], [-70.838558670469013, 42.263457321805674], [-70.838772480890299, 42.263329626874039], [-70.838954830040933, 42.263196798655294], [-70.839182856991371, 42.262949351740687], [-70.839240576537776, 42.262714519377013], [-70.83928235338179, 42.262427736602014], [-70.83950994579655, 42.262163450471569], [-70.839813296570497, 42.261863586757428], [-70.840003016759681, 42.261650850507756], [-70.84025205602731, 42.261340049401149], [-70.840518195574305, 42.261097860602945], [-70.840977006191153, 42.260882796520917], [-70.841444742501224, 42.260753222530923], [-70.841943806298701, 42.260641292465486], [-70.842581243993251, 42.260532943577886], [-70.843311953820134, 42.260476353047245], [-70.843850442370211, 42.260465926593753], [-70.844181897973314, 42.260480784844276], [-70.844564709995709, 42.260522314779614], [-70.844809043655005, 42.25971458841434], [-70.84500318075186, 42.259330267456001], [-70.845479026928388, 42.25828464393495], [-70.846005952384274, 42.257067707746401], [-70.846619305024134, 42.255929498779693], [-70.846820003402186, 42.255459050908875], [-70.846978904716892, 42.255269176082578], [-70.847072847437929, 42.254879239717795], [-70.847136308491443, 42.2545070463839], [-70.847240279176347, 42.254237540233497], [-70.847716971710227, 42.2536792573094], [-70.848049732629391, 42.253316515946452], [-70.848484988700775, 42.253038805731897], [-70.848724136501787, 42.252539312264119], [-70.848819977862888, 42.252281552775557], [-70.848823325021044, 42.251955834305249], [-70.848686742223762, 42.251590968232605], [-70.848433838504505, 42.251118573306066], [-70.848219242071366, 42.250668813335579], [-70.848211030181076, 42.250124070098579], [-70.84819335120018, 42.24932159999684], [-70.848283781044074, 42.248564669770623], [-70.848314733086298, 42.248123686066769], [-70.848800500232514, 42.247738222493233], [-70.849217494063581, 42.247382167571523], [-70.841235290711154, 42.24463278025069], [-70.841142394254149, 42.243393217586139], [-70.853402230383196, 42.239614575236381], [-70.840671768706471, 42.213157458950541], [-70.826911838356608, 42.200873537834717], [-70.79713219612826, 42.218118692671823], [-70.788476661014045, 42.22329233193517], [-70.788788829207419, 42.22451142895909], [-70.788902901044523, 42.224989853235293], [-70.788950973840997, 42.22531544185864], [-70.788833163363591, 42.225494148445534], [-70.788455198172258, 42.225711847238379], [-70.788142984091351, 42.22580219524793], [-70.787822000045011, 42.225864397560969], [-70.787499942279965, 42.225892739746527], [-70.787206706745067, 42.225857156254463], [-70.786802871824989, 42.225703301063724], [-70.786660190169187, 42.225551068049469], [-70.786514526792431, 42.225319406817576], [-70.786152411987118, 42.225021755152973], [-70.785830127236238, 42.225038296840907], [-70.785515314961771, 42.225294643229716], [-70.785412341036945, 42.225456602481351], [-70.785394820990675, 42.225656817803419], [-70.784322584677057, 42.22550104060722], [-70.783921174021529, 42.225497996374962], [-70.783552789769388, 42.225134392827897], [-70.783552998001298, 42.224837283670539], [-70.783890949558852, 42.224742066855733], [-70.78422952134467, 42.224538182517726], [-70.784137840528132, 42.224332784488709], [-70.78370703120946, 42.22417703934677], [-70.783306776065544, 42.224147530279353], [-70.782721810378902, 42.224426940787176], [-70.783060117458277, 42.224610832442679], [-70.782197914901744, 42.224993126856639], [-70.781613803849694, 42.225110476824142], [-70.780967202074478, 42.224724325134545], [-70.780905768204093, 42.224491023526326], [-70.781214081277085, 42.224125438302863], [-70.781183821766803, 42.223738735132258], [-70.780875327368733, 42.223554484478981], [-70.780599111516352, 42.223738942541573], [-70.780382634968461, 42.224102851011658], [-70.78010608133998, 42.224124705246219], [-70.779798156118915, 42.223922448568445], [-70.77982944950891, 42.223534960822469], [-70.779922012541164, 42.222893512555629], [-70.779983799759833, 42.222369995067801], [-70.779614484837793, 42.221889328953203], [-70.778814963336544, 42.221703699661653], [-70.778107057408761, 42.221408350011281], [-70.777798662813893, 42.221376608400135], [-70.778014056625892, 42.221842176919985], [-70.778414512436783, 42.221980286311087], [-70.779060424402374, 42.222114354556673], [-70.779368217366653, 42.222316612519812], [-70.779337212264096, 42.222614608929014], [-70.779152525852695, 42.222941531184247], [-70.779089890635873, 42.224518975142416], [-70.778135641874343, 42.224993575508144], [-70.777920533935685, 42.225203800986478], [-70.777858925711953, 42.225412111014961], [-70.778505048073995, 42.225339106342702], [-70.780044263839983, 42.224810822961452], [-70.780536540160952, 42.22481219965394], [-70.780875206337072, 42.224996100015623], [-70.779858979928008, 42.225200765942915], [-70.779458726631503, 42.225522374160278], [-70.779458469919433, 42.22574745629263], [-70.78189024865307, 42.225547698976307], [-70.782228718820434, 42.225749600737579], [-70.782383273377633, 42.22595431304125], [-70.782598572823389, 42.225726073807245], [-70.782813573538988, 42.225641885852838], [-70.78392174787821, 42.226047744236467], [-70.785090988751392, 42.226281828304479], [-70.785368041824171, 42.226484958677112], [-70.785366895974974, 42.226737045143388], [-70.785644044943538, 42.227426445898793], [-70.785613717943406, 42.227741914259404], [-70.78530571164967, 42.227629705621432], [-70.784997457296129, 42.227625534702177], [-70.784782056147378, 42.227809301203116], [-70.784628194861952, 42.227423989555327], [-70.784136404339918, 42.227152533285611], [-70.783736277584879, 42.227356573377385], [-70.78419747116186, 42.227602000924534], [-70.784443463580132, 42.228174616926914], [-70.784628160358622, 42.228360967085699], [-70.785151735449205, 42.228479022121725], [-70.78544310284461, 42.228874732498973], [-70.785551195374836, 42.229022249914458], [-70.785582207943222, 42.229688689998525], [-70.785642990200728, 42.230057034743091], [-70.786196676371546, 42.230030678711714], [-70.786382841560865, 42.229829261352151], [-70.787859384654098, 42.229761364367967], [-70.788167203633989, 42.229891571524519], [-70.788290638549768, 42.230421282950623], [-70.788259972233817, 42.230854333194749], [-70.788228402948036, 42.232133781036232], [-70.788043305098185, 42.232434244571444], [-70.787503411661618, 42.232988560541791], [-70.787340038734271, 42.233155728441027], [-70.787138296778565, 42.233362722397928], [-70.787015400020039, 42.233582540606065], [-70.786878783028101, 42.233826492389568], [-70.786739309785645, 42.234076548520036], [-70.784476691197625, 42.234643180195668], [-70.782116293601959, 42.236458368041987], [-70.782552649837058, 42.236858953482653], [-70.782817652543415, 42.237102529030217], [-70.783087589980838, 42.237284912139543], [-70.783233904637257, 42.237438882473633], [-70.783454614907285, 42.237667594507158], [-70.783454661475474, 42.238199330994121], [-70.782807347413382, 42.240101201954502], [-70.782531278895561, 42.240555765113584], [-70.782714921262922, 42.240688091212398], [-70.782961106245054, 42.240711507386663], [-70.783207411388403, 42.241013576569102], [-70.784839748197967, 42.24085323521998], [-70.785116668818489, 42.240740708058993], [-70.785270545923339, 42.24055826866568], [-70.786101249420483, 42.240257325239448], [-70.78742521475661, 42.239912171569898], [-70.788195062598305, 42.239936035134072], [-70.788133573006249, 42.240189457347768], [-70.787425165846344, 42.240714006792544], [-70.786840270044806, 42.240921412167125], [-70.786008149649845, 42.241465981902714], [-70.785300859777493, 42.241791912075861], [-70.78486974905735, 42.24211388672974], [-70.782898936415805, 42.242243934300106], [-70.780959427300374, 42.24222000732027], [-70.778743426467258, 42.242226902649925], [-70.777850675314639, 42.242385060233701], [-70.776803612909902, 42.242707629652692], [-70.775756807358007, 42.242084302328557], [-70.775510284711046, 42.241835785442333], [-70.77541905365517, 42.241188590662574], [-70.774403356097153, 42.240708959780619], [-70.774341954376411, 42.24054768213319], [-70.774373246979465, 42.240259143169119], [-70.774649681313335, 42.240074071232307], [-70.774895981055067, 42.240097595498447], [-70.77548101466752, 42.240485101579964], [-70.776065512891037, 42.240601871167144], [-70.776342449442723, 42.240850038478541], [-70.776589001307357, 42.240873020475483], [-70.776558488372984, 42.240648285193537], [-70.776096697854314, 42.24020538119867], [-70.776065757339808, 42.24000765303483], [-70.776865882076123, 42.239724589981115], [-70.776958821657402, 42.239543398244763], [-70.774742738411518, 42.239523205247657], [-70.774034572846929, 42.23888570431339], [-70.773911663075964, 42.238446014400708], [-70.773912102911098, 42.23787880737067], [-70.773881067210084, 42.237690081214517], [-70.773696634101682, 42.237512809092088], [-70.773357581179326, 42.238743039360344], [-70.773111424093571, 42.239404846372103], [-70.772771728206081, 42.239707187412677], [-70.77224871060524, 42.239661106785086], [-70.771940770455686, 42.23947683649665], [-70.771663245660235, 42.239471654606106], [-70.771510046661675, 42.239960823895231], [-70.772001870183047, 42.239980240240108], [-70.772463562260668, 42.240576847159538], [-70.771755506025713, 42.2411013029283], [-70.771908954251231, 42.241603041576468], [-70.772248296588671, 42.241237767586291], [-70.772586347955695, 42.241259087412161], [-70.772771285150611, 42.24144590786792], [-70.772709410842424, 42.241716786164524], [-70.772185737452361, 42.242148417863099], [-70.772215605115051, 42.244580585611914], [-70.772860716216513, 42.245975687122645], [-70.772737580523639, 42.246410487787983], [-70.772429811766727, 42.246387739935479], [-70.771967171077833, 42.246502930434545], [-70.771751638212237, 42.246794711499376], [-70.770150861443696, 42.246639411891977], [-70.770151045146122, 42.246297286775089], [-70.769843123673382, 42.246382570892735], [-70.76984298441198, 42.246752246465533], [-70.769996132124049, 42.246974882242817], [-70.77064366685201, 42.247136016019368], [-70.770735418551425, 42.247386981280563], [-70.770365665785874, 42.248032330511847], [-70.770396402655948, 42.248257068667073], [-70.770919576135199, 42.24828515156878], [-70.77125864107866, 42.248189978526376], [-70.771257856690966, 42.247847217168299], [-70.771504889563374, 42.247735703349448], [-70.771689101187206, 42.247849953861788], [-70.771658213956115, 42.248418137438158], [-70.77119662877557, 42.250178687845263], [-70.771257790274902, 42.251024847528015], [-70.771473190164997, 42.251895034356096], [-70.772365383178482, 42.252853962778843], [-70.772488352947335, 42.253131593849112], [-70.772087876008328, 42.254065939833964], [-70.771625870034228, 42.25416312655554], [-70.771102303813265, 42.25352227945325], [-70.769993412214959, 42.253701512591931], [-70.769470503477564, 42.254088119979571], [-70.769409114988264, 42.254251499580356], [-70.768792787771531, 42.25427854739862], [-70.768484778290002, 42.254409924395219], [-70.767838054120361, 42.254455860445596], [-70.767037279425324, 42.254639280445168], [-70.766575090280895, 42.254384776345852], [-70.766638044069637, 42.254023965553351], [-70.76734625736448, 42.252904693466931], [-70.76790186062702, 42.251733935498727], [-70.767871361268831, 42.251185078880532], [-70.766270253484436, 42.251164683578338], [-70.763898931216588, 42.251318316171229], [-70.763653217693545, 42.251042769413239], [-70.763592751332411, 42.250062099847838], [-70.763837217477516, 42.249745760365599], [-70.763867750597285, 42.249078539745476], [-70.764177185537108, 42.248415988071891], [-70.765070266661894, 42.247456102187904], [-70.765101770763053, 42.246797980842231], [-70.765255732435648, 42.246426408656745], [-70.765225378048925, 42.245417841562372], [-70.765534242921504, 42.244989909113443], [-70.765534659758075, 42.244755284995975], [-70.765257546614649, 42.244597664011863], [-70.765442354225328, 42.244000125200451], [-70.764950811199995, 42.243295799222196], [-70.764242780568708, 42.242766278856436], [-70.763319007297284, 42.242284888214208], [-70.762211136436875, 42.242328911905652], [-70.762026367476125, 42.242494285937795], [-70.761718051202521, 42.242562079261234], [-70.76153387292392, 42.242447812636357], [-70.761072281087209, 42.242400995947861], [-70.761041618256129, 42.242058671688483], [-70.761687754962381, 42.241553510499045], [-70.761534184273486, 42.241069223357528], [-70.760980512181433, 42.240960411019564], [-70.760797710143123, 42.238900259491011], [-70.760798225174, 42.238305501831931], [-70.760337698441944, 42.236934566769051], [-70.759968697996229, 42.236318249897032], [-70.759598957332955, 42.235558503563041], [-70.758953767347379, 42.234442425722904], [-70.758615840898329, 42.233978821495391], [-70.758277323275152, 42.233317678748833], [-70.757539428813985, 42.232238717346071], [-70.756894018820248, 42.231374719472569], [-70.756801813788471, 42.231096728877866], [-70.754372361940867, 42.227890898581414], [-70.754126507960493, 42.227597321719692], [-70.750713964089499, 42.224667542039072], [-70.750190758273447, 42.223819517727719], [-70.749484243252567, 42.223037187427266], [-70.747367118590347, 42.220801196037648], [-70.746504600416259, 42.220390923396181], [-70.744104259081595, 42.219860232692703], [-70.741764925269678, 42.219265250234926], [-70.740348658222516, 42.218746020899978], [-70.739178860208895, 42.218169435872355], [-70.738408710532028, 42.217649422359642], [-70.737546011072752, 42.21652727127627], [-70.73585241276912, 42.214787350999565], [-70.733019628418603, 42.212614384013222], [-70.730680101395038, 42.211217236634106], [-70.728649264801305, 42.210536267717679], [-70.72526296209702, 42.209713226893008], [-70.723632554396403, 42.208818789525765], [-70.722554906156901, 42.208339352135951], [-70.721570933316386, 42.208092918687392], [-70.720893434973959, 42.20806698168888], [-70.720370502020387, 42.208156254673256], [-70.719601761080057, 42.208528091899808], [-70.718955279772402, 42.208726810062196], [-70.718401846022886, 42.20873537577355], [-70.717878114664799, 42.2085449853341], [-70.717324592337732, 42.208138937027741], [-70.715877449266898, 42.206538778040255], [-70.715723538418871, 42.206352075043164], [-70.71544627305461, 42.205662496430051], [-70.715322598993708, 42.204862595077955], [-70.715107266269612, 42.204316413908963], [-70.71563064072258, 42.204434247015939], [-70.717261411337248, 42.205094713570446], [-70.718462249010713, 42.205986407996626], [-70.71907800649781, 42.206598873331437], [-70.719662088417977, 42.207040684738644], [-70.721292853189269, 42.207286394773838], [-70.722339227939088, 42.20694631997376], [-70.723200182643296, 42.206329745410741], [-70.72359948344679, 42.205891820383698], [-70.72399998382123, 42.205137701482826], [-70.724030201326045, 42.204588156156618], [-70.723783303892986, 42.203834699203988], [-70.723844392882512, 42.203167147540064], [-70.724121159401236, 42.202874697373119], [-70.725074646552059, 42.202419175852256], [-70.726796737618571, 42.200906964142504], [-70.726919006618061, 42.200283759872917], [-70.727042711133294, 42.200128743953826], [-70.727072650409909, 42.199758634220416], [-70.726549686659524, 42.198983064470212], [-70.725194252914562, 42.198021262902799], [-70.724087275569062, 42.197083004161627], [-70.723532765624569, 42.196812029621121], [-70.723563819328291, 42.196352433728265], [-70.723779093665328, 42.196105755667062], [-70.723808822699709, 42.195348586692468], [-70.723685257281829, 42.195116451834579], [-70.723193447629839, 42.194799082053699], [-70.72322330399578, 42.194249533487941], [-70.723315281659296, 42.193995808812012], [-70.723746786057617, 42.193611041220393], [-70.725960548626801, 42.19296532859174], [-70.725130274975967, 42.192851681124523], [-70.723868520144123, 42.193032852951482], [-70.723623094184859, 42.192964206281857], [-70.723068529841669, 42.192918225006473], [-70.722392351111878, 42.193261986486043], [-70.722053973481721, 42.193239974390934], [-70.72205353309559, 42.192969867753625], [-70.721838416586138, 42.19262177548346], [-70.721807664448917, 42.192414487352934], [-70.722176816106582, 42.192148058100962], [-70.722853046113272, 42.191552201465065], [-70.723098587790815, 42.191116657050152], [-70.723129667760247, 42.190773565740322], [-70.722974820685323, 42.19028912113798], [-70.723436244418508, 42.189831989666601], [-70.723497143878774, 42.189624151982954], [-70.72312851298787, 42.189602568330919], [-70.722820318273023, 42.189490187985783], [-70.722729211125653, 42.189860963303637], [-70.722421471893256, 42.189928654176683], [-70.722113924606816, 42.189743708442805], [-70.722052130281284, 42.189510819970586], [-70.721067973298943, 42.189056848353808], [-70.720912969018343, 42.18821226108588], [-70.72063595700358, 42.187937484025973], [-70.720297577204107, 42.18788845612309], [-70.720298374576657, 42.188690310061972], [-70.720267115054938, 42.188987752045811], [-70.720636395845133, 42.18926153632912], [-70.721313609453972, 42.189629605894694], [-70.721652627165369, 42.189903721559467], [-70.72211398952939, 42.190725625940892], [-70.722145046858898, 42.191184472737461], [-70.721652618193502, 42.191137735419936], [-70.720821774897061, 42.190402813915618], [-70.720544336142055, 42.19029009619814], [-70.720360499203366, 42.190589922436125], [-70.721437883428806, 42.191528558671692], [-70.720945653365277, 42.191869598633481], [-70.720638126037443, 42.192234400329454], [-70.721006976401966, 42.192328021026455], [-70.72103879058929, 42.192507766027461], [-70.720731308573519, 42.192809544061348], [-70.719778506025904, 42.193769767906353], [-70.718117096941739, 42.194938537451378], [-70.718117490238313, 42.195397716367914], [-70.718210048863824, 42.195648733342111], [-70.718363981540946, 42.195871447446301], [-70.71891819752949, 42.196124528349252], [-70.719194981890283, 42.196174221107398], [-70.720056189440825, 42.195990467458351], [-70.720825082853111, 42.1959878600221], [-70.721133851435724, 42.196262851635659], [-70.721256735977846, 42.196540001873771], [-70.721748830632961, 42.196992343701112], [-70.722671720758967, 42.197545560985027], [-70.722703179060147, 42.197725302900459], [-70.722456469333935, 42.197819247465738], [-70.720764320243035, 42.197907973229015], [-70.719535151304825, 42.198295228244362], [-70.719134690397624, 42.19855360290061], [-70.719042620946269, 42.198960382188204], [-70.718735517791728, 42.199532801049301], [-70.718458478600823, 42.199807229484911], [-70.71719733886718, 42.200357384332193], [-70.716705743953767, 42.200698410533278], [-70.716244389022549, 42.200884871977877], [-70.714735933552049, 42.200222976175567], [-70.714489829706224, 42.199875198535011], [-70.714212954087387, 42.198942525526427], [-70.714243382060317, 42.198050311584538], [-70.715258137774313, 42.197017359181899], [-70.716026272820145, 42.195852702617479], [-70.716117891396749, 42.192995271064824], [-70.715840266182354, 42.192378346906992], [-70.71583982965511, 42.192080689456297], [-70.715347167137892, 42.190799908700413], [-70.715315862628444, 42.19017908565322], [-70.715622957604907, 42.18972363031903], [-70.715961930675164, 42.189421540824092], [-70.717376218469425, 42.189355210900423], [-70.717929538402799, 42.188969045157144], [-70.718329182611228, 42.188349990257421], [-70.718821352905096, 42.187432739147695], [-70.718943640949647, 42.186566448068263], [-70.718974151620841, 42.185376487508229], [-70.718665366229914, 42.184066089812966], [-70.718110769458534, 42.182831084980293], [-70.717833694279904, 42.182358133731498], [-70.717495741693597, 42.181786358369877], [-70.717156676471092, 42.181305239343217], [-70.715833263548134, 42.1799102019746], [-70.715063130314604, 42.176633877143807], [-70.714539707502709, 42.175101320786901], [-70.714601034231762, 42.173569526770599], [-70.715031367713237, 42.172842020243422], [-70.715153676593033, 42.171056204376391], [-70.714999140870546, 42.169518429671449], [-70.714845309896702, 42.169205585217263], [-70.714844915881216, 42.168376720403465], [-70.714998046856493, 42.167464453892478], [-70.715151261189376, 42.1670930279817], [-70.715642723905162, 42.166526919781269], [-70.716749897795339, 42.165474326849278], [-70.717333030534704, 42.165195779280474], [-70.718224967657321, 42.165038091075893], [-70.718470933123783, 42.165358311882933], [-70.718440829877068, 42.165719327106295], [-70.717703075208021, 42.165856730883618], [-70.71745736569676, 42.165977141525438], [-70.717119070208398, 42.166450847070202], [-70.716042708596291, 42.167457556241935], [-70.716104774226437, 42.167762929137638], [-70.716996021159147, 42.167164164159075], [-70.719118045858067, 42.166862343777048], [-70.721424398911864, 42.167071063875554], [-70.721669851089757, 42.167139086178985], [-70.72163962324619, 42.167689264585235], [-70.720963913576711, 42.16862725110586], [-70.721024940087219, 42.169265743273399], [-70.721302637942571, 42.169478131260284], [-70.722071338849645, 42.169583468188065], [-70.721456094309772, 42.168926539030529], [-70.721517219171844, 42.168600577464595], [-70.721977958478192, 42.168098428851593], [-70.722561929607153, 42.167297117666571], [-70.723976047691735, 42.167203697874363], [-70.724437651237906, 42.167341333477488], [-70.724652901126078, 42.167553831164639], [-70.724806903632938, 42.168074193861599], [-70.725391763678871, 42.168813101532457], [-70.726006994295091, 42.169037841820867], [-70.727575497737149, 42.169338781834291], [-70.728159575321428, 42.169329750183664], [-70.728712955902239, 42.169177623759687], [-70.729450822561105, 42.168743124904665], [-70.729973348431955, 42.168599698521795], [-70.730280962629138, 42.168712686984229], [-70.730773135773205, 42.169425554568221], [-70.730927618537223, 42.169810949543113], [-70.731173824523879, 42.170158064311011], [-70.731419689102154, 42.170343743816446], [-70.731943522866686, 42.171092832151793], [-70.731974522272282, 42.171281572648766], [-70.732189520408227, 42.171458039964506], [-70.732527913465034, 42.172029775437856], [-70.732682033937195, 42.172486562911317], [-70.733236216269972, 42.173541425864798], [-70.734098195735868, 42.174708634679497], [-70.734559882355214, 42.174845689193582], [-70.735390354107935, 42.174824219479483], [-70.735728096985284, 42.174891116008155], [-70.735912525798938, 42.175185588109294], [-70.736343068086398, 42.175557598443604], [-70.736712354236005, 42.175669179228521], [-70.737450555025063, 42.175369683463686], [-70.737972977441203, 42.175298337624454], [-70.738465056689805, 42.175435488254259], [-70.738988764898394, 42.175922901407318], [-70.739634031897793, 42.175822561729063], [-70.740955906109249, 42.175298404443787], [-70.741263432111168, 42.175392725216497], [-70.741878015367234, 42.174861084083226], [-70.742124633995005, 42.174541920921989], [-70.742124565805156, 42.174334840788234], [-70.741847165893105, 42.174059571757425], [-70.74160111520527, 42.173946481727597], [-70.741508174481325, 42.173398366194789], [-70.741385157928775, 42.173219733913243], [-70.740831064742295, 42.173056795343811], [-70.740615417673339, 42.172871426517816], [-70.740953946068558, 42.172649661725131], [-70.740984374409251, 42.172352208484412], [-70.740246497957571, 42.172507673450525], [-70.740093557276069, 42.172645133316678], [-70.74003271406545, 42.172924918025046], [-70.740124050310527, 42.17313089246661], [-70.740831562803436, 42.173399560649621], [-70.740923803956292, 42.173560523072915], [-70.740556166342301, 42.174980096175069], [-70.739757195710339, 42.17543334826339], [-70.7390491366329, 42.175390386930985], [-70.738557700142934, 42.1750281564114], [-70.73812754255637, 42.174935804684623], [-70.736589456491672, 42.175139407333845], [-70.736220292560787, 42.174595660400371], [-70.736158283472619, 42.174317220190609], [-70.735697161686502, 42.173972555819198], [-70.735081306206737, 42.17379288145159], [-70.734097604509685, 42.17365468424714], [-70.733728575879439, 42.173452971843211], [-70.733604593014135, 42.17326595138249], [-70.733635628367495, 42.172760793783645], [-70.734096408173315, 42.172600729587515], [-70.734096124338322, 42.172122913264474], [-70.733850173896926, 42.171532172677125], [-70.733787673679075, 42.170884585324224], [-70.733910598197056, 42.170567493903647], [-70.733356850329443, 42.170449538563872], [-70.733203052528864, 42.170586983621689], [-70.733604017612748, 42.172211370501728], [-70.733266226135356, 42.172280059602933], [-70.732804164126676, 42.171575237897606], [-70.731881111955246, 42.170129581930702], [-70.731819432839771, 42.169905792351855], [-70.731511074522217, 42.169513785212033], [-70.73114159253322, 42.16876284862942], [-70.730803224981784, 42.168371178413565], [-70.730157721842716, 42.168146890890597], [-70.72914342794364, 42.168143947449323], [-70.728589145664145, 42.168440755868438], [-70.728220698182085, 42.168851896475644], [-70.727636735565667, 42.168941330317438], [-70.726714529607207, 42.168829323300692], [-70.726037345303695, 42.168623346041223], [-70.725637580216059, 42.168286887444289], [-70.72548358878916, 42.167983149976784], [-70.725636691720013, 42.167367985254771], [-70.725882837015249, 42.167211005951039], [-70.727205070177604, 42.16711917681814], [-70.727850750160997, 42.166929411879174], [-70.728772491099008, 42.166888347535988], [-70.729387830484725, 42.166455816135866], [-70.729602365082457, 42.16592092008441], [-70.730708779552785, 42.165400024666056], [-70.73132288119703, 42.164967474429957], [-70.731691734047985, 42.164529316126632], [-70.732000127540473, 42.16432655303187], [-70.732368524260409, 42.163915399974002], [-70.732521296727384, 42.163381255360093], [-70.732951586912122, 42.163014991989542], [-70.733013133774278, 42.162518591159362], [-70.733135587442803, 42.162219414012831], [-70.733535094011728, 42.161825932289268], [-70.734088001432426, 42.161826836442032], [-70.735380386826137, 42.162815763053182], [-70.736088103078629, 42.16358910864961], [-70.736733987736727, 42.163588368558521], [-70.737656657803626, 42.163727309013069], [-70.738086709552789, 42.163630589314977], [-70.739839010745598, 42.162856667441204], [-70.740514592151243, 42.162396295099036], [-70.74122117551255, 42.161781444370433], [-70.741958238434009, 42.161409884707034], [-70.743034931691213, 42.161366849623761], [-70.744162830538627, 42.161413726695542], [-70.744475856874885, 42.161427044411099], [-70.745010671949856, 42.161575163657176], [-70.745576853144996, 42.161670636373643], [-70.745806177226513, 42.161874183337183], [-70.746263856407481, 42.162281719416988], [-70.746509958193528, 42.162764483045152], [-70.746541095646975, 42.163016244851264], [-70.746911219189258, 42.163695017901894], [-70.747434212101183, 42.164362458434113], [-70.748203952769074, 42.164909427631237], [-70.748953226557617, 42.165070188581304], [-70.749495473099998, 42.165186913114965], [-70.749494567316177, 42.164700719710872], [-70.74897208333833, 42.164591507445252], [-70.748295344608991, 42.16399842518738], [-70.747433114497269, 42.162669257574429], [-70.746632147766135, 42.161870610647682], [-70.746632577154116, 42.161681540408615], [-70.746385717032879, 42.161639942463893], [-70.746140007702806, 42.161409818682536], [-70.745555769709171, 42.161184309676273], [-70.744048676624175, 42.160837831559874], [-70.742512097430605, 42.160752869975177], [-70.741742864679352, 42.160566634567658], [-70.74032797302344, 42.160426086618656], [-70.739529302570048, 42.160546299997584], [-70.738975456986154, 42.160725485543956], [-70.737777246747342, 42.161365236102519], [-70.737347292457287, 42.161434944760167], [-70.736424199598744, 42.161052364294285], [-70.73568634136393, 42.160522994022095], [-70.733533215111976, 42.159636990525073], [-70.733010582684855, 42.15954571096686], [-70.732426192018934, 42.159518120411917], [-70.732364739151166, 42.159726499995571], [-70.732765044024205, 42.160116870275999], [-70.732796331167151, 42.160341626813398], [-70.732274032592841, 42.160412409078774], [-70.73171921891371, 42.159880277084156], [-70.73135039499661, 42.159858717316951], [-70.730243995151568, 42.160227189614545], [-70.729722234091625, 42.160712124734495], [-70.729138563508627, 42.162009206499647], [-70.729139569987922, 42.162793057512658], [-70.729415334869515, 42.162815709475701], [-70.730184254617214, 42.1623088465374], [-70.730276243093641, 42.16258686182622], [-70.729784426641373, 42.163315092522872], [-70.729293446580172, 42.163664639831978], [-70.728402300419305, 42.16411953445774], [-70.727971614070512, 42.164207210176166], [-70.727571297147222, 42.164185966559302], [-70.726895193165262, 42.163934893664894], [-70.725695879487063, 42.163727642627158], [-70.725234368565239, 42.163455500233383], [-70.72477314688264, 42.163318500397637], [-70.723973961960596, 42.162861748167877], [-70.723112235018547, 42.162631364624801], [-70.723050864301811, 42.162425038676091], [-70.722405055067696, 42.162173604079086], [-70.72111400755314, 42.162355083973203], [-70.71905457100334, 42.162953311960244], [-70.718808564426794, 42.162912200580791], [-70.718438628087512, 42.162881588290922], [-70.718131499212944, 42.162517103031604], [-70.718469092457056, 42.162196359156972], [-70.719207418843666, 42.16196954976084], [-70.719422735011008, 42.161740886646307], [-70.719422828941873, 42.161398754087763], [-70.719238324795839, 42.161149361059017], [-70.719329925888786, 42.16080560075865], [-70.719636533486749, 42.160503819920358], [-70.720005481639205, 42.160416835932004], [-70.721297314415921, 42.160730566819289], [-70.72191276276169, 42.160712867123827], [-70.72151272748917, 42.160394398398452], [-70.720743410575977, 42.160072428263241], [-70.719606241962978, 42.160044434865917], [-70.719083714733543, 42.160250748391498], [-70.718776341179051, 42.16073259269762], [-70.718807911713483, 42.161579137435396], [-70.718284599111897, 42.161631842205075], [-70.717762305122136, 42.161513484913044], [-70.717024301233806, 42.161380687129558], [-70.7158552732906, 42.160893260108516], [-70.714963827376394, 42.159870932817491], [-70.714810210982534, 42.159503527842602], [-70.71425678282219, 42.159341003977829], [-70.713918232879095, 42.158859245882326], [-70.713363405614786, 42.158039001212224], [-70.713179377162561, 42.157392816332646], [-70.71305550363148, 42.155701555613092], [-70.712901499120193, 42.155406173187849], [-70.712808451040416, 42.154488885743213], [-70.712624095550296, 42.153987383860802], [-70.712408994756601, 42.153711298680243], [-70.712285886196369, 42.153208506290952], [-70.712409171731878, 42.153053502436542], [-70.712777754100046, 42.15300309362857], [-70.713484172570134, 42.152659056397795], [-70.714990433808708, 42.151879863154498], [-70.71597353077027, 42.151811232237122], [-70.716528263710188, 42.151902269383939], [-70.717450111175751, 42.152365495077966], [-70.717756864815854, 42.152657952404915], [-70.717819247588537, 42.152819271003921], [-70.718188609651335, 42.152822961305333], [-70.718648466590864, 42.15247378915889], [-70.719049172191433, 42.152152393433916], [-70.720093457850325, 42.151722292641701], [-70.719386242919256, 42.151426574816341], [-70.719109901568771, 42.151700920527382], [-70.718587499661965, 42.151745259137357], [-70.718371493561506, 42.151541207166936], [-70.718279291504089, 42.151010991274141], [-70.717818588949385, 42.150810941350009], [-70.717233872601156, 42.150738252881126], [-70.716558023348497, 42.150442191378694], [-70.716465994476053, 42.150948010540397], [-70.716311652656614, 42.151130357165258], [-70.715143451503849, 42.151247333023221], [-70.714191102046954, 42.15154017527292], [-70.713822491078957, 42.15190625195919], [-70.713084451722509, 42.152205596755799], [-70.712070244070262, 42.152274619125855], [-70.711731998546014, 42.152045494929524], [-70.711885583055079, 42.15122380872495], [-70.711362788989945, 42.150627690742745], [-70.710102382413368, 42.149646630460254], [-70.709763649077772, 42.149759630843107], [-70.709856003822296, 42.150028752842942], [-70.711301954912599, 42.151268233364739], [-70.711147267147524, 42.152090451453176], [-70.711732206778265, 42.152613258494178], [-70.711055809888649, 42.15284836889299], [-70.710810459475965, 42.152573152806077], [-70.708381331839803, 42.150698884534712], [-70.706843973039625, 42.149731091009166], [-70.706505072798834, 42.14850201360467], [-70.706412574544245, 42.148061820522685], [-70.706135546515128, 42.147904050859538], [-70.70601271500793, 42.148293143255884], [-70.706105865075742, 42.148526259825928], [-70.70613642308291, 42.149642909977906], [-70.705552551484203, 42.149804259527642], [-70.705060616766005, 42.149802559486872], [-70.704691657261549, 42.149555734053351], [-70.70459934984784, 42.149323252441917], [-70.704537545372403, 42.148549149508327], [-70.704414762708012, 42.148335003480938], [-70.703984140851276, 42.148268988860252], [-70.703522968713045, 42.147330497523605], [-70.70349223892903, 42.146375908515637], [-70.703738188774821, 42.146029900651982], [-70.704352288590144, 42.145867599845069], [-70.704506140306719, 42.146054320827204], [-70.704536780791543, 42.146351110160822], [-70.704752763907351, 42.146465153226266], [-70.705121140317104, 42.145819993826336], [-70.705397060573333, 42.145707742180143], [-70.705735259529831, 42.145684696402071], [-70.705950379005898, 42.145780724156225], [-70.706074148828662, 42.146283528971843], [-70.706474079149956, 42.14652939414669], [-70.707149315394119, 42.146528484918854], [-70.707641546139257, 42.146233061441997], [-70.708593983824812, 42.146074787173596], [-70.709208896004938, 42.145642359899469], [-70.709608115893118, 42.145158922631069], [-70.709853914940567, 42.145064909844898], [-70.710868761679109, 42.145023012605328], [-70.710775765414795, 42.144834918610215], [-70.710377350352815, 42.144651563417376], [-70.709577789005664, 42.144582486994551], [-70.709239387522302, 42.144768056555556], [-70.708871039508423, 42.145385678334144], [-70.708593659726105, 42.145615604472361], [-70.707702774116612, 42.145844621858522], [-70.707426443041953, 42.145776895431105], [-70.707180380891444, 42.145591161235565], [-70.707026082969307, 42.145323408922515], [-70.706964871421377, 42.144954920638426], [-70.707180236869789, 42.144537205730487], [-70.706627215873667, 42.144383109753555], [-70.706688803310811, 42.143995303303903], [-70.706934417762696, 42.143577167932783], [-70.707025922149924, 42.14321540845679], [-70.706688352703594, 42.143121416241371], [-70.706319271354971, 42.143486835744298], [-70.706134925694798, 42.144084294644941], [-70.706135725888672, 42.144562028183117], [-70.706350949823374, 42.144765558243392], [-70.706350114981248, 42.145045202477974], [-70.706227863995323, 42.145272325541811], [-70.705981056784623, 42.145320675650083], [-70.704905449782132, 42.14522876570171], [-70.703245364344639, 42.145253251398977], [-70.702876776382141, 42.144979501694721], [-70.702722730511709, 42.144423541669028], [-70.702477680672345, 42.144129851720891], [-70.702446432406163, 42.143670453360585], [-70.702907597492981, 42.143555985270055], [-70.70315302225552, 42.143309013932559], [-70.703183312743192, 42.142524745621365], [-70.703398759870737, 42.142044013268965], [-70.704105671294798, 42.141655019414578], [-70.704197949145723, 42.141473878561889], [-70.703429536548015, 42.141548491760808], [-70.70296812035815, 42.141770912696479], [-70.702261717336413, 42.142484571126786], [-70.702169477009875, 42.143143438786133], [-70.701247426667422, 42.142571503592642], [-70.700202491642798, 42.142478682434863], [-70.697897108409279, 42.141522239642661], [-70.695591161727208, 42.139718330879752], [-70.694177670138728, 42.138072543356976], [-70.69377773348711, 42.137177837533777], [-70.693747510599906, 42.136881047451844], [-70.693039593100565, 42.135207073319286], [-70.69257844595154, 42.134610129636307], [-70.691503280892476, 42.13381527663946], [-70.689689632220365, 42.132986022169128], [-70.689013491825349, 42.132121937554544], [-70.688798506019452, 42.131935842470199], [-70.688276555054145, 42.130953007025191], [-70.688030052893211, 42.130659184409247], [-70.68790724000533, 42.130246400257796], [-70.687139065913513, 42.128573039696946], [-70.686279065485621, 42.126631164670307], [-70.68612453835641, 42.127750473488], [-70.6863333874239, 42.128413720085426], [-70.685879288980956, 42.128096449688286], [-70.685018668092937, 42.12768580038864], [-70.684311608045959, 42.127110121609206], [-70.684035936108529, 42.12674522407687], [-70.683912820067988, 42.126377450951288], [-70.683789292868397, 42.126145268811285], [-70.683575083758058, 42.125986179810376], [-70.683390694566725, 42.125511637006213], [-70.683297671386867, 42.125070878374885], [-70.683512166165258, 42.124680750828965], [-70.683266610420645, 42.124495597473164], [-70.682897480126158, 42.123951039220934], [-70.681637552685999, 42.122735565113388], [-70.681329902266455, 42.122208367387124], [-70.681145999238367, 42.120994898529418], [-70.681116196245426, 42.119554739537449], [-70.680993101435021, 42.11916895559979], [-70.680747230802822, 42.118776081322594], [-70.680409542227139, 42.118591883219167], [-70.680040566082056, 42.118480119263936], [-70.678442434916818, 42.1183864669255], [-70.678044105853814, 42.118094954071815], [-70.677828735417421, 42.117449650658784], [-70.678811371328877, 42.116219242586212], [-70.680041202709788, 42.115237114568629], [-70.680163869877518, 42.115046125595519], [-70.680194731388653, 42.114388452682718], [-70.679825205835868, 42.114087068033051], [-70.678996197384947, 42.113793014032431], [-70.678812340717371, 42.113516455758628], [-70.678872858946505, 42.113128653776094], [-70.680255500702458, 42.112369287667455], [-70.68056359869216, 42.112004594806685], [-70.680532750106877, 42.111527722832847], [-70.680317314567446, 42.110980922569411], [-70.680286819737958, 42.110729773605605], [-70.680255932924794, 42.110405962640435], [-70.680901618516657, 42.109441522408865], [-70.682744950693262, 42.107639920333256], [-70.683082799428803, 42.106905204240689], [-70.683021651691931, 42.106338620633061], [-70.683021508006163, 42.105644800760693], [-70.683450791202219, 42.10517012988781], [-70.685509855474919, 42.104302436161049], [-70.686277278809513, 42.104299967654924], [-70.686922713455445, 42.104939306016497], [-70.687568233332371, 42.105100369398023], [-70.687905542797978, 42.104960324272874], [-70.688488867071683, 42.104141258347731], [-70.688673385642645, 42.104480741321638], [-70.68901171682522, 42.1047999743502], [-70.68962571418173, 42.105034452469503], [-70.690117373832237, 42.104964190373337], [-70.690332644402872, 42.104798605260918], [-70.690301461542731, 42.103744962270646], [-70.690578326025516, 42.103660214387453], [-70.691284437377064, 42.103838521818204], [-70.693066266451495, 42.103929870629969], [-70.693004745107913, 42.104137690708633], [-70.692943732593861, 42.10439107260644], [-70.693035683739822, 42.104614559836165], [-70.694601922700727, 42.104870931994007], [-70.694878685858441, 42.104803640023349], [-70.696107280678461, 42.103767311079515], [-70.696598778990591, 42.103201821680081], [-70.69656709217486, 42.102418825629528], [-70.695922155904, 42.101734527102636], [-70.695799865749564, 42.101366771326866], [-70.695553852026805, 42.101460752044694], [-70.695584446959529, 42.10193752809365], [-70.696198839219832, 42.102532208313846], [-70.696291294371036, 42.102926765044543], [-70.695923226181407, 42.103292699397045], [-70.695830610681384, 42.103474372254261], [-70.694663398605201, 42.104437480580955], [-70.694172110748113, 42.104507764747424], [-70.693619227785177, 42.104363147193887], [-70.693619124588452, 42.104047479891008], [-70.693649513145857, 42.103768041686827], [-70.692359773706173, 42.103724020486069], [-70.692174551219239, 42.103609628888549], [-70.690822801372732, 42.10324219333399], [-70.690270482623603, 42.103178055762385], [-70.689933170756973, 42.103291006885875], [-70.689779362654761, 42.103861108287724], [-70.689840985539277, 42.104508723965822], [-70.689533473815871, 42.104531308370973], [-70.68904161762994, 42.104115281326898], [-70.688949487924631, 42.103954274596106], [-70.68842784743147, 42.103655711175314], [-70.688150949901356, 42.103704979397818], [-70.687936219970254, 42.103951056613688], [-70.687506148939391, 42.104641825279273], [-70.68719868268694, 42.10454735673833], [-70.68689201516267, 42.104182784528327], [-70.686338310694609, 42.103839506042682], [-70.685325208981226, 42.103908295081432], [-70.684403377095222, 42.104138079594762], [-70.683850653023072, 42.104434683251931], [-70.683052059709638, 42.104914555024386], [-70.682560435685843, 42.105507537279536], [-70.682376714902048, 42.105897343199175], [-70.682376312455844, 42.107159017389939], [-70.682099271777915, 42.107640353687671], [-70.680778991426337, 42.108758621720213], [-70.679671728670911, 42.110522158749554], [-70.679733618183647, 42.110935687833923], [-70.680071974687763, 42.111570614166787], [-70.680102121622724, 42.111867408991621], [-70.678873369631091, 42.112443842573029], [-70.678289358722779, 42.113010754070984], [-70.678197694451185, 42.113291459446373], [-70.678259258545282, 42.113795023003775], [-70.678413085339443, 42.113999788075546], [-70.679640854986161, 42.114522422903327], [-70.678136003283598, 42.116283096924249], [-70.677337428493047, 42.117222744098228], [-70.677336978386847, 42.117546870796133], [-70.677521860617929, 42.118183492886601], [-70.677798077358958, 42.118593969259926], [-70.6789347161574, 42.119100200325157], [-70.680163702852795, 42.119424127834165], [-70.680439866361738, 42.119690539574933], [-70.680470587817709, 42.120149402855823], [-70.680685114671064, 42.121659580621063], [-70.680562540775938, 42.122048649903846], [-70.680255073983801, 42.122557404667383], [-70.680254952452628, 42.123035224790016], [-70.680470217461249, 42.123167316958288], [-70.681053620182411, 42.123356602509332], [-70.681852572732879, 42.123975635275507], [-70.682068324332619, 42.124539900408209], [-70.682314910091421, 42.12507683411966], [-70.682417125430248, 42.125394940216928], [-70.682499224308643, 42.125650417738299], [-70.682652652399852, 42.125945839778218], [-70.682990927684926, 42.126445160620015], [-70.683236826507482, 42.126811018970393], [-70.683544029882725, 42.127112577797838], [-70.684465472759911, 42.128549539783968], [-70.687108821020672, 42.130907003873951], [-70.687538643744134, 42.131639342272535], [-70.687477050916996, 42.132576988414762], [-70.687599975213089, 42.132782691372732], [-70.68809204519593, 42.133198632564827], [-70.691687945683185, 42.135433890859098], [-70.691780166597468, 42.135639372530747], [-70.692179663851547, 42.13701244247774], [-70.692487378486859, 42.137223944142768], [-70.692486824074436, 42.137980779776328], [-70.693101644832325, 42.138890508850551], [-70.693193940762626, 42.139186025366669], [-70.693840025295358, 42.140131444279689], [-70.694700448310996, 42.140794753469798], [-70.69476185961372, 42.141046204207811], [-70.694608668957272, 42.141201519570558], [-70.694577016611504, 42.141426926310238], [-70.695161231074479, 42.141454169715914], [-70.695314481279908, 42.14170446432189], [-70.695130563634535, 42.141869198425823], [-70.695130734056164, 42.142094288554709], [-70.695284333771326, 42.142326668542722], [-70.695776455546067, 42.142480932503204], [-70.696022251167861, 42.14269370016072], [-70.69602214635141, 42.14335149914784], [-70.696422142200532, 42.143444339956162], [-70.696544611593126, 42.14362301876853], [-70.696606082657695, 42.145342587958318], [-70.696821226714178, 42.145961379260093], [-70.697436507611172, 42.147123185523668], [-70.697805486447791, 42.147901243860161], [-70.698174311414476, 42.148634732451534], [-70.698512851608854, 42.14916101647988], [-70.698605022596865, 42.149709166420934], [-70.69888228172708, 42.150173706608875], [-70.699589056110696, 42.150946736318417], [-70.70023456947014, 42.152117740591379], [-70.701249939251241, 42.1533994509292], [-70.702140795900519, 42.153962703808773], [-70.702848661956466, 42.154655318442757], [-70.702940865573041, 42.1549058075964], [-70.703617827497283, 42.155526624294225], [-70.704785974623448, 42.155914592731975], [-70.705523897662133, 42.156327119008573], [-70.706415624592168, 42.157349613438001], [-70.707214967765225, 42.15792344666967], [-70.707614503042521, 42.158061802087154], [-70.708107009900701, 42.15808096150591], [-70.70878319936304, 42.157440798389906], [-70.70949032639588, 42.157375899575875], [-70.710012069646893, 42.157233189082881], [-70.710596710210538, 42.15717023038934], [-70.710842966344671, 42.157373964903222], [-70.711211809955827, 42.158034840774143], [-70.711594988237891, 42.158633419547932], [-70.711120511333633, 42.158837776496078], [-70.7103205127422, 42.159003335317415], [-70.709860222676781, 42.159253432645357], [-70.709122183087359, 42.160029938737395], [-70.708630792404819, 42.160803101030297], [-70.707400467331098, 42.161721963495857], [-70.707124246369744, 42.162618154210833], [-70.706940037685698, 42.162890947092613], [-70.706417783604763, 42.163070194580044], [-70.705863906154988, 42.162817051874391], [-70.705524816746347, 42.162497958778616], [-70.704849450804502, 42.161471917581899], [-70.704571798145125, 42.160809313135474], [-70.704141355495892, 42.160095047499858], [-70.703833861699948, 42.15934282886316], [-70.702849398532919, 42.157583091015589], [-70.702449394247623, 42.157030553330458], [-70.701865795760327, 42.156047898101654], [-70.700450657094606, 42.154078147211756], [-70.700265985055879, 42.153945677442266], [-70.699743431448567, 42.153097408778137], [-70.699251417470606, 42.152294368559765], [-70.698082047002643, 42.150852379961655], [-70.697898183729848, 42.150494283099043], [-70.697590073097558, 42.150192758779156], [-70.697007059773412, 42.149327756976042], [-70.696422624064738, 42.14863371935553], [-70.695777047050228, 42.147724334901838], [-70.694055328823652, 42.145479360671807], [-70.693747872274656, 42.145186833638135], [-70.692826036186048, 42.143830982217899], [-70.692026912236415, 42.142959839274859], [-70.690981434913311, 42.141362795464161], [-70.690796570345285, 42.141221394885768], [-70.690120187031695, 42.140150234929912], [-70.689997354373759, 42.139945075931173], [-70.689628987635629, 42.139509220149463], [-70.68787691975902, 42.136607211963941], [-70.687200647379328, 42.135364966181868], [-70.687169682205123, 42.135185305302564], [-70.686677712417136, 42.134543641178894], [-70.686678204833768, 42.134363573147489], [-70.686186745674277, 42.133749011147401], [-70.685817480149225, 42.133123970678056], [-70.684004630700088, 42.130997484965171], [-70.683175054286821, 42.129901600288811], [-70.682897797367488, 42.129509047903149], [-70.682591033975569, 42.129144465538879], [-70.680045202432112, 42.126344165997693], [-70.679395489307467, 42.125668746734206], [-70.67893453155753, 42.125072377473288], [-70.678595305429099, 42.124771116610269], [-70.678534129349984, 42.124591776518862], [-70.677397993057454, 42.123311236542143], [-70.677059300203055, 42.123082093610286], [-70.676014603849225, 42.121916991716525], [-70.672328470045443, 42.118799932415378], [-70.672051832452553, 42.118480016151381], [-70.671252956648146, 42.11731169315204], [-70.671069177960035, 42.117179180846264], [-70.670239832291344, 42.115920593642194], [-70.670024596303591, 42.115762011348878], [-70.669840504772679, 42.115394950439608], [-70.667843691947283, 42.113055277341338], [-70.667782558694668, 42.112875841167764], [-70.665847593800208, 42.110561880571815], [-70.664281897799199, 42.108800972659573], [-70.664066313889933, 42.108524788714981], [-70.66375954417569, 42.1082591932106], [-70.663483581685099, 42.107839679596744], [-70.663268034363611, 42.10768054160512], [-70.663084368885094, 42.107340933151143], [-70.66280735978458, 42.107084015843853], [-70.660596455794092, 42.104890664365286], [-70.658907515950816, 42.103492253369716], [-70.657924614462729, 42.102767530496848], [-70.657034101710622, 42.10194281815631], [-70.656634901986905, 42.101759266093474], [-70.654547540189441, 42.099996537440688], [-70.654055687489532, 42.09941838243514], [-70.653688051680774, 42.099054439618271], [-70.652981710494643, 42.09850611715764], [-70.650894218063513, 42.097157577147676], [-70.648867269681276, 42.096124036275938], [-70.647946260704146, 42.095443533152192], [-70.647362130283028, 42.09480334671899], [-70.646933140033227, 42.09445801245392], [-70.646841010446877, 42.094224941380624], [-70.645275384211317, 42.09268939502077], [-70.644201157988178, 42.091894090684328], [-70.64241926010456, 42.091613440953466], [-70.642112419682718, 42.091455288955132], [-70.642082499479869, 42.090654277470222], [-70.641407723794345, 42.089510794738253], [-70.640425745267279, 42.088551918287266], [-70.639873415469665, 42.088028348147077], [-70.639290588581332, 42.086856820669773], [-70.63923078815489, 42.084686482060228], [-70.638955362763738, 42.084023810309226], [-70.63895527984613, 42.083726687824111], [-70.638709422438595, 42.083495784734943], [-70.638709096593914, 42.083216667779482], [-70.638463985466984, 42.082850714321609], [-70.638188839125007, 42.08203497970834], [-70.638342672531465, 42.081573527602821], [-70.638619570828965, 42.081074285304915], [-70.638988319138932, 42.080753466073318], [-70.641076937600914, 42.079948647230665], [-70.642550582064544, 42.078919226079371], [-70.643442455025252, 42.078852161802615], [-70.644301300546232, 42.079218191503671], [-70.645069142634568, 42.079333142499422], [-70.645344737917952, 42.07978871602625], [-70.645774703921347, 42.080341149908641], [-70.645835373141082, 42.080934765381009], [-70.645343844891627, 42.081256850856853], [-70.645496861486464, 42.081984500594757], [-70.646111440062072, 42.082516341557017], [-70.646141534776049, 42.0828581658619], [-70.645895285738888, 42.082969415520914], [-70.645742476467575, 42.083151770663669], [-70.646109689329961, 42.085371667154938], [-70.646170102867174, 42.087001243700094], [-70.646200311410368, 42.087505675077672], [-70.646537738344605, 42.087500807534809], [-70.646691650934414, 42.087092917409493], [-70.64684531292805, 42.086928574764805], [-70.647244511169788, 42.086905077588014], [-70.648564834278503, 42.087318447684588], [-70.649701163051333, 42.087590249013715], [-70.650069781719651, 42.087621077164485], [-70.650100361180051, 42.087341109727134], [-70.649977755735719, 42.087045869447984], [-70.650376837875271, 42.086976801888738], [-70.650593056002592, 42.08569484176423], [-70.649948288637887, 42.084731165301733], [-70.649948636784501, 42.084226331527617], [-70.649549444621414, 42.084142334100008], [-70.649181198476938, 42.083796378010987], [-70.649058373051759, 42.083608638852567], [-70.648444839130889, 42.082716674462482], [-70.647830235513226, 42.082491511534116], [-70.647646606145713, 42.082331949935465], [-70.647647088273501, 42.081395029951054], [-70.647770023701071, 42.080708873717363], [-70.64730969197457, 42.080589479064336], [-70.646542092456812, 42.079834202677212], [-70.64648104310487, 42.07962837341438], [-70.645867576817608, 42.079105546027286], [-70.645622197606869, 42.078784624335242], [-70.645623168470792, 42.078604557736902], [-70.645591989908041, 42.078307743433662], [-70.646575245532816, 42.077392828808435], [-70.647097810721007, 42.076727568520568], [-70.647435544026493, 42.075875903911943], [-70.648020558733691, 42.073543800244693], [-70.648139523732652, 42.072719676833344], [-70.648359456233138, 42.0711873534418], [-70.64839038441032, 42.070205009843633], [-70.64854399746325, 42.069932710148663], [-70.648515195402737, 42.067969689080932], [-70.648087686520981, 42.064786490064868], [-70.647474584649672, 42.061994197035467], [-70.647352288562075, 42.061563359107488], [-70.646861897304433, 42.06021022852449], [-70.646923171745399, 42.06002890026209], [-70.646739852099813, 42.059455257718398], [-70.646158022967896, 42.057625955519953], [-70.645912864069487, 42.056710249162492], [-70.645606185288827, 42.056156482362169], [-70.645483431012266, 42.055680619681148], [-70.644839784867472, 42.054302744612393], [-70.644502817532015, 42.053478636488528], [-70.644134823640698, 42.052267765259906], [-70.643951657650021, 42.052018162795072], [-70.643737592301974, 42.05117471288743], [-70.643216054634337, 42.04998402800674], [-70.642694395271562, 42.049090462631199], [-70.642143008221609, 42.048377826911313], [-70.641468784293508, 42.047423417212471], [-70.641039680851705, 42.046888976729775], [-70.640854870545695, 42.046432360475599], [-70.640395446183575, 42.045979263623707], [-70.639720912420159, 42.044944437006045], [-70.63944500174135, 42.04469583999397], [-70.636378493177418, 42.040875408209111], [-70.63377263282932, 42.038101732820117], [-70.631443890801052, 42.035225385990415], [-70.630124276203674, 42.033937906913714], [-70.628131759570508, 42.032290807927978], [-70.624481527581494, 42.029901693009421], [-70.624215533944408, 42.029766311174086], [-70.623772649392919, 42.029479841244253], [-70.623352095895569, 42.029264490423834], [-70.622723298101178, 42.028781389705941], [-70.622278974704955, 42.028407656230485], [-70.621834174460773, 42.02806885219173], [-70.620967604659143, 42.027447148685731], [-70.62032452817715, 42.026855249055004], [-70.619611897459976, 42.026211668925093], [-70.619053161573035, 42.025539376883842], [-70.618510580654444, 42.024695594328271], [-70.61780662473295, 42.023891081610536], [-70.617094089182672, 42.023218763988723], [-70.616398195949316, 42.022323096042619], [-70.615624752083576, 42.021587271614848], [-70.615173723550953, 42.020938301783978], [-70.614646262519884, 42.020203202439617], [-70.614172381309075, 42.019497237566426], [-70.613798060808904, 42.018951859382568], [-70.613538471637, 42.018578441483889], [-70.612956764989363, 42.017969596852573], [-70.612421269630232, 42.017268728762929], [-70.611978432294691, 42.016642948837301], [-70.611450282814687, 42.016040094314519], [-70.610853091919097, 42.01547100501746], [-70.610317042398677, 42.014890593114096], [-70.609689682105184, 42.014183954786773], [-70.609268516339981, 42.013764249738578], [-70.608794086038515, 42.013182689548984], [-70.608265787481557, 42.012809955800471], [-70.60773746748977, 42.012310085590343], [-70.607385178922627, 42.011896492787621], [-70.606926135588679, 42.011407873865302], [-70.606451596074223, 42.010965771695254], [-70.605739291905365, 42.010218470098181], [-70.605234357079595, 42.009775584777451], [-70.604698277406825, 42.009264384711514], [-70.604085232155043, 42.008826860383905], [-70.603548609514945, 42.008441073447834], [-70.602843147071567, 42.00795779872751], [-70.602252487883405, 42.007629566231522], [-70.601623284957057, 42.007329750035488], [-70.601217170127967, 42.007099212508628], [-70.600841480851173, 42.006800303605992], [-70.600451271827865, 42.006461302242201], [-70.600090314691968, 42.006247952968458], [-70.59969239284483, 42.005942652585553], [-70.599286011839226, 42.005655291802448], [-70.598964337315323, 42.005413526077611], [-70.598641843775098, 42.005297896583457], [-70.598481234620252, 42.005131230246057], [-70.598397490734285, 42.004890257870976], [-70.598445702477562, 42.004529314360049], [-70.598562595635414, 42.004185839663634], [-70.598687254418266, 42.003796866453996], [-70.598858063221698, 42.003430766361234], [-70.599320862728263, 42.003117027484805], [-70.599683744721659, 42.002877321949079], [-70.600107173630192, 42.002683741174927], [-70.600630939668278, 42.002565139577548], [-70.60109213948904, 42.002491693188823], [-70.60152319050097, 42.002475902674306], [-70.602037937501692, 42.002482827175143], [-70.602529816753403, 42.002570514278275], [-70.602898414017659, 42.002703421785327], [-70.603074601857912, 42.00288713130584], [-70.603211427419268, 42.003191453217575], [-70.603164132140805, 42.003489378993663], [-70.603077765815158, 42.003810048089754], [-70.602984567044672, 42.004050169339827], [-70.603346098819415, 42.00401698938763], [-70.603821736092527, 42.004213129555175], [-70.604291067402585, 42.00423148288386], [-70.604536832531565, 42.00424970454312], [-70.604859252757691, 42.00433659462206], [-70.605066554062603, 42.004428885607275], [-70.605334937924667, 42.004607100138983], [-70.605587548454423, 42.004773936108855], [-70.6057787554725, 42.005049507701088], [-70.606076547225726, 42.005549296908917], [-70.606321518550118, 42.005779098205558], [-70.606504806330733, 42.006025884438692], [-70.606857298137768, 42.006284706512709], [-70.607271235549149, 42.006492235210317], [-70.607608995311963, 42.006648476483527], [-70.608015776140959, 42.006798502254647], [-70.608346069201659, 42.007005374554929], [-70.60872975401108, 42.007167012665761], [-70.609052035114757, 42.007317006381868], [-70.609504974377529, 42.00749043614087], [-70.609973325816412, 42.007641024310495], [-70.610357105469774, 42.007796444995961], [-70.610741196411638, 42.007843370875797], [-70.611063681257889, 42.007901611603451], [-70.611548487838931, 42.007903128037924], [-70.611840546411116, 42.007840659214295], [-70.612248603251984, 42.00774478565156], [-70.612818464374385, 42.007620363379694], [-70.613349576548387, 42.007495547828299], [-70.613719559263089, 42.007342019591491], [-70.614335595143245, 42.00712619884402], [-70.614797286844507, 42.006966534461604], [-70.6152368601756, 42.006721791208889], [-70.61597649289466, 42.006454605742313], [-70.616707984254319, 42.006129908366269], [-70.617132463550632, 42.005884501090847], [-70.617933441647466, 42.005605891639831], [-70.618688052831374, 42.005327549565344], [-70.619188969269061, 42.005088306145311], [-70.619882009168862, 42.004809482005349], [-70.620429656235672, 42.004490099066196], [-70.620860991661047, 42.004262108174935], [-70.621416241088795, 42.003959705935593], [-70.62190166934036, 42.003669100121321], [-70.62254205250288, 42.003241292927832], [-70.622812028870342, 42.003035736507883], [-70.623475244858895, 42.002561909793421], [-70.624076629742746, 42.00215063229308], [-70.624416844104275, 42.001796507166063], [-70.624794668930022, 42.001419529136435], [-70.625110966489302, 42.00116255002078], [-70.625889584037125, 42.000694634497961], [-70.626260402128054, 42.000334525280458], [-70.626698940565063, 42.000097023645466], [-70.627458364351938, 41.99943374879544], [-70.62791901653766, 41.998823833980289], [-70.6292082705627, 41.996761074501464], [-70.629362321259151, 41.996308726078787], [-70.630160526334947, 41.995504999189997], [-70.631970072808329, 41.994407322049597], [-70.632859851854931, 41.994133335124744], [-70.633319697634903, 41.994045613206218], [-70.635006522606176, 41.994039839179358], [-70.636876824720332, 41.994183988123183], [-70.637765868054927, 41.994657182639379], [-70.638195421794705, 41.995299690545728], [-70.638163550444958, 41.996128879570364], [-70.638040965695765, 41.996517369585447], [-70.63751919620951, 41.997245623513059], [-70.636905370592373, 41.997560626471873], [-70.636321867067608, 41.997722160451538], [-70.635433057328868, 41.997815655723812], [-70.634697374844592, 41.997637307933061], [-70.632980834363636, 41.996743103292836], [-70.63230633473195, 41.996744109354182], [-70.631845737448273, 41.9968588330213], [-70.631200709292258, 41.998272572364456], [-70.631077542487844, 41.998841666942774], [-70.631207544841956, 42.000114440916796], [-70.632087574340403, 42.000561229350389], [-70.632669069833312, 42.001408576670521], [-70.632729934033833, 42.001867151313199], [-70.63242323338001, 42.002006634544216], [-70.631380601842949, 42.001363951857797], [-70.630920981969709, 42.001298513479618], [-70.630614484617908, 42.001113856762878], [-70.630277251853741, 42.001199709609125], [-70.629877895145739, 42.001961994188889], [-70.628497176167144, 42.002738141432062], [-70.627545975785097, 42.003607677986409], [-70.625458700053699, 42.005204494401546], [-70.624469773030157, 42.005572835920091], [-70.624384039048209, 42.005767471886998], [-70.624328841344493, 42.006076509776044], [-70.623959166934966, 42.006236377124381], [-70.623636283090761, 42.006206891833926], [-70.62341333089006, 42.006240567998823], [-70.623250924746245, 42.006383383784055], [-70.622757591572679, 42.006650884982783], [-70.622310247346661, 42.006971049115464], [-70.621909903327662, 42.007113117106464], [-70.621647388953008, 42.007301351434315], [-70.621439546716417, 42.007438143304782], [-70.621292781838108, 42.007575494151439], [-70.621060813823163, 42.007815643663321], [-70.620668609125502, 42.007831176484665], [-70.620245952066568, 42.007761567865224], [-70.620091984704246, 42.007904444140699], [-70.619983143330842, 42.0081101538415], [-70.619790375612411, 42.008212754266708], [-70.61957477714779, 42.008281414356361], [-70.619243968493393, 42.008274365229298], [-70.618905709964281, 42.008290937746175], [-70.618489934731656, 42.008404152849025], [-70.618265457666354, 42.008729980667553], [-70.618072926006164, 42.008850047421923], [-70.6178042324551, 42.008803496261905], [-70.617542468962966, 42.008796974824762], [-70.616972647500063, 42.008944560708031], [-70.616756624382532, 42.009069486012052], [-70.616540790009665, 42.009206837619132], [-70.616263869689774, 42.009291854899054], [-70.615902158574187, 42.009336329216332], [-70.615670475435508, 42.009554050458057], [-70.615185904857398, 42.009569390535262], [-70.615193130604268, 42.009752943966987], [-70.614891514961897, 42.009981287527268], [-70.614951806589104, 42.010394308417801], [-70.614696274407905, 42.010702961868802], [-70.61438821321677, 42.010908204493127], [-70.613963891972062, 42.011113085887324], [-70.613532950092207, 42.011203746169159], [-70.61317157792341, 42.011196982918051], [-70.612818401202759, 42.011087368606162], [-70.61255710960026, 42.011029067607993], [-70.612296176442541, 42.010936464290339], [-70.612003855873624, 42.010930233285876], [-70.612248752774008, 42.011194325336199], [-70.61244716886155, 42.011441219017861], [-70.612623281184597, 42.011608075536209], [-70.612791520400563, 42.011854734443787], [-70.612982306464971, 42.01226813832794], [-70.612958222700954, 42.01248008115391], [-70.61284918594059, 42.012697577661243], [-70.612733029041195, 42.012880174109192], [-70.612540902359143, 42.013185893238287], [-70.612500191667678, 42.013429850519309], [-70.612514690961163, 42.013602115742778], [-70.612559602674807, 42.013957033980908], [-70.612603497756751, 42.014324279278476], [-70.612839264214145, 42.014897849686157], [-70.612992494468983, 42.015052642978809], [-70.613206423803859, 42.015357009631032], [-70.61332830702014, 42.015621315721667], [-70.613557305919869, 42.016057524073815], [-70.613671352211767, 42.01632122878938], [-70.613808423546757, 42.016665605731269], [-70.613914747961431, 42.016998399506598], [-70.614151353197329, 42.017348589154096], [-70.614296822879226, 42.017497738125094], [-70.614633330006072, 42.017905514226804], [-70.614747661056199, 42.018175342536068], [-70.614831201118861, 42.018410627974383], [-70.614975617632055, 42.018800619391392], [-70.615027656786282, 42.01912182700061], [-70.615180356415976, 42.019402666172311], [-70.615463781741795, 42.019730075303762], [-70.615792531965553, 42.020097900952315], [-70.616022586077378, 42.020356287150911], [-70.616352013754451, 42.020649745034966], [-70.616749813518396, 42.021080497480675], [-70.617147931101997, 42.021488741458711], [-70.61753084221408, 42.021844554667112], [-70.618075361795235, 42.022310738559618], [-70.618343190133956, 42.022563198505971], [-70.618618703964586, 42.022827602017095], [-70.618979109260763, 42.023126873085438], [-70.619401242697336, 42.023293902406465], [-70.619746700337885, 42.023478347708185], [-70.620137999438498, 42.023640004608232], [-70.620729167207571, 42.023922587015733], [-70.620959471665614, 42.024077961559875], [-70.621266377566585, 42.02423905624854], [-70.621611105277125, 42.024520821085602], [-70.621794784088053, 42.024773706964076], [-70.62199360756378, 42.025049308258751], [-70.622069488450578, 42.025238429799799], [-70.62209929153677, 42.02548509197581], [-70.622052290381902, 42.025696950344411], [-70.6221203352885, 42.025955160713472], [-70.622428456097637, 42.025915297139605], [-70.622745040281458, 42.025647071779417], [-70.622907090758332, 42.025498671583875], [-70.623130400915542, 42.025338855769682], [-70.623300186723668, 42.025207351384793], [-70.623677558372705, 42.025145505743097], [-70.62371516929808, 42.025351800302865], [-70.623930242272095, 42.025404048849431], [-70.624199131186515, 42.025450586449182], [-70.624346230255696, 42.02525642062033], [-70.624393583417856, 42.025027186762593], [-70.624433012110799, 42.024820941898483], [-70.624433880710342, 42.024626286868951], [-70.624442070910433, 42.024408548164871], [-70.624419722801434, 42.024224970144637], [-70.624405061900859, 42.024053155868451], [-70.624460116722474, 42.023869630068283], [-70.62479583951523, 42.023437767083045], [-70.624612012711637, 42.023116096036915], [-70.624612247898128, 42.022791961770338], [-70.624919818568543, 42.022571471571162], [-70.625256492844073, 42.022701810288609], [-70.625593206286283, 42.023435401452353], [-70.625837622737919, 42.025314556757962], [-70.626051709526337, 42.026185597064313], [-70.626572311338691, 42.026826590128543], [-70.627429620882978, 42.027598453187125], [-70.628441715340543, 42.028268485812646], [-70.628595669972029, 42.028428394857379], [-70.629269891496875, 42.029274840667355], [-70.62939231567627, 42.029479977846329], [-70.629912032855842, 42.031328623305967], [-70.630157653277521, 42.031603935399204], [-70.630157461647414, 42.03183866206912], [-70.630248549394921, 42.032269284296198], [-70.630432316034018, 42.032546376422573], [-70.631505701103279, 42.0334588673864], [-70.631996833324649, 42.034028660985662], [-70.632916188852377, 42.034699659441848], [-70.634142825291534, 42.03614171681204], [-70.634572038301883, 42.036685189451632], [-70.634664039546209, 42.036918272188601], [-70.635644266146272, 42.037994336667211], [-70.636134963783221, 42.038743643122352], [-70.63680888902276, 42.039734099560221], [-70.64018244606612, 42.042748742506461], [-70.641777501283372, 42.044491685664482], [-70.641899241399258, 42.04503903544007], [-70.642237248777747, 42.04544898868842], [-70.643065172722459, 42.04611246437814], [-70.643218351421908, 42.046344827254956], [-70.643218298534137, 42.047218188954766], [-70.64398487189392, 42.047900916182279], [-70.64478128467313, 42.049114541102576], [-70.645825059263558, 42.050261848439014], [-70.646253741216356, 42.050922319280495], [-70.646345684077232, 42.051245428536063], [-70.645915880608342, 42.051909037504856], [-70.64588529068179, 42.052612269918733], [-70.646620418040044, 42.053898533409154], [-70.646773261631282, 42.054833268771802], [-70.64695716573236, 42.054993285205001], [-70.647908512840786, 42.055222673997569], [-70.649135873634265, 42.056042680107957], [-70.649657901557589, 42.05625139441284], [-70.650087601889908, 42.056164008838216], [-70.650025969041394, 42.055975553563151], [-70.648768637666961, 42.05536295987573], [-70.648645498672209, 42.05522086565044], [-70.64864561433501, 42.05501378100854], [-70.64898286264382, 42.054810824412158], [-70.648983580300964, 42.054333092483333], [-70.650058374002683, 42.05357918498661], [-70.650672317549095, 42.053345144374241], [-70.651132820169323, 42.053437427666822], [-70.651838601537634, 42.053391429321017], [-70.652698316361523, 42.053189631637011], [-70.653005096979044, 42.05303208656867], [-70.65374204693893, 42.053003774405461], [-70.654877189316011, 42.053347550933452], [-70.655613411794604, 42.054174573948501], [-70.655736955201078, 42.054587405164042], [-70.65573667015056, 42.055154636812759], [-70.656226525776745, 42.055931397848319], [-70.656595372465418, 42.056277427952118], [-70.656748883488817, 42.056572260041293], [-70.656564173562202, 42.057836549809217], [-70.656410492705859, 42.058036830089158], [-70.655980452495783, 42.05831331473216], [-70.65601107205444, 42.058655141124774], [-70.655764470784433, 42.058974124444312], [-70.655549268946373, 42.059112094316632], [-70.654843039847123, 42.060005001212168], [-70.654443838427468, 42.060668326964866], [-70.653860678822383, 42.061217745254076], [-70.652662524999826, 42.061792951761035], [-70.6526932412375, 42.062044742669372], [-70.653553308500079, 42.061879495595122], [-70.654197565177157, 42.061951155664403], [-70.654565819995909, 42.06219814675282], [-70.654841648477827, 42.062635692840026], [-70.654811371343399, 42.063095288327737], [-70.654565124279785, 42.063531229743091], [-70.652998991776045, 42.064878129989161], [-70.654042941084157, 42.064944374113374], [-70.654564821903676, 42.065198082541293], [-70.654687522692797, 42.064376230659505], [-70.655332780194712, 42.063529063933096], [-70.65557862697608, 42.06284092429015], [-70.655855340591984, 42.06256664178121], [-70.65640810811388, 42.062567925927013], [-70.656898917832777, 42.06279492399014], [-70.658064884841011, 42.064219337780784], [-70.658340393709764, 42.064719988634756], [-70.658555674156503, 42.065653994050869], [-70.659139026211221, 42.065519263742232], [-70.659108345912301, 42.064924794526469], [-70.657482250391084, 42.062687303231677], [-70.656929420345776, 42.06228986101798], [-70.656285549907253, 42.061587870311406], [-70.655948076259008, 42.061124482667815], [-70.655978481122006, 42.060736467208905], [-70.656193299949692, 42.060372860899321], [-70.656562809532105, 42.060124561175186], [-70.657790560916581, 42.05984548347633], [-70.65889549676497, 42.059433225828826], [-70.659847818232336, 42.058518511341319], [-70.66092279633871, 42.057764413979193], [-70.661598516939392, 42.056574754950617], [-70.661567592780386, 42.056052313663756], [-70.66024843527218, 42.054423055696354], [-70.659696531687288, 42.053511881261429], [-70.659727325086592, 42.052781726546151], [-70.659942115802934, 42.052553708823986], [-70.660372264841499, 42.0524842055558], [-70.661262139108089, 42.052822787512007], [-70.6622440777018, 42.053601507288846], [-70.662827162799701, 42.054358663810191], [-70.662948836346189, 42.054834499126692], [-70.66282598284171, 42.055475654561882], [-70.662733781510525, 42.05645863450318], [-70.663010262211714, 42.056968285417973], [-70.662886805656655, 42.057627443528844], [-70.663009477200902, 42.058202326515236], [-70.663255755532845, 42.058226096293545], [-70.663409026880103, 42.057421925897629], [-70.663287268386654, 42.056144221329362], [-70.663686037681487, 42.056165683561154], [-70.66436082417799, 42.056732803413013], [-70.665097613517801, 42.056829928249634], [-70.665711742531187, 42.057334651783862], [-70.666171317670475, 42.058219822894856], [-70.66623268649154, 42.06019144876602], [-70.666599782666736, 42.060898121010922], [-70.667521065010916, 42.061857505877967], [-70.667521091959017, 42.062316694016076], [-70.667366469969323, 42.06252607559513], [-70.666476869652115, 42.062872455461658], [-70.666476417947067, 42.063395206377479], [-70.666906623901724, 42.063298757552332], [-70.667582211949494, 42.062982331057917], [-70.668165896020113, 42.062523424657897], [-70.668472456873786, 42.062410855120177], [-70.668902203020949, 42.062431983674834], [-70.669055747441107, 42.06261884452443], [-70.668993178206051, 42.063070195299872], [-70.668715394627682, 42.063522864414523], [-70.669353263907908, 42.063373892260202], [-70.66960579925356, 42.063262638313759], [-70.669730510379907, 42.062410443705609], [-70.670467841492609, 42.062156933750359], [-70.671143115445417, 42.062066116502308], [-70.671358148306282, 42.062161671922496], [-70.67158513245181, 42.062387866865251], [-70.671664874685263, 42.063139081149579], [-70.671787588998455, 42.063281777156206], [-70.672125246635005, 42.063276926849277], [-70.672309248725284, 42.063120693076826], [-70.672401324791778, 42.062776967958477], [-70.672070505539097, 42.062173579605847], [-70.671849070875226, 42.061929418407672], [-70.671358083315667, 42.06167547264333], [-70.669331596011048, 42.06176828779256], [-70.668288105785678, 42.061522112358702], [-70.667735483357589, 42.0611967537263], [-70.66721461443278, 42.060744491287494], [-70.666692294604914, 42.059896593573114], [-70.666631093802124, 42.059320992044178], [-70.666908403194, 42.058037733490835], [-70.666663240979474, 42.057329788866838], [-70.666631974604925, 42.057032979677281], [-70.666447744426705, 42.056801503580651], [-70.665558446492625, 42.05623787447054], [-70.664484599796097, 42.055505782493839], [-70.663809186834612, 42.054812696826211], [-70.663624686053382, 42.054401049930348], [-70.663625021586014, 42.053806267759647], [-70.664147204345355, 42.054032924359383], [-70.66439249564732, 42.054038677206243], [-70.664484283370925, 42.053857022370408], [-70.665620785820224, 42.054056642477114], [-70.66764660588305, 42.053765808447132], [-70.668690221514595, 42.05369686240104], [-70.669395808996711, 42.053470680494371], [-70.670132411486193, 42.053468731156428], [-70.671022489275956, 42.053852256654039], [-70.670961220947348, 42.054150015243358], [-70.671114433059813, 42.054472466875303], [-70.671053062722535, 42.054842884567201], [-70.670469378744457, 42.055706881701013], [-70.669916606355329, 42.056894782854116], [-70.669886307806479, 42.057336824279325], [-70.670039557522571, 42.058091454687009], [-70.670131491767236, 42.058341973752157], [-70.67034523062398, 42.058591124809077], [-70.671205305321479, 42.059344662311617], [-70.673108339573233, 42.05928081495032], [-70.673722653479885, 42.059136690629707], [-70.676086411452189, 42.058155942360919], [-70.676695061599474, 42.057514938065893], [-70.676914715091698, 42.056963871916004], [-70.677590801986184, 42.055665988711496], [-70.678020712265038, 42.055848610667887], [-70.678665339240993, 42.056506005766593], [-70.679340328418078, 42.056712350172987], [-70.679617020164471, 42.056897738865366], [-70.679770131916115, 42.057147608027051], [-70.680199895385385, 42.057015001671537], [-70.680322275442876, 42.056490873454109], [-70.680322505969059, 42.056238771973639], [-70.679893304279915, 42.056028612543209], [-70.679892923113186, 42.055524403485727], [-70.679708586643528, 42.0551573527447], [-70.680046038196323, 42.054837258886479], [-70.679953761093614, 42.054676242094075], [-70.679278660124027, 42.054704626412949], [-70.679064369693194, 42.054842646635933], [-70.679095225117209, 42.055409559954043], [-70.679769704642567, 42.056300628467277], [-70.679555158784368, 42.056420640412782], [-70.678940874536238, 42.05630368916497], [-70.67881838839034, 42.0554136964573], [-70.677897458305239, 42.054841563371355], [-70.677682518428099, 42.054908087084584], [-70.677467847982911, 42.055271193803783], [-70.677283871764288, 42.055661531832079], [-70.676516345969503, 42.057060046868607], [-70.674888637946196, 42.05820079559922], [-70.674121565430156, 42.058572337511734], [-70.673078432562804, 42.058821410820194], [-70.672187683530595, 42.058798585076481], [-70.671542678719462, 42.058636983841367], [-70.671052178442494, 42.058319923893762], [-70.670960271336043, 42.058131891403931], [-70.670929519488595, 42.056988200062229], [-70.671144920616072, 42.056507522445877], [-70.671789653020355, 42.056029952066233], [-70.672771426603717, 42.055024677308602], [-70.672741517302711, 42.054565813006676], [-70.672434764558886, 42.054065600988345], [-70.671482707087847, 42.053097568142363], [-70.671483376074164, 42.052323255304948], [-70.671329994930701, 42.051865747364126], [-70.670654988203594, 42.051407341369632], [-70.669734328844143, 42.051222212389462], [-70.668875099508497, 42.05119913854751], [-70.665897125177239, 42.051954041711895], [-70.665037674391272, 42.052002336882701], [-70.664362368800639, 42.051615920923958], [-70.664086028562224, 42.051133284972998], [-70.663994507726898, 42.050945789531333], [-70.663596134014853, 42.04996939781131], [-70.661232791358685, 42.048409044241382], [-70.660589109730651, 42.048157262615618], [-70.659023306635063, 42.047837389095335], [-70.65779605009007, 42.047495226141756], [-70.656415392669203, 42.04730786334914], [-70.65380710128747, 42.047354422935044], [-70.652364097960316, 42.046915526311778], [-70.651413108351605, 42.046803224574056], [-70.651321813040568, 42.04561576652798], [-70.652028065180374, 42.044884947746347], [-70.653961753737377, 42.043812061200832], [-70.654483759031763, 42.043443885647754], [-70.656539991896636, 42.042441640503185], [-70.657307733693884, 42.042304408104208], [-70.658135645424906, 42.042229468859922], [-70.65917974248859, 42.042457737096555], [-70.660284050312427, 42.04284679386766], [-70.661511086147812, 42.043648659106815], [-70.662094440394, 42.043928716117932], [-70.663322338874409, 42.044154330313667], [-70.664702672558263, 42.044197098240005], [-70.666084003448134, 42.044357355209641], [-70.666359856662865, 42.044452283508448], [-70.666759263231015, 42.04481588124434], [-70.66675888049059, 42.045140012031943], [-70.666512848153616, 42.045386902716132], [-70.666543595038831, 42.045980831291679], [-70.667279947501058, 42.046627706343877], [-70.668262187458268, 42.04728932928127], [-70.668660821857955, 42.047427821789782], [-70.669397750155298, 42.047885608985702], [-70.669673605594127, 42.047926416861586], [-70.671055080451126, 42.047563949397031], [-70.670594603862341, 42.047155986396369], [-70.670656082541299, 42.046462066298659], [-70.671730423877847, 42.046167052960591], [-70.671484585783688, 42.04591821164405], [-70.671209355695026, 42.045894879784903], [-70.669981207363904, 42.046192644297896], [-70.669214191820927, 42.046716586212973], [-70.668814667404831, 42.046812725717572], [-70.668569743446469, 42.04674404890423], [-70.668262646099066, 42.046469455085827], [-70.668232304912692, 42.046055604231796], [-70.66872353655279, 42.044913451977997], [-70.66887665690038, 42.044316357822872], [-70.66856974554284, 42.044203832790139], [-70.668293934562357, 42.043883907427038], [-70.667986955692356, 42.043167591460652], [-70.667465049061235, 42.042436745858971], [-70.667465620221179, 42.041931911833565], [-70.66764919266717, 42.041749301479378], [-70.668140631751228, 42.041688138603732], [-70.66866307446449, 42.041482059040135], [-70.669706020297141, 42.041458118785265], [-70.669460891760195, 42.041092229675321], [-70.668079035477291, 42.040976937660218], [-70.66804863868748, 42.040383011751722], [-70.668478746690099, 42.040106482884951], [-70.668571565219878, 42.039852802453971], [-70.669001178062416, 42.039558260620893], [-70.669399934413462, 42.039489666498675], [-70.669890484879417, 42.039004775009083], [-70.670043616965813, 42.038867498800712], [-70.66995275303313, 42.037797018509444], [-70.670597447938917, 42.037706614481813], [-70.67065839814893, 42.037543278721621], [-70.669554375890058, 42.03685720102893], [-70.669523103606338, 42.036532840232312], [-70.669769208300565, 42.035601661122257], [-70.669677122196092, 42.035143423899683], [-70.669769953030297, 42.034619630947859], [-70.670198959620322, 42.033766849727265], [-70.670445266969921, 42.03276301066294], [-70.670475736547218, 42.031843771609005], [-70.670046541783776, 42.03008439264552], [-70.670016030026929, 42.029877625859996], [-70.670230931599505, 42.029604571181125], [-70.671059579940049, 42.029060811108579], [-70.671244044715152, 42.028806081674787], [-70.671121715778625, 42.027249261919827], [-70.670661473697606, 42.026427127343069], [-70.670630593440791, 42.025878216306715], [-70.670938146951983, 42.025675610871247], [-70.671612665992043, 42.025575874081191], [-70.672103656582792, 42.025622736467469], [-70.673024526905394, 42.025420060672182], [-70.673484401038138, 42.024990034946754], [-70.673944600889641, 42.024776189203919], [-70.674773285682491, 42.024827188939781], [-70.674926882442776, 42.024455182521521], [-70.675478557547606, 42.023816564624596], [-70.67609280768292, 42.023501358212023], [-70.676644563095877, 42.022556518421617], [-70.676583919473771, 42.02226012944088], [-70.675969968300976, 42.021854412213351], [-70.675909343074608, 42.02132392604458], [-70.676154614883757, 42.021032531463923], [-70.676921615509599, 42.020453351045475], [-70.67860872044696, 42.019834047175081], [-70.678363234852839, 42.019675889346388], [-70.67738123029072, 42.019609136509992], [-70.676921536739727, 42.019498415100088], [-70.676675890961491, 42.019241121621945], [-70.67661527126775, 42.01898975133652], [-70.675602686348398, 42.018833265918246], [-70.675356623442894, 42.018692564613417], [-70.674529171008302, 42.018515525140508], [-70.674129690030043, 42.018278544415836], [-70.67385415187961, 42.017525823325919], [-70.673578810467873, 42.017232383375408], [-70.673485983118852, 42.017026247414002], [-70.673609737693084, 42.016682748762676], [-70.673609244536138, 42.015466160464939], [-70.673333508757992, 42.015380343095799], [-70.67308822033965, 42.015608705484944], [-70.673087592900103, 42.016158469080651], [-70.673179339703225, 42.016382515027821], [-70.673117742679423, 42.017554265993994], [-70.672258926791173, 42.018972354912819], [-70.672288496818808, 42.019539263650337], [-70.672657071297834, 42.019813122595366], [-70.672749056055054, 42.020019163019604], [-70.672534065205198, 42.020887098341419], [-70.671920683031374, 42.020932180018576], [-70.671767895848362, 42.020573715701062], [-70.670724217212353, 42.019652274935716], [-70.670449064097653, 42.019196671806604], [-70.670417582607755, 42.018971980359531], [-70.669988169903746, 42.018392626015874], [-70.669712486892138, 42.017774949622414], [-70.669498573183688, 42.017318707844403], [-70.669375561335798, 42.017113519767761], [-70.668977613970711, 42.01594806629172], [-70.668824285311743, 42.015356036645663], [-70.668854975758066, 42.013959059236605], [-70.6686102903207, 42.012791836301894], [-70.668211729436067, 42.012221162228556], [-70.668119559929593, 42.01098805913108], [-70.668211966274754, 42.010707364152957], [-70.669653812531834, 42.008831016718268], [-70.670451692490175, 42.008080492264533], [-70.671310586105378, 42.00748229766333], [-70.672783195677837, 42.006866658497266], [-70.6780282863878, 42.005222489204257], [-70.678979178436663, 42.005082469219282], [-70.679776442287661, 42.005331831347185], [-70.680421042172114, 42.005728115561027], [-70.681402786464361, 42.00659608470032], [-70.682290611184953, 42.007691348212049], [-70.68348716515905, 42.008466385404283], [-70.68403901696206, 42.009151726574999], [-70.684652634289321, 42.009521384307995], [-70.685205030417421, 42.010071667318883], [-70.68538896177246, 42.010321210406872], [-70.686033067195723, 42.011347719601027], [-70.686370999688222, 42.011856583842935], [-70.68643166918757, 42.012125416527638], [-70.686769238701956, 42.013201511616764], [-70.686524211938632, 42.01377258610642], [-70.686432307271843, 42.014350421704144], [-70.686646750655527, 42.014896671949678], [-70.686309644439049, 42.015794106305783], [-70.686278718912391, 42.016361661040079], [-70.686800341293605, 42.017020391580687], [-70.686585364463937, 42.017780307631021], [-70.686431325659669, 42.018080206455565], [-70.686369625875287, 42.018486105469755], [-70.687167709527458, 42.018393819231747], [-70.687352488844169, 42.018012474119089], [-70.688671312572524, 42.017921174876314], [-70.688671503184835, 42.017461356326798], [-70.689101350396967, 42.016977663527371], [-70.689131471346528, 42.015950372620715], [-70.689990398805222, 42.015694720595263], [-70.690450377651075, 42.015336748015315], [-70.691401280591109, 42.015034556953296], [-70.691769500494999, 42.014713565925554], [-70.691800276172657, 42.014163386292829], [-70.692106675256838, 42.013528537863827], [-70.692689582559765, 42.013204648374206], [-70.693640802169355, 42.013226484978873], [-70.694561155636137, 42.013483453471757], [-70.695174066040536, 42.013888433464643], [-70.695205198025931, 42.014347842034134], [-70.695664744071848, 42.014737063742601], [-70.695756529611998, 42.016014525844888], [-70.696064787893803, 42.01610898100607], [-70.696186682300919, 42.015539812646026], [-70.696800626310207, 42.01460323787515], [-70.696799826415557, 42.014188521197333], [-70.696923200068994, 42.013979510958094], [-70.697904471732812, 42.013361719134075], [-70.69916186136625, 42.012703715339356], [-70.700082037478026, 42.011987066628407], [-70.700388358553909, 42.011514262801796], [-70.700786352176749, 42.011210918437996], [-70.701400668133715, 42.011120670681294], [-70.701676665684346, 42.011215966054138], [-70.701953165060047, 42.011463787136236], [-70.702320915117269, 42.011530549104947], [-70.702473996788896, 42.011213065375728], [-70.702320473122768, 42.01017944897675], [-70.702534416774753, 42.009725623446307], [-70.702719204796693, 42.009497947389278], [-70.703578159465579, 42.009016561272801], [-70.704405929248537, 42.00892328194184], [-70.704988506684387, 42.009013408734276], [-70.707289029821425, 42.008258480197433], [-70.707625557683926, 42.008010419183783], [-70.70817866844331, 42.007344554204145], [-70.708791569034574, 42.006840086589591], [-70.709466721049807, 42.006542050949378], [-70.709957123635064, 42.006480703219218], [-70.71047859288403, 42.006571550478732], [-70.710847157302993, 42.006746245286571], [-70.711337763248153, 42.007252756863942], [-70.711859114592073, 42.007227088987442], [-70.711889511072954, 42.006478820305816], [-70.712471902709865, 42.005812596408958], [-70.712533327054857, 42.005424239293902], [-70.712410568227398, 42.005218559780708], [-70.711367441286853, 42.004459561184447], [-70.711275147291019, 42.00356917798846], [-70.711489429652232, 42.003178454081336], [-70.711433705018408, 42.002405461331584], [-70.710997579169501, 42.000915669845185], [-70.710567418089724, 42.000318456022271], [-70.710292529507029, 42.00009767761523], [-70.710382787667683, 41.997474257697242], [-70.710904304089254, 41.996241557365842], [-70.710934798444015, 41.995826516512658], [-70.710535513563869, 41.994932392059376], [-70.710075295030592, 41.994290489520687], [-70.709982779720207, 41.993517781150608], [-70.710166903033638, 41.993172409900154], [-70.710503540369828, 41.992762274366846], [-70.710840879437214, 41.992694194122102], [-70.712098103805872, 41.99346764083225], [-70.712558353600997, 41.993649805478867], [-70.714337497340168, 41.993740196939534], [-70.714888976745257, 41.99388525340887], [-70.715931690711386, 41.994265522580577], [-70.716637861783525, 41.994777362137583], [-70.717067287745223, 41.994798310857782], [-70.71752667760812, 41.994610666896676], [-70.717342985460434, 41.994433297003084], [-70.716391777921842, 41.99406042074488], [-70.71580873942753, 41.99365521781661], [-70.714705066445163, 41.993266695520397], [-70.713509511959288, 41.993077232964943], [-70.712343769842974, 41.992878509329849], [-70.710809970238756, 41.991595526559095], [-70.7104724916355, 41.991646138493046], [-70.710227020918367, 41.992072660242492], [-70.709798416461993, 41.992259317238798], [-70.709430259361, 41.992534807193707], [-70.708910149235436, 41.993722492416822], [-70.708909888914803, 41.994199687941546], [-70.709615676371669, 41.995738623083703], [-70.709616172031005, 41.996242834626301], [-70.709585266112612, 41.996486261649395], [-70.709033682470618, 41.997863347866506], [-70.708421448452995, 41.999718379067176], [-70.708036948190653, 42.000119803555641], [-70.707569550505838, 42.000247119374286], [-70.707101128465553, 42.00041773407596], [-70.706634814601642, 42.000457807578897], [-70.705647801190892, 42.000233785596819], [-70.705125121661197, 42.000099599526024], [-70.703116059417923, 41.999347851130921], [-70.701980725360528, 41.998527347181991], [-70.701366964024203, 41.997842740526799], [-70.700661751489889, 41.997655487341902], [-70.699956131221768, 41.996953843904286], [-70.699925585631945, 41.996378561989665], [-70.699679524405511, 41.995760624915917], [-70.699035602571669, 41.994896799871263], [-70.699034846337426, 41.993518683260604], [-70.699433948173805, 41.992197929571908], [-70.699648239237092, 41.990753790409073], [-70.699831929825507, 41.990273916519946], [-70.699616838522033, 41.988395131803415], [-70.699095691707726, 41.987160220855479], [-70.698696908441249, 41.986751717945793], [-70.697378735118903, 41.986068901491826], [-70.694771312611209, 41.984369656640027], [-70.693038176772177, 41.983557182706569], [-70.692380440447039, 41.982999977773382], [-70.691214924833915, 41.98224271566913], [-70.69023340239967, 41.98187903847294], [-70.68968214863682, 41.982022523723245], [-70.689344314157722, 41.982018417793839], [-70.687872940980284, 41.98153590731215], [-70.687229055550731, 41.981968553563306], [-70.686799792179229, 41.982065082290113], [-70.686585468371547, 41.981923999229693], [-70.686554210700564, 41.981744872151353], [-70.686891645943049, 41.981100082924655], [-70.684929918533541, 41.980192489226837], [-70.682170453821612, 41.979476699369897], [-70.681434650936296, 41.979136042501196], [-70.679258332256239, 41.977718640706321], [-70.678368718227532, 41.976461896364583], [-70.678031785836296, 41.97575492886137], [-70.677571794159007, 41.975131440244574], [-70.676009163186791, 41.972984040423306], [-70.675059346880232, 41.972025579876657], [-70.675058984708514, 41.97147634698436], [-70.67441559940761, 41.970494791354966], [-70.672668505718363, 41.969124837917263], [-70.672637779452231, 41.968936166298612], [-70.673680304338319, 41.968732119523168], [-70.673526712353691, 41.968481694199973], [-70.673098080981475, 41.968182009184211], [-70.672208690923981, 41.968068695970167], [-70.670645870163128, 41.966425969904812], [-70.670584581996096, 41.966120476781164], [-70.670124699124756, 41.965740149677814], [-70.669818433587466, 41.965347971209177], [-70.669511682258971, 41.964614184516698], [-70.667642992426522, 41.963245518722459], [-70.667060567810609, 41.962903002625538], [-70.666325431914487, 41.962670296344747], [-70.666049015082677, 41.962332348122516], [-70.666110049095039, 41.961844877740809], [-70.666662035170248, 41.961756075092694], [-70.66690725311075, 41.961482166745306], [-70.666816458759442, 41.961303679826074], [-70.66592742966975, 41.960821073739901], [-70.665253173075612, 41.960317610194075], [-70.663537195018208, 41.959856493298368], [-70.662525965324548, 41.959790021958135], [-70.662310684725341, 41.959648885106709], [-70.661913487641939, 41.959150763562917], [-70.661913191480593, 41.958366890181551], [-70.661698845911289, 41.958100245925749], [-70.661208576380332, 41.957800693152073], [-70.660870917460244, 41.957481910625873], [-70.660871456121754, 41.957184788958308], [-70.661270590978035, 41.956728525110911], [-70.661239644387877, 41.956449720170937], [-70.660595815309236, 41.956243037095639], [-70.658175295996699, 41.955881915303578], [-70.657684690840895, 41.955582884852802], [-70.656275971068084, 41.955333350599744], [-70.655631416541567, 41.954846885460604], [-70.654589834927393, 41.953430086716729], [-70.654162102625463, 41.952995278211013], [-70.653181456672584, 41.952334067553785], [-70.650546845869954, 41.951507588903041], [-70.650177921069456, 41.951278579498712], [-70.649963655310685, 41.951002369041589], [-70.649903558636041, 41.950706506465977], [-70.650178727471769, 41.950504256654447], [-70.650148556192704, 41.950252555433941], [-70.649198407276629, 41.950023179806593], [-70.644112132263118, 41.949448293876515], [-70.639484773823895, 41.94946981082655], [-70.638902611716318, 41.949288769536182], [-70.638443150519308, 41.948989259667663], [-70.638075628291531, 41.948625253732175], [-70.637279276317727, 41.948123491958036], [-70.634338594291478, 41.946931830293401], [-70.631305296600928, 41.946543071053853], [-70.630569263937332, 41.946787869358445], [-70.630416268204158, 41.946925094136979], [-70.630905479466662, 41.948142714998063], [-70.632068985561617, 41.949692837660834], [-70.633445726147059, 41.951753372251183], [-70.634211758075679, 41.952490201032006], [-70.634242116474894, 41.952696978905642], [-70.634517125432055, 41.952989976329853], [-70.635436463207213, 41.953400398113246], [-70.635804000463466, 41.953790883663416], [-70.636538899600964, 41.954158843828544], [-70.636845757896367, 41.954550578098285], [-70.636783421212812, 41.955785343193938], [-70.63705850787035, 41.956510518782537], [-70.637426426334585, 41.956901631928574], [-70.638099721201243, 41.958072167970464], [-70.639355060531386, 41.959485596440679], [-70.64055004380144, 41.96046817375241], [-70.640795054929384, 41.960861142323566], [-70.640947131205905, 41.961633193047803], [-70.641161505893493, 41.961999459191141], [-70.641436666091522, 41.962760638820995], [-70.642049434102077, 41.963562709214301], [-70.642814995738007, 41.964244820906281], [-70.643151498857705, 41.964699246033753], [-70.64388664367398, 41.965940529367145], [-70.644559766505211, 41.967947747841258], [-70.645478625340644, 41.969457177867596], [-70.646765000629756, 41.971401436890901], [-70.648449587933797, 41.974169164365591], [-70.648878512667096, 41.974721050855564], [-70.649490761101973, 41.975180300183979], [-70.650717543314059, 41.975640152144905], [-70.651176533074107, 41.975975621672085], [-70.652770223408126, 41.977717884811796], [-70.653014802074267, 41.978407857421416], [-70.653076403044253, 41.978883894290583], [-70.652953200586197, 41.979155886428138], [-70.652738862653393, 41.979339415983112], [-70.652186818074256, 41.979338114106717], [-70.651726959533136, 41.979092770526485], [-70.648662521536124, 41.976210111881713], [-70.647314087837557, 41.975085840111163], [-70.646947329721925, 41.974541794786823], [-70.645294317474168, 41.970882363561792], [-70.64504911438533, 41.970417913845075], [-70.64403840541901, 41.969117221394114], [-70.643548041017752, 41.968205783299688], [-70.639413835825479, 41.962276684716336], [-70.638006449076727, 41.959802450618838], [-70.633720151032719, 41.953604661525581], [-70.630750595626651, 41.949990656598189], [-70.627902570217941, 41.947267258930452], [-70.625179314159823, 41.944477754229318], [-70.624486752552372, 41.943920422522403], [-70.621267776525727, 41.941768546755497], [-70.620010417890867, 41.941201169082312], [-70.617252118492772, 41.94033073405253], [-70.616608915455089, 41.940213753974326], [-70.615291031407935, 41.940214810262923], [-70.614126800964144, 41.940492201284947], [-70.612718121305136, 41.940656304278171], [-70.609930153683408, 41.940407268746824], [-70.608734806042307, 41.940424420636127], [-70.607815546705083, 41.940653596948231], [-70.604967398851883, 41.941873223471475], [-70.603343897253794, 41.942832371594697], [-70.602302846898397, 41.943612575760604], [-70.601567733766657, 41.944316483166183], [-70.600404485436485, 41.94569275694159], [-70.599516353823645, 41.946587319141919], [-70.598413894434273, 41.94738672315291], [-70.596850731681229, 41.948165008091571], [-70.595441194790084, 41.948526978323628], [-70.591948437532722, 41.949260101111378], [-70.589068845001435, 41.949678369781466], [-70.583889636159725, 41.949840628203653], [-70.583000417512253, 41.94960956801939], [-70.582633221290436, 41.949353340698181], [-70.581467994967809, 41.9481897690127], [-70.580425881059398, 41.947348525467042], [-70.579905179498681, 41.947050085749908], [-70.579139576549636, 41.947006731462814], [-70.578955302831162, 41.946847137498217], [-70.574481317991143, 41.946341068337354], [-70.574389660077031, 41.946108475084301], [-70.575340056627269, 41.946041348418937], [-70.57855610571616, 41.946429198724779], [-70.578863515280887, 41.946388909059493], [-70.579077623205905, 41.94617841303603], [-70.579108123415097, 41.945403782720085], [-70.578066233695367, 41.945310382991231], [-70.577330711093381, 41.945032077032792], [-70.577146738237218, 41.944827462921587], [-70.577085922489147, 41.944188864584014], [-70.576718032512943, 41.944167253973383], [-70.576012895264469, 41.94434784413609], [-70.575523135302674, 41.944255553697943], [-70.574603394596252, 41.943800162820182], [-70.572642160459409, 41.942449429533397], [-70.570681282687602, 41.941674915257494], [-70.569822950100956, 41.941173254371947], [-70.568750603165313, 41.940125105196323], [-70.567861558952231, 41.938840467667625], [-70.567708826012236, 41.938383352560159], [-70.566973260703364, 41.93737566050298], [-70.566452358190688, 41.936969109231676], [-70.564062664715564, 41.935956871464242], [-70.562776872436984, 41.935110043893118], [-70.560845567241316, 41.934037929894494], [-70.55888498374911, 41.932731979384762], [-70.555423459257781, 41.930680850735023], [-70.554810396213256, 41.930220539671375], [-70.552881320361351, 41.929625516024437], [-70.550951244582123, 41.928598261402456], [-70.549052118542278, 41.927795700098827], [-70.545590472628362, 41.926716784563368], [-70.544579677662014, 41.926559137919426], [-70.544058872118356, 41.926539023165986], [-70.54356918489826, 41.92651016266116], [-70.542282005034579, 41.926860705647996], [-70.541118016715544, 41.927020303984726], [-70.539341204427373, 41.926584977769068], [-70.539035181151135, 41.926418080945609], [-70.539035157055849, 41.926147961660071], [-70.539862209668698, 41.925344019865875], [-70.539862244033941, 41.92489382168462], [-70.539678920278149, 41.9244100277554], [-70.539525319800873, 41.924249996122818], [-70.539372853813575, 41.922919547811844], [-70.539250443555616, 41.922714217997672], [-70.538271031475858, 41.921529245309593], [-70.538087526558357, 41.921234530439683], [-70.538056975041073, 41.920838638451912], [-70.538363031645375, 41.920474303997942], [-70.538915145932705, 41.920061977638568], [-70.539527397118675, 41.919810515222522], [-70.540507380249238, 41.919580687932466], [-70.541366051062255, 41.919128156223387], [-70.54237642070423, 41.919033087428659], [-70.544642862428731, 41.918552350053346], [-70.544980484594575, 41.918322781559326], [-70.545623702010403, 41.917458105345311], [-70.546573889824515, 41.915743493147801], [-70.547217592760717, 41.913384243526977], [-70.547218006814958, 41.910664417392155], [-70.547126590679312, 41.910071103124615], [-70.546605561154806, 41.908214186451154], [-70.546054836671686, 41.906933813282585], [-70.544891329816949, 41.904850920322914], [-70.542197889470543, 41.901312301508192], [-70.538097262736144, 41.896414590135429], [-70.535556999892989, 41.8938551110272], [-70.534363081621379, 41.892664413333733], [-70.53261862619982, 41.890743045527593], [-70.532282306854142, 41.890242723534655], [-70.532037833145225, 41.889534916928163], [-70.532037866435545, 41.888318836063043], [-70.532436231973136, 41.887223724688603], [-70.532804463587752, 41.885985462997873], [-70.532896592926363, 41.885821920494074], [-70.532896978220748, 41.884732438977842], [-70.5327747274806, 41.884427517771812], [-70.532591839672918, 41.883997647073052], [-70.532193931478133, 41.882850224204248], [-70.53188797381587, 41.882440197918292], [-70.531552038468178, 41.881751332261281], [-70.531399679061124, 41.880978575528978], [-70.531492462333929, 41.87699733775743], [-70.532014474435982, 41.875126050216302], [-70.532015103736953, 41.873846944911399], [-70.531618045631149, 41.87220430468858], [-70.53097650115798, 41.870717697673001], [-70.530975845929049, 41.870420019180663], [-70.531619391925361, 41.870006165012377], [-70.53180246758825, 41.869706714088274], [-70.531864455080978, 41.868544010577089], [-70.531742143376249, 41.86762681359108], [-70.531498145976457, 41.866711374858426], [-70.53088584544227, 41.865864300174259], [-70.529663221945896, 41.864700313823079], [-70.52843904865874, 41.863095553492911], [-70.527247196824803, 41.861057871157172], [-70.525901048676332, 41.859616995949047], [-70.525565675694082, 41.858730025948752], [-70.525596330661571, 41.858197879158524], [-70.525872121651105, 41.85722167567971], [-70.52679093896144, 41.855984079237167], [-70.527800850941873, 41.855159816563528], [-70.528473998049279, 41.85443064166153], [-70.528749704294583, 41.853922550513374], [-70.528994949448617, 41.85314470870351], [-70.528995610994116, 41.852531809691229], [-70.528751348158622, 41.851616451276371], [-70.52869036468789, 41.850923701764998], [-70.529118991605685, 41.8501074429658], [-70.529486182504371, 41.849552857476702], [-70.529914950858355, 41.849169330949685], [-70.53080278920298, 41.847905057659183], [-70.530925355154423, 41.847336053685282], [-70.530956488389535, 41.845984542217998], [-70.531232945129759, 41.843909208942598], [-70.53123289318934, 41.843540042959198], [-70.53144699961679, 41.843222217863627], [-70.532181343763497, 41.84246427865471], [-70.532579737129723, 41.841729327287574], [-70.532549266393204, 41.840658128617079], [-70.532702229197923, 41.84017888044589], [-70.53322237560063, 41.840243437445281], [-70.534415449375572, 41.840866988829632], [-70.534966052391312, 41.841211010758926], [-70.53573007911055, 41.841344609381764], [-70.535944407907593, 41.841503991703284], [-70.535913978252708, 41.842099171217583], [-70.536127953186266, 41.842329952148674], [-70.536434648542681, 41.842353432788549], [-70.536526214969385, 41.841847729463417], [-70.53692402458465, 41.840796987000083], [-70.536923811754534, 41.840292759371323], [-70.536311955513597, 41.840265081321512], [-70.535364122009042, 41.84063811982714], [-70.534507349909916, 41.840316269608081], [-70.534323584686732, 41.840174611110434], [-70.534232055746344, 41.83983393377536], [-70.535487125148705, 41.839375713882923], [-70.536007128619275, 41.838828072694838], [-70.536803778316596, 41.836727859290995], [-70.536956774053976, 41.835717367834782], [-70.536957080245344, 41.834572687345741], [-70.537231987946555, 41.834434365338282], [-70.537752860384174, 41.833769581315302], [-70.538242217910678, 41.833709060143072], [-70.538609082909375, 41.833452116803031], [-70.539129154620994, 41.833246615914582], [-70.539680013207146, 41.832771250683486], [-70.540169024682783, 41.832701084090338], [-70.540597715640587, 41.832334895615546], [-70.541178735690494, 41.832102345647414], [-70.541729761304282, 41.831734390200921], [-70.542066130857179, 41.831261713189903], [-70.542617029479757, 41.829497587284358], [-70.543198816446292, 41.826273984338719], [-70.543168819351706, 41.824437449956491], [-70.54298585670243, 41.82279159789347], [-70.54283292323062, 41.821856685748386], [-70.542863994088393, 41.821334172210541], [-70.542558577304035, 41.81970809013027], [-70.542130691148145, 41.818263220124308], [-70.541733654771193, 41.817602589054601], [-70.541519075181228, 41.816911436090052], [-70.541153360081708, 41.816249985638876], [-70.541031522155009, 41.815747525869888], [-70.53752497912302, 41.810699933385273], [-70.538486549966947, 41.809808182736127], [-70.56529668846909, 41.786706229677399], [-70.602956271978115, 41.774692510025289], [-70.624477049451784, 41.766045652852817], [-70.627283935897722, 41.765069999824291], [-70.631417074737143, 41.7632838665658], [-70.632561815882127, 41.762816549520707], [-70.632319202182558, 41.762581139118083], [-70.632089941154078, 41.762557963276002], [-70.63178472243149, 41.762557888526558], [-70.631578847786059, 41.762477534638585], [-70.631533145148552, 41.762265593094263], [-70.631273970485708, 41.762036897173793], [-70.631190253838298, 41.761808278368846], [-70.630908175573026, 41.761521961616651], [-70.630503876939628, 41.761327001983631], [-70.63019074745533, 41.761166501916378], [-70.629970118805986, 41.760863184263272], [-70.629600000299007, 41.760146162323409], [-70.630425645294267, 41.760307246019899], [-70.630426064681942, 41.760082150085118], [-70.629785438181074, 41.758866224594414], [-70.629542322252178, 41.757266703399985], [-70.630153088909935, 41.75719483526224], [-70.630397899360347, 41.756966563038524], [-70.630734402620661, 41.756123929108696], [-70.630765839896313, 41.755024514547564], [-70.630584103069509, 41.754135696530724], [-70.630797992993806, 41.753465993326799], [-70.631531465991969, 41.753104046176816], [-70.631409484187984, 41.752736834669236], [-70.631165229906088, 41.752713542349547], [-70.630340898179369, 41.752895794565454], [-70.628904013119111, 41.752736789496979], [-70.627957080493957, 41.753038469920675], [-70.627437759151874, 41.753099771604738], [-70.62701050552468, 41.752961438229093], [-70.626735633626183, 41.752785464490515], [-70.626491579696065, 41.752167361250486], [-70.626431034813137, 41.75159181317693], [-70.626493809737411, 41.750492099156773], [-70.626157931875909, 41.750100641142524], [-70.625761540102303, 41.749799927890137], [-70.624476136849722, 41.749165448514667], [-70.623894977066044, 41.74872311648631], [-70.621725359229856, 41.747699671809116], [-70.621724607004211, 41.74747456652473], [-70.622365711432025, 41.746781159932162], [-70.622915326743637, 41.746322769447239], [-70.623403937995761, 41.746252788652264], [-70.62447340617598, 41.746733183647081], [-70.62539759894527, 41.747103234742184], [-70.626985336805404, 41.74737824220189], [-70.628757253865146, 41.747902245691336], [-70.629642242492039, 41.748249452181213], [-70.630467504631142, 41.74842737132154], [-70.630955402917408, 41.748383824302792], [-70.631567624020818, 41.747906781729682], [-70.631567610863613, 41.747465587164299], [-70.631323683161995, 41.747198740153486], [-70.630773616469412, 41.74681070415901], [-70.628025288060428, 41.74545314595396], [-70.626956568112519, 41.745225531629345], [-70.627018721234109, 41.74490915819991], [-70.627629780139287, 41.744288064268837], [-70.628118926297049, 41.743965956461992], [-70.628393959373199, 41.743880903229623], [-70.629432164166147, 41.743920358053373], [-70.633433307894833, 41.744403322222539], [-70.635082765543686, 41.744361837118021], [-70.636793736842776, 41.743922909441544], [-70.63709944612998, 41.743675366151557], [-70.637099481257351, 41.743450267314621], [-70.63685517772673, 41.743237363069944], [-70.636916850557739, 41.742596838239166], [-70.637314489484822, 41.741915549792466], [-70.637804407495892, 41.740774135794091], [-70.637834875896999, 41.740494073057889], [-70.638109969422928, 41.739787633454107], [-70.637988594990773, 41.739347771733016], [-70.637133419912431, 41.738801687578167], [-70.63670585110151, 41.738798987271814], [-70.636858979626695, 41.739147881178951], [-70.637194162341245, 41.739422250690644], [-70.637286354350877, 41.739601317698764], [-70.637041400269069, 41.739740193720159], [-70.63664509297827, 41.739736649647348], [-70.636003784754735, 41.739439697215275], [-70.635789969901168, 41.73893835486853], [-70.6359433378299, 41.738575938476288], [-70.637074345326369, 41.7375237572681], [-70.63707431834132, 41.736973974889409], [-70.636585782158051, 41.736377720723247], [-70.635334262357986, 41.735143684830895], [-70.635242797780407, 41.734956157918134], [-70.635242877969546, 41.734568357812115], [-70.635609838041788, 41.734455262924378], [-70.636862275213019, 41.73445521910665], [-70.637381158710056, 41.734636979413757], [-70.63878548570942, 41.735300936629287], [-70.639304387098477, 41.735375180875373], [-70.640953727550297, 41.735414107059256], [-70.640923041591833, 41.735711546564133], [-70.640434738976978, 41.736016247393458], [-70.640128701063801, 41.736425868184675], [-70.639609157437818, 41.736559254319737], [-70.639578818890328, 41.736839318477294], [-70.64067761007567, 41.737174549384697], [-70.641349973725767, 41.737065901148178], [-70.64302989208187, 41.737069011643776], [-70.64388489992686, 41.736813247547019], [-70.644251612446709, 41.736835092317961], [-70.644403797768831, 41.737589236904796], [-70.6451064375632, 41.738119534721498], [-70.647731578832705, 41.739973227103533], [-70.648342519020161, 41.740198934781333], [-70.64928954193131, 41.740365293089795], [-70.652008074242119, 41.740361888190662], [-70.65289374933198, 41.740087646606398], [-70.653596036020474, 41.739744595744277], [-70.653901818930279, 41.739857166404455], [-70.653840411326726, 41.740154920888742], [-70.652984515335831, 41.741347794018658], [-70.652953431873286, 41.742050951241552], [-70.653106183404716, 41.742489949248785], [-70.653319515904968, 41.742694124293074], [-70.65399062875187, 41.744017019344021], [-70.654356875257619, 41.744840268745328], [-70.654356803367875, 41.745327021498547], [-70.653929000983084, 41.745801593572772], [-70.652432175747961, 41.746625039954246], [-70.650599072814828, 41.747155582170151], [-70.650140317378714, 41.74761307204875], [-70.650109691059072, 41.748387723353318], [-70.650231873640124, 41.748548455106572], [-70.650200764764321, 41.749422686245872], [-70.649955705297472, 41.750101826181634], [-70.649497173277268, 41.750567688950468], [-70.651147062349153, 41.7510746738322], [-70.651971321508029, 41.750936750606598], [-70.652277257003846, 41.750824227701592], [-70.652673723357594, 41.750476564174313], [-70.652949566803926, 41.750103331487558], [-70.653346742905896, 41.749647083371741], [-70.654111043081969, 41.74905057842485], [-70.654875112656839, 41.748661247699438], [-70.655241825749926, 41.748070248157951], [-70.655516588019012, 41.747885994158501], [-70.656280464138646, 41.74802842533775], [-70.657104995700337, 41.748412695943159], [-70.657410972752984, 41.748687329167211], [-70.657990368956931, 41.750110814825113], [-70.658295653618751, 41.750530133754687], [-70.658784067345096, 41.750730117951484], [-70.65954760950963, 41.750754842962358], [-70.659792482115662, 41.750850110463389], [-70.659303319108872, 41.751190901621221], [-70.657256371201299, 41.751346849579576], [-70.656615166822675, 41.751508676442178], [-70.656522753145481, 41.751987451971722], [-70.656737210343451, 41.752191628554058], [-70.656766159766931, 41.752767554819279], [-70.657132307916314, 41.753176522619889], [-70.657133426879057, 41.753410633331058], [-70.654504990837239, 41.754232481265284], [-70.654444271759502, 41.754413820136349], [-70.655146428993277, 41.754709947625493], [-70.655574093096789, 41.754622539198067], [-70.65587955151635, 41.754455979370142], [-70.657315654571804, 41.754372071449055], [-70.657681761273295, 41.75445689526682], [-70.658048800511807, 41.754370740005307], [-70.658354556632489, 41.75384338799536], [-70.658659321904096, 41.753892910176987], [-70.65902582285301, 41.754166905320581], [-70.659393459219004, 41.754071656183278], [-70.659637910964292, 41.753797759397337], [-70.659638140527832, 41.753131469979103], [-70.659272018870283, 41.752308239371132], [-70.659333425134406, 41.752036953761191], [-70.660708560124576, 41.751674511933636], [-70.661074641166607, 41.751696387233849], [-70.661197110383952, 41.75187448666037], [-70.661349400266459, 41.75261113956735], [-70.661592981728234, 41.752832988940952], [-70.661898559119138, 41.752765457299397], [-70.661869297966192, 41.751531702878012], [-70.661747189393836, 41.751353516795639], [-70.661777655300369, 41.751011051218271], [-70.662113972462592, 41.750753492124922], [-70.661931416594186, 41.750233882494904], [-70.660678599118782, 41.749901055836801], [-70.659762392376038, 41.7495088419683], [-70.659456864706272, 41.749144179103091], [-70.659395724075964, 41.748874780449341], [-70.659487202463112, 41.748666113987724], [-70.65988459239955, 41.748390464046032], [-70.659884322931063, 41.748209843051534], [-70.658845991016818, 41.74800013092846], [-70.657838488666201, 41.74726732820708], [-70.657503337830576, 41.747245130872884], [-70.656402702073592, 41.747594350345345], [-70.655853208102073, 41.747205900655565], [-70.655609032027996, 41.746722919884498], [-70.655609451499572, 41.746263721871081], [-70.655486414680041, 41.746075977775106], [-70.655609252946718, 41.745623900154058], [-70.65582361675105, 41.745323857147511], [-70.656373451069172, 41.744802281109465], [-70.655762930581972, 41.74471221959778], [-70.655395913221199, 41.744573358728125], [-70.654877590426096, 41.74415758336756], [-70.654388468468014, 41.74345272540738], [-70.654266601167535, 41.742895826799874], [-70.654236451215311, 41.742103885894146], [-70.654756216212206, 41.741691312261239], [-70.655580441754239, 41.741300622832348], [-70.656222160918034, 41.741183285774035], [-70.657718927582394, 41.741116751805684], [-70.658086106580015, 41.740886444856756], [-70.658482541459563, 41.740844355248527], [-70.658849554543806, 41.741046323900832], [-70.659032248918862, 41.741295821798325], [-70.660162759539787, 41.741234383925551], [-70.661354203505709, 41.741027609806082], [-70.661842941278678, 41.740822406557015], [-70.662423015826363, 41.740426629381645], [-70.662758760225188, 41.740061557477141], [-70.663951567638676, 41.738278537376978], [-70.664073578645628, 41.737709393789636], [-70.664348426376108, 41.737687820706526], [-70.664989186785178, 41.738191609171501], [-70.666149600738322, 41.739426357998589], [-70.666455509226665, 41.739908597047602], [-70.666516074720164, 41.740592258875978], [-70.666333106910784, 41.741144661569066], [-70.665935316474233, 41.741852519469745], [-70.665324349992829, 41.742699455295345], [-70.665354246595044, 41.742969252211104], [-70.66569019443115, 41.742901303047532], [-70.666760031596624, 41.741732501492201], [-70.667126440797588, 41.741439132449841], [-70.667737403546823, 41.741457104939713], [-70.667767438719807, 41.741753913974044], [-70.66761454180768, 41.741918198780738], [-70.666943037757335, 41.743288099269328], [-70.666301468956618, 41.743909718110842], [-70.666057243784749, 41.74434633155024], [-70.665690057593622, 41.744522640223813], [-70.665170652633478, 41.744341006564483], [-70.664773727096616, 41.744410127556193], [-70.664864575628599, 41.744615633292725], [-70.665292883871302, 41.744987934535985], [-70.665383791690886, 41.745391526814714], [-70.66605614937221, 41.745922011621161], [-70.666423139186151, 41.745871845158184], [-70.666453859978262, 41.744872003196242], [-70.666606718913471, 41.744527100721946], [-70.667400542229757, 41.743957195669559], [-70.669722375272968, 41.742833438398506], [-70.670119399373633, 41.742746292900307], [-70.67057726798555, 41.743019206107689], [-70.671097197576728, 41.742966176746755], [-70.6712497242479, 41.743107928155709], [-70.671463573709829, 41.74356418251844], [-70.672746132275535, 41.743888103233239], [-70.673387776110232, 41.744184849555772], [-70.673816037316428, 41.744620145322479], [-70.674273393716945, 41.744730338801354], [-70.675342056469106, 41.745300286896935], [-70.676288624194513, 41.745466416299706], [-70.676717475033598, 41.745279804519591], [-70.677083623665567, 41.745256609477721], [-70.677633569477919, 41.745852049395346], [-70.677908108462901, 41.745856822631481], [-70.678152636475858, 41.745717856153242], [-70.678610541974237, 41.744963749757524], [-70.67864135443476, 41.744521609367183], [-70.678397145116662, 41.744318430395026], [-70.677114229878768, 41.743842044572915], [-70.676900509798543, 41.743493849131106], [-70.676748081813059, 41.743334098257279], [-70.676228356098648, 41.743287571485027], [-70.675220514160486, 41.743977540912603], [-70.674609292539913, 41.743977614732138], [-70.673479408160119, 41.74329124466243], [-70.672623922663632, 41.743178156212601], [-70.672379392290296, 41.742992339173554], [-70.672288023275584, 41.742741816158244], [-70.67225741418541, 41.74194024411991], [-70.672411173775913, 41.740344334884433], [-70.672013771538928, 41.739376855546766], [-70.671098489236513, 41.738669601294141], [-70.670120792518972, 41.738215615474331], [-70.668196281766868, 41.737865637590346], [-70.666089812625302, 41.737707339071903], [-70.665722694037626, 41.737568420535553], [-70.66575370851406, 41.737117370476248], [-70.665997466580492, 41.736861913533069], [-70.666548103277066, 41.736727554503538], [-70.666730928293092, 41.736562859895557], [-70.667066556136078, 41.735972766381252], [-70.667066900229486, 41.735513027968999], [-70.666700924923077, 41.735149022469699], [-70.666151368628491, 41.734805641419101], [-70.665234984801998, 41.734441020771015], [-70.663982717090747, 41.734143707669787], [-70.663342149700483, 41.734207162726236], [-70.662058817745503, 41.734739583377618], [-70.661264830921013, 41.735354469391915], [-70.660836326177034, 41.736522995303609], [-70.660836434839212, 41.737027216816415], [-70.660683598577407, 41.737506630784154], [-70.660469727314435, 41.737663163465562], [-70.659980246236117, 41.737661264552528], [-70.659338995007758, 41.737453943774049], [-70.658667500150983, 41.736905416572334], [-70.657630362926824, 41.735470623986224], [-70.656286265931911, 41.734390824376135], [-70.655523749873183, 41.733312081519223], [-70.654607539471186, 41.732631607519146], [-70.653049816340825, 41.731943114706468], [-70.648470053243045, 41.7304328491077], [-70.64743181442482, 41.730204482902437], [-70.645507915625785, 41.729611016677502], [-70.644348408656626, 41.729105380469669], [-70.644164962323529, 41.728918880300107], [-70.644133837677202, 41.728694087554288], [-70.644257202788438, 41.728260033439767], [-70.644592740396504, 41.728057084393114], [-70.64541756527872, 41.727918674618323], [-70.647036056271247, 41.727409121593283], [-70.64728057931211, 41.727180271762982], [-70.647311230723602, 41.726657731496097], [-70.647128024289174, 41.726426128061718], [-70.646730838531241, 41.726242532707296], [-70.645449359007074, 41.725900945656392], [-70.645052428027512, 41.725564188917097], [-70.644563529985362, 41.725328124413416], [-70.643220296030009, 41.724969120805341], [-70.642488390666045, 41.724096979096032], [-70.642519077419806, 41.723708959279747], [-70.644626470462484, 41.723822684901073], [-70.645389447146258, 41.723730541593348], [-70.646305677307026, 41.724050843346987], [-70.647678846236573, 41.725030767813628], [-70.647892945048397, 41.725288982968848], [-70.647983833850461, 41.72610731259023], [-70.64813578978567, 41.726339131020559], [-70.649112190581334, 41.727117981262403], [-70.650578850326568, 41.727547076257679], [-70.65137228815486, 41.727616560741509], [-70.651799768612648, 41.727529706581159], [-70.652166284497767, 41.727136802702134], [-70.652197157916433, 41.726793801899447], [-70.652105886225939, 41.726480234851593], [-70.651404017545005, 41.725652854752205], [-70.65152601067183, 41.725173133084525], [-70.65213656067634, 41.725128699953387], [-70.653449897407583, 41.725307926906758], [-70.654580141119538, 41.725336584007415], [-70.655496038584829, 41.725287106833186], [-70.655404856234142, 41.725765890583432], [-70.657388379008907, 41.726502523985978], [-70.657724623108535, 41.726524730567263], [-70.657938830481456, 41.726404221485247], [-70.657969650079849, 41.725971719706436], [-70.657847573886116, 41.725631458024587], [-70.657542301559928, 41.725284258570504], [-70.656046290135407, 41.724666492926197], [-70.654672248664994, 41.724506653640283], [-70.65433648054406, 41.724276810366234], [-70.653390768010667, 41.722858412313869], [-70.652016610748404, 41.722058628712269], [-70.651895064613527, 41.721853423589167], [-70.651131605865999, 41.721305785567395], [-70.651498663913927, 41.720643399648232], [-70.651498389548834, 41.720048596511106], [-70.650797214758796, 41.719455229933175], [-70.650491760320179, 41.719063529874425], [-70.649270975814659, 41.718288536973198], [-70.649240787298893, 41.71748695904143], [-70.650553568632304, 41.717098877388636], [-70.650767393798716, 41.716915351345989], [-70.651042707834577, 41.715956772643011], [-70.65128691871719, 41.715520821446276], [-70.652723341275021, 41.713851743684081], [-70.652662376193021, 41.713573787965899], [-70.652631948869654, 41.713349092838932], [-70.652845739622947, 41.712976389635408], [-70.657762879479804, 41.707464822761068], [-70.65987119232706, 41.70564134724178], [-70.661428493288327, 41.703736070752107], [-70.662893637447667, 41.702273630251099], [-70.66454296894085, 41.700952535158045], [-70.666344709241017, 41.698773286408468], [-70.667352448048547, 41.697813370070179], [-70.668879121926778, 41.696097393500914], [-70.670404945206485, 41.69493126129916], [-70.670862776052559, 41.694708418929608], [-70.671167908063666, 41.694541817798317], [-70.671778684987558, 41.693992522269667], [-70.674282492448697, 41.691505371744825], [-70.674771209504755, 41.69139015500933], [-70.675198235432518, 41.691438270679896], [-70.675411239144566, 41.692209651030453], [-70.67498331036262, 41.692873380746654], [-70.67489201333008, 41.693199111554868], [-70.67098486340663, 41.696354778652683], [-70.662038353855323, 41.705276906209718], [-70.657517781364248, 41.710143305402156], [-70.653608313310443, 41.713920184373301], [-70.653394399561137, 41.714166202423392], [-70.653088703905397, 41.715017593522738], [-70.653119291810086, 41.715656561678408], [-70.653546366226749, 41.715929856488515], [-70.654645579314632, 41.716156910658349], [-70.655316863910656, 41.716111291402576], [-70.656263895774984, 41.715295533606707], [-70.656660853313014, 41.715037990782832], [-70.657363476821814, 41.714838354041056], [-70.658310105533246, 41.714761440467989], [-70.660508511636351, 41.715153048696109], [-70.662981063614396, 41.715837547802629], [-70.664416240132667, 41.716483409309475], [-70.666339674056147, 41.717463814215797], [-70.668384824702429, 41.718884467577773], [-70.668629069551287, 41.719222818727232], [-70.668903384360632, 41.719984483893057], [-70.669269911234167, 41.720420518554022], [-70.670369019237071, 41.721332258279197], [-70.67067340463997, 41.721723896215828], [-70.670887710162191, 41.722982046310236], [-70.671162308780765, 41.723410111928629], [-70.672719566295612, 41.724189023449519], [-70.67348263761717, 41.724718414332941], [-70.67436766207733, 41.725633152046889], [-70.675253070638746, 41.726268673825281], [-70.677391269852095, 41.72743556460793], [-70.67897908566782, 41.727898302037424], [-70.679559051126233, 41.728214288527504], [-70.67995625631761, 41.728929000232355], [-70.680047357746929, 41.729819334032769], [-70.679772873324566, 41.730021656098167], [-70.678276215463029, 41.729980521617414], [-70.678276002923099, 41.72979143764951], [-70.678673085614676, 41.729524184883722], [-70.678764713711146, 41.729315504536906], [-70.678612111272116, 41.728741484005887], [-70.678276085675691, 41.72846723090143], [-70.678001415884069, 41.728534488474857], [-70.677390907105377, 41.729218879725344], [-70.677085570430108, 41.729268445937848], [-70.67696335350351, 41.72858551509438], [-70.67653545325895, 41.728240812199523], [-70.676321534502279, 41.72784705377309], [-70.67598589621258, 41.727599808384284], [-70.675131418095063, 41.72739670521748], [-70.67403212420794, 41.727304278960638], [-70.673786925313848, 41.727416219573215], [-70.67387873079339, 41.728189513002967], [-70.674947844502924, 41.727939572625992], [-70.675344208860437, 41.727960992194838], [-70.675558756649679, 41.728128578363282], [-70.675741653154503, 41.728513649980549], [-70.675711052631002, 41.728901137608169], [-70.675161505095744, 41.729404799359784], [-70.675039261916311, 41.729730846391682], [-70.674703088934535, 41.73020390749975], [-70.674703430561692, 41.730438012128481], [-70.674886736685195, 41.730642559279573], [-70.676046734007144, 41.730571544655383], [-70.676199501811951, 41.730758401050856], [-70.676230366370291, 41.73121728440168], [-70.676963351528471, 41.731440930138447], [-70.677726729619309, 41.732105352673074], [-70.678856068255797, 41.732466906494793], [-70.679528205175842, 41.73237612991629], [-70.67974235880294, 41.732192552146302], [-70.679955583834314, 41.731622338833311], [-70.680200149760992, 41.731438348972361], [-70.68047550627395, 41.731055953672396], [-70.681085641473871, 41.730136901354264], [-70.681451981180047, 41.73018572564331], [-70.681574833044309, 41.730391447745632], [-70.681635695397929, 41.730894934306221], [-70.681879576011482, 41.731467895637074], [-70.682276951748733, 41.731740867711757], [-70.682551899295177, 41.731737169438148], [-70.682398859521982, 41.730433383378369], [-70.680811415449597, 41.728763001013505], [-70.680444934383573, 41.727966847916683], [-70.68035300931183, 41.727346626196024], [-70.680444492282803, 41.727120475887666], [-70.680780607294878, 41.726862951499385], [-70.681360668814079, 41.726908721785108], [-70.685391703150671, 41.727641650240365], [-70.685880261737609, 41.728030602365223], [-70.686246541645602, 41.728583630262129], [-70.68682761273719, 41.7290615677896], [-70.688018441271808, 41.72952143252369], [-70.688293194466681, 41.729976918754069], [-70.690064112061165, 41.731139779254583], [-70.690461669375722, 41.73127766513511], [-70.691255905499162, 41.731328868891666], [-70.691560966531014, 41.731414951683263], [-70.692385640830892, 41.731483200960227], [-70.692660827808908, 41.731650644325327], [-70.693027306709723, 41.731689798049459], [-70.693607340979668, 41.731627548496959], [-70.693668128223166, 41.731392166585891], [-70.692843548952666, 41.730774058463417], [-70.692782711261117, 41.730594629440176], [-70.692263556610783, 41.730206030819978], [-70.690522696099762, 41.729610664590894], [-70.689728380472715, 41.729036687746579], [-70.688475938000437, 41.728307995060106], [-70.688354041029299, 41.728120294933589], [-70.688476488560184, 41.727848259051463], [-70.689636346696986, 41.727849226813007], [-70.689666971160392, 41.72762371663385], [-70.689391857143804, 41.727348309412164], [-70.687864989033727, 41.726407234050392], [-70.686979170389947, 41.726086855419503], [-70.686460363871305, 41.726157972100367], [-70.686002252771587, 41.72679514654061], [-70.685636229171209, 41.726845382140169], [-70.685421911914048, 41.726686280446309], [-70.685757872546844, 41.726024104301999], [-70.685697544714799, 41.725655682676553], [-70.685513857753946, 41.725451150544139], [-70.684505815970041, 41.724943676982342], [-70.684231472207856, 41.724695274307273], [-70.684232046643345, 41.724443168637862], [-70.68530068219772, 41.724580747088858], [-70.686002917218815, 41.724506985627329], [-70.687529224704861, 41.724096954670692], [-70.688720944508461, 41.724214670288909], [-70.689819114203317, 41.724099226637058], [-70.689941940953659, 41.724782147192244], [-70.690430012442008, 41.725153068493114], [-70.691529834097537, 41.725677527894682], [-70.69375875757153, 41.72739165104894], [-70.694614162057846, 41.727802340750422], [-70.695561189899024, 41.728058353893452], [-70.69794277611544, 41.728302504014515], [-70.699409820229803, 41.728766985754476], [-70.700935571178817, 41.728969576755787], [-70.702707368839896, 41.728970202161655], [-70.70457012625495, 41.728780012574894], [-70.705821780286428, 41.728833229007471], [-70.70658604938707, 41.729263451137477], [-70.707716074947385, 41.730363582449897], [-70.707716030068923, 41.730822780599382], [-70.706952619100292, 41.730960447990341], [-70.70615895068056, 41.731530536598186], [-70.706158798289906, 41.731755632961764], [-70.706953057891141, 41.732077474421018], [-70.707502829145284, 41.732050868924361], [-70.708113231904704, 41.731690457871565], [-70.708754567914696, 41.731500792311685], [-70.70967140586977, 41.731504908709162], [-70.712389167216543, 41.731707239274463], [-70.713152617055343, 41.731849196555402], [-70.71474081937815, 41.732329533119646], [-70.714129462129492, 41.73243786399668], [-70.710220611134801, 41.731893095556629], [-70.709518396989978, 41.73191244328455], [-70.709029109073924, 41.732073366567164], [-70.708632757522892, 41.732601212127392], [-70.70851089563736, 41.733035973544339], [-70.708480970613451, 41.734296850949619], [-70.707473501512354, 41.734870594743455], [-70.707076255440569, 41.735254996548051], [-70.706954446542724, 41.735626099200495], [-70.70716838069734, 41.736694550423721], [-70.707474625110677, 41.737473898320772], [-70.707444469114961, 41.738005458420112], [-70.707260722852624, 41.7383688371498], [-70.706803441841629, 41.738735893084936], [-70.705337074770583, 41.739325059289371], [-70.705062212899463, 41.73946432202645], [-70.702649464751502, 41.741527354414565], [-70.702343948674326, 41.741684493893587], [-70.702008171946005, 41.741617403545824], [-70.70072544069194, 41.740934286155181], [-70.699778538273961, 41.740795369150227], [-70.6995650377104, 41.740267140535032], [-70.699259851446115, 41.739947067311846], [-70.698770603075531, 41.739810278594078], [-70.697884520286721, 41.739922712126749], [-70.69739616690137, 41.740155083589713], [-70.697213163191833, 41.7403108217501], [-70.697182135934654, 41.740770882554202], [-70.696846500361971, 41.741028008470494], [-70.695776944419919, 41.74150324977181], [-70.694982774024197, 41.741713192197253], [-70.694982301236095, 41.741893807188596], [-70.695930194588087, 41.741897172227723], [-70.696754814177879, 41.741416780639319], [-70.697518350739969, 41.74125216980979], [-70.698282839187044, 41.741231713058227], [-70.699411549775789, 41.741367959000286], [-70.700266878470558, 41.74170648270055], [-70.701092406901637, 41.742352183965451], [-70.700909580035329, 41.743426236902465], [-70.701092699233087, 41.743559248651096], [-70.701427772109085, 41.743625706420154], [-70.702344514986208, 41.74346844005229], [-70.703413747747618, 41.742506834519574], [-70.70353538092111, 41.742306808310182], [-70.704177365282391, 41.741891444626795], [-70.704513449982272, 41.741895503435238], [-70.704696685734092, 41.742144930554261], [-70.704941325728569, 41.743014974335004], [-70.70481847313323, 41.743467732829806], [-70.704879937234693, 41.743880630377596], [-70.705613057618095, 41.7447703787116], [-70.705522086409175, 41.745231193683402], [-70.704911898384012, 41.745987764507319], [-70.704392576351168, 41.746446127687136], [-70.702803881450322, 41.747514945804937], [-70.70228486383985, 41.747792683523912], [-70.701918508054305, 41.747860977646901], [-70.698955963624698, 41.747797411471581], [-70.698956121337218, 41.748139560741294], [-70.699474879453078, 41.748843261165746], [-70.70011649370538, 41.749482543511903], [-70.700727568513585, 41.750103600266726], [-70.701216301464939, 41.750528591260796], [-70.701797101705267, 41.751168518045503], [-70.703538931111467, 41.752628627327098], [-70.705279928576516, 41.754548531991091], [-70.705891578845353, 41.755034505899616], [-70.706227056583046, 41.754957519930954], [-70.706654804177376, 41.754644733536743], [-70.707602074994071, 41.75443244268881], [-70.70821303588059, 41.754432189298612], [-70.708762769379902, 41.754550268609123], [-70.709404884136887, 41.754801793804546], [-70.70989321323745, 41.755208646224006], [-70.710443211075827, 41.755461777462422], [-70.711879595096363, 41.756539225140429], [-70.711880199596635, 41.757016435129792], [-70.711635290369927, 41.75733491849401], [-70.710505906130678, 41.757685541232533], [-70.710383404856273, 41.757867651072303], [-70.710474975783484, 41.758028104727465], [-70.711177931436183, 41.758341897949592], [-70.711147513555076, 41.758711386754491], [-70.71099496541747, 41.758921381058585], [-70.710964038207322, 41.759263854637823], [-70.710109223901668, 41.759375521259138], [-70.709925639215029, 41.759576295289698], [-70.709926218635729, 41.759927991015942], [-70.710079173544003, 41.760132809630598], [-70.710842774832301, 41.760445314519728], [-70.711087030016913, 41.760658057333409], [-70.711148316293986, 41.760836848652879], [-70.710721410719273, 41.761410770405959], [-70.710171188295277, 41.76184247472424], [-70.709651731082459, 41.762003192907308], [-70.707879961723648, 41.761984674353016], [-70.707206890266164, 41.762138730798476], [-70.706779543617671, 41.762415416709175], [-70.70635244835006, 41.76349407893516], [-70.70595541900029, 41.763652751776554], [-70.705252268163747, 41.763564562901507], [-70.703969204224322, 41.762628834515112], [-70.70314403790772, 41.762325937264912], [-70.701982316337251, 41.762145020614916], [-70.701156954238385, 41.761734060782743], [-70.700302308024547, 41.761530519089575], [-70.699752433222159, 41.761295347688289], [-70.698865258424647, 41.76131783449209], [-70.698316225769332, 41.76152385287498], [-70.697735852347662, 41.761505721050042], [-70.69678900893166, 41.761825980525863], [-70.696391110441979, 41.762444443226059], [-70.695932627680676, 41.762649468245954], [-70.695505096616913, 41.762583422601026], [-70.694374870849614, 41.762032950605551], [-70.694008445590811, 41.761966160910482], [-70.692938562898178, 41.762171348533535], [-70.692541287192427, 41.762537693267888], [-70.69205298904204, 41.763292269593023], [-70.691869293255266, 41.763429896840222], [-70.691258111654747, 41.763583127706362], [-70.688936612360962, 41.763770922187199], [-70.688783836305731, 41.763935326154304], [-70.688722761713024, 41.764161069294701], [-70.689028344927848, 41.764246531117756], [-70.690066231576267, 41.764159373661137], [-70.691532720492958, 41.764452872770413], [-70.691931114999022, 41.764455699295148], [-70.692388811025822, 41.764134264212743], [-70.693336180347444, 41.76262489994253], [-70.693701916772966, 41.76255599814435], [-70.69449725170621, 41.763085021107791], [-70.694711113138993, 41.763406171416925], [-70.696238700738959, 41.763680323046252], [-70.697063392779171, 41.763704146311099], [-70.697552465402069, 41.763543811434829], [-70.697705060864877, 41.763334465391665], [-70.697857971270068, 41.762764875316726], [-70.698102291296351, 41.76249089611013], [-70.698468652507131, 41.7624675431531], [-70.700149825502194, 41.762874450064821], [-70.703083617761408, 41.763794769072753], [-70.703510707601822, 41.763743192290455], [-70.703969036644196, 41.763790334736534], [-70.704274625892367, 41.764272466876839], [-70.704641719599039, 41.764519215752614], [-70.705528084237571, 41.764748876880418], [-70.705985780307202, 41.76475089726771], [-70.707055147141077, 41.764132035100459], [-70.707330250499353, 41.763884632000675], [-70.707757881593551, 41.763013689799621], [-70.70824645700965, 41.762619204780883], [-70.709804324561119, 41.762577708777116], [-70.712278939063253, 41.762252158986307], [-70.713318324553512, 41.761344817161593], [-70.713440479593231, 41.761063749171591], [-70.713714780220229, 41.760429158505438], [-70.713928050694747, 41.760101988737389], [-70.714142182171187, 41.760017389042154], [-70.714478040172935, 41.760057431733493], [-70.714875801151962, 41.76062795844134], [-70.715242057524378, 41.76097379998884], [-70.715547876877096, 41.76092413400383], [-70.715731645453047, 41.760795383308924], [-70.71600665111049, 41.760836082968183], [-70.716037301558259, 41.761709129782467], [-70.716740041354257, 41.762320554835767], [-70.717809634419353, 41.762898569402495], [-70.718085685280542, 41.763768167621421], [-70.718482978939676, 41.764194706113599], [-70.718758286097028, 41.764703602507154], [-70.719094024142564, 41.764932711905878], [-70.720775664056006, 41.765474824508665], [-70.721111774246921, 41.76549684139146], [-70.721019431474815, 41.76490366526874], [-70.72049883172258, 41.764173041747306], [-70.719582611434205, 41.76321406942602], [-70.71747313862879, 41.761525418437465], [-70.716709372716281, 41.760771677179441], [-70.715272061716504, 41.759667273784572], [-70.714966918732372, 41.759329776850016], [-70.712643403780589, 41.757680707113764], [-70.712521629432743, 41.757502038675653], [-70.712643846733343, 41.756698656737861], [-70.71242946473798, 41.756287498051314], [-70.711420992553769, 41.75521302054009], [-70.709495406637529, 41.753404568913069], [-70.709221261725574, 41.752967057946215], [-70.708579134293331, 41.752058247656066], [-70.708487470826171, 41.751780200922859], [-70.708854142249251, 41.751027592275349], [-70.708761738375586, 41.750479333916388], [-70.708578221226389, 41.750103857294349], [-70.708272701529495, 41.749531697767708], [-70.708272176373129, 41.749234565995586], [-70.708455520824671, 41.748934750266457], [-70.709128021675951, 41.748456003160626], [-70.709494182847038, 41.74831565342128], [-70.710685261593298, 41.748252423157588], [-70.710899435198996, 41.748132354740079], [-70.710685227692167, 41.747856251877565], [-70.708852268745588, 41.747451324904979], [-70.708241218723259, 41.747037401697654], [-70.708119261582269, 41.746507575257851], [-70.708240749677643, 41.746163480847216], [-70.708607524378209, 41.745914461335396], [-70.70927970642613, 41.745643340987584], [-70.710043566734484, 41.745667820037319], [-70.710623428662998, 41.745803477380719], [-70.711601529559672, 41.746257115300807], [-70.713373157380175, 41.747491642749068], [-70.713831281038679, 41.747790763611675], [-70.715053956255431, 41.748060939569278], [-70.717070263237801, 41.748814216484753], [-70.717254539547582, 41.749072633892681], [-70.717223598567742, 41.749478225923575], [-70.716521241422711, 41.750101417423799], [-70.715879999797437, 41.75027987352518], [-70.715420403131517, 41.750069079057191], [-70.714682851072524, 41.749856276538175], [-70.714220844650342, 41.749783310017598], [-70.713954789173258, 41.750113537425221], [-70.714291562710571, 41.750387688321574], [-70.715666573455209, 41.750456770922618], [-70.715941179867301, 41.750614518772636], [-70.716124544658143, 41.751593872463403], [-70.717255501382198, 41.752369230890764], [-70.71786572401227, 41.75248651144868], [-70.717927491629752, 41.752872391618709], [-70.718385887852577, 41.753154118074562], [-70.718905208380164, 41.753055846627404], [-70.719577387759145, 41.753495971628581], [-70.720402409114243, 41.754339611806614], [-70.721594779034859, 41.755096168427173], [-70.722358432798188, 41.756075513474507], [-70.72266436635077, 41.756349968778167], [-70.723000274636419, 41.756444010023401], [-70.723520141647697, 41.756282603999715], [-70.723519685615813, 41.75610252344925], [-70.723152898139944, 41.755729783361012], [-70.721899179293615, 41.754479231836335], [-70.721440547019398, 41.753603262571957], [-70.721440697350602, 41.753216096970554], [-70.721624495623047, 41.753032773682875], [-70.722387816312704, 41.752832608985926], [-70.722906967704333, 41.752599260089077], [-70.724221137313805, 41.752237348772184], [-70.724312420050126, 41.751938591682325], [-70.72357912632296, 41.751391112111271], [-70.723059107548977, 41.751390357353046], [-70.722448254151928, 41.751660807149328], [-70.721806843612356, 41.751823628703946], [-70.720309555795893, 41.751386785501445], [-70.718965513573664, 41.751388832004942], [-70.718384961158463, 41.751019112043608], [-70.717468644432017, 41.750979055797004], [-70.717437391133359, 41.750772292068881], [-70.71768207549313, 41.750516822133903], [-70.718751327309747, 41.750094766284882], [-70.719026224967479, 41.749865341875811], [-70.718995249165971, 41.749596183619971], [-70.717620626041096, 41.748544550527193], [-70.716611367397078, 41.747929220932186], [-70.716610766847538, 41.747488026596294], [-70.716886601947351, 41.747240696076297], [-70.717558061364372, 41.746987529824935], [-70.717741882743354, 41.746831224606673], [-70.717679432774702, 41.745706481016228], [-70.717923494147044, 41.745225279071022], [-70.718412501817141, 41.744749719584007], [-70.71841203009555, 41.744542627308348], [-70.717159372750899, 41.744516016007331], [-70.716609760867456, 41.744452631092805], [-70.716426257980473, 41.744338279937907], [-70.716365834760566, 41.744059824287127], [-70.716151191486901, 41.743945798635835], [-70.714990815961315, 41.744080787957678], [-70.714226861355414, 41.744407492841646], [-70.713708127125344, 41.744424171399956], [-70.713463481861766, 41.744247446552677], [-70.713432743274737, 41.744058782926992], [-70.713127268890574, 41.743784305194097], [-70.712668910185712, 41.743692178969951], [-70.711845304011248, 41.744497372311386], [-70.711233886336913, 41.744659171113071], [-70.710470531217723, 41.744769851612055], [-70.709645838200316, 41.744746123713959], [-70.709523386524467, 41.744585995289462], [-70.70952326939836, 41.743721080819398], [-70.709401048849571, 41.743425895268224], [-70.70857553183275, 41.742645286687143], [-70.708788995437942, 41.742552229055512], [-70.710377791272606, 41.742303223712163], [-70.711629482339546, 41.74188817246764], [-70.713096216714234, 41.741181337060631], [-70.713981698955664, 41.740970278354709], [-70.714500452540378, 41.740763977035648], [-70.715539204015556, 41.739965289569732], [-70.715538970495984, 41.739739560555144], [-70.715233079618471, 41.739627155422546], [-70.715049685395428, 41.739260693858647], [-70.715293538917976, 41.738590504471645], [-70.715935143034145, 41.738157605084659], [-70.716667833770828, 41.737903245503233], [-70.717216715983199, 41.73735445142173], [-70.718286385123136, 41.736968959862971], [-70.721340340886783, 41.73623859942294], [-70.721705374474013, 41.735936133467803], [-70.721614459996971, 41.735505036515576], [-70.721583627990185, 41.735046168286793], [-70.722011023178609, 41.735021537239255], [-70.722560722941338, 41.735229499540573], [-70.723599228276214, 41.735889365983638], [-70.724088072140916, 41.736071154791155], [-70.724608385885972, 41.736621684482529], [-70.725647648368962, 41.737470618700009], [-70.727113387980921, 41.737331382008378], [-70.728335194007784, 41.737402695076334], [-70.728670076492321, 41.737235601004599], [-70.728976243779684, 41.736897778178147], [-70.729983803934985, 41.73680159138376], [-70.730594386053696, 41.737008305580538], [-70.731175115927272, 41.737008896399715], [-70.73169395421921, 41.736938116196626], [-70.732702372827433, 41.737210529592851], [-70.732701674299037, 41.736958416533149], [-70.732335316802107, 41.736774699501197], [-70.731235114303999, 41.736458354578232], [-70.727171595273148, 41.733970540528333], [-70.726499336870361, 41.733440419686104], [-70.726498950399488, 41.732936199957109], [-70.726652141839807, 41.732663702698531], [-70.726620456391089, 41.732024212231856], [-70.726529427153508, 41.731818755720049], [-70.726405343321517, 41.730739698443394], [-70.725947350446859, 41.73000844250803], [-70.725550102276856, 41.729780014038248], [-70.722739400641942, 41.728822837621777], [-70.722343079753031, 41.728549384745371], [-70.72206778228437, 41.728138998001803], [-70.721945516606439, 41.727726775166573], [-70.722250040974743, 41.726812170434009], [-70.722249779772667, 41.726488028867735], [-70.721699524819343, 41.725532648540039], [-70.721485967553321, 41.724751812285596], [-70.720783219758346, 41.723924860097306], [-70.720814109510499, 41.723609305258677], [-70.720996395472454, 41.723444611057474], [-70.72197329170443, 41.723195220619886], [-70.722492682038222, 41.723169506194189], [-70.722736662930785, 41.723238161015246], [-70.723562373910596, 41.723838051418532], [-70.724173392179779, 41.724432511233779], [-70.725180824316183, 41.725074685518784], [-70.726983827209494, 41.726857913974094], [-70.727472245268459, 41.727129634558757], [-70.728512049415286, 41.728023566747432], [-70.729152579912267, 41.728410569769466], [-70.729580621737, 41.728457946006905], [-70.730191480814838, 41.728385544727701], [-70.730587390622034, 41.728226691281584], [-70.730832428665011, 41.728249776094167], [-70.73092393685306, 41.728635850077801], [-70.731229657216772, 41.728820243111073], [-70.731870967092391, 41.728774509793581], [-70.732512457079707, 41.72859362595878], [-70.732878731901977, 41.728750330610161], [-70.733122694353071, 41.728953390625321], [-70.733306220986478, 41.729274894277651], [-70.734009187973768, 41.729570540639983], [-70.734070806004993, 41.730326109776293], [-70.734162786773538, 41.730514189049956], [-70.734620993869541, 41.730804223090999], [-70.735232254814591, 41.731010917309384], [-70.735537407532789, 41.731033765382264], [-70.735995741430372, 41.731494958433103], [-70.73657689425481, 41.732089690107827], [-70.737279503242419, 41.732610500252683], [-70.737860053927946, 41.732935105192595], [-70.738257020214164, 41.733505005002399], [-70.738623867994392, 41.733869323828408], [-70.738472680534244, 41.735429942960089], [-70.738137577468024, 41.736092276731185], [-70.737465262766577, 41.736111366816012], [-70.737710459466143, 41.736567163427239], [-70.737466981818486, 41.73801182416463], [-70.737559254461104, 41.738559967010509], [-70.737559906105759, 41.739704002397978], [-70.737713773401154, 41.739845762847686], [-70.738079248098941, 41.73972323502155], [-70.738077556256357, 41.737939918375424], [-70.73819992282651, 41.737577791260975], [-70.739694695424902, 41.735744240028389], [-70.739816749056033, 41.73517493047332], [-70.740212305767031, 41.734097106817394], [-70.740211919661633, 41.733250200821935], [-70.740455798657052, 41.732958121808032], [-70.740699619143811, 41.732134723901567], [-70.741034883729242, 41.73185955002716], [-70.74216525479379, 41.7317882949989], [-70.743050573672178, 41.732018109818704], [-70.743783636142865, 41.732285803322966], [-70.743936846484019, 41.732472570367072], [-70.743845418214789, 41.732834368648994], [-70.742900209086315, 41.733731805510473], [-70.742503254376587, 41.733917706395587], [-70.741740061350342, 41.734506341521175], [-70.741374060563174, 41.735060972716454], [-70.741344404903643, 41.735908308456565], [-70.742017054009096, 41.73684351696398], [-70.742995627716468, 41.737639574879459], [-70.744003498275035, 41.73830859417383], [-70.744797834521677, 41.738575516842388], [-70.745561437332015, 41.738717346823258], [-70.745958297424693, 41.738918060152173], [-70.746570411272444, 41.739449377385334], [-70.746509372953042, 41.739630221160503], [-70.746173909884462, 41.739788359749191], [-70.745685527395736, 41.739814388414636], [-70.745471234398096, 41.739952528574754], [-70.745440672288822, 41.740249993359214], [-70.746479793912613, 41.740792603082156], [-70.746052807609573, 41.741798839185549], [-70.7454429040951, 41.742646204442487], [-70.745168327101339, 41.742767647674519], [-70.744923955848847, 41.742744058318152], [-70.744679526134078, 41.742603417911468], [-70.744404316787723, 41.742310677694434], [-70.744312104476393, 41.741528441003901], [-70.744067705268364, 41.741324772436791], [-70.743609144280924, 41.741440488574213], [-70.743457093479734, 41.741712385523876], [-70.743517556338531, 41.74209878256228], [-70.744099292803128, 41.742810618578844], [-70.744160315764901, 41.743404107655827], [-70.74382598476997, 41.744733918901979], [-70.743551352089526, 41.744980871478162], [-70.74266600203633, 41.745417797322816], [-70.742513773156233, 41.745987449452265], [-70.743431368798497, 41.747315404807637], [-70.743523513571319, 41.747656452666376], [-70.743555289038284, 41.749034253656141], [-70.743677678145161, 41.749329402469478], [-70.743800156280898, 41.750084288347914], [-70.744321558592816, 41.751562670227187], [-70.744352241445029, 41.7523636765495], [-70.744139097386565, 41.752817497173496], [-70.744169991640547, 41.753600497212673], [-70.743742837449091, 41.753940348660151], [-70.7431630687406, 41.754606744592145], [-70.742704540710591, 41.754965021729568], [-70.742583449514044, 41.755381185106813], [-70.742736085807749, 41.755630886386783], [-70.74270581845785, 41.756064040659382], [-70.742216957747672, 41.756413650616111], [-70.741422394552458, 41.756704858989799], [-70.74017113026828, 41.756985273105634], [-70.73971331960982, 41.75769460353257], [-70.739774680910031, 41.758126117685769], [-70.740600258651156, 41.759203082883161], [-70.740753455176346, 41.759587848323832], [-70.740723355951957, 41.760228091871284], [-70.740510602708284, 41.760897460783568], [-70.740113054755824, 41.761462052481804], [-70.740144652368841, 41.761767764021975], [-70.740389237547717, 41.76197144164756], [-70.74112253806274, 41.762338193736625], [-70.741825157236406, 41.762858882807002], [-70.741947611793194, 41.763109554598707], [-70.74265155047199, 41.763773768621355], [-70.743170778486601, 41.763910566002906], [-70.743170356357709, 41.763225730539297], [-70.742007861304998, 41.762126824873818], [-70.741121652308749, 41.761491825630557], [-70.741029914129015, 41.761186794187068], [-70.7417622823247, 41.760365567628192], [-70.741853601344857, 41.759571585361073], [-70.741639177780826, 41.758610617625408], [-70.742829062961377, 41.757484677614514], [-70.743592641070933, 41.757139680746903], [-70.744508500023699, 41.756342705087917], [-70.744844035609475, 41.755931923295499], [-70.745149229454924, 41.755035811929879], [-70.745270521938238, 41.754214474147943], [-70.746093380530482, 41.752336947818115], [-70.746306323409271, 41.750757640768789], [-70.746153557153889, 41.750579884163116], [-70.746121890983446, 41.750084462673904], [-70.74618281514222, 41.748966767665522], [-70.746517732735782, 41.748349338634831], [-70.746455856585655, 41.747224618108987], [-70.746546950009929, 41.746952854196927], [-70.747401216473904, 41.746327062130277], [-70.747889509270294, 41.745761424311404], [-70.747950040091993, 41.7447967012722], [-70.748529498218176, 41.744022233138445], [-70.748741303071952, 41.742307316088862], [-70.748435603107197, 41.741753813065756], [-70.748740634294279, 41.741433937920526], [-70.748892892817182, 41.741070826403764], [-70.748953727971482, 41.740313733440182], [-70.749288536231433, 41.739443737958645], [-70.74931775671989, 41.738389309211698], [-70.749500727567565, 41.738071508671752], [-70.749830093134634, 41.738042165362259], [-70.750684250153071, 41.738632409075777], [-70.751509360253365, 41.739097031704397], [-70.752028150248535, 41.740097616834944], [-70.752240993794629, 41.740328612554642], [-70.752667908228105, 41.741384865354021], [-70.753064114152963, 41.741747618638598], [-70.753614362386074, 41.742045562054599], [-70.754652438185374, 41.742408012720624], [-70.755720932040958, 41.742616506787165], [-70.756698889919548, 41.742547441627359], [-70.756952578543348, 41.742473104648916], [-70.756455750859871, 41.741911623557193], [-70.756517048278155, 41.741406727908135], [-70.75590593991231, 41.741172598355199], [-70.755569917450416, 41.740926127970006], [-70.755478218243951, 41.740738158450647], [-70.754745951454893, 41.740173419712654], [-70.753342096315365, 41.738844079611653], [-70.751326757835585, 41.7374965671994], [-70.749861873989474, 41.736871243487393], [-70.749499521718406, 41.736864354038573], [-70.748858502812311, 41.736910279041183], [-70.748279101887846, 41.737297493167908], [-70.747942599424121, 41.737320662217044], [-70.747607094096125, 41.737136658142319], [-70.745619525910115, 41.735284470921115], [-70.745588734229145, 41.734807602673456], [-70.745770989332783, 41.734642778841611], [-70.746504552267638, 41.734433253398215], [-70.746748204109025, 41.733934070855824], [-70.74686981039811, 41.733274712387015], [-70.746624505687961, 41.732629944104481], [-70.744607574489763, 41.730805095129561], [-70.744576064604033, 41.730481287562938], [-70.743597512253373, 41.729406753139067], [-70.742681410950922, 41.728907071898931], [-70.741153783871212, 41.728335870234865], [-70.74103230323189, 41.728950114512202], [-70.74115427523941, 41.729245804030604], [-70.741124776966259, 41.729705434770239], [-70.740850181121274, 41.729862792621816], [-70.739628789479113, 41.730070735533822], [-70.739201248031051, 41.730050502173995], [-70.737643030300958, 41.729091792664029], [-70.736848304153753, 41.728356615247826], [-70.736359419023003, 41.728129951437403], [-70.735350798493727, 41.727352811174732], [-70.734801159593559, 41.727081793662315], [-70.73339630700049, 41.726805558732835], [-70.733273646903285, 41.726510486246703], [-70.732571101495935, 41.725962639420381], [-70.732509939255692, 41.725711289425917], [-70.731746754430802, 41.725020137127338], [-70.731288386744083, 41.724658058792023], [-70.730463248020499, 41.724652484657533], [-70.729548138860423, 41.724981690137135], [-70.729303744394684, 41.72497607434736], [-70.729181285823088, 41.724725927993518], [-70.729119081441951, 41.723745254755528], [-70.728966667683849, 41.723467893679882], [-70.728874373660929, 41.722740205495455], [-70.728690933109732, 41.722166046127192], [-70.72820128920273, 41.721660221356451], [-70.728201724716172, 41.721246045895342], [-70.728078379835594, 41.721040371627161], [-70.727467859219701, 41.720563526778236], [-70.726880828853822, 41.720221896313269], [-70.72642993185579, 41.719813658771201], [-70.726032657500369, 41.719126123414668], [-70.725757520363345, 41.718733664174408], [-70.725022817279992, 41.716925637621607], [-70.724748055437004, 41.716632311118481], [-70.723160702250098, 41.716197137200012], [-70.72270159357096, 41.715717427640797], [-70.721906814435229, 41.713820011363694], [-70.721387618791411, 41.713224455725516], [-70.721051491264731, 41.71295032876548], [-70.719860276373851, 41.712400317090562], [-70.717997771262304, 41.711689735703878], [-70.715768742467247, 41.710984972792907], [-70.714852517048826, 41.710827841485944], [-70.714790932512372, 41.71043187560899], [-70.71445525885278, 41.709977654093095], [-70.713325278637939, 41.709040197997943], [-70.712684825484146, 41.708328963976669], [-70.712348708835492, 41.707415534217979], [-70.712347775717262, 41.706847741989954], [-70.71256193744766, 41.706385523315056], [-70.713781882590169, 41.704673672202368], [-70.713963737527649, 41.70286064309321], [-70.714452624797048, 41.702429580445951], [-70.714817866725099, 41.701793904846248], [-70.717779536296177, 41.70178503594704], [-70.719031343771505, 41.702333865892321], [-70.720986075474386, 41.70352956293204], [-70.721931689774948, 41.703821364523705], [-70.72245028287351, 41.703660587577566], [-70.723274971934615, 41.703611655014107], [-70.724068707113247, 41.70391527774806], [-70.72587080329005, 41.70507671492129], [-70.72751903772884, 41.705394045382107], [-70.729229333031611, 41.705926694795984], [-70.729839863152392, 41.706422169344549], [-70.730267395947493, 41.706559489342318], [-70.730633819457211, 41.706563137251827], [-70.730633155393534, 41.706238993084519], [-70.730419375214311, 41.705971933375487], [-70.728312586576862, 41.704661650240865], [-70.727701540449317, 41.704121774638431], [-70.727609487395227, 41.703158904953611], [-70.727699851573931, 41.702581018644523], [-70.727608677248767, 41.702420580996446], [-70.726845132104245, 41.701945484164064], [-70.726051893219989, 41.701165218380915], [-70.725195974733225, 41.700502651216219], [-70.724890172602116, 41.700119614498213], [-70.724645064483212, 41.698655353465995], [-70.724370571250418, 41.697920746660088], [-70.72339321127555, 41.696935538965846], [-70.723331953107675, 41.696756663838926], [-70.723117437113189, 41.69652560046729], [-70.722476657973374, 41.69593146956322], [-70.721163543672532, 41.694969788727917], [-70.720644263692634, 41.694788406784738], [-70.720277907146169, 41.694784816747301], [-70.719363059012579, 41.694906850295254], [-70.719026758687349, 41.694812793199489], [-70.717591480295951, 41.693807463658551], [-70.716431703886386, 41.692870371757969], [-70.71560802145774, 41.691927751822369], [-70.715576369846232, 41.691540906284779], [-70.715667823043248, 41.691332196051668], [-70.717071643022066, 41.690671613291173], [-70.718016951980502, 41.689684893677629], [-70.718200196767299, 41.689159424928917], [-70.718138146494553, 41.687809494947096], [-70.717649708980815, 41.686987953674446], [-70.716642043616147, 41.685841487630803], [-70.716977440536198, 41.685367670126155], [-70.717404455965905, 41.684424658508831], [-70.717312342401883, 41.684011556382337], [-70.716946214414762, 41.683719742004698], [-70.71606066550801, 41.683237607959718], [-70.715785665660263, 41.682890683703739], [-70.715113722447839, 41.681153429983382], [-70.715174296229165, 41.68083700060685], [-70.716029191581129, 41.680446182711762], [-70.716333674190835, 41.680405511844427], [-70.717157962598534, 41.680924408650213], [-70.718013397617895, 41.681136750695103], [-70.718256578962723, 41.680952761483624], [-70.718287579665102, 41.680745344624825], [-70.717981926497558, 41.680488884074961], [-70.717127332144486, 41.680267453578367], [-70.716791790417233, 41.679804234687936], [-70.716791300209735, 41.678687207675154], [-70.716180398206049, 41.678065693447493], [-70.715813502086192, 41.677134592957941], [-70.715844238537485, 41.676557474765936], [-70.716362632591597, 41.676513776204743], [-70.717522190255011, 41.676649432676854], [-70.718437943383577, 41.676923593350587], [-70.719414229507876, 41.677404711319511], [-70.719841642775478, 41.677839289820866], [-70.720270017556601, 41.679121319648964], [-70.720331060336477, 41.680084074276998], [-70.720514613336604, 41.680396506580031], [-70.721308225199365, 41.681060305682131], [-70.722224180738607, 41.681541526236735], [-70.722865228262521, 41.681973051276024], [-70.723109472275453, 41.682293817206379], [-70.723995943397924, 41.683010003578168], [-70.725002094116192, 41.684130012021853], [-70.726163214411827, 41.685112045543875], [-70.727964399204978, 41.686706083934475], [-70.72921686348424, 41.687741017915933], [-70.729857835451398, 41.688128022840466], [-70.733337261566788, 41.688813304361702], [-70.734223377219024, 41.689295396341009], [-70.735505094151662, 41.689654625750904], [-70.737642479583897, 41.691260940931343], [-70.738650561002842, 41.69212864063298], [-70.740176753452943, 41.692654943450627], [-70.740420747759103, 41.692875996522368], [-70.740635468309705, 41.693791862918054], [-70.741521424388537, 41.694895163302377], [-70.74155247399996, 41.695254984892586], [-70.741186662561361, 41.695873183204647], [-70.740819989817822, 41.695986707580637], [-70.74072884076179, 41.695690682423141], [-70.740514247863061, 41.695370153227984], [-70.739964906035596, 41.694964102601688], [-70.737186072270603, 41.693430067355251], [-70.735933985374288, 41.692494268241781], [-70.734376802754639, 41.691148436767669], [-70.733826721989729, 41.690319168629472], [-70.733307680069558, 41.689867729620332], [-70.731567921142585, 41.689200961888744], [-70.731383801562572, 41.689338738318213], [-70.731263716001507, 41.691124027323482], [-70.731448179206225, 41.691697560079014], [-70.732057870361544, 41.692102979211924], [-70.732119005157884, 41.69235378970491], [-70.732393948675153, 41.692566065363557], [-70.733157307139024, 41.692860506449698], [-70.7334627606065, 41.693063440965851], [-70.733767241091755, 41.693427897698889], [-70.734043024209043, 41.694162489994639], [-70.734807074379063, 41.695033623120992], [-70.734868039734081, 41.695239501537898], [-70.735264912854618, 41.69567489556286], [-70.735601526307249, 41.6964081818805], [-70.735602040241474, 41.696957962081875], [-70.735754822051177, 41.697432772194645], [-70.736274157803663, 41.697866193434017], [-70.736519105260058, 41.698168926581062], [-70.737038243853632, 41.698710389660789], [-70.737678891581695, 41.699006768454019], [-70.738595612211085, 41.699677481192218], [-70.738840157914566, 41.700106260753351], [-70.739940309265137, 41.70145852167358], [-70.742108394388197, 41.703173090435264], [-70.742689841697342, 41.703857833379523], [-70.743881095859521, 41.704722291454082], [-70.744125265695388, 41.705024912561818], [-70.744460959141747, 41.705686134461935], [-70.744890157223907, 41.706193199215669], [-70.745225889918785, 41.706323190904406], [-70.745806200603838, 41.706305068177521], [-70.745866271928293, 41.705979616305221], [-70.745071708335558, 41.704911352538481], [-70.744979746525644, 41.70394903952112], [-70.744856836320707, 41.703491277852926], [-70.744061970399272, 41.702503409191706], [-70.744060727135022, 41.70168404914935], [-70.744183154556737, 41.70142996273281], [-70.744518593184409, 41.701226811631074], [-70.745007086511905, 41.701156311523143], [-70.745495897635351, 41.701292900375549], [-70.746564703072465, 41.702321379224315], [-70.747633725129873, 41.703007702582923], [-70.748611477709005, 41.703487945064765], [-70.749496854870387, 41.704059949593571], [-70.752332215872258, 41.706187764699102], [-70.753033101859884, 41.70728462443283], [-70.753429119600554, 41.708314202704756], [-70.753916998490283, 41.709072104985829], [-70.754466102690429, 41.709640064575311], [-70.755838993505677, 41.710510627281877], [-70.756297240283956, 41.711061776867474], [-70.756296647736519, 41.711629015847038], [-70.755929374393006, 41.711995143257624], [-70.754647890278889, 41.712113983948633], [-70.754219948703806, 41.712426316013982], [-70.754127740117028, 41.713346356180104], [-70.753943399658482, 41.71387187377325], [-70.754890588392342, 41.713848274832124], [-70.755225875068746, 41.714104197615207], [-70.755316284602102, 41.714760449807414], [-70.755224107529884, 41.715544802836817], [-70.754980263809671, 41.716206161072719], [-70.755529106378376, 41.716224968180931], [-70.75613986797778, 41.716251470379383], [-70.756078575472671, 41.716891963936945], [-70.756109018400565, 41.717260240403931], [-70.757237558381533, 41.718377334058587], [-70.757359253726548, 41.719177219851851], [-70.757358555560259, 41.720095608172251], [-70.756593601547394, 41.72123356461379], [-70.756531948802845, 41.722080604333478], [-70.75668435004539, 41.722492985437995], [-70.757020386031172, 41.722451240099332], [-70.757204276148201, 41.721530175531001], [-70.757356506426746, 41.721140581805237], [-70.757999013168686, 41.720662524913074], [-70.758487970148693, 41.720501390397814], [-70.758823230512917, 41.720577315080867], [-70.760318883574641, 41.721167160413884], [-70.760838264220197, 41.721149734822234], [-70.759861867610923, 41.720417500998543], [-70.758946708433882, 41.719567436717156], [-70.758489512115361, 41.718835688067813], [-70.758154007895328, 41.717715313990617], [-70.758031679918318, 41.717528227084998], [-70.758032323648848, 41.717276123433635], [-70.757758058215046, 41.716802803817565], [-70.757179048583552, 41.714695457239102], [-70.757088173439755, 41.713571093269962], [-70.757210862683706, 41.713416037206059], [-70.757607898727983, 41.713167059606278], [-70.757577731230654, 41.712888283639415], [-70.757120025163275, 41.712526313889342], [-70.757120229108551, 41.712291674791267], [-70.757516813349994, 41.71213273313105], [-70.758249478730761, 41.712130216583127], [-70.760142291450435, 41.71265962600711], [-70.760936061970071, 41.712548362603712], [-70.761639030412113, 41.712339623316893], [-70.762402526049982, 41.711904464977543], [-70.762829761018367, 41.711951711570485], [-70.762982414796909, 41.712291514872767], [-70.762371441699756, 41.712661217137956], [-70.762766859660317, 41.713987884685096], [-70.763133190642975, 41.714378502502434], [-70.763408347944349, 41.714464199148111], [-70.763896615446683, 41.714357600622677], [-70.76441596457714, 41.713899510610645], [-70.764659552164673, 41.713940431191638], [-70.764995672530603, 41.71410638190406], [-70.764964632101822, 41.714809651973759], [-70.764842717700603, 41.715180813592546], [-70.764812013238412, 41.715541309369762], [-70.765299543164133, 41.71613699997355], [-70.765543953725953, 41.716232577252114], [-70.765758319857156, 41.71606684872043], [-70.765697585941098, 41.714816002961406], [-70.766339507641817, 41.714220845970672], [-70.766309371052799, 41.71307770364588], [-70.766004212130312, 41.712434212392623], [-70.766035943332099, 41.71133486757634], [-70.765883118991169, 41.711040086580759], [-70.765089627332912, 41.710377145315768], [-70.76512074261548, 41.70978201183749], [-70.76472377535039, 41.709392282843147], [-70.764235922572567, 41.708453810711774], [-70.764236098771704, 41.708156684859205], [-70.764115180182088, 41.707492409580631], [-70.763901408993618, 41.707243421473002], [-70.763504886535557, 41.707015220208895], [-70.763047485043131, 41.706419176060145], [-70.762773262200142, 41.705432559106704], [-70.762499052324088, 41.705184887516602], [-70.761552792011329, 41.705045945386281], [-70.761369635189027, 41.704842170269409], [-70.761248149675311, 41.704105316930743], [-70.761065162753084, 41.703855982906461], [-70.759905414394225, 41.703603632754721], [-70.759478277644774, 41.703169209729701], [-70.757860958991643, 41.702302228909097], [-70.757007133531118, 41.701450835953459], [-70.757037983669449, 41.701153369854545], [-70.757251377229906, 41.700862137358769], [-70.757099133899771, 41.700378266872143], [-70.756916385779704, 41.700038348740627], [-70.755970830929868, 41.699278638265696], [-70.755665953501151, 41.698842208547937], [-70.755362060992823, 41.697774974093676], [-70.754751961033406, 41.697109197100893], [-70.754782427414398, 41.69664956950799], [-70.755393588784344, 41.696171863469282], [-70.756156869949663, 41.695277639691952], [-70.75637073165008, 41.694913840872601], [-70.756462675357298, 41.694434986189215], [-70.756158442013813, 41.693449326441112], [-70.756280809563123, 41.693267167823961], [-70.757227087568253, 41.693171514614811], [-70.757501807181228, 41.692851959965758], [-70.757562969058924, 41.692509131963625], [-70.757319450380919, 41.692035380612801], [-70.756862437379908, 41.691709428619056], [-70.75649579564643, 41.691669847736385], [-70.756251435268794, 41.69182698892368], [-70.756098632352746, 41.692054418028164], [-70.75579323760482, 41.692212239701298], [-70.754786921115496, 41.691822449799282], [-70.753749485456225, 41.691207890539857], [-70.75313968872635, 41.690749194880212], [-70.752804430680754, 41.690358117163427], [-70.752774923784145, 41.689583591229457], [-70.752958418815084, 41.688878533052829], [-70.753233124814543, 41.688622105422631], [-70.753721391815532, 41.688551567103424], [-70.753995840908686, 41.688646196541868], [-70.755094988006363, 41.688620803276649], [-70.755277725174381, 41.688762099460703], [-70.755215954427229, 41.689744196420087], [-70.755673894056201, 41.689926729759598], [-70.755886966098188, 41.689743003936876], [-70.755980321180985, 41.68812066864902], [-70.75582798964588, 41.687843884499244], [-70.755309441681348, 41.687338526788658], [-70.754578236300716, 41.686178993761516], [-70.754212075087551, 41.685905398076322], [-70.75393735237202, 41.685855786596257], [-70.753723047876889, 41.686011948832103], [-70.753418004726441, 41.686583943984168], [-70.753051372874339, 41.686607919129926], [-70.752991327955456, 41.685969421177347], [-70.75277785068053, 41.685828459593928], [-70.752259468491445, 41.685764278114448], [-70.751862280315578, 41.685833698185398], [-70.751587853829491, 41.685738433374027], [-70.751556854310166, 41.685441732215153], [-70.752107300030417, 41.684623118728801], [-70.752138406983917, 41.683883925868734], [-70.751956081291127, 41.683175383964034], [-70.751620788815586, 41.682514186221638], [-70.751041599788238, 41.681901443699999], [-70.749504123269872, 41.680703432430917], [-70.748252799404597, 41.679902831015987], [-70.74724367451708, 41.678486423239939], [-70.745228211149879, 41.676517609425048], [-70.74443423736129, 41.675583769794912], [-70.744434059669715, 41.675151582726421], [-70.744646884777552, 41.674895845394929], [-70.744708003226677, 41.674489906414266], [-70.744645499471972, 41.673589734657682], [-70.74449255542531, 41.672934767754583], [-70.744614737345401, 41.672635660114054], [-70.744828308747302, 41.672407479299721], [-70.745194194159495, 41.672338416809865], [-70.745743747995562, 41.672519348040964], [-70.747117419087715, 41.673245965913459], [-70.748186104472083, 41.674022233853755], [-70.749499443036868, 41.675443432396953], [-70.750071052121342, 41.676296896765379], [-70.751685246830348, 41.678217515746205], [-70.752478728349956, 41.678763503907824], [-70.7531194288742, 41.678951750718639], [-70.75412640062757, 41.678999414354323], [-70.75708601425579, 41.68016055817283], [-70.758031332282428, 41.680389572425291], [-70.758549771655026, 41.680435180285635], [-70.759038171929689, 41.680347243009479], [-70.759404441254048, 41.680206106266162], [-70.759679209959501, 41.679679458077196], [-70.759984294774611, 41.679521624373926], [-70.761082521643317, 41.679406129752103], [-70.761541638048584, 41.679065793593942], [-70.762365570710912, 41.678656421119051], [-70.763006267335086, 41.678566032771606], [-70.763617185529057, 41.6786105059088], [-70.7643183700349, 41.679139516401946], [-70.764622680906029, 41.679225309621657], [-70.764836896513202, 41.678978547820215], [-70.765111699142295, 41.678956643049737], [-70.766148352778075, 41.679453504088215], [-70.766636877020545, 41.679436935651516], [-70.766668137479783, 41.679067438999937], [-70.766576300759283, 41.678844001688987], [-70.766241113056793, 41.678497443312096], [-70.764898191729316, 41.678149419093643], [-70.764135659174102, 41.678286930591675], [-70.763220618741229, 41.677995136087176], [-70.76322027015145, 41.67767099505091], [-70.763419261651521, 41.677265399356223], [-70.763648383057472, 41.677006851213392], [-70.764410798575071, 41.676940922952951], [-70.764655550930115, 41.676847424479583], [-70.764717312396471, 41.676594005021613], [-70.764015145802119, 41.676298550212621], [-70.763680464602999, 41.675889500400451], [-70.76358874454084, 41.675062803040035], [-70.763680596311829, 41.674908081068587], [-70.763589260905661, 41.674423532671945], [-70.76346778108848, 41.674199900833969], [-70.762705855344663, 41.673257394097412], [-70.762126525659227, 41.67277985503631], [-70.761302962779496, 41.672342325132789], [-70.76115046680772, 41.671561330614423], [-70.760754055463337, 41.671063002855419], [-70.759686949095311, 41.670286773632363], [-70.759016696608981, 41.669576777245048], [-70.758040961938605, 41.668132590963914], [-70.757888956375027, 41.667675823944286], [-70.758010951449506, 41.667448642003322], [-70.758865575349077, 41.66729160368962], [-70.761886337044416, 41.667307913587543], [-70.762343327959897, 41.667175189878286], [-70.762343950659897, 41.666850514824944], [-70.762070157373273, 41.665873531174597], [-70.761704181452913, 41.6653207505301], [-70.760485303139561, 41.664177806441572], [-70.759083007790068, 41.662443361045888], [-70.758961757252379, 41.661985625219856], [-70.758474021433301, 41.661344793071592], [-70.758473894423616, 41.660651494912884], [-70.758536027829592, 41.660335684361783], [-70.758627861036899, 41.659280580458955], [-70.758415075706225, 41.658734459629599], [-70.758414756905864, 41.658482349422457], [-70.758232835278164, 41.658350066872622], [-70.758019446378711, 41.657659879524161], [-70.757958980228864, 41.656652132925508], [-70.757654831964032, 41.655620916578982], [-70.757533793178268, 41.654164292102678], [-70.757382018064604, 41.653814941683514], [-70.756832760662761, 41.653247531869653], [-70.756741915675136, 41.652996540737718], [-70.756864448962276, 41.652607294116244], [-70.757383221068125, 41.652563412558891], [-70.758419271302998, 41.652997856627508], [-70.759487228569071, 41.653197318071108], [-70.760676960552487, 41.652999050300224], [-70.761531207652908, 41.652742948328282], [-70.76220218952129, 41.65233591701535], [-70.762629987549275, 41.651851942994014], [-70.762630332794217, 41.65078048606987], [-70.762234542546608, 41.649561858124656], [-70.762235211540244, 41.6490666502187], [-70.762754028332409, 41.648463965197188], [-70.763272888387036, 41.64835703057976], [-70.763822059725314, 41.64860981387298], [-70.765163889391516, 41.648904365006985], [-70.76601738247011, 41.6489273444503], [-70.766749502446444, 41.648699677969148], [-70.767054887463019, 41.64846979740912], [-70.767726653580368, 41.647693581039618], [-70.768337908179916, 41.646549524210052], [-70.768338344414744, 41.645703164770403], [-70.767851017984654, 41.644882388357424], [-70.767149085286945, 41.644469902028007], [-70.765807829055873, 41.64398629649196], [-70.765137800060117, 41.643024138054002], [-70.764955228299613, 41.6425227037086], [-70.765107911625762, 41.641331219803071], [-70.765595905024014, 41.64131465427684], [-70.765809448878045, 41.641491608519487], [-70.766693411099723, 41.642774779786038], [-70.76757714532279, 41.64359865585498], [-70.76824746228877, 41.644056585676601], [-70.76879713026085, 41.644012311135533], [-70.769010560087992, 41.642982111913], [-70.76919406890957, 41.642637273402869], [-70.769225830182506, 41.641222702088797], [-70.769621584485364, 41.64112674273445], [-70.771664418139878, 41.643031285395359], [-70.773767660799422, 41.644880352517319], [-70.773950321068654, 41.645634510591414], [-70.775047900835006, 41.64645465074922], [-70.775047799076674, 41.6468238078523], [-70.774650413245112, 41.647262462306848], [-70.774558926469084, 41.647623743361891], [-70.774741132366373, 41.648017113187507], [-70.775412107146039, 41.648817690754534], [-70.775411473150911, 41.649159832905433], [-70.774801383602991, 41.649934776760752], [-70.774373553268177, 41.650346224454331], [-70.773946442433356, 41.650461088627289], [-70.773733099282268, 41.650230128428291], [-70.774160721122115, 41.649953739289217], [-70.77434337038315, 41.649662820099586], [-70.774344503572578, 41.649203090849348], [-70.774161111902799, 41.648998793642555], [-70.773948079189424, 41.648381210321318], [-70.773796332333646, 41.64759969772642], [-70.773887923658492, 41.647345923877474], [-70.774315371633492, 41.646871448506495], [-70.774315140758034, 41.646574320040628], [-70.77407130755023, 41.646460755850114], [-70.773400606925719, 41.646390113893531], [-70.772912708700147, 41.646595794597353], [-70.771996976822351, 41.647213452388939], [-70.770624079286762, 41.64799132137972], [-70.769373492681353, 41.64826295296384], [-70.768824113055473, 41.648541422594732], [-70.768640774044997, 41.6488592501479], [-70.767938736165036, 41.649500759474144], [-70.767968779088037, 41.649959609180215], [-70.768274074812311, 41.650251948265037], [-70.768639834409285, 41.650390529189153], [-70.770103422926567, 41.650592884884347], [-70.770622089412669, 41.650756031002736], [-70.771231650327081, 41.651286664171757], [-70.771475804479323, 41.651373224865736], [-70.772421754176193, 41.651376489606442], [-70.772757052942694, 41.651281302676239], [-70.773458128459538, 41.651261023213536], [-70.774770163130484, 41.65119565632979], [-70.774983849326844, 41.651534663116891], [-70.775227727119585, 41.65154017933164], [-70.776417156043479, 41.650990055249792], [-70.778613293575688, 41.65064106246502], [-70.778887840583636, 41.650960729430388], [-70.779498125601279, 41.651401283999931], [-70.780687596377135, 41.651698017169373], [-70.782548040059325, 41.651930363504967], [-70.787610705596592, 41.651905375440258], [-70.787855090734183, 41.651973354359555], [-70.788434784155911, 41.652450764752196], [-70.788922275077113, 41.652659191354225], [-70.789501885510973, 41.652658942287061], [-70.791576064654379, 41.652383128853927], [-70.793162239694681, 41.651953521501156], [-70.793589898178467, 41.651721538918061], [-70.794291301611253, 41.651061861129087], [-70.794900869696235, 41.650782021545098], [-70.795694574999544, 41.650688438005695], [-70.796121299721435, 41.650736099146599], [-70.796517604532511, 41.650919168164485], [-70.798073128498629, 41.652182562826368], [-70.798927245700938, 41.65305165843813], [-70.799628994361825, 41.653409382393285], [-70.800482816408362, 41.653639192714564], [-70.801153378238965, 41.65400679962363], [-70.802190785960292, 41.654719969766752], [-70.80261769320856, 41.655172239247371], [-70.803410072082698, 41.655700487225644], [-70.804325690829643, 41.656136024060928], [-70.804722487295578, 41.656544162655003], [-70.804935990213664, 41.656640007770697], [-70.805850382772803, 41.657345639279612], [-70.808474665659347, 41.657988471482284], [-70.80883978030549, 41.658009868973352], [-70.809419211841359, 41.657685829810504], [-70.810335112546696, 41.657734155468141], [-70.810914307304074, 41.657553718167939], [-70.811677187134109, 41.657686011781649], [-70.812012294035782, 41.657572700494242], [-70.812897355880935, 41.657027107491665], [-70.813812652221699, 41.65703038247095], [-70.814788857449656, 41.657411096708671], [-70.815124696041835, 41.657441841689618], [-70.816588169173954, 41.657121375539994], [-70.816893604353524, 41.657143469025719], [-70.816862201730686, 41.65784674811075], [-70.81722907221851, 41.657805012497313], [-70.817656706573146, 41.65780703862999], [-70.818815181849104, 41.658166842166402], [-70.81933339869866, 41.657915587108199], [-70.819548014310143, 41.658010871063773], [-70.819944200818753, 41.658463971276511], [-70.82055391489871, 41.658742771615529], [-70.821347147344866, 41.659378314180579], [-70.821683373790947, 41.659634137179651], [-70.821927461465691, 41.659657021675933], [-70.822079840026845, 41.659519451476321], [-70.822262787272109, 41.659012366974302], [-70.82314730430133, 41.658511800440323], [-70.823177234615031, 41.658304260774692], [-70.822689769113424, 41.657942917414303], [-70.822628798047575, 41.657691618248904], [-70.823390904498751, 41.656616778455444], [-70.823329068408867, 41.655834250029855], [-70.822536311699807, 41.656062999262595], [-70.822261845280792, 41.655860489114303], [-70.822048402191413, 41.655926745529321], [-70.821712252690574, 41.656220156139142], [-70.821255520991244, 41.656200594198133], [-70.820981020811914, 41.656205168297305], [-70.82055451830297, 41.656572317461176], [-70.819578275628359, 41.65725410196724], [-70.819180816907661, 41.657395244151921], [-70.818296806701952, 41.657418671132966], [-70.817656610431925, 41.657185775188154], [-70.817381560338248, 41.656937690421486], [-70.817381777957934, 41.656568535520094], [-70.818753645985467, 41.656267750412475], [-70.819516562913805, 41.655832301555684], [-70.820797805843625, 41.654713314165136], [-70.823206448596736, 41.651946127700164], [-70.82381655575621, 41.651513072372055], [-70.8248228571331, 41.649983902838173], [-70.825219366947053, 41.649824728036506], [-70.825341566600855, 41.64998473035191], [-70.825249999754064, 41.650778772553856], [-70.825737625350826, 41.650824973033863], [-70.825890814959223, 41.650687402698971], [-70.826470407329239, 41.650686965223393], [-70.826500732835427, 41.651010651458655], [-70.826287357505876, 41.651653789764424], [-70.82637923753596, 41.651832159139502], [-70.827506884624185, 41.65167001162871], [-70.827660125918271, 41.652064203758741], [-70.826745045515736, 41.652537702382403], [-70.826592788308531, 41.652837347848191], [-70.826683982940892, 41.653115294956805], [-70.827019709978217, 41.653155008056828], [-70.827721052979641, 41.653017886459828], [-70.828544604477699, 41.652995200162508], [-70.830130501000724, 41.653681458091356], [-70.830741521612723, 41.653869633314102], [-70.830649702397267, 41.653592226123301], [-70.829521061938721, 41.652907501654795], [-70.829337642262601, 41.652127051193638], [-70.829093865388927, 41.651951119668603], [-70.828544721786656, 41.651851718133258], [-70.82823941180105, 41.651442493094535], [-70.828300130152897, 41.650621795325989], [-70.826652738000988, 41.648955353372386], [-70.826621712379989, 41.64876663002994], [-70.826774615599206, 41.648359032803064], [-70.826469238403121, 41.64812987849718], [-70.82616444976334, 41.648107184054403], [-70.825798126337489, 41.648239529636243], [-70.825097333871298, 41.648772809742844], [-70.8246091839721, 41.648834648961298], [-70.823968766062137, 41.648151596584448], [-70.823449984752131, 41.647988693793636], [-70.823206313158408, 41.648929221987984], [-70.822260716802958, 41.649043521090668], [-70.82146715684992, 41.648857542262647], [-70.82082713907694, 41.648309531498803], [-70.820247748417245, 41.647310068386076], [-70.819851483392895, 41.646983561864822], [-70.818418006421808, 41.646573769246487], [-70.817654976232319, 41.646027794126582], [-70.816496152894629, 41.645586941204421], [-70.816526721771851, 41.645388500860548], [-70.817258308930406, 41.645223534043467], [-70.817410783350027, 41.645040951749124], [-70.817441997658094, 41.644725465511094], [-70.816861913646278, 41.644608353958887], [-70.81631269591297, 41.644860491265895], [-70.815733273979404, 41.644905986781012], [-70.815184412242488, 41.644608348018977], [-70.813690371113836, 41.644055780239299], [-70.812379022362677, 41.643896413741771], [-70.811250411721247, 41.643878328504833], [-70.808871156811577, 41.643438461898185], [-70.807865171133187, 41.643004121400431], [-70.806889023310646, 41.642686463230085], [-70.804785078986271, 41.641152513446869], [-70.804602114952473, 41.640813751525144], [-70.80347340025466, 41.639597539434178], [-70.80319959763942, 41.638872134512297], [-70.803168380896324, 41.638476315205338], [-70.802559567140364, 41.637225552757251], [-70.802132535086727, 41.635827339944548], [-70.801827165134227, 41.635391030629634], [-70.801705759032316, 41.634825295040137], [-70.80137027912555, 41.634344410655082], [-70.801156678486919, 41.633726335878919], [-70.801096062514091, 41.633078768307122], [-70.800943862615583, 41.632784127785172], [-70.800852227509566, 41.632163921033012], [-70.800426109494978, 41.631621700475712], [-70.800456157799886, 41.631134508502491], [-70.800974873820877, 41.630154031164928], [-70.80127979497918, 41.629221758776957], [-70.80158440647142, 41.629009789718111], [-70.803475199384735, 41.628439563022297], [-70.804054769408324, 41.627826890892379], [-70.804238305447498, 41.627049723898054], [-70.804512661502457, 41.626793083279665], [-70.804969163786311, 41.626515676281407], [-70.805762397121825, 41.626358994760437], [-70.808689498063771, 41.625124221605638], [-70.810031614160408, 41.624842002466096], [-70.810732429660248, 41.624884520191905], [-70.811433508728626, 41.625125659381084], [-70.812104299072899, 41.625673280904039], [-70.813171816025999, 41.626926223664256], [-70.813933630700973, 41.627292146891435], [-70.816190454188359, 41.62948970924311], [-70.816464628712424, 41.630223998264384], [-70.816739155575917, 41.63058868222204], [-70.816861069335403, 41.631253445987795], [-70.816098653389147, 41.631274703085417], [-70.814573702426785, 41.631865983457963], [-70.814361179946758, 41.632121850893689], [-70.814330629560729, 41.632419332735488], [-70.815367345744107, 41.63404176494678], [-70.815732939064404, 41.63443230032599], [-70.81616012434425, 41.634641418007213], [-70.817409638001351, 41.63486501813032], [-70.817745360761776, 41.635075741566936], [-70.818202706304859, 41.634933343645919], [-70.81835527352014, 41.634750760795121], [-70.818325068259625, 41.634364046111799], [-70.818049968290325, 41.633746715771125], [-70.817867775276227, 41.632903226240252], [-70.818203435040147, 41.632510782723386], [-70.819696728292001, 41.632649112910059], [-70.820184940692954, 41.632920436790123], [-70.821099890166764, 41.632878634068391], [-70.821526326838963, 41.632989225416928], [-70.8215571854346, 41.633565113040966], [-70.820885892576769, 41.63390892231488], [-70.820824564626975, 41.634180290909192], [-70.82161830365547, 41.634320717135864], [-70.82198380527808, 41.634089338649176], [-70.822654501136896, 41.633835557429187], [-70.822501999285961, 41.633423895088711], [-70.822563242811924, 41.633080404638569], [-70.823172963036384, 41.632485823166299], [-70.823294969645843, 41.631979545100478], [-70.822654662476367, 41.631530043812404], [-70.821983621816941, 41.631297617228419], [-70.821617356798953, 41.629304420259103], [-70.820153875832816, 41.627688497950693], [-70.819360817681044, 41.627413097954424], [-70.819056216344791, 41.627246954279549], [-70.817623090903425, 41.625855735826214], [-70.817073827371942, 41.625441593498387], [-70.81698249829833, 41.625127622104912], [-70.817044078620683, 41.624450995480494], [-70.817227108269094, 41.624132999879585], [-70.817684064374404, 41.623783514506499], [-70.817958689752345, 41.623787953759141], [-70.818720728668467, 41.62415438654115], [-70.819208634348499, 41.624515751291916], [-70.819116399546317, 41.625120705095242], [-70.819116629802963, 41.625741969366409], [-70.819757043383561, 41.626659149806791], [-70.820153920666471, 41.626995204915261], [-70.820611311197069, 41.627113908403118], [-70.821281835807625, 41.627571435504315], [-70.821464355185938, 41.627866319321129], [-70.82201354612414, 41.628235330631178], [-70.823599047170958, 41.628417558331591], [-70.824544270215242, 41.628366364373768], [-70.825185080788117, 41.628094923686362], [-70.825825283511321, 41.627436402263861], [-70.826648556755117, 41.626747448741575], [-70.827562238652661, 41.626246393102335], [-70.828324076584224, 41.625622341563137], [-70.829361239260152, 41.625164138964152], [-70.829818410968031, 41.625120735673732], [-70.833964590841859, 41.6245586864963], [-70.835519314516773, 41.624579039846779], [-70.838111051243644, 41.625122592702489], [-70.838812998160819, 41.62541759022475], [-70.840734311778192, 41.626512625494648], [-70.843360279880457, 41.628445090848501], [-70.845219710075853, 41.644729532018602], [-70.858208629548884, 41.681084926128804], [-70.865070558869576, 41.700276686981411], [-70.87449113261728, 41.726680588645003], [-70.882773910524307, 41.750104542767723], [-70.886417527234272, 41.76023596026657], [-70.904488123415007, 41.757936869639089], [-70.90738337197007, 41.763492043851826], [-70.921903217668131, 41.791338551930643], [-70.985850499342433, 41.783628924476801], [-70.999489278572767, 41.781982910968964], [-71.026258252172539, 41.778922388893285], [-71.014610276101422, 41.799622235797948], [-71.036625577445477, 41.816532056728548], [-71.00745377577573, 41.838479344273125], [-70.999489418058957, 41.844275593160063], [-70.996377345429195, 41.846588248883315], [-70.995943036970061, 41.846859230118035], [-70.995457640090933, 41.847209935839274], [-70.992750639433524, 41.848807326796617], [-70.99135174821248, 41.849500588747809], [-70.990554300695564, 41.849895980471878], [-70.990025766629074, 41.850092778908547], [-70.989793311841836, 41.850233546442979], [-70.989382692336576, 41.850532249681791], [-70.988554755285904, 41.851197599467937], [-70.987829256409697, 41.851941104420817], [-70.987654140733966, 41.852213217658729], [-70.987871104576541, 41.85232340566737], [-70.986348140706355, 41.853722203109811], [-70.986158185708788, 41.854011174050505], [-70.982985264752315, 41.85542166116209], [-70.979771635360791, 41.856490277938327], [-70.978213037908333, 41.857220376642353], [-70.977211400198954, 41.857952917545298], [-70.976417945283757, 41.858733134035241], [-70.973711266080414, 41.860947455635653], [-70.975159479485981, 41.866548702273057], [-70.976949464012364, 41.873573523792707], [-70.977163258307456, 41.875149053919067], [-70.987312381771702, 41.905837639566684], [-70.987837240449494, 41.905676850254267], [-70.988158087162873, 41.905676038093645], [-70.988618242843998, 41.905782721495008], [-70.988901547759852, 41.905804248036986], [-70.989224051308639, 41.90595767154656], [-70.989416075176322, 41.906059820612064], [-70.989547863522617, 41.906293962600294], [-70.98967945052793, 41.906493169656741], [-70.989909396923622, 41.906601069577768], [-70.990092359966809, 41.906480338536667], [-70.990375815990774, 41.906558764668894], [-70.990591241549623, 41.906689107333975], [-70.991019020416417, 41.906595397065395], [-70.99133996344689, 41.906552889825839], [-70.991407429568412, 41.906375369772647], [-70.991658495716806, 41.906208211016128], [-70.99184921658042, 41.906081389283585], [-70.992140401242565, 41.906142828677346], [-70.992385380674889, 41.906209824206954], [-70.992653636495859, 41.906259905882514], [-70.992785531040965, 41.906482249866208], [-70.992496077230726, 41.906672289619991], [-70.99213813679782, 41.906880571408855], [-70.991887157281667, 41.907082035215652], [-70.991674748699396, 41.907283129978879], [-70.991515516445261, 41.907496255624359], [-70.99131129215742, 41.907789042534567], [-70.991168462733413, 41.9080759802576], [-70.991078049512552, 41.908334430035417], [-70.990973637328338, 41.908655302126988], [-70.990915783315018, 41.909062455853096], [-70.990774370406072, 41.909624008331782], [-70.990724724245979, 41.910104847754596], [-70.990781831066741, 41.910590755069528], [-70.990823111925565, 41.910945499774193], [-70.991004153238379, 41.911624906004889], [-70.991186020251916, 41.912367430366935], [-70.991329954213455, 41.913211525958395], [-70.991421084432204, 41.914102204687332], [-70.991649735454828, 41.914980530387538], [-70.991784323341349, 41.915516841653755], [-70.991915815547259, 41.915716045435154], [-70.992069990904042, 41.915852324987597], [-70.992277464069062, 41.915971464418085], [-70.992591721115829, 41.916078022810012], [-70.992837368583579, 41.916156814778951], [-70.993105680061561, 41.91619005874184], [-70.993541380455071, 41.916153726704323], [-70.993914944780386, 41.916002862422907], [-70.994020883746728, 41.915808134570312], [-70.994079732512034, 41.915516859862727], [-70.994100297710318, 41.915219293103156], [-70.994159836708619, 41.915007973062572], [-70.994380745650673, 41.914892445241151], [-70.994656315975135, 41.914891414140257], [-70.995062305847114, 41.914952273397169], [-70.995445787148938, 41.915069934288262], [-70.995822105676041, 41.915239872969167], [-70.996037469351123, 41.915398385963584], [-70.996315107258738, 41.91565450175424], [-70.996631344903648, 41.915983985971202], [-70.996886551448696, 41.916303026401103], [-70.997096087068485, 41.916696684729985], [-70.997244806520214, 41.917159402129819], [-70.997303521375287, 41.917799993896502], [-70.997293402408559, 41.918471254863064], [-70.997184257768566, 41.91919502077814], [-70.99695504988685, 41.920192326125729], [-70.996784727048777, 41.920937700739813], [-70.996795309254125, 41.921337865523562], [-70.996804017455204, 41.921517434851467], [-70.996913372619304, 41.921790814242257], [-70.997015009080187, 41.922064699962654], [-70.997141061128588, 41.922468164243945], [-70.99712770435211, 41.92275513884703], [-70.997121906419679, 41.92303143249093], [-70.99700128159833, 41.923284081335481], [-70.996812147921815, 41.923525263829156], [-70.996591788203688, 41.923735876359224], [-70.9963100814348, 41.92392875103581], [-70.995944390348498, 41.924161230198223], [-70.995670762498406, 41.924429588768817], [-70.995566391077531, 41.92469923455775], [-70.995545723548503, 41.92504064817939], [-70.995563379171045, 41.925353599741051], [-70.995588804388987, 41.925690264955485], [-70.995714367147528, 41.926063926756747], [-70.995978335062304, 41.926605845212407], [-70.996334225095765, 41.927141956166921], [-70.996713347909022, 41.927652958382865], [-70.996951891581176, 41.927828408060989], [-70.997312485906377, 41.927984226489123], [-70.997849558125438, 41.928159907291892], [-70.999574228235346, 41.928704808424378], [-70.999873414697433, 41.92898973067156], [-70.99987492359439, 41.929258223151784], [-70.99965470648462, 41.92952619476236], [-71.010592260869203, 41.940107722491426], [-71.043988536873528, 41.9603203951228], [-71.04953137356199, 41.963091234862986], [-71.054255709647549, 41.982671527879859], [-71.054784911385397, 41.985026286235033], [-71.058115411558305, 42.000115497724302], [-71.069718373402821, 42.049746606372601], [-71.080577175169594, 42.095522257186964], [-71.061411481976123, 42.103106716770178], [-71.021817810781442, 42.118694562495627], [-71.005416238753057, 42.125100579422885], [-71.001898624334345, 42.126550633454869], [-71.002095225485704, 42.12734432125842], [-70.999493038522161, 42.128344148234433], [-70.981232770707493, 42.135455516672152], [-70.9407600568004, 42.151303446064667], [-70.924872961252646, 42.15756597839286], [-70.914922394109112, 42.225302055551033], [-70.915372878156447, 42.225540056190844], [-70.915724053523959, 42.225736584732395], [-70.916214166713047, 42.225894384850932], [-70.916514515846259, 42.225862150179552], [-70.91674435930436, 42.225909415136876], [-70.917037106559675, 42.225900278785907], [-70.917237756902011, 42.22581576711007], [-70.917468767748645, 42.225788759828177], [-70.917784948154406, 42.225734094101085], [-70.917979201300568, 42.225580944004236], [-70.918416306611505, 42.22568102519665], [-70.918613984964111, 42.225854258752747], [-70.918565846157477, 42.226031198576507], [-70.9186853963988, 42.226283354646505], [-70.919023324664735, 42.226314326410183], [-70.919255712329559, 42.226189997515014], [-70.919457416495888, 42.226043094878158], [-70.91977412216653, 42.225930985685117], [-70.920261627973105, 42.226057243945995], [-70.92062139654476, 42.226044475578831], [-70.921174248275719, 42.225899792354831], [-70.922251795733843, 42.225854623994202], [-70.922960060238694, 42.225563331540464], [-70.923667268921236, 42.225560673125486], [-70.923752162676109, 42.225749627153768], [-70.923874214604083, 42.226021957534321], [-70.923975720188778, 42.226249258508147], [-70.923919859637238, 42.226757660746038], [-70.923883178299903, 42.227088345376607], [-70.923811348260557, 42.227327740814978], [-70.923725295218418, 42.227612531097805], [-70.92380233971771, 42.227919027776714], [-70.9235690178092, 42.228146358085539], [-70.923329438787135, 42.228195752655253], [-70.922805487580831, 42.228304578709817], [-70.922589710471357, 42.228533615855206], [-70.922445601320646, 42.228847463574702], [-70.922251688288597, 42.229269099145462], [-70.921850910431061, 42.229698605435473], [-70.921973816054631, 42.230435238396858], [-70.92249733976692, 42.231093488833103], [-70.922282146885777, 42.231961757258951], [-70.922405108655113, 42.232653373570045], [-70.922466222137942, 42.234003624239456], [-70.922403485387804, 42.235211360387964], [-70.92212704773506, 42.235513287390283], [-70.921726174534115, 42.235736348896957], [-70.920649516255352, 42.235970675213345], [-70.919233580984042, 42.236129448877286], [-70.919171407573202, 42.236382935035465], [-70.919571946074853, 42.236700614057192], [-70.920372286228769, 42.237020401304882], [-70.920341186736977, 42.237479948520921], [-70.919971935003929, 42.237846674871264], [-70.919171319176613, 42.238256774324107], [-70.918771107871066, 42.238668896423221], [-70.919971416135766, 42.238459431123587], [-70.921110054673989, 42.238872574480453], [-70.921664778950799, 42.238826933471408], [-70.922280468079379, 42.238393378300131], [-70.92271169732814, 42.237818802021899], [-70.923081271782962, 42.23764113606736], [-70.923696160488106, 42.23763972335928], [-70.924959117152397, 42.2377991121242], [-70.9255744323426, 42.238004765366995], [-70.926282157399712, 42.238388690628973], [-70.926620611049771, 42.2388512559166], [-70.926374459224121, 42.241684325901723], [-70.926404171507826, 42.242872897351411], [-70.926651000598525, 42.243193203957802], [-70.927267362482482, 42.243101747187282], [-70.927697719474679, 42.242716215658383], [-70.927974800487121, 42.242558330074168], [-70.929504387432658, 42.242534430856516], [-70.929685978661482, 42.242727191414815], [-70.930095190102534, 42.243114740799172], [-70.930640514345811, 42.243929985354008], [-70.930991900863503, 42.244038595596848], [-70.931115188263348, 42.24463962988127], [-70.931162372482305, 42.246173197959827], [-70.930559822947885, 42.246397001153873], [-70.930621909132284, 42.246675237709425], [-70.930868254840036, 42.246904960316989], [-70.931136196294048, 42.247199432315433], [-70.930775650803312, 42.247447483752715], [-70.93028294825929, 42.247770865230827], [-70.930129186882013, 42.248025522627827], [-70.930098470385403, 42.248476699918733], [-70.931361457006929, 42.250090031907973], [-70.931576581707219, 42.250546298369336], [-70.931546082261733, 42.251122891464433], [-70.931114959400347, 42.25137401562057], [-70.929698424996388, 42.251442974693489], [-70.929329120318087, 42.251530001051975], [-70.929051354529022, 42.251759911901416], [-70.928681840230851, 42.251829558993833], [-70.927913088763788, 42.251166787607112], [-70.927697662924231, 42.250666036958918], [-70.927574319769661, 42.250073462307626], [-70.927512137193929, 42.249646040878631], [-70.928035955877718, 42.24900663420587], [-70.928066285224872, 42.248412034425066], [-70.927851508791278, 42.248001319160458], [-70.927265963169319, 42.24811030912376], [-70.92695834798009, 42.248385622037212], [-70.926865614175895, 42.248683975103546], [-70.926373503569238, 42.249259972418415], [-70.925972980715741, 42.250091936160594], [-70.925819214704745, 42.250598677107902], [-70.925541821180062, 42.250639514409656], [-70.925468584033027, 42.250163059177098], [-70.925212800306255, 42.250066164953253], [-70.924954675975627, 42.250160486231529], [-70.92495654791378, 42.250621909177269], [-70.925265229018748, 42.251166527339699], [-70.925172188480744, 42.25153744311298], [-70.924555935421864, 42.252034573174747], [-70.921908069433073, 42.252881075704728], [-70.919198420393712, 42.253413173359704], [-70.917381401385896, 42.253497420279764], [-70.916919417649396, 42.253433133023407], [-70.916334746225999, 42.253479139594617], [-70.914764019129478, 42.254280350755977], [-70.914117013552271, 42.255444044662916], [-70.913931717165724, 42.256609552250808], [-70.913654426209618, 42.256884444388149], [-70.91362357119371, 42.257271964100731], [-70.913992981333777, 42.25757266586767], [-70.914763252130911, 42.257460093313369], [-70.915794700143195, 42.257386568138195], [-70.914916975931021, 42.258124321303434], [-70.91491696488508, 42.258926144884967], [-70.914392594538967, 42.259313489650452], [-70.914454418558435, 42.260203949645913], [-70.914638086325837, 42.260867790368906], [-70.914515100337553, 42.261139509556692], [-70.914083426385645, 42.261435493021892], [-70.913283215712596, 42.261529901843851], [-70.911312462997458, 42.261554117291467], [-70.909434856311037, 42.261324438082397], [-70.908509503433578, 42.261853113798843], [-70.907400264141856, 42.262304306175025], [-70.906354434183086, 42.262493102580528], [-70.904721326205689, 42.262556043275701], [-70.90370543388444, 42.262357204033194], [-70.901704230972811, 42.261687941124364], [-70.900687542580201, 42.261524453191385], [-70.899394630566562, 42.261527871422096], [-70.899025219528383, 42.261615430321505], [-70.897730880400189, 42.262240492733362], [-70.896375528823171, 42.262740435451249], [-70.895421213425209, 42.262810231409887], [-70.894128172572309, 42.262507391212026], [-70.893172812934495, 42.2625597868089], [-70.893142430789894, 42.262353092974848], [-70.893666419114908, 42.261983939302482], [-70.894252302932486, 42.261073207241672], [-70.895792996647288, 42.259831591084783], [-70.896501862016109, 42.258919243714736], [-70.896871863800342, 42.258029871221005], [-70.89588730596958, 42.257109700252833], [-70.895856766103137, 42.256677385884998], [-70.896534038248376, 42.256495301525348], [-70.897396386997343, 42.256859328512093], [-70.898134846800389, 42.257342082021509], [-70.898473021248293, 42.257363571199534], [-70.898473424211943, 42.256976435744377], [-70.898104920213015, 42.256703238156106], [-70.898074301363579, 42.256315940013899], [-70.897211625957169, 42.256330591020642], [-70.896965649704342, 42.256172823730452], [-70.896780637144161, 42.255671093734648], [-70.895765223968738, 42.25500401892559], [-70.895210918238462, 42.254823827315967], [-70.894287914261071, 42.254343502274885], [-70.89240994958638, 42.252852551642142], [-70.892226347071983, 42.252170666930695], [-70.891856648322744, 42.251762484254876], [-70.891180499259988, 42.251251299448647], [-70.891457862182577, 42.250976551327327], [-70.891488441939558, 42.250732456182035], [-70.8907505079506, 42.250069597090246], [-70.890534866240841, 42.249823745063289], [-70.889518892761728, 42.249092957685583], [-70.888195509810842, 42.248475404363852], [-70.887734559741233, 42.247834258542923], [-70.88761122300032, 42.247079580673841], [-70.887427231107495, 42.246758444352814], [-70.886965608768037, 42.246414397792357], [-70.886349614344809, 42.24614551147436], [-70.885149550565018, 42.246165559771001], [-70.885211116693981, 42.24561498194462], [-70.884872227962376, 42.245611545962632], [-70.884780027800076, 42.245847386645217], [-70.88453316902708, 42.245887658337082], [-70.884318536541031, 42.245728950907349], [-70.883579141203882, 42.246002372502645], [-70.883425364916135, 42.24614001634896], [-70.883363083556461, 42.246600557120601], [-70.883024262806686, 42.246714068020388], [-70.882655198112133, 42.246486462999094], [-70.881423625740581, 42.24680394972831], [-70.881700622349683, 42.247078329829449], [-70.881669385772014, 42.24734879865143], [-70.881422618179045, 42.247416163895188], [-70.881207306434277, 42.247302463166513], [-70.880992031070051, 42.247036247512831], [-70.880530323144086, 42.246890245528348], [-70.87973003180592, 42.247192034122634], [-70.879699062117368, 42.247372471588875], [-70.880253052049639, 42.247858847018321], [-70.880221835017636, 42.248039913487254], [-70.879882758604481, 42.248153413550909], [-70.879575075609182, 42.247968895785384], [-70.879175099766428, 42.247903710875086], [-70.878682389961313, 42.248200402493985], [-70.878773588903371, 42.249342595447928], [-70.878496333822397, 42.250083320876278], [-70.878372951806497, 42.250517598734689], [-70.878064143147554, 42.250792775442171], [-70.877478668534309, 42.251018644348918], [-70.877078858075436, 42.251070495100855], [-70.876771187041285, 42.250859500309431], [-70.876432168776276, 42.250927974643837], [-70.875629973540867, 42.252166059967777], [-70.876737527300762, 42.25301270864172], [-70.87701464574495, 42.253287730575025], [-70.877013978039173, 42.253971971792112], [-70.876458379892952, 42.255296390498273], [-70.875717849766545, 42.25650663050034], [-70.874486478767736, 42.257013652313816], [-70.874038251382913, 42.257190193521282], [-70.874039072279317, 42.257622352205011], [-70.874284724241008, 42.257942765162525], [-70.874485244154243, 42.258022635872294], [-70.877902797583019, 42.258821601635191], [-70.878825641559516, 42.259374173143094], [-70.879626046585273, 42.260153856807079], [-70.879686842054511, 42.261062428827373], [-70.87913038023747, 42.26225171591831], [-70.879099304373824, 42.262738891128379], [-70.880022320363636, 42.264110654497465], [-70.880513776620802, 42.265156597635851], [-70.880605653096254, 42.265776603316127], [-70.880174435466756, 42.266278995850548], [-70.879249554050972, 42.266825986073457], [-70.879125696407783, 42.267404942054341], [-70.879310334422485, 42.267699084214108], [-70.879772031726006, 42.267997603775989], [-70.881650395875766, 42.268407745113251], [-70.88266640690037, 42.268796477182441], [-70.883559467406215, 42.269277273107441], [-70.884390787178162, 42.270038000252811], [-70.884729207979618, 42.270627271781684], [-70.884697636822551, 42.270969763884594], [-70.88454316488918, 42.271197977194618], [-70.883772650336212, 42.271723952914627], [-70.883526469055539, 42.272070334474485], [-70.883032212554511, 42.273168319534726], [-70.882723279723294, 42.273534079400392], [-70.882107317240127, 42.273895396015938], [-70.881522016368621, 42.274058264260617], [-70.880721066429558, 42.274008392136864], [-70.879921065123838, 42.273787459046645], [-70.878473278214571, 42.273252946811212], [-70.877581541108825, 42.272573958811357], [-70.877365276716503, 42.272253173354194], [-70.877304259031007, 42.271677809052427], [-70.877366392167971, 42.27142434599849], [-70.878260578098221, 42.270950310714142], [-70.877892226035144, 42.26998326383508], [-70.877708010320077, 42.269572080304322], [-70.877276266678265, 42.268840481254053], [-70.87727764712362, 42.26831776321729], [-70.87847863942531, 42.267739601917604], [-70.878479384504317, 42.267379478101176], [-70.878294574583634, 42.267103340024825], [-70.877894843744841, 42.266803529757929], [-70.874508463897143, 42.265381715518679], [-70.873768724408492, 42.264951202027206], [-70.873491161418059, 42.264901250777179], [-70.873307045166442, 42.26508481181353], [-70.873306854544197, 42.265336900494795], [-70.872907350485988, 42.266181020681763], [-70.872507198188543, 42.266232854038307], [-70.872168288206751, 42.266049226946727], [-70.871921889289013, 42.266071017784014], [-70.87152156466513, 42.266347926863574], [-70.871460491892023, 42.266871398972135], [-70.871059784329745, 42.267076278494372], [-70.870937077976734, 42.267348583490012], [-70.870383684280952, 42.267645987597291], [-70.86998297797885, 42.267715815572984], [-70.86955152056737, 42.267416342011707], [-70.869150824558631, 42.26682785307738], [-70.868657272689148, 42.26607049198423], [-70.868686772797574, 42.264971182480821], [-70.869240847051259, 42.263763835860587], [-70.869425571875155, 42.263580824787638], [-70.869302131520527, 42.263123233919394], [-70.868562820411853, 42.262801807651734], [-70.868621747288245, 42.260233424786897], [-70.868621781845604, 42.260035354206259], [-70.86892905478183, 42.259643152646397], [-70.868990640132338, 42.259434706490296], [-70.868713615064266, 42.259394379885286], [-70.868220291918121, 42.259483409353727], [-70.86880529426746, 42.258707848286321], [-70.868772973348527, 42.25740220388294], [-70.868064401297502, 42.257152968437616], [-70.867787045684182, 42.256733872107588], [-70.867479222809749, 42.256441282579566], [-70.866770762167988, 42.2565341621751], [-70.86661664908344, 42.256347665622975], [-70.866616446642581, 42.256076937524078], [-70.866862515345929, 42.255866178709454], [-70.868155853053892, 42.255772557301881], [-70.868156252623152, 42.255574488552149], [-70.867694250783273, 42.255321025260834], [-70.867509410052392, 42.255116894375611], [-70.867385694097791, 42.254362192506541], [-70.866923125240476, 42.254360723226029], [-70.866738508138241, 42.254813827917175], [-70.866246483222938, 42.254885389700917], [-70.865969235210457, 42.255087512016061], [-70.865846068459376, 42.25568446601882], [-70.86584701821559, 42.256558324377494], [-70.86603229663622, 42.256924518348015], [-70.866433310519184, 42.257314500703288], [-70.86646390563935, 42.257818219559724], [-70.866371934271726, 42.258180091752024], [-70.865910154741812, 42.258520835371925], [-70.865633656829161, 42.258912658848203], [-70.865048292652034, 42.258958310818777], [-70.864802137886727, 42.258728537596134], [-70.864462903770118, 42.258112190450021], [-70.864247821447748, 42.258458164046949], [-70.862769969140231, 42.25863507806131], [-70.862030888929056, 42.258323243719012], [-70.861906789667472, 42.258045704941139], [-70.861783492356722, 42.257038909307553], [-70.861505238069753, 42.25655676996611], [-70.861658047677508, 42.2538155956384], [-70.861503674299868, 42.253079803242869], [-70.861595607024924, 42.252807966619685], [-70.861625838450934, 42.25214081512258], [-70.861472056356675, 42.252008242592559], [-70.860855182793415, 42.251819703527211], [-70.860886333543093, 42.252071427385047], [-70.861102567735543, 42.252464271689327], [-70.860827191229376, 42.254594794640745], [-70.861104491288074, 42.254977895025924], [-70.861074006644387, 42.255320928567926], [-70.860642523140228, 42.255805241285806], [-70.860457644487752, 42.256123286116654], [-70.860211456263812, 42.25630765118801], [-70.85922704217046, 42.256674625189071], [-70.859227304389293, 42.256972273435665], [-70.860458701578764, 42.25694312608379], [-70.860890073040196, 42.257035560324532], [-70.860828923510454, 42.257270474282997], [-70.85993615610198, 42.258114054949928], [-70.859597564809746, 42.258254507993335], [-70.858088679160289, 42.258251754378882], [-70.857781273173586, 42.258184761977908], [-70.857226510175323, 42.257842325975403], [-70.856610492748231, 42.257708328931713], [-70.856240829647888, 42.25747100249724], [-70.855717473074733, 42.25756935332732], [-70.855501721972615, 42.257726329257217], [-70.854701324752838, 42.25777522286733], [-70.854177814813966, 42.25809027363362], [-70.853470415218553, 42.258669251830483], [-70.852886080758466, 42.258921921961438], [-70.850391125560776, 42.258916836908469], [-70.849898013118917, 42.258510611106544], [-70.849590452404584, 42.258506618506203], [-70.849313205144242, 42.258619298731716], [-70.848975040723332, 42.258597664774761], [-70.848420828636009, 42.258300205311173], [-70.848173584025375, 42.258394506384292], [-70.847846797776199, 42.258798336589891], [-70.847728457142097, 42.25894450715753], [-70.847589373016504, 42.259115948864064], [-70.84743322814063, 42.259308090913734], [-70.847230305722675, 42.259558397820676], [-70.846481381091365, 42.259466986387878], [-70.846389161378127, 42.259630140297475], [-70.84564984266153, 42.259993441526305], [-70.84555542826962, 42.260368788507741], [-70.845944469709167, 42.26028826548756], [-70.846388539050096, 42.260089931966483], [-70.846853297428055, 42.259977155118918], [-70.847176987107204, 42.259898597021888], [-70.847897092208811, 42.259281465742525], [-70.84826661059985, 42.259059563261061], [-70.84876259573727, 42.258961631238691], [-70.849173250290718, 42.259088384332415], [-70.849498092208833, 42.259156578963513], [-70.849723884902801, 42.25920404451945], [-70.849974956440079, 42.259256604517823], [-70.850255656042606, 42.259315633888036], [-70.852085237461139, 42.259700146676174], [-70.85279400407596, 42.259760954261878], [-70.853778961995303, 42.259943235207764], [-70.854087651749794, 42.260812072971035], [-70.854518915726288, 42.261273662657658], [-70.854518561925843, 42.261498741314092], [-70.853749209920522, 42.261232239950985], [-70.85193212856673, 42.26150443008305], [-70.85138310685727, 42.261891890157408], [-70.852270868101471, 42.261661106878648], [-70.85282585986397, 42.261661445220547], [-70.853441815849607, 42.26180446517504], [-70.854519162307966, 42.26216552331001], [-70.854735377752419, 42.26236931106687], [-70.855043510393898, 42.26228326075087], [-70.855258824578883, 42.262099363858709], [-70.855473529601795, 42.26154633071657], [-70.855627653586751, 42.260561882723124], [-70.855965452642749, 42.259988741811057], [-70.856026602832102, 42.259600775585042], [-70.856303604594132, 42.259416052015851], [-70.856734728220971, 42.259354905313941], [-70.856950978619423, 42.259423640811704], [-70.85728979540464, 42.25989541621621], [-70.857628155165429, 42.259826994458358], [-70.858335686465708, 42.259076930346339], [-70.858582399901877, 42.259117652906326], [-70.858336761744781, 42.260382944268379], [-70.859199160169553, 42.260450242692073], [-70.859845880330838, 42.260331676296765], [-70.85996844434294, 42.259896873608305], [-70.860860812156474, 42.25964804339096], [-70.862400551956426, 42.259550815888929], [-70.863663098098158, 42.259116121689061], [-70.864001876259863, 42.259137715742149], [-70.863878763503394, 42.259436931079314], [-70.865080338876268, 42.259666951491496], [-70.865224266086372, 42.259818011002061], [-70.865622950058437, 42.259945719238026], [-70.865142701477765, 42.260398267724504], [-70.863700451460545, 42.2608274808752], [-70.86631279942938, 42.260784576952659], [-70.866928505838629, 42.260991085797087], [-70.866928504773938, 42.261270185500834], [-70.866528562887567, 42.261655118086644], [-70.866806830644776, 42.261911533920205], [-70.86766895796876, 42.261996773481087], [-70.867812051444488, 42.262366152734749], [-70.867926909750878, 42.262662180461177], [-70.867824055251518, 42.262985189718414], [-70.866869770713876, 42.263739533097201], [-70.864345180794075, 42.264519038876379], [-70.86406756872951, 42.264704318468297], [-70.864159540601364, 42.264972673327904], [-70.864714437852939, 42.265360001571622], [-70.864930483585653, 42.265959910059642], [-70.864715696387535, 42.266116908409344], [-70.864068625246659, 42.266253416819154], [-70.864038094980955, 42.26657790347808], [-70.864808335424144, 42.266826963750312], [-70.864777434849515, 42.267007396953105], [-70.864038511702546, 42.267055615817902], [-70.863360893757417, 42.266877469242075], [-70.863361576305152, 42.266580367114123], [-70.863545483304307, 42.26639682073467], [-70.863545443293049, 42.266207753101725], [-70.863175937198292, 42.265754373608161], [-70.861727821191963, 42.265777845021262], [-70.860711591345989, 42.266028783658165], [-70.859911607333217, 42.266050796763821], [-70.859140800019404, 42.26522549453238], [-70.858893930107797, 42.264563010368128], [-70.858462924369093, 42.264633169177287], [-70.857662273390346, 42.265069310791922], [-70.856800493786679, 42.265758815116889], [-70.856400903836516, 42.266350788528733], [-70.856093447435811, 42.267310698130153], [-70.856093606012095, 42.268022583115751], [-70.856772795605266, 42.269119649349328], [-70.857265278365787, 42.269480914540573], [-70.857603926574967, 42.269556455623892], [-70.859020281095667, 42.269254389239656], [-70.859728924611133, 42.269278599561694], [-70.859698062674269, 42.269549604105848], [-70.859452159413479, 42.269760348358474], [-70.858528414782455, 42.270172220856743], [-70.858374162672689, 42.270309738442407], [-70.858436227840926, 42.270561094591621], [-70.859761567280216, 42.27149411038306], [-70.86019240021183, 42.271721591258817], [-70.861209633415498, 42.271885350060813], [-70.862132994150556, 42.271789196247092], [-70.863610877887041, 42.271422682161656], [-70.864104168433627, 42.271153607954155], [-70.864072929533279, 42.270811853517323], [-70.863025195010366, 42.270053739395642], [-70.863025205502638, 42.269594576036134], [-70.863332264198505, 42.269364446235194], [-70.863887136769279, 42.269166029354935], [-70.864625352449011, 42.26904578179839], [-70.865673273043384, 42.269047073250611], [-70.866812358429911, 42.269253680684699], [-70.867983316166132, 42.269802033617964], [-70.868199237342225, 42.270005793716386], [-70.868323087874558, 42.270787502534979], [-70.868077328755675, 42.271034818849735], [-70.867338600457217, 42.271605335755012], [-70.866722910020229, 42.273642246502867], [-70.86653870242074, 42.273915287868903], [-70.865831596456076, 42.274422316848877], [-70.864907191773369, 42.274861156327397], [-70.864661071220482, 42.275044900748263], [-70.864691913274044, 42.275269611004191], [-70.865308806987727, 42.275746229533517], [-70.865832498818648, 42.276548155307616], [-70.866203069006602, 42.276867023065009], [-70.866418120242542, 42.276917186924265], [-70.867219201163593, 42.276823108330859], [-70.868358973048586, 42.276525524579064], [-70.871961301287627, 42.275997795705059], [-70.873378919756533, 42.275722478647452], [-70.874467843832448, 42.275633881099381], [-70.877022990244299, 42.276069208060591], [-70.881150394047879, 42.276595699270558], [-70.882474667587076, 42.276528550812181], [-70.883615224665803, 42.276005200893692], [-70.884323608587877, 42.275840190855362], [-70.885278203739148, 42.275888069167493], [-70.887896186593593, 42.276465920259014], [-70.889220545262461, 42.27655228841958], [-70.889405226393819, 42.276648343880105], [-70.889374078384577, 42.276873797765354], [-70.888573754971404, 42.277382720816412], [-70.88761821479558, 42.277605590376112], [-70.886447941225896, 42.277580168048353], [-70.884661242308709, 42.277312308644312], [-70.883429184273623, 42.277332710781884], [-70.882319588493871, 42.277513024543133], [-70.881703524148733, 42.277694274868921], [-70.879270044719746, 42.277761637484907], [-70.878623668774068, 42.277880225468429], [-70.877914614703556, 42.278405864159119], [-70.877544586730792, 42.279591738555602], [-70.877450468626051, 42.280323276623363], [-70.877851036297372, 42.280830254962659], [-70.878281198324231, 42.281102049090343], [-70.879574492414847, 42.28215286942774], [-70.881175687626879, 42.283189578623421], [-70.881421920941335, 42.283464331056557], [-70.881266133424589, 42.284989528369401], [-70.881387851557378, 42.286915239629508], [-70.881726379889884, 42.287350834362805], [-70.882464581149279, 42.287735188550208], [-70.883235322867051, 42.288290232399397], [-70.883388968627358, 42.288512804933049], [-70.88360395587641, 42.289247715771701], [-70.883725959326782, 42.290417069549058], [-70.883940687659134, 42.290917895904904], [-70.884094518828661, 42.291446485372205], [-70.884310007580794, 42.291857283719388], [-70.885110421627203, 42.292447945586169], [-70.886989632046649, 42.293137185562664], [-70.887420385878798, 42.293598643512155], [-70.887481370105064, 42.294327052761304], [-70.887357401025724, 42.295446202349972], [-70.887202824502609, 42.296043456259227], [-70.887048593236898, 42.296892889841907], [-70.887047135138275, 42.298333923945755], [-70.886706731130388, 42.300573887158571], [-70.886551619078205, 42.30093660550444], [-70.886490178861621, 42.30130711636162], [-70.886120122678633, 42.301835694223897], [-70.885501871411279, 42.303593671216092], [-70.88550148532525, 42.304070834790416], [-70.885716880982258, 42.304346581800992], [-70.88608665254803, 42.304574716478143], [-70.88833613985274, 42.305014991233151], [-70.889444714190347, 42.305491840198989], [-70.890153158487209, 42.306020574138117], [-70.890769244027354, 42.306632092776965], [-70.891108204278211, 42.306662069147208], [-70.891755768248217, 42.306498400878155], [-70.893573860001027, 42.306477579636578], [-70.89385106563995, 42.306382798953635], [-70.894590383933618, 42.305856683189795], [-70.895177098431418, 42.305585718090022], [-70.896471310419997, 42.305222314940785], [-70.898073881145024, 42.305222258098141], [-70.898782973703931, 42.304949124923624], [-70.899368243633845, 42.304444050002601], [-70.899400004837773, 42.304010986170844], [-70.900077055562733, 42.303891810648928], [-70.900293885326434, 42.303689832272632], [-70.901711357350251, 42.303071505192619], [-70.905008461819179, 42.302178771065797], [-70.905409476391711, 42.301991781554555], [-70.906026379344453, 42.301260588254856], [-70.906766253791787, 42.300644906343841], [-70.907567685981505, 42.300577556715695], [-70.911111540367258, 42.299797378908572], [-70.91243615169742, 42.300369645658328], [-70.913052649038988, 42.300809987710451], [-70.914283291613316, 42.302131261729158], [-70.914407064278492, 42.302543784729721], [-70.91440705176332, 42.303345061050983], [-70.915454317806393, 42.3040301278714], [-70.915793219316456, 42.304105586851975], [-70.916009049598486, 42.303967135905928], [-70.916440450744943, 42.303941778162617], [-70.916963985561551, 42.304329318409977], [-70.917395838150014, 42.304466015172807], [-70.917919347924951, 42.304448411358422], [-70.918689966634147, 42.304174296812661], [-70.919707298753451, 42.303553183427226], [-70.919769021981395, 42.303210206896665], [-70.92023072117982, 42.303093876565619], [-70.920447112085128, 42.303144485268781], [-70.922357070273804, 42.30295936590251], [-70.92260356758878, 42.303459196466804], [-70.92254148316303, 42.304947186479787], [-70.921894436479178, 42.305264082806794], [-70.920261309162768, 42.305886071537984], [-70.91930531388941, 42.306163761483745], [-70.918381742858188, 42.306251372200656], [-70.914066877974761, 42.305819179888537], [-70.913419506753556, 42.305956055289663], [-70.912772748959412, 42.306183411350943], [-70.910984827648306, 42.307330618723434], [-70.910244604924941, 42.307667229268915], [-70.909535769601987, 42.307849863281831], [-70.908149529718244, 42.307900711789173], [-70.906516639121008, 42.307828638064919], [-70.901893471117845, 42.30718570419404], [-70.900722766693164, 42.306916894031382], [-70.898134786795268, 42.30611334506537], [-70.896656153866729, 42.305858545355676], [-70.89603937417759, 42.305886816080829], [-70.895300120699616, 42.306115298516318], [-70.894497851413661, 42.306705279303223], [-70.893974305061917, 42.307281509531954], [-70.893942819024488, 42.307669107511536], [-70.893726678872028, 42.308150174002748], [-70.892369942827244, 42.309244718563583], [-70.891075463664507, 42.30972574478448], [-70.88971953311075, 42.309973429875377], [-70.886144607495226, 42.310293716216329], [-70.882846270999025, 42.310681730217439], [-70.882568594682198, 42.310659441437757], [-70.882322357135948, 42.310411072689483], [-70.882291870091578, 42.309520230749229], [-70.883001765157118, 42.308878070858235], [-70.883341422227616, 42.308214743696723]]], [[[-70.936131388446995, 42.291996739260235], [-70.936902227875009, 42.290812649928661], [-70.939058496967178, 42.289343897610635], [-70.939336339521276, 42.289023932862243], [-70.939520638579367, 42.288381109560987], [-70.939736591607186, 42.287791918790425], [-70.93952106895469, 42.287291194515184], [-70.938965777898133, 42.286670059732799], [-70.93822681194851, 42.28600697002927], [-70.937765327058727, 42.285393130259493], [-70.937857309858316, 42.284797123636309], [-70.938657882495491, 42.284909616304276], [-70.93985947645271, 42.28616799590683], [-70.940383367579216, 42.287420361752716], [-70.940537417947255, 42.287976424243851], [-70.940568102945988, 42.288840332399857], [-70.941123026741693, 42.289507012952143], [-70.941184374342967, 42.289892734564212], [-70.941646965305935, 42.290443633364077], [-70.941616393392991, 42.290624087136962], [-70.941122816303761, 42.290533906687202], [-70.941030918581916, 42.291012874906009], [-70.941492427657792, 42.291013499187343], [-70.942539787876726, 42.290581935563473], [-70.942724896307055, 42.290326245073494], [-70.9426641472282, 42.290146968562645], [-70.942478408487744, 42.290005978920647], [-70.94201659214572, 42.290302549939156], [-70.941523652334794, 42.289824070156904], [-70.942447529964255, 42.289574219975805], [-70.945959255107383, 42.288451236585956], [-70.946360606320226, 42.288174075178162], [-70.946636971924718, 42.28760199868438], [-70.947407406221188, 42.286922011124346], [-70.94793091994697, 42.286733212156157], [-70.948731719743847, 42.286782613683911], [-70.949532712883638, 42.287786430180368], [-70.949872335317593, 42.288429528539822], [-70.950334975931582, 42.289736563245825], [-70.950334493620716, 42.290169340151543], [-70.949841766713533, 42.290510720029559], [-70.949195183038, 42.290765380581654], [-70.94787045867659, 42.291039828232002], [-70.946976463356776, 42.29099213314754], [-70.944790107856164, 42.290651353508323], [-70.944080033849673, 42.290690684315088], [-70.942910202989651, 42.290971406240885], [-70.941831414196287, 42.291377521573892], [-70.939921099194336, 42.292526744012719], [-70.937210057331214, 42.29394273842307], [-70.936039552677656, 42.295160340509575], [-70.935546565153743, 42.295844405951996], [-70.935175938193908, 42.2970304538268], [-70.935392227575676, 42.298954759084658], [-70.935885614353523, 42.299685353058749], [-70.936008511386859, 42.300007186846926], [-70.936008510215444, 42.300620027289824], [-70.935854447786113, 42.300964719676593], [-70.935577020338144, 42.301284677608088], [-70.934837134749358, 42.301973108455449], [-70.934005359530005, 42.302410795954138], [-70.932864982852152, 42.302799598400938], [-70.931693948255429, 42.302981166803505], [-70.930369094462833, 42.302976857233645], [-70.928643228324518, 42.302816946232213], [-70.92802719943208, 42.302565756017266], [-70.927287592853432, 42.301885129022331], [-70.927071674785594, 42.301473871415439], [-70.927011115919541, 42.300781411121626], [-70.927288059695456, 42.299822251250454], [-70.927258107927713, 42.299164875457834], [-70.927750489667346, 42.29897664315083], [-70.928273938001055, 42.298517209796998], [-70.929784109881027, 42.297257527784801], [-70.930739965867218, 42.296826787605319], [-70.931972667137074, 42.296463761461865], [-70.933420648907003, 42.296258798133017], [-70.93431428568195, 42.295892363762825], [-70.934929870307187, 42.295251131161095], [-70.935515652227991, 42.294061099287383], [-70.935547033970266, 42.293601464790058], [-70.93582362611258, 42.292731772685052], [-70.936131388446995, 42.291996739260235]]], [[[-70.638985870168014, 42.002507506355883], [-70.639599566994065, 42.002508253909312], [-70.640090692375139, 42.002789354747556], [-70.640273931602366, 42.003155926003366], [-70.640426716459658, 42.003748533090949], [-70.640365294394272, 42.004524107413374], [-70.640087524617684, 42.006149452357491], [-70.640055773350966, 42.007158717463803], [-70.639257453536416, 42.008665346677262], [-70.638950160378357, 42.009462659077506], [-70.638028884518647, 42.010773151811357], [-70.636433185850208, 42.012642273632935], [-70.63612498415867, 42.012782385878936], [-70.635726614885016, 42.012778745922915], [-70.635359176121881, 42.012666842879788], [-70.634960259648039, 42.012366161419543], [-70.634592674460563, 42.011794971923678], [-70.634287434013089, 42.010493326059269], [-70.634319132222203, 42.00905125017902], [-70.634628049810544, 42.006443660939695], [-70.635027716329603, 42.005212535534753], [-70.635181692279531, 42.00504830050135], [-70.635580587114319, 42.004592123514556], [-70.637144964369313, 42.004200478338539], [-70.637635741309865, 42.003590212231302], [-70.637759224701199, 42.002994102299816], [-70.638158304662412, 42.002717993354089], [-70.638985870168014, 42.002507506355883]]], [[[-70.895409778373406, 42.279809248580264], [-70.898490634336369, 42.279649862430702], [-70.901539314265904, 42.279968563819125], [-70.90255654877582, 42.280221446242237], [-70.903418708412943, 42.280540497725568], [-70.903665022820022, 42.280815742776895], [-70.903602684041743, 42.281204265306478], [-70.903448393499019, 42.281404954421951], [-70.902862654383071, 42.281792917760441], [-70.901876266919714, 42.282160876277175], [-70.900737769515544, 42.282278735575694], [-70.899812895200824, 42.282141110138667], [-70.897811245819881, 42.281661389192003], [-70.896855656961918, 42.281109433780024], [-70.895902403056212, 42.280377959313256], [-70.895409778373406, 42.279809248580264]]], [[[-70.706599644829737, 42.15545501513003], [-70.706199658414334, 42.154812455319359], [-70.70527738248002, 42.153691337913493], [-70.705307220230196, 42.153096141279903], [-70.705768817241832, 42.152981214227431], [-70.708504521685214, 42.15334623256178], [-70.709457758435633, 42.153647045921495], [-70.709704201219537, 42.153805226562724], [-70.70973433461667, 42.154057533033566], [-70.709550365724354, 42.1541682684337], [-70.708319935157078, 42.154195160939324], [-70.708228006808483, 42.154376847416607], [-70.708381927747794, 42.15486130980279], [-70.708874110132726, 42.154448294638705], [-70.709150480506608, 42.154516017482131], [-70.709150692831685, 42.154741737326958], [-70.708720737411824, 42.155045430254326], [-70.708628671791956, 42.155335158379778], [-70.708813401487745, 42.155503538958619], [-70.709273657369479, 42.155613676602229], [-70.709643231614905, 42.155815383268752], [-70.709735171783336, 42.156390531915875], [-70.709397693311246, 42.156710711044674], [-70.708905870937855, 42.156753956230787], [-70.707552712702423, 42.156071596526672], [-70.706599644829737, 42.15545501513003]]], [[[-70.697374412969452, 42.144790831410553], [-70.697774818166224, 42.144019329355977], [-70.698235404706125, 42.144066489691888], [-70.69915767954889, 42.144476386920466], [-70.699649871156822, 42.144838256339732], [-70.700080082617518, 42.145894674836008], [-70.70007933977503, 42.146462433287809], [-70.699772916353012, 42.147016263235102], [-70.699126919413402, 42.147422582731238], [-70.698635461349284, 42.147537904412829], [-70.698328288383266, 42.147335427652685], [-70.69771311206361, 42.14632659736764], [-70.697497702447393, 42.145842859229028], [-70.697374412969452, 42.144790831410553]]], [[[-70.644314514921419, 41.734023538784008], [-70.644161832571854, 41.733836639643926], [-70.643886622583594, 41.733912815249042], [-70.643611389041993, 41.734412176143543], [-70.643244810972263, 41.734408248095839], [-70.641626799305655, 41.733909308524176], [-70.641260135580623, 41.733545304947242], [-70.641291299281022, 41.733265786838416], [-70.641963667083843, 41.732652463227303], [-70.642665586677666, 41.732191795313035], [-70.643368797438185, 41.731965776081381], [-70.643765786676141, 41.731941750125216], [-70.643948855130262, 41.73248894667406], [-70.644467971106792, 41.732967807085366], [-70.644833791179636, 41.733791085842611], [-70.644833154947378, 41.734592973640154], [-70.644680571214408, 41.73487437163773], [-70.644344527332706, 41.73487013626071], [-70.644314514921419, 41.734023538784008]]], [[[-70.894748981640589, 42.30071052563013], [-70.894348226467159, 42.300690407617033], [-70.893824830473605, 42.300761923274763], [-70.893485919134434, 42.30064138354161], [-70.892684054308887, 42.30066361711517], [-70.892714943203387, 42.30046517142361], [-70.893948158579789, 42.300002980403029], [-70.895828357598916, 42.299503575811208], [-70.896597999149463, 42.299526796991842], [-70.896876300354151, 42.299657092928314], [-70.897429560142854, 42.300116364152686], [-70.897737497238239, 42.30077799736938], [-70.897736440568792, 42.301768875305775], [-70.897336038748392, 42.301838260624528], [-70.896658259764692, 42.301399222640953], [-70.894748981640589, 42.30071052563013]]], [[[-70.658437118186853, 42.055818290771022], [-70.658621523604921, 42.054491599804955], [-70.659787627524011, 42.055961017975029], [-70.660125021329634, 42.056622475507282], [-70.65990943962835, 42.057220179579772], [-70.659510425757276, 42.057902071733444], [-70.658680635938168, 42.058724315817486], [-70.658128677831257, 42.059065819330257], [-70.657697976870551, 42.059000164802967], [-70.657698863161031, 42.058477416287303], [-70.657852517775069, 42.058132984813845], [-70.658437118186853, 42.055818290771022]]], [[[-70.748636788156603, 41.698299095389771], [-70.748453317638109, 41.698157783810501], [-70.747812496092138, 41.6981585923536], [-70.747598467950468, 41.698225246786606], [-70.747354293008655, 41.698525892004774], [-70.747324367671752, 41.69898597171855], [-70.74729906648308, 41.699287974122157], [-70.746805279056076, 41.698687660881184], [-70.746896536892663, 41.698181797321126], [-70.747079786574304, 41.697953951454934], [-70.748239557307912, 41.697629645877178], [-70.749490618199644, 41.69752031285546], [-70.750294813072173, 41.697519940994212], [-70.750630652254557, 41.697658381103061], [-70.750996100779389, 41.697904971625057], [-70.751149202963035, 41.698136748147427], [-70.751148078010814, 41.698704524308972], [-70.750811852314925, 41.699141789981262], [-70.749651352755677, 41.699465576818483], [-70.749340010240303, 41.699828810443918], [-70.74900440761715, 41.699914924297147], [-70.748851706913612, 41.699782190032593], [-70.748881536298455, 41.699574757794906], [-70.749095544043641, 41.699418062154457], [-70.749095482519309, 41.69922898060176], [-70.748789708871357, 41.698954595801347], [-70.748636788156603, 41.698299095389771]]], [[[-70.658039125329651, 42.052482280613802], [-70.657763014068507, 42.052386880435719], [-70.65717963852245, 42.052386457214595], [-70.656504855788327, 42.051972987527172], [-70.6562286008988, 42.051679410815893], [-70.656136855189999, 42.051401329919287], [-70.656136882222867, 42.050744058969457], [-70.65650560109556, 42.05037816518319], [-70.656873742292518, 42.050265000238305], [-70.658070495853053, 42.050743084560658], [-70.658838234228185, 42.051407711858865], [-70.659175299542753, 42.051790055402925], [-70.659083280164992, 42.052088752649183], [-70.658531130072916, 42.052367140314765], [-70.658039125329651, 42.052482280613802]]], [[[-70.668720617529473, 42.051723562538712], [-70.669764433630206, 42.051636600987834], [-70.670071618060661, 42.05173111701518], [-70.670408357205204, 42.052023387604144], [-70.670562604294872, 42.052552932448997], [-70.670469580395149, 42.052914116818009], [-70.669794654508053, 42.053050400703434], [-70.667922735562982, 42.053095330079508], [-70.66743161340159, 42.052913394968392], [-70.667431860425367, 42.052553248736878], [-70.667861752956668, 42.052096646641274], [-70.668720617529473, 42.051723562538712]]], [[[-70.886862776386508, 42.259836020768027], [-70.887324920230938, 42.25981030758922], [-70.888125129531375, 42.260157236447469], [-70.8881859486645, 42.260498601797146], [-70.887970566488207, 42.260700026007768], [-70.887939647195097, 42.261178111215045], [-70.887693351389288, 42.261254495725964], [-70.887077160868984, 42.261228700240466], [-70.886183927718932, 42.260999929156725], [-70.886091960201924, 42.260659566610762], [-70.88640046454482, 42.260041705228275], [-70.886862776386508, 42.259836020768027]]], [[[-70.884709088285135, 42.25754722926559], [-70.886988193834469, 42.257383317176128], [-70.887326302151706, 42.257611822353532], [-70.887294907628359, 42.257837905411307], [-70.886987560382209, 42.258050091072121], [-70.885724463941187, 42.258322980175741], [-70.884954962425013, 42.258299774049867], [-70.884462012639275, 42.258091679254008], [-70.884462063920282, 42.25774955760717], [-70.884709088285135, 42.25754722926559]]], [[[-70.889543334591835, 42.256971529064806], [-70.889852045728077, 42.25693094495103], [-70.89234600693166, 42.257132067783914], [-70.892284432490243, 42.257385542207935], [-70.891267697713957, 42.257816811460664], [-70.890928969403262, 42.257840314143706], [-70.889389949415573, 42.257406738719176], [-70.889297437990564, 42.257083841896581], [-70.889543334591835, 42.256971529064806]]], [[[-70.653109259282942, 41.736563123258769], [-70.653628425931288, 41.736474152448949], [-70.653933354373933, 41.736677296524519], [-70.654056012129345, 41.736837487631867], [-70.65414697136265, 41.737430713135687], [-70.653994056606635, 41.737658007367315], [-70.653657890933331, 41.737797951898102], [-70.653261237984552, 41.737821384803652], [-70.652772449855433, 41.737594901571455], [-70.652528953619495, 41.737346111376382], [-70.652620293470164, 41.736858326824724], [-70.653109259282942, 41.736563123258769]]], [[[-70.742776199653051, 41.697866332892794], [-70.742714543665073, 41.697614984770077], [-70.742226436318433, 41.6976853874122], [-70.741768525063719, 41.697863585415895], [-70.741676455017441, 41.697523075815923], [-70.74213397654735, 41.697245833244089], [-70.742652952383381, 41.697084427238472], [-70.742988803928313, 41.697088372509455], [-70.743813370000652, 41.697589607253562], [-70.743752284576416, 41.697797460851199], [-70.74280676500797, 41.698298181800098], [-70.742531985328284, 41.698320573677016], [-70.742562008608999, 41.698068034856703], [-70.742776199653051, 41.697866332892794]]], [[[-70.650489258169188, 42.050852546876627], [-70.651042169225533, 42.05078119873901], [-70.652361389685211, 42.051105027314563], [-70.65266807835367, 42.051379660953273], [-70.652637172316517, 42.051659087583616], [-70.651901072769135, 42.05165192417828], [-70.650642134434904, 42.051336461078236], [-70.650274081456558, 42.051170581454407], [-70.65024398626943, 42.050963812642742], [-70.650489258169188, 42.050852546876627]]], [[[-70.803507173041737, 41.61749669257069], [-70.804117151342467, 41.617432900021896], [-70.804543494568094, 41.61770562410895], [-70.805092902896774, 41.61843550275826], [-70.805092138872382, 41.618660593636108], [-70.804696355250115, 41.618666636863146], [-70.803598147904438, 41.618089791606934], [-70.803415591864351, 41.617885546714], [-70.803507173041737, 41.61749669257069]]], [[[-70.753191857950867, 42.241133915473846], [-70.753468955522692, 42.241093582266593], [-70.753900017458548, 42.241231435109427], [-70.753930617801416, 42.241411070703769], [-70.753745185094658, 42.241620903775178], [-70.751590092734602, 42.242032281230998], [-70.751590429912284, 42.241644599259878], [-70.751805967926344, 42.241461435699385], [-70.75300683222919, 42.241370760064726], [-70.753191857950867, 42.241133915473846]]], [[[-70.705552870795543, 42.152137347542265], [-70.705983165533738, 42.151951254869999], [-70.706751910583648, 42.152227763622129], [-70.707684741782373, 42.152464975852496], [-70.705891083592462, 42.15275418195958], [-70.705399365970621, 42.152617342023355], [-70.705552870795543, 42.152137347542265]]], [[[-70.823972263644009, 42.268646563874626], [-70.824249239837528, 42.268624515516095], [-70.82471204806825, 42.268761206078999], [-70.824711153828545, 42.269220365899848], [-70.824465114197878, 42.269512604428655], [-70.824126983868908, 42.26960802993618], [-70.823788163345014, 42.269586318281874], [-70.8234183339314, 42.269403535095748], [-70.823726042769806, 42.268830760938577], [-70.823972263644009, 42.268646563874626]]], [[[-70.760779793138369, 41.677168325651714], [-70.761268404282205, 41.677142867115975], [-70.761665268524666, 41.677397551349088], [-70.761694780241243, 41.67757718972716], [-70.760993028074779, 41.677651417310734], [-70.760473613489282, 41.677920408887317], [-70.75998611645015, 41.677900942045738], [-70.760077846508935, 41.67760216038959], [-70.760383073580925, 41.677327276458435], [-70.760779793138369, 41.677168325651714]]], [[[-70.716542625546879, 41.668899968003373], [-70.717396366929705, 41.668805631600179], [-70.717640794093455, 41.669036371915567], [-70.717640790708131, 41.669468559044006], [-70.717335678765863, 41.669653291110436], [-70.716817235206136, 41.669489903687484], [-70.716573065032946, 41.669169664373939], [-70.716542625546879, 41.668899968003373]]], [[[-70.656748798004983, 42.054329255524763], [-70.656995532346784, 42.054290016305295], [-70.657240248519713, 42.054421201913492], [-70.65730126494536, 42.055204433650516], [-70.657209227490029, 42.055430559337807], [-70.656840794363603, 42.05545422648914], [-70.656564879967803, 42.055133732263776], [-70.656595872601855, 42.054673601001333], [-70.656748798004983, 42.054329255524763]]], [[[-70.64696936428922, 42.085035394699389], [-70.646846916819712, 42.084135734721663], [-70.647246096381323, 42.084139338609546], [-70.647553042560304, 42.084323948798769], [-70.647767989143986, 42.084600161176709], [-70.647767387830143, 42.084870267171681], [-70.647122537450002, 42.085213187976493], [-70.64696936428922, 42.085035394699389]]], [[[-70.709765983765152, 42.154489380223595], [-70.710041902960342, 42.154467062553003], [-70.710319137454206, 42.154679385123444], [-70.710287792984374, 42.154922894581048], [-70.710103953301925, 42.155042545243546], [-70.709827670705977, 42.155434005047887], [-70.709242677714229, 42.155244858624322], [-70.70951942326154, 42.154583297646191], [-70.709765983765152, 42.154489380223595]]], [[[-70.773106701928398, 42.246503939246367], [-70.773814961454036, 42.246177549704811], [-70.774153645835639, 42.246198868729635], [-70.774338565903903, 42.246367679618807], [-70.774338412090316, 42.246592761633821], [-70.773630006776685, 42.246847126913522], [-70.773260491895812, 42.24686171450923], [-70.773106701928398, 42.246503939246367]]], [[[-70.755653911570846, 41.712566797861029], [-70.755867933354068, 41.712473116437856], [-70.756081549807931, 41.712569053147249], [-70.75629514137924, 41.713142193572033], [-70.756141850354396, 41.713324600488754], [-70.755866849537355, 41.713464073609799], [-70.755653184521137, 41.713341124635079], [-70.755653911570846, 41.712566797861029]]], [[[-70.772892295701894, 42.244786368157392], [-70.773385505277503, 42.244445113956466], [-70.773600734868509, 42.244559017642672], [-70.773631410409479, 42.244990831054196], [-70.773292027463739, 42.245284622315189], [-70.77286154902896, 42.245174396707888], [-70.772892295701894, 42.244786368157392]]], [[[-70.847378784953804, 42.269100410560519], [-70.848394940300352, 42.268984637324991], [-70.848395479011984, 42.269309386423473], [-70.847502341126074, 42.269485460008525], [-70.847286303493533, 42.269417248390106], [-70.847378784953804, 42.269100410560519]]], [[[-70.76079046605355, 42.248278898162056], [-70.761313626775774, 42.248234998157002], [-70.761590510951052, 42.248329603746186], [-70.76091305356077, 42.248781622989618], [-70.760666894851454, 42.248785079835521], [-70.760574559470328, 42.248390049334859], [-70.76079046605355, 42.248278898162056]]], [[[-70.773110206508179, 42.240990055190807], [-70.773695218769731, 42.240575643642096], [-70.774002920858024, 42.240760447814054], [-70.774002667805533, 42.241057556078047], [-70.773356151220938, 42.241076513763538], [-70.773110206508179, 42.240990055190807]]], [[[-70.77285976002824, 42.250251716709883], [-70.773229428538642, 42.250183201408568], [-70.773413443937812, 42.25031545442166], [-70.773352513400425, 42.250640898700581], [-70.77279765068144, 42.250595159877413], [-70.77285976002824, 42.250251716709883]]]]}, "type": "Feature", "id": 11, "properties": {"COUNTY": "PLYMOUTH", "AREA_ACRES": 441449.70000000001, "OBJECTID": 12.0, "FIPS_ID": 25023}},{"geometry": {"type": "MultiPolygon", "coordinates": [[[[-71.069156037911711, 42.385174606430965], [-71.068816392657666, 42.385171623523078], [-71.068230242765082, 42.385308429302761], [-71.067736374119619, 42.385659936609464], [-71.067088779167079, 42.385635534828346], [-71.065083625363542, 42.385149201248304], [-71.064682460339412, 42.385156686959242], [-71.064220136197363, 42.385245505453049], [-71.063170068670658, 42.385084513744914], [-71.063262902176149, 42.384830535660981], [-71.063911226951703, 42.384008153652644], [-71.063972896707511, 42.38378214572208], [-71.063602557593782, 42.38361760992202], [-71.063077822565418, 42.384005531914433], [-71.061997642874488, 42.385267405707246], [-71.060948949677311, 42.385241531729427], [-71.060763820516158, 42.385109653588202], [-71.061041431581359, 42.384969548368467], [-71.06138057947264, 42.384396279814318], [-71.061597221908883, 42.38423901543684], [-71.061658302502423, 42.383959079393556], [-71.061195719413831, 42.383823353597926], [-71.061288337034583, 42.38346134193921], [-71.060980350850059, 42.383394896427411], [-71.060609539826629, 42.383806531816241], [-71.060177864602622, 42.384535193866618], [-71.060085163465587, 42.38469860133862], [-71.059529625113484, 42.384744821181208], [-71.059529606235145, 42.384555761205192], [-71.060085339482271, 42.383870339534006], [-71.060301686804166, 42.383388973683836], [-71.060023390881497, 42.383349017434369], [-71.05860405451601, 42.384896573227181], [-71.058295435607747, 42.384920146666396], [-71.04999528172624, 42.384005702024126], [-71.049965255578954, 42.383754134715012], [-71.049687892299048, 42.383669142798013], [-71.049471954648098, 42.383825847466362], [-71.049039740738436, 42.383896807244973], [-71.048114051987312, 42.3837063658208], [-71.047774538659183, 42.383550272639432], [-71.047651483427899, 42.383165456718231], [-71.047188509866871, 42.382750043979911], [-71.047127200032989, 42.382408864212863], [-71.047590053352195, 42.381788317206045], [-71.049040291592462, 42.38201458107401], [-71.049256113458384, 42.381839330816895], [-71.049256249784221, 42.381632805644571], [-71.047497605310099, 42.381267498190788], [-71.047528408997692, 42.380780924368715], [-71.047836808093408, 42.380072620863061], [-71.051322699877574, 42.380532990899596], [-71.057802524650043, 42.381497798231244], [-71.058171727978817, 42.381490754019104], [-71.058357071156692, 42.381172404298013], [-71.058110840593613, 42.380924420304986], [-71.057123381243073, 42.380626949927681], [-71.054223254739583, 42.380075577316767], [-71.052495838917366, 42.380052575775423], [-71.050027058523895, 42.37972784582184], [-71.047929775979185, 42.379620592054721], [-71.047375355734886, 42.376919801078664], [-71.047560058844198, 42.376781523253754], [-71.048238344114068, 42.376643474183567], [-71.04879466032402, 42.376921955513289], [-71.049102547186649, 42.376825841617446], [-71.049164549068493, 42.376644856976228], [-71.048917499424419, 42.376297908028249], [-71.049534181608806, 42.376232802915389], [-71.049780931215949, 42.376093594100873], [-71.049749988889388, 42.375869031303395], [-71.049503650275867, 42.375729062472672], [-71.049503365505629, 42.375359943404199], [-71.049997231109089, 42.375063070882803], [-71.050491886417987, 42.374073607869121], [-71.051632793731557, 42.373071358413164], [-71.052497361924452, 42.372767546749159], [-71.05366944058423, 42.373620081674176], [-71.054008874526133, 42.3737130474819], [-71.053700683163612, 42.373132877049699], [-71.054101789180692, 42.372864886335222], [-71.054471190140916, 42.372839939213769], [-71.055119785820906, 42.373341479028632], [-71.055366201193436, 42.37343642180393], [-71.055674274724467, 42.373430860021351], [-71.055704804038314, 42.37325038020704], [-71.054286597783857, 42.372104859155684], [-71.054440751506419, 42.371904062125694], [-71.054872734117936, 42.371905194388944], [-71.056415089724226, 42.372679187883307], [-71.057278740741197, 42.372294220887461], [-71.057402160086696, 42.372111847346922], [-71.056383941644796, 42.371580716618332], [-71.056383869028991, 42.371400658710094], [-71.057310103542065, 42.370987843782991], [-71.057803304335451, 42.370897461283398], [-71.059005796412549, 42.371398316452257], [-71.05959181688489, 42.371351675982488], [-71.06002395243884, 42.371190647634492], [-71.059962207900824, 42.3706244003439], [-71.060055033063691, 42.370370424007852], [-71.059684638974659, 42.369755640379189], [-71.059962526197566, 42.369706107581315], [-71.060270583379136, 42.369979622855404], [-71.060487370052982, 42.370074441483666], [-71.061134731722817, 42.369846709513368], [-71.061133907585443, 42.36940556512053], [-71.060949047039017, 42.369066711353973], [-71.060363328394658, 42.368950857770471], [-71.060147750507284, 42.368612965596981], [-71.06014721197586, 42.368306325256334], [-71.060702156424426, 42.367765391949902], [-71.0607022628501, 42.367557785785486], [-71.06042442601192, 42.367391881454864], [-71.058142566124928, 42.368198439838309], [-71.057093760987868, 42.368766629621348], [-71.056199418899567, 42.368998968047592], [-71.055211613926446, 42.36908914269452], [-71.053298598979879, 42.368880244735386], [-71.052775259028735, 42.368907470526004], [-71.052497381038918, 42.369092659544492], [-71.052157868432204, 42.369134642069248], [-71.051602739489439, 42.368901825353788], [-71.051633618983089, 42.368450630862107], [-71.051047766043496, 42.368083188439556], [-71.05104759369911, 42.367714069208013], [-71.050831600275146, 42.367510660866607], [-71.050584824469709, 42.367487729868003], [-71.049659515074922, 42.367720436708723], [-71.04944371398939, 42.367490648019498], [-71.049474031080749, 42.367120477976293], [-71.04999876004841, 42.366913214799496], [-71.050029487844924, 42.366570144671051], [-71.049289762545598, 42.366367474162054], [-71.049289940917959, 42.366069839116925], [-71.050060234895113, 42.366002452332999], [-71.050030068886286, 42.365822906600826], [-71.049074208544226, 42.365524858457121], [-71.049043545207837, 42.365228182781038], [-71.049505695401209, 42.365129251400532], [-71.050400906407717, 42.365248711547487], [-71.050647787425163, 42.365135969734283], [-71.050647795099593, 42.36494690891255], [-71.049352181296584, 42.364609902995717], [-71.049444167005504, 42.363779745836212], [-71.048951161748462, 42.363644480530716], [-71.049074567236985, 42.362732790354912], [-71.049444396582089, 42.362707861222496], [-71.050246828348179, 42.362963623332], [-71.050555266393758, 42.362985085574422], [-71.050616977657398, 42.362552017246777], [-71.049537034219156, 42.362228819698892], [-71.049444540127723, 42.362023011119213], [-71.049537356271145, 42.361859701880732], [-71.050154356019959, 42.361866618263626], [-71.050339536256175, 42.361449247516546], [-71.050339959054142, 42.361133607304531], [-71.050154666482555, 42.361037721993554], [-71.049136808072319, 42.360813165064258], [-71.049013017951594, 42.360536470513047], [-71.047625245531265, 42.360623840233337], [-71.047656387623192, 42.360173277110896], [-71.050555357562686, 42.359913925169714], [-71.05052453019151, 42.359554318558295], [-71.048643448621021, 42.359642022196041], [-71.048551245168412, 42.35886912054503], [-71.049260159965115, 42.35861306746223], [-71.049259765139823, 42.357901835854669], [-71.049599733829041, 42.357634160989456], [-71.049568181265457, 42.357445516405775], [-71.049321901275903, 42.357171133042932], [-71.049290963578287, 42.356964484939731], [-71.051388836287146, 42.353288243746981], [-71.05197565053362, 42.3527638608169], [-71.051820307035072, 42.352298524644723], [-71.051945100255651, 42.351936013095909], [-71.052591831922584, 42.35095163065526], [-71.05388757919863, 42.348667670793297], [-71.05493529962483, 42.347244226544824], [-71.055460782075343, 42.34674821714858], [-71.056323516167012, 42.346444369310717], [-71.057156153278513, 42.346312535154759], [-71.057650025334496, 42.345925059391369], [-71.058358330013419, 42.345921570116708], [-71.059468676839501, 42.345504942501258], [-71.059962211628232, 42.345163010362114], [-71.060856957715458, 42.344209869516312], [-71.06113434987715, 42.34334052516126], [-71.061010402943012, 42.343153781257158], [-71.060733095374189, 42.34299688132392], [-71.060363522026137, 42.342967289591172], [-71.060208890145645, 42.343843403868235], [-71.059992779436371, 42.344414803549789], [-71.059592031228433, 42.344800395399794], [-71.058050684349269, 42.345485456393334], [-71.056816752732459, 42.345715323399162], [-71.054812794857241, 42.345922571989199], [-71.050186639345654, 42.351778349074863], [-71.049261402915008, 42.353038016417827], [-71.048304668641521, 42.354198970187831], [-71.047719721572662, 42.354659781342214], [-71.047194924060364, 42.354957603425056], [-71.046239065081807, 42.355208708452416], [-71.04469628928284, 42.355092324881333], [-71.043586272616594, 42.35477003157613], [-71.043833609356213, 42.354270270397457], [-71.044296013093671, 42.353721754995725], [-71.044389006012892, 42.353449785008927], [-71.043525380640062, 42.353014760087348], [-71.043247419328381, 42.353082888657006], [-71.042507459678205, 42.353105245437305], [-71.042168437013359, 42.353174299069295], [-71.041551267296384, 42.353906118914892], [-71.041181321955506, 42.353903473108367], [-71.041088875110319, 42.353562703598705], [-71.041613376847195, 42.352922797049203], [-71.042754891019115, 42.351299522192924], [-71.04272384750611, 42.351110877397467], [-71.042569845262648, 42.350788950299155], [-71.041952723411114, 42.35062948263446], [-71.039886447681212, 42.35315222692897], [-71.038837845478639, 42.352738393509604], [-71.038961696381165, 42.352348973249228], [-71.040287636060967, 42.350424773455977], [-71.040442182643133, 42.350269010258543], [-71.040503931537003, 42.349988995707285], [-71.040350025589262, 42.349856217531268], [-71.039794539450625, 42.349668265193571], [-71.037634806400902, 42.352183213550468], [-71.037358274208856, 42.352188313363072], [-71.036833543777334, 42.351909360927955], [-71.03695700661072, 42.351474926486098], [-71.038560504008956, 42.349392691510658], [-71.038592379686463, 42.349149199969823], [-71.038006443077762, 42.348844618720634], [-71.037605255749199, 42.348869474778155], [-71.037081329527155, 42.349446345632543], [-71.036711122087354, 42.349416765500735], [-71.031685733213365, 42.347452853554863], [-71.030575886729736, 42.34708541928044], [-71.029496284904056, 42.346879610829653], [-71.028756121394423, 42.346856863311409], [-71.026473725680603, 42.348347017134174], [-71.026165353697536, 42.348343496077341], [-71.023328406188838, 42.347241333808547], [-71.023391762889389, 42.345645823459073], [-71.030371727834677, 42.345354939465807], [-71.02626011836783, 42.345234538566608], [-71.025704809362281, 42.345001503607243], [-71.02533460994006, 42.344683792242193], [-71.025058017818509, 42.344571733685591], [-71.022005433421867, 42.344616522816743], [-71.021912913824437, 42.344429326836185], [-71.021943737125696, 42.343771068824452], [-71.022035631380746, 42.343607146905264], [-71.037638423936826, 42.34338402548601], [-71.03788538368245, 42.343451370052982], [-71.038501971178107, 42.343540004778326], [-71.038563475364086, 42.342511664767784], [-71.041709088085369, 42.339609540905371], [-71.041832972536355, 42.339310056248699], [-71.041463083116824, 42.339244480573356], [-71.041001401883491, 42.33901864479985], [-71.04050777146395, 42.339316021243697], [-71.039921422059862, 42.339263079721114], [-71.039767132151994, 42.339887627353015], [-71.039366175423041, 42.340155480020414], [-71.038995546013368, 42.341323838166936], [-71.038780096394945, 42.341463060012799], [-71.035018448236627, 42.341692698859397], [-71.034987510666042, 42.340684242877551], [-71.034494429538512, 42.34052190488854], [-71.033661703505999, 42.340455509592921], [-71.033630710999745, 42.341482801140302], [-71.032551638668039, 42.341529105666801], [-71.032120031735275, 42.341734958217792], [-71.030455187266028, 42.341647684775829], [-71.030393756559477, 42.340522694468717], [-71.029653667082869, 42.340499952696199], [-71.029560619267201, 42.341573174690289], [-71.02851244040481, 42.34169096117644], [-71.02789524749339, 42.341638912265012], [-71.027341109619698, 42.341414982716955], [-71.026508837822973, 42.341303522718938], [-71.026261890156377, 42.341415582621849], [-71.025151453817855, 42.341597813219522], [-71.024905149285559, 42.341736881748773], [-71.01395874923135, 42.342092930463885], [-71.010846167202487, 42.340148593564436], [-71.010908728592298, 42.339606430723578], [-71.010353008651862, 42.339283289417743], [-71.009921564674826, 42.339209967519771], [-71.009799194093716, 42.338824568722451], [-71.009368938029084, 42.337111628097624], [-71.009677396053064, 42.336674048916677], [-71.010293512313112, 42.336465105009282], [-71.011003304774334, 42.336083248967221], [-71.011867883043266, 42.335077509213299], [-71.012361738186925, 42.334276089097884], [-71.012608648625715, 42.334136959761516], [-71.012793094973588, 42.334277918012248], [-71.0128237644834, 42.33450249228855], [-71.012639386288129, 42.334730746605075], [-71.012638866521769, 42.335144881457232], [-71.012884394256773, 42.335437978691942], [-71.012792142377535, 42.335898990389104], [-71.012205441239615, 42.336449645418909], [-71.012174265770042, 42.336999234868486], [-71.012297047063441, 42.337159558607823], [-71.013006457623945, 42.337362882035393], [-71.013036503650397, 42.338047235317539], [-71.015379155227663, 42.338411040933885], [-71.017630623629159, 42.338434554044454], [-71.018709389340614, 42.338343463601092], [-71.0201587909458, 42.338119406214346], [-71.021669833221694, 42.337525294962695], [-71.022286486298768, 42.33706420604674], [-71.022718538424229, 42.336606308891291], [-71.023151079203231, 42.335760654149084], [-71.023182512215925, 42.335148042237421], [-71.022998210435176, 42.334646442270881], [-71.022134495475498, 42.333473098884689], [-71.021210861615245, 42.332814289148573], [-71.019238399472471, 42.331804475508562], [-71.017789381539743, 42.331280104659093], [-71.016586881309451, 42.331049439362694], [-71.015693255749994, 42.330984367640077], [-71.014552628042196, 42.331373437103558], [-71.014429691336247, 42.331186646115654], [-71.014922914996959, 42.330475241793359], [-71.015662600258281, 42.330408047387856], [-71.019053366846592, 42.331212835801686], [-71.021180314654941, 42.332264980199255], [-71.021426517079462, 42.332215858824924], [-71.022289638297067, 42.332290392293828], [-71.024047437879858, 42.332745581616209], [-71.024724692160063, 42.332769720668637], [-71.025341475127391, 42.332605713945782], [-71.026082495763191, 42.332151329990943], [-71.02820881031937, 42.331420121587591], [-71.028548456855177, 42.331188608020483], [-71.029288470770567, 42.331076312437233], [-71.029997118449586, 42.330775901697443], [-71.031570568189309, 42.329730056158404], [-71.033019419949497, 42.329037680320994], [-71.034190914725201, 42.328719496629517], [-71.035886595872768, 42.32862615231879], [-71.036872720652923, 42.328815861002091], [-71.038846316295817, 42.32942924539023], [-71.039585792556224, 42.329568874727379], [-71.043161596641227, 42.329568016184645], [-71.044178600762194, 42.329451053489748], [-71.045318862086674, 42.329133173161949], [-71.046151761544564, 42.328631667994628], [-71.047046469855886, 42.327697267330002], [-71.047632064582046, 42.32668727895981], [-71.047848033409451, 42.326142908498618], [-71.047879221959533, 42.324494316124365], [-71.04766404616349, 42.324011810126464], [-71.047232088637458, 42.323577966332437], [-71.046553826049433, 42.32328386604113], [-71.044674135473301, 42.322939363489532], [-71.044057607980548, 42.322734352357188], [-71.043656775434641, 42.322363099060745], [-71.043626288218434, 42.322048413685707], [-71.043441326470429, 42.32177254785833], [-71.043163987760479, 42.321588505172286], [-71.041407293357736, 42.320736939086572], [-71.036691820153294, 42.31870477823233], [-71.036691724210911, 42.318452693936749], [-71.037308744710501, 42.317900865058228], [-71.03715464212695, 42.317723605744121], [-71.035120310148869, 42.317057635932919], [-71.03324068137411, 42.316622915178982], [-71.032932626330492, 42.316465821680282], [-71.032747833214657, 42.316208484938784], [-71.032533038754337, 42.315365200339201], [-71.032533596415888, 42.314041220700432], [-71.032688248783074, 42.313237250805571], [-71.0334585760301, 42.312619713176367], [-71.035709027848966, 42.311201850179785], [-71.036510901669402, 42.310376810263932], [-71.03688042411865, 42.310153764923044], [-71.037311693334118, 42.310128493117631], [-71.040300571132221, 42.311894364340993], [-71.041502152198788, 42.312665590498611], [-71.04279679395853, 42.31335380631058], [-71.042981398502619, 42.313557738362], [-71.043937420030531, 42.314107838382434], [-71.044337744225672, 42.314155071544896], [-71.045940179452131, 42.31330666900358], [-71.046002132039931, 42.313125143160548], [-71.045909886828127, 42.312946969420082], [-71.045446746593356, 42.31257718575413], [-71.044831009017159, 42.312461580885156], [-71.044584082632099, 42.312304220433084], [-71.043937612741004, 42.311504890765626], [-71.04384500337639, 42.311344719842566], [-71.043813939411336, 42.310976013439507], [-71.043998988958535, 42.310747171193938], [-71.044677383662176, 42.310429173993363], [-71.044553716080202, 42.310151841663789], [-71.044122196831296, 42.310060640714859], [-71.043721527345937, 42.310149080629046], [-71.042180744024733, 42.310194719880585], [-71.042458366354694, 42.309694447961313], [-71.042982650727893, 42.309351628907031], [-71.043999660868167, 42.309054068220696], [-71.044369864771099, 42.308849547778188], [-71.044862674306984, 42.308327075309201], [-71.045417757863675, 42.307272588966313], [-71.046127688438702, 42.305053361378668], [-71.04658963663654, 42.304549305578007], [-71.047514083658044, 42.304343629506661], [-71.047944843369592, 42.304570400406291], [-71.048068797516237, 42.304757160401174], [-71.048037902582251, 42.305262288134159], [-71.047667016329768, 42.306466692267584], [-71.047605160798881, 42.307179397335958], [-71.04772884044138, 42.3074560965849], [-71.0479750950539, 42.307587069017529], [-71.048498843553361, 42.307703916465549], [-71.050687403476758, 42.307637139524843], [-71.05250578253569, 42.307775859102428], [-71.052875113178175, 42.307363698564799], [-71.052905938136547, 42.306399416110693], [-71.052721781843857, 42.305718431909789], [-71.052197611741221, 42.305079427461777], [-71.050225482215012, 42.303358270962391], [-71.049702576095228, 42.302701253330959], [-71.049301768390677, 42.302510078295235], [-71.04905552778601, 42.302532790107861], [-71.048808284975621, 42.303104591613874], [-71.048438460449603, 42.303381692231248], [-71.048007447910365, 42.303497036827977], [-71.047607049848409, 42.303333406761979], [-71.047483641902417, 42.303155651368428], [-71.047422251083262, 42.302174620524866], [-71.047113655259054, 42.302081123632753], [-71.046713668994315, 42.30240365516493], [-71.046712719170216, 42.303061502147564], [-71.046497330050627, 42.303128174899186], [-71.046251166710036, 42.303105775885705], [-71.045233646762838, 42.302763059575263], [-71.043755234538438, 42.30249268994335], [-71.043508306411866, 42.302307687400713], [-71.043385668333684, 42.301940957100527], [-71.043385755999537, 42.301256097354496], [-71.043786682560452, 42.300501435994718], [-71.043786197266229, 42.299727173720768], [-71.044187434030718, 42.29944967231269], [-71.045358236339453, 42.299059348260727], [-71.045882260372537, 42.298789079015769], [-71.045728325928081, 42.298557722865873], [-71.045204011102385, 42.29826079941401], [-71.044773005725133, 42.297889968272067], [-71.044526663071068, 42.297119862963214], [-71.044619593352863, 42.296136650176607], [-71.044896486509771, 42.296131535243553], [-71.04520484827907, 42.296405097850368], [-71.045912716317559, 42.29821183513274], [-71.04628265872212, 42.298169451875587], [-71.045790323166003, 42.296728101979852], [-71.044620773291769, 42.294623514670683], [-71.044096607130001, 42.293957461804162], [-71.044003705100067, 42.293706718597363], [-71.042895349451044, 42.292934264691176], [-71.04246435767034, 42.292266323950315], [-71.042279253122103, 42.291737738188857], [-71.042186865921309, 42.290712733786954], [-71.041910371544787, 42.289844548192221], [-71.04157181629256, 42.289778465764769], [-71.041663211002813, 42.291307637692206], [-71.042032312245695, 42.292265142653186], [-71.042093871715565, 42.293092587526175], [-71.042032085058693, 42.293453543240879], [-71.04160108657625, 42.293524388853704], [-71.040954749752018, 42.293139809079655], [-71.040676769413096, 42.293045786626479], [-71.039475073793895, 42.292859834597529], [-71.039352439159984, 42.292565033451119], [-71.038767145711176, 42.292476616021325], [-71.038705156377944, 42.292180347028811], [-71.038859444402178, 42.291807970288986], [-71.038735848282386, 42.291396125168696], [-71.038428266382894, 42.291122547619857], [-71.038058546257744, 42.29093983021793], [-71.03784345253635, 42.290754402637994], [-71.037843676197639, 42.290142196246578], [-71.037597685999401, 42.289273042272299], [-71.037257944968118, 42.288855823319608], [-71.037258642578905, 42.288378664370228], [-71.037752281594265, 42.287712175100459], [-71.037875451189009, 42.287349757564719], [-71.03796741440884, 42.286843705672879], [-71.037845418759431, 42.286530358985182], [-71.038060219970419, 42.286454696997431], [-71.038367908854227, 42.286710269982045], [-71.038614455511393, 42.286687582686412], [-71.038522291714571, 42.286140276863868], [-71.038645440099927, 42.285912904177181], [-71.039138240648583, 42.285723567392736], [-71.039231925412963, 42.285479150112323], [-71.039847537812363, 42.284990411020459], [-71.041142482470349, 42.283832486084279], [-71.041296405910387, 42.283505659606305], [-71.041512562950118, 42.283006222582664], [-71.041451354712635, 42.280926901443081], [-71.041636068966056, 42.279761741848553], [-71.041944345764534, 42.279044977134433], [-71.042715113575397, 42.277977223543061], [-71.043577303589686, 42.277358270869328], [-71.044255831620532, 42.277039735980708], [-71.045024874371663, 42.276962837702627], [-71.045918994878875, 42.277262396737321], [-71.047211384727532, 42.277950561545346], [-71.048259310742353, 42.278157256845923], [-71.048751778184482, 42.27842757403279], [-71.049829753228778, 42.278570271176953], [-71.050322558066313, 42.278452911012081], [-71.050939003340972, 42.278406346122523], [-71.053064756632267, 42.277629660520148], [-71.053958092010888, 42.277496466742939], [-71.055005161708564, 42.276964216025725], [-71.055744252811991, 42.276419600905975], [-71.056144907245567, 42.275989002872215], [-71.056330140937064, 42.275210953460494], [-71.056207157424183, 42.27470009450262], [-71.055775434693032, 42.274203256793896], [-71.054666811742536, 42.273376353042174], [-71.054235822672737, 42.272916064646658], [-71.054204726364688, 42.272528812116541], [-71.054728904926066, 42.272096447391171], [-71.055375790922938, 42.271796810521082], [-71.05602269907601, 42.271614210036681], [-71.057500757098254, 42.270659376737861], [-71.058732209718428, 42.269583206020776], [-71.059625271987116, 42.269279359133613], [-71.059871660151529, 42.269076654139575], [-71.06039540751577, 42.268958739260363], [-71.060857776614711, 42.268689335657349], [-71.061196718530326, 42.268161160420426], [-71.061750816025778, 42.267754716967808], [-71.062212178385295, 42.267611347123363], [-71.062490200907206, 42.267705228375732], [-71.062828909158128, 42.268068891821031], [-71.062735978721634, 42.268484390014287], [-71.06289039673986, 42.268661618177092], [-71.063321645685605, 42.268825314121315], [-71.064214510438617, 42.268845001309096], [-71.064553738544802, 42.269100084678144], [-71.064584683119989, 42.269306732470476], [-71.064215280032698, 42.270178088993454], [-71.064368514432616, 42.270634405740388], [-71.064878453322066, 42.27063912988595], [-71.065203556718018, 42.270834557370279], [-71.065532263538856, 42.271070421326016], [-71.065758589621595, 42.271210824862592], [-71.066122018911358, 42.271280261642382], [-71.067472332856767, 42.271435076105433], [-71.067761516880822, 42.271282482520839], [-71.067857408297144, 42.271103952455817], [-71.068060741465274, 42.270901608204596], [-71.068756198468208, 42.2707032733259], [-71.069552923938588, 42.270550419218708], [-71.070130262545831, 42.270554832464057], [-71.070462041815915, 42.270590375544444], [-71.070771889890196, 42.270678233541808], [-71.071235377857491, 42.270758201526618], [-71.071637028527419, 42.270804715692208], [-71.071951326218453, 42.270754660137399], [-71.072264189032751, 42.270647789039955], [-71.07265932810455, 42.270419681898289], [-71.072902845234509, 42.270313631370847], [-71.076379034829969, 42.270206135598002], [-71.076940566651885, 42.27019920248059], [-71.077347846009786, 42.270165230027146], [-71.077838757102668, 42.270096181552795], [-71.078512362028945, 42.269933179447321], [-71.078986635225334, 42.269795371640008], [-71.082650039129376, 42.268496006791629], [-71.083081031668627, 42.268485148063199], [-71.084118051009938, 42.268740453774264], [-71.085325335553961, 42.269022203793583], [-71.089012634660335, 42.269729864820839], [-71.089458042441819, 42.269684191890043], [-71.089664210660331, 42.269612904260768], [-71.089949239526987, 42.269306107778263], [-71.090036924219518, 42.269093138378523], [-71.090105658471373, 42.268755228840227], [-71.090083208785003, 42.268440581815746], [-71.089975814810458, 42.26812176019579], [-71.08994088592361, 42.267956159229527], [-71.090038001845286, 42.267503022010601], [-71.090179515002319, 42.26696955552331], [-71.090281805327493, 42.266727918206712], [-71.090408910652599, 42.266566316499585], [-71.090760597082848, 42.266464575295863], [-71.091045106595161, 42.266460547128254], [-71.091291521195927, 42.266480600918477], [-71.09184110383633, 42.26661084923122], [-71.092157392309957, 42.266641232917578], [-71.092434469387754, 42.2666432969908], [-71.092836207289807, 42.266712245052119], [-71.09308486221731, 42.266817832010872], [-71.093542795966542, 42.26698880131741], [-71.093913356837163, 42.26702441394918], [-71.09425123143059, 42.266996888479426], [-71.094486977565936, 42.266885182936832], [-71.094689052517765, 42.266636691618743], [-71.094844732336966, 42.266383444699571], [-71.095022360030612, 42.266071755066214], [-71.095200539334101, 42.265806252796423], [-71.095531562923085, 42.265464762661473], [-71.096080733673091, 42.264937135505761], [-71.096569565219582, 42.264461691562516], [-71.09689750787544, 42.264011609677013], [-71.097098813280212, 42.263728719637868], [-71.097263739924799, 42.263543564967414], [-71.097518364263181, 42.263242855037184], [-71.097667481806582, 42.263046480789981], [-71.097826019747771, 42.262912530357582], [-71.098000408845337, 42.262801773077072], [-71.098336837217957, 42.262711749311798], [-71.098642853627979, 42.262639084216296], [-71.098879363593369, 42.262556092094847], [-71.099258039969854, 42.262282280576812], [-71.100156587519308, 42.26156120628454], [-71.100639546459348, 42.261143164021398], [-71.102315002721909, 42.260085986796533], [-71.102832921478154, 42.25986783444155], [-71.103099910265215, 42.259773055007159], [-71.103322047920329, 42.259718093639492], [-71.103614244014565, 42.259720273105202], [-71.103910774037303, 42.259882181200922], [-71.104350257583363, 42.26024832058981], [-71.10473555131172, 42.260597976178737], [-71.105132358036371, 42.260792907334384], [-71.106407466958274, 42.260702212779222], [-71.107282170266402, 42.260604463405876], [-71.107667902746087, 42.260651337517686], [-71.107989321429869, 42.260887145161966], [-71.10829384955062, 42.261071576808661], [-71.1085805512093, 42.261159794155851], [-71.108982648912843, 42.261246153031053], [-71.10922912250301, 42.261254284558873], [-71.109636170876314, 42.261225868940024], [-71.110434646003995, 42.261146922876655], [-71.110931451395373, 42.261008519635674], [-71.111319441888995, 42.260826441237271], [-71.111593027521081, 42.260662430880942], [-71.11216210216493, 42.260002629285701], [-71.112641388633762, 42.259476487555787], [-71.113033755930445, 42.259150909277416], [-71.113284438705847, 42.259004283635313], [-71.109479237643853, 42.255519641452366], [-71.109302844117835, 42.25010477096005], [-71.109249709770509, 42.247952313138533], [-71.124486032790429, 42.24005514824902], [-71.126528649696084, 42.238950470806891], [-71.124477096130505, 42.236860101070619], [-71.124062911622872, 42.236423805620731], [-71.123723936962804, 42.236054108040385], [-71.123369765188741, 42.235775560953563], [-71.123030961182025, 42.235541448505799], [-71.12281498257704, 42.235372561054646], [-71.122675997477756, 42.235132351670181], [-71.122536252242938, 42.234877554804328], [-71.122488836880123, 42.234641067446212], [-71.122487606949505, 42.234440744382297], [-71.122570981299162, 42.234233407038339], [-71.122863352591679, 42.234206818594572], [-71.123818666420206, 42.234218956703096], [-71.124057048034231, 42.234225859857851], [-71.124348778656525, 42.234123279355373], [-71.124489365407214, 42.23399157385726], [-71.124676867030757, 42.23381374566344], [-71.124661732378428, 42.233505339913897], [-71.12460800277988, 42.233311057298188], [-71.124539024584834, 42.233093676823295], [-71.124608570351256, 42.232887913296011], [-71.124762859214258, 42.232630748988555], [-71.124932071612008, 42.232430983009863], [-71.125155161999089, 42.23223643449171], [-71.125447880579728, 42.231985303192502], [-71.125624858357668, 42.231864878877971], [-71.125978824804136, 42.231745031196645], [-71.126148322995519, 42.231618999775158], [-71.126417499837871, 42.231373461267133], [-71.126817653588546, 42.231247549189412], [-71.127179495710223, 42.231167697205819], [-71.127417651596062, 42.231087442627931], [-71.127625734151323, 42.230950280392385], [-71.127779665853751, 42.230812942172207], [-71.128172004633441, 42.230407363563131], [-71.128587828679684, 42.230024367594943], [-71.128849715404229, 42.229841821518981], [-71.128988472181547, 42.229646992768984], [-71.129157879752356, 42.229327389790441], [-71.129211853933427, 42.229150292990688], [-71.129304250507275, 42.228990246113327], [-71.129665876677635, 42.228778670140578], [-71.129988820637209, 42.228635662038897], [-71.130266147060595, 42.228504300148629], [-71.130450796529161, 42.228332215248443], [-71.130612688873967, 42.228115491416332], [-71.130757332754001, 42.227865040229233], [-71.142568974478209, 42.235876297409526], [-71.14559727452027, 42.250096504337044], [-71.146597237971392, 42.255748466521808], [-71.152250558179531, 42.258306839058029], [-71.158530063076142, 42.255135815476358], [-71.171207159250685, 42.265257299426651], [-71.171253301563752, 42.265451536814325], [-71.171323085275276, 42.265691487192072], [-71.171423652396228, 42.265908928001103], [-71.171593345388871, 42.266142951925239], [-71.171755085820692, 42.266274498416884], [-71.171947794458731, 42.266371291436108], [-71.173141624265511, 42.266719061343238], [-71.173595791467847, 42.266839103024971], [-71.173811927401317, 42.266930287572571], [-71.17407367287673, 42.267038526850591], [-71.174243483991546, 42.267181346478239], [-71.174343723081563, 42.267347106348176], [-71.174436100606172, 42.267603954427415], [-71.174498109726684, 42.267850002748212], [-71.174498846452707, 42.268084083409697], [-71.174468223315827, 42.268358588541645], [-71.174368434333871, 42.268552950950443], [-71.174145406716832, 42.268810615006821], [-71.173114742487911, 42.269697274370692], [-71.172883826706851, 42.269954913492356], [-71.172883951410597, 42.270188992341396], [-71.173030598000807, 42.270429160333812], [-71.17321588523231, 42.270675019952186], [-71.173370384582213, 42.270920791696085], [-71.173439995965907, 42.271126348476209], [-71.173617083694907, 42.271411527269514], [-71.173733075254916, 42.271697162428303], [-71.174018791023201, 42.272262912964912], [-71.174543288189142, 42.273000396646935], [-71.174736135399897, 42.273405538364223], [-71.174844501523111, 42.273714198377817], [-71.174814145813968, 42.273959984678115], [-71.174768661739577, 42.274366161771937], [-71.174499504254186, 42.274892075366516], [-71.174330709979202, 42.275372627659671], [-71.174261774906455, 42.275647023939648], [-71.174377731874443, 42.275847129503788], [-71.174531657343564, 42.275995575245716], [-71.174955517811455, 42.276058086061838], [-71.175487127457416, 42.276149079211386], [-71.176072525308115, 42.276342585793252], [-71.17642703158549, 42.276502848249741], [-71.176835514519382, 42.276634001718172], [-71.177482444729392, 42.276672912524667], [-71.178629815932695, 42.27659231067198], [-71.179130466284363, 42.276574534023027], [-71.179754077828463, 42.276574023754875], [-71.180385461497607, 42.276498716761438], [-71.181255292196667, 42.276281100573044], [-71.182495236062096, 42.275965558526103], [-71.182779585035775, 42.275879645298751], [-71.183041562713669, 42.275879288207797], [-71.183257506616542, 42.275993501854103], [-71.185210911462448, 42.279449812203282], [-71.18528804960107, 42.279638546345645], [-71.186027736666006, 42.279878069712076], [-71.187923023154696, 42.28032213083965], [-71.188133185415793, 42.280433528515971], [-71.188339767605939, 42.280607396869087], [-71.188616924436744, 42.280778665256712], [-71.188941114093367, 42.281001197345525], [-71.189434313887062, 42.281223645413405], [-71.189896879652068, 42.281463474449104], [-71.19026677524586, 42.281663168500586], [-71.190459725154199, 42.281800354037429], [-71.190629064201516, 42.281931353620671], [-71.190984081479371, 42.282348697559463], [-71.191146507065937, 42.282754268712644], [-71.191152835090364, 42.282973238419721], [-71.178415138485349, 42.294616773201568], [-71.164524227136837, 42.303843987686044], [-71.152022153573526, 42.29455561992522], [-71.146793853173534, 42.297331760283321], [-71.139971633709848, 42.302222790145073], [-71.136345507914029, 42.306168807536118], [-71.134321296228862, 42.309096180621609], [-71.132581301957401, 42.31180052206448], [-71.13235774125873, 42.312177931404378], [-71.13040199877544, 42.314636758136338], [-71.124467818875715, 42.321509280063765], [-71.123577029801552, 42.32276740864485], [-71.123169915018877, 42.322497066672263], [-71.121447790230022, 42.323654498105078], [-71.119971226982855, 42.322699274832807], [-71.119255358636565, 42.322673227958781], [-71.118712843484928, 42.322790178421833], [-71.118289428757294, 42.323093702832672], [-71.116991941597803, 42.323490017714825], [-71.116597611407315, 42.323716657623081], [-71.11637081591897, 42.32386444948753], [-71.116237655142641, 42.324096370978182], [-71.11612298411778, 42.324460067129586], [-71.115881846441965, 42.325910985817579], [-71.115764420676754, 42.326148000907224], [-71.115513165039872, 42.326565797484299], [-71.115222096398512, 42.326965994519519], [-71.113273848400866, 42.33113177704368], [-71.113334243897398, 42.331394775796127], [-71.113371396398179, 42.331668949994388], [-71.113226178603441, 42.332042623310478], [-71.112783487619836, 42.332844644532443], [-71.112658309319073, 42.33307550807443], [-71.112390086797092, 42.333462270123988], [-71.111923479041465, 42.333926597441661], [-71.110591512812718, 42.335249484685747], [-71.110917807259995, 42.335702986453178], [-71.110830812085425, 42.335938388557821], [-71.11074674994218, 42.336288677824633], [-71.110958501667611, 42.336445865397316], [-71.111164664051742, 42.336683429767021], [-71.111200668854792, 42.336906373866583], [-71.111312148741987, 42.337070513973842], [-71.111431377832673, 42.337217754664167], [-71.111482333316076, 42.337417071492993], [-71.111001034258479, 42.338567817772407], [-71.110885384068098, 42.338884239123118], [-71.110790413306731, 42.339429134144964], [-71.110610561491185, 42.339963118366285], [-71.110479200533348, 42.340268232372239], [-71.110360403111954, 42.340464183424672], [-71.110158739509757, 42.340735838006943], [-71.109986295628985, 42.340932777125971], [-71.109820484052719, 42.341077341526045], [-71.109630914228021, 42.34121741359327], [-71.109418356332995, 42.341346063583252], [-71.109129247705511, 42.341509924442526], [-71.108731884077898, 42.341635243868538], [-71.108403247078058, 42.341753953807483], [-71.10822190637542, 42.341916468831513], [-71.107981739367546, 42.342171693076651], [-71.107690106014729, 42.342232638404944], [-71.107346451227755, 42.342345622246285], [-71.106974170180209, 42.342573384384984], [-71.106756312179513, 42.342811216665588], [-71.106553663970686, 42.343042348390497], [-71.106252725168218, 42.343349667944487], [-71.10594985752661, 42.343576494059931], [-71.105564939286353, 42.343902159756389], [-71.107058743853216, 42.347148321187028], [-71.106464584682968, 42.349735703613739], [-71.122889196243207, 42.351695392789082], [-71.122927731843319, 42.351379877909082], [-71.124030609395632, 42.351530956364087], [-71.124453222326508, 42.351389911644404], [-71.124810457597249, 42.351200396604419], [-71.125526936236056, 42.350788599219058], [-71.125889271494856, 42.350577040355759], [-71.126220749505066, 42.350411024696129], [-71.126575146324555, 42.350227616906132], [-71.126853045717425, 42.350090684805465], [-71.128410145541423, 42.349838514579297], [-71.128579811347933, 42.349695646712114], [-71.12878027168567, 42.349558369773], [-71.129003817775541, 42.349375162204161], [-71.129150263910404, 42.349238340536282], [-71.129281136329254, 42.349066537259375], [-71.133397056096641, 42.347070378420845], [-71.140100929405875, 42.342013924891305], [-71.14109499935077, 42.341236030757187], [-71.14132627629867, 42.341047691583341], [-71.141449331704464, 42.340875939949669], [-71.141618857354459, 42.340641222706729], [-71.14174973070682, 42.340395761349541], [-71.141864864674687, 42.340057971063288], [-71.144200838435964, 42.339959979937419], [-71.146211921844895, 42.338563984299995], [-71.146504676117303, 42.338466393046971], [-71.146133600449204, 42.337357894283926], [-71.148630919197458, 42.336789998174233], [-71.14828300241048, 42.335767104431241], [-71.149994050994223, 42.335354231421029], [-71.150340836333726, 42.335005253637007], [-71.149754615065163, 42.334525774808874], [-71.156721740011761, 42.330219811368465], [-71.159480429981897, 42.332667175030032], [-71.159742746181252, 42.332895905380319], [-71.160020544948651, 42.332998550167922], [-71.160822307558902, 42.333300805342972], [-71.161439399545372, 42.333557496641497], [-71.162040571287278, 42.333706192961017], [-71.162364671306435, 42.333705974914324], [-71.162719411351517, 42.333694052046589], [-71.167467160348906, 42.333262239649613], [-71.168286052995143, 42.334748463619789], [-71.168471396842477, 42.3350854366589], [-71.16870310298296, 42.335513742354188], [-71.168772896808775, 42.335811039128217], [-71.168881230099203, 42.336303179527093], [-71.169113783011895, 42.337359978880095], [-71.169191678692201, 42.338034879984974], [-71.16897628665123, 42.33845226437851], [-71.168645224853705, 42.338572309582226], [-71.168267594117495, 42.338709685085576], [-71.166810964698513, 42.339276526200081], [-71.166711941436844, 42.340083168393306], [-71.17485060436023, 42.350320237619592], [-71.17389830792952, 42.353407774371163], [-71.167535649551439, 42.359998733059683], [-71.166832041132636, 42.35991234021143], [-71.166161144271669, 42.3598153246149], [-71.165914323360553, 42.359684066532367], [-71.164563427909783, 42.358804606836053], [-71.164215983433593, 42.358650544388361], [-71.163907597893996, 42.358547731254014], [-71.163498671476376, 42.358473972464473], [-71.162527085740592, 42.358451409292542], [-71.162002686842229, 42.358543318952847], [-71.161663550773739, 42.358743715646931], [-71.161301285275144, 42.359023988584624], [-71.160985602769273, 42.35924137770958], [-71.160576631259403, 42.359424729969142], [-71.159774741595427, 42.359694156751644], [-71.159281586053496, 42.359819907150147], [-71.158880686991182, 42.359877777496045], [-71.158363618612029, 42.359935301419895], [-71.157877965208741, 42.359952403627773], [-71.157500229169983, 42.359946777907815], [-71.157206892375086, 42.359890266316434], [-71.156898170385944, 42.359850453389633], [-71.156543233993204, 42.359781872545604], [-71.15618098427349, 42.359718940539409], [-71.155733452870464, 42.359690593193648], [-71.15539449843051, 42.359696870377604], [-71.155024376344272, 42.35971997844868], [-71.154653819528619, 42.359800432224276], [-71.154106687790417, 42.35996083942787], [-71.153381672906008, 42.360195521798538], [-71.152741749433886, 42.360429916386941], [-71.152233025704902, 42.360601684218281], [-71.151708583021929, 42.360739641487818], [-71.151145827200907, 42.360802666423801], [-71.150566987548814, 42.36085438617171], [-71.149896105542254, 42.360888897487257], [-71.149402486312695, 42.360917823453271], [-71.149009225328399, 42.360952635392479], [-71.148638951413659, 42.360935749786698], [-71.148346290627984, 42.360998415497932], [-71.148091412721811, 42.361055614307801], [-71.147775301467675, 42.361187438785123], [-71.147528440076513, 42.361330728214512], [-71.147212698732105, 42.361548079419592], [-71.146812209219789, 42.361811264158931], [-71.146527003008273, 42.362102980801218], [-71.146203210435999, 42.362434550712983], [-71.14611078309845, 42.362594607210063], [-71.145941359258359, 42.362868672855811], [-71.145764344557307, 42.363240665688693], [-71.145641307999327, 42.36344672211991], [-71.145549213477537, 42.363698518238941], [-71.145394755044492, 42.363944000075136], [-71.145240517067805, 42.364149959852007], [-71.144916509243345, 42.364430299150506], [-71.144677815478033, 42.364607368325302], [-71.144376798641304, 42.364727436327904], [-71.143937748525559, 42.364847616484163], [-71.143663387100247, 42.364933464271303], [-71.143313041356492, 42.364973971504909], [-71.143058521337139, 42.364985605854429], [-71.142610797490889, 42.364899768782855], [-71.142325149508395, 42.364791386789662], [-71.142078100378797, 42.36470572136399], [-71.141553751599105, 42.364517279245987], [-71.141260539078843, 42.364437590116708], [-71.140874823039709, 42.364357611442479], [-71.140574165651046, 42.364306526386038], [-71.140296243935452, 42.364334916822905], [-71.140003386593577, 42.364363890041759], [-71.139733441686545, 42.364398426027648], [-71.139494602079935, 42.364449444075497], [-71.139255641887047, 42.364564111429829], [-71.138962810760546, 42.364758374487103], [-71.138592166508403, 42.365079062469], [-71.138176214793987, 42.365382231220025], [-71.137536047590501, 42.366000242075891], [-71.136889166735827, 42.366537832666388], [-71.136534829175986, 42.366869278826059], [-71.136018274142785, 42.367098298397742], [-71.13540119060751, 42.367327627236115], [-71.134723822140941, 42.367568014898254], [-71.134199375520055, 42.367773953721724], [-71.133868155712591, 42.367946204747625], [-71.133537070374047, 42.368157797699858], [-71.132974806425437, 42.368518999851759], [-71.132674299858792, 42.36875319500205], [-71.132489777069097, 42.368896651167816], [-71.132043106977733, 42.369336902903484], [-71.131904827330658, 42.369503013158862], [-71.131843160938075, 42.369668288138676], [-71.131797228750798, 42.369862782670779], [-71.131874392542272, 42.370268157735964], [-71.132005785499715, 42.370513905706332], [-71.132128903323846, 42.370742251554702], [-71.132213931581433, 42.370902323944968], [-71.132329591568976, 42.371056282215925], [-71.132568373493271, 42.371313086071886], [-71.132753933306446, 42.371535868816032], [-71.133031184839368, 42.371963848485201], [-71.133092803774232, 42.372329830498693], [-71.13303131264955, 42.372506810035503], [-71.132808478430604, 42.372889890038522], [-71.132638295603556, 42.373112707138333], [-71.132376931844064, 42.373272212741895], [-71.132014950985578, 42.373466867112882], [-71.131498019718052, 42.373644188766065], [-71.13108207658567, 42.373763853731077], [-71.130696817836252, 42.37382671776281], [-71.130164655969452, 42.373866691235186], [-71.129656525345709, 42.373866676980519], [-71.129108953430162, 42.373780556200252], [-71.12870767962788, 42.37365493249208], [-71.128407324810823, 42.373546468730872], [-71.128098935279667, 42.373421142890422], [-71.127775156407793, 42.373249581841719], [-71.127443366098788, 42.373016144396018], [-71.127158233806171, 42.37283903495041], [-71.126919685621672, 42.372565925512184], [-71.126734754128734, 42.372383648189512], [-71.12638860522317, 42.371951468473952], [-71.125781511461753, 42.37119667707924], [-71.125397392303611, 42.370679383577773], [-71.124664879100493, 42.369704147817721], [-71.124467090390993, 42.369583674313652], [-71.124265138251843, 42.369469308802628], [-71.123921004711903, 42.369254996644152], [-71.123570163515708, 42.369046153226797], [-71.123113046284075, 42.368906282517031], [-71.122403899469049, 42.368825721968264], [-71.121925670566526, 42.36876563252553], [-71.119031384553594, 42.368673976846672], [-71.118784408514344, 42.368619141448271], [-71.118357965680076, 42.36850852269378], [-71.118000361881315, 42.368357708163977], [-71.117718088232024, 42.36813728072768], [-71.117543108238721, 42.367881828157635], [-71.11730048247378, 42.367369569013441], [-71.117114649000243, 42.366982367789383], [-71.117045358867287, 42.366656323614222], [-71.117074338602819, 42.365900179774009], [-71.117025164055676, 42.365420073462879], [-71.117093268009171, 42.363695711490486], [-71.117041007451832, 42.3627631107653], [-71.116716076909157, 42.360070800164834], [-71.116712274667918, 42.359596426052754], [-71.116772246346088, 42.359194827592916], [-71.116894595217161, 42.358535234378003], [-71.11708645057395, 42.357542225947292], [-71.117165611319123, 42.356997815305043], [-71.117187229473615, 42.356333924844947], [-71.117006091959595, 42.355838163253608], [-71.116886743816721, 42.355381949775058], [-71.116569944872197, 42.355020238433369], [-71.115996118610042, 42.354529917259718], [-71.115056074671841, 42.353844265602376], [-71.114145278176565, 42.353421408514869], [-71.113428964850257, 42.353093818667787], [-71.112561063481465, 42.352864655221211], [-71.111818636472762, 42.35272035593254], [-71.110163304441585, 42.352404696622337], [-71.109731124327809, 42.352358846438733], [-71.107394243477003, 42.352246188110058], [-71.106270419620415, 42.352266563514554], [-71.103452541746549, 42.352365995923222], [-71.102553091791776, 42.352451839345278], [-71.092650869627889, 42.353712435593003], [-71.092106720336645, 42.353845550259102], [-71.077686575222643, 42.358348425585028], [-71.077213524062955, 42.358548712510874], [-71.076892961518411, 42.358690409571281], [-71.076657545793324, 42.358842052298456], [-71.076354497882221, 42.359068799667156], [-71.076167382788256, 42.359294353015699], [-71.076051273367113, 42.359593271329395], [-71.075973441602784, 42.35988611864618], [-71.075095478067482, 42.363203234511367], [-71.074940953973709, 42.363508221556572], [-71.074792888239472, 42.363773259436293], [-71.073721519801467, 42.365056706401383], [-71.06947800251578, 42.369046103317501], [-71.063984456867459, 42.368931960644296], [-71.067115260092336, 42.371815703774423], [-71.072465724275347, 42.372658396520968], [-71.072728228425859, 42.37332270328946], [-71.073476099207369, 42.375113177934409], [-71.075602906979043, 42.380231246175889], [-71.080624398975417, 42.381053705101742], [-71.080620454346644, 42.381648508677046], [-71.080725412371621, 42.382356695041317], [-71.080479738014745, 42.382523522489898], [-71.080180898485466, 42.382650092760962], [-71.079573649728076, 42.382880868949627], [-71.074182114664865, 42.390682257722766], [-71.074001107266398, 42.390346772387666], [-71.073815753119121, 42.390206001923431], [-71.073661675791229, 42.38983964599894], [-71.073322369337589, 42.389728733759931], [-71.073137019230984, 42.389569866486461], [-71.072304003909053, 42.387990736468687], [-71.071810647848096, 42.387549472933713], [-71.069803724275744, 42.386612983453745], [-71.069773007233024, 42.386433351907229], [-71.070174261763924, 42.385949328467497], [-71.070235973076976, 42.38576779156557], [-71.070020341015919, 42.385582427602309], [-71.069156037911711, 42.385174606430965]]], [[[-71.009778629848469, 42.433131328362322], [-71.009484807546343, 42.433000707126787], [-71.009308388668856, 42.433167046987997], [-71.009216357717364, 42.433327534383253], [-71.009186343470219, 42.433499089177872], [-71.009220117279497, 42.433876179380043], [-71.009206318450737, 42.434213184478637], [-71.009068245674811, 42.434402194316277], [-71.008838046481927, 42.434528961987176], [-71.008583612033163, 42.434552634028137], [-71.008327795529098, 42.434410288434755], [-71.008072655269785, 42.434228062855745], [-71.007585353475704, 42.433972191688902], [-71.007206486686556, 42.4338535347446], [-71.006758368966189, 42.433763298776199], [-71.006588669451105, 42.43364382507194], [-71.006348204872836, 42.433404220987569], [-71.006138585171513, 42.433199049044234], [-71.005875671643452, 42.433079804612149], [-71.005612719365942, 42.433012235362902], [-71.005319485355088, 42.432978385869781], [-71.004957035028283, 42.432968365512984], [-71.004501686687291, 42.43291797193357], [-71.004053773459106, 42.432833938172756], [-71.00373734541779, 42.432720580202826], [-71.003319457187658, 42.43248137497902], [-71.003109713039137, 42.432293662282014], [-71.002853721219168, 42.431990964020748], [-71.002744258585409, 42.431785677998867], [-71.002781717728652, 42.431596781290111], [-71.002974175495538, 42.431447895921458], [-71.003582576634315, 42.431320520394451], [-71.004168793735943, 42.431278662612236], [-71.004814982162941, 42.431105259019638], [-71.00512988283495, 42.430869749631412], [-71.005128876541875, 42.430641344644734], [-71.00499602506946, 42.430395987818045], [-71.004752373965374, 42.430348215588253], [-71.004814499657286, 42.430050310501279], [-71.004485579227691, 42.430012884253053], [-71.004091450758992, 42.429968964299924], [-71.003212100356762, 42.429921239875192], [-71.00298070637399, 42.430030525391381], [-71.002750098768061, 42.430101551989829], [-71.002282926520778, 42.430274547644174], [-71.001977219833677, 42.43068402293688], [-71.001783532901754, 42.430942555294109], [-71.001498859170979, 42.430918816165878], [-71.000954281092817, 42.430874234019356], [-71.001201707081592, 42.430320554374148], [-71.001109926492248, 42.429754601503333], [-71.000801677637966, 42.429039254095215], [-71.000709512194589, 42.428861049311244], [-71.000400935668381, 42.42854182235191], [-70.999505266176612, 42.428332578593768], [-70.999161676775287, 42.42823088337633], [-70.999046619707642, 42.427890527306332], [-70.998788478943197, 42.427802166738545], [-70.998082948222532, 42.427799093174386], [-70.996239384611172, 42.428845538772443], [-70.995321809555776, 42.428884823813952], [-70.994971668277614, 42.428508592340357], [-70.994912818109327, 42.427053211924338], [-70.995057031823961, 42.426661682534807], [-70.995920420650421, 42.426038060783604], [-70.995980624328283, 42.425863940096711], [-70.995864805112063, 42.425697961500568], [-70.995511861562207, 42.425644109185825], [-70.994579129891804, 42.426110414669758], [-70.993919509304078, 42.426203757000479], [-70.992581660842546, 42.42583154433963], [-70.992171441853927, 42.425646888665156], [-70.99195246626762, 42.425087748640173], [-70.99200092674684, 42.424879187407832], [-70.992226330739243, 42.424653401085308], [-70.992828101905971, 42.424438275760245], [-70.994075448860642, 42.424348154177984], [-70.994312508242643, 42.42412241500206], [-70.992548177575998, 42.424114651731905], [-70.991698600276308, 42.424485690730222], [-70.991578964172348, 42.424720315781556], [-70.991573074835145, 42.425452307938862], [-70.991723708934316, 42.425775453535046], [-70.992366328955711, 42.426240222651558], [-70.994009109981846, 42.426805627992614], [-70.994243112269132, 42.426963034817291], [-70.994183006294833, 42.428566439280075], [-70.994637960297482, 42.429056298408071], [-70.995305950249673, 42.429364153124951], [-70.99576455078595, 42.429383627889379], [-70.996624981996703, 42.429196083545186], [-70.997321325467922, 42.428920039256056], [-70.997735425090738, 42.428590453835021], [-70.998220000311477, 42.428322482895609], [-70.998890955047855, 42.428273008846929], [-70.99911136902324, 42.428613823440593], [-70.999474453840591, 42.428954717499842], [-70.99978221998667, 42.429084344826173], [-71.000029364747178, 42.429503507948247], [-71.000183025079949, 42.430049924260899], [-71.000181970858804, 42.430644103770888], [-70.999965920878395, 42.430963394871284], [-70.999492219050282, 42.431038400536103], [-70.998965582670706, 42.430876850721845], [-70.997421005072141, 42.430642798578305], [-70.997205225044809, 42.430529321614884], [-70.996618372069392, 42.430620746538359], [-70.995507582964237, 42.431081239106099], [-70.994272673251743, 42.43178758223214], [-70.993902468457478, 42.432109515856709], [-70.993624630711849, 42.432339485922526], [-70.992977158079114, 42.432818916005672], [-70.992730465087234, 42.433210531052843], [-70.992052009604109, 42.433807935737413], [-70.991310522138619, 42.434217080001659], [-70.990508092171808, 42.434285014341199], [-70.989797280634662, 42.434054006415685], [-70.989210351827538, 42.433578127668945], [-70.989055445369331, 42.433031151334944], [-70.988654110185578, 42.432615241332385], [-70.988653719006251, 42.432273133507891], [-70.989517299754112, 42.431221928174843], [-70.989022409824386, 42.430744295372698], [-70.988960981125103, 42.430556044368714], [-70.988682860727323, 42.430308943235438], [-70.988435615311261, 42.430421460265066], [-70.988714003100597, 42.430830703524727], [-70.988621532942943, 42.431309691688128], [-70.988219919815108, 42.431379929627113], [-70.986336246299388, 42.430106648568341], [-70.985841867459783, 42.429853984059456], [-70.9851007433288, 42.430398222334702], [-70.984916750975756, 42.430771015496845], [-70.985935146490121, 42.430906107439391], [-70.98642948759597, 42.431104664471505], [-70.987233198312637, 42.432027611949195], [-70.986770296945863, 42.432071733872405], [-70.985935788631039, 42.431842941243346], [-70.984607641977661, 42.431136496256812], [-70.984360236378635, 42.431312023421654], [-70.983990226656502, 42.431336293835159], [-70.983835732289478, 42.431131868041632], [-70.984637729325343, 42.43005512475937], [-70.984730362202114, 42.429783204658364], [-70.982723382594031, 42.429692099808577], [-70.982691802432356, 42.429467428044234], [-70.982877286713673, 42.429329258012899], [-70.983556247456193, 42.429254701351148], [-70.985408485161997, 42.429050798681679], [-70.985285223854191, 42.428891078173883], [-70.984976589614192, 42.428752405269485], [-70.984574391440333, 42.42873196964441], [-70.983401796557246, 42.428941701236262], [-70.983216173720791, 42.428710756568144], [-70.983185177741674, 42.428459079326053], [-70.982969035961361, 42.428364119628867], [-70.982536825975899, 42.428506762938618], [-70.982444562757578, 42.428688114623], [-70.982444694968592, 42.429102244180712], [-70.981950914395441, 42.429372358280141], [-70.981210269533335, 42.429736427784853], [-70.980130213425838, 42.430674059491935], [-70.978987682858687, 42.431269832076929], [-70.977259981126949, 42.432642220457915], [-70.975902408125677, 42.433881315938812], [-70.975593808828847, 42.434499393297557], [-70.975038321952894, 42.435166399985874], [-70.97318598281727, 42.436945624886263], [-70.972908376191342, 42.437427624334383], [-70.972013326343088, 42.438361524356438], [-70.971829169078489, 42.439076401527196], [-70.971304587441907, 42.439788005327983], [-70.97099557410867, 42.440243477590236], [-70.971089394576083, 42.441043535895936], [-70.971089170807872, 42.441404186377532], [-70.970657088490753, 42.442068947138821], [-70.970162495802242, 42.442113397065874], [-70.969669245709952, 42.442301895570189], [-70.96923672960925, 42.442075373548057], [-70.968773513593305, 42.442074318013027], [-70.968402513406616, 42.442323603597423], [-70.967939763482278, 42.44244021324301], [-70.966580913515855, 42.442229113755729], [-70.966116970749255, 42.441939955056974], [-70.965036566018398, 42.441733548854621], [-70.961609065546085, 42.441684355290626], [-70.961238035085501, 42.441592051987939], [-70.960959934287814, 42.441506304408122], [-70.960805322556311, 42.441292934689137], [-70.960805260711197, 42.440887178624806], [-70.961021300767598, 42.440496568550394], [-70.961700504214036, 42.439854425357538], [-70.962101788675568, 42.439604222285766], [-70.964695065445767, 42.438299017865695], [-70.967998733271727, 42.436404655641688], [-70.96914042259823, 42.435556369582621], [-70.96978926689134, 42.435257135191009], [-70.970777085484997, 42.434636615267813], [-70.971548797848541, 42.434001501029151], [-70.973245662101476, 42.433125831762965], [-70.977845295004741, 42.429830960683816], [-70.980343359645488, 42.426833614957758], [-70.980559229021523, 42.426694505389051], [-70.981546358064122, 42.425506622633257], [-70.983551953655734, 42.422895818463658], [-70.983891436537164, 42.422556404241412], [-70.985710820643817, 42.420273329189577], [-70.987190497217398, 42.418077029826726], [-70.987838283285583, 42.416930973205169], [-70.988578251881194, 42.415215803362592], [-70.990364802904864, 42.411050914167113], [-70.990610323919199, 42.410343567674268], [-70.990947499042477, 42.407275720749965], [-70.991008615769772, 42.406157927569737], [-70.990699369240943, 42.405127443891658], [-70.990328204714956, 42.404440414010601], [-70.989987781683865, 42.40348235284619], [-70.989585871872706, 42.402723791103185], [-70.988628619977021, 42.402218172574912], [-70.988320133085395, 42.402196545003093], [-70.987795779482809, 42.402431077678145], [-70.987425065318931, 42.402473361119974], [-70.984831990984461, 42.402203490743105], [-70.984461878148082, 42.402335795935507], [-70.984091896290877, 42.402243479171915], [-70.983937372951601, 42.402066150246348], [-70.98406020867337, 42.400901910734426], [-70.983779625482128, 42.397240987225814], [-70.983686529775412, 42.396846153772053], [-70.982420529943866, 42.395688638924625], [-70.98180288382683, 42.394609475501163], [-70.981679601378005, 42.394224587388088], [-70.981678645342669, 42.393881933504446], [-70.981338263305716, 42.39289737524647], [-70.980967879310626, 42.392417472058867], [-70.980937031524107, 42.392165792352564], [-70.980782488841371, 42.392024470069046], [-70.980517346107575, 42.391670990488684], [-70.980350067972964, 42.391365307443053], [-70.980288365563581, 42.391159042743581], [-70.979948861152735, 42.39079568279999], [-70.97936173380063, 42.390445876567803], [-70.976120922452807, 42.389556175998393], [-70.975534960090727, 42.389494447642555], [-70.97439384761222, 42.389901663202949], [-70.97306739855884, 42.390176396587776], [-70.971370355910821, 42.390295823360297], [-70.968253022829728, 42.390016414105148], [-70.967790367868261, 42.389835297496518], [-70.967234247970339, 42.389403465718111], [-70.966864033330552, 42.388788923593587], [-70.966894585317291, 42.388031741160681], [-70.967295505740594, 42.387826531319533], [-70.968929935663567, 42.387636023038212], [-70.96973332313074, 42.387415196045147], [-70.96998029572687, 42.387275708687937], [-70.970689104870416, 42.386542984493389], [-70.972508386419165, 42.384278106791108], [-70.972506639023152, 42.380324111157584], [-70.972165996711524, 42.379221942415633], [-70.971610339887306, 42.377826730265582], [-70.971425019602876, 42.377640778898154], [-70.971301104872111, 42.377255874810352], [-70.970282130806424, 42.375499038598484], [-70.97028189306053, 42.375309976073609], [-70.970065995611492, 42.375079407097253], [-70.969665281299001, 42.374315102533295], [-70.969417722671949, 42.373994897181099], [-70.968523174282168, 42.372325765615415], [-70.967750549662938, 42.369952170668157], [-70.967441590956909, 42.369515808667956], [-70.967287723724084, 42.369059367362254], [-70.967163520430688, 42.368367816352823], [-70.967378761640717, 42.367201761775526], [-70.968704654302954, 42.365782637954702], [-70.96885792881605, 42.365644880552573], [-70.969660039596889, 42.364370163367774], [-70.97008992567234, 42.362876574826295], [-70.970058287024074, 42.361552455117916], [-70.969533412956736, 42.358508116315022], [-70.969348486062401, 42.358123557002131], [-70.968607529711591, 42.357343630435743], [-70.967645857248229, 42.356757861424228], [-70.966509353432386, 42.356452165851771], [-70.965183926440218, 42.356340224691138], [-70.964844141220041, 42.356228897830782], [-70.963887920027716, 42.355650504811742], [-70.962130294822501, 42.355564061765982], [-70.961050724657511, 42.355861777313237], [-70.960094437002525, 42.355950112318709], [-70.959478064041193, 42.355834679755809], [-70.958984780657573, 42.355590990475037], [-70.958490504894456, 42.355194243818694], [-70.956393532663654, 42.354031969415317], [-70.955744751595375, 42.353439745768476], [-70.95531340383998, 42.352519399667507], [-70.955220703516147, 42.352205566741773], [-70.953647429138414, 42.350025502170737], [-70.953555033869947, 42.349523146544364], [-70.954233361449056, 42.348934421566142], [-70.954355963788402, 42.348608645038908], [-70.954324712669475, 42.34799629338341], [-70.953738937833322, 42.346258815523861], [-70.953399275557175, 42.345706308036149], [-70.953368311316822, 42.34472483413073], [-70.953183014234753, 42.344286767426546], [-70.953306201776513, 42.34387879709795], [-70.95358348576606, 42.343811512326944], [-70.953922937590107, 42.343895232380952], [-70.954570905097796, 42.344469998420152], [-70.95509511314593, 42.344704311106433], [-70.95719211462621, 42.345244326341593], [-70.957654509637663, 42.345569985893256], [-70.957901258892548, 42.34600725448648], [-70.958024554753521, 42.346617788422684], [-70.958549925567638, 42.347698371617831], [-70.959290472993601, 42.348271295133024], [-70.960092070769861, 42.348788772158358], [-70.962004107064345, 42.349548942956574], [-70.962774856489929, 42.349958851052541], [-70.963546530651627, 42.35050425306364], [-70.964440357621669, 42.350686858528377], [-70.964718394931239, 42.351006048301592], [-70.964964954913128, 42.351488314890794], [-70.965274188949934, 42.35187967219165], [-70.965274210464486, 42.352221785370865], [-70.965027557550414, 42.352496309260339], [-70.965027006023675, 42.352676366191851], [-70.965675186354275, 42.353133489585545], [-70.967957699137898, 42.353986390597797], [-70.968914646863112, 42.35446518045871], [-70.9690066098225, 42.354643953930619], [-70.968914566687801, 42.35480729288053], [-70.96863732310581, 42.354938265776532], [-70.968081388383482, 42.355011050518364], [-70.968266846140153, 42.35528712891216], [-70.968729734004953, 42.355396133501209], [-70.969118900388807, 42.355640470615072], [-70.97092010909229, 42.356772431458921], [-70.971937706521572, 42.357133265699282], [-70.973079187593115, 42.357734947294155], [-70.974530289510426, 42.358826443111965], [-70.97505403130215, 42.359403403539659], [-70.975518212312565, 42.360269174676013], [-70.975641552723985, 42.361527899527694], [-70.97558041810322, 42.362078511263697], [-70.975210564164072, 42.362805522662782], [-70.974378406262019, 42.363928171362694], [-70.97410090947389, 42.364086164974779], [-70.973607313956336, 42.364040602814661], [-70.973206019270108, 42.363903181123739], [-70.972928850314204, 42.363700965513779], [-70.97289649031211, 42.36180065495887], [-70.972649318671245, 42.361598125861839], [-70.972217556805617, 42.361506115801483], [-70.971723972004455, 42.361578124043582], [-70.9710466132683, 42.362562454289765], [-70.970616139804605, 42.364317759390239], [-70.970215076032147, 42.364820077764605], [-70.969937609008767, 42.365581258893755], [-70.969845659798295, 42.366195286100798], [-70.969969322669527, 42.36649070244421], [-70.970586877730298, 42.366813151060185], [-70.970864093999978, 42.366763740125464], [-70.971234171555366, 42.366468975126232], [-70.971634565218778, 42.366308762140171], [-70.971943738492698, 42.366357447425386], [-70.972437791533821, 42.366583077562659], [-70.972468826060449, 42.367068838335193], [-70.972190856713539, 42.367659506453954], [-70.972130352496478, 42.368552140283505], [-70.971699066313093, 42.369676697732416], [-70.971667778045486, 42.369992196951223], [-70.971451756239858, 42.370446392926603], [-70.971020198481682, 42.37097621244579], [-70.971051307274266, 42.371408496303417], [-70.971668622363026, 42.37146084943894], [-70.971945989928614, 42.371293858256074], [-70.972192961170094, 42.371641064453641], [-70.972502210366017, 42.372076874214073], [-70.972902471272704, 42.372096714870793], [-70.973489046304394, 42.37193392735869], [-70.973674040292835, 42.371822237330953], [-70.974568874622065, 42.371572535855805], [-70.974876106110202, 42.371405133878135], [-70.975061105561977, 42.371131388896629], [-70.975586364737779, 42.371113528157032], [-70.9768511454633, 42.371433849690085], [-70.977406513352676, 42.371343013778869], [-70.977344353913239, 42.370857653522542], [-70.981169244781668, 42.370809157809738], [-70.982341162571913, 42.37028434539247], [-70.98240263232546, 42.36996843917229], [-70.982741929685361, 42.369691955015014], [-70.984160695055039, 42.369234675486048], [-70.984376710338452, 42.368844016605372], [-70.98480790389425, 42.368656347031433], [-70.986103392708259, 42.368678437537604], [-70.98631919413657, 42.368476835580793], [-70.986534692337401, 42.367923577428876], [-70.987058712290107, 42.36790511871596], [-70.987305708114363, 42.368018216368839], [-70.987183085273386, 42.368497615874958], [-70.987490823840176, 42.368591267488299], [-70.988324356750326, 42.368477940367754], [-70.989280071144634, 42.36870447010665], [-70.990051931230013, 42.368952054020745], [-70.990761805431731, 42.369480159522098], [-70.992150255239096, 42.369978127736324], [-70.993570055007524, 42.370187493400316], [-70.994802951084935, 42.370526022921887], [-70.996192489328664, 42.371168533620406], [-70.996717594669335, 42.371672744899847], [-70.996872675570202, 42.372904571664584], [-70.9966267821233, 42.373502729793195], [-70.996627836841228, 42.374529606466041], [-70.996380528793466, 42.375045110988111], [-70.995980871004434, 42.375601540971125], [-70.995548425515196, 42.376005316497029], [-70.994808533132868, 42.376378481188731], [-70.993637030334014, 42.376471282192171], [-70.992525781481987, 42.376923282821046], [-70.992434671274509, 42.377609352542429], [-70.992712141280492, 42.377910463222193], [-70.992743599214393, 42.378666305772782], [-70.992867636278618, 42.378961697720271], [-70.992868335546646, 42.379555892388652], [-70.992499041714041, 42.380679086376247], [-70.992468542976638, 42.381589324774509], [-70.992746852557062, 42.381909074719232], [-70.993517540368913, 42.382021585244999], [-70.993857450592145, 42.382231858307193], [-70.994132361046312, 42.382567885095924], [-70.994156887286792, 42.383038934354424], [-70.993734658728457, 42.383584543140152], [-70.993426765219638, 42.383788003714109], [-70.993673747399711, 42.38401812450239], [-70.99321133122271, 42.384152212289521], [-70.99311857820868, 42.384361120935111], [-70.992872370686257, 42.384428187863321], [-70.992038348698301, 42.384290005439418], [-70.990002710124699, 42.384316471415907], [-70.989663222475528, 42.384655905654739], [-70.989663772300929, 42.385340127956816], [-70.989756866711289, 42.385842992231375], [-70.989478729816412, 42.386028028017897], [-70.987073024053103, 42.386096643846471], [-70.986115989744761, 42.386464372864147], [-70.985746714611537, 42.386759188192734], [-70.985713625984019, 42.387199101624347], [-70.985685536294795, 42.387561882581473], [-70.985562743727399, 42.38799626323425], [-70.984760290533032, 42.388361791089679], [-70.984236288284947, 42.388550754807618], [-70.984112475298744, 42.388796158665805], [-70.983820418766072, 42.389224736745156], [-70.984483353055907, 42.389186025462408], [-70.985131168989781, 42.38884123456868], [-70.985532269998956, 42.388726531328082], [-70.985902806105358, 42.388845765207165], [-70.9862415834356, 42.389002578177859], [-70.986489292880137, 42.389232177210054], [-70.98661273437699, 42.389689624494579], [-70.986428506781834, 42.390854675608843], [-70.986398967016271, 42.392368108144503], [-70.986707542798115, 42.39273185093117], [-70.988838181589927, 42.393577522644499], [-70.989362751936511, 42.393712644096148], [-70.990751455569267, 42.393580334051514], [-70.992262538217076, 42.393256696083142], [-70.993651343048228, 42.39336751914994], [-70.99427120365884, 42.393297681946116], [-70.994545939786747, 42.392613500342797], [-70.994360513382233, 42.392472600956779], [-70.98911508589579, 42.392752738481313], [-70.988590665824006, 42.392690179694007], [-70.98769482116171, 42.392345165675209], [-70.987478529538734, 42.392133265036108], [-70.987447883192928, 42.391538938446644], [-70.987539981382724, 42.391294560322713], [-70.987786323337417, 42.391154942144176], [-70.987848107995489, 42.390559406666533], [-70.988063450308246, 42.38985300843234], [-70.987846809233446, 42.389280361182358], [-70.987167347972573, 42.388571778616608], [-70.986672988270243, 42.387743018989909], [-70.986487134384674, 42.387538994452157], [-70.986580041282153, 42.387105019618289], [-70.986920062517896, 42.387062692308952], [-70.987351893210871, 42.387559776098733], [-70.98756787323795, 42.387673274312895], [-70.987937262804323, 42.387423918314752], [-70.990374844041497, 42.38735434506026], [-70.991639812961708, 42.386809594500519], [-70.991916696228543, 42.386417481343187], [-70.992873370549816, 42.386256859102829], [-70.993768181276053, 42.385934985331481], [-70.994508407065837, 42.385777898420791], [-70.994692887028862, 42.385594149567403], [-70.995032382299001, 42.385570341969682], [-70.99555650131353, 42.384994205497861], [-70.995586794895019, 42.384561029233083], [-70.995247505132042, 42.384422877349834], [-70.99487694923657, 42.383987941916288], [-70.994907625268723, 42.383735455442086], [-70.995277705827334, 42.383575567664529], [-70.995154082911014, 42.383073654163674], [-70.994628945160002, 42.382821518329024], [-70.994752141836926, 42.382297100623433], [-70.994936601849076, 42.382068876887182], [-70.995554052968615, 42.381769448663896], [-70.997930267396455, 42.381539015570738], [-70.99950403312873, 42.381907699038642], [-70.999643802884265, 42.382183975574016], [-71.00109330981941, 42.38296001762594], [-71.003775910416266, 42.383877039630079], [-71.005226513236494, 42.384058843262331], [-71.00615246768875, 42.384339660224612], [-71.006953998485329, 42.384677284911689], [-71.007878937224746, 42.38484104605088], [-71.00880484924015, 42.384770728968938], [-71.009453168955645, 42.384588395754143], [-71.009916340186209, 42.384337118563963], [-71.010626331778269, 42.383748201192837], [-71.011028374841544, 42.38321874049435], [-71.011059583056038, 42.382669157030968], [-71.010905989319312, 42.381410350872393], [-71.011091351106828, 42.380821989991041], [-71.011677703627456, 42.380685565735178], [-71.012170917473938, 42.38091101980789], [-71.012664932652655, 42.381001431830612], [-71.013096612326308, 42.381002719432111], [-71.013313220449575, 42.380864091217056], [-71.013374423780007, 42.380106396999103], [-71.013344317173022, 42.379584642258685], [-71.013714708529051, 42.379722422192906], [-71.013930434960059, 42.379997921955997], [-71.014238896362741, 42.380199539062254], [-71.014609417833341, 42.380273666209192], [-71.014578854739426, 42.379904959030483], [-71.014394143281336, 42.379701614517558], [-71.014393740542175, 42.379421983086239], [-71.015164864023035, 42.379399397165791], [-71.015380278359174, 42.379953982416822], [-71.015750955202392, 42.380182235972406], [-71.016090437445513, 42.380202840570888], [-71.019517310989499, 42.377278841380686], [-71.019085867343662, 42.376754870875295], [-71.018406113893207, 42.376343566172686], [-71.016525052830303, 42.37567396316377], [-71.016094120553149, 42.375357590046121], [-71.01603201772366, 42.375079409362456], [-71.016341748169637, 42.374366602164343], [-71.015971630598244, 42.374021854910552], [-71.013720900611801, 42.372332150788623], [-71.012949340514595, 42.372075724831809], [-71.012486744926761, 42.371966270528013], [-71.011499647073734, 42.372029064457394], [-71.010882895455453, 42.372165988684607], [-71.010327300855508, 42.372464051900501], [-71.009987798241099, 42.372812098983914], [-71.009987101627772, 42.373199761110584], [-71.01048066911207, 42.373496707652812], [-71.010480849691817, 42.373677306667915], [-71.010233337350854, 42.373952012050928], [-71.008658326489964, 42.375073989440729], [-71.00872009516209, 42.3755316906595], [-71.008626762367939, 42.376245402060768], [-71.008256270297466, 42.37676481648235], [-71.007608277932064, 42.37722686439978], [-71.006866816521452, 42.378509392139271], [-71.006465394014199, 42.378849780755353], [-71.00600269113491, 42.379028933078075], [-71.005292118690704, 42.379212149575714], [-71.004397737292365, 42.379282033808217], [-71.003565228328526, 42.379080380664675], [-71.002794405480628, 42.378616733673468], [-70.999493688736464, 42.377936836373017], [-70.998542755759487, 42.377376135801306], [-70.99820841922984, 42.377183996450441], [-70.998233048727258, 42.376237628731246], [-70.998540495070216, 42.375547996274634], [-70.998941037627972, 42.375045578792466], [-70.999037725433112, 42.374856938828849], [-70.999346769628815, 42.374331614116954], [-70.999529493867641, 42.373581206450858], [-71.000240069216474, 42.372101066080049], [-71.001599534914405, 42.369699315166287], [-71.001661746271793, 42.369076672839604], [-71.001415766367458, 42.368738537604472], [-70.999689351250467, 42.367570834840258], [-70.999812756013213, 42.367272024366819], [-71.00009078019967, 42.367086962807299], [-71.000707422738571, 42.367022119311358], [-71.001170360456413, 42.367158001173763], [-71.001817598794375, 42.367200779303836], [-71.002465914568489, 42.367044954221399], [-71.002743298089882, 42.366770394236262], [-71.00289797968378, 42.366289946666342], [-71.003792866593571, 42.365761017800388], [-71.003700778859695, 42.365537167911171], [-71.002188931243637, 42.365509837647586], [-71.001727411842836, 42.365148892562289], [-71.001671853868203, 42.364681039851938], [-71.001821275547854, 42.36402105231263], [-71.001851904484482, 42.363723548153139], [-71.00148230341992, 42.363315734571358], [-71.000557261630902, 42.362791802069751], [-70.999478788947158, 42.36194587990736], [-70.999141681982209, 42.3616996225607], [-70.998558369896543, 42.361425282212828], [-70.998248304990184, 42.360754921710388], [-70.997940267483756, 42.360625285561113], [-70.997477275982718, 42.360579419181022], [-70.995843238751803, 42.360941388259228], [-70.99383836153271, 42.361192497051164], [-70.993561349690552, 42.361540141464694], [-70.991988528736954, 42.361423459108472], [-70.988873844971209, 42.361882943719451], [-70.988349680971808, 42.361775368684654], [-70.987731944138659, 42.361380450738139], [-70.987422788213919, 42.360926675415158], [-70.987112918727533, 42.359049260132799], [-70.986650655312573, 42.358048410516858], [-70.986495826467106, 42.357637004697708], [-70.986650019064228, 42.357453672990708], [-70.991858347292791, 42.353948817406142], [-70.992412910896377, 42.353875821787575], [-70.992938061886463, 42.354064949867158], [-70.994448333027648, 42.353966354745417], [-70.994726260308326, 42.354016012127481], [-70.995528717968469, 42.354425208186832], [-70.997040120363749, 42.354398607583796], [-70.997440203593683, 42.354580415719852], [-70.997440738517355, 42.354788116111123], [-70.996732020079662, 42.354998206577733], [-70.996670531907228, 42.35529674536243], [-70.996825109594482, 42.355564179187262], [-70.998336674088009, 42.356591987244073], [-70.999509401478704, 42.35689536451958], [-71.002629782919811, 42.356657900079227], [-71.003370271308412, 42.356482751938245], [-71.005097251115942, 42.355515628346453], [-71.005837781945729, 42.355565538121574], [-71.006424556854313, 42.355221984912831], [-71.006455185819306, 42.355014508492076], [-71.005746672449305, 42.354378468509658], [-71.005130125440587, 42.354028573340372], [-71.004883578502543, 42.35407819869183], [-71.004420163751192, 42.354789145837614], [-71.004111727784931, 42.355037647965595], [-71.003586609859724, 42.355055639023242], [-71.003463947769248, 42.354553735406753], [-71.003989029863106, 42.353688297372294], [-71.004885832861262, 42.351448177099996], [-71.005071570223706, 42.350094032247036], [-71.005042406762016, 42.348500383526051], [-71.005166368817143, 42.347129136449617], [-71.005969198326753, 42.34694406663899], [-71.00763348598413, 42.346851632516369], [-71.010253640004109, 42.348453554370103], [-71.011424383636594, 42.349253045384245], [-71.01715830494048, 42.352799037465417], [-71.025667394474951, 42.356872895930202], [-71.028041326514042, 42.358109311243012], [-71.028041525660186, 42.358587007212222], [-71.026127380808418, 42.362844809541777], [-71.025879445847863, 42.363822314608882], [-71.026002803222056, 42.364144137050161], [-71.026619394492954, 42.364646338120536], [-71.027421758532114, 42.364902259354963], [-71.027822901973423, 42.364832423745959], [-71.028346960078522, 42.364282605461518], [-71.028223110269039, 42.36412283599973], [-71.028285199348687, 42.363806278167786], [-71.02853221592899, 42.363549627627414], [-71.029241515568799, 42.363276233595606], [-71.029304548748954, 42.363076716923018], [-71.029550436403539, 42.362775044991018], [-71.029859017515562, 42.362841577923227], [-71.029858216166417, 42.363733403216948], [-71.030321023037715, 42.363761222468426], [-71.030537174861124, 42.363621929612222], [-71.030722641508717, 42.362889579317361], [-71.031123165581093, 42.362819189531642], [-71.031370506449051, 42.362959112552737], [-71.031400690894188, 42.363210776914919], [-71.032049307601937, 42.363162821367339], [-71.03214176057628, 42.362611769094208], [-71.032789361331226, 42.362618272883559], [-71.033653048843007, 42.362756281657944], [-71.033714703284915, 42.363367649252268], [-71.03399163518587, 42.363578629481928], [-71.034300589072572, 42.363645151961009], [-71.034547278057929, 42.363578088552423], [-71.034670183860399, 42.36332362346397], [-71.035009624830849, 42.363074085179768], [-71.035287419570864, 42.36316802794866], [-71.035009214828435, 42.363641807023896], [-71.034978741879939, 42.363939319996177], [-71.035626237193711, 42.364143961337547], [-71.035934497437353, 42.364057427167005], [-71.037138420053211, 42.362612810147553], [-71.037785752117401, 42.362772424214668], [-71.037785609700009, 42.36302450510243], [-71.036921916908312, 42.364328163113655], [-71.036921868208978, 42.364517223958352], [-71.037538283988596, 42.364740275309792], [-71.037816302676617, 42.364672160492049], [-71.037908718490002, 42.364418739902092], [-71.038803455907512, 42.363366740324615], [-71.039513008200089, 42.363552432418331], [-71.039512629874451, 42.363804512292006], [-71.038864558828436, 42.364626852054393], [-71.038865487109987, 42.364815916780856], [-71.03938906984439, 42.364968273248856], [-71.040005852078835, 42.364975783255993], [-71.040376573868443, 42.364446093959486], [-71.04040787086781, 42.364265620751787], [-71.040746021003642, 42.364007507743331], [-71.041733556414258, 42.364449257946134], [-71.041578981551709, 42.364839097889408], [-71.041084800102055, 42.365586618831117], [-71.041084763844353, 42.365775679623809], [-71.042164711495204, 42.366369133254565], [-71.042164216068912, 42.366756255955771], [-71.042009662962201, 42.367209746864141], [-71.042380051851396, 42.367094723575256], [-71.042688677792015, 42.366891135117079], [-71.043027933156907, 42.366867185318178], [-71.043398083030837, 42.367373357521686], [-71.043305520395819, 42.367582307390684], [-71.042688618925425, 42.36812507174276], [-71.042595900132369, 42.368405503388004], [-71.042904686793207, 42.368634053995962], [-71.042904075241424, 42.368886672785138], [-71.043212050044644, 42.369043196153768], [-71.04339722689997, 42.369409178761082], [-71.044230310983352, 42.369547526121906], [-71.04441545731342, 42.369733359039728], [-71.044415339857892, 42.370120482898727], [-71.044909000683674, 42.370372807453499], [-71.044969961872724, 42.371029179199873], [-71.045494765403021, 42.371308092831995], [-71.045463844456521, 42.371623611889035], [-71.044600182846096, 42.371630279145805], [-71.044014344311961, 42.372037049317967], [-71.04410680252839, 42.372314794733143], [-71.043798448459782, 42.372797477378285], [-71.043057941383665, 42.37272926731027], [-71.042687108955121, 42.372817282339227], [-71.042471468533023, 42.373019529964573], [-71.042440305887936, 42.373299125675004], [-71.042687547468532, 42.373529052218302], [-71.042717781990362, 42.373780713006937], [-71.042563677379974, 42.373918564666155], [-71.041792634461402, 42.373940794105451], [-71.041236989800922, 42.374464708056657], [-71.041268228728171, 42.374761297586588], [-71.041852780896861, 42.375091152011827], [-71.041915269355258, 42.375432339996244], [-71.041729291229046, 42.375795675779564], [-71.041204863426074, 42.376047916818258], [-71.041081201734556, 42.376825092095714], [-71.041328460195388, 42.376919978229076], [-71.041883448413301, 42.376891849975301], [-71.041914245661559, 42.377350579215793], [-71.041821382532675, 42.377514511912096], [-71.042037392228849, 42.377582263400512], [-71.042068309853661, 42.377923955611791], [-71.042562149054206, 42.378041247161782], [-71.042561721361807, 42.378906151641161], [-71.041759527198522, 42.37904637491544], [-71.041698068731179, 42.379299921110672], [-71.041727980199113, 42.38103705434137], [-71.04185090051638, 42.382088628617069], [-71.040493852789353, 42.382176036132833], [-71.040432085221994, 42.382888726501101], [-71.040091882220779, 42.383047708118234], [-71.040061413090157, 42.383480264069355], [-71.039413516306354, 42.383618386958538], [-71.039351586977759, 42.384051356908223], [-71.037654293351025, 42.384162756373684], [-71.03657394233025, 42.38453310913318], [-71.036512143850032, 42.385011722595941], [-71.03598823962615, 42.384831804304682], [-71.035895595178658, 42.384283966352577], [-71.035741192493546, 42.384142628606085], [-71.035185938043441, 42.384098793463885], [-71.035092546034008, 42.384694315872729], [-71.033334247140587, 42.384347339272331], [-71.033335492915143, 42.383438054572842], [-71.033181308883556, 42.383251699867706], [-71.032317612616495, 42.382978646223464], [-71.031391515422271, 42.382950119994781], [-71.030435152136604, 42.383138161920812], [-71.030188322748927, 42.383115187245231], [-71.029971606065175, 42.383272392510982], [-71.029940998469627, 42.383452865073288], [-71.029724752695316, 42.383546511519633], [-71.028675871224451, 42.383502336690157], [-71.028552565856643, 42.382954906952172], [-71.028274867838505, 42.382788836030969], [-71.028028534574773, 42.382748483198021], [-71.026979224388867, 42.382812235544797], [-71.026978987990788, 42.383298389783498], [-71.026146273606017, 42.383772115455699], [-71.024633395689392, 42.384501319284745], [-71.023707522874105, 42.385165953404169], [-71.022411499519947, 42.385972549940732], [-71.021083860947002, 42.386491448371878], [-71.020683317020385, 42.386543167462612], [-71.020281917435497, 42.3864514658584], [-71.019387472705731, 42.386566480957889], [-71.014969730764889, 42.392254680334034], [-71.01503150052244, 42.392577873341104], [-71.015278376161774, 42.39285242048178], [-71.015431518755477, 42.393281781689168], [-71.015431835380255, 42.393858506179001], [-71.015030595051243, 42.394405990184005], [-71.013980729765677, 42.395225952382262], [-71.013671854969061, 42.395384448115728], [-71.012128677321499, 42.395546719488159], [-71.011865567281092, 42.395754919891488], [-71.007495077943034, 42.40121111272304], [-71.007526068411394, 42.401489793443936], [-71.007711200379632, 42.401675684049998], [-71.008204764108811, 42.401766112189335], [-71.008882975462598, 42.402105534766143], [-71.00934591006974, 42.402151983416907], [-71.010179505103977, 42.402019861465412], [-71.010766136442911, 42.402108513974461], [-71.010796445792835, 42.402477129200186], [-71.011351734856973, 42.402566725801805], [-71.011937625273035, 42.40286234448638], [-71.013202924836733, 42.40304776023715], [-71.013514125755549, 42.403033951363206], [-71.013389029769954, 42.402683932225877], [-71.012814157513333, 42.402439593753257], [-71.012603973298695, 42.402349755724281], [-71.012285178984484, 42.402214532902001], [-71.011952100744608, 42.402073036651238], [-71.011589414669331, 42.402037737360118], [-71.011289234215326, 42.401742160063833], [-71.010890076782516, 42.401349920925099], [-71.009871317865759, 42.401034448303832], [-71.009933163150308, 42.400781551623432], [-71.010242274481087, 42.400487394068932], [-71.01076735899683, 42.400208288711674], [-71.01169292347933, 42.399912875026644], [-71.013606678242567, 42.399546280935517], [-71.01459448412227, 42.399573498977091], [-71.015211976791264, 42.399437097917641], [-71.016570070470621, 42.398773809451917], [-71.016971565078833, 42.398433387154817], [-71.016817241747404, 42.397742310826963], [-71.016787263940543, 42.397373698306573], [-71.016910517075502, 42.397218916616076], [-71.017527990681316, 42.397081332721051], [-71.017806348075268, 42.396878854952938], [-71.017960793420244, 42.396344372532674], [-71.018300416279686, 42.396230468151188], [-71.018485255059431, 42.3960742319952], [-71.019073165528084, 42.394839338639642], [-71.018979949705653, 42.394543565359413], [-71.018763830760236, 42.394358103207828], [-71.018054452544902, 42.394064252070109], [-71.01768520360109, 42.39376444031592], [-71.01762276498782, 42.39355882340611], [-71.017716682115164, 42.392917763405741], [-71.018303267841318, 42.391727341489805], [-71.018797358329977, 42.390926443565355], [-71.019137087513172, 42.390794531642605], [-71.020186180992013, 42.390793869482778], [-71.020402181074431, 42.390609671141398], [-71.019846762533788, 42.390133534081265], [-71.019785532844338, 42.389720317176952], [-71.020526020484439, 42.388869213379678], [-71.021174678557827, 42.388434735412012], [-71.021545510892764, 42.38797767200505], [-71.022935094746032, 42.386881761043988], [-71.023428835793268, 42.386630016322137], [-71.023614565501205, 42.386221154921571], [-71.023799282929573, 42.386010892544448], [-71.026053021377848, 42.385034384148376], [-71.026978166552624, 42.384739386141796], [-71.027286755567673, 42.384688887928149], [-71.029292248633752, 42.384779306486074], [-71.029199670535874, 42.385600439447593], [-71.031051106236632, 42.385901133857033], [-71.031328663250108, 42.385400895173021], [-71.032224193519951, 42.385609984997011], [-71.03237812655658, 42.385814255553449], [-71.032840265955642, 42.385905081209053], [-71.03530863363163, 42.386356757244705], [-71.036696781130686, 42.386728681754164], [-71.037036319579627, 42.386929731925271], [-71.037314238086978, 42.386888716478062], [-71.037992724992463, 42.386840756800218], [-71.038208357245935, 42.386980626611745], [-71.038980211566781, 42.386885770797278], [-71.038980795685802, 42.386705715946697], [-71.039196197955121, 42.386594043085935], [-71.039381417635624, 42.386707950686926], [-71.040368772244378, 42.386770957961822], [-71.041849564645034, 42.386429713679092], [-71.04255943016129, 42.385786583231827], [-71.042714024517636, 42.385450670864621], [-71.043361646195066, 42.385268144209242], [-71.043763260953455, 42.385215720308295], [-71.043886592595115, 42.3853574641725], [-71.044503038912339, 42.385472982218616], [-71.045120147257336, 42.385885053719107], [-71.045521757208277, 42.386526383604277], [-71.045860843799545, 42.386709490168123], [-71.047712293862119, 42.387397038720032], [-71.048514038859722, 42.387553776198359], [-71.04897741356541, 42.387527504626178], [-71.049007999836519, 42.387121325771545], [-71.049315941207723, 42.387160794518309], [-71.04944007360055, 42.387465126953238], [-71.049779436792292, 42.387441157353898], [-71.051260242795138, 42.387144266290505], [-71.052124882972691, 42.387372076313426], [-71.053295972829034, 42.388539706988595], [-71.053203810929389, 42.388829690984586], [-71.052648472666363, 42.389614201957365], [-71.052000255570277, 42.390066863821851], [-71.051784364005258, 42.390386164221077], [-71.050858154821242, 42.390681897180578], [-71.050148936798848, 42.391460123165061], [-71.049376617165109, 42.391717103316203], [-71.048852210268592, 42.392122427099771], [-71.048697936789125, 42.392602844002653], [-71.048760003954371, 42.392925569199456], [-71.048975470279998, 42.393128977863284], [-71.049191663425972, 42.3936564911874], [-71.049406968622392, 42.393814884167483], [-71.049530919745919, 42.394163599262605], [-71.049839378162403, 42.394050020185134], [-71.050066678049049, 42.393700968832256], [-71.050388832835935, 42.394017867541365], [-71.05069113813569, 42.394257083352784], [-71.051108871057096, 42.39449053672746], [-71.051495398586937, 42.394654635130706], [-71.052052291979052, 42.394893128759826], [-71.052407445048587, 42.395063313884258], [-71.052624296363433, 42.395210993383401], [-71.052772115806292, 42.395450773270426], [-71.052927871496493, 42.395719212792017], [-71.052998730203853, 42.395987322109036], [-71.05299282287406, 42.396238748263585], [-71.052902049478831, 42.396502358643566], [-71.052780142871001, 42.396737038890933], [-71.052565719513893, 42.396966317732826], [-71.052289630672917, 42.397207240009571], [-71.051928230370351, 42.397402725298235], [-71.051566707424556, 42.397529607410235], [-71.051127805008107, 42.397623056173664], [-71.050681134674662, 42.397647151144966], [-71.050178953504243, 42.39758613072226], [-71.049970724749528, 42.397506541829003], [-71.048207581033395, 42.396620686688017], [-71.040522558720255, 42.402007172314832], [-71.035946885152143, 42.408967170120313], [-71.033321586452999, 42.413525481876732], [-71.033153482151008, 42.414095307996128], [-71.032656543556428, 42.415708754308319], [-71.028015054707907, 42.424284694603628], [-71.022382618944278, 42.434717020949087], [-71.020359445931916, 42.438220859291668], [-71.025988024180066, 42.444669877860186], [-71.018693109963422, 42.450075025331174], [-71.011820871603632, 42.442236219153465], [-71.009438159253875, 42.441059606437229], [-71.010153471993888, 42.440698039617644], [-71.010607152898928, 42.44048507267533], [-71.010960841720077, 42.440266547776538], [-71.011222488713813, 42.440146121359625], [-71.011592119617077, 42.44001886015316], [-71.011937811169673, 42.439812091951907], [-71.012253366536584, 42.439651379237183], [-71.012066434753876, 42.439383385360337], [-71.011834243838521, 42.439184340516576], [-71.011601948504008, 42.439093327900963], [-71.011185435282599, 42.43899703159471], [-71.010945393326097, 42.438917778380102], [-71.010682249689239, 42.4387298531637], [-71.010278639682426, 42.438302216601386], [-71.010431765296545, 42.438147570233596], [-71.010584865364905, 42.437964744668513], [-71.01056784235216, 42.437667581029217], [-71.010651854797402, 42.437507058637898], [-71.010727710440449, 42.43723837828712], [-71.01092750618345, 42.437083389135196], [-71.010980729923673, 42.436912022422185], [-71.011234116364534, 42.436773555320386], [-71.011371745567914, 42.436578869375232], [-71.011331778369311, 42.436356421408199], [-71.011260162811084, 42.43603030723726], [-71.01070880884987, 42.435300451808587], [-71.010629999871782, 42.435009237332302], [-71.010520146298603, 42.434677918500043], [-71.010372744004755, 42.43451857290772], [-71.010086208347218, 42.434324964848685], [-71.009900140477342, 42.434136825286309], [-71.009844956043707, 42.433965537660853], [-71.009820080791442, 42.433600189157723], [-71.009778629848469, 42.433131328362322]]], [[[-70.975055165201539, 42.310290859696067], [-70.976441397733595, 42.310239834311631], [-70.976996452255946, 42.310400995521668], [-70.976873859683991, 42.310763350396236], [-70.975240370599863, 42.31152179213408], [-70.97406899507493, 42.312163486282856], [-70.973114656950457, 42.312900785804487], [-70.971883147487503, 42.314318154465255], [-70.971759825395992, 42.314545454742643], [-70.971698027906129, 42.314798966489036], [-70.971297892952634, 42.315301296607387], [-70.970774850673635, 42.316328027001084], [-70.969480492318027, 42.318224491860164], [-70.968865624900857, 42.3211088355147], [-70.96871170466315, 42.321408645384182], [-70.968588965850373, 42.321707968994183], [-70.968434623347861, 42.32218774712598], [-70.968219082983666, 42.322326927299969], [-70.968126777677767, 42.322526817651323], [-70.967942211542493, 42.322646874144795], [-70.967911576969371, 42.322827423167716], [-70.965322509838046, 42.32486296750146], [-70.965323205328687, 42.325340761452345], [-70.963351084213343, 42.326239706418846], [-70.961008595679402, 42.327567946498441], [-70.959991943077611, 42.328296921572274], [-70.959406029333934, 42.328865859703974], [-70.959252158040869, 42.3292376809096], [-70.958697702816593, 42.330283293390892], [-70.958143454187493, 42.330608212123295], [-70.957587527843316, 42.330788441700541], [-70.956292658188275, 42.330856059295485], [-70.955430225281049, 42.330726474784306], [-70.954536112862257, 42.330471861506389], [-70.954258174225117, 42.330242045534298], [-70.954227607290449, 42.329720355093094], [-70.954412181506584, 42.329492194265683], [-70.954844203882686, 42.329187600830906], [-70.955829606280204, 42.328729154389443], [-70.956261175303979, 42.328433556518405], [-70.957125040389684, 42.328067345029034], [-70.957679280271307, 42.327472430239865], [-70.958604015945639, 42.32685269943839], [-70.959435631979105, 42.326081812589955], [-70.95983638661987, 42.325326901786198], [-70.960114127157155, 42.324754803551528], [-70.96029859373489, 42.324634669085938], [-70.960729039856034, 42.323582254359529], [-70.963440967309012, 42.320202512114356], [-70.964641522243738, 42.317704635247182], [-70.965195553427094, 42.316785032925345], [-70.966304545593019, 42.314297425011453], [-70.966796626703243, 42.313928873582874], [-70.968091379693234, 42.313789204190805], [-70.968892924323086, 42.313604387451072], [-70.970094131089155, 42.312944247137644], [-70.970771375746793, 42.311752213190651], [-70.971048906254936, 42.311549211741529], [-70.974037817950816, 42.310470230237549], [-70.975055165201539, 42.310290859696067]]], [[[-70.999268658165036, 42.319971383790808], [-70.998917109412716, 42.319125819007681], [-70.999520278852359, 42.319064345633727], [-71.000290277906828, 42.319537473486442], [-71.000906502108052, 42.319697703848121], [-71.001708264776767, 42.319728821696351], [-71.002694697798177, 42.31954006969832], [-71.00334210290788, 42.319267736994171], [-71.004760907742451, 42.318098965777928], [-71.005439559667309, 42.317069332063028], [-71.006056150875722, 42.316590322242703], [-71.006519204391239, 42.315996401623508], [-71.006550573959601, 42.31581593574181], [-71.006704448954736, 42.315606105711616], [-71.007723679936703, 42.313669784966528], [-71.008093606341859, 42.313113721695096], [-71.010376046726236, 42.310804109468485], [-71.010838946080185, 42.310282194869075], [-71.011425795668728, 42.308912269720906], [-71.011641194657457, 42.308773098176793], [-71.011918381409828, 42.308957757571918], [-71.012165246273682, 42.309394282340101], [-71.012719305813178, 42.309916017757224], [-71.013458702940355, 42.310281522478718], [-71.014198207318117, 42.310286361640252], [-71.014783360919807, 42.310077802933087], [-71.014291120854452, 42.309780334175102], [-71.013551378850579, 42.309712473391052], [-71.013582573737409, 42.309504365417908], [-71.014568812788696, 42.309505204663438], [-71.015492908000255, 42.309875977875983], [-71.016047156597978, 42.310424706706918], [-71.016355402008543, 42.310833391239292], [-71.016354996827488, 42.31101344999626], [-71.016631682134644, 42.311378066141486], [-71.017124456972923, 42.312594465212854], [-71.01706203737848, 42.313208028753657], [-71.016692193020901, 42.313763580714607], [-71.016260298423148, 42.314104418417237], [-71.011974548607725, 42.315864394630893], [-71.010771694715018, 42.316551972619521], [-71.010001038645299, 42.31734941769168], [-71.009507373637149, 42.318123821892335], [-71.009322048375935, 42.318604061827507], [-71.00808824190625, 42.319751803302267], [-71.006577486222596, 42.320642747589687], [-71.005652004327047, 42.321010775141048], [-71.003371165735885, 42.321284537335124], [-70.999565648452688, 42.320875229589873], [-70.99938080439766, 42.320639806057109], [-70.99922617439266, 42.320480409277579], [-70.999268658165036, 42.319971383790808]]], [[[-70.985910205875996, 42.319299123070152], [-70.986341300740818, 42.31911135677305], [-70.986588374573344, 42.319116422066216], [-70.987050054919209, 42.319405499947983], [-70.987297126706963, 42.319680564189476], [-70.987790408572025, 42.319888212600468], [-70.9880381057731, 42.321946506658037], [-70.987762149899666, 42.323095412797571], [-70.98822461315585, 42.323366933170838], [-70.988533614601991, 42.323667658888262], [-70.988349060044158, 42.324255994849523], [-70.9885026969649, 42.324415941751091], [-70.989181576751662, 42.32482742752407], [-70.989736694490986, 42.325015625339091], [-70.990291552193597, 42.325447440797404], [-70.991155387395082, 42.325990818560889], [-70.991156212677325, 42.326521999773483], [-70.990632602555024, 42.327135306399043], [-70.989584018314218, 42.327729895238669], [-70.988568199602511, 42.328035983891894], [-70.98733484686575, 42.328219553006313], [-70.985886028981895, 42.328235589779254], [-70.984683483053672, 42.328031598668396], [-70.983974151188804, 42.327827559370505], [-70.983542248190972, 42.327556069498577], [-70.983573167601989, 42.327275944648875], [-70.984435653244404, 42.326774567269879], [-70.984558809619415, 42.326520244295658], [-70.984805782090746, 42.325885468652821], [-70.984866438242065, 42.324947176181936], [-70.985112278542189, 42.323943361177683], [-70.984988085740767, 42.323341853302821], [-70.984185464858399, 42.321788564205342], [-70.984185357926634, 42.321563488158937], [-70.985386758201841, 42.319848755811691], [-70.985910205875996, 42.319299123070152]]], [[[-70.924016265249961, 42.32532575665342], [-70.924509830574721, 42.325190932249846], [-70.925465889007484, 42.325282864575549], [-70.926082238060474, 42.325669203717126], [-70.92629750704107, 42.326106926456674], [-70.92632836918186, 42.32661062122628], [-70.927006970316739, 42.327292655971597], [-70.928671541250765, 42.328093209795682], [-70.930181958962422, 42.328851291022758], [-70.931353193107242, 42.328876807409905], [-70.93156875244955, 42.329422557697505], [-70.931013876949677, 42.330639184562649], [-70.931075115898906, 42.331277533140792], [-70.931414303559876, 42.331758082976428], [-70.932092928754756, 42.332422620627078], [-70.932061825761039, 42.332765122542575], [-70.931475866887808, 42.333198333240951], [-70.930612391195012, 42.333537255426847], [-70.930088761630287, 42.333474520428851], [-70.930057587842114, 42.333015211003762], [-70.929348760159883, 42.332216546202908], [-70.929102087085624, 42.331986914319266], [-70.928331566404935, 42.330955027848546], [-70.928146358242927, 42.330678433484017], [-70.927869444829, 42.330359068102275], [-70.927591596220964, 42.330156826971269], [-70.926390586053984, 42.328942721428596], [-70.925619185035174, 42.327802864957683], [-70.925219103322931, 42.327368088437716], [-70.923554438798277, 42.326198358472674], [-70.92352367662707, 42.325766057537265], [-70.924016265249961, 42.32532575665342]]], [[[-70.925713213961004, 42.319405732263846], [-70.925867956583247, 42.318555715747927], [-70.92602187212475, 42.318237955971263], [-70.926515155256268, 42.317779551355855], [-70.927254742257958, 42.31775794079968], [-70.928086720824012, 42.317392417923067], [-70.928456613605206, 42.317323313820772], [-70.928857441593436, 42.317415337126818], [-70.929874381720992, 42.318695490576197], [-70.930275089625113, 42.319058140369641], [-70.93076822754449, 42.319058333058258], [-70.930829819377934, 42.319291637368302], [-70.930644940893544, 42.319655345480747], [-70.930613699222079, 42.320916699658227], [-70.930614010243801, 42.321556458604867], [-70.930490768060665, 42.321756796279601], [-70.929935199214114, 42.321964443595348], [-70.928609861934561, 42.322077153105084], [-70.926822271314506, 42.321575875136205], [-70.926328897567018, 42.32130503239074], [-70.925929033353469, 42.320689747219681], [-70.925713213961004, 42.319405732263846]]], [[[-70.939182760296575, 42.324852109852763], [-70.939675849503786, 42.324753230354432], [-70.940262029536513, 42.324869704818418], [-70.940756016943652, 42.325149583182863], [-70.94137163091024, 42.325670791945882], [-70.941926191334133, 42.326264895630075], [-70.94211135774222, 42.326702982176904], [-70.941926736915718, 42.327111184146823], [-70.941525897448869, 42.327478902185696], [-70.941217975730979, 42.327573648231116], [-70.94017017213389, 42.327573591596895], [-70.936932158703939, 42.326655760947624], [-70.934528715505792, 42.326471824212959], [-70.933881088487723, 42.326266067846582], [-70.933480348393815, 42.325858956287824], [-70.937087243261459, 42.325806903137902], [-70.93795035102319, 42.32560288630647], [-70.939182760296575, 42.324852109852763]]], [[[-70.896238123717609, 42.331430703991913], [-70.896486883414752, 42.330156455875695], [-70.896794647110397, 42.330061288288974], [-70.89707229222752, 42.330083541966282], [-70.897750110740034, 42.330270487603784], [-70.898274362175428, 42.33056808341145], [-70.898767418543699, 42.330497018204206], [-70.899507880854756, 42.330105834146984], [-70.899846421591477, 42.330244898866049], [-70.899814785614282, 42.330497359676414], [-70.897995105043051, 42.33182479948519], [-70.897594534673459, 42.332299863376647], [-70.897440165441054, 42.332672141217465], [-70.8972857721743, 42.33383668777531], [-70.897100243050019, 42.334154783342235], [-70.896822841764532, 42.334385156958746], [-70.895527685246137, 42.335001185810945], [-70.894602812145536, 42.335025038816546], [-70.894294588370201, 42.334823097192313], [-70.894294292890137, 42.3344989854738], [-70.895281654375097, 42.33378898035766], [-70.895559147414161, 42.332901387605219], [-70.895621349238823, 42.33214383678267], [-70.896238123717609, 42.331430703991913]]], [[[-70.89558692804691, 42.338873440785022], [-70.896727998155427, 42.338529935555094], [-70.896944319841666, 42.338598593338176], [-70.897128925431872, 42.338964815259722], [-70.897621868963043, 42.339307804372574], [-70.897744428342634, 42.339576287136516], [-70.898361531256768, 42.339944141509953], [-70.898361261450944, 42.340151210167683], [-70.897712614650757, 42.340585542100769], [-70.897342743532988, 42.341042219058195], [-70.897526899839917, 42.34203018795008], [-70.89749527454741, 42.342687784520706], [-70.896385522217429, 42.343328471971439], [-70.896077359293912, 42.343306056710119], [-70.895646209451371, 42.342691584573892], [-70.895152621353631, 42.342528644818692], [-70.895245210210902, 42.341932680160376], [-70.895214769614682, 42.341041758666421], [-70.894999895795664, 42.340351354836628], [-70.895524641433767, 42.339829687375051], [-70.89558692804691, 42.338873440785022]]], [[[-70.94947608441133, 42.311848526964866], [-70.949814797936085, 42.311689804515296], [-70.951541293751035, 42.311488736105616], [-70.952002920457829, 42.311282787512582], [-70.952403314816408, 42.310933576654527], [-70.952712106825786, 42.310937298442006], [-70.953020400578623, 42.31113908442012], [-70.952989768635703, 42.311329083304798], [-70.953267024943514, 42.311810355952957], [-70.953759718031392, 42.31175705999177], [-70.954745606297436, 42.311028532632811], [-70.95452988731904, 42.310752915490752], [-70.954437184296552, 42.310475091050144], [-70.95449892401669, 42.309996511403369], [-70.954838258965623, 42.309720737305966], [-70.955146317459423, 42.30972444910109], [-70.955454399416553, 42.309908761643797], [-70.95576266700462, 42.310452656330028], [-70.956564607162846, 42.310871132489673], [-70.957150054788428, 42.310707883095134], [-70.957797083951533, 42.310336230340809], [-70.958012705808542, 42.310638850037236], [-70.95727334078461, 42.311282410519937], [-70.955670640352892, 42.311435804947934], [-70.954498808831147, 42.311825842905378], [-70.952927809774764, 42.312996605457016], [-70.952404180616085, 42.313203432712164], [-70.951140030749173, 42.313000505201799], [-70.949507038108877, 42.312055205532722], [-70.94947608441133, 42.311848526964866]]], [[[-70.877052904427714, 42.343144324853043], [-70.87637373556106, 42.342840211045804], [-70.876034484690308, 42.342980708795949], [-70.875109668547793, 42.343022952220949], [-70.874893592805364, 42.342954794897253], [-70.874862969518531, 42.342639521560635], [-70.875326590543082, 42.342181805008209], [-70.87625155148163, 42.341680404643135], [-70.876683670631138, 42.34124042779807], [-70.877362329069655, 42.341039825659173], [-70.880014366589862, 42.340924243171898], [-70.880507358960756, 42.340808150231403], [-70.880784826124938, 42.340902466478646], [-70.880846321448317, 42.341153802915024], [-70.881061951881094, 42.341267502149378], [-70.88186394158393, 42.34133537832134], [-70.881524507414099, 42.341682961514529], [-70.879612108246903, 42.342480142414701], [-70.878224160294678, 42.342476606215719], [-70.877823143360999, 42.342752901399656], [-70.877545383660703, 42.343045707695438], [-70.877052904427714, 42.343144324853043]]], [[[-70.888434243176761, 42.338316768918524], [-70.891116441745368, 42.338154905754351], [-70.891825657060409, 42.338251481180734], [-70.89197945800197, 42.338663104053879], [-70.891547846735378, 42.338823415778528], [-70.890406368802644, 42.339004182395747], [-70.888032269041886, 42.339665628556773], [-70.887291816989176, 42.339786107077678], [-70.887014243478276, 42.339664706771934], [-70.885967051079888, 42.33955558352136], [-70.885473169362456, 42.33914051465424], [-70.886028748194747, 42.338825044814207], [-70.886923309339366, 42.338503997947363], [-70.888434243176761, 42.338316768918524]]], [[[-70.978203505615497, 42.365113720316025], [-70.978574146296026, 42.36481893434582], [-70.978820393784034, 42.364724889350079], [-70.979376078327292, 42.364706069036345], [-70.979993314130184, 42.364731368659839], [-70.980887986871934, 42.365003787764721], [-70.981258314588715, 42.365367286704107], [-70.981320116649655, 42.365617937135582], [-70.98088842647482, 42.365571515082323], [-70.980640706916589, 42.365386466742578], [-70.979838802304357, 42.365067109870445], [-70.97937691239602, 42.365165222786892], [-70.979222538088706, 42.365321535188208], [-70.979500000266938, 42.36571270845532], [-70.979407762492286, 42.36641731111316], [-70.979655270104956, 42.366583905083395], [-70.981320210751846, 42.36671683604304], [-70.981382499684827, 42.36692310408209], [-70.98095114921712, 42.367011727884034], [-70.979932810076846, 42.366966614749906], [-70.978914611084775, 42.366668870809633], [-70.97832838684235, 42.366237403542726], [-70.97811228979343, 42.365898813008066], [-70.978203505615497, 42.365113720316025]]], [[[-70.88964414318589, 42.328135149360577], [-70.890383676611535, 42.327654528215383], [-70.891647828792813, 42.327678691565943], [-70.892203060407425, 42.327777331433779], [-70.892232896900111, 42.328119606026647], [-70.891647814668531, 42.328273434622972], [-70.889674546351756, 42.328341751323158], [-70.88964414318589, 42.328135149360577]]], [[[-70.868653110261775, 42.364875783714773], [-70.86930007931214, 42.36446006261545], [-70.869763031162293, 42.364479526010548], [-70.869763555145326, 42.364938682860981], [-70.869609740479575, 42.365328300834648], [-70.86917778978669, 42.365425595980604], [-70.868931357982831, 42.365375267717866], [-70.868684775892206, 42.365145417901111], [-70.868653110261775, 42.364875783714773]]], [[[-70.891815780250425, 42.35263774723883], [-70.892308982368874, 42.352368013327514], [-70.892678857654658, 42.353046904650462], [-70.892678939068944, 42.353443038166681], [-70.89233871353224, 42.353556569582153], [-70.891907393636373, 42.353347760192541], [-70.891722326693539, 42.353116664081135], [-70.891815780250425, 42.35263774723883]]], [[[-70.882274574261118, 42.330176033435457], [-70.883261284885918, 42.329925824208502], [-70.883661438839098, 42.330126038110748], [-70.883569030513087, 42.330307854912775], [-70.882736075118487, 42.33049308001835], [-70.882088489831375, 42.33049464256959], [-70.881965506363144, 42.330352723137523], [-70.882274574261118, 42.330176033435457]]], [[[-70.893948286152764, 42.345566411207905], [-70.894256401338026, 42.345480795393428], [-70.89471867412442, 42.345887286174516], [-70.894626188419167, 42.346078113826238], [-70.893917095000788, 42.346098596462284], [-70.893948286152764, 42.345566411207905]]]]}, "type": "Feature", "id": 12, "properties": {"COUNTY": "SUFFOLK", "AREA_ACRES": 38232.599999999999, "OBJECTID": 13.0, "FIPS_ID": 25025}},{"geometry": {"type": "Polygon", "coordinates": [[[-71.874574630965029, 42.687187542809028], [-71.869796223875127, 42.683692659255321], [-71.865743126255907, 42.684174200380163], [-71.863732162113436, 42.679589486778156], [-71.864073064658243, 42.679571039641601], [-71.857752078350785, 42.67498953814129], [-71.856384967437791, 42.667663799840916], [-71.858333735203914, 42.633820902811038], [-71.844786906841378, 42.637960380608298], [-71.775216503082376, 42.63663191263332], [-71.77571054245432, 42.644180753855522], [-71.749531028975454, 42.636619312226912], [-71.710617401437872, 42.62511102711337], [-71.664619222660292, 42.61173143651348], [-71.678919345667694, 42.530521071530089], [-71.63576339651037, 42.524030690946425], [-71.63573955497715, 42.524319426848521], [-71.635870625820345, 42.52454262246016], [-71.636017642816867, 42.524879499961102], [-71.636527240349139, 42.52555966109297], [-71.637647342971491, 42.526964957984042], [-71.638079823876225, 42.527484870845313], [-71.638751980555767, 42.528399519977], [-71.639076473159065, 42.528787943473709], [-71.639153624369925, 42.52905675256698], [-71.639292657949554, 42.530450878349932], [-71.639315714883182, 42.530805275446809], [-71.639292591249912, 42.531137312289744], [-71.639276880880757, 42.531353929251999], [-71.639075974167895, 42.531708686589297], [-71.638759421686245, 42.531948712010966], [-71.638364784011003, 42.53221700778996], [-71.637955525420679, 42.532480278337218], [-71.637421806784687, 42.532829218635115], [-71.636888412228373, 42.533218036691387], [-71.636687674203571, 42.53343487263151], [-71.636648915996147, 42.533692657385267], [-71.636610210816329, 42.534480953387231], [-71.636648720065239, 42.536355657424025], [-71.63658666863418, 42.536875619312532], [-71.636486079991215, 42.537476108105899], [-71.636393070445678, 42.538429931640238], [-71.636369617649521, 42.538955968857671], [-71.636284433145775, 42.53947658771763], [-71.636184169509306, 42.539836171521308], [-71.636067674755381, 42.540064789611975], [-71.63590573443625, 42.540219731575434], [-71.635634800991028, 42.540413601809639], [-71.63508636630381, 42.540522274059704], [-71.634753940496651, 42.540596932592067], [-71.634359536450958, 42.540779691004488], [-71.634050700664005, 42.540957217283008], [-71.633857342724809, 42.541168457735409], [-71.63345527220342, 42.541643259239166], [-71.632999005765782, 42.542226150355866], [-71.632689478254946, 42.542774481764106], [-71.63245782604946, 42.543306428546018], [-71.632264362115464, 42.543763521014554], [-71.632132634093821, 42.544169409121814], [-71.631954788163455, 42.54452907758521], [-71.631707575451557, 42.544786557980572], [-71.631452399052634, 42.545020910798691], [-71.631204784182813, 42.545204030927344], [-71.630833771941639, 42.545472272941176], [-71.630261565229304, 42.545826803789261], [-71.629882836904542, 42.546135562073246], [-71.629488367315744, 42.546547323870627], [-71.629094193565152, 42.546987171326151], [-71.628722905651202, 42.547547443519001], [-71.628498674510851, 42.547982057720411], [-71.628289518214387, 42.548227604764463], [-71.627191874081788, 42.548805511726314], [-71.626411079242942, 42.549233982233787], [-71.625754018210699, 42.549622342091595], [-71.625135260704894, 42.550051257260073], [-71.624495691279876, 42.550365321401607], [-71.623472429603723, 42.550663498997231], [-71.622888947173507, 42.550962910298018], [-71.621638202421181, 42.551628159684753], [-71.620068376614469, 42.552397795101598], [-71.607880569928028, 42.545342442523861], [-71.602299188626446, 42.545161808459184], [-71.594843288452779, 42.54333736770382], [-71.591264943149341, 42.544364814132301], [-71.580350270099103, 42.550531628740686], [-71.538860619718207, 42.542971458365784], [-71.53140435579833, 42.520309023725076], [-71.529764203293794, 42.519726551882748], [-71.532201311580835, 42.51569451789139], [-71.532696256372432, 42.514589869651076], [-71.534827365983503, 42.513283891590213], [-71.543621499565944, 42.500100759614881], [-71.560372376936201, 42.474447313179205], [-71.543275090877003, 42.466497293909818], [-71.548846633790319, 42.4472925714525], [-71.559086797587739, 42.411887690333195], [-71.585372287981713, 42.407026671501434], [-71.604164019662278, 42.397681609041904], [-71.580254938467348, 42.386921089969441], [-71.599299960842743, 42.375101379162722], [-71.60776870391615, 42.370213718943923], [-71.603205404512025, 42.367375278792821], [-71.609901127415839, 42.357563872841212], [-71.624506752348822, 42.350593241382789], [-71.624698006572146, 42.350456281437445], [-71.625800835197268, 42.349748899616365], [-71.624510477386977, 42.348723983469988], [-71.620675614051365, 42.345349764569029], [-71.619125386956924, 42.343438911686874], [-71.617530411954789, 42.34208274694025], [-71.616310774013655, 42.341610258427416], [-71.611603548847597, 42.339054699488599], [-71.610914535805549, 42.338713258626321], [-71.610124364443706, 42.338463649427261], [-71.606370810893949, 42.337373339228044], [-71.60466799962137, 42.336809434029426], [-71.604198548097202, 42.336755303286118], [-71.603724865768342, 42.331824426011316], [-71.605391292651206, 42.33029800812416], [-71.602025605338127, 42.327033550000429], [-71.597412740356376, 42.321094044262367], [-71.592308853313696, 42.317731724537332], [-71.585341012186973, 42.310976490078218], [-71.569093815334142, 42.320387575707997], [-71.551092781409892, 42.326474455090647], [-71.516563866474442, 42.330497094565267], [-71.507730907816651, 42.328075633081248], [-71.499632370761475, 42.328907035110227], [-71.499374909804558, 42.328861389578314], [-71.48684043704742, 42.330162179061631], [-71.485127790224311, 42.323120032270594], [-71.486048319647836, 42.311176675252888], [-71.49708575685419, 42.289908770541459], [-71.49944930107425, 42.285132756520831], [-71.505806198726148, 42.272970724476906], [-71.505913480429257, 42.26647454815901], [-71.506061297765982, 42.26459013072833], [-71.506294002083237, 42.26446632747453], [-71.506679910642632, 42.264348636951119], [-71.507105325847945, 42.264186017904372], [-71.507314033853632, 42.264113440917249], [-71.507976294984758, 42.264061089609243], [-71.508352524893994, 42.264120662477261], [-71.508666939722474, 42.264174116779074], [-71.508951056067247, 42.264244948304018], [-71.509318691560253, 42.264367089266464], [-71.509656383621035, 42.264444126727909], [-71.509799922074038, 42.264639388826069], [-71.50985861726997, 42.26483969971143], [-71.510088076990186, 42.264932500320739], [-71.510286397312228, 42.265088323995172], [-71.510415144314166, 42.265238031639896], [-71.510365733508394, 42.265494620502842], [-71.51026370190597, 42.265653802013787], [-71.510229681900654, 42.265899135720495], [-71.510612485522344, 42.26605053077035], [-71.51090519964238, 42.266012780944159], [-71.511268323768178, 42.265906420927898], [-71.511545764495651, 42.26586867096546], [-71.511783944715717, 42.265892864734553], [-71.512013175156099, 42.266019962780085], [-71.512233808175807, 42.266187664629662], [-71.51253141887149, 42.266395240785812], [-71.512759456627577, 42.266602283736205], [-71.513178902377476, 42.26687961752539], [-71.514088812368101, 42.267331908144691], [-71.514532608844135, 42.267506330158788], [-71.514854931198187, 42.267588395888566], [-71.515301113018751, 42.267585546389547], [-71.515655287571136, 42.26755398830268], [-71.516025214935894, 42.267504961188649], [-71.516372118860204, 42.267484655601635], [-71.516741090747516, 42.267493065186173], [-71.517271767849266, 42.267531249167902], [-71.517717473902479, 42.267562691619936], [-71.518186566285564, 42.267565949384185], [-71.518603033652184, 42.267505742919063], [-71.518903737802631, 42.267427998289584], [-71.51916603070454, 42.26739536410691], [-71.519428312955242, 42.267328878205291], [-71.519637013539651, 42.267244484992077], [-71.519846665435324, 42.267103192537789], [-71.520049269769288, 42.266910133915658], [-71.520189708136968, 42.266768312711008], [-71.520383599863919, 42.266627022032601], [-71.520607459308891, 42.266576925626524], [-71.520908160334642, 42.266510519462507], [-71.52127808150189, 42.266473269293812], [-71.521671032183605, 42.2664361036191], [-71.522132356811028, 42.266433134688398], [-71.522371262507292, 42.266434798958315], [-71.522856096003451, 42.266415617210875], [-71.523126125493349, 42.266342909265148], [-71.523466554369705, 42.266208426014281], [-71.523706152183991, 42.266118347203061], [-71.523968896243289, 42.266017549538724], [-71.52432436443091, 42.265916731667822], [-71.524701321443445, 42.265908188420006], [-71.525031394613521, 42.265961594531824], [-71.525345965343419, 42.266043722560454], [-71.525736789516131, 42.266155002252674], [-71.526066872334141, 42.266225871126338], [-71.528042169976359, 42.26637107365503], [-71.528773179133808, 42.266352886902787], [-71.529434861036663, 42.266345966987721], [-71.530274452354007, 42.266283358202976], [-71.530844825927304, 42.266201549570582], [-71.531368436002666, 42.266170527582979], [-71.53177617516026, 42.266150698999233], [-71.532092152215924, 42.266118560592389], [-71.532524203949535, 42.266001400552149], [-71.532741828597793, 42.265871335956916], [-71.533082322780658, 42.265673713406173], [-71.533377015904591, 42.265509864264608], [-71.533624818258033, 42.26538041941474], [-71.533896003364774, 42.265233501380763], [-71.534212189523345, 42.265150130216931], [-71.534497957901905, 42.265078021025772], [-71.534821206808559, 42.26505703658961], [-71.535114498308531, 42.265001849150508], [-71.535445966707812, 42.264941517495203], [-71.535762394985227, 42.264863813849011], [-71.535948265658092, 42.264756260437316], [-71.536119220863498, 42.264637457710776], [-71.536666300163503, 42.2645551773074], [-71.537120806364058, 42.264524061090491], [-71.537536300361268, 42.264521135108673], [-71.537789868574947, 42.264528884521638], [-71.53812886706217, 42.264502303749822], [-71.53844076698141, 42.264161797703458], [-71.538574907046325, 42.263905708641133], [-71.538777883497005, 42.263638432282434], [-71.539028113963269, 42.263348542056448], [-71.539269069780559, 42.263155976502262], [-71.539493811324149, 42.263009061051079], [-71.539695537309171, 42.262884660529998], [-71.540096300711298, 42.262796202190515], [-71.540549297290141, 42.26289057426856], [-71.540847315835464, 42.263046850169168], [-71.541137017031971, 42.263271280723352], [-71.541273344203404, 42.26341527925527], [-71.541433185683871, 42.263559269139606], [-71.541593148741114, 42.263702718575715], [-71.541776604413059, 42.263812938300731], [-71.542037007020824, 42.263894410130703], [-71.542398219677182, 42.263925787709098], [-71.5426748268126, 42.26395044317546], [-71.542912538639882, 42.263991948286041], [-71.543234993444642, 42.264062770693847], [-71.543504305615016, 42.264053125838551], [-71.543872811689226, 42.264112585263973], [-71.544141108466391, 42.264211515053759], [-71.544345986181469, 42.264441551879656], [-71.54415122496448, 42.264640322335872], [-71.54437253189684, 42.264789866286769], [-71.544565793631463, 42.264699761812921], [-71.54488381749718, 42.264496531090913], [-71.545445009855911, 42.264505853513768], [-71.545805319478987, 42.264622208708296], [-71.54603312944387, 42.264875280945027], [-71.546091492242212, 42.265127340498985], [-71.546336746668871, 42.265197644967401], [-71.546690223595874, 42.265245307524445], [-71.546945057301485, 42.265155714180572], [-71.547642540435547, 42.26538896377825], [-71.548132587909038, 42.265552523307427], [-71.548269420243429, 42.26569588305896], [-71.548706818146997, 42.265795901338088], [-71.549052646604551, 42.265821052459366], [-71.549524801648062, 42.266035210321391], [-71.549802920855456, 42.266117827256586], [-71.550032578265558, 42.266227473524893], [-71.550324031560947, 42.26630945317811], [-71.550661200409806, 42.266415089718997], [-71.551005320476889, 42.266571408849231], [-71.55133507912997, 42.266653368912408], [-71.551641813235577, 42.266741010249049], [-71.551848315600523, 42.26683940958538], [-71.55207022676403, 42.266955267305462], [-71.552382997609655, 42.267157691657388], [-71.552735121213516, 42.267308330069788], [-71.55317936386048, 42.267454423297949], [-71.553562739959844, 42.267576865427586], [-71.553953162280081, 42.26771622852737], [-71.554206648486939, 42.267752120991176], [-71.55456925988517, 42.267686137629894], [-71.554771431177031, 42.267532991081723], [-71.555064571047808, 42.267449573524623], [-71.555325597046973, 42.267514179344587], [-71.555531172913874, 42.267652455602096], [-71.555885009311964, 42.267672000437635], [-71.556144663735736, 42.267828255181662], [-71.556489597305898, 42.267921536737553], [-71.556774222340508, 42.267940482650182], [-71.556983203037532, 42.267816588463148], [-71.557192773027481, 42.267674687680881], [-71.557425963681567, 42.267516479346199], [-71.557803579639042, 42.267427430686638], [-71.558265864458789, 42.267408020763618], [-71.558564738261637, 42.267501319454759], [-71.558654483801163, 42.267684663932528], [-71.558924620324277, 42.267635009366444], [-71.559208991352435, 42.267642155499125], [-71.559609463841852, 42.267627903708302], [-71.559894414421422, 42.267606958609818], [-71.560177991507032, 42.267671541637519], [-71.560454202524184, 42.267764757252422], [-71.560837672026551, 42.267841620074591], [-71.56151510723808, 42.267817671444448], [-71.586879228465605, 42.25949604541173], [-71.590391007656635, 42.250135813077982], [-71.599301623259535, 42.225982999886583], [-71.602245430818968, 42.217969959433198], [-71.582989346269159, 42.195596505161376], [-71.571294804676825, 42.194689476841397], [-71.571452117080128, 42.194293783553654], [-71.571664350496391, 42.193966749240708], [-71.571846366201711, 42.193685829230773], [-71.571981512628042, 42.19339314430043], [-71.572106428956573, 42.192729088634522], [-71.556570776593674, 42.192409730521781], [-71.556344805829127, 42.19207339650454], [-71.556173590750333, 42.191771877158068], [-71.556056089942928, 42.191560902337137], [-71.556031058946076, 42.191320622227039], [-71.556004812868551, 42.190938003909487], [-71.55595559952971, 42.190594830286237], [-71.555868650760232, 42.190292729084973], [-71.555804734601423, 42.190024288144919], [-71.555779054876979, 42.189732870694876], [-71.555729314436292, 42.189338469588691], [-71.555797054433427, 42.189138117936437], [-71.555779289088534, 42.188897834137521], [-71.555807628489703, 42.188635020178403], [-71.555982763001197, 42.188450911678167], [-71.556096529227219, 42.188278717014462], [-71.556064019019018, 42.188067160517754], [-71.556331560434131, 42.187928561896761], [-71.556121253913801, 42.187626521270836], [-71.556204148679171, 42.18745488176252], [-71.556302795107399, 42.187299530053146], [-71.556332176045686, 42.18712224475216], [-71.556367865941766, 42.186824584995982], [-71.556396065392832, 42.186544304865699], [-71.556547167508185, 42.186297815814498], [-71.556729757887041, 42.186068146767091], [-71.556804213941902, 42.185804769426106], [-71.556618518868859, 42.185674316386603], [-71.556243338769406, 42.185779116938818], [-71.555942904689886, 42.185672397153006], [-71.555741666449123, 42.185485140748142], [-71.555563948535536, 42.185337216115002], [-71.555446684110876, 42.18510373259258], [-71.555521562681662, 42.184903377504902], [-71.555520050879196, 42.184697477448076], [-71.555266852170462, 42.184750447911576], [-71.555021491335282, 42.184768572076813], [-71.555034705260653, 42.184511437329817], [-71.555093515967826, 42.184208094792091], [-71.555229213971401, 42.183927222949038], [-71.555312100899954, 42.183749371843049], [-71.555355822836717, 42.183497264030379], [-71.555453276408826, 42.183228294654413], [-71.555543913931487, 42.183056021531847], [-71.555686566250444, 42.182566453898247], [-71.53947102055993, 42.189655193262567], [-71.506942174191124, 42.188887509399969], [-71.502679326334032, 42.191377041245545], [-71.499482802822669, 42.176559148727719], [-71.497475411881169, 42.166666951801524], [-71.493126139851981, 42.166217697864639], [-71.477985131857437, 42.165869170168165], [-71.478102880133605, 42.156757486565674], [-71.478416307482803, 42.131391161619312], [-71.489125532590251, 42.125098378605301], [-71.489986954757811, 42.124557095887972], [-71.499482069980928, 42.118061194231508], [-71.501407437545467, 42.116685949645188], [-71.501378895701706, 42.116514889354484], [-71.501477565915721, 42.116354541280465], [-71.501644313547047, 42.116119825794293], [-71.501550834335887, 42.115891416110159], [-71.501350340036822, 42.115686596018236], [-71.501226995257269, 42.115481774768853], [-71.501278987097947, 42.115252732967228], [-71.501376928209623, 42.115006314427511], [-71.501467856503893, 42.114817786421817], [-71.501474260258902, 42.114600539268316], [-71.501389006446914, 42.114372129294289], [-71.501287549813625, 42.114132375406932], [-71.501278960966928, 42.11395519262765], [-71.501277989242595, 42.113737945539349], [-71.501169278214746, 42.113458307448632], [-71.500884634235689, 42.113264741290536], [-71.500631068047639, 42.113099894448446], [-71.500705670612746, 42.112784782140402], [-71.500842666894812, 42.112595714083852], [-71.501154989275705, 42.112325615450423], [-71.50136090389968, 42.112079105870826], [-71.501482541010787, 42.111912545205065], [-71.501772732486089, 42.11173418773236], [-71.502001743562232, 42.111681875379041], [-71.50217718515448, 42.11151531301303], [-71.502428069650094, 42.111176517610623], [-71.502626239738518, 42.110992487854439], [-71.502839887369234, 42.110849061796046], [-71.503007342053536, 42.110636852114752], [-71.503051950317555, 42.110459037743681], [-71.503004907266615, 42.110287437999339], [-71.503004413635296, 42.11007640300322], [-71.503026047258331, 42.109875541034675], [-71.503025191899326, 42.109687014037192], [-71.502556652584559, 42.109454112646596], [-71.502371288055372, 42.109220573595607], [-71.502324487912929, 42.109003417335572], [-71.502185798848714, 42.108837941218447], [-71.501978314539159, 42.108713070579256], [-71.501762850106104, 42.108553807452751], [-71.501876497590246, 42.10832422398741], [-71.501975758013856, 42.108152621276467], [-71.502035601048803, 42.107951668740718], [-71.502026648048187, 42.107768813844153], [-71.501750370958931, 42.107627017946598], [-71.501535275706431, 42.107558957038336], [-71.501327916441056, 42.107370972737947], [-71.499770895362644, 42.103660578865387], [-71.499565491895623, 42.102966160752921], [-71.498977324566184, 42.102847494708627], [-71.498685598530486, 42.102814810306164], [-71.498439692801227, 42.102792839388435], [-71.498047745845014, 42.102669039242926], [-71.497809098691391, 42.102532906391019], [-71.49757794732453, 42.102419191191522], [-71.497224085887638, 42.102317897045744], [-71.497008892803976, 42.102244785559343], [-71.497007572083817, 42.10205067630379], [-71.497221802825123, 42.101998283013742], [-71.497250705469611, 42.101803634290548], [-71.496927918492716, 42.101696127746571], [-71.496597755506912, 42.101634806546443], [-71.496542757920551, 42.101452489868414], [-71.496556189406448, 42.10122912059132], [-71.496401452380269, 42.101081103030239], [-71.496055098554294, 42.100934249234946], [-71.495839189901119, 42.100803695016637], [-71.495899406944375, 42.10062075191037], [-71.495851425595049, 42.100414846706805], [-71.49565897118481, 42.100301759219334], [-71.495695858675035, 42.100078931085285], [-71.495601455768693, 42.09987293397478], [-71.495508500472226, 42.099719335541565], [-71.495490989789772, 42.09945653103793], [-71.495512642281682, 42.099273676606842], [-71.495534175384819, 42.0990676839006], [-71.495677931239484, 42.098821271426701], [-71.495837757945466, 42.09867218410529], [-71.495912843915463, 42.098465653050823], [-71.495949847433579, 42.098288381051546], [-71.496155129209669, 42.098093108376908], [-71.496307215763451, 42.09794969237597], [-71.496375406413051, 42.09778367524779], [-71.496411685839561, 42.097554634563807], [-71.496540201461542, 42.097337480930605], [-71.496791780432261, 42.097096021973563], [-71.496959335583668, 42.096975113336789], [-71.497211271145758, 42.09680288819866], [-71.497370727470511, 42.096630750448497], [-71.497484005460478, 42.096436013389678], [-71.497543972527822, 42.096235693087223], [-71.497534671235528, 42.096058419516936], [-71.497257850677997, 42.095916612530246], [-71.497126213885025, 42.095768686417848], [-71.497155596242564, 42.095602667792932], [-71.497291118598696, 42.095339326914733], [-71.497458188757378, 42.095115330641171], [-71.497806352399337, 42.094536880947359], [-71.497995782274984, 42.094296048267211], [-71.498085485604122, 42.09399282131924], [-71.498121396254902, 42.093689503385924], [-71.49812696485418, 42.093414905213997], [-71.49811730105921, 42.093192075534603], [-71.498014565024349, 42.092821231067177], [-71.497943739268848, 42.092535377491494], [-71.497941812615778, 42.092306965684514], [-71.497993072425416, 42.09206667055934], [-71.498090749292516, 42.091803327932944], [-71.498173677601613, 42.09156870526467], [-71.49824028878318, 42.091270969674376], [-71.498194260386853, 42.064863383509064], [-71.498148646660297, 42.017230965334356], [-71.499497862929189, 42.017137524839448], [-71.527791667037746, 42.015008827501362], [-71.528754004465014, 42.014988332167043], [-71.563114141979611, 42.014245804778874], [-71.591113271075571, 42.013577608164539], [-71.606622615669906, 42.013204608997334], [-71.624534595357858, 42.012762181830901], [-71.680817352174145, 42.011528501951631], [-71.749511825504669, 42.00996773533781], [-71.79962898927036, 42.008023062942563], [-71.800742270716242, 42.023526192637512], [-71.804623183634547, 42.023567152967978], [-71.874500049446084, 42.024266824422646], [-71.883389818101293, 42.024455708412894], [-71.963243387634307, 42.026196697580161], [-71.993128913813166, 42.026831396284948], [-71.999567993086018, 42.026943552458334], [-72.099731916822165, 42.02877061755791], [-72.102084635962868, 42.028829117356551], [-72.124484437214875, 42.029612811802146], [-72.126528185842275, 42.029781708292319], [-72.135687669320092, 42.03017064278329], [-72.134949111422003, 42.090671047699722], [-72.134974025977854, 42.12506805761204], [-72.13493230099661, 42.161788038930879], [-72.141856087376382, 42.160997701172761], [-72.199386654393791, 42.153677377043593], [-72.200732038901478, 42.161271933428218], [-72.249570094212118, 42.178769613575014], [-72.263921222642878, 42.183765284520824], [-72.263836046524375, 42.18565936815336], [-72.26373471903122, 42.185870543699338], [-72.263570953986459, 42.186315594371713], [-72.263600605494972, 42.186556239283874], [-72.263606620346195, 42.186824592118128], [-72.263590176171789, 42.187047537012731], [-72.263684786172576, 42.188048000672289], [-72.263682926922769, 42.188396356492852], [-72.263566532725463, 42.188573238908425], [-72.263434988256421, 42.188778943042337], [-72.263294816250848, 42.189092745798497], [-72.263224698969253, 42.18929236866628], [-72.263092044530424, 42.189697866223526], [-72.263060052789072, 42.189886611228445], [-72.263089608473805, 42.190109249870403], [-72.263153849717142, 42.191041218961054], [-72.263251086462461, 42.191515503596918], [-72.263295943484238, 42.191721744077157], [-72.263264396040924, 42.19192732255204], [-72.263247127348492, 42.192212756562718], [-72.263275898049088, 42.192601423771976], [-72.263412994992123, 42.192836221468468], [-72.263550577918963, 42.192990615031491], [-72.263872012614115, 42.193220313422913], [-72.264170629730458, 42.193455294901838], [-72.264361435071763, 42.193655430519804], [-72.264559277289536, 42.193987239257574], [-72.26479789396592, 42.195410982831909], [-72.264811472556474, 42.195713677936432], [-72.264848633024656, 42.195953731923879], [-72.264770257631, 42.196261992004004], [-72.264690721663399, 42.196725118859604], [-72.264565582152386, 42.197141821756112], [-72.264401296435906, 42.197656112480828], [-72.264253201742733, 42.198067295747968], [-72.264174770778013, 42.198341252559246], [-72.263930153282615, 42.199535296503974], [-72.26386688749794, 42.199872265845478], [-72.263711856180635, 42.2001405199142], [-72.263549069072582, 42.200408375204674], [-72.263463357205836, 42.200631240361588], [-72.263331715825743, 42.200790756833065], [-72.263084392622815, 42.201087804802967], [-72.26299052275715, 42.201367535459745], [-72.262896965931048, 42.201612960880631], [-72.262779682430107, 42.201949658657043], [-72.262677832018397, 42.202321186974586], [-72.262653824159813, 42.202509878322218], [-72.262521748485938, 42.202794904407028], [-72.26238975497769, 42.203006281758334], [-72.262158036086305, 42.203262708417469], [-72.262011290235776, 42.203405487188569], [-72.26120489109735, 42.204643769185012], [-72.261018721958791, 42.2050034304877], [-72.260725776857754, 42.205174187520541], [-72.260563463412709, 42.205322109483809], [-72.258710116539859, 42.206946533198057], [-72.2574519372738, 42.207955396281669], [-72.256926745485117, 42.20839435751337], [-72.255758998244048, 42.209649027789894], [-72.249619175250729, 42.216002399938077], [-72.221212777449949, 42.245235456968729], [-72.218073311475337, 42.248585192775046], [-72.21478193954205, 42.249036811082988], [-72.214612855703734, 42.247539893559718], [-72.210530377908412, 42.247162966404254], [-72.211020940699939, 42.251173150693184], [-72.211224552379718, 42.252114354719808], [-72.211408856305454, 42.252371517193652], [-72.211128313255685, 42.255611649945727], [-72.21612233771387, 42.256190583010593], [-72.217823969199642, 42.270135046166708], [-72.212751382957464, 42.26976203389313], [-72.212013105485752, 42.282624972514974], [-72.207136099829526, 42.285206347653556], [-72.203951533504494, 42.288845205631567], [-72.203301892689694, 42.291154009647457], [-72.210764509608353, 42.294454489167634], [-72.213991647321251, 42.294224613343381], [-72.2165043943657, 42.294017651030373], [-72.216889555586448, 42.294040547317067], [-72.216835240101304, 42.294234455626125], [-72.216696422682276, 42.294537469996278], [-72.216611649425943, 42.294783336724713], [-72.216542224591947, 42.295046033487033], [-72.216618698476694, 42.295406225703118], [-72.216710405281816, 42.29588003354268], [-72.216748652761552, 42.296194907772659], [-72.216702297506984, 42.296503017159687], [-72.21656335929454, 42.296817285975379], [-72.216455190552125, 42.297085806419396], [-72.21641645119972, 42.297263321421802], [-72.216323102308564, 42.298520392869051], [-72.216214790794751, 42.298937466959394], [-72.21619886012185, 42.299137347670005], [-72.21607544521018, 42.299548843683944], [-72.215959484441129, 42.299783109552827], [-72.215759181742712, 42.300034196782789], [-72.215550699017712, 42.300194762240679], [-72.215281081547573, 42.300354537496609], [-72.215026719351272, 42.300479914924708], [-72.214656767063246, 42.300582962578083], [-72.213809265365839, 42.30077666812943], [-72.213623943742746, 42.300948340143904], [-72.213400564752291, 42.301068479684282], [-72.213161539153745, 42.301199339689326], [-72.212953491738517, 42.301302547176881], [-72.212760814549284, 42.30145679717009], [-72.212567772601659, 42.301611049091598], [-72.212421073934394, 42.301982170749056], [-72.212313053232634, 42.302233849927227], [-72.212227759396129, 42.302565246566331], [-72.212296925526985, 42.302816277400453], [-72.212427556959952, 42.303108071751446], [-72.212720248043354, 42.303250938139961], [-72.212935649441803, 42.303530952052306], [-72.213004531002426, 42.303799450420264], [-72.213058357752033, 42.304131154634632], [-72.213042321456825, 42.304462661913817], [-72.21297255656016, 42.304891287230753], [-72.212903045953283, 42.305245634455844], [-72.212786956643498, 42.305599730362289], [-72.212763532211795, 42.305953881582582], [-72.212763290323565, 42.306234062721629], [-72.212716243059575, 42.306633916606756], [-72.212754603858855, 42.306960044684146], [-72.21279259000741, 42.307188220240938], [-72.212815400659125, 42.307382817949069], [-72.212854023360606, 42.307559761317151], [-72.212853472257535, 42.307737037723008], [-72.212722169352006, 42.308205478309233], [-72.212667881004734, 42.308382457749296], [-72.21250588073984, 42.308742509835184], [-72.212451967630969, 42.308931371039215], [-72.212366824061306, 42.309136721375609], [-72.212327562732796, 42.309571368929596], [-72.212250197093624, 42.309799719333149], [-72.212087992112316, 42.310228376289842], [-72.211694481142402, 42.310679803285659], [-72.211555499017521, 42.310822464217431], [-72.211378221145395, 42.311022262215012], [-72.210996105211791, 42.311333526502423], [-72.249474445673243, 42.305308942467157], [-72.261539949632237, 42.303363688113095], [-72.261939641488155, 42.305283231998111], [-72.274657486169417, 42.301946307373477], [-72.280026296035643, 42.329174603810692], [-72.277073269954116, 42.329473704343933], [-72.278427733923635, 42.336526478611646], [-72.281334906752292, 42.336192725129173], [-72.283898892845372, 42.350250687227472], [-72.284237686446076, 42.352084485636254], [-72.288559316729291, 42.352077979181658], [-72.288980822655375, 42.351947872918117], [-72.289407820524048, 42.351907849271988], [-72.289634514614633, 42.351943385926219], [-72.289963111844187, 42.352071675189244], [-72.290290429625742, 42.35210714947371], [-72.290515494990188, 42.352012239434238], [-72.290312644763176, 42.351864450979825], [-72.290299763979206, 42.351474611518228], [-72.290477326587322, 42.35121121845949], [-72.290716499789937, 42.351050847858829], [-72.29100188609462, 42.351033669678586], [-72.291263916050653, 42.351119107792542], [-72.291294918283711, 42.351336681346893], [-72.291302610204738, 42.351553785297448], [-72.291333298382753, 42.35173651887586], [-72.291687922838065, 42.351810604995315], [-72.291981145145897, 42.35182767260396], [-72.29218923307738, 42.351753673550569], [-72.292428323312549, 42.351519023660479], [-72.292621422053358, 42.351324124244151], [-72.292868275181718, 42.351244274745753], [-72.29318432421303, 42.351233092150544], [-72.293477462338004, 42.351175880192763], [-72.293693420146624, 42.351003869360255], [-72.293978685193892, 42.350986774653897], [-72.294287175301235, 42.35089569264445], [-72.294472444217675, 42.350735146286453], [-72.294688512449724, 42.350678553703581], [-72.295073794696137, 42.350603864824883], [-72.295389914498699, 42.350569627252341], [-72.295659876617279, 42.350426499465122], [-72.29580647226264, 42.350289266678338], [-72.295945306649813, 42.350094737069746], [-72.296091880477363, 42.34982083554609], [-72.296284969547941, 42.349626470049706], [-72.296500608240549, 42.349449414216878], [-72.29670896893451, 42.349369192759966], [-72.297904361044644, 42.349145997651064], [-72.29822801394657, 42.349151584101755], [-72.298505796372154, 42.349311712991344], [-72.298744682132423, 42.349323018439954], [-72.298968361491617, 42.349225850469871], [-72.29930790851158, 42.349077188662157], [-72.299531647526095, 42.34901369113404], [-72.29980918657121, 42.348933523166586], [-72.300040569227676, 42.348745097069276], [-72.300441771095066, 42.348596633088164], [-72.300803875400135, 42.348504619973973], [-72.3011279201408, 42.34843591908794], [-72.301397791284955, 42.348229845848785], [-72.301521278892992, 42.347927377776578], [-72.301590664347373, 42.347732694959767], [-72.301737344013901, 42.34746949896666], [-72.301922569476702, 42.347326946998457], [-72.302192332116974, 42.347132036526418], [-72.302439135312468, 42.347012192319141], [-72.302624300671738, 42.346903401634151], [-72.302925134757999, 42.346680182489337], [-72.303071634696138, 42.346508638599971], [-72.303279690185917, 42.346262388234699], [-72.303480398603966, 42.34601114678707], [-72.303758217366564, 42.345753783963588], [-72.304097462377982, 42.345564595349309], [-72.304397971722651, 42.345421773162762], [-72.304652473595823, 42.345306912022501], [-72.305015216943502, 42.345209839133872], [-72.305300321161354, 42.345306337797098], [-72.305331360793488, 42.345523277898721], [-72.305099894969075, 42.345598095007603], [-72.304860709755204, 42.345638573410639], [-72.3047295293986, 42.345821266456042], [-72.304991726858319, 42.345901000168503], [-72.305724389281451, 42.346088897226252], [-72.306079169047976, 42.346128635624119], [-72.306341369872683, 42.346094115479858], [-72.306464675096777, 42.345950909888728], [-72.306372312022063, 42.345779326209694], [-72.306241293174281, 42.345574341496764], [-72.306464796473591, 42.345351024891691], [-72.306719391756715, 42.345310435014625], [-72.306989530758841, 42.345213465381477], [-72.307112758193099, 42.345035867307097], [-72.306912383087393, 42.344864592027371], [-72.306526591260905, 42.344790771525929], [-72.306410808303767, 42.344619352124802], [-72.306542031521218, 42.344431074766874], [-72.306804339080202, 42.344281761739033], [-72.307120468839656, 42.344213189276772], [-72.307413658850379, 42.344201587338759], [-72.307698927439887, 42.344234966357661], [-72.308022676190063, 42.34429742474137], [-72.30830045414794, 42.344200398277799], [-72.30859344637534, 42.344068871841728], [-72.308824665012423, 42.344108390232861], [-72.308855649740778, 42.344377098415585], [-72.308500929322577, 42.344502847363209], [-72.308354544868592, 42.344634423282137], [-72.308485481765558, 42.344823110416094], [-72.30880937814743, 42.344896819587412], [-72.30901766006123, 42.34476534777518], [-72.309295012668414, 42.344559112871053], [-72.309480394308707, 42.344307428338325], [-72.309441591827081, 42.343987547016553], [-72.309402984326823, 42.343758776882986], [-72.309603934717728, 42.343661747857446], [-72.309858500867009, 42.343638527374992], [-72.310151299346103, 42.34372928781908], [-72.310436568851841, 42.343592229049044], [-72.310590831012831, 42.343375064249805], [-72.310799109397706, 42.343111421814307], [-72.311230819294494, 42.343094331563861], [-72.311493062260695, 42.343168378124503], [-72.311732302295198, 42.343104837166294], [-72.311963525369308, 42.342898921307651], [-72.312171871506948, 42.342801835498811], [-72.312580330857188, 42.342892853076371], [-72.312757920528185, 42.34304690346459], [-72.313174212822105, 42.343086185057778], [-72.313382247215941, 42.343012147514557], [-72.313552077856883, 42.343194971869607], [-72.313721725281383, 42.343514466234268], [-72.313960809126655, 42.343703012058299], [-72.314253679828141, 42.343685722880252], [-72.314315293442405, 42.344125904362706], [-72.314222934140304, 42.344314455752325], [-72.314145957037042, 42.344651541361223], [-72.31420002754065, 42.344948805044851], [-72.314246171648179, 42.345148799983249], [-72.314346438246005, 42.345451948639145], [-72.314400538776212, 42.34562883889928], [-72.31443897671123, 42.34588065684499], [-72.314462212331719, 42.346148878282776], [-72.314508486042016, 42.34653793956187], [-72.314516153171837, 42.34692610409062], [-72.314477667989934, 42.347349528004159], [-72.314431276909133, 42.347715117169393], [-72.314338598649684, 42.348058436032559], [-72.314277019503891, 42.348337971851777], [-72.314115147921171, 42.348595709711901], [-72.314022833734441, 42.348835488681054], [-72.313914860445792, 42.349018568116264], [-72.313722028218919, 42.349304074343721], [-72.313552375409202, 42.349504515919051], [-72.313313295203585, 42.349761628363282], [-72.313135799587585, 42.350041443056448], [-72.312896865131506, 42.350338527805008], [-72.312719494359825, 42.350618881105568], [-72.312611435628824, 42.350795837617866], [-72.312549898078515, 42.351041609941788], [-72.312434126131521, 42.351213488711949], [-72.312330709935168, 42.351515826815707], [-72.312265494830243, 42.35181564416073], [-72.312273165114547, 42.352072721580036], [-72.312226894417606, 42.352307131793133], [-72.312219244355248, 42.352524343164234], [-72.312258010763685, 42.352707554677345], [-72.312442779051437, 42.352993181566852], [-72.312543076652702, 42.353147238004098], [-72.312581678071552, 42.353364752768329], [-72.312612440546971, 42.353633461106327], [-72.312720373948267, 42.353890460071682], [-72.313013483544211, 42.354039191821201], [-72.313367834179829, 42.354164441480499], [-72.31365322541113, 42.354335734212185], [-72.313815212717458, 42.354604684065741], [-72.313815258657471, 42.35478753880102], [-72.313799845795543, 42.355004805130378], [-72.313661158786743, 42.355216821561747], [-72.313391063423666, 42.35550854536519], [-72.313120855603017, 42.355697272678455], [-72.313167016088045, 42.355926527667151], [-72.313267159213424, 42.35614360691018], [-72.313467731948037, 42.356326123665085], [-72.313652811485454, 42.356578074327011], [-72.313699128057664, 42.35674376561056], [-72.313775896765165, 42.356955337764482], [-72.313822202510266, 42.357223935623338], [-72.313791395123602, 42.357556191573636], [-72.313799146917717, 42.357790760042846], [-72.313698598137023, 42.358099290820256], [-72.313559794112436, 42.358425468283158], [-72.313343945079268, 42.358688717935827], [-72.313128004490096, 42.358803325064677], [-72.312873207475377, 42.358832135897345], [-72.312634318663328, 42.358729117027089], [-72.312503322164233, 42.358557901524911], [-72.312264221491233, 42.358031733236864], [-72.312017667848693, 42.357917603270572], [-72.311786096863301, 42.358072292448696], [-72.311647229551966, 42.358318609653217], [-72.311585240895312, 42.358530081989464], [-72.311546500245768, 42.358850508924803], [-72.311693093286877, 42.359102103953759], [-72.311878297336804, 42.359221799550554], [-72.31199408437287, 42.359484865651751], [-72.31208669024781, 42.359804995489114], [-72.312116914137064, 42.359993849081206], [-72.312070726351394, 42.360159563844022], [-72.312024637809344, 42.36055999104412], [-72.312147819418755, 42.360926000983312], [-72.312810761046322, 42.361851437027546], [-72.312965158132229, 42.362114229181401], [-72.312926679640483, 42.362388558188258], [-72.312826157641155, 42.362577255203441], [-72.31257925951175, 42.362806330316545], [-72.312293884880901, 42.362932140001107], [-72.312008881096133, 42.36311529663427], [-72.311692792241772, 42.363241321646107], [-72.31132219812352, 42.363424540370197], [-72.311098765372918, 42.36356233445855], [-72.310797827519124, 42.363762526372845], [-72.310659293377469, 42.3639508591178], [-72.310574303376214, 42.364111264599799], [-72.310504896731189, 42.364294068146705], [-72.310497119066923, 42.364511369701702], [-72.310628467317272, 42.364756861065132], [-72.310767176813869, 42.365036692527134], [-72.310844625285782, 42.365310743517902], [-72.310945142021978, 42.36555645162484], [-72.311268981751695, 42.365721356896969], [-72.3114850900497, 42.365806983141482], [-72.311817194285354, 42.365972368761092], [-72.311909377435967, 42.366126482712374], [-72.312017512487756, 42.366274811966626], [-72.312118122458486, 42.366480004304428], [-72.31221860231777, 42.366760103905293], [-72.312288011167652, 42.36693688630529], [-72.312473447757668, 42.367205131680912], [-72.312620213710844, 42.367364441438149], [-72.312797845722386, 42.367535327054796], [-72.312998608893722, 42.367786627328428], [-72.313007025861623, 42.367997512246959], [-72.313046123359001, 42.368300012676052], [-72.313108307542137, 42.368556703776662], [-72.313301561498179, 42.368761870293852], [-72.31349466165581, 42.368898343353315], [-72.313702940649435, 42.369006618807639], [-72.314073746515376, 42.369149126191445], [-72.31432041076107, 42.369211572793205], [-72.314628293747248, 42.369068673051572], [-72.314890441178406, 42.369022970670294], [-72.31517606852006, 42.369159955785406], [-72.315654783985977, 42.369478965810032], [-72.315878927279087, 42.369753053371177], [-72.315609961812228, 42.369957532293803], [-72.315355573053054, 42.369889561226287], [-72.31513186913304, 42.369809577992655], [-72.315047584056913, 42.370014997465589], [-72.315017498538694, 42.370243080738362], [-72.314879345931388, 42.370414039452406], [-72.314556617190817, 42.370601970740516], [-72.314449604736865, 42.370881286633598], [-72.314558756135057, 42.371154570256095], [-72.314567329329975, 42.371405427909934], [-72.312040209300278, 42.371702394256346], [-72.311801144503534, 42.371787991211193], [-72.31191006875568, 42.372044352871242], [-72.311833707074712, 42.372215411801577], [-72.311641362100161, 42.372318054765294], [-72.311416905593063, 42.372198635768747], [-72.31106937019284, 42.372233678239532], [-72.311062892250149, 42.372495445918631], [-72.311180100481323, 42.372820353916836], [-72.311359227274252, 42.373229904951799], [-72.311568101414153, 42.373383736048822], [-72.311777373258266, 42.373663068054888], [-72.312086605551812, 42.373764961942129], [-72.312325606907379, 42.373730592930279], [-72.312533736153782, 42.373656017287487], [-72.312818871052002, 42.373564511400851], [-72.31315853695763, 42.373587409678102], [-72.313174565622873, 42.373861352688323], [-72.312989512318339, 42.374021386484742], [-72.312611705592289, 42.374129843189877], [-72.312481077277312, 42.374386725812592], [-72.312635638366885, 42.374546610572153], [-72.312489117877419, 42.374700699306224], [-72.312558423094501, 42.374934831935164], [-72.312661503871894, 42.375217703328509], [-72.312738861238898, 42.375549193362517], [-72.312769607135976, 42.375777926487594], [-72.31260781717522, 42.37594400736571], [-72.312369130274575, 42.376041306747304], [-72.312161041352482, 42.376195289565615], [-72.312068564990994, 42.376435606479504], [-72.312207369107739, 42.376606856945457], [-72.312469305997993, 42.376750138155572], [-72.312800826602498, 42.376818200939134], [-72.313070590570177, 42.376852307216161], [-72.31332482255344, 42.376943872791742], [-72.31357925713931, 42.377126638363713], [-72.313710088920047, 42.377338457619665], [-72.313640759085303, 42.377584284026319], [-72.313517408434123, 42.377727496297375], [-72.313309468428159, 42.377893274195181], [-72.313093733281207, 42.378047852855289], [-72.312777666897929, 42.378190715650163], [-72.312531430081862, 42.378334254782658], [-72.312292451861111, 42.378494668051687], [-72.312277181743241, 42.378780625986892], [-72.312554141452736, 42.37901500286128], [-72.312831908511114, 42.378877453120538], [-72.3131169816632, 42.37875101496703], [-72.313224845509183, 42.379008553002201], [-72.313386677663175, 42.379260667597201], [-72.313548586680454, 42.379414827113244], [-72.313463799773075, 42.379592068305712], [-72.313209599192433, 42.379626546925429], [-72.313232672016568, 42.379815450016366], [-72.313363497998694, 42.379969829501569], [-72.313548630765112, 42.380135618936855], [-72.313710402876453, 42.380307245294375], [-72.313749037721195, 42.380478572079625], [-72.313725882855366, 42.380736406031126], [-72.313587325451735, 42.380953461587275], [-72.313710243951633, 42.38112536269152], [-72.313972263636714, 42.381245051650247], [-72.314165172928853, 42.381410785061497], [-72.31435012724225, 42.381656522424102], [-72.314450278187351, 42.381908441820691], [-72.314396222443548, 42.382142906343539], [-72.314172898598883, 42.382303212494456], [-72.313841731282892, 42.38221777496306], [-72.313417988682133, 42.382223562718018], [-72.31317893639833, 42.382275310142795], [-72.313024925467928, 42.382452590198611], [-72.312924470601629, 42.382686751626395], [-72.31314031310977, 42.382869790767103], [-72.313356137636887, 42.382938039528803], [-72.313664283983101, 42.382961249482101], [-72.313957101727709, 42.383029492759178], [-72.313826172000219, 42.38326396059491], [-72.313572022025511, 42.383435647450973], [-72.313302372395569, 42.383355985481771], [-72.312994208854235, 42.383189894769075], [-72.312747437200457, 42.383321643725743], [-72.312647410872984, 42.383475943937626], [-72.312446987665467, 42.383699106865095], [-72.312038625757481, 42.384127928527583], [-72.311861485544767, 42.384310951864691], [-72.311761338432618, 42.384493972115493], [-72.311946326835255, 42.384591071077047], [-72.312177581244171, 42.384631123362276], [-72.312154528392838, 42.38485969576913], [-72.311977322582067, 42.3850944879823], [-72.311838597489611, 42.385242938368741], [-72.311661349108405, 42.38535159638792], [-72.311461029435662, 42.385517316683369], [-72.311230153243699, 42.385648950117634], [-72.31108365374611, 42.385797454370156], [-72.310852452229284, 42.385865977330162], [-72.310829296904743, 42.386049084252953], [-72.311075863627323, 42.386203190628827], [-72.311253058145667, 42.386317271533464], [-72.311469097793889, 42.386420454501305], [-72.31164627579669, 42.386608810793412], [-72.3114228981499, 42.38675722752113], [-72.311207036932757, 42.386705901269202], [-72.310906572880299, 42.386563338945528], [-72.310629013088331, 42.386483186260598], [-72.310320573430175, 42.386523622313604], [-72.310467196530922, 42.386706613642232], [-72.310798552733374, 42.386843197406279], [-72.311022233076855, 42.387134853000411], [-72.310744832164346, 42.387209373309759], [-72.310498029414262, 42.387311857211337], [-72.310043115813102, 42.387389876925745], [-72.310274663244684, 42.38766059127051], [-72.310544813165606, 42.387740256834448], [-72.310814481961117, 42.387848645151109], [-72.311053477842378, 42.38800847688519], [-72.311346377338396, 42.388214024066933], [-72.311685448079103, 42.388373688948199], [-72.312001541069989, 42.388493541091627], [-72.312302034434609, 42.388561824523748], [-72.312571831185039, 42.388670207843653], [-72.312772360438743, 42.388841471568028], [-72.312919033845645, 42.388989617284402], [-72.313088644427125, 42.389183606506471], [-72.313242829251436, 42.389349074772959], [-72.31349727020995, 42.389566232273012], [-72.313512567190088, 42.389754559662769], [-72.313589630597832, 42.389948212316455], [-72.31353596684292, 42.390279996995339], [-72.313212593366643, 42.390359889912531], [-72.312965851854656, 42.390137185497935], [-72.312896096111103, 42.389926104777501], [-72.312780314728187, 42.389715349139031], [-72.312495357551043, 42.389675137023225], [-72.31234899945467, 42.389863525570682], [-72.312556994269414, 42.390057874980641], [-72.312611347659441, 42.390223508837039], [-72.312595838595087, 42.390405931734712], [-72.312618989264848, 42.390714125396599], [-72.312657613879793, 42.390931638279241], [-72.312850374438568, 42.391074326750967], [-72.313204802724627, 42.391113957025645], [-72.313520790191404, 42.391016650323003], [-72.313806088047883, 42.391045063425693], [-72.314029785449122, 42.391118837254204], [-72.314253354968102, 42.391267517588538], [-72.314407542346856, 42.391404264272737], [-72.314507695044156, 42.391655102773704], [-72.314461715371962, 42.391838281774398], [-72.314307591156165, 42.392055447670984], [-72.314052994390096, 42.392232810130352], [-72.313798841033488, 42.392340934832937], [-72.313567807463855, 42.39254684950695], [-72.313390896100515, 42.392758593281208], [-72.313529497825968, 42.392986562900774], [-72.313745527356744, 42.393209573279663], [-72.314076899746581, 42.393363073446196], [-72.314446884469135, 42.393534395653148], [-72.314685881768852, 42.393654245965749], [-72.314870889446311, 42.393797525905939], [-72.315078964067396, 42.393968191943848], [-72.315294900800069, 42.394145644275788], [-72.315580166910607, 42.394368160642017], [-72.31581923021011, 42.394539776108253], [-72.315826924436649, 42.39485366046695], [-72.315557280373412, 42.394985576971251], [-72.315326205183084, 42.39493427611928], [-72.315094828519761, 42.394831299019252], [-72.3147865162138, 42.394837443900762], [-72.314624595906466, 42.394968505355877], [-72.314501268729742, 42.395134855736138], [-72.31437807773861, 42.395311828691575], [-72.314609386291622, 42.395466035463222], [-72.314886659500161, 42.39545452895446], [-72.315202767625323, 42.395402772805866], [-72.315457082429006, 42.395551232965708], [-72.31531856662852, 42.395717061621632], [-72.315125918809215, 42.395848431487728], [-72.314886920061724, 42.395917647615747], [-72.314547886835811, 42.396066348681671], [-72.314255102272639, 42.396203467587171], [-72.313969874305656, 42.396295516692824], [-72.313630808305859, 42.39640424140449], [-72.313515174014242, 42.396593044032926], [-72.313746537202377, 42.396798479859356], [-72.313946762592593, 42.396981627679452], [-72.313931487379008, 42.397266954447097], [-72.313939320330888, 42.397479102481896], [-72.314162774329446, 42.397701969416183], [-72.314447966337951, 42.397804657549621], [-72.314671451188659, 42.39790715163101], [-72.31444034191351, 42.398033120541335], [-72.314563568035965, 42.39824499195425], [-72.314717832904606, 42.398433505483517], [-72.314910748246277, 42.398604909061191], [-72.315087932925223, 42.398856281581672], [-72.314903162523805, 42.399062410982197], [-72.314625582200307, 42.399079591544066], [-72.314363694826369, 42.39907973453154], [-72.314039846546081, 42.399182770655933], [-72.313962717992212, 42.39937184138239], [-72.314032104145952, 42.399600299707267], [-72.314078487533607, 42.399834682697865], [-72.313970838544648, 42.400040264924272], [-72.313747373119597, 42.400005832863037], [-72.313508354204131, 42.400103135782921], [-72.313523581940515, 42.400285881286713], [-72.313431183899183, 42.400440217498357], [-72.313269359765982, 42.400646181933276], [-72.313346586277945, 42.400851537231709], [-72.3135932950686, 42.401040028998281], [-72.313762966274297, 42.40121718090775], [-72.314009713478811, 42.401531084795025], [-72.31404076487847, 42.401725602356301], [-72.313886496212632, 42.401999577624423], [-72.313639906494771, 42.402028330597616], [-72.313424225823226, 42.401891387497088], [-72.313269916834628, 42.40176589440761], [-72.31302315955142, 42.401857128800877], [-72.313154327083495, 42.402034553586176], [-72.313200654309782, 42.402245799203463], [-72.313308732709913, 42.402394126865204], [-72.313308609303277, 42.402639462326732], [-72.313239469791412, 42.402874031613123], [-72.313308931302501, 42.403108251647225], [-72.31306229410707, 42.403228114850933], [-72.312769413378717, 42.403256652757698], [-72.312568859725744, 42.403502863286889], [-72.312599782847045, 42.403725471702394], [-72.312699978040911, 42.403988104899227], [-72.312792621880547, 42.40421135775113], [-72.312846508679883, 42.404462523778435], [-72.313170586774334, 42.404667845890003], [-72.313239983985596, 42.404896934566196], [-72.313186067126978, 42.405125183970831], [-72.313055086955472, 42.405302840182124], [-72.313186138328888, 42.405508445354052], [-72.313348041110643, 42.40565693277221], [-72.313556310549203, 42.405840024230933], [-72.313679637201005, 42.406068191181099], [-72.313725896230551, 42.406434200128039], [-72.31357195348491, 42.406640108870938], [-72.313286792822367, 42.40648619067354], [-72.31304769617698, 42.406343290270279], [-72.312939889745351, 42.406594427887484], [-72.312816343812301, 42.406812004967477], [-72.312446568886401, 42.407040773557462], [-72.312153659607631, 42.407144125651158], [-72.311868539113604, 42.407201326213475], [-72.311659817626577, 42.407361432839224], [-72.311528854195174, 42.407522161225799], [-72.311166746532137, 42.407705315900962], [-72.310866123462858, 42.407813850792209], [-72.310626998217359, 42.407848666612686], [-72.310357353105175, 42.40792880230272], [-72.310149263595619, 42.408100785520475], [-72.310095360045111, 42.408312197336173], [-72.309925831508451, 42.408535586653564], [-72.31000264114364, 42.408717988863174], [-72.310295784624159, 42.408575207183397], [-72.310557973724812, 42.408500796124954], [-72.310904940874778, 42.408557412350916], [-72.31088943727363, 42.408797814015308], [-72.31076596266405, 42.408946064421372], [-72.310627295666549, 42.409141237741551], [-72.310450080117946, 42.409324168033635], [-72.310403905591755, 42.40951301779242], [-72.31027273934906, 42.410198715944112], [-72.31030359237667, 42.410473092815842], [-72.310272995865162, 42.410673626830089], [-72.31009550960097, 42.410902204008806], [-72.309687292043861, 42.410873565614473], [-72.309301701096686, 42.410856650750901], [-72.309070290809004, 42.410982610198282], [-72.308900815996978, 42.411125599894447], [-72.308692734496759, 42.411308834265625], [-72.3086001859118, 42.411463077025168], [-72.308685139448997, 42.411702772391621], [-72.309008773844809, 42.411662775220123], [-72.309278587170795, 42.411651335207694], [-72.309386580500714, 42.41181146090252], [-72.309294225414362, 42.412028184221882], [-72.309093823325625, 42.412279968733714], [-72.308985749241018, 42.412531194021852], [-72.308870241959013, 42.412714318124181], [-72.308746835393706, 42.412954306793331], [-72.308693019023735, 42.413125743371545], [-72.308677719165416, 42.413439788140472], [-72.308762483718539, 42.413759431996297], [-72.308801082621628, 42.414079310137289], [-72.308755078041784, 42.414490983852595], [-72.308616449105855, 42.414690565600623], [-72.308346674461134, 42.41472505155604], [-72.308014958301698, 42.414628346780141], [-72.307706690013532, 42.414617005711747], [-72.307382750377187, 42.414805551911861], [-72.307282634323187, 42.414976772278031], [-72.307282759624186, 42.415233899111072], [-72.307328935518612, 42.415462613375063], [-72.30753713601942, 42.415667683375538], [-72.307776282150996, 42.415793668948524], [-72.307999921575785, 42.415913640789149], [-72.30784576140519, 42.416067774989173], [-72.307583727879347, 42.416090500782843], [-72.307290640185897, 42.416107681809208], [-72.306943801382815, 42.416187810234767], [-72.306627585474871, 42.416296892962777], [-72.306481176407999, 42.416468436926138], [-72.30659691456168, 42.416673616165632], [-72.306743595677361, 42.416856520913484], [-72.306859288906963, 42.41701047274718], [-72.306990130502626, 42.417227879914179], [-72.306843791519015, 42.417405005701511], [-72.306597233945581, 42.41759354699294], [-72.306365864040117, 42.417696452460561], [-72.306034127158824, 42.417856329432844], [-72.306018987490177, 42.418079261267835], [-72.306134634528078, 42.418296235553235], [-72.306273490041463, 42.418541766933657], [-72.306404525507673, 42.418764755234804], [-72.306543336866952, 42.4189590591631], [-72.306674274790183, 42.419193301658026], [-72.306697510380559, 42.419433430540749], [-72.306643682934279, 42.419604865893533], [-72.306277874808728, 42.420037864909268], [-72.30561060095954, 42.420357103427008], [-72.305143425843895, 42.420321568673472], [-72.304777829226737, 42.420228422619104], [-72.304554207132213, 42.420034169232885], [-72.304284331340867, 42.420148593304077], [-72.303991270628259, 42.420303152232549], [-72.30372902964055, 42.420205949833871], [-72.303328211545534, 42.420371972990402], [-72.303058345584844, 42.420315336030662], [-72.302834742048148, 42.420246491779487], [-72.302526204643783, 42.420292578037433], [-72.302279466384334, 42.420315635120836], [-72.302040539540272, 42.420475483677954], [-72.30212541518307, 42.420710052078526], [-72.302117551098107, 42.420961652190428], [-72.30189415925804, 42.421081958782871], [-72.301693579216987, 42.421247661516659], [-72.301554920273091, 42.421419054833173], [-72.301346542434644, 42.421544927712596], [-72.301500874323295, 42.42172778564111], [-72.301624196909444, 42.421899155328283], [-72.301277347552357, 42.421962340636156], [-72.300992058387195, 42.421945149498768], [-72.300806903560641, 42.4221394630178], [-72.300806810895679, 42.422362288904274], [-72.30083787236083, 42.42260794608945], [-72.300953458598187, 42.422859227311619], [-72.301061429988167, 42.42300819674395], [-72.301138594098802, 42.423247951122576], [-72.301238852589961, 42.423430645451795], [-72.301285113312019, 42.4236193874588], [-72.3015243212093, 42.423710543679995], [-72.301817179870881, 42.423768194538482], [-72.302241337054753, 42.423830511663105], [-72.302457117007549, 42.424019152150649], [-72.302519028337073, 42.424253430017913], [-72.302403308746122, 42.424442130200781], [-72.302141115888887, 42.424464754383692], [-72.302002305912126, 42.424299165123436], [-72.301716813681878, 42.424276395243297], [-72.30150888356286, 42.424390381128418], [-72.301215735698861, 42.424396383016862], [-72.300861117407322, 42.424442155095946], [-72.300598974096175, 42.42448791324162], [-72.300329051933943, 42.424562354543625], [-72.300236360423668, 42.424814003727754], [-72.300298111831111, 42.425065029462864], [-72.300359972205001, 42.425305430805807], [-72.300398448203495, 42.425493687010864], [-72.300074615080931, 42.425562380391831], [-72.299887350342871, 42.425466268730993], [-72.299632493807636, 42.425483254301874], [-72.299293216297883, 42.425637581633538], [-72.299092881715637, 42.425872421145158], [-72.298861653338619, 42.426009071442301], [-72.298583923616704, 42.426101028636417], [-72.298321751122813, 42.426135527923968], [-72.297681906544895, 42.426267716063649], [-72.297342745925803, 42.426364597371865], [-72.297095906985675, 42.426593633300065], [-72.297273189824935, 42.426707734635592], [-72.29755859044252, 42.426741770016264], [-72.297805456133688, 42.426890320260426], [-72.297573931596304, 42.427061811466807], [-72.297242504834884, 42.427194110810319], [-72.297018703693695, 42.42721699754442], [-72.296594735930583, 42.427383156800886], [-72.296409736340777, 42.427514980662188], [-72.296155211031575, 42.42754933202594], [-72.29594688994564, 42.427720749681384], [-72.295784915878741, 42.427944154219347], [-72.295669122257308, 42.428109800029176], [-72.295492148572052, 42.428338889659557], [-72.295229902908602, 42.428590535401156], [-72.294913496683677, 42.428768279480131], [-72.29472095887968, 42.428871432915557], [-72.294435444497694, 42.429157628956794], [-72.294358345750894, 42.429317964659198], [-72.294173512343235, 42.429512174622595], [-72.29401134314304, 42.429672556655817], [-72.293795157032974, 42.429867072225797], [-72.293556108168019, 42.43002177152178], [-72.293317174613676, 42.429827602302801], [-72.292931467843403, 42.429742479810756], [-72.292669453345994, 42.42974257342869], [-72.292383956098021, 42.429885796092059], [-72.292090983774941, 42.429966048294681], [-72.291936803089484, 42.430143748219926], [-72.291890451353837, 42.430372563750993], [-72.291952150890637, 42.430641059649609], [-72.292067935411453, 42.430909813655298], [-72.291944349153482, 42.431201551395162], [-72.29186740889115, 42.431384931930587], [-72.291882825748914, 42.431567767267964], [-72.291712901144621, 42.431779336395401], [-72.291489366732421, 42.431854067560238], [-72.291335179748089, 42.432031766597639], [-72.291281299889661, 42.432203194238461], [-72.291204085675602, 42.432500824436389], [-72.291119253465169, 42.432821014439696], [-72.291103719146705, 42.433055739773735], [-72.291157794142507, 42.433307452663371], [-72.291435262597545, 42.433598773999627], [-72.29179772997449, 42.433718903052636], [-72.29190585888513, 42.433890387108455], [-72.291813455113029, 42.43406207986547], [-72.291489308920902, 42.434216729522014], [-72.291111236581557, 42.434199701189208], [-72.290888106257199, 42.434045301841131], [-72.290687416768662, 42.433673685298452], [-72.290594808225563, 42.433479586012432], [-72.290509946543921, 42.433302359128014], [-72.290224474910318, 42.433245258922135], [-72.289970271145549, 42.433365753021931], [-72.28990063876148, 42.433531616103316], [-72.28990822377564, 42.433914732310619], [-72.289900593303287, 42.43431541870671], [-72.289831270499533, 42.434681146424808], [-72.289676720822399, 42.434898818892712], [-72.289530203542668, 42.43505908688492], [-72.289190849679699, 42.435242553834584], [-72.288890205098198, 42.435362823531932], [-72.28867432216218, 42.435574702701516], [-72.288882682377604, 42.435792138498357], [-72.289028730278929, 42.435934645750343], [-72.289105761999551, 42.436185661894484], [-72.289267899640024, 42.436312303312384], [-72.289599430017716, 42.436299856980845], [-72.289838560997211, 42.436362948556948], [-72.289915538979201, 42.43658020302631], [-72.29008553290295, 42.436751714407677], [-72.290347676085759, 42.436934477052823], [-72.290625390038741, 42.437089042813263], [-72.290725770557671, 42.437340437717651], [-72.290594659323887, 42.437517976953821], [-72.290324721422735, 42.43758681234403], [-72.289993015441539, 42.437546864431518], [-72.289615012591085, 42.437478603493481], [-72.289082975731958, 42.437387719072206], [-72.288758492793775, 42.437410198964045], [-72.288481171686968, 42.437462154951241], [-72.288126459488723, 42.437468004431992], [-72.287841194341638, 42.437399553064871], [-72.287524961121392, 42.437245334116497], [-72.287278235341304, 42.437245850869417], [-72.287154606717507, 42.437400377312748], [-72.2870622877833, 42.437560811652446], [-72.287008096542095, 42.437737820937798], [-72.287208249876429, 42.437989077002953], [-72.287362888047085, 42.438206342510078], [-72.287339649593449, 42.438458045238363], [-72.287139141812176, 42.438646768453353], [-72.286876867157844, 42.438853379214343], [-72.286622458612129, 42.439047601513771], [-72.286398542344543, 42.439230901430207], [-72.286197944538387, 42.439471390781193], [-72.285974165531798, 42.43966594264262], [-72.285673412325764, 42.439740559177558], [-72.285442464419063, 42.439837746479498], [-72.285125983182795, 42.439986833585095], [-72.284801826721221, 42.440163971425157], [-72.283768396303657, 42.440759625489498], [-72.283259193537617, 42.4411884814023], [-72.291285646436805, 42.47958747502733], [-72.262724274948582, 42.500088267572892], [-72.249534569683817, 42.509879279063057], [-72.244798508574235, 42.513513340207382], [-72.249533496435177, 42.517329093792029], [-72.269131082391738, 42.533403857379113], [-72.271363524804599, 42.54724695994669], [-72.273665162589623, 42.560932591173533], [-72.276713139289541, 42.570406523323697], [-72.276862048727992, 42.57730156077595], [-72.276591570779658, 42.577158798524216], [-72.276320805236736, 42.576953018993329], [-72.2761738670998, 42.576821758316115], [-72.275833789649141, 42.576655245220991], [-72.275540040649091, 42.576541355420808], [-72.275068100874762, 42.576518058093406], [-72.274851827695613, 42.57659261191867], [-72.274642978368988, 42.576666665370553], [-72.27435708950722, 42.576775985622497], [-72.274140548652326, 42.577027261964723], [-72.274140967993546, 42.577210193043612], [-72.27409442244597, 42.577387677437578], [-72.274140830045724, 42.577575881670377], [-72.274241481322804, 42.577895970922427], [-72.274280192493848, 42.578102141981873], [-72.274272437534719, 42.578313756270838], [-72.274357706363332, 42.578650783514682], [-72.27433449602735, 42.578833872827374], [-72.274241594611595, 42.579085399879467], [-72.273955690967867, 42.579234150673024], [-72.273615500214703, 42.579297199349419], [-72.273344907529832, 42.57927425554977], [-72.272942933423579, 42.579136867191487], [-72.272680024578321, 42.579005298470513], [-72.272401398818786, 42.578793891068983], [-72.272239091976175, 42.578610963116979], [-72.272177388684341, 42.578416738748516], [-72.272107529584602, 42.578153338543409], [-72.272092233401267, 42.577958713604545], [-72.272037929206959, 42.577741933010614], [-72.27201487537171, 42.577530524981732], [-72.272014589925334, 42.577278452708683], [-72.271991399701349, 42.577095673988332], [-72.271937236626428, 42.576930117438053], [-72.271867603418997, 42.576575518623528], [-72.271767022927506, 42.57632969867953], [-72.271504299616879, 42.576112600831827], [-72.271264550248517, 42.576020845825973], [-72.270939823786023, 42.575992586559359], [-72.27050687618798, 42.576089465609947], [-72.270236256024234, 42.576232523667159], [-72.270043084384724, 42.57640369276168], [-72.269919512472399, 42.576598614344448], [-72.269811159320568, 42.576832865867232], [-72.269633340691868, 42.577124387245789], [-72.269525419507261, 42.577324335485137], [-72.269355201876323, 42.577490308802027], [-72.26913087299333, 42.577564365360857], [-72.268860312263001, 42.577673119591658], [-72.268535716017084, 42.577736049454174], [-72.26811834402119, 42.577752872184888], [-72.267801298933378, 42.577735806233086], [-72.267492051132194, 42.5776788058443], [-72.267128562583181, 42.577639000125686], [-72.266834747167962, 42.577598820371605], [-72.266548711419347, 42.577547244868157], [-72.266301570351189, 42.577478575465825], [-72.265992164312337, 42.577438407065422], [-72.265698390314512, 42.577341327445531], [-72.265358166513678, 42.577220878179723], [-72.265102940276108, 42.577077988030204], [-72.264832424473028, 42.576889645268068], [-72.264662398018814, 42.576660574332941], [-72.264391731683432, 42.576489696663451], [-72.264206165108746, 42.576334999795314], [-72.263951206064931, 42.576163386896624], [-72.263726802811902, 42.576020289668158], [-72.263479552131116, 42.575911643233553], [-72.263224210363163, 42.575808721447579], [-72.262822354487881, 42.575677419012628], [-72.262528492941385, 42.575682782039713], [-72.262149596065854, 42.575717334338329], [-72.261902268365262, 42.575722928605806], [-72.261631886746926, 42.575746049594159], [-72.261368842227057, 42.575791718177996], [-72.261423124259537, 42.576060269002461], [-72.267062375423535, 42.600839804150276], [-72.265469207447595, 42.600970742581879], [-72.262514834899775, 42.600272877126187], [-72.262197593668674, 42.600198450017736], [-72.261934567648311, 42.600324601830145], [-72.261625194904724, 42.600427291977383], [-72.261331386067084, 42.600547433680667], [-72.261014228103036, 42.600661516755935], [-72.260673986792241, 42.600821844231369], [-72.260449837706872, 42.600958899644276], [-72.260241100311589, 42.601050300094755], [-72.260047599957289, 42.601142140009216], [-72.259884957614631, 42.601347479017377], [-72.259784592511622, 42.60155348826688], [-72.259622444810532, 42.601850559832663], [-72.259436584938825, 42.602010407857328], [-72.259243165319546, 42.602250878299394], [-72.25912734305679, 42.602519466386454], [-72.259057660712131, 42.60275399113376], [-72.259003425759417, 42.602965908072036], [-72.259003623767356, 42.60315433054356], [-72.258941840551557, 42.603377010101518], [-72.258879752019951, 42.603554138623046], [-72.258810215302248, 42.603719972815711], [-72.258492954939967, 42.603817124570043], [-72.258121935761437, 42.603902835084071], [-72.257804626264416, 42.604006197021569], [-72.257518639346827, 42.604120065628408], [-72.257131822461005, 42.604240176349137], [-72.256861057012145, 42.604434426406407], [-72.256659860073739, 42.60470861279952], [-72.256428057620397, 42.604920611568275], [-72.256396923120903, 42.605149210522498], [-72.253341759591564, 42.605365530574218], [-72.254718000017974, 42.611591979341945], [-72.251662744500791, 42.611980471638233], [-72.251771100263085, 42.612174941060793], [-72.249516994284122, 42.612405654806608], [-72.242561426346214, 42.613358767118633], [-72.242761855437891, 42.613735584188099], [-72.242490573084282, 42.613810429290325], [-72.242142421112106, 42.613971381800873], [-72.24177049868554, 42.614142568760272], [-72.241453106977303, 42.614131643451117], [-72.241221316897764, 42.614103333130494], [-72.241004695169977, 42.614017488917618], [-72.240765255614576, 42.613960508722158], [-72.240548606926836, 42.613903381878117], [-72.240324336866536, 42.61384072192584], [-72.239983868146325, 42.613795010745534], [-72.239682446214061, 42.613846455750398], [-72.239303018100301, 42.613897859246066], [-72.2391092141591, 42.614000918360375], [-72.238900018251897, 42.614132253520637], [-72.238698204550914, 42.614383904761006], [-72.238558633698048, 42.614549093471517], [-72.238163831277816, 42.614641102841851], [-72.237800096143744, 42.614617590107976], [-72.237460060492424, 42.614463298344099], [-72.237135637320421, 42.614320249097354], [-72.236934564086837, 42.614239879595381], [-72.236648564966416, 42.614182647850242], [-72.236222880065483, 42.614176900194572], [-72.235573011308375, 42.614199046597783], [-72.235255740128338, 42.614250580962121], [-72.234985105680494, 42.614266977891333], [-72.234698823320031, 42.614227117988342], [-72.234296223361312, 42.614267399264037], [-72.233894175513356, 42.614260952566902], [-72.233143643498948, 42.614231960522687], [-72.232509516295195, 42.61415100096653], [-72.231945238354143, 42.614070765551887], [-72.231604656681895, 42.614098851034271], [-72.231341016572912, 42.614224305576286], [-72.231154885504495, 42.61440157338086], [-72.230953390820758, 42.61457839796762], [-72.230596807798975, 42.614834975455302], [-72.230310608509143, 42.614823282015941], [-72.230218351080026, 42.6146348126954], [-72.230071641576103, 42.614480446979556], [-72.229747013186099, 42.614423442392159], [-72.229475933622339, 42.614548939644003], [-72.229251271915757, 42.614662259814168], [-72.228910094985238, 42.61483942264033], [-72.228398576338833, 42.615284943483537], [-72.227917791456861, 42.615627189533789], [-72.227793659109821, 42.615770391569718], [-72.227746531033844, 42.616027259989608], [-72.227761390188832, 42.616216218958037], [-72.227814579237688, 42.616547265943559], [-72.227905270693526, 42.617096386970992], [-72.227896638845763, 42.617404236930589], [-72.227856612718995, 42.617758917685677], [-72.227847593760742, 42.61796999314128], [-72.227901204134483, 42.618147454624832], [-72.228124422454215, 42.61839307606342], [-72.228394374597457, 42.618558460122358], [-72.228377404803695, 42.618861861334963], [-72.22836812450133, 42.619113449658649], [-72.228274537319137, 42.619284457140566], [-72.228093992655943, 42.61980999093187], [-72.227904392137873, 42.620448742761631], [-72.22779392938719, 42.620826373308439], [-72.227745594866875, 42.621105755143205], [-72.227550146725832, 42.621471047292296], [-72.227454278990464, 42.621962286642834], [-72.227739069963036, 42.621997042583217], [-72.22798662846192, 42.621911129083067], [-72.228349839934964, 42.621791176527182], [-72.228643230938388, 42.621768530137118], [-72.22898195407933, 42.621871091596716], [-72.229366359010484, 42.622002531653052], [-72.229843653054886, 42.622134013645088], [-72.229817981311371, 42.622390746846222], [-72.2296311976704, 42.622556222440203], [-72.229452100606153, 42.622732902280937], [-72.229265036159262, 42.622990114379064], [-72.229147374732364, 42.623229963332022], [-72.228943319452242, 42.623715135036221], [-72.229049179143317, 42.624045848343386], [-72.229333705577346, 42.624120032948277], [-72.229634264714861, 42.624125966760367], [-72.229873318453656, 42.624126166796188], [-72.23036803535399, 42.623960994659555], [-72.230638626759188, 42.623926694193926], [-72.230870001285012, 42.624000581081823], [-72.231000392440677, 42.624143795666527], [-72.231270002537741, 42.624360939378221], [-72.231516187715499, 42.624681219257567], [-72.231592918214645, 42.624864203897523], [-72.231597617594716, 42.625184842624151], [-72.231496732887848, 42.625430799285169], [-72.231341710158077, 42.625665305396659], [-72.231085741724513, 42.62583626258715], [-72.230869013101611, 42.625922077498103], [-72.230590026675273, 42.626042585273048], [-72.230326715845848, 42.62611681052158], [-72.2300787953683, 42.62622523733075], [-72.229683934153854, 42.626287959158233], [-72.229381973406348, 42.626214515672537], [-72.229049346171294, 42.626145676188685], [-72.228723910299934, 42.626139897754477], [-72.228491752679389, 42.626220133953161], [-72.228243625813803, 42.626300470368292], [-72.228042307253702, 42.626380511204914], [-72.227848310215705, 42.626471758644229], [-72.227545851575613, 42.626671718496731], [-72.2272124428616, 42.626883665869975], [-72.227010869164644, 42.627089741127506], [-72.226855761924057, 42.627329282885661], [-72.226793028626901, 42.62752377097555], [-72.22673868946508, 42.627832987726194], [-72.226644772319517, 42.628198808883468], [-72.226566937431443, 42.62841589796956], [-72.226403868572973, 42.628747764387192], [-72.226279602714726, 42.628987651395924], [-72.226078000178873, 42.629244949055114], [-72.225891310866814, 42.629484687826128], [-72.2257287533685, 42.629639291370005], [-72.225573487701311, 42.629770802555782], [-72.22550327685336, 42.62999405459496], [-72.225495068762271, 42.63030811212171], [-72.225510590642543, 42.630491394823601], [-72.225540981161927, 42.630748314295317], [-72.225687294434891, 42.631119917084071], [-72.225740981975235, 42.631314212786016], [-72.225833660722941, 42.631548864776498], [-72.225918588319175, 42.63177735369387], [-72.226003076823005, 42.6321369211134], [-72.226033847161219, 42.63233136088963], [-72.226056702372958, 42.63253719349629], [-72.226025536264657, 42.632731482391129], [-72.225970825560651, 42.632903413095015], [-72.225916425304661, 42.633091726282991], [-72.225985754650097, 42.633257205859223], [-72.225962196297175, 42.633434612283828], [-72.226054742004322, 42.633657381563815], [-72.226209294648569, 42.633960242903314], [-72.226293740634446, 42.634252291759772], [-72.226409519472199, 42.634692143836574], [-72.227344743952557, 42.63553248957782], [-72.227600117894283, 42.635738477897867], [-72.227924912153696, 42.63600092349418], [-72.228156798836025, 42.636252610975369], [-72.228264727335841, 42.636486624490018], [-72.228411321735933, 42.636795654566058], [-72.228464890141097, 42.63711553387791], [-72.228464744810793, 42.63729270297037], [-72.228534143872906, 42.637452688942147], [-72.228681101737919, 42.637687446128787], [-72.228765696441116, 42.638001457977175], [-72.228788618930452, 42.638201617788482], [-72.228780695416873, 42.638401972180361], [-72.22494305627805, 42.638942048103878], [-72.229512970613186, 42.662691527157051], [-72.242115006452863, 42.661671081638062], [-72.2435058016097, 42.669233145227508], [-72.249542154836391, 42.668733325609516], [-72.257410749145407, 42.667975342112463], [-72.258466975844826, 42.675390335903693], [-72.271908509973727, 42.674397697668233], [-72.271952611257518, 42.674651180326485], [-72.282977429424591, 42.721609670161889], [-72.249536348995747, 42.720716618086705], [-72.203658771312888, 42.719706759755283], [-72.12456251804673, 42.717686444862387], [-72.111053261523494, 42.717266271857916], [-72.078629255717203, 42.716438279929349], [-71.999500815482264, 42.713865624477471], [-71.981437755832246, 42.713486445279592], [-71.928850412516567, 42.712159702669993], [-71.898762701214707, 42.711401444002995], [-71.897120137586697, 42.703821187714162], [-71.874574630965029, 42.687187542809028]]]}, "type": "Feature", "id": 13, "properties": {"COUNTY": "WORCESTER", "AREA_ACRES": 1010699.0, "OBJECTID": 14.0, "FIPS_ID": 25027}}]} diff --git a/public/assets/vendor/leaflet-ajax/example/images/layers-2x.png b/public/assets/vendor/leaflet-ajax/example/images/layers-2x.png new file mode 100644 index 00000000..a2cf7f9e Binary files /dev/null and b/public/assets/vendor/leaflet-ajax/example/images/layers-2x.png differ diff --git a/public/assets/vendor/leaflet-ajax/example/images/layers.png b/public/assets/vendor/leaflet-ajax/example/images/layers.png new file mode 100644 index 00000000..bca0a0e4 Binary files /dev/null and b/public/assets/vendor/leaflet-ajax/example/images/layers.png differ diff --git a/public/assets/vendor/leaflet-ajax/example/images/marker-icon-2x.png b/public/assets/vendor/leaflet-ajax/example/images/marker-icon-2x.png new file mode 100644 index 00000000..0015b649 Binary files /dev/null and b/public/assets/vendor/leaflet-ajax/example/images/marker-icon-2x.png differ diff --git a/public/assets/vendor/leaflet-ajax/example/images/marker-icon.png b/public/assets/vendor/leaflet-ajax/example/images/marker-icon.png new file mode 100644 index 00000000..e2e9f757 Binary files /dev/null and b/public/assets/vendor/leaflet-ajax/example/images/marker-icon.png differ diff --git a/public/assets/vendor/leaflet-ajax/example/images/marker-shadow.png b/public/assets/vendor/leaflet-ajax/example/images/marker-shadow.png new file mode 100644 index 00000000..d1e773c7 Binary files /dev/null and b/public/assets/vendor/leaflet-ajax/example/images/marker-shadow.png differ diff --git a/public/assets/vendor/leaflet-ajax/example/index.html b/public/assets/vendor/leaflet-ajax/example/index.html new file mode 100644 index 00000000..cddf3fc2 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/index.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + Leaflet AJAX + + +
+ + + + + diff --git a/public/assets/vendor/leaflet-ajax/example/leaflet-src.js b/public/assets/vendor/leaflet-ajax/example/leaflet-src.js new file mode 100644 index 00000000..c8bb0d0a --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/leaflet-src.js @@ -0,0 +1,9406 @@ +/* + Leaflet 1.0-dev (46d2d6a), a JS library for interactive maps. http://leafletjs.com + (c) 2010-2015 Vladimir Agafonkin, (c) 2010-2011 CloudMade +*/ +(function (window, document, undefined) { +var L = { + version: '1.0-dev' +}; + +function expose() { + var oldL = window.L; + + L.noConflict = function () { + window.L = oldL; + return this; + }; + + window.L = L; +} + +// define Leaflet for Node module pattern loaders, including Browserify +if (typeof module === 'object' && typeof module.exports === 'object') { + module.exports = L; + +// define Leaflet as an AMD module +} else if (typeof define === 'function' && define.amd) { + define(L); +} + +// define Leaflet as a global L variable, saving the original L to restore later if needed +if (typeof window !== 'undefined') { + expose(); +} + + +/* + * L.Util contains various utility functions used throughout Leaflet code. + */ + +L.Util = { + // extend an object with properties of one or more other objects + extend: function (dest) { + var i, j, len, src; + + for (j = 1, len = arguments.length; j < len; j++) { + src = arguments[j]; + for (i in src) { + dest[i] = src[i]; + } + } + return dest; + }, + + // create an object from a given prototype + create: Object.create || (function () { + function F() {} + return function (proto) { + F.prototype = proto; + return new F(); + }; + })(), + + // bind a function to be called with a given context + bind: function (fn, obj) { + var slice = Array.prototype.slice; + + if (fn.bind) { + return fn.bind.apply(fn, slice.call(arguments, 1)); + } + + var args = slice.call(arguments, 2); + + return function () { + return fn.apply(obj, args.length ? args.concat(slice.call(arguments)) : arguments); + }; + }, + + // return unique ID of an object + stamp: function (obj) { + /*eslint-disable */ + obj._leaflet_id = obj._leaflet_id || ++L.Util.lastId; + return obj._leaflet_id; + /*eslint-enable */ + }, + + lastId: 0, + + // return a function that won't be called more often than the given interval + throttle: function (fn, time, context) { + var lock, args, wrapperFn, later; + + later = function () { + // reset lock and call if queued + lock = false; + if (args) { + wrapperFn.apply(context, args); + args = false; + } + }; + + wrapperFn = function () { + if (lock) { + // called too soon, queue to call later + args = arguments; + + } else { + // call and lock until later + fn.apply(context, arguments); + setTimeout(later, time); + lock = true; + } + }; + + return wrapperFn; + }, + + // wrap the given number to lie within a certain range (used for wrapping longitude) + wrapNum: function (x, range, includeMax) { + var max = range[1], + min = range[0], + d = max - min; + return x === max && includeMax ? x : ((x - min) % d + d) % d + min; + }, + + // do nothing (used as a noop throughout the code) + falseFn: function () { return false; }, + + // round a given number to a given precision + formatNum: function (num, digits) { + var pow = Math.pow(10, digits || 5); + return Math.round(num * pow) / pow; + }, + + // trim whitespace from both sides of a string + trim: function (str) { + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); + }, + + // split a string into words + splitWords: function (str) { + return L.Util.trim(str).split(/\s+/); + }, + + // set options to an object, inheriting parent's options as well + setOptions: function (obj, options) { + if (!obj.hasOwnProperty('options')) { + obj.options = obj.options ? L.Util.create(obj.options) : {}; + } + for (var i in options) { + obj.options[i] = options[i]; + } + return obj.options; + }, + + // make a URL with GET parameters out of a set of properties/values + 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('&'); + }, + + // super-simple templating facility, used for TileLayer URLs + template: function (str, data) { + return str.replace(L.Util.templateRe, 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; + }); + }, + + templateRe: /\{ *([\w_]+) *\}/g, + + isArray: Array.isArray || function (obj) { + return (Object.prototype.toString.call(obj) === '[object Array]'); + }, + + indexOf: function (array, el) { + for (var i = 0; i < array.length; i++) { + if (array[i] === el) { return i; } + } + return -1; + }, + + // minimal image URI, set to an image when disposing to flush memory + emptyImageUrl: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' +}; + +(function () { + // inspired by http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + + function getPrefixed(name) { + return window['webkit' + name] || window['moz' + name] || window['ms' + name]; + } + + var lastTime = 0; + + // fallback for IE 7-8 + 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, + cancelFn = window.cancelAnimationFrame || getPrefixed('CancelAnimationFrame') || + getPrefixed('CancelRequestAnimationFrame') || function (id) { window.clearTimeout(id); }; + + + L.Util.requestAnimFrame = function (fn, context, immediate) { + if (immediate && requestFn === timeoutDefer) { + fn.call(context); + } else { + return requestFn.call(window, L.bind(fn, context)); + } + }; + + 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 + this.callInitHooks(); + }; + + var parentProto = NewClass.__super__ = this.prototype; + + var proto = L.Util.create(parentProto); + 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 (proto.options) { + props.options = L.Util.extend(L.Util.create(proto.options), props.options); + } + + // mix given properties into the prototype + L.extend(proto, props); + + proto._initHooks = []; + + // add method for calling all hooks + proto.callInitHooks = function () { + + if (this._initHooksCalled) { return; } + + if (parentProto.callInitHooks) { + parentProto.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.Evented is a base class that Leaflet classes inherit from to handle custom events. + */ + +L.Evented = L.Class.extend({ + + on: function (types, fn, context) { + + // types can be a map of types/handlers + if (typeof types === 'object') { + for (var type in types) { + // we don't process space-separated events here for performance; + // it's a hot path since Layer uses the on(obj) syntax + this._on(type, types[type], fn); + } + + } else { + // types can be a string of space-separated words + types = L.Util.splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(types[i], fn, context); + } + } + + return this; + }, + + off: function (types, fn, context) { + + if (!types) { + // clear all listeners if called without arguments + delete this._events; + + } else if (typeof types === 'object') { + for (var type in types) { + this._off(type, types[type], fn); + } + + } else { + types = L.Util.splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._off(types[i], fn, context); + } + } + + return this; + }, + + // attach listener (without syntactic sugar now) + _on: function (type, fn, context) { + + var events = this._events = this._events || {}, + contextId = context && context !== this && L.stamp(context); + + if (contextId) { + // store listeners with custom context in a separate hash (if it has an id); + // gives a major performance boost when firing and removing events (e.g. on map object) + + var indexKey = type + '_idx', + indexLenKey = type + '_len', + typeIndex = events[indexKey] = events[indexKey] || {}, + id = L.stamp(fn) + '_' + contextId; + + if (!typeIndex[id]) { + typeIndex[id] = {fn: fn, ctx: context}; + + // keep track of the number of keys in the index to quickly check if it's empty + events[indexLenKey] = (events[indexLenKey] || 0) + 1; + } + + } else { + // individual layers mostly use "this" for context and don't fire listeners too often + // so simple array makes the memory footprint better while not degrading performance + + events[type] = events[type] || []; + events[type].push({fn: fn}); + } + }, + + _off: function (type, fn, context) { + var events = this._events, + indexKey = type + '_idx', + indexLenKey = type + '_len'; + + if (!events) { return; } + + if (!fn) { + // clear all listeners for a type if function isn't specified + delete events[type]; + delete events[indexKey]; + delete events[indexLenKey]; + return; + } + + var contextId = context && context !== this && L.stamp(context), + listeners, i, len, listener, id; + + if (contextId) { + id = L.stamp(fn) + '_' + contextId; + listeners = events[indexKey]; + + if (listeners && listeners[id]) { + listener = listeners[id]; + delete listeners[id]; + events[indexLenKey]--; + } + + } else { + listeners = events[type]; + + if (listeners) { + for (i = 0, len = listeners.length; i < len; i++) { + if (listeners[i].fn === fn) { + listener = listeners[i]; + listeners.splice(i, 1); + break; + } + } + } + } + + // set the removed listener to noop so that's not called if remove happens in fire + if (listener) { + listener.fn = L.Util.falseFn; + } + }, + + fire: function (type, data, propagate) { + if (!this.listens(type, propagate)) { return this; } + + var event = L.Util.extend({}, data, {type: type, target: this}), + events = this._events; + + if (events) { + var typeIndex = events[type + '_idx'], + i, len, listeners, id; + + 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].fn.call(this, event); + } + } + + // fire event for the context-indexed listeners as well + for (id in typeIndex) { + typeIndex[id].fn.call(typeIndex[id].ctx, event); + } + } + + if (propagate) { + // propagate the event to parents (set with addEventParent) + this._propagateEvent(event); + } + + return this; + }, + + listens: function (type, propagate) { + var events = this._events; + + if (events && (events[type] || events[type + '_len'])) { return true; } + + if (propagate) { + // also check parents for listeners if event propagates + for (var id in this._eventParents) { + if (this._eventParents[id].listens(type, propagate)) { return true; } + } + } + return false; + }, + + once: function (types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this.once(type, types[type], fn); + } + return this; + } + + var handler = L.bind(function () { + this + .off(types, fn, context) + .off(types, handler, context); + }, this); + + // add a listener that's executed once and removed after that + return this + .on(types, fn, context) + .on(types, handler, context); + }, + + // adds a parent to propagate events to (when you fire with true as a 3rd argument) + addEventParent: function (obj) { + this._eventParents = this._eventParents || {}; + this._eventParents[L.stamp(obj)] = obj; + return this; + }, + + removeEventParent: function (obj) { + if (this._eventParents) { + delete this._eventParents[L.stamp(obj)]; + } + return this; + }, + + _propagateEvent: function (e) { + for (var id in this._eventParents) { + this._eventParents[id].fire(e.type, L.extend({layer: e.target}, e), true); + } + } +}); + +var proto = L.Evented.prototype; + +// aliases; we should ditch those eventually +proto.addEventListener = proto.on; +proto.removeEventListener = proto.clearAllEventListeners = proto.off; +proto.addOneTimeEventListener = proto.once; +proto.fireEvent = proto.fire; +proto.hasEventListeners = proto.listens; + +L.Mixin = {Events: proto}; + + +/* + * L.Browser handles different browser and feature detections for internal Leaflet use. + */ + +(function () { + + var ua = navigator.userAgent.toLowerCase(), + doc = document.documentElement, + + ie = 'ActiveXObject' in window, + + webkit = ua.indexOf('webkit') !== -1, + phantomjs = ua.indexOf('phantom') !== -1, + android23 = ua.search('android [23]') !== -1, + chrome = ua.indexOf('chrome') !== -1, + gecko = ua.indexOf('gecko') !== -1 && !webkit && !window.opera && !ie, + + mobile = typeof orientation !== 'undefined' || ua.indexOf('mobile') !== -1, + msPointer = navigator.msPointerEnabled && navigator.msMaxTouchPoints && !window.PointerEvent, + pointer = (window.PointerEvent && navigator.pointerEnabled && navigator.maxTouchPoints) || msPointer, + + ie3d = ie && ('transition' in doc.style), + webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23, + gecko3d = 'MozPerspective' in doc.style, + opera12 = 'OTransition' in doc.style; + + var touch = !window.L_NO_TOUCH && !phantomjs && (pointer || 'ontouchstart' in window || + (window.DocumentTouch && document instanceof window.DocumentTouch)); + + L.Browser = { + ie: ie, + ielt9: ie && !document.addEventListener, + webkit: webkit, + gecko: gecko, + android: ua.indexOf('android') !== -1, + android23: android23, + chrome: chrome, + safari: !chrome && ua.indexOf('safari') !== -1, + + ie3d: ie3d, + webkit3d: webkit3d, + gecko3d: gecko3d, + opera12: opera12, + any3d: !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d) && !opera12 && !phantomjs, + + mobile: mobile, + mobileWebkit: mobile && webkit, + mobileWebkit3d: mobile && webkit3d, + mobileOpera: mobile && window.opera, + mobileGecko: mobile && gecko, + + touch: !!touch, + msPointer: !!msPointer, + pointer: !!pointer, + + retina: (window.devicePixelRatio || (window.screen.deviceXDPI / window.screen.logicalXDPI)) > 1 + }; + +}()); + + +/* + * L.Point represents a point with x and y coordinates. + */ + +L.Point = function (x, y, 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; + }, + + scaleBy: function(point) { + return new L.Point(this.x * point.x, this.y * point.y); + }, + + unscaleBy: function(point) { + return new L.Point(this.x / point.x, this.y / point.y); + }, + + 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; + }, + + ceil: function () { + return this.clone()._ceil(); + }, + + _ceil: function () { + this.x = Math.ceil(this.x); + this.y = Math.ceil(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; + }, + + overlaps: function (bounds) { // (Bounds) -> Boolean + bounds = L.bounds(bounds); + + var min = this.min, + max = this.max, + min2 = bounds.min, + max2 = bounds.max, + xOverlaps = (max2.x > min.x) && (min2.x < max.x), + yOverlaps = (max2.y > min.y) && (min2.y < max.y); + + return xOverlaps && yOverlaps; + }, + + 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] || (el.currentStyle && 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; + }, + + create: function (tagName, className, container) { + + var el = document.createElement(tagName); + el.className = className; + + if (container) { + container.appendChild(el); + } + + return el; + }, + + remove: function (el) { + var parent = el.parentNode; + if (parent) { + parent.removeChild(el); + } + }, + + empty: function (el) { + while (el.firstChild) { + el.removeChild(el.firstChild); + } + }, + + toFront: function (el) { + el.parentNode.appendChild(el); + }, + + toBack: function (el) { + var parent = el.parentNode; + parent.insertBefore(el, parent.firstChild); + }, + + 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) { + L.DomUtil._setOpacityIE(el, value); + } + }, + + _setOpacityIE: function (el, value) { + 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; + }, + + setTransform: function (el, offset, scale) { + var pos = offset || new L.Point(0, 0); + + el.style[L.DomUtil.TRANSFORM] = + 'translate3d(' + pos.x + 'px,' + pos.y + 'px' + ',0)' + (scale ? ' scale(' + scale + ')' : ''); + }, + + setPosition: function (el, point) { // (HTMLElement, Point[, Boolean]) + + /*eslint-disable */ + el._leaflet_pos = point; + /*eslint-enable */ + + if (L.Browser.any3d) { + L.DomUtil.setTransform(el, 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 + + return el._leaflet_pos; + } +}; + + +(function () { + // 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 + + var transition = L.DomUtil.TRANSITION = L.DomUtil.testProp( + ['webkitTransition', 'transition', 'OTransition', 'MozTransition', 'msTransition']); + + L.DomUtil.TRANSITION_END = + transition === 'webkitTransition' || transition === 'OTransition' ? transition + 'End' : 'transitionend'; + + + if ('onselectstart' in document) { + L.DomUtil.disableTextSelection = function () { + L.DomEvent.on(window, 'selectstart', L.DomEvent.preventDefault); + }; + L.DomUtil.enableTextSelection = function () { + L.DomEvent.off(window, 'selectstart', L.DomEvent.preventDefault); + }; + + } else { + var userSelectProperty = L.DomUtil.testProp( + ['userSelect', 'WebkitUserSelect', 'OUserSelect', 'MozUserSelect', 'msUserSelect']); + + L.DomUtil.disableTextSelection = function () { + if (userSelectProperty) { + var style = document.documentElement.style; + this._userSelect = style[userSelectProperty]; + style[userSelectProperty] = 'none'; + } + }; + L.DomUtil.enableTextSelection = function () { + if (userSelectProperty) { + document.documentElement.style[userSelectProperty] = this._userSelect; + delete this._userSelect; + } + }; + } + + L.DomUtil.disableImageDrag = function () { + L.DomEvent.on(window, 'dragstart', L.DomEvent.preventDefault); + }; + L.DomUtil.enableImageDrag = function () { + L.DomEvent.off(window, 'dragstart', L.DomEvent.preventDefault); + }; + + L.DomUtil.preventOutline = function (element) { + while (element.tabIndex === -1) { + element = element.parentNode; + } + if (!element) { return; } + L.DomUtil.restoreOutline(); + this._outlineElement = element; + this._outlineStyle = element.style.outline; + element.style.outline = 'none'; + L.DomEvent.on(window, 'keydown', L.DomUtil.restoreOutline, this); + }; + L.DomUtil.restoreOutline = function () { + if (!this._outlineElement) { return; } + this._outlineElement.style.outline = this._outlineStyle; + delete this._outlineElement; + delete this._outlineStyle; + L.DomEvent.off(window, 'keydown', L.DomUtil.restoreOutline, this); + }; +})(); + + +/* + * L.LatLng represents a geographical point with latitude and longitude coordinates. + */ + +L.LatLng = function (lat, lng, alt) { + if (isNaN(lat) || isNaN(lng)) { + throw new Error('Invalid LatLng object: (' + lat + ', ' + lng + ')'); + } + + this.lat = +lat; + this.lng = +lng; + + if (alt !== undefined) { + this.alt = +alt; + } +}; + +L.LatLng.prototype = { + equals: function (obj, maxMargin) { + 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 <= (maxMargin === undefined ? 1.0E-9 : maxMargin); + }, + + toString: function (precision) { + return 'LatLng(' + + L.Util.formatNum(this.lat, precision) + ', ' + + L.Util.formatNum(this.lng, precision) + ')'; + }, + + distanceTo: function (other) { + return L.CRS.Earth.distance(this, L.latLng(other)); + }, + + wrap: function () { + return L.CRS.Earth.wrapLatLng(this); + }, + + toBounds: function (sizeInMeters) { + var latAccuracy = 180 * sizeInMeters / 40075017, + lngAccuracy = latAccuracy / Math.cos((Math.PI / 180) * this.lat); + + return L.latLngBounds( + [this.lat - latAccuracy, this.lng - lngAccuracy], + [this.lat + latAccuracy, this.lng + lngAccuracy]); + }, + + clone: function () { + return new L.LatLng(this.lat, this.lng, this.alt); + } +}; + + +// constructs LatLng with different signatures +// (LatLng) or ([Number, Number]) or (Number, Number) or (Object) + +L.latLng = function (a, b, c) { + if (a instanceof L.LatLng) { + return a; + } + if (L.Util.isArray(a) && typeof a[0] !== 'object') { + if (a.length === 3) { + return new L.LatLng(a[0], a[1], a[2]); + } + if (a.length === 2) { + return new L.LatLng(a[0], a[1]); + } + 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, a.alt); + } + if (b === undefined) { + return null; + } + return new L.LatLng(a, b, c); +}; + + +/* + * 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) + var sw = this._southWest, + ne = this._northEast, + sw2, ne2; + + if (obj instanceof L.LatLng) { + sw2 = obj; + ne2 = obj; + + } else if (obj instanceof L.LatLngBounds) { + sw2 = obj._southWest; + ne2 = obj._northEast; + + if (!sw2 || !ne2) { return this; } + + } else { + return obj ? this.extend(L.latLng(obj) || L.latLngBounds(obj)) : this; + } + + if (!sw && !ne) { + this._southWest = new L.LatLng(sw2.lat, sw2.lng); + this._northEast = new L.LatLng(ne2.lat, ne2.lng); + } else { + sw.lat = Math.min(sw2.lat, sw.lat); + sw.lng = Math.min(sw2.lng, sw.lng); + ne.lat = Math.max(ne2.lat, ne.lat); + ne.lng = Math.max(ne2.lng, ne.lng); + } + + 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) -> Boolean + 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; + }, + + overlaps: function (bounds) { // (LatLngBounds) -> Boolean + bounds = L.latLngBounds(bounds); + + var sw = this._southWest, + ne = this._northEast, + sw2 = bounds.getSouthWest(), + ne2 = bounds.getNorthEast(), + + latOverlaps = (ne2.lat > sw.lat) && (sw2.lat < ne.lat), + lngOverlaps = (ne2.lng > sw.lng) && (sw2.lng < ne.lng); + + return latOverlaps && lngOverlaps; + }, + + 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); +}; + + +/* + * Simple equirectangular (Plate Carree) projection, used by CRS like EPSG:4326 and Simple. + */ + +L.Projection = {}; + +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); + }, + + bounds: L.bounds([-180, -90], [180, 90]) +}; + + +/* + * Spherical Mercator is the most popular map projection, used by EPSG:3857 CRS used by default. + */ + +L.Projection.SphericalMercator = { + + R: 6378137, + + project: function (latlng) { + var d = Math.PI / 180, + max = 1 - 1E-15, + sin = Math.max(Math.min(Math.sin(latlng.lat * d), max), -max); + + return new L.Point( + this.R * latlng.lng * d, + this.R * Math.log((1 + sin) / (1 - sin)) / 2); + }, + + unproject: function (point) { + var d = 180 / Math.PI; + + return new L.LatLng( + (2 * Math.atan(Math.exp(point.y / this.R)) - (Math.PI / 2)) * d, + point.x * d / this.R); + }, + + bounds: (function () { + var d = 6378137 * Math.PI; + return L.bounds([-d, -d], [d, d]); + })() +}; + + +/* + * L.CRS is the base object for all defined CRS (Coordinate Reference Systems) in Leaflet. + */ + +L.CRS = { + // converts geo coords to pixel ones + latLngToPoint: function (latlng, zoom) { + var projectedPoint = this.projection.project(latlng), + scale = this.scale(zoom); + + return this.transformation._transform(projectedPoint, scale); + }, + + // converts pixel coords to geo coords + pointToLatLng: function (point, zoom) { + var scale = this.scale(zoom), + untransformedPoint = this.transformation.untransform(point, scale); + + return this.projection.unproject(untransformedPoint); + }, + + // converts geo coords to projection-specific coords (e.g. in meters) + project: function (latlng) { + return this.projection.project(latlng); + }, + + // converts projected coords to geo coords + unproject: function (point) { + return this.projection.unproject(point); + }, + + // defines how the world scales with zoom + scale: function (zoom) { + return 256 * Math.pow(2, zoom); + }, + + // returns the bounds of the world in projected coords if applicable + getProjectedBounds: function (zoom) { + if (this.infinite) { return null; } + + var b = this.projection.bounds, + s = this.scale(zoom), + min = this.transformation.transform(b.min, s), + max = this.transformation.transform(b.max, s); + + return L.bounds(min, max); + }, + + // whether a coordinate axis wraps in a given range (e.g. longitude from -180 to 180); depends on CRS + // wrapLng: [min, max], + // wrapLat: [min, max], + + // if true, the coordinate space will be unbounded (infinite in all directions) + // infinite: false, + + // wraps geo coords in certain ranges if applicable + wrapLatLng: function (latlng) { + var lng = this.wrapLng ? L.Util.wrapNum(latlng.lng, this.wrapLng, true) : latlng.lng, + lat = this.wrapLat ? L.Util.wrapNum(latlng.lat, this.wrapLat, true) : latlng.lat, + alt = latlng.alt; + + return L.latLng(lat, lng, alt); + } +}; + + +/* + * 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); + }, + + distance: function (latlng1, latlng2) { + var dx = latlng2.lng - latlng1.lng, + dy = latlng2.lat - latlng1.lat; + + return Math.sqrt(dx * dx + dy * dy); + }, + + infinite: true +}); + + +/* + * L.CRS.Earth is the base class for all CRS representing Earth. + */ + +L.CRS.Earth = L.extend({}, L.CRS, { + wrapLng: [-180, 180], + + R: 6378137, + + // distance between two geographical points using spherical law of cosines approximation + distance: function (latlng1, latlng2) { + var rad = Math.PI / 180, + lat1 = latlng1.lat * rad, + lat2 = latlng2.lat * rad, + a = Math.sin(lat1) * Math.sin(lat2) + + Math.cos(lat1) * Math.cos(lat2) * Math.cos((latlng2.lng - latlng1.lng) * rad); + + return this.R * Math.acos(Math.min(a, 1)); + } +}); + + +/* + * 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.Earth, { + code: 'EPSG:3857', + projection: L.Projection.SphericalMercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * L.Projection.SphericalMercator.R); + return new L.Transformation(scale, 0.5, -scale, 0.5); + }()) +}); + +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.Earth, { + code: 'EPSG:4326', + projection: L.Projection.LonLat, + transformation: new L.Transformation(1 / 180, 1, -1 / 180, 0.5) +}); + + +/* + * L.Map is the central class of the API - it is used to create a map. + */ + +L.Map = L.Evented.extend({ + + options: { + crs: L.CRS.EPSG3857, + + /* + center: LatLng, + zoom: Number, + layers: Array, + */ + + fadeAnimation: true, + trackResize: true, + markerZoomAnimation: true, + maxBoundsViscosity: 0.0 + }, + + 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.zoom !== undefined) { + this._zoom = this._limitZoom(options.zoom); + } + + if (options.center && options.zoom !== undefined) { + this.setView(L.latLng(options.center), options.zoom, {reset: true}); + } + + this._handlers = []; + this._layers = {}; + this._zoomBoundLayers = {}; + this._sizeChanged = true; + + this.callInitHooks(); + + this._addLayers(this.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), zoom); + return this; + }, + + setZoom: function (zoom, options) { + if (!this._loaded) { + this._zoom = 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}); + }, + + _getBoundsCenterZoom: 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 { + center: center, + zoom: zoom + }; + }, + + fitBounds: function (bounds, options) { + var target = this._getBoundsCenterZoom(bounds, options); + return this.setView(target.center, target.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); + + if (!bounds) { + return this.off('moveend', this._panInsideMaxBounds); + } else if (this.options.maxBounds) { + this.off('moveend', this._panInsideMaxBounds); + } + + this.options.maxBounds = bounds; + + if (this._loaded) { + this._panInsideMaxBounds(); + } + + return this.on('moveend', this._panInsideMaxBounds); + }, + + setMinZoom: function (zoom) { + this.options.minZoom = zoom; + + if (this._loaded && this.getZoom() < this.options.minZoom) { + return this.setZoom(zoom); + } + + return this; + }, + + setMaxZoom: function (zoom) { + this.options.maxZoom = zoom; + + if (this._loaded && (this.getZoom() > this.options.maxZoom)) { + return this.setZoom(zoom); + } + + return this; + }, + + panInsideBounds: function (bounds, options) { + var center = this.getCenter(), + newCenter = this._limitCenter(center, this._zoom, L.latLngBounds(bounds)); + + if (center.equals(newCenter)) { return this; } + + return this.panTo(newCenter, options); + }, + + 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._lastCenter = 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 + }); + }, + + stop: function () { + L.Util.cancelAnimFrame(this._flyToFrame); + if (this._panAnim) { + this._panAnim.stop(); + } + return this; + }, + + // 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 () { + + this._initEvents(true); + + try { + // throws error in IE6-8 + delete this._container._leaflet; + } catch (e) { + this._container._leaflet = undefined; + } + + L.DomUtil.remove(this._mapPane); + + if (this._clearControlPos) { + this._clearControlPos(); + } + + this._clearHandlers(); + + if (this._loaded) { + this.fire('unload'); + } + + for (var i in this._layers) { + this._layers[i].remove(); + } + + return this; + }, + + createPane: function (name, container) { + var className = 'leaflet-pane' + (name ? ' leaflet-' + name.replace('Pane', '') + '-pane' : ''), + pane = L.DomUtil.create('div', className, container || this._mapPane); + + if (name) { + this._panes[name] = pane; + } + return pane; + }, + + + // public methods for getting map state + + getCenter: function () { // (Boolean) -> LatLng + this._checkIfLoaded(); + + if (this._lastCenter && !this._moved()) { + return this._lastCenter; + } + 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 || 0 : 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).floor(); + 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 (center, zoom) { + var topLeftPoint = this._getTopLeftPoint(center, zoom); + return new L.Bounds(topLeftPoint, topLeftPoint.add(this.getSize())); + }, + + getPixelOrigin: function () { + this._checkIfLoaded(); + return this._pixelOrigin; + }, + + getPixelWorldBounds: function (zoom) { + return this.options.crs.getProjectedBounds(zoom === undefined ? this.getZoom() : zoom); + }, + + getPane: function (pane) { + return typeof pane === 'string' ? this._panes[pane] : pane; + }, + + getPanes: function () { + return this._panes; + }, + + getContainer: function () { + return this._container; + }, + + + // TODO replace with universal implementation after refactoring projections + + getZoomScale: function (toZoom, fromZoom) { + var crs = this.options.crs; + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + return crs.scale(toZoom) / crs.scale(fromZoom); + }, + + getScaleZoom: function (scale, fromZoom) { + fromZoom = fromZoom === undefined ? this._zoom : fromZoom; + return fromZoom + (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()); + }, + + wrapLatLng: function (latlng) { + return this.options.crs.wrapLatLng(L.latLng(latlng)); + }, + + distance: function (latlng1, latlng2) { + return this.options.crs.distance(L.latLng(latlng1), L.latLng(latlng2)); + }, + + 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.'); + } + + L.DomEvent.addListener(container, 'scroll', this._onScroll, this); + container._leaflet = true; + }, + + _initLayout: function () { + var container = this._container; + + this._fadeAnimated = this.options.fadeAnimation && L.Browser.any3d; + + L.DomUtil.addClass(container, 'leaflet-container' + + (L.Browser.touch ? ' leaflet-touch' : '') + + (L.Browser.retina ? ' leaflet-retina' : '') + + (L.Browser.ielt9 ? ' leaflet-oldie' : '') + + (L.Browser.safari ? ' leaflet-safari' : '') + + (this._fadeAnimated ? ' 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._paneRenderers = {}; + + this._mapPane = this.createPane('mapPane', this._container); + L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0)); + + this.createPane('tilePane'); + this.createPane('shadowPane'); + this.createPane('overlayPane'); + this.createPane('markerPane'); + this.createPane('popupPane'); + + if (!this.options.markerZoomAnimation) { + L.DomUtil.addClass(panes.markerPane, 'leaflet-zoom-hide'); + L.DomUtil.addClass(panes.shadowPane, 'leaflet-zoom-hide'); + } + }, + + + // private methods that modify map state + + _resetView: function (center, zoom) { + L.DomUtil.setPosition(this._mapPane, new L.Point(0, 0)); + + var loading = !this._loaded; + this._loaded = true; + zoom = this._limitZoom(zoom); + + var zoomChanged = this._zoom !== zoom; + this + ._moveStart(zoomChanged) + ._move(center, zoom) + ._moveEnd(zoomChanged); + + this.fire('viewreset'); + + if (loading) { + this.fire('load'); + } + }, + + _moveStart: function (zoomChanged) { + if (zoomChanged) { + this.fire('zoomstart'); + } + return this.fire('movestart'); + }, + + _move: function (center, zoom, data) { + if (zoom === undefined) { + zoom = this._zoom; + } + + var zoomChanged = this._zoom !== zoom; + + this._zoom = zoom; + this._lastCenter = center; + this._pixelOrigin = this._getNewPixelOrigin(center); + + if (zoomChanged) { + this.fire('zoom', data); + } + return this.fire('move', data); + }, + + _moveEnd: function (zoomChanged) { + if (zoomChanged) { + this.fire('zoomend'); + } + return this.fire('moveend'); + }, + + _rawPanBy: function (offset) { + L.DomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(offset)); + }, + + _getZoomSpan: function () { + return this.getMaxZoom() - this.getMinZoom(); + }, + + _panInsideMaxBounds: function () { + this.panInsideBounds(this.options.maxBounds); + }, + + _checkIfLoaded: function () { + if (!this._loaded) { + throw new Error('Set map center and zoom first.'); + } + }, + + // DOM event handling + + _initEvents: function (remove) { + if (!L.DomEvent) { return; } + + this._targets = {}; + this._targets[L.stamp(this._container)] = this; + + var onOff = remove ? 'off' : 'on'; + + L.DomEvent[onOff](this._container, 'click dblclick mousedown mouseup ' + + 'mouseover mouseout mousemove contextmenu keypress', this._handleDOMEvent, 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); + }, + + _onScroll: function () { + this._container.scrollTop = 0; + this._container.scrollLeft = 0; + }, + + _findEventTargets: function (src, type, bubble) { + var targets = [], target; + while (src) { + target = this._targets[L.stamp(src)]; + if (target && target.listens(type, true)) { + targets.push(target); + if (!bubble) { break; } + } + if (src === this._container) { + break; + } + src = src.parentNode; + } + return targets; + }, + + _handleDOMEvent: function (e) { + if (!this._loaded || L.DomEvent._skipped(e)) { return; } + + // find the layer the event is propagating from and its parents + var type = e.type === 'keypress' && e.keyCode === 13 ? 'click' : e.type; + + if (e.type === 'click') { + // Fire a synthetic 'preclick' event which propagates up (mainly for closing popups). + var synth = L.Util.extend({}, e); + synth.type = 'preclick'; + this._handleDOMEvent(synth); + } + + if (type === 'mousedown') { + // prevents outline when clicking on keyboard-focusable element + L.DomUtil.preventOutline(e.target || e.srcElement); + } + + this._fireDOMEvent(e, type); + }, + + _fireDOMEvent: function (e, type, targets) { + + if (type === 'contextmenu') { + L.DomEvent.preventDefault(e); + } + + var isHover = type === 'mouseover' || type === 'mouseout'; + targets = (targets || []).concat(this._findEventTargets(e.target || e.srcElement, type, !isHover)); + + if (!targets.length) { + targets = [this]; + + // special case for map mouseover/mouseout events so that they're actually mouseenter/mouseleave + if (isHover && !L.DomEvent._checkMouse(this._container, e)) { return; } + } + + var target = targets[0]; + + // prevents firing click after you just dragged an object + if (e.type === 'click' && !e._simulated && this._draggableMoved(target)) { return; } + + var data = { + originalEvent: e + }; + + if (e.type !== 'keypress') { + var isMarker = target instanceof L.Marker; + data.containerPoint = isMarker ? + this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e); + data.layerPoint = this.containerPointToLayerPoint(data.containerPoint); + data.latlng = isMarker ? target.getLatLng() : this.layerPointToLatLng(data.layerPoint); + } + + for (var i = 0; i < targets.length; i++) { + targets[i].fire(type, data, true); + if (data.originalEvent._stopped + || (targets[i].options.nonBubblingEvents && L.Util.indexOf(targets[i].options.nonBubblingEvents, type) !== -1)) { return; } + } + }, + + _draggableMoved: function (obj) { + obj = obj.options.draggable ? obj : this; + return (obj.dragging && obj.dragging.moved()) || (this.boxZoom && this.boxZoom.moved()); + }, + + _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, {target: this}); + } else { + this.on('load', callback, context); + } + return this; + }, + + + // private methods for getting map state + + _getMapPanePos: function () { + return L.DomUtil.getPosition(this._mapPane) || new L.Point(0, 0); + }, + + _moved: function () { + var pos = this._getMapPanePos(); + return pos && !pos.equals([0, 0]); + }, + + _getTopLeftPoint: function (center, zoom) { + var pixelOrigin = center && zoom !== undefined ? + this._getNewPixelOrigin(center, zoom) : + this.getPixelOrigin(); + return pixelOrigin.subtract(this._getMapPanePos()); + }, + + _getNewPixelOrigin: function (center, zoom) { + var viewHalf = this.getSize()._divideBy(2); + return this.project(center, zoom)._subtract(viewHalf)._add(this._getMapPanePos())._round(); + }, + + _latLngToNewLayerPoint: function (latlng, zoom, center) { + var topLeft = this._getNewPixelOrigin(center, zoom); + return this.project(latlng, zoom)._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(); + if (!L.Browser.any3d) { zoom = Math.round(zoom); } + + return Math.max(min, Math.min(max, zoom)); + } +}); + +L.map = function (id, options) { + return new L.Map(id, options); +}; + + + +L.Layer = L.Evented.extend({ + + options: { + pane: 'overlayPane', + nonBubblingEvents: [] // Array of events that should not be bubbled to DOM parents (like the map) + }, + + addTo: function (map) { + map.addLayer(this); + return this; + }, + + remove: function () { + return this.removeFrom(this._map || this._mapToAdd); + }, + + removeFrom: function (obj) { + if (obj) { + obj.removeLayer(this); + } + return this; + }, + + getPane: function (name) { + return this._map.getPane(name ? (this.options[name] || name) : this.options.pane); + }, + + addInteractiveTarget: function (targetEl) { + this._map._targets[L.stamp(targetEl)] = this; + return this; + }, + + removeInteractiveTarget: function (targetEl) { + delete this._map._targets[L.stamp(targetEl)]; + return this; + }, + + isPopupOpen: function() { + return this._popup.isOpen(); + }, + + _layerAdd: function (e) { + var map = e.target; + + // check in case layer gets added and then removed before the map is ready + if (!map.hasLayer(this)) { return; } + + this._map = map; + this._zoomAnimated = map._zoomAnimated; + + this.onAdd(map); + + if (this.getAttribution && this._map.attributionControl) { + this._map.attributionControl.addAttribution(this.getAttribution()); + } + + if (this.getEvents) { + map.on(this.getEvents(), this); + } + + this.fire('add'); + map.fire('layeradd', {layer: this}); + } +}); + + +L.Map.include({ + addLayer: function (layer) { + var id = L.stamp(layer); + if (this._layers[id]) { return layer; } + this._layers[id] = layer; + + layer._mapToAdd = this; + + if (layer.beforeAdd) { + layer.beforeAdd(this); + } + + this.whenReady(layer._layerAdd, layer); + + return this; + }, + + removeLayer: function (layer) { + var id = L.stamp(layer); + + if (!this._layers[id]) { return this; } + + if (this._loaded) { + layer.onRemove(this); + } + + if (layer.getAttribution && this.attributionControl) { + this.attributionControl.removeAttribution(layer.getAttribution()); + } + + if (layer.getEvents) { + this.off(layer.getEvents(), layer); + } + + delete this._layers[id]; + + if (this._loaded) { + this.fire('layerremove', {layer: layer}); + layer.fire('remove'); + } + + layer._map = layer._mapToAdd = null; + + return this; + }, + + hasLayer: function (layer) { + return !!layer && (L.stamp(layer) in this._layers); + }, + + eachLayer: function (method, context) { + for (var i in this._layers) { + method.call(context, this._layers[i]); + } + return this; + }, + + _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]); + } + }, + + _addZoomLimit: function (layer) { + if (isNaN(layer.options.maxZoom) || !isNaN(layer.options.minZoom)) { + this._zoomBoundLayers[L.stamp(layer)] = layer; + this._updateZoomLevels(); + } + }, + + _removeZoomLimit: function (layer) { + var id = L.stamp(layer); + + if (this._zoomBoundLayers[id]) { + delete this._zoomBoundLayers[id]; + this._updateZoomLevels(); + } + }, + + _updateZoomLevels: function () { + var minZoom = Infinity, + maxZoom = -Infinity, + oldZoomSpan = this._getZoomSpan(); + + for (var i in this._zoomBoundLayers) { + var options = this._zoomBoundLayers[i].options; + + minZoom = options.minZoom === undefined ? minZoom : Math.min(minZoom, options.minZoom); + maxZoom = options.maxZoom === undefined ? maxZoom : Math.max(maxZoom, options.maxZoom); + } + + this._layersMaxZoom = maxZoom === -Infinity ? undefined : maxZoom; + this._layersMinZoom = minZoom === Infinity ? undefined : minZoom; + + if (oldZoomSpan !== this._getZoomSpan()) { + this.fire('zoomlevelschange'); + } + } +}); + + +/* + * 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 = { + R: 6378137, + R_MINOR: 6356752.314245179, + + bounds: L.bounds([-20037508.34279, -15496570.73972], [20037508.34279, 18764656.23138]), + + project: function (latlng) { + var d = Math.PI / 180, + r = this.R, + y = latlng.lat * d, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + con = e * Math.sin(y); + + var ts = Math.tan(Math.PI / 4 - y / 2) / Math.pow((1 - con) / (1 + con), e / 2); + y = -r * Math.log(Math.max(ts, 1E-10)); + + return new L.Point(latlng.lng * d * r, y); + }, + + unproject: function (point) { + var d = 180 / Math.PI, + r = this.R, + tmp = this.R_MINOR / r, + e = Math.sqrt(1 - tmp * tmp), + ts = Math.exp(-point.y / r), + phi = Math.PI / 2 - 2 * Math.atan(ts); + + for (var i = 0, dphi = 0.1, con; i < 15 && Math.abs(dphi) > 1e-7; i++) { + con = e * Math.sin(phi); + con = Math.pow((1 - con) / (1 + con), e / 2); + dphi = Math.PI / 2 - 2 * Math.atan(ts * con) - phi; + phi += dphi; + } + + return new L.LatLng(phi * d, point.x * d / r); + } +}; + + +/* + * L.CRS.EPSG3857 (World Mercator) CRS implementation. + */ + +L.CRS.EPSG3395 = L.extend({}, L.CRS.Earth, { + code: 'EPSG:3395', + projection: L.Projection.Mercator, + + transformation: (function () { + var scale = 0.5 / (Math.PI * L.Projection.Mercator.R); + return new L.Transformation(scale, 0.5, -scale, 0.5); + }()) +}); + + +/* + * L.GridLayer is used as base class for grid-like layers like TileLayer. + */ + +L.GridLayer = L.Layer.extend({ + + options: { + pane: 'tilePane', + + tileSize: 256, + opacity: 1, + + updateWhenIdle: L.Browser.mobile, + updateInterval: 200, + + attribution: null, + zIndex: null, + bounds: null, + + minZoom: 0 + // maxZoom: + }, + + initialize: function (options) { + options = L.setOptions(this, options); + }, + + onAdd: function () { + this._initContainer(); + + this._levels = {}; + this._tiles = {}; + + this._resetView(); + this._update(); + }, + + beforeAdd: function (map) { + map._addZoomLimit(this); + }, + + onRemove: function (map) { + L.DomUtil.remove(this._container); + map._removeZoomLimit(this); + this._container = null; + this._tileZoom = null; + }, + + bringToFront: function () { + if (this._map) { + L.DomUtil.toFront(this._container); + this._setAutoZIndex(Math.max); + } + return this; + }, + + bringToBack: function () { + if (this._map) { + L.DomUtil.toBack(this._container); + this._setAutoZIndex(Math.min); + } + return this; + }, + + getAttribution: function () { + return this.options.attribution; + }, + + getContainer: function () { + return this._container; + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + this._updateOpacity(); + return this; + }, + + setZIndex: function (zIndex) { + this.options.zIndex = zIndex; + this._updateZIndex(); + + return this; + }, + + isLoading: function () { + return this._loading; + }, + + redraw: function () { + if (this._map) { + this._removeAllTiles(); + this._update(); + } + return this; + }, + + getEvents: function () { + var events = { + viewreset: this._resetAll, + zoom: this._resetView, + moveend: this._onMoveEnd + }; + + if (!this.options.updateWhenIdle) { + // update tiles on move, but not more often than once per given interval + if (!this._onMove) { + this._onMove = L.Util.throttle(this._onMoveEnd, this.options.updateInterval, this); + } + + events.move = this._onMove; + } + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + createTile: function () { + return document.createElement('div'); + }, + + getTileSize: function () { + var s = this.options.tileSize; + return s instanceof L.Point ? s : new L.Point(s, s); + }, + + _updateZIndex: function () { + if (this._container && this.options.zIndex !== undefined && this.options.zIndex !== null) { + this._container.style.zIndex = this.options.zIndex; + } + }, + + _setAutoZIndex: function (compare) { + // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back) + + var layers = this.getPane().children, + edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min + + for (var i = 0, len = layers.length, zIndex; i < len; i++) { + + zIndex = layers[i].style.zIndex; + + if (layers[i] !== this._container && zIndex) { + edgeZIndex = compare(edgeZIndex, +zIndex); + } + } + + if (isFinite(edgeZIndex)) { + this.options.zIndex = edgeZIndex + compare(-1, 1); + this._updateZIndex(); + } + }, + + _updateOpacity: function () { + if (!this._map) { return; } + var opacity = this.options.opacity; + + // IE doesn't inherit filter opacity properly, so we're forced to set it on tiles + if (!L.Browser.ielt9 && !this._map._fadeAnimated) { + L.DomUtil.setOpacity(this._container, opacity); + return; + } + + var now = +new Date(), + nextFrame = false, + willPrune = false; + + for (var key in this._tiles) { + var tile = this._tiles[key]; + if (!tile.current || !tile.loaded) { continue; } + + var fade = Math.min(1, (now - tile.loaded) / 200); + if (fade < 1) { + L.DomUtil.setOpacity(tile.el, opacity * fade); + nextFrame = true; + } else { + L.DomUtil.setOpacity(tile.el, opacity); + if (tile.active) { willPrune = true; } + tile.active = true; + } + } + + if (willPrune) { this._pruneTiles(); } + + if (nextFrame) { + L.Util.cancelAnimFrame(this._fadeFrame); + this._fadeFrame = L.Util.requestAnimFrame(this._updateOpacity, this); + } + }, + + _initContainer: function () { + if (this._container) { return; } + + this._container = L.DomUtil.create('div', 'leaflet-layer'); + this._updateZIndex(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + + this.getPane().appendChild(this._container); + }, + + _updateLevels: function () { + + var zoom = this._tileZoom, + maxZoom = this.options.maxZoom; + + for (var z in this._levels) { + if (this._levels[z].el.children.length || z === zoom) { + this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); + } else { + L.DomUtil.remove(this._levels[z].el); + delete this._levels[z]; + } + } + + var level = this._levels[zoom], + map = this._map; + + if (!level) { + level = this._levels[zoom] = {}; + + level.el = L.DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container); + level.el.style.zIndex = maxZoom; + + level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round(); + level.zoom = zoom; + + this._setZoomTransform(level, map.getCenter(), map.getZoom()); + + // force the browser to consider the newly added element for transition + L.Util.falseFn(level.el.offsetWidth); + } + + this._level = level; + + return level; + }, + + _pruneTiles: function () { + var key, tile; + + var zoom = this._map.getZoom(); + if (zoom > this.options.maxZoom || + zoom < this.options.minZoom) { return this._removeAllTiles(); } + + for (key in this._tiles) { + tile = this._tiles[key]; + tile.retain = tile.current; + } + + for (key in this._tiles) { + tile = this._tiles[key]; + if (tile.current && !tile.active) { + var coords = tile.coords; + if (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) { + this._retainChildren(coords.x, coords.y, coords.z, coords.z + 2); + } + } + } + + for (key in this._tiles) { + if (!this._tiles[key].retain) { + this._removeTile(key); + } + } + }, + + _removeAllTiles: function () { + for (var key in this._tiles) { + this._removeTile(key); + } + }, + + _resetAll: function () { + for (var z in this._levels) { + L.DomUtil.remove(this._levels[z].el); + delete this._levels[z]; + } + this._removeAllTiles(); + + this._tileZoom = null; + this._resetView(); + }, + + _retainParent: function (x, y, z, minZoom) { + var x2 = Math.floor(x / 2), + y2 = Math.floor(y / 2), + z2 = z - 1; + + var key = x2 + ':' + y2 + ':' + z2, + tile = this._tiles[key]; + + if (tile && tile.active) { + tile.retain = true; + return true; + + } else if (tile && tile.loaded) { + tile.retain = true; + } + + if (z2 > minZoom) { + return this._retainParent(x2, y2, z2, minZoom); + } + + return false; + }, + + _retainChildren: function (x, y, z, maxZoom) { + + for (var i = 2 * x; i < 2 * x + 2; i++) { + for (var j = 2 * y; j < 2 * y + 2; j++) { + + var key = i + ':' + j + ':' + (z + 1), + tile = this._tiles[key]; + + if (tile && tile.active) { + tile.retain = true; + continue; + + } else if (tile && tile.loaded) { + tile.retain = true; + } + + if (z + 1 < maxZoom) { + this._retainChildren(i, j, z + 1, maxZoom); + } + } + } + }, + + _resetView: function (e) { + var pinch = e && e.pinch; + this._setView(this._map.getCenter(), this._map.getZoom(), pinch, pinch); + }, + + _animateZoom: function (e) { + this._setView(e.center, e.zoom, true, e.noUpdate); + }, + + _setView: function (center, zoom, noPrune, noUpdate) { + var tileZoom = Math.round(zoom), + tileZoomChanged = this._tileZoom !== tileZoom; + + if (!noUpdate && tileZoomChanged) { + + if (this._abortLoading) { + this._abortLoading(); + } + + this._tileZoom = tileZoom; + this._updateLevels(); + this._resetGrid(); + + if (!L.Browser.mobileWebkit) { + this._update(center, tileZoom); + } + + if (!noPrune) { + this._pruneTiles(); + } + } + + this._setZoomTransforms(center, zoom); + }, + + _setZoomTransforms: function (center, zoom) { + for (var i in this._levels) { + this._setZoomTransform(this._levels[i], center, zoom); + } + }, + + _setZoomTransform: function (level, center, zoom) { + var scale = this._map.getZoomScale(zoom, level.zoom), + translate = level.origin.multiplyBy(scale) + .subtract(this._map._getNewPixelOrigin(center, zoom)).round(); + + if (L.Browser.any3d) { + L.DomUtil.setTransform(level.el, translate, scale); + } else { + L.DomUtil.setPosition(level.el, translate); + } + }, + + _resetGrid: function () { + var map = this._map, + crs = map.options.crs, + tileSize = this._tileSize = this.getTileSize(), + tileZoom = this._tileZoom; + + var bounds = this._map.getPixelWorldBounds(this._tileZoom); + if (bounds) { + this._globalTileRange = this._pxBoundsToTileRange(bounds); + } + + this._wrapX = crs.wrapLng && [ + Math.floor(map.project([0, crs.wrapLng[0]], tileZoom).x / tileSize.x), + Math.ceil(map.project([0, crs.wrapLng[1]], tileZoom).x / tileSize.y) + ]; + this._wrapY = crs.wrapLat && [ + Math.floor(map.project([crs.wrapLat[0], 0], tileZoom).y / tileSize.x), + Math.ceil(map.project([crs.wrapLat[1], 0], tileZoom).y / tileSize.y) + ]; + }, + + _onMoveEnd: function () { + if (!this._map) { return; } + + this._update(); + this._pruneTiles(); + }, + + _getTiledPixelBounds: function (center, zoom, tileZoom) { + var map = this._map; + + var scale = map.getZoomScale(zoom, tileZoom), + pixelCenter = map.project(center, tileZoom).floor(), + halfSize = map.getSize().divideBy(scale * 2); + + return new L.Bounds(pixelCenter.subtract(halfSize), pixelCenter.add(halfSize)); + }, + + _update: function (center, zoom) { + + var map = this._map; + if (!map) { return; } + + if (center === undefined) { center = map.getCenter(); } + if (zoom === undefined) { zoom = map.getZoom(); } + var tileZoom = Math.round(zoom); + + if (tileZoom > this.options.maxZoom || + tileZoom < this.options.minZoom) { return; } + + var pixelBounds = this._getTiledPixelBounds(center, zoom, tileZoom); + + var tileRange = this._pxBoundsToTileRange(pixelBounds), + tileCenter = tileRange.getCenter(), + queue = []; + + for (var key in this._tiles) { + this._tiles[key].current = false; + } + + // create a queue of coordinates to load tiles from + for (var j = tileRange.min.y; j <= tileRange.max.y; j++) { + for (var i = tileRange.min.x; i <= tileRange.max.x; i++) { + var coords = new L.Point(i, j); + coords.z = tileZoom; + + if (!this._isValidTile(coords)) { continue; } + + var tile = this._tiles[this._tileCoordsToKey(coords)]; + if (tile) { + tile.current = true; + } else { + queue.push(coords); + } + } + } + + // sort tile queue to load tiles in order of their distance to center + queue.sort(function (a, b) { + return a.distanceTo(tileCenter) - b.distanceTo(tileCenter); + }); + + if (queue.length !== 0) { + // if its the first batch of tiles to load + if (!this._loading) { + this._loading = true; + this.fire('loading'); + } + + // create DOM fragment to append tiles in one batch + var fragment = document.createDocumentFragment(); + + for (i = 0; i < queue.length; i++) { + this._addTile(queue[i], fragment); + } + + this._level.el.appendChild(fragment); + } + }, + + _isValidTile: function (coords) { + var crs = this._map.options.crs; + + if (!crs.infinite) { + // don't load tile if it's out of bounds and not wrapped + var bounds = this._globalTileRange; + if ((!crs.wrapLng && (coords.x < bounds.min.x || coords.x > bounds.max.x)) || + (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))) { return false; } + } + + if (!this.options.bounds) { return true; } + + // don't load tile if it doesn't intersect the bounds in options + var tileBounds = this._tileCoordsToBounds(coords); + return L.latLngBounds(this.options.bounds).overlaps(tileBounds); + }, + + _keyToBounds: function (key) { + return this._tileCoordsToBounds(this._keyToTileCoords(key)); + }, + + // converts tile coordinates to its geographical bounds + _tileCoordsToBounds: function (coords) { + + var map = this._map, + tileSize = this.getTileSize(), + + nwPoint = coords.scaleBy(tileSize), + sePoint = nwPoint.add(tileSize), + + nw = map.wrapLatLng(map.unproject(nwPoint, coords.z)), + se = map.wrapLatLng(map.unproject(sePoint, coords.z)); + + return new L.LatLngBounds(nw, se); + }, + + // converts tile coordinates to key for the tile cache + _tileCoordsToKey: function (coords) { + return coords.x + ':' + coords.y + ':' + coords.z; + }, + + // converts tile cache key to coordinates + _keyToTileCoords: function (key) { + var k = key.split(':'), + coords = new L.Point(+k[0], +k[1]); + coords.z = +k[2]; + return coords; + }, + + _removeTile: function (key) { + var tile = this._tiles[key]; + if (!tile) { return; } + + L.DomUtil.remove(tile.el); + + delete this._tiles[key]; + + this.fire('tileunload', { + tile: tile.el, + coords: this._keyToTileCoords(key) + }); + }, + + _initTile: function (tile) { + L.DomUtil.addClass(tile, 'leaflet-tile'); + + var tileSize = this.getTileSize(); + tile.style.width = tileSize.x + 'px'; + tile.style.height = tileSize.y + 'px'; + + tile.onselectstart = L.Util.falseFn; + tile.onmousemove = L.Util.falseFn; + + // update opacity on tiles in IE7-8 because of filter inheritance problems + if (L.Browser.ielt9 && this.options.opacity < 1) { + 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.android && !L.Browser.android23) { + tile.style.WebkitBackfaceVisibility = 'hidden'; + } + }, + + _addTile: function (coords, container) { + var tilePos = this._getTilePos(coords), + key = this._tileCoordsToKey(coords); + + var tile = this.createTile(this._wrapCoords(coords), L.bind(this._tileReady, this, coords)); + + this._initTile(tile); + + // if createTile is defined with a second argument ("done" callback), + // we know that tile is async and will be ready later; otherwise + if (this.createTile.length < 2) { + // mark tile as ready, but delay one frame for opacity animation to happen + setTimeout(L.bind(this._tileReady, this, coords, null, tile), 0); + } + + // we prefer top/left over translate3d so that we don't create a HW-accelerated layer from each tile + // which is slow, and it also fixes gaps between tiles in Safari + L.DomUtil.setPosition(tile, tilePos); + + // save tile in cache + this._tiles[key] = { + el: tile, + coords: coords, + current: true + }; + + container.appendChild(tile); + this.fire('tileloadstart', { + tile: tile, + coords: coords + }); + }, + + _tileReady: function (coords, err, tile) { + if (!this._map) { return; } + + if (err) { + this.fire('tileerror', { + error: err, + tile: tile, + coords: coords + }); + } + + var key = this._tileCoordsToKey(coords); + + tile = this._tiles[key]; + if (!tile) { return; } + + tile.loaded = +new Date(); + if (this._map._fadeAnimated) { + L.DomUtil.setOpacity(tile.el, 0); + L.Util.cancelAnimFrame(this._fadeFrame); + this._fadeFrame = L.Util.requestAnimFrame(this._updateOpacity, this); + } else { + tile.active = true; + this._pruneTiles(); + } + + L.DomUtil.addClass(tile.el, 'leaflet-tile-loaded'); + + this.fire('tileload', { + tile: tile.el, + coords: coords + }); + + if (this._noTilesToLoad()) { + this._loading = false; + this.fire('load'); + } + }, + + _getTilePos: function (coords) { + return coords.scaleBy(this.getTileSize()).subtract(this._level.origin); + }, + + _wrapCoords: function (coords) { + var newCoords = new L.Point( + this._wrapX ? L.Util.wrapNum(coords.x, this._wrapX) : coords.x, + this._wrapY ? L.Util.wrapNum(coords.y, this._wrapY) : coords.y); + newCoords.z = coords.z; + return newCoords; + }, + + _pxBoundsToTileRange: function (bounds) { + var tileSize = this.getTileSize(); + return new L.Bounds( + bounds.min.unscaleBy(tileSize).floor(), + bounds.max.unscaleBy(tileSize).ceil().subtract([1, 1])); + }, + + _noTilesToLoad: function () { + for (var key in this._tiles) { + if (!this._tiles[key].loaded) { return false; } + } + return true; + } +}); + +L.gridLayer = function (options) { + return new L.GridLayer(options); +}; + + +/* + * L.TileLayer is used for standard xyz-numbered tile layers. + */ + +L.TileLayer = L.GridLayer.extend({ + + options: { + maxZoom: 18, + + subdomains: 'abc', + errorTileUrl: '', + zoomOffset: 0, + + maxNativeZoom: null, // Number + tms: false, + zoomReverse: false, + detectRetina: false, + crossOrigin: false + }, + + initialize: function (url, options) { + + this._url = url; + + 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++; + + options.minZoom = Math.max(0, options.minZoom); + options.maxZoom--; + } + + if (typeof options.subdomains === 'string') { + options.subdomains = options.subdomains.split(''); + } + + // for https://github.com/Leaflet/Leaflet/issues/137 + if (!L.Browser.android) { + this.on('tileunload', this._onTileRemove); + } + }, + + setUrl: function (url, noRedraw) { + this._url = url; + + if (!noRedraw) { + this.redraw(); + } + return this; + }, + + createTile: function (coords, done) { + var tile = document.createElement('img'); + + tile.onload = L.bind(this._tileOnLoad, this, done, tile); + tile.onerror = L.bind(this._tileOnError, this, done, tile); + + if (this.options.crossOrigin) { + tile.crossOrigin = ''; + } + + /* + Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons + http://www.w3.org/TR/WCAG20-TECHS/H67 + */ + tile.alt = ''; + + tile.src = this.getTileUrl(coords); + + return tile; + }, + + getTileUrl: function (coords) { + return L.Util.template(this._url, L.extend({ + r: this.options.detectRetina && L.Browser.retina && this.options.maxZoom > 0 ? '@2x' : '', + s: this._getSubdomain(coords), + x: coords.x, + y: this.options.tms ? this._globalTileRange.max.y - coords.y : coords.y, + z: this._getZoomForUrl() + }, this.options)); + }, + + _tileOnLoad: function (done, tile) { + // For https://github.com/Leaflet/Leaflet/issues/3332 + if (L.Browser.ielt9) { + setTimeout(L.bind(done, this, null, tile), 0); + } else { + done(null, tile); + } + }, + + _tileOnError: function (done, tile, e) { + var errorUrl = this.options.errorTileUrl; + if (errorUrl) { + tile.src = errorUrl; + } + done(e, tile); + }, + + getTileSize: function () { + var map = this._map, + tileSize = L.GridLayer.prototype.getTileSize.call(this), + zoom = this._tileZoom + this.options.zoomOffset, + zoomN = this.options.maxNativeZoom; + + // increase tile size when overscaling + return zoomN !== null && zoom > zoomN ? + tileSize.divideBy(map.getZoomScale(zoomN, zoom)).round() : + tileSize; + }, + + _onTileRemove: function (e) { + e.tile.onload = null; + }, + + _getZoomForUrl: function () { + + var options = this.options, + zoom = this._tileZoom; + + if (options.zoomReverse) { + zoom = options.maxZoom - zoom; + } + + zoom += options.zoomOffset; + + return options.maxNativeZoom ? Math.min(zoom, options.maxNativeZoom) : zoom; + }, + + _getSubdomain: function (tilePoint) { + var index = Math.abs(tilePoint.x + tilePoint.y) % this.options.subdomains.length; + return this.options.subdomains[index]; + }, + + // stops loading all tiles in the background layer + _abortLoading: function () { + var i, tile; + for (i in this._tiles) { + tile = this._tiles[i].el; + + tile.onload = L.Util.falseFn; + tile.onerror = L.Util.falseFn; + + if (!tile.complete) { + tile.src = L.Util.emptyImageUrl; + L.DomUtil.remove(tile); + } + } + } +}); + +L.tileLayer = function (url, options) { + return new L.TileLayer(url, options); +}; + + +/* + * L.TileLayer.WMS is used for WMS tile layers. + */ + +L.TileLayer.WMS = L.TileLayer.extend({ + + defaultWmsParams: { + service: 'WMS', + request: 'GetMap', + version: '1.1.1', + layers: '', + styles: '', + format: 'image/jpeg', + transparent: false + }, + + options: { + crs: null, + uppercase: false + }, + + initialize: function (url, options) { + + this._url = url; + + var wmsParams = L.extend({}, this.defaultWmsParams); + + // all keys that are not TileLayer options go to WMS params + for (var i in options) { + if (!(i in this.options)) { + wmsParams[i] = options[i]; + } + } + + options = L.setOptions(this, options); + + wmsParams.width = wmsParams.height = options.tileSize * (options.detectRetina && L.Browser.retina ? 2 : 1); + + this.wmsParams = wmsParams; + }, + + 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 (coords) { + + var tileBounds = this._tileCoordsToBounds(coords), + nw = this._crs.project(tileBounds.getNorthWest()), + se = this._crs.project(tileBounds.getSouthEast()), + + bbox = (this._wmsVersion >= 1.3 && this._crs === L.CRS.EPSG4326 ? + [se.y, nw.x, nw.y, se.x] : + [nw.x, se.y, se.x, nw.y]).join(','), + + url = L.TileLayer.prototype.getTileUrl.call(this, coords); + + return url + + L.Util.getParamString(this.wmsParams, url, this.options.uppercase) + + (this.options.uppercase ? '&BBOX=' : '&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.ImageOverlay is used to overlay images over the map (to specific geographical bounds). + */ + +L.ImageOverlay = L.Layer.extend({ + + options: { + opacity: 1, + alt: '', + interactive: false + + /* + crossOrigin: , + */ + }, + + initialize: function (url, bounds, options) { // (String, LatLngBounds, Object) + this._url = url; + this._bounds = L.latLngBounds(bounds); + + L.setOptions(this, options); + }, + + onAdd: function () { + if (!this._image) { + this._initImage(); + + if (this.options.opacity < 1) { + this._updateOpacity(); + } + } + + if (this.options.interactive) { + L.DomUtil.addClass(this._image, 'leaflet-interactive'); + this.addInteractiveTarget(this._image); + } + + this.getPane().appendChild(this._image); + this._reset(); + }, + + onRemove: function () { + L.DomUtil.remove(this._image); + if (this.options.interactive) { + this.removeInteractiveTarget(this._image); + } + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + + if (this._image) { + this._updateOpacity(); + } + return this; + }, + + setStyle: function (styleOpts) { + if (styleOpts.opacity) { + this.setOpacity(styleOpts.opacity); + } + return this; + }, + + bringToFront: function () { + if (this._map) { + L.DomUtil.toFront(this._image); + } + return this; + }, + + bringToBack: function () { + if (this._map) { + L.DomUtil.toBack(this._image); + } + return this; + }, + + setUrl: function (url) { + this._url = url; + + if (this._image) { + this._image.src = url; + } + return this; + }, + + getAttribution: function () { + return this.options.attribution; + }, + + getEvents: function () { + var events = { + zoom: this._reset, + viewreset: this._reset + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + getBounds: function () { + return this._bounds; + }, + + getElement: function () { + return this._image; + }, + + _initImage: function () { + var img = this._image = L.DomUtil.create('img', + 'leaflet-image-layer ' + (this._zoomAnimated ? 'leaflet-zoom-animated' : '')); + + img.onselectstart = L.Util.falseFn; + img.onmousemove = L.Util.falseFn; + + img.onload = L.bind(this.fire, this, 'load'); + + if (this.options.crossOrigin) { + img.crossOrigin = ''; + } + + img.src = this._url; + img.alt = this.options.alt; + }, + + _animateZoom: function (e) { + var scale = this._map.getZoomScale(e.zoom), + offset = this._map._latLngToNewLayerPoint(this._bounds.getNorthWest(), e.zoom, e.center); + + L.DomUtil.setTransform(this._image, offset, scale); + }, + + _reset: function () { + var image = this._image, + bounds = new L.Bounds( + this._map.latLngToLayerPoint(this._bounds.getNorthWest()), + this._map.latLngToLayerPoint(this._bounds.getSouthEast())), + size = bounds.getSize(); + + L.DomUtil.setPosition(image, bounds.min); + + image.style.width = size.x + 'px'; + image.style.height = size.y + 'px'; + }, + + _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: (String) + }, + */ + + 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 = this._createImg(src, oldIcon && oldIcon.tagName === 'IMG' ? oldIcon : null); + this._setIconStyles(img, name); + + return img; + }, + + _setIconStyles: function (img, name) { + var options = this.options, + size = L.point(options[name + 'Size']), + anchor = L.point(name === 'shadow' && options.shadowAnchor || options.iconAnchor || + size && 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) { + return L.Browser.retina && this.options[name + 'RetinaUrl'] || 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]; + } + + 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 + (L.Browser.retina && name === 'icon' ? '-2x' : '') + '.png'; + } +}); + +L.Icon.Default.imagePath = (function () { + var scripts = document.getElementsByTagName('script'), + leafletRe = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/; + + var i, len, src, path; + + for (i = 0, len = scripts.length; i < len; i++) { + src = scripts[i].src; + + if (src.match(leafletRe)) { + path = src.split(leafletRe)[0]; + return (path ? path + '/' : '') + 'images'; + } + } +}()); + + +/* + * L.Marker is used to display clickable/draggable icons on the map. + */ + +L.Marker = L.Layer.extend({ + + options: { + pane: 'markerPane', + nonBubblingEvents: ['click', 'dblclick', 'mouseover', 'mouseout', 'contextmenu'], + + icon: new L.Icon.Default(), + // title: '', + // alt: '', + interactive: 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._zoomAnimated = this._zoomAnimated && map.options.markerZoomAnimation; + + this._initIcon(); + this.update(); + }, + + onRemove: function () { + if (this.dragging && this.dragging.enabled()) { + this.options.draggable = true; + this.dragging.removeHooks(); + } + + this._removeIcon(); + this._removeShadow(); + }, + + getEvents: function () { + var events = { + zoom: this.update, + viewreset: this.update + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + + return events; + }, + + getLatLng: function () { + return this._latlng; + }, + + setLatLng: function (latlng) { + var oldLatLng = this._latlng; + this._latlng = L.latLng(latlng); + this.update(); + return this.fire('move', {oldLatLng: oldLatLng, latlng: this._latlng}); + }, + + setZIndexOffset: function (offset) { + this.options.zIndexOffset = offset; + return this.update(); + }, + + setIcon: function (icon) { + + this.options.icon = icon; + + if (this._map) { + this._initIcon(); + this.update(); + } + + if (this._popup) { + this.bindPopup(this._popup, this._popup.options); + } + + return this; + }, + + getElement: function () { + return this._icon; + }, + + update: function () { + + if (this._icon) { + var pos = this._map.latLngToLayerPoint(this._latlng).round(); + this._setPos(pos); + } + + return this; + }, + + _initIcon: function () { + var options = this.options, + classToAdd = 'leaflet-zoom-' + (this._zoomAnimated ? 'animated' : '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) { + this.on({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + 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(); + } + + + if (addIcon) { + this.getPane().appendChild(this._icon); + } + if (newShadow && addShadow) { + this.getPane('shadowPane').appendChild(this._shadow); + } + }, + + _removeIcon: function () { + if (this.options.riseOnHover) { + this.off({ + mouseover: this._bringToFront, + mouseout: this._resetZIndex + }); + } + + L.DomUtil.remove(this._icon); + this.removeInteractiveTarget(this._icon); + + this._icon = null; + }, + + _removeShadow: function () { + if (this._shadow) { + L.DomUtil.remove(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.interactive) { return; } + + L.DomUtil.addClass(this._icon, 'leaflet-interactive'); + + this.addInteractiveTarget(this._icon); + + if (L.Handler.MarkerDrag) { + var draggable = this.options.draggable; + if (this.dragging) { + draggable = this.dragging.enabled(); + this.dragging.disable(); + } + + this.dragging = new L.Handler.MarkerDrag(this); + + if (draggable) { + this.dragging.enable(); + } + } + }, + + setOpacity: function (opacity) { + this.options.opacity = opacity; + if (this._map) { + this._updateOpacity(); + } + + return this; + }, + + _updateOpacity: function () { + var opacity = this.options.opacity; + + L.DomUtil.setOpacity(this._icon, opacity); + + if (this._shadow) { + L.DomUtil.setOpacity(this._shadow, 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; + + div.innerHTML = options.html !== false ? options.html : ''; + + 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.Layer.extend({ + + options: { + pane: 'popupPane', + + minWidth: 50, + maxWidth: 300, + // maxHeight: , + offset: [0, 7], + + autoPan: true, + autoPanPadding: [5, 5], + // autoPanPaddingTopLeft: , + // autoPanPaddingBottomRight: , + + closeButton: true, + autoClose: true, + // keepInView: false, + // className: '', + zoomAnimation: true + }, + + initialize: function (options, source) { + L.setOptions(this, options); + + this._source = source; + }, + + onAdd: function (map) { + this._zoomAnimated = this._zoomAnimated && this.options.zoomAnimation; + + if (!this._container) { + this._initLayout(); + } + + if (map._fadeAnimated) { + L.DomUtil.setOpacity(this._container, 0); + } + + clearTimeout(this._removeTimeout); + this.getPane().appendChild(this._container); + this.update(); + + if (map._fadeAnimated) { + L.DomUtil.setOpacity(this._container, 1); + } + + map.fire('popupopen', {popup: this}); + + if (this._source) { + this._source.fire('popupopen', {popup: this}, true); + } + }, + + openOn: function (map) { + map.openPopup(this); + return this; + }, + + onRemove: function (map) { + if (map._fadeAnimated) { + L.DomUtil.setOpacity(this._container, 0); + this._removeTimeout = setTimeout(L.bind(L.DomUtil.remove, L.DomUtil, this._container), 200); + } else { + L.DomUtil.remove(this._container); + } + + map.fire('popupclose', {popup: this}); + + if (this._source) { + this._source.fire('popupclose', {popup: this}, true); + } + }, + + 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; + }, + + getElement: function () { + return this._container; + }, + + 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 = { + zoom: this._updatePosition, + viewreset: this._updatePosition + }; + + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + 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; + }, + + isOpen: function () { + return !!this._map && this._map.hasLayer(this); + }, + + _close: function () { + if (this._map) { + this._map.closePopup(this); + } + }, + + _initLayout: function () { + var prefix = 'leaflet-popup', + container = this._container = L.DomUtil.create('div', + prefix + ' ' + (this.options.className || '') + + ' leaflet-zoom-' + (this._zoomAnimated ? 'animated' : 'hide')); + + if (this.options.closeButton) { + var closeButton = this._closeButton = L.DomUtil.create('a', prefix + '-close-button', container); + closeButton.href = '#close'; + closeButton.innerHTML = '×'; + + L.DomEvent.on(closeButton, 'click', this._onCloseButtonClick, this); + } + + var wrapper = this._wrapper = L.DomUtil.create('div', prefix + '-content-wrapper', container); + this._contentNode = L.DomUtil.create('div', prefix + '-content', wrapper); + + L.DomEvent + .disableClickPropagation(wrapper) + .disableScrollPropagation(this._contentNode) + .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; } + + var node = this._contentNode; + var content = (typeof this._content === 'function') ? this._content(this._source || this) : this._content; + + if (typeof content === 'string') { + node.innerHTML = content; + } else { + while (node.hasChildNodes()) { + node.removeChild(node.firstChild); + } + node.appendChild(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), + offset = L.point(this.options.offset); + + if (this._zoomAnimated) { + L.DomUtil.setPosition(this._container, pos); + } else { + offset = offset.add(pos); + } + + var bottom = this._containerBottom = -offset.y, + left = this._containerLeft = -Math.round(this._containerWidth / 2) + offset.x; + + // bottom position the popup in case the height of the popup changes (images loading etc) + this._container.style.bottom = bottom + 'px'; + this._container.style.left = left + 'px'; + }, + + _animateZoom: function (e) { + var pos = this._map._latLngToNewLayerPoint(this._latlng, e.zoom, e.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._zoomAnimated) { + 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]) + if (!(popup instanceof L.Popup)) { + popup = new L.Popup(options).setContent(popup); + } + + if (latlng) { + popup.setLatLng(latlng); + } + + if (this.hasLayer(popup)) { + return this; + } + + if (this._popup && this._popup.options.autoClose) { + this.closePopup(); + } + + 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); + } + return this; + } +}); + + +/* + * Adds popup-related methods to all layers. + */ + +L.Layer.include({ + + bindPopup: function (content, options) { + + if (content instanceof L.Popup) { + L.setOptions(content, options); + this._popup = content; + content._source = this; + } else { + if (!this._popup || options) { + this._popup = new L.Popup(options, this); + } + this._popup.setContent(content); + } + + if (!this._popupHandlersAdded) { + this.on({ + click: this._openPopup, + remove: this.closePopup, + move: this._movePopup + }); + this._popupHandlersAdded = true; + } + + // save the originally passed offset + this._originalPopupOffset = this._popup.options.offset; + + return this; + }, + + unbindPopup: function () { + if (this._popup) { + this.off({ + click: this._openPopup, + remove: this.closePopup, + move: this._movePopup + }); + this._popupHandlersAdded = false; + this._popup = null; + } + return this; + }, + + openPopup: function (layer, latlng) { + if (!(layer instanceof L.Layer)) { + latlng = layer; + layer = this; + } + + if (layer instanceof L.FeatureGroup) { + for (var id in this._layers) { + layer = this._layers[id]; + break; + } + } + + if (!latlng) { + latlng = layer.getCenter ? layer.getCenter() : layer.getLatLng(); + } + + if (this._popup && this._map) { + // set the popup offset for this layer + this._popup.options.offset = this._popupAnchor(layer); + + // set popup source to this layer + this._popup._source = layer; + + // update the popup (content, layout, ect...) + this._popup.update(); + + // open the popup on the map + this._map.openPopup(this._popup, latlng); + } + + return this; + }, + + closePopup: function () { + if (this._popup) { + this._popup._close(); + } + return this; + }, + + togglePopup: function (target) { + if (this._popup) { + if (this._popup._map) { + this.closePopup(); + } else { + this.openPopup(target); + } + } + return this; + }, + + setPopupContent: function (content) { + if (this._popup) { + this._popup.setContent(content); + } + return this; + }, + + getPopup: function () { + return this._popup; + }, + + _openPopup: function (e) { + var layer = e.layer || e.target; + + if (!this._popup) { + return; + } + + if (!this._map) { + return; + } + + // if this inherits from Path its a vector and we can just + // open the popup at the new location + if (layer instanceof L.Path) { + this.openPopup(e.layer || e.target, e.latlng); + return; + } + + // otherwise treat it like a marker and figure out + // if we should toggle it open/closed + if (this._map.hasLayer(this._popup) && this._popup._source === layer) { + this.closePopup(); + } else { + this.openPopup(layer, e.latlng); + } + }, + + _popupAnchor: function (layer) { + // where shold we anchor the popup on this layer? + var anchor = layer._getPopupAnchor ? layer._getPopupAnchor() : [0, 0]; + + // add the users passed offset to that + var offsetToAdd = this._originalPopupOffset || L.Popup.prototype.options.offset; + + // return the final point to anchor the popup + return L.point(anchor).add(offsetToAdd); + }, + + _movePopup: function (e) { + this._popup.setLatLng(e.latlng); + } +}); + + +/* + * Popup extension to L.Marker, adding popup-related methods. + */ + +L.Marker.include({ + _getPopupAnchor: function() { + return this.options.icon.options.popupAnchor || [0, 0]; + } +}); + + +/* + * 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.Layer.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) { + return !!layer && (layer in this._layers || this.getLayerId(layer) in this._layers); + }, + + clearLayers: function () { + for (var i in this._layers) { + this.removeLayer(this._layers[i]); + } + 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) { + for (var i in this._layers) { + map.addLayer(this._layers[i]); + } + }, + + onRemove: function (map) { + for (var i in this._layers) { + map.removeLayer(this._layers[i]); + } + }, + + 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({ + + addLayer: function (layer) { + if (this.hasLayer(layer)) { + return this; + } + + layer.addEventParent(this); + + L.LayerGroup.prototype.addLayer.call(this, layer); + + 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.removeEventParent(this); + + L.LayerGroup.prototype.removeLayer.call(this, layer); + + return this.fire('layerremove', {layer: layer}); + }, + + 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(); + + for (var id in this._layers) { + var layer = this._layers[id]; + bounds.extend(layer.getBounds ? layer.getBounds() : layer.getLatLng()); + } + return bounds; + } +}); + +L.featureGroup = function (layers) { + return new L.FeatureGroup(layers); +}; + + +/* + * L.Renderer is a base class for renderer implementations (SVG, Canvas); + * handles renderer container, bounds and zoom animation. + */ + +L.Renderer = L.Layer.extend({ + + options: { + // how much to extend the clip area around the map view (relative to its size) + // e.g. 0.1 would be 10% of map view in each direction; defaults to clip with the map view + padding: 0.1 + }, + + initialize: function (options) { + L.setOptions(this, options); + L.stamp(this); + }, + + onAdd: function () { + if (!this._container) { + this._initContainer(); // defined by renderer implementations + + if (this._zoomAnimated) { + L.DomUtil.addClass(this._container, 'leaflet-zoom-animated'); + } + } + + this.getPane().appendChild(this._container); + this._update(); + }, + + onRemove: function () { + L.DomUtil.remove(this._container); + }, + + getEvents: function () { + var events = { + viewreset: this._reset, + zoom: this._updateTransform, + moveend: this._update + }; + if (this._zoomAnimated) { + events.zoomanim = this._animateZoom; + } + return events; + }, + + _animateZoom: function (e) { + var scale = this._map.getZoomScale(e.zoom, this._zoom), + offset = this._map._latLngToNewLayerPoint(this._topLeft, e.zoom, e.center); + + L.DomUtil.setTransform(this._container, offset, scale); + }, + + _updateTransform: function () { + var zoom = this._map.getZoom(), + center = this._map.getCenter(), + scale = this._map.getZoomScale(zoom, this._zoom), + offset = this._map._latLngToNewLayerPoint(this._topLeft, zoom, center); + + L.DomUtil.setTransform(this._container, offset, scale); + }, + + _reset: function () { + this._update(); + this._updateTransform(); + }, + + _update: function () { + // update pixel bounds of renderer container (for positioning/sizing/clipping later) + var p = this.options.padding, + size = this._map.getSize(), + min = this._map.containerPointToLayerPoint(size.multiplyBy(-p)).round(); + + this._bounds = new L.Bounds(min, min.add(size.multiplyBy(1 + p * 2)).round()); + + this._topLeft = this._map.layerPointToLatLng(min); + this._zoom = this._map.getZoom(); + } +}); + + +L.Map.include({ + // used by each vector layer to decide which renderer to use + getRenderer: function (layer) { + var renderer = layer.options.renderer || this._getPaneRenderer(layer.options.pane) || this.options.renderer || this._renderer; + + if (!renderer) { + renderer = this._renderer = (this.options.preferCanvas && L.canvas()) || L.svg(); + } + + if (!this.hasLayer(renderer)) { + this.addLayer(renderer); + } + return renderer; + }, + + _getPaneRenderer: function (name) { + if (name === 'overlayPane' || name === undefined) { + return false; + } + + var renderer = this._paneRenderers[name]; + if (renderer === undefined) { + renderer = (L.SVG && L.svg({pane: name})) || (L.Canvas && L.canvas({pane: name})); + this._paneRenderers[name] = renderer; + } + return renderer; + } +}); + + +/* + * L.Path is the base class for all Leaflet vector layers like polygons and circles. + */ + +L.Path = L.Layer.extend({ + + options: { + stroke: true, + color: '#3388ff', + weight: 3, + opacity: 1, + lineCap: 'round', + lineJoin: 'round', + // dashArray: null + // dashOffset: null + + // fill: false + // fillColor: same as color by default + fillOpacity: 0.2, + fillRule: 'evenodd', + + // className: '' + interactive: true + }, + + onAdd: function () { + this._renderer = this._map.getRenderer(this); + this._renderer._initPath(this); + this._reset(); + this._renderer._addPath(this); + }, + + onRemove: function () { + this._renderer._removePath(this); + }, + + getEvents: function () { + return { + zoomend: this._project, + moveend: this._update, + viewreset: this._reset + }; + }, + + redraw: function () { + if (this._map) { + this._renderer._updatePath(this); + } + return this; + }, + + setStyle: function (style) { + L.setOptions(this, style); + if (this._renderer) { + this._renderer._updateStyle(this); + } + return this; + }, + + bringToFront: function () { + if (this._renderer) { + this._renderer._bringToFront(this); + } + return this; + }, + + bringToBack: function () { + if (this._renderer) { + this._renderer._bringToBack(this); + } + return this; + }, + + getElement: function () { + return this._path; + }, + + _reset: function () { + // defined in children classes + this._project(); + this._update(); + }, + + _clickTolerance: function () { + // used when doing hit detection for Canvas layers + return (this.options.stroke ? this.options.weight / 2 : 0) + (L.Browser.touch ? 10 : 0); + } +}); + + +/* + * L.LineUtil contains different utility functions for line segments + * and polylines (clipping, simplification, distances, etc.) + */ + +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 (points, 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 (p, p1, p2) { + return Math.sqrt(this._sqClosestPointOnSegment(p, p1, p2, true)); + }, + + closestPointOnSegment: function (p, p1, 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, round) { + 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, round); + newCode = this._getBitCode(p, bounds); + + if (codeOut === codeA) { + a = p; + codeA = newCode; + } else { + b = p; + codeB = newCode; + } + } + } + }, + + _getEdgeIntersection: function (a, b, code, bounds, round) { + var dx = b.x - a.x, + dy = b.y - a.y, + min = bounds.min, + max = bounds.max, + x, y; + + if (code & 8) { // top + x = a.x + dx * (max.y - a.y) / dy; + y = max.y; + + } else if (code & 4) { // bottom + x = a.x + dx * (min.y - a.y) / dy; + y = min.y; + + } else if (code & 2) { // right + x = max.x; + y = a.y + dy * (max.x - a.x) / dx; + + } else if (code & 1) { // left + x = min.x; + y = a.y + dy * (min.x - a.x) / dx; + } + + return new L.Point(x, y, round); + }, + + _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 implements polyline vector layer (a set of points connected with lines) + */ + +L.Polyline = L.Path.extend({ + + 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 + }, + + initialize: function (latlngs, options) { + L.setOptions(this, options); + this._setLatLngs(latlngs); + }, + + getLatLngs: function () { + return this._latlngs; + }, + + setLatLngs: function (latlngs) { + this._setLatLngs(latlngs); + return this.redraw(); + }, + + isEmpty: function () { + return !this._latlngs.length; + }, + + closestLayerPoint: function (p) { + var minDistance = Infinity, + minPoint = null, + closest = L.LineUtil._sqClosestPointOnSegment, + p1, p2; + + for (var j = 0, jLen = this._parts.length; j < jLen; j++) { + var points = this._parts[j]; + + for (var i = 1, len = points.length; i < len; i++) { + p1 = points[i - 1]; + p2 = points[i]; + + var sqDist = closest(p, p1, p2, true); + + if (sqDist < minDistance) { + minDistance = sqDist; + minPoint = closest(p, p1, p2); + } + } + } + if (minPoint) { + minPoint.distance = Math.sqrt(minDistance); + } + return minPoint; + }, + + getCenter: function () { + var i, halfDist, segDist, dist, p1, p2, ratio, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polyline centroid algorithm; only uses the first ring if there are multiple + + for (i = 0, halfDist = 0; i < len - 1; i++) { + halfDist += points[i].distanceTo(points[i + 1]) / 2; + } + + // The line is so small in the current view that all points are on the same pixel. + if (halfDist === 0) { + return this._map.layerPointToLatLng(points[0]); + } + + for (i = 0, dist = 0; i < len - 1; i++) { + p1 = points[i]; + p2 = points[i + 1]; + segDist = p1.distanceTo(p2); + dist += segDist; + + if (dist > halfDist) { + ratio = (dist - halfDist) / segDist; + return this._map.layerPointToLatLng([ + p2.x - ratio * (p2.x - p1.x), + p2.y - ratio * (p2.y - p1.y) + ]); + } + } + }, + + getBounds: function () { + return this._bounds; + }, + + addLatLng: function (latlng, latlngs) { + latlngs = latlngs || this._defaultShape(); + latlng = L.latLng(latlng); + latlngs.push(latlng); + this._bounds.extend(latlng); + return this.redraw(); + }, + + _setLatLngs: function (latlngs) { + this._bounds = new L.LatLngBounds(); + this._latlngs = this._convertLatLngs(latlngs); + }, + + _defaultShape: function () { + return L.Polyline._flat(this._latlngs) ? this._latlngs : this._latlngs[0]; + }, + + // recursively convert latlngs input into actual LatLng instances; calculate bounds along the way + _convertLatLngs: function (latlngs) { + var result = [], + flat = L.Polyline._flat(latlngs); + + for (var i = 0, len = latlngs.length; i < len; i++) { + if (flat) { + result[i] = L.latLng(latlngs[i]); + this._bounds.extend(result[i]); + } else { + result[i] = this._convertLatLngs(latlngs[i]); + } + } + + return result; + }, + + _project: function () { + this._rings = []; + this._projectLatlngs(this._latlngs, this._rings); + + // project bounds as well to use later for Canvas hit detection/etc. + var w = this._clickTolerance(), + p = new L.Point(w, -w); + + if (this._bounds.isValid()) { + this._pxBounds = new L.Bounds( + this._map.latLngToLayerPoint(this._bounds.getSouthWest())._subtract(p), + this._map.latLngToLayerPoint(this._bounds.getNorthEast())._add(p)); + } + }, + + // recursively turns latlngs into a set of rings with projected coordinates + _projectLatlngs: function (latlngs, result) { + + var flat = latlngs[0] instanceof L.LatLng, + len = latlngs.length, + i, ring; + + if (flat) { + ring = []; + for (i = 0; i < len; i++) { + ring[i] = this._map.latLngToLayerPoint(latlngs[i]); + } + result.push(ring); + } else { + for (i = 0; i < len; i++) { + this._projectLatlngs(latlngs[i], result); + } + } + }, + + // clip polyline by renderer bounds so that we have less to render for performance + _clipPoints: function () { + var bounds = this._renderer._bounds; + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + var parts = this._parts, + i, j, k, len, len2, segment, points; + + for (i = 0, k = 0, len = this._rings.length; i < len; i++) { + points = this._rings[i]; + + for (j = 0, len2 = points.length; j < len2 - 1; j++) { + segment = L.LineUtil.clipSegment(points[j], points[j + 1], bounds, j, true); + + 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[j + 1]) || (j === len2 - 2)) { + parts[k].push(segment[1]); + k++; + } + } + } + }, + + // simplify each clipped part of the polyline for performance + _simplifyPoints: function () { + var parts = this._parts, + tolerance = this.options.smoothFactor; + + for (var i = 0, len = parts.length; i < len; i++) { + parts[i] = L.LineUtil.simplify(parts[i], tolerance); + } + }, + + _update: function () { + if (!this._map) { return; } + + this._clipPoints(); + this._simplifyPoints(); + this._updatePath(); + }, + + _updatePath: function () { + this._renderer._updatePoly(this); + } +}); + +L.polyline = function (latlngs, options) { + return new L.Polyline(latlngs, options); +}; + +L.Polyline._flat = function (latlngs) { + // true if it's a flat array of latlngs; false if nested + return !L.Util.isArray(latlngs[0]) || (typeof latlngs[0][0] !== 'object' && typeof latlngs[0][0] !== 'undefined'); +}; + + +/* + * L.PolyUtil contains utility functions for polygons (clipping, etc.). + */ + +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, round) { + 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, round); + 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, round); + p._code = lu._getBitCode(p, bounds); + clippedPoints.push(p); + } + } + points = clippedPoints; + } + + return points; +}; + + +/* + * L.Polygon implements polygon vector layer (closed polyline with a fill inside). + */ + +L.Polygon = L.Polyline.extend({ + + options: { + fill: true + }, + + isEmpty: function () { + return !this._latlngs.length || !this._latlngs[0].length; + }, + + getCenter: function () { + var i, j, p1, p2, f, area, x, y, center, + points = this._rings[0], + len = points.length; + + if (!len) { return null; } + + // polygon centroid algorithm; only uses the first ring if there are multiple + + area = x = y = 0; + + for (i = 0, j = len - 1; i < len; j = i++) { + p1 = points[i]; + p2 = points[j]; + + f = p1.y * p2.x - p2.y * p1.x; + x += (p1.x + p2.x) * f; + y += (p1.y + p2.y) * f; + area += f * 3; + } + + if (area === 0) { + // Polygon is so small that all points are on same pixel. + center = points[0]; + } else { + center = [x / area, y / area]; + } + return this._map.layerPointToLatLng(center); + }, + + _convertLatLngs: function (latlngs) { + var result = L.Polyline.prototype._convertLatLngs.call(this, latlngs), + len = result.length; + + // remove last point if it equals first one + if (len >= 2 && result[0] instanceof L.LatLng && result[0].equals(result[len - 1])) { + result.pop(); + } + return result; + }, + + _setLatLngs: function (latlngs) { + L.Polyline.prototype._setLatLngs.call(this, latlngs); + if (L.Polyline._flat(this._latlngs)) { + this._latlngs = [this._latlngs]; + } + }, + + _defaultShape: function () { + return L.Polyline._flat(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0]; + }, + + _clipPoints: function () { + // polygons need a different clipping algorithm so we redefine that + + var bounds = this._renderer._bounds, + w = this.options.weight, + p = new L.Point(w, w); + + // increase clip padding by stroke width to avoid stroke on clip edges + bounds = new L.Bounds(bounds.min.subtract(p), bounds.max.add(p)); + + this._parts = []; + if (!this._pxBounds || !this._pxBounds.intersects(bounds)) { + return; + } + + if (this.options.noClip) { + this._parts = this._rings; + return; + } + + for (var i = 0, len = this._rings.length, clipped; i < len; i++) { + clipped = L.PolyUtil.clipPolygon(this._rings[i], bounds, true); + if (clipped.length) { + this._parts.push(clipped); + } + } + }, + + _updatePath: function () { + this._renderer._updatePoly(this, true); + } +}); + +L.polygon = function (latlngs, options) { + return new L.Polygon(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.CircleMarker is a circle overlay with a permanent pixel radius. + */ + +L.CircleMarker = L.Path.extend({ + + options: { + fill: true, + radius: 10 + }, + + initialize: function (latlng, options) { + L.setOptions(this, options); + this._latlng = L.latLng(latlng); + this._radius = this.options.radius; + }, + + setLatLng: function (latlng) { + this._latlng = L.latLng(latlng); + this.redraw(); + return this.fire('move', {latlng: this._latlng}); + }, + + getLatLng: function () { + return this._latlng; + }, + + setRadius: function (radius) { + this.options.radius = this._radius = radius; + return this.redraw(); + }, + + getRadius: function () { + return this._radius; + }, + + setStyle : function (options) { + var radius = options && options.radius || this._radius; + L.Path.prototype.setStyle.call(this, options); + this.setRadius(radius); + return this; + }, + + _project: function () { + this._point = this._map.latLngToLayerPoint(this._latlng); + this._updateBounds(); + }, + + _updateBounds: function () { + var r = this._radius, + r2 = this._radiusY || r, + w = this._clickTolerance(), + p = [r + w, r2 + w]; + this._pxBounds = new L.Bounds(this._point.subtract(p), this._point.add(p)); + }, + + _update: function () { + if (this._map) { + this._updatePath(); + } + }, + + _updatePath: function () { + this._renderer._updateCircle(this); + }, + + _empty: function () { + return this._radius && !this._renderer._bounds.intersects(this._pxBounds); + } +}); + +L.circleMarker = function (latlng, options) { + return new L.CircleMarker(latlng, options); +}; + + +/* + * L.Circle is a circle overlay (with a certain radius in meters). + * It's an approximation and starts to diverge from a real circle closer to poles (due to projection distortion) + */ + +L.Circle = L.CircleMarker.extend({ + + initialize: function (latlng, radius, options) { + L.setOptions(this, options); + this._latlng = L.latLng(latlng); + this._mRadius = radius; + }, + + setRadius: function (radius) { + this._mRadius = radius; + return this.redraw(); + }, + + getRadius: function () { + return this._mRadius; + }, + + getBounds: function () { + var half = [this._radius, this._radiusY]; + + return new L.LatLngBounds( + this._map.layerPointToLatLng(this._point.subtract(half)), + this._map.layerPointToLatLng(this._point.add(half))); + }, + + setStyle: L.Path.prototype.setStyle, + + _project: function () { + + var lng = this._latlng.lng, + lat = this._latlng.lat, + map = this._map, + crs = map.options.crs; + + if (crs.distance === L.CRS.Earth.distance) { + var d = Math.PI / 180, + latR = (this._mRadius / L.CRS.Earth.R) / d, + top = map.project([lat + latR, lng]), + bottom = map.project([lat - latR, lng]), + p = top.add(bottom).divideBy(2), + lat2 = map.unproject(p).lat, + lngR = Math.acos((Math.cos(latR * d) - Math.sin(lat * d) * Math.sin(lat2 * d)) / + (Math.cos(lat * d) * Math.cos(lat2 * d))) / d; + + this._point = p.subtract(map.getPixelOrigin()); + this._radius = isNaN(lngR) ? 0 : Math.max(Math.round(p.x - map.project([lat2, lng - lngR]).x), 1); + this._radiusY = Math.max(Math.round(p.y - top.y), 1); + + } else { + var latlng2 = crs.unproject(crs.project(this._latlng).subtract([this._mRadius, 0])); + + this._point = map.latLngToLayerPoint(this._latlng); + this._radius = this._point.x - map.latLngToLayerPoint(latlng2).x; + } + + this._updateBounds(); + } +}); + +L.circle = function (latlng, radius, options) { + return new L.Circle(latlng, radius, options); +}; + + +/* + * L.SVG renders vector layers with SVG. All SVG-specific code goes here. + */ + +L.SVG = L.Renderer.extend({ + + _initContainer: function () { + this._container = L.SVG.create('svg'); + + // makes it possible to click through svg root; we'll reset it back in individual paths + this._container.setAttribute('pointer-events', 'none'); + + this._rootGroup = L.SVG.create('g'); + this._container.appendChild(this._rootGroup); + }, + + _update: function () { + if (this._map._animatingZoom && this._bounds) { return; } + + L.Renderer.prototype._update.call(this); + + var b = this._bounds, + size = b.getSize(), + container = this._container; + + // set size of svg-container if changed + if (!this._svgSize || !this._svgSize.equals(size)) { + this._svgSize = size; + container.setAttribute('width', size.x); + container.setAttribute('height', size.y); + } + + // movement: update container viewBox so that we don't have to change coordinates of individual layers + L.DomUtil.setPosition(container, b.min); + container.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' ')); + }, + + // methods below are called by vector layers implementations + + _initPath: function (layer) { + var path = layer._path = L.SVG.create('path'); + + if (layer.options.className) { + L.DomUtil.addClass(path, layer.options.className); + } + + if (layer.options.interactive) { + L.DomUtil.addClass(path, 'leaflet-interactive'); + } + + this._updateStyle(layer); + }, + + _addPath: function (layer) { + this._rootGroup.appendChild(layer._path); + layer.addInteractiveTarget(layer._path); + }, + + _removePath: function (layer) { + L.DomUtil.remove(layer._path); + layer.removeInteractiveTarget(layer._path); + }, + + _updatePath: function (layer) { + layer._project(); + layer._update(); + }, + + _updateStyle: function (layer) { + var path = layer._path, + options = layer.options; + + if (!path) { return; } + + if (options.stroke) { + path.setAttribute('stroke', options.color); + path.setAttribute('stroke-opacity', options.opacity); + path.setAttribute('stroke-width', options.weight); + path.setAttribute('stroke-linecap', options.lineCap); + path.setAttribute('stroke-linejoin', options.lineJoin); + + if (options.dashArray) { + path.setAttribute('stroke-dasharray', options.dashArray); + } else { + path.removeAttribute('stroke-dasharray'); + } + + if (options.dashOffset) { + path.setAttribute('stroke-dashoffset', options.dashOffset); + } else { + path.removeAttribute('stroke-dashoffset'); + } + } else { + path.setAttribute('stroke', 'none'); + } + + if (options.fill) { + path.setAttribute('fill', options.fillColor || options.color); + path.setAttribute('fill-opacity', options.fillOpacity); + path.setAttribute('fill-rule', options.fillRule || 'evenodd'); + } else { + path.setAttribute('fill', 'none'); + } + + path.setAttribute('pointer-events', options.pointerEvents || (options.interactive ? 'visiblePainted' : 'none')); + }, + + _updatePoly: function (layer, closed) { + this._setPath(layer, L.SVG.pointsToPath(layer._parts, closed)); + }, + + _updateCircle: function (layer) { + var p = layer._point, + r = layer._radius, + r2 = layer._radiusY || r, + arc = 'a' + r + ',' + r2 + ' 0 1,0 '; + + // drawing a circle with two half-arcs + var d = layer._empty() ? 'M0 0' : + 'M' + (p.x - r) + ',' + p.y + + arc + (r * 2) + ',0 ' + + arc + (-r * 2) + ',0 '; + + this._setPath(layer, d); + }, + + _setPath: function (layer, path) { + layer._path.setAttribute('d', path); + }, + + // SVG does not have the concept of zIndex so we resort to changing the DOM order of elements + _bringToFront: function (layer) { + L.DomUtil.toFront(layer._path); + }, + + _bringToBack: function (layer) { + L.DomUtil.toBack(layer._path); + } +}); + + +L.extend(L.SVG, { + create: function (name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); + }, + + // generates SVG path string for multiple rings, with each ring turning into "M..L..L.." instructions + pointsToPath: function (rings, closed) { + var str = '', + i, j, len, len2, points, p; + + for (i = 0, len = rings.length; i < len; i++) { + points = rings[i]; + + for (j = 0, len2 = points.length; j < len2; j++) { + p = points[j]; + str += (j ? 'L' : 'M') + p.x + ' ' + p.y; + } + + // closes the ring for polygons; "x" is VML syntax + str += closed ? (L.Browser.svg ? 'z' : 'x') : ''; + } + + // SVG complains about empty path strings + return str || 'M0 0'; + } +}); + +L.Browser.svg = !!(document.createElementNS && L.SVG.create('svg').createSVGRect); + +L.svg = function (options) { + return L.Browser.svg || L.Browser.vml ? new L.SVG(options) : null; +}; + + +/* + * Vector rendering for IE7-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; + } +}()); + +// redefine some SVG methods to handle VML syntax which is similar but with some differences +L.SVG.include(!L.Browser.vml ? {} : { + + _initContainer: function () { + this._container = L.DomUtil.create('div', 'leaflet-vml-container'); + }, + + _update: function () { + if (this._map._animatingZoom) { return; } + L.Renderer.prototype._update.call(this); + }, + + _initPath: function (layer) { + var container = layer._container = L.SVG.create('shape'); + + L.DomUtil.addClass(container, 'leaflet-vml-shape ' + (this.options.className || '')); + + container.coordsize = '1 1'; + + layer._path = L.SVG.create('path'); + container.appendChild(layer._path); + + this._updateStyle(layer); + }, + + _addPath: function (layer) { + var container = layer._container; + this._container.appendChild(container); + + if (layer.options.interactive) { + layer.addInteractiveTarget(container); + } + }, + + _removePath: function (layer) { + var container = layer._container; + L.DomUtil.remove(container); + layer.removeInteractiveTarget(container); + }, + + _updateStyle: function (layer) { + var stroke = layer._stroke, + fill = layer._fill, + options = layer.options, + container = layer._container; + + container.stroked = !!options.stroke; + container.filled = !!options.fill; + + if (options.stroke) { + if (!stroke) { + stroke = layer._stroke = L.SVG.create('stroke'); + 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 = ''; + } + stroke.endcap = options.lineCap.replace('butt', 'flat'); + stroke.joinstyle = options.lineJoin; + + } else if (stroke) { + container.removeChild(stroke); + layer._stroke = null; + } + + if (options.fill) { + if (!fill) { + fill = layer._fill = L.SVG.create('fill'); + container.appendChild(fill); + } + fill.color = options.fillColor || options.color; + fill.opacity = options.fillOpacity; + + } else if (fill) { + container.removeChild(fill); + layer._fill = null; + } + }, + + _updateCircle: function (layer) { + var p = layer._point.round(), + r = Math.round(layer._radius), + r2 = Math.round(layer._radiusY || r); + + this._setPath(layer, layer._empty() ? 'M0 0' : + 'AL ' + p.x + ',' + p.y + ' ' + r + ',' + r2 + ' 0,' + (65535 * 360)); + }, + + _setPath: function (layer, path) { + layer._path.v = path; + }, + + _bringToFront: function (layer) { + L.DomUtil.toFront(layer._container); + }, + + _bringToBack: function (layer) { + L.DomUtil.toBack(layer._container); + } +}); + +if (L.Browser.vml) { + L.SVG.create = (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">'); + }; + } + })(); +} + + +/* + * L.Canvas handles Canvas vector layers rendering and mouse events handling. All Canvas-specific code goes here. + */ + +L.Canvas = L.Renderer.extend({ + + onAdd: function () { + L.Renderer.prototype.onAdd.call(this); + + this._layers = this._layers || {}; + + // redraw vectors since canvas is cleared upon removal + this._draw(); + }, + + _initContainer: function () { + var container = this._container = document.createElement('canvas'); + + L.DomEvent + .on(container, 'mousemove', this._onMouseMove, this) + .on(container, 'click dblclick mousedown mouseup contextmenu', this._onClick, this) + .on(container, 'mouseout', this._handleMouseOut, this); + + this._ctx = container.getContext('2d'); + }, + + _update: function () { + if (this._map._animatingZoom && this._bounds) { return; } + + L.Renderer.prototype._update.call(this); + + var b = this._bounds, + container = this._container, + size = b.getSize(), + m = L.Browser.retina ? 2 : 1; + + L.DomUtil.setPosition(container, b.min); + + // set canvas size (also clearing it); use double size on retina + container.width = m * size.x; + container.height = m * size.y; + container.style.width = size.x + 'px'; + container.style.height = size.y + 'px'; + + if (L.Browser.retina) { + this._ctx.scale(2, 2); + } + + // translate so we use the same path coordinates after canvas element moves + this._ctx.translate(-b.min.x, -b.min.y); + }, + + _initPath: function (layer) { + this._layers[L.stamp(layer)] = layer; + }, + + _addPath: L.Util.falseFn, + + _removePath: function (layer) { + layer._removed = true; + this._requestRedraw(layer); + }, + + _updatePath: function (layer) { + this._redrawBounds = layer._pxBounds; + this._draw(true); + layer._project(); + layer._update(); + this._draw(); + this._redrawBounds = null; + }, + + _updateStyle: function (layer) { + this._requestRedraw(layer); + }, + + _requestRedraw: function (layer) { + if (!this._map) { return; } + + this._redrawBounds = this._redrawBounds || new L.Bounds(); + this._redrawBounds.extend(layer._pxBounds.min).extend(layer._pxBounds.max); + + this._redrawRequest = this._redrawRequest || L.Util.requestAnimFrame(this._redraw, this); + }, + + _redraw: function () { + this._redrawRequest = null; + + this._draw(true); // clear layers in redraw bounds + this._draw(); // draw layers + + this._redrawBounds = null; + }, + + _draw: function (clear) { + this._clear = clear; + var layer; + + for (var id in this._layers) { + layer = this._layers[id]; + if (!this._redrawBounds || layer._pxBounds.intersects(this._redrawBounds)) { + layer._updatePath(); + } + if (clear && layer._removed) { + delete layer._removed; + delete this._layers[id]; + } + } + }, + + _updatePoly: function (layer, closed) { + + var i, j, len2, p, + parts = layer._parts, + len = parts.length, + ctx = this._ctx; + + if (!len) { return; } + + ctx.beginPath(); + + for (i = 0; i < len; i++) { + for (j = 0, len2 = parts[i].length; j < len2; j++) { + p = parts[i][j]; + ctx[j ? 'lineTo' : 'moveTo'](p.x, p.y); + } + if (closed) { + ctx.closePath(); + } + } + + this._fillStroke(ctx, layer); + + // TODO optimization: 1 fill/stroke for all features with equal style instead of 1 for each feature + }, + + _updateCircle: function (layer) { + + if (layer._empty()) { return; } + + var p = layer._point, + ctx = this._ctx, + r = layer._radius, + s = (layer._radiusY || r) / r; + + if (s !== 1) { + ctx.save(); + ctx.scale(1, s); + } + + ctx.beginPath(); + ctx.arc(p.x, p.y / s, r, 0, Math.PI * 2, false); + + if (s !== 1) { + ctx.restore(); + } + + this._fillStroke(ctx, layer); + }, + + _fillStroke: function (ctx, layer) { + var clear = this._clear, + options = layer.options; + + ctx.globalCompositeOperation = clear ? 'destination-out' : 'source-over'; + + if (options.fill) { + ctx.globalAlpha = clear ? 1 : options.fillOpacity; + ctx.fillStyle = options.fillColor || options.color; + ctx.fill(options.fillRule || 'evenodd'); + } + + if (options.stroke && options.weight !== 0) { + ctx.globalAlpha = clear ? 1 : options.opacity; + + // if clearing shape, do it with the previously drawn line width + layer._prevWeight = ctx.lineWidth = clear ? layer._prevWeight + 1 : options.weight; + + ctx.strokeStyle = options.color; + ctx.lineCap = options.lineCap; + ctx.lineJoin = options.lineJoin; + ctx.stroke(); + } + }, + + // Canvas obviously doesn't have mouse events for individual drawn objects, + // so we emulate that by calculating what's under the mouse on mousemove/click manually + + _onClick: function (e) { + var point = this._map.mouseEventToLayerPoint(e); + + for (var id in this._layers) { + if (this._layers[id]._containsPoint(point)) { + L.DomEvent._fakeStop(e); + this._fireEvent(this._layers[id], e); + } + } + }, + + _onMouseMove: function (e) { + if (!this._map || this._map._animatingZoom) { return; } + + var point = this._map.mouseEventToLayerPoint(e); + this._handleMouseOut(e, point); + this._handleMouseHover(e, point); + }, + + + _handleMouseOut: function (e, point) { + var layer = this._hoveredLayer; + if (layer && (e.type === 'mouseout' || !layer._containsPoint(point))) { + // if we're leaving the layer, fire mouseout + L.DomUtil.removeClass(this._container, 'leaflet-interactive'); + this._fireEvent(layer, e, 'mouseout'); + this._hoveredLayer = null; + } + }, + + _handleMouseHover: function (e, point) { + var id, layer; + if (!this._hoveredLayer) { + for (id in this._layers) { + layer = this._layers[id]; + if (layer.options.interactive && layer._containsPoint(point)) { + L.DomUtil.addClass(this._container, 'leaflet-interactive'); // change cursor + this._fireEvent(layer, e, 'mouseover'); + this._hoveredLayer = layer; + break; + } + } + } + if (this._hoveredLayer) { + this._fireEvent(this._hoveredLayer, e); + } + }, + + _fireEvent: function (layer, e, type) { + this._map._fireDOMEvent(e, type || e.type, [layer]); + }, + + // TODO _bringToFront & _bringToBack, pretty tricky + + _bringToFront: L.Util.falseFn, + _bringToBack: L.Util.falseFn +}); + +L.Browser.canvas = (function () { + return !!document.createElement('canvas').getContext; +}()); + +L.canvas = function (options) { + return L.Browser.canvas ? new L.Canvas(options) : null; +}; + +L.Polyline.prototype._containsPoint = function (p, closed) { + var i, j, k, len, len2, part, + w = this._clickTolerance(); + + if (!this._pxBounds.contains(p)) { return false; } + + // hit detection for polylines + 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; } + + if (L.LineUtil.pointToSegmentDistance(p, part[k], part[j]) <= w) { + return true; + } + } + } + return false; +}; + +L.Polygon.prototype._containsPoint = function (p) { + var inside = false, + part, p1, p2, i, j, k, len, len2; + + if (!this._pxBounds.contains(p)) { return false; } + + // 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; + } + } + } + + // also check if it's on polygon stroke + return inside || L.Polyline.prototype._containsPoint.call(this, p, true); +}; + +L.CircleMarker.prototype._containsPoint = function (p) { + return p.distanceTo(this._point) <= this._radius + this._clickTolerance(); +}; + + +/* + * 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(feature); + } + } + return this; + } + + var options = this.options; + + if (options.filter && !options.filter(geojson)) { return this; } + + var layer = L.GeoJSON.geometryToLayer(geojson, options); + if (!layer) { + return this; + } + 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) { + // reset any custom styles + layer.options = layer.defaultOptions; + this._setLayerStyle(layer, this.options.style); + return this; + }, + + setStyle: function (style) { + return 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, options) { + + var geometry = geojson.type === 'Feature' ? geojson.geometry : geojson, + coords = geometry ? geometry.coordinates : null, + layers = [], + pointToLayer = options && options.pointToLayer, + coordsToLatLng = options && options.coordsToLatLng || this.coordsToLatLng, + latlng, latlngs, i, len; + + if (!coords && !geometry) { + return null; + } + + 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': + case 'MultiLineString': + latlngs = this.coordsToLatLngs(coords, geometry.type === 'LineString' ? 0 : 1, coordsToLatLng); + return new L.Polyline(latlngs, options); + + case 'Polygon': + case 'MultiPolygon': + latlngs = this.coordsToLatLngs(coords, geometry.type === 'Polygon' ? 1 : 2, coordsToLatLng); + return new L.Polygon(latlngs, options); + + case 'GeometryCollection': + for (i = 0, len = geometry.geometries.length; i < len; i++) { + var layer = this.geometryToLayer({ + geometry: geometry.geometries[i], + type: 'Feature', + properties: geojson.properties + }, options); + + if (layer) { + layers.push(layer); + } + } + return new L.FeatureGroup(layers); + + default: + throw new Error('Invalid GeoJSON object.'); + } + }, + + coordsToLatLng: function (coords) { + return new L.LatLng(coords[1], coords[0], coords[2]); + }, + + coordsToLatLngs: function (coords, levelsDeep, coordsToLatLng) { + var latlngs = []; + + for (var i = 0, len = coords.length, latlng; 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) { + return latlng.alt !== undefined ? + [latlng.lng, latlng.lat, latlng.alt] : + [latlng.lng, latlng.lat]; + }, + + latLngsToCoords: function (latlngs, levelsDeep, closed) { + var coords = []; + + for (var i = 0, len = latlngs.length; i < len; i++) { + coords.push(levelsDeep ? + L.GeoJSON.latLngsToCoords(latlngs[i], levelsDeep - 1, closed) : + L.GeoJSON.latLngToCoords(latlngs[i])); + } + + if (!levelsDeep && closed) { + coords.push(coords[0]); + } + + 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.prototype.toGeoJSON = function () { + var multi = !L.Polyline._flat(this._latlngs); + + var coords = L.GeoJSON.latLngsToCoords(this._latlngs, multi ? 1 : 0); + + return L.GeoJSON.getFeature(this, { + type: (multi ? 'Multi' : '') + 'LineString', + coordinates: coords + }); +}; + +L.Polygon.prototype.toGeoJSON = function () { + var holes = !L.Polyline._flat(this._latlngs), + multi = holes && !L.Polyline._flat(this._latlngs[0]); + + var coords = L.GeoJSON.latLngsToCoords(this._latlngs, multi ? 2 : holes ? 1 : 0, true); + + if (!holes) { + coords = [coords]; + } + + return L.GeoJSON.getFeature(this, { + type: (multi ? 'Multi' : '') + 'Polygon', + coordinates: coords + }); +}; + + +L.LayerGroup.include({ + toMultiPoint: function () { + var coords = []; + + this.eachLayer(function (layer) { + coords.push(layer.toGeoJSON().geometry.coordinates); + }); + + return L.GeoJSON.getFeature(this, { + type: 'MultiPoint', + coordinates: coords + }); + }, + + toGeoJSON: function () { + + var type = this.feature && this.feature.geometry && this.feature.geometry.type; + + if (type === 'MultiPoint') { + return this.toMultiPoint(); + } + + var isGeometryCollection = type === 'GeometryCollection', + jsons = []; + + this.eachLayer(function (layer) { + if (layer.toGeoJSON) { + var 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. + * Inspired by John Resig, Dean Edwards and YUI addEvent implementations. + */ + +var eventsKey = '_leaflet_events'; + +L.DomEvent = { + + on: function (obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this._on(obj, type, types[type], fn); + } + } else { + types = L.Util.splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._on(obj, types[i], fn, context); + } + } + + return this; + }, + + off: function (obj, types, fn, context) { + + if (typeof types === 'object') { + for (var type in types) { + this._off(obj, type, types[type], fn); + } + } else { + types = L.Util.splitWords(types); + + for (var i = 0, len = types.length; i < len; i++) { + this._off(obj, types[i], fn, context); + } + } + + return this; + }, + + _on: function (obj, type, fn, context) { + var id = type + L.stamp(fn) + (context ? '_' + L.stamp(context) : ''); + + if (obj[eventsKey] && obj[eventsKey][id]) { return this; } + + var handler = function (e) { + return fn.call(context || obj, e || window.event); + }; + + var originalHandler = handler; + + if (L.Browser.pointer && type.indexOf('touch') === 0) { + this.addPointerListener(obj, type, handler, id); + + } else if (L.Browser.touch && (type === 'dblclick') && this.addDoubleTapListener) { + this.addDoubleTapListener(obj, handler, id); + + } else if ('addEventListener' in obj) { + + if (type === 'mousewheel') { + obj.addEventListener('DOMMouseScroll', handler, false); + obj.addEventListener(type, handler, false); + + } else if ((type === 'mouseenter') || (type === 'mouseleave')) { + handler = function (e) { + e = e || window.event; + if (L.DomEvent._checkMouse(obj, e)) { + originalHandler(e); + } + }; + obj.addEventListener(type === 'mouseenter' ? 'mouseover' : 'mouseout', handler, false); + + } else { + if (type === 'click' && L.Browser.android) { + handler = function (e) { + return L.DomEvent._filterClick(e, originalHandler); + }; + } + obj.addEventListener(type, handler, false); + } + + } else if ('attachEvent' in obj) { + obj.attachEvent('on' + type, handler); + } + + obj[eventsKey] = obj[eventsKey] || {}; + obj[eventsKey][id] = handler; + + return this; + }, + + _off: function (obj, type, fn, context) { + + var id = type + L.stamp(fn) + (context ? '_' + L.stamp(context) : ''), + handler = obj[eventsKey] && obj[eventsKey][id]; + + 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 { + obj.removeEventListener( + type === 'mouseenter' ? 'mouseover' : + type === 'mouseleave' ? 'mouseout' : type, handler, false); + } + + } else if ('detachEvent' in obj) { + obj.detachEvent('on' + type, handler); + } + + obj[eventsKey][id] = null; + + return this; + }, + + stopPropagation: function (e) { + + if (e.stopPropagation) { + e.stopPropagation(); + } else if (e.originalEvent) { // In case of Leaflet event. + e.originalEvent._stopped = true; + } else { + e.cancelBubble = true; + } + L.DomEvent._skipped(e); + + return this; + }, + + disableScrollPropagation: function (el) { + return L.DomEvent.on(el, 'mousewheel MozMousePixelScroll', L.DomEvent.stopPropagation); + }, + + disableClickPropagation: function (el) { + var stop = L.DomEvent.stopPropagation; + + L.DomEvent.on(el, L.Draggable.START.join(' '), stop); + + return L.DomEvent.on(el, { + click: L.DomEvent._fakeStop, + 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); + }, + + // 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; + + handler(e); + } +}; + +L.DomEvent.addListener = L.DomEvent.on; +L.DomEvent.removeListener = L.DomEvent.off; + + +/* + * L.Draggable allows you to add dragging capabilities to any element. Supports mobile devices too. + */ + +L.Draggable = L.Evented.extend({ + + 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, preventOutline) { + this._element = element; + this._dragStartTarget = dragStartTarget || element; + this._preventOutline = preventOutline; + }, + + enable: function () { + if (this._enabled) { return; } + + L.DomEvent.on(this._dragStartTarget, L.Draggable.START.join(' '), this._onDown, this); + + this._enabled = true; + }, + + disable: function () { + if (!this._enabled) { return; } + + L.DomEvent.off(this._dragStartTarget, L.Draggable.START.join(' '), 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 (this._preventOutline) { + L.DomUtil.preventOutline(this._element); + } + + if (L.DomUtil.hasClass(this._element, 'leaflet-zoom-anim')) { return; } + + L.DomUtil.disableImageDrag(); + L.DomUtil.disableTextSelection(); + + if (this._moving) { return; } + + this.fire('down'); + + 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._lastEvent = e; + this._animRequest = L.Util.requestAnimFrame(this._updatePosition, this, true, this._dragStartTarget); + }, + + _updatePosition: function () { + var e = {originalEvent: this._lastEvent}; + this.fire('predrag', e); + L.DomUtil.setPosition(this._element, this._newPos); + this.fire('drag', e); + }, + + _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, this) + .off(document, L.Draggable.END[i], this._onUp, this); + } + + 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 + easeLinearity: 0.2, + + // 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({ + down: this._onDown, + dragstart: this._onDragStart, + drag: this._onDrag, + dragend: this._onDragEnd + }, this); + + this._draggable.on('predrag', this._onPreDragLimit, this); + if (map.options.worldCopyJump) { + this._draggable.on('predrag', this._onPreDragWrap, this); + map.on('zoomend', this._onZoomEnd, this); + + map.whenReady(this._onZoomEnd, this); + } + } + L.DomUtil.addClass(this._map._container, 'leaflet-grab'); + this._draggable.enable(); + }, + + removeHooks: function () { + L.DomUtil.removeClass(this._map._container, 'leaflet-grab'); + this._draggable.disable(); + }, + + moved: function () { + return this._draggable && this._draggable._moved; + }, + + _onDown: function () { + this._map.stop(); + }, + + _onDragStart: function () { + var map = this._map; + + if (this._map.options.maxBounds && this._map.options.maxBoundsViscosity) { + var bounds = L.latLngBounds(this._map.options.maxBounds); + + this._offsetLimit = L.bounds( + this._map.latLngToContainerPoint(bounds.getNorthWest()).multiplyBy(-1), + this._map.latLngToContainerPoint(bounds.getSouthEast()).multiplyBy(-1) + .add(this._map.getSize())); + + this._viscosity = Math.min(1.0, Math.max(0.0, this._map.options.maxBoundsViscosity)); + } else { + this._offsetLimit = null; + } + + map + .fire('movestart') + .fire('dragstart'); + + if (map.options.inertia) { + this._positions = []; + this._times = []; + } + }, + + _onDrag: function (e) { + if (this._map.options.inertia) { + var time = this._lastTime = +new Date(), + pos = this._lastPos = this._draggable._absPos || this._draggable._newPos; + + this._positions.push(pos); + this._times.push(time); + + if (time - this._times[0] > 50) { + this._positions.shift(); + this._times.shift(); + } + } + + this._map + .fire('move', e) + .fire('drag', e); + }, + + _onZoomEnd: function () { + var pxCenter = this._map.getSize().divideBy(2), + pxWorldCenter = this._map.latLngToLayerPoint([0, 0]); + + this._initialWorldOffset = pxWorldCenter.subtract(pxCenter).x; + this._worldWidth = this._map.getPixelWorldBounds().getSize().x; + }, + + _viscousLimit: function(value, threshold) { + return value - (value - threshold) * this._viscosity; + }, + + _onPreDragLimit: function () { + if (!this._viscosity || !this._offsetLimit) { return; } + + var offset = this._draggable._newPos.subtract(this._draggable._startPos); + + var limit = this._offsetLimit; + if (offset.x < limit.min.x) { offset.x = this._viscousLimit(offset.x, limit.min.x); } + if (offset.y < limit.min.y) { offset.y = this._viscousLimit(offset.y, limit.min.y); } + if (offset.x > limit.max.x) { offset.x = this._viscousLimit(offset.x, limit.max.x); } + if (offset.y > limit.max.y) { offset.y = this._viscousLimit(offset.y, limit.max.y); } + + this._draggable._newPos = this._draggable._startPos.add(offset); + }, + + _onPreDragWrap: 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._absPos = this._draggable._newPos.clone(); + this._draggable._newPos.x = newX; + }, + + _onDragEnd: function (e) { + var map = this._map, + options = map.options, + + noInertia = !options.inertia || this._times.length < 2; + + map.fire('dragend', e); + + if (noInertia) { + map.fire('moveend'); + + } else { + + var direction = this._lastPos.subtract(this._positions[0]), + duration = (this._lastTime - 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, + animate: 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, + oldZoom = map.getZoom(), + zoom = e.originalEvent.shiftKey ? Math.ceil(oldZoom) - 1 : Math.floor(oldZoom) + 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, + wheelDebounceTime: 40 +}); + +L.Map.ScrollWheelZoom = L.Handler.extend({ + addHooks: function () { + L.DomEvent.on(this._map._container, { + mousewheel: this._onWheelScroll, + MozMousePixelScroll: L.DomEvent.preventDefault + }, this); + + this._delta = 0; + }, + + removeHooks: function () { + L.DomEvent.off(this._map._container, { + mousewheel: this._onWheelScroll, + MozMousePixelScroll: L.DomEvent.preventDefault + }, this); + }, + + _onWheelScroll: function (e) { + var delta = L.DomEvent.getWheelDelta(e); + var debounce = this._map.options.wheelDebounceTime; + + this._delta += delta; + this._lastMousePos = this._map.mouseEventToContainerPoint(e); + + if (!this._startTime) { + this._startTime = +new Date(); + } + + var left = Math.max(debounce - (+new Date() - this._startTime), 0); + + clearTimeout(this._timer); + this._timer = setTimeout(L.bind(this._performZoom, this), left); + + L.DomEvent.stop(e); + }, + + _performZoom: function () { + var map = this._map, + delta = this._delta, + zoom = map.getZoom(); + + map.stop(); // stop panning and fly animations if any + + 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, touch, + doubleTap = false, + delay = 250; + + function onTouchStart(e) { + var count; + + if (L.Browser.pointer) { + count = L.DomEvent._pointersCount; + } 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() { + if (doubleTap) { + if (L.Browser.pointer) { + // work around .type being readonly with MSPointer* events + var newTouch = {}, + prop, i; + + for (i in touch) { + prop = touch[i]; + newTouch[i] = prop && prop.bind ? prop.bind(touch) : prop; + } + touch = newTouch; + } + touch.type = 'dblclick'; + handler(touch); + last = null; + } + } + + var pre = '_leaflet_', + touchstart = this._touchstart, + touchend = this._touchend; + + obj[pre + touchstart + id] = onTouchStart; + obj[pre + touchend + id] = onTouchEnd; + + obj.addEventListener(touchstart, onTouchStart, false); + obj.addEventListener(touchend, onTouchEnd, false); + return this; + }, + + removeDoubleTapListener: function (obj, id) { + var pre = '_leaflet_', + touchend = obj[pre + this._touchend + id]; + + obj.removeEventListener(this._touchstart, obj[pre + this._touchstart + id], false); + obj.removeEventListener(this._touchend, touchend, false); + + return this; + } +}); + + +/* + * Extends L.DomEvent to provide touch support for Internet Explorer and Windows-based devices. + */ + +L.extend(L.DomEvent, { + + 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: {}, + _pointersCount: 0, + + // Provides a touch events wrapper for (ms)pointer events. + // ref http://www.w3.org/TR/pointerevents/ https://www.w3.org/Bugs/Public/show_bug.cgi?id=22890 + + addPointerListener: function (obj, type, handler, id) { + + if (type === 'touchstart') { + this._addPointerStart(obj, handler, id); + + } else if (type === 'touchmove') { + this._addPointerMove(obj, handler, id); + + } else if (type === 'touchend') { + this._addPointerEnd(obj, handler, id); + } + + return this; + }, + + removePointerListener: function (obj, type, id) { + var handler = obj['_leaflet_' + type + id]; + + if (type === 'touchstart') { + obj.removeEventListener(this.POINTER_DOWN, handler, false); + + } else if (type === 'touchmove') { + obj.removeEventListener(this.POINTER_MOVE, handler, false); + + } else if (type === 'touchend') { + obj.removeEventListener(this.POINTER_UP, handler, false); + obj.removeEventListener(this.POINTER_CANCEL, handler, false); + } + + return this; + }, + + _addPointerStart: function (obj, handler, id) { + var onDown = L.bind(function (e) { + L.DomEvent.preventDefault(e); + + this._handlePointer(e, handler); + }, this); + + obj['_leaflet_touchstart' + id] = onDown; + obj.addEventListener(this.POINTER_DOWN, onDown, false); + + // need to keep track of what pointers and how many are active to provide e.touches emulation + if (!this._pointerDocListener) { + var pointerUp = L.bind(this._globalPointerUp, this); + + // we listen documentElement as any drags that end by moving the touch off the screen get fired there + document.documentElement.addEventListener(this.POINTER_DOWN, L.bind(this._globalPointerDown, this), true); + document.documentElement.addEventListener(this.POINTER_MOVE, L.bind(this._globalPointerMove, this), true); + document.documentElement.addEventListener(this.POINTER_UP, pointerUp, true); + document.documentElement.addEventListener(this.POINTER_CANCEL, pointerUp, true); + + this._pointerDocListener = true; + } + }, + + _globalPointerDown: function (e) { + this._pointers[e.pointerId] = e; + this._pointersCount++; + }, + + _globalPointerMove: function (e) { + if (this._pointers[e.pointerId]) { + this._pointers[e.pointerId] = e; + } + }, + + _globalPointerUp: function (e) { + delete this._pointers[e.pointerId]; + this._pointersCount--; + }, + + _handlePointer: function (e, handler) { + e.touches = []; + for (var i in this._pointers) { + e.touches.push(this._pointers[i]); + } + e.changedTouches = [e]; + + handler(e); + }, + + _addPointerMove: function (obj, handler, id) { + var onMove = L.bind(function (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; } + + this._handlePointer(e, handler); + }, this); + + obj['_leaflet_touchmove' + id] = onMove; + obj.addEventListener(this.POINTER_MOVE, onMove, false); + }, + + _addPointerEnd: function (obj, handler, id) { + var onUp = L.bind(function (e) { + this._handlePointer(e, handler); + }, this); + + obj['_leaflet_touchend' + id] = onUp; + obj.addEventListener(this.POINTER_UP, onUp, false); + obj.addEventListener(this.POINTER_CANCEL, onUp, false); + } +}); + + +/* + * 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.mouseEventToContainerPoint(e.touches[0]), + p2 = map.mouseEventToContainerPoint(e.touches[1]); + + this._centerPoint = map.getSize()._divideBy(2); + this._startLatLng = map.containerPointToLatLng(this._centerPoint); + if (map.options.touchZoom !== 'center') { + this._pinchStartLatLng = map.containerPointToLatLng(p1.add(p2)._divideBy(2)); + } + + this._startDist = p1.distanceTo(p2); + this._startZoom = map.getZoom(); + + this._moved = false; + this._zooming = true; + + map.stop(); + + L.DomEvent + .on(document, 'touchmove', this._onTouchMove, this) + .on(document, 'touchend', this._onTouchEnd, this); + + L.DomEvent.preventDefault(e); + }, + + _onTouchMove: function (e) { + if (!e.touches || e.touches.length !== 2 || !this._zooming) { return; } + + var map = this._map, + p1 = map.mouseEventToContainerPoint(e.touches[0]), + p2 = map.mouseEventToContainerPoint(e.touches[1]), + scale = p1.distanceTo(p2) / this._startDist; + + + this._zoom = map.getScaleZoom(scale, this._startZoom); + + if (map.options.touchZoom === 'center') { + this._center = this._startLatLng; + if (scale === 1) { return; } + } else { + // Get delta from pinch to center, so centerLatLng is delta applied to initial pinchLatLng + var delta = p1._add(p2)._divideBy(2)._subtract(this._centerPoint); + if (scale === 1 && delta.x === 0 && delta.y === 0) { return; } + this._center = map.unproject(map.project(this._pinchStartLatLng).subtract(delta)); + } + + if (!map.options.bounceAtZoomLimits) { + if ((this._zoom <= map.getMinZoom() && scale < 1) || + (this._zoom >= map.getMaxZoom() && scale > 1)) { return; } + } + + if (!this._moved) { + map._moveStart(true); + this._moved = true; + } + + L.Util.cancelAnimFrame(this._animRequest); + + var moveFn = L.bind(map._move, map, this._center, this._zoom, {pinch: true, round: false}); + this._animRequest = L.Util.requestAnimFrame(moveFn, this, true, map._container); + + L.DomEvent.preventDefault(e); + }, + + _onTouchEnd: function () { + if (!this._moved || !this._zooming) { + this._zooming = false; + return; + } + + this._zooming = false; + L.Util.cancelAnimFrame(this._animRequest); + + L.DomEvent + .off(document, 'touchmove', this._onTouchMove) + .off(document, 'touchend', this._onTouchEnd); + + var zoom = this._zoom; + zoom = this._map._limitZoom(zoom - this._startZoom > 0 ? Math.ceil(zoom) : Math.floor(zoom)); + + + this._map._animateZoom(this._center, zoom, true, true); + } +}); + +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); + + this._simulateEvent('mousedown', first); + + L.DomEvent.on(document, { + touchmove: this._onMove, + touchend: this._onUp + }, this); + }, + + _onUp: function (e) { + clearTimeout(this._holdTimeout); + + L.DomEvent.off(document, { + touchmove: this._onMove, + 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'); + } + + this._simulateEvent('mouseup', first); + + // 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; + }, + + addHooks: function () { + L.DomEvent.on(this._container, 'mousedown', this._onMouseDown, this); + }, + + removeHooks: function () { + L.DomEvent.off(this._container, 'mousedown', this._onMouseDown, this); + }, + + moved: function () { + return this._moved; + }, + + _onMouseDown: function (e) { + if (!e.shiftKey || ((e.which !== 1) && (e.button !== 1))) { return false; } + + this._moved = false; + + L.DomUtil.disableTextSelection(); + L.DomUtil.disableImageDrag(); + + this._startPoint = this._map.mouseEventToContainerPoint(e); + + L.DomEvent.on(document, { + contextmenu: L.DomEvent.stop, + mousemove: this._onMouseMove, + mouseup: this._onMouseUp, + keydown: this._onKeyDown + }, this); + }, + + _onMouseMove: function (e) { + if (!this._moved) { + this._moved = true; + + this._box = L.DomUtil.create('div', 'leaflet-zoom-box', this._container); + L.DomUtil.addClass(this._container, 'leaflet-crosshair'); + + this._map.fire('boxzoomstart'); + } + + this._point = this._map.mouseEventToContainerPoint(e); + + var bounds = new L.Bounds(this._point, this._startPoint), + size = bounds.getSize(); + + L.DomUtil.setPosition(this._box, bounds.min); + + this._box.style.width = size.x + 'px'; + this._box.style.height = size.y + 'px'; + }, + + _finish: function () { + if (this._moved) { + L.DomUtil.remove(this._box); + L.DomUtil.removeClass(this._container, 'leaflet-crosshair'); + } + + L.DomUtil.enableTextSelection(); + L.DomUtil.enableImageDrag(); + + L.DomEvent.off(document, { + contextmenu: L.DomEvent.stop, + mousemove: this._onMouseMove, + mouseup: this._onMouseUp, + keydown: this._onKeyDown + }, this); + }, + + _onMouseUp: function (e) { + if ((e.which !== 1) && (e.button !== 1)) { return; } + + this._finish(); + + if (!this._moved) { return; } + + var bounds = new L.LatLngBounds( + this._map.containerPointToLatLng(this._startPoint), + this._map.containerPointToLatLng(this._point)); + + this._map + .fitBounds(bounds) + .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, 54, 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, + blur: this._onBlur, + mousedown: this._onMouseDown + }, this); + + this._map.on({ + focus: this._addHooks, + blur: this._removeHooks + }, this); + }, + + removeHooks: function () { + this._removeHooks(); + + L.DomEvent.off(this._map._container, { + focus: this._onFocus, + blur: this._onBlur, + mousedown: this._onMouseDown + }, this); + + this._map.off({ + focus: this._addHooks, + 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) { + if (e.altKey || e.ctrlKey || e.metaKey) { return; } + + 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() + (e.shiftKey ? 3 : 1) * this._zoomKeys[key]); + + } else if (key === 27) { + map.closePopup(); + + } 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, true); + } + + this._draggable.on({ + dragstart: this._onDragStart, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).enable(); + + L.DomUtil.addClass(icon, 'leaflet-marker-draggable'); + }, + + removeHooks: function () { + this._draggable.off({ + dragstart: this._onDragStart, + drag: this._onDrag, + dragend: this._onDragEnd + }, this).disable(); + + if (this._marker._icon) { + 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 (e) { + 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; + e.latlng = latlng; + + marker + .fire('move', e) + .fire('drag', e); + }, + + _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.remove(); + 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; + }, + + remove: function () { + if (!this._map) { + return this; + } + + L.DomUtil.remove(this._container); + + if (this.onRemove) { + this.onRemove(this._map); + } + + this._map = null; + + return this; + }, + + _refocusOnMap: function (e) { + // if map exists and event is not a keyboard event + if (this._map && e && e.screenX > 0 && e.screenY > 0) { + 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.remove(); + 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 () { + L.DomUtil.remove(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'), + options = this.options; + + this._zoomInButton = this._createButton(options.zoomInText, options.zoomInTitle, + zoomName + '-in', container, this._zoomIn); + this._zoomOutButton = this._createButton(options.zoomOutText, options.zoomOutTitle, + zoomName + '-out', container, this._zoomOut); + + this._updateDisabled(); + map.on('zoomend zoomlevelschange', this._updateDisabled, this); + + return container; + }, + + onRemove: function (map) { + map.off('zoomend zoomlevelschange', this._updateDisabled, this); + }, + + disable: function () { + this._disabled = true; + this._updateDisabled(); + return this; + }, + + enable: function () { + this._disabled = false; + this._updateDisabled(); + return this; + }, + + _zoomIn: function (e) { + if (!this._disabled) { + this._map.zoomIn(e.shiftKey ? 3 : 1); + } + }, + + _zoomOut: function (e) { + if (!this._disabled) { + this._map.zoomOut(e.shiftKey ? 3 : 1); + } + }, + + _createButton: function (html, title, className, container, fn) { + var link = L.DomUtil.create('a', className, container); + link.innerHTML = html; + link.href = '#'; + link.title = title; + + L.DomEvent + .on(link, 'mousedown dblclick', L.DomEvent.stopPropagation) + .on(link, 'click', L.DomEvent.stop) + .on(link, 'click', fn, this) + .on(link, 'click', this._refocusOnMap, this); + + return link; + }, + + _updateDisabled: function () { + var map = this._map, + className = 'leaflet-disabled'; + + L.DomUtil.removeClass(this._zoomInButton, className); + L.DomUtil.removeClass(this._zoomOutButton, className); + + if (this._disabled || map._zoom === map.getMinZoom()) { + L.DomUtil.addClass(this._zoomOutButton, className); + } + if (this._disabled || 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'); + if (L.DomEvent) { + L.DomEvent.disableClickPropagation(this._container); + } + + // TODO ugly, refactor + for (var i in map._layers) { + if (map._layers[i].getAttribution) { + this.addAttribution(map._layers[i].getAttribution()); + } + } + + this._update(); + + return this._container; + }, + + setPrefix: function (prefix) { + this.options.prefix = prefix; + this._update(); + return this; + }, + + addAttribution: function (text) { + if (!text) { return this; } + + if (!this._attributions[text]) { + this._attributions[text] = 0; + } + this._attributions[text]++; + + this._update(); + + return this; + }, + + removeAttribution: function (text) { + if (!text) { return this; } + + 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(' | '); + } +}); + +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) { + var className = 'leaflet-control-scale', + container = L.DomUtil.create('div', className), + options = this.options; + + this._addScales(options, className + '-line', 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, container); + } + if (options.imperial) { + this._iScale = L.DomUtil.create('div', className, container); + } + }, + + _update: function () { + var map = this._map, + y = map.getSize().y / 2; + + var maxMeters = map.distance( + map.containerPointToLatLng([0, y]), + map.containerPointToLatLng([this.options.maxWidth, y])); + + this._updateScales(maxMeters); + }, + + _updateScales: function (maxMeters) { + if (this.options.metric && maxMeters) { + this._updateMetric(maxMeters); + } + if (this.options.imperial && maxMeters) { + this._updateImperial(maxMeters); + } + }, + + _updateMetric: function (maxMeters) { + var meters = this._getRoundNum(maxMeters), + label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km'; + + this._updateScale(this._mScale, label, meters / maxMeters); + }, + + _updateImperial: function (maxMeters) { + var maxFeet = maxMeters * 3.2808399, + maxMiles, miles, feet; + + if (maxFeet > 5280) { + maxMiles = maxFeet / 5280; + miles = this._getRoundNum(maxMiles); + this._updateScale(this._iScale, miles + ' mi', miles / maxMiles); + + } else { + feet = this._getRoundNum(maxFeet); + this._updateScale(this._iScale, feet + ' ft', feet / maxFeet); + } + }, + + _updateScale: function (scale, text, ratio) { + scale.style.width = Math.round(this.options.maxWidth * ratio) + 'px'; + scale.innerHTML = text; + }, + + _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, + hideSingleBase: false + }, + + 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 () { + this._initLayout(); + this._update(); + + return this._container; + }, + + addBaseLayer: function (layer, name) { + this._addLayer(layer, name); + return this._update(); + }, + + addOverlay: function (layer, name) { + this._addLayer(layer, name, true); + return this._update(); + }, + + removeLayer: function (layer) { + layer.off('add remove', this._onLayerChange, this); + + delete this._layers[L.stamp(layer)]; + return this._update(); + }, + + _initLayout: function () { + var className = 'leaflet-control-layers', + container = this._container = L.DomUtil.create('div', className); + + // makes this work on IE 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, { + mouseenter: this._expand, + mouseleave: 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) { + layer.on('add remove', this._onLayerChange, this); + + 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; } + + L.DomUtil.empty(this._baseLayersList); + L.DomUtil.empty(this._overlaysList); + + var baseLayersPresent, overlaysPresent, i, obj, baseLayersCount = 0; + + for (i in this._layers) { + obj = this._layers[i]; + this._addItem(obj); + overlaysPresent = overlaysPresent || obj.overlay; + baseLayersPresent = baseLayersPresent || !obj.overlay; + baseLayersCount += !obj.overlay ? 1 : 0; + } + + // Hide base layers section if there's only one layer. + if (this.options.hideSingleBase) { + baseLayersPresent = baseLayersPresent && baseLayersCount > 1; + this._baseLayersList.style.display = baseLayersPresent ? '' : 'none'; + } + + this._separator.style.display = overlaysPresent && baseLayersPresent ? '' : 'none'; + + return this; + }, + + _onLayerChange: function (e) { + if (!this._handlingClick) { + this._update(); + } + + var overlay = this._layers[L.stamp(e.target)].overlay; + + var type = overlay ? + (e.type === 'add' ? 'overlayadd' : 'overlayremove') : + (e.type === 'add' ? 'baselayerchange' : null); + + if (type) { + this._map.fire(type, e.target); + } + }, + + // 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 = ''; + + var radioFragment = document.createElement('div'); + radioFragment.innerHTML = radioHtml; + + return radioFragment.firstChild; + }, + + _addItem: function (obj) { + var label = document.createElement('label'), + checked = this._map.hasLayer(obj.layer), + input; + + if (obj.overlay) { + input = document.createElement('input'); + input.type = 'checkbox'; + input.className = 'leaflet-control-layers-selector'; + input.defaultChecked = checked; + } else { + input = this._createRadioElement('leaflet-base-layers', checked); + } + + input.layerId = L.stamp(obj.layer); + + L.DomEvent.on(input, 'click', this._onInputClick, this); + + var name = document.createElement('span'); + name.innerHTML = ' ' + obj.name; + + // Helps from preventing layer control flicker when checkboxes are disabled + // https://github.com/Leaflet/Leaflet/issues/2771 + var holder = document.createElement('div'); + + label.appendChild(holder); + holder.appendChild(input); + holder.appendChild(name); + + var container = obj.overlay ? this._overlaysList : this._baseLayersList; + container.appendChild(label); + + return label; + }, + + _onInputClick: function () { + var inputs = this._form.getElementsByTagName('input'), + input, layer, hasLayer; + var addedLayers = [], + removedLayers = []; + + this._handlingClick = true; + + for (var i = 0, len = inputs.length; i < len; i++) { + input = inputs[i]; + layer = this._layers[input.layerId].layer; + hasLayer = this._map.hasLayer(layer); + + if (input.checked && !hasLayer) { + addedLayers.push(layer); + + } else if (!input.checked && hasLayer) { + removedLayers.push(layer); + } + } + + // Bugfix issue 2318: Should remove all old layers before readding new ones + for (i = 0; i < removedLayers.length; i++) { + this._map.removeLayer(removedLayers[i]); + } + for (i = 0; i < addedLayers.length; i++) { + this._map.addLayer(addedLayers[i]); + } + + this._handlingClick = false; + + this._refocusOnMap(); + }, + + _expand: function () { + L.DomUtil.addClass(this._container, 'leaflet-control-layers-expanded'); + var acceptableHeight = this._map._size.y - (this._container.offsetTop * 4); + if (acceptableHeight < this._form.clientHeight) + { + L.DomUtil.addClass(this._form, 'leaflet-control-layers-scrollbar'); + this._form.style.height = acceptableHeight + 'px'; + } + }, + + _collapse: function () { + L.DomUtil.removeClass(this._container, 'leaflet-control-layers-expanded'); + } +}); + +L.control.layers = function (baseLayers, overlays, options) { + return new L.Control.Layers(baseLayers, overlays, options); +}; + + +/* + * L.PosAnimation powers Leaflet pan animations internally. + */ + +L.PosAnimation = L.Evented.extend({ + + run: function (el, newPos, duration, easeLinearity) { // (HTMLElement, Point[, Number, Number]) + this.stop(); + + this._el = el; + this._inProgress = true; + this._duration = duration || 0.25; + this._easeOutPower = 1 / Math.max(easeLinearity || 0.5, 0.2); + + this._startPos = L.DomUtil.getPosition(el); + this._offset = newPos.subtract(this._startPos); + this._startTime = +new Date(); + + this.fire('start'); + + this._animate(); + }, + + stop: function () { + if (!this._inProgress) { return; } + + this._step(true); + this._complete(); + }, + + _animate: function () { + // animation loop + this._animId = L.Util.requestAnimFrame(this._animate, this); + this._step(); + }, + + _step: function (round) { + var elapsed = (+new Date()) - this._startTime, + duration = this._duration * 1000; + + if (elapsed < duration) { + this._runFrame(this._easeOut(elapsed / duration), round); + } else { + this._runFrame(1); + this._complete(); + } + }, + + _runFrame: function (progress, round) { + var pos = this._startPos.add(this._offset.multiplyBy(progress)); + if (round) { + pos._round(); + } + L.DomUtil.setPosition(this._el, pos); + + this.fire('step'); + }, + + _complete: function () { + L.Util.cancelAnimFrame(this._animId); + + this._inProgress = false; + this.fire('end'); + }, + + _easeOut: function (t) { + return 1 - Math.pow(1 - t, this._easeOutPower); + } +}); + + +/* + * Extends L.Map to handle panning animations. + */ + +L.Map.include({ + + setView: function (center, zoom, options) { + + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + center = this._limitCenter(L.latLng(center), zoom, this.options.maxBounds); + options = options || {}; + + this.stop(); + + if (this._loaded && !options.reset && options !== true) { + + if (options.animate !== undefined) { + options.zoom = L.extend({animate: options.animate}, options.zoom); + options.pan = L.extend({animate: options.animate}, options.pan); + } + + // try animating pan or zoom + var animated = (this._zoom !== zoom) ? + this._tryAnimatedZoom && this._tryAnimatedZoom(center, zoom, options.zoom) : + this._tryAnimatedPan(center, options.pan); + + if (animated) { + // prevent resize handler call, the view will refresh after animation anyway + clearTimeout(this._sizeTimer); + return this; + } + } + + // animation didn't start, just reset the map view + this._resetView(center, zoom); + + return this; + }, + + panBy: function (offset, options) { + offset = L.point(offset).round(); + options = options || {}; + + if (!offset.x && !offset.y) { + return this; + } + //If we pan too far then chrome gets issues with tiles + // and makes them disappear or appear in the wrong place (slightly offset) #2602 + if (options.animate !== true && !this.getSize().contains(offset)) { + this._resetView(this.unproject(this.project(this.getCenter()).add(offset)), this.getZoom()); + return this; + } + + if (!this._panAnim) { + this._panAnim = new L.PosAnimation(); + + this._panAnim.on({ + 'step': this._onPanTransitionStep, + 'end': this._onPanTransitionEnd + }, this); + } + + // don't fire movestart if animating inertia + if (!options.noMoveStart) { + this.fire('movestart'); + } + + // animate pan unless animate: false specified + if (options.animate !== false) { + L.DomUtil.addClass(this._mapPane, 'leaflet-pan-anim'); + + var newPos = this._getMapPanePos().subtract(offset); + this._panAnim.run(this._mapPane, newPos, options.duration || 0.25, options.easeLinearity); + } else { + this._rawPanBy(offset); + this.fire('move').fire('moveend'); + } + + return this; + }, + + _onPanTransitionStep: function () { + this.fire('move'); + }, + + _onPanTransitionEnd: function () { + L.DomUtil.removeClass(this._mapPane, 'leaflet-pan-anim'); + this.fire('moveend'); + }, + + _tryAnimatedPan: function (center, options) { + // difference between the new and current centers in pixels + var offset = this._getCenterOffset(center)._floor(); + + // don't animate too far unless animate: true specified in options + if ((options && options.animate) !== true && !this.getSize().contains(offset)) { return false; } + + this.panBy(offset, options); + + return (options && options.animate) !== false; + } +}); + + +/* + * Extends L.Map to handle zoom animations. + */ + +L.Map.mergeOptions({ + zoomAnimation: true, + zoomAnimationThreshold: 4 +}); + +var zoomAnimated = L.DomUtil.TRANSITION && L.Browser.any3d && !L.Browser.mobileOpera; + +if (zoomAnimated) { + + L.Map.addInitHook(function () { + // don't animate on browsers without hardware-accelerated transitions or old Android/Opera + this._zoomAnimated = this.options.zoomAnimation; + + // zoom transitions run with the same duration for all layers, so if one of transitionend events + // happens after starting zoom animation (propagating to the map pane), we know that it ended globally + if (this._zoomAnimated) { + + this._createAnimProxy(); + + L.DomEvent.on(this._proxy, L.DomUtil.TRANSITION_END, this._catchTransitionEnd, this); + } + }); +} + +L.Map.include(!zoomAnimated ? {} : { + + _createAnimProxy: function () { + + var proxy = this._proxy = L.DomUtil.create('div', 'leaflet-proxy leaflet-zoom-animated'); + this._panes.mapPane.appendChild(proxy); + + this.on('zoomanim', function (e) { + var prop = L.DomUtil.TRANSFORM, + transform = proxy.style[prop]; + + L.DomUtil.setTransform(proxy, this.project(e.center, e.zoom), this.getZoomScale(e.zoom, 1)); + + // workaround for case when transform is the same and so transitionend event is not fired + if (transform === proxy.style[prop] && this._animatingZoom) { + this._onZoomTransitionEnd(); + } + }, this); + + this.on('load moveend', function () { + var c = this.getCenter(), + z = this.getZoom(); + L.DomUtil.setTransform(proxy, this.project(c, z), this.getZoomScale(z, 1)); + }, this); + }, + + _catchTransitionEnd: function (e) { + if (this._animatingZoom && e.propertyName.indexOf('transform') >= 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); + + // 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; } + + L.Util.requestAnimFrame(function () { + this + ._moveStart(true) + ._animateZoom(center, zoom, true); + }, this); + + return true; + }, + + _animateZoom: function (center, zoom, startAnim, noUpdate) { + if (startAnim) { + this._animatingZoom = true; + + // remember what center/zoom to set after animation + this._animateToCenter = center; + this._animateToZoom = zoom; + + L.DomUtil.addClass(this._mapPane, 'leaflet-zoom-anim'); + } + + this.fire('zoomanim', { + center: center, + zoom: zoom, + noUpdate: noUpdate + }); + }, + + _onZoomTransitionEnd: function () { + + this._animatingZoom = false; + + L.DomUtil.removeClass(this._mapPane, 'leaflet-zoom-anim'); + + this + ._move(this._animateToCenter, this._animateToZoom) + ._moveEnd(true); + } +}); + + + +L.Map.include({ + flyTo: function (targetCenter, targetZoom, options) { + + options = options || {}; + if (options.animate === false || !L.Browser.any3d) { + return this.setView(targetCenter, targetZoom, options); + } + + this.stop(); + + var from = this.project(this.getCenter()), + to = this.project(targetCenter), + size = this.getSize(), + startZoom = this._zoom; + + targetCenter = L.latLng(targetCenter); + targetZoom = targetZoom === undefined ? startZoom : targetZoom; + + var w0 = Math.max(size.x, size.y), + w1 = w0 * this.getZoomScale(startZoom, targetZoom), + u1 = to.distanceTo(from), + rho = 1.42, + rho2 = rho * rho; + + function r(i) { + var b = (w1 * w1 - w0 * w0 + (i ? -1 : 1) * rho2 * rho2 * u1 * u1) / (2 * (i ? w1 : w0) * rho2 * u1); + return Math.log(Math.sqrt(b * b + 1) - b); + } + + function sinh(n) { return (Math.exp(n) - Math.exp(-n)) / 2; } + function cosh(n) { return (Math.exp(n) + Math.exp(-n)) / 2; } + function tanh(n) { return sinh(n) / cosh(n); } + + var r0 = r(0); + + function w(s) { return w0 * (cosh(r0) / cosh(r0 + rho * s)); } + function u(s) { return w0 * (cosh(r0) * tanh(r0 + rho * s) - sinh(r0)) / rho2; } + + function easeOut(t) { return 1 - Math.pow(1 - t, 1.5); } + + var start = Date.now(), + S = (r(1) - r0) / rho, + duration = options.duration ? 1000 * options.duration : 1000 * S * 0.8; + + function frame() { + var t = (Date.now() - start) / duration, + s = easeOut(t) * S; + + if (t <= 1) { + this._flyToFrame = L.Util.requestAnimFrame(frame, this); + + this._move( + this.unproject(from.add(to.subtract(from).multiplyBy(u(s) / u1)), startZoom), + this.getScaleZoom(w0 / w(s), startZoom)); + + } else { + this + ._move(targetCenter, targetZoom) + ._moveEnd(true); + } + } + + this._moveStart(true); + + frame.call(this); + return this; + }, + + flyToBounds: function(bounds, options) { + var target = this._getBoundsCenterZoom(bounds, options); + return this.flyTo(target.center, target.zoom, options); + } +}); + + +/* + * Provides L.Map with convenient shortcuts for using browser geolocation features. + */ + +L.Map.include({ + _defaultLocateOptions: { + timeout: 10000, + watch: false + // setView: false + // maxZoom: + // maximumAge: 0 + // enableHighAccuracy: false + }, + + locate: function (/*Object*/ options) { + + options = this._locateOptions = L.extend({}, this._defaultLocateOptions, options); + + if (!('geolocation' in navigator)) { + 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), + bounds = latlng.toBounds(pos.coords.accuracy), + options = this._locateOptions; + + if (options.setView) { + var zoom = this.getBoundsZoom(bounds); + this.setView(latlng, options.maxZoom ? Math.min(zoom, options.maxZoom) : 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/public/assets/vendor/leaflet-ajax/example/leaflet.css b/public/assets/vendor/leaflet-ajax/example/leaflet.css new file mode 100644 index 00000000..fd827b44 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/leaflet.css @@ -0,0 +1,511 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-map-pane svg, +.leaflet-map-pane canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + -ms-touch-action: none; + 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; + } +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg, +.leaflet-container .leaflet-tile-pane 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; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 8; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.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 { + will-change: opacity; + } +.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-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +.leaflet-zoom-anim .leaflet-zoom-animated { + will-change: transform; + } +.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 { + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + 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-scrollbar { + overflow-y: scroll; + padding-right: 5px; + } +.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; + color: #333; + 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; + border: none; + 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/public/assets/vendor/leaflet-ajax/example/leaflet.spin.js b/public/assets/vendor/leaflet-ajax/example/leaflet.spin.js new file mode 100644 index 00000000..cee5d6aa --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/leaflet.spin.js @@ -0,0 +1,41 @@ +L.SpinMapMixin = { + spin: function (state, options) { + if (!!state) { + // start spinning ! + if (!this._spinner) { + this._spinner = new Spinner(options).spin(this._container); + this._spinning = 0; + } + this._spinning++; + } + else { + this._spinning--; + if (this._spinning <= 0) { + // end spinning ! + if (this._spinner) { + this._spinner.stop(); + this._spinner = null; + } + } + } + } +}; + +L.Map.include(L.SpinMapMixin); + +L.Map.addInitHook(function () { + this.on('layeradd', function (e) { + // If added layer is currently loading, spin ! + if (e.layer.loading) this.spin(true); + if (typeof e.layer.on != 'function') return; + e.layer.on('data:loading', function () { this.spin(true); }, this); + e.layer.on('data:loaded', function () { this.spin(false); }, this); + }, this); + this.on('layerremove', function (e) { + // Clean-up + if (e.layer.loading) this.spin(false); + if (typeof e.layer.on != 'function') return; + e.layer.off('data:loaded'); + e.layer.off('data:loading'); + }, this); +}); diff --git a/public/assets/vendor/leaflet-ajax/example/local.html b/public/assets/vendor/leaflet-ajax/example/local.html new file mode 100644 index 00000000..b69a5191 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/local.html @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + Leaflet AJAX + + +
+ + + + + diff --git a/public/assets/vendor/leaflet-ajax/example/spin.js b/public/assets/vendor/leaflet-ajax/example/spin.js new file mode 100644 index 00000000..1fc4c5c8 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/example/spin.js @@ -0,0 +1 @@ +(function(t,e){if(typeof exports=="object")module.exports=e();else if(typeof define=="function"&&define.amd)define(e);else t.Spinner=e()})(this,function(){"use strict";var t=["webkit","Moz","ms","O"],e={},i;function o(t,e){var i=document.createElement(t||"div"),o;for(o in e)i[o]=e[o];return i}function n(t){for(var e=1,i=arguments.length;e>1):parseInt(n.left,10)+s)+"px",top:(n.top=="auto"?l.y-a.y+(t.offsetHeight>>1):parseInt(n.top,10)+s)+"px"})}r.setAttribute("role","progressbar");e.lines(r,e.opts);if(!i){var d=0,p=(n.lines-1)*(1-n.direction)/2,c,h=n.fps,m=h/n.speed,y=(1-n.opacity)/(m*n.trail/100),g=m/n.lines;(function v(){d++;for(var t=0;t>1)+"px"})}for(;r',e)}r.addRule(".spin-vml","behavior:url(#default#VML)");c.prototype.lines=function(e,i){var o=i.length+i.width,r=2*o;function s(){return f(t("group",{coordsize:r+" "+r,coordorigin:-o+" "+-o}),{width:r,height:r})}var a=-(i.width+i.length)*2+"px",l=f(s(),{position:"absolute",top:a,left:a}),u;function p(e,r,a){n(l,n(f(s(),{rotation:360/i.lines*e+"deg",left:~~r}),n(f(t("roundrect",{arcsize:i.corners}),{width:o,height:i.width,left:i.radius,top:-i.width>>1,filter:a}),t("fill",{color:d(i.color,e),opacity:i.opacity}),t("stroke",{opacity:0}))))}if(i.shadow)for(u=1;u<=i.lines;u++)p(u,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(u=1;u<=i.lines;u++)p(u);return n(e,l)};c.prototype.opacity=function(t,e,i,o){var n=t.firstChild;o=o.shadow&&o.lines||0;if(n&&e+o dist/leaflet.ajax.js && uglifyjs -mc < dist/leaflet.ajax.js > dist/leaflet.ajax.min.js" + }, + "devDependencies": { + "browserify": "^11.0.1", + "express": "^4.13.3", + "semistandard": "^9.1.0", + "uglify-js": "^2.4.24" + }, + "repository": { + "type": "git", + "url": "git://github.com/calvinmetcalf/leaflet-ajax.git" + }, + "keywords": [ + "leaflet", + "ajax", + "geojson" + ], + "author": "Calvin Metcalf", + "license": "MIT", + "bugs": { + "url": "https://github.com/calvinmetcalf/leaflet-ajax/issues" + }, + "dependencies": { + "lie": "^3.0.1" + } +} diff --git a/public/assets/vendor/leaflet-ajax/server.js b/public/assets/vendor/leaflet-ajax/server.js new file mode 100644 index 00000000..d4d7aeaa --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/server.js @@ -0,0 +1,13 @@ +'use strict'; +var express = require('express'); +var app = express(); +var path = require('path'); +var fs = require('fs'); +var counties = JSON.parse(fs.readFileSync(path.join(__dirname, 'example', 'counties.geojson'), {encoding: 'utf8'})); + +app.get('/example/counties.jsonp', function (req, res){ + res.jsonp(counties); +}); +app.use('/example', express.static(path.join(__dirname, 'example'))); +app.use('/dist', express.static(path.join(__dirname, 'dist'))); +app.listen(3000); diff --git a/public/assets/vendor/leaflet-ajax/src/ajax.js b/public/assets/vendor/leaflet-ajax/src/ajax.js new file mode 100644 index 00000000..97c8e0e5 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/src/ajax.js @@ -0,0 +1,51 @@ +'use strict'; +var jsonp = require('./jsonp'); +var Promise = require('lie'); + +module.exports = function (url, options) { + options = options || {}; + if (options.jsonp) { + return jsonp(url, options); + } + var request; + var cancel; + var out = new Promise(function (resolve, reject) { + cancel = reject; + if (global.XMLHttpRequest === undefined) { + reject('XMLHttpRequest is not supported'); + } + var response; + request = new global.XMLHttpRequest(); + request.open('GET', url); + if (options.headers) { + Object.keys(options.headers).forEach(function (key) { + request.setRequestHeader(key, options.headers[key]); + }); + } + request.onreadystatechange = function () { + if (request.readyState === 4) { + if ((request.status < 400 && options.local) || request.status === 200) { + if (global.JSON) { + response = JSON.parse(request.responseText); + } else { + reject(new Error('JSON is not supported')); + } + resolve(response); + } else { + if (!request.status) { + reject('Attempted cross origin request without CORS enabled'); + } else { + reject(request.statusText); + } + } + } + }; + request.send(); + }); + out.catch(function (reason) { + request.abort(); + return reason; + }); + out.abort = cancel; + return out; +}; diff --git a/public/assets/vendor/leaflet-ajax/src/index.js b/public/assets/vendor/leaflet-ajax/src/index.js new file mode 100644 index 00000000..d8259277 --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/src/index.js @@ -0,0 +1,133 @@ +'use strict'; +var L = global.L || require('leaflet'); +var Promise = require('lie'); +var ajax = require('./ajax'); +L.GeoJSON.AJAX = L.GeoJSON.extend({ + defaultAJAXparams: { + dataType: 'json', + callbackParam: 'callback', + local: false, + middleware: function (f) { + return f; + } + }, + initialize: function (url, options) { + this.urls = []; + if (url) { + if (typeof url === 'string') { + this.urls.push(url); + } else if (typeof url.pop === 'function') { + this.urls = this.urls.concat(url); + } else { + options = url; + url = undefined; + } + } + var ajaxParams = L.Util.extend({}, this.defaultAJAXparams); + + for (var i in options) { + if (this.defaultAJAXparams.hasOwnProperty(i)) { + ajaxParams[i] = options[i]; + } + } + this.ajaxParams = ajaxParams; + this._layers = {}; + L.Util.setOptions(this, options); + this.on('data:loaded', function () { + if (this.filter) { + this.refilter(this.filter); + } + }, this); + var self = this; + if (this.urls.length > 0) { + new Promise(function (resolve) { + resolve(); + }).then(function () { + self.addUrl(); + }); + } + }, + clearLayers: function () { + this.urls = []; + L.GeoJSON.prototype.clearLayers.call(this); + return this; + }, + addUrl: function (url) { + var self = this; + if (url) { + if (typeof url === 'string') { + self.urls.push(url); + } else if (typeof url.pop === 'function') { + self.urls = self.urls.concat(url); + } + } + var loading = self.urls.length; + var done = 0; + self.fire('data:loading'); + self.urls.forEach(function (url) { + if (self.ajaxParams.dataType.toLowerCase() === 'json') { + ajax(url, self.ajaxParams).then(function (d) { + var data = self.ajaxParams.middleware(d); + self.addData(data); + self.fire('data:progress', data); + }, function (err) { + self.fire('data:progress', { + error: err + }); + }); + } else if (self.ajaxParams.dataType.toLowerCase() === 'jsonp') { + L.Util.jsonp(url, self.ajaxParams).then(function (d) { + var data = self.ajaxParams.middleware(d); + self.addData(data); + self.fire('data:progress', data); + }, function (err) { + self.fire('data:progress', { + error: err + }); + }); + } + }); + self.on('data:progress', function () { + if (++done === loading) { + self.fire('data:loaded'); + } + }); + }, + refresh: function (url) { + url = url || this.urls; + this.clearLayers(); + this.addUrl(url); + }, + refilter: function (func) { + if (typeof func !== 'function') { + this.filter = false; + this.eachLayer(function (a) { + a.setStyle({ + stroke: true, + clickable: true + }); + }); + } else { + this.filter = func; + this.eachLayer(function (a) { + if (func(a.feature)) { + a.setStyle({ + stroke: true, + clickable: true + }); + } else { + a.setStyle({ + stroke: false, + clickable: false + }); + } + }); + } + } +}); +L.Util.Promise = Promise; +L.Util.ajax = ajax; +L.Util.jsonp = require('./jsonp'); +L.geoJson.ajax = function (geojson, options) { + return new L.GeoJSON.AJAX(geojson, options); +}; diff --git a/public/assets/vendor/leaflet-ajax/src/jsonp.js b/public/assets/vendor/leaflet-ajax/src/jsonp.js new file mode 100644 index 00000000..bbf89c3d --- /dev/null +++ b/public/assets/vendor/leaflet-ajax/src/jsonp.js @@ -0,0 +1,50 @@ +'use strict'; +var L = global.L || require('leaflet'); +var Promise = require('lie'); + +module.exports = function (url, options) { + options = options || {}; + var head = document.getElementsByTagName('head')[0]; + var scriptNode = L.DomUtil.create('script', '', head); + var cbName, ourl, cbSuffix, cancel; + var out = new Promise(function (resolve, reject) { + cancel = reject; + var cbParam = options.cbParam || 'callback'; + if (options.callbackName) { + cbName = options.callbackName; + } else { + cbSuffix = '_' + ('' + Math.random()).slice(2); + cbName = '_leafletJSONPcallbacks.' + cbSuffix; + } + scriptNode.type = 'text/javascript'; + if (cbSuffix) { + if (!global._leafletJSONPcallbacks) { + global._leafletJSONPcallbacks = { + length: 0 + }; + } + global._leafletJSONPcallbacks.length++; + global._leafletJSONPcallbacks[cbSuffix] = function (data) { + head.removeChild(scriptNode); + delete global._leafletJSONPcallbacks[cbSuffix]; + global._leafletJSONPcallbacks.length--; + if (!global._leafletJSONPcallbacks.length) { + delete global._leafletJSONPcallbacks; + } + resolve(data); + }; + } + if (url.indexOf('?') === -1) { + ourl = url + '?' + cbParam + '=' + cbName; + } else { + ourl = url + '&' + cbParam + '=' + cbName; + } + scriptNode.src = ourl; + }).then(null, function (reason) { + head.removeChild(scriptNode); + delete L.Util.ajax.cb[cbSuffix]; + return reason; + }); + out.abort = cancel; + return out; +}; diff --git a/public/assets/vendor/leaflet/leaflet.geodesic.js b/public/assets/vendor/leaflet-plugins/leaflet.geodesic.js similarity index 100% rename from public/assets/vendor/leaflet/leaflet.geodesic.js rename to public/assets/vendor/leaflet-plugins/leaflet.geodesic.js diff --git a/public/assets/vendor/leaflet-plugins/leaflet.rotatedMarker.js b/public/assets/vendor/leaflet-plugins/leaflet.rotatedMarker.js new file mode 100644 index 00000000..6a53d656 --- /dev/null +++ b/public/assets/vendor/leaflet-plugins/leaflet.rotatedMarker.js @@ -0,0 +1,59 @@ +(function () { + // save these original methods before they are overwritten + var proto_initIcon = L.Marker.prototype._initIcon; + var proto_setPos = L.Marker.prototype._setPos; + + var oldIE = (L.DomUtil.TRANSFORM === 'msTransform'); + + L.Marker.addInitHook(function () { + var iconOptions = this.options.icon && this.options.icon.options; + var iconAnchor = iconOptions && this.options.icon.options.iconAnchor; + if (iconAnchor) { + iconAnchor = (iconAnchor[0] + 'px ' + iconAnchor[1] + 'px'); + } + this.options.rotationOrigin = this.options.rotationOrigin || iconAnchor || 'center bottom'; + this.options.rotationAngle = this.options.rotationAngle || 0; + + // Ensure marker keeps rotated during dragging + this.on('drag', function (e) { + e.target._applyRotation(); + }); + }); + + L.Marker.include({ + _initIcon: function () { + proto_initIcon.call(this); + }, + + _setPos: function (pos) { + proto_setPos.call(this, pos); + this._applyRotation(); + }, + + _applyRotation: function () { + if (this.options.rotationAngle) { + this._icon.style[L.DomUtil.TRANSFORM + 'Origin'] = this.options.rotationOrigin; + + if (oldIE) { + // for IE 9, use the 2D rotation + this._icon.style[L.DomUtil.TRANSFORM] = 'rotate(' + this.options.rotationAngle + 'deg)'; + } else { + // for modern browsers, prefer the 3D accelerated version + this._icon.style[L.DomUtil.TRANSFORM] += ' rotateZ(' + this.options.rotationAngle + 'deg)'; + } + } + }, + + setRotationAngle: function (angle) { + this.options.rotationAngle = angle; + this.update(); + return this; + }, + + setRotationOrigin: function (origin) { + this.options.rotationOrigin = origin; + this.update(); + return this; + } + }); +})(); diff --git a/public/assets/vendor/popper.js/.bower.json b/public/assets/vendor/popper.js/.bower.json index a151f8fc..e1c8d88e 100644 --- a/public/assets/vendor/popper.js/.bower.json +++ b/public/assets/vendor/popper.js/.bower.json @@ -22,12 +22,12 @@ "bower_components", "tests" ], - "version": "1.12.6", - "_release": "1.12.6", + "version": "1.12.9", + "_release": "1.12.9", "_resolution": { "type": "version", - "tag": "v1.12.6", - "commit": "ef87c99e389a304fa00e85d6372bf8cb596b9de8" + "tag": "v1.12.9", + "commit": "7621054778867e946dc288632ac059662b3713ec" }, "_source": "https://github.com/FezVrasta/popper.js.git", "_target": "^1.12.0", diff --git a/public/assets/vendor/popper.js/CONTRIBUTING.md b/public/assets/vendor/popper.js/CONTRIBUTING.md index b2fa802c..db87c3a3 100644 --- a/public/assets/vendor/popper.js/CONTRIBUTING.md +++ b/public/assets/vendor/popper.js/CONTRIBUTING.md @@ -11,45 +11,85 @@ Feature requests are welcome! ## Setup -Then run `npm install` or `yarn` to install the needed dependencies. +Run `yarn` to install the needed dependencies. + +Note that `npm` is not supported because this projects makes use of the Yarn workspaces. ## Developing -## Adopt an issue +The repository is a monorepo managed by [Lerna](https://github.com/lerna/lerna), this makes it +possible to manage multiple projects on the same repository. -All the issues, if not assigned to someone, can be adopted by anyone. Just make sure to comment on the issue to let know -other users about your intention to work on it. +In our case, the main projects are `popper` and `tooltip`, which are the home of Popper.js and Tooltip.js +All our packages are stored in the `packages/` folder. + + +### Adopt an issue + +All the issues, if not assigned to someone, can be adopted by anyone. Just make sure to comment on +the issue to let know other users about your intention to work on it. Also, remember to comment again in case you end up abandoning the issue. -Each issue has a `DIFFICULTY` label to help you pick the one with the difficulty level adapt to you. -Additionally, check out the `PRIORITY` label to see which issues should take precedence over the others. If possible, prefer issues with an higher priority, but if you want to adopt an issue with lower priority, it's not a problem! +Each issue has a `DIFFICULTY: *` label to help you pick the one with the difficulty level adapt to you. +Additionally, check out the `PRIORITY: *` label to see which issues should take precedence over the others. +If possible, prefer issues with an higher priority, but if you want to adopt an issue with lower priority, +it's not a problem! -Issues with `NEEDS: CI test` need a PR that integrates a test in the test suite to reproduce the bug, this is very useful because it allows other developers to try to fix the bug having a feedback. +Issues with `NEEDS: CI test` need a PR that integrates a test in the test suite to reproduce the bug, +this is very useful because it allows other developers to try to fix the bug having a feedback. -## Test -We develop following a test driven development approach. +### Style conventions -We have a karma + jasmine environment to unit test Popper.js -Feel free to add tests to the `/tests` folder, any JavaScript file in that folder will be executed as test. +You don't have to worry about code style conventions, [prettier](https://github.com/prettier/prettier) +will automatically format your code once you commit your changes. + +### Test + +We strive to keep the code coverage as high as possible, but above all, we want to avoid +to introduce or reintroduce bugs in our code base. + +For this reason, every time a code change is made, we must make sure that a test is covering +the code we just changed. +If we fix a bug, we add a test to avoid that this bug pops up again in the future. + +To help us with this process, we have a karma + jasmine environment to test Popper.js and Tooltip.js + +The tests are located in the `tests/` folder of the two projects. (e.g. `packages/popper/tests/`) -To run tests: ```bash -npm run test:dev # watch -npm run test # single run +# You can run all the repositories tests running +yarn test + +# or a single project's tests with +yarn test --scope=popper.js # or tooltip.js ``` -## Build +If you want to run the tests in watch mode: + +```bash +# You can run all the repositories tests running +yarn test:dev + +# or a single project's tests with +yarn test:dev --scope=popper.js # or tooltip.js +``` + +Do you want to test your changes against all the supported browsers? Feel free to send a PR +and your changes will get automatically tested. + + +### Build To create a new release run: -```js -npm run build:popper # popper.js -npm run build:tooltip # tooltip.js -npm run build # both +```bash +# to build both projects +yarn build + +# or to build a single project +yarn build --scope=popper.js # or tooltip.js ``` -The files will be automatically minified and copied in the `build` directory. - -**Note:** never commit builds! We take care to compile the source code when we release a new version. +You can also build and watch for changes to automatically refresh the build using the `--watch` option. diff --git a/public/assets/vendor/popper.js/MENTIONS.md b/public/assets/vendor/popper.js/MENTIONS.md index 08032d40..9fa51b32 100644 --- a/public/assets/vendor/popper.js/MENTIONS.md +++ b/public/assets/vendor/popper.js/MENTIONS.md @@ -17,7 +17,7 @@ most common frameworks or view libraries thank to the following projects. ### [react-popper](https://github.com/souporserious/react-popper) -React wrapper around Popper.js. +React wrapper around Popper.js. (@FezVrasta approved! 👍) ### [ak-layer](https://www.npmjs.com/package/ak-layer) @@ -52,6 +52,10 @@ VueJS 2.x popover component based [popper.js](https://popper.js.org/) Vue.js tooltip directive (based on Popper.js) +### [v-tooltip](https://github.com/Akryum/v-tooltip) + +Vue.js 2.x directive + ## Ember.js ### [ember-popper](https://github.com/kybishop/ember-popper) diff --git a/public/assets/vendor/popper.js/README.md b/public/assets/vendor/popper.js/README.md index 62878337..0ec44b65 100644 --- a/public/assets/vendor/popper.js/README.md +++ b/public/assets/vendor/popper.js/README.md @@ -7,13 +7,14 @@

- Build Status - Stable Release Size + Stable Release Size + Stable Release Size bitHound Overall Score Istanbul Code Coverage - Get support or discuss + Get support or discuss
- SauceLabs Reports + Build Status + SauceLabs Reports

@@ -68,6 +69,11 @@ The tooltips generated by Tooltip.js are accessible thanks to the `aria` tags. Find [the documentation here](docs/_includes/tooltip-documentation.md). + + Sponsor + + + ## Installation Popper.js is available on the following package managers and CDNs: @@ -95,7 +101,8 @@ For more info, [read the related issue](https://github.com/FezVrasta/popper.js/i ### Dist targets -Popper.js is currently shipped with 3 targets in mind: UMD, ESM and ESNext. +Popper.js is currently shipped with 3 targets in mind: UMD, ESM and ESNext. +No idea what am I talking about? You are looking for UMD probably. - UMD - Universal Module Definition: AMD, RequireJS and globals; - ESM - ES Modules: For webpack/Rollup or browser supporting the spec; @@ -174,7 +181,7 @@ new Popper(reference, popper, { applyReactStyle: { enabled: true, fn: applyReactStyle, - order: 800, + order: 900, }, }, }); diff --git a/public/assets/vendor/popper.js/dist/esm/popper-utils.js b/public/assets/vendor/popper.js/dist/esm/popper-utils.js index f79c04f9..374ebf30 100644 --- a/public/assets/vendor/popper.js/dist/esm/popper-utils.js +++ b/public/assets/vendor/popper.js/dist/esm/popper-utils.js @@ -1,6 +1,6 @@ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.12.6 + * @version 1.12.9 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -34,7 +34,7 @@ function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - var css = window.getComputedStyle(element, null); + var css = getComputedStyle(element, null); return property ? css[property] : css; } @@ -62,7 +62,7 @@ function getParentNode(element) { function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body; + return document.body; } switch (element.nodeName) { @@ -104,7 +104,7 @@ function getOffsetParent(element) { return element.ownerDocument.documentElement; } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case @@ -151,7 +151,7 @@ function getRoot(node) { function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM @@ -243,7 +243,7 @@ function getBordersSize(styles, axis) { var sideA = axis === 'x' ? 'Left' : 'Top'; var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0]; + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); } /** @@ -266,9 +266,9 @@ function getSize(axis, body, html, computedStyle) { } function getWindowSizes() { - var body = window.document.body; - var html = window.document.documentElement; - var computedStyle = isIE10$1() && window.getComputedStyle(html); + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE10$1() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), @@ -368,8 +368,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { var scrollParent = getScrollParent(children); var styles = getStyleComputedProperty(parent); - var borderTopWidth = +styles.borderTopWidth.split('px')[0]; - var borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); var offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -385,8 +385,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - var marginTop = +styles.marginTop.split('px')[0]; - var marginLeft = +styles.marginLeft.split('px')[0]; + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -465,7 +465,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) { // Handle other cases based on DOM element used as boundaries var boundariesNode = void 0; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } @@ -569,7 +569,7 @@ function computeAutoPlacement(placement, refRect, popper, reference, boundariesE return computedPlacement + (variation ? '-' + variation : ''); } -var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; var timeoutDuration = 0; for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -586,7 +586,7 @@ function microtaskDebounce(fn) { return; } called = true; - Promise.resolve().then(function () { + window.Promise.resolve().then(function () { called = false; fn(); }); @@ -703,7 +703,7 @@ function getOffsetRect(element) { * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { - var styles = window.getComputedStyle(element); + var styles = getComputedStyle(element); var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); var result = { @@ -794,7 +794,7 @@ function getSupportedPropertyName(property) { for (var i = 0; i < prefixes.length - 1; i++) { var prefix = prefixes[i]; var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } @@ -1039,5 +1039,6 @@ var index = { setupEventListeners: setupEventListeners }; -export { computeAutoPlacement, debounce, findIndex, getBordersSize, getBoundaries, getBoundingClientRect, getClientRect, getOffsetParent, getOffsetRect, getOffsetRectRelativeToArbitraryNode, getOuterSizes, getParentNode, getPopperOffsets, getReferenceOffsets, getScroll, getScrollParent, getStyleComputedProperty, getSupportedPropertyName, getWindowSizes, isFixed, isFunction, isModifierEnabled, isModifierRequired, isNumeric, removeEventListeners, runModifiers, setAttributes, setStyles, setupEventListeners };export default index; +export { computeAutoPlacement, debounce, findIndex, getBordersSize, getBoundaries, getBoundingClientRect, getClientRect, getOffsetParent, getOffsetRect, getOffsetRectRelativeToArbitraryNode, getOuterSizes, getParentNode, getPopperOffsets, getReferenceOffsets, getScroll, getScrollParent, getStyleComputedProperty, getSupportedPropertyName, getWindowSizes, isFixed, isFunction, isModifierEnabled, isModifierRequired, isNumeric, removeEventListeners, runModifiers, setAttributes, setStyles, setupEventListeners }; +export default index; //# sourceMappingURL=popper-utils.js.map diff --git a/public/assets/vendor/popper.js/dist/esm/popper-utils.js.map b/public/assets/vendor/popper.js/dist/esm/popper-utils.js.map index e3b9523b..8d2f0857 100644 --- a/public/assets/vendor/popper.js/dist/esm/popper-utils.js.map +++ b/public/assets/vendor/popper.js/dist/esm/popper-utils.js.map @@ -1 +1 @@ -{"version":3,"file":"popper-utils.js","sources":["../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/debounce.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/getOffsetRect.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getSupportedPropertyName.js","../../src/utils/isFunction.js","../../src/utils/isModifierEnabled.js","../../src/utils/isModifierRequired.js","../../src/utils/isNumeric.js","../../src/utils/getWindow.js","../../src/utils/removeEventListeners.js","../../src/utils/runModifiers.js","../../src/utils/setAttributes.js","../../src/utils/setStyles.js","../../src/utils/setupEventListeners.js","../../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","property","nodeType","css","window","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","undefined","navigator","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","length","variation","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getReferenceOffsets","state","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","modifierName","some","name","enabled","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","runModifiers","data","ends","modifiersToRun","setAttributes","attributes","setAttribute","removeAttribute","setStyles","unit","attachToScrollParents","event","callback","isBody","target","addEventListener","passive","push","setupEventListeners","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper-utils.js","sources":["../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/debounce.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/getOffsetRect.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getSupportedPropertyName.js","../../src/utils/isFunction.js","../../src/utils/isModifierEnabled.js","../../src/utils/isModifierRequired.js","../../src/utils/isNumeric.js","../../src/utils/getWindow.js","../../src/utils/removeEventListeners.js","../../src/utils/runModifiers.js","../../src/utils/setAttributes.js","../../src/utils/setStyles.js","../../src/utils/setupEventListeners.js","../../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","undefined","navigator","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","window","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","length","variation","split","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getReferenceOffsets","state","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","modifierName","some","name","enabled","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","runModifiers","data","ends","modifiersToRun","setAttributes","attributes","setAttribute","removeAttribute","setStyles","unit","attachToScrollParents","event","callback","isBody","target","addEventListener","passive","push","setupEventListeners","options"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/esm/popper-utils.min.js b/public/assets/vendor/popper.js/dist/esm/popper-utils.min.js index 74f591f3..84100d10 100644 --- a/public/assets/vendor/popper.js/dist/esm/popper-utils.min.js +++ b/public/assets/vendor/popper.js/dist/esm/popper-utils.min.js @@ -1,5 +1,5 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */function getStyleComputedProperty(a,b){if(1!==a.nodeType)return[];var c=window.getComputedStyle(a,null);return b?c[b]:c}function getParentNode(a){return'HTML'===a.nodeName?a:a.parentNode||a.host}function getScrollParent(a){if(!a)return window.document.body;switch(a.nodeName){case'HTML':case'BODY':return a.ownerDocument.body;case'#document':return a.body;}var b=getStyleComputedProperty(a),c=b.overflow,d=b.overflowX,e=b.overflowY;return /(auto|scroll)/.test(c+e+d)?a:getScrollParent(getParentNode(a))}function getOffsetParent(a){var b=a&&a.offsetParent,c=b&&b.nodeName;return c&&'BODY'!==c&&'HTML'!==c?-1!==['TD','TABLE'].indexOf(b.nodeName)&&'static'===getStyleComputedProperty(b,'position')?getOffsetParent(b):b:a?a.ownerDocument.documentElement:window.document.documentElement}function isOffsetContainer(a){var b=a.nodeName;return'BODY'!==b&&('HTML'===b||getOffsetParent(a.firstElementChild)===a)}function getRoot(a){return null===a.parentNode?a:getRoot(a.parentNode)}function findCommonOffsetParent(a,b){if(!a||!a.nodeType||!b||!b.nodeType)return window.document.documentElement;var c=a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING,d=c?a:b,e=c?b:a,f=document.createRange();f.setStart(d,0),f.setEnd(e,0);var g=f.commonAncestorContainer;if(a!==g&&b!==g||d.contains(e))return isOffsetContainer(g)?g:getOffsetParent(g);var h=getRoot(a);return h.host?findCommonOffsetParent(h.host,b):findCommonOffsetParent(a,getRoot(b).host)}function getScroll(a){var b=1=c.clientWidth&&d>=c.clientHeight}),k=0=c.clientWidth&&d>=c.clientHeight}),k=0 ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","nodeType","css","window","getComputedStyle","property","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","indexOf","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","sideA","axis","sideB","styles","split","isIE10","navigator","appVersion","getSize","Math","max","computedStyle","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","rect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","getArea","computeAutoPlacement","padding","placement","rects","refRect","sortedAreas","Object","keys","map","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","find","Array","prototype","arr","findIndex","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","getPopperOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getReferenceOffsets","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","some","name","enabled","isModifierRequired","requesting","isRequired","warn","requested","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","state","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","runModifiers","modifiersToRun","ends","fn","data","reference","setAttributes","value","attributes","removeAttribute","setAttribute","setStyles","unit","attachToScrollParents","isBody","target","addEventListener","passive","push","setupEventListeners"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper-utils.min.js","sources":["../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/debounce.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/getOffsetRect.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getSupportedPropertyName.js","../../src/utils/isFunction.js","../../src/utils/isModifierEnabled.js","../../src/utils/isModifierRequired.js","../../src/utils/isNumeric.js","../../src/utils/getWindow.js","../../src/utils/removeEventListeners.js","../../src/utils/runModifiers.js","../../src/utils/setAttributes.js","../../src/utils/setStyles.js","../../src/utils/setupEventListeners.js","../../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","offsetParent","indexOf","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","isIE10","navigator","appVersion","Math","max","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","window","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","split","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","called","Promise","resolve","then","scheduled","supportsMicroTasks","Array","prototype","find","arr","findIndex","cur","match","obj","elementRect","offsetLeft","offsetTop","x","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","commonOffsetParent","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","functionToCheck","getType","toString","call","modifiers","some","name","enabled","requesting","isRequired","warn","requested","n","isNaN","isFinite","defaultView","removeEventListener","state","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","modifiersToRun","ends","fn","isFunction","data","reference","value","attributes","removeAttribute","setAttribute","unit","isNumeric","isBody","target","addEventListener","passive","push"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/esm/popper.js b/public/assets/vendor/popper.js/dist/esm/popper.js index a6f7e9df..6c4fcfdc 100644 --- a/public/assets/vendor/popper.js/dist/esm/popper.js +++ b/public/assets/vendor/popper.js/dist/esm/popper.js @@ -1,6 +1,6 @@ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.12.6 + * @version 1.12.9 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; var timeoutDuration = 0; for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -39,7 +39,7 @@ function microtaskDebounce(fn) { return; } called = true; - Promise.resolve().then(function () { + window.Promise.resolve().then(function () { called = false; fn(); }); @@ -96,7 +96,7 @@ function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - var css = window.getComputedStyle(element, null); + var css = getComputedStyle(element, null); return property ? css[property] : css; } @@ -124,7 +124,7 @@ function getParentNode(element) { function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body; + return document.body; } switch (element.nodeName) { @@ -166,7 +166,7 @@ function getOffsetParent(element) { return element.ownerDocument.documentElement; } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case @@ -213,7 +213,7 @@ function getRoot(node) { function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM @@ -305,7 +305,7 @@ function getBordersSize(styles, axis) { var sideA = axis === 'x' ? 'Left' : 'Top'; var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0]; + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); } /** @@ -328,9 +328,9 @@ function getSize(axis, body, html, computedStyle) { } function getWindowSizes() { - var body = window.document.body; - var html = window.document.documentElement; - var computedStyle = isIE10$1() && window.getComputedStyle(html); + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE10$1() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), @@ -473,8 +473,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { var scrollParent = getScrollParent(children); var styles = getStyleComputedProperty(parent); - var borderTopWidth = +styles.borderTopWidth.split('px')[0]; - var borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); var offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -490,8 +490,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - var marginTop = +styles.marginTop.split('px')[0]; - var marginLeft = +styles.marginLeft.split('px')[0]; + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -570,7 +570,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) { // Handle other cases based on DOM element used as boundaries var boundariesNode = void 0; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } @@ -696,7 +696,7 @@ function getReferenceOffsets(state, popper, reference) { * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { - var styles = window.getComputedStyle(element); + var styles = getComputedStyle(element); var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); var result = { @@ -913,7 +913,7 @@ function getSupportedPropertyName(property) { for (var i = 0; i < prefixes.length - 1; i++) { var prefix = prefixes[i]; var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } @@ -1032,7 +1032,7 @@ function removeEventListeners(reference, state) { */ function disableEventListeners() { if (this.state.eventsEnabled) { - window.cancelAnimationFrame(this.scheduleUpdate); + cancelAnimationFrame(this.scheduleUpdate); this.state = removeEventListeners(this.reference, this.state); } } @@ -1272,6 +1272,8 @@ function isModifierRequired(modifiers, requestingName, requestedName) { * @returns {Object} The data object, properly modified */ function arrow(data, options) { + var _data$offsets$arrow; + // arrow depends on keepTogether in order to work if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { return data; @@ -1323,22 +1325,23 @@ function arrow(data, options) { if (reference[side] + arrowElementSize > popper[opSide]) { data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; } + data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets // take popper margin in account because we don't have this info available - var popperMarginSide = getStyleComputedProperty(data.instance.popper, 'margin' + sideCapitalized).replace('px', ''); - var sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide; + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); data.arrowElement = arrowElement; - data.offsets.arrow = {}; - data.offsets.arrow[side] = Math.round(sideValue); - data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); return data; } diff --git a/public/assets/vendor/popper.js/dist/esm/popper.js.map b/public/assets/vendor/popper.js/dist/esm/popper.js.map index b79b000f..d3ae3025 100644 --- a/public/assets/vendor/popper.js/dist/esm/popper.js.map +++ b/public/assets/vendor/popper.js/dist/esm/popper.js.map @@ -1 +1 @@ -{"version":3,"file":"popper.js","sources":["../../src/utils/debounce.js","../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/modifiers/applyStyle.js","../../src/modifiers/computeStyle.js","../../src/utils/isModifierRequired.js","../../src/modifiers/arrow.js","../../src/utils/getOppositeVariation.js","../../src/methods/placements.js","../../src/utils/clockwise.js","../../src/modifiers/flip.js","../../src/modifiers/keepTogether.js","../../src/modifiers/offset.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/shift.js","../../src/modifiers/hide.js","../../src/modifiers/inner.js","../../src/modifiers/index.js","../../src/methods/defaults.js","../../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const popperMarginSide = getStyleComputedProperty(\n data.instance.popper,\n `margin${sideCapitalized}`\n ).replace('px', '');\n let sideValue =\n center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","undefined","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","update","isDestroyed","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","floor","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper.js","sources":["../../src/utils/debounce.js","../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/modifiers/applyStyle.js","../../src/modifiers/computeStyle.js","../../src/utils/isModifierRequired.js","../../src/modifiers/arrow.js","../../src/utils/getOppositeVariation.js","../../src/methods/placements.js","../../src/utils/clockwise.js","../../src/modifiers/flip.js","../../src/modifiers/keepTogether.js","../../src/modifiers/offset.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/shift.js","../../src/modifiers/hide.js","../../src/modifiers/inner.js","../../src/modifiers/index.js","../../src/methods/defaults.js","../../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","undefined","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","update","isDestroyed","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","floor","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/esm/popper.min.js b/public/assets/vendor/popper.js/dist/esm/popper.min.js index 59d91ed3..0daa06d9 100644 --- a/public/assets/vendor/popper.js/dist/esm/popper.min.js +++ b/public/assets/vendor/popper.js/dist/esm/popper.min.js @@ -1,5 +1,5 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */for(var isBrowser='undefined'!=typeof window&&'undefined'!=typeof window.document,longerTimeoutBrowsers=['Edge','Trident','Firefox'],timeoutDuration=0,i=0;i=o.clientWidth&&i>=o.clientHeight}),l=0r[m]&&(e.offsets.popper[l]+=p[l]+c-r[m]);var h=p[l]+p[d]/2-c/2,g=getStyleComputedProperty(e.instance.popper,'margin'+a).replace('px',''),u=h-getClientRect(e.offsets.popper)[l]-g;return u=Math.max(Math.min(r[d]-c,u),0),e.arrowElement=o,e.offsets.arrow={},e.offsets.arrow[l]=Math.round(u),e.offsets.arrow[f]='',e}function getOppositeVariation(e){if('end'===e)return'start';return'start'===e?'end':e}var placements=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],validPlacements=placements.slice(3);function clockwise(e){var t=1f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===i&&c||'right'===i&&h||'top'===i&&g||'bottom'===i&&u,y=-1!==['top','bottom'].indexOf(i),w=!!t.flipVariations&&(y&&'start'===r&&c||y&&'end'===r&&h||!y&&'start'===r&&g||!y&&'end'===r&&u);(m||b||w)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),w&&(r=getOppositeVariation(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=_extends({},e.offsets.popper,getPopperOffsets(e.instance.popper,e.offsets.reference,e.placement)),e=runModifiers(e.instance.modifiers,e,'flip'))}),e}function keepTogether(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=Math.floor,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}function toValue(e,t,o,i){var n=Math.max,r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),p=+r[1],s=r[2];if(!p)return e;if(0===s.indexOf('%')){var d;switch(s){case'%p':d=o;break;case'%':case'%r':default:d=i;}var a=getClientRect(d);return a[t]/100*p}if('vh'===s||'vw'===s){var l;return l='vh'===s?n(document.documentElement.clientHeight,window.innerHeight||0):n(document.documentElement.clientWidth,window.innerWidth||0),l/100*p}return p}function parseOffset(e,t,o,i){var n=[0,0],r=-1!==['right','left'].indexOf(i),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(find(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,i){var n=(1===i?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return toValue(e,n,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,i){isNumeric(o)&&(n[t]+=o*('-'===e[i-1]?-1:1))})}),n}function offset(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=n.split('-')[0];return o=isNumeric(+i)?[+i,0]:parseOffset(i,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}function preventOverflow(e,t){var o=t.boundariesElement||getOffsetParent(e.instance.popper);e.instance.reference===o&&(o=getOffsetParent(o));var i=getBoundaries(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=i;var n=t.priority,r=e.offsets.popper,p={primary:function(e){var o=r[e];return r[e]i[e]&&!t.escapeWithReference&&(n=Math.min(r[o],i[e]-('right'===e?r.width:r.height))),defineProperty({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';r=_extends({},r,p[t](e))}),e.offsets.popper=r,e}function shift(e){var t=e.placement,o=t.split('-')[0],i=t.split('-')[1];if(i){var n=e.offsets,r=n.reference,p=n.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:defineProperty({},d,r[d]),end:defineProperty({},d,r[d]+r[a]-p[a])};e.offsets.popper=_extends({},p,l[i])}return e}function hide(e){if(!isModifierRequired(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=find(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right=o.clientWidth&&i>=o.clientHeight}),l=0p[c]&&(e.offsets.popper[m]+=s[m]+g-p[c]),e.offsets.popper=D(e.offsets.popper);var u=s[m]+s[l]/2-g/2,b=a(e.instance.popper),w=parseFloat(b['margin'+f],10),y=parseFloat(b['border'+f+'Width'],10),E=u-e.offsets.popper[m]-w-y;return E=Math.max(Math.min(p[l]-g,E),0),e.arrowElement=i,e.offsets.arrow=(o={},S(o,m,Math.round(E)),S(o,h,''),o),e}function pe(e){if('end'===e)return'start';return'start'===e?'end':e}var se=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],de=se.slice(3);function ae(e){var t=1f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=pe(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=T({},e.offsets.popper,R(e.instance.popper,e.offsets.reference,e.placement)),e=F(e.instance.modifiers,e,'flip'))}),e}function me(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=Math.floor,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}function he(e,t,o,i){var n=Math.max,r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),p=+r[1],s=r[2];if(!p)return e;if(0===s.indexOf('%')){var d;switch(s){case'%p':d=o;break;case'%':case'%r':default:d=i;}var a=D(d);return a[t]/100*p}if('vh'===s||'vw'===s){var l;return l='vh'===s?n(document.documentElement.clientHeight,window.innerHeight||0):n(document.documentElement.clientWidth,window.innerWidth||0),l/100*p}return p}function ce(e,t,o,i){var n=[0,0],r=-1!==['right','left'].indexOf(i),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(U(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,i){var n=(1===i?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return he(e,n,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,i){Z(o)&&(n[t]+=o*('-'===e[i-1]?-1:1))})}),n}function ge(e,t){var o,i=t.offset,n=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=n.split('-')[0];return o=Z(+i)?[+i,0]:ce(i,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}function ue(e,t){var o=t.boundariesElement||m(e.instance.popper);e.instance.reference===o&&(o=m(o));var i=P(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=i;var n=t.priority,r=e.offsets.popper,p={primary:function(e){var o=r[e];return r[e]i[e]&&!t.escapeWithReference&&(n=Math.min(r[o],i[e]-('right'===e?r.width:r.height))),S({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';r=T({},r,p[t](e))}),e.offsets.popper=r,e}function be(e){var t=e.placement,o=t.split('-')[0],i=t.split('-')[1];if(i){var n=e.offsets,r=n.reference,p=n.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:S({},d,r[d]),end:S({},d,r[d]+r[a]-p[a])};e.offsets.popper=T({},p,l[i])}return e}function we(e){if(!ne(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=U(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const popperMarginSide = getStyleComputedProperty(\n data.instance.popper,\n `margin${sideCapitalized}`\n ).replace('px', '');\n let sideValue =\n center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","nodeType","css","getComputedStyle","property","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","sideA","axis","sideB","styles","split","isIE10","appVersion","getSize","Math","max","computedStyle","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","rect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","getArea","computeAutoPlacement","padding","placement","rects","refRect","sortedAreas","Object","keys","map","sort","b","area","a","filteredAreas","filter","computedPlacement","key","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","getPopperOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","find","Array","prototype","arr","findIndex","cur","match","obj","runModifiers","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","data","reference","update","state","isDestroyed","options","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","scrollParents","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","value","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","computeStyle","floor","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","index2","basePlacement","preventOverflow","priority","check","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","modifierOptions","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper.min.js","sources":["../../src/utils/debounce.js","../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/modifiers/applyStyle.js","../../src/modifiers/computeStyle.js","../../src/utils/isModifierRequired.js","../../src/modifiers/arrow.js","../../src/utils/getOppositeVariation.js","../../src/methods/placements.js","../../src/utils/clockwise.js","../../src/modifiers/flip.js","../../src/modifiers/keepTogether.js","../../src/modifiers/offset.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/shift.js","../../src/modifiers/hide.js","../../src/modifiers/inner.js","../../src/modifiers/index.js","../../src/methods/defaults.js","../../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","called","Promise","resolve","then","scheduled","supportsMicroTasks","functionToCheck","getType","toString","call","element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","offsetParent","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","isIE10","appVersion","Math","max","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","key","variation","split","commonOffsetParent","x","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","Array","prototype","find","arr","findIndex","cur","match","obj","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","isFunction","data","reference","state","isDestroyed","getReferenceOffsets","computeAutoPlacement","options","flip","originalPlacement","getPopperOffsets","position","runModifiers","isCreated","onUpdate","onCreate","some","name","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","isModifierEnabled","removeAttribute","getSupportedPropertyName","disableEventListeners","removeOnDestroy","removeChild","defaultView","isBody","target","addEventListener","passive","push","updateBound","scrollElement","scrollParents","eventsEnabled","setupEventListeners","scheduleUpdate","removeEventListener","removeEventListeners","n","isNaN","isFinite","unit","isNumeric","value","attributes","setAttribute","instance","arrowElement","arrowStyles","floor","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","arrow","requesting","isRequired","requested","isModifierRequired","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","round","validPlacements","placements","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","clockwise","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","str","size","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","toValue","index2","basePlacement","parseOffset","priority","check","escapeWithReference","shiftvariation","shiftOffsets","bound","hide","subtractLength","Popper","requestAnimationFrame","update","debounce","bind","Defaults","jquery","modifierOptions","onLoad","enableEventListeners","destroy","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/popper-utils.js b/public/assets/vendor/popper.js/dist/popper-utils.js index 606f82a3..1ab94702 100644 --- a/public/assets/vendor/popper.js/dist/popper-utils.js +++ b/public/assets/vendor/popper.js/dist/popper-utils.js @@ -1,6 +1,6 @@ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.12.6 + * @version 1.12.9 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -34,7 +34,7 @@ function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - const css = window.getComputedStyle(element, null); + const css = getComputedStyle(element, null); return property ? css[property] : css; } @@ -62,7 +62,7 @@ function getParentNode(element) { function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body; + return document.body; } switch (element.nodeName) { @@ -99,7 +99,7 @@ function getOffsetParent(element) { return element.ownerDocument.documentElement; } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case @@ -145,7 +145,7 @@ function getRoot(node) { function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM @@ -232,7 +232,7 @@ function getBordersSize(styles, axis) { const sideA = axis === 'x' ? 'Left' : 'Top'; const sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return +styles[`border${sideA}Width`].split('px')[0] + +styles[`border${sideB}Width`].split('px')[0]; + return parseFloat(styles[`border${sideA}Width`], 10) + parseFloat(styles[`border${sideB}Width`], 10); } /** @@ -255,9 +255,9 @@ function getSize(axis, body, html, computedStyle) { } function getWindowSizes() { - const body = window.document.body; - const html = window.document.documentElement; - const computedStyle = isIE10$1() && window.getComputedStyle(html); + const body = document.body; + const html = document.documentElement; + const computedStyle = isIE10$1() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), @@ -357,8 +357,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { const scrollParent = getScrollParent(children); const styles = getStyleComputedProperty(parent); - const borderTopWidth = +styles.borderTopWidth.split('px')[0]; - const borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + const borderTopWidth = parseFloat(styles.borderTopWidth, 10); + const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); let offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -374,8 +374,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - const marginTop = +styles.marginTop.split('px')[0]; - const marginLeft = +styles.marginLeft.split('px')[0]; + const marginTop = parseFloat(styles.marginTop, 10); + const marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -454,7 +454,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) { // Handle other cases based on DOM element used as boundaries let boundariesNode; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } @@ -542,7 +542,7 @@ function computeAutoPlacement(placement, refRect, popper, reference, boundariesE return computedPlacement + (variation ? `-${variation}` : ''); } -const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; let timeoutDuration = 0; for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -559,7 +559,7 @@ function microtaskDebounce(fn) { return; } called = true; - Promise.resolve().then(() => { + window.Promise.resolve().then(() => { called = false; fn(); }); @@ -669,7 +669,7 @@ function getOffsetRect(element) { * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { - const styles = window.getComputedStyle(element); + const styles = getComputedStyle(element); const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); const result = { @@ -758,7 +758,7 @@ function getSupportedPropertyName(property) { for (let i = 0; i < prefixes.length - 1; i++) { const prefix = prefixes[i]; const toCheck = prefix ? `${prefix}${upperProp}` : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } @@ -996,5 +996,6 @@ var index = { setupEventListeners }; -export { computeAutoPlacement, debounce, findIndex, getBordersSize, getBoundaries, getBoundingClientRect, getClientRect, getOffsetParent, getOffsetRect, getOffsetRectRelativeToArbitraryNode, getOuterSizes, getParentNode, getPopperOffsets, getReferenceOffsets, getScroll, getScrollParent, getStyleComputedProperty, getSupportedPropertyName, getWindowSizes, isFixed, isFunction, isModifierEnabled, isModifierRequired, isNumeric, removeEventListeners, runModifiers, setAttributes, setStyles, setupEventListeners };export default index; +export { computeAutoPlacement, debounce, findIndex, getBordersSize, getBoundaries, getBoundingClientRect, getClientRect, getOffsetParent, getOffsetRect, getOffsetRectRelativeToArbitraryNode, getOuterSizes, getParentNode, getPopperOffsets, getReferenceOffsets, getScroll, getScrollParent, getStyleComputedProperty, getSupportedPropertyName, getWindowSizes, isFixed, isFunction, isModifierEnabled, isModifierRequired, isNumeric, removeEventListeners, runModifiers, setAttributes, setStyles, setupEventListeners }; +export default index; //# sourceMappingURL=popper-utils.js.map diff --git a/public/assets/vendor/popper.js/dist/popper-utils.js.map b/public/assets/vendor/popper.js/dist/popper-utils.js.map index ea7c406d..4d1defec 100644 --- a/public/assets/vendor/popper.js/dist/popper-utils.js.map +++ b/public/assets/vendor/popper.js/dist/popper-utils.js.map @@ -1 +1 @@ -{"version":3,"file":"popper-utils.js","sources":["../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/debounce.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/getOffsetRect.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/getReferenceOffsets.js","../src/utils/getSupportedPropertyName.js","../src/utils/isFunction.js","../src/utils/isModifierEnabled.js","../src/utils/isModifierRequired.js","../src/utils/isNumeric.js","../src/utils/getWindow.js","../src/utils/removeEventListeners.js","../src/utils/runModifiers.js","../src/utils/setAttributes.js","../src/utils/setStyles.js","../src/utils/setupEventListeners.js","../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","property","nodeType","css","window","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","undefined","navigator","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","length","variation","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getReferenceOffsets","state","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","modifierName","some","name","enabled","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","updateBound","scrollParents","forEach","target","scrollElement","eventsEnabled","runModifiers","data","ends","modifiersToRun","setAttributes","attributes","setAttribute","removeAttribute","setStyles","unit","attachToScrollParents","event","callback","isBody","addEventListener","passive","push","setupEventListeners","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper-utils.js","sources":["../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/debounce.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/getOffsetRect.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/getReferenceOffsets.js","../src/utils/getSupportedPropertyName.js","../src/utils/isFunction.js","../src/utils/isModifierEnabled.js","../src/utils/isModifierRequired.js","../src/utils/isNumeric.js","../src/utils/getWindow.js","../src/utils/removeEventListeners.js","../src/utils/runModifiers.js","../src/utils/setAttributes.js","../src/utils/setStyles.js","../src/utils/setupEventListeners.js","../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","undefined","navigator","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","window","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","length","variation","split","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getReferenceOffsets","state","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","modifierName","some","name","enabled","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","updateBound","scrollParents","forEach","target","scrollElement","eventsEnabled","runModifiers","data","ends","modifiersToRun","setAttributes","attributes","setAttribute","removeAttribute","setStyles","unit","attachToScrollParents","event","callback","isBody","addEventListener","passive","push","setupEventListeners","options"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/popper-utils.min.js b/public/assets/vendor/popper.js/dist/popper-utils.min.js index e0693c8c..d3011d61 100644 --- a/public/assets/vendor/popper.js/dist/popper-utils.min.js +++ b/public/assets/vendor/popper.js/dist/popper-utils.min.js @@ -1,5 +1,5 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */function getStyleComputedProperty(a,b){if(1!==a.nodeType)return[];const c=window.getComputedStyle(a,null);return b?c[b]:c}function getParentNode(a){return'HTML'===a.nodeName?a:a.parentNode||a.host}function getScrollParent(a){if(!a)return window.document.body;switch(a.nodeName){case'HTML':case'BODY':return a.ownerDocument.body;case'#document':return a.body;}const{overflow:b,overflowX:c,overflowY:d}=getStyleComputedProperty(a);return /(auto|scroll)/.test(b+d+c)?a:getScrollParent(getParentNode(a))}function getOffsetParent(a){const b=a&&a.offsetParent,c=b&&b.nodeName;return c&&'BODY'!==c&&'HTML'!==c?-1!==['TD','TABLE'].indexOf(b.nodeName)&&'static'===getStyleComputedProperty(b,'position')?getOffsetParent(b):b:a?a.ownerDocument.documentElement:window.document.documentElement}function isOffsetContainer(a){const{nodeName:b}=a;return'BODY'!==b&&('HTML'===b||getOffsetParent(a.firstElementChild)===a)}function getRoot(a){return null===a.parentNode?a:getRoot(a.parentNode)}function findCommonOffsetParent(a,b){if(!a||!a.nodeType||!b||!b.nodeType)return window.document.documentElement;const c=a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING,d=c?a:b,e=c?b:a,f=document.createRange();f.setStart(d,0),f.setEnd(e,0);const{commonAncestorContainer:g}=f;if(a!==g&&b!==g||d.contains(e))return isOffsetContainer(g)?g:getOffsetParent(g);const h=getRoot(a);return h.host?findCommonOffsetParent(h.host,b):findCommonOffsetParent(a,getRoot(b).host)}function getScroll(a,b='top'){const c='top'===b?'scrollTop':'scrollLeft',d=a.nodeName;if('BODY'===d||'HTML'===d){const b=a.ownerDocument.documentElement,d=a.ownerDocument.scrollingElement||b;return d[c]}return a[c]}function includeScroll(a,b,c=!1){const d=getScroll(b,'top'),e=getScroll(b,'left'),f=c?-1:1;return a.top+=d*f,a.bottom+=d*f,a.left+=e*f,a.right+=e*f,a}function getBordersSize(a,b){const c='x'===b?'Left':'Top',d='Left'==c?'Right':'Bottom';return+a[`border${c}Width`].split('px')[0]+ +a[`border${d}Width`].split('px')[0]}let isIE10;var isIE10$1=function(){return void 0==isIE10&&(isIE10=-1!==navigator.appVersion.indexOf('MSIE 10')),isIE10};function getSize(a,b,c,d){return Math.max(b[`offset${a}`],b[`scroll${a}`],c[`client${a}`],c[`offset${a}`],c[`scroll${a}`],isIE10$1()?c[`offset${a}`]+d[`margin${'Height'===a?'Top':'Left'}`]+d[`margin${'Height'===a?'Bottom':'Right'}`]:0)}function getWindowSizes(){const a=window.document.body,b=window.document.documentElement,c=isIE10$1()&&window.getComputedStyle(b);return{height:getSize('Height',a,b,c),width:getSize('Width',a,b,c)}}var _extends=Object.assign||function(a){for(var b,c=1;c_extends({key:a},h[a],{area:getArea(h[a])})).sort((c,a)=>a.area-c.area),j=i.filter(({width:a,height:b})=>a>=c.clientWidth&&b>=c.clientHeight),k=0{b||(b=!0,Promise.resolve().then(()=>{b=!1,a()}))}}function taskDebounce(a){let b=!1;return()=>{b||(b=!0,setTimeout(()=>{b=!1,a()},timeoutDuration))}}const supportsMicroTasks=isBrowser&&window.Promise;var debounce=supportsMicroTasks?microtaskDebounce:taskDebounce;function find(a,b){return Array.prototype.find?a.find(b):a.filter(b)[0]}function findIndex(a,b,c){if(Array.prototype.findIndex)return a.findIndex((a)=>a[b]===c);const d=find(a,(a)=>a[b]===c);return a.indexOf(d)}function getOffsetRect(a){let b;if('HTML'===a.nodeName){const{width:a,height:c}=getWindowSizes();b={width:a,height:c,left:0,top:0}}else b={width:a.offsetWidth,height:a.offsetHeight,left:a.offsetLeft,top:a.offsetTop};return getClientRect(b)}function getOuterSizes(a){const b=window.getComputedStyle(a),c=parseFloat(b.marginTop)+parseFloat(b.marginBottom),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e={width:a.offsetWidth+d,height:a.offsetHeight+c};return e}function getOppositePlacement(a){const b={left:'right',right:'left',bottom:'top',top:'bottom'};return a.replace(/left|right|bottom|top/g,(a)=>b[a])}function getPopperOffsets(a,b,c){c=c.split('-')[0];const d=getOuterSizes(a),e={width:d.width,height:d.height},f=-1!==['right','left'].indexOf(c),g=f?'top':'left',h=f?'left':'top',i=f?'height':'width',j=f?'width':'height';return e[g]=b[g]+b[i]/2-d[i]/2,e[h]=c===h?b[h]-d[j]:b[getOppositePlacement(h)],e}function getReferenceOffsets(a,b,c){const d=findCommonOffsetParent(b,c);return getOffsetRectRelativeToArbitraryNode(c,d)}function getSupportedPropertyName(a){const b=[!1,'ms','Webkit','Moz','O'],c=a.charAt(0).toUpperCase()+a.slice(1);for(let d=0;dc&&a===b)}function isModifierRequired(a,b,c){const d=find(a,({name:a})=>a===b),e=!!d&&a.some((a)=>a.name===c&&a.enabled&&a.order{a.removeEventListener('scroll',b.updateBound)}),b.updateBound=null,b.scrollParents=[],b.scrollElement=null,b.eventsEnabled=!1,b}function runModifiers(a,b,c){const d=void 0===c?a:a.slice(0,findIndex(a,'name',c));return d.forEach((a)=>{a['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');const c=a['function']||a.fn;a.enabled&&isFunction(c)&&(b.offsets.popper=getClientRect(b.offsets.popper),b.offsets.reference=getClientRect(b.offsets.reference),b=c(b,a))}),b}function setAttributes(a,b){Object.keys(b).forEach(function(c){const d=b[c];!1===d?a.removeAttribute(c):a.setAttribute(c,b[c])})}function setStyles(a,b){Object.keys(b).forEach((c)=>{let d='';-1!==['width','height','top','right','bottom','left'].indexOf(c)&&isNumeric(b[c])&&(d='px'),a.style[c]=b[c]+d})}function attachToScrollParents(a,b,c,d){const e='BODY'===a.nodeName,f=e?a.ownerDocument.defaultView:a;f.addEventListener(b,c,{passive:!0}),e||attachToScrollParents(getScrollParent(f.parentNode),b,c,d),d.push(f)}function setupEventListeners(a,b,c,d){c.updateBound=d,getWindow(a).addEventListener('resize',c.updateBound,{passive:!0});const e=getScrollParent(a);return attachToScrollParents(e,'scroll',c.updateBound,c.scrollParents),c.scrollElement=e,c.eventsEnabled=!0,c}var index={computeAutoPlacement,debounce,findIndex,getBordersSize,getBoundaries,getBoundingClientRect,getClientRect,getOffsetParent,getOffsetRect,getOffsetRectRelativeToArbitraryNode,getOuterSizes,getParentNode,getPopperOffsets,getReferenceOffsets,getScroll,getScrollParent,getStyleComputedProperty,getSupportedPropertyName,getWindowSizes,isFixed,isFunction,isModifierEnabled,isModifierRequired,isNumeric,removeEventListeners,runModifiers,setAttributes,setStyles,setupEventListeners};export{computeAutoPlacement,debounce,findIndex,getBordersSize,getBoundaries,getBoundingClientRect,getClientRect,getOffsetParent,getOffsetRect,getOffsetRectRelativeToArbitraryNode,getOuterSizes,getParentNode,getPopperOffsets,getReferenceOffsets,getScroll,getScrollParent,getStyleComputedProperty,getSupportedPropertyName,getWindowSizes,isFixed,isFunction,isModifierEnabled,isModifierRequired,isNumeric,removeEventListeners,runModifiers,setAttributes,setStyles,setupEventListeners};export default index; + */function a(a,b){if(1!==a.nodeType)return[];const c=getComputedStyle(a,null);return b?c[b]:c}function b(a){return'HTML'===a.nodeName?a:a.parentNode||a.host}function c(d){if(!d)return document.body;switch(d.nodeName){case'HTML':case'BODY':return d.ownerDocument.body;case'#document':return d.body;}const{overflow:e,overflowX:f,overflowY:g}=a(d);return /(auto|scroll)/.test(e+g+f)?d:c(b(d))}function d(b){const c=b&&b.offsetParent,e=c&&c.nodeName;return e&&'BODY'!==e&&'HTML'!==e?-1!==['TD','TABLE'].indexOf(c.nodeName)&&'static'===a(c,'position')?d(c):c:b?b.ownerDocument.documentElement:document.documentElement}function e(a){const{nodeName:b}=a;return'BODY'!==b&&('HTML'===b||d(a.firstElementChild)===a)}function f(a){return null===a.parentNode?a:f(a.parentNode)}function g(a,b){if(!a||!a.nodeType||!b||!b.nodeType)return document.documentElement;const c=a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING,h=c?a:b,i=c?b:a,j=document.createRange();j.setStart(h,0),j.setEnd(i,0);const{commonAncestorContainer:k}=j;if(a!==k&&b!==k||h.contains(i))return e(k)?k:d(k);const l=f(a);return l.host?g(l.host,b):g(a,f(b).host)}function h(a,b='top'){const c='top'===b?'scrollTop':'scrollLeft',d=a.nodeName;if('BODY'===d||'HTML'===d){const b=a.ownerDocument.documentElement,d=a.ownerDocument.scrollingElement||b;return d[c]}return a[c]}function i(a,b,c=!1){const d=h(b,'top'),e=h(b,'left'),f=c?-1:1;return a.top+=d*f,a.bottom+=d*f,a.left+=e*f,a.right+=e*f,a}function j(a,b){const c='x'===b?'Left':'Top',d='Left'==c?'Right':'Bottom';return parseFloat(a[`border${c}Width`],10)+parseFloat(a[`border${d}Width`],10)}let k;var l=function(){return void 0==k&&(k=-1!==navigator.appVersion.indexOf('MSIE 10')),k};function m(a,b,c,d){return Math.max(b[`offset${a}`],b[`scroll${a}`],c[`client${a}`],c[`offset${a}`],c[`scroll${a}`],l()?c[`offset${a}`]+d[`margin${'Height'===a?'Top':'Left'}`]+d[`margin${'Height'===a?'Bottom':'Right'}`]:0)}function n(){const a=document.body,b=document.documentElement,c=l()&&getComputedStyle(b);return{height:m('Height',a,b,c),width:m('Width',a,b,c)}}var o=Object.assign||function(a){for(var b,c=1;co({key:a},h[a],{area:v(h[a])})).sort((c,a)=>a.area-c.area),j=i.filter(({width:a,height:b})=>a>=c.clientWidth&&b>=c.clientHeight),k=0{b||(b=!0,window.Promise.resolve().then(()=>{b=!1,a()}))}}function B(a){let b=!1;return()=>{b||(b=!0,setTimeout(()=>{b=!1,a()},z))}}const C=x&&window.Promise;var D=C?A:B;function E(a,b){return Array.prototype.find?a.find(b):a.filter(b)[0]}function F(a,b,c){if(Array.prototype.findIndex)return a.findIndex((a)=>a[b]===c);const d=E(a,(a)=>a[b]===c);return a.indexOf(d)}function G(a){let b;if('HTML'===a.nodeName){const{width:a,height:c}=n();b={width:a,height:c,left:0,top:0}}else b={width:a.offsetWidth,height:a.offsetHeight,left:a.offsetLeft,top:a.offsetTop};return p(b)}function H(a){const b=getComputedStyle(a),c=parseFloat(b.marginTop)+parseFloat(b.marginBottom),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e={width:a.offsetWidth+d,height:a.offsetHeight+c};return e}function I(a){const b={left:'right',right:'left',bottom:'top',top:'bottom'};return a.replace(/left|right|bottom|top/g,(a)=>b[a])}function J(a,b,c){c=c.split('-')[0];const d=H(a),e={width:d.width,height:d.height},f=-1!==['right','left'].indexOf(c),g=f?'top':'left',h=f?'left':'top',i=f?'height':'width',j=f?'width':'height';return e[g]=b[g]+b[i]/2-d[i]/2,e[h]=c===h?b[h]-d[j]:b[I(h)],e}function K(a,b,c){const d=g(b,c);return r(c,d)}function L(a){const b=[!1,'ms','Webkit','Moz','O'],c=a.charAt(0).toUpperCase()+a.slice(1);for(let d=0;dc&&a===b)}function O(a,b,c){const d=E(a,({name:a})=>a===b),e=!!d&&a.some((a)=>a.name===c&&a.enabled&&a.order{a.removeEventListener('scroll',b.updateBound)}),b.updateBound=null,b.scrollParents=[],b.scrollElement=null,b.eventsEnabled=!1,b}function S(a,b,c){const d=void 0===c?a:a.slice(0,F(a,'name',c));return d.forEach((a)=>{a['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');const c=a['function']||a.fn;a.enabled&&M(c)&&(b.offsets.popper=p(b.offsets.popper),b.offsets.reference=p(b.offsets.reference),b=c(b,a))}),b}function T(a,b){Object.keys(b).forEach(function(c){const d=b[c];!1===d?a.removeAttribute(c):a.setAttribute(c,b[c])})}function U(a,b){Object.keys(b).forEach((c)=>{let d='';-1!==['width','height','top','right','bottom','left'].indexOf(c)&&P(b[c])&&(d='px'),a.style[c]=b[c]+d})}function V(a,b,d,e){const f='BODY'===a.nodeName,g=f?a.ownerDocument.defaultView:a;g.addEventListener(b,d,{passive:!0}),f||V(c(g.parentNode),b,d,e),e.push(g)}function W(a,b,d,e){d.updateBound=e,Q(a).addEventListener('resize',d.updateBound,{passive:!0});const f=c(a);return V(f,'scroll',d.updateBound,d.scrollParents),d.scrollElement=f,d.eventsEnabled=!0,d}var X={computeAutoPlacement:w,debounce:D,findIndex:F,getBordersSize:j,getBoundaries:u,getBoundingClientRect:q,getClientRect:p,getOffsetParent:d,getOffsetRect:G,getOffsetRectRelativeToArbitraryNode:r,getOuterSizes:H,getParentNode:b,getPopperOffsets:J,getReferenceOffsets:K,getScroll:h,getScrollParent:c,getStyleComputedProperty:a,getSupportedPropertyName:L,getWindowSizes:n,isFixed:t,isFunction:M,isModifierEnabled:N,isModifierRequired:O,isNumeric:P,removeEventListeners:R,runModifiers:S,setAttributes:T,setStyles:U,setupEventListeners:W};export{w as computeAutoPlacement,D as debounce,F as findIndex,j as getBordersSize,u as getBoundaries,q as getBoundingClientRect,p as getClientRect,d as getOffsetParent,G as getOffsetRect,r as getOffsetRectRelativeToArbitraryNode,H as getOuterSizes,b as getParentNode,J as getPopperOffsets,K as getReferenceOffsets,h as getScroll,c as getScrollParent,a as getStyleComputedProperty,L as getSupportedPropertyName,n as getWindowSizes,t as isFixed,M as isFunction,N as isModifierEnabled,O as isModifierRequired,P as isNumeric,R as removeEventListeners,S as runModifiers,T as setAttributes,U as setStyles,W as setupEventListeners};export default X; //# sourceMappingURL=popper-utils.min.js.map diff --git a/public/assets/vendor/popper.js/dist/popper-utils.min.js.map b/public/assets/vendor/popper.js/dist/popper-utils.min.js.map index f93c7151..4ed19640 100644 --- a/public/assets/vendor/popper.js/dist/popper-utils.min.js.map +++ b/public/assets/vendor/popper.js/dist/popper-utils.min.js.map @@ -1 +1 @@ -{"version":3,"file":"popper-utils.min.js","sources":["../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/debounce.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/getOffsetRect.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/getReferenceOffsets.js","../src/utils/getSupportedPropertyName.js","../src/utils/isFunction.js","../src/utils/isModifierEnabled.js","../src/utils/isModifierRequired.js","../src/utils/isNumeric.js","../src/utils/getWindow.js","../src/utils/removeEventListeners.js","../src/utils/runModifiers.js","../src/utils/setAttributes.js","../src/utils/setStyles.js","../src/utils/setupEventListeners.js","../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","nodeType","css","window","getComputedStyle","property","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","indexOf","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","sideA","axis","sideB","styles","split","isIE10","navigator","appVersion","getSize","Math","max","computedStyle","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","rect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","getArea","computeAutoPlacement","padding","placement","rects","refRect","sortedAreas","Object","keys","map","key","sort","b","area","a","filteredAreas","filter","computedPlacement","length","variation","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","find","Array","prototype","arr","findIndex","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getReferenceOffsets","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","some","name","enabled","isModifierRequired","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","state","updateBound","scrollParents","forEach","target","scrollElement","eventsEnabled","runModifiers","modifiersToRun","ends","fn","data","reference","setAttributes","value","attributes","removeAttribute","setAttribute","setStyles","prop","unit","attachToScrollParents","isBody","addEventListener","passive","push","setupEventListeners"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper-utils.min.js","sources":["../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/debounce.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/getOffsetRect.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/getReferenceOffsets.js","../src/utils/getSupportedPropertyName.js","../src/utils/isFunction.js","../src/utils/isModifierEnabled.js","../src/utils/isModifierRequired.js","../src/utils/isNumeric.js","../src/utils/getWindow.js","../src/utils/removeEventListeners.js","../src/utils/runModifiers.js","../src/utils/setAttributes.js","../src/utils/setStyles.js","../src/utils/setupEventListeners.js","../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","overflow","overflowX","overflowY","getStyleComputedProperty","test","getScrollParent","getParentNode","offsetParent","indexOf","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","isIE10","navigator","appVersion","Math","max","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","window","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","key","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","variation","split","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","called","Promise","resolve","then","scheduled","supportsMicroTasks","Array","prototype","find","arr","findIndex","cur","match","obj","elementRect","offsetLeft","offsetTop","x","marginBottom","y","marginRight","hash","replace","matched","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","commonOffsetParent","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","functionToCheck","getType","toString","call","modifiers","some","name","enabled","requesting","isRequired","requested","warn","n","isNaN","isFinite","defaultView","removeEventListener","state","updateBound","scrollParents","forEach","target","scrollElement","eventsEnabled","modifiersToRun","ends","fn","isFunction","data","reference","value","attributes","removeAttribute","setAttribute","prop","unit","isNumeric","isBody","addEventListener","passive","push"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/popper.js b/public/assets/vendor/popper.js/dist/popper.js index 3f25fdd3..db69baa3 100644 --- a/public/assets/vendor/popper.js/dist/popper.js +++ b/public/assets/vendor/popper.js/dist/popper.js @@ -1,6 +1,6 @@ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.12.6 + * @version 1.12.9 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -22,7 +22,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; let timeoutDuration = 0; for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -39,7 +39,7 @@ function microtaskDebounce(fn) { return; } called = true; - Promise.resolve().then(() => { + window.Promise.resolve().then(() => { called = false; fn(); }); @@ -96,7 +96,7 @@ function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - const css = window.getComputedStyle(element, null); + const css = getComputedStyle(element, null); return property ? css[property] : css; } @@ -124,7 +124,7 @@ function getParentNode(element) { function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body; + return document.body; } switch (element.nodeName) { @@ -161,7 +161,7 @@ function getOffsetParent(element) { return element.ownerDocument.documentElement; } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case @@ -207,7 +207,7 @@ function getRoot(node) { function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM @@ -294,7 +294,7 @@ function getBordersSize(styles, axis) { const sideA = axis === 'x' ? 'Left' : 'Top'; const sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return +styles[`border${sideA}Width`].split('px')[0] + +styles[`border${sideB}Width`].split('px')[0]; + return parseFloat(styles[`border${sideA}Width`], 10) + parseFloat(styles[`border${sideB}Width`], 10); } /** @@ -317,9 +317,9 @@ function getSize(axis, body, html, computedStyle) { } function getWindowSizes() { - const body = window.document.body; - const html = window.document.documentElement; - const computedStyle = isIE10$1() && window.getComputedStyle(html); + const body = document.body; + const html = document.documentElement; + const computedStyle = isIE10$1() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), @@ -419,8 +419,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { const scrollParent = getScrollParent(children); const styles = getStyleComputedProperty(parent); - const borderTopWidth = +styles.borderTopWidth.split('px')[0]; - const borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + const borderTopWidth = parseFloat(styles.borderTopWidth, 10); + const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); let offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -436,8 +436,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - const marginTop = +styles.marginTop.split('px')[0]; - const marginLeft = +styles.marginLeft.split('px')[0]; + const marginTop = parseFloat(styles.marginTop, 10); + const marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -516,7 +516,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) { // Handle other cases based on DOM element used as boundaries let boundariesNode; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } @@ -626,7 +626,7 @@ function getReferenceOffsets(state, popper, reference) { * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { - const styles = window.getComputedStyle(element); + const styles = getComputedStyle(element); const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); const result = { @@ -833,7 +833,7 @@ function getSupportedPropertyName(property) { for (let i = 0; i < prefixes.length - 1; i++) { const prefix = prefixes[i]; const toCheck = prefix ? `${prefix}${upperProp}` : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } @@ -952,7 +952,7 @@ function removeEventListeners(reference, state) { */ function disableEventListeners() { if (this.state.eventsEnabled) { - window.cancelAnimationFrame(this.scheduleUpdate); + cancelAnimationFrame(this.scheduleUpdate); this.state = removeEventListeners(this.reference, this.state); } } @@ -1232,22 +1232,26 @@ function arrow(data, options) { if (reference[side] + arrowElementSize > popper[opSide]) { data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; } + data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper const center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets // take popper margin in account because we don't have this info available - const popperMarginSide = getStyleComputedProperty(data.instance.popper, `margin${sideCapitalized}`).replace('px', ''); - let sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide; + const css = getStyleComputedProperty(data.instance.popper); + const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10); + const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10); + let sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); data.arrowElement = arrowElement; - data.offsets.arrow = {}; - data.offsets.arrow[side] = Math.round(sideValue); - data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node + data.offsets.arrow = { + [side]: Math.round(sideValue), + [altSide]: '' // make sure to unset any eventual altSide value from the DOM node + }; return data; } diff --git a/public/assets/vendor/popper.js/dist/popper.js.map b/public/assets/vendor/popper.js/dist/popper.js.map index fcb0ca9a..75a93ccc 100644 --- a/public/assets/vendor/popper.js/dist/popper.js.map +++ b/public/assets/vendor/popper.js/dist/popper.js.map @@ -1 +1 @@ -{"version":3,"file":"popper.js","sources":["../src/utils/debounce.js","../src/utils/isFunction.js","../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/getReferenceOffsets.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/runModifiers.js","../src/methods/update.js","../src/utils/isModifierEnabled.js","../src/utils/getSupportedPropertyName.js","../src/methods/destroy.js","../src/utils/getWindow.js","../src/utils/setupEventListeners.js","../src/methods/enableEventListeners.js","../src/utils/removeEventListeners.js","../src/methods/disableEventListeners.js","../src/utils/isNumeric.js","../src/utils/setStyles.js","../src/utils/setAttributes.js","../src/modifiers/applyStyle.js","../src/modifiers/computeStyle.js","../src/utils/isModifierRequired.js","../src/modifiers/arrow.js","../src/utils/getOppositeVariation.js","../src/methods/placements.js","../src/utils/clockwise.js","../src/modifiers/flip.js","../src/modifiers/keepTogether.js","../src/modifiers/offset.js","../src/modifiers/preventOverflow.js","../src/modifiers/shift.js","../src/modifiers/hide.js","../src/modifiers/inner.js","../src/modifiers/index.js","../src/methods/defaults.js","../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const popperMarginSide = getStyleComputedProperty(\n data.instance.popper,\n `margin${sideCapitalized}`\n ).replace('px', '');\n let sideValue =\n center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","undefined","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","update","isDestroyed","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","floor","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper.js","sources":["../src/utils/debounce.js","../src/utils/isFunction.js","../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/getReferenceOffsets.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/runModifiers.js","../src/methods/update.js","../src/utils/isModifierEnabled.js","../src/utils/getSupportedPropertyName.js","../src/methods/destroy.js","../src/utils/getWindow.js","../src/utils/setupEventListeners.js","../src/methods/enableEventListeners.js","../src/utils/removeEventListeners.js","../src/methods/disableEventListeners.js","../src/utils/isNumeric.js","../src/utils/setStyles.js","../src/utils/setAttributes.js","../src/modifiers/applyStyle.js","../src/modifiers/computeStyle.js","../src/utils/isModifierRequired.js","../src/modifiers/arrow.js","../src/utils/getOppositeVariation.js","../src/methods/placements.js","../src/utils/clockwise.js","../src/modifiers/flip.js","../src/modifiers/keepTogether.js","../src/modifiers/offset.js","../src/modifiers/preventOverflow.js","../src/modifiers/shift.js","../src/modifiers/hide.js","../src/modifiers/inner.js","../src/modifiers/index.js","../src/methods/defaults.js","../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","undefined","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","update","isDestroyed","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","floor","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/popper.min.js b/public/assets/vendor/popper.js/dist/popper.min.js index 744877a2..9f3d58f8 100644 --- a/public/assets/vendor/popper.js/dist/popper.min.js +++ b/public/assets/vendor/popper.js/dist/popper.min.js @@ -1,5 +1,5 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */const isBrowser='undefined'!=typeof window&&'undefined'!=typeof window.document,longerTimeoutBrowsers=['Edge','Trident','Firefox'];let timeoutDuration=0;for(let e=0;e{t||(t=!0,Promise.resolve().then(()=>{t=!1,e()}))}}function taskDebounce(e){let t=!1;return()=>{t||(t=!0,setTimeout(()=>{t=!1,e()},timeoutDuration))}}const supportsMicroTasks=isBrowser&&window.Promise;var debounce=supportsMicroTasks?microtaskDebounce:taskDebounce;function isFunction(e){return e&&'[object Function]'==={}.toString.call(e)}function getStyleComputedProperty(e,t){if(1!==e.nodeType)return[];const o=window.getComputedStyle(e,null);return t?o[t]:o}function getParentNode(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function getScrollParent(e){if(!e)return window.document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}const{overflow:t,overflowX:o,overflowY:n}=getStyleComputedProperty(e);return /(auto|scroll)/.test(t+n+o)?e:getScrollParent(getParentNode(e))}function getOffsetParent(e){const t=e&&e.offsetParent,o=t&&t.nodeName;return o&&'BODY'!==o&&'HTML'!==o?-1!==['TD','TABLE'].indexOf(t.nodeName)&&'static'===getStyleComputedProperty(t,'position')?getOffsetParent(t):t:e?e.ownerDocument.documentElement:window.document.documentElement}function isOffsetContainer(e){const{nodeName:t}=e;return'BODY'!==t&&('HTML'===t||getOffsetParent(e.firstElementChild)===e)}function getRoot(e){return null===e.parentNode?e:getRoot(e.parentNode)}function findCommonOffsetParent(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return window.document.documentElement;const o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);const{commonAncestorContainer:p}=r;if(e!==p&&t!==p||n.contains(i))return isOffsetContainer(p)?p:getOffsetParent(p);const d=getRoot(e);return d.host?findCommonOffsetParent(d.host,t):findCommonOffsetParent(e,getRoot(t).host)}function getScroll(e,t='top'){const o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){const t=e.ownerDocument.documentElement,n=e.ownerDocument.scrollingElement||t;return n[o]}return e[o]}function includeScroll(e,t,o=!1){const n=getScroll(t,'top'),i=getScroll(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function getBordersSize(e,t){const o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return+e[`border${o}Width`].split('px')[0]+ +e[`border${n}Width`].split('px')[0]}let isIE10;var isIE10$1=function(){return void 0==isIE10&&(isIE10=-1!==navigator.appVersion.indexOf('MSIE 10')),isIE10};function getSize(e,t,o,n){return Math.max(t[`offset${e}`],t[`scroll${e}`],o[`client${e}`],o[`offset${e}`],o[`scroll${e}`],isIE10$1()?o[`offset${e}`]+n[`margin${'Height'===e?'Top':'Left'}`]+n[`margin${'Height'===e?'Bottom':'Right'}`]:0)}function getWindowSizes(){const e=window.document.body,t=window.document.documentElement,o=isIE10$1()&&window.getComputedStyle(t);return{height:getSize('Height',e,t,o),width:getSize('Width',e,t,o)}}var _extends=Object.assign||function(e){for(var t,o=1;o_extends({key:e},d[e],{area:getArea(d[e])})).sort((e,t)=>t.area-e.area),a=s.filter(({width:e,height:t})=>e>=o.clientWidth&&t>=o.clientHeight),f=0t[e])}function getPopperOffsets(e,t,o){o=o.split('-')[0];const n=getOuterSizes(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',d=r?'left':'top',s=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[s]/2-n[s]/2,i[d]=o===d?t[d]-n[a]:t[getOppositePlacement(d)],i}function find(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function findIndex(e,t,o){if(Array.prototype.findIndex)return e.findIndex((e)=>e[t]===o);const n=find(e,(e)=>e[t]===o);return e.indexOf(n)}function runModifiers(e,t,o){const n=void 0===o?e:e.slice(0,findIndex(e,'name',o));return n.forEach((e)=>{e['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');const o=e['function']||e.fn;e.enabled&&isFunction(o)&&(t.offsets.popper=getClientRect(t.offsets.popper),t.offsets.reference=getClientRect(t.offsets.reference),t=o(t,e))}),t}function update(){if(this.state.isDestroyed)return;let e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=getReferenceOffsets(this.state,this.popper,this.reference),e.placement=computeAutoPlacement(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=getPopperOffsets(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position='absolute',e=runModifiers(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}function isModifierEnabled(e,t){return e.some(({name:e,enabled:o})=>o&&e===t)}function getSupportedPropertyName(e){const t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1);for(let n=0;n{e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function disableEventListeners(){this.state.eventsEnabled&&(window.cancelAnimationFrame(this.scheduleUpdate),this.state=removeEventListeners(this.reference,this.state))}function isNumeric(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function setStyles(e,t){Object.keys(t).forEach((o)=>{let n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&isNumeric(t[o])&&(n='px'),e.style[o]=t[o]+n})}function setAttributes(e,t){Object.keys(t).forEach(function(o){const n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function applyStyle(e){return setStyles(e.instance.popper,e.styles),setAttributes(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&setStyles(e.arrowElement,e.arrowStyles),e}function applyStyleOnLoad(e,t,o,n,i){const r=getReferenceOffsets(i,t,e),p=computeAutoPlacement(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),setStyles(t,{position:'absolute'}),o}function computeStyle(e,t){var o=Math.floor;const{x:n,y:i}=t,{popper:r}=e.offsets,p=find(e.instance.modifiers,(e)=>'applyStyle'===e.name).gpuAcceleration;void 0!==p&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');const d=void 0===p?t.gpuAcceleration:p,s=getOffsetParent(e.instance.popper),a=getBoundingClientRect(s),f={position:r.position},l={left:o(r.left),top:o(r.top),bottom:o(r.bottom),right:o(r.right)},m='bottom'===n?'top':'bottom',c='right'===i?'left':'right',h=getSupportedPropertyName('transform');let u,g;if(g='bottom'==m?-a.height+l.bottom:l.top,u='right'==c?-a.width+l.right:l.left,d&&h)f[h]=`translate3d(${u}px, ${g}px, 0)`,f[m]=0,f[c]=0,f.willChange='transform';else{const e='bottom'==m?-1:1,t='right'==c?-1:1;f[m]=g*e,f[c]=u*t,f.willChange=`${m}, ${c}`}const b={"x-placement":e.placement};return e.attributes=_extends({},b,e.attributes),e.styles=_extends({},f,e.styles),e.arrowStyles=_extends({},e.offsets.arrow,e.arrowStyles),e}function isModifierRequired(e,t,o){const n=find(e,({name:e})=>e===t),i=!!n&&e.some((e)=>e.name===o&&e.enabled&&e.orderi[l]&&(e.offsets.popper[a]+=r[a]+m-i[l]);const c=r[a]+r[d]/2-m/2,h=getStyleComputedProperty(e.instance.popper,`margin${s}`).replace('px','');let u=c-getClientRect(e.offsets.popper)[a]-h;return u=Math.max(Math.min(i[d]-m,u),0),e.arrowElement=o,e.offsets.arrow={},e.offsets.arrow[a]=Math.round(u),e.offsets.arrow[f]='',e}function getOppositeVariation(e){if('end'===e)return'start';return'start'===e?'end':e}var placements=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'];const validPlacements=placements.slice(3);function clockwise(e,t=!1){const o=validPlacements.indexOf(e),n=validPlacements.slice(o+1).concat(validPlacements.slice(0,o));return t?n.reverse():n}const BEHAVIORS={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'};function flip(e,t){if(isModifierEnabled(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;const o=getBoundaries(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement);let n=e.placement.split('-')[0],i=getOppositePlacement(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case BEHAVIORS.FLIP:p=[n,i];break;case BEHAVIORS.CLOCKWISE:p=clockwise(n);break;case BEHAVIORS.COUNTERCLOCKWISE:p=clockwise(n,!0);break;default:p=t.behavior;}return p.forEach((d,s)=>{if(n!==d||p.length===s+1)return e;n=e.placement.split('-')[0],i=getOppositePlacement(n);const a=e.offsets.popper,f=e.offsets.reference,l=Math.floor,m='left'===n&&l(a.right)>l(f.left)||'right'===n&&l(a.left)l(f.top)||'bottom'===n&&l(a.top)l(o.right),u=l(a.top)l(o.bottom),b='left'===n&&c||'right'===n&&h||'top'===n&&u||'bottom'===n&&g,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&c||w&&'end'===r&&h||!w&&'start'===r&&u||!w&&'end'===r&&g);(m||b||y)&&(e.flipped=!0,(m||b)&&(n=p[s+1]),y&&(r=getOppositeVariation(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=_extends({},e.offsets.popper,getPopperOffsets(e.instance.popper,e.offsets.reference,e.placement)),e=runModifiers(e.instance.modifiers,e,'flip'))}),e}function keepTogether(e){const{popper:t,reference:o}=e.offsets,n=e.placement.split('-')[0],i=Math.floor,r=-1!==['top','bottom'].indexOf(n),p=r?'right':'bottom',d=r?'left':'top',s=r?'width':'height';return t[p]i(o[p])&&(e.offsets.popper[d]=i(o[p])),e}function toValue(e,t,o,n){var i=Math.max;const r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),p=+r[1],d=r[2];if(!p)return e;if(0===d.indexOf('%')){let e;switch(d){case'%p':e=o;break;case'%':case'%r':default:e=n;}const i=getClientRect(e);return i[t]/100*p}if('vh'===d||'vw'===d){let e;return e='vh'===d?i(document.documentElement.clientHeight,window.innerHeight||0):i(document.documentElement.clientWidth,window.innerWidth||0),e/100*p}return p}function parseOffset(e,t,o,n){const i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map((e)=>e.trim()),d=p.indexOf(find(p,(e)=>-1!==e.search(/,|\s/)));p[d]&&-1===p[d].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');const s=/\s*,\s*|\s+/;let a=-1===d?[p]:[p.slice(0,d).concat([p[d].split(s)[0]]),[p[d].split(s)[1]].concat(p.slice(d+1))];return a=a.map((e,n)=>{const i=(1===n?!r:r)?'height':'width';let p=!1;return e.reduce((e,t)=>''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t),[]).map((e)=>toValue(e,i,t,o))}),a.forEach((e,t)=>{e.forEach((o,n)=>{isNumeric(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function offset(e,{offset:t}){const{placement:o,offsets:{popper:n,reference:i}}=e,r=o.split('-')[0];let p;return p=isNumeric(+t)?[+t,0]:parseOffset(t,n,i,r),'left'===r?(n.top+=p[0],n.left-=p[1]):'right'===r?(n.top+=p[0],n.left+=p[1]):'top'===r?(n.left+=p[0],n.top-=p[1]):'bottom'===r&&(n.left+=p[0],n.top+=p[1]),e.popper=n,e}function preventOverflow(e,t){let o=t.boundariesElement||getOffsetParent(e.instance.popper);e.instance.reference===o&&(o=getOffsetParent(o));const n=getBoundaries(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=n;const i=t.priority;let r=e.offsets.popper;const p={primary(e){let o=r[e];return r[e]n[e]&&!t.escapeWithReference&&(i=Math.min(r[o],n[e]-('right'===e?r.width:r.height))),{[o]:i}}};return i.forEach((e)=>{const t=-1===['left','top'].indexOf(e)?'secondary':'primary';r=_extends({},r,p[t](e))}),e.offsets.popper=r,e}function shift(e){const t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){const{reference:t,popper:i}=e.offsets,r=-1!==['bottom','top'].indexOf(o),p=r?'left':'top',d=r?'width':'height',s={start:{[p]:t[p]},end:{[p]:t[p]+t[d]-i[d]}};e.offsets.popper=_extends({},i,s[n])}return e}function hide(e){if(!isModifierRequired(e.instance.modifiers,'hide','preventOverflow'))return e;const t=e.offsets.reference,o=find(e.instance.modifiers,(e)=>'preventOverflow'===e.name).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right{},onUpdate:()=>{},modifiers};class Popper{constructor(e,t,o={}){this.scheduleUpdate=()=>requestAnimationFrame(this.update),this.update=debounce(this.update.bind(this)),this.options=_extends({},Popper.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(_extends({},Popper.Defaults.modifiers,o.modifiers)).forEach((e)=>{this.options.modifiers[e]=_extends({},Popper.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map((e)=>_extends({name:e},this.options.modifiers[e])).sort((e,t)=>e.order-t.order),this.modifiers.forEach((e)=>{e.enabled&&isFunction(e.onLoad)&&e.onLoad(this.reference,this.popper,this.options,e,this.state)}),this.update();const n=this.options.eventsEnabled;n&&this.enableEventListeners(),this.state.eventsEnabled=n}update(){return update.call(this)}destroy(){return destroy.call(this)}enableEventListeners(){return enableEventListeners.call(this)}disableEventListeners(){return disableEventListeners.call(this)}}Popper.Utils=('undefined'==typeof window?global:window).PopperUtils,Popper.placements=placements,Popper.Defaults=Defaults;export default Popper; + */const e='undefined'!=typeof window&&'undefined'!=typeof document,t=['Edge','Trident','Firefox'];let o=0;for(let n=0;n{t||(t=!0,window.Promise.resolve().then(()=>{t=!1,e()}))}}function i(e){let t=!1;return()=>{t||(t=!0,setTimeout(()=>{t=!1,e()},o))}}const r=e&&window.Promise;var p=r?n:i;function d(e){return e&&'[object Function]'==={}.toString.call(e)}function s(e,t){if(1!==e.nodeType)return[];const o=getComputedStyle(e,null);return t?o[t]:o}function a(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function f(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}const{overflow:t,overflowX:o,overflowY:n}=s(e);return /(auto|scroll)/.test(t+n+o)?e:f(a(e))}function l(e){const t=e&&e.offsetParent,o=t&&t.nodeName;return o&&'BODY'!==o&&'HTML'!==o?-1!==['TD','TABLE'].indexOf(t.nodeName)&&'static'===s(t,'position')?l(t):t:e?e.ownerDocument.documentElement:document.documentElement}function m(e){const{nodeName:t}=e;return'BODY'!==t&&('HTML'===t||l(e.firstElementChild)===e)}function h(e){return null===e.parentNode?e:h(e.parentNode)}function c(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;const o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);const{commonAncestorContainer:p}=r;if(e!==p&&t!==p||n.contains(i))return m(p)?p:l(p);const d=h(e);return d.host?c(d.host,t):c(e,h(t).host)}function u(e,t='top'){const o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){const t=e.ownerDocument.documentElement,n=e.ownerDocument.scrollingElement||t;return n[o]}return e[o]}function g(e,t,o=!1){const n=u(t,'top'),i=u(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function b(e,t){const o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return parseFloat(e[`border${o}Width`],10)+parseFloat(e[`border${n}Width`],10)}let w;var y=function(){return void 0==w&&(w=-1!==navigator.appVersion.indexOf('MSIE 10')),w};function E(e,t,o,n){return Math.max(t[`offset${e}`],t[`scroll${e}`],o[`client${e}`],o[`offset${e}`],o[`scroll${e}`],y()?o[`offset${e}`]+n[`margin${'Height'===e?'Top':'Left'}`]+n[`margin${'Height'===e?'Bottom':'Right'}`]:0)}function v(){const e=document.body,t=document.documentElement,o=y()&&getComputedStyle(t);return{height:E('Height',e,t,o),width:E('Width',e,t,o)}}var O=Object.assign||function(e){for(var t,o=1;oO({key:e},d[e],{area:C(d[e])})).sort((e,t)=>t.area-e.area),a=s.filter(({width:e,height:t})=>e>=o.clientWidth&&t>=o.clientHeight),f=0t[e])}function k(e,t,o){o=o.split('-')[0];const n=H(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',d=r?'left':'top',s=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[s]/2-n[s]/2,i[d]=o===d?t[d]-n[a]:t[P(d)],i}function A(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function I(e,t,o){if(Array.prototype.findIndex)return e.findIndex((e)=>e[t]===o);const n=A(e,(e)=>e[t]===o);return e.indexOf(n)}function M(e,t,o){const n=void 0===o?e:e.slice(0,I(e,'name',o));return n.forEach((e)=>{e['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');const o=e['function']||e.fn;e.enabled&&d(o)&&(t.offsets.popper=x(t.offsets.popper),t.offsets.reference=x(t.offsets.reference),t=o(t,e))}),t}function R(){if(this.state.isDestroyed)return;let e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=W(this.state,this.popper,this.reference),e.placement=B(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.offsets.popper=k(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position='absolute',e=M(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}function U(e,t){return e.some(({name:e,enabled:o})=>o&&e===t)}function Y(e){const t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1);for(let n=0;n{e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function q(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=z(this.reference,this.state))}function _(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function X(e,t){Object.keys(t).forEach((o)=>{let n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&_(t[o])&&(n='px'),e.style[o]=t[o]+n})}function J(e,t){Object.keys(t).forEach(function(o){const n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function Z(e){return X(e.instance.popper,e.styles),J(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&X(e.arrowElement,e.arrowStyles),e}function $(e,t,o,n,i){const r=W(i,t,e),p=B(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),X(t,{position:'absolute'}),o}function Q(e,t){var o=Math.floor;const{x:n,y:i}=t,{popper:r}=e.offsets,p=A(e.instance.modifiers,(e)=>'applyStyle'===e.name).gpuAcceleration;void 0!==p&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');const d=void 0===p?t.gpuAcceleration:p,s=l(e.instance.popper),a=L(s),f={position:r.position},m={left:o(r.left),top:o(r.top),bottom:o(r.bottom),right:o(r.right)},h='bottom'===n?'top':'bottom',c='right'===i?'left':'right',u=Y('transform');let g,b;if(b='bottom'==h?-a.height+m.bottom:m.top,g='right'==c?-a.width+m.right:m.left,d&&u)f[u]=`translate3d(${g}px, ${b}px, 0)`,f[h]=0,f[c]=0,f.willChange='transform';else{const e='bottom'==h?-1:1,t='right'==c?-1:1;f[h]=b*e,f[c]=g*t,f.willChange=`${h}, ${c}`}const w={"x-placement":e.placement};return e.attributes=O({},w,e.attributes),e.styles=O({},f,e.styles),e.arrowStyles=O({},e.offsets.arrow,e.arrowStyles),e}function ee(e,t,o){const n=A(e,({name:e})=>e===t),i=!!n&&e.some((e)=>e.name===o&&e.enabled&&e.orderi[m]&&(e.offsets.popper[f]+=r[f]+h-i[m]),e.offsets.popper=x(e.offsets.popper);const c=r[f]+r[d]/2-h/2,u=s(e.instance.popper),g=parseFloat(u[`margin${a}`],10),b=parseFloat(u[`border${a}Width`],10);let w=c-e.offsets.popper[f]-g-b;return w=Math.max(Math.min(i[d]-h,w),0),e.arrowElement=o,e.offsets.arrow={[f]:Math.round(w),[l]:''},e}function oe(e){if('end'===e)return'start';return'start'===e?'end':e}var ne=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'];const ie=ne.slice(3);function re(e,t=!1){const o=ie.indexOf(e),n=ie.slice(o+1).concat(ie.slice(0,o));return t?n.reverse():n}const pe={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'};function de(e,t){if(U(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;const o=N(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement);let n=e.placement.split('-')[0],i=P(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case pe.FLIP:p=[n,i];break;case pe.CLOCKWISE:p=re(n);break;case pe.COUNTERCLOCKWISE:p=re(n,!0);break;default:p=t.behavior;}return p.forEach((d,s)=>{if(n!==d||p.length===s+1)return e;n=e.placement.split('-')[0],i=P(n);const a=e.offsets.popper,f=e.offsets.reference,l=Math.floor,m='left'===n&&l(a.right)>l(f.left)||'right'===n&&l(a.left)l(f.top)||'bottom'===n&&l(a.top)l(o.right),u=l(a.top)l(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&u||'bottom'===n&&g,w=-1!==['top','bottom'].indexOf(n),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&u||!w&&'end'===r&&g);(m||b||y)&&(e.flipped=!0,(m||b)&&(n=p[s+1]),y&&(r=oe(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=O({},e.offsets.popper,k(e.instance.popper,e.offsets.reference,e.placement)),e=M(e.instance.modifiers,e,'flip'))}),e}function se(e){const{popper:t,reference:o}=e.offsets,n=e.placement.split('-')[0],i=Math.floor,r=-1!==['top','bottom'].indexOf(n),p=r?'right':'bottom',d=r?'left':'top',s=r?'width':'height';return t[p]i(o[p])&&(e.offsets.popper[d]=i(o[p])),e}function ae(e,t,o,n){var i=Math.max;const r=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),p=+r[1],d=r[2];if(!p)return e;if(0===d.indexOf('%')){let e;switch(d){case'%p':e=o;break;case'%':case'%r':default:e=n;}const i=x(e);return i[t]/100*p}if('vh'===d||'vw'===d){let e;return e='vh'===d?i(document.documentElement.clientHeight,window.innerHeight||0):i(document.documentElement.clientWidth,window.innerWidth||0),e/100*p}return p}function fe(e,t,o,n){const i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map((e)=>e.trim()),d=p.indexOf(A(p,(e)=>-1!==e.search(/,|\s/)));p[d]&&-1===p[d].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');const s=/\s*,\s*|\s+/;let a=-1===d?[p]:[p.slice(0,d).concat([p[d].split(s)[0]]),[p[d].split(s)[1]].concat(p.slice(d+1))];return a=a.map((e,n)=>{const i=(1===n?!r:r)?'height':'width';let p=!1;return e.reduce((e,t)=>''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t),[]).map((e)=>ae(e,i,t,o))}),a.forEach((e,t)=>{e.forEach((o,n)=>{_(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function le(e,{offset:t}){const{placement:o,offsets:{popper:n,reference:i}}=e,r=o.split('-')[0];let p;return p=_(+t)?[+t,0]:fe(t,n,i,r),'left'===r?(n.top+=p[0],n.left-=p[1]):'right'===r?(n.top+=p[0],n.left+=p[1]):'top'===r?(n.left+=p[0],n.top-=p[1]):'bottom'===r&&(n.left+=p[0],n.top+=p[1]),e.popper=n,e}function me(e,t){let o=t.boundariesElement||l(e.instance.popper);e.instance.reference===o&&(o=l(o));const n=N(e.instance.popper,e.instance.reference,t.padding,o);t.boundaries=n;const i=t.priority;let r=e.offsets.popper;const p={primary(e){let o=r[e];return r[e]n[e]&&!t.escapeWithReference&&(i=Math.min(r[o],n[e]-('right'===e?r.width:r.height))),{[o]:i}}};return i.forEach((e)=>{const t=-1===['left','top'].indexOf(e)?'secondary':'primary';r=O({},r,p[t](e))}),e.offsets.popper=r,e}function he(e){const t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){const{reference:t,popper:i}=e.offsets,r=-1!==['bottom','top'].indexOf(o),p=r?'left':'top',d=r?'width':'height',s={start:{[p]:t[p]},end:{[p]:t[p]+t[d]-i[d]}};e.offsets.popper=O({},i,s[n])}return e}function ce(e){if(!ee(e.instance.modifiers,'hide','preventOverflow'))return e;const t=e.offsets.reference,o=A(e.instance.modifiers,(e)=>'preventOverflow'===e.name).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right{},onUpdate:()=>{},modifiers:ge};class we{constructor(e,t,o={}){this.scheduleUpdate=()=>requestAnimationFrame(this.update),this.update=p(this.update.bind(this)),this.options=O({},we.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=t&&t.jquery?t[0]:t,this.options.modifiers={},Object.keys(O({},we.Defaults.modifiers,o.modifiers)).forEach((e)=>{this.options.modifiers[e]=O({},we.Defaults.modifiers[e]||{},o.modifiers?o.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map((e)=>O({name:e},this.options.modifiers[e])).sort((e,t)=>e.order-t.order),this.modifiers.forEach((e)=>{e.enabled&&d(e.onLoad)&&e.onLoad(this.reference,this.popper,this.options,e,this.state)}),this.update();const n=this.options.eventsEnabled;n&&this.enableEventListeners(),this.state.eventsEnabled=n}update(){return R.call(this)}destroy(){return F.call(this)}enableEventListeners(){return G.call(this)}disableEventListeners(){return q.call(this)}}we.Utils=('undefined'==typeof window?global:window).PopperUtils,we.placements=ne,we.Defaults=be;export default we; //# sourceMappingURL=popper.min.js.map diff --git a/public/assets/vendor/popper.js/dist/popper.min.js.map b/public/assets/vendor/popper.js/dist/popper.min.js.map index d623b7f2..daaa4ef6 100644 --- a/public/assets/vendor/popper.js/dist/popper.min.js.map +++ b/public/assets/vendor/popper.js/dist/popper.min.js.map @@ -1 +1 @@ -{"version":3,"file":"popper.min.js","sources":["../src/utils/debounce.js","../src/utils/isFunction.js","../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/getReferenceOffsets.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/runModifiers.js","../src/methods/update.js","../src/utils/isModifierEnabled.js","../src/utils/getSupportedPropertyName.js","../src/methods/destroy.js","../src/utils/getWindow.js","../src/utils/setupEventListeners.js","../src/methods/enableEventListeners.js","../src/utils/removeEventListeners.js","../src/methods/disableEventListeners.js","../src/utils/isNumeric.js","../src/utils/setStyles.js","../src/utils/setAttributes.js","../src/modifiers/applyStyle.js","../src/modifiers/computeStyle.js","../src/utils/isModifierRequired.js","../src/modifiers/arrow.js","../src/utils/getOppositeVariation.js","../src/methods/placements.js","../src/utils/clockwise.js","../src/modifiers/flip.js","../src/modifiers/keepTogether.js","../src/modifiers/offset.js","../src/modifiers/preventOverflow.js","../src/modifiers/shift.js","../src/modifiers/hide.js","../src/modifiers/inner.js","../src/modifiers/index.js","../src/methods/defaults.js","../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const popperMarginSide = getStyleComputedProperty(\n data.instance.popper,\n `margin${sideCapitalized}`\n ).replace('px', '');\n let sideValue =\n center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","nodeType","css","getComputedStyle","property","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","sideA","axis","sideB","styles","split","isIE10","appVersion","getSize","Math","max","computedStyle","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","rect","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","boundaries","boundariesElement","boundariesNode","popper","getArea","computeAutoPlacement","padding","placement","rects","refRect","sortedAreas","Object","keys","map","key","sort","b","area","a","filteredAreas","filter","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","find","Array","prototype","arr","findIndex","cur","match","obj","runModifiers","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","data","reference","update","state","isDestroyed","options","flip","originalPlacement","position","isCreated","onUpdate","onCreate","isModifierEnabled","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","scrollParents","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","prop","unit","setAttributes","value","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","computeStyle","floor","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","index2","basePlacement","preventOverflow","priority","check","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","modifierOptions","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper.min.js","sources":["../src/utils/debounce.js","../src/utils/isFunction.js","../src/utils/getStyleComputedProperty.js","../src/utils/getParentNode.js","../src/utils/getScrollParent.js","../src/utils/getOffsetParent.js","../src/utils/isOffsetContainer.js","../src/utils/getRoot.js","../src/utils/findCommonOffsetParent.js","../src/utils/getScroll.js","../src/utils/includeScroll.js","../src/utils/getBordersSize.js","../src/utils/isIE10.js","../src/utils/getWindowSizes.js","../src/utils/getClientRect.js","../src/utils/getBoundingClientRect.js","../src/utils/getOffsetRectRelativeToArbitraryNode.js","../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../src/utils/isFixed.js","../src/utils/getBoundaries.js","../src/utils/computeAutoPlacement.js","../src/utils/getReferenceOffsets.js","../src/utils/getOuterSizes.js","../src/utils/getOppositePlacement.js","../src/utils/getPopperOffsets.js","../src/utils/find.js","../src/utils/findIndex.js","../src/utils/runModifiers.js","../src/methods/update.js","../src/utils/isModifierEnabled.js","../src/utils/getSupportedPropertyName.js","../src/methods/destroy.js","../src/utils/getWindow.js","../src/utils/setupEventListeners.js","../src/methods/enableEventListeners.js","../src/utils/removeEventListeners.js","../src/methods/disableEventListeners.js","../src/utils/isNumeric.js","../src/utils/setStyles.js","../src/utils/setAttributes.js","../src/modifiers/applyStyle.js","../src/modifiers/computeStyle.js","../src/utils/isModifierRequired.js","../src/modifiers/arrow.js","../src/utils/getOppositeVariation.js","../src/methods/placements.js","../src/utils/clockwise.js","../src/modifiers/flip.js","../src/modifiers/keepTogether.js","../src/modifiers/offset.js","../src/modifiers/preventOverflow.js","../src/modifiers/shift.js","../src/modifiers/hide.js","../src/modifiers/inner.js","../src/modifiers/index.js","../src/methods/defaults.js","../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","called","Promise","resolve","then","scheduled","supportsMicroTasks","functionToCheck","getType","toString","call","element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","body","ownerDocument","overflow","overflowX","overflowY","getStyleComputedProperty","test","getScrollParent","getParentNode","offsetParent","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","isIE10","appVersion","Math","max","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","key","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","variation","split","commonOffsetParent","x","marginBottom","y","marginRight","hash","replace","matched","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","Array","prototype","find","arr","findIndex","cur","match","obj","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","isFunction","data","reference","state","isDestroyed","getReferenceOffsets","computeAutoPlacement","options","flip","originalPlacement","getPopperOffsets","position","runModifiers","isCreated","onUpdate","onCreate","some","name","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","isModifierEnabled","removeAttribute","getSupportedPropertyName","disableEventListeners","removeOnDestroy","removeChild","defaultView","isBody","target","addEventListener","passive","push","updateBound","scrollElement","scrollParents","eventsEnabled","setupEventListeners","scheduleUpdate","removeEventListener","removeEventListeners","n","isNaN","isFinite","prop","unit","isNumeric","value","attributes","setAttribute","instance","arrowElement","arrowStyles","floor","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","arrow","requesting","isRequired","requested","isModifierRequired","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","round","validPlacements","placements","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","clockwise","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","str","size","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","toValue","index2","basePlacement","parseOffset","priority","check","escapeWithReference","shiftvariation","shiftOffsets","bound","hide","subtractLength","requestAnimationFrame","update","debounce","bind","Popper","Defaults","jquery","modifierOptions","onLoad","enableEventListeners","destroy","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/umd/popper-utils.js b/public/assets/vendor/popper.js/dist/umd/popper-utils.js index 5f4eeada..622c3754 100644 --- a/public/assets/vendor/popper.js/dist/umd/popper-utils.js +++ b/public/assets/vendor/popper.js/dist/umd/popper-utils.js @@ -1,6 +1,6 @@ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.12.6 + * @version 1.12.9 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -25,7 +25,7 @@ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.PopperUtils = global.PopperUtils || {}))); + (factory((global.PopperUtils = {}))); }(this, (function (exports) { 'use strict'; /** @@ -40,7 +40,7 @@ function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - var css = window.getComputedStyle(element, null); + var css = getComputedStyle(element, null); return property ? css[property] : css; } @@ -68,7 +68,7 @@ function getParentNode(element) { function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body; + return document.body; } switch (element.nodeName) { @@ -110,7 +110,7 @@ function getOffsetParent(element) { return element.ownerDocument.documentElement; } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case @@ -157,7 +157,7 @@ function getRoot(node) { function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM @@ -249,7 +249,7 @@ function getBordersSize(styles, axis) { var sideA = axis === 'x' ? 'Left' : 'Top'; var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0]; + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); } /** @@ -272,9 +272,9 @@ function getSize(axis, body, html, computedStyle) { } function getWindowSizes() { - var body = window.document.body; - var html = window.document.documentElement; - var computedStyle = isIE10$1() && window.getComputedStyle(html); + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE10$1() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), @@ -374,8 +374,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { var scrollParent = getScrollParent(children); var styles = getStyleComputedProperty(parent); - var borderTopWidth = +styles.borderTopWidth.split('px')[0]; - var borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); var offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -391,8 +391,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - var marginTop = +styles.marginTop.split('px')[0]; - var marginLeft = +styles.marginLeft.split('px')[0]; + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -471,7 +471,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) { // Handle other cases based on DOM element used as boundaries var boundariesNode = void 0; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } @@ -575,7 +575,7 @@ function computeAutoPlacement(placement, refRect, popper, reference, boundariesE return computedPlacement + (variation ? '-' + variation : ''); } -var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; var timeoutDuration = 0; for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -592,7 +592,7 @@ function microtaskDebounce(fn) { return; } called = true; - Promise.resolve().then(function () { + window.Promise.resolve().then(function () { called = false; fn(); }); @@ -709,7 +709,7 @@ function getOffsetRect(element) { * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { - var styles = window.getComputedStyle(element); + var styles = getComputedStyle(element); var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); var result = { @@ -800,7 +800,7 @@ function getSupportedPropertyName(property) { for (var i = 0; i < prefixes.length - 1; i++) { var prefix = prefixes[i]; var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } diff --git a/public/assets/vendor/popper.js/dist/umd/popper-utils.js.map b/public/assets/vendor/popper.js/dist/umd/popper-utils.js.map index d3925849..c7bc4b58 100644 --- a/public/assets/vendor/popper.js/dist/umd/popper-utils.js.map +++ b/public/assets/vendor/popper.js/dist/umd/popper-utils.js.map @@ -1 +1 @@ -{"version":3,"file":"popper-utils.js","sources":["../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/debounce.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/getOffsetRect.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getSupportedPropertyName.js","../../src/utils/isFunction.js","../../src/utils/isModifierEnabled.js","../../src/utils/isModifierRequired.js","../../src/utils/isNumeric.js","../../src/utils/getWindow.js","../../src/utils/removeEventListeners.js","../../src/utils/runModifiers.js","../../src/utils/setAttributes.js","../../src/utils/setStyles.js","../../src/utils/setupEventListeners.js","../../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","property","nodeType","css","window","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","undefined","navigator","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","length","variation","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getReferenceOffsets","state","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","modifierName","some","name","enabled","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","runModifiers","data","ends","modifiersToRun","setAttributes","attributes","setAttribute","removeAttribute","setStyles","unit","attachToScrollParents","event","callback","isBody","target","addEventListener","passive","push","setupEventListeners","options"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper-utils.js","sources":["../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/debounce.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/getOffsetRect.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getSupportedPropertyName.js","../../src/utils/isFunction.js","../../src/utils/isModifierEnabled.js","../../src/utils/isModifierRequired.js","../../src/utils/isNumeric.js","../../src/utils/getWindow.js","../../src/utils/removeEventListeners.js","../../src/utils/runModifiers.js","../../src/utils/setAttributes.js","../../src/utils/setStyles.js","../../src/utils/setupEventListeners.js","../../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","document","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","indexOf","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","undefined","navigator","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","window","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","length","variation","split","isBrowser","longerTimeoutBrowsers","timeoutDuration","i","userAgent","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","getOffsetRect","elementRect","offsetLeft","offsetTop","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","getReferenceOffsets","state","commonOffsetParent","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","slice","prefix","toCheck","style","isFunction","functionToCheck","getType","toString","call","isModifierEnabled","modifiers","modifierName","some","name","enabled","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","warn","isNumeric","n","isNaN","isFinite","getWindow","defaultView","removeEventListeners","removeEventListener","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","runModifiers","data","ends","modifiersToRun","setAttributes","attributes","setAttribute","removeAttribute","setStyles","unit","attachToScrollParents","event","callback","isBody","target","addEventListener","passive","push","setupEventListeners","options"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/umd/popper-utils.min.js b/public/assets/vendor/popper.js/dist/umd/popper-utils.min.js index 0f4e6428..20c01da0 100644 --- a/public/assets/vendor/popper.js/dist/umd/popper-utils.min.js +++ b/public/assets/vendor/popper.js/dist/umd/popper-utils.min.js @@ -1,5 +1,5 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?b(exports):'function'==typeof define&&define.amd?define(['exports'],b):b(a.PopperUtils=a.PopperUtils||{})})(this,function(a){'use strict';function b(a,b){if(1!==a.nodeType)return[];var c=window.getComputedStyle(a,null);return b?c[b]:c}function c(a){return'HTML'===a.nodeName?a:a.parentNode||a.host}function d(a){if(!a)return window.document.body;switch(a.nodeName){case'HTML':case'BODY':return a.ownerDocument.body;case'#document':return a.body;}var e=b(a),f=e.overflow,g=e.overflowX,h=e.overflowY;return /(auto|scroll)/.test(f+h+g)?a:d(c(a))}function e(a){var c=a&&a.offsetParent,d=c&&c.nodeName;return d&&'BODY'!==d&&'HTML'!==d?-1!==['TD','TABLE'].indexOf(c.nodeName)&&'static'===b(c,'position')?e(c):c:a?a.ownerDocument.documentElement:window.document.documentElement}function f(a){var b=a.nodeName;return'BODY'!==b&&('HTML'===b||e(a.firstElementChild)===a)}function g(a){return null===a.parentNode?a:g(a.parentNode)}function h(a,b){if(!a||!a.nodeType||!b||!b.nodeType)return window.document.documentElement;var c=a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_FOLLOWING,d=c?a:b,i=c?b:a,j=document.createRange();j.setStart(d,0),j.setEnd(i,0);var k=j.commonAncestorContainer;if(a!==k&&b!==k||d.contains(i))return f(k)?k:e(k);var l=g(a);return l.host?h(l.host,b):h(a,g(b).host)}function j(a){var b=1=c.clientWidth&&d>=c.clientHeight}),k=0=c.clientWidth&&d>=c.clientHeight}),k=0 ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["element","nodeType","css","window","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","offsetParent","indexOf","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","styles","split","Math","isIE10","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","Array","prototype","find","arr","findIndex","cur","match","obj","elementRect","offsetLeft","offsetTop","x","parseFloat","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","commonOffsetParent","prefixes","upperProp","charAt","toUpperCase","slice","i","prefix","toCheck","style","functionToCheck","getType","toString","call","modifiers","some","name","enabled","requesting","isRequired","warn","requested","n","isNaN","isFinite","defaultView","removeEventListener","state","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","modifiersToRun","ends","fn","isFunction","data","reference","value","attributes","removeAttribute","setAttribute","unit","isNumeric","isBody","target","addEventListener","passive","push","max","navigator","appVersion","isBrowser","longerTimeoutBrowsers","timeoutDuration","userAgent","supportsMicroTasks","Promise","called","resolve","then","scheduled"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper-utils.min.js","sources":["../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/getOffsetRect.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getSupportedPropertyName.js","../../src/utils/isFunction.js","../../src/utils/isModifierEnabled.js","../../src/utils/isModifierRequired.js","../../src/utils/isNumeric.js","../../src/utils/getWindow.js","../../src/utils/removeEventListeners.js","../../src/utils/runModifiers.js","../../src/utils/setAttributes.js","../../src/utils/setStyles.js","../../src/utils/setupEventListeners.js","../../src/utils/debounce.js","../../src/utils/isIE10.js","../../src/utils/index.js"],"sourcesContent":["/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import getWindowSizes from './getWindowSizes';\nimport getClientRect from './getClientRect';\n\n/**\n * Get the position of the given element, relative to its offset parent\n * @method\n * @memberof Popper.Utils\n * @param {Element} element\n * @return {Object} position - Coordinates of the element and its `scrollTop`\n */\nexport default function getOffsetRect(element) {\n let elementRect;\n if (element.nodeName === 'HTML') {\n const { width, height } = getWindowSizes();\n elementRect = {\n width,\n height,\n left: 0,\n top: 0,\n };\n } else {\n elementRect = {\n width: element.offsetWidth,\n height: element.offsetHeight,\n left: element.offsetLeft,\n top: element.offsetTop,\n };\n }\n\n // position\n return getClientRect(elementRect);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import computeAutoPlacement from './computeAutoPlacement';\nimport debounce from './debounce';\nimport findIndex from './findIndex';\nimport getBordersSize from './getBordersSize';\nimport getBoundaries from './getBoundaries';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport getClientRect from './getClientRect';\nimport getOffsetParent from './getOffsetParent';\nimport getOffsetRect from './getOffsetRect';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getOuterSizes from './getOuterSizes';\nimport getParentNode from './getParentNode';\nimport getPopperOffsets from './getPopperOffsets';\nimport getReferenceOffsets from './getReferenceOffsets';\nimport getScroll from './getScroll';\nimport getScrollParent from './getScrollParent';\nimport getStyleComputedProperty from './getStyleComputedProperty';\nimport getSupportedPropertyName from './getSupportedPropertyName';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport isFunction from './isFunction';\nimport isModifierEnabled from './isModifierEnabled';\nimport isModifierRequired from './isModifierRequired';\nimport isNumeric from './isNumeric';\nimport removeEventListeners from './removeEventListeners';\nimport runModifiers from './runModifiers';\nimport setAttributes from './setAttributes';\nimport setStyles from './setStyles';\nimport setupEventListeners from './setupEventListeners';\n\n/** @namespace Popper.Utils */\nexport {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n\n// This is here just for backward compatibility with versions lower than v1.10.3\n// you should import the utilities using named exports, if you want them all use:\n// ```\n// import * as PopperUtils from 'popper-utils';\n// ```\n// The default export will be removed in the next major version.\nexport default {\n computeAutoPlacement,\n debounce,\n findIndex,\n getBordersSize,\n getBoundaries,\n getBoundingClientRect,\n getClientRect,\n getOffsetParent,\n getOffsetRect,\n getOffsetRectRelativeToArbitraryNode,\n getOuterSizes,\n getParentNode,\n getPopperOffsets,\n getReferenceOffsets,\n getScroll,\n getScrollParent,\n getStyleComputedProperty,\n getSupportedPropertyName,\n getWindowSizes,\n isFixed,\n isFunction,\n isModifierEnabled,\n isModifierRequired,\n isNumeric,\n removeEventListeners,\n runModifiers,\n setAttributes,\n setStyles,\n setupEventListeners,\n};\n"],"names":["element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","offsetParent","indexOf","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","Math","isIE10","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","window","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","split","Array","prototype","find","arr","findIndex","cur","match","obj","elementRect","offsetLeft","offsetTop","x","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","commonOffsetParent","prefixes","upperProp","charAt","toUpperCase","slice","i","prefix","toCheck","style","functionToCheck","getType","toString","call","modifiers","some","name","enabled","requesting","isRequired","warn","requested","n","isNaN","isFinite","defaultView","removeEventListener","state","updateBound","scrollParents","forEach","scrollElement","eventsEnabled","modifiersToRun","ends","fn","isFunction","data","reference","value","attributes","removeAttribute","setAttribute","unit","isNumeric","isBody","target","addEventListener","passive","push","max","navigator","appVersion","isBrowser","longerTimeoutBrowsers","timeoutDuration","userAgent","supportsMicroTasks","Promise","called","resolve","then","scheduled"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/umd/popper.js b/public/assets/vendor/popper.js/dist/umd/popper.js index 9a14c538..ac81d0a4 100644 --- a/public/assets/vendor/popper.js/dist/umd/popper.js +++ b/public/assets/vendor/popper.js/dist/umd/popper.js @@ -1,6 +1,6 @@ /**! * @fileOverview Kickass library to create and place poppers near their reference elements. - * @version 1.12.6 + * @version 1.12.9 * @license * Copyright (c) 2016 Federico Zivolo and contributors * @@ -28,7 +28,7 @@ (global.Popper = factory()); }(this, (function () { 'use strict'; -var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; var timeoutDuration = 0; for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -45,7 +45,7 @@ function microtaskDebounce(fn) { return; } called = true; - Promise.resolve().then(function () { + window.Promise.resolve().then(function () { called = false; fn(); }); @@ -102,7 +102,7 @@ function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - var css = window.getComputedStyle(element, null); + var css = getComputedStyle(element, null); return property ? css[property] : css; } @@ -130,7 +130,7 @@ function getParentNode(element) { function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body; + return document.body; } switch (element.nodeName) { @@ -172,7 +172,7 @@ function getOffsetParent(element) { return element.ownerDocument.documentElement; } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case @@ -219,7 +219,7 @@ function getRoot(node) { function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM @@ -311,7 +311,7 @@ function getBordersSize(styles, axis) { var sideA = axis === 'x' ? 'Left' : 'Top'; var sideB = sideA === 'Left' ? 'Right' : 'Bottom'; - return +styles['border' + sideA + 'Width'].split('px')[0] + +styles['border' + sideB + 'Width'].split('px')[0]; + return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10); } /** @@ -334,9 +334,9 @@ function getSize(axis, body, html, computedStyle) { } function getWindowSizes() { - var body = window.document.body; - var html = window.document.documentElement; - var computedStyle = isIE10$1() && window.getComputedStyle(html); + var body = document.body; + var html = document.documentElement; + var computedStyle = isIE10$1() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), @@ -479,8 +479,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { var scrollParent = getScrollParent(children); var styles = getStyleComputedProperty(parent); - var borderTopWidth = +styles.borderTopWidth.split('px')[0]; - var borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + var borderTopWidth = parseFloat(styles.borderTopWidth, 10); + var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); var offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -496,8 +496,8 @@ function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - var marginTop = +styles.marginTop.split('px')[0]; - var marginLeft = +styles.marginLeft.split('px')[0]; + var marginTop = parseFloat(styles.marginTop, 10); + var marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; @@ -576,7 +576,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) { // Handle other cases based on DOM element used as boundaries var boundariesNode = void 0; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } @@ -702,7 +702,7 @@ function getReferenceOffsets(state, popper, reference) { * @returns {Object} object containing width and height properties */ function getOuterSizes(element) { - var styles = window.getComputedStyle(element); + var styles = getComputedStyle(element); var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); var result = { @@ -919,7 +919,7 @@ function getSupportedPropertyName(property) { for (var i = 0; i < prefixes.length - 1; i++) { var prefix = prefixes[i]; var toCheck = prefix ? '' + prefix + upperProp : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } @@ -1038,7 +1038,7 @@ function removeEventListeners(reference, state) { */ function disableEventListeners() { if (this.state.eventsEnabled) { - window.cancelAnimationFrame(this.scheduleUpdate); + cancelAnimationFrame(this.scheduleUpdate); this.state = removeEventListeners(this.reference, this.state); } } @@ -1278,6 +1278,8 @@ function isModifierRequired(modifiers, requestingName, requestedName) { * @returns {Object} The data object, properly modified */ function arrow(data, options) { + var _data$offsets$arrow; + // arrow depends on keepTogether in order to work if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) { return data; @@ -1329,22 +1331,23 @@ function arrow(data, options) { if (reference[side] + arrowElementSize > popper[opSide]) { data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; } + data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets // take popper margin in account because we don't have this info available - var popperMarginSide = getStyleComputedProperty(data.instance.popper, 'margin' + sideCapitalized).replace('px', ''); - var sideValue = center - getClientRect(data.offsets.popper)[side] - popperMarginSide; + var css = getStyleComputedProperty(data.instance.popper); + var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10); + var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10); + var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); data.arrowElement = arrowElement; - data.offsets.arrow = {}; - data.offsets.arrow[side] = Math.round(sideValue); - data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node + data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow); return data; } diff --git a/public/assets/vendor/popper.js/dist/umd/popper.js.map b/public/assets/vendor/popper.js/dist/umd/popper.js.map index 0b35f487..0e383bfa 100644 --- a/public/assets/vendor/popper.js/dist/umd/popper.js.map +++ b/public/assets/vendor/popper.js/dist/umd/popper.js.map @@ -1 +1 @@ -{"version":3,"file":"popper.js","sources":["../../src/utils/debounce.js","../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/modifiers/applyStyle.js","../../src/modifiers/computeStyle.js","../../src/utils/isModifierRequired.js","../../src/modifiers/arrow.js","../../src/utils/getOppositeVariation.js","../../src/methods/placements.js","../../src/utils/clockwise.js","../../src/modifiers/flip.js","../../src/modifiers/keepTogether.js","../../src/modifiers/offset.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/shift.js","../../src/modifiers/hide.js","../../src/modifiers/inner.js","../../src/modifiers/index.js","../../src/methods/defaults.js","../../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return window.document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return window.document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return window.document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n +styles[`border${sideA}Width`].split('px')[0] +\n +styles[`border${sideB}Width`].split('px')[0]\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = window.document.body;\n const html = window.document.documentElement;\n const computedStyle = isIE10() && window.getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = +styles.borderTopWidth.split('px')[0];\n const borderLeftWidth = +styles.borderLeftWidth.split('px')[0];\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = +styles.marginTop.split('px')[0];\n const marginLeft = +styles.marginLeft.split('px')[0];\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(popper));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const popperMarginSide = getStyleComputedProperty(\n data.instance.popper,\n `margin${sideCapitalized}`\n ).replace('px', '');\n let sideValue =\n center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","fn","called","resolve","then","taskDebounce","scheduled","supportsMicroTasks","Promise","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","split","isIE10","undefined","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","parseFloat","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","update","isDestroyed","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","cancelAnimationFrame","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","floor","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper.js","sources":["../../src/utils/debounce.js","../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/isIE10.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/modifiers/applyStyle.js","../../src/modifiers/computeStyle.js","../../src/utils/isModifierRequired.js","../../src/modifiers/arrow.js","../../src/utils/getOppositeVariation.js","../../src/methods/placements.js","../../src/utils/clockwise.js","../../src/modifiers/flip.js","../../src/modifiers/keepTogether.js","../../src/modifiers/offset.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/shift.js","../../src/modifiers/hide.js","../../src/modifiers/inner.js","../../src/modifiers/index.js","../../src/methods/defaults.js","../../src/index.js"],"sourcesContent":["const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n"],"names":["isBrowser","window","document","longerTimeoutBrowsers","timeoutDuration","i","length","navigator","userAgent","indexOf","microtaskDebounce","fn","called","Promise","resolve","then","taskDebounce","scheduled","supportsMicroTasks","isFunction","functionToCheck","getType","toString","call","getStyleComputedProperty","element","property","nodeType","css","getComputedStyle","getParentNode","nodeName","parentNode","host","getScrollParent","body","ownerDocument","overflow","overflowX","overflowY","test","getOffsetParent","offsetParent","documentElement","isOffsetContainer","firstElementChild","getRoot","node","findCommonOffsetParent","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","element1root","getScroll","side","upperSide","html","scrollingElement","includeScroll","rect","subtract","scrollTop","scrollLeft","modifier","top","bottom","left","right","getBordersSize","styles","axis","sideA","sideB","parseFloat","isIE10","undefined","appVersion","getSize","computedStyle","Math","max","getWindowSizes","getClientRect","offsets","width","height","getBoundingClientRect","err","result","sizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getOffsetRectRelativeToArbitraryNode","children","parent","runIsIE10","isHTML","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","relativeOffset","innerWidth","innerHeight","offset","isFixed","getBoundaries","popper","reference","padding","boundariesElement","boundaries","boundariesNode","getArea","computeAutoPlacement","placement","refRect","rects","sortedAreas","Object","keys","map","key","sort","a","b","area","filteredAreas","filter","computedPlacement","variation","split","getReferenceOffsets","state","commonOffsetParent","getOuterSizes","x","marginBottom","y","marginRight","getOppositePlacement","hash","replace","matched","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","find","arr","check","Array","prototype","findIndex","prop","value","cur","match","obj","runModifiers","modifiers","data","ends","modifiersToRun","slice","forEach","warn","enabled","update","isDestroyed","options","flip","originalPlacement","position","isCreated","onCreate","onUpdate","isModifierEnabled","modifierName","some","name","getSupportedPropertyName","prefixes","upperProp","charAt","toUpperCase","prefix","toCheck","style","destroy","removeAttribute","disableEventListeners","removeOnDestroy","removeChild","getWindow","defaultView","attachToScrollParents","event","callback","scrollParents","isBody","target","addEventListener","passive","push","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","scheduleUpdate","removeEventListeners","removeEventListener","isNumeric","n","isNaN","isFinite","setStyles","unit","setAttributes","attributes","setAttribute","applyStyle","instance","arrowElement","arrowStyles","applyStyleOnLoad","modifierOptions","computeStyle","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","floor","prefixedProperty","willChange","invertTop","invertLeft","arrow","isModifierRequired","requestingName","requestedName","requesting","isRequired","requested","querySelector","isVertical","len","sideCapitalized","toLowerCase","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","min","round","getOppositeVariation","validPlacements","placements","clockwise","counter","index","concat","reverse","BEHAVIORS","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","COUNTERCLOCKWISE","step","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","keepTogether","toValue","str","size","parseOffset","basePlacement","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","op","mergeWithPrevious","reduce","index2","preventOverflow","priority","escapeWithReference","shift","shiftvariation","shiftOffsets","hide","bound","inner","subtractLength","Popper","requestAnimationFrame","debounce","bind","Defaults","jquery","onLoad","Utils","global","PopperUtils"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/dist/umd/popper.min.js b/public/assets/vendor/popper.js/dist/umd/popper.min.js index bc6d5d37..0f20d2a8 100644 --- a/public/assets/vendor/popper.js/dist/umd/popper.min.js +++ b/public/assets/vendor/popper.js/dist/umd/popper.min.js @@ -1,5 +1,5 @@ /* Copyright (C) Federico Zivolo 2017 Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). - */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=window.getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return window.document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:e?e.ownerDocument.documentElement:window.document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return window.document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1=o.clientWidth&&i>=o.clientHeight}),l=0i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){if(!j(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var n=e.placement.split('-')[0],r=e.offsets,p=r.popper,s=r.reference,d=-1!==['left','right'].indexOf(n),a=d?'height':'width',l=d?'Top':'Left',f=l.toLowerCase(),m=d?'left':'top',c=d?'bottom':'right',u=O(i)[a];s[c]-up[c]&&(e.offsets.popper[f]+=s[f]+u-p[c]);var g=s[f]+s[a]/2-u/2,b=t(e.instance.popper,'margin'+l).replace('px',''),y=g-h(e.offsets.popper)[f]-b;return y=J(_(p[a]-u,y),0),e.arrowElement=i,e.offsets.arrow={},e.offsets.arrow[f]=Math.round(y),e.offsets.arrow[m]='',e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=w(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=L(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=L(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),u=f(a.top)f(o.bottom),b='left'===i&&c||'right'===i&&h||'top'===i&&u||'bottom'===i&&g,y=-1!==['top','bottom'].indexOf(i),w=!!t.flipVariations&&(y&&'start'===r&&c||y&&'end'===r&&h||!y&&'start'===r&&u||!y&&'end'===r&&g);(m||b||w)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),w&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=D(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=L(t),e.offsets.popper=h(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!j(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right=o.clientWidth&&i>=o.clientHeight}),l=0i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var i;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var n=o.element;if('string'==typeof n){if(n=e.instance.popper.querySelector(n),!n)return e;}else if(!e.instance.popper.contains(n))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',g=a?'bottom':'right',u=L(n)[l];d[g]-us[g]&&(e.offsets.popper[m]+=d[m]+u-s[g]),e.offsets.popper=c(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=J(_(s[l]-u,v),0),e.arrowElement=n,e.offsets.arrow=(i={},pe(i,m,Math.round(v)),pe(i,h,''),i),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=x(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=x(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=C(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=x(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof window.document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n window.cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const popperMarginSide = getStyleComputedProperty(\n data.instance.popper,\n `margin${sideCapitalized}`\n ).replace('px', '');\n let sideValue =\n center - getClientRect(data.offsets.popper)[side] - popperMarginSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {};\n data.offsets.arrow[side] = Math.round(sideValue);\n data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node\n\n return data;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n"],"names":["functionToCheck","getType","toString","call","element","nodeType","css","window","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","offsetParent","indexOf","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","styles","split","Math","isIE10","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","commonOffsetParent","x","parseFloat","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","Array","prototype","find","arr","findIndex","cur","match","obj","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","isFunction","data","reference","state","isDestroyed","getReferenceOffsets","computeAutoPlacement","options","flip","originalPlacement","getPopperOffsets","position","runModifiers","isCreated","onUpdate","onCreate","some","name","prefixes","upperProp","charAt","toUpperCase","i","prefix","toCheck","style","isModifierEnabled","removeAttribute","getSupportedPropertyName","disableEventListeners","removeOnDestroy","removeChild","defaultView","isBody","target","addEventListener","passive","push","updateBound","scrollElement","scrollParents","eventsEnabled","setupEventListeners","scheduleUpdate","removeEventListener","cancelAnimationFrame","removeEventListeners","n","isNaN","isFinite","unit","isNumeric","value","attributes","setAttribute","requesting","isRequired","requested","counter","index","validPlacements","concat","reverse","str","size","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","toValue","index2","basePlacement","parseOffset","min","floor","max","isBrowser","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","supportsMicroTasks","Promise","called","resolve","then","scheduled","appVersion","placements","BEHAVIORS","Popper","requestAnimationFrame","update","debounce","bind","Defaults","jquery","modifierOptions","onLoad","enableEventListeners","destroy","Utils","global","PopperUtils","shiftvariation","isVertical","shiftOffsets","instance","priority","check","escapeWithReference","opSide","isModifierRequired","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","sideValue","arrow","round","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","clockwise","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","subtractLength","bound","hide","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","arrowStyles"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"popper.min.js","sources":["../../src/utils/isFunction.js","../../src/utils/getStyleComputedProperty.js","../../src/utils/getParentNode.js","../../src/utils/getScrollParent.js","../../src/utils/getOffsetParent.js","../../src/utils/isOffsetContainer.js","../../src/utils/getRoot.js","../../src/utils/findCommonOffsetParent.js","../../src/utils/getScroll.js","../../src/utils/includeScroll.js","../../src/utils/getBordersSize.js","../../src/utils/getWindowSizes.js","../../src/utils/getClientRect.js","../../src/utils/getBoundingClientRect.js","../../src/utils/getOffsetRectRelativeToArbitraryNode.js","../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","../../src/utils/isFixed.js","../../src/utils/getBoundaries.js","../../src/utils/computeAutoPlacement.js","../../src/utils/getReferenceOffsets.js","../../src/utils/getOuterSizes.js","../../src/utils/getOppositePlacement.js","../../src/utils/getPopperOffsets.js","../../src/utils/find.js","../../src/utils/findIndex.js","../../src/utils/runModifiers.js","../../src/methods/update.js","../../src/utils/isModifierEnabled.js","../../src/utils/getSupportedPropertyName.js","../../src/methods/destroy.js","../../src/utils/getWindow.js","../../src/utils/setupEventListeners.js","../../src/methods/enableEventListeners.js","../../src/utils/removeEventListeners.js","../../src/methods/disableEventListeners.js","../../src/utils/isNumeric.js","../../src/utils/setStyles.js","../../src/utils/setAttributes.js","../../src/utils/isModifierRequired.js","../../src/utils/getOppositeVariation.js","../../src/utils/clockwise.js","../../src/modifiers/offset.js","../../src/utils/debounce.js","../../src/modifiers/arrow.js","../../src/modifiers/computeStyle.js","../../src/utils/isIE10.js","../../src/modifiers/flip.js","../../src/index.js","../../src/methods/defaults.js","../../src/modifiers/index.js","../../src/modifiers/shift.js","../../src/modifiers/preventOverflow.js","../../src/modifiers/keepTogether.js","../../src/modifiers/inner.js","../../src/modifiers/hide.js","../../src/modifiers/applyStyle.js"],"sourcesContent":["/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const css = getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n // NOTE: 1 DOM access here\n const offsetParent = element && element.offsetParent;\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n if (element) {\n return element.ownerDocument.documentElement\n }\n\n return document.documentElement;\n }\n\n // .offsetParent will return the closest TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`], 10) +\n parseFloat(styles[`border${sideB}Width`], 10)\n );\n}\n","import isIE10 from './isIE10';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE10()\n ? html[`offset${axis}`] +\n computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`] +\n computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]\n : 0\n );\n}\n\nexport default function getWindowSizes() {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE10() && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE10 from './isIE10';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n if (isIE10()) {\n try {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n } catch (err) {}\n } else {\n rect = element.getBoundingClientRect();\n }\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n const width =\n sizes.width || element.clientWidth || result.right - result.left;\n const height =\n sizes.height || element.clientHeight || result.bottom - result.top;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE10 from './isIE10';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent) {\n const isIE10 = runIsIE10();\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop, 10);\n const marginLeft = parseFloat(styles.marginLeft, 10);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = getScroll(html);\n const scrollLeft = getScroll(html, 'left');\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n return isFixed(getParentNode(element));\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n) {\n // NOTE: 1 DOM access here\n let boundaries = { top: 0, left: 0 };\n const offsetParent = findCommonOffsetParent(popper, reference);\n\n // Handle viewport case\n if (boundariesElement === 'viewport') {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent);\n } else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes();\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n boundaries.left += padding;\n boundaries.top += padding;\n boundaries.right -= padding;\n boundaries.bottom -= padding;\n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference) {\n const commonOffsetParent = findCommonOffsetParent(popper, reference);\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const styles = getComputedStyle(element);\n const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n data.offsets.popper.position = 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length - 1; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.left = '';\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicity asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\nconst longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nlet timeoutDuration = 0;\nfor (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n timeoutDuration = 1;\n break;\n }\n}\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjuction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n // floor sides to avoid blurry text\n const offsets = {\n left: Math.floor(popper.left),\n top: Math.floor(popper.top),\n bottom: Math.floor(popper.bottom),\n right: Math.floor(popper.right),\n };\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n top = -offsetParentRect.height + offsets.bottom;\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n left = -offsetParentRect.width + offsets.right;\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","/**\n * Tells if you are running Internet Explorer 10\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean} isIE10\n */\nlet isIE10 = undefined;\n\nexport default function() {\n if (isIE10 === undefined) {\n isIE10 = navigator.appVersion.indexOf('MSIE 10') !== -1;\n }\n return isIE10;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const flippedVariation =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Create a new Popper.js instance\n * @class Popper\n * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedule an update, it will run on the next UI update available\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
\n * These can be overriden using the `options` argument of Popper.js.
\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Whether events (resize, scroll) are initially enabled\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated, this callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
\n * By default, is set to no-op.
\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
\n * It will read the variation of the `placement` property.
\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unitless, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the height.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * An scenario exists where the reference itself is not within the boundaries.
\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper this makes sure the popper has always a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier, can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near eachothers\n * without leaving any gap between the two. Expecially useful when the arrow is\n * enabled and you want to assure it to point to its reference element.\n * It cares only about the first axis, you can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjuction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations).\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position,\n * the popper will never be placed outside of the defined boundaries\n * (except if keepTogether is enabled)\n */\n boundariesElement: 'viewport',\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define you own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3d transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties.\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement\n );\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side = ['left', 'top'].indexOf(placement) !== -1\n ? 'primary'\n : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper.\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: 'absolute' });\n\n return options;\n}\n"],"names":["functionToCheck","getType","toString","call","element","nodeType","css","getComputedStyle","property","nodeName","parentNode","host","document","body","ownerDocument","getStyleComputedProperty","overflow","overflowX","overflowY","test","getScrollParent","getParentNode","offsetParent","indexOf","getOffsetParent","documentElement","firstElementChild","node","getRoot","element1","element2","order","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","start","end","range","createRange","setStart","setEnd","commonAncestorContainer","contains","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","html","scrollingElement","subtract","scrollTop","getScroll","scrollLeft","modifier","top","bottom","left","right","sideA","axis","sideB","parseFloat","styles","Math","isIE10","computedStyle","getSize","offsets","width","height","rect","getBoundingClientRect","result","sizes","getWindowSizes","clientWidth","clientHeight","horizScrollbar","offsetWidth","vertScrollbar","offsetHeight","getBordersSize","getClientRect","runIsIE10","isHTML","parent","childrenRect","parentRect","scrollParent","borderTopWidth","borderLeftWidth","marginTop","marginLeft","includeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","window","innerWidth","innerHeight","offset","isFixed","boundaries","boundariesElement","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","padding","placement","getBoundaries","rects","refRect","sortedAreas","Object","keys","map","getArea","sort","b","area","a","filteredAreas","filter","computedPlacement","length","key","variation","split","commonOffsetParent","x","marginBottom","y","marginRight","hash","replace","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","Array","prototype","find","arr","findIndex","cur","match","obj","modifiersToRun","ends","modifiers","slice","forEach","warn","fn","enabled","isFunction","data","reference","state","isDestroyed","getReferenceOffsets","computeAutoPlacement","options","flip","originalPlacement","getPopperOffsets","position","runModifiers","isCreated","onUpdate","onCreate","some","name","prefixes","upperProp","charAt","toUpperCase","i","prefix","toCheck","style","isModifierEnabled","removeAttribute","getSupportedPropertyName","disableEventListeners","removeOnDestroy","removeChild","defaultView","isBody","target","addEventListener","passive","push","updateBound","scrollElement","scrollParents","eventsEnabled","setupEventListeners","scheduleUpdate","removeEventListener","removeEventListeners","n","isNaN","isFinite","unit","isNumeric","value","attributes","setAttribute","requesting","isRequired","requested","counter","index","validPlacements","concat","reverse","str","size","useHeight","fragments","frag","trim","divider","search","splitRegex","ops","mergeWithPrevious","op","reduce","toValue","index2","basePlacement","parseOffset","min","floor","max","isBrowser","longerTimeoutBrowsers","timeoutDuration","navigator","userAgent","supportsMicroTasks","Promise","called","resolve","then","scheduled","appVersion","placements","BEHAVIORS","Popper","requestAnimationFrame","update","debounce","bind","Defaults","jquery","modifierOptions","onLoad","enableEventListeners","destroy","Utils","global","PopperUtils","shiftvariation","isVertical","shiftOffsets","instance","priority","check","escapeWithReference","opSide","isModifierRequired","arrowElement","querySelector","len","sideCapitalized","toLowerCase","altSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","arrow","round","flipped","placementOpposite","flipOrder","behavior","FLIP","CLOCKWISE","clockwise","COUNTERCLOCKWISE","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariation","flipVariations","getOppositeVariation","subtractLength","bound","hide","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","prefixedProperty","willChange","invertTop","invertLeft","arrowStyles"],"mappings":"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"} \ No newline at end of file diff --git a/public/assets/vendor/popper.js/docs/index.html b/public/assets/vendor/popper.js/docs/index.html index 8d5e42ef..3a639433 100755 --- a/public/assets/vendor/popper.js/docs/index.html +++ b/public/assets/vendor/popper.js/docs/index.html @@ -28,7 +28,7 @@ layout: landing Popper.js is just ~6KB minified and gzpipped, zero dependencies.
Its code base is in ES6 and is automatically tested against several browsers.
If this is not enough, it plays super nicely with - React, AngularJS and more! + React, AngularJS and more!

diff --git a/public/assets/vendor/popper.js/package.json b/public/assets/vendor/popper.js/package.json index c185b65f..c3063e38 100644 --- a/public/assets/vendor/popper.js/package.json +++ b/public/assets/vendor/popper.js/package.json @@ -4,25 +4,21 @@ "license": "MIT", "private": true, "devDependencies": { - "async": "^2.5.0", - "babel-eslint": "^7.2.3", - "bundlesize": "^0.14.4", - "chalk": "^2.1.0", - "eslint-plugin-jasmine": "^2.7.1", + "bundlesize": "^0.15.3", "jsdoc-to-markdown": "^3.0.0", + "lcov-result-merger": "^1.2.0", "lerna": "^2.2.0", "lint-staged": "^4.0.1", "pre-commit": "^1.2.2", "prettier-eslint-cli": "^4.1.1", - "wait-on": "^2.0.2" + "wait-on": "^2.0.2", + "which-pm-runs-cli": "^1.0.4" }, "scripts": { + "postinstall": "which-pm-runs --is yarn", "precommit": "lint-staged", - "postinstall": "lerna bootstrap", - "bootstrap": "lerna bootstrap", - "pretest": "$BUNDLESIZE && bundlesize-init", - "test": "lerna run --parallel test && yarn build", - "posttest": "$BUNDLESIZE && bundlesize", + "test": "lerna run --parallel test", + "test:dev": "lerna run --parallel test:dev", "build": "lerna run build", "docs": "yarn build && for dest in popper tooltip; do jsdoc2md ./packages/$dest/dist/$dest.js > ./docs/_includes/$dest-documentation.md; done", "docs:serve": "cd docs; { wait-on http://localhost:4000; open http://localhost:4000; } & jekyll serve" diff --git a/public/assets/vendor/popper.js/packages/bundle/index.js b/public/assets/vendor/popper.js/packages/bundle/index.js index 657e4631..66de1318 100644 --- a/public/assets/vendor/popper.js/packages/bundle/index.js +++ b/public/assets/vendor/popper.js/packages/bundle/index.js @@ -1,83 +1,137 @@ -const { rollup } = require('rollup'); +const { rollup, watch } = require('rollup'); +const rimraf = require('rimraf'); +const { argv } = require('yargs'); // Plugins const babel = require('rollup-plugin-babel'); const babili = require('rollup-plugin-babel-minify'); +const watchEnabled = argv.watch; // Configs const babelConfig = require('@popperjs/babel-config'); -const sourceMap = true; +const sourcemap = true; const external = ['popper.js']; const globals = { 'popper.js': 'Popper' }; -function bundle({ entry, dest, moduleName, banner, miniBanner }) { +function bundle({ input, file, name, banner, miniBanner }) { + rimraf.sync('dist'); + const minifyOptions = { + comments: false, + banner: miniBanner, + mangle: { topLevel: true }, + }; + rollup({ - entry, + input, plugins: [babel(babelConfig.es6)], external, }).then(bundle => { bundle.write({ format: 'es', - dest: `dist/${dest}`, - sourceMap, + file: `dist/${file}`, + sourcemap, globals, banner, }); }); rollup({ - entry, - plugins: [babili({ comments: false, banner: miniBanner }), babel(babelConfig.es6)], + input, + plugins: [babili(minifyOptions), babel(babelConfig.es6)], external, }).then(bundle => { bundle.write({ format: 'es', - dest: `dist/${dest.replace('.js', '.min.js')}`, - sourceMap, + file: `dist/${file.replace('.js', '.min.js')}`, + sourcemap, globals, }); }); rollup({ - entry, + input, plugins: [babel(babelConfig.es5)], external, }).then(bundle => { bundle.write({ format: 'umd', - dest: `dist/umd/${dest}`, - sourceMap, + file: `dist/umd/${file}`, + sourcemap, globals, - moduleName, + name, banner, }); bundle.write({ format: 'es', - dest: `dist/esm/${dest}`, - sourceMap, + file: `dist/esm/${file}`, + sourcemap, globals, banner, }); }); rollup({ - entry, - plugins: [babili({ comments: false, banner: miniBanner }), babel(babelConfig.es5)], + input, + plugins: [babili(minifyOptions), babel(babelConfig.es5)], external, }).then(bundle => { bundle.write({ format: 'umd', - dest: `dist/umd/${dest.replace('.js', '.min.js')}`, - sourceMap, + file: `dist/umd/${file.replace('.js', '.min.js')}`, + sourcemap, globals, - moduleName, + name, }); bundle.write({ format: 'es', - dest: `dist/esm/${dest.replace('.js', '.min.js')}`, - sourceMap, + file: `dist/esm/${file.replace('.js', '.min.js')}`, + sourcemap, }); }); } -module.exports = bundle; +function bundleWatch({ input, file, name, banner, miniBanner }) { + const watcher = watch({ + input, + plugins: [babel(babelConfig.es5)], + external, + output: { + format: 'umd', + file: `dist/umd/${file}`, + sourcemap, + globals, + name, + banner, + }, + }); + + console.log('\x1Bc'); // reset console + console.log('Rollup is watching for changes...'); + watcher.on('event', event => { + switch (event.code) { + case 'START': + console.info('Rebuilding...'); + break; + case 'BUNDLE_START': + console.info('Bundling...'); + break; + case 'BUNDLE_END': + console.info('Bundled!'); + break; + case 'END': + console.info('Done!'); + break; + case 'ERROR': + case 'FATAL': + console.error('Error!'); + /* eslint-enable no-console */ + } + }); + + process.on('exit', () => { + watcher.close(); + }); +} + + +module.exports = watchEnabled ? bundleWatch : bundle; diff --git a/public/assets/vendor/popper.js/packages/bundle/package.json b/public/assets/vendor/popper.js/packages/bundle/package.json index 5fdaa065..600a0f04 100644 --- a/public/assets/vendor/popper.js/packages/bundle/package.json +++ b/public/assets/vendor/popper.js/packages/bundle/package.json @@ -6,8 +6,10 @@ "license": "MIT", "dependencies": { "@popperjs/babel-config": "^1.0.0", - "rollup": "^0.43.0", + "rimraf": "^2.6.2", + "rollup": "^0.51.5", "rollup-plugin-babel": "^2.7.1", - "rollup-plugin-babel-minify": "^3.1.2" + "rollup-plugin-babel-minify": "^3.1.2", + "yargs": "^10.0.3" } } diff --git a/public/assets/vendor/popper.js/packages/popper/README.md b/public/assets/vendor/popper.js/packages/popper/README.md index 62878337..7d682faf 100644 --- a/public/assets/vendor/popper.js/packages/popper/README.md +++ b/public/assets/vendor/popper.js/packages/popper/README.md @@ -53,7 +53,7 @@ Some of the key points are: Visit our [project page](https://fezvrasta.github.io/popper.js) to see a lot of examples of what you can do with Popper.js! -Find [the documentation here](docs/_includes/popper-documentation.md). +Find [the documentation here](/docs/_includes/popper-documentation.md). ### Tooltip.js @@ -65,7 +65,7 @@ Its API is almost identical to the famous tooltip system of Bootstrap, in this w easy to integrate it in your projects. The tooltips generated by Tooltip.js are accessible thanks to the `aria` tags. -Find [the documentation here](docs/_includes/tooltip-documentation.md). +Find [the documentation here](/docs/_includes/tooltip-documentation.md). ## Installation @@ -156,7 +156,7 @@ you can simply disable it and manually apply the popper coordinates using your library of choice. For a comprehensive list of libraries that let you use Popper.js into existing -frameworks, visit the [MENTIONS](MENTIONS.md) page. +frameworks, visit the [MENTIONS](/MENTIONS.md) page. Alternatively, you may even override your own `applyStyles` with your custom one and integrate Popper.js by yourself! @@ -202,7 +202,7 @@ This means that it will not cause any [jank](https://www.chromium.org/developers The aim of Popper.js is to provide a stable and powerful positioning engine ready to be used in 3rd party libraries. -Visit the [MENTIONS](MENTIONS.md) page for an updated list of projects. +Visit the [MENTIONS](/MENTIONS.md) page for an updated list of projects. ### Credits diff --git a/public/assets/vendor/popper.js/packages/popper/bower-publish.sh b/public/assets/vendor/popper.js/packages/popper/bower-publish.sh index 232d014c..c66b11c9 100755 --- a/public/assets/vendor/popper.js/packages/popper/bower-publish.sh +++ b/public/assets/vendor/popper.js/packages/popper/bower-publish.sh @@ -5,7 +5,8 @@ version="$(cat package.json | jq -r '.version')" # Bower doesn't support Lerna multi-packages, we sacrificy flexibity # making Bower use the whole repository just for the Popper.js release -cp -R dist ../../dist +rm -rf ../../dist +cp -R dist ../../ cp bower.json ../../bower.json git add -f ../../dist/* git add ../../bower.json diff --git a/public/assets/vendor/popper.js/packages/popper/bundle.js b/public/assets/vendor/popper.js/packages/popper/bundle.js index 08379244..72e0c8e0 100644 --- a/public/assets/vendor/popper.js/packages/popper/bundle.js +++ b/public/assets/vendor/popper.js/packages/popper/bundle.js @@ -31,17 +31,17 @@ const miniBanner = `/* */` bundle({ - moduleName: 'Popper', - entry: 'src/index.js', - dest: 'popper.js', + name: 'Popper', + input: 'src/index.js', + file: 'popper.js', banner, miniBanner, }); bundle({ - moduleName: 'PopperUtils', - entry: 'src/utils/index.js', - dest: 'popper-utils.js', + name: 'PopperUtils', + input: 'src/utils/index.js', + file: 'popper-utils.js', banner, miniBanner, }); diff --git a/public/assets/vendor/popper.js/packages/popper/package.json b/public/assets/vendor/popper.js/packages/popper/package.json index 565b0978..dfdfbfad 100644 --- a/public/assets/vendor/popper.js/packages/popper/package.json +++ b/public/assets/vendor/popper.js/packages/popper/package.json @@ -1,6 +1,6 @@ { "name": "popper.js", - "version": "1.12.6", + "version": "1.12.9", "description": "A kickass library to manage your poppers", "homepage": "https://popper.js.org", "repository": { @@ -28,23 +28,23 @@ "module": "dist/esm/popper.js", "types": "index.d.ts", "scripts": { - "prepare": "npm run build", + "prepare": "yarn build", "postpublish": "nuget-publish && ./bower-publish.sh", - "prebuild": "npm run lint", - "pretest": "npm run lint", + "prebuild": "yarn lint", + "pretest": "yarn lint", "build": "node bundle.js", "lint": "eslint .", "test": "popper-karma", - "test:dev": "BROWSERS=Chrome NODE_ENV=development npm run test", - "coverage": "NODE_ENV=coverage npm run test" + "test:dev": "BROWSERS=Chrome NODE_ENV=development yarn test", + "coverage": "COVERAGE=true yarn test" }, "devDependencies": { "@popperjs/bundle": "^1.0.2", "@popperjs/eslint-config-popper": "^1.0.0", - "nuget-publish": "^1.0.3", "@popperjs/test": "^1.0.0", "@popperjs/test-utils": "^1.0.0", - "eslint": "^4.1.1" + "eslint": "^4.1.1", + "nuget-publish": "^1.0.3" }, "resolutions": { "micromatch": "^3.0.3" diff --git a/public/assets/vendor/popper.js/packages/popper/src/methods/disableEventListeners.js b/public/assets/vendor/popper.js/packages/popper/src/methods/disableEventListeners.js index f52eccd8..87a8c0d9 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/methods/disableEventListeners.js +++ b/public/assets/vendor/popper.js/packages/popper/src/methods/disableEventListeners.js @@ -9,7 +9,7 @@ import removeEventListeners from '../utils/removeEventListeners'; */ export default function disableEventListeners() { if (this.state.eventsEnabled) { - window.cancelAnimationFrame(this.scheduleUpdate); + cancelAnimationFrame(this.scheduleUpdate); this.state = removeEventListeners(this.reference, this.state); } } diff --git a/public/assets/vendor/popper.js/packages/popper/src/modifiers/arrow.js b/public/assets/vendor/popper.js/packages/popper/src/modifiers/arrow.js index 0647b5bb..c14e9f16 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/modifiers/arrow.js +++ b/public/assets/vendor/popper.js/packages/popper/src/modifiers/arrow.js @@ -63,26 +63,27 @@ export default function arrow(data, options) { data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide]; } + data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper const center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets // take popper margin in account because we don't have this info available - const popperMarginSide = getStyleComputedProperty( - data.instance.popper, - `margin${sideCapitalized}` - ).replace('px', ''); + const css = getStyleComputedProperty(data.instance.popper); + const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`], 10); + const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`], 10); let sideValue = - center - getClientRect(data.offsets.popper)[side] - popperMarginSide; + center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0); data.arrowElement = arrowElement; - data.offsets.arrow = {}; - data.offsets.arrow[side] = Math.round(sideValue); - data.offsets.arrow[altSide] = ''; // make sure to unset any eventual altSide value from the DOM node + data.offsets.arrow = { + [side]: Math.round(sideValue), + [altSide]: '', // make sure to unset any eventual altSide value from the DOM node + }; return data; } diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/debounce.js b/public/assets/vendor/popper.js/packages/popper/src/utils/debounce.js index 2f3ebbd1..40845450 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/debounce.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/debounce.js @@ -1,4 +1,4 @@ -const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined'; +const isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined'; const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox']; let timeoutDuration = 0; for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) { @@ -15,7 +15,7 @@ export function microtaskDebounce(fn) { return } called = true - Promise.resolve().then(() => { + window.Promise.resolve().then(() => { called = false fn() }) diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/findCommonOffsetParent.js b/public/assets/vendor/popper.js/packages/popper/src/utils/findCommonOffsetParent.js index 5d6b217f..ca905fab 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/findCommonOffsetParent.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/findCommonOffsetParent.js @@ -13,7 +13,7 @@ import getOffsetParent from './getOffsetParent'; export default function findCommonOffsetParent(element1, element2) { // This check is needed to avoid errors in case one of the elements isn't defined for any reason if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) { - return window.document.documentElement; + return document.documentElement; } // Here we make sure to give as "start" the element that comes first in the DOM diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getBordersSize.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getBordersSize.js index 46f60520..0dcc8243 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getBordersSize.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getBordersSize.js @@ -13,7 +13,7 @@ export default function getBordersSize(styles, axis) { const sideB = sideA === 'Left' ? 'Right' : 'Bottom'; return ( - +styles[`border${sideA}Width`].split('px')[0] + - +styles[`border${sideB}Width`].split('px')[0] + parseFloat(styles[`border${sideA}Width`], 10) + + parseFloat(styles[`border${sideB}Width`], 10) ); } diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getBoundaries.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getBoundaries.js index 9ef180c7..84347a94 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getBoundaries.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getBoundaries.js @@ -33,7 +33,7 @@ export default function getBoundaries( // Handle other cases based on DOM element used as boundaries let boundariesNode; if (boundariesElement === 'scrollParent') { - boundariesNode = getScrollParent(getParentNode(popper)); + boundariesNode = getScrollParent(getParentNode(reference)); if (boundariesNode.nodeName === 'BODY') { boundariesNode = popper.ownerDocument.documentElement; } diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetParent.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetParent.js index 0b6ac2ff..62af073d 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetParent.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetParent.js @@ -16,7 +16,7 @@ export default function getOffsetParent(element) { return element.ownerDocument.documentElement } - return window.document.documentElement; + return document.documentElement; } // .offsetParent will return the closest TD or TABLE in case diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetRectRelativeToArbitraryNode.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetRectRelativeToArbitraryNode.js index 131266cc..8cf0f805 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetRectRelativeToArbitraryNode.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getOffsetRectRelativeToArbitraryNode.js @@ -13,8 +13,8 @@ export default function getOffsetRectRelativeToArbitraryNode(children, parent) { const scrollParent = getScrollParent(children); const styles = getStyleComputedProperty(parent); - const borderTopWidth = +styles.borderTopWidth.split('px')[0]; - const borderLeftWidth = +styles.borderLeftWidth.split('px')[0]; + const borderTopWidth = parseFloat(styles.borderTopWidth, 10); + const borderLeftWidth = parseFloat(styles.borderLeftWidth, 10); let offsets = getClientRect({ top: childrenRect.top - parentRect.top - borderTopWidth, @@ -30,8 +30,8 @@ export default function getOffsetRectRelativeToArbitraryNode(children, parent) { // differently when margins are applied to it. The margins are included in // the box of the documentElement, in the other cases not. if (!isIE10 && isHTML) { - const marginTop = +styles.marginTop.split('px')[0]; - const marginLeft = +styles.marginLeft.split('px')[0]; + const marginTop = parseFloat(styles.marginTop, 10); + const marginLeft = parseFloat(styles.marginLeft, 10); offsets.top -= borderTopWidth - marginTop; offsets.bottom -= borderTopWidth - marginTop; diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getOuterSizes.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getOuterSizes.js index f18a6d32..e5e60213 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getOuterSizes.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getOuterSizes.js @@ -6,7 +6,7 @@ * @returns {Object} object containing width and height properties */ export default function getOuterSizes(element) { - const styles = window.getComputedStyle(element); + const styles = getComputedStyle(element); const x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom); const y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight); const result = { diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getScrollParent.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getScrollParent.js index 5c61f2af..c9bdae84 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getScrollParent.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getScrollParent.js @@ -11,7 +11,7 @@ import getParentNode from './getParentNode'; export default function getScrollParent(element) { // Return body, `getScroll` will take care to get the correct `scrollTop` from it if (!element) { - return window.document.body + return document.body } switch (element.nodeName) { diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getStyleComputedProperty.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getStyleComputedProperty.js index 42d540a9..e2b24579 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getStyleComputedProperty.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getStyleComputedProperty.js @@ -10,6 +10,6 @@ export default function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - const css = window.getComputedStyle(element, null); + const css = getComputedStyle(element, null); return property ? css[property] : css; } diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getSupportedPropertyName.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getSupportedPropertyName.js index f521c752..9aae30e3 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getSupportedPropertyName.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getSupportedPropertyName.js @@ -12,7 +12,7 @@ export default function getSupportedPropertyName(property) { for (let i = 0; i < prefixes.length - 1; i++) { const prefix = prefixes[i]; const toCheck = prefix ? `${prefix}${upperProp}` : property; - if (typeof window.document.body.style[toCheck] !== 'undefined') { + if (typeof document.body.style[toCheck] !== 'undefined') { return toCheck; } } diff --git a/public/assets/vendor/popper.js/packages/popper/src/utils/getWindowSizes.js b/public/assets/vendor/popper.js/packages/popper/src/utils/getWindowSizes.js index 2be386e4..a118eb00 100644 --- a/public/assets/vendor/popper.js/packages/popper/src/utils/getWindowSizes.js +++ b/public/assets/vendor/popper.js/packages/popper/src/utils/getWindowSizes.js @@ -16,9 +16,9 @@ function getSize(axis, body, html, computedStyle) { } export default function getWindowSizes() { - const body = window.document.body; - const html = window.document.documentElement; - const computedStyle = isIE10() && window.getComputedStyle(html); + const body = document.body; + const html = document.documentElement; + const computedStyle = isIE10() && getComputedStyle(html); return { height: getSize('Height', body, html, computedStyle), diff --git a/public/assets/vendor/popper.js/packages/test/karma.conf.js b/public/assets/vendor/popper.js/packages/test/karma.conf.js index 32a21ed0..d2b6a4c6 100644 --- a/public/assets/vendor/popper.js/packages/test/karma.conf.js +++ b/public/assets/vendor/popper.js/packages/test/karma.conf.js @@ -8,13 +8,13 @@ const browsers = (argv.browsers || 'ChromeHeadless' ).split(','); const singleRun = process.env.NODE_ENV === 'development' ? false : true; -const coverage = process.env.COVERAGE === true; +const coverage = process.env.COVERAGE === 'true'; const basePath = process.cwd(); const babelrc = { babelrc: false, presets: [ - [require.resolve('babel-preset-es2015'), { modules: false }], + [require.resolve('babel-preset-env'), { modules: false }], require.resolve('babel-preset-stage-2'), ], plugins: [ @@ -97,11 +97,16 @@ module.exports = function(config) { version: '11', platform: 'Windows 10', }, - SLiOS9: { + // Currently not used because the iOS emulator isn't reliable and + // most of the times it times out + SLiOS11: { base: 'SauceLabs', - browserName: 'iphone', - version: '9.3', - platform: 'macOS 10.12', + browserName: 'Safari', + deviceName: 'iPhone 8 Plus Simulator', + deviceOrientation: 'portrait', + platformVersion: '11.0', + platformName: 'iOS', + appiumVersion: '1.7.1', }, SLChromeMobile: { base: 'SauceLabs', @@ -139,14 +144,7 @@ module.exports = function(config) { recordVideo: true, tunnelIdentifier: process.env.TRAVIS_JOB_NUMBER, }, - coverageReporter: { - dir: './.tmp/coverage', - reporters: [ - { type: 'html', subdir: 'report-html' }, - { type: 'lcov', subdir: 'report-lcov' }, - ], - }, - reporters: ['mocha', 'saucelabs', 'coverage'], + reporters: ['mocha', 'saucelabs'], plugins: [ require('karma-chai'), require('karma-chrome-launcher'), @@ -161,5 +159,16 @@ module.exports = function(config) { ], }; + if (coverage) { + configuration.coverageReporter = { + dir: './.tmp/coverage', + reporters: [ + { type: 'html', subdir: 'report-html' }, + { type: 'lcov', subdir: 'report-lcov' }, + ], + }; + configuration.reporters.push('coverage'); + } + config.set(configuration); }; diff --git a/public/assets/vendor/popper.js/packages/test/package.json b/public/assets/vendor/popper.js/packages/test/package.json index 9c0cd061..9338f01a 100644 --- a/public/assets/vendor/popper.js/packages/test/package.json +++ b/public/assets/vendor/popper.js/packages/test/package.json @@ -16,14 +16,11 @@ "babel-plugin-external-helpers": "^6.22.0", "babel-plugin-istanbul": "^4.1.4", "babel-plugin-module-resolver": "^2.7.1", - "babel-preset-es2015": "^6.24.1", "babel-preset-minify": "^0.2.0", "babel-preset-stage-2": "^6.24.1", "chai": "^4.0.1", "eslint": "^4.0.0", "eslint-plugin-jasmine": "^2.6.2", - "gitignore-to-glob": "^0.3.0", - "gzipped": "^0.0.5", "jasmine-core": "^2.6.2", "karma": "^1.7.0", "karma-chai": "^0.1.0", diff --git a/public/assets/vendor/popper.js/packages/tooltip/bundle.js b/public/assets/vendor/popper.js/packages/tooltip/bundle.js index 8f2df147..1fa59cf7 100644 --- a/public/assets/vendor/popper.js/packages/tooltip/bundle.js +++ b/public/assets/vendor/popper.js/packages/tooltip/bundle.js @@ -31,9 +31,9 @@ const miniBanner = `/* */` bundle({ - moduleName: 'Tooltip', - entry: 'src/index.js', - dest: 'tooltip.js', + name: 'Tooltip', + input: 'src/index.js', + file: 'tooltip.js', banner, miniBanner, }); diff --git a/public/assets/vendor/popper.js/packages/tooltip/package.json b/public/assets/vendor/popper.js/packages/tooltip/package.json index d6f9452d..fee4793b 100644 --- a/public/assets/vendor/popper.js/packages/tooltip/package.json +++ b/public/assets/vendor/popper.js/packages/tooltip/package.json @@ -1,16 +1,17 @@ { "name": "tooltip.js", - "version": "1.1.5", + "version": "1.1.7", "description": "A kickass library to create tooltips, based on Popper.js", "main": "./dist/umd/tooltip.js", "module": "./dist/esm/tooltip.js", "scripts": { "build": "node bundle.js", - "prepublish": "npm run build", - "pretest": "npm run lint", + "prepublish": "yarn build", + "pretest": "yarn lint", "test": "popper-karma", + "test:dev": "BROWSERS=Chrome NODE_ENV=development yarn test", "lint": "eslint .", - "coverage": "NODE_ENV=coverage npm run test" + "coverage": "COVERAGE=true yarn test" }, "repository": { "type": "git", diff --git a/public/assets/vendor/popper.js/packages/tooltip/src/index.js b/public/assets/vendor/popper.js/packages/tooltip/src/index.js index 95fa70c9..35eaad16 100644 --- a/public/assets/vendor/popper.js/packages/tooltip/src/index.js +++ b/public/assets/vendor/popper.js/packages/tooltip/src/index.js @@ -58,16 +58,18 @@ export default class Tooltip { this.options = options; // get events list - const events = typeof options.trigger === 'string' - ? options.trigger - .split(' ') - .filter( - trigger => ['click', 'hover', 'focus'].indexOf(trigger) !== -1 - ) - : []; + const events = + typeof options.trigger === 'string' + ? options.trigger + .split(' ') + .filter( + trigger => ['click', 'hover', 'focus'].indexOf(trigger) !== -1 + ) + : []; // set initial state this._isOpen = false; + this._popperOptions = {}; // set event listeners this._setEventListeners(reference, events, options); @@ -141,15 +143,17 @@ export default class Tooltip { const tooltipNode = tooltipGenerator.childNodes[0]; // add unique ID to our tooltip (needed for accessibility reasons) - tooltipNode.id = `tooltip_${Math.random().toString(36).substr(2, 10)}`; + tooltipNode.id = `tooltip_${Math.random() + .toString(36) + .substr(2, 10)}`; // set initial `aria-hidden` state to `false` (it's visible!) tooltipNode.setAttribute('aria-hidden', 'false'); // add title to tooltip const titleNode = tooltipGenerator.querySelector(this.innerSelector); - if (title.nodeType === 1) { - // if title is a node, append it only if allowHtml is true + if (title.nodeType === 1 || title.nodeType === 11) { + // if title is a element node or document fragment, append it only if allowHtml is true allowHtml && titleNode.appendChild(title); } else if (isFunction(title)) { // if title is a function, call it and set innerText or innerHtml depending by `allowHtml` value @@ -168,7 +172,8 @@ export default class Tooltip { _show(reference, options) { // don't show if it's already visible - if (this._isOpen) { + // or if it's not being showed + if (this._isOpen && !this._isOpening) { return this; } this._isOpen = true; @@ -205,25 +210,32 @@ export default class Tooltip { this._append(tooltipNode, container); - const popperOptions = { + this._popperOptions = { ...options.popperOptions, placement: options.placement, - } + }; - popperOptions.modifiers = { - ...popperOptions.modifiers, + this._popperOptions.modifiers = { + ...this._popperOptions.modifiers, arrow: { element: this.arrowSelector, }, - } + offset: { + offset: options.offset, + }, + }; if (options.boundariesElement) { - popperOptions.modifiers.preventOverflow = { + this._popperOptions.modifiers.preventOverflow = { boundariesElement: options.boundariesElement, }; } - this.popperInstance = new Popper(reference, tooltipNode, popperOptions); + this.popperInstance = new Popper( + reference, + tooltipNode, + this._popperOptions + ); this._tooltipNode = tooltipNode; @@ -259,9 +271,9 @@ export default class Tooltip { this.popperInstance.destroy(); // destroy tooltipNode if removeOnDestroy is not set, as popperInstance.destroy() already removes the element - if(!this.popperInstance.options.removeOnDestroy){ - this._tooltipNode.parentNode.removeChild(this._tooltipNode); - this._tooltipNode = null; + if (!this.popperInstance.options.removeOnDestroy) { + this._tooltipNode.parentNode.removeChild(this._tooltipNode); + this._tooltipNode = null; } } return this; @@ -313,7 +325,7 @@ export default class Tooltip { // schedule show tooltip directEvents.forEach(event => { const func = evt => { - if (this._isOpen === true) { + if (this._isOpening === true) { return; } evt.usedByTooltip = true; @@ -337,15 +349,21 @@ export default class Tooltip { } _scheduleShow(reference, delay, options /*, evt */) { + this._isOpening = true; // defaults to 0 const computedDelay = (delay && delay.show) || delay || 0; - window.setTimeout(() => this._show(reference, options), computedDelay); + this._showTimeout = window.setTimeout( + () => this._show(reference, options), + computedDelay + ); } _scheduleHide(reference, delay, options, evt) { + this._isOpening = false; // defaults to 0 const computedDelay = (delay && delay.hide) || delay || 0; window.setTimeout(() => { + window.clearTimeout(this._showTimeout); if (this._isOpen === false) { return; } @@ -370,10 +388,12 @@ export default class Tooltip { } _setTooltipNodeEvent = (evt, reference, delay, options) => { - const relatedreference = evt.relatedreference || evt.toElement; + const relatedreference = + evt.relatedreference || evt.toElement || evt.relatedTarget; const callback = evt2 => { - const relatedreference2 = evt2.relatedreference || evt2.toElement; + const relatedreference2 = + evt2.relatedreference || evt2.toElement || evt2.relatedTarget; // Remove event listener after call this._tooltipNode.removeEventListener(evt.type, callback); diff --git a/public/assets/vendor/popper.js/yarn.lock b/public/assets/vendor/popper.js/yarn.lock index af5c211c..ac451072 100644 --- a/public/assets/vendor/popper.js/yarn.lock +++ b/public/assets/vendor/popper.js/yarn.lock @@ -39,8 +39,8 @@ acorn@^3.0.4, acorn@^3.3.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" acorn@^5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.2.tgz#911cb53e036807cf0fa778dc5d370fbd864246d7" + version "5.2.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" add-stream@^1.0.0: version "1.0.0" @@ -61,25 +61,25 @@ agent-base@2: extend "~3.0.0" semver "~5.0.1" -ajv-keywords@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" -ajv@^4.7.0, ajv@^4.9.1: +ajv@^4.9.1: version "4.11.8" resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" dependencies: co "^4.6.0" json-stable-stringify "^1.0.1" -ajv@^5.1.0, ajv@^5.2.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39" +ajv@^5.1.0, ajv@^5.2.0, ajv@^5.2.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" dependencies: co "^4.6.0" fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" - json-stable-stringify "^1.0.1" align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" @@ -105,7 +105,7 @@ ansi-escape-sequences@^4.0.0: dependencies: array-back "^2.0.0" -ansi-escapes@^1.0.0: +ansi-escapes@^1.0.0, ansi-escapes@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" @@ -131,10 +131,6 @@ ansi-styles@^3.0.0, ansi-styles@^3.1.0, ansi-styles@^3.2.0: dependencies: color-convert "^1.9.0" -ansi-styles@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" - ansi-wrap@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -207,13 +203,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -arr-diff@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" - dependencies: - arr-flatten "^1.0.1" - array-slice "^0.2.3" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -224,7 +213,7 @@ arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" -arr-flatten@^1.0.1, arr-flatten@^1.0.3: +arr-flatten@^1.0.1, arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" @@ -312,7 +301,7 @@ async@2.0.1: dependencies: lodash "^4.8.0" -async@^2.0.0, async@^2.1.2, async@^2.5.0: +async@^2.0.0, async@^2.1.2: version "2.5.0" resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" dependencies: @@ -733,7 +722,7 @@ babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es2015-block-scoping@^6.24.1: +babel-plugin-transform-es2015-block-scoping@^6.23.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" dependencies: @@ -743,7 +732,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0, babel-plugin-transform-es20 babel-types "^6.26.0" lodash "^4.17.4" -babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1, babel-plugin-transform-es2015-classes@^6.9.0: +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.9.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" dependencies: @@ -757,33 +746,33 @@ babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-cla babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-computed-properties@^6.22.0, babel-plugin-transform-es2015-computed-properties@^6.24.1: +babel-plugin-transform-es2015-computed-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-destructuring@^6.22.0, babel-plugin-transform-es2015-destructuring@^6.23.0: +babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-duplicate-keys@^6.22.0, babel-plugin-transform-es2015-duplicate-keys@^6.24.1: +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" -babel-plugin-transform-es2015-for-of@^6.22.0, babel-plugin-transform-es2015-for-of@^6.23.0: +babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-function-name@^6.22.0, babel-plugin-transform-es2015-function-name@^6.24.1: +babel-plugin-transform-es2015-function-name@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" dependencies: @@ -814,7 +803,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-template "^6.26.0" babel-types "^6.26.0" -babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-es2015-modules-systemjs@^6.24.1: +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" dependencies: @@ -822,7 +811,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0, babel-plugin-transform-e babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015-modules-umd@^6.24.1: +babel-plugin-transform-es2015-modules-umd@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" dependencies: @@ -830,14 +819,14 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0, babel-plugin-transform-es2015 babel-runtime "^6.22.0" babel-template "^6.24.1" -babel-plugin-transform-es2015-object-super@^6.22.0, babel-plugin-transform-es2015-object-super@^6.24.1: +babel-plugin-transform-es2015-object-super@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" -babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015-parameters@^6.24.1: +babel-plugin-transform-es2015-parameters@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" dependencies: @@ -848,7 +837,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0, babel-plugin-transform-es2015- babel-traverse "^6.24.1" babel-types "^6.24.1" -babel-plugin-transform-es2015-shorthand-properties@^6.22.0, babel-plugin-transform-es2015-shorthand-properties@^6.24.1: +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" dependencies: @@ -861,7 +850,7 @@ babel-plugin-transform-es2015-spread@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-sticky-regex@^6.22.0, babel-plugin-transform-es2015-sticky-regex@^6.24.1: +babel-plugin-transform-es2015-sticky-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" dependencies: @@ -875,13 +864,13 @@ babel-plugin-transform-es2015-template-literals@^6.22.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-typeof-symbol@^6.22.0, babel-plugin-transform-es2015-typeof-symbol@^6.23.0: +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" dependencies: babel-runtime "^6.22.0" -babel-plugin-transform-es2015-unicode-regex@^6.22.0, babel-plugin-transform-es2015-unicode-regex@^6.24.1: +babel-plugin-transform-es2015-unicode-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" dependencies: @@ -926,7 +915,7 @@ babel-plugin-transform-property-literals@^6.8.5: dependencies: esutils "^2.0.2" -babel-plugin-transform-regenerator@^6.22.0, babel-plugin-transform-regenerator@^6.24.1: +babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" dependencies: @@ -965,9 +954,17 @@ babel-plugin-transform-undefined-to-void@^6.8.3: version "6.8.3" resolved "https://registry.yarnpkg.com/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.8.3.tgz#fc52707f6ee1ddc71bb91b0d314fbefdeef9beb4" +babel-polyfill@6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.23.0.tgz#8364ca62df8eafb830499f699177466c3b03499d" + dependencies: + babel-runtime "^6.22.0" + core-js "^2.4.0" + regenerator-runtime "^0.10.0" + babel-preset-env@^1.5.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.0.tgz#2de1c782a780a0a5d605d199c957596da43c44e4" + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" dependencies: babel-plugin-check-es2015-constants "^6.22.0" babel-plugin-syntax-trailing-function-commas "^6.22.0" @@ -1000,35 +997,6 @@ babel-preset-env@^1.5.2: invariant "^2.2.2" semver "^5.3.0" -babel-preset-es2015@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.24.1" - babel-plugin-transform-es2015-classes "^6.24.1" - babel-plugin-transform-es2015-computed-properties "^6.24.1" - babel-plugin-transform-es2015-destructuring "^6.22.0" - babel-plugin-transform-es2015-duplicate-keys "^6.24.1" - babel-plugin-transform-es2015-for-of "^6.22.0" - babel-plugin-transform-es2015-function-name "^6.24.1" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-plugin-transform-es2015-modules-systemjs "^6.24.1" - babel-plugin-transform-es2015-modules-umd "^6.24.1" - babel-plugin-transform-es2015-object-super "^6.24.1" - babel-plugin-transform-es2015-parameters "^6.24.1" - babel-plugin-transform-es2015-shorthand-properties "^6.24.1" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.24.1" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.22.0" - babel-plugin-transform-es2015-unicode-regex "^6.24.1" - babel-plugin-transform-regenerator "^6.24.1" - babel-preset-minify@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/babel-preset-minify/-/babel-preset-minify-0.2.0.tgz#006566552d9b83834472273f306c0131062a0acc" @@ -1176,10 +1144,6 @@ binary-extensions@^1.0.0: version "1.10.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" -bindings@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.3.0.tgz#b346f6ecf6a95f5a815c5839fc7cdb22502f1ed7" - bl@^1.0.0: version "1.2.1" resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e" @@ -1258,7 +1222,7 @@ braces@^0.1.2: dependencies: expand-range "^0.1.0" -braces@^1.8.0, braces@^1.8.2: +braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" dependencies: @@ -1266,20 +1230,20 @@ braces@^1.8.0, braces@^1.8.2: preserve "^0.2.0" repeat-element "^1.1.2" -braces@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.2.2.tgz#241f868c2b2690d9febeee5a7c83fbbf25d00b1b" +braces@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.0.tgz#a46941cb5fb492156b3d6a656e06c35364e3e66e" dependencies: - arr-flatten "^1.0.3" + arr-flatten "^1.1.0" array-unique "^0.3.2" define-property "^1.0.0" extend-shallow "^2.0.1" fill-range "^4.0.0" - isobject "^3.0.0" + isobject "^3.0.1" repeat-element "^1.1.2" snapdragon "^0.8.1" snapdragon-node "^2.0.1" - split-string "^2.1.0" + split-string "^3.0.2" to-regex "^3.0.1" browser-resolve@^1.11.0: @@ -1289,11 +1253,11 @@ browser-resolve@^1.11.0: resolve "1.1.7" browserslist@^2.1.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.4.0.tgz#693ee93d01e66468a6348da5498e011f578f87f8" + version "2.7.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.7.0.tgz#dc375dc70048fec3d989042a35022342902eff00" dependencies: - caniuse-lite "^1.0.30000718" - electron-to-chromium "^1.3.18" + caniuse-lite "^1.0.30000757" + electron-to-chromium "^1.3.27" buffer-crc32@^0.2.1: version "0.2.13" @@ -1303,17 +1267,18 @@ builtin-modules@^1.0.0, builtin-modules@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -bundlesize@^0.14.4: - version "0.14.4" - resolved "https://registry.yarnpkg.com/bundlesize/-/bundlesize-0.14.4.tgz#ad53c4a1a4ba71810967575c550bc04f3d18d421" +bundlesize@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/bundlesize/-/bundlesize-0.15.3.tgz#5cf7a48c11fd2835cfc9112e24429bb47c086ca8" dependencies: axios "^0.16.2" - bytes "^2.5.0" + bytes "^3.0.0" ci-env "^1.4.0" commander "^2.11.0" github-build "^1.2.0" glob "^7.1.2" - gzip-size "^3.0.0" + gzip-size "^4.0.0" + opencollective "^1.0.3" prettycli "^1.4.3" read-pkg-up "^2.0.0" @@ -1321,14 +1286,10 @@ byline@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" -bytes@3.0.0: +bytes@3.0.0, bytes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" -bytes@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.5.0.tgz#4c9423ea2d252c270c41b2bdefeff9bb6b62c06a" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1392,9 +1353,13 @@ camelcase@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" -caniuse-lite@^1.0.30000718: - version "1.0.30000738" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000738.tgz#1820c3c9adb9a117e311a5bdca1d25bc34288eba" +caniuse-lite@^1.0.30000757: + version "1.0.30000758" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000758.tgz#e261140076651049cf6891ed4bc649b5c8c26c69" + +capture-stack-trace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz#4a6fa07399c26bba47f0b2496b4d0fb408c5550d" caseless@~0.11.0: version "0.11.0" @@ -1428,15 +1393,7 @@ chai@^4.0.1: pathval "^1.0.0" type-detect "^4.0.0" -chalk@2.1.0, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" - dependencies: - ansi-styles "^3.1.0" - escape-string-regexp "^1.0.5" - supports-color "^4.0.0" - -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@1.1.3, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1446,13 +1403,21 @@ chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" +chalk@2.1.0, chalk@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" dependencies: - ansi-styles "~1.0.0" - has-color "~0.1.0" - strip-ansi "~0.1.0" + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" check-error@^1.0.1: version "1.0.2" @@ -1647,10 +1612,6 @@ commander@^2.11.0, commander@^2.9.0: version "2.11.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" -commander@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.1.0.tgz#d121bbae860d9992a3d517ba96f56588e47c6781" - common-sequence@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/common-sequence/-/common-sequence-1.0.2.tgz#30e07f3f8f6f7f9b3dee854f20b2d39eee086de8" @@ -1728,9 +1689,9 @@ content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" -conventional-changelog-angular@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.0.tgz#50b2d45008448455fdf67e06ea01972fbd08182a" +conventional-changelog-angular@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.5.1.tgz#974e73aa1c39c392e4364f2952bd9a62904e9ea3" dependencies: compare-func "^1.3.1" q "^1.4.1" @@ -1742,11 +1703,11 @@ conventional-changelog-atom@^0.1.1: q "^1.4.1" conventional-changelog-cli@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.3.tgz#ca38f229a27ec14036021b1786a48f5b8d48d7ff" + version "1.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.4.tgz#38f7ff7ac7bca92ea110897ea08b473f2055a27c" dependencies: add-stream "^1.0.0" - conventional-changelog "^1.1.5" + conventional-changelog "^1.1.6" lodash "^4.1.0" meow "^3.7.0" tempfile "^1.1.1" @@ -1757,9 +1718,9 @@ conventional-changelog-codemirror@^0.2.0: dependencies: q "^1.4.1" -conventional-changelog-core@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.1.tgz#ddf767c405850dfc8df31726c80fa1a6a10bdc7b" +conventional-changelog-core@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-1.9.2.tgz#a09b6b959161671ff45b93cc9efb0444e7c845c0" dependencies: conventional-changelog-writer "^2.0.1" conventional-commits-parser "^2.0.0" @@ -1767,7 +1728,7 @@ conventional-changelog-core@^1.9.1: get-pkg-repo "^1.0.0" git-raw-commits "^1.2.0" git-remote-origin-url "^2.0.0" - git-semver-tags "^1.2.1" + git-semver-tags "^1.2.2" lodash "^4.0.0" normalize-package-data "^2.3.5" q "^1.4.1" @@ -1775,9 +1736,9 @@ conventional-changelog-core@^1.9.1: read-pkg-up "^1.0.1" through2 "^2.0.0" -conventional-changelog-ember@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.7.tgz#c6aff35976284e7222649f81c62bd96ff3217bd2" +conventional-changelog-ember@^0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.2.8.tgz#65e686da83d23b67133d1f853908c87f948035c0" dependencies: q "^1.4.1" @@ -1827,15 +1788,15 @@ conventional-changelog-writer@^2.0.1: split "^1.0.0" through2 "^2.0.0" -conventional-changelog@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.5.tgz#4c46fb64b2986cab19888d8c4b87ca7c0e431bfd" +conventional-changelog@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.6.tgz#ebd9b1ab63766c715f903f654626b6b1c0da7762" dependencies: - conventional-changelog-angular "^1.5.0" + conventional-changelog-angular "^1.5.1" conventional-changelog-atom "^0.1.1" conventional-changelog-codemirror "^0.2.0" - conventional-changelog-core "^1.9.1" - conventional-changelog-ember "^0.2.7" + conventional-changelog-core "^1.9.2" + conventional-changelog-ember "^0.2.8" conventional-changelog-eslint "^0.2.0" conventional-changelog-express "^0.2.0" conventional-changelog-jquery "^0.1.0" @@ -1862,14 +1823,14 @@ conventional-commits-parser@^2.0.0: trim-off-newlines "^1.0.0" conventional-recommended-bump@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.0.1.tgz#56b8ae553a8a1152fa069e767599e1f6948bd36c" + version "1.0.2" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-1.0.2.tgz#31856443ab6f9453a1827650e7cc15ec28769645" dependencies: concat-stream "^1.4.10" conventional-commits-filter "^1.0.0" conventional-commits-parser "^2.0.0" git-raw-commits "^1.2.0" - git-semver-tags "^1.2.1" + git-semver-tags "^1.2.2" meow "^3.3.0" object-assign "^4.0.1" @@ -1917,6 +1878,12 @@ crc@^3.4.4: version "3.4.4" resolved "https://registry.yarnpkg.com/crc/-/crc-3.4.4.tgz#9da1e980e3bd44fc5c93bf5ab3da3378d85e466b" +create-error-class@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" + dependencies: + capture-stack-trace "^1.0.0" + cross-spawn@^5.0.1, cross-spawn@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -1960,8 +1927,8 @@ dashdash@^1.12.0: assert-plus "^1.0.0" date-fns@^1.27.2: - version "1.28.5" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.5.tgz#257cfc45d322df45ef5658665967ee841cd73faf" + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" dateformat@^1.0.11, dateformat@^1.0.12, dateformat@^1.0.6: version "1.0.12" @@ -1970,7 +1937,7 @@ dateformat@^1.0.11, dateformat@^1.0.12, dateformat@^1.0.6: get-stdin "^4.0.1" meow "^3.3.0" -debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.4.5, debug@^2.6.8: +debug@2, debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -1989,8 +1956,8 @@ debug@2.3.3: ms "0.7.2" debug@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.0.1.tgz#0564c612b521dc92d9f2988f0549e34f9c98db64" + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: ms "2.0.0" @@ -1998,6 +1965,10 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" @@ -2137,6 +2108,10 @@ dotdir-regex@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/dotdir-regex/-/dotdir-regex-0.1.0.tgz#d45df4c8863be6f5593d716914381767e938c0b6" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + duplexer@^0.1.1, duplexer@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" @@ -2160,9 +2135,9 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -electron-to-chromium@^1.3.18: - version "1.3.22" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.22.tgz#4322d52c151406e3eaef74ad02676883e8416418" +electron-to-chromium@^1.3.27: + version "1.3.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" elegant-spinner@^1.0.1: version "1.0.1" @@ -2178,6 +2153,12 @@ encodeurl@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + end-of-stream@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206" @@ -2256,9 +2237,9 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-plugin-jasmine@^2.6.2, eslint-plugin-jasmine@^2.7.1: - version "2.8.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.8.4.tgz#67a5551e3d1d5e0b8c6b54aaebab95370f5d37de" +eslint-plugin-jasmine@^2.6.2: + version "2.9.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jasmine/-/eslint-plugin-jasmine-2.9.1.tgz#22e19a59f16f3a5f643a04aba04438d0e3047030" eslint-scope@^3.7.1: version "3.7.1" @@ -2268,8 +2249,8 @@ eslint-scope@^3.7.1: estraverse "^4.1.1" eslint@^4.0.0, eslint@^4.1.1, eslint@^4.5.0: - version "4.7.2" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.7.2.tgz#ff6f5f5193848a27ee9b627be3e73fb9cb5e662e" + version "4.10.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.10.0.tgz#f25d0d7955c81968c2309aa5c9a229e045176bb7" dependencies: ajv "^5.2.0" babel-code-frame "^6.22.0" @@ -2416,7 +2397,7 @@ expand-braces@^0.1.1: array-unique "^0.2.1" braces "^0.1.2" -expand-brackets@^0.1.1, expand-brackets@^0.1.4: +expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" dependencies: @@ -2469,7 +2450,7 @@ extend@3, extend@^3.0.0, extend@~3.0.0, extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" -external-editor@^2.0.4: +external-editor@^2.0.1, external-editor@^2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" dependencies: @@ -2477,7 +2458,7 @@ external-editor@^2.0.4: jschardet "^1.4.2" tmp "^0.0.33" -extglob@^0.3.0, extglob@^0.3.1: +extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" dependencies: @@ -2504,6 +2485,10 @@ fast-deep-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" @@ -2539,10 +2524,6 @@ filename-regex@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" -filesize@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-2.0.4.tgz#7805941c60fcdfe63f46d7ea358c59ade11c1325" - fill-range@^2.1.0: version "2.2.3" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" @@ -2615,8 +2596,8 @@ first-chunk-stream@^1.0.0: resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" flat-cache@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" dependencies: circular-json "^0.3.1" del "^2.0.2" @@ -2630,10 +2611,10 @@ follow-redirects@1.0.0: debug "^2.2.0" follow-redirects@^1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.4.tgz#355e8f4d16876b43f577b0d5ce2668b9723214ea" + version "1.2.5" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.5.tgz#ffd3e14cbdd5eaa72f61b6368c1f68516c2a26cc" dependencies: - debug "^2.4.5" + debug "^2.6.9" for-in@^0.1.3: version "0.1.8" @@ -2836,9 +2817,9 @@ git-remote-origin-url@^2.0.0: gitconfiglocal "^1.0.0" pify "^2.3.0" -git-semver-tags@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.1.tgz#6ccd2a52e735b736748dc762444fcd9588e27490" +git-semver-tags@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.2.2.tgz#a2139be1bf6e337e125f3eb8bb8fc6f5d4d6445f" dependencies: meow "^3.3.0" semver "^5.0.1" @@ -2855,10 +2836,6 @@ github-build@^1.2.0: dependencies: axios "0.15.3" -gitignore-to-glob@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/gitignore-to-glob/-/gitignore-to-glob-0.3.0.tgz#59f32ab3d9b66ce50299c3ed24cb0ef42a094ceb" - glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -3014,6 +2991,22 @@ globby@^6.1.0: pify "^2.0.0" pinkie-promise "^2.0.0" +got@^6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" + dependencies: + create-error-class "^3.0.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-redirect "^1.0.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + lowercase-keys "^1.0.0" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + unzip-response "^2.0.1" + url-parse-lax "^1.0.0" + graceful-fs@^4.0.0, graceful-fs@^4.1.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -3028,19 +3021,12 @@ gulp-sourcemaps@1.6.0: through2 "^2.0.0" vinyl "^1.0.0" -gzip-size@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" +gzip-size@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.0.0.tgz#a80e13e18938bcb2e6702fec606f5cf8b666db3a" dependencies: duplexer "^0.1.1" - -gzipped@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/gzipped/-/gzipped-0.0.5.tgz#ae6689b616f7ea3b3e30ace1c44ef3ce252d2795" - dependencies: - chalk "~0.4.0" - commander "~2.1.0" - filesize "~2.0.3" + pify "^3.0.0" handlebars@3.0.3: version "3.0.3" @@ -3051,7 +3037,7 @@ handlebars@3.0.3: optionalDependencies: uglify-js "~2.3" -handlebars@^4.0.1, handlebars@^4.0.2: +handlebars@^4.0.1: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" dependencies: @@ -3061,6 +3047,16 @@ handlebars@^4.0.1, handlebars@^4.0.2: optionalDependencies: uglify-js "^2.6" +handlebars@^4.0.2: + version "4.0.11" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" + dependencies: + async "^1.4.0" + optimist "^0.6.1" + source-map "^0.4.4" + optionalDependencies: + uglify-js "^2.6" + har-schema@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" @@ -3104,10 +3100,6 @@ has-binary@0.1.7: dependencies: isarray "0.0.1" -has-color@~0.1.0: - version "0.1.7" - resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" - has-cors@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" @@ -3194,7 +3186,7 @@ homedir-polyfill@^1.0.0: dependencies: parse-passwd "^1.0.0" -hosted-git-info@^2.1.4: +hosted-git-info@^2.1.4, hosted-git-info@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" @@ -3238,19 +3230,19 @@ https-proxy-agent@^1.0.0, https-proxy-agent@~1.0.0: debug "2" extend "3" -iconv-lite@0.4.19, iconv-lite@^0.4.17: +iconv-lite@0.4.19, iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -ignore-walk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.0.tgz#e407919edee5c47c63473b319bfe3ea4a771a57e" +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" dependencies: minimatch "^3.0.4" ignore@^3.2.7, ignore@^3.3.3: - version "3.3.5" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.5.tgz#c4e715455f6073a8d7e5dae72d2fc9d71663dba6" + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" imurmurhash@^0.1.4: version "0.1.4" @@ -3285,6 +3277,24 @@ ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" +inquirer@3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.0.6.tgz#e04aaa9d05b7a3cb9b0f407d04375f0447190347" + dependencies: + ansi-escapes "^1.1.0" + chalk "^1.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.1" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx "^4.1.0" + string-width "^2.0.0" + strip-ansi "^3.0.0" + through "^2.3.6" + inquirer@^3.0.6, inquirer@^3.2.2: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -3342,8 +3352,8 @@ is-binary-path@^1.0.0: binary-extensions "^1.0.0" is-buffer@^1.0.2, is-buffer@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" is-builtin-module@^1.0.0: version "1.0.0" @@ -3423,10 +3433,6 @@ is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" -is-glob@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-1.1.3.tgz#b4c64b8303d39114492a460d364ccfb0d3c0a045" - is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -3526,6 +3532,10 @@ is-property@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" +is-redirect@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" + is-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" @@ -3542,7 +3552,11 @@ is-resolvable@^1.0.0: dependencies: tryit "^1.0.1" -is-stream@^1.0.1, is-stream@^1.1.0: +is-retry-allowed@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -3663,18 +3677,18 @@ jasmine-core@^2.6.2: version "2.8.0" resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" -jest-get-type@^21.0.2: - version "21.0.2" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.0.2.tgz#304e6b816dd33cd1f47aba0597bcad258a509fc6" +jest-get-type@^21.2.0: + version "21.2.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-21.2.0.tgz#f6376ab9db4b60d81e39f30749c6c466f40d4a23" jest-validate@^21.1.0: - version "21.1.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.1.0.tgz#39d01115544a758bce49f221a5fcbb24ebdecc65" + version "21.2.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-21.2.1.tgz#cc0cbca653cd54937ba4f2a111796774530dd3c7" dependencies: chalk "^2.0.1" - jest-get-type "^21.0.2" + jest-get-type "^21.2.0" leven "^2.1.0" - pretty-format "^21.1.0" + pretty-format "^21.2.1" joi@^9.2.0: version "9.2.0" @@ -3706,8 +3720,8 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" jschardet@^1.4.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.1.tgz#c519f629f86b3a5bedba58a88d311309eec097f9" + version "1.6.0" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" jsdoc-75lb@^3.6.0: version "3.6.0" @@ -3861,11 +3875,11 @@ karma-jasmine@^1.1.0: resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.1.0.tgz#22e4c06bf9a182e5294d1f705e3733811b810acf" karma-mocha-reporter@^2.2.3: - version "2.2.4" - resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.4.tgz#0c9cb22c27d864d0f6694df0cf01caabce9064d4" + version "2.2.5" + resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz#15120095e8ed819186e47a0b012f3cd741895560" dependencies: chalk "^2.1.0" - log-symbols "^2.0.0" + log-symbols "^2.1.0" strip-ansi "^4.0.0" karma-rollup-preprocessor@^5.0.0: @@ -3924,10 +3938,6 @@ karma@^1.7.0: tmp "0.0.31" useragent "^2.1.12" -kind-of@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" - kind-of@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" @@ -3947,8 +3957,12 @@ kind-of@^4.0.0: is-buffer "^1.1.5" kind-of@^5.0.0, kind-of@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.0.2.tgz#f57bec933d9a2209ffa96c5c08343607b7035fda" + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + +kind-of@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.0.tgz#3606e9e2fa960e7ddaa8898c03804e47e5d66644" klaw@~1.3.0: version "1.3.1" @@ -3988,9 +4002,17 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" +lcov-result-merger@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/lcov-result-merger/-/lcov-result-merger-1.2.0.tgz#5de1e6426f885929b77357f014de5fee1dad0553" + dependencies: + through2 "^2.0.1" + vinyl "^1.1.1" + vinyl-fs "^2.4.3" + lerna@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.2.0.tgz#dcf588f8c8feb57d76b34ef72cfedef23f1b5807" + version "2.5.1" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-2.5.1.tgz#d07099bd3051ee799f98c753328bd69e96c6fab8" dependencies: async "^1.5.0" chalk "^2.1.0" @@ -4008,6 +4030,7 @@ lerna@^2.2.0: glob-parent "^3.1.0" globby "^6.1.0" graceful-fs "^4.1.11" + hosted-git-info "^2.5.0" inquirer "^3.2.2" is-ci "^1.0.10" load-json-file "^3.0.0" @@ -4015,6 +4038,7 @@ lerna@^2.2.0: minimatch "^3.0.4" npmlog "^4.1.2" p-finally "^1.0.0" + package-json "^4.0.1" path-exists "^3.0.0" read-cmd-shim "^1.0.1" read-pkg "^2.0.0" @@ -4041,11 +4065,12 @@ levn@^0.3.0, levn@~0.3.0: type-check "~0.3.2" lint-staged@^4.0.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.2.3.tgz#5a1f12256af06110b96225f109dbf215009a37a9" + version "4.3.0" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-4.3.0.tgz#ed0779ad9a42c0dc62bb3244e522870b41125879" dependencies: app-root-path "^2.0.0" chalk "^2.1.0" + commander "^2.11.0" cosmiconfig "^1.1.0" execa "^0.8.0" is-glob "^4.0.0" @@ -4077,8 +4102,8 @@ listr-update-renderer@^0.2.0: strip-ansi "^3.0.1" listr-verbose-renderer@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.0.tgz#44dc01bb0c34a03c572154d4d08cde9b1dc5620f" + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" dependencies: chalk "^1.1.3" cli-cursor "^1.0.2" @@ -4212,7 +4237,7 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.0.0: +log-symbols@^2.0.0, log-symbols@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.1.0.tgz#f35fa60e278832b538dc4dddcbb478a45d3e3be6" dependencies: @@ -4240,8 +4265,8 @@ loglevel-colored-level-prefix@^1.0.0: loglevel "^1.4.1" loglevel@^1.4.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.0.tgz#3863984a2c326b986fbb965f378758a6dc8a4324" + version "1.5.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.5.1.tgz#189078c94ab9053ee215a0acdbf24244ea0f6502" lolex@^1.6.0: version "1.6.0" @@ -4264,6 +4289,10 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lowercase-keys@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + lru-cache@2.2.x: version "2.2.4" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" @@ -4276,10 +4305,10 @@ lru-cache@^4.0.1: yallist "^2.1.2" make-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.0.0.tgz#97a011751e91dd87cfadef58832ebb04936de978" + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" dependencies: - pify "^2.3.0" + pify "^3.0.0" make-plural@~3.0.6: version "3.0.6" @@ -4376,40 +4405,24 @@ micromatch@^2.1.5, micromatch@^2.3.11, micromatch@^2.3.7: parse-glob "^3.0.4" regex-cache "^0.4.2" -micromatch@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2" +micromatch@^3.0.4, micromatch@jonschlinkert/micromatch#2.2.0: + version "3.1.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.4.tgz#bb812e741a41f982c854e42b421a7eac458796f4" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" - braces "^2.2.2" + braces "^2.3.0" define-property "^1.0.0" extend-shallow "^2.0.1" extglob "^2.0.2" fragment-cache "^0.2.1" - kind-of "^5.0.2" - nanomatch "^1.2.1" + kind-of "^6.0.0" + nanomatch "^1.2.5" object.pick "^1.3.0" regex-not "^1.0.0" snapdragon "^0.8.1" to-regex "^3.0.1" -micromatch@jonschlinkert/micromatch#2.2.0: - version "2.2.0" - resolved "https://codeload.github.com/jonschlinkert/micromatch/tar.gz/5017fd78202e04c684cc31d3c2fb1f469ea222ff" - dependencies: - arr-diff "^1.0.1" - array-unique "^0.2.1" - braces "^1.8.0" - expand-brackets "^0.1.1" - extglob "^0.3.0" - filename-regex "^2.0.0" - is-glob "^1.1.3" - kind-of "^1.1.0" - object.omit "^1.1.0" - parse-glob "^3.0.1" - regex-cache "^0.4.2" - mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" @@ -4438,14 +4451,14 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +minimist@1.2.0, minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + minimist@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" -minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - minimist@~0.0.1: version "0.0.10" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" @@ -4479,8 +4492,8 @@ modify-values@^1.0.0: resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.0.tgz#e2b6cdeb9ce19f99317a53722f3dbf5df5eaaab2" moment@2.x.x, moment@^2.6.0: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" + version "2.19.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.19.1.tgz#56da1a2d1cbf01d38b7e1afc31c10bcfa1929167" ms@0.7.1: version "0.7.1" @@ -4498,13 +4511,13 @@ mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.0.5, nan@^2.3.0: +nan@^2.3.0: version "2.7.0" resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" -nanomatch@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.3.tgz#15e1c02dcf990c27a283b08c0ba1801ce249a6a6" +nanomatch@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.5.tgz#5c9ab02475c76676275731b0bf0a7395c624a9c4" dependencies: arr-diff "^4.0.0" array-unique "^0.3.2" @@ -4530,6 +4543,13 @@ negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +node-fetch@1.6.3: + version "1.6.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.6.3.tgz#dc234edd6489982d58e8f0db4f695029abcd8c04" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-pre-gyp@^0.6.36: version "0.6.38" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.38.tgz#e92a20f83416415bb4086f6d1fb78b3da73d113d" @@ -4582,10 +4602,10 @@ npm-bundled@^1.0.1: resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.3.tgz#7e71703d973af3370a9591bafe3a63aca0be2308" npm-packlist@^1.1.6: - version "1.1.9" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.9.tgz#bd24a0b7a31a307315b07c2e54f4888f10577548" + version "1.1.10" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.1.10.tgz#1039db9e985727e464df066f4cf0ab6ef85c398a" dependencies: - ignore-walk "^3.0.0" + ignore-walk "^3.0.1" npm-bundled "^1.0.1" npm-path@^2.0.2: @@ -4734,6 +4754,24 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +opencollective@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/opencollective/-/opencollective-1.0.3.tgz#aee6372bc28144583690c3ca8daecfc120dd0ef1" + dependencies: + babel-polyfill "6.23.0" + chalk "1.1.3" + inquirer "3.0.6" + minimist "1.2.0" + node-fetch "1.6.3" + opn "4.0.2" + +opn@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -4823,6 +4861,15 @@ p-map@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" +package-json@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" + dependencies: + got "^6.7.1" + registry-auth-token "^3.0.1" + registry-url "^3.0.3" + semver "^5.1.0" + parse-filepath@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-0.6.3.tgz#38e17a73e5e4e6776bae9506fc3ccb14bc3a2b80" @@ -4842,7 +4889,7 @@ parse-gitignore@^0.2.0: is-glob "^2.0.0" starts-with "^1.0.0" -parse-glob@^3.0.1, parse-glob@^3.0.4: +parse-glob@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" dependencies: @@ -4965,6 +5012,10 @@ pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -4995,13 +5046,17 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" prettier-eslint-cli@^4.1.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.3.2.tgz#217796ca7bdb9ce12f7299c77e10c700b08abcda" + version "4.4.0" + resolved "https://registry.yarnpkg.com/prettier-eslint-cli/-/prettier-eslint-cli-4.4.0.tgz#3ceca9d5a207f4dde90a40545f317d6e13a3f932" dependencies: arrify "^1.0.1" babel-runtime "^6.23.0" @@ -5023,8 +5078,8 @@ prettier-eslint-cli@^4.1.1: yargs "8.0.2" prettier-eslint@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.1.1.tgz#826d71d79389c93d59edd56e3f0d58264a6ce36f" + version "8.2.1" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-8.2.1.tgz#cd66cf8b1a2c2fce2217f1b28474809031b9a77c" dependencies: common-tags "^1.4.0" dlv "^1.1.0" @@ -5032,15 +5087,15 @@ prettier-eslint@^8.0.0: indent-string "^3.2.0" lodash.merge "^4.6.0" loglevel-colored-level-prefix "^1.0.0" - prettier "^1.7.0" + prettier "^1.7.1" pretty-format "^20.0.3" require-relative "^0.8.7" - typescript "^2.4.2" - typescript-eslint-parser "^7.0.0" + typescript "^2.5.1" + typescript-eslint-parser "^8.0.0" -prettier@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.0.tgz#47481588f41f7c90f63938feb202ac82554e7150" +prettier@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.7.4.tgz#5e8624ae9363c80f95ec644584ecdf55d74f93fa" pretty-format@^20.0.3: version "20.0.3" @@ -5049,9 +5104,9 @@ pretty-format@^20.0.3: ansi-regex "^2.1.1" ansi-styles "^3.0.0" -pretty-format@^21.1.0: - version "21.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.1.0.tgz#557428254323832ee8b7c971cb613442bea67f61" +pretty-format@^21.2.1: + version "21.2.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-21.2.1.tgz#ae5407f3cf21066cd011aa1ba5fce7b6a2eddb36" dependencies: ansi-regex "^3.0.0" ansi-styles "^3.2.0" @@ -5062,7 +5117,11 @@ prettycli@^1.4.3: dependencies: chalk "2.1.0" -private@^0.1.6, private@^0.1.7: +private@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +private@^0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/private/-/private-0.1.7.tgz#68ce5e8a1ef0a23bb570cc28537b5332aba63ef1" @@ -5086,7 +5145,11 @@ q@1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" -q@^1.4.1, q@^1.5.0: +q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +q@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1" @@ -5134,6 +5197,15 @@ raw-body@2.3.2: iconv-lite "0.4.19" unpipe "1.0.0" +rc@^1.0.1, rc@^1.1.6: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + rc@^1.1.7: version "1.2.1" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.1.tgz#2e03e8e42ee450b8cb3dce65be1bf8974e1dfd95" @@ -5246,6 +5318,10 @@ regenerate@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" +regenerator-runtime@^0.10.0: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + regenerator-runtime@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" @@ -5278,6 +5354,19 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" +registry-auth-token@^3.0.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.1.tgz#fb0d3289ee0d9ada2cbb52af5dfe66cb070d3006" + dependencies: + rc "^1.1.6" + safe-buffer "^5.0.1" + +registry-url@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" + dependencies: + rc "^1.0.1" + regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" @@ -5383,8 +5472,8 @@ request@2.81.0: uuid "^3.0.0" request@^2.78.0: - version "2.82.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.82.0.tgz#2ba8a92cd7ac45660ea2b10a53ae67cd247516ea" + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: aws-sign2 "~0.7.0" aws4 "^1.6.0" @@ -5405,7 +5494,7 @@ request@^2.78.0: qs "~6.5.1" safe-buffer "^5.1.1" stringstream "~0.0.5" - tough-cookie "~2.3.2" + tough-cookie "~2.3.3" tunnel-agent "^0.6.0" uuid "^3.1.0" @@ -5491,7 +5580,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1: +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.5.4, rimraf@^2.6.0, rimraf@^2.6.1, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: @@ -5545,22 +5634,14 @@ rollup-watch@^4.0.0: require-relative "0.8.7" rollup-pluginutils "^2.0.1" -rollup@^0.43.0: - version "0.43.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.43.1.tgz#a7770af9711bd21dda977e7cce3d0f63fdfdfa04" - dependencies: - source-map-support "^0.4.0" - optionalDependencies: - weak "^1.0.1" - -rollup@^0.49.1: - version "0.49.3" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.49.3.tgz#4cce32643dd8cf2154c69ff0e43470067db0adbf" - rollup@^0.50.0: version "0.50.0" resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.50.0.tgz#4c158f4e780e6cb33ff0dbfc184a52cc58cd5f3b" +rollup@^0.51.5: + version "0.51.5" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.51.5.tgz#5caf9101fcaefe344065701ece7de697631a8035" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -5582,8 +5663,8 @@ rx@^4.1.0: resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" rxjs@^5.0.0-beta.11, rxjs@^5.3.0: - version "5.4.3" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.4.3.tgz#0758cddee6033d68e0fd53676f0f3596ce3d483f" + version "5.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.2.tgz#28d403f0071121967f18ad665563255d54236ac3" dependencies: symbol-observable "^1.0.1" @@ -5615,14 +5696,10 @@ sax@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.1.4.tgz#74b6d33c9ae1e001510f179a91168588f1aedaa9" -semver@*, "semver@2 || 3 || 4 || 5", semver@^5.0.1, semver@^5.3.0, semver@^5.4.1: +semver@*, "semver@2 || 3 || 4 || 5", semver@5.4.1, semver@^5.0.1, semver@^5.1.0, semver@^5.3.0, semver@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -semver@5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - semver@~4.3.3: version "4.3.6" resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" @@ -5717,6 +5794,12 @@ slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -5751,8 +5834,8 @@ sntp@1.x.x: hoek "2.x.x" sntp@2.x.x: - version "2.0.2" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.0.2.tgz#5064110f0af85f7cfdb7d6b67a40028ce52b4b2b" + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" dependencies: hoek "4.x.x" @@ -5808,12 +5891,6 @@ sort-array@^1.1.1: object-get "^2.1.0" typical "^2.6.0" -sort-keys@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - dependencies: - is-plain-obj "^1.0.0" - sort-keys@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" @@ -5821,15 +5898,16 @@ sort-keys@^2.0.0: is-plain-obj "^1.0.0" source-map-resolve@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.0.tgz#fcad0b64b70afb27699e425950cb5ebcd410bc20" + version "0.5.1" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.1.tgz#7ad0f593f2281598e854df80f19aae4b92d7a11a" dependencies: atob "^2.0.0" + decode-uri-component "^0.2.0" resolve-url "^0.2.1" source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.4.0, source-map-support@^0.4.15: +source-map-support@^0.4.15: version "0.4.18" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" dependencies: @@ -5882,13 +5960,7 @@ spdx-license-ids@^1.0.2: version "1.2.2" resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" -split-string@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-2.1.1.tgz#af4b06d821560426446c3cd931cda618940d37d0" - dependencies: - extend-shallow "^2.0.1" - -split-string@^3.0.1: +split-string@^3.0.1, split-string@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.0.2.tgz#6129bc92731716e5aa1fb73c333078f0b7c114c8" dependencies: @@ -5989,7 +6061,7 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" dependencies: @@ -6030,10 +6102,6 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" - strip-bom-stream@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz#e7144398577d51a6bed0fa1994fa05f43fd988ee" @@ -6086,8 +6154,8 @@ supports-color@^3.1.0: has-flag "^1.0.0" supports-color@^4.0.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" dependencies: has-flag "^2.0.0" @@ -6106,15 +6174,15 @@ table-layout@^0.4.1: wordwrapjs "^3.0.0" table@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435" + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" dependencies: - ajv "^4.7.0" - ajv-keywords "^1.0.0" - chalk "^1.1.1" - lodash "^4.0.0" - slice-ansi "0.0.4" - string-width "^2.0.0" + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" taffydb@2.6.2: version "2.6.2" @@ -6205,8 +6273,8 @@ text-encoding@0.6.4: resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.6.4.tgz#e399a982257a276dae428bb92845cb71bdc26d19" text-extensions@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.6.0.tgz#771561b26022783a45f5b6c2e78ad6e7de9fe322" + version "1.7.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.7.0.tgz#faaaba2625ed746d568a23e4d0aacd9bf08a8b39" text-table@~0.2.0: version "0.2.0" @@ -6226,7 +6294,7 @@ through2@^0.6.0: readable-stream ">=1.0.33-1 <1.1.0-0" xtend ">=4.0.0 <4.1.0-0" -through2@^2.0.0, through2@^2.0.2, through2@~2.0.0: +through2@^2.0.0, through2@^2.0.1, through2@^2.0.2, through2@~2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" dependencies: @@ -6237,6 +6305,10 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3, t version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +timed-out@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + tmp@0.0.31: version "0.0.31" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7" @@ -6290,7 +6362,7 @@ topo@2.x.x: dependencies: hoek "4.x.x" -tough-cookie@~2.3.0, tough-cookie@~2.3.2: +tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: @@ -6347,16 +6419,16 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -typescript-eslint-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-7.0.0.tgz#be57d8768e37707af825e339ea2af18d7393cabb" +typescript-eslint-parser@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/typescript-eslint-parser/-/typescript-eslint-parser-8.0.1.tgz#e8cac537d996e16c3dbb0d7c4d509799e67afe0c" dependencies: lodash.unescape "4.0.1" - semver "5.3.0" + semver "5.4.1" -typescript@^2.4.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.2.tgz#038a95f7d9bbb420b1bf35ba31d4c5c1dd3ffe34" +typescript@^2.5.1: + version "2.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.5.3.tgz#df3dcdc38f3beb800d4bc322646b04a3f6ca7f0d" typical@^2.4.2, typical@^2.6.0, typical@^2.6.1: version "2.6.1" @@ -6447,10 +6519,20 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +unzip-response@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" + urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + usage-stats@^0.9.0: version "0.9.4" resolved "https://registry.yarnpkg.com/usage-stats/-/usage-stats-0.9.4.tgz#ff06ba51d824faa1982f48a055dea8495a249077" @@ -6516,7 +6598,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-fs@*: +vinyl-fs@*, vinyl-fs@^2.4.3: version "2.4.4" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-2.4.4.tgz#be6ff3270cb55dfd7d3063640de81f25d7532239" dependencies: @@ -6538,7 +6620,7 @@ vinyl-fs@*: vali-date "^1.0.0" vinyl "^1.0.0" -vinyl@^1.0.0: +vinyl@^1.0.0, vinyl@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" dependencies: @@ -6591,17 +6673,21 @@ wd@^1.4.0: underscore.string "3.3.4" vargs "0.1.0" -weak@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/weak/-/weak-1.0.1.tgz#ab99aab30706959aa0200cb8cf545bb9cb33b99e" - dependencies: - bindings "^1.2.1" - nan "^2.0.5" - which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" +which-pm-runs-cli@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/which-pm-runs-cli/-/which-pm-runs-cli-1.0.5.tgz#136a99f5274745de5a4baa8e6feef81df853fc0d" + dependencies: + which-pm-runs "^1.0.0" + yargs "^10.0.3" + +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + which@1.2.x: version "1.2.14" resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" @@ -6663,14 +6749,14 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0: signal-exit "^3.0.2" write-json-file@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.2.0.tgz#51862506bbb3b619eefab7859f1fd6c6d0530876" + version "2.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-2.3.0.tgz#2b64c8a33004d54b8698c76d585a77ceb61da32f" dependencies: detect-indent "^5.0.0" graceful-fs "^4.1.2" make-dir "^1.0.0" - pify "^2.0.0" - sort-keys "^1.1.1" + pify "^3.0.0" + sort-keys "^2.0.0" write-file-atomic "^2.0.0" write-pkg@^3.1.0: @@ -6723,6 +6809,12 @@ yargs-parser@^7.0.0: dependencies: camelcase "^4.1.0" +yargs-parser@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-8.0.0.tgz#21d476330e5a82279a4b881345bf066102e219c6" + dependencies: + camelcase "^4.1.0" + yargs@8.0.2, yargs@^8.0.1, yargs@^8.0.2: version "8.0.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" @@ -6741,6 +6833,23 @@ yargs@8.0.2, yargs@^8.0.1, yargs@^8.0.2: y18n "^3.2.1" yargs-parser "^7.0.0" +yargs@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-10.0.3.tgz#6542debd9080ad517ec5048fb454efe9e4d4aaae" + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^8.0.0" + yargs@~3.10.0: version "3.10.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" diff --git a/resources/views/layouts/default/acars/index.blade.php b/resources/views/layouts/default/acars/index.blade.php new file mode 100644 index 00000000..4769aa30 --- /dev/null +++ b/resources/views/layouts/default/acars/index.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.default.app') + +@section('title', 'live map') +@section('content') + @include('layouts.default.acars.map') +
+ @include('layouts.default.acars.table') +@endsection + diff --git a/resources/views/layouts/default/acars/map.blade.php b/resources/views/layouts/default/acars/map.blade.php new file mode 100644 index 00000000..4475d4b5 --- /dev/null +++ b/resources/views/layouts/default/acars/map.blade.php @@ -0,0 +1,19 @@ +
+
+

flight map

+
+
+
+
+
+
+
+ +@section('scripts') + +@endsection diff --git a/resources/views/layouts/default/acars/table.blade.php b/resources/views/layouts/default/acars/table.blade.php new file mode 100644 index 00000000..021b8c2e --- /dev/null +++ b/resources/views/layouts/default/acars/table.blade.php @@ -0,0 +1,17 @@ +
+
+

flights

+ + @foreach($pireps as $pirep) + + + + + + + @endforeach +
{!! $pirep->ident !!}{!! $pirep->dpt_airport_id !!}{!! $pirep->arr_airport_id !!} + {!! PirepStatus::label($pirep->status); !!} +
+
+
diff --git a/resources/views/layouts/default/app.blade.php b/resources/views/layouts/default/app.blade.php index 5439bae9..3ac4e7b6 100644 --- a/resources/views/layouts/default/app.blade.php +++ b/resources/views/layouts/default/app.blade.php @@ -183,7 +183,8 @@ - + +